0x60a0604052600060015534801561001557600080fd5b5033606081901b60805261120161003760003960006105bd01526112016000f3fe60806040526004361061014b5760003560e01c80636352211e116100b6578063ad6820881161006f578063ad6820881461036e578063b88d4fde1461039b578063bf8fbbd2146103bb578063c87b56dd146103d6578063e8a3d485146103f6578063e985e9c51461040b57600080fd5b80636352211e146102e657806370a082311461030657806395d89b411461018557806398710d1e14610326578063a0712d681461033b578063a22cb4651461034e57600080fd5b806323b872dd1161010857806323b872dd1461025157806332cb6b0c146102715780633ccfd60b1461028757806342842e0e1461029c578063490d1bab146102bc5780635b70ea9f146102d157600080fd5b806301ffc9a71461015057806306fdde0314610185578063081812fc146101bf578063095ea7b3146101f75780630f2cdd6c1461021957806318160ddd1461023c575b600080fd5b34801561015c57600080fd5b5061017061016b366004610f9d565b610454565b60405190151581526020015b60405180910390f35b34801561019157600080fd5b50604080518082019091526008815267696c6c4c696e657360c01b60208201525b60405161017c9190611070565b3480156101cb57600080fd5b506101df6101da366004610fc7565b6104a6565b6040516001600160a01b03909116815260200161017c565b34801561020357600080fd5b50610217610212366004610f73565b6104ec565b005b34801561022557600080fd5b5061022e600a81565b60405190815260200161017c565b34801561024857600080fd5b5060015461022e565b34801561025d57600080fd5b5061021761026c366004610e1f565b6105ab565b34801561027d57600080fd5b5061022e61030981565b34801561029357600080fd5b506102176105bb565b3480156102a857600080fd5b506102176102b7366004610e1f565b610623565b3480156102c857600080fd5b5061022e606481565b3480156102dd57600080fd5b5061021761063e565b3480156102f257600080fd5b506101df610301366004610fc7565b6107a7565b34801561031257600080fd5b5061022e610321366004610dd1565b6107b2565b34801561033257600080fd5b5061022e600181565b610217610349366004610fc7565b6107f8565b34801561035a57600080fd5b50610217610369366004610f37565b610920565b34801561037a57600080fd5b5061022e610389366004610fc7565b60006020819052908152604090205481565b3480156103a757600080fd5b506102176103b6366004610e5b565b6109b6565b3480156103c757600080fd5b5061022e66038d7ea4c6800081565b3480156103e257600080fd5b506101b26103f1366004610fc7565b6109c7565b34801561040257600080fd5b506101b2610a5f565b34801561041757600080fd5b50610170610426366004610dec565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006301ffc9a760e01b6001600160e01b03198316148061048557506380ac58cd60e01b6001600160e01b03198316145b806104a05750635b5e139f60e01b6001600160e01b03198316145b92915050565b60006104b3826001541190565b6104d0576040516333d1c03960e21b815260040160405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006104f782610a9e565b9050806001600160a01b0316836001600160a01b0316141561051857600080fd5b336001600160a01b0382161461054f576105328133610426565b61054f576040516367d9dca160e11b815260040160405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6105b6838383610aff565b505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146105f057600080fd5b6040514790339082156108fc029083906000818181858888f1935050505015801561061f573d6000803e3d6000fd5b5050565b6105b6838383604051806020016040528060008152506109b6565b336001600061064e603c426110bb565b90506103098261065d60015490565b61066791906110a3565b11156106ae5760405162461bcd60e51b8152602060048201526011602482015270119c99595b5a5b9d0814dbdb190813dd5d607a1b60448201526064015b60405180910390fd5b60016106dd846001600160a01b03166000908152600360205260409081902054901c67ffffffffffffffff1690565b6106e790846110a3565b11156107205760405162461bcd60e51b81526020600482015260086024820152671058d8d31a5b5a5d60c21b60448201526064016106a5565b60008181526020819052604090205460641161077e5760405162461bcd60e51b815260206004820152601c60248201527f4d6178204d696e747320706572204d696e75746520726561636865640000000060448201526064016106a5565b600081815260208190526040812080549161079883611128565b91905055506105b68383610c91565b60006104a082610a9e565b6000816107d2576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b031660009081526003602052604090205467ffffffffffffffff1690565b336103098261080660015490565b61081091906110a3565b11156108495760405162461bcd60e51b815260206004820152600860248201526714dbdb190813dd5d60c21b60448201526064016106a5565b600a610878826001600160a01b03166000908152600360205260409081902054901c67ffffffffffffffff1690565b61088290846110a3565b11156108c75760405162461bcd60e51b815260206004820152601460248201527315d85b1b195d08131a5b5a5d081c995858da195960621b60448201526064016106a5565b346108d966038d7ea4c68000846110dd565b11156109165760405162461bcd60e51b815260206004820152600c60248201526b56616c756520746f204c6f7760a01b60448201526064016106a5565b61061f8183610c91565b6001600160a01b03821633141561094a5760405163b06307db60e01b815260040160405180910390fd5b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6109c1848484610aff565b50505050565b60606109d4826001541190565b6109f157604051630a14c4b560e41b815260040160405180910390fd5b60006040518060600160405280602e8152602001611170602e91399050805160001415610a2d5760405180602001604052806000815250610a58565b80610a3784610d66565b604051602001610a4892919061100f565b6040516020818303038152906040525b9392505050565b60606040518060600160405280602e815260200161119e602e9139604051602001610a8a9190610fe0565b604051602081830303815290604052905090565b600081600154811015610ae657600081815260026020526040902054600160e01b8116610ae4575b80610a58575060001901600081815260026020526040902054610ac6565b505b604051636f96cda160e11b815260040160405180910390fd5b6000610b0a82610a9e565b9050836001600160a01b0316816001600160a01b031614610b3d5760405162a1148160e81b815260040160405180910390fd5b6000828152600460205260408120546001600160a01b0390811691908616331480610b6d5750610b6d8633610426565b80610b8057506001600160a01b03821633145b905080610ba057604051632ce44b5f60e11b815260040160405180910390fd5b8115610bc357600084815260046020526040902080546001600160a01b03191690555b6001600160a01b03868116600090815260036020908152604080832080546000190190559288168252828220805460010190558682526002905220600160e11b4260a01b871781179091558316610c485760018401600081815260026020526040902054610c46576001548114610c465760008181526002602052604090208490555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050505050565b60015482610cb157604051622e076360e81b815260040160405180910390fd5b81610ccf5760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b03831660009081526003602090815260408083208054680100000000000000018702019055838352600290915290204260a01b84176001841460e11b179055808083015b6040516001830192906001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4808210610d1a5750600155505050565b604080516080810191829052607f0190826030600a8206018353600a90045b8015610da357600183039250600a81066030018353600a9004610d85565b50819003601f19909101908152919050565b80356001600160a01b0381168114610dcc57600080fd5b919050565b600060208284031215610de357600080fd5b610a5882610db5565b60008060408385031215610dff57600080fd5b610e0883610db5565b9150610e1660208401610db5565b90509250929050565b600080600060608486031215610e3457600080fd5b610e3d84610db5565b9250610e4b60208501610db5565b9150604084013590509250925092565b60008060008060808587031215610e7157600080fd5b610e7a85610db5565b9350610e8860208601610db5565b925060408501359150606085013567ffffffffffffffff80821115610eac57600080fd5b818701915087601f830112610ec057600080fd5b813581811115610ed257610ed2611159565b604051601f8201601f19908116603f01168101908382118183101715610efa57610efa611159565b816040528281528a6020848701011115610f1357600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610f4a57600080fd5b610f5383610db5565b915060208301358015158114610f6857600080fd5b809150509250929050565b60008060408385031215610f8657600080fd5b610f8f83610db5565b946020939093013593505050565b600060208284031215610faf57600080fd5b81356001600160e01b031981168114610a5857600080fd5b600060208284031215610fd957600080fd5b5035919050565b66697066733a2f2f60c81b8152600082516110028160078501602087016110fc565b9190910160070192915050565b66697066733a2f2f60c81b8152600083516110318160078501602088016110fc565b602f60f81b60079184019182015283516110528160088401602088016110fc565b64173539b7b760d91b60089290910191820152600d01949350505050565b602081526000825180602084015261108f8160408501602087016110fc565b601f01601f19169190910160400192915050565b600082198211156110b6576110b6611143565b500190565b6000826110d857634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156110f7576110f7611143565b500290565b60005b838110156111175781810151838201526020016110ff565b838111156109c15750506000910152565b600060001982141561113c5761113c611143565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfe516d6469645a6a63744a38444d75506d58577663517a3365723646544e5170796862375a34707569314c627a4475516d665a47534b77506148474c70546a676e7973775852514a4866796f7442577a79483972385265566338635743a2646970667358221220c1830a0fd70382e495c1f4a85f9b775f055c83a8b4657ac8f5b51aae463adbdf64736f6c63430008070033