60806040523480156200001157600080fd5b5060405162002add38038062002add833981016040819052620000349162000114565b60408051808201909152600781526606b7077632d32360cc1b602082015281600062000061838262000278565b50600162000070828262000278565b5050506200008d62000087620000a860201b60201c565b620000ac565b60016006556010620000a0828262000278565b505062000344565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200012857600080fd5b82516001600160401b03808211156200014057600080fd5b818501915085601f8301126200015557600080fd5b8151818111156200016a576200016a620000fe565b604051601f8201601f19908116603f01168101908382118183101715620001955762000195620000fe565b816040528281528886848701011115620001ae57600080fd5b600093505b82841015620001d25784840186015181850187015292850192620001b3565b600086848301015280965050505050505092915050565b600181811c90821680620001fe57607f821691505b6020821081036200021f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200027357600081815260208120601f850160051c810160208610156200024e5750805b601f850160051c820191505b818110156200026f578281556001016200025a565b5050505b505050565b81516001600160401b03811115620002945762000294620000fe565b620002ac81620002a58454620001e9565b8462000225565b602080601f831160018114620002e45760008415620002cb5750858301515b600019600386901b1c1916600185901b1785556200026f565b600085815260208120601f198616915b828110156200031557888601518255948401946001909101908401620002f4565b5085821015620003345787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61278980620003546000396000f3fe6080604052600436106101815760003560e01c8063715018a6116100d1578063b88d4fde1161008a578063de44260211610064578063de44260214610490578063e985e9c5146104a3578063edca8c13146104ec578063f2fde38b1461050c57600080fd5b8063b88d4fde1461040a578063c87b56dd1461042a578063dd62ed3e1461044a57600080fd5b8063715018a61461036d5780638da5cb5b1461038257806395d89b41146103a0578063a22cb465146103b5578063a9059cbb146103d5578063aa32ddcc146103f557600080fd5b8063313ce5671161013e57806342842e0e1161011857806342842e0e146102ca57806352f6747a146102ea5780636352211e1461032d57806370a082311461034d57600080fd5b8063313ce5671461027f57806331a462da1461029b5780633ccfd60b146102b557600080fd5b806301ffc9a71461018657806306fdde03146101bb578063081812fc146101dd578063095ea7b31461021557806318160ddd1461023757806323b872dd1461025f575b600080fd5b34801561019257600080fd5b506101a66101a1366004611bf0565b61052c565b60405190151581526020015b60405180910390f35b3480156101c757600080fd5b506101d0610563565b6040516101b29190611c64565b3480156101e957600080fd5b506101fd6101f8366004611c77565b6105f5565b6040516001600160a01b0390911681526020016101b2565b34801561022157600080fd5b50610235610230366004611cac565b61061c565b005b34801561024357600080fd5b506008546001600160801b03165b6040519081526020016101b2565b34801561026b57600080fd5b506101a661027a366004611cd6565b610645565b34801561028b57600080fd5b50604051600081526020016101b2565b3480156102a757600080fd5b506007546101a69060ff1681565b3480156102c157600080fd5b50610235610737565b3480156102d657600080fd5b506102356102e5366004611cd6565b610780565b3480156102f657600080fd5b50600954600a54600b54600c5461030d9392919084565b6040805194855260208501939093529183015260608201526080016101b2565b34801561033957600080fd5b506101fd610348366004611c77565b6107be565b34801561035957600080fd5b50610251610368366004611d12565b61081e565b34801561037957600080fd5b506102356108cb565b34801561038e57600080fd5b506005546001600160a01b03166101fd565b3480156103ac57600080fd5b506101d06108dd565b3480156103c157600080fd5b506102356103d0366004611d2d565b6108ec565b3480156103e157600080fd5b506101a66103f0366004611cac565b610900565b34801561040157600080fd5b5061023561094c565b34801561041657600080fd5b50610235610425366004611d7f565b6109a1565b34801561043657600080fd5b506101d0610445366004611c77565b610a22565b34801561045657600080fd5b50610251610465366004611e5b565b6001600160a01b039182166000908152600f6020908152604080832093909416825291909152205490565b61023561049e366004611c77565b610b42565b3480156104af57600080fd5b506101a66104be366004611e5b565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b3480156104f857600080fd5b50610235610507366004611e8e565b610d79565b34801561051857600080fd5b50610235610527366004611d12565b610d9f565b60006001600160e01b031982166380ac58cd60e01b148061055d57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461057290611ea6565b80601f016020809104026020016040519081016040528092919081815260200182805461059e90611ea6565b80156105eb5780601f106105c0576101008083540402835291602001916105eb565b820191906000526020600020905b8154815290600101906020018083116105ce57829003601f168201915b5050505050905090565b600061060082610e18565b506000908152600360205260409020546001600160a01b031690565b60075460ff16610634576106308282610e77565b5050565b33610640818484610ee5565b505050565b60006001600160a01b0384166106b05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b6001600160a01b0383166106d65760405162461bcd60e51b81526004016106a790611eda565b60075460ff16610717576106eb335b83611021565b6107075760405162461bcd60e51b81526004016106a790611f1d565b6107128484846110a0565b61072d565b61072284338461116c565b61072d8484846111f8565b5060019392505050565b61073f6113a3565b6107476113fd565b60405133904780156108fc02916000818181858888f19350505050158015610773573d6000803e3d6000fd5b5061077e6001600655565b565b60075460ff16156107a35760405162461bcd60e51b81526004016106a790611f6b565b610640838383604051806020016040528060008152506109a1565b6000818152600260205260408120546001600160a01b03168061055d5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016106a7565b60006001600160a01b0382166108875760405162461bcd60e51b815260206004820152602860248201527f45524332303a2061646472657373207a65726f206973206e6f7420612076616c60448201526734b21037bbb732b960c11b60648201526084016106a7565b60075460ff166108af576001600160a01b0382166000908152600e602052604090205461055d565b506001600160a01b03166000908152600d602052604090205490565b6108d36113a3565b61077e6000611456565b60606010805461057290611ea6565b60075460ff166106305761063082826114a8565b60075460009060ff161561093f576001600160a01b0383166109345760405162461bcd60e51b81526004016106a790611eda565b61093f3384846111f8565b5060075460ff1692915050565b6109546113a3565b60075460ff16156109925760405162461bcd60e51b815260206004820152600860248201526748617320646f6e6560c01b60448201526064016106a7565b6007805460ff19166001179055565b60075460ff16156109c45760405162461bcd60e51b81526004016106a790611f6b565b6109cd336106e5565b6109e95760405162461bcd60e51b81526004016106a790611f1d565b6109f48484846110a0565b610a00848484846114b3565b610a1c5760405162461bcd60e51b81526004016106a790611fa2565b50505050565b60075460609060ff1615610a485760405162461bcd60e51b81526004016106a790611f6b565b6000604051806101a0016040528061016881526020016125ac61016891399050606081601160008681526020019081526020016000206000016010604051602001610a9593929190612067565b60408051601f198184030181529181526000868152601160205220600101549091508190610ac2906115b4565b604051602001610ad392919061211f565b60405160208183030381529060405290506000610b16610af283611647565b604051602001610b02919061219c565b604051602081830303815290604052611647565b905080604051602001610b2991906121fb565b60408051601f1981840301815291905295945050505050565b600a54811115610b8a5760405162461bcd60e51b8152602060048201526013602482015272115e18d959591959081b5a5b9d081b1a5b5a5d606a1b60448201526064016106a7565b600954600854610ba49083906001600160801b0316612256565b10610be75760405162461bcd60e51b81526020600482015260136024820152724578636565646564206d617820737570706c7960681b60448201526064016106a7565b610bf36103e88261227f565b15610c4a5760405162461bcd60e51b815260206004820152602160248201527f416d6f756e74206d7573742062652061206d756c7469706c65206f66203130306044820152600360fc1b60648201526084016106a7565b323314610c995760405162461bcd60e51b815260206004820152601960248201527f436f6e74726163747320617265206e6f7420616c6c6f7765640000000000000060448201526064016106a7565b6000610cab338360096002015461179a565b9050801580610cc75750600c54610cc3908290612293565b3410155b610d095760405162461bcd60e51b8152602060048201526013602482015272496e76616c69642065746865722076616c756560681b60448201526064016106a7565b610d1333836117f4565b3360007f0e2c612cd3a6965782a48c7f571f155667c3c913eb3b6f0af0a004652b8fdc6d6010610d42866115b4565b604051602001610d539291906122aa565b60408051601f1981840301815290829052610d6d91611c64565b60405180910390a35050565b610d816113a3565b80356009556020810135600a556040810135600b5560600135600c55565b610da76113a3565b6001600160a01b038116610e0c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106a7565b610e1581611456565b50565b6000818152600260205260409020546001600160a01b0316610e155760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016106a7565b600081815260036020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610eac826107be565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6001600160a01b038316610f475760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106a7565b6001600160a01b038216610fa85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106a7565b6001600160a01b038084166000908152600f6020908152604080832093861683529290522081905560075460ff16156106405780826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60008061102d836107be565b9050806001600160a01b0316846001600160a01b0316148061107457506001600160a01b0380821660009081526004602090815260408083209388168352929052205460ff165b806110985750836001600160a01b031661108d846105f5565b6001600160a01b0316145b949350505050565b6110ab838383611939565b6000818152601160205260409020600101546110ca90849084906111f8565b6001600160a01b0383166000908152600e602052604081208054600192906110f3908490612348565b90915550506001600160a01b0382166000908152600e60205260408120805460019290611121908490612256565b909155505060405181906001600160a01b0380851691908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90600090a4610640600082610e77565b6001600160a01b038381166000908152600f60209081526040808320938616835292905220546000198114610a1c57818110156111eb5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106a7565b610a1c8484848403610ee5565b6112038383836119df565b6001600160a01b0383166000908152600d60205260409020548181101561127b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106a7565b6001600160a01b038085166000908152600d60205260408082208585039055918516815290812080548492906112b2908490612256565b909155506000905060106112c5846115b4565b6040516020016112d692919061235b565b6040516020818303038152906040529050836001600160a01b0316856001600160a01b03167f0e2c612cd3a6965782a48c7f571f155667c3c913eb3b6f0af0a004652b8fdc6d8360405160200161132d91906123da565b60408051601f198184030181529082905261134791611c64565b60405180910390a360075460ff161561139c5782846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b5050505050565b6005546001600160a01b0316331461077e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a7565b60026006540361144f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106a7565b6002600655565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610630338383611a34565b60006001600160a01b0384163b156115a957604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906114f7903390899088908890600401612412565b6020604051808303816000875af1925050508015611532575060408051601f3d908101601f1916820190925261152f91810190612445565b60015b61158f573d808015611560576040519150601f19603f3d011682016040523d82523d6000602084013e611565565b606091505b5080516000036115875760405162461bcd60e51b81526004016106a790611fa2565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611098565b506001949350505050565b606060006115c183611b02565b600101905060008167ffffffffffffffff8111156115e1576115e1611d69565b6040519080825280601f01601f19166020018201604052801561160b576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461161557509392505050565b6060815160000361166657505060408051602081019091526000815290565b600060405180606001604052806040815260200161271460409139905060006003845160026116959190612256565b61169f9190612462565b6116aa906004612293565b67ffffffffffffffff8111156116c2576116c2611d69565b6040519080825280601f01601f1916602001820160405280156116ec576020820181803683370190505b509050600182016020820185865187015b80821015611758576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f81168501518453506001830192506116fd565b505060038651066001811461177457600281146117875761178f565b603d6001830353603d600283035361178f565b603d60018303535b509195945050505050565b6001600160a01b0383166000908152600d602052604081205481838210156117cb576117c68285612348565b6117ce565b60005b9050848110156117e7576117e28186612348565b6117ea565b60005b9695505050505050565b60075461181390600090849061010090046001600160801b03166119df565b600880546fffffffffffffffffffffffffffffffff1981166001600160801b0391821684018216179091556001600160a01b0383166000818152600d60209081526040808320805487019055338352600e8252808320805460010190556007805461010090819004871685526002845282852080546001600160a01b03191690961790955581516080810183526004818401908152631b5a5b9d60e21b6060830152815280840188905290549490940490941682526011905291909120815181906118de90826124c4565b50602091909101516001909101556007546040516101009091046001600160801b0316906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b826001600160a01b031661194c826107be565b6001600160a01b0316146119b05760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016106a7565b600090815260026020526040902080546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b03831661064057600754611a099061010090046001600160801b03166001612584565b600760016101000a8154816001600160801b0302191690836001600160801b03160217905550505050565b816001600160a01b0316836001600160a01b031603611a955760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016106a7565b6001600160a01b03838116600081815260046020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611b415772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611b6d576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611b8b57662386f26fc10000830492506010015b6305f5e1008310611ba3576305f5e100830492506008015b6127108310611bb757612710830492506004015b60648310611bc9576064830492506002015b600a831061055d5760010192915050565b6001600160e01b031981168114610e1557600080fd5b600060208284031215611c0257600080fd5b8135611c0d81611bda565b9392505050565b60005b83811015611c2f578181015183820152602001611c17565b50506000910152565b60008151808452611c50816020860160208601611c14565b601f01601f19169290920160200192915050565b602081526000611c0d6020830184611c38565b600060208284031215611c8957600080fd5b5035919050565b80356001600160a01b0381168114611ca757600080fd5b919050565b60008060408385031215611cbf57600080fd5b611cc883611c90565b946020939093013593505050565b600080600060608486031215611ceb57600080fd5b611cf484611c90565b9250611d0260208501611c90565b9150604084013590509250925092565b600060208284031215611d2457600080fd5b611c0d82611c90565b60008060408385031215611d4057600080fd5b611d4983611c90565b915060208301358015158114611d5e57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215611d9557600080fd5b611d9e85611c90565b9350611dac60208601611c90565b925060408501359150606085013567ffffffffffffffff80821115611dd057600080fd5b818701915087601f830112611de457600080fd5b813581811115611df657611df6611d69565b604051601f8201601f19908116603f01168101908382118183101715611e1e57611e1e611d69565b816040528281528a6020848701011115611e3757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215611e6e57600080fd5b611e7783611c90565b9150611e8560208401611c90565b90509250929050565b600060808284031215611ea057600080fd5b50919050565b600181811c90821680611eba57607f821691505b602082108103611ea057634e487b7160e01b600052602260045260246000fd5b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6020808252601c908201527f4e6f7420737570706f72742045524337323120616e79206d6f72652e00000000604082015260600190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6000815461200181611ea6565b60018281168015612019576001811461202e5761205d565b60ff198416875282151583028701945061205d565b8560005260208060002060005b858110156120545781548a82015290840190820161203b565b50505082870194505b5050505092915050565b60008451612079818460208901611c14565b61208581840186611ff4565b7f222c3c2f746578743e3c7465787420783d223133302220793d223139302220638152733630b9b99e913130b9b2911f113a34b1b5911d1160611b602082015290506120d46034820185611ff4565b7f222c3c2f746578743e3c7465787420783d223133302220793d223232302220638152713630b9b99e913130b9b2911f1130b6ba111d60711b60208201526032019695505050505050565b60008351612131818460208801611c14565b835190830190612145818360208801611c14565b7f3c2f746578743e3c7465787420783d223130302220793d223235302220636c6191019081527f73733d2262617365223e7d3c2f746578743e3c2f7376673e00000000000000006020820152603801949350505050565b7f7b22696d616765223a2022646174613a696d6167652f7376672b786d6c3b62618152641cd94d8d0b60da1b6020820152600082516121e2816025850160208701611c14565b61227d60f01b6025939091019283015250602701919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825161223381601d850160208701611c14565b91909101601d0192915050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561055d5761055d612240565b634e487b7160e01b600052601260045260246000fd5b60008261228e5761228e612269565b500690565b808202811582820484141761055d5761055d612240565b7f646174613a746578742f706c61696e3b636861727365743d7574662d3800000081527f7b2270223a226572632d3230222c226f70223a226d696e74222c227469636b22601d820152611d1160f11b603d820152600061230d603f830185611ff4565b6711161130b6ba111d60c11b8152835161232e816008840160208801611c14565b607d60f81b60089290910191820152600901949350505050565b8181038181111561055d5761055d612240565b7f7b2270223a226572632d3230222c226f70223a227472616e73666572222c22748152661a58dac88e888b60ca1b6020820152600061239d6027830185611ff4565b6811161130b6ba111d1160b91b815283516123bf816009840160208801611c14565b61227d60f01b60099290910191820152600b01949350505050565b7f646174613a746578742f706c61696e3b636861727365743d7574662d3800000081526000825161223381601d850160208701611c14565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906117ea90830184611c38565b60006020828403121561245757600080fd5b8151611c0d81611bda565b60008261247157612471612269565b500490565b601f82111561064057600081815260208120601f850160051c8101602086101561249d5750805b601f850160051c820191505b818110156124bc578281556001016124a9565b505050505050565b815167ffffffffffffffff8111156124de576124de611d69565b6124f2816124ec8454611ea6565b84612476565b602080601f831160018114612527576000841561250f5750858301515b600019600386901b1c1916600185901b1785556124bc565b600085815260208120601f198616915b8281101561255657888601518255948401946001909101908401612537565b50858210156125745787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160801b038181168382160190808211156125a4576125a4612240565b509291505056fe3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f73766722207072657365727665417370656374526174696f3d22784d696e594d696e206d656574222076696577426f783d223020302033353020333530223e203c7374796c653e2e62617365207b2066696c6c3a2077686974653b20666f6e742d66616d696c793a2073657269663b20666f6e742d73697a653a20313470783b207d3c2f7374796c653e3c726563742077696474683d223130302522206865696768743d2231303025222066696c6c3d22626c61636b22202f3e3c7465787420783d223130302220793d223130302220636c6173733d2262617365223e7b3c2f746578743e3c7465787420783d223133302220793d223133302220636c6173733d2262617365223e2270223a226572632d3230222c3c2f746578743e3c7465787420783d223133302220793d223136302220636c6173733d2262617365223e226f70223a224142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212204f799441d5cff941e48eb7d12aab45a48d17c4df6c7e538f420c459f3c2ff8aa64736f6c63430008120033000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000044b50574300000000000000000000000000000000000000000000000000000000