0x6080604052600436106103795760003560e01c806370a08231116101d1578063a9059cbb11610102578063d4cdeb3c116100a0578063e2f456051161006f578063e2f4560514610a30578063f2fde38b14610a46578063f887ea4014610a66578063fd69c21514610a8657600080fd5b8063d4cdeb3c14610990578063d8c6404b146109b0578063dd62ed3e146109ca578063e01af92c14610a1057600080fd5b8063bbde77c1116100dc578063bbde77c114610924578063bbf1af951461093a578063cbf7e8881461095a578063cccc20521461097057600080fd5b8063a9059cbb146108c4578063aacebbe3146108e4578063b225d4b71461090457600080fd5b806388f820201161016f57806391053d941161014957806391053d941461086457806395d89b41146103a7578063a457c2d714610884578063a8aa1b31146108a457600080fd5b806388f82020146107f75780638c0b5e22146108305780638da5cb5b1461084657600080fd5b806379c4903c116101ab57806379c4903c1461078b5780637d8dbe24146107a157806381b1e915146107c1578063872f5969146107e157600080fd5b806370a082311461071e578063715018a61461073e57806375f0a8741461075357600080fd5b80633cffbe3f116102ab5780635342acb411610249578063690c22ca11610223578063690c22ca146106ba5780636b67c4df146106d05780636ddd1713146106e6578063704ce43e1461070857600080fd5b80635342acb41461064b578063589d89dc146106845780636612e66f1461069a57600080fd5b80634549b039116102855780634549b039146105d5578063455a4396146105f55780634d4925ce1461061557806352390c021461062b57600080fd5b80633cffbe3f1461058557806342966c681461059b578063450dde46146105bb57600080fd5b80632242908511610318578063308b0886116102f2578063308b088614610509578063313ce567146105295780633685d41914610545578063395093511461056557600080fd5b806322429085146104a957806323b872dd146104c95780632d838119146104e957600080fd5b806309c58fcd1161035457806309c58fcd146104125780631264c9c41461043157806318160ddd146104515780631cdd3be31461047957600080fd5b8062e6be7b1461038557806306fdde03146103a7578063095ea7b3146103e257600080fd5b3661038057005b600080fd5b34801561039157600080fd5b506103a56103a0366004612eea565b610aa6565b005b3480156103b357600080fd5b5060408051808201825260038152622ba2a760e91b602082015290516103d991906130f4565b60405180910390f35b3480156103ee57600080fd5b506104026103fd366004612f24565b610ba0565b60405190151581526020016103d9565b34801561041e57600080fd5b5060095461040290610100900460ff1681565b34801561043d57600080fd5b506103a561044c366004612fff565b610bb7565b34801561045d57600080fd5b506a084595161401484a0000005b6040519081526020016103d9565b34801561048557600080fd5b50610402610494366004612eea565b601a6020526000908152604090205460ff1681565b3480156104b557600080fd5b506103a56104c4366004613056565b610bfb565b3480156104d557600080fd5b506104026104e4366004612f89565b610cb0565b3480156104f557600080fd5b5061046b61050436600461301a565b610d19565b34801561051557600080fd5b506103a5610524366004612eea565b610d9d565b34801561053557600080fd5b50604051601281526020016103d9565b34801561055157600080fd5b506103a5610560366004612eea565b610ec0565b34801561057157600080fd5b50610402610580366004612f24565b611077565b34801561059157600080fd5b5061046b600f5481565b3480156105a757600080fd5b506103a56105b636600461301a565b6110ad565b3480156105c757600080fd5b506009546104029060ff1681565b3480156105e157600080fd5b5061046b6105f0366004613033565b6112e6565b34801561060157600080fd5b506103a5610610366004612fca565b611385565b34801561062157600080fd5b5061046b60135481565b34801561063757600080fd5b506103a5610646366004612eea565b6113da565b34801561065757600080fd5b50610402610666366004612eea565b6001600160a01b03166000908152601b602052604090205460ff1690565b34801561069057600080fd5b5061046b60065481565b3480156106a657600080fd5b506103a56106b5366004612fca565b611479565b3480156106c657600080fd5b5061046b600d5481565b3480156106dc57600080fd5b5061046b600e5481565b3480156106f257600080fd5b5060095461040290640100000000900460ff1681565b34801561071457600080fd5b5061046b60105481565b34801561072a57600080fd5b5061046b610739366004612eea565b6114ce565b34801561074a57600080fd5b506103a561152d565b34801561075f57600080fd5b50600354610773906001600160a01b031681565b6040516001600160a01b0390911681526020016103d9565b34801561079757600080fd5b5061046b60125481565b3480156107ad57600080fd5b506103a56107bc36600461301a565b6115a1565b3480156107cd57600080fd5b50600454610773906001600160a01b031681565b3480156107ed57600080fd5b5061046b600c5481565b34801561080357600080fd5b50610402610812366004612eea565b6001600160a01b03166000908152601c602052604090205460ff1690565b34801561083c57600080fd5b5061046b60075481565b34801561085257600080fd5b506000546001600160a01b0316610773565b34801561087057600080fd5b506103a561087f36600461301a565b6115e3565b34801561089057600080fd5b5061040261089f366004612f24565b611625565b3480156108b057600080fd5b50601654610773906001600160a01b031681565b3480156108d057600080fd5b506104026108df366004612f24565b611674565b3480156108f057600080fd5b506103a56108ff366004612eea565b611681565b34801561091057600080fd5b506103a561091f36600461301a565b6117a3565b34801561093057600080fd5b5061046b60085481565b34801561094657600080fd5b506103a5610955366004612fff565b6117e5565b34801561096657600080fd5b5061046b60145481565b34801561097c57600080fd5b506103a561098b366004613056565b611839565b34801561099c57600080fd5b506009546104029062010000900460ff1681565b3480156109bc57600080fd5b50600b546104029060ff1681565b3480156109d657600080fd5b5061046b6109e5366004612f50565b6001600160a01b03918216600090815260196020908152604080832093909416825291909152205490565b348015610a1c57600080fd5b506103a5610a2b366004612fff565b6118e0565b348015610a3c57600080fd5b5061046b600a5481565b348015610a5257600080fd5b506103a5610a61366004612eea565b61192a565b348015610a7257600080fd5b50601554610773906001600160a01b031681565b348015610a9257600080fd5b506103a5610aa1366004612f24565b611a14565b6000546001600160a01b03163314610ad95760405162461bcd60e51b8152600401610ad09061318b565b60405180910390fd5b6015546001600160a01b0382811691161415610b435760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b6064820152608401610ad0565b6015546040516001600160a01b03918216918316907fc4382ee892d64a85fffb798adefd9dd8fcdeb2b1ababe74b46cdae7fe88da4e090600090a3601580546001600160a01b0319166001600160a01b0392909216919091179055565b6000610bad338484611bff565b5060015b92915050565b6000546001600160a01b03163314610be15760405162461bcd60e51b8152600401610ad09061318b565b600980549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314610c255760405162461bcd60e51b8152600401610ad09061318b565b610c3981610c338585611ae9565b90611ae9565b601181905560641015610ca25760405162461bcd60e51b815260206004820152602b60248201527f546f74616c20466565732063616e6e6f7420626520677265617465722074686160448201526a6e2031302520283130302960a81b6064820152608401610ad0565b600e92909255600f55601055565b6000610cbd848484611d33565b610d0f8433610d0a856040518060600160405280602881526020016132f8602891396001600160a01b038a1660009081526019602090815260408083203384529091529020549190612203565b611bff565b5060019392505050565b6000600554821115610d805760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610ad0565b6000610d8a61223a565b9050610d968382611b48565b9392505050565b6000546001600160a01b03163314610dc75760405162461bcd60e51b8152600401610ad09061318b565b806001600160a01b038116610dee5760405162461bcd60e51b8152600401610ad090613149565b6004546001600160a01b0383811691161415610e625760405162461bcd60e51b815260206004820152602d60248201527f546865204465766f6c706d656e742077616c6c657420697320616c726561647960448201526c2074686973206164647265737360981b6064820152608401610ad0565b6004546040516001600160a01b03918216918416907fc5906c728a10a317ee181230349b48d3ea470098faab8348f8d45d4e6e09800290600090a350600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610eea5760405162461bcd60e51b8152600401610ad09061318b565b6001600160a01b0381166000908152601c602052604090205460ff16610f525760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610ad0565b60005b601d5481101561107357816001600160a01b0316601d8281548110610f7c57610f7c6132cc565b6000918252602090912001546001600160a01b0316141561106157601d8054610fa79060019061326e565b81548110610fb757610fb76132cc565b600091825260209091200154601d80546001600160a01b039092169183908110610fe357610fe36132cc565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152601882526040808220829055601c90925220805460ff19169055601d80548061103b5761103b6132b6565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061106b81613285565b915050610f55565b5050565b3360008181526019602090815260408083206001600160a01b03871684529091528120549091610bad918590610d0a9086611ae9565b600260015414156111005760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ad0565b6002600155338061115d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610ad0565b6002546001600160a01b03828116911614156111c55760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865206275726e206164647265736044820152607360f81b6064820152608401610ad0565b60006111d0826114ce565b90508281101561122d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610ad0565b600061124161123a61223a565b859061225d565b6001600160a01b0384166000908152601760205260409020549091506112679082611ba3565b6001600160a01b038416600090815260176020908152604080832093909355601c9052205460ff16156112d1576001600160a01b0383166000908152601860205260409020546112b79085611ba3565b6001600160a01b0384166000908152601860205260409020555b6112dc8385836122dc565b5050600180555050565b60006a084595161401484a0000008311156113435760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610ad0565b6000826113665760006113578560006123be565b50929550610bb1945050505050565b50601154600061137685836123be565b50919550610bb1945050505050565b6000546001600160a01b031633146113af5760405162461bcd60e51b8152600401610ad09061318b565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146114045760405162461bcd60e51b8152600401610ad09061318b565b6001600160a01b0381166000908152601c602052604090205460ff161561146d5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f7420696e636c756465640000000000000000006044820152606401610ad0565b61147681612434565b50565b6000546001600160a01b031633146114a35760405162461bcd60e51b8152600401610ad09061318b565b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b6001600160a01b0381166000908152601c602052604081205460ff161561150b57506001600160a01b031660009081526018602052604090205490565b6001600160a01b038216600090815260176020526040902054610bb190610d19565b6000546001600160a01b031633146115575760405162461bcd60e51b8152600401610ad09061318b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146115cb5760405162461bcd60e51b8152600401610ad09061318b565b6115dd81670de0b6b3a764000061324f565b60075550565b6000546001600160a01b0316331461160d5760405162461bcd60e51b8152600401610ad09061318b565b61161f81670de0b6b3a764000061324f565b60085550565b6000610bad3384610d0a85604051806060016040528060258152602001613320602591393360009081526019602090815260408083206001600160a01b038d1684529091529020549190612203565b6000610bad338484611d33565b6000546001600160a01b031633146116ab5760405162461bcd60e51b8152600401610ad09061318b565b806001600160a01b0381166116d25760405162461bcd60e51b8152600401610ad090613149565b6003546001600160a01b03838116911614156117455760405162461bcd60e51b815260206004820152602c60248201527f546865204d61726b6574696e672077616c6c657420697320616c72656164792060448201526b74686973206164647265737360a01b6064820152608401610ad0565b6003546040516001600160a01b03918216918416907f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6790600090a350600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146117cd5760405162461bcd60e51b8152600401610ad09061318b565b6117df81670de0b6b3a764000061324f565b600a5550565b6000546001600160a01b0316331461180f5760405162461bcd60e51b8152600401610ad09061318b565b600b805460ff191682151590811790915560ff161561147657611833426005613215565b600d5550565b6000546001600160a01b031633146118635760405162461bcd60e51b8152600401610ad09061318b565b600061187382610c338686611ae9565b9050806103e8146118d15760405162461bcd60e51b815260206004820152602260248201527f546f74616c206d75737420626520657175616c20746f20313030302028313030604482015261252960f01b6064820152608401610ad0565b50601292909255601355601455565b6000546001600160a01b0316331461190a5760405162461bcd60e51b8152600401610ad09061318b565b600980549115156401000000000264ff0000000019909216919091179055565b6000546001600160a01b031633146119545760405162461bcd60e51b8152600401610ad09061318b565b6001600160a01b0381166119b95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ad0565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611a3e5760405162461bcd60e51b8152600401610ad09061318b565b6001600160a01b038216611aae5760405162461bcd60e51b815260206004820152603160248201527f43616e6e6f7420776974686472617720746865204554482062616c616e636520604482015270746f2061207a65726f206164647265737360781b6064820152608401610ad0565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611ae4573d6000803e3d6000fd5b505050565b600080611af68385613215565b905083811015610d965760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610ad0565b6000808211611b995760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f0000000000006044820152606401610ad0565b610d96828461322d565b600082821115611bf55760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606401610ad0565b610d96828461326e565b6001600160a01b038316611c695760405162461bcd60e51b815260206004820152602b60248201527f42617365526669546f6b656e3a20617070726f76652066726f6d20746865207a60448201526a65726f206164647265737360a81b6064820152608401610ad0565b6001600160a01b038216611cd15760405162461bcd60e51b815260206004820152602960248201527f42617365526669546f6b656e3a20617070726f766520746f20746865207a65726044820152686f206164647265737360b81b6064820152608401610ad0565b6001600160a01b0383811660008181526019602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611d975760405162461bcd60e51b815260206004820152602560248201527f546f6b656e3a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ad0565b6001600160a01b038216611df95760405162461bcd60e51b815260206004820152602360248201527f546f6b656e3a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ad0565b6002546001600160a01b0384811691161415611e655760405162461bcd60e51b815260206004820152602560248201527f546f6b656e3a207472616e736665722066726f6d20746865206275726e206164604482015264647265737360d81b6064820152608401610ad0565b60008111611ec75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ad0565b600954610100900460ff16611f445760405162461bcd60e51b815260206004820152603860248201527f54686973206163636f756e742063616e6e6f742073656e6420746f6b656e732060448201527f756e74696c2074726164696e6720697320656e61626c656400000000000000006064820152608401610ad0565b6001600160a01b0383166000908152601a602052604090205460ff16158015611f8657506001600160a01b0382166000908152601a602052604090205460ff16155b611fc85760405162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b6044820152606401610ad0565b6015546001600160a01b03848116911614801590611fff57506001600160a01b0382166000908152601b602052604090205460ff16155b801561202457506001600160a01b0383166000908152601b602052604090205460ff16155b15612097576007548111156120975760405162461bcd60e51b815260206004820152603360248201527f5472616e7366657220616d6f756e74206578636565647320746865204d6178206044820152722a3930b739b0b1ba34b7b71020b6b7bab73a1760691b6064820152608401610ad0565b60006008541180156120c257506001600160a01b0382166000908152601b602052604090205460ff16155b80156120e757506001600160a01b0383166000908152601b602052604090205460ff16155b801561210157506016546001600160a01b03838116911614155b15612187576000612111836114ce565b6008549091506121218383613215565b11156121855760405162461bcd60e51b815260206004820152602d60248201527f4e65772062616c616e636520776f756c642065786365656420746865206d617860448201526c57616c6c657442616c616e636560981b6064820152608401610ad0565b505b60095460ff8082169162010000900416156121a0575060005b6001600160a01b0384166000908152601b602052604090205460ff16806121df57506001600160a01b0383166000908152601b602052604090205460ff165b156121e8575060005b6121f1836124f4565b6121fd84848484612591565b50505050565b600081848411156122275760405162461bcd60e51b8152600401610ad091906130f4565b50612232838561326e565b949350505050565b600080600061224761260a565b90925090506122568282611b48565b9250505090565b60008261226c57506000610bb1565b6000612278838561324f565b905082612285858361322d565b14610d965760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ad0565b6002546001600160a01b03166000908152601760205260409020546123019082611ae9565b600280546001600160a01b0390811660009081526017602090815260408083209590955592549091168152601c909152205460ff161561237c576002546001600160a01b03166000908152601860205260409020546123609083611ae9565b6002546001600160a01b03166000908152601860205260409020555b6002546040518381526001600160a01b03918216918516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611d26565b600080808080806123db6103e86123d58a8a61225d565b90611b48565b905060006123e98983611ba3565b905060006123f561223a565b905060006124038b8361225d565b90506000612411858461225d565b9050600061241f8383611ba3565b929d929c9b5093995091975095505050505050565b6001600160a01b0381166000908152601760205260409020541561248e576001600160a01b03811660009081526017602052604090205461247490610d19565b6001600160a01b0382166000908152601860205260409020555b6001600160a01b03166000818152601c60205260408120805460ff19166001908117909155601d805491820181559091527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f0180546001600160a01b0319169091179055565b60095462010000900460ff1661147657600061250f306114ce565b600a54600954919250821015906301000000900460ff161580156125305750805b80156125465750600954640100000000900460ff165b801561255f57506016546001600160a01b038481169116145b15611ae4576009805463ff0000001916630100000017905561257f6127b7565b6009805463ff00000019169055505050565b601154600b5460ff1680156125a85750600d544211155b6125b257806125b6565b600c545b6016549091506001600160a01b038681169116148015906125e557506016546001600160a01b03858116911614155b156125ee575060005b816125f7575060005b61260385858584612906565b5050505050565b60055460009081906a084595161401484a000000825b601d5481101561276d578260176000601d8481548110612642576126426132cc565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806126ad57508160186000601d8481548110612686576126866132cc565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156126cb575050600554936a084595161401484a0000009350915050565b61271160176000601d84815481106126e5576126e56132cc565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611ba3565b925061275960186000601d848154811061272d5761272d6132cc565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611ba3565b91508061276581613285565b915050612620565b50801580612791575060055461278e906a084595161401484a000000611b48565b82105b156127ae575050600554926a084595161401484a00000092509050565b90939092509050565b6002600154141561280a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ad0565b600260018190556014546000916128219190611b48565b9050600061283e6103e86123d584612838306114ce565b9061225d565b905060006128558261284f306114ce565b90611ba3565b90504761286182612993565b600061286d4783611ba3565b9050600061288c6103e86123d56012548561225d90919063ffffffff16565b905060006128ab6103e86123d56013548661225d90919063ffffffff16565b905060006128bf6103e86123d5868b61225d565b6003549091506128d8906001600160a01b031684612b35565b6004546128ee906001600160a01b031683612b35565b6128f88782612b9d565b505060018055505050505050565b600080600080600061291887876123be565b94509450945094509450612930898987878787612cd0565b61293b878288612df9565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161298091815260200190565b60405180910390a3505050505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106129c8576129c86132cc565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612a1c57600080fd5b505afa158015612a30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a549190612f07565b81600181518110612a6757612a676132cc565b6001600160a01b039283166020918202929092010152601554612a8d9130911684611bff565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac94790612ac69085906000908690309042906004016131d9565b600060405180830381600087803b158015612ae057600080fd5b505af1158015612af4573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612b299291906131c0565b60405180910390a15050565b6001600160a01b038216611aae5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f74207472616e73666572207468652045544820746f2061207a65726044820152686f206164647265737360b81b6064820152608401610ad0565b601554612bb59030906001600160a01b031684611bff565b601554600090819081906001600160a01b031663f305d7198530888580612be46000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015612c4757600080fd5b505af1158015612c5b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612c809190613082565b604080518481526020810184905290810182905292955090935091507fd7f28048575eead8851d024ead087913957dfb4fd1a02b4d1573f5352a5a2be39060600160405180910390a15050505050565b6001600160a01b038616600090815260176020526040902054612cf39085611ba3565b6001600160a01b038088166000908152601760205260408082209390935590871681522054612d229084611ae9565b6001600160a01b038087166000908152601760209081526040808320949094559189168152601c909152205460ff1615612d93576001600160a01b038616600090815260186020526040902054612d799083611ba3565b6001600160a01b0387166000908152601860205260409020555b6001600160a01b0385166000908152601c602052604090205460ff1615612df1576001600160a01b038516600090815260186020526040902054612dd79082611ae9565b6001600160a01b0386166000908152601860205260409020555b505050505050565b600081118015612e12575060095462010000900460ff16155b15611ae457611ae4838383306000612e306103e86123d5878661225d565b90506000612e3e828661225d565b6001600160a01b038416600090815260176020526040902054909150612e649082611ae9565b6001600160a01b038416600090815260176020908152604080832093909355601c9052205460ff1615612df1576001600160a01b038316600090815260186020526040902054612eb49083611ae9565b6001600160a01b038416600090815260186020526040902055505050505050565b80358015158114612ee557600080fd5b919050565b600060208284031215612efc57600080fd5b8135610d96816132e2565b600060208284031215612f1957600080fd5b8151610d96816132e2565b60008060408385031215612f3757600080fd5b8235612f42816132e2565b946020939093013593505050565b60008060408385031215612f6357600080fd5b8235612f6e816132e2565b91506020830135612f7e816132e2565b809150509250929050565b600080600060608486031215612f9e57600080fd5b8335612fa9816132e2565b92506020840135612fb9816132e2565b929592945050506040919091013590565b60008060408385031215612fdd57600080fd5b8235612fe8816132e2565b9150612ff660208401612ed5565b90509250929050565b60006020828403121561301157600080fd5b610d9682612ed5565b60006020828403121561302c57600080fd5b5035919050565b6000806040838503121561304657600080fd5b82359150612ff660208401612ed5565b60008060006060848603121561306b57600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561309757600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b838110156130e95781516001600160a01b0316875295820195908201906001016130c4565b509495945050505050565b600060208083528351808285015260005b8181101561312157858101830151858201604001528201613105565b81811115613133576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526022908201527f416464726573732063616e6e6f7420626520746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b82815260406020820152600061223260408301846130b0565b85815284602082015260a0604082015260006131f860a08301866130b0565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115613228576132286132a0565b500190565b60008261324a57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615613269576132696132a0565b500290565b600082821015613280576132806132a0565b500390565b6000600019821415613299576132996132a0565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461147657600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206a5f51ac0acb0cde7ae08c8893ba34ce182873288f548af6d860d853f6ed31c364736f6c63430008060033
0x6080604052600280546001600160a01b031990811661dead1790915560038054821673e6c94d4e44d3250e89f04253c6a74153133ebbac1790556004805490911673371c5cd3bf1c3f03514aa63164b614650cacc0ce179055620000716a084595161401484a00000060001962000b3d565b6200007f9060001962000b05565b6005556200009b6103e86a084595161401484a00000062000aee565b600755620000b660326a084595161401484a00000062000aee565b6008556009805464ff00ffffff191664010000010117905569152d02c7e14af6800000600a55600b805460ff191690556103de600c908155600e819055600f5560056010556101f460125561012c60135560c86014553480156200011957600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001805560055460176000620001796000546001600160a01b031690565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001f057600080fd5b505afa15801562000205573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022b919062000aa8565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200027457600080fd5b505afa15801562000289573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002af919062000aa8565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002f857600080fd5b505af11580156200030d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000333919062000aa8565b601680546001600160a01b03199081166001600160a01b039384161790915560158054909116918316919091179055601054600f54600e546200039d9291620003899190620004d1602090811b62001ae917901c565b620004d160201b62001ae91790919060201c565b6011556001601b6000620003b96000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152601b90925290208054909116600117905562000416620004106000546001600160a01b031690565b6200053f565b62000421306200053f565b60165462000438906001600160a01b03166200053f565b6002546200044f906001600160a01b03166200053f565b6200047b620004666000546001600160a01b031690565b6015546001600160a01b031660001962000602565b600080546040516a084595161401484a00000081526001600160a01b0390911691907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35062000b96565b600080620004e0838562000ad3565b905083811015620005385760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b9392505050565b6001600160a01b038116600090815260176020526040902054156200059c576001600160a01b038116600090815260176020526040902054620005829062000739565b6001600160a01b0382166000908152601860205260409020555b6001600160a01b03166000818152601c60205260408120805460ff19166001908117909155601d805491820181559091527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f0180546001600160a01b0319169091179055565b6001600160a01b0383166200066e5760405162461bcd60e51b815260206004820152602b60248201527f42617365526669546f6b656e3a20617070726f76652066726f6d20746865207a60448201526a65726f206164647265737360a81b60648201526084016200052f565b6001600160a01b038216620006d85760405162461bcd60e51b815260206004820152602960248201527f42617365526669546f6b656e3a20617070726f766520746f20746865207a65726044820152686f206164647265737360b81b60648201526084016200052f565b6001600160a01b0383811660008181526019602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000600554821115620007a25760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016200052f565b6000620007ae620007ca565b9050620005388184620007fd60201b62001b481790919060201c565b60008080620007d86200085c565b91509150620007f68183620007fd60201b62001b481790919060201c565b9250505090565b6000808211620008505760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f00000000000060448201526064016200052f565b62000538828462000aee565b60055460009081906a084595161401484a000000825b601d54811015620009ed578260176000601d848154811062000898576200089862000b80565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806200090757508160186000601d8481548110620008e057620008e062000b80565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1562000926575050600554936a084595161401484a0000009350915050565b6200097d60176000601d848154811062000944576200094462000b80565b60009182526020808320909101546001600160a01b03168352828101939093526040909101902054859162001ba362000a48821b17901c565b9250620009d660186000601d84815481106200099d576200099d62000b80565b60009182526020808320909101546001600160a01b03168352828101939093526040909101902054849162001ba362000a48821b17901c565b915080620009e48162000b1f565b91505062000872565b5080158062000a21575062000a1e6a084595161401484a000000600554620007fd60201b62001b481790919060201c565b82105b1562000a3f575050600554926a084595161401484a00000092509050565b90939092509050565b60008282111562000a9c5760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f77000060448201526064016200052f565b62000538828462000b05565b60006020828403121562000abb57600080fd5b81516001600160a01b03811681146200053857600080fd5b6000821982111562000ae95762000ae962000b54565b500190565b60008262000b005762000b0062000b6a565b500490565b60008282101562000b1a5762000b1a62000b54565b500390565b600060001982141562000b365762000b3662000b54565b5060010190565b60008262000b4f5762000b4f62000b6a565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b61337a8062000ba66000396000f3fe6080604052600436106103795760003560e01c806370a08231116101d1578063a9059cbb11610102578063d4cdeb3c116100a0578063e2f456051161006f578063e2f4560514610a30578063f2fde38b14610a46578063f887ea4014610a66578063fd69c21514610a8657600080fd5b8063d4cdeb3c14610990578063d8c6404b146109b0578063dd62ed3e146109ca578063e01af92c14610a1057600080fd5b8063bbde77c1116100dc578063bbde77c114610924578063bbf1af951461093a578063cbf7e8881461095a578063cccc20521461097057600080fd5b8063a9059cbb146108c4578063aacebbe3146108e4578063b225d4b71461090457600080fd5b806388f820201161016f57806391053d941161014957806391053d941461086457806395d89b41146103a7578063a457c2d714610884578063a8aa1b31146108a457600080fd5b806388f82020146107f75780638c0b5e22146108305780638da5cb5b1461084657600080fd5b806379c4903c116101ab57806379c4903c1461078b5780637d8dbe24146107a157806381b1e915146107c1578063872f5969146107e157600080fd5b806370a082311461071e578063715018a61461073e57806375f0a8741461075357600080fd5b80633cffbe3f116102ab5780635342acb411610249578063690c22ca11610223578063690c22ca146106ba5780636b67c4df146106d05780636ddd1713146106e6578063704ce43e1461070857600080fd5b80635342acb41461064b578063589d89dc146106845780636612e66f1461069a57600080fd5b80634549b039116102855780634549b039146105d5578063455a4396146105f55780634d4925ce1461061557806352390c021461062b57600080fd5b80633cffbe3f1461058557806342966c681461059b578063450dde46146105bb57600080fd5b80632242908511610318578063308b0886116102f2578063308b088614610509578063313ce567146105295780633685d41914610545578063395093511461056557600080fd5b806322429085146104a957806323b872dd146104c95780632d838119146104e957600080fd5b806309c58fcd1161035457806309c58fcd146104125780631264c9c41461043157806318160ddd146104515780631cdd3be31461047957600080fd5b8062e6be7b1461038557806306fdde03146103a7578063095ea7b3146103e257600080fd5b3661038057005b600080fd5b34801561039157600080fd5b506103a56103a0366004612eea565b610aa6565b005b3480156103b357600080fd5b5060408051808201825260038152622ba2a760e91b602082015290516103d991906130f4565b60405180910390f35b3480156103ee57600080fd5b506104026103fd366004612f24565b610ba0565b60405190151581526020016103d9565b34801561041e57600080fd5b5060095461040290610100900460ff1681565b34801561043d57600080fd5b506103a561044c366004612fff565b610bb7565b34801561045d57600080fd5b506a084595161401484a0000005b6040519081526020016103d9565b34801561048557600080fd5b50610402610494366004612eea565b601a6020526000908152604090205460ff1681565b3480156104b557600080fd5b506103a56104c4366004613056565b610bfb565b3480156104d557600080fd5b506104026104e4366004612f89565b610cb0565b3480156104f557600080fd5b5061046b61050436600461301a565b610d19565b34801561051557600080fd5b506103a5610524366004612eea565b610d9d565b34801561053557600080fd5b50604051601281526020016103d9565b34801561055157600080fd5b506103a5610560366004612eea565b610ec0565b34801561057157600080fd5b50610402610580366004612f24565b611077565b34801561059157600080fd5b5061046b600f5481565b3480156105a757600080fd5b506103a56105b636600461301a565b6110ad565b3480156105c757600080fd5b506009546104029060ff1681565b3480156105e157600080fd5b5061046b6105f0366004613033565b6112e6565b34801561060157600080fd5b506103a5610610366004612fca565b611385565b34801561062157600080fd5b5061046b60135481565b34801561063757600080fd5b506103a5610646366004612eea565b6113da565b34801561065757600080fd5b50610402610666366004612eea565b6001600160a01b03166000908152601b602052604090205460ff1690565b34801561069057600080fd5b5061046b60065481565b3480156106a657600080fd5b506103a56106b5366004612fca565b611479565b3480156106c657600080fd5b5061046b600d5481565b3480156106dc57600080fd5b5061046b600e5481565b3480156106f257600080fd5b5060095461040290640100000000900460ff1681565b34801561071457600080fd5b5061046b60105481565b34801561072a57600080fd5b5061046b610739366004612eea565b6114ce565b34801561074a57600080fd5b506103a561152d565b34801561075f57600080fd5b50600354610773906001600160a01b031681565b6040516001600160a01b0390911681526020016103d9565b34801561079757600080fd5b5061046b60125481565b3480156107ad57600080fd5b506103a56107bc36600461301a565b6115a1565b3480156107cd57600080fd5b50600454610773906001600160a01b031681565b3480156107ed57600080fd5b5061046b600c5481565b34801561080357600080fd5b50610402610812366004612eea565b6001600160a01b03166000908152601c602052604090205460ff1690565b34801561083c57600080fd5b5061046b60075481565b34801561085257600080fd5b506000546001600160a01b0316610773565b34801561087057600080fd5b506103a561087f36600461301a565b6115e3565b34801561089057600080fd5b5061040261089f366004612f24565b611625565b3480156108b057600080fd5b50601654610773906001600160a01b031681565b3480156108d057600080fd5b506104026108df366004612f24565b611674565b3480156108f057600080fd5b506103a56108ff366004612eea565b611681565b34801561091057600080fd5b506103a561091f36600461301a565b6117a3565b34801561093057600080fd5b5061046b60085481565b34801561094657600080fd5b506103a5610955366004612fff565b6117e5565b34801561096657600080fd5b5061046b60145481565b34801561097c57600080fd5b506103a561098b366004613056565b611839565b34801561099c57600080fd5b506009546104029062010000900460ff1681565b3480156109bc57600080fd5b50600b546104029060ff1681565b3480156109d657600080fd5b5061046b6109e5366004612f50565b6001600160a01b03918216600090815260196020908152604080832093909416825291909152205490565b348015610a1c57600080fd5b506103a5610a2b366004612fff565b6118e0565b348015610a3c57600080fd5b5061046b600a5481565b348015610a5257600080fd5b506103a5610a61366004612eea565b61192a565b348015610a7257600080fd5b50601554610773906001600160a01b031681565b348015610a9257600080fd5b506103a5610aa1366004612f24565b611a14565b6000546001600160a01b03163314610ad95760405162461bcd60e51b8152600401610ad09061318b565b60405180910390fd5b6015546001600160a01b0382811691161415610b435760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b6064820152608401610ad0565b6015546040516001600160a01b03918216918316907fc4382ee892d64a85fffb798adefd9dd8fcdeb2b1ababe74b46cdae7fe88da4e090600090a3601580546001600160a01b0319166001600160a01b0392909216919091179055565b6000610bad338484611bff565b5060015b92915050565b6000546001600160a01b03163314610be15760405162461bcd60e51b8152600401610ad09061318b565b600980549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314610c255760405162461bcd60e51b8152600401610ad09061318b565b610c3981610c338585611ae9565b90611ae9565b601181905560641015610ca25760405162461bcd60e51b815260206004820152602b60248201527f546f74616c20466565732063616e6e6f7420626520677265617465722074686160448201526a6e2031302520283130302960a81b6064820152608401610ad0565b600e92909255600f55601055565b6000610cbd848484611d33565b610d0f8433610d0a856040518060600160405280602881526020016132f8602891396001600160a01b038a1660009081526019602090815260408083203384529091529020549190612203565b611bff565b5060019392505050565b6000600554821115610d805760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610ad0565b6000610d8a61223a565b9050610d968382611b48565b9392505050565b6000546001600160a01b03163314610dc75760405162461bcd60e51b8152600401610ad09061318b565b806001600160a01b038116610dee5760405162461bcd60e51b8152600401610ad090613149565b6004546001600160a01b0383811691161415610e625760405162461bcd60e51b815260206004820152602d60248201527f546865204465766f6c706d656e742077616c6c657420697320616c726561647960448201526c2074686973206164647265737360981b6064820152608401610ad0565b6004546040516001600160a01b03918216918416907fc5906c728a10a317ee181230349b48d3ea470098faab8348f8d45d4e6e09800290600090a350600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610eea5760405162461bcd60e51b8152600401610ad09061318b565b6001600160a01b0381166000908152601c602052604090205460ff16610f525760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610ad0565b60005b601d5481101561107357816001600160a01b0316601d8281548110610f7c57610f7c6132cc565b6000918252602090912001546001600160a01b0316141561106157601d8054610fa79060019061326e565b81548110610fb757610fb76132cc565b600091825260209091200154601d80546001600160a01b039092169183908110610fe357610fe36132cc565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152601882526040808220829055601c90925220805460ff19169055601d80548061103b5761103b6132b6565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061106b81613285565b915050610f55565b5050565b3360008181526019602090815260408083206001600160a01b03871684529091528120549091610bad918590610d0a9086611ae9565b600260015414156111005760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ad0565b6002600155338061115d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610ad0565b6002546001600160a01b03828116911614156111c55760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865206275726e206164647265736044820152607360f81b6064820152608401610ad0565b60006111d0826114ce565b90508281101561122d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610ad0565b600061124161123a61223a565b859061225d565b6001600160a01b0384166000908152601760205260409020549091506112679082611ba3565b6001600160a01b038416600090815260176020908152604080832093909355601c9052205460ff16156112d1576001600160a01b0383166000908152601860205260409020546112b79085611ba3565b6001600160a01b0384166000908152601860205260409020555b6112dc8385836122dc565b5050600180555050565b60006a084595161401484a0000008311156113435760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610ad0565b6000826113665760006113578560006123be565b50929550610bb1945050505050565b50601154600061137685836123be565b50919550610bb1945050505050565b6000546001600160a01b031633146113af5760405162461bcd60e51b8152600401610ad09061318b565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146114045760405162461bcd60e51b8152600401610ad09061318b565b6001600160a01b0381166000908152601c602052604090205460ff161561146d5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f7420696e636c756465640000000000000000006044820152606401610ad0565b61147681612434565b50565b6000546001600160a01b031633146114a35760405162461bcd60e51b8152600401610ad09061318b565b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b6001600160a01b0381166000908152601c602052604081205460ff161561150b57506001600160a01b031660009081526018602052604090205490565b6001600160a01b038216600090815260176020526040902054610bb190610d19565b6000546001600160a01b031633146115575760405162461bcd60e51b8152600401610ad09061318b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146115cb5760405162461bcd60e51b8152600401610ad09061318b565b6115dd81670de0b6b3a764000061324f565b60075550565b6000546001600160a01b0316331461160d5760405162461bcd60e51b8152600401610ad09061318b565b61161f81670de0b6b3a764000061324f565b60085550565b6000610bad3384610d0a85604051806060016040528060258152602001613320602591393360009081526019602090815260408083206001600160a01b038d1684529091529020549190612203565b6000610bad338484611d33565b6000546001600160a01b031633146116ab5760405162461bcd60e51b8152600401610ad09061318b565b806001600160a01b0381166116d25760405162461bcd60e51b8152600401610ad090613149565b6003546001600160a01b03838116911614156117455760405162461bcd60e51b815260206004820152602c60248201527f546865204d61726b6574696e672077616c6c657420697320616c72656164792060448201526b74686973206164647265737360a01b6064820152608401610ad0565b6003546040516001600160a01b03918216918416907f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6790600090a350600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146117cd5760405162461bcd60e51b8152600401610ad09061318b565b6117df81670de0b6b3a764000061324f565b600a5550565b6000546001600160a01b0316331461180f5760405162461bcd60e51b8152600401610ad09061318b565b600b805460ff191682151590811790915560ff161561147657611833426005613215565b600d5550565b6000546001600160a01b031633146118635760405162461bcd60e51b8152600401610ad09061318b565b600061187382610c338686611ae9565b9050806103e8146118d15760405162461bcd60e51b815260206004820152602260248201527f546f74616c206d75737420626520657175616c20746f20313030302028313030604482015261252960f01b6064820152608401610ad0565b50601292909255601355601455565b6000546001600160a01b0316331461190a5760405162461bcd60e51b8152600401610ad09061318b565b600980549115156401000000000264ff0000000019909216919091179055565b6000546001600160a01b031633146119545760405162461bcd60e51b8152600401610ad09061318b565b6001600160a01b0381166119b95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ad0565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611a3e5760405162461bcd60e51b8152600401610ad09061318b565b6001600160a01b038216611aae5760405162461bcd60e51b815260206004820152603160248201527f43616e6e6f7420776974686472617720746865204554482062616c616e636520604482015270746f2061207a65726f206164647265737360781b6064820152608401610ad0565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611ae4573d6000803e3d6000fd5b505050565b600080611af68385613215565b905083811015610d965760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610ad0565b6000808211611b995760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f0000000000006044820152606401610ad0565b610d96828461322d565b600082821115611bf55760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606401610ad0565b610d96828461326e565b6001600160a01b038316611c695760405162461bcd60e51b815260206004820152602b60248201527f42617365526669546f6b656e3a20617070726f76652066726f6d20746865207a60448201526a65726f206164647265737360a81b6064820152608401610ad0565b6001600160a01b038216611cd15760405162461bcd60e51b815260206004820152602960248201527f42617365526669546f6b656e3a20617070726f766520746f20746865207a65726044820152686f206164647265737360b81b6064820152608401610ad0565b6001600160a01b0383811660008181526019602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611d975760405162461bcd60e51b815260206004820152602560248201527f546f6b656e3a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ad0565b6001600160a01b038216611df95760405162461bcd60e51b815260206004820152602360248201527f546f6b656e3a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ad0565b6002546001600160a01b0384811691161415611e655760405162461bcd60e51b815260206004820152602560248201527f546f6b656e3a207472616e736665722066726f6d20746865206275726e206164604482015264647265737360d81b6064820152608401610ad0565b60008111611ec75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ad0565b600954610100900460ff16611f445760405162461bcd60e51b815260206004820152603860248201527f54686973206163636f756e742063616e6e6f742073656e6420746f6b656e732060448201527f756e74696c2074726164696e6720697320656e61626c656400000000000000006064820152608401610ad0565b6001600160a01b0383166000908152601a602052604090205460ff16158015611f8657506001600160a01b0382166000908152601a602052604090205460ff16155b611fc85760405162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b6044820152606401610ad0565b6015546001600160a01b03848116911614801590611fff57506001600160a01b0382166000908152601b602052604090205460ff16155b801561202457506001600160a01b0383166000908152601b602052604090205460ff16155b15612097576007548111156120975760405162461bcd60e51b815260206004820152603360248201527f5472616e7366657220616d6f756e74206578636565647320746865204d6178206044820152722a3930b739b0b1ba34b7b71020b6b7bab73a1760691b6064820152608401610ad0565b60006008541180156120c257506001600160a01b0382166000908152601b602052604090205460ff16155b80156120e757506001600160a01b0383166000908152601b602052604090205460ff16155b801561210157506016546001600160a01b03838116911614155b15612187576000612111836114ce565b6008549091506121218383613215565b11156121855760405162461bcd60e51b815260206004820152602d60248201527f4e65772062616c616e636520776f756c642065786365656420746865206d617860448201526c57616c6c657442616c616e636560981b6064820152608401610ad0565b505b60095460ff8082169162010000900416156121a0575060005b6001600160a01b0384166000908152601b602052604090205460ff16806121df57506001600160a01b0383166000908152601b602052604090205460ff165b156121e8575060005b6121f1836124f4565b6121fd84848484612591565b50505050565b600081848411156122275760405162461bcd60e51b8152600401610ad091906130f4565b50612232838561326e565b949350505050565b600080600061224761260a565b90925090506122568282611b48565b9250505090565b60008261226c57506000610bb1565b6000612278838561324f565b905082612285858361322d565b14610d965760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ad0565b6002546001600160a01b03166000908152601760205260409020546123019082611ae9565b600280546001600160a01b0390811660009081526017602090815260408083209590955592549091168152601c909152205460ff161561237c576002546001600160a01b03166000908152601860205260409020546123609083611ae9565b6002546001600160a01b03166000908152601860205260409020555b6002546040518381526001600160a01b03918216918516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611d26565b600080808080806123db6103e86123d58a8a61225d565b90611b48565b905060006123e98983611ba3565b905060006123f561223a565b905060006124038b8361225d565b90506000612411858461225d565b9050600061241f8383611ba3565b929d929c9b5093995091975095505050505050565b6001600160a01b0381166000908152601760205260409020541561248e576001600160a01b03811660009081526017602052604090205461247490610d19565b6001600160a01b0382166000908152601860205260409020555b6001600160a01b03166000818152601c60205260408120805460ff19166001908117909155601d805491820181559091527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f0180546001600160a01b0319169091179055565b60095462010000900460ff1661147657600061250f306114ce565b600a54600954919250821015906301000000900460ff161580156125305750805b80156125465750600954640100000000900460ff165b801561255f57506016546001600160a01b038481169116145b15611ae4576009805463ff0000001916630100000017905561257f6127b7565b6009805463ff00000019169055505050565b601154600b5460ff1680156125a85750600d544211155b6125b257806125b6565b600c545b6016549091506001600160a01b038681169116148015906125e557506016546001600160a01b03858116911614155b156125ee575060005b816125f7575060005b61260385858584612906565b5050505050565b60055460009081906a084595161401484a000000825b601d5481101561276d578260176000601d8481548110612642576126426132cc565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806126ad57508160186000601d8481548110612686576126866132cc565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156126cb575050600554936a084595161401484a0000009350915050565b61271160176000601d84815481106126e5576126e56132cc565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611ba3565b925061275960186000601d848154811061272d5761272d6132cc565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611ba3565b91508061276581613285565b915050612620565b50801580612791575060055461278e906a084595161401484a000000611b48565b82105b156127ae575050600554926a084595161401484a00000092509050565b90939092509050565b6002600154141561280a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ad0565b600260018190556014546000916128219190611b48565b9050600061283e6103e86123d584612838306114ce565b9061225d565b905060006128558261284f306114ce565b90611ba3565b90504761286182612993565b600061286d4783611ba3565b9050600061288c6103e86123d56012548561225d90919063ffffffff16565b905060006128ab6103e86123d56013548661225d90919063ffffffff16565b905060006128bf6103e86123d5868b61225d565b6003549091506128d8906001600160a01b031684612b35565b6004546128ee906001600160a01b031683612b35565b6128f88782612b9d565b505060018055505050505050565b600080600080600061291887876123be565b94509450945094509450612930898987878787612cd0565b61293b878288612df9565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161298091815260200190565b60405180910390a3505050505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106129c8576129c86132cc565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612a1c57600080fd5b505afa158015612a30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a549190612f07565b81600181518110612a6757612a676132cc565b6001600160a01b039283166020918202929092010152601554612a8d9130911684611bff565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac94790612ac69085906000908690309042906004016131d9565b600060405180830381600087803b158015612ae057600080fd5b505af1158015612af4573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612b299291906131c0565b60405180910390a15050565b6001600160a01b038216611aae5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f74207472616e73666572207468652045544820746f2061207a65726044820152686f206164647265737360b81b6064820152608401610ad0565b601554612bb59030906001600160a01b031684611bff565b601554600090819081906001600160a01b031663f305d7198530888580612be46000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015612c4757600080fd5b505af1158015612c5b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612c809190613082565b604080518481526020810184905290810182905292955090935091507fd7f28048575eead8851d024ead087913957dfb4fd1a02b4d1573f5352a5a2be39060600160405180910390a15050505050565b6001600160a01b038616600090815260176020526040902054612cf39085611ba3565b6001600160a01b038088166000908152601760205260408082209390935590871681522054612d229084611ae9565b6001600160a01b038087166000908152601760209081526040808320949094559189168152601c909152205460ff1615612d93576001600160a01b038616600090815260186020526040902054612d799083611ba3565b6001600160a01b0387166000908152601860205260409020555b6001600160a01b0385166000908152601c602052604090205460ff1615612df1576001600160a01b038516600090815260186020526040902054612dd79082611ae9565b6001600160a01b0386166000908152601860205260409020555b505050505050565b600081118015612e12575060095462010000900460ff16155b15611ae457611ae4838383306000612e306103e86123d5878661225d565b90506000612e3e828661225d565b6001600160a01b038416600090815260176020526040902054909150612e649082611ae9565b6001600160a01b038416600090815260176020908152604080832093909355601c9052205460ff1615612df1576001600160a01b038316600090815260186020526040902054612eb49083611ae9565b6001600160a01b038416600090815260186020526040902055505050505050565b80358015158114612ee557600080fd5b919050565b600060208284031215612efc57600080fd5b8135610d96816132e2565b600060208284031215612f1957600080fd5b8151610d96816132e2565b60008060408385031215612f3757600080fd5b8235612f42816132e2565b946020939093013593505050565b60008060408385031215612f6357600080fd5b8235612f6e816132e2565b91506020830135612f7e816132e2565b809150509250929050565b600080600060608486031215612f9e57600080fd5b8335612fa9816132e2565b92506020840135612fb9816132e2565b929592945050506040919091013590565b60008060408385031215612fdd57600080fd5b8235612fe8816132e2565b9150612ff660208401612ed5565b90509250929050565b60006020828403121561301157600080fd5b610d9682612ed5565b60006020828403121561302c57600080fd5b5035919050565b6000806040838503121561304657600080fd5b82359150612ff660208401612ed5565b60008060006060848603121561306b57600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561309757600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b838110156130e95781516001600160a01b0316875295820195908201906001016130c4565b509495945050505050565b600060208083528351808285015260005b8181101561312157858101830151858201604001528201613105565b81811115613133576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526022908201527f416464726573732063616e6e6f7420626520746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b82815260406020820152600061223260408301846130b0565b85815284602082015260a0604082015260006131f860a08301866130b0565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115613228576132286132a0565b500190565b60008261324a57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615613269576132696132a0565b500290565b600082821015613280576132806132a0565b500390565b6000600019821415613299576132996132a0565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461147657600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206a5f51ac0acb0cde7ae08c8893ba34ce182873288f548af6d860d853f6ed31c364736f6c63430008060033