0x60806040526000600a55600b80546001600160c81b0319167001000000000000000000000000000003201790553480156200003957600080fd5b50733cc6cdda760b79bafa08df41ecfa224f810dceb660016040518060400160405280601681526020017f48616c66204176652041636365737320506173736573000000000000000000008152506040518060400160405280601681526020017f48616c6620417665204163636573732050617373657300000000000000000000815250620000d7620000d16200024860201b60201c565b6200024c565b6003620000e5838262000341565b506004620000f4828262000341565b506001805550506daaeb6d7670e522a718067333cd4e3b15620002405780156200018e57604051633e9f1edf60e11b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e90637d3e3dbe906044015b600060405180830381600087803b1580156200016f57600080fd5b505af115801562000184573d6000803e3d6000fd5b5050505062000240565b6001600160a01b03821615620001df5760405163a0af290360e01b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e9063a0af29039060440162000154565b604051632210724360e11b81523060048201526daaeb6d7670e522a718067333cd4e90634420e48690602401600060405180830381600087803b1580156200022657600080fd5b505af11580156200023b573d6000803e3d6000fd5b505050505b50506200040d565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c757607f821691505b602082108103620002e857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033c57600081815260208120601f850160051c81016020861015620003175750805b601f850160051c820191505b81811015620003385782815560010162000323565b5050505b505050565b81516001600160401b038111156200035d576200035d6200029c565b62000375816200036e8454620002b2565b84620002ee565b602080601f831160018114620003ad5760008415620003945750858301515b600019600386901b1c1916600185901b17855562000338565b600085815260208120601f198616915b82811015620003de57888601518255948401946001909101908401620003bd565b5085821015620003fd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612662806200041d6000396000f3fe6080604052600436106101da5760003560e01c80636afcb7b011610101578063a22cb4651161009a578063d5abeb011161006c578063d5abeb011461058c578063dc33e681146105c4578063e985e9c5146105e4578063efbd73f414610604578063f2fde38b1461062457005b8063a22cb46514610517578063a2309ff814610537578063b88d4fde1461054c578063c87b56dd1461056c57005b8063841718a6116100d3578063841718a6146104a45780638ac068a2146104c45780638da5cb5b146104e457806395d89b411461050257005b80636afcb7b01461041c57806370a082311461042f57806379fb9b841461044f57806381e9b2c71461048e57005b806342842e0e11610173578063506cd0b211610145578063506cd0b21461039b57806355f804b3146103bb5780636352211e146103db57806368428a1b146103fb57005b806342842e0e1461030e57806342966c681461032e578063438b63001461034e5780634f558e791461037b57005b806318160ddd116101ac57806318160ddd1461029257806323b872dd146102b95780633bce4276146102d95780633ccfd60b146102f957005b806301ffc9a7146101e357806306fdde0314610218578063081812fc1461023a578063095ea7b31461027257005b366101e157005b005b3480156101ef57600080fd5b506102036101fe366004611f34565b610644565b60405190151581526020015b60405180910390f35b34801561022457600080fd5b5061022d610696565b60405161020f9190611fa1565b34801561024657600080fd5b5061025a610255366004611fb4565b610728565b6040516001600160a01b03909116815260200161020f565b34801561027e57600080fd5b506101e161028d366004611fe9565b61076c565b34801561029e57600080fd5b5060025460015403600019015b60405190815260200161020f565b3480156102c557600080fd5b506101e16102d4366004612013565b6107f9565b3480156102e557600080fd5b506101e16102f436600461204f565b61095a565b34801561030557600080fd5b506101e16109b1565b34801561031a57600080fd5b506101e1610329366004612013565b610a3e565b34801561033a57600080fd5b506101e1610349366004611fb4565b610b8f565b34801561035a57600080fd5b5061036e610369366004612078565b610c4f565b60405161020f9190612093565b34801561038757600080fd5b50610203610396366004611fb4565b610d4a565b3480156103a757600080fd5b506101e16103b6366004611fb4565b610d55565b3480156103c757600080fd5b506101e16103d63660046120d7565b610d84565b3480156103e757600080fd5b5061025a6103f6366004611fb4565b610dbb565b34801561040757600080fd5b50600b5461020390600160c01b900460ff1681565b6101e161042a36600461204f565b610dcd565b34801561043b57600080fd5b506102ab61044a366004612078565b610fb4565b34801561045b57600080fd5b50600b5461047690600160801b90046001600160401b031681565b6040516001600160401b03909116815260200161020f565b34801561049a57600080fd5b506102ab600a5481565b3480156104b057600080fd5b506101e16104bf366004612156565b611002565b3480156104d057600080fd5b506101e16104df366004612173565b61104a565b3480156104f057600080fd5b506000546001600160a01b031661025a565b34801561050e57600080fd5b5061022d611096565b34801561052357600080fd5b506101e161053236600461219c565b6110a5565b34801561054357600080fd5b506102ab61113a565b34801561055857600080fd5b506101e16105673660046121e9565b61114e565b34801561057857600080fd5b5061022d610587366004611fb4565b6112ad565b34801561059857600080fd5b50600b546105ac906001600160801b031681565b6040516001600160801b03909116815260200161020f565b3480156105d057600080fd5b506102ab6105df366004612078565b611378565b3480156105f057600080fd5b506102036105ff3660046122c4565b6113a6565b34801561061057600080fd5b506101e161061f3660046122f7565b6113d4565b34801561063057600080fd5b506101e161063f366004612078565b6114b4565b60006001600160e01b031982166380ac58cd60e01b148061067557506001600160e01b03198216635b5e139f60e01b145b8061069057506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600380546106a59061231a565b80601f01602080910402602001604051908101604052809291908181526020018280546106d19061231a565b801561071e5780601f106106f35761010080835404028352916020019161071e565b820191906000526020600020905b81548152906001019060200180831161070157829003601f168201915b5050505050905090565b60006107338261154c565b610750576040516333d1c03960e21b815260040160405180910390fd5b506000908152600760205260409020546001600160a01b031690565b600061077782610dbb565b9050806001600160a01b0316836001600160a01b0316036107ab5760405163250fdee360e21b815260040160405180910390fd5b336001600160a01b038216148015906107cb57506107c981336113a6565b155b156107e9576040516367d9dca160e11b815260040160405180910390fd5b6107f4838383611585565b505050565b826daaeb6d7670e522a718067333cd4e3b1561094957336001600160a01b0382160361082f5761082a8484846115e1565b610954565b604051633185c44d60e21b81523060048201523360248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa15801561087e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a29190612354565b80156109255750604051633185c44d60e21b81523060048201526001600160a01b03821660248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015610901573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109259190612354565b61094957604051633b79c77360e21b81523360048201526024015b60405180910390fd5b6109548484846115e1565b50505050565b6000546001600160a01b031633146109845760405162461bcd60e51b815260040161094090612371565b600b80546001600160401b03909216600160801b0267ffffffffffffffff60801b19909216919091179055565b6000546001600160a01b031633146109db5760405162461bcd60e51b815260040161094090612371565b600080546040516001600160a01b039091169047908381818185875af1925050503d8060008114610a28576040519150601f19603f3d011682016040523d82523d6000602084013e610a2d565b606091505b5050905080610a3b57600080fd5b50565b826daaeb6d7670e522a718067333cd4e3b15610b8457336001600160a01b03821603610a6f5761082a8484846115ec565b604051633185c44d60e21b81523060048201523360248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015610abe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae29190612354565b8015610b655750604051633185c44d60e21b81523060048201526001600160a01b03821660248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015610b41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b659190612354565b610b8457604051633b79c77360e21b8152336004820152602401610940565b6109548484846115ec565b610b9881610d4a565b610bdb5760405162461bcd60e51b8152602060048201526014602482015273151bdad95b88191bd95cc81b9bdd08195e1a5cdd60621b6044820152606401610940565b610be481610dbb565b6001600160a01b0316336001600160a01b031614610c445760405162461bcd60e51b815260206004820152601a60248201527f4e6f7420746865206f776e6572206f662074686520746f6b656e0000000000006044820152606401610940565b610a3b816000611607565b60606000610c5c83610fb4565b90506000816001600160401b03811115610c7857610c786121d3565b604051908082528060200260200182016040528015610ca1578160200160208202803683370190505b509050600160005b8381108015610cc35750600b546001600160801b03168211155b15610d4057610cd182610d4a565b1515600103610d2e576000610ce583610dbb565b9050866001600160a01b0316816001600160a01b031603610d2c5782848381518110610d1357610d136123a6565b602090810291909101015281610d28816123d2565b9250505b505b81610d38816123d2565b925050610ca9565b5090949350505050565b60006106908261154c565b6000546001600160a01b03163314610d7f5760405162461bcd60e51b815260040161094090612371565b600a55565b6000546001600160a01b03163314610dae5760405162461bcd60e51b815260040161094090612371565b60096107f4828483612439565b6000610dc6826117bb565b5192915050565b806001600160401b031660008111610e1e5760405162461bcd60e51b8152602060048201526014602482015273496e76616c6964206d696e7420616d6f756e742160601b6044820152606401610940565b600b546001600160801b031681610e3361113a565b610e3d91906124f8565b1115610e825760405162461bcd60e51b81526020600482015260146024820152734d617820737570706c792065786365656465642160601b6044820152606401610940565b600b54600160c01b900460ff16610ed25760405162461bcd60e51b81526020600482015260146024820152735075626c6963206973206e6f742041637469766560601b6044820152606401610940565b600b546001600160401b03600160801b9091048116908316610ef333611378565b610efd91906124f8565b1115610f425760405162461bcd60e51b815260206004820152601460248201527326b4b73a103634b6b4ba1032bc31b2b2b232b21760611b6044820152606401610940565b816001600160401b0316600a54610f59919061250b565b3414610f9d5760405162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e742066756e64732160681b6044820152606401610940565b610fb033836001600160401b03166118e2565b5050565b60006001600160a01b038216610fdd576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600660205260409020546001600160401b031690565b6000546001600160a01b0316331461102c5760405162461bcd60e51b815260040161094090612371565b600b8054911515600160c01b0260ff60c01b19909216919091179055565b6000546001600160a01b031633146110745760405162461bcd60e51b815260040161094090612371565b600b80546001600160801b0319166001600160801b0392909216919091179055565b6060600480546106a59061231a565b336001600160a01b038316036110ce5760405163b06307db60e01b815260040160405180910390fd5b3360008181526008602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60006111496001546000190190565b905090565b836daaeb6d7670e522a718067333cd4e3b1561129a57336001600160a01b0382160361118557611180858585856118fc565b6112a6565b604051633185c44d60e21b81523060048201523360248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa1580156111d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f89190612354565b801561127b5750604051633185c44d60e21b81523060048201526001600160a01b03821660248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015611257573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127b9190612354565b61129a57604051633b79c77360e21b8152336004820152602401610940565b6112a6858585856118fc565b5050505050565b60606112b88261154c565b61131c5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610940565b6000611326611947565b905060008151116113465760405180602001604052806000815250611371565b8061135084611956565b604051602001611361929190612522565b6040516020818303038152906040525b9392505050565b6001600160a01b038116600090815260066020526040812054600160401b90046001600160401b0316610690565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205460ff1690565b816000811161141c5760405162461bcd60e51b8152602060048201526014602482015273496e76616c6964206d696e7420616d6f756e742160601b6044820152606401610940565b600b546001600160801b03168161143161113a565b61143b91906124f8565b11156114805760405162461bcd60e51b81526020600482015260146024820152734d617820737570706c792065786365656465642160601b6044820152606401610940565b6000546001600160a01b031633146114aa5760405162461bcd60e51b815260040161094090612371565b6107f482846118e2565b6000546001600160a01b031633146114de5760405162461bcd60e51b815260040161094090612371565b6001600160a01b0381166115435760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610940565b610a3b81611a5e565b600081600111158015611560575060015482105b8015610690575050600090815260056020526040902054600160e01b900460ff161590565b60008281526007602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6107f4838383611aae565b6107f48383836040518060200160405280600081525061114e565b6000611612836117bb565b80519091508215611678576000336001600160a01b038316148061163b575061163b82336113a6565b8061165657503361164b86610728565b6001600160a01b0316145b90508061167657604051632ce44b5f60e11b815260040160405180910390fd5b505b61168460008583611585565b6001600160a01b0380821660008181526006602090815260408083208054600160801b6000196001600160401b0380841691909101811667ffffffffffffffff198416811783900482166001908101831690930277ffffffffffffffff0000000000000000ffffffffffffffff19909416179290921783558b86526005909452828520805460ff60e01b1942909316600160a01b026001600160e01b03199091169097179690961716600160e01b17855591890180845292208054919490911661178257600154821461178257805460208701516001600160401b0316600160a01b026001600160e01b03199091166001600160a01b038716171781555b5050604051869250600091506001600160a01b0384169060008051602061260d833981519152908390a450506002805460010190555050565b604080516060810182526000808252602082018190529181019190915281806001111580156117eb575060015481105b156118c957600081815260056020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff161515918101829052906118c75780516001600160a01b03161561185e579392505050565b5060001901600081815260056020908152604091829020825160608101845290546001600160a01b038116808352600160a01b82046001600160401b031693830193909352600160e01b900460ff16151592810192909252156118c2579392505050565b61185e565b505b604051636f96cda160e11b815260040160405180910390fd5b610fb0828260405180602001604052806000815250611c87565b611907848484611aae565b6001600160a01b0383163b15158015611929575061192784848484611c94565b155b15610954576040516368d2bf6b60e11b815260040160405180910390fd5b6060600980546106a59061231a565b60608160000361197d5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156119a75780611991816123d2565b91506119a09050600a83612577565b9150611981565b6000816001600160401b038111156119c1576119c16121d3565b6040519080825280601f01601f1916602001820160405280156119eb576020820181803683370190505b5090505b8415611a5657611a0060018361258b565b9150611a0d600a8661259e565b611a189060306124f8565b60f81b818381518110611a2d57611a2d6123a6565b60200101906001600160f81b031916908160001a905350611a4f600a86612577565b94506119ef565b949350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000611ab9826117bb565b9050836001600160a01b031681600001516001600160a01b031614611af05760405162a1148160e81b815260040160405180910390fd5b6000336001600160a01b0386161480611b0e5750611b0e85336113a6565b80611b29575033611b1e84610728565b6001600160a01b0316145b905080611b4957604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b038416611b7057604051633a954ecd60e21b815260040160405180910390fd5b611b7c60008487611585565b6001600160a01b038581166000908152600660209081526040808320805467ffffffffffffffff198082166001600160401b0392831660001901831617909255898616808652838620805493841693831660019081018416949094179055898652600590945282852080546001600160e01b031916909417600160a01b42909216919091021783558701808452922080549193909116611c50576001548214611c5057805460208601516001600160401b0316600160a01b026001600160e01b03199091166001600160a01b038a16171781555b50505082846001600160a01b0316866001600160a01b031660008051602061260d83398151915260405160405180910390a46112a6565b6107f48383836001611d7f565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290611cc99033908990889088906004016125b2565b6020604051808303816000875af1925050508015611d04575060408051601f3d908101601f19168201909252611d01918101906125ef565b60015b611d62573d808015611d32576040519150601f19603f3d011682016040523d82523d6000602084013e611d37565b606091505b508051600003611d5a576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b6001546001600160a01b038516611da857604051622e076360e81b815260040160405180910390fd5b83600003611dc95760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b038516600081815260066020908152604080832080546001600160801b031981166001600160401b038083168c018116918217600160401b67ffffffffffffffff1990941690921783900481168c01811690920217909155858452600590925290912080546001600160e01b031916909217600160a01b429092169190910217905580808501838015611e6c57506001600160a01b0387163b15155b15611ee2575b60405182906001600160a01b0389169060009060008051602061260d833981519152908290a4611eab6000888480600101955088611c94565b611ec8576040516368d2bf6b60e11b815260040160405180910390fd5b808203611e72578260015414611edd57600080fd5b611f15565b5b6040516001830192906001600160a01b0389169060009060008051602061260d833981519152908290a4808203611ee3575b506001556112a6565b6001600160e01b031981168114610a3b57600080fd5b600060208284031215611f4657600080fd5b813561137181611f1e565b60005b83811015611f6c578181015183820152602001611f54565b50506000910152565b60008151808452611f8d816020860160208601611f51565b601f01601f19169290920160200192915050565b6020815260006113716020830184611f75565b600060208284031215611fc657600080fd5b5035919050565b80356001600160a01b0381168114611fe457600080fd5b919050565b60008060408385031215611ffc57600080fd5b61200583611fcd565b946020939093013593505050565b60008060006060848603121561202857600080fd5b61203184611fcd565b925061203f60208501611fcd565b9150604084013590509250925092565b60006020828403121561206157600080fd5b81356001600160401b038116811461137157600080fd5b60006020828403121561208a57600080fd5b61137182611fcd565b6020808252825182820181905260009190848201906040850190845b818110156120cb578351835292840192918401916001016120af565b50909695505050505050565b600080602083850312156120ea57600080fd5b82356001600160401b038082111561210157600080fd5b818501915085601f83011261211557600080fd5b81358181111561212457600080fd5b86602082850101111561213657600080fd5b60209290920196919550909350505050565b8015158114610a3b57600080fd5b60006020828403121561216857600080fd5b813561137181612148565b60006020828403121561218557600080fd5b81356001600160801b038116811461137157600080fd5b600080604083850312156121af57600080fd5b6121b883611fcd565b915060208301356121c881612148565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156121ff57600080fd5b61220885611fcd565b935061221660208601611fcd565b92506040850135915060608501356001600160401b038082111561223957600080fd5b818701915087601f83011261224d57600080fd5b81358181111561225f5761225f6121d3565b604051601f8201601f19908116603f01168101908382118183101715612287576122876121d3565b816040528281528a60208487010111156122a057600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156122d757600080fd5b6122e083611fcd565b91506122ee60208401611fcd565b90509250929050565b6000806040838503121561230a57600080fd5b823591506122ee60208401611fcd565b600181811c9082168061232e57607f821691505b60208210810361234e57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561236657600080fd5b815161137181612148565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016123e4576123e46123bc565b5060010190565b601f8211156107f457600081815260208120601f850160051c810160208610156124125750805b601f850160051c820191505b818110156124315782815560010161241e565b505050505050565b6001600160401b03831115612450576124506121d3565b6124648361245e835461231a565b836123eb565b6000601f84116001811461249857600085156124805750838201355b600019600387901b1c1916600186901b1783556112a6565b600083815260209020601f19861690835b828110156124c957868501358255602094850194600190920191016124a9565b50868210156124e65760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b80820180821115610690576106906123bc565b8082028115828204841417610690576106906123bc565b60008351612534818460208801611f51565b835190830190612548818360208801611f51565b64173539b7b760d91b9101908152600501949350505050565b634e487b7160e01b600052601260045260246000fd5b60008261258657612586612561565b500490565b81810381811115610690576106906123bc565b6000826125ad576125ad612561565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906125e590830184611f75565b9695505050505050565b60006020828403121561260157600080fd5b815161137181611f1e56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212209b651a4eb5161fb0f44f1e28d62d5fd0fb03864d054e06fd7a2c6abbb5c5433864736f6c63430008110033