0x60806040526004361061023f5760003560e01c8063549593631161012e578063a9059cbb116100ab578063dd62ed3e1161006f578063dd62ed3e146106d1578063ea2f0b3714610717578063f2fde38b14610737578063f429389014610757578063fffa1dd91461076c57600080fd5b8063a9059cbb14610639578063ada46d0a14610659578063af01f2b21461067b578063b609995e14610691578063d543dbeb146106b157600080fd5b80638421b507116100f25780638421b507146105b05780638c0b5e22146105d05780638da5cb5b146105e657806395d89b4114610604578063a457c2d71461061957600080fd5b806354959363146105195780635c7b22581461052f5780636827e7641461054f57806370a0823114610565578063715018a61461059b57600080fd5b806326b6308d116101bc578063437823ec11610180578063437823ec1461046b57806348a464731461048b57806349bd5a5e146104ab57806351bc3c85146104cb5780635342acb4146104e057600080fd5b806326b6308d146103d95780632bb14e1d146103f9578063313ce5671461040f578063395093511461042b57806341cb87fc1461044b57600080fd5b8063111e037611610203578063111e037614610321578063113201fa146103415780631694505e1461036257806318160ddd1461039a57806323b872dd146103b957600080fd5b806306fdde031461024b578063095ea7b3146102765780630a1f8ea8146102a65780630b78f9c0146102c85780630e832273146102e857600080fd5b3661024657005b600080fd5b34801561025757600080fd5b50610260610781565b60405161026d919061228d565b60405180910390f35b34801561028257600080fd5b506102966102913660046121b3565b610813565b604051901515815260200161026d565b3480156102b257600080fd5b506102c66102c1366004612103565b61082a565b005b3480156102d457600080fd5b506102c66102e3366004612216565b6108b2565b3480156102f457600080fd5b50610296610303366004612103565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561032d57600080fd5b506102c661033c366004612103565b61098c565b34801561034d57600080fd5b5060165461029690600160a81b900460ff1681565b34801561036e57600080fd5b50601554610382906001600160a01b031681565b6040516001600160a01b03909116815260200161026d565b3480156103a657600080fd5b506002545b60405190815260200161026d565b3480156103c557600080fd5b506102966103d4366004612173565b610ac4565b3480156103e557600080fd5b506102c66103f43660046121de565b610b2d565b34801561040557600080fd5b506103ab600b5481565b34801561041b57600080fd5b506040516009815260200161026d565b34801561043757600080fd5b506102966104463660046121b3565b610ba4565b34801561045757600080fd5b506102c6610466366004612103565b610bda565b34801561047757600080fd5b506102c6610486366004612103565b610dd8565b34801561049757600080fd5b506102c66104a63660046121fe565b610e56565b3480156104b757600080fd5b50601654610382906001600160a01b031681565b3480156104d757600080fd5b506102c6610ec1565b3480156104ec57600080fd5b506102966104fb366004612103565b6001600160a01b031660009081526013602052604090205460ff1690565b34801561052557600080fd5b506103ab600d5481565b34801561053b57600080fd5b506102c661054a366004612103565b610f07565b34801561055b57600080fd5b506103ab60095481565b34801561057157600080fd5b506103ab610580366004612103565b6001600160a01b031660009081526020819052604090205490565b3480156105a757600080fd5b506102c6610f7f565b3480156105bc57600080fd5b506102c66105cb3660046121fe565b610ff3565b3480156105dc57600080fd5b506103ab60085481565b3480156105f257600080fd5b506005546001600160a01b0316610382565b34801561061057600080fd5b506102606110a3565b34801561062557600080fd5b506102966106343660046121b3565b6110b2565b34801561064557600080fd5b506102966106543660046121b3565b611101565b34801561066557600080fd5b5061066e61110e565b60405161026d919061227a565b34801561068757600080fd5b506103ab60115481565b34801561069d57600080fd5b506102c66106ac366004612103565b61116f565b3480156106bd57600080fd5b506102c66106cc3660046121fe565b6112da565b3480156106dd57600080fd5b506103ab6106ec36600461213b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561072357600080fd5b506102c6610732366004612103565b6113aa565b34801561074357600080fd5b506102c6610752366004612103565b611425565b34801561076357600080fd5b506102c6611510565b34801561077857600080fd5b506103ab611552565b606060038054610790906123bf565b80601f01602080910402602001604051908101604052809291908181526020018280546107bc906123bf565b80156108095780601f106107de57610100808354040283529160200191610809565b820191906000526020600020905b8154815290600101906020018083116107ec57829003601f168201915b5050505050905090565b6000610820338484611695565b5060015b92915050565b6005546001600160a01b0316331461085d5760405162461bcd60e51b8152600401610854906122e0565b60405180910390fd5b601080546001600160a01b0319166001600160a01b0383169081179091556040519081527f31bb1993faff4f8409d7baad771f861e093ef4ce2c92c6e0cb10b82d1c7324cb906020015b60405180910390a150565b6005546001600160a01b031633146108dc5760405162461bcd60e51b8152600401610854906122e0565b600a82111580156108ee5750600a8111155b6109445760405162461bcd60e51b815260206004820152602160248201527f4665657320657863656564206d6178696d756d20616c6c6f7765642076616c756044820152606560f81b6064820152608401610854565b6009829055600b81905560408051838152602081018390527f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd06891015b60405180910390a15050565b6005546001600160a01b031633146109b65760405162461bcd60e51b8152600401610854906122e0565b6001600160a01b03811660009081526007602052604090205460ff1615610a305760405162461bcd60e51b815260206004820152602860248201527f4164647265737320697320616c7265616479206578636c756465642066726f6d604482015267207265776172647360c01b6064820152608401610854565b6006805460018082019092557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155600081815260076020908152604091829020805460ff1916909417909355519081527f9dc0c5d829ba95d4a3aa3e40791b3e0ff125f876788532b9f7f6eb543d8dfbd691016108a7565b6000610ad18484846117b9565b610b238433610b1e8560405180606001604052806028815260200161243b602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611a8b565b611695565b5060019392505050565b6005546001600160a01b03163314610b575760405162461bcd60e51b8152600401610854906122e0565b60168054821515600160a81b0260ff60a81b199091161790556040517fd9fca2a469120637ae54e43ab68dfdcd9354db52d615dea3d3a66a085e6f41b9906108a790831515815260200190565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610820918590610b1e9086611636565b6005546001600160a01b03163314610c045760405162461bcd60e51b8152600401610854906122e0565b6000819050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610c4257600080fd5b505afa158015610c56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7a919061211f565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610cc257600080fd5b505afa158015610cd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfa919061211f565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610d4257600080fd5b505af1158015610d56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7a919061211f565b601680546001600160a01b03199081166001600160a01b03938416179091556015805490911683831617905560405190831681527f7aed1d3e8155a07ccf395e44ea3109a0e2d6c9b29bbbe9f142d9790596f4dc8090602001610980565b6005546001600160a01b03163314610e025760405162461bcd60e51b8152600401610854906122e0565b6001600160a01b038116600081815260136020908152604091829020805460ff1916600117905590519182527f57a00f76b5f242fb1e04b0b514a6974665a5b07bce45e39f36dabff4a042d93691016108a7565b6005546001600160a01b03163314610e805760405162461bcd60e51b8152600401610854906122e0565b610e8e81633b9aca00612389565b6017556040518181527f5948780118f41f7c4577ae4619d5cbd064057bd8562d9f7b7e60324053375c00906020016108a7565b6005546001600160a01b03163314610eeb5760405162461bcd60e51b8152600401610854906122e0565b30600090815260208190526040902054610f0481611ac5565b50565b6005546001600160a01b03163314610f315760405162461bcd60e51b8152600401610854906122e0565b601280546001600160a01b0319166001600160a01b0383169081179091556040519081527f535be0bbc71c839ded01277ab57f29f2e810c1ff0255bb938d7cb8e96ac8ca1a906020016108a7565b6005546001600160a01b03163314610fa95760405162461bcd60e51b8152600401610854906122e0565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b0316331461101d5760405162461bcd60e51b8152600401610854906122e0565b601981111561106e5760405162461bcd60e51b815260206004820152601e60248201527f4d6178696d756d206c61756e63682073656c6c206665652069732032352500006044820152606401610854565b600d8190556040518181527fc799be5eb19a1a6d6ba7368d21e2bc367c8a335e4a07cd3d954482e6f714d3c5906020016108a7565b606060048054610790906123bf565b60006108203384610b1e85604051806060016040528060258152602001612463602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611a8b565b60006108203384846117b9565b6060600680548060200260200160405190810160405280929190818152602001828054801561080957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611148575050505050905090565b6005546001600160a01b031633146111995760405162461bcd60e51b8152600401610854906122e0565b6001600160a01b03811660009081526007602052604090205460ff1661120d5760405162461bcd60e51b8152602060048201526024808201527f41646472657373206973206e6f74206578636c756465642066726f6d207265776044820152636172647360e01b6064820152608401610854565b60005b6006548110156112a057816001600160a01b03166006828154811061124557634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316141561128e576001600160a01b0382166000908152600760205260409020805460ff1916905561128981611c4a565b6112a0565b80611298816123f4565b915050611210565b506040516001600160a01b03821681527f87434094d24a90fbd9a8ffcf2be9818d237c06a12d126296bc1ea7d589594334906020016108a7565b6005546001600160a01b031633146113045760405162461bcd60e51b8152600401610854906122e0565b60058110156113555760405162461bcd60e51b815260206004820152601b60248201527f4d61782054582073686f756c642062652061626f766520302e352500000000006044820152606401610854565b6113756103e861136f69152d02c7e14af68000008461156e565b906115f4565b60088190556040519081527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf906020016108a7565b6005546001600160a01b031633146113d45760405162461bcd60e51b8152600401610854906122e0565b6001600160a01b038116600081815260136020908152604091829020805460ff1916905590519182527f346f6c42af1ce4b7d7951f3fa40a2fb1e78c80ab0f3d76fb4f9fec269d568f0d91016108a7565b6005546001600160a01b0316331461144f5760405162461bcd60e51b8152600401610854906122e0565b6001600160a01b0381166114b45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610854565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461153a5760405162461bcd60e51b8152600401610854906122e0565b6010544790610f04906001600160a01b031682611d80565b600061155c611dc2565b60025461156991906123a8565b905090565b60008261157d57506000610824565b60006115898385612389565b9050826115968583612369565b146115ed5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610854565b9392505050565b60006115ed83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e3d565b6000806116438385612351565b9050838110156115ed5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610854565b6001600160a01b0383166116f75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610854565b6001600160a01b0382166117585760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610854565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831660009081526014602052604090205460ff161580156117fb57506001600160a01b03821660009081526014602052604090205460ff16155b15611862576008548111156118625760405162461bcd60e51b815260206004820152602760248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152661e105b5bdd5b9d60ca1b6064820152608401610854565b600954601154421180159061188457506016546001600160a01b038481169116145b1561189c57600d5460095461189891611636565b6009555b30600090815260208190526040902054601754811080159081906118ca5750601654600160a01b900460ff16155b80156118e457506016546001600160a01b03878116911614155b80156118f95750601654600160a81b900460ff165b156119075761190782611e6b565b6001600160a01b03861660009081526013602052604090205460ff168061194657506001600160a01b03851660009081526013602052604090205460ff165b156119535761195361200f565b60008061195f8661203c565b6001600160a01b038a1660009081526020819052604090205491935091506119879087612063565b6001600160a01b03808a1660009081526020819052604080822093909355908916815220546119b69083611636565b6001600160a01b0388166000908152602081905260409020556119d8816120a5565b6001600160a01b03881660009081526013602052604090205460ff1680611a1757506001600160a01b03871660009081526013602052604090205460ff165b15611a2d57611a2d600a54600955600c54600b55565b84600981905550866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a7991815260200190565b60405180910390a35050505050505050565b60008184841115611aaf5760405162461bcd60e51b8152600401610854919061228d565b506000611abc84866123a8565b95945050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b0857634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611b5c57600080fd5b505afa158015611b70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b94919061211f565b81600181518110611bb557634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601554611bdb9130911684611695565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac94790611c14908590600090869030904290600401612315565b600060405180830381600087803b158015611c2e57600080fd5b505af1158015611c42573d6000803e3d6000fd5b505050505050565b6006548110611ca65760405162461bcd60e51b815260206004820152602260248201527f496e6465782069732067726561746572207468616e206172726179206c656e676044820152610e8d60f31b6064820152608401610854565b60068054611cb6906001906123a8565b81548110611cd457634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600680546001600160a01b039092169183908110611d0e57634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506006805480611d5b57634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b031916905501905550565b8015611dbe576040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611dbc573d6000803e3d6000fd5b505b5050565b600080805b600654811015611e3757611e1960068281548110611df557634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168252819052604090205490565b611e239083612351565b915080611e2f816123f4565b915050611dc7565b50919050565b60008183611e5e5760405162461bcd60e51b8152600401610854919061228d565b506000611abc8486612369565b6016805460ff60a01b1916600160a01b179055600b54600954600091611e9e91604b91611e989190611636565b90611636565b905080611eab5750611fff565b47611eb583611ac5565b6000611ec14783612063565b90508015611ffb576000611eda8461136f84604b61156e565b600f54909150611ef3906001600160a01b031682611d80565b6000611f0e8561136f600b548661156e90919063ffffffff16565b9050600081118015611f2a57506012546001600160a01b031615155b15611f8a5760125460405163febd221b60e01b8152600160048201526001600160a01b039091169063febd221b9083906024016000604051808303818588803b158015611f7657600080fd5b505af193505050508015611f88575060015b505b6000611fa58661136f6009548761156e90919063ffffffff16565b601054909150611fbe906001600160a01b031682611d80565b60408051888152602081018690527f3736f4ec17d19b9b4f0fbeeb377db969da082d70e2e16221f77d5b321570e8c7910160405180910390a15050505b5050505b506016805460ff60a01b19169055565b600954158061201e5750600b54155b1561202557565b60098054600a55600b8054600c5560009182905555565b600080600061204a846120d2565b905060006120588583612063565b959194509092505050565b60006115ed83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a8b565b306000908152602081905260409020546120bf9082611636565b3060009081526020819052604090205550565b6000806120f1604b611e98600b5460095461163690919063ffffffff16565b90506115ed61271061136f858461156e565b600060208284031215612114578081fd5b81356115ed81612425565b600060208284031215612130578081fd5b81516115ed81612425565b6000806040838503121561214d578081fd5b823561215881612425565b9150602083013561216881612425565b809150509250929050565b600080600060608486031215612187578081fd5b833561219281612425565b925060208401356121a281612425565b929592945050506040919091013590565b600080604083850312156121c5578182fd5b82356121d081612425565b946020939093013593505050565b6000602082840312156121ef578081fd5b813580151581146115ed578182fd5b60006020828403121561220f578081fd5b5035919050565b60008060408385031215612228578182fd5b50508035926020909101359150565b6000815180845260208085019450808401835b8381101561226f5781516001600160a01b03168752958201959082019060010161224a565b509495945050505050565b6020815260006115ed6020830184612237565b6000602080835283518082850152825b818110156122b95785810183015185820160400152820161229d565b818111156122ca5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b85815284602082015260a06040820152600061233460a0830186612237565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156123645761236461240f565b500190565b60008261238457634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156123a3576123a361240f565b500290565b6000828210156123ba576123ba61240f565b500390565b600181811c908216806123d357607f821691505b60208210811415611e3757634e487b7160e01b600052602260045260246000fd5b60006000198214156124085761240861240f565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610f0457600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f81afa5701cee2f7bdcc0444a8050c1dbe400002f1bfda813f36ec1747ced95764736f6c63430008040033
0x6080604052620000446103e862000030600269152d02c7e14af6800000620004b860201b6200156e1790919060201c565b6200054c60201b620015f41790919060201c565b6008556102bc6009819055600a5561012c600b819055600c5561039d600d819055600e55600f80546001600160a01b031990811673037c98c77b450412cdb11ea2996630618224d018179091556010805490911673b45989b2dcab629c2e00ffaf8117243f17cff8ab17905560006011556016805460ff60a81b1916600160a81b17905568056bc75e2d63100000601755348015620000e257600080fd5b50604080518082018252600e81526d5368756e6120496e75766572736560901b60208083019182528351808501909452600684526529a42aa720ab60d11b908401528151919291620001379160039162000896565b5080516200014d90600490602084019062000896565b5050506000620001626200059660201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200020357600080fd5b505afa15801562000218573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023e91906200093c565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200028757600080fd5b505afa1580156200029c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c291906200093c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200030b57600080fd5b505af115801562000320573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034691906200093c565b601680546001600160a01b03199081166001600160a01b0393841617909155601580549091168383161790556005546200038c911669152d02c7e14af68000006200059a565b600160136000620003a56005546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526013909252812080549092166001908117909255601490620003fe6005546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553080825260149093522080549092166001179091556200044a9062000685565b6200045761dead62000685565b6016546200046e906001600160a01b031662000685565b6200047d4262015180620009bb565b60115560405169152d02c7e14af68000008152339060009060008051602062002f398339815191529060200160405180910390a35062000a6c565b600082620004c95750600062000546565b6000620004d78385620009f7565b905082620004e68583620009d6565b14620005435760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200054383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620007f760201b60201c565b3390565b6001600160a01b038216620005f25760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200053a565b6200060e816002546200083360201b620016361790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620006419183906200163662000833821b17901c565b6001600160a01b0383166000818152602081815260408083209490945592518481529192909160008051602062002f39833981519152910160405180910390a35050565b6005546001600160a01b03163314620006e15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200053a565b6001600160a01b03811660009081526007602052604090205460ff16156200075d5760405162461bcd60e51b815260206004820152602860248201527f4164647265737320697320616c7265616479206578636c756465642066726f6d604482015267207265776172647360c01b60648201526084016200053a565b6006805460018082019092557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155600081815260076020908152604091829020805460ff1916909417909355519081527f9dc0c5d829ba95d4a3aa3e40791b3e0ff125f876788532b9f7f6eb543d8dfbd6910160405180910390a150565b600081836200081b5760405162461bcd60e51b81526004016200053a919062000965565b5060006200082a8486620009d6565b95945050505050565b600080620008428385620009bb565b905083811015620005435760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016200053a565b828054620008a49062000a19565b90600052602060002090601f016020900481019282620008c8576000855562000913565b82601f10620008e357805160ff191683800117855562000913565b8280016001018555821562000913579182015b8281111562000913578251825591602001919060010190620008f6565b506200092192915062000925565b5090565b5b8082111562000921576000815560010162000926565b6000602082840312156200094e578081fd5b81516001600160a01b038116811462000543578182fd5b6000602080835283518082850152825b81811015620009935785810183015185820160400152820162000975565b81811115620009a55783604083870101525b50601f01601f1916929092016040019392505050565b60008219821115620009d157620009d162000a56565b500190565b600082620009f257634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161562000a145762000a1462000a56565b500290565b600181811c9082168062000a2e57607f821691505b6020821081141562000a5057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6124bd8062000a7c6000396000f3fe60806040526004361061023f5760003560e01c8063549593631161012e578063a9059cbb116100ab578063dd62ed3e1161006f578063dd62ed3e146106d1578063ea2f0b3714610717578063f2fde38b14610737578063f429389014610757578063fffa1dd91461076c57600080fd5b8063a9059cbb14610639578063ada46d0a14610659578063af01f2b21461067b578063b609995e14610691578063d543dbeb146106b157600080fd5b80638421b507116100f25780638421b507146105b05780638c0b5e22146105d05780638da5cb5b146105e657806395d89b4114610604578063a457c2d71461061957600080fd5b806354959363146105195780635c7b22581461052f5780636827e7641461054f57806370a0823114610565578063715018a61461059b57600080fd5b806326b6308d116101bc578063437823ec11610180578063437823ec1461046b57806348a464731461048b57806349bd5a5e146104ab57806351bc3c85146104cb5780635342acb4146104e057600080fd5b806326b6308d146103d95780632bb14e1d146103f9578063313ce5671461040f578063395093511461042b57806341cb87fc1461044b57600080fd5b8063111e037611610203578063111e037614610321578063113201fa146103415780631694505e1461036257806318160ddd1461039a57806323b872dd146103b957600080fd5b806306fdde031461024b578063095ea7b3146102765780630a1f8ea8146102a65780630b78f9c0146102c85780630e832273146102e857600080fd5b3661024657005b600080fd5b34801561025757600080fd5b50610260610781565b60405161026d919061228d565b60405180910390f35b34801561028257600080fd5b506102966102913660046121b3565b610813565b604051901515815260200161026d565b3480156102b257600080fd5b506102c66102c1366004612103565b61082a565b005b3480156102d457600080fd5b506102c66102e3366004612216565b6108b2565b3480156102f457600080fd5b50610296610303366004612103565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561032d57600080fd5b506102c661033c366004612103565b61098c565b34801561034d57600080fd5b5060165461029690600160a81b900460ff1681565b34801561036e57600080fd5b50601554610382906001600160a01b031681565b6040516001600160a01b03909116815260200161026d565b3480156103a657600080fd5b506002545b60405190815260200161026d565b3480156103c557600080fd5b506102966103d4366004612173565b610ac4565b3480156103e557600080fd5b506102c66103f43660046121de565b610b2d565b34801561040557600080fd5b506103ab600b5481565b34801561041b57600080fd5b506040516009815260200161026d565b34801561043757600080fd5b506102966104463660046121b3565b610ba4565b34801561045757600080fd5b506102c6610466366004612103565b610bda565b34801561047757600080fd5b506102c6610486366004612103565b610dd8565b34801561049757600080fd5b506102c66104a63660046121fe565b610e56565b3480156104b757600080fd5b50601654610382906001600160a01b031681565b3480156104d757600080fd5b506102c6610ec1565b3480156104ec57600080fd5b506102966104fb366004612103565b6001600160a01b031660009081526013602052604090205460ff1690565b34801561052557600080fd5b506103ab600d5481565b34801561053b57600080fd5b506102c661054a366004612103565b610f07565b34801561055b57600080fd5b506103ab60095481565b34801561057157600080fd5b506103ab610580366004612103565b6001600160a01b031660009081526020819052604090205490565b3480156105a757600080fd5b506102c6610f7f565b3480156105bc57600080fd5b506102c66105cb3660046121fe565b610ff3565b3480156105dc57600080fd5b506103ab60085481565b3480156105f257600080fd5b506005546001600160a01b0316610382565b34801561061057600080fd5b506102606110a3565b34801561062557600080fd5b506102966106343660046121b3565b6110b2565b34801561064557600080fd5b506102966106543660046121b3565b611101565b34801561066557600080fd5b5061066e61110e565b60405161026d919061227a565b34801561068757600080fd5b506103ab60115481565b34801561069d57600080fd5b506102c66106ac366004612103565b61116f565b3480156106bd57600080fd5b506102c66106cc3660046121fe565b6112da565b3480156106dd57600080fd5b506103ab6106ec36600461213b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561072357600080fd5b506102c6610732366004612103565b6113aa565b34801561074357600080fd5b506102c6610752366004612103565b611425565b34801561076357600080fd5b506102c6611510565b34801561077857600080fd5b506103ab611552565b606060038054610790906123bf565b80601f01602080910402602001604051908101604052809291908181526020018280546107bc906123bf565b80156108095780601f106107de57610100808354040283529160200191610809565b820191906000526020600020905b8154815290600101906020018083116107ec57829003601f168201915b5050505050905090565b6000610820338484611695565b5060015b92915050565b6005546001600160a01b0316331461085d5760405162461bcd60e51b8152600401610854906122e0565b60405180910390fd5b601080546001600160a01b0319166001600160a01b0383169081179091556040519081527f31bb1993faff4f8409d7baad771f861e093ef4ce2c92c6e0cb10b82d1c7324cb906020015b60405180910390a150565b6005546001600160a01b031633146108dc5760405162461bcd60e51b8152600401610854906122e0565b600a82111580156108ee5750600a8111155b6109445760405162461bcd60e51b815260206004820152602160248201527f4665657320657863656564206d6178696d756d20616c6c6f7765642076616c756044820152606560f81b6064820152608401610854565b6009829055600b81905560408051838152602081018390527f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd06891015b60405180910390a15050565b6005546001600160a01b031633146109b65760405162461bcd60e51b8152600401610854906122e0565b6001600160a01b03811660009081526007602052604090205460ff1615610a305760405162461bcd60e51b815260206004820152602860248201527f4164647265737320697320616c7265616479206578636c756465642066726f6d604482015267207265776172647360c01b6064820152608401610854565b6006805460018082019092557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155600081815260076020908152604091829020805460ff1916909417909355519081527f9dc0c5d829ba95d4a3aa3e40791b3e0ff125f876788532b9f7f6eb543d8dfbd691016108a7565b6000610ad18484846117b9565b610b238433610b1e8560405180606001604052806028815260200161243b602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611a8b565b611695565b5060019392505050565b6005546001600160a01b03163314610b575760405162461bcd60e51b8152600401610854906122e0565b60168054821515600160a81b0260ff60a81b199091161790556040517fd9fca2a469120637ae54e43ab68dfdcd9354db52d615dea3d3a66a085e6f41b9906108a790831515815260200190565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610820918590610b1e9086611636565b6005546001600160a01b03163314610c045760405162461bcd60e51b8152600401610854906122e0565b6000819050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610c4257600080fd5b505afa158015610c56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7a919061211f565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610cc257600080fd5b505afa158015610cd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfa919061211f565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610d4257600080fd5b505af1158015610d56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7a919061211f565b601680546001600160a01b03199081166001600160a01b03938416179091556015805490911683831617905560405190831681527f7aed1d3e8155a07ccf395e44ea3109a0e2d6c9b29bbbe9f142d9790596f4dc8090602001610980565b6005546001600160a01b03163314610e025760405162461bcd60e51b8152600401610854906122e0565b6001600160a01b038116600081815260136020908152604091829020805460ff1916600117905590519182527f57a00f76b5f242fb1e04b0b514a6974665a5b07bce45e39f36dabff4a042d93691016108a7565b6005546001600160a01b03163314610e805760405162461bcd60e51b8152600401610854906122e0565b610e8e81633b9aca00612389565b6017556040518181527f5948780118f41f7c4577ae4619d5cbd064057bd8562d9f7b7e60324053375c00906020016108a7565b6005546001600160a01b03163314610eeb5760405162461bcd60e51b8152600401610854906122e0565b30600090815260208190526040902054610f0481611ac5565b50565b6005546001600160a01b03163314610f315760405162461bcd60e51b8152600401610854906122e0565b601280546001600160a01b0319166001600160a01b0383169081179091556040519081527f535be0bbc71c839ded01277ab57f29f2e810c1ff0255bb938d7cb8e96ac8ca1a906020016108a7565b6005546001600160a01b03163314610fa95760405162461bcd60e51b8152600401610854906122e0565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b0316331461101d5760405162461bcd60e51b8152600401610854906122e0565b601981111561106e5760405162461bcd60e51b815260206004820152601e60248201527f4d6178696d756d206c61756e63682073656c6c206665652069732032352500006044820152606401610854565b600d8190556040518181527fc799be5eb19a1a6d6ba7368d21e2bc367c8a335e4a07cd3d954482e6f714d3c5906020016108a7565b606060048054610790906123bf565b60006108203384610b1e85604051806060016040528060258152602001612463602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611a8b565b60006108203384846117b9565b6060600680548060200260200160405190810160405280929190818152602001828054801561080957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611148575050505050905090565b6005546001600160a01b031633146111995760405162461bcd60e51b8152600401610854906122e0565b6001600160a01b03811660009081526007602052604090205460ff1661120d5760405162461bcd60e51b8152602060048201526024808201527f41646472657373206973206e6f74206578636c756465642066726f6d207265776044820152636172647360e01b6064820152608401610854565b60005b6006548110156112a057816001600160a01b03166006828154811061124557634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316141561128e576001600160a01b0382166000908152600760205260409020805460ff1916905561128981611c4a565b6112a0565b80611298816123f4565b915050611210565b506040516001600160a01b03821681527f87434094d24a90fbd9a8ffcf2be9818d237c06a12d126296bc1ea7d589594334906020016108a7565b6005546001600160a01b031633146113045760405162461bcd60e51b8152600401610854906122e0565b60058110156113555760405162461bcd60e51b815260206004820152601b60248201527f4d61782054582073686f756c642062652061626f766520302e352500000000006044820152606401610854565b6113756103e861136f69152d02c7e14af68000008461156e565b906115f4565b60088190556040519081527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf906020016108a7565b6005546001600160a01b031633146113d45760405162461bcd60e51b8152600401610854906122e0565b6001600160a01b038116600081815260136020908152604091829020805460ff1916905590519182527f346f6c42af1ce4b7d7951f3fa40a2fb1e78c80ab0f3d76fb4f9fec269d568f0d91016108a7565b6005546001600160a01b0316331461144f5760405162461bcd60e51b8152600401610854906122e0565b6001600160a01b0381166114b45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610854565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461153a5760405162461bcd60e51b8152600401610854906122e0565b6010544790610f04906001600160a01b031682611d80565b600061155c611dc2565b60025461156991906123a8565b905090565b60008261157d57506000610824565b60006115898385612389565b9050826115968583612369565b146115ed5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610854565b9392505050565b60006115ed83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e3d565b6000806116438385612351565b9050838110156115ed5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610854565b6001600160a01b0383166116f75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610854565b6001600160a01b0382166117585760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610854565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831660009081526014602052604090205460ff161580156117fb57506001600160a01b03821660009081526014602052604090205460ff16155b15611862576008548111156118625760405162461bcd60e51b815260206004820152602760248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152661e105b5bdd5b9d60ca1b6064820152608401610854565b600954601154421180159061188457506016546001600160a01b038481169116145b1561189c57600d5460095461189891611636565b6009555b30600090815260208190526040902054601754811080159081906118ca5750601654600160a01b900460ff16155b80156118e457506016546001600160a01b03878116911614155b80156118f95750601654600160a81b900460ff165b156119075761190782611e6b565b6001600160a01b03861660009081526013602052604090205460ff168061194657506001600160a01b03851660009081526013602052604090205460ff165b156119535761195361200f565b60008061195f8661203c565b6001600160a01b038a1660009081526020819052604090205491935091506119879087612063565b6001600160a01b03808a1660009081526020819052604080822093909355908916815220546119b69083611636565b6001600160a01b0388166000908152602081905260409020556119d8816120a5565b6001600160a01b03881660009081526013602052604090205460ff1680611a1757506001600160a01b03871660009081526013602052604090205460ff165b15611a2d57611a2d600a54600955600c54600b55565b84600981905550866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a7991815260200190565b60405180910390a35050505050505050565b60008184841115611aaf5760405162461bcd60e51b8152600401610854919061228d565b506000611abc84866123a8565b95945050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b0857634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611b5c57600080fd5b505afa158015611b70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b94919061211f565b81600181518110611bb557634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601554611bdb9130911684611695565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac94790611c14908590600090869030904290600401612315565b600060405180830381600087803b158015611c2e57600080fd5b505af1158015611c42573d6000803e3d6000fd5b505050505050565b6006548110611ca65760405162461bcd60e51b815260206004820152602260248201527f496e6465782069732067726561746572207468616e206172726179206c656e676044820152610e8d60f31b6064820152608401610854565b60068054611cb6906001906123a8565b81548110611cd457634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600680546001600160a01b039092169183908110611d0e57634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506006805480611d5b57634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b031916905501905550565b8015611dbe576040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611dbc573d6000803e3d6000fd5b505b5050565b600080805b600654811015611e3757611e1960068281548110611df557634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168252819052604090205490565b611e239083612351565b915080611e2f816123f4565b915050611dc7565b50919050565b60008183611e5e5760405162461bcd60e51b8152600401610854919061228d565b506000611abc8486612369565b6016805460ff60a01b1916600160a01b179055600b54600954600091611e9e91604b91611e989190611636565b90611636565b905080611eab5750611fff565b47611eb583611ac5565b6000611ec14783612063565b90508015611ffb576000611eda8461136f84604b61156e565b600f54909150611ef3906001600160a01b031682611d80565b6000611f0e8561136f600b548661156e90919063ffffffff16565b9050600081118015611f2a57506012546001600160a01b031615155b15611f8a5760125460405163febd221b60e01b8152600160048201526001600160a01b039091169063febd221b9083906024016000604051808303818588803b158015611f7657600080fd5b505af193505050508015611f88575060015b505b6000611fa58661136f6009548761156e90919063ffffffff16565b601054909150611fbe906001600160a01b031682611d80565b60408051888152602081018690527f3736f4ec17d19b9b4f0fbeeb377db969da082d70e2e16221f77d5b321570e8c7910160405180910390a15050505b5050505b506016805460ff60a01b19169055565b600954158061201e5750600b54155b1561202557565b60098054600a55600b8054600c5560009182905555565b600080600061204a846120d2565b905060006120588583612063565b959194509092505050565b60006115ed83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a8b565b306000908152602081905260409020546120bf9082611636565b3060009081526020819052604090205550565b6000806120f1604b611e98600b5460095461163690919063ffffffff16565b90506115ed61271061136f858461156e565b600060208284031215612114578081fd5b81356115ed81612425565b600060208284031215612130578081fd5b81516115ed81612425565b6000806040838503121561214d578081fd5b823561215881612425565b9150602083013561216881612425565b809150509250929050565b600080600060608486031215612187578081fd5b833561219281612425565b925060208401356121a281612425565b929592945050506040919091013590565b600080604083850312156121c5578182fd5b82356121d081612425565b946020939093013593505050565b6000602082840312156121ef578081fd5b813580151581146115ed578182fd5b60006020828403121561220f578081fd5b5035919050565b60008060408385031215612228578182fd5b50508035926020909101359150565b6000815180845260208085019450808401835b8381101561226f5781516001600160a01b03168752958201959082019060010161224a565b509495945050505050565b6020815260006115ed6020830184612237565b6000602080835283518082850152825b818110156122b95785810183015185820160400152820161229d565b818111156122ca5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b85815284602082015260a06040820152600061233460a0830186612237565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156123645761236461240f565b500190565b60008261238457634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156123a3576123a361240f565b500290565b6000828210156123ba576123ba61240f565b500390565b600181811c908216806123d357607f821691505b60208210811415611e3757634e487b7160e01b600052602260045260246000fd5b60006000198214156124085761240861240f565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610f0457600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f81afa5701cee2f7bdcc0444a8050c1dbe400002f1bfda813f36ec1747ced95764736f6c63430008040033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef