0x6080604052600436106103535760003560e01c8063859864aa116101c6578063c816841b116100f7578063dea0621011610095578063f1127ed81161006f578063f1127ed814610a5f578063f160d36914610ac3578063f2fde38b14610ae3578063f860df3014610b0357600080fd5b8063dea06210146109f5578063df8408fe14610a0b578063e7a324dc14610a2b57600080fd5b8063d4c989d3116100d1578063d4c989d31461095a578063db05e5cb1461097a578063db90127e1461098f578063dd62ed3e146109af57600080fd5b8063c816841b146108f8578063c884ef8314610918578063c9567bf91461094557600080fd5b8063a9059cbb11610164578063b4b5ea571161013e578063b4b5ea5714610878578063c3cda52014610898578063c60e4b71146108b8578063c6610657146108d857600080fd5b8063a9059cbb1461082e578063a9e757231461084e578063aa4bde281461086357600080fd5b8063997664d7116101a0578063997664d7146107b85780639dc29fac146107ce5780639f9a4e7f146107ee578063a457c2d71461080e57600080fd5b8063859864aa146107655780638da5cb5b1461078557806395d89b41146107a357600080fd5b80635158ea1b116102a0578063670babe01161023e578063715018a611610218578063715018a6146106e3578063735de9f7146106f8578063782d6fe1146107185780637ecebe001461073857600080fd5b8063670babe01461065b5780636fcfff451461067b57806370a08231146106c357600080fd5b8063587cde1e1161027a578063587cde1e146105b45780635c19a95c146105ed57806362e546f91461060d578063658c27a91461062257600080fd5b80635158ea1b1461053b5780635342acb41461055d578063570ca7351461059657600080fd5b806323b872dd1161030d57806332cb6b0c116102e757806332cb6b0c1461049657806339509351146104b657806346904840146104d65780634b418bc51461050e57600080fd5b806323b872dd1461044457806328f4dbb614610464578063313ce5671461047a57600080fd5b8062dc12971461035f57806306fdde0314610395578063095ea7b3146103b757806313f43a57146103d757806318160ddd146103fb57806320606b701461041057600080fd5b3661035a57005b600080fd5b34801561036b57600080fd5b50600d5461038090600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b3480156103a157600080fd5b506103aa610b24565b60405161038c9190612bd6565b3480156103c357600080fd5b506103806103d2366004612c49565b610bb6565b3480156103e357600080fd5b506103ed60065481565b60405190815260200161038c565b34801561040757600080fd5b506002546103ed565b34801561041c57600080fd5b506103ed7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b34801561045057600080fd5b5061038061045f366004612c75565b610bcd565b34801561047057600080fd5b506103ed60075481565b34801561048657600080fd5b506040516012815260200161038c565b3480156104a257600080fd5b506103ed6b204fce5e3e2502611000000081565b3480156104c257600080fd5b506103806104d1366004612c49565b610c83565b3480156104e257600080fd5b50600c546104f6906001600160a01b031681565b6040516001600160a01b03909116815260200161038c565b34801561051a57600080fd5b506103ed610529366004612cb6565b60126020526000908152604090205481565b34801561054757600080fd5b5061055b610556366004612ce5565b610cba565b005b34801561056957600080fd5b50610380610578366004612cb6565b6001600160a01b03166000908152600e602052604090205460ff1690565b3480156105a257600080fd5b50600d546001600160a01b03166104f6565b3480156105c057600080fd5b506104f66105cf366004612cb6565b6001600160a01b039081166000908152601460205260409020541690565b3480156105f957600080fd5b5061055b610608366004612cb6565b610f28565b34801561061957600080fd5b5061055b610f32565b34801561062e57600080fd5b5061038061063d366004612cb6565b6001600160a01b03166000908152600f602052604090205460ff1690565b34801561066757600080fd5b5061055b610676366004612d00565b610f70565b34801561068757600080fd5b506106ae610696366004612cb6565b60166020526000908152604090205463ffffffff1681565b60405163ffffffff909116815260200161038c565b3480156106cf57600080fd5b506103ed6106de366004612cb6565b61103d565b3480156106ef57600080fd5b5061055b611058565b34801561070457600080fd5b50600a546104f6906001600160a01b031681565b34801561072457600080fd5b506103ed610733366004612c49565b6110cc565b34801561074457600080fd5b506103ed610753366004612cb6565b60176020526000908152604090205481565b34801561077157600080fd5b5061055b610780366004612dfb565b611339565b34801561079157600080fd5b506005546001600160a01b03166104f6565b3480156107af57600080fd5b506103aa61140e565b3480156107c457600080fd5b506103ed60085481565b3480156107da57600080fd5b5061055b6107e9366004612c49565b61141d565b3480156107fa57600080fd5b5061055b610809366004612e5b565b611451565b34801561081a57600080fd5b50610380610829366004612c49565b611499565b34801561083a57600080fd5b50610380610849366004612c49565b611534565b34801561085a57600080fd5b506103ed611541565b34801561086f57600080fd5b506103ed61157f565b34801561088457600080fd5b506103ed610893366004612cb6565b6115ac565b3480156108a457600080fd5b5061055b6108b3366004612e89565b611621565b3480156108c457600080fd5b5061055b6108d3366004612ee3565b6118fe565b3480156108e457600080fd5b506104f66108f3366004612f62565b6119ac565b34801561090457600080fd5b50600b546104f6906001600160a01b031681565b34801561092457600080fd5b506103ed610933366004612cb6565b60116020526000908152604090205481565b34801561095157600080fd5b5061055b6119db565b34801561096657600080fd5b5061055b610975366004612f7b565b611a27565b34801561098657600080fd5b5061055b611a7c565b34801561099b57600080fd5b506103ed6109aa366004612cb6565b611af1565b3480156109bb57600080fd5b506103ed6109ca366004612fa9565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a0157600080fd5b506103ed60095481565b348015610a1757600080fd5b5061055b610a26366004612f7b565b611b87565b348015610a3757600080fd5b506103ed7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b348015610a6b57600080fd5b50610aa7610a7a366004612fd7565b60156020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b6040805163ffffffff909316835260208301919091520161038c565b348015610acf57600080fd5b5061055b610ade366004612cb6565b611bdc565b348015610aef57600080fd5b5061055b610afe366004612cb6565b611c28565b348015610b0f57600080fd5b50600d5461038090600160a81b900460ff1681565b606060038054610b339061300e565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5f9061300e565b8015610bac5780601f10610b8157610100808354040283529160200191610bac565b820191906000526020600020905b815481529060010190602001808311610b8f57829003601f168201915b5050505050905090565b6000610bc3338484611d13565b5060015b92915050565b6000610bda848484611e38565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610c645760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610c788533610c73868561305e565b611d13565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610bc3918590610c73908690613071565b610cc33061103d565b60085411610f25576000610cd633611af1565b905060008111610d1e5760405162461bcd60e51b81526020600482015260136024820152726e6f7420656e6f75676820746f20636c61696d60681b6044820152606401610c5b565b600060138361ffff1681548110610d3757610d37613084565b906000526020600020906002020190508261ffff16600003610dcd57805460405163a9059cbb60e01b8152336004820152602481018490526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610da3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc7919061309a565b50610ed6565b8261ffff16600103610e6d57600a54610df19030906001600160a01b031684611d13565b600a546001600160a01b031663791ac9478360006001850133610e164261012c6121b3565b6040518663ffffffff1660e01b8152600401610e369594939291906130b7565b600060405180830381600087803b158015610e5057600080fd5b505af1158015610e64573d6000803e3d6000fd5b50505050610ed6565b600d54600160a81b900460ff16610ebb57600a54610e969030906001600160a01b031684611d13565b600a546001600160a01b0316635c11d7958360006001850133610e164261012c6121b3565b600c54600754610ed6916001600160a01b03169030906121bf565b33600090815260116020526040902054610ef090836121b3565b33600090815260116020908152604080832093909355600954601290915291902055600854610f1f9083612397565b60085550505b50565b610f2533826123a3565b600c5460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610f6c573d6000803e3d6000fd5b5050565b6005546001600160a01b03163314610f9a5760405162461bcd60e51b8152600401610c5b9061312d565b61025881610fa88486613162565b610fb29190613162565b61ffff161115610fee5760405162461bcd60e51b81526020600482015260076024820152662176616c75657360c81b6044820152606401610c5b565b6005805465ffff0000ffff60b01b1916600160d01b61ffff9586160261ffff60b01b191617600160b01b938516939093029290921761ffff60c01b1916600160c01b9190931602919091179055565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b031633146110825760405162461bcd60e51b8152600401610c5b9061312d565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b60004382106111325760405162461bcd60e51b815260206004820152602c60248201527f557067726164696e673a3a6765745072696f72566f7465733a206e6f7420796560448201526b1d0819195d195c9b5a5b995960a21b6064820152608401610c5b565b6001600160a01b03831660009081526016602052604081205463ffffffff1690819003611163576000915050610bc7565b6001600160a01b03841660009081526015602052604081208491611188600185613184565b63ffffffff908116825260208201929092526040016000205416116111f1576001600160a01b0384166000908152601560205260408120906111cb600184613184565b63ffffffff1663ffffffff16815260200190815260200160002060010154915050610bc7565b6001600160a01b038416600090815260156020908152604080832083805290915290205463ffffffff1683101561122c576000915050610bc7565b60008061123a600184613184565b90505b8163ffffffff168163ffffffff161115611302576000600261125f8484613184565b61126991906131b7565b6112739083613184565b6001600160a01b038816600090815260156020908152604080832063ffffffff80861685529083529281902081518083019092528054909316808252600190930154918101919091529192508790036112d657602001519450610bc79350505050565b805163ffffffff168711156112ed578193506112fb565b6112f8600183613184565b92505b505061123d565b506001600160a01b038516600090815260156020908152604080832063ffffffff9094168352929052206001015491505092915050565b600d546001600160a01b031633146113635760405162461bcd60e51b8152600401610c5b906131da565b604080518082019091526001600160a01b03828116825260208083018581526013805460018101825560009190915284517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a090600290920291820180546001600160a01b0319169190951617845590518051611407937f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a091909301929190910190612b5c565b5050505050565b606060048054610b339061300e565b6005546001600160a01b031633146114475760405162461bcd60e51b8152600401610c5b9061312d565b610f6c8282612438565b6005546001600160a01b0316331461147b5760405162461bcd60e51b8152600401610c5b9061312d565b600d8054911515600160a01b0260ff60a01b19909216919091179055565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561151b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c5b565b61152a3385610c73868561305e565b5060019392505050565b6000610bc3338484611e38565b60055460009061157a9061ffff600160a01b820481169161157491600160e01b9091041661156e60025490565b90612587565b90612593565b905090565b60055460009061157a9061ffff600160a01b820481169161157491600160f01b9091041661156e60025490565b6001600160a01b03811660009081526016602052604081205463ffffffff16806115d757600061161a565b6001600160a01b0383166000908152601560205260408120906115fb600184613184565b63ffffffff1663ffffffff168152602001908152602001600020600101545b9392505050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86661164c610b24565b8051906020012061165a4690565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c08401526001600160a01b038b1660e084015261010083018a90526101208084018a90528251808503909101815261014084019092528151919093012061190160f01b610160830152610162820183905261018282018190529192506000906101a20160408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015611786573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166117fd5760405162461bcd60e51b815260206004820152602b60248201527f757067726164696e673a3a64656c656761746542795369673a20696e76616c6960448201526a64207369676e617475726560a81b6064820152608401610c5b565b6001600160a01b038116600090815260176020526040812080549161182183613222565b9190505589146118835760405162461bcd60e51b815260206004820152602760248201527f757067726164696e673a3a64656c656761746542795369673a20696e76616c6960448201526664206e6f6e636560c81b6064820152608401610c5b565b874211156118e75760405162461bcd60e51b815260206004820152602b60248201527f757067726164696e673a3a64656c656761746542795369673a207369676e617460448201526a1d5c9948195e1c1a5c995960aa1b6064820152608401610c5b565b6118f1818b6123a3565b505050505b505050505050565b600d546001600160a01b031633146119285760405162461bcd60e51b8152600401610c5b906131da565b600060138660ff168154811061194057611940613084565b9060005260206000209060020201905084816001019080519060200190611968929190612b5c565b5080546001600160a01b039094166001600160a01b031990941693909317909255600755600d8054911515600160a81b0260ff60a81b199092169190911790555050565b601381815481106119bc57600080fd5b60009182526020909120600290910201546001600160a01b0316905081565b6005546001600160a01b03163314611a055760405162461bcd60e51b8152600401610c5b9061312d565b6010805460ff19166001179055600d805460ff60a01b1916600160a01b179055565b6005546001600160a01b03163314611a515760405162461bcd60e51b8152600401610c5b9061312d565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314611aa65760405162461bcd60e51b8152600401610c5b9061312d565b600580546001600160e01b0381166001600160f01b03600160a01b80840461ffff908116600160e01b029283169390931761ffff60e01b199094169091170416600160f01b02179055565b600080611afd8361103d565b90506000611b0961259f565b905080600003611b1d575060009392505050565b6001600160a01b038416600090815260126020526040812054600954611b4291612397565b90508015611b7c576000611b5a836115748487612587565b9050600854811115611b73575050600854949350505050565b95945050505050565b506000949350505050565b6005546001600160a01b03163314611bb15760405162461bcd60e51b8152600401610c5b9061312d565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b600d546001600160a01b03163314611c065760405162461bcd60e51b8152600401610c5b906131da565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611c525760405162461bcd60e51b8152600401610c5b9061312d565b6001600160a01b038116611cb75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c5b565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611d755760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c5b565b6001600160a01b038216611dd65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c5b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60105460ff1680611e5657506005546001600160a01b038481169116145b80611e6e57506005546001600160a01b038381169116145b80611e865750600a546001600160a01b038481169116145b611ebe5760405162461bcd60e51b8152602060048201526009602482015268217472616461626c6560b81b6044820152606401610c5b565b600d54600160a01b900460ff1615156001148015611ee65750600c54600160a01b900460ff16155b8015611efc5750600a546001600160a01b031615155b8015611f125750600b546001600160a01b031615155b8015611f2c5750600b546001600160a01b03848116911614155b8015611f425750600654611f3f3061103d565b10155b8015611f6757506001600160a01b0383166000908152600e602052604090205460ff16155b8015611f8c57506001600160a01b0382166000908152600e602052604090205460ff16155b15611f9957611f996125ca565b6001600160a01b0383166000908152600f602052604090205460ff1661200757611fc1611541565b8111156120075760405162461bcd60e51b8152602060048201526014602482015273195e18d95959081b585e081d1e08185b5bdd5b9d60621b6044820152606401610c5b565b600b546001600160a01b038381169116146120905761202461157f565b8161202e8461103d565b6120389190613071565b11156120905760405162461bcd60e51b815260206004820152602160248201527f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e6044820152601d60fa1b6064820152608401610c5b565b6001600160a01b0383166000908152600e602052604090205460ff16156120c1576120bc8383836121bf565b505050565b6005546000906120eb9061ffff600160a01b8204811691611574918691600160b01b900416612587565b6005549091506000906121189061ffff600160a01b8204811691611574918791600160c01b900416612587565b6005549091506000906121459061ffff600160a01b8204811691611574918891600160d01b900416612587565b905061215d8161215784818888612397565b90612397565b935061216a8686866121bf565b6121758630856121bf565b6121808630846121bf565b61218b8630836121bf565b60085461219890826121b3565b6008556009546121a890826121b3565b600955505050505050565b600061161a8284613071565b6001600160a01b0383166122235760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c5b565b6001600160a01b0382166122855760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c5b565b6001600160a01b038316600090815260208190526040902054818110156122fd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610c5b565b612307828261305e565b6001600160a01b03808616600090815260208190526040808220939093559085168152908120805484929061233d908490613071565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161238991815260200190565b60405180910390a350505050565b600061161a828461305e565b6001600160a01b03808316600090815260146020526040812054909116906123ca8461103d565b6001600160a01b0385811660008181526014602052604080822080546001600160a01b031916898616908117909155905194955093928616927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46124328284836126d9565b50505050565b6001600160a01b0382166124985760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610c5b565b6001600160a01b0382166000908152602081905260409020548181101561250c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610c5b565b612516828261305e565b6001600160a01b0384166000908152602081905260408120919091556002805484929061254490849061305e565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611e2b565b600061161a828461323b565b600061161a828461325a565b600b5460009081906125b9906001600160a01b031661103d565b9050600061161a8261215760025490565b600c805460ff60a01b1916600160a01b1790556005805465ffffffffffff60b01b19811690915561ffff600160b01b8204811691600160c01b8104821691600160d01b90910416600061261c3061103d565b905060085481111561267e57600854612636908290612397565b905061264181612838565b600c5460405147916001600160a01b03169082156108fc029083906000818181858888f1935050505015801561267b573d6000803e3d6000fd5b50505b506005805463ffffffff60b01b1916600160b01b61ffff9586160261ffff60c01b191617600160c01b938516939093029290921761ffff60d01b1916600160d01b9190931602919091179055600c805460ff60a01b19169055565b816001600160a01b0316836001600160a01b0316141580156126fb5750600081115b156120bc576001600160a01b0383161561279e576001600160a01b03831660009081526016602052604081205463ffffffff16908161273b57600061277e565b6001600160a01b03851660009081526015602052604081209061275f600185613184565b63ffffffff1663ffffffff168152602001908152602001600020600101545b9050600061278c8285612397565b905061279a8684848461298a565b5050505b6001600160a01b038216156120bc576001600160a01b03821660009081526016602052604081205463ffffffff1690816127d957600061281c565b6001600160a01b0384166000908152601560205260408120906127fd600185613184565b63ffffffff1663ffffffff168152602001908152602001600020600101545b9050600061282a82856121b3565b90506118f68584848461298a565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061286d5761286d613084565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156128c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ea919061326e565b816001815181106128fd576128fd613084565b6001600160a01b039283166020918202929092010152600a546129239130911684611d13565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061295c90859060009086903090429060040161328b565b600060405180830381600087803b15801561297657600080fd5b505af11580156118f6573d6000803e3d6000fd5b60006129ae436040518060600160405280603981526020016132f960399139612b2c565b905060008463ffffffff16118015612a0857506001600160a01b038516600090815260156020526040812063ffffffff8316916129ec600188613184565b63ffffffff908116825260208201929092526040016000205416145b15612a51576001600160a01b03851660009081526015602052604081208391612a32600188613184565b63ffffffff168152602081019190915260400160002060010155612ae1565b60408051808201825263ffffffff838116825260208083018681526001600160a01b038a166000908152601583528581208a851682529092529390209151825463ffffffff191691161781559051600191820155612ab09085906132db565b6001600160a01b0386166000908152601660205260409020805463ffffffff191663ffffffff929092169190911790555b60408051848152602081018490526001600160a01b038716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b6000816401000000008410612b545760405162461bcd60e51b8152600401610c5b9190612bd6565b509192915050565b828054828255906000526020600020908101928215612bb1579160200282015b82811115612bb157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612b7c565b50612bbd929150612bc1565b5090565b5b80821115612bbd5760008155600101612bc2565b600060208083528351808285015260005b81811015612c0357858101830151858201604001528201612be7565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f2557600080fd5b8035612c4481612c24565b919050565b60008060408385031215612c5c57600080fd5b8235612c6781612c24565b946020939093013593505050565b600080600060608486031215612c8a57600080fd5b8335612c9581612c24565b92506020840135612ca581612c24565b929592945050506040919091013590565b600060208284031215612cc857600080fd5b813561161a81612c24565b803561ffff81168114612c4457600080fd5b600060208284031215612cf757600080fd5b61161a82612cd3565b600080600060608486031215612d1557600080fd5b612d1e84612cd3565b9250612d2c60208501612cd3565b9150612d3a60408501612cd3565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b600082601f830112612d6a57600080fd5b8135602067ffffffffffffffff80831115612d8757612d87612d43565b8260051b604051601f19603f83011681018181108482111715612dac57612dac612d43565b604052938452858101830193838101925087851115612dca57600080fd5b83870191505b84821015612df057612de182612c39565b83529183019190830190612dd0565b979650505050505050565b60008060408385031215612e0e57600080fd5b823567ffffffffffffffff811115612e2557600080fd5b612e3185828601612d59565b9250506020830135612e4281612c24565b809150509250929050565b8015158114610f2557600080fd5b600060208284031215612e6d57600080fd5b813561161a81612e4d565b803560ff81168114612c4457600080fd5b60008060008060008060c08789031215612ea257600080fd5b8635612ead81612c24565b95506020870135945060408701359350612ec960608801612e78565b92506080870135915060a087013590509295509295509295565b600080600080600060a08688031215612efb57600080fd5b612f0486612e78565b9450602086013567ffffffffffffffff811115612f2057600080fd5b612f2c88828901612d59565b9450506040860135612f3d81612c24565b9250606086013591506080860135612f5481612e4d565b809150509295509295909350565b600060208284031215612f7457600080fd5b5035919050565b60008060408385031215612f8e57600080fd5b8235612f9981612c24565b91506020830135612e4281612e4d565b60008060408385031215612fbc57600080fd5b8235612fc781612c24565b91506020830135612e4281612c24565b60008060408385031215612fea57600080fd5b8235612ff581612c24565b9150602083013563ffffffff81168114612e4257600080fd5b600181811c9082168061302257607f821691505b60208210810361304257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610bc757610bc7613048565b80820180821115610bc757610bc7613048565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156130ac57600080fd5b815161161a81612e4d565b600060a082018783526020878185015260a0604085015281875480845260c0860191508860005282600020935060005b8181101561310c5784546001600160a01b0316835260019485019492840192016130e7565b50506001600160a01b03969096166060850152505050608001529392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b61ffff81811683821601908082111561317d5761317d613048565b5092915050565b63ffffffff82811682821603908082111561317d5761317d613048565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff808416806131ce576131ce6131a1565b92169190910492915050565b60208082526028908201527f216f70657261746f722063616e206f6e6c792061636365737320746f2062617360408201526769632066756e637360c01b606082015260800190565b60006001820161323457613234613048565b5060010190565b600081600019048311821515161561325557613255613048565b500290565b600082613269576132696131a1565b500490565b60006020828403121561328057600080fd5b815161161a81612c24565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561310c5784516001600160a01b0316835293830193918301916001016132b6565b63ffffffff81811683821601908082111561317d5761317d61304856fe757067726164696e673a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473a26469706673582212205d8512dd23bc0f26784f5661cf3f40eed15ea5581df60878d091b099fc9045ee64736f6c63430008100033
0x6080604052600580546001600160a01b03167ed2006e00c8006400c8271000000000000000000000000000000000000000001790556103e8620000506b204fce5e3e250261100000006002620004de565b6200005c919062000500565b60065560646200007a6b204fce5e3e250261100000006002620004de565b62000086919062000500565b600755600c80546001600160a01b0319167311ec3bc674aa5c1f982940704c2ca665197406ba179055600d805461ffff60a01b191690556010805460ff19169055348015620000d457600080fd5b506040518060400160405280600981526020016855706772616465666960b81b8152506040518060400160405280600381526020016255464960e81b8152508160039081620001249190620005c7565b506004620001338282620005c7565b505050600062000148620003d760201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600d80546001600160a01b03191633908117909155620001c3906b204fce5e3e25026110000000620003db565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200021b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000241919062000693565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200028f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b5919062000693565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000303573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000329919062000693565b600b80546001600160a01b03199081166001600160a01b0393841617909155600a805490911692821692909217909155306000818152600e60209081526040808320805460ff199081166001908117909255338086528386208054831684179055600c8054891687528487208054841685179055968652600f9094528285208054821683179055945490951683528083208054851686179055908252902080549091169091179055620006e1565b3390565b6001600160a01b038216620004365760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b80600260008282546200044a9190620006c5565b90915550506001600160a01b0382166000908152602081905260408120805483929062000479908490620006c5565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620004fb57620004fb620004c8565b500290565b6000826200051e57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200054e57607f821691505b6020821081036200056f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004c357600081815260208120601f850160051c810160208610156200059e5750805b601f850160051c820191505b81811015620005bf57828155600101620005aa565b505050505050565b81516001600160401b03811115620005e357620005e362000523565b620005fb81620005f4845462000539565b8462000575565b602080601f8311600181146200063357600084156200061a5750858301515b600019600386901b1c1916600185901b178555620005bf565b600085815260208120601f198616915b82811015620006645788860151825594840194600190910190840162000643565b5085821015620006835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620006a657600080fd5b81516001600160a01b0381168114620006be57600080fd5b9392505050565b80820180821115620006db57620006db620004c8565b92915050565b61336780620006f16000396000f3fe6080604052600436106103535760003560e01c8063859864aa116101c6578063c816841b116100f7578063dea0621011610095578063f1127ed81161006f578063f1127ed814610a5f578063f160d36914610ac3578063f2fde38b14610ae3578063f860df3014610b0357600080fd5b8063dea06210146109f5578063df8408fe14610a0b578063e7a324dc14610a2b57600080fd5b8063d4c989d3116100d1578063d4c989d31461095a578063db05e5cb1461097a578063db90127e1461098f578063dd62ed3e146109af57600080fd5b8063c816841b146108f8578063c884ef8314610918578063c9567bf91461094557600080fd5b8063a9059cbb11610164578063b4b5ea571161013e578063b4b5ea5714610878578063c3cda52014610898578063c60e4b71146108b8578063c6610657146108d857600080fd5b8063a9059cbb1461082e578063a9e757231461084e578063aa4bde281461086357600080fd5b8063997664d7116101a0578063997664d7146107b85780639dc29fac146107ce5780639f9a4e7f146107ee578063a457c2d71461080e57600080fd5b8063859864aa146107655780638da5cb5b1461078557806395d89b41146107a357600080fd5b80635158ea1b116102a0578063670babe01161023e578063715018a611610218578063715018a6146106e3578063735de9f7146106f8578063782d6fe1146107185780637ecebe001461073857600080fd5b8063670babe01461065b5780636fcfff451461067b57806370a08231146106c357600080fd5b8063587cde1e1161027a578063587cde1e146105b45780635c19a95c146105ed57806362e546f91461060d578063658c27a91461062257600080fd5b80635158ea1b1461053b5780635342acb41461055d578063570ca7351461059657600080fd5b806323b872dd1161030d57806332cb6b0c116102e757806332cb6b0c1461049657806339509351146104b657806346904840146104d65780634b418bc51461050e57600080fd5b806323b872dd1461044457806328f4dbb614610464578063313ce5671461047a57600080fd5b8062dc12971461035f57806306fdde0314610395578063095ea7b3146103b757806313f43a57146103d757806318160ddd146103fb57806320606b701461041057600080fd5b3661035a57005b600080fd5b34801561036b57600080fd5b50600d5461038090600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b3480156103a157600080fd5b506103aa610b24565b60405161038c9190612bd6565b3480156103c357600080fd5b506103806103d2366004612c49565b610bb6565b3480156103e357600080fd5b506103ed60065481565b60405190815260200161038c565b34801561040757600080fd5b506002546103ed565b34801561041c57600080fd5b506103ed7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b34801561045057600080fd5b5061038061045f366004612c75565b610bcd565b34801561047057600080fd5b506103ed60075481565b34801561048657600080fd5b506040516012815260200161038c565b3480156104a257600080fd5b506103ed6b204fce5e3e2502611000000081565b3480156104c257600080fd5b506103806104d1366004612c49565b610c83565b3480156104e257600080fd5b50600c546104f6906001600160a01b031681565b6040516001600160a01b03909116815260200161038c565b34801561051a57600080fd5b506103ed610529366004612cb6565b60126020526000908152604090205481565b34801561054757600080fd5b5061055b610556366004612ce5565b610cba565b005b34801561056957600080fd5b50610380610578366004612cb6565b6001600160a01b03166000908152600e602052604090205460ff1690565b3480156105a257600080fd5b50600d546001600160a01b03166104f6565b3480156105c057600080fd5b506104f66105cf366004612cb6565b6001600160a01b039081166000908152601460205260409020541690565b3480156105f957600080fd5b5061055b610608366004612cb6565b610f28565b34801561061957600080fd5b5061055b610f32565b34801561062e57600080fd5b5061038061063d366004612cb6565b6001600160a01b03166000908152600f602052604090205460ff1690565b34801561066757600080fd5b5061055b610676366004612d00565b610f70565b34801561068757600080fd5b506106ae610696366004612cb6565b60166020526000908152604090205463ffffffff1681565b60405163ffffffff909116815260200161038c565b3480156106cf57600080fd5b506103ed6106de366004612cb6565b61103d565b3480156106ef57600080fd5b5061055b611058565b34801561070457600080fd5b50600a546104f6906001600160a01b031681565b34801561072457600080fd5b506103ed610733366004612c49565b6110cc565b34801561074457600080fd5b506103ed610753366004612cb6565b60176020526000908152604090205481565b34801561077157600080fd5b5061055b610780366004612dfb565b611339565b34801561079157600080fd5b506005546001600160a01b03166104f6565b3480156107af57600080fd5b506103aa61140e565b3480156107c457600080fd5b506103ed60085481565b3480156107da57600080fd5b5061055b6107e9366004612c49565b61141d565b3480156107fa57600080fd5b5061055b610809366004612e5b565b611451565b34801561081a57600080fd5b50610380610829366004612c49565b611499565b34801561083a57600080fd5b50610380610849366004612c49565b611534565b34801561085a57600080fd5b506103ed611541565b34801561086f57600080fd5b506103ed61157f565b34801561088457600080fd5b506103ed610893366004612cb6565b6115ac565b3480156108a457600080fd5b5061055b6108b3366004612e89565b611621565b3480156108c457600080fd5b5061055b6108d3366004612ee3565b6118fe565b3480156108e457600080fd5b506104f66108f3366004612f62565b6119ac565b34801561090457600080fd5b50600b546104f6906001600160a01b031681565b34801561092457600080fd5b506103ed610933366004612cb6565b60116020526000908152604090205481565b34801561095157600080fd5b5061055b6119db565b34801561096657600080fd5b5061055b610975366004612f7b565b611a27565b34801561098657600080fd5b5061055b611a7c565b34801561099b57600080fd5b506103ed6109aa366004612cb6565b611af1565b3480156109bb57600080fd5b506103ed6109ca366004612fa9565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a0157600080fd5b506103ed60095481565b348015610a1757600080fd5b5061055b610a26366004612f7b565b611b87565b348015610a3757600080fd5b506103ed7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b348015610a6b57600080fd5b50610aa7610a7a366004612fd7565b60156020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b6040805163ffffffff909316835260208301919091520161038c565b348015610acf57600080fd5b5061055b610ade366004612cb6565b611bdc565b348015610aef57600080fd5b5061055b610afe366004612cb6565b611c28565b348015610b0f57600080fd5b50600d5461038090600160a81b900460ff1681565b606060038054610b339061300e565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5f9061300e565b8015610bac5780601f10610b8157610100808354040283529160200191610bac565b820191906000526020600020905b815481529060010190602001808311610b8f57829003601f168201915b5050505050905090565b6000610bc3338484611d13565b5060015b92915050565b6000610bda848484611e38565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610c645760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610c788533610c73868561305e565b611d13565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610bc3918590610c73908690613071565b610cc33061103d565b60085411610f25576000610cd633611af1565b905060008111610d1e5760405162461bcd60e51b81526020600482015260136024820152726e6f7420656e6f75676820746f20636c61696d60681b6044820152606401610c5b565b600060138361ffff1681548110610d3757610d37613084565b906000526020600020906002020190508261ffff16600003610dcd57805460405163a9059cbb60e01b8152336004820152602481018490526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610da3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc7919061309a565b50610ed6565b8261ffff16600103610e6d57600a54610df19030906001600160a01b031684611d13565b600a546001600160a01b031663791ac9478360006001850133610e164261012c6121b3565b6040518663ffffffff1660e01b8152600401610e369594939291906130b7565b600060405180830381600087803b158015610e5057600080fd5b505af1158015610e64573d6000803e3d6000fd5b50505050610ed6565b600d54600160a81b900460ff16610ebb57600a54610e969030906001600160a01b031684611d13565b600a546001600160a01b0316635c11d7958360006001850133610e164261012c6121b3565b600c54600754610ed6916001600160a01b03169030906121bf565b33600090815260116020526040902054610ef090836121b3565b33600090815260116020908152604080832093909355600954601290915291902055600854610f1f9083612397565b60085550505b50565b610f2533826123a3565b600c5460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610f6c573d6000803e3d6000fd5b5050565b6005546001600160a01b03163314610f9a5760405162461bcd60e51b8152600401610c5b9061312d565b61025881610fa88486613162565b610fb29190613162565b61ffff161115610fee5760405162461bcd60e51b81526020600482015260076024820152662176616c75657360c81b6044820152606401610c5b565b6005805465ffff0000ffff60b01b1916600160d01b61ffff9586160261ffff60b01b191617600160b01b938516939093029290921761ffff60c01b1916600160c01b9190931602919091179055565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b031633146110825760405162461bcd60e51b8152600401610c5b9061312d565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b60004382106111325760405162461bcd60e51b815260206004820152602c60248201527f557067726164696e673a3a6765745072696f72566f7465733a206e6f7420796560448201526b1d0819195d195c9b5a5b995960a21b6064820152608401610c5b565b6001600160a01b03831660009081526016602052604081205463ffffffff1690819003611163576000915050610bc7565b6001600160a01b03841660009081526015602052604081208491611188600185613184565b63ffffffff908116825260208201929092526040016000205416116111f1576001600160a01b0384166000908152601560205260408120906111cb600184613184565b63ffffffff1663ffffffff16815260200190815260200160002060010154915050610bc7565b6001600160a01b038416600090815260156020908152604080832083805290915290205463ffffffff1683101561122c576000915050610bc7565b60008061123a600184613184565b90505b8163ffffffff168163ffffffff161115611302576000600261125f8484613184565b61126991906131b7565b6112739083613184565b6001600160a01b038816600090815260156020908152604080832063ffffffff80861685529083529281902081518083019092528054909316808252600190930154918101919091529192508790036112d657602001519450610bc79350505050565b805163ffffffff168711156112ed578193506112fb565b6112f8600183613184565b92505b505061123d565b506001600160a01b038516600090815260156020908152604080832063ffffffff9094168352929052206001015491505092915050565b600d546001600160a01b031633146113635760405162461bcd60e51b8152600401610c5b906131da565b604080518082019091526001600160a01b03828116825260208083018581526013805460018101825560009190915284517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a090600290920291820180546001600160a01b0319169190951617845590518051611407937f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a091909301929190910190612b5c565b5050505050565b606060048054610b339061300e565b6005546001600160a01b031633146114475760405162461bcd60e51b8152600401610c5b9061312d565b610f6c8282612438565b6005546001600160a01b0316331461147b5760405162461bcd60e51b8152600401610c5b9061312d565b600d8054911515600160a01b0260ff60a01b19909216919091179055565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561151b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c5b565b61152a3385610c73868561305e565b5060019392505050565b6000610bc3338484611e38565b60055460009061157a9061ffff600160a01b820481169161157491600160e01b9091041661156e60025490565b90612587565b90612593565b905090565b60055460009061157a9061ffff600160a01b820481169161157491600160f01b9091041661156e60025490565b6001600160a01b03811660009081526016602052604081205463ffffffff16806115d757600061161a565b6001600160a01b0383166000908152601560205260408120906115fb600184613184565b63ffffffff1663ffffffff168152602001908152602001600020600101545b9392505050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86661164c610b24565b8051906020012061165a4690565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c08401526001600160a01b038b1660e084015261010083018a90526101208084018a90528251808503909101815261014084019092528151919093012061190160f01b610160830152610162820183905261018282018190529192506000906101a20160408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015611786573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166117fd5760405162461bcd60e51b815260206004820152602b60248201527f757067726164696e673a3a64656c656761746542795369673a20696e76616c6960448201526a64207369676e617475726560a81b6064820152608401610c5b565b6001600160a01b038116600090815260176020526040812080549161182183613222565b9190505589146118835760405162461bcd60e51b815260206004820152602760248201527f757067726164696e673a3a64656c656761746542795369673a20696e76616c6960448201526664206e6f6e636560c81b6064820152608401610c5b565b874211156118e75760405162461bcd60e51b815260206004820152602b60248201527f757067726164696e673a3a64656c656761746542795369673a207369676e617460448201526a1d5c9948195e1c1a5c995960aa1b6064820152608401610c5b565b6118f1818b6123a3565b505050505b505050505050565b600d546001600160a01b031633146119285760405162461bcd60e51b8152600401610c5b906131da565b600060138660ff168154811061194057611940613084565b9060005260206000209060020201905084816001019080519060200190611968929190612b5c565b5080546001600160a01b039094166001600160a01b031990941693909317909255600755600d8054911515600160a81b0260ff60a81b199092169190911790555050565b601381815481106119bc57600080fd5b60009182526020909120600290910201546001600160a01b0316905081565b6005546001600160a01b03163314611a055760405162461bcd60e51b8152600401610c5b9061312d565b6010805460ff19166001179055600d805460ff60a01b1916600160a01b179055565b6005546001600160a01b03163314611a515760405162461bcd60e51b8152600401610c5b9061312d565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314611aa65760405162461bcd60e51b8152600401610c5b9061312d565b600580546001600160e01b0381166001600160f01b03600160a01b80840461ffff908116600160e01b029283169390931761ffff60e01b199094169091170416600160f01b02179055565b600080611afd8361103d565b90506000611b0961259f565b905080600003611b1d575060009392505050565b6001600160a01b038416600090815260126020526040812054600954611b4291612397565b90508015611b7c576000611b5a836115748487612587565b9050600854811115611b73575050600854949350505050565b95945050505050565b506000949350505050565b6005546001600160a01b03163314611bb15760405162461bcd60e51b8152600401610c5b9061312d565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b600d546001600160a01b03163314611c065760405162461bcd60e51b8152600401610c5b906131da565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611c525760405162461bcd60e51b8152600401610c5b9061312d565b6001600160a01b038116611cb75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c5b565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611d755760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c5b565b6001600160a01b038216611dd65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c5b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60105460ff1680611e5657506005546001600160a01b038481169116145b80611e6e57506005546001600160a01b038381169116145b80611e865750600a546001600160a01b038481169116145b611ebe5760405162461bcd60e51b8152602060048201526009602482015268217472616461626c6560b81b6044820152606401610c5b565b600d54600160a01b900460ff1615156001148015611ee65750600c54600160a01b900460ff16155b8015611efc5750600a546001600160a01b031615155b8015611f125750600b546001600160a01b031615155b8015611f2c5750600b546001600160a01b03848116911614155b8015611f425750600654611f3f3061103d565b10155b8015611f6757506001600160a01b0383166000908152600e602052604090205460ff16155b8015611f8c57506001600160a01b0382166000908152600e602052604090205460ff16155b15611f9957611f996125ca565b6001600160a01b0383166000908152600f602052604090205460ff1661200757611fc1611541565b8111156120075760405162461bcd60e51b8152602060048201526014602482015273195e18d95959081b585e081d1e08185b5bdd5b9d60621b6044820152606401610c5b565b600b546001600160a01b038381169116146120905761202461157f565b8161202e8461103d565b6120389190613071565b11156120905760405162461bcd60e51b815260206004820152602160248201527f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e6044820152601d60fa1b6064820152608401610c5b565b6001600160a01b0383166000908152600e602052604090205460ff16156120c1576120bc8383836121bf565b505050565b6005546000906120eb9061ffff600160a01b8204811691611574918691600160b01b900416612587565b6005549091506000906121189061ffff600160a01b8204811691611574918791600160c01b900416612587565b6005549091506000906121459061ffff600160a01b8204811691611574918891600160d01b900416612587565b905061215d8161215784818888612397565b90612397565b935061216a8686866121bf565b6121758630856121bf565b6121808630846121bf565b61218b8630836121bf565b60085461219890826121b3565b6008556009546121a890826121b3565b600955505050505050565b600061161a8284613071565b6001600160a01b0383166122235760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c5b565b6001600160a01b0382166122855760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c5b565b6001600160a01b038316600090815260208190526040902054818110156122fd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610c5b565b612307828261305e565b6001600160a01b03808616600090815260208190526040808220939093559085168152908120805484929061233d908490613071565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161238991815260200190565b60405180910390a350505050565b600061161a828461305e565b6001600160a01b03808316600090815260146020526040812054909116906123ca8461103d565b6001600160a01b0385811660008181526014602052604080822080546001600160a01b031916898616908117909155905194955093928616927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46124328284836126d9565b50505050565b6001600160a01b0382166124985760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610c5b565b6001600160a01b0382166000908152602081905260409020548181101561250c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610c5b565b612516828261305e565b6001600160a01b0384166000908152602081905260408120919091556002805484929061254490849061305e565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611e2b565b600061161a828461323b565b600061161a828461325a565b600b5460009081906125b9906001600160a01b031661103d565b9050600061161a8261215760025490565b600c805460ff60a01b1916600160a01b1790556005805465ffffffffffff60b01b19811690915561ffff600160b01b8204811691600160c01b8104821691600160d01b90910416600061261c3061103d565b905060085481111561267e57600854612636908290612397565b905061264181612838565b600c5460405147916001600160a01b03169082156108fc029083906000818181858888f1935050505015801561267b573d6000803e3d6000fd5b50505b506005805463ffffffff60b01b1916600160b01b61ffff9586160261ffff60c01b191617600160c01b938516939093029290921761ffff60d01b1916600160d01b9190931602919091179055600c805460ff60a01b19169055565b816001600160a01b0316836001600160a01b0316141580156126fb5750600081115b156120bc576001600160a01b0383161561279e576001600160a01b03831660009081526016602052604081205463ffffffff16908161273b57600061277e565b6001600160a01b03851660009081526015602052604081209061275f600185613184565b63ffffffff1663ffffffff168152602001908152602001600020600101545b9050600061278c8285612397565b905061279a8684848461298a565b5050505b6001600160a01b038216156120bc576001600160a01b03821660009081526016602052604081205463ffffffff1690816127d957600061281c565b6001600160a01b0384166000908152601560205260408120906127fd600185613184565b63ffffffff1663ffffffff168152602001908152602001600020600101545b9050600061282a82856121b3565b90506118f68584848461298a565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061286d5761286d613084565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156128c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ea919061326e565b816001815181106128fd576128fd613084565b6001600160a01b039283166020918202929092010152600a546129239130911684611d13565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061295c90859060009086903090429060040161328b565b600060405180830381600087803b15801561297657600080fd5b505af11580156118f6573d6000803e3d6000fd5b60006129ae436040518060600160405280603981526020016132f960399139612b2c565b905060008463ffffffff16118015612a0857506001600160a01b038516600090815260156020526040812063ffffffff8316916129ec600188613184565b63ffffffff908116825260208201929092526040016000205416145b15612a51576001600160a01b03851660009081526015602052604081208391612a32600188613184565b63ffffffff168152602081019190915260400160002060010155612ae1565b60408051808201825263ffffffff838116825260208083018681526001600160a01b038a166000908152601583528581208a851682529092529390209151825463ffffffff191691161781559051600191820155612ab09085906132db565b6001600160a01b0386166000908152601660205260409020805463ffffffff191663ffffffff929092169190911790555b60408051848152602081018490526001600160a01b038716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b6000816401000000008410612b545760405162461bcd60e51b8152600401610c5b9190612bd6565b509192915050565b828054828255906000526020600020908101928215612bb1579160200282015b82811115612bb157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612b7c565b50612bbd929150612bc1565b5090565b5b80821115612bbd5760008155600101612bc2565b600060208083528351808285015260005b81811015612c0357858101830151858201604001528201612be7565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f2557600080fd5b8035612c4481612c24565b919050565b60008060408385031215612c5c57600080fd5b8235612c6781612c24565b946020939093013593505050565b600080600060608486031215612c8a57600080fd5b8335612c9581612c24565b92506020840135612ca581612c24565b929592945050506040919091013590565b600060208284031215612cc857600080fd5b813561161a81612c24565b803561ffff81168114612c4457600080fd5b600060208284031215612cf757600080fd5b61161a82612cd3565b600080600060608486031215612d1557600080fd5b612d1e84612cd3565b9250612d2c60208501612cd3565b9150612d3a60408501612cd3565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b600082601f830112612d6a57600080fd5b8135602067ffffffffffffffff80831115612d8757612d87612d43565b8260051b604051601f19603f83011681018181108482111715612dac57612dac612d43565b604052938452858101830193838101925087851115612dca57600080fd5b83870191505b84821015612df057612de182612c39565b83529183019190830190612dd0565b979650505050505050565b60008060408385031215612e0e57600080fd5b823567ffffffffffffffff811115612e2557600080fd5b612e3185828601612d59565b9250506020830135612e4281612c24565b809150509250929050565b8015158114610f2557600080fd5b600060208284031215612e6d57600080fd5b813561161a81612e4d565b803560ff81168114612c4457600080fd5b60008060008060008060c08789031215612ea257600080fd5b8635612ead81612c24565b95506020870135945060408701359350612ec960608801612e78565b92506080870135915060a087013590509295509295509295565b600080600080600060a08688031215612efb57600080fd5b612f0486612e78565b9450602086013567ffffffffffffffff811115612f2057600080fd5b612f2c88828901612d59565b9450506040860135612f3d81612c24565b9250606086013591506080860135612f5481612e4d565b809150509295509295909350565b600060208284031215612f7457600080fd5b5035919050565b60008060408385031215612f8e57600080fd5b8235612f9981612c24565b91506020830135612e4281612e4d565b60008060408385031215612fbc57600080fd5b8235612fc781612c24565b91506020830135612e4281612c24565b60008060408385031215612fea57600080fd5b8235612ff581612c24565b9150602083013563ffffffff81168114612e4257600080fd5b600181811c9082168061302257607f821691505b60208210810361304257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610bc757610bc7613048565b80820180821115610bc757610bc7613048565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156130ac57600080fd5b815161161a81612e4d565b600060a082018783526020878185015260a0604085015281875480845260c0860191508860005282600020935060005b8181101561310c5784546001600160a01b0316835260019485019492840192016130e7565b50506001600160a01b03969096166060850152505050608001529392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b61ffff81811683821601908082111561317d5761317d613048565b5092915050565b63ffffffff82811682821603908082111561317d5761317d613048565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff808416806131ce576131ce6131a1565b92169190910492915050565b60208082526028908201527f216f70657261746f722063616e206f6e6c792061636365737320746f2062617360408201526769632066756e637360c01b606082015260800190565b60006001820161323457613234613048565b5060010190565b600081600019048311821515161561325557613255613048565b500290565b600082613269576132696131a1565b500490565b60006020828403121561328057600080fd5b815161161a81612c24565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561310c5784516001600160a01b0316835293830193918301916001016132b6565b63ffffffff81811683821601908082111561317d5761317d61304856fe757067726164696e673a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473a26469706673582212205d8512dd23bc0f26784f5661cf3f40eed15ea5581df60878d091b099fc9045ee64736f6c63430008100033