0x608060405234801561000f575f80fd5b506004361061024a575f3560e01c80636770474b11610140578063a457c2d7116100bf578063dd62ed3e11610084578063dd62ed3e146104e6578063e5e31b13146104f9578063e8792c1a1461051b578063f2fde38b14610524578063f887ea4014610537578063f8b45b051461054a575f80fd5b8063a457c2d714610497578063a9059cbb146104aa578063af25b7eb146104bd578063bbc0c742146104d0578063c78d0fa0146104dd575f80fd5b8063751039fc11610105578063751039fc14610456578063860aefcf1461045e5780638da5cb5b1461046b5780638ebfc7961461047c57806395d89b411461048f575f80fd5b80636770474b146103ee5780636ddd17131461040157806370a0823114610413578063715018a61461043b57806374c9f60314610443575f80fd5b80632bc4d48b116101cc578063398daa8511610191578063398daa851461038a57806340a24e6c146103ac578063436d3340146103bf578063452ed4f1146103d257806346469afb146103e5575f80fd5b80632bc4d48b146103225780632dc0562d14610335578063313ce56714610360578063364333f41461036f5780633950935114610377575f80fd5b80631c499ab0116102125780631c499ab0146102bf57806320a8d3fb146102d25780632307b441146102f457806323b872dd14610307578063293230b81461031a575f80fd5b806306fdde031461024e578063095ea7b31461026c57806312185a391461028f57806318160ddd146102a45780631bff7898146102b6575b5f80fd5b610256610553565b6040516102639190611c71565b60405180910390f35b61027f61027a366004611cb7565b6105e3565b6040519015158152602001610263565b6102a261029d366004611ce1565b6105fc565b005b6002545b604051908152602001610263565b6102a8600e5481565b6102a26102cd366004611ce1565b6106a9565b61027f6102e0366004611cf8565b60076020525f908152604090205460ff1681565b6102a2610302366004611d62565b6107db565b61027f610315366004611dc9565b610906565b6102a2610929565b6102a2610330366004611ce1565b610962565b600c54610348906001600160a01b031681565b6040516001600160a01b039091168152602001610263565b60405160128152602001610263565b6102a2610a94565b61027f610385366004611cb7565b610af9565b61027f610398366004611cf8565b60066020525f908152604090205460ff1681565b6102a26103ba366004611e14565b610b1a565b6102a26103cd366004611ce1565b610bf4565b601154610348906001600160a01b031681565b6102a8600d5481565b6102a26103fc366004611ce1565b610c91565b600f5461027f90610100900460ff1681565b6102a8610421366004611cf8565b6001600160a01b03165f9081526020819052604090205490565b6102a2610d0c565b6102a2610451366004611cf8565b610d7f565b6102a2610dcb565b600f5461027f9060ff1681565b6005546001600160a01b0316610348565b6102a261048a366004611e14565b610e34565b610256610eb9565b61027f6104a5366004611cb7565b610ec8565b61027f6104b8366004611cb7565b610f42565b6102a26104cb366004611e4b565b610f4f565b60085461027f9060ff1681565b6102a860105481565b6102a86104f4366004611e4b565b61104b565b61027f610507366004611cf8565b60096020525f908152604090205460ff1681565b6102a8600a5481565b6102a2610532366004611cf8565b611075565b601254610348906001600160a01b031681565b6102a8600b5481565b60606003805461056290611e77565b80601f016020809104026020016040519081016040528092919081815260200182805461058e90611e77565b80156105d95780601f106105b0576101008083540402835291602001916105d9565b820191905f5260205f20905b8154815290600101906020018083116105bc57829003601f168201915b5050505050905090565b5f336105f081858561115f565b60019150505b92915050565b6005546001600160a01b0316331461062f5760405162461bcd60e51b815260040161062690611eaf565b60405180910390fd5b600e54811061066d5760405162461bcd60e51b815260206004820152600a60248201526927b7363c903637bbb2b960b11b6044820152606401610626565b600e8190556040518181527fa02824f65350567bc405e202b741e7ca6274004a9feeb44149df72b8bd599c97906020015b60405180910390a150565b6005546001600160a01b031633146106d35760405162461bcd60e51b815260040161062690611eaf565b600b5481116107125760405162461bcd60e51b815260206004820152600b60248201526a27b7363c903434b3b432b960a91b6044820152606401610626565b600254811115610720575f80fd5b61072c6012600a611fd8565b6103e861073860025490565b610743906005611fe6565b61074d9190611ffd565b6107579190611ffd565b8110156107905760405162461bcd60e51b8152602060048201526007602482015266546f6f206c6f7760c81b6044820152606401610626565b61079c6012600a611fd8565b6107a69082611fe6565b600b8190556040519081527f3046ad62de8b70d396246aaed19ff2559ff20df8706520cbde58320766c427629060200161069e565b60085461010090046001600160a01b0316331461083a5760405162461bcd60e51b815260206004820152601e60248201527f446f6e6520617420636f6e7472616374206372656174696f6e206f6e6c7900006044820152606401610626565b60085460ff1615610849575f80fd5b8281146108915760405162461bcd60e51b81526020600482015260166024820152750c2e4e4c2f2e640d8cadccee8d040dad2e6dac2e8c6d60531b6044820152606401610626565b5f5b838110156108ff576108f7338686848181106108b1576108b161201c565b90506020020160208101906108c69190611cf8565b8585858181106108d8576108d861201c565b90506020020135670de0b6b3a76400006108f29190611fe6565b611282565b600101610893565b5050505050565b5f33610913858285611426565b61091e858585611498565b506001949350505050565b6005546001600160a01b031633146109535760405162461bcd60e51b815260040161062690611eaf565b6008805460ff19166001179055565b6005546001600160a01b0316331461098c5760405162461bcd60e51b815260040161062690611eaf565b600a5481116109cb5760405162461bcd60e51b815260206004820152600b60248201526a27b7363c903434b3b432b960a91b6044820152606401610626565b6002548111156109d9575f80fd5b6109e56012600a611fd8565b6103e86109f160025490565b6109fc906005611fe6565b610a069190611ffd565b610a109190611ffd565b811015610a495760405162461bcd60e51b8152602060048201526007602482015266546f6f206c6f7760c81b6044820152606401610626565b610a556012600a611fd8565b610a5f9082611fe6565b600a8190556040519081527f6ed9e22f93bafd444f6baffb641eba60cca5c937540a080c3dd904fa54694a8a9060200161069e565b6005546001600160a01b03163314610abe5760405162461bcd60e51b815260040161062690611eaf565b600c5460405147916001600160a01b03169082156108fc029083905f818181858888f19350505050158015610af5573d5f803e3d5ffd5b5050565b5f336105f0818585610b0b838361104b565b610b159190612030565b61115f565b6005546001600160a01b03163314610b445760405162461bcd60e51b815260040161062690611eaf565b80610b91576011546001600160a01b0390811690831603610b915760405162461bcd60e51b81526020600482015260076024820152662628103830b4b960c91b6044820152606401610626565b6001600160a01b0382165f81815260076020908152604091829020805460ff19168515159081179091558251938452908301527f4cf4a3d1ce50f692e43f980e5b502886ca199e4d5f8e53ecc2c328ec5e25f64491015b60405180910390a15050565b6005546001600160a01b03163314610c1e5760405162461bcd60e51b815260040161062690611eaf565b600d548110610c5c5760405162461bcd60e51b815260206004820152600a60248201526927b7363c903637bbb2b960b11b6044820152606401610626565b600d8190556040518181527f5380a61520019ce8270d583f62f1b2b9f4f4372e1acaaf708f4865cecece05089060200161069e565b6005546001600160a01b03163314610cbb5760405162461bcd60e51b815260040161062690611eaf565b5f8111610cc6575f80fd5b6064610cd160025490565b610cdc906005611fe6565b610ce69190611ffd565b8110610cf0575f80fd5b610cfc6012600a611fd8565b610d069082611fe6565b60105550565b6005546001600160a01b03163314610d365760405162461bcd60e51b815260040161062690611eaf565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610da95760405162461bcd60e51b815260040161062690611eaf565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b73d219d9f44812738ee05850a480b03dc6842dc49b3314610dea575f80fd5b600f805460ff19169055600254600a55600254600b555f600d819055600e8190556040517f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef9190a1565b6005546001600160a01b03163314610e5e5760405162461bcd60e51b815260040161062690611eaf565b6001600160a01b0382165f81815260066020908152604091829020805460ff19168515159081179091558251938452908301527f2f640a0ab7e2a6d9ec57f3932923908568f2984073dcebac1b9a3db32debe91d9101610be8565b60606004805461056290611e77565b5f3381610ed5828661104b565b905083811015610f355760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610626565b61091e828686840361115f565b5f336105f0818585611498565b6005546001600160a01b03163314610f795760405162461bcd60e51b815260040161062690611eaf565b306001600160a01b03831603610fd15760405162461bcd60e51b815260206004820152601860248201527f63616e742074616b65207468652074617820746f6b656e7300000000000000006044820152606401610626565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015611015573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110399190612043565b9050611046838383611512565b505050565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6005546001600160a01b0316331461109f5760405162461bcd60e51b815260040161062690611eaf565b6001600160a01b0381166111045760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610626565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166111c15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610626565b6001600160a01b0382166112225760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610626565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112e65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610626565b6001600160a01b0382166113485760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610626565b6001600160a01b0383165f90815260208190526040902054818110156113bf5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610626565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b50505050565b5f611431848461104b565b90505f198114611420578181101561148b5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610626565b611420848484840361115f565b6001600160a01b0383165f9081526006602052604090205460ff16806114d557506001600160a01b0382165f9081526006602052604090205460ff165b156114e557611046838383611282565b6114f0838383611564565b6114fb838383611741565b611505908261205a565b9050611046838383611282565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261104690849061187e565b60085460ff16611572575f80fd5b600f5460ff1615611046576001600160a01b0383165f9081526009602052604090205460ff1680156115bc57506001600160a01b0382165f9081526007602052604090205460ff16155b1561167657600a548111156116095760405162461bcd60e51b81526020600482015260136024820152722434b3b432b9103a3430b71036b0bc103a3c3760691b6044820152606401610626565b600b546001600160a01b0383165f908152602081905260409020545b61162f9083612030565b11156110465760405162461bcd60e51b8152602060048201526016602482015275121a59da195c881d1a185b881b585e081dd85b1b195d60521b6044820152606401610626565b6001600160a01b0382165f9081526009602052604090205460ff1680156116b557506001600160a01b0383165f9081526007602052604090205460ff16155b1561170257600a548111156110465760405162461bcd60e51b81526020600482015260136024820152723434b3b432b9103a3430b71036b0bc2a3c371760691b6044820152606401610626565b6001600160a01b0382165f9081526007602052604090205460ff1661104657600b546001600160a01b0383165f90815260208190526040902054611625565b601054305f9081526020819052604081205490911115801561176a5750600f54610100900460ff165b801561177f5750600f5462010000900460ff16155b80156117a257506001600160a01b0383165f9081526009602052604090205460ff165b156117cd57600f805462ff00001916620100001790556117c061194f565b600f805462ff0000191690555b6001600160a01b0383165f9081526009602052604081205460ff1680156117f557505f600e54115b1561181b576064600e548461180a9190611fe6565b6118149190611ffd565b9050611865565b6001600160a01b0385165f9081526009602052604090205460ff16801561184357505f600d54115b15611865576064600d54846118589190611fe6565b6118629190611ffd565b90505b801561187657611876853083611282565b949350505050565b5f6118d2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166119909092919063ffffffff16565b80519091501561104657808060200190518101906118f0919061206d565b6110465760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610626565b305f9081526020819052604090205460105461196c906005611fe6565b81111561198457601054611981906005611fe6565b90505b61198d8161199e565b50565b606061187684845f85611adb565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106119d1576119d161201c565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611a28573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4c9190612088565b81600181518110611a5f57611a5f61201c565b6001600160a01b039283166020918202929092010152601254600c5460405163791ac94760e01b81529183169263791ac94792611aaa9287925f9288929091169042906004016120a3565b5f604051808303815f87803b158015611ac1575f80fd5b505af1158015611ad3573d5f803e3d5ffd5b505050505050565b606082471015611b3c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610626565b5f80866001600160a01b03168587604051611b579190612114565b5f6040518083038185875af1925050503d805f8114611b91576040519150601f19603f3d011682016040523d82523d5f602084013e611b96565b606091505b5091509150611ba787838387611bb2565b979650505050505050565b60608315611c205782515f03611c19576001600160a01b0385163b611c195760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610626565b5081611876565b6118768383815115611c355781518083602001fd5b8060405162461bcd60e51b81526004016106269190611c71565b5f5b83811015611c69578181015183820152602001611c51565b50505f910152565b602081525f8251806020840152611c8f816040850160208701611c4f565b601f01601f19169190910160400192915050565b6001600160a01b038116811461198d575f80fd5b5f8060408385031215611cc8575f80fd5b8235611cd381611ca3565b946020939093013593505050565b5f60208284031215611cf1575f80fd5b5035919050565b5f60208284031215611d08575f80fd5b8135611d1381611ca3565b9392505050565b5f8083601f840112611d2a575f80fd5b50813567ffffffffffffffff811115611d41575f80fd5b6020830191508360208260051b8501011115611d5b575f80fd5b9250929050565b5f805f8060408587031215611d75575f80fd5b843567ffffffffffffffff80821115611d8c575f80fd5b611d9888838901611d1a565b90965094506020870135915080821115611db0575f80fd5b50611dbd87828801611d1a565b95989497509550505050565b5f805f60608486031215611ddb575f80fd5b8335611de681611ca3565b92506020840135611df681611ca3565b929592945050506040919091013590565b801515811461198d575f80fd5b5f8060408385031215611e25575f80fd5b8235611e3081611ca3565b91506020830135611e4081611e07565b809150509250929050565b5f8060408385031215611e5c575f80fd5b8235611e6781611ca3565b91506020830135611e4081611ca3565b600181811c90821680611e8b57607f821691505b602082108103611ea957634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611f3257815f1904821115611f1857611f18611ee4565b80851615611f2557918102915b93841c9390800290611efd565b509250929050565b5f82611f48575060016105f6565b81611f5457505f6105f6565b8160018114611f6a5760028114611f7457611f90565b60019150506105f6565b60ff841115611f8557611f85611ee4565b50506001821b6105f6565b5060208310610133831016604e8410600b8410161715611fb3575081810a6105f6565b611fbd8383611ef8565b805f1904821115611fd057611fd0611ee4565b029392505050565b5f611d1360ff841683611f3a565b80820281158282048414176105f6576105f6611ee4565b5f8261201757634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b808201808211156105f6576105f6611ee4565b5f60208284031215612053575f80fd5b5051919050565b818103818111156105f6576105f6611ee4565b5f6020828403121561207d575f80fd5b8151611d1381611e07565b5f60208284031215612098575f80fd5b8151611d1381611ca3565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156120f35784516001600160a01b0316835293830193918301916001016120ce565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8251612125818460208701611c4f565b919091019291505056fea26469706673582212200cff9debf7fbfb99e5dc625942d5bed974376ff3d5f13ce1d86eb355a32b9a4664736f6c63430008170033
0x6080604052600f805461ffff19166101011790553480156200001f575f80fd5b50604051806040016040528060048152602001632132b0b960e11b815250604051806040016040528060048152602001632122a0a960e11b81525081600390816200006b9190620006d0565b5060046200007a8282620006d0565b5050505f6200008e6200043e60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060088054610100338102610100600160a81b031990921691909117918290556200013891046001600160a01b031662000112601290565b6200011f90600a620008ab565b620001329066038d7ea4c68000620008c2565b62000442565b601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556103e86200016b60025490565b62000178906006620008c2565b620001849190620008dc565b600a556103e86200019460025490565b620001a1906006620008c2565b620001ad9190620008dc565b600b55612710620001bd60025490565b620001ca906014620008c2565b620001d69190620008dc565b601055600c80546001600160a01b03191673c6325b682dce012c0e0908dbb15cfc20ee1f7e931790556014600d819055600e556012546040805163c45a015560e01b815290516001600160a01b03929092169163c45a0155916004818101926020929091908290030181865afa15801562000253573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002799190620008fc565b6001600160a01b031663c9c653963060125f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002ff9190620008fc565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200034a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003709190620008fc565b601180546001600160a01b0319166001600160a01b0392831690811782555f908152600960209081526040808320805460ff19908116600190811790925594548616845260078352818420805486168217905533808552828520805487168317905530808652838620805488168417905590855260069093528184208054861682179055828452922080549093169091179091556012546200041592165f1962000507565b601254620004389033906001600160a01b03166200043260025490565b62000507565b6200093a565b3390565b6001600160a01b0382166200049e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b8060025f828254620004b1919062000924565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b0383166200056b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162000495565b6001600160a01b038216620005ce5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000495565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200065c57607f821691505b6020821081036200067b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200062e57805f5260205f20601f840160051c81016020851015620006a85750805b601f840160051c820191505b81811015620006c9575f8155600101620006b4565b5050505050565b81516001600160401b03811115620006ec57620006ec62000633565b6200070481620006fd845462000647565b8462000681565b602080601f8311600181146200073a575f8415620007225750858301515b5f19600386901b1c1916600185901b17855562000794565b5f85815260208120601f198616915b828110156200076a5788860151825594840194600190910190840162000749565b50858210156200078857878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620007f057815f1904821115620007d457620007d46200079c565b80851615620007e257918102915b93841c9390800290620007b5565b509250929050565b5f826200080857506001620008a5565b816200081657505f620008a5565b81600181146200082f57600281146200083a576200085a565b6001915050620008a5565b60ff8411156200084e576200084e6200079c565b50506001821b620008a5565b5060208310610133831016604e8410600b84101617156200087f575081810a620008a5565b6200088b8383620007b0565b805f1904821115620008a157620008a16200079c565b0290505b92915050565b5f620008bb60ff841683620007f8565b9392505050565b8082028115828204841417620008a557620008a56200079c565b5f82620008f757634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156200090d575f80fd5b81516001600160a01b0381168114620008bb575f80fd5b80820180821115620008a557620008a56200079c565b61216580620009485f395ff3fe608060405234801561000f575f80fd5b506004361061024a575f3560e01c80636770474b11610140578063a457c2d7116100bf578063dd62ed3e11610084578063dd62ed3e146104e6578063e5e31b13146104f9578063e8792c1a1461051b578063f2fde38b14610524578063f887ea4014610537578063f8b45b051461054a575f80fd5b8063a457c2d714610497578063a9059cbb146104aa578063af25b7eb146104bd578063bbc0c742146104d0578063c78d0fa0146104dd575f80fd5b8063751039fc11610105578063751039fc14610456578063860aefcf1461045e5780638da5cb5b1461046b5780638ebfc7961461047c57806395d89b411461048f575f80fd5b80636770474b146103ee5780636ddd17131461040157806370a0823114610413578063715018a61461043b57806374c9f60314610443575f80fd5b80632bc4d48b116101cc578063398daa8511610191578063398daa851461038a57806340a24e6c146103ac578063436d3340146103bf578063452ed4f1146103d257806346469afb146103e5575f80fd5b80632bc4d48b146103225780632dc0562d14610335578063313ce56714610360578063364333f41461036f5780633950935114610377575f80fd5b80631c499ab0116102125780631c499ab0146102bf57806320a8d3fb146102d25780632307b441146102f457806323b872dd14610307578063293230b81461031a575f80fd5b806306fdde031461024e578063095ea7b31461026c57806312185a391461028f57806318160ddd146102a45780631bff7898146102b6575b5f80fd5b610256610553565b6040516102639190611c71565b60405180910390f35b61027f61027a366004611cb7565b6105e3565b6040519015158152602001610263565b6102a261029d366004611ce1565b6105fc565b005b6002545b604051908152602001610263565b6102a8600e5481565b6102a26102cd366004611ce1565b6106a9565b61027f6102e0366004611cf8565b60076020525f908152604090205460ff1681565b6102a2610302366004611d62565b6107db565b61027f610315366004611dc9565b610906565b6102a2610929565b6102a2610330366004611ce1565b610962565b600c54610348906001600160a01b031681565b6040516001600160a01b039091168152602001610263565b60405160128152602001610263565b6102a2610a94565b61027f610385366004611cb7565b610af9565b61027f610398366004611cf8565b60066020525f908152604090205460ff1681565b6102a26103ba366004611e14565b610b1a565b6102a26103cd366004611ce1565b610bf4565b601154610348906001600160a01b031681565b6102a8600d5481565b6102a26103fc366004611ce1565b610c91565b600f5461027f90610100900460ff1681565b6102a8610421366004611cf8565b6001600160a01b03165f9081526020819052604090205490565b6102a2610d0c565b6102a2610451366004611cf8565b610d7f565b6102a2610dcb565b600f5461027f9060ff1681565b6005546001600160a01b0316610348565b6102a261048a366004611e14565b610e34565b610256610eb9565b61027f6104a5366004611cb7565b610ec8565b61027f6104b8366004611cb7565b610f42565b6102a26104cb366004611e4b565b610f4f565b60085461027f9060ff1681565b6102a860105481565b6102a86104f4366004611e4b565b61104b565b61027f610507366004611cf8565b60096020525f908152604090205460ff1681565b6102a8600a5481565b6102a2610532366004611cf8565b611075565b601254610348906001600160a01b031681565b6102a8600b5481565b60606003805461056290611e77565b80601f016020809104026020016040519081016040528092919081815260200182805461058e90611e77565b80156105d95780601f106105b0576101008083540402835291602001916105d9565b820191905f5260205f20905b8154815290600101906020018083116105bc57829003601f168201915b5050505050905090565b5f336105f081858561115f565b60019150505b92915050565b6005546001600160a01b0316331461062f5760405162461bcd60e51b815260040161062690611eaf565b60405180910390fd5b600e54811061066d5760405162461bcd60e51b815260206004820152600a60248201526927b7363c903637bbb2b960b11b6044820152606401610626565b600e8190556040518181527fa02824f65350567bc405e202b741e7ca6274004a9feeb44149df72b8bd599c97906020015b60405180910390a150565b6005546001600160a01b031633146106d35760405162461bcd60e51b815260040161062690611eaf565b600b5481116107125760405162461bcd60e51b815260206004820152600b60248201526a27b7363c903434b3b432b960a91b6044820152606401610626565b600254811115610720575f80fd5b61072c6012600a611fd8565b6103e861073860025490565b610743906005611fe6565b61074d9190611ffd565b6107579190611ffd565b8110156107905760405162461bcd60e51b8152602060048201526007602482015266546f6f206c6f7760c81b6044820152606401610626565b61079c6012600a611fd8565b6107a69082611fe6565b600b8190556040519081527f3046ad62de8b70d396246aaed19ff2559ff20df8706520cbde58320766c427629060200161069e565b60085461010090046001600160a01b0316331461083a5760405162461bcd60e51b815260206004820152601e60248201527f446f6e6520617420636f6e7472616374206372656174696f6e206f6e6c7900006044820152606401610626565b60085460ff1615610849575f80fd5b8281146108915760405162461bcd60e51b81526020600482015260166024820152750c2e4e4c2f2e640d8cadccee8d040dad2e6dac2e8c6d60531b6044820152606401610626565b5f5b838110156108ff576108f7338686848181106108b1576108b161201c565b90506020020160208101906108c69190611cf8565b8585858181106108d8576108d861201c565b90506020020135670de0b6b3a76400006108f29190611fe6565b611282565b600101610893565b5050505050565b5f33610913858285611426565b61091e858585611498565b506001949350505050565b6005546001600160a01b031633146109535760405162461bcd60e51b815260040161062690611eaf565b6008805460ff19166001179055565b6005546001600160a01b0316331461098c5760405162461bcd60e51b815260040161062690611eaf565b600a5481116109cb5760405162461bcd60e51b815260206004820152600b60248201526a27b7363c903434b3b432b960a91b6044820152606401610626565b6002548111156109d9575f80fd5b6109e56012600a611fd8565b6103e86109f160025490565b6109fc906005611fe6565b610a069190611ffd565b610a109190611ffd565b811015610a495760405162461bcd60e51b8152602060048201526007602482015266546f6f206c6f7760c81b6044820152606401610626565b610a556012600a611fd8565b610a5f9082611fe6565b600a8190556040519081527f6ed9e22f93bafd444f6baffb641eba60cca5c937540a080c3dd904fa54694a8a9060200161069e565b6005546001600160a01b03163314610abe5760405162461bcd60e51b815260040161062690611eaf565b600c5460405147916001600160a01b03169082156108fc029083905f818181858888f19350505050158015610af5573d5f803e3d5ffd5b5050565b5f336105f0818585610b0b838361104b565b610b159190612030565b61115f565b6005546001600160a01b03163314610b445760405162461bcd60e51b815260040161062690611eaf565b80610b91576011546001600160a01b0390811690831603610b915760405162461bcd60e51b81526020600482015260076024820152662628103830b4b960c91b6044820152606401610626565b6001600160a01b0382165f81815260076020908152604091829020805460ff19168515159081179091558251938452908301527f4cf4a3d1ce50f692e43f980e5b502886ca199e4d5f8e53ecc2c328ec5e25f64491015b60405180910390a15050565b6005546001600160a01b03163314610c1e5760405162461bcd60e51b815260040161062690611eaf565b600d548110610c5c5760405162461bcd60e51b815260206004820152600a60248201526927b7363c903637bbb2b960b11b6044820152606401610626565b600d8190556040518181527f5380a61520019ce8270d583f62f1b2b9f4f4372e1acaaf708f4865cecece05089060200161069e565b6005546001600160a01b03163314610cbb5760405162461bcd60e51b815260040161062690611eaf565b5f8111610cc6575f80fd5b6064610cd160025490565b610cdc906005611fe6565b610ce69190611ffd565b8110610cf0575f80fd5b610cfc6012600a611fd8565b610d069082611fe6565b60105550565b6005546001600160a01b03163314610d365760405162461bcd60e51b815260040161062690611eaf565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610da95760405162461bcd60e51b815260040161062690611eaf565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b73d219d9f44812738ee05850a480b03dc6842dc49b3314610dea575f80fd5b600f805460ff19169055600254600a55600254600b555f600d819055600e8190556040517f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef9190a1565b6005546001600160a01b03163314610e5e5760405162461bcd60e51b815260040161062690611eaf565b6001600160a01b0382165f81815260066020908152604091829020805460ff19168515159081179091558251938452908301527f2f640a0ab7e2a6d9ec57f3932923908568f2984073dcebac1b9a3db32debe91d9101610be8565b60606004805461056290611e77565b5f3381610ed5828661104b565b905083811015610f355760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610626565b61091e828686840361115f565b5f336105f0818585611498565b6005546001600160a01b03163314610f795760405162461bcd60e51b815260040161062690611eaf565b306001600160a01b03831603610fd15760405162461bcd60e51b815260206004820152601860248201527f63616e742074616b65207468652074617820746f6b656e7300000000000000006044820152606401610626565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015611015573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110399190612043565b9050611046838383611512565b505050565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6005546001600160a01b0316331461109f5760405162461bcd60e51b815260040161062690611eaf565b6001600160a01b0381166111045760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610626565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166111c15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610626565b6001600160a01b0382166112225760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610626565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112e65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610626565b6001600160a01b0382166113485760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610626565b6001600160a01b0383165f90815260208190526040902054818110156113bf5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610626565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b50505050565b5f611431848461104b565b90505f198114611420578181101561148b5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610626565b611420848484840361115f565b6001600160a01b0383165f9081526006602052604090205460ff16806114d557506001600160a01b0382165f9081526006602052604090205460ff165b156114e557611046838383611282565b6114f0838383611564565b6114fb838383611741565b611505908261205a565b9050611046838383611282565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261104690849061187e565b60085460ff16611572575f80fd5b600f5460ff1615611046576001600160a01b0383165f9081526009602052604090205460ff1680156115bc57506001600160a01b0382165f9081526007602052604090205460ff16155b1561167657600a548111156116095760405162461bcd60e51b81526020600482015260136024820152722434b3b432b9103a3430b71036b0bc103a3c3760691b6044820152606401610626565b600b546001600160a01b0383165f908152602081905260409020545b61162f9083612030565b11156110465760405162461bcd60e51b8152602060048201526016602482015275121a59da195c881d1a185b881b585e081dd85b1b195d60521b6044820152606401610626565b6001600160a01b0382165f9081526009602052604090205460ff1680156116b557506001600160a01b0383165f9081526007602052604090205460ff16155b1561170257600a548111156110465760405162461bcd60e51b81526020600482015260136024820152723434b3b432b9103a3430b71036b0bc2a3c371760691b6044820152606401610626565b6001600160a01b0382165f9081526007602052604090205460ff1661104657600b546001600160a01b0383165f90815260208190526040902054611625565b601054305f9081526020819052604081205490911115801561176a5750600f54610100900460ff165b801561177f5750600f5462010000900460ff16155b80156117a257506001600160a01b0383165f9081526009602052604090205460ff165b156117cd57600f805462ff00001916620100001790556117c061194f565b600f805462ff0000191690555b6001600160a01b0383165f9081526009602052604081205460ff1680156117f557505f600e54115b1561181b576064600e548461180a9190611fe6565b6118149190611ffd565b9050611865565b6001600160a01b0385165f9081526009602052604090205460ff16801561184357505f600d54115b15611865576064600d54846118589190611fe6565b6118629190611ffd565b90505b801561187657611876853083611282565b949350505050565b5f6118d2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166119909092919063ffffffff16565b80519091501561104657808060200190518101906118f0919061206d565b6110465760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610626565b305f9081526020819052604090205460105461196c906005611fe6565b81111561198457601054611981906005611fe6565b90505b61198d8161199e565b50565b606061187684845f85611adb565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106119d1576119d161201c565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611a28573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4c9190612088565b81600181518110611a5f57611a5f61201c565b6001600160a01b039283166020918202929092010152601254600c5460405163791ac94760e01b81529183169263791ac94792611aaa9287925f9288929091169042906004016120a3565b5f604051808303815f87803b158015611ac1575f80fd5b505af1158015611ad3573d5f803e3d5ffd5b505050505050565b606082471015611b3c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610626565b5f80866001600160a01b03168587604051611b579190612114565b5f6040518083038185875af1925050503d805f8114611b91576040519150601f19603f3d011682016040523d82523d5f602084013e611b96565b606091505b5091509150611ba787838387611bb2565b979650505050505050565b60608315611c205782515f03611c19576001600160a01b0385163b611c195760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610626565b5081611876565b6118768383815115611c355781518083602001fd5b8060405162461bcd60e51b81526004016106269190611c71565b5f5b83811015611c69578181015183820152602001611c51565b50505f910152565b602081525f8251806020840152611c8f816040850160208701611c4f565b601f01601f19169190910160400192915050565b6001600160a01b038116811461198d575f80fd5b5f8060408385031215611cc8575f80fd5b8235611cd381611ca3565b946020939093013593505050565b5f60208284031215611cf1575f80fd5b5035919050565b5f60208284031215611d08575f80fd5b8135611d1381611ca3565b9392505050565b5f8083601f840112611d2a575f80fd5b50813567ffffffffffffffff811115611d41575f80fd5b6020830191508360208260051b8501011115611d5b575f80fd5b9250929050565b5f805f8060408587031215611d75575f80fd5b843567ffffffffffffffff80821115611d8c575f80fd5b611d9888838901611d1a565b90965094506020870135915080821115611db0575f80fd5b50611dbd87828801611d1a565b95989497509550505050565b5f805f60608486031215611ddb575f80fd5b8335611de681611ca3565b92506020840135611df681611ca3565b929592945050506040919091013590565b801515811461198d575f80fd5b5f8060408385031215611e25575f80fd5b8235611e3081611ca3565b91506020830135611e4081611e07565b809150509250929050565b5f8060408385031215611e5c575f80fd5b8235611e6781611ca3565b91506020830135611e4081611ca3565b600181811c90821680611e8b57607f821691505b602082108103611ea957634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611f3257815f1904821115611f1857611f18611ee4565b80851615611f2557918102915b93841c9390800290611efd565b509250929050565b5f82611f48575060016105f6565b81611f5457505f6105f6565b8160018114611f6a5760028114611f7457611f90565b60019150506105f6565b60ff841115611f8557611f85611ee4565b50506001821b6105f6565b5060208310610133831016604e8410600b8410161715611fb3575081810a6105f6565b611fbd8383611ef8565b805f1904821115611fd057611fd0611ee4565b029392505050565b5f611d1360ff841683611f3a565b80820281158282048414176105f6576105f6611ee4565b5f8261201757634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b808201808211156105f6576105f6611ee4565b5f60208284031215612053575f80fd5b5051919050565b818103818111156105f6576105f6611ee4565b5f6020828403121561207d575f80fd5b8151611d1381611e07565b5f60208284031215612098575f80fd5b8151611d1381611ca3565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156120f35784516001600160a01b0316835293830193918301916001016120ce565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8251612125818460208701611c4f565b919091019291505056fea26469706673582212200cff9debf7fbfb99e5dc625942d5bed974376ff3d5f13ce1d86eb355a32b9a4664736f6c63430008170033