0x60806040526004361061031e5760003560e01c806385141a77116101ab578063c5d32bb2116100f7578063f2c4220e11610095578063f8b45b051161006f578063f8b45b05146109bf578063fac8e835146109d5578063fbe6324e146109f5578063ffaee61414610a1657600080fd5b8063f2c4220e14610969578063f2fde38b1461097f578063f4d86d581461099f57600080fd5b8063e02ce1cf116100d1578063e02ce1cf146108d0578063e0f3ccf5146108f0578063e21b98911461092a578063e4748b9e1461094a57600080fd5b8063c5d32bb21461083a578063cbb1904e1461086a578063dd62ed3e1461088a57600080fd5b8063aacebbe311610164578063bbc0c7421161013e578063bbc0c742146107b9578063c0d78655146107da578063c17b5b8c146107fa578063c423b86b1461081a57600080fd5b8063aacebbe314610753578063b8eb354614610773578063baf1ce2e1461078957600080fd5b806385141a77146106b2578063860aefcf146106c85780638a8c523c146106e957806395d89b41146106fe578063a457c2d714610713578063a9059cbb1461073357600080fd5b8063313ce5671161026a578063703a490211610223578063715018a6116101fd578063715018a614610644578063728a88cd1461065957806375f0a8741461066f5780638095d5641461069257600080fd5b8063703a4902146105d857806370a08231146105f857806370db69d61461062e57600080fd5b8063313ce56714610506578063355496ca1461052857806336544805146105485780633950935114610578578063448ebdff1461059857806349bd5a5e146105b857600080fd5b80631694505e116102d7578063193d6e89116102b1578063193d6e89146104865780631c8c22fc146104a6578063214013ca146104c657806323b872dd146104e657600080fd5b80631694505e1461041b57806318160ddd14610453578063185870f91461046857600080fd5b806306fdde031461032a57806307c4226c14610355578063095ea7b3146103955780630e375a5c146103b55780631340538f146103d75780631675d802146103f757600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061033f610a36565b60405161034c91906131de565b60405180910390f35b34801561036157600080fd5b50610385610370366004613251565b60246020526000908152604090205460ff1681565b604051901515815260200161034c565b3480156103a157600080fd5b506103856103b036600461326e565b610ac8565b3480156103c157600080fd5b506103d56103d03660046132c9565b610adf565b005b3480156103e357600080fd5b506103d56103f23660046133a0565b610b7e565b34801561040357600080fd5b5061040d60095481565b60405190815260200161034c565b34801561042757600080fd5b5060075461043b906001600160a01b031681565b6040516001600160a01b03909116815260200161034c565b34801561045f57600080fd5b5060115461040d565b34801561047457600080fd5b506016546001600160a01b031661043b565b34801561049257600080fd5b506103d56104a13660046133bd565b610c6d565b3480156104b257600080fd5b506103d56104c13660046133fe565b610ca2565b3480156104d257600080fd5b506103d56104e1366004613251565b610dc1565b3480156104f257600080fd5b506103856105013660046133bd565b611236565b34801561051257600080fd5b5060125460405160ff909116815260200161034c565b34801561053457600080fd5b506103d56105433660046133fe565b611315565b34801561055457600080fd5b50610385610563366004613251565b60226020526000908152604090205460ff1681565b34801561058457600080fd5b5061038561059336600461326e565b611437565b3480156105a457600080fd5b506103d56105b33660046133a0565b61146e565b3480156105c457600080fd5b5060085461043b906001600160a01b031681565b3480156105e457600080fd5b506103d56105f3366004613251565b6114ab565b34801561060457600080fd5b5061040d610613366004613251565b6001600160a01b031660009081526020819052604090205490565b34801561063a57600080fd5b5061040d600a5481565b34801561065057600080fd5b506103d5611524565b34801561066557600080fd5b5061040d600d5481565b34801561067b57600080fd5b5060155461010090046001600160a01b031661043b565b34801561069e57600080fd5b506103d56106ad366004613437565b611560565b3480156106be57600080fd5b5061043b61dead81565b3480156106d457600080fd5b5060085461038590600160b81b900460ff1681565b3480156106f557600080fd5b506103d561162e565b34801561070a57600080fd5b5061033f611673565b34801561071f57600080fd5b5061038561072e36600461326e565b611682565b34801561073f57600080fd5b5061038561074e36600461326e565b61171d565b34801561075f57600080fd5b506103d561076e366004613251565b61172a565b34801561077f57600080fd5b5061040d600b5481565b34801561079557600080fd5b506103856107a4366004613251565b60236020526000908152604090205460ff1681565b3480156107c557600080fd5b5060085461038590600160b01b900460ff1681565b3480156107e657600080fd5b5061043b6107f5366004613251565b6117ae565b34801561080657600080fd5b506103d5610815366004613437565b611bc6565b34801561082657600080fd5b506103d5610835366004613251565b611c3c565b34801561084657600080fd5b50610385610855366004613251565b60216020526000908152604090205460ff1681565b34801561087657600080fd5b506103d5610885366004613463565b611cc0565b34801561089657600080fd5b5061040d6108a536600461347c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156108dc57600080fd5b506103d56108eb3660046134aa565b611cf6565b3480156108fc57600080fd5b50601a54601b54601c5461090f92919083565b6040805193845260208401929092529082015260600161034c565b34801561093657600080fd5b506103d56109453660046133fe565b611d56565b34801561095657600080fd5b5060175460185460195461090f92919083565b34801561097557600080fd5b5061040d600e5481565b34801561098b57600080fd5b506103d561099a366004613251565b611e77565b3480156109ab57600080fd5b506103d56109ba3660046133a0565b611f28565b3480156109cb57600080fd5b5061040d600c5481565b3480156109e157600080fd5b506103d56109f0366004613463565b611f70565b348015610a0157600080fd5b5060085461038590600160a81b900460ff1681565b348015610a2257600080fd5b506103d5610a313660046133fe565b61206b565b606060138054610a45906134cf565b80601f0160208091040260200160405190810160405280929190818152602001828054610a71906134cf565b8015610abe5780601f10610a9357610100808354040283529160200191610abe565b820191906000526020600020905b815481529060010190602001808311610aa157829003601f168201915b5050505050905090565b6000610ad5338484612190565b5060015b92915050565b6006546001600160a01b03163314610b125760405162461bcd60e51b8152600401610b0990613509565b60405180910390fd5b60005b8251811015610b79578160216000858481518110610b3557610b3561353e565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610b718161356a565b915050610b15565b505050565b6006546001600160a01b03163314610ba85760405162461bcd60e51b8152600401610b0990613509565b801515600860159054906101000a900460ff16151503610c4f5760405162461bcd60e51b815260206004820152605660248201527f596f75206d7573742070726f76696465206120646966666572656e742073746160448201527f747573206f74686572207468616e207468652063757272656e742076616c7565606482015275081a5b881bdc99195c881d1bc81d5c19185d19481a5d60521b608482015260a401610b09565b60088054911515600160a81b0260ff60a81b19909216919091179055565b6006546001600160a01b03163314610c975760405162461bcd60e51b8152600401610b0990613509565b610b798383836122ac565b6006546001600160a01b03163314610ccc5760405162461bcd60e51b8152600401610b0990613509565b6001600160a01b03821660009081526022602052604090205481151560ff909116151503610d965760405162461bcd60e51b815260206004820152606560248201527f596f75206d7573742070726f76696465206120646966666572656e74206d617860448201527f20627579206c696d6974206f74686572207468616e207468652063757272656e60648201527f74206d617820627579206c696d697420696e206f7264657220746f20757064616084820152641d19481a5d60da1b60a482015260c401610b09565b6001600160a01b03919091166000908152602260205260409020805460ff1916911515919091179055565b6006546001600160a01b03163314610deb5760405162461bcd60e51b8152600401610b0990613509565b600d5415610df857600080fd5b60408051808201909152600d81526c2337b7ba3130b6361021b7b4b760991b6020820152601390610e2990826135c9565b506040805180820190915260048152631193d3d560e21b6020820152601490610e5290826135c9565b506012805460ff191681178155610e6a90600a61376d565b610e79906402540be40061377c565b60118190555060008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ec4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee89190613793565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190613793565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610fa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fca9190613793565b600780546001600160a01b038086166001600160a01b03199283161790925560088054928416929091169190911790559050606461100760115490565b61101290600261377c565b61101c91906137b0565b600a556103e861102b60115490565b61103591906137b0565b61104090600261377c565b600955606461104e60115490565b61105990600261377c565b61106391906137b0565b600c55606461107160115490565b61107c90600261377c565b61108691906137b0565b600b5560115433600090815260208190526040812080549091906110ab9084906137d2565b909155505043600d553360008181526021602081815260408084208054600160ff1991821681179092556022808552838720805483168417905560248086528488208054841685179055602380875285892080548516861790553089528787528589208054851686179055601580546001600160a01b036101009182900481168c52888c208054881689179055825482900481168c52858a52888c208054881689179055825482900481168c52848a52888c20805488168917905591540481168a52818852868a2080548616871790556016805482168b52898952878b208054871688179055805482168b52938852868a208054861687179055835481168a52918752858920805485168617905591541687528452828620805482168317905561dead86529383527fda90364631e387f138e7e413f1de75a8ecb4767574209ddf012729113dea45c080549094161790925560115491519182527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a3505050565b6000611243848484612371565b6001600160a01b03848116600090815260016020908152604080832033808552925290912054600654909216148061127b5750828110155b6112d85760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610b09565b6006546001600160a01b031633036112f457600191505061130e565b611308853361130386856137e5565b612190565b60019150505b9392505050565b6006546001600160a01b0316331461133f5760405162461bcd60e51b8152600401610b0990613509565b6001600160a01b03821660009081526021602052604090205481151560ff90911615150361140c5760405162461bcd60e51b815260206004820152606860248201527f596f75206d7573742070726f76696465206120646966666572656e742065786560448201527f6d70742061646472657373206f7220737461747573206f74686572207468616e60648201527f207468652063757272656e742076616c756520696e206f7264657220746f20756084820152671c19185d19481a5d60c21b60a482015260c401610b09565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610ad59185906113039086906137d2565b6006546001600160a01b031633146114985760405162461bcd60e51b8152600401610b0990613509565b6015805460ff1916911515919091179055565b6006546001600160a01b031633146114d55760405162461bcd60e51b8152600401610b0990613509565b6016546001600160a01b038083169116036115025760405162461bcd60e51b8152600401610b09906137f8565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b0316331461154e5760405162461bcd60e51b8152600401610b0990613509565b600680546001600160a01b0319169055565b6006546001600160a01b0316331461158a5760405162461bcd60e51b8152600401610b0990613509565b604080516060810182528481526020810184905201819052601783905560188290556019819055806115bc83856137d2565b6115c691906137d2565b601d55601e826115d683866137d2565b6115e091906137d2565b1115610b795760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420333025206f72206c6573730000006044820152606401610b09565b6006546001600160a01b031633146116585760405162461bcd60e51b8152600401610b0990613509565b6008805461ffff60a81b191661010160a81b17905543600e55565b606060148054610a45906134cf565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156117045760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b09565b611713338561130386856137e5565b5060019392505050565b6000610ad5338484612371565b6006546001600160a01b031633146117545760405162461bcd60e51b8152600401610b0990613509565b6015546001600160a01b0380831661010090920416036117865760405162461bcd60e51b8152600401610b09906137f8565b601580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6006546000906001600160a01b031633146117db5760405162461bcd60e51b8152600401610b0990613509565b6001600160a01b0382166118315760405162461bcd60e51b815260206004820152601d60248201527f6e6577526f7574657220616464726573732063616e6e6f7420626520300000006044820152606401610b09565b6007546001600160a01b038084169116036118f45760405162461bcd60e51b815260206004820152607160248201527f596f75206d7573742070726f76696465206120646966666572656e7420756e6960448201527f737761705632526f75746572206f74686572207468616e20746865206375727260648201527f656e7420756e69737761705632526f75746572206164647265737320696e206f6084820152701c99195c881d1bc81d5c19185d19481a5d607a1b60a482015260c401610b09565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611937573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195b9190613793565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119cc9190613793565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611a17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3b9190613793565b91506001600160a01b038216611b9257806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aad9190613793565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611afa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1e9190613793565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611b6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8f9190613793565b91505b600880546001600160a01b038085166001600160a01b03199283161790925560078054939092169216919091179055919050565b6006546001600160a01b03163314611bf05760405162461bcd60e51b8152600401610b0990613509565b604080516060810182528481526020810184905201819052601a839055601b829055601c81905581611c2282856137d2565b611c2c91906137d2565b601e908155826115d683866137d2565b6006546001600160a01b03163314611c665760405162461bcd60e51b8152600401610b0990613509565b6001600160a01b031660009081526021602090815260408083208054600160ff1991821681179092556022845282852080548216831790556024845282852080548216831790556023909352922080549091169091179055565b6006546001600160a01b03163314611cea5760405162461bcd60e51b8152600401610b0990613509565b611cf38161296b565b50565b6006546001600160a01b03163314611d205760405162461bcd60e51b8152600401610b0990613509565b6040516001600160a01b0382169083156108fc029084906000818181858888f19350505050158015610b79573d6000803e3d6000fd5b6006546001600160a01b03163314611d805760405162461bcd60e51b8152600401610b0990613509565b6001600160a01b03821660009081526024602052604090205481151560ff909116151503611e4c5760405162461bcd60e51b815260206004820152606760248201527f596f75206d7573742070726f76696465206120646966666572656e74206d617860448201527f2073656c6c206c696d6974206f74686572207468616e2074686520637572726560648201527f6e74206d61782073656c6c206c696d697420696e206f7264657220746f20757060848201526619185d19481a5d60ca1b60a482015260c401610b09565b6001600160a01b03919091166000908152602460205260409020805460ff1916911515919091179055565b6006546001600160a01b03163314611ea15760405162461bcd60e51b8152600401610b0990613509565b6001600160a01b038116611f065760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b09565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b03163314611f525760405162461bcd60e51b8152600401610b0990613509565b60088054911515600160b81b0260ff60b81b19909216919091179055565b6006546001600160a01b03163314611f9a5760405162461bcd60e51b8152600401610b0990613509565b60125460ff16611fab90600a61376d565b611fb5908261377c565b6009540361204a5760405162461bcd60e51b815260206004820152605660248201527f596f75206d7573742070726f76696465206120646966666572656e7420616d6f60448201527f756e74206f74686572207468616e207468652063757272656e742076616c7565606482015275081a5b881bdc99195c881d1bc81d5c19185d19481a5d60521b608482015260a401610b09565b60125460ff1661205b90600a61376d565b612065908261377c565b60095550565b6006546001600160a01b031633146120955760405162461bcd60e51b8152600401610b0990613509565b6001600160a01b03821660009081526023602052604090205481151560ff9091161515036121655760405162461bcd60e51b815260206004820152606b60248201527f596f75206d7573742070726f76696465206120646966666572656e74206d617860448201527f2077616c6c6574206c696d6974206f74686572207468616e207468652063757260648201527f72656e74206d61782077616c6c6574206c696d697420696e206f72646572207460848201526a1bc81d5c19185d19481a5d60aa1b60a482015260c401610b09565b6001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b6001600160a01b0383166121f25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b09565b6001600160a01b0382166122535760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b09565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101611229565b60405163a9059cbb60e01b81526001600160a01b038381166004830152602482018390526000919085169063a9059cbb906044016020604051808303816000875af11580156122ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612323919061387b565b90508061236b5760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b7103a3930b739b332b9103330b4b632b21760511b6044820152606401610b09565b50505050565b600081116123d35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b09565b600854600160b81b900460ff16156126eb576001600160a01b03831660009081526021602052604090205460ff1615801561242757506001600160a01b03821660009081526021602052604090205460ff16155b1561247e57600854600160b01b900460ff1661247e5760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b6044820152606401610b09565b6008546001600160a01b0384811691161480156124b457506001600160a01b03821660009081526021602052604090205460ff16155b80156124ca5750600854600160a01b900460ff16155b80156124ef57506001600160a01b03821660009081526022602052604090205460ff16155b1561254657600a548111156125465760405162461bcd60e51b815260206004820152601860248201527f596f752061726520657863656564696e67206d617842757900000000000000006044820152606401610b09565b6008546001600160a01b0383811691161480159061257d57506001600160a01b03821660009081526023602052604090205460ff16155b156125fd57600c54816125a5846001600160a01b031660009081526020819052604090205490565b6125af91906137d2565b11156125fd5760405162461bcd60e51b815260206004820152601b60248201527f596f752061726520657863656564696e67206d617857616c6c657400000000006044820152606401610b09565b6008546001600160a01b0384811691161480159061263457506001600160a01b03821660009081526021602052604090205460ff16155b801561265957506001600160a01b03831660009081526021602052604090205460ff16155b801561266f5750600854600160a01b900460ff16155b801561269457506001600160a01b03831660009081526024602052604090205460ff16155b156126eb57600b548111156126eb5760405162461bcd60e51b815260206004820152601960248201527f596f752061726520657863656564696e67206d617853656c6c000000000000006044820152606401610b09565b600080600080600060105411801561271c57506001600160a01b03871660009081526021602052604090205460ff16155b801561274157506001600160a01b03861660009081526021602052604090205460ff16155b801561275b5750600f54600e5461275891906137d2565b43105b600854909150600160a01b900460ff168061278e57506001600160a01b03871660009081526021602052604090205460ff165b806127b157506001600160a01b03861660009081526021602052604090205460ff165b806127e357506008546001600160a01b038881169116148015906127e357506008546001600160a01b03878116911614155b156127f15760009250612872565b6008546001600160a01b03878116911614801561280c575080155b1561283957601b54601a54601c5461282491906137d2565b61282e91906137d2565b935060019150612872565b806128665760185460175460195461285191906137d2565b61285b91906137d2565b935060009150612872565b80156128725760105493505b606461287e858761377c565b61288891906137b0565b9250816000036128af5782601f60008282546128a491906137d2565b909155506128cf9050565b816001036128cf5782602060008282546128c991906137d2565b90915550505b82156128e0576128e0873085612cd4565b600854600160a81b900460ff16801561290757506008546001600160a01b03888116911614155b80156129135750600083115b8015612921575060155460ff165b801561293e57506009543060009081526020819052604090205410155b1561294e5761294e601f5461296b565b612962878761295d86896137e5565b612cd4565b50505050505050565b600854600160a01b900460ff16611cf3576008805460ff60a01b1916600160a01b17905530600090815260208190526040812054601f83905590506129b082826137e5565b602081905550600080600080601d546000036129cf57600093506129ef565b601d54601954601f546129e2919061377c565b6129ec91906137b0565b93505b601e54600003612a025760009250612a22565b601e54601c54602054612a15919061377c565b612a1f91906137b0565b92505b6000612a2e84866137d2565b90506000612a3d6002836137b0565b9050476000612a4c838a6137e5565b90508015612a5d57612a5d81612da5565b6000612a6983476137e5565b905060008a60205483612a7c919061377c565b612a8691906137b0565b90506000612a9482846137e5565b9050600080600080601d54600003612aaf5760009b50612acc565b601d54601954612abf908761377c565b612ac991906137b0565b9b505b601e54600003612adf5760009c50612afc565b601e54601c54612aef908861377c565b612af991906137b0565b9c505b600060028d8f612b0c91906137d2565b612b1691906137b0565b90508015612cb357612b288b82612eff565b6000612b34828a6137e5565b90506000601f54602054612b4891906137d2565b905060008160205484612b5b919061377c565b612b6591906137b0565b90506000612b7382856137e5565b9050601e54600003612b8c576000985060009650612bdf565b601c54601e54612b9c91906137e5565b601a54612ba9908461377c565b612bb391906137b0565b601c54601e54919a50612bc5916137e5565b601b54612bd2908461377c565b612bdc91906137b0565b96505b601d54600003612bf6576000975060009550612c49565b601954601d54612c0691906137e5565b601754612c13908361377c565b612c1d91906137b0565b601954601d54919950612c2f916137e5565b601854612c3c908361377c565b612c4691906137b0565b95505b6000612c55898b6137d2565b90506000612c63888a6137d2565b90508115612c8657601554612c869061010090046001600160a01b031683612fb3565b8015612ca257601654612ca2906001600160a01b031682612fb3565b50506000601f819055602055505050505b50506008805460ff60a01b1916905550505050505050505050505050505050565b6001600160a01b038316612d385760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b09565b6001600160a01b038216612d9a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b09565b610b798383836130cc565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612dda57612dda61353e565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612e33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e579190613793565b81600181518110612e6a57612e6a61353e565b6001600160a01b039283166020918202929092010152600754612e909130911684612190565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac94790612ec9908590600090869030904290600401613898565b600060405180830381600087803b158015612ee357600080fd5b505af1158015612ef7573d6000803e3d6000fd5b505050505050565b600754612f179030906001600160a01b031684612190565b60075460065460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612f87573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612fac9190613909565b5050505050565b804710156130035760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610b09565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613050576040519150601f19603f3d011682016040523d82523d6000602084013e613055565b606091505b5050905080610b795760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610b09565b6001600160a01b038316600090815260208190526040902054818110156131445760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b09565b61314e82826137e5565b6001600160a01b0380861660009081526020819052604080822093909355908516815290812080548492906131849084906137d2565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516131d091815260200190565b60405180910390a350505050565b600060208083528351808285015260005b8181101561320b578581018301518582016040015282016131ef565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611cf357600080fd5b803561324c8161322c565b919050565b60006020828403121561326357600080fd5b813561130e8161322c565b6000806040838503121561328157600080fd5b823561328c8161322c565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b8015158114611cf357600080fd5b803561324c816132b0565b600080604083850312156132dc57600080fd5b823567ffffffffffffffff808211156132f457600080fd5b818501915085601f83011261330857600080fd5b813560208282111561331c5761331c61329a565b8160051b604051601f19603f830116810181811086821117156133415761334161329a565b60405292835281830193508481018201928984111561335f57600080fd5b948201945b838610156133845761337586613241565b85529482019493820193613364565b965061339390508782016132be565b9450505050509250929050565b6000602082840312156133b257600080fd5b813561130e816132b0565b6000806000606084860312156133d257600080fd5b83356133dd8161322c565b925060208401356133ed8161322c565b929592945050506040919091013590565b6000806040838503121561341157600080fd5b823561341c8161322c565b9150602083013561342c816132b0565b809150509250929050565b60008060006060848603121561344c57600080fd5b505081359360208301359350604090920135919050565b60006020828403121561347557600080fd5b5035919050565b6000806040838503121561348f57600080fd5b823561349a8161322c565b9150602083013561342c8161322c565b600080604083850312156134bd57600080fd5b82359150602083013561342c8161322c565b600181811c908216806134e357607f821691505b60208210810361350357634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161357c5761357c613554565b5060010190565b601f821115610b7957600081815260208120601f850160051c810160208610156135aa5750805b601f850160051c820191505b81811015612ef7578281556001016135b6565b815167ffffffffffffffff8111156135e3576135e361329a565b6135f7816135f184546134cf565b84613583565b602080601f83116001811461362c57600084156136145750858301515b600019600386901b1c1916600185901b178555612ef7565b600085815260208120601f198616915b8281101561365b5788860151825594840194600190910190840161363c565b50858210156136795787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b808511156136c45781600019048211156136aa576136aa613554565b808516156136b757918102915b93841c939080029061368e565b509250929050565b6000826136db57506001610ad9565b816136e857506000610ad9565b81600181146136fe576002811461370857613724565b6001915050610ad9565b60ff84111561371957613719613554565b50506001821b610ad9565b5060208310610133831016604e8410600b8410161715613747575081810a610ad9565b6137518383613689565b806000190482111561376557613765613554565b029392505050565b600061130e60ff8416836136cc565b8082028115828204841417610ad957610ad9613554565b6000602082840312156137a557600080fd5b815161130e8161322c565b6000826137cd57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610ad957610ad9613554565b81810381811115610ad957610ad9613554565b60208082526057908201527f596f75206d7573742070726f76696465206120646966666572656e742061646460408201527f72657373206f74686572207468616e207468652063757272656e742076616c7560608201527f6520696e206f7264657220746f20757064617465206974000000000000000000608082015260a00190565b60006020828403121561388d57600080fd5b815161130e816132b0565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156138e85784516001600160a01b0316835293830193918301916001016138c3565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561391e57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212206f67ca51857183b07292f15fee49fe6df3fcc6502783e35ca02d28f225374e1764736f6c63430008110033
0x6008805463ffffffff60a01b1916600160b81b1790556002600f81905560636010556015805474aedcfab826dd004ca66e3148fea76686cb3dfeb5016001600160a81b0319909116179055601680546001600160a01b03191673d2a960ce515c73573ca1e384f83d6121ea7db7a817905560046080819052600160a081905260c083905260178290556018819055601983905561014060405260e0829052610100819052610120839052601a91909155601b55601c556007601d819055601e556000601f8190556020553480156100d557600080fd5b50600680546001600160a01b0319163317905561396d806100f76000396000f3fe60806040526004361061031e5760003560e01c806385141a77116101ab578063c5d32bb2116100f7578063f2c4220e11610095578063f8b45b051161006f578063f8b45b05146109bf578063fac8e835146109d5578063fbe6324e146109f5578063ffaee61414610a1657600080fd5b8063f2c4220e14610969578063f2fde38b1461097f578063f4d86d581461099f57600080fd5b8063e02ce1cf116100d1578063e02ce1cf146108d0578063e0f3ccf5146108f0578063e21b98911461092a578063e4748b9e1461094a57600080fd5b8063c5d32bb21461083a578063cbb1904e1461086a578063dd62ed3e1461088a57600080fd5b8063aacebbe311610164578063bbc0c7421161013e578063bbc0c742146107b9578063c0d78655146107da578063c17b5b8c146107fa578063c423b86b1461081a57600080fd5b8063aacebbe314610753578063b8eb354614610773578063baf1ce2e1461078957600080fd5b806385141a77146106b2578063860aefcf146106c85780638a8c523c146106e957806395d89b41146106fe578063a457c2d714610713578063a9059cbb1461073357600080fd5b8063313ce5671161026a578063703a490211610223578063715018a6116101fd578063715018a614610644578063728a88cd1461065957806375f0a8741461066f5780638095d5641461069257600080fd5b8063703a4902146105d857806370a08231146105f857806370db69d61461062e57600080fd5b8063313ce56714610506578063355496ca1461052857806336544805146105485780633950935114610578578063448ebdff1461059857806349bd5a5e146105b857600080fd5b80631694505e116102d7578063193d6e89116102b1578063193d6e89146104865780631c8c22fc146104a6578063214013ca146104c657806323b872dd146104e657600080fd5b80631694505e1461041b57806318160ddd14610453578063185870f91461046857600080fd5b806306fdde031461032a57806307c4226c14610355578063095ea7b3146103955780630e375a5c146103b55780631340538f146103d75780631675d802146103f757600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061033f610a36565b60405161034c91906131de565b60405180910390f35b34801561036157600080fd5b50610385610370366004613251565b60246020526000908152604090205460ff1681565b604051901515815260200161034c565b3480156103a157600080fd5b506103856103b036600461326e565b610ac8565b3480156103c157600080fd5b506103d56103d03660046132c9565b610adf565b005b3480156103e357600080fd5b506103d56103f23660046133a0565b610b7e565b34801561040357600080fd5b5061040d60095481565b60405190815260200161034c565b34801561042757600080fd5b5060075461043b906001600160a01b031681565b6040516001600160a01b03909116815260200161034c565b34801561045f57600080fd5b5060115461040d565b34801561047457600080fd5b506016546001600160a01b031661043b565b34801561049257600080fd5b506103d56104a13660046133bd565b610c6d565b3480156104b257600080fd5b506103d56104c13660046133fe565b610ca2565b3480156104d257600080fd5b506103d56104e1366004613251565b610dc1565b3480156104f257600080fd5b506103856105013660046133bd565b611236565b34801561051257600080fd5b5060125460405160ff909116815260200161034c565b34801561053457600080fd5b506103d56105433660046133fe565b611315565b34801561055457600080fd5b50610385610563366004613251565b60226020526000908152604090205460ff1681565b34801561058457600080fd5b5061038561059336600461326e565b611437565b3480156105a457600080fd5b506103d56105b33660046133a0565b61146e565b3480156105c457600080fd5b5060085461043b906001600160a01b031681565b3480156105e457600080fd5b506103d56105f3366004613251565b6114ab565b34801561060457600080fd5b5061040d610613366004613251565b6001600160a01b031660009081526020819052604090205490565b34801561063a57600080fd5b5061040d600a5481565b34801561065057600080fd5b506103d5611524565b34801561066557600080fd5b5061040d600d5481565b34801561067b57600080fd5b5060155461010090046001600160a01b031661043b565b34801561069e57600080fd5b506103d56106ad366004613437565b611560565b3480156106be57600080fd5b5061043b61dead81565b3480156106d457600080fd5b5060085461038590600160b81b900460ff1681565b3480156106f557600080fd5b506103d561162e565b34801561070a57600080fd5b5061033f611673565b34801561071f57600080fd5b5061038561072e36600461326e565b611682565b34801561073f57600080fd5b5061038561074e36600461326e565b61171d565b34801561075f57600080fd5b506103d561076e366004613251565b61172a565b34801561077f57600080fd5b5061040d600b5481565b34801561079557600080fd5b506103856107a4366004613251565b60236020526000908152604090205460ff1681565b3480156107c557600080fd5b5060085461038590600160b01b900460ff1681565b3480156107e657600080fd5b5061043b6107f5366004613251565b6117ae565b34801561080657600080fd5b506103d5610815366004613437565b611bc6565b34801561082657600080fd5b506103d5610835366004613251565b611c3c565b34801561084657600080fd5b50610385610855366004613251565b60216020526000908152604090205460ff1681565b34801561087657600080fd5b506103d5610885366004613463565b611cc0565b34801561089657600080fd5b5061040d6108a536600461347c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156108dc57600080fd5b506103d56108eb3660046134aa565b611cf6565b3480156108fc57600080fd5b50601a54601b54601c5461090f92919083565b6040805193845260208401929092529082015260600161034c565b34801561093657600080fd5b506103d56109453660046133fe565b611d56565b34801561095657600080fd5b5060175460185460195461090f92919083565b34801561097557600080fd5b5061040d600e5481565b34801561098b57600080fd5b506103d561099a366004613251565b611e77565b3480156109ab57600080fd5b506103d56109ba3660046133a0565b611f28565b3480156109cb57600080fd5b5061040d600c5481565b3480156109e157600080fd5b506103d56109f0366004613463565b611f70565b348015610a0157600080fd5b5060085461038590600160a81b900460ff1681565b348015610a2257600080fd5b506103d5610a313660046133fe565b61206b565b606060138054610a45906134cf565b80601f0160208091040260200160405190810160405280929190818152602001828054610a71906134cf565b8015610abe5780601f10610a9357610100808354040283529160200191610abe565b820191906000526020600020905b815481529060010190602001808311610aa157829003601f168201915b5050505050905090565b6000610ad5338484612190565b5060015b92915050565b6006546001600160a01b03163314610b125760405162461bcd60e51b8152600401610b0990613509565b60405180910390fd5b60005b8251811015610b79578160216000858481518110610b3557610b3561353e565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610b718161356a565b915050610b15565b505050565b6006546001600160a01b03163314610ba85760405162461bcd60e51b8152600401610b0990613509565b801515600860159054906101000a900460ff16151503610c4f5760405162461bcd60e51b815260206004820152605660248201527f596f75206d7573742070726f76696465206120646966666572656e742073746160448201527f747573206f74686572207468616e207468652063757272656e742076616c7565606482015275081a5b881bdc99195c881d1bc81d5c19185d19481a5d60521b608482015260a401610b09565b60088054911515600160a81b0260ff60a81b19909216919091179055565b6006546001600160a01b03163314610c975760405162461bcd60e51b8152600401610b0990613509565b610b798383836122ac565b6006546001600160a01b03163314610ccc5760405162461bcd60e51b8152600401610b0990613509565b6001600160a01b03821660009081526022602052604090205481151560ff909116151503610d965760405162461bcd60e51b815260206004820152606560248201527f596f75206d7573742070726f76696465206120646966666572656e74206d617860448201527f20627579206c696d6974206f74686572207468616e207468652063757272656e60648201527f74206d617820627579206c696d697420696e206f7264657220746f20757064616084820152641d19481a5d60da1b60a482015260c401610b09565b6001600160a01b03919091166000908152602260205260409020805460ff1916911515919091179055565b6006546001600160a01b03163314610deb5760405162461bcd60e51b8152600401610b0990613509565b600d5415610df857600080fd5b60408051808201909152600d81526c2337b7ba3130b6361021b7b4b760991b6020820152601390610e2990826135c9565b506040805180820190915260048152631193d3d560e21b6020820152601490610e5290826135c9565b506012805460ff191681178155610e6a90600a61376d565b610e79906402540be40061377c565b60118190555060008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ec4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee89190613793565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190613793565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610fa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fca9190613793565b600780546001600160a01b038086166001600160a01b03199283161790925560088054928416929091169190911790559050606461100760115490565b61101290600261377c565b61101c91906137b0565b600a556103e861102b60115490565b61103591906137b0565b61104090600261377c565b600955606461104e60115490565b61105990600261377c565b61106391906137b0565b600c55606461107160115490565b61107c90600261377c565b61108691906137b0565b600b5560115433600090815260208190526040812080549091906110ab9084906137d2565b909155505043600d553360008181526021602081815260408084208054600160ff1991821681179092556022808552838720805483168417905560248086528488208054841685179055602380875285892080548516861790553089528787528589208054851686179055601580546001600160a01b036101009182900481168c52888c208054881689179055825482900481168c52858a52888c208054881689179055825482900481168c52848a52888c20805488168917905591540481168a52818852868a2080548616871790556016805482168b52898952878b208054871688179055805482168b52938852868a208054861687179055835481168a52918752858920805485168617905591541687528452828620805482168317905561dead86529383527fda90364631e387f138e7e413f1de75a8ecb4767574209ddf012729113dea45c080549094161790925560115491519182527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a3505050565b6000611243848484612371565b6001600160a01b03848116600090815260016020908152604080832033808552925290912054600654909216148061127b5750828110155b6112d85760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610b09565b6006546001600160a01b031633036112f457600191505061130e565b611308853361130386856137e5565b612190565b60019150505b9392505050565b6006546001600160a01b0316331461133f5760405162461bcd60e51b8152600401610b0990613509565b6001600160a01b03821660009081526021602052604090205481151560ff90911615150361140c5760405162461bcd60e51b815260206004820152606860248201527f596f75206d7573742070726f76696465206120646966666572656e742065786560448201527f6d70742061646472657373206f7220737461747573206f74686572207468616e60648201527f207468652063757272656e742076616c756520696e206f7264657220746f20756084820152671c19185d19481a5d60c21b60a482015260c401610b09565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610ad59185906113039086906137d2565b6006546001600160a01b031633146114985760405162461bcd60e51b8152600401610b0990613509565b6015805460ff1916911515919091179055565b6006546001600160a01b031633146114d55760405162461bcd60e51b8152600401610b0990613509565b6016546001600160a01b038083169116036115025760405162461bcd60e51b8152600401610b09906137f8565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b0316331461154e5760405162461bcd60e51b8152600401610b0990613509565b600680546001600160a01b0319169055565b6006546001600160a01b0316331461158a5760405162461bcd60e51b8152600401610b0990613509565b604080516060810182528481526020810184905201819052601783905560188290556019819055806115bc83856137d2565b6115c691906137d2565b601d55601e826115d683866137d2565b6115e091906137d2565b1115610b795760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420333025206f72206c6573730000006044820152606401610b09565b6006546001600160a01b031633146116585760405162461bcd60e51b8152600401610b0990613509565b6008805461ffff60a81b191661010160a81b17905543600e55565b606060148054610a45906134cf565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156117045760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b09565b611713338561130386856137e5565b5060019392505050565b6000610ad5338484612371565b6006546001600160a01b031633146117545760405162461bcd60e51b8152600401610b0990613509565b6015546001600160a01b0380831661010090920416036117865760405162461bcd60e51b8152600401610b09906137f8565b601580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6006546000906001600160a01b031633146117db5760405162461bcd60e51b8152600401610b0990613509565b6001600160a01b0382166118315760405162461bcd60e51b815260206004820152601d60248201527f6e6577526f7574657220616464726573732063616e6e6f7420626520300000006044820152606401610b09565b6007546001600160a01b038084169116036118f45760405162461bcd60e51b815260206004820152607160248201527f596f75206d7573742070726f76696465206120646966666572656e7420756e6960448201527f737761705632526f75746572206f74686572207468616e20746865206375727260648201527f656e7420756e69737761705632526f75746572206164647265737320696e206f6084820152701c99195c881d1bc81d5c19185d19481a5d607a1b60a482015260c401610b09565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611937573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195b9190613793565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119cc9190613793565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611a17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3b9190613793565b91506001600160a01b038216611b9257806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aad9190613793565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611afa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1e9190613793565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611b6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8f9190613793565b91505b600880546001600160a01b038085166001600160a01b03199283161790925560078054939092169216919091179055919050565b6006546001600160a01b03163314611bf05760405162461bcd60e51b8152600401610b0990613509565b604080516060810182528481526020810184905201819052601a839055601b829055601c81905581611c2282856137d2565b611c2c91906137d2565b601e908155826115d683866137d2565b6006546001600160a01b03163314611c665760405162461bcd60e51b8152600401610b0990613509565b6001600160a01b031660009081526021602090815260408083208054600160ff1991821681179092556022845282852080548216831790556024845282852080548216831790556023909352922080549091169091179055565b6006546001600160a01b03163314611cea5760405162461bcd60e51b8152600401610b0990613509565b611cf38161296b565b50565b6006546001600160a01b03163314611d205760405162461bcd60e51b8152600401610b0990613509565b6040516001600160a01b0382169083156108fc029084906000818181858888f19350505050158015610b79573d6000803e3d6000fd5b6006546001600160a01b03163314611d805760405162461bcd60e51b8152600401610b0990613509565b6001600160a01b03821660009081526024602052604090205481151560ff909116151503611e4c5760405162461bcd60e51b815260206004820152606760248201527f596f75206d7573742070726f76696465206120646966666572656e74206d617860448201527f2073656c6c206c696d6974206f74686572207468616e2074686520637572726560648201527f6e74206d61782073656c6c206c696d697420696e206f7264657220746f20757060848201526619185d19481a5d60ca1b60a482015260c401610b09565b6001600160a01b03919091166000908152602460205260409020805460ff1916911515919091179055565b6006546001600160a01b03163314611ea15760405162461bcd60e51b8152600401610b0990613509565b6001600160a01b038116611f065760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b09565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b03163314611f525760405162461bcd60e51b8152600401610b0990613509565b60088054911515600160b81b0260ff60b81b19909216919091179055565b6006546001600160a01b03163314611f9a5760405162461bcd60e51b8152600401610b0990613509565b60125460ff16611fab90600a61376d565b611fb5908261377c565b6009540361204a5760405162461bcd60e51b815260206004820152605660248201527f596f75206d7573742070726f76696465206120646966666572656e7420616d6f60448201527f756e74206f74686572207468616e207468652063757272656e742076616c7565606482015275081a5b881bdc99195c881d1bc81d5c19185d19481a5d60521b608482015260a401610b09565b60125460ff1661205b90600a61376d565b612065908261377c565b60095550565b6006546001600160a01b031633146120955760405162461bcd60e51b8152600401610b0990613509565b6001600160a01b03821660009081526023602052604090205481151560ff9091161515036121655760405162461bcd60e51b815260206004820152606b60248201527f596f75206d7573742070726f76696465206120646966666572656e74206d617860448201527f2077616c6c6574206c696d6974206f74686572207468616e207468652063757260648201527f72656e74206d61782077616c6c6574206c696d697420696e206f72646572207460848201526a1bc81d5c19185d19481a5d60aa1b60a482015260c401610b09565b6001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b6001600160a01b0383166121f25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b09565b6001600160a01b0382166122535760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b09565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101611229565b60405163a9059cbb60e01b81526001600160a01b038381166004830152602482018390526000919085169063a9059cbb906044016020604051808303816000875af11580156122ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612323919061387b565b90508061236b5760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b7103a3930b739b332b9103330b4b632b21760511b6044820152606401610b09565b50505050565b600081116123d35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b09565b600854600160b81b900460ff16156126eb576001600160a01b03831660009081526021602052604090205460ff1615801561242757506001600160a01b03821660009081526021602052604090205460ff16155b1561247e57600854600160b01b900460ff1661247e5760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b6044820152606401610b09565b6008546001600160a01b0384811691161480156124b457506001600160a01b03821660009081526021602052604090205460ff16155b80156124ca5750600854600160a01b900460ff16155b80156124ef57506001600160a01b03821660009081526022602052604090205460ff16155b1561254657600a548111156125465760405162461bcd60e51b815260206004820152601860248201527f596f752061726520657863656564696e67206d617842757900000000000000006044820152606401610b09565b6008546001600160a01b0383811691161480159061257d57506001600160a01b03821660009081526023602052604090205460ff16155b156125fd57600c54816125a5846001600160a01b031660009081526020819052604090205490565b6125af91906137d2565b11156125fd5760405162461bcd60e51b815260206004820152601b60248201527f596f752061726520657863656564696e67206d617857616c6c657400000000006044820152606401610b09565b6008546001600160a01b0384811691161480159061263457506001600160a01b03821660009081526021602052604090205460ff16155b801561265957506001600160a01b03831660009081526021602052604090205460ff16155b801561266f5750600854600160a01b900460ff16155b801561269457506001600160a01b03831660009081526024602052604090205460ff16155b156126eb57600b548111156126eb5760405162461bcd60e51b815260206004820152601960248201527f596f752061726520657863656564696e67206d617853656c6c000000000000006044820152606401610b09565b600080600080600060105411801561271c57506001600160a01b03871660009081526021602052604090205460ff16155b801561274157506001600160a01b03861660009081526021602052604090205460ff16155b801561275b5750600f54600e5461275891906137d2565b43105b600854909150600160a01b900460ff168061278e57506001600160a01b03871660009081526021602052604090205460ff165b806127b157506001600160a01b03861660009081526021602052604090205460ff165b806127e357506008546001600160a01b038881169116148015906127e357506008546001600160a01b03878116911614155b156127f15760009250612872565b6008546001600160a01b03878116911614801561280c575080155b1561283957601b54601a54601c5461282491906137d2565b61282e91906137d2565b935060019150612872565b806128665760185460175460195461285191906137d2565b61285b91906137d2565b935060009150612872565b80156128725760105493505b606461287e858761377c565b61288891906137b0565b9250816000036128af5782601f60008282546128a491906137d2565b909155506128cf9050565b816001036128cf5782602060008282546128c991906137d2565b90915550505b82156128e0576128e0873085612cd4565b600854600160a81b900460ff16801561290757506008546001600160a01b03888116911614155b80156129135750600083115b8015612921575060155460ff165b801561293e57506009543060009081526020819052604090205410155b1561294e5761294e601f5461296b565b612962878761295d86896137e5565b612cd4565b50505050505050565b600854600160a01b900460ff16611cf3576008805460ff60a01b1916600160a01b17905530600090815260208190526040812054601f83905590506129b082826137e5565b602081905550600080600080601d546000036129cf57600093506129ef565b601d54601954601f546129e2919061377c565b6129ec91906137b0565b93505b601e54600003612a025760009250612a22565b601e54601c54602054612a15919061377c565b612a1f91906137b0565b92505b6000612a2e84866137d2565b90506000612a3d6002836137b0565b9050476000612a4c838a6137e5565b90508015612a5d57612a5d81612da5565b6000612a6983476137e5565b905060008a60205483612a7c919061377c565b612a8691906137b0565b90506000612a9482846137e5565b9050600080600080601d54600003612aaf5760009b50612acc565b601d54601954612abf908761377c565b612ac991906137b0565b9b505b601e54600003612adf5760009c50612afc565b601e54601c54612aef908861377c565b612af991906137b0565b9c505b600060028d8f612b0c91906137d2565b612b1691906137b0565b90508015612cb357612b288b82612eff565b6000612b34828a6137e5565b90506000601f54602054612b4891906137d2565b905060008160205484612b5b919061377c565b612b6591906137b0565b90506000612b7382856137e5565b9050601e54600003612b8c576000985060009650612bdf565b601c54601e54612b9c91906137e5565b601a54612ba9908461377c565b612bb391906137b0565b601c54601e54919a50612bc5916137e5565b601b54612bd2908461377c565b612bdc91906137b0565b96505b601d54600003612bf6576000975060009550612c49565b601954601d54612c0691906137e5565b601754612c13908361377c565b612c1d91906137b0565b601954601d54919950612c2f916137e5565b601854612c3c908361377c565b612c4691906137b0565b95505b6000612c55898b6137d2565b90506000612c63888a6137d2565b90508115612c8657601554612c869061010090046001600160a01b031683612fb3565b8015612ca257601654612ca2906001600160a01b031682612fb3565b50506000601f819055602055505050505b50506008805460ff60a01b1916905550505050505050505050505050505050565b6001600160a01b038316612d385760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b09565b6001600160a01b038216612d9a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b09565b610b798383836130cc565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612dda57612dda61353e565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612e33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e579190613793565b81600181518110612e6a57612e6a61353e565b6001600160a01b039283166020918202929092010152600754612e909130911684612190565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac94790612ec9908590600090869030904290600401613898565b600060405180830381600087803b158015612ee357600080fd5b505af1158015612ef7573d6000803e3d6000fd5b505050505050565b600754612f179030906001600160a01b031684612190565b60075460065460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612f87573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612fac9190613909565b5050505050565b804710156130035760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610b09565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613050576040519150601f19603f3d011682016040523d82523d6000602084013e613055565b606091505b5050905080610b795760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610b09565b6001600160a01b038316600090815260208190526040902054818110156131445760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b09565b61314e82826137e5565b6001600160a01b0380861660009081526020819052604080822093909355908516815290812080548492906131849084906137d2565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516131d091815260200190565b60405180910390a350505050565b600060208083528351808285015260005b8181101561320b578581018301518582016040015282016131ef565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611cf357600080fd5b803561324c8161322c565b919050565b60006020828403121561326357600080fd5b813561130e8161322c565b6000806040838503121561328157600080fd5b823561328c8161322c565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b8015158114611cf357600080fd5b803561324c816132b0565b600080604083850312156132dc57600080fd5b823567ffffffffffffffff808211156132f457600080fd5b818501915085601f83011261330857600080fd5b813560208282111561331c5761331c61329a565b8160051b604051601f19603f830116810181811086821117156133415761334161329a565b60405292835281830193508481018201928984111561335f57600080fd5b948201945b838610156133845761337586613241565b85529482019493820193613364565b965061339390508782016132be565b9450505050509250929050565b6000602082840312156133b257600080fd5b813561130e816132b0565b6000806000606084860312156133d257600080fd5b83356133dd8161322c565b925060208401356133ed8161322c565b929592945050506040919091013590565b6000806040838503121561341157600080fd5b823561341c8161322c565b9150602083013561342c816132b0565b809150509250929050565b60008060006060848603121561344c57600080fd5b505081359360208301359350604090920135919050565b60006020828403121561347557600080fd5b5035919050565b6000806040838503121561348f57600080fd5b823561349a8161322c565b9150602083013561342c8161322c565b600080604083850312156134bd57600080fd5b82359150602083013561342c8161322c565b600181811c908216806134e357607f821691505b60208210810361350357634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161357c5761357c613554565b5060010190565b601f821115610b7957600081815260208120601f850160051c810160208610156135aa5750805b601f850160051c820191505b81811015612ef7578281556001016135b6565b815167ffffffffffffffff8111156135e3576135e361329a565b6135f7816135f184546134cf565b84613583565b602080601f83116001811461362c57600084156136145750858301515b600019600386901b1c1916600185901b178555612ef7565b600085815260208120601f198616915b8281101561365b5788860151825594840194600190910190840161363c565b50858210156136795787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b808511156136c45781600019048211156136aa576136aa613554565b808516156136b757918102915b93841c939080029061368e565b509250929050565b6000826136db57506001610ad9565b816136e857506000610ad9565b81600181146136fe576002811461370857613724565b6001915050610ad9565b60ff84111561371957613719613554565b50506001821b610ad9565b5060208310610133831016604e8410600b8410161715613747575081810a610ad9565b6137518383613689565b806000190482111561376557613765613554565b029392505050565b600061130e60ff8416836136cc565b8082028115828204841417610ad957610ad9613554565b6000602082840312156137a557600080fd5b815161130e8161322c565b6000826137cd57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610ad957610ad9613554565b81810381811115610ad957610ad9613554565b60208082526057908201527f596f75206d7573742070726f76696465206120646966666572656e742061646460408201527f72657373206f74686572207468616e207468652063757272656e742076616c7560608201527f6520696e206f7264657220746f20757064617465206974000000000000000000608082015260a00190565b60006020828403121561388d57600080fd5b815161130e816132b0565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156138e85784516001600160a01b0316835293830193918301916001016138c3565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561391e57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212206f67ca51857183b07292f15fee49fe6df3fcc6502783e35ca02d28f225374e1764736f6c63430008110033