//
0x60806040523480156200001157600080fd5b50604051620018f8380380620018f88339810160408190526200003491620001ca565b81818181818181816001600160a01b038116620000985760405162461bcd60e51b815260206004820152601c60248201527f4d50433a206d706320697320746865207a65726f20616464726573730000000060448201526064015b60405180910390fd5b600080546001600160a01b03199081166001600160a01b03848116918217845560018054909316908616179091556040514281529091907f581f388e3dd32e1bbf62a290f509c8245f9d0b71ef82614fb2b967ad0a10d5b99060200160405180910390a350506001600160a01b038216620001565760405162461bcd60e51b815260206004820152601c60248201527f61646d696e2063616e6e6f74206265207a65726f20616464726573730000000060448201526064016200008f565b600180546001600160a01b0319166001600160a01b0384169081179091556040516000907fcf9b665e0639e0b81a8db37b60ac7ddf45aeb1b484e11adeb7dff4bf4a3a6258908290a3505050505050505062000202565b80516001600160a01b0381168114620001c557600080fd5b919050565b60008060408385031215620001de57600080fd5b620001e983620001ad565b9150620001f960208401620001ad565b90509250929050565b6116e680620002126000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80639e9e466611610104578063c36cec9c116100a2578063f1c58fa011610071578063f1c58fa014610473578063f75c266414610486578063f830e7b414610499578063f851a440146104ac57600080fd5b8063c36cec9c1461041b578063c75f8d9a14610424578063d726d0611461044b578063ed56531a1461046057600080fd5b8063b434561c116100de578063b434561c1461039f578063b63b38d0146103c6578063bce39350146103ce578063be6adb87146103f957600080fd5b80639e9e466614610342578063a5f42f9d14610365578063b1f05c571461038c57600080fd5b80636a42b8f8116101715780638e8934ae1161014b5780638e8934ae146102e55780638f2839701461030c578063975e95bb1461031f5780639ac25d081461028157600080fd5b80636a42b8f8146102815780636c4c50d2146102895780637d837d32146102b757600080fd5b806347b1d650116101ad57806347b1d650146102185780634fda04ca1461023b578063580e70d51461025b5780635b7b018c1461026e57600080fd5b806308cb277f146101d4578063160f1053146101e95780632f4dae9f14610205575b600080fd5b6101e76101e2366004611176565b6104bf565b005b6101f260035481565b6040519081526020015b60405180910390f35b6101e7610213366004611198565b61063b565b61022b6102263660046111fa565b61066e565b60405190151581526020016101fc565b6101f2610249366004611198565b60096020526000908152604090205481565b6101e7610269366004611176565b6106c2565b6101e761027c366004611176565b610778565b6101f2600081565b61022b610297366004611261565b805160208183018101805160078252928201919093012091525460ff1681565b61022b6102c5366004611312565b600860209081526000928352604080842090915290825290205460ff1681565b6101f27fd0700f2aa34b9d26d0cc0bca803e29c759577eb3128bf88ca045eb26b192eec881565b6101e761031a366004611176565b61086e565b61022b61032d366004611176565b60056020526000908152604090205460ff1681565b61022b610350366004611198565b60009081526004602052604090205460ff1690565b6101f27f0f805cc03c991e744020c84db0c570f03791e9ea3df9844d2c28978db87ccd0b81565b6101e761039a366004611334565b6108f4565b6101f27f9288716ac4bc627de46dac95971b3874c0b6fbbc51db625cadddcf02c4037db381565b6101e7610bc3565b6103e16103dc366004611198565b610d15565b6040516001600160a01b0390911681526020016101fc565b61022b610407366004611198565b600090815260096020526040902054151590565b6101f2600a5481565b6101f27fe94e13023a6891def76fb73927e5246a7b5357eb732573855c3098d25b20574181565b610453610d3f565b6040516101fc9190611393565b6101e761046e366004611198565b610da1565b6101f26104813660046113e0565b610dd4565b6000546103e1906001600160a01b031681565b6002546103e1906001600160a01b031681565b6001546103e1906001600160a01b031681565b6001546001600160a01b031633146104f25760405162461bcd60e51b81526004016104e9906114b1565b60405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff1661051757600080fd5b6001600160a01b0381166000908152600560205260408120805460ff19169055600654905b8181101561063557826001600160a01b031660068281548110610561576105616114e8565b6000918252602090912001546001600160a01b03160361062d576006610588600184611514565b81548110610598576105986114e8565b600091825260209091200154600680546001600160a01b0390921691839081106105c4576105c46114e8565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060068054806106035761060361152d565b600082815260209020810160001990810180546001600160a01b0319169055019055506106389050565b60010161053c565b50505b50565b6001546001600160a01b031633146106655760405162461bcd60e51b81526004016104e9906114b1565b61063881610fe2565b600060078585604051610682929190611543565b9081526040519081900360200190205460ff16806106b95750600083815260086020908152604080832085845290915290205460ff165b95945050505050565b6001546001600160a01b031633146106ec5760405162461bcd60e51b81526004016104e9906114b1565b6001600160a01b03811660009081526005602052604090205460ff161561071257600080fd5b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6001546001600160a01b031633146107a25760405162461bcd60e51b81526004016104e9906114b1565b6001600160a01b0381166107f85760405162461bcd60e51b815260206004820152601c60248201527f4d50433a206d706320697320746865207a65726f20616464726573730000000060448201526064016104e9565b600280546001600160a01b0319166001600160a01b03831617905561081e600042611553565b60038190556002546000546040519283526001600160a01b03918216929116907f581f388e3dd32e1bbf62a290f509c8245f9d0b71ef82614fb2b967ad0a10d5b99060200160405180910390a350565b6001546001600160a01b031633146108985760405162461bcd60e51b81526004016104e9906114b1565b6001546040516001600160a01b038084169216907fcf9b665e0639e0b81a8db37b60ac7ddf45aeb1b484e11adeb7dff4bf4a3a625890600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526005602052604090205460ff1661094a5760405162461bcd60e51b81526020600482015260146024820152733737ba1039bab83837b93a32b21031b0b63632b960611b60448201526064016104e9565b7f9288716ac4bc627de46dac95971b3874c0b6fbbc51db625cadddcf02c4037db3600081905260046020527f2981261a10ca8aa3a621586804e80731207e26c840756659ec7782d153c19ae75460ff161580156109c057506000805260046020526000805160206116918339815191525460ff16155b6109dc5760405162461bcd60e51b81526004016104e990611566565b838383600001358460800135600784846040516109fa929190611543565b9081526040519081900360200190205460ff161580610a6357507fd0700f2aa34b9d26d0cc0bca803e29c759577eb3128bf88ca045eb26b192eec860005260046020527f3ad98c0d3e0b00f74750bf999839a32928f41e807da71209b47ea5e53de45c5a5460ff165b610aa55760405162461bcd60e51b81526020600482015260136024820152721cddd85c1251081a5cc818dbdb5c1b195d1959606a1b60448201526064016104e9565b600082815260086020908152604080832084845290915290205460ff161580610b1857507fe94e13023a6891def76fb73927e5246a7b5357eb732573855c3098d25b20574160005260046020527f1e51de10165ebbc0372df17293ffddf928c86a9f52f0a5513c2ef8a8c781cd895460ff165b610b5d5760405162461bcd60e51b81526020600482015260166024820152751cddd85c1bdd5d1251081a5cc818dbdb5c1b195d195960521b60448201526064016104e9565b600160078989604051610b71929190611543565b90815260408051918290036020908101909220805493151560ff1994851617905588356000908152600883528181206080909a0135815298909152909620805490961660011790955550505050505050565b6002546001600160a01b0316331480610bfc57506000546001600160a01b031633148015610bfc57506002546001600160a01b03163b15155b610c405760405162461bcd60e51b81526020600482015260156024820152744d50433a206f6e6c792070656e64696e67206d706360581b60448201526064016104e9565b6000600354118015610c5457506003544210155b610ca05760405162461bcd60e51b815260206004820152601960248201527f4d50433a2074696d65206265666f72652064656c61794d50430000000000000060448201526064016104e9565b6002546000546040514281526001600160a01b0392831692909116907f8d32c9dd498e08090b44a0f77fe9ec0278851f9dffc4b430428411243e7df0769060200160405180910390a360028054600080546001600160a01b03199081166001600160a01b038416178255909116909155600355565b60068181548110610d2557600080fd5b6000918252602090912001546001600160a01b0316905081565b60606006805480602002602001604051908101604052809291908181526020018280548015610d9757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d79575b5050505050905090565b6001546001600160a01b03163314610dcb5760405162461bcd60e51b81526004016104e9906114b1565b610638816110b9565b3360009081526005602052604081205460ff16610e2a5760405162461bcd60e51b81526020600482015260146024820152733737ba1039bab83837b93a32b21031b0b63632b960611b60448201526064016104e9565b7f0f805cc03c991e744020c84db0c570f03791e9ea3df9844d2c28978db87ccd0b600081905260046020527f182a83f065fc2dd376231412f944b034bd7ce5f29b74307cdd8b963b4c129c735460ff16158015610ea057506000805260046020526000805160206116918339815191525460ff16155b610ebc5760405162461bcd60e51b81526004016104e990611566565b600a8054906000610ecc8361159d565b919050555030338d8d8d8d8d600a548e8e8e8e8e604051602001610efc9d9c9b9a999897969594939291906115df565b60408051808303601f1901815290829052805160209091012063be6adb8760e01b8252600482018190529250309063be6adb8790602401602060405180830381865afa158015610f50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f74919061166e565b15610fc15760405162461bcd60e51b815260206004820152601760248201527f737761706f7574494420616c726561647920657869737400000000000000000060448201526064016104e9565b600a54600083815260096020526040902055509a9950505050505050505050565b600081815260046020526040902054819060ff168061101957506000805260046020526000805160206116918339815191525460ff165b6110655760405162461bcd60e51b815260206004820152601b60248201527f5061757361626c65436f6e74726f6c3a206e6f7420706175736564000000000060448201526064016104e9565b60008281526004602052604090819020805460ff19169055517fd05bfc2250abb0f8fd265a54c53a24359c5484af63cad2e4ce87c78ab751395a906110ad9084815260200190565b60405180910390a15050565b600081815260046020526040902054819060ff161580156110f357506000805260046020526000805160206116918339815191525460ff16155b61110f5760405162461bcd60e51b81526004016104e990611566565b60008281526004602052604090819020805460ff19166001179055517f0cb09dc71d57eeec2046f6854976717e4874a3cf2d6ddeddde337e5b6de6ba31906110ad9084815260200190565b80356001600160a01b038116811461117157600080fd5b919050565b60006020828403121561118857600080fd5b6111918261115a565b9392505050565b6000602082840312156111aa57600080fd5b5035919050565b60008083601f8401126111c357600080fd5b50813567ffffffffffffffff8111156111db57600080fd5b6020830191508360208285010111156111f357600080fd5b9250929050565b6000806000806060858703121561121057600080fd5b843567ffffffffffffffff81111561122757600080fd5b611233878288016111b1565b90989097506020870135966040013595509350505050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561127357600080fd5b813567ffffffffffffffff8082111561128b57600080fd5b818401915084601f83011261129f57600080fd5b8135818111156112b1576112b161124b565b604051601f8201601f19908116603f011681019083821181831017156112d9576112d961124b565b816040528281528760208487010111156112f257600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000806040838503121561132557600080fd5b50508035926020909101359150565b600080600083850360c081121561134a57600080fd5b843567ffffffffffffffff81111561136157600080fd5b61136d878288016111b1565b90955093505060a0601f198201121561138557600080fd5b506020840190509250925092565b6020808252825182820181905260009190848201906040850190845b818110156113d45783516001600160a01b0316835292840192918401916001016113af565b50909695505050505050565b60008060008060008060008060008060e08b8d0312156113ff57600080fd5b6114088b61115a565b995061141660208c0161115a565b985060408b013567ffffffffffffffff8082111561143357600080fd5b61143f8e838f016111b1565b909a50985060608d0135975060808d0135965060a08d013591508082111561146657600080fd5b6114728e838f016111b1565b909650945060c08d013591508082111561148b57600080fd5b506114988d828e016111b1565b915080935050809150509295989b9194979a5092959850565b6020808252601a908201527f4d504341646d696e436f6e74726f6c3a206e6f742061646d696e000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115611527576115276114fe565b92915050565b634e487b7160e01b600052603160045260246000fd5b8183823760009101908152919050565b80820180821115611527576115276114fe565b60208082526017908201527f5061757361626c65436f6e74726f6c3a20706175736564000000000000000000604082015260600190565b6000600182016115af576115af6114fe565b5060010190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038e811682528d811660208301528c811660408301528b1660608201526101406080820181905260009061161d9083018b8d6115b6565b8960a08401528860c08401528760e08401528281036101008401526116438187896115b6565b90508281036101208401526116598185876115b6565b9150509e9d5050505050505050505050505050565b60006020828403121561168057600080fd5b8151801515811461119157600080fdfe17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3eca264697066735822122074988efb09b9b597850b93a361eea89e8cd24363254bbb53a837f93e2115f5a864736f6c63430008180033000000000000000000000000d9bca1b1e09c7349f56ccde6b34f592943f89923000000000000000000000000a8592723a6df29bfe9ad6f8daf20aeb47fb4ebef