@venusprotocol/protocol-reserve 3.5.0-slim-dev.1 → 3.5.0-slim-dev.6
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.
- package/artifacts/contracts/Interfaces/IRiskFund.sol/IRiskFund.json +0 -23
- package/artifacts/contracts/Interfaces/ITokenBuyback.sol/ITokenBuyback.json +157 -0
- package/artifacts/contracts/ProtocolReserve/RiskFundStorage.sol/MaxLoopsLimitHelpersStorage.json +2 -2
- package/artifacts/contracts/ProtocolReserve/RiskFundStorage.sol/ReserveHelpersStorage.json +2 -26
- package/artifacts/contracts/ProtocolReserve/RiskFundStorage.sol/RiskFundV1Storage.json +2 -26
- package/artifacts/contracts/ProtocolReserve/RiskFundStorage.sol/RiskFundV2Storage.json +2 -39
- package/artifacts/contracts/ProtocolReserve/RiskFundV2.sol/RiskFundV2.json +2 -229
- package/artifacts/contracts/ProtocolReserve/TokenBuyback.sol/TokenBuyback.json +830 -0
- package/artifacts/contracts/Test/Mocks/MockConverter.sol/MockConverter.json +2 -2
- package/artifacts/contracts/Test/Mocks/MockRiskFundConverter.sol/MockRiskFundConverter.json +2 -2
- package/artifacts/contracts/Test/Mocks/MockRouter.sol/MockRouter.json +119 -0
- package/artifacts/contracts/TokenConverter/RiskFundConverter.sol/ILegacyRiskFundPoolState.json +34 -0
- package/artifacts/contracts/TokenConverter/RiskFundConverter.sol/RiskFundConverter.json +2 -2
- package/deployments/bscmainnet_addresses.json +31 -1
- package/deployments/bsctestnet_addresses.json +1 -1
- package/package.json +2 -1
|
@@ -1754,8 +1754,8 @@
|
|
|
1754
1754
|
"type": "function"
|
|
1755
1755
|
}
|
|
1756
1756
|
],
|
|
1757
|
-
"bytecode": "0x60e060405234801561001057600080fd5b50604051615d21380380615d2183398101604081905261002f9161017e565b82828261003b83610079565b61004482610079565b61004d81610079565b6001600160a01b0380841660805282811660a052811660c05261006e6100a3565b5050505050506101c1565b6001600160a01b0381166100a0576040516342bcdf7f60e11b815260040160405180910390fd5b50565b600054610100900460ff161561010f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614610160576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b038116811461017957600080fd5b919050565b60008060006060848603121561019357600080fd5b61019c84610162565b92506101aa60208501610162565b91506101b860408501610162565b90509250925092565b60805160a05160c051615b0e610213600039600081816104240152612e5b0152600081816103fd0152612d980152600081816107a601528181610e9b01528181612cdf01526135ce0152615b0e6000f3fe608060405234801561001057600080fd5b506004361061032b5760003560e01c8063715018a6116101b2578063b6828c57116100f9578063e30c3978116100a2578063f0dc7e9d1161007c578063f0dc7e9d1461077b578063f2fde38b1461078e578063fa7b81a0146107a1578063fe3da984146107c857600080fd5b8063e30c397814610744578063e50aa3d414610755578063f04c31871461076857600080fd5b8063c0654646116100d3578063c06546461461070f578063ca32546914610722578063e2ff7ea21461073557600080fd5b8063b6828c57146106f4578063bc368b0414610707578063bd7f33321461058f57600080fd5b806390fa7b541161015b578063afcff50f11610135578063afcff50f1461068c578063b491ddf7146106a0578063b4a0bdf3146106e357600080fd5b806390fa7b541461063b5780639fc3c0c21461064e578063aac59a751461067957600080fd5b80637b77cd6a1161018c5780637b77cd6a146105dc578063817ee19c146105ef5780638da5cb5b1461062a57600080fd5b8063715018a6146105b9578063746460a9146105c157806379ba5097146105d457600080fd5b806352e21a18116102765780635e1e63251161021f5780636f1a30a8116101f95780636f1a30a8146105695780636fb052751461057c57806370a082311461058f57600080fd5b80635e1e63251461053057806364aff9ec146105435780636daa463b1461055657600080fd5b8063556bbd8a11610250578063556bbd8a146104f557806358b904df146105085780635c39f4671461051057600080fd5b806352e21a18146104bc578063530e784f146104cf57806355374522146104e257600080fd5b80633421fc52116102d8578063439727a5116102b2578063439727a514610467578063454900fe1461047a5780634dc1c0a6146104a957600080fd5b80633421fc52146103f8578063362b67951461041f5780633d5e29101461044657600080fd5b80630a9a2b72116103095780630a9a2b72146103aa5780630e32cb86146103d25780632630c12f146103e557600080fd5b806301e201781461033057806307aa239e146103605780630a0a05e614610395575b600080fd5b60ff54610343906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b60fe546103859074010000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610357565b6103a86103a3366004615029565b6107d1565b005b6103bd6103b8366004615046565b6107e5565b60408051928352602083019190915201610357565b6103a86103e0366004615029565b6108a0565b60fc54610343906001600160a01b031681565b6103437f000000000000000000000000000000000000000000000000000000000000000081565b6103437f000000000000000000000000000000000000000000000000000000000000000081565b610459610454366004615088565b6108b1565b604051908152602001610357565b6103bd6104753660046150c1565b6108df565b610385610488366004615088565b61013060209081526000928352604080842090915290825290205460ff1681565b6103a86104b7366004615120565b610a29565b6103a86104ca366004615029565b610a3b565b6103a86104dd366004615029565b610a4c565b6103a86104f03660046151b2565b610a5d565b6103a861050336600461524c565b610a94565b6103a8610c6b565b61052361051e366004615029565b610d51565b6040516103579190615339565b6103bd61053e366004615046565b610eed565b6103a8610551366004615386565b610fd2565b6103bd610564366004615046565b611079565b6103bd610577366004615046565b611182565b61045961058a366004615088565b611281565b61045961059d366004615029565b6001600160a01b0316600090815261012d602052604090205490565b6103a8611346565b6103a86105cf3660046153c7565b61135a565b6103a86113a1565b6103a86105ea366004615029565b61142c565b6103a86105fd366004615386565b6001600160a01b03928316600090815261012e602090815260408083209490951682529290925291902055565b6033546001600160a01b0316610343565b6103bd6106493660046150c1565b6114b3565b6103a861065c3660046153e0565b6001600160a01b03909116600090815261012d6020526040902055565b6103a8610687366004615088565b6115a9565b61012f54610343906001600160a01b031681565b6106d56106ae366004615088565b60fd6020908152600092835260408084209091529082529020805460019091015460ff1682565b604051610357929190615476565b6097546001600160a01b0316610343565b6103bd6107023660046150c1565b6115df565b6103a86116d5565b6103a861071d36600461548a565b611787565b60fe54610343906001600160a01b031681565b6104596706f05b59d3b2000081565b6065546001600160a01b0316610343565b6103a86107633660046153e0565b611825565b6103bd6107763660046150c1565b61182f565b6103a861078936600461553a565b61195e565b6103a861079c366004615029565b611d06565b6103437f000000000000000000000000000000000000000000000000000000000000000081565b61045960fb5481565b6107d9611d8f565b6107e281611de9565b50565b60008060026001600160a01b03808616600090815260fd602090815260408083209388168352929052206001015460ff1660038111156108275761082761540c565b0361085e576040517f03410cd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038316600090815261012d602052604090205485811015610884578095505b859250610892868686611e66565b508092505050935093915050565b6108a8611d8f565b6107e2816121cc565b6001600160a01b03808316600090815261012e60209081526040808320938516835292905220545b92915050565b6000808285856108ed6122c1565b6108f683612316565b816001600160a01b0316836001600160a01b031614806109275750806001600160a01b0316836001600160a01b0316145b1561095e576040517f8aa3a72f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610966612356565b6109738a8a8a8a8a6123af565b90955093508985146109b1576040517fc214279600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109bd8888878761242f565b604080516001600160a01b038a81168252602082018890529181018690528189169188169033907f795a235be939acb902ac69562805f86e1341a9b019c351b996e2aa2dfc34c67c906060015b60405180910390a4610a1c600160c955565b5050509550959350505050565b610a358484848461242f565b50505050565b610a43611d8f565b6107e2816127aa565b610a54611d8f565b6107e281612827565b610a7e6040518060600160405280603c8152602001615a9d603c91396128a4565b610a8c868686868686612970565b505050505050565b600054610100900460ff1615808015610ab45750600054600160ff909116105b80610ace5750303b158015610ace575060005460ff166001145b610b455760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610ba357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610baf8c8c8c8b612c41565b610bb889612316565b61012f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038b16179055610bfa878787878787612970565b8015610c5d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b610ca96040518060400160405280601281526020017f726573756d65436f6e76657273696f6e282900000000000000000000000000008152506128a4565b60fe5474010000000000000000000000000000000000000000900460ff16610cfc576040517e6d8dbb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fe80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16905560405133907f89b79206f08dadd78502cff5075d2b094fa0abea0b063cfafe4475e2a380c51f90600090a2565b61012f546040517ff36dba380000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152606092169063f36dba3890602401600060405180830381865afa158015610db6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dde91908101906156a7565b9050610de982612cda565b15610ee85780516000610dfd82600161570b565b67ffffffffffffffff811115610e1557610e156155ab565b604051908082528060200260200182016040528015610e3e578160200160208202803683370190505b50905060005b82811015610e9857838181518110610e5e57610e5e61571e565b6020026020010151828281518110610e7857610e7861571e565b6001600160a01b0390921660209283029190910190910152600101610e44565b507f0000000000000000000000000000000000000000000000000000000000000000818381518110610ecc57610ecc61571e565b6001600160a01b03909216602092830291909101909101529150505b919050565b60008060026001600160a01b03808616600090815260fd602090815260408083209388168352929052206001015460ff166003811115610f2f57610f2f61540c565b03610f66576040517f03410cd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8491506000610f76868686612ea6565b90925090506000610f9d856001600160a01b0316600090815261012d602052604090205490565b905082811015610fc857610fc2610fbc670de0b6b3a76400008361574d565b836131b3565b93508092505b5050935093915050565b610fda611d8f565b610fe2612356565b610feb83612316565b610ff482612316565b610ffd816131dd565b826110088183613217565b61101c6001600160a01b0382168484613521565b826001600160a01b0316846001600160a01b03167f6d25be279134f4ecaa4770aff0c3d916d9e7c5ef37b65ed95dbdba411f5d54d58460405161106191815260200190565b60405180910390a350611074600160c955565b505050565b60fc546040517fb62cad690000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152600092839291169063b62cad6990602401600060405180830381600087803b1580156110dd57600080fd5b505af11580156110f1573d6000803e3d6000fd5b505060fc546040517fb62cad690000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152909116925063b62cad699150602401600060405180830381600087803b15801561115557600080fd5b505af1158015611169573d6000803e3d6000fd5b50505050611178858585612ea6565b5094959350505050565b60fc546040517fb62cad690000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152600092839291169063b62cad6990602401600060405180830381600087803b1580156111e657600080fd5b505af11580156111fa573d6000803e3d6000fd5b505060fc546040517fb62cad690000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152909116925063b62cad699150602401600060405180830381600087803b15801561125e57600080fd5b505af1158015611272573d6000803e3d6000fd5b50505050611178858585611e66565b600061128f60c95460021490565b156112c6576040517f9a050fe700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112d083836135ca565b611319576040517f983f1fb50000000000000000000000000000000000000000000000000000000081526001600160a01b03808516600483015283166024820152604401610b3c565b506001600160a01b03918216600090815261012e6020908152604080832093909416825291909152205490565b61134e611d8f565b61135860006136b8565b565b6113986040518060400160405280601e81526020017f7365744d696e416d6f756e74546f436f6e766572742875696e743235362900008152506128a4565b6107e2816136e9565b60655433906001600160a01b031681146114235760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152608401610b3c565b6107e2816136b8565b611434611d8f565b61143d81612316565b61012f546040516001600160a01b038084169216907fa87b964d321035d2165e484ff4b722dd6eae30606c0b98887d2ed1a34e594bfe90600090a361012f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000808285856114c16122c1565b6114ca83612316565b816001600160a01b0316836001600160a01b031614806114fb5750806001600160a01b0316836001600160a01b0316145b15611532576040517f8aa3a72f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61153a612356565b6115478a8a8a8a8a6123af565b90955093506115588888878761242f565b604080516001600160a01b038a81168252602082018890529181018690528189169188169033907f93b7ba2a2b0e36320375853d7466af5685c07567804b871b4fdfd31e3bb7715490606001610a0a565b6115b1612356565b60006115bd8383613733565b905080156115d0576115d0838383613a90565b506115db600160c955565b5050565b6000808285856115ed6122c1565b6115f683612316565b816001600160a01b0316836001600160a01b031614806116275750806001600160a01b0316836001600160a01b0316145b1561165e576040517f8aa3a72f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611666612356565b6116738a8a8a8a8a613ec4565b90955093506116848888878761242f565b604080516001600160a01b038a81168252602082018890529181018690528189169188169033907f9b7dc1d7d2974d015b4fc39889a09f3a3923add808f5863158f3162d997d4e8290606001610a0a565b6117136040518060400160405280601181526020017f7061757365436f6e76657273696f6e28290000000000000000000000000000008152506128a4565b61171b6122c1565b60fe80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905560405133907f490bc639fd0d96f19c8adf77bc98d17fbefdee2e1e1864d21f041360d0ee065a90600090a2565b828181146117c1576040517f4d5590f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561181c57611814878787848181106117e2576117e261571e565b90506020020160208101906117f79190615029565b8686858181106118095761180961571e565b90506040020161195e565b6001016117c4565b50505050505050565b6115db8282613f56565b60008082858561183d6122c1565b61184683612316565b816001600160a01b0316836001600160a01b031614806118775750806001600160a01b0316836001600160a01b0316145b156118ae576040517f8aa3a72f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118b6612356565b6118c38a8a8a8a8a613f88565b9095509350888414611901576040517fa8dc653c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61190d8888878761242f565b604080516001600160a01b038a81168252602082018890529181018690528189169188169033907fcb4ea7de8d069b0f443b792cba6c6df5096508951bbc75c04ac42c9251efe07690606001610a0a565b61197f604051806060016040528060358152602001615a68603591396128a4565b61198883612316565b61199182612316565b6706f05b59d3b20000813511156119e5576040517f9770caee000000000000000000000000000000000000000000000000000000008152813560048201526706f05b59d3b200006024820152604401610b3c565b816001600160a01b0316836001600160a01b03161480611a1e5750611a08614045565b6001600160a01b0316836001600160a01b031614155b80611a66575060006001600160a01b03808416600090815260fd602090815260408083209388168352929052206001015460ff166003811115611a6357611a6361540c565b14155b15611a9d576040517feebb5ac600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002611aaf6040830160208401615764565b6003811115611ac057611ac061540c565b148015611acd5750803515155b15611b04576040517fd0d4aabe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002611b166040830160208401615764565b6003811115611b2757611b2761540c565b1480611b5357506001611b406040830160208401615764565b6003811115611b5157611b5161540c565b145b8015611b68575060ff546001600160a01b0316155b15611b9f576040517fe7c2c99400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03808416600081815260fd602090815260408083209487168084529482529182902080546001820154919594937f39fbfdd5da133303ed31b1b65e30a0ddf7a9236573368c66c859dceccc1dd12a93919288359260ff90911691611c0f91908a01908a01615764565b604051611c1f9493929190615785565b60405180910390a36000611c396040840160208501615764565b6003811115611c4a57611c4a61540c565b03611ca7576001600160a01b03808516600090815260fd60209081526040808320938716835292905290812090815560010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055610a35565b81358155611cbb6040830160208401615764565b6001808301805490917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090911690836003811115611cfb57611cfb61540c565b021790555050505050565b611d0e611d8f565b606580546001600160a01b0383167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155611d576033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146113585760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b3c565b611df281612316565b60fe546040516001600160a01b038084169216907f9be3097b5c8b276786be52a244ee90d66efd34805d9eb16f168fb2b4aaae9a2b90600090a360fe80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008084600003611ea3576040517f42301c2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03808516600090815260fd6020908152604080832093871683529281528282208351808501909452805484526001810154929392909183019060ff166003811115611ef757611ef761540c565b6003811115611f0857611f0861540c565b9052509050600081602001516003811115611f2557611f2561540c565b03611f5c576040517f618ce59700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fc546040517f41976e090000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015260009216906341976e0990602401602060405180830381865afa158015611fc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe491906157ad565b60fc546040517f41976e090000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152929350600092909116906341976e0990602401602060405180830381865afa15801561204d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207191906157ad565b835160ff54919250906000906001600160a01b031615801590612114575060ff546040517f6c059fb10000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0390911690636c059fb190602401602060405180830381865afa1580156120f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211491906157c6565b9050801561212157600091505b600061213583670de0b6b3a764000061570b565b9050811561217557612147818661574d565b670de0b6b3a764000061215a868e61574d565b612164919061574d565b61216e91906157e8565b97506121a7565b6121a4670de0b6b3a764000061218b868e61574d565b612195919061574d565b61219f838861574d565b6131b3565b97505b836121b2828761574d565b6121bc91906157e8565b9650505050505050935093915050565b6001600160a01b0381166122485760405162461bcd60e51b815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e6167657220616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610b3c565b609780546001600160a01b038381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0910160405180910390a15050565b60fe5474010000000000000000000000000000000000000000900460ff1615611358576040517f952bcf7f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166107e2576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260c954036123a85760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b3c565b600260c955565b6000806123bc85856140d1565b6123c685886141f1565b91506123d3828686611079565b9150508581101561241a576040517f228f8c110000000000000000000000000000000000000000000000000000000081526004810182905260248101879052604401610b3c565b61242584848361433c565b9550959350505050565b600061243a84610d51565b6001600160a01b038516600090815261012d60205260408120549192509061246390849061570b565b905061246e816131dd565b815160008080805b8481101561279657600061012e60008984815181106124975761249761571e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160a01b03166001600160a01b031681526020019081526020016000205490508060001461278d576124f8600187615823565b821015612558576125248883815181106125145761251461571e565b60200260200101518c8b8a6143b6565b61252e908661570b565b94508661253b828c61574d565b61254591906157e8565b9350612551848461570b565b9250612653565b6000612564868b615823565b90508061012e60008b868151811061257e5761257e61571e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546125d89190615823565b925050819055508b6001600160a01b03168984815181106125fb576125fb61571e565b60200260200101516001600160a01b03167fc39e3e80c0219fde334a8cb5d8468b628482e23388b6e809c90cb00c63c8ce388360405161263d91815260200190565b60405180910390a361264f848c615823565b9450505b8b6001600160a01b031688838151811061266f5761266f61571e565b60200260200101516001600160a01b031660fe60009054906101000a90046001600160a01b03166001600160a01b03167fadc20ad416881f76b4304665c35f5be8592297bcdfe4f0bb087b9d254222af55876040516126d091815260200190565b60405180910390a460fe5488516001600160a01b03909116906353ac3537908a90859081106127015761270161571e565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039182166004820152908f16602482015260448101879052606401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050505b50600101612476565b5050505050505050505050565b600160c955565b6127b381612316565b60ff546040516001600160a01b038084169216907f50f1a16bf24734355b14ff800d132cc0a934808b8621d5623b41bc67f204881790600090a360ff80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61283081612316565b60fc546040516001600160a01b038084169216907f56b5f80d8cac1479698aa7d01605fd6111e90b15fc4d2b377417f46034876cbd90600090a360fc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6097546040517f18c5e8ab0000000000000000000000000000000000000000000000000000000081526000916001600160a01b0316906318c5e8ab906128f09033908690600401615886565b602060405180830381865afa15801561290d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293191906157c6565b9050806115db573330836040517f4a3fa293000000000000000000000000000000000000000000000000000000008152600401610b3c939291906158a8565b8483811415806129805750808214155b156129b7576040517f5f6f132c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015612c375760008686838181106129d6576129d661571e565b90506020028101906129e891906158d4565b808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250939450889250879150859050818110612a3057612a3061571e565b9050602002810190612a4291906158d4565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050845183519394509283149150612ab59050576040517f5f6f132c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015612c2857828181518110612ad257612ad261571e565b602002602001015161013060008e8e89818110612af157612af161571e565b9050602002016020810190612b069190615029565b6001600160a01b03166001600160a01b031681526020019081526020016000206000868481518110612b3a57612b3a61571e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550838181518110612b8b57612b8b61571e565b60200260200101516001600160a01b03168c8c87818110612bae57612bae61571e565b9050602002016020810190612bc39190615029565b6001600160a01b03167f6333c55c3657aafc9b39e2586076d198ed0250804559126489c852f28d51280c858481518110612bff57612bff61571e565b6020026020010151604051612c18911515815260200190565b60405180910390a3600101612ab8565b508360010193505050506129ba565b5050505050505050565b600054610100900460ff16612cbe5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b612cc78461448f565b612ccf61451d565b610a358383836145a2565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b0772d0b6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612d3b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d6391908101906156a7565b805190915060005b81811015612e9e57828181518110612d8557612d8561571e565b60200260200101516001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614612e5957846001600160a01b0316838281518110612de157612de161571e565b60200260200101516001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e4a919061593c565b6001600160a01b031614612e8f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316145b935083612e9e57600101612d6b565b505050919050565b60008084600003612ee3576040517f098fb56100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03808516600090815260fd6020908152604080832093871683529281528282208351808501909452805484526001810154929392909183019060ff166003811115612f3757612f3761540c565b6003811115612f4857612f4861540c565b9052509050600081602001516003811115612f6557612f6561540c565b03612f9c576040517f618ce59700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fc546040517f41976e090000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015260009216906341976e0990602401602060405180830381865afa158015613000573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061302491906157ad565b60fc546040517f41976e090000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152929350600092909116906341976e0990602401602060405180830381865afa15801561308d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b191906157ad565b835160ff54919250906001600160a01b031615801590613151575060ff546040517f6c059fb10000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0390911690636c059fb190602401602060405180830381865afa15801561312d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315191906157c6565b1561315a575060005b600061316e82670de0b6b3a764000061570b565b90508261317b828661574d565b61318591906157e8565b9550670de0b6b3a764000061319a878c61574d565b6131a491906157e8565b96505050505050935093915050565b60008160016131c2828661570b565b6131cc9190615823565b6131d691906157e8565b9392505050565b806000036107e2576040517f9cf8540c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015613277573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061329b91906157ad565b9050808211156132d7576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038316600090815261012d60205260408120546132fb9083615823565b905082811015610a3557808303600061331386610d51565b6001600160a01b038716600090815261012d602052604081205482519293509190805b828110156134e75761012e60008683815181106133555761335561571e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008b6001600160a01b03166001600160a01b03168152602001908152602001600020546000146134df576133b3600184615823565b8110156133f0576133df8582815181106133cf576133cf61571e565b60200260200101518b88876143b6565b6133e9908361570b565b91506134df565b60006133fc8388615823565b90508061012e60008885815181106134165761341661571e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546134709190615823565b925050819055508a6001600160a01b03168683815181106134935761349361571e565b60200260200101516001600160a01b03167fc39e3e80c0219fde334a8cb5d8468b628482e23388b6e809c90cb00c63c8ce38836040516134d591815260200190565b60405180910390a3505b600101613336565b506001600160a01b038916600090815261012d602052604081208054879290613511908490615823565b9091555050505050505050505050565b6040516001600160a01b0383166024820152604481018290526110749084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152614667565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316036136155761360e82612cda565b90506108d9565b61012f546040517f266e0a7f0000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301528481166024830152600092169063266e0a7f90604401602060405180830381865afa158015613682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136a6919061593c565b6001600160a01b031614159392505050565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556107e28161474f565b6136f2816131dd565b60fb5460408051918252602082018390527fada67d0d38fa20c8ae6a5c17cb9d60b0fe7f2d4e4f27ac9ee55e54ac88de9d8d910160405180910390a160fb55565b600061373f83836135ca565b613788576040517f983f1fb50000000000000000000000000000000000000000000000000000000081526001600160a01b03808516600483015283166024820152604401610b3c565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015282906000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156137ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061380e91906157ad565b6001600160a01b038516600090815261012d602052604090205490915080821115613a87576001600160a01b0380871660009081526101306020908152604080832093891683529290522054818303945060ff1615613a875760fe546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000918516906370a0823190602401602060405180830381865afa1580156138cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138f091906157ad565b60fe5490915061390d906001600160a01b03868116911687613521565b60fe546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000918616906370a0823190602401602060405180830381865afa158015613972573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061399691906157ad565b60fe546040518881529192506001600160a01b03898116928b82169291909116907fadc20ad416881f76b4304665c35f5be8592297bcdfe4f0bb087b9d254222af559060200160405180910390a460fe546001600160a01b03166353ac35378989613a018686615823565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015613a6857600080fd5b505af1158015613a7c573d6000803e3d6000fd5b505050506000955050505b50505092915050565b6000613a9a614045565b60fe5460ff549192506001600160a01b03908116916000911615613eb75760ff546040517f4e9f8f390000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015285811660248301526000928392911690634e9f8f39906044016000604051808303816000875af1158015613b29573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613b519190810190615959565b8151919350915060005b81811015613eb257828181518110613b7557613b7561571e565b602002602001015160000315613eb2576000848281518110613b9957613b9961571e565b60200260200101516001600160a01b0316636f1a30a8858481518110613bc157613bc161571e565b60200260200101518c8b6040518463ffffffff1660e01b8152600401613c03939291909283526001600160a01b03918216602084015216604082015260600190565b60408051808303816000875af1158015613c21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c459190615a14565b91505088811115613c535750875b613c5d818b6147b9565b613c675750613eb2565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152600091908a16906370a0823190602401602060405180830381865afa158015613cca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cee91906157ad565b9050613d27868481518110613d0557613d0561571e565b6020026020010151838d6001600160a01b03166148f19092919063ffffffff16565b858381518110613d3957613d3961571e565b60209081029190910101516040517f439727a500000000000000000000000000000000000000000000000000000000815260048101849052600060248201526001600160a01b038d811660448301528b811660648301528a811660848301529091169063439727a59060a40160408051808303816000875af1158015613dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613de79190615a14565b50506040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038981166004830152600091908b16906370a0823190602401602060405180830381865afa158015613e4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e7091906157ad565b9050613e7c838c615823565b9a50613e888282615823565b613e92908961570b565b97508a600003613ea457505050613eb2565b836001019350505050613b5b565b505050505b610a8c86848388886149c7565b600080613ed185856140d1565b6000613ede878787611182565b91505087811115613f25576040517f71b5f0c10000000000000000000000000000000000000000000000000000000081526004810182905260248101899052604401610b3c565b613f2f86826141f1565b9250613f3c838787611079565b9250613f4b905085858461433c565b509550959350505050565b6001600160a01b038216600090815261012d602052604081208054839290613f7f908490615823565b90915550505050565b600080613f9585856140d1565b6000613fa2878787611182565b915050613faf86826141f1565b9250808314613fea576040517f0c5c1c2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8783111561402e576040517f71b5f0c10000000000000000000000000000000000000000000000000000000081526004810182905260248101899052604401610b3c565b61403985858961433c565b50909694955050505050565b60fe54604080517fc8ecc0d300000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163c8ecc0d39160048083019260209291908290030181865afa1580156140a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140cc919061593c565b905090565b60ff546000906001600160a01b03161580159061416e575060ff546040517f6c059fb10000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0390911690636c059fb190602401602060405180830381865afa15801561414a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061416e91906157c6565b9050801580156141ba575060026001600160a01b03808516600090815260fd602090815260408083209387168352929052206001015460ff1660038111156141b8576141b861540c565b145b15611074576040517f03410cd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fe546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600091849183918316906370a0823190602401602060405180830381865afa15801561425a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061427e91906157ad565b60fe5490915061429d906001600160a01b038481169133911687614b65565b60fe546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000918416906370a0823190602401602060405180830381865afa158015614302573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061432691906157ad565b90506143328282615823565b9695505050505050565b6001600160a01b038316600090815261012d602052604090205481811015614390576040517f6bb2792900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61439a8483613f56565b836143af6001600160a01b0382168585613521565b5050505050565b6001600160a01b03808516600090815261012e6020908152604080832093871683529290529081205482906143ec90859061574d565b6143f691906157e8565b6001600160a01b03808716600090815261012e60209081526040808320938916835292905290812080549293508392909190614433908490615823565b92505081905550836001600160a01b0316856001600160a01b03167fc39e3e80c0219fde334a8cb5d8468b628482e23388b6e809c90cb00c63c8ce388360405161447f91815260200190565b60405180910390a3949350505050565b600054610100900460ff1661450c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b614514614bb6565b6107e281614c3b565b600054610100900460ff1661459a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b611358614cb8565b600054610100900460ff1661461f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b61462883612827565b61463182611de9565b61463a816136e9565b505060fe80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16905550565b60006146bc826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614d359092919063ffffffff16565b90508051600014806146dd5750808060200190518101906146dd91906157c6565b6110745760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610b3c565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60fc546040517fb62cad690000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092169063b62cad6990602401600060405180830381600087803b15801561481a57600080fd5b505af115801561482e573d6000803e3d6000fd5b505060fc546040517f41976e090000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015260009450670de0b6b3a76400009350879216906341976e0990602401602060405180830381865afa1580156148a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148c691906157ad565b6148d0919061574d565b6148da91906157e8565b905060fb5481106148ea57600191505b5092915050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526149708482614d4c565b610a35576040516001600160a01b0384166024820152600060448201526149bd9085907f095ea7b30000000000000000000000000000000000000000000000000000000090606401613566565b610a358482614667565b8215614a9e5760fe546040518481526001600160a01b0386811692888216929116907fadc20ad416881f76b4304665c35f5be8592297bcdfe4f0bb087b9d254222af559060200160405180910390a460fe546040517f53ac35370000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152868116602483015260448201869052909116906353ac353790606401600060405180830381600087803b158015614a8557600080fd5b505af1158015614a99573d6000803e3d6000fd5b505050505b80156143af576001600160a01b038216600090815261012d602052604081208054839290614acd90849061570b565b90915550506001600160a01b03808616600090815261012e6020908152604080832093861683529290529081208054839290614b0a90849061570b565b92505081905550816001600160a01b0316856001600160a01b03167fc39e3e80c0219fde334a8cb5d8468b628482e23388b6e809c90cb00c63c8ce3883604051614b5691815260200190565b60405180910390a35050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052610a359085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401613566565b600054610100900460ff16614c335760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b611358614df3565b600054610100900460ff166108a85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b600054610100900460ff166127a35760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b6060614d448484600085614e79565b949350505050565b6000806000846001600160a01b031684604051614d699190615a38565b6000604051808303816000865af19150503d8060008114614da6576040519150601f19603f3d011682016040523d82523d6000602084013e614dab565b606091505b5091509150818015614dd5575080511580614dd5575080806020019051810190614dd591906157c6565b8015614dea57506001600160a01b0385163b15155b95945050505050565b600054610100900460ff16614e705760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b611358336136b8565b606082471015614ef15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610b3c565b600080866001600160a01b03168587604051614f0d9190615a38565b60006040518083038185875af1925050503d8060008114614f4a576040519150601f19603f3d011682016040523d82523d6000602084013e614f4f565b606091505b5091509150614f6087838387614f6b565b979650505050505050565b60608315614fda578251600003614fd3576001600160a01b0385163b614fd35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b3c565b5081614d44565b614d448383815115614fef5781518083602001fd5b8060405162461bcd60e51b8152600401610b3c9190615a54565b6001600160a01b03811681146107e257600080fd5b8035610ee881615009565b60006020828403121561503b57600080fd5b81356131d681615009565b60008060006060848603121561505b57600080fd5b83359250602084013561506d81615009565b9150604084013561507d81615009565b809150509250925092565b6000806040838503121561509b57600080fd5b82356150a681615009565b915060208301356150b681615009565b809150509250929050565b600080600080600060a086880312156150d957600080fd5b853594506020860135935060408601356150f281615009565b9250606086013561510281615009565b9150608086013561511281615009565b809150509295509295909350565b6000806000806080858703121561513657600080fd5b843561514181615009565b9350602085013561515181615009565b93969395505050506040820135916060013590565b60008083601f84011261517857600080fd5b50813567ffffffffffffffff81111561519057600080fd5b6020830191508360208260051b85010111156151ab57600080fd5b9250929050565b600080600080600080606087890312156151cb57600080fd5b863567ffffffffffffffff808211156151e357600080fd5b6151ef8a838b01615166565b9098509650602089013591508082111561520857600080fd5b6152148a838b01615166565b9096509450604089013591508082111561522d57600080fd5b5061523a89828a01615166565b979a9699509497509295939492505050565b60008060008060008060008060008060006101008c8e03121561526e57600080fd5b6152778c61501e565b9a5061528560208d0161501e565b995061529360408d0161501e565b98506152a160608d0161501e565b975060808c0135965067ffffffffffffffff8060a08e013511156152c457600080fd5b6152d48e60a08f01358f01615166565b909750955060c08d01358110156152ea57600080fd5b6152fa8e60c08f01358f01615166565b909550935060e08d013581101561531057600080fd5b506153218d60e08e01358e01615166565b81935080925050509295989b509295989b9093969950565b6020808252825182820181905260009190848201906040850190845b8181101561537a5783516001600160a01b031683529284019291840191600101615355565b50909695505050505050565b60008060006060848603121561539b57600080fd5b83356153a681615009565b925060208401356153b681615009565b929592945050506040919091013590565b6000602082840312156153d957600080fd5b5035919050565b600080604083850312156153f357600080fd5b82356153fe81615009565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110615472577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b828152604081016131d6602083018461543b565b6000806000806000606086880312156154a257600080fd5b85356154ad81615009565b9450602086013567ffffffffffffffff808211156154ca57600080fd5b6154d689838a01615166565b909650945060408801359150808211156154ef57600080fd5b818801915088601f83011261550357600080fd5b81358181111561551257600080fd5b8960208260061b850101111561552757600080fd5b9699959850939650602001949392505050565b6000806000838503608081121561555057600080fd5b843561555b81615009565b9350602085013561556b81615009565b925060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08201121561559d57600080fd5b506040840190509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715615603576156036155ab565b604052919050565b600067ffffffffffffffff821115615625576156256155ab565b5060051b60200190565b600082601f83011261564057600080fd5b815160206156556156508361560b565b6155da565b8083825260208201915060208460051b87010193508684111561567757600080fd5b602086015b8481101561569c57805161568f81615009565b835291830191830161567c565b509695505050505050565b6000602082840312156156b957600080fd5b815167ffffffffffffffff8111156156d057600080fd5b614d448482850161562f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156108d9576108d96156dc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820281158282048414176108d9576108d96156dc565b60006020828403121561577657600080fd5b8135600481106131d657600080fd5b84815260208101849052608081016157a0604083018561543b565b614dea606083018461543b565b6000602082840312156157bf57600080fd5b5051919050565b6000602082840312156157d857600080fd5b815180151581146131d657600080fd5b60008261581e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b818103818111156108d9576108d96156dc565b60005b83811015615851578181015183820152602001615839565b50506000910152565b60008151808452615872816020860160208601615836565b601f01601f19169290920160200192915050565b6001600160a01b0383168152604060208201526000614d44604083018461585a565b60006001600160a01b03808616835280851660208401525060606040830152614dea606083018461585a565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261590957600080fd5b83018035915067ffffffffffffffff82111561592457600080fd5b6020019150600581901b36038213156151ab57600080fd5b60006020828403121561594e57600080fd5b81516131d681615009565b6000806040838503121561596c57600080fd5b825167ffffffffffffffff8082111561598457600080fd5b6159908683870161562f565b93506020915081850151818111156159a757600080fd5b85019050601f810186136159ba57600080fd5b80516159c86156508261560b565b81815260059190911b820183019083810190888311156159e757600080fd5b928401925b82841015615a05578351825292840192908401906159ec565b80955050505050509250929050565b60008060408385031215615a2757600080fd5b505080516020909101519092909150565b60008251615a4a818460208701615836565b9190910192915050565b6020815260006131d6602083018461585a56fe736574436f6e76657273696f6e436f6e66696728616464726573732c616464726573732c436f6e76657273696f6e436f6e66696729736574506f6f6c734173736574734469726563745472616e7366657228616464726573735b5d2c616464726573735b5d5b5d2c626f6f6c5b5d5b5d29a2646970667358221220485243ca9e837ed07c3bdbe93c6a29afa91287b895ce2a7896046b71c3019a3664736f6c63430008190033",
|
|
1758
|
-
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061032b5760003560e01c8063715018a6116101b2578063b6828c57116100f9578063e30c3978116100a2578063f0dc7e9d1161007c578063f0dc7e9d1461077b578063f2fde38b1461078e578063fa7b81a0146107a1578063fe3da984146107c857600080fd5b8063e30c397814610744578063e50aa3d414610755578063f04c31871461076857600080fd5b8063c0654646116100d3578063c06546461461070f578063ca32546914610722578063e2ff7ea21461073557600080fd5b8063b6828c57146106f4578063bc368b0414610707578063bd7f33321461058f57600080fd5b806390fa7b541161015b578063afcff50f11610135578063afcff50f1461068c578063b491ddf7146106a0578063b4a0bdf3146106e357600080fd5b806390fa7b541461063b5780639fc3c0c21461064e578063aac59a751461067957600080fd5b80637b77cd6a1161018c5780637b77cd6a146105dc578063817ee19c146105ef5780638da5cb5b1461062a57600080fd5b8063715018a6146105b9578063746460a9146105c157806379ba5097146105d457600080fd5b806352e21a18116102765780635e1e63251161021f5780636f1a30a8116101f95780636f1a30a8146105695780636fb052751461057c57806370a082311461058f57600080fd5b80635e1e63251461053057806364aff9ec146105435780636daa463b1461055657600080fd5b8063556bbd8a11610250578063556bbd8a146104f557806358b904df146105085780635c39f4671461051057600080fd5b806352e21a18146104bc578063530e784f146104cf57806355374522146104e257600080fd5b80633421fc52116102d8578063439727a5116102b2578063439727a514610467578063454900fe1461047a5780634dc1c0a6146104a957600080fd5b80633421fc52146103f8578063362b67951461041f5780633d5e29101461044657600080fd5b80630a9a2b72116103095780630a9a2b72146103aa5780630e32cb86146103d25780632630c12f146103e557600080fd5b806301e201781461033057806307aa239e146103605780630a0a05e614610395575b600080fd5b60ff54610343906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b60fe546103859074010000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610357565b6103a86103a3366004615029565b6107d1565b005b6103bd6103b8366004615046565b6107e5565b60408051928352602083019190915201610357565b6103a86103e0366004615029565b6108a0565b60fc54610343906001600160a01b031681565b6103437f000000000000000000000000000000000000000000000000000000000000000081565b6103437f000000000000000000000000000000000000000000000000000000000000000081565b610459610454366004615088565b6108b1565b604051908152602001610357565b6103bd6104753660046150c1565b6108df565b610385610488366004615088565b61013060209081526000928352604080842090915290825290205460ff1681565b6103a86104b7366004615120565b610a29565b6103a86104ca366004615029565b610a3b565b6103a86104dd366004615029565b610a4c565b6103a86104f03660046151b2565b610a5d565b6103a861050336600461524c565b610a94565b6103a8610c6b565b61052361051e366004615029565b610d51565b6040516103579190615339565b6103bd61053e366004615046565b610eed565b6103a8610551366004615386565b610fd2565b6103bd610564366004615046565b611079565b6103bd610577366004615046565b611182565b61045961058a366004615088565b611281565b61045961059d366004615029565b6001600160a01b0316600090815261012d602052604090205490565b6103a8611346565b6103a86105cf3660046153c7565b61135a565b6103a86113a1565b6103a86105ea366004615029565b61142c565b6103a86105fd366004615386565b6001600160a01b03928316600090815261012e602090815260408083209490951682529290925291902055565b6033546001600160a01b0316610343565b6103bd6106493660046150c1565b6114b3565b6103a861065c3660046153e0565b6001600160a01b03909116600090815261012d6020526040902055565b6103a8610687366004615088565b6115a9565b61012f54610343906001600160a01b031681565b6106d56106ae366004615088565b60fd6020908152600092835260408084209091529082529020805460019091015460ff1682565b604051610357929190615476565b6097546001600160a01b0316610343565b6103bd6107023660046150c1565b6115df565b6103a86116d5565b6103a861071d36600461548a565b611787565b60fe54610343906001600160a01b031681565b6104596706f05b59d3b2000081565b6065546001600160a01b0316610343565b6103a86107633660046153e0565b611825565b6103bd6107763660046150c1565b61182f565b6103a861078936600461553a565b61195e565b6103a861079c366004615029565b611d06565b6103437f000000000000000000000000000000000000000000000000000000000000000081565b61045960fb5481565b6107d9611d8f565b6107e281611de9565b50565b60008060026001600160a01b03808616600090815260fd602090815260408083209388168352929052206001015460ff1660038111156108275761082761540c565b0361085e576040517f03410cd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038316600090815261012d602052604090205485811015610884578095505b859250610892868686611e66565b508092505050935093915050565b6108a8611d8f565b6107e2816121cc565b6001600160a01b03808316600090815261012e60209081526040808320938516835292905220545b92915050565b6000808285856108ed6122c1565b6108f683612316565b816001600160a01b0316836001600160a01b031614806109275750806001600160a01b0316836001600160a01b0316145b1561095e576040517f8aa3a72f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610966612356565b6109738a8a8a8a8a6123af565b90955093508985146109b1576040517fc214279600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109bd8888878761242f565b604080516001600160a01b038a81168252602082018890529181018690528189169188169033907f795a235be939acb902ac69562805f86e1341a9b019c351b996e2aa2dfc34c67c906060015b60405180910390a4610a1c600160c955565b5050509550959350505050565b610a358484848461242f565b50505050565b610a43611d8f565b6107e2816127aa565b610a54611d8f565b6107e281612827565b610a7e6040518060600160405280603c8152602001615a9d603c91396128a4565b610a8c868686868686612970565b505050505050565b600054610100900460ff1615808015610ab45750600054600160ff909116105b80610ace5750303b158015610ace575060005460ff166001145b610b455760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610ba357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610baf8c8c8c8b612c41565b610bb889612316565b61012f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038b16179055610bfa878787878787612970565b8015610c5d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b610ca96040518060400160405280601281526020017f726573756d65436f6e76657273696f6e282900000000000000000000000000008152506128a4565b60fe5474010000000000000000000000000000000000000000900460ff16610cfc576040517e6d8dbb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fe80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16905560405133907f89b79206f08dadd78502cff5075d2b094fa0abea0b063cfafe4475e2a380c51f90600090a2565b61012f546040517ff36dba380000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152606092169063f36dba3890602401600060405180830381865afa158015610db6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dde91908101906156a7565b9050610de982612cda565b15610ee85780516000610dfd82600161570b565b67ffffffffffffffff811115610e1557610e156155ab565b604051908082528060200260200182016040528015610e3e578160200160208202803683370190505b50905060005b82811015610e9857838181518110610e5e57610e5e61571e565b6020026020010151828281518110610e7857610e7861571e565b6001600160a01b0390921660209283029190910190910152600101610e44565b507f0000000000000000000000000000000000000000000000000000000000000000818381518110610ecc57610ecc61571e565b6001600160a01b03909216602092830291909101909101529150505b919050565b60008060026001600160a01b03808616600090815260fd602090815260408083209388168352929052206001015460ff166003811115610f2f57610f2f61540c565b03610f66576040517f03410cd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8491506000610f76868686612ea6565b90925090506000610f9d856001600160a01b0316600090815261012d602052604090205490565b905082811015610fc857610fc2610fbc670de0b6b3a76400008361574d565b836131b3565b93508092505b5050935093915050565b610fda611d8f565b610fe2612356565b610feb83612316565b610ff482612316565b610ffd816131dd565b826110088183613217565b61101c6001600160a01b0382168484613521565b826001600160a01b0316846001600160a01b03167f6d25be279134f4ecaa4770aff0c3d916d9e7c5ef37b65ed95dbdba411f5d54d58460405161106191815260200190565b60405180910390a350611074600160c955565b505050565b60fc546040517fb62cad690000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152600092839291169063b62cad6990602401600060405180830381600087803b1580156110dd57600080fd5b505af11580156110f1573d6000803e3d6000fd5b505060fc546040517fb62cad690000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152909116925063b62cad699150602401600060405180830381600087803b15801561115557600080fd5b505af1158015611169573d6000803e3d6000fd5b50505050611178858585612ea6565b5094959350505050565b60fc546040517fb62cad690000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152600092839291169063b62cad6990602401600060405180830381600087803b1580156111e657600080fd5b505af11580156111fa573d6000803e3d6000fd5b505060fc546040517fb62cad690000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152909116925063b62cad699150602401600060405180830381600087803b15801561125e57600080fd5b505af1158015611272573d6000803e3d6000fd5b50505050611178858585611e66565b600061128f60c95460021490565b156112c6576040517f9a050fe700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112d083836135ca565b611319576040517f983f1fb50000000000000000000000000000000000000000000000000000000081526001600160a01b03808516600483015283166024820152604401610b3c565b506001600160a01b03918216600090815261012e6020908152604080832093909416825291909152205490565b61134e611d8f565b61135860006136b8565b565b6113986040518060400160405280601e81526020017f7365744d696e416d6f756e74546f436f6e766572742875696e743235362900008152506128a4565b6107e2816136e9565b60655433906001600160a01b031681146114235760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152608401610b3c565b6107e2816136b8565b611434611d8f565b61143d81612316565b61012f546040516001600160a01b038084169216907fa87b964d321035d2165e484ff4b722dd6eae30606c0b98887d2ed1a34e594bfe90600090a361012f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000808285856114c16122c1565b6114ca83612316565b816001600160a01b0316836001600160a01b031614806114fb5750806001600160a01b0316836001600160a01b0316145b15611532576040517f8aa3a72f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61153a612356565b6115478a8a8a8a8a6123af565b90955093506115588888878761242f565b604080516001600160a01b038a81168252602082018890529181018690528189169188169033907f93b7ba2a2b0e36320375853d7466af5685c07567804b871b4fdfd31e3bb7715490606001610a0a565b6115b1612356565b60006115bd8383613733565b905080156115d0576115d0838383613a90565b506115db600160c955565b5050565b6000808285856115ed6122c1565b6115f683612316565b816001600160a01b0316836001600160a01b031614806116275750806001600160a01b0316836001600160a01b0316145b1561165e576040517f8aa3a72f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611666612356565b6116738a8a8a8a8a613ec4565b90955093506116848888878761242f565b604080516001600160a01b038a81168252602082018890529181018690528189169188169033907f9b7dc1d7d2974d015b4fc39889a09f3a3923add808f5863158f3162d997d4e8290606001610a0a565b6117136040518060400160405280601181526020017f7061757365436f6e76657273696f6e28290000000000000000000000000000008152506128a4565b61171b6122c1565b60fe80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905560405133907f490bc639fd0d96f19c8adf77bc98d17fbefdee2e1e1864d21f041360d0ee065a90600090a2565b828181146117c1576040517f4d5590f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561181c57611814878787848181106117e2576117e261571e565b90506020020160208101906117f79190615029565b8686858181106118095761180961571e565b90506040020161195e565b6001016117c4565b50505050505050565b6115db8282613f56565b60008082858561183d6122c1565b61184683612316565b816001600160a01b0316836001600160a01b031614806118775750806001600160a01b0316836001600160a01b0316145b156118ae576040517f8aa3a72f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118b6612356565b6118c38a8a8a8a8a613f88565b9095509350888414611901576040517fa8dc653c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61190d8888878761242f565b604080516001600160a01b038a81168252602082018890529181018690528189169188169033907fcb4ea7de8d069b0f443b792cba6c6df5096508951bbc75c04ac42c9251efe07690606001610a0a565b61197f604051806060016040528060358152602001615a68603591396128a4565b61198883612316565b61199182612316565b6706f05b59d3b20000813511156119e5576040517f9770caee000000000000000000000000000000000000000000000000000000008152813560048201526706f05b59d3b200006024820152604401610b3c565b816001600160a01b0316836001600160a01b03161480611a1e5750611a08614045565b6001600160a01b0316836001600160a01b031614155b80611a66575060006001600160a01b03808416600090815260fd602090815260408083209388168352929052206001015460ff166003811115611a6357611a6361540c565b14155b15611a9d576040517feebb5ac600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002611aaf6040830160208401615764565b6003811115611ac057611ac061540c565b148015611acd5750803515155b15611b04576040517fd0d4aabe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002611b166040830160208401615764565b6003811115611b2757611b2761540c565b1480611b5357506001611b406040830160208401615764565b6003811115611b5157611b5161540c565b145b8015611b68575060ff546001600160a01b0316155b15611b9f576040517fe7c2c99400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03808416600081815260fd602090815260408083209487168084529482529182902080546001820154919594937f39fbfdd5da133303ed31b1b65e30a0ddf7a9236573368c66c859dceccc1dd12a93919288359260ff90911691611c0f91908a01908a01615764565b604051611c1f9493929190615785565b60405180910390a36000611c396040840160208501615764565b6003811115611c4a57611c4a61540c565b03611ca7576001600160a01b03808516600090815260fd60209081526040808320938716835292905290812090815560010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055610a35565b81358155611cbb6040830160208401615764565b6001808301805490917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090911690836003811115611cfb57611cfb61540c565b021790555050505050565b611d0e611d8f565b606580546001600160a01b0383167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155611d576033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146113585760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b3c565b611df281612316565b60fe546040516001600160a01b038084169216907f9be3097b5c8b276786be52a244ee90d66efd34805d9eb16f168fb2b4aaae9a2b90600090a360fe80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008084600003611ea3576040517f42301c2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03808516600090815260fd6020908152604080832093871683529281528282208351808501909452805484526001810154929392909183019060ff166003811115611ef757611ef761540c565b6003811115611f0857611f0861540c565b9052509050600081602001516003811115611f2557611f2561540c565b03611f5c576040517f618ce59700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fc546040517f41976e090000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015260009216906341976e0990602401602060405180830381865afa158015611fc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe491906157ad565b60fc546040517f41976e090000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152929350600092909116906341976e0990602401602060405180830381865afa15801561204d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207191906157ad565b835160ff54919250906000906001600160a01b031615801590612114575060ff546040517f6c059fb10000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0390911690636c059fb190602401602060405180830381865afa1580156120f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211491906157c6565b9050801561212157600091505b600061213583670de0b6b3a764000061570b565b9050811561217557612147818661574d565b670de0b6b3a764000061215a868e61574d565b612164919061574d565b61216e91906157e8565b97506121a7565b6121a4670de0b6b3a764000061218b868e61574d565b612195919061574d565b61219f838861574d565b6131b3565b97505b836121b2828761574d565b6121bc91906157e8565b9650505050505050935093915050565b6001600160a01b0381166122485760405162461bcd60e51b815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e6167657220616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610b3c565b609780546001600160a01b038381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0910160405180910390a15050565b60fe5474010000000000000000000000000000000000000000900460ff1615611358576040517f952bcf7f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166107e2576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260c954036123a85760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b3c565b600260c955565b6000806123bc85856140d1565b6123c685886141f1565b91506123d3828686611079565b9150508581101561241a576040517f228f8c110000000000000000000000000000000000000000000000000000000081526004810182905260248101879052604401610b3c565b61242584848361433c565b9550959350505050565b600061243a84610d51565b6001600160a01b038516600090815261012d60205260408120549192509061246390849061570b565b905061246e816131dd565b815160008080805b8481101561279657600061012e60008984815181106124975761249761571e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160a01b03166001600160a01b031681526020019081526020016000205490508060001461278d576124f8600187615823565b821015612558576125248883815181106125145761251461571e565b60200260200101518c8b8a6143b6565b61252e908661570b565b94508661253b828c61574d565b61254591906157e8565b9350612551848461570b565b9250612653565b6000612564868b615823565b90508061012e60008b868151811061257e5761257e61571e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546125d89190615823565b925050819055508b6001600160a01b03168984815181106125fb576125fb61571e565b60200260200101516001600160a01b03167fc39e3e80c0219fde334a8cb5d8468b628482e23388b6e809c90cb00c63c8ce388360405161263d91815260200190565b60405180910390a361264f848c615823565b9450505b8b6001600160a01b031688838151811061266f5761266f61571e565b60200260200101516001600160a01b031660fe60009054906101000a90046001600160a01b03166001600160a01b03167fadc20ad416881f76b4304665c35f5be8592297bcdfe4f0bb087b9d254222af55876040516126d091815260200190565b60405180910390a460fe5488516001600160a01b03909116906353ac3537908a90859081106127015761270161571e565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039182166004820152908f16602482015260448101879052606401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050505b50600101612476565b5050505050505050505050565b600160c955565b6127b381612316565b60ff546040516001600160a01b038084169216907f50f1a16bf24734355b14ff800d132cc0a934808b8621d5623b41bc67f204881790600090a360ff80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61283081612316565b60fc546040516001600160a01b038084169216907f56b5f80d8cac1479698aa7d01605fd6111e90b15fc4d2b377417f46034876cbd90600090a360fc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6097546040517f18c5e8ab0000000000000000000000000000000000000000000000000000000081526000916001600160a01b0316906318c5e8ab906128f09033908690600401615886565b602060405180830381865afa15801561290d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293191906157c6565b9050806115db573330836040517f4a3fa293000000000000000000000000000000000000000000000000000000008152600401610b3c939291906158a8565b8483811415806129805750808214155b156129b7576040517f5f6f132c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015612c375760008686838181106129d6576129d661571e565b90506020028101906129e891906158d4565b808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250939450889250879150859050818110612a3057612a3061571e565b9050602002810190612a4291906158d4565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050845183519394509283149150612ab59050576040517f5f6f132c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015612c2857828181518110612ad257612ad261571e565b602002602001015161013060008e8e89818110612af157612af161571e565b9050602002016020810190612b069190615029565b6001600160a01b03166001600160a01b031681526020019081526020016000206000868481518110612b3a57612b3a61571e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550838181518110612b8b57612b8b61571e565b60200260200101516001600160a01b03168c8c87818110612bae57612bae61571e565b9050602002016020810190612bc39190615029565b6001600160a01b03167f6333c55c3657aafc9b39e2586076d198ed0250804559126489c852f28d51280c858481518110612bff57612bff61571e565b6020026020010151604051612c18911515815260200190565b60405180910390a3600101612ab8565b508360010193505050506129ba565b5050505050505050565b600054610100900460ff16612cbe5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b612cc78461448f565b612ccf61451d565b610a358383836145a2565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b0772d0b6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612d3b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d6391908101906156a7565b805190915060005b81811015612e9e57828181518110612d8557612d8561571e565b60200260200101516001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614612e5957846001600160a01b0316838281518110612de157612de161571e565b60200260200101516001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e4a919061593c565b6001600160a01b031614612e8f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316145b935083612e9e57600101612d6b565b505050919050565b60008084600003612ee3576040517f098fb56100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03808516600090815260fd6020908152604080832093871683529281528282208351808501909452805484526001810154929392909183019060ff166003811115612f3757612f3761540c565b6003811115612f4857612f4861540c565b9052509050600081602001516003811115612f6557612f6561540c565b03612f9c576040517f618ce59700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fc546040517f41976e090000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015260009216906341976e0990602401602060405180830381865afa158015613000573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061302491906157ad565b60fc546040517f41976e090000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152929350600092909116906341976e0990602401602060405180830381865afa15801561308d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b191906157ad565b835160ff54919250906001600160a01b031615801590613151575060ff546040517f6c059fb10000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0390911690636c059fb190602401602060405180830381865afa15801561312d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315191906157c6565b1561315a575060005b600061316e82670de0b6b3a764000061570b565b90508261317b828661574d565b61318591906157e8565b9550670de0b6b3a764000061319a878c61574d565b6131a491906157e8565b96505050505050935093915050565b60008160016131c2828661570b565b6131cc9190615823565b6131d691906157e8565b9392505050565b806000036107e2576040517f9cf8540c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015613277573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061329b91906157ad565b9050808211156132d7576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038316600090815261012d60205260408120546132fb9083615823565b905082811015610a3557808303600061331386610d51565b6001600160a01b038716600090815261012d602052604081205482519293509190805b828110156134e75761012e60008683815181106133555761335561571e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008b6001600160a01b03166001600160a01b03168152602001908152602001600020546000146134df576133b3600184615823565b8110156133f0576133df8582815181106133cf576133cf61571e565b60200260200101518b88876143b6565b6133e9908361570b565b91506134df565b60006133fc8388615823565b90508061012e60008885815181106134165761341661571e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546134709190615823565b925050819055508a6001600160a01b03168683815181106134935761349361571e565b60200260200101516001600160a01b03167fc39e3e80c0219fde334a8cb5d8468b628482e23388b6e809c90cb00c63c8ce38836040516134d591815260200190565b60405180910390a3505b600101613336565b506001600160a01b038916600090815261012d602052604081208054879290613511908490615823565b9091555050505050505050505050565b6040516001600160a01b0383166024820152604481018290526110749084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152614667565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316036136155761360e82612cda565b90506108d9565b61012f546040517f266e0a7f0000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301528481166024830152600092169063266e0a7f90604401602060405180830381865afa158015613682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136a6919061593c565b6001600160a01b031614159392505050565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556107e28161474f565b6136f2816131dd565b60fb5460408051918252602082018390527fada67d0d38fa20c8ae6a5c17cb9d60b0fe7f2d4e4f27ac9ee55e54ac88de9d8d910160405180910390a160fb55565b600061373f83836135ca565b613788576040517f983f1fb50000000000000000000000000000000000000000000000000000000081526001600160a01b03808516600483015283166024820152604401610b3c565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015282906000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156137ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061380e91906157ad565b6001600160a01b038516600090815261012d602052604090205490915080821115613a87576001600160a01b0380871660009081526101306020908152604080832093891683529290522054818303945060ff1615613a875760fe546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000918516906370a0823190602401602060405180830381865afa1580156138cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138f091906157ad565b60fe5490915061390d906001600160a01b03868116911687613521565b60fe546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000918616906370a0823190602401602060405180830381865afa158015613972573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061399691906157ad565b60fe546040518881529192506001600160a01b03898116928b82169291909116907fadc20ad416881f76b4304665c35f5be8592297bcdfe4f0bb087b9d254222af559060200160405180910390a460fe546001600160a01b03166353ac35378989613a018686615823565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015613a6857600080fd5b505af1158015613a7c573d6000803e3d6000fd5b505050506000955050505b50505092915050565b6000613a9a614045565b60fe5460ff549192506001600160a01b03908116916000911615613eb75760ff546040517f4e9f8f390000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015285811660248301526000928392911690634e9f8f39906044016000604051808303816000875af1158015613b29573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613b519190810190615959565b8151919350915060005b81811015613eb257828181518110613b7557613b7561571e565b602002602001015160000315613eb2576000848281518110613b9957613b9961571e565b60200260200101516001600160a01b0316636f1a30a8858481518110613bc157613bc161571e565b60200260200101518c8b6040518463ffffffff1660e01b8152600401613c03939291909283526001600160a01b03918216602084015216604082015260600190565b60408051808303816000875af1158015613c21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c459190615a14565b91505088811115613c535750875b613c5d818b6147b9565b613c675750613eb2565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152600091908a16906370a0823190602401602060405180830381865afa158015613cca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cee91906157ad565b9050613d27868481518110613d0557613d0561571e565b6020026020010151838d6001600160a01b03166148f19092919063ffffffff16565b858381518110613d3957613d3961571e565b60209081029190910101516040517f439727a500000000000000000000000000000000000000000000000000000000815260048101849052600060248201526001600160a01b038d811660448301528b811660648301528a811660848301529091169063439727a59060a40160408051808303816000875af1158015613dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613de79190615a14565b50506040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038981166004830152600091908b16906370a0823190602401602060405180830381865afa158015613e4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e7091906157ad565b9050613e7c838c615823565b9a50613e888282615823565b613e92908961570b565b97508a600003613ea457505050613eb2565b836001019350505050613b5b565b505050505b610a8c86848388886149c7565b600080613ed185856140d1565b6000613ede878787611182565b91505087811115613f25576040517f71b5f0c10000000000000000000000000000000000000000000000000000000081526004810182905260248101899052604401610b3c565b613f2f86826141f1565b9250613f3c838787611079565b9250613f4b905085858461433c565b509550959350505050565b6001600160a01b038216600090815261012d602052604081208054839290613f7f908490615823565b90915550505050565b600080613f9585856140d1565b6000613fa2878787611182565b915050613faf86826141f1565b9250808314613fea576040517f0c5c1c2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8783111561402e576040517f71b5f0c10000000000000000000000000000000000000000000000000000000081526004810182905260248101899052604401610b3c565b61403985858961433c565b50909694955050505050565b60fe54604080517fc8ecc0d300000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163c8ecc0d39160048083019260209291908290030181865afa1580156140a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140cc919061593c565b905090565b60ff546000906001600160a01b03161580159061416e575060ff546040517f6c059fb10000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0390911690636c059fb190602401602060405180830381865afa15801561414a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061416e91906157c6565b9050801580156141ba575060026001600160a01b03808516600090815260fd602090815260408083209387168352929052206001015460ff1660038111156141b8576141b861540c565b145b15611074576040517f03410cd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fe546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600091849183918316906370a0823190602401602060405180830381865afa15801561425a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061427e91906157ad565b60fe5490915061429d906001600160a01b038481169133911687614b65565b60fe546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000918416906370a0823190602401602060405180830381865afa158015614302573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061432691906157ad565b90506143328282615823565b9695505050505050565b6001600160a01b038316600090815261012d602052604090205481811015614390576040517f6bb2792900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61439a8483613f56565b836143af6001600160a01b0382168585613521565b5050505050565b6001600160a01b03808516600090815261012e6020908152604080832093871683529290529081205482906143ec90859061574d565b6143f691906157e8565b6001600160a01b03808716600090815261012e60209081526040808320938916835292905290812080549293508392909190614433908490615823565b92505081905550836001600160a01b0316856001600160a01b03167fc39e3e80c0219fde334a8cb5d8468b628482e23388b6e809c90cb00c63c8ce388360405161447f91815260200190565b60405180910390a3949350505050565b600054610100900460ff1661450c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b614514614bb6565b6107e281614c3b565b600054610100900460ff1661459a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b611358614cb8565b600054610100900460ff1661461f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b61462883612827565b61463182611de9565b61463a816136e9565b505060fe80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16905550565b60006146bc826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614d359092919063ffffffff16565b90508051600014806146dd5750808060200190518101906146dd91906157c6565b6110745760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610b3c565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60fc546040517fb62cad690000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092169063b62cad6990602401600060405180830381600087803b15801561481a57600080fd5b505af115801561482e573d6000803e3d6000fd5b505060fc546040517f41976e090000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015260009450670de0b6b3a76400009350879216906341976e0990602401602060405180830381865afa1580156148a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148c691906157ad565b6148d0919061574d565b6148da91906157e8565b905060fb5481106148ea57600191505b5092915050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526149708482614d4c565b610a35576040516001600160a01b0384166024820152600060448201526149bd9085907f095ea7b30000000000000000000000000000000000000000000000000000000090606401613566565b610a358482614667565b8215614a9e5760fe546040518481526001600160a01b0386811692888216929116907fadc20ad416881f76b4304665c35f5be8592297bcdfe4f0bb087b9d254222af559060200160405180910390a460fe546040517f53ac35370000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152868116602483015260448201869052909116906353ac353790606401600060405180830381600087803b158015614a8557600080fd5b505af1158015614a99573d6000803e3d6000fd5b505050505b80156143af576001600160a01b038216600090815261012d602052604081208054839290614acd90849061570b565b90915550506001600160a01b03808616600090815261012e6020908152604080832093861683529290529081208054839290614b0a90849061570b565b92505081905550816001600160a01b0316856001600160a01b03167fc39e3e80c0219fde334a8cb5d8468b628482e23388b6e809c90cb00c63c8ce3883604051614b5691815260200190565b60405180910390a35050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052610a359085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401613566565b600054610100900460ff16614c335760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b611358614df3565b600054610100900460ff166108a85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b600054610100900460ff166127a35760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b6060614d448484600085614e79565b949350505050565b6000806000846001600160a01b031684604051614d699190615a38565b6000604051808303816000865af19150503d8060008114614da6576040519150601f19603f3d011682016040523d82523d6000602084013e614dab565b606091505b5091509150818015614dd5575080511580614dd5575080806020019051810190614dd591906157c6565b8015614dea57506001600160a01b0385163b15155b95945050505050565b600054610100900460ff16614e705760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b611358336136b8565b606082471015614ef15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610b3c565b600080866001600160a01b03168587604051614f0d9190615a38565b60006040518083038185875af1925050503d8060008114614f4a576040519150601f19603f3d011682016040523d82523d6000602084013e614f4f565b606091505b5091509150614f6087838387614f6b565b979650505050505050565b60608315614fda578251600003614fd3576001600160a01b0385163b614fd35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b3c565b5081614d44565b614d448383815115614fef5781518083602001fd5b8060405162461bcd60e51b8152600401610b3c9190615a54565b6001600160a01b03811681146107e257600080fd5b8035610ee881615009565b60006020828403121561503b57600080fd5b81356131d681615009565b60008060006060848603121561505b57600080fd5b83359250602084013561506d81615009565b9150604084013561507d81615009565b809150509250925092565b6000806040838503121561509b57600080fd5b82356150a681615009565b915060208301356150b681615009565b809150509250929050565b600080600080600060a086880312156150d957600080fd5b853594506020860135935060408601356150f281615009565b9250606086013561510281615009565b9150608086013561511281615009565b809150509295509295909350565b6000806000806080858703121561513657600080fd5b843561514181615009565b9350602085013561515181615009565b93969395505050506040820135916060013590565b60008083601f84011261517857600080fd5b50813567ffffffffffffffff81111561519057600080fd5b6020830191508360208260051b85010111156151ab57600080fd5b9250929050565b600080600080600080606087890312156151cb57600080fd5b863567ffffffffffffffff808211156151e357600080fd5b6151ef8a838b01615166565b9098509650602089013591508082111561520857600080fd5b6152148a838b01615166565b9096509450604089013591508082111561522d57600080fd5b5061523a89828a01615166565b979a9699509497509295939492505050565b60008060008060008060008060008060006101008c8e03121561526e57600080fd5b6152778c61501e565b9a5061528560208d0161501e565b995061529360408d0161501e565b98506152a160608d0161501e565b975060808c0135965067ffffffffffffffff8060a08e013511156152c457600080fd5b6152d48e60a08f01358f01615166565b909750955060c08d01358110156152ea57600080fd5b6152fa8e60c08f01358f01615166565b909550935060e08d013581101561531057600080fd5b506153218d60e08e01358e01615166565b81935080925050509295989b509295989b9093969950565b6020808252825182820181905260009190848201906040850190845b8181101561537a5783516001600160a01b031683529284019291840191600101615355565b50909695505050505050565b60008060006060848603121561539b57600080fd5b83356153a681615009565b925060208401356153b681615009565b929592945050506040919091013590565b6000602082840312156153d957600080fd5b5035919050565b600080604083850312156153f357600080fd5b82356153fe81615009565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110615472577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b828152604081016131d6602083018461543b565b6000806000806000606086880312156154a257600080fd5b85356154ad81615009565b9450602086013567ffffffffffffffff808211156154ca57600080fd5b6154d689838a01615166565b909650945060408801359150808211156154ef57600080fd5b818801915088601f83011261550357600080fd5b81358181111561551257600080fd5b8960208260061b850101111561552757600080fd5b9699959850939650602001949392505050565b6000806000838503608081121561555057600080fd5b843561555b81615009565b9350602085013561556b81615009565b925060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08201121561559d57600080fd5b506040840190509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715615603576156036155ab565b604052919050565b600067ffffffffffffffff821115615625576156256155ab565b5060051b60200190565b600082601f83011261564057600080fd5b815160206156556156508361560b565b6155da565b8083825260208201915060208460051b87010193508684111561567757600080fd5b602086015b8481101561569c57805161568f81615009565b835291830191830161567c565b509695505050505050565b6000602082840312156156b957600080fd5b815167ffffffffffffffff8111156156d057600080fd5b614d448482850161562f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156108d9576108d96156dc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820281158282048414176108d9576108d96156dc565b60006020828403121561577657600080fd5b8135600481106131d657600080fd5b84815260208101849052608081016157a0604083018561543b565b614dea606083018461543b565b6000602082840312156157bf57600080fd5b5051919050565b6000602082840312156157d857600080fd5b815180151581146131d657600080fd5b60008261581e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b818103818111156108d9576108d96156dc565b60005b83811015615851578181015183820152602001615839565b50506000910152565b60008151808452615872816020860160208601615836565b601f01601f19169290920160200192915050565b6001600160a01b0383168152604060208201526000614d44604083018461585a565b60006001600160a01b03808616835280851660208401525060606040830152614dea606083018461585a565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261590957600080fd5b83018035915067ffffffffffffffff82111561592457600080fd5b6020019150600581901b36038213156151ab57600080fd5b60006020828403121561594e57600080fd5b81516131d681615009565b6000806040838503121561596c57600080fd5b825167ffffffffffffffff8082111561598457600080fd5b6159908683870161562f565b93506020915081850151818111156159a757600080fd5b85019050601f810186136159ba57600080fd5b80516159c86156508261560b565b81815260059190911b820183019083810190888311156159e757600080fd5b928401925b82841015615a05578351825292840192908401906159ec565b80955050505050509250929050565b60008060408385031215615a2757600080fd5b505080516020909101519092909150565b60008251615a4a818460208701615836565b9190910192915050565b6020815260006131d6602083018461585a56fe736574436f6e76657273696f6e436f6e66696728616464726573732c616464726573732c436f6e76657273696f6e436f6e66696729736574506f6f6c734173736574734469726563745472616e7366657228616464726573735b5d2c616464726573735b5d5b5d2c626f6f6c5b5d5b5d29a2646970667358221220485243ca9e837ed07c3bdbe93c6a29afa91287b895ce2a7896046b71c3019a3664736f6c63430008190033",
|
|
1757
|
+
"bytecode": "0x60e060405234801561001057600080fd5b50604051615d21380380615d2183398101604081905261002f9161017e565b82828261003b83610079565b61004482610079565b61004d81610079565b6001600160a01b0380841660805282811660a052811660c05261006e6100a3565b5050505050506101c1565b6001600160a01b0381166100a0576040516342bcdf7f60e11b815260040160405180910390fd5b50565b600054610100900460ff161561010f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614610160576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b038116811461017957600080fd5b919050565b60008060006060848603121561019357600080fd5b61019c84610162565b92506101aa60208501610162565b91506101b860408501610162565b90509250925092565b60805160a05160c051615b0e610213600039600081816104240152612e5b0152600081816103fd0152612d980152600081816107a601528181610e9b01528181612cdf01526135ce0152615b0e6000f3fe608060405234801561001057600080fd5b506004361061032b5760003560e01c8063715018a6116101b2578063b6828c57116100f9578063e30c3978116100a2578063f0dc7e9d1161007c578063f0dc7e9d1461077b578063f2fde38b1461078e578063fa7b81a0146107a1578063fe3da984146107c857600080fd5b8063e30c397814610744578063e50aa3d414610755578063f04c31871461076857600080fd5b8063c0654646116100d3578063c06546461461070f578063ca32546914610722578063e2ff7ea21461073557600080fd5b8063b6828c57146106f4578063bc368b0414610707578063bd7f33321461058f57600080fd5b806390fa7b541161015b578063afcff50f11610135578063afcff50f1461068c578063b491ddf7146106a0578063b4a0bdf3146106e357600080fd5b806390fa7b541461063b5780639fc3c0c21461064e578063aac59a751461067957600080fd5b80637b77cd6a1161018c5780637b77cd6a146105dc578063817ee19c146105ef5780638da5cb5b1461062a57600080fd5b8063715018a6146105b9578063746460a9146105c157806379ba5097146105d457600080fd5b806352e21a18116102765780635e1e63251161021f5780636f1a30a8116101f95780636f1a30a8146105695780636fb052751461057c57806370a082311461058f57600080fd5b80635e1e63251461053057806364aff9ec146105435780636daa463b1461055657600080fd5b8063556bbd8a11610250578063556bbd8a146104f557806358b904df146105085780635c39f4671461051057600080fd5b806352e21a18146104bc578063530e784f146104cf57806355374522146104e257600080fd5b80633421fc52116102d8578063439727a5116102b2578063439727a514610467578063454900fe1461047a5780634dc1c0a6146104a957600080fd5b80633421fc52146103f8578063362b67951461041f5780633d5e29101461044657600080fd5b80630a9a2b72116103095780630a9a2b72146103aa5780630e32cb86146103d25780632630c12f146103e557600080fd5b806301e201781461033057806307aa239e146103605780630a0a05e614610395575b600080fd5b60ff54610343906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b60fe546103859074010000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610357565b6103a86103a3366004615029565b6107d1565b005b6103bd6103b8366004615046565b6107e5565b60408051928352602083019190915201610357565b6103a86103e0366004615029565b6108a0565b60fc54610343906001600160a01b031681565b6103437f000000000000000000000000000000000000000000000000000000000000000081565b6103437f000000000000000000000000000000000000000000000000000000000000000081565b610459610454366004615088565b6108b1565b604051908152602001610357565b6103bd6104753660046150c1565b6108df565b610385610488366004615088565b61013060209081526000928352604080842090915290825290205460ff1681565b6103a86104b7366004615120565b610a29565b6103a86104ca366004615029565b610a3b565b6103a86104dd366004615029565b610a4c565b6103a86104f03660046151b2565b610a5d565b6103a861050336600461524c565b610a94565b6103a8610c6b565b61052361051e366004615029565b610d51565b6040516103579190615339565b6103bd61053e366004615046565b610eed565b6103a8610551366004615386565b610fd2565b6103bd610564366004615046565b611079565b6103bd610577366004615046565b611182565b61045961058a366004615088565b611281565b61045961059d366004615029565b6001600160a01b0316600090815261012d602052604090205490565b6103a8611346565b6103a86105cf3660046153c7565b61135a565b6103a86113a1565b6103a86105ea366004615029565b61142c565b6103a86105fd366004615386565b6001600160a01b03928316600090815261012e602090815260408083209490951682529290925291902055565b6033546001600160a01b0316610343565b6103bd6106493660046150c1565b6114b3565b6103a861065c3660046153e0565b6001600160a01b03909116600090815261012d6020526040902055565b6103a8610687366004615088565b6115a9565b61012f54610343906001600160a01b031681565b6106d56106ae366004615088565b60fd6020908152600092835260408084209091529082529020805460019091015460ff1682565b604051610357929190615476565b6097546001600160a01b0316610343565b6103bd6107023660046150c1565b6115df565b6103a86116d5565b6103a861071d36600461548a565b611787565b60fe54610343906001600160a01b031681565b6104596706f05b59d3b2000081565b6065546001600160a01b0316610343565b6103a86107633660046153e0565b611825565b6103bd6107763660046150c1565b61182f565b6103a861078936600461553a565b61195e565b6103a861079c366004615029565b611d06565b6103437f000000000000000000000000000000000000000000000000000000000000000081565b61045960fb5481565b6107d9611d8f565b6107e281611de9565b50565b60008060026001600160a01b03808616600090815260fd602090815260408083209388168352929052206001015460ff1660038111156108275761082761540c565b0361085e576040517f03410cd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038316600090815261012d602052604090205485811015610884578095505b859250610892868686611e66565b508092505050935093915050565b6108a8611d8f565b6107e2816121cc565b6001600160a01b03808316600090815261012e60209081526040808320938516835292905220545b92915050565b6000808285856108ed6122c1565b6108f683612316565b816001600160a01b0316836001600160a01b031614806109275750806001600160a01b0316836001600160a01b0316145b1561095e576040517f8aa3a72f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610966612356565b6109738a8a8a8a8a6123af565b90955093508985146109b1576040517fc214279600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109bd8888878761242f565b604080516001600160a01b038a81168252602082018890529181018690528189169188169033907f795a235be939acb902ac69562805f86e1341a9b019c351b996e2aa2dfc34c67c906060015b60405180910390a4610a1c600160c955565b5050509550959350505050565b610a358484848461242f565b50505050565b610a43611d8f565b6107e2816127aa565b610a54611d8f565b6107e281612827565b610a7e6040518060600160405280603c8152602001615a9d603c91396128a4565b610a8c868686868686612970565b505050505050565b600054610100900460ff1615808015610ab45750600054600160ff909116105b80610ace5750303b158015610ace575060005460ff166001145b610b455760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610ba357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610baf8c8c8c8b612c41565b610bb889612316565b61012f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038b16179055610bfa878787878787612970565b8015610c5d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b610ca96040518060400160405280601281526020017f726573756d65436f6e76657273696f6e282900000000000000000000000000008152506128a4565b60fe5474010000000000000000000000000000000000000000900460ff16610cfc576040517e6d8dbb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fe80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16905560405133907f89b79206f08dadd78502cff5075d2b094fa0abea0b063cfafe4475e2a380c51f90600090a2565b61012f546040517ff36dba380000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152606092169063f36dba3890602401600060405180830381865afa158015610db6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dde91908101906156a7565b9050610de982612cda565b15610ee85780516000610dfd82600161570b565b67ffffffffffffffff811115610e1557610e156155ab565b604051908082528060200260200182016040528015610e3e578160200160208202803683370190505b50905060005b82811015610e9857838181518110610e5e57610e5e61571e565b6020026020010151828281518110610e7857610e7861571e565b6001600160a01b0390921660209283029190910190910152600101610e44565b507f0000000000000000000000000000000000000000000000000000000000000000818381518110610ecc57610ecc61571e565b6001600160a01b03909216602092830291909101909101529150505b919050565b60008060026001600160a01b03808616600090815260fd602090815260408083209388168352929052206001015460ff166003811115610f2f57610f2f61540c565b03610f66576040517f03410cd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8491506000610f76868686612ea6565b90925090506000610f9d856001600160a01b0316600090815261012d602052604090205490565b905082811015610fc857610fc2610fbc670de0b6b3a76400008361574d565b836131b3565b93508092505b5050935093915050565b610fda611d8f565b610fe2612356565b610feb83612316565b610ff482612316565b610ffd816131dd565b826110088183613217565b61101c6001600160a01b0382168484613521565b826001600160a01b0316846001600160a01b03167f6d25be279134f4ecaa4770aff0c3d916d9e7c5ef37b65ed95dbdba411f5d54d58460405161106191815260200190565b60405180910390a350611074600160c955565b505050565b60fc546040517fb62cad690000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152600092839291169063b62cad6990602401600060405180830381600087803b1580156110dd57600080fd5b505af11580156110f1573d6000803e3d6000fd5b505060fc546040517fb62cad690000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152909116925063b62cad699150602401600060405180830381600087803b15801561115557600080fd5b505af1158015611169573d6000803e3d6000fd5b50505050611178858585612ea6565b5094959350505050565b60fc546040517fb62cad690000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152600092839291169063b62cad6990602401600060405180830381600087803b1580156111e657600080fd5b505af11580156111fa573d6000803e3d6000fd5b505060fc546040517fb62cad690000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152909116925063b62cad699150602401600060405180830381600087803b15801561125e57600080fd5b505af1158015611272573d6000803e3d6000fd5b50505050611178858585611e66565b600061128f60c95460021490565b156112c6576040517f9a050fe700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112d083836135ca565b611319576040517f983f1fb50000000000000000000000000000000000000000000000000000000081526001600160a01b03808516600483015283166024820152604401610b3c565b506001600160a01b03918216600090815261012e6020908152604080832093909416825291909152205490565b61134e611d8f565b61135860006136b8565b565b6113986040518060400160405280601e81526020017f7365744d696e416d6f756e74546f436f6e766572742875696e743235362900008152506128a4565b6107e2816136e9565b60655433906001600160a01b031681146114235760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152608401610b3c565b6107e2816136b8565b611434611d8f565b61143d81612316565b61012f546040516001600160a01b038084169216907fa87b964d321035d2165e484ff4b722dd6eae30606c0b98887d2ed1a34e594bfe90600090a361012f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000808285856114c16122c1565b6114ca83612316565b816001600160a01b0316836001600160a01b031614806114fb5750806001600160a01b0316836001600160a01b0316145b15611532576040517f8aa3a72f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61153a612356565b6115478a8a8a8a8a6123af565b90955093506115588888878761242f565b604080516001600160a01b038a81168252602082018890529181018690528189169188169033907f93b7ba2a2b0e36320375853d7466af5685c07567804b871b4fdfd31e3bb7715490606001610a0a565b6115b1612356565b60006115bd8383613733565b905080156115d0576115d0838383613a90565b506115db600160c955565b5050565b6000808285856115ed6122c1565b6115f683612316565b816001600160a01b0316836001600160a01b031614806116275750806001600160a01b0316836001600160a01b0316145b1561165e576040517f8aa3a72f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611666612356565b6116738a8a8a8a8a613ec4565b90955093506116848888878761242f565b604080516001600160a01b038a81168252602082018890529181018690528189169188169033907f9b7dc1d7d2974d015b4fc39889a09f3a3923add808f5863158f3162d997d4e8290606001610a0a565b6117136040518060400160405280601181526020017f7061757365436f6e76657273696f6e28290000000000000000000000000000008152506128a4565b61171b6122c1565b60fe80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905560405133907f490bc639fd0d96f19c8adf77bc98d17fbefdee2e1e1864d21f041360d0ee065a90600090a2565b828181146117c1576040517f4d5590f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561181c57611814878787848181106117e2576117e261571e565b90506020020160208101906117f79190615029565b8686858181106118095761180961571e565b90506040020161195e565b6001016117c4565b50505050505050565b6115db8282613f56565b60008082858561183d6122c1565b61184683612316565b816001600160a01b0316836001600160a01b031614806118775750806001600160a01b0316836001600160a01b0316145b156118ae576040517f8aa3a72f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118b6612356565b6118c38a8a8a8a8a613f88565b9095509350888414611901576040517fa8dc653c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61190d8888878761242f565b604080516001600160a01b038a81168252602082018890529181018690528189169188169033907fcb4ea7de8d069b0f443b792cba6c6df5096508951bbc75c04ac42c9251efe07690606001610a0a565b61197f604051806060016040528060358152602001615a68603591396128a4565b61198883612316565b61199182612316565b6706f05b59d3b20000813511156119e5576040517f9770caee000000000000000000000000000000000000000000000000000000008152813560048201526706f05b59d3b200006024820152604401610b3c565b816001600160a01b0316836001600160a01b03161480611a1e5750611a08614045565b6001600160a01b0316836001600160a01b031614155b80611a66575060006001600160a01b03808416600090815260fd602090815260408083209388168352929052206001015460ff166003811115611a6357611a6361540c565b14155b15611a9d576040517feebb5ac600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002611aaf6040830160208401615764565b6003811115611ac057611ac061540c565b148015611acd5750803515155b15611b04576040517fd0d4aabe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002611b166040830160208401615764565b6003811115611b2757611b2761540c565b1480611b5357506001611b406040830160208401615764565b6003811115611b5157611b5161540c565b145b8015611b68575060ff546001600160a01b0316155b15611b9f576040517fe7c2c99400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03808416600081815260fd602090815260408083209487168084529482529182902080546001820154919594937f39fbfdd5da133303ed31b1b65e30a0ddf7a9236573368c66c859dceccc1dd12a93919288359260ff90911691611c0f91908a01908a01615764565b604051611c1f9493929190615785565b60405180910390a36000611c396040840160208501615764565b6003811115611c4a57611c4a61540c565b03611ca7576001600160a01b03808516600090815260fd60209081526040808320938716835292905290812090815560010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055610a35565b81358155611cbb6040830160208401615764565b6001808301805490917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090911690836003811115611cfb57611cfb61540c565b021790555050505050565b611d0e611d8f565b606580546001600160a01b0383167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155611d576033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146113585760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b3c565b611df281612316565b60fe546040516001600160a01b038084169216907f9be3097b5c8b276786be52a244ee90d66efd34805d9eb16f168fb2b4aaae9a2b90600090a360fe80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008084600003611ea3576040517f42301c2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03808516600090815260fd6020908152604080832093871683529281528282208351808501909452805484526001810154929392909183019060ff166003811115611ef757611ef761540c565b6003811115611f0857611f0861540c565b9052509050600081602001516003811115611f2557611f2561540c565b03611f5c576040517f618ce59700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fc546040517f41976e090000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015260009216906341976e0990602401602060405180830381865afa158015611fc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe491906157ad565b60fc546040517f41976e090000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152929350600092909116906341976e0990602401602060405180830381865afa15801561204d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207191906157ad565b835160ff54919250906000906001600160a01b031615801590612114575060ff546040517f6c059fb10000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0390911690636c059fb190602401602060405180830381865afa1580156120f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211491906157c6565b9050801561212157600091505b600061213583670de0b6b3a764000061570b565b9050811561217557612147818661574d565b670de0b6b3a764000061215a868e61574d565b612164919061574d565b61216e91906157e8565b97506121a7565b6121a4670de0b6b3a764000061218b868e61574d565b612195919061574d565b61219f838861574d565b6131b3565b97505b836121b2828761574d565b6121bc91906157e8565b9650505050505050935093915050565b6001600160a01b0381166122485760405162461bcd60e51b815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e6167657220616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610b3c565b609780546001600160a01b038381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0910160405180910390a15050565b60fe5474010000000000000000000000000000000000000000900460ff1615611358576040517f952bcf7f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166107e2576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260c954036123a85760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b3c565b600260c955565b6000806123bc85856140d1565b6123c685886141f1565b91506123d3828686611079565b9150508581101561241a576040517f228f8c110000000000000000000000000000000000000000000000000000000081526004810182905260248101879052604401610b3c565b61242584848361433c565b9550959350505050565b600061243a84610d51565b6001600160a01b038516600090815261012d60205260408120549192509061246390849061570b565b905061246e816131dd565b815160008080805b8481101561279657600061012e60008984815181106124975761249761571e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160a01b03166001600160a01b031681526020019081526020016000205490508060001461278d576124f8600187615823565b821015612558576125248883815181106125145761251461571e565b60200260200101518c8b8a6143b6565b61252e908661570b565b94508661253b828c61574d565b61254591906157e8565b9350612551848461570b565b9250612653565b6000612564868b615823565b90508061012e60008b868151811061257e5761257e61571e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546125d89190615823565b925050819055508b6001600160a01b03168984815181106125fb576125fb61571e565b60200260200101516001600160a01b03167fc39e3e80c0219fde334a8cb5d8468b628482e23388b6e809c90cb00c63c8ce388360405161263d91815260200190565b60405180910390a361264f848c615823565b9450505b8b6001600160a01b031688838151811061266f5761266f61571e565b60200260200101516001600160a01b031660fe60009054906101000a90046001600160a01b03166001600160a01b03167fadc20ad416881f76b4304665c35f5be8592297bcdfe4f0bb087b9d254222af55876040516126d091815260200190565b60405180910390a460fe5488516001600160a01b03909116906353ac3537908a90859081106127015761270161571e565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039182166004820152908f16602482015260448101879052606401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050505b50600101612476565b5050505050505050505050565b600160c955565b6127b381612316565b60ff546040516001600160a01b038084169216907f50f1a16bf24734355b14ff800d132cc0a934808b8621d5623b41bc67f204881790600090a360ff80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61283081612316565b60fc546040516001600160a01b038084169216907f56b5f80d8cac1479698aa7d01605fd6111e90b15fc4d2b377417f46034876cbd90600090a360fc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6097546040517f18c5e8ab0000000000000000000000000000000000000000000000000000000081526000916001600160a01b0316906318c5e8ab906128f09033908690600401615886565b602060405180830381865afa15801561290d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293191906157c6565b9050806115db573330836040517f4a3fa293000000000000000000000000000000000000000000000000000000008152600401610b3c939291906158a8565b8483811415806129805750808214155b156129b7576040517f5f6f132c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015612c375760008686838181106129d6576129d661571e565b90506020028101906129e891906158d4565b808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250939450889250879150859050818110612a3057612a3061571e565b9050602002810190612a4291906158d4565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050845183519394509283149150612ab59050576040517f5f6f132c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015612c2857828181518110612ad257612ad261571e565b602002602001015161013060008e8e89818110612af157612af161571e565b9050602002016020810190612b069190615029565b6001600160a01b03166001600160a01b031681526020019081526020016000206000868481518110612b3a57612b3a61571e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550838181518110612b8b57612b8b61571e565b60200260200101516001600160a01b03168c8c87818110612bae57612bae61571e565b9050602002016020810190612bc39190615029565b6001600160a01b03167f6333c55c3657aafc9b39e2586076d198ed0250804559126489c852f28d51280c858481518110612bff57612bff61571e565b6020026020010151604051612c18911515815260200190565b60405180910390a3600101612ab8565b508360010193505050506129ba565b5050505050505050565b600054610100900460ff16612cbe5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b612cc78461448f565b612ccf61451d565b610a358383836145a2565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b0772d0b6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612d3b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d6391908101906156a7565b805190915060005b81811015612e9e57828181518110612d8557612d8561571e565b60200260200101516001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614612e5957846001600160a01b0316838281518110612de157612de161571e565b60200260200101516001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e4a919061593c565b6001600160a01b031614612e8f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316145b935083612e9e57600101612d6b565b505050919050565b60008084600003612ee3576040517f098fb56100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03808516600090815260fd6020908152604080832093871683529281528282208351808501909452805484526001810154929392909183019060ff166003811115612f3757612f3761540c565b6003811115612f4857612f4861540c565b9052509050600081602001516003811115612f6557612f6561540c565b03612f9c576040517f618ce59700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fc546040517f41976e090000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015260009216906341976e0990602401602060405180830381865afa158015613000573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061302491906157ad565b60fc546040517f41976e090000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152929350600092909116906341976e0990602401602060405180830381865afa15801561308d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b191906157ad565b835160ff54919250906001600160a01b031615801590613151575060ff546040517f6c059fb10000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0390911690636c059fb190602401602060405180830381865afa15801561312d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315191906157c6565b1561315a575060005b600061316e82670de0b6b3a764000061570b565b90508261317b828661574d565b61318591906157e8565b9550670de0b6b3a764000061319a878c61574d565b6131a491906157e8565b96505050505050935093915050565b60008160016131c2828661570b565b6131cc9190615823565b6131d691906157e8565b9392505050565b806000036107e2576040517f9cf8540c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015613277573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061329b91906157ad565b9050808211156132d7576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038316600090815261012d60205260408120546132fb9083615823565b905082811015610a3557808303600061331386610d51565b6001600160a01b038716600090815261012d602052604081205482519293509190805b828110156134e75761012e60008683815181106133555761335561571e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008b6001600160a01b03166001600160a01b03168152602001908152602001600020546000146134df576133b3600184615823565b8110156133f0576133df8582815181106133cf576133cf61571e565b60200260200101518b88876143b6565b6133e9908361570b565b91506134df565b60006133fc8388615823565b90508061012e60008885815181106134165761341661571e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546134709190615823565b925050819055508a6001600160a01b03168683815181106134935761349361571e565b60200260200101516001600160a01b03167fc39e3e80c0219fde334a8cb5d8468b628482e23388b6e809c90cb00c63c8ce38836040516134d591815260200190565b60405180910390a3505b600101613336565b506001600160a01b038916600090815261012d602052604081208054879290613511908490615823565b9091555050505050505050505050565b6040516001600160a01b0383166024820152604481018290526110749084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152614667565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316036136155761360e82612cda565b90506108d9565b61012f546040517f266e0a7f0000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301528481166024830152600092169063266e0a7f90604401602060405180830381865afa158015613682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136a6919061593c565b6001600160a01b031614159392505050565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556107e28161474f565b6136f2816131dd565b60fb5460408051918252602082018390527fada67d0d38fa20c8ae6a5c17cb9d60b0fe7f2d4e4f27ac9ee55e54ac88de9d8d910160405180910390a160fb55565b600061373f83836135ca565b613788576040517f983f1fb50000000000000000000000000000000000000000000000000000000081526001600160a01b03808516600483015283166024820152604401610b3c565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015282906000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156137ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061380e91906157ad565b6001600160a01b038516600090815261012d602052604090205490915080821115613a87576001600160a01b0380871660009081526101306020908152604080832093891683529290522054818303945060ff1615613a875760fe546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000918516906370a0823190602401602060405180830381865afa1580156138cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138f091906157ad565b60fe5490915061390d906001600160a01b03868116911687613521565b60fe546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000918616906370a0823190602401602060405180830381865afa158015613972573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061399691906157ad565b60fe546040518881529192506001600160a01b03898116928b82169291909116907fadc20ad416881f76b4304665c35f5be8592297bcdfe4f0bb087b9d254222af559060200160405180910390a460fe546001600160a01b03166353ac35378989613a018686615823565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015613a6857600080fd5b505af1158015613a7c573d6000803e3d6000fd5b505050506000955050505b50505092915050565b6000613a9a614045565b60fe5460ff549192506001600160a01b03908116916000911615613eb75760ff546040517f4e9f8f390000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015285811660248301526000928392911690634e9f8f39906044016000604051808303816000875af1158015613b29573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613b519190810190615959565b8151919350915060005b81811015613eb257828181518110613b7557613b7561571e565b602002602001015160000315613eb2576000848281518110613b9957613b9961571e565b60200260200101516001600160a01b0316636f1a30a8858481518110613bc157613bc161571e565b60200260200101518c8b6040518463ffffffff1660e01b8152600401613c03939291909283526001600160a01b03918216602084015216604082015260600190565b60408051808303816000875af1158015613c21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c459190615a14565b91505088811115613c535750875b613c5d818b6147b9565b613c675750613eb2565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152600091908a16906370a0823190602401602060405180830381865afa158015613cca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cee91906157ad565b9050613d27868481518110613d0557613d0561571e565b6020026020010151838d6001600160a01b03166148f19092919063ffffffff16565b858381518110613d3957613d3961571e565b60209081029190910101516040517f439727a500000000000000000000000000000000000000000000000000000000815260048101849052600060248201526001600160a01b038d811660448301528b811660648301528a811660848301529091169063439727a59060a40160408051808303816000875af1158015613dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613de79190615a14565b50506040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038981166004830152600091908b16906370a0823190602401602060405180830381865afa158015613e4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e7091906157ad565b9050613e7c838c615823565b9a50613e888282615823565b613e92908961570b565b97508a600003613ea457505050613eb2565b836001019350505050613b5b565b505050505b610a8c86848388886149c7565b600080613ed185856140d1565b6000613ede878787611182565b91505087811115613f25576040517f71b5f0c10000000000000000000000000000000000000000000000000000000081526004810182905260248101899052604401610b3c565b613f2f86826141f1565b9250613f3c838787611079565b9250613f4b905085858461433c565b509550959350505050565b6001600160a01b038216600090815261012d602052604081208054839290613f7f908490615823565b90915550505050565b600080613f9585856140d1565b6000613fa2878787611182565b915050613faf86826141f1565b9250808314613fea576040517f0c5c1c2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8783111561402e576040517f71b5f0c10000000000000000000000000000000000000000000000000000000081526004810182905260248101899052604401610b3c565b61403985858961433c565b50909694955050505050565b60fe54604080517fc8ecc0d300000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163c8ecc0d39160048083019260209291908290030181865afa1580156140a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140cc919061593c565b905090565b60ff546000906001600160a01b03161580159061416e575060ff546040517f6c059fb10000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0390911690636c059fb190602401602060405180830381865afa15801561414a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061416e91906157c6565b9050801580156141ba575060026001600160a01b03808516600090815260fd602090815260408083209387168352929052206001015460ff1660038111156141b8576141b861540c565b145b15611074576040517f03410cd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fe546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600091849183918316906370a0823190602401602060405180830381865afa15801561425a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061427e91906157ad565b60fe5490915061429d906001600160a01b038481169133911687614b65565b60fe546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000918416906370a0823190602401602060405180830381865afa158015614302573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061432691906157ad565b90506143328282615823565b9695505050505050565b6001600160a01b038316600090815261012d602052604090205481811015614390576040517f6bb2792900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61439a8483613f56565b836143af6001600160a01b0382168585613521565b5050505050565b6001600160a01b03808516600090815261012e6020908152604080832093871683529290529081205482906143ec90859061574d565b6143f691906157e8565b6001600160a01b03808716600090815261012e60209081526040808320938916835292905290812080549293508392909190614433908490615823565b92505081905550836001600160a01b0316856001600160a01b03167fc39e3e80c0219fde334a8cb5d8468b628482e23388b6e809c90cb00c63c8ce388360405161447f91815260200190565b60405180910390a3949350505050565b600054610100900460ff1661450c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b614514614bb6565b6107e281614c3b565b600054610100900460ff1661459a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b611358614cb8565b600054610100900460ff1661461f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b61462883612827565b61463182611de9565b61463a816136e9565b505060fe80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16905550565b60006146bc826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614d359092919063ffffffff16565b90508051600014806146dd5750808060200190518101906146dd91906157c6565b6110745760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610b3c565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60fc546040517fb62cad690000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092169063b62cad6990602401600060405180830381600087803b15801561481a57600080fd5b505af115801561482e573d6000803e3d6000fd5b505060fc546040517f41976e090000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015260009450670de0b6b3a76400009350879216906341976e0990602401602060405180830381865afa1580156148a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148c691906157ad565b6148d0919061574d565b6148da91906157e8565b905060fb5481106148ea57600191505b5092915050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526149708482614d4c565b610a35576040516001600160a01b0384166024820152600060448201526149bd9085907f095ea7b30000000000000000000000000000000000000000000000000000000090606401613566565b610a358482614667565b8215614a9e5760fe546040518481526001600160a01b0386811692888216929116907fadc20ad416881f76b4304665c35f5be8592297bcdfe4f0bb087b9d254222af559060200160405180910390a460fe546040517f53ac35370000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152868116602483015260448201869052909116906353ac353790606401600060405180830381600087803b158015614a8557600080fd5b505af1158015614a99573d6000803e3d6000fd5b505050505b80156143af576001600160a01b038216600090815261012d602052604081208054839290614acd90849061570b565b90915550506001600160a01b03808616600090815261012e6020908152604080832093861683529290529081208054839290614b0a90849061570b565b92505081905550816001600160a01b0316856001600160a01b03167fc39e3e80c0219fde334a8cb5d8468b628482e23388b6e809c90cb00c63c8ce3883604051614b5691815260200190565b60405180910390a35050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052610a359085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401613566565b600054610100900460ff16614c335760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b611358614df3565b600054610100900460ff166108a85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b600054610100900460ff166127a35760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b6060614d448484600085614e79565b949350505050565b6000806000846001600160a01b031684604051614d699190615a38565b6000604051808303816000865af19150503d8060008114614da6576040519150601f19603f3d011682016040523d82523d6000602084013e614dab565b606091505b5091509150818015614dd5575080511580614dd5575080806020019051810190614dd591906157c6565b8015614dea57506001600160a01b0385163b15155b95945050505050565b600054610100900460ff16614e705760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b611358336136b8565b606082471015614ef15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610b3c565b600080866001600160a01b03168587604051614f0d9190615a38565b60006040518083038185875af1925050503d8060008114614f4a576040519150601f19603f3d011682016040523d82523d6000602084013e614f4f565b606091505b5091509150614f6087838387614f6b565b979650505050505050565b60608315614fda578251600003614fd3576001600160a01b0385163b614fd35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b3c565b5081614d44565b614d448383815115614fef5781518083602001fd5b8060405162461bcd60e51b8152600401610b3c9190615a54565b6001600160a01b03811681146107e257600080fd5b8035610ee881615009565b60006020828403121561503b57600080fd5b81356131d681615009565b60008060006060848603121561505b57600080fd5b83359250602084013561506d81615009565b9150604084013561507d81615009565b809150509250925092565b6000806040838503121561509b57600080fd5b82356150a681615009565b915060208301356150b681615009565b809150509250929050565b600080600080600060a086880312156150d957600080fd5b853594506020860135935060408601356150f281615009565b9250606086013561510281615009565b9150608086013561511281615009565b809150509295509295909350565b6000806000806080858703121561513657600080fd5b843561514181615009565b9350602085013561515181615009565b93969395505050506040820135916060013590565b60008083601f84011261517857600080fd5b50813567ffffffffffffffff81111561519057600080fd5b6020830191508360208260051b85010111156151ab57600080fd5b9250929050565b600080600080600080606087890312156151cb57600080fd5b863567ffffffffffffffff808211156151e357600080fd5b6151ef8a838b01615166565b9098509650602089013591508082111561520857600080fd5b6152148a838b01615166565b9096509450604089013591508082111561522d57600080fd5b5061523a89828a01615166565b979a9699509497509295939492505050565b60008060008060008060008060008060006101008c8e03121561526e57600080fd5b6152778c61501e565b9a5061528560208d0161501e565b995061529360408d0161501e565b98506152a160608d0161501e565b975060808c0135965067ffffffffffffffff8060a08e013511156152c457600080fd5b6152d48e60a08f01358f01615166565b909750955060c08d01358110156152ea57600080fd5b6152fa8e60c08f01358f01615166565b909550935060e08d013581101561531057600080fd5b506153218d60e08e01358e01615166565b81935080925050509295989b509295989b9093969950565b6020808252825182820181905260009190848201906040850190845b8181101561537a5783516001600160a01b031683529284019291840191600101615355565b50909695505050505050565b60008060006060848603121561539b57600080fd5b83356153a681615009565b925060208401356153b681615009565b929592945050506040919091013590565b6000602082840312156153d957600080fd5b5035919050565b600080604083850312156153f357600080fd5b82356153fe81615009565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110615472577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b828152604081016131d6602083018461543b565b6000806000806000606086880312156154a257600080fd5b85356154ad81615009565b9450602086013567ffffffffffffffff808211156154ca57600080fd5b6154d689838a01615166565b909650945060408801359150808211156154ef57600080fd5b818801915088601f83011261550357600080fd5b81358181111561551257600080fd5b8960208260061b850101111561552757600080fd5b9699959850939650602001949392505050565b6000806000838503608081121561555057600080fd5b843561555b81615009565b9350602085013561556b81615009565b925060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08201121561559d57600080fd5b506040840190509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715615603576156036155ab565b604052919050565b600067ffffffffffffffff821115615625576156256155ab565b5060051b60200190565b600082601f83011261564057600080fd5b815160206156556156508361560b565b6155da565b8083825260208201915060208460051b87010193508684111561567757600080fd5b602086015b8481101561569c57805161568f81615009565b835291830191830161567c565b509695505050505050565b6000602082840312156156b957600080fd5b815167ffffffffffffffff8111156156d057600080fd5b614d448482850161562f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156108d9576108d96156dc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820281158282048414176108d9576108d96156dc565b60006020828403121561577657600080fd5b8135600481106131d657600080fd5b84815260208101849052608081016157a0604083018561543b565b614dea606083018461543b565b6000602082840312156157bf57600080fd5b5051919050565b6000602082840312156157d857600080fd5b815180151581146131d657600080fd5b60008261581e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b818103818111156108d9576108d96156dc565b60005b83811015615851578181015183820152602001615839565b50506000910152565b60008151808452615872816020860160208601615836565b601f01601f19169290920160200192915050565b6001600160a01b0383168152604060208201526000614d44604083018461585a565b60006001600160a01b03808616835280851660208401525060606040830152614dea606083018461585a565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261590957600080fd5b83018035915067ffffffffffffffff82111561592457600080fd5b6020019150600581901b36038213156151ab57600080fd5b60006020828403121561594e57600080fd5b81516131d681615009565b6000806040838503121561596c57600080fd5b825167ffffffffffffffff8082111561598457600080fd5b6159908683870161562f565b93506020915081850151818111156159a757600080fd5b85019050601f810186136159ba57600080fd5b80516159c86156508261560b565b81815260059190911b820183019083810190888311156159e757600080fd5b928401925b82841015615a05578351825292840192908401906159ec565b80955050505050509250929050565b60008060408385031215615a2757600080fd5b505080516020909101519092909150565b60008251615a4a818460208701615836565b9190910192915050565b6020815260006131d6602083018461585a56fe736574436f6e76657273696f6e436f6e66696728616464726573732c616464726573732c436f6e76657273696f6e436f6e66696729736574506f6f6c734173736574734469726563745472616e7366657228616464726573735b5d2c616464726573735b5d5b5d2c626f6f6c5b5d5b5d29a2646970667358221220c5fc53a6e84541b68de5a45cf8bff82452ca6da2fc0154fa716d0521fb79adef64736f6c63430008190033",
|
|
1758
|
+
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061032b5760003560e01c8063715018a6116101b2578063b6828c57116100f9578063e30c3978116100a2578063f0dc7e9d1161007c578063f0dc7e9d1461077b578063f2fde38b1461078e578063fa7b81a0146107a1578063fe3da984146107c857600080fd5b8063e30c397814610744578063e50aa3d414610755578063f04c31871461076857600080fd5b8063c0654646116100d3578063c06546461461070f578063ca32546914610722578063e2ff7ea21461073557600080fd5b8063b6828c57146106f4578063bc368b0414610707578063bd7f33321461058f57600080fd5b806390fa7b541161015b578063afcff50f11610135578063afcff50f1461068c578063b491ddf7146106a0578063b4a0bdf3146106e357600080fd5b806390fa7b541461063b5780639fc3c0c21461064e578063aac59a751461067957600080fd5b80637b77cd6a1161018c5780637b77cd6a146105dc578063817ee19c146105ef5780638da5cb5b1461062a57600080fd5b8063715018a6146105b9578063746460a9146105c157806379ba5097146105d457600080fd5b806352e21a18116102765780635e1e63251161021f5780636f1a30a8116101f95780636f1a30a8146105695780636fb052751461057c57806370a082311461058f57600080fd5b80635e1e63251461053057806364aff9ec146105435780636daa463b1461055657600080fd5b8063556bbd8a11610250578063556bbd8a146104f557806358b904df146105085780635c39f4671461051057600080fd5b806352e21a18146104bc578063530e784f146104cf57806355374522146104e257600080fd5b80633421fc52116102d8578063439727a5116102b2578063439727a514610467578063454900fe1461047a5780634dc1c0a6146104a957600080fd5b80633421fc52146103f8578063362b67951461041f5780633d5e29101461044657600080fd5b80630a9a2b72116103095780630a9a2b72146103aa5780630e32cb86146103d25780632630c12f146103e557600080fd5b806301e201781461033057806307aa239e146103605780630a0a05e614610395575b600080fd5b60ff54610343906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b60fe546103859074010000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610357565b6103a86103a3366004615029565b6107d1565b005b6103bd6103b8366004615046565b6107e5565b60408051928352602083019190915201610357565b6103a86103e0366004615029565b6108a0565b60fc54610343906001600160a01b031681565b6103437f000000000000000000000000000000000000000000000000000000000000000081565b6103437f000000000000000000000000000000000000000000000000000000000000000081565b610459610454366004615088565b6108b1565b604051908152602001610357565b6103bd6104753660046150c1565b6108df565b610385610488366004615088565b61013060209081526000928352604080842090915290825290205460ff1681565b6103a86104b7366004615120565b610a29565b6103a86104ca366004615029565b610a3b565b6103a86104dd366004615029565b610a4c565b6103a86104f03660046151b2565b610a5d565b6103a861050336600461524c565b610a94565b6103a8610c6b565b61052361051e366004615029565b610d51565b6040516103579190615339565b6103bd61053e366004615046565b610eed565b6103a8610551366004615386565b610fd2565b6103bd610564366004615046565b611079565b6103bd610577366004615046565b611182565b61045961058a366004615088565b611281565b61045961059d366004615029565b6001600160a01b0316600090815261012d602052604090205490565b6103a8611346565b6103a86105cf3660046153c7565b61135a565b6103a86113a1565b6103a86105ea366004615029565b61142c565b6103a86105fd366004615386565b6001600160a01b03928316600090815261012e602090815260408083209490951682529290925291902055565b6033546001600160a01b0316610343565b6103bd6106493660046150c1565b6114b3565b6103a861065c3660046153e0565b6001600160a01b03909116600090815261012d6020526040902055565b6103a8610687366004615088565b6115a9565b61012f54610343906001600160a01b031681565b6106d56106ae366004615088565b60fd6020908152600092835260408084209091529082529020805460019091015460ff1682565b604051610357929190615476565b6097546001600160a01b0316610343565b6103bd6107023660046150c1565b6115df565b6103a86116d5565b6103a861071d36600461548a565b611787565b60fe54610343906001600160a01b031681565b6104596706f05b59d3b2000081565b6065546001600160a01b0316610343565b6103a86107633660046153e0565b611825565b6103bd6107763660046150c1565b61182f565b6103a861078936600461553a565b61195e565b6103a861079c366004615029565b611d06565b6103437f000000000000000000000000000000000000000000000000000000000000000081565b61045960fb5481565b6107d9611d8f565b6107e281611de9565b50565b60008060026001600160a01b03808616600090815260fd602090815260408083209388168352929052206001015460ff1660038111156108275761082761540c565b0361085e576040517f03410cd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038316600090815261012d602052604090205485811015610884578095505b859250610892868686611e66565b508092505050935093915050565b6108a8611d8f565b6107e2816121cc565b6001600160a01b03808316600090815261012e60209081526040808320938516835292905220545b92915050565b6000808285856108ed6122c1565b6108f683612316565b816001600160a01b0316836001600160a01b031614806109275750806001600160a01b0316836001600160a01b0316145b1561095e576040517f8aa3a72f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610966612356565b6109738a8a8a8a8a6123af565b90955093508985146109b1576040517fc214279600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109bd8888878761242f565b604080516001600160a01b038a81168252602082018890529181018690528189169188169033907f795a235be939acb902ac69562805f86e1341a9b019c351b996e2aa2dfc34c67c906060015b60405180910390a4610a1c600160c955565b5050509550959350505050565b610a358484848461242f565b50505050565b610a43611d8f565b6107e2816127aa565b610a54611d8f565b6107e281612827565b610a7e6040518060600160405280603c8152602001615a9d603c91396128a4565b610a8c868686868686612970565b505050505050565b600054610100900460ff1615808015610ab45750600054600160ff909116105b80610ace5750303b158015610ace575060005460ff166001145b610b455760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610ba357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610baf8c8c8c8b612c41565b610bb889612316565b61012f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038b16179055610bfa878787878787612970565b8015610c5d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b610ca96040518060400160405280601281526020017f726573756d65436f6e76657273696f6e282900000000000000000000000000008152506128a4565b60fe5474010000000000000000000000000000000000000000900460ff16610cfc576040517e6d8dbb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fe80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16905560405133907f89b79206f08dadd78502cff5075d2b094fa0abea0b063cfafe4475e2a380c51f90600090a2565b61012f546040517ff36dba380000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152606092169063f36dba3890602401600060405180830381865afa158015610db6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dde91908101906156a7565b9050610de982612cda565b15610ee85780516000610dfd82600161570b565b67ffffffffffffffff811115610e1557610e156155ab565b604051908082528060200260200182016040528015610e3e578160200160208202803683370190505b50905060005b82811015610e9857838181518110610e5e57610e5e61571e565b6020026020010151828281518110610e7857610e7861571e565b6001600160a01b0390921660209283029190910190910152600101610e44565b507f0000000000000000000000000000000000000000000000000000000000000000818381518110610ecc57610ecc61571e565b6001600160a01b03909216602092830291909101909101529150505b919050565b60008060026001600160a01b03808616600090815260fd602090815260408083209388168352929052206001015460ff166003811115610f2f57610f2f61540c565b03610f66576040517f03410cd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8491506000610f76868686612ea6565b90925090506000610f9d856001600160a01b0316600090815261012d602052604090205490565b905082811015610fc857610fc2610fbc670de0b6b3a76400008361574d565b836131b3565b93508092505b5050935093915050565b610fda611d8f565b610fe2612356565b610feb83612316565b610ff482612316565b610ffd816131dd565b826110088183613217565b61101c6001600160a01b0382168484613521565b826001600160a01b0316846001600160a01b03167f6d25be279134f4ecaa4770aff0c3d916d9e7c5ef37b65ed95dbdba411f5d54d58460405161106191815260200190565b60405180910390a350611074600160c955565b505050565b60fc546040517fb62cad690000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152600092839291169063b62cad6990602401600060405180830381600087803b1580156110dd57600080fd5b505af11580156110f1573d6000803e3d6000fd5b505060fc546040517fb62cad690000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152909116925063b62cad699150602401600060405180830381600087803b15801561115557600080fd5b505af1158015611169573d6000803e3d6000fd5b50505050611178858585612ea6565b5094959350505050565b60fc546040517fb62cad690000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152600092839291169063b62cad6990602401600060405180830381600087803b1580156111e657600080fd5b505af11580156111fa573d6000803e3d6000fd5b505060fc546040517fb62cad690000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152909116925063b62cad699150602401600060405180830381600087803b15801561125e57600080fd5b505af1158015611272573d6000803e3d6000fd5b50505050611178858585611e66565b600061128f60c95460021490565b156112c6576040517f9a050fe700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112d083836135ca565b611319576040517f983f1fb50000000000000000000000000000000000000000000000000000000081526001600160a01b03808516600483015283166024820152604401610b3c565b506001600160a01b03918216600090815261012e6020908152604080832093909416825291909152205490565b61134e611d8f565b61135860006136b8565b565b6113986040518060400160405280601e81526020017f7365744d696e416d6f756e74546f436f6e766572742875696e743235362900008152506128a4565b6107e2816136e9565b60655433906001600160a01b031681146114235760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152608401610b3c565b6107e2816136b8565b611434611d8f565b61143d81612316565b61012f546040516001600160a01b038084169216907fa87b964d321035d2165e484ff4b722dd6eae30606c0b98887d2ed1a34e594bfe90600090a361012f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000808285856114c16122c1565b6114ca83612316565b816001600160a01b0316836001600160a01b031614806114fb5750806001600160a01b0316836001600160a01b0316145b15611532576040517f8aa3a72f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61153a612356565b6115478a8a8a8a8a6123af565b90955093506115588888878761242f565b604080516001600160a01b038a81168252602082018890529181018690528189169188169033907f93b7ba2a2b0e36320375853d7466af5685c07567804b871b4fdfd31e3bb7715490606001610a0a565b6115b1612356565b60006115bd8383613733565b905080156115d0576115d0838383613a90565b506115db600160c955565b5050565b6000808285856115ed6122c1565b6115f683612316565b816001600160a01b0316836001600160a01b031614806116275750806001600160a01b0316836001600160a01b0316145b1561165e576040517f8aa3a72f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611666612356565b6116738a8a8a8a8a613ec4565b90955093506116848888878761242f565b604080516001600160a01b038a81168252602082018890529181018690528189169188169033907f9b7dc1d7d2974d015b4fc39889a09f3a3923add808f5863158f3162d997d4e8290606001610a0a565b6117136040518060400160405280601181526020017f7061757365436f6e76657273696f6e28290000000000000000000000000000008152506128a4565b61171b6122c1565b60fe80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905560405133907f490bc639fd0d96f19c8adf77bc98d17fbefdee2e1e1864d21f041360d0ee065a90600090a2565b828181146117c1576040517f4d5590f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561181c57611814878787848181106117e2576117e261571e565b90506020020160208101906117f79190615029565b8686858181106118095761180961571e565b90506040020161195e565b6001016117c4565b50505050505050565b6115db8282613f56565b60008082858561183d6122c1565b61184683612316565b816001600160a01b0316836001600160a01b031614806118775750806001600160a01b0316836001600160a01b0316145b156118ae576040517f8aa3a72f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118b6612356565b6118c38a8a8a8a8a613f88565b9095509350888414611901576040517fa8dc653c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61190d8888878761242f565b604080516001600160a01b038a81168252602082018890529181018690528189169188169033907fcb4ea7de8d069b0f443b792cba6c6df5096508951bbc75c04ac42c9251efe07690606001610a0a565b61197f604051806060016040528060358152602001615a68603591396128a4565b61198883612316565b61199182612316565b6706f05b59d3b20000813511156119e5576040517f9770caee000000000000000000000000000000000000000000000000000000008152813560048201526706f05b59d3b200006024820152604401610b3c565b816001600160a01b0316836001600160a01b03161480611a1e5750611a08614045565b6001600160a01b0316836001600160a01b031614155b80611a66575060006001600160a01b03808416600090815260fd602090815260408083209388168352929052206001015460ff166003811115611a6357611a6361540c565b14155b15611a9d576040517feebb5ac600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002611aaf6040830160208401615764565b6003811115611ac057611ac061540c565b148015611acd5750803515155b15611b04576040517fd0d4aabe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002611b166040830160208401615764565b6003811115611b2757611b2761540c565b1480611b5357506001611b406040830160208401615764565b6003811115611b5157611b5161540c565b145b8015611b68575060ff546001600160a01b0316155b15611b9f576040517fe7c2c99400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03808416600081815260fd602090815260408083209487168084529482529182902080546001820154919594937f39fbfdd5da133303ed31b1b65e30a0ddf7a9236573368c66c859dceccc1dd12a93919288359260ff90911691611c0f91908a01908a01615764565b604051611c1f9493929190615785565b60405180910390a36000611c396040840160208501615764565b6003811115611c4a57611c4a61540c565b03611ca7576001600160a01b03808516600090815260fd60209081526040808320938716835292905290812090815560010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055610a35565b81358155611cbb6040830160208401615764565b6001808301805490917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090911690836003811115611cfb57611cfb61540c565b021790555050505050565b611d0e611d8f565b606580546001600160a01b0383167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155611d576033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146113585760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b3c565b611df281612316565b60fe546040516001600160a01b038084169216907f9be3097b5c8b276786be52a244ee90d66efd34805d9eb16f168fb2b4aaae9a2b90600090a360fe80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008084600003611ea3576040517f42301c2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03808516600090815260fd6020908152604080832093871683529281528282208351808501909452805484526001810154929392909183019060ff166003811115611ef757611ef761540c565b6003811115611f0857611f0861540c565b9052509050600081602001516003811115611f2557611f2561540c565b03611f5c576040517f618ce59700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fc546040517f41976e090000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015260009216906341976e0990602401602060405180830381865afa158015611fc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe491906157ad565b60fc546040517f41976e090000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152929350600092909116906341976e0990602401602060405180830381865afa15801561204d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207191906157ad565b835160ff54919250906000906001600160a01b031615801590612114575060ff546040517f6c059fb10000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0390911690636c059fb190602401602060405180830381865afa1580156120f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211491906157c6565b9050801561212157600091505b600061213583670de0b6b3a764000061570b565b9050811561217557612147818661574d565b670de0b6b3a764000061215a868e61574d565b612164919061574d565b61216e91906157e8565b97506121a7565b6121a4670de0b6b3a764000061218b868e61574d565b612195919061574d565b61219f838861574d565b6131b3565b97505b836121b2828761574d565b6121bc91906157e8565b9650505050505050935093915050565b6001600160a01b0381166122485760405162461bcd60e51b815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e6167657220616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610b3c565b609780546001600160a01b038381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0910160405180910390a15050565b60fe5474010000000000000000000000000000000000000000900460ff1615611358576040517f952bcf7f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166107e2576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260c954036123a85760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b3c565b600260c955565b6000806123bc85856140d1565b6123c685886141f1565b91506123d3828686611079565b9150508581101561241a576040517f228f8c110000000000000000000000000000000000000000000000000000000081526004810182905260248101879052604401610b3c565b61242584848361433c565b9550959350505050565b600061243a84610d51565b6001600160a01b038516600090815261012d60205260408120549192509061246390849061570b565b905061246e816131dd565b815160008080805b8481101561279657600061012e60008984815181106124975761249761571e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160a01b03166001600160a01b031681526020019081526020016000205490508060001461278d576124f8600187615823565b821015612558576125248883815181106125145761251461571e565b60200260200101518c8b8a6143b6565b61252e908661570b565b94508661253b828c61574d565b61254591906157e8565b9350612551848461570b565b9250612653565b6000612564868b615823565b90508061012e60008b868151811061257e5761257e61571e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546125d89190615823565b925050819055508b6001600160a01b03168984815181106125fb576125fb61571e565b60200260200101516001600160a01b03167fc39e3e80c0219fde334a8cb5d8468b628482e23388b6e809c90cb00c63c8ce388360405161263d91815260200190565b60405180910390a361264f848c615823565b9450505b8b6001600160a01b031688838151811061266f5761266f61571e565b60200260200101516001600160a01b031660fe60009054906101000a90046001600160a01b03166001600160a01b03167fadc20ad416881f76b4304665c35f5be8592297bcdfe4f0bb087b9d254222af55876040516126d091815260200190565b60405180910390a460fe5488516001600160a01b03909116906353ac3537908a90859081106127015761270161571e565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039182166004820152908f16602482015260448101879052606401600060405180830381600087803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b505050505b50600101612476565b5050505050505050505050565b600160c955565b6127b381612316565b60ff546040516001600160a01b038084169216907f50f1a16bf24734355b14ff800d132cc0a934808b8621d5623b41bc67f204881790600090a360ff80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61283081612316565b60fc546040516001600160a01b038084169216907f56b5f80d8cac1479698aa7d01605fd6111e90b15fc4d2b377417f46034876cbd90600090a360fc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6097546040517f18c5e8ab0000000000000000000000000000000000000000000000000000000081526000916001600160a01b0316906318c5e8ab906128f09033908690600401615886565b602060405180830381865afa15801561290d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293191906157c6565b9050806115db573330836040517f4a3fa293000000000000000000000000000000000000000000000000000000008152600401610b3c939291906158a8565b8483811415806129805750808214155b156129b7576040517f5f6f132c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015612c375760008686838181106129d6576129d661571e565b90506020028101906129e891906158d4565b808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250939450889250879150859050818110612a3057612a3061571e565b9050602002810190612a4291906158d4565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050845183519394509283149150612ab59050576040517f5f6f132c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015612c2857828181518110612ad257612ad261571e565b602002602001015161013060008e8e89818110612af157612af161571e565b9050602002016020810190612b069190615029565b6001600160a01b03166001600160a01b031681526020019081526020016000206000868481518110612b3a57612b3a61571e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550838181518110612b8b57612b8b61571e565b60200260200101516001600160a01b03168c8c87818110612bae57612bae61571e565b9050602002016020810190612bc39190615029565b6001600160a01b03167f6333c55c3657aafc9b39e2586076d198ed0250804559126489c852f28d51280c858481518110612bff57612bff61571e565b6020026020010151604051612c18911515815260200190565b60405180910390a3600101612ab8565b508360010193505050506129ba565b5050505050505050565b600054610100900460ff16612cbe5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b612cc78461448f565b612ccf61451d565b610a358383836145a2565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b0772d0b6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612d3b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d6391908101906156a7565b805190915060005b81811015612e9e57828181518110612d8557612d8561571e565b60200260200101516001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614612e5957846001600160a01b0316838281518110612de157612de161571e565b60200260200101516001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e4a919061593c565b6001600160a01b031614612e8f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316145b935083612e9e57600101612d6b565b505050919050565b60008084600003612ee3576040517f098fb56100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03808516600090815260fd6020908152604080832093871683529281528282208351808501909452805484526001810154929392909183019060ff166003811115612f3757612f3761540c565b6003811115612f4857612f4861540c565b9052509050600081602001516003811115612f6557612f6561540c565b03612f9c576040517f618ce59700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fc546040517f41976e090000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015260009216906341976e0990602401602060405180830381865afa158015613000573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061302491906157ad565b60fc546040517f41976e090000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152929350600092909116906341976e0990602401602060405180830381865afa15801561308d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b191906157ad565b835160ff54919250906001600160a01b031615801590613151575060ff546040517f6c059fb10000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0390911690636c059fb190602401602060405180830381865afa15801561312d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315191906157c6565b1561315a575060005b600061316e82670de0b6b3a764000061570b565b90508261317b828661574d565b61318591906157e8565b9550670de0b6b3a764000061319a878c61574d565b6131a491906157e8565b96505050505050935093915050565b60008160016131c2828661570b565b6131cc9190615823565b6131d691906157e8565b9392505050565b806000036107e2576040517f9cf8540c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015613277573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061329b91906157ad565b9050808211156132d7576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038316600090815261012d60205260408120546132fb9083615823565b905082811015610a3557808303600061331386610d51565b6001600160a01b038716600090815261012d602052604081205482519293509190805b828110156134e75761012e60008683815181106133555761335561571e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008b6001600160a01b03166001600160a01b03168152602001908152602001600020546000146134df576133b3600184615823565b8110156133f0576133df8582815181106133cf576133cf61571e565b60200260200101518b88876143b6565b6133e9908361570b565b91506134df565b60006133fc8388615823565b90508061012e60008885815181106134165761341661571e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546134709190615823565b925050819055508a6001600160a01b03168683815181106134935761349361571e565b60200260200101516001600160a01b03167fc39e3e80c0219fde334a8cb5d8468b628482e23388b6e809c90cb00c63c8ce38836040516134d591815260200190565b60405180910390a3505b600101613336565b506001600160a01b038916600090815261012d602052604081208054879290613511908490615823565b9091555050505050505050505050565b6040516001600160a01b0383166024820152604481018290526110749084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152614667565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316036136155761360e82612cda565b90506108d9565b61012f546040517f266e0a7f0000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301528481166024830152600092169063266e0a7f90604401602060405180830381865afa158015613682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136a6919061593c565b6001600160a01b031614159392505050565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556107e28161474f565b6136f2816131dd565b60fb5460408051918252602082018390527fada67d0d38fa20c8ae6a5c17cb9d60b0fe7f2d4e4f27ac9ee55e54ac88de9d8d910160405180910390a160fb55565b600061373f83836135ca565b613788576040517f983f1fb50000000000000000000000000000000000000000000000000000000081526001600160a01b03808516600483015283166024820152604401610b3c565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015282906000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156137ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061380e91906157ad565b6001600160a01b038516600090815261012d602052604090205490915080821115613a87576001600160a01b0380871660009081526101306020908152604080832093891683529290522054818303945060ff1615613a875760fe546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000918516906370a0823190602401602060405180830381865afa1580156138cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138f091906157ad565b60fe5490915061390d906001600160a01b03868116911687613521565b60fe546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000918616906370a0823190602401602060405180830381865afa158015613972573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061399691906157ad565b60fe546040518881529192506001600160a01b03898116928b82169291909116907fadc20ad416881f76b4304665c35f5be8592297bcdfe4f0bb087b9d254222af559060200160405180910390a460fe546001600160a01b03166353ac35378989613a018686615823565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015613a6857600080fd5b505af1158015613a7c573d6000803e3d6000fd5b505050506000955050505b50505092915050565b6000613a9a614045565b60fe5460ff549192506001600160a01b03908116916000911615613eb75760ff546040517f4e9f8f390000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015285811660248301526000928392911690634e9f8f39906044016000604051808303816000875af1158015613b29573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613b519190810190615959565b8151919350915060005b81811015613eb257828181518110613b7557613b7561571e565b602002602001015160000315613eb2576000848281518110613b9957613b9961571e565b60200260200101516001600160a01b0316636f1a30a8858481518110613bc157613bc161571e565b60200260200101518c8b6040518463ffffffff1660e01b8152600401613c03939291909283526001600160a01b03918216602084015216604082015260600190565b60408051808303816000875af1158015613c21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c459190615a14565b91505088811115613c535750875b613c5d818b6147b9565b613c675750613eb2565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152600091908a16906370a0823190602401602060405180830381865afa158015613cca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cee91906157ad565b9050613d27868481518110613d0557613d0561571e565b6020026020010151838d6001600160a01b03166148f19092919063ffffffff16565b858381518110613d3957613d3961571e565b60209081029190910101516040517f439727a500000000000000000000000000000000000000000000000000000000815260048101849052600060248201526001600160a01b038d811660448301528b811660648301528a811660848301529091169063439727a59060a40160408051808303816000875af1158015613dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613de79190615a14565b50506040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038981166004830152600091908b16906370a0823190602401602060405180830381865afa158015613e4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e7091906157ad565b9050613e7c838c615823565b9a50613e888282615823565b613e92908961570b565b97508a600003613ea457505050613eb2565b836001019350505050613b5b565b505050505b610a8c86848388886149c7565b600080613ed185856140d1565b6000613ede878787611182565b91505087811115613f25576040517f71b5f0c10000000000000000000000000000000000000000000000000000000081526004810182905260248101899052604401610b3c565b613f2f86826141f1565b9250613f3c838787611079565b9250613f4b905085858461433c565b509550959350505050565b6001600160a01b038216600090815261012d602052604081208054839290613f7f908490615823565b90915550505050565b600080613f9585856140d1565b6000613fa2878787611182565b915050613faf86826141f1565b9250808314613fea576040517f0c5c1c2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8783111561402e576040517f71b5f0c10000000000000000000000000000000000000000000000000000000081526004810182905260248101899052604401610b3c565b61403985858961433c565b50909694955050505050565b60fe54604080517fc8ecc0d300000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163c8ecc0d39160048083019260209291908290030181865afa1580156140a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140cc919061593c565b905090565b60ff546000906001600160a01b03161580159061416e575060ff546040517f6c059fb10000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0390911690636c059fb190602401602060405180830381865afa15801561414a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061416e91906157c6565b9050801580156141ba575060026001600160a01b03808516600090815260fd602090815260408083209387168352929052206001015460ff1660038111156141b8576141b861540c565b145b15611074576040517f03410cd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fe546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600091849183918316906370a0823190602401602060405180830381865afa15801561425a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061427e91906157ad565b60fe5490915061429d906001600160a01b038481169133911687614b65565b60fe546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000918416906370a0823190602401602060405180830381865afa158015614302573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061432691906157ad565b90506143328282615823565b9695505050505050565b6001600160a01b038316600090815261012d602052604090205481811015614390576040517f6bb2792900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61439a8483613f56565b836143af6001600160a01b0382168585613521565b5050505050565b6001600160a01b03808516600090815261012e6020908152604080832093871683529290529081205482906143ec90859061574d565b6143f691906157e8565b6001600160a01b03808716600090815261012e60209081526040808320938916835292905290812080549293508392909190614433908490615823565b92505081905550836001600160a01b0316856001600160a01b03167fc39e3e80c0219fde334a8cb5d8468b628482e23388b6e809c90cb00c63c8ce388360405161447f91815260200190565b60405180910390a3949350505050565b600054610100900460ff1661450c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b614514614bb6565b6107e281614c3b565b600054610100900460ff1661459a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b611358614cb8565b600054610100900460ff1661461f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b61462883612827565b61463182611de9565b61463a816136e9565b505060fe80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16905550565b60006146bc826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614d359092919063ffffffff16565b90508051600014806146dd5750808060200190518101906146dd91906157c6565b6110745760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610b3c565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60fc546040517fb62cad690000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092169063b62cad6990602401600060405180830381600087803b15801561481a57600080fd5b505af115801561482e573d6000803e3d6000fd5b505060fc546040517f41976e090000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015260009450670de0b6b3a76400009350879216906341976e0990602401602060405180830381865afa1580156148a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148c691906157ad565b6148d0919061574d565b6148da91906157e8565b905060fb5481106148ea57600191505b5092915050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526149708482614d4c565b610a35576040516001600160a01b0384166024820152600060448201526149bd9085907f095ea7b30000000000000000000000000000000000000000000000000000000090606401613566565b610a358482614667565b8215614a9e5760fe546040518481526001600160a01b0386811692888216929116907fadc20ad416881f76b4304665c35f5be8592297bcdfe4f0bb087b9d254222af559060200160405180910390a460fe546040517f53ac35370000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152868116602483015260448201869052909116906353ac353790606401600060405180830381600087803b158015614a8557600080fd5b505af1158015614a99573d6000803e3d6000fd5b505050505b80156143af576001600160a01b038216600090815261012d602052604081208054839290614acd90849061570b565b90915550506001600160a01b03808616600090815261012e6020908152604080832093861683529290529081208054839290614b0a90849061570b565b92505081905550816001600160a01b0316856001600160a01b03167fc39e3e80c0219fde334a8cb5d8468b628482e23388b6e809c90cb00c63c8ce3883604051614b5691815260200190565b60405180910390a35050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052610a359085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401613566565b600054610100900460ff16614c335760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b611358614df3565b600054610100900460ff166108a85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b600054610100900460ff166127a35760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b6060614d448484600085614e79565b949350505050565b6000806000846001600160a01b031684604051614d699190615a38565b6000604051808303816000865af19150503d8060008114614da6576040519150601f19603f3d011682016040523d82523d6000602084013e614dab565b606091505b5091509150818015614dd5575080511580614dd5575080806020019051810190614dd591906157c6565b8015614dea57506001600160a01b0385163b15155b95945050505050565b600054610100900460ff16614e705760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b3c565b611358336136b8565b606082471015614ef15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610b3c565b600080866001600160a01b03168587604051614f0d9190615a38565b60006040518083038185875af1925050503d8060008114614f4a576040519150601f19603f3d011682016040523d82523d6000602084013e614f4f565b606091505b5091509150614f6087838387614f6b565b979650505050505050565b60608315614fda578251600003614fd3576001600160a01b0385163b614fd35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b3c565b5081614d44565b614d448383815115614fef5781518083602001fd5b8060405162461bcd60e51b8152600401610b3c9190615a54565b6001600160a01b03811681146107e257600080fd5b8035610ee881615009565b60006020828403121561503b57600080fd5b81356131d681615009565b60008060006060848603121561505b57600080fd5b83359250602084013561506d81615009565b9150604084013561507d81615009565b809150509250925092565b6000806040838503121561509b57600080fd5b82356150a681615009565b915060208301356150b681615009565b809150509250929050565b600080600080600060a086880312156150d957600080fd5b853594506020860135935060408601356150f281615009565b9250606086013561510281615009565b9150608086013561511281615009565b809150509295509295909350565b6000806000806080858703121561513657600080fd5b843561514181615009565b9350602085013561515181615009565b93969395505050506040820135916060013590565b60008083601f84011261517857600080fd5b50813567ffffffffffffffff81111561519057600080fd5b6020830191508360208260051b85010111156151ab57600080fd5b9250929050565b600080600080600080606087890312156151cb57600080fd5b863567ffffffffffffffff808211156151e357600080fd5b6151ef8a838b01615166565b9098509650602089013591508082111561520857600080fd5b6152148a838b01615166565b9096509450604089013591508082111561522d57600080fd5b5061523a89828a01615166565b979a9699509497509295939492505050565b60008060008060008060008060008060006101008c8e03121561526e57600080fd5b6152778c61501e565b9a5061528560208d0161501e565b995061529360408d0161501e565b98506152a160608d0161501e565b975060808c0135965067ffffffffffffffff8060a08e013511156152c457600080fd5b6152d48e60a08f01358f01615166565b909750955060c08d01358110156152ea57600080fd5b6152fa8e60c08f01358f01615166565b909550935060e08d013581101561531057600080fd5b506153218d60e08e01358e01615166565b81935080925050509295989b509295989b9093969950565b6020808252825182820181905260009190848201906040850190845b8181101561537a5783516001600160a01b031683529284019291840191600101615355565b50909695505050505050565b60008060006060848603121561539b57600080fd5b83356153a681615009565b925060208401356153b681615009565b929592945050506040919091013590565b6000602082840312156153d957600080fd5b5035919050565b600080604083850312156153f357600080fd5b82356153fe81615009565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110615472577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b828152604081016131d6602083018461543b565b6000806000806000606086880312156154a257600080fd5b85356154ad81615009565b9450602086013567ffffffffffffffff808211156154ca57600080fd5b6154d689838a01615166565b909650945060408801359150808211156154ef57600080fd5b818801915088601f83011261550357600080fd5b81358181111561551257600080fd5b8960208260061b850101111561552757600080fd5b9699959850939650602001949392505050565b6000806000838503608081121561555057600080fd5b843561555b81615009565b9350602085013561556b81615009565b925060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08201121561559d57600080fd5b506040840190509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715615603576156036155ab565b604052919050565b600067ffffffffffffffff821115615625576156256155ab565b5060051b60200190565b600082601f83011261564057600080fd5b815160206156556156508361560b565b6155da565b8083825260208201915060208460051b87010193508684111561567757600080fd5b602086015b8481101561569c57805161568f81615009565b835291830191830161567c565b509695505050505050565b6000602082840312156156b957600080fd5b815167ffffffffffffffff8111156156d057600080fd5b614d448482850161562f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156108d9576108d96156dc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820281158282048414176108d9576108d96156dc565b60006020828403121561577657600080fd5b8135600481106131d657600080fd5b84815260208101849052608081016157a0604083018561543b565b614dea606083018461543b565b6000602082840312156157bf57600080fd5b5051919050565b6000602082840312156157d857600080fd5b815180151581146131d657600080fd5b60008261581e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b818103818111156108d9576108d96156dc565b60005b83811015615851578181015183820152602001615839565b50506000910152565b60008151808452615872816020860160208601615836565b601f01601f19169290920160200192915050565b6001600160a01b0383168152604060208201526000614d44604083018461585a565b60006001600160a01b03808616835280851660208401525060606040830152614dea606083018461585a565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261590957600080fd5b83018035915067ffffffffffffffff82111561592457600080fd5b6020019150600581901b36038213156151ab57600080fd5b60006020828403121561594e57600080fd5b81516131d681615009565b6000806040838503121561596c57600080fd5b825167ffffffffffffffff8082111561598457600080fd5b6159908683870161562f565b93506020915081850151818111156159a757600080fd5b85019050601f810186136159ba57600080fd5b80516159c86156508261560b565b81815260059190911b820183019083810190888311156159e757600080fd5b928401925b82841015615a05578351825292840192908401906159ec565b80955050505050509250929050565b60008060408385031215615a2757600080fd5b505080516020909101519092909150565b60008251615a4a818460208701615836565b9190910192915050565b6020815260006131d6602083018461585a56fe736574436f6e76657273696f6e436f6e66696728616464726573732c616464726573732c436f6e76657273696f6e436f6e66696729736574506f6f6c734173736574734469726563745472616e7366657228616464726573735b5d2c616464726573735b5d5b5d2c626f6f6c5b5d5b5d29a2646970667358221220c5fc53a6e84541b68de5a45cf8bff82452ca6da2fc0154fa716d0521fb79adef64736f6c63430008190033",
|
|
1759
1759
|
"linkReferences": {},
|
|
1760
1760
|
"deployedLinkReferences": {}
|
|
1761
1761
|
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_format": "hh-sol-artifact-1",
|
|
3
|
+
"contractName": "MockRouter",
|
|
4
|
+
"sourceName": "contracts/Test/Mocks/MockRouter.sol",
|
|
5
|
+
"abi": [
|
|
6
|
+
{
|
|
7
|
+
"inputs": [],
|
|
8
|
+
"name": "RouterForcedFailure",
|
|
9
|
+
"type": "error"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"inputs": [
|
|
13
|
+
{
|
|
14
|
+
"internalType": "address",
|
|
15
|
+
"name": "token",
|
|
16
|
+
"type": "address"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"internalType": "uint256",
|
|
20
|
+
"name": "amount",
|
|
21
|
+
"type": "uint256"
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"name": "fund",
|
|
25
|
+
"outputs": [],
|
|
26
|
+
"stateMutability": "nonpayable",
|
|
27
|
+
"type": "function"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"inputs": [
|
|
31
|
+
{
|
|
32
|
+
"internalType": "bool",
|
|
33
|
+
"name": "value",
|
|
34
|
+
"type": "bool"
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
"name": "setShouldFail",
|
|
38
|
+
"outputs": [],
|
|
39
|
+
"stateMutability": "nonpayable",
|
|
40
|
+
"type": "function"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"inputs": [
|
|
44
|
+
{
|
|
45
|
+
"internalType": "bool",
|
|
46
|
+
"name": "value",
|
|
47
|
+
"type": "bool"
|
|
48
|
+
}
|
|
49
|
+
],
|
|
50
|
+
"name": "setSkipTransfer",
|
|
51
|
+
"outputs": [],
|
|
52
|
+
"stateMutability": "nonpayable",
|
|
53
|
+
"type": "function"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"inputs": [],
|
|
57
|
+
"name": "shouldFail",
|
|
58
|
+
"outputs": [
|
|
59
|
+
{
|
|
60
|
+
"internalType": "bool",
|
|
61
|
+
"name": "",
|
|
62
|
+
"type": "bool"
|
|
63
|
+
}
|
|
64
|
+
],
|
|
65
|
+
"stateMutability": "view",
|
|
66
|
+
"type": "function"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"inputs": [],
|
|
70
|
+
"name": "skipTransfer",
|
|
71
|
+
"outputs": [
|
|
72
|
+
{
|
|
73
|
+
"internalType": "bool",
|
|
74
|
+
"name": "",
|
|
75
|
+
"type": "bool"
|
|
76
|
+
}
|
|
77
|
+
],
|
|
78
|
+
"stateMutability": "view",
|
|
79
|
+
"type": "function"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"inputs": [
|
|
83
|
+
{
|
|
84
|
+
"internalType": "address",
|
|
85
|
+
"name": "tokenIn",
|
|
86
|
+
"type": "address"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"internalType": "uint256",
|
|
90
|
+
"name": "amountIn",
|
|
91
|
+
"type": "uint256"
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"internalType": "address",
|
|
95
|
+
"name": "tokenOut",
|
|
96
|
+
"type": "address"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"internalType": "uint256",
|
|
100
|
+
"name": "amountOut",
|
|
101
|
+
"type": "uint256"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"internalType": "address",
|
|
105
|
+
"name": "recipient",
|
|
106
|
+
"type": "address"
|
|
107
|
+
}
|
|
108
|
+
],
|
|
109
|
+
"name": "swap",
|
|
110
|
+
"outputs": [],
|
|
111
|
+
"stateMutability": "nonpayable",
|
|
112
|
+
"type": "function"
|
|
113
|
+
}
|
|
114
|
+
],
|
|
115
|
+
"bytecode": "0x6080604052348015600f57600080fd5b506104b68061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063678d220411610050578063678d2204146100f75780637b1837de14610104578063a5aa5c121461011757600080fd5b8063061000e5146100775780631761fb361461009d5780636548aff0146100e4575b600080fd5b60005461008990610100900460ff1681565b604051901515815260200160405180910390f35b6100e26100ab366004610395565b60008054911515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909216919091179055565b005b6100e26100f23660046103e2565b610156565b6000546100899060ff1681565b6100e2610112366004610439565b6102e2565b6100e2610125366004610395565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005460ff1615610193576040517fef3d890c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810185905273ffffffffffffffffffffffffffffffffffffffff8616906323b872dd906064016020604051808303816000875af115801561020c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102309190610463565b50600054610100900460ff166102db576040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526024820184905284169063a9059cbb906044016020604051808303816000875af11580156102b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d99190610463565b505b5050505050565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810182905273ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af115801561035b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037f9190610463565b505050565b801515811461039257600080fd5b50565b6000602082840312156103a757600080fd5b81356103b281610384565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146103dd57600080fd5b919050565b600080600080600060a086880312156103fa57600080fd5b610403866103b9565b945060208601359350610418604087016103b9565b92506060860135915061042d608087016103b9565b90509295509295909350565b6000806040838503121561044c57600080fd5b610455836103b9565b946020939093013593505050565b60006020828403121561047557600080fd5b81516103b28161038456fea2646970667358221220da97a2a2085c28de70dbf932032b86aaeba0ae06c12cfd659b8ccd47cfc7d10464736f6c63430008190033",
|
|
116
|
+
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100725760003560e01c8063678d220411610050578063678d2204146100f75780637b1837de14610104578063a5aa5c121461011757600080fd5b8063061000e5146100775780631761fb361461009d5780636548aff0146100e4575b600080fd5b60005461008990610100900460ff1681565b604051901515815260200160405180910390f35b6100e26100ab366004610395565b60008054911515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909216919091179055565b005b6100e26100f23660046103e2565b610156565b6000546100899060ff1681565b6100e2610112366004610439565b6102e2565b6100e2610125366004610395565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005460ff1615610193576040517fef3d890c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810185905273ffffffffffffffffffffffffffffffffffffffff8616906323b872dd906064016020604051808303816000875af115801561020c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102309190610463565b50600054610100900460ff166102db576040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526024820184905284169063a9059cbb906044016020604051808303816000875af11580156102b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d99190610463565b505b5050505050565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810182905273ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af115801561035b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037f9190610463565b505050565b801515811461039257600080fd5b50565b6000602082840312156103a757600080fd5b81356103b281610384565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146103dd57600080fd5b919050565b600080600080600060a086880312156103fa57600080fd5b610403866103b9565b945060208601359350610418604087016103b9565b92506060860135915061042d608087016103b9565b90509295509295909350565b6000806040838503121561044c57600080fd5b610455836103b9565b946020939093013593505050565b60006020828403121561047557600080fd5b81516103b28161038456fea2646970667358221220da97a2a2085c28de70dbf932032b86aaeba0ae06c12cfd659b8ccd47cfc7d10464736f6c63430008190033",
|
|
117
|
+
"linkReferences": {},
|
|
118
|
+
"deployedLinkReferences": {}
|
|
119
|
+
}
|
package/artifacts/contracts/TokenConverter/RiskFundConverter.sol/ILegacyRiskFundPoolState.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_format": "hh-sol-artifact-1",
|
|
3
|
+
"contractName": "ILegacyRiskFundPoolState",
|
|
4
|
+
"sourceName": "contracts/TokenConverter/RiskFundConverter.sol",
|
|
5
|
+
"abi": [
|
|
6
|
+
{
|
|
7
|
+
"inputs": [
|
|
8
|
+
{
|
|
9
|
+
"internalType": "address",
|
|
10
|
+
"name": "comptroller",
|
|
11
|
+
"type": "address"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"internalType": "address",
|
|
15
|
+
"name": "asset",
|
|
16
|
+
"type": "address"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"internalType": "uint256",
|
|
20
|
+
"name": "amount",
|
|
21
|
+
"type": "uint256"
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"name": "updatePoolState",
|
|
25
|
+
"outputs": [],
|
|
26
|
+
"stateMutability": "nonpayable",
|
|
27
|
+
"type": "function"
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"bytecode": "0x",
|
|
31
|
+
"deployedBytecode": "0x",
|
|
32
|
+
"linkReferences": {},
|
|
33
|
+
"deployedLinkReferences": {}
|
|
34
|
+
}
|