0x60806040523480156200001157600080fd5b506040516200260d3803806200260d8339810160408190526200003491620003a8565b80826200004133620000f3565b6001806000620000596000546001600160a01b031690565b6001600160a01b03168152602080820192909252604001600020805460ff191692151592909217909155825162000097916002919085019062000218565b508051620000ad90600390602084019062000218565b50506001600d5550600f80546001600160a01b0385166001600160a01b0319918216179091556010805490911633179055620000e98462000143565b5050505062000475565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314620001a35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b0381166200020a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016200019a565b6200021581620000f3565b50565b828054620002269062000438565b90600052602060002090601f0160209004810192826200024a576000855562000295565b82601f106200026557805160ff191683800117855562000295565b8280016001018555821562000295579182015b828111156200029557825182559160200191906001019062000278565b50620002a3929150620002a7565b5090565b5b80821115620002a35760008155600101620002a8565b80516001600160a01b0381168114620002d657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200030357600080fd5b81516001600160401b0380821115620003205762000320620002db565b604051601f8301601f19908116603f011681019082821181831017156200034b576200034b620002db565b816040528381526020925086838588010111156200036857600080fd5b600091505b838210156200038c57858201830151818301840152908201906200036d565b838211156200039e5760008385830101525b9695505050505050565b60008060008060808587031215620003bf57600080fd5b620003ca85620002be565b9350620003da60208601620002be565b60408601519093506001600160401b0380821115620003f857600080fd5b6200040688838901620002f1565b935060608701519150808211156200041d57600080fd5b506200042c87828801620002f1565b91505092959194509250565b600181811c908216806200044d57607f821691505b602082108114156200046f57634e487b7160e01b600052602260045260246000fd5b50919050565b61218880620004856000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80636352211e11610104578063a3a51bd5116100a2578063c10eb14d11610071578063c10eb14d14610402578063c87b56dd1461040a578063e985e9c51461041d578063f2fde38b1461045957600080fd5b8063a3a51bd5146103ab578063a83b5caa146103bc578063b5143715146103dc578063b88d4fde146103ef57600080fd5b80638462151c116100de5780638462151c1461035f5780638da5cb5b1461037f57806395d89b4114610390578063a22cb4651461039857600080fd5b80636352211e1461033157806370a0823114610344578063715018a61461035757600080fd5b806323b872dd116101715780632f745c591161014b5780632f745c59146102e557806342842e0e146102f85780634a994eef1461030b5780634f6ccce71461031e57600080fd5b806323b872dd1461028d57806323f5c02d146102a05780632a55205a146102b357600080fd5b806307779627116101ad5780630777962714610232578063081812fc14610245578063095ea7b31461027057806318160ddd1461028557600080fd5b806301ffc9a7146101d4578063056b01ce146101fc57806306fdde031461021d575b600080fd5b6101e76101e2366004611b5e565b61046c565b60405190151581526020015b60405180910390f35b61020f61020a366004611c07565b610497565b6040519081526020016101f3565b610225610529565b6040516101f39190611cb8565b6101e7610240366004611ce2565b6105bb565b610258610253366004611cfd565b610609565b6040516001600160a01b0390911681526020016101f3565b61028361027e366004611d16565b610691565b005b600b5461020f565b61028361029b366004611d40565b6107a7565b600f54610258906001600160a01b031681565b6102c66102c1366004611d7c565b6107d8565b604080516001600160a01b0390931683526020830191909152016101f3565b61020f6102f3366004611d16565b610818565b610283610306366004611d40565b6108ae565b610283610319366004611d9e565b6108c9565b61020f61032c366004611cfd565b61091e565b61025861033f366004611cfd565b6109b1565b61020f610352366004611ce2565b610a28565b610283610aaf565b61037261036d366004611ce2565b610ae5565b6040516101f39190611dda565b6000546001600160a01b0316610258565b610225610ba3565b6102836103a6366004611d9e565b610bb2565b6010546001600160a01b0316610258565b61020f6103ca366004611cfd565b60116020526000908152604090205481565b6102836103ea366004611ce2565b610bc1565b6102836103fd366004611e1e565b610c28565b610283610c60565b610225610418366004611cfd565b610cc6565b6101e761042b366004611e9a565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b610283610467366004611ce2565b610cd1565b60006001600160e01b0319821663152a902d60e11b1480610491575061049182610d69565b92915050565b600080546001600160a01b031633146104cb5760405162461bcd60e51b81526004016104c290611ecd565b60405180910390fd5b60006104d6600e5490565b90506104e23382610d8e565b60008181526011602052604090208390556104fd8185610ecd565b600f54610514906001600160a01b03166001610bb2565b610522600e80546001019055565b9392505050565b60606002805461053890611f02565b80601f016020809104026020016040519081016040528092919081815260200182805461056490611f02565b80156105b15780601f10610586576101008083540402835291602001916105b1565b820191906000526020600020905b81548152906001019060200180831161059457829003601f168201915b5050505050905090565b600080546001600160a01b031633146105e65760405162461bcd60e51b81526004016104c290611ecd565b506001600160a01b03811660009081526001602052604090205460ff165b919050565b600061061482610f58565b6106755760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016104c2565b506000908152600660205260409020546001600160a01b031690565b600061069c826109b1565b9050806001600160a01b0316836001600160a01b0316141561070a5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016104c2565b336001600160a01b03821614806107265750610726813361042b565b6107985760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016104c2565b6107a28383610f75565b505050565b6107b13382610fe3565b6107cd5760405162461bcd60e51b81526004016104c290611f3d565b6107a28383836110cd565b60008281526011602052604081205481908160646107f68387611fa4565b6108009190611fd9565b6010546001600160a01b031697909650945050505050565b600061082383610a28565b82106108855760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016104c2565b506001600160a01b03919091166000908152600960209081526040808320938352929052205490565b6107a283838360405180602001604052806000815250610c28565b6000546001600160a01b031633146108f35760405162461bcd60e51b81526004016104c290611ecd565b6001600160a01b03919091166000908152600160205260409020805460ff1916911515919091179055565b6000610929600b5490565b821061098c5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016104c2565b600b828154811061099f5761099f611fed565b90600052602060002001549050919050565b6000818152600460205260408120546001600160a01b0316806104915760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b60648201526084016104c2565b60006001600160a01b038216610a935760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b60648201526084016104c2565b506001600160a01b031660009081526005602052604090205490565b6000546001600160a01b03163314610ad95760405162461bcd60e51b81526004016104c290611ecd565b610ae36000611278565b565b60606000610af283610a28565b905060008167ffffffffffffffff811115610b0f57610b0f611b7b565b604051908082528060200260200182016040528015610b38578160200160208202803683370190505b50905081610b5757505060408051600081526020810190915292915050565b60005b82811015610b9b57610b6c8582610818565b828281518110610b7e57610b7e611fed565b602090810291909101015280610b9381612003565b915050610b5a565b509392505050565b60606003805461053890611f02565b610bbd3383836112c8565b5050565b6000546001600160a01b03163314610beb5760405162461bcd60e51b81526004016104c290611ecd565b6010546001600160a01b0382811691161415610c0657600080fd5b601080546001600160a01b0319166001600160a01b0392909216919091179055565b610c323383610fe3565b610c4e5760405162461bcd60e51b81526004016104c290611f3d565b610c5a84848484611397565b50505050565b6000546001600160a01b03163314610c8a5760405162461bcd60e51b81526004016104c290611ecd565b600f546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610cc3573d6000803e3d6000fd5b50565b6060610491826113ca565b6000546001600160a01b03163314610cfb5760405162461bcd60e51b81526004016104c290611ecd565b6001600160a01b038116610d605760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104c2565b610cc381611278565b60006001600160e01b0319821663780e9d6360e01b1480610491575061049182611539565b6001600160a01b038216610de45760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016104c2565b610ded81610f58565b15610e3a5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016104c2565b610e4660008383611589565b6001600160a01b0382166000908152600560205260408120805460019290610e6f90849061201e565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b610ed682610f58565b610f395760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016104c2565b600082815260086020908152604090912082516107a292840190611aaf565b6000908152600460205260409020546001600160a01b0316151590565b600081815260066020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610faa826109b1565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000610fee82610f58565b61104f5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016104c2565b600061105a836109b1565b9050806001600160a01b0316846001600160a01b031614806110955750836001600160a01b031661108a84610609565b6001600160a01b0316145b806110c557506001600160a01b0380821660009081526007602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166110e0826109b1565b6001600160a01b0316146111485760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b60648201526084016104c2565b6001600160a01b0382166111aa5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016104c2565b6111b5838383611589565b6111c0600082610f75565b6001600160a01b03831660009081526005602052604081208054600192906111e9908490612036565b90915550506001600160a01b038216600090815260056020526040812080546001929061121790849061201e565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b816001600160a01b0316836001600160a01b0316141561132a5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016104c2565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6113a28484846110cd565b6113ae84848484611594565b610c5a5760405162461bcd60e51b81526004016104c29061204d565b60606113d582610f58565b61143b5760405162461bcd60e51b815260206004820152603160248201527f45524337323155524953746f726167653a2055524920717565727920666f72206044820152703737b732bc34b9ba32b73a103a37b5b2b760791b60648201526084016104c2565b6000828152600860205260408120805461145490611f02565b80601f016020809104026020016040519081016040528092919081815260200182805461148090611f02565b80156114cd5780601f106114a2576101008083540402835291602001916114cd565b820191906000526020600020905b8154815290600101906020018083116114b057829003601f168201915b5050505050905060006114eb60408051602081019091526000815290565b90508051600014156114fe575092915050565b81511561153057808260405160200161151892919061209f565b60405160208183030381529060405292505050919050565b6110c584611692565b60006001600160e01b031982166380ac58cd60e01b148061156a57506001600160e01b03198216635b5e139f60e01b145b8061049157506301ffc9a760e01b6001600160e01b0319831614610491565b6107a2838383611769565b60006001600160a01b0384163b1561168757604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906115d89033908990889088906004016120ce565b6020604051808303816000875af1925050508015611613575060408051601f3d908101601f191682019092526116109181019061210b565b60015b61166d573d808015611641576040519150601f19603f3d011682016040523d82523d6000602084013e611646565b606091505b5080516116655760405162461bcd60e51b81526004016104c29061204d565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506110c5565b506001949350505050565b606061169d82610f58565b6117015760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016104c2565b600061171860408051602081019091526000815290565b905060008151116117385760405180602001604052806000815250610522565b8061174284611821565b60405160200161175392919061209f565b6040516020818303038152906040529392505050565b6001600160a01b0383166117c4576117bf81600b80546000838152600c60205260408120829055600182018355919091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90155565b6117e7565b816001600160a01b0316836001600160a01b0316146117e7576117e7838261191f565b6001600160a01b0382166117fe576107a2816119bc565b826001600160a01b0316826001600160a01b0316146107a2576107a28282611a6b565b6060816118455750506040805180820190915260018152600360fc1b602082015290565b8160005b811561186f578061185981612003565b91506118689050600a83611fd9565b9150611849565b60008167ffffffffffffffff81111561188a5761188a611b7b565b6040519080825280601f01601f1916602001820160405280156118b4576020820181803683370190505b5090505b84156110c5576118c9600183612036565b91506118d6600a86612128565b6118e190603061201e565b60f81b8183815181106118f6576118f6611fed565b60200101906001600160f81b031916908160001a905350611918600a86611fd9565b94506118b8565b6000600161192c84610a28565b6119369190612036565b6000838152600a6020526040902054909150808214611989576001600160a01b03841660009081526009602090815260408083208584528252808320548484528184208190558352600a90915290208190555b506000918252600a602090815260408084208490556001600160a01b039094168352600981528383209183525290812055565b600b546000906119ce90600190612036565b6000838152600c6020526040812054600b80549394509092849081106119f6576119f6611fed565b9060005260206000200154905080600b8381548110611a1757611a17611fed565b6000918252602080832090910192909255828152600c9091526040808220849055858252812055600b805480611a4f57611a4f61213c565b6001900381819060005260206000200160009055905550505050565b6000611a7683610a28565b6001600160a01b0390931660009081526009602090815260408083208684528252808320859055938252600a9052919091209190915550565b828054611abb90611f02565b90600052602060002090601f016020900481019282611add5760008555611b23565b82601f10611af657805160ff1916838001178555611b23565b82800160010185558215611b23579182015b82811115611b23578251825591602001919060010190611b08565b50611b2f929150611b33565b5090565b5b80821115611b2f5760008155600101611b34565b6001600160e01b031981168114610cc357600080fd5b600060208284031215611b7057600080fd5b813561052281611b48565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115611bac57611bac611b7b565b604051601f8501601f19908116603f01168101908282118183101715611bd457611bd4611b7b565b81604052809350858152868686011115611bed57600080fd5b858560208301376000602087830101525050509392505050565b60008060408385031215611c1a57600080fd5b823567ffffffffffffffff811115611c3157600080fd5b8301601f81018513611c4257600080fd5b611c5185823560208401611b91565b95602094909401359450505050565b60005b83811015611c7b578181015183820152602001611c63565b83811115610c5a5750506000910152565b60008151808452611ca4816020860160208601611c60565b601f01601f19169290920160200192915050565b6020815260006105226020830184611c8c565b80356001600160a01b038116811461060457600080fd5b600060208284031215611cf457600080fd5b61052282611ccb565b600060208284031215611d0f57600080fd5b5035919050565b60008060408385031215611d2957600080fd5b611d3283611ccb565b946020939093013593505050565b600080600060608486031215611d5557600080fd5b611d5e84611ccb565b9250611d6c60208501611ccb565b9150604084013590509250925092565b60008060408385031215611d8f57600080fd5b50508035926020909101359150565b60008060408385031215611db157600080fd5b611dba83611ccb565b915060208301358015158114611dcf57600080fd5b809150509250929050565b6020808252825182820181905260009190848201906040850190845b81811015611e1257835183529284019291840191600101611df6565b50909695505050505050565b60008060008060808587031215611e3457600080fd5b611e3d85611ccb565b9350611e4b60208601611ccb565b925060408501359150606085013567ffffffffffffffff811115611e6e57600080fd5b8501601f81018713611e7f57600080fd5b611e8e87823560208401611b91565b91505092959194509250565b60008060408385031215611ead57600080fd5b611eb683611ccb565b9150611ec460208401611ccb565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680611f1657607f821691505b60208210811415611f3757634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611fbe57611fbe611f8e565b500290565b634e487b7160e01b600052601260045260246000fd5b600082611fe857611fe8611fc3565b500490565b634e487b7160e01b600052603260045260246000fd5b600060001982141561201757612017611f8e565b5060010190565b6000821982111561203157612031611f8e565b500190565b60008282101561204857612048611f8e565b500390565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600083516120b1818460208801611c60565b8351908301906120c5818360208801611c60565b01949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061210190830184611c8c565b9695505050505050565b60006020828403121561211d57600080fd5b815161052281611b48565b60008261213757612137611fc3565b500690565b634e487b7160e01b600052603160045260246000fdfea26469706673582212203de93949204a78bff993ec5b71132eabda4b1591734780a581e25783e497e12164736f6c634300080a0033000000000000000000000000bfbfcc7dc1eb71774d3b122cd18cc5fa1ebfbf460000000000000000000000000a6b35ad8dfd868920236c9ab387c689ca3ea8e9000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000650696b6162750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000650696b6162750000000000000000000000000000000000000000000000000000