6080604052600380546001600160a01b03191661066617905569152d02c7e14af6800000600b8190556200003690600019620004d6565b620000449060001962000503565b600c5560408051808201909152600e8082526d466c6f6b69204e6f20576f72647360901b60209092019182526200007c91816200041a565b50604080518082019091526008808252674e6f20576f72647360c01b6020909201918252620000ae91600f916200041a565b506010805460ff19166009179055600a601181905560125560056013819055601455681b1ae4d6e2ef500000601555348015620000ea57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506200016360326200014f6064600c546200030060201b6200104a1790919060201c565b6200035360201b6200108c1790919060201c565b33600090815260046020908152604090912091909155600c546200019b916032916200014f916064906200104a62000300821b17901c565b6003546001600160a01b0316600090815260046020526040812091909155600190600790620001d26000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260079093528183208054851660019081179091556003549091168352912080549092161790556014601155620002363390565b6001600160a01b031660006001600160a01b03166000805160206200276a8339815191526200029160646200027d6032600b546200035360201b6200108c1790919060201c565b6200030060201b6200104a1790919060201c565b60405190815260200160405180910390a3600354600b546001600160a01b03909116906000906000805160206200276a83398151915290620002e9906064906200027d90603262000353602090811b6200108c17901c565b60405190815260200160405180910390a3620005eb565b60006200034a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620003de60201b60201c565b90505b92915050565b60008262000364575060006200034d565b60006200037283856200051d565b9050826200038185836200053f565b146200034a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b60008183620004025760405162461bcd60e51b8152600401620003d5919062000556565b5060006200041184866200053f565b95945050505050565b8280546200042890620005ae565b90600052602060002090601f0160209004810192826200044c576000855562000497565b82601f106200046757805160ff191683800117855562000497565b8280016001018555821562000497579182015b82811115620004975782518255916020019190600101906200047a565b50620004a5929150620004a9565b5090565b5b80821115620004a55760008155600101620004aa565b634e487b7160e01b600052601260045260246000fd5b600082620004e857620004e8620004c0565b500690565b634e487b7160e01b600052601160045260246000fd5b600082821015620005185762000518620004ed565b500390565b60008160001904831182151516156200053a576200053a620004ed565b500290565b600082620005515762000551620004c0565b500490565b600060208083528351808285015260005b81811015620005855785810183015185820160400152820162000567565b8181111562000598576000604083870101525b50601f01601f1916929092016040019392505050565b600181811c90821680620005c357607f821691505b60208210811415620005e557634e487b7160e01b600052602260045260246000fd5b50919050565b61216f80620005fb6000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80635342acb41161011a578063a457c2d7116100ad578063dd4670641161007c578063dd46706414610404578063dd62ed3e14610417578063ea2f0b3714610450578063ec28438a14610463578063f2fde38b1461047657600080fd5b8063a457c2d7146103cd578063a69df4b5146103e0578063a9059cbb146103e8578063c0b0fda2146103fb57600080fd5b8063715018a6116100e9578063715018a6146103995780637d1db4a5146103a15780638da5cb5b146103aa57806395d89b41146103c557600080fd5b80635342acb41461034c578063557ed1ba14610378578063602bc62b1461037e57806370a082311461038657600080fd5b8063313ce5671161019d5780633bd5d1731161016c5780633bd5d173146102f8578063437823ec1461030b5780634549b0391461031e5780635134f6ab1461033157806352390c021461033957600080fd5b8063313ce567146102b45780633685d419146102c957806339509351146102dc5780633b124fe7146102ef57600080fd5b80630b78f9c0116101d95780630b78f9c01461026957806318160ddd1461027c57806323b872dd1461028e5780632d838119146102a157600080fd5b806306fdde031461020b57806307efbfdc14610229578063095ea7b3146102335780630a61415e14610256575b600080fd5b610213610489565b6040516102209190611dd2565b60405180910390f35b61023161051b565b005b610246610241366004611e43565b610567565b6040519015158152602001610220565b610231610264366004611e7d565b61057e565b610231610277366004611eb0565b6105d3565b600b545b604051908152602001610220565b61024661029c366004611ed2565b610608565b6102806102af366004611f0e565b610671565b60105460405160ff9091168152602001610220565b6102316102d7366004611f27565b6106f5565b6102466102ea366004611e43565b6108ac565b61028060135481565b610231610306366004611f0e565b6108e2565b610231610319366004611f27565b6109cc565b61028061032c366004611f42565b610a1a565b610231610aa7565b610231610347366004611f27565b610aeb565b61024661035a366004611f27565b6001600160a01b031660009081526007602052604090205460ff1690565b42610280565b600254610280565b610280610394366004611f27565b610c3e565b610231610c9d565b61028060155481565b6000546040516001600160a01b039091168152602001610220565b610213610cff565b6102466103db366004611e43565b610d0e565b610231610d5d565b6102466103f6366004611e43565b610e66565b61028060115481565b610231610412366004611f0e565b610e73565b610280610425366004611f65565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b61023161045e366004611f27565b610ef8565b610231610471366004611f0e565b610f43565b610231610484366004611f27565b610f72565b6060600e805461049890611f8f565b80601f01602080910402602001604051908101604052809291908181526020018280546104c490611f8f565b80156105115780601f106104e657610100808354040283529160200191610511565b820191906000526020600020905b8154815290600101906020018083116104f457829003601f168201915b5050505050905090565b6000546001600160a01b0316331461054e5760405162461bcd60e51b815260040161054590611fca565b60405180910390fd5b6005601355600a601155681b1ae4d6e2ef500000601555565b600061057433848461110b565b5060015b92915050565b6000546001600160a01b031633146105a85760405162461bcd60e51b815260040161054590611fca565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146105fd5760405162461bcd60e51b815260040161054590611fca565b601191909155601355565b600061061584848461122f565b6106678433610662856040518060600160405280602881526020016120cd602891396001600160a01b038a16600090815260066020908152604080832033845290915290205491906114ab565b61110b565b5060019392505050565b6000600c548211156106d85760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610545565b60006106e26114e5565b90506106ee838261104a565b9392505050565b6000546001600160a01b0316331461071f5760405162461bcd60e51b815260040161054590611fca565b6001600160a01b03811660009081526008602052604090205460ff166107875760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610545565b60005b600a548110156108a857816001600160a01b0316600a82815481106107b1576107b1611fff565b6000918252602090912001546001600160a01b0316141561089657600a80546107dc9060019061202b565b815481106107ec576107ec611fff565b600091825260209091200154600a80546001600160a01b03909216918390811061081857610818611fff565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600582526040808220829055600890925220805460ff19169055600a80548061087057610870612042565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806108a081612058565b91505061078a565b5050565b3360008181526006602090815260408083206001600160a01b038716845290915281205490916105749185906106629086611508565b3360008181526008602052604090205460ff16156109575760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610545565b600061096283611567565b505050506001600160a01b03841660009081526004602052604090205491925061098e919050826115b6565b6001600160a01b038316600090815260046020526040902055600c546109b490826115b6565b600c55600d546109c49084611508565b600d55505050565b6000546001600160a01b031633146109f65760405162461bcd60e51b815260040161054590611fca565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000600b54831115610a6e5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610545565b81610a8d576000610a7e84611567565b50939550610578945050505050565b6000610a9884611567565b50929550610578945050505050565b6000546001600160a01b03163314610ad15760405162461bcd60e51b815260040161054590611fca565b6000601381905560115569152d02c7e14af6800000601555565b6000546001600160a01b03163314610b155760405162461bcd60e51b815260040161054590611fca565b6001600160a01b03811660009081526008602052604090205460ff1615610b7e5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610545565b6001600160a01b03811660009081526004602052604090205415610bd8576001600160a01b038116600090815260046020526040902054610bbe90610671565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600860205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6001600160a01b03811660009081526008602052604081205460ff1615610c7b57506001600160a01b031660009081526005602052604090205490565b6001600160a01b03821660009081526004602052604090205461057890610671565b6000546001600160a01b03163314610cc75760405162461bcd60e51b815260040161054590611fca565b600080546040516001600160a01b03909116906000805160206120f5833981519152908390a3600080546001600160a01b0319169055565b6060600f805461049890611f8f565b6000610574338461066285604051806060016040528060258152602001612115602591393360009081526006602090815260408083206001600160a01b038d16845290915290205491906114ab565b6001546001600160a01b03163314610dc35760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610545565b6002544211610e145760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610545565b600154600080546040516001600160a01b0393841693909116916000805160206120f583398151915291a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b600061057433848461122f565b6000546001600160a01b03163314610e9d5760405162461bcd60e51b815260040161054590611fca565b60008054600180546001600160a01b03199081166001600160a01b03841617909155169055610ecc8142612073565b600255600080546040516001600160a01b03909116906000805160206120f5833981519152908390a350565b6000546001600160a01b03163314610f225760405162461bcd60e51b815260040161054590611fca565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b03163314610f6d5760405162461bcd60e51b815260040161054590611fca565b601555565b6000546001600160a01b03163314610f9c5760405162461bcd60e51b815260040161054590611fca565b6001600160a01b0381166110015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610545565b600080546040516001600160a01b03808516939216916000805160206120f583398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006106ee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506115f8565b60008261109b57506000610578565b60006110a7838561208b565b9050826110b485836120aa565b146106ee5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610545565b6001600160a01b03831661116d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610545565b6001600160a01b0382166111ce5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610545565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112935760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610545565b6001600160a01b0382166112f55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610545565b600081116113575760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610545565b6001600160a01b03831660009081526009602052604090205460ff161515600114156113ba5760405162461bcd60e51b815260206004820152601260248201527110539512481093d5081050d512559055115160721b6044820152606401610545565b6000546001600160a01b038481169116148015906113e657506000546001600160a01b03838116911614155b1561144e5760155481111561144e5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610545565b6001600160a01b03831660009081526007602052604090205460019060ff168061149057506001600160a01b03831660009081526007602052604090205460ff165b15611499575060005b6114a584848484611626565b50505050565b600081848411156114cf5760405162461bcd60e51b81526004016105459190611dd2565b5060006114dc848661202b565b95945050505050565b60008060006114f261174b565b9092509050611501828261104a565b9250505090565b6000806115158385612073565b9050838110156106ee5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610545565b600080600080600080600080600061157e8a6118cd565b925092509250600080600061159c8d86866115976114e5565b61190f565b919f909e50909c50959a5093985091965092945050505050565b60006106ee83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114ab565b600081836116195760405162461bcd60e51b81526004016105459190611dd2565b5060006114dc84866120aa565b806116335761163361195f565b6001600160a01b03841660009081526008602052604090205460ff16801561167457506001600160a01b03831660009081526008602052604090205460ff16155b156116895761168484848461197f565b611735565b6001600160a01b03841660009081526008602052604090205460ff161580156116ca57506001600160a01b03831660009081526008602052604090205460ff165b156116da57611684848484611aa6565b6001600160a01b03841660009081526008602052604090205460ff16801561171a57506001600160a01b03831660009081526008602052604090205460ff165b1561172a57611684848484611b4f565b611735848484611bc2565b806114a5576114a5601454601355601254601155565b600c54600b546000918291825b600a5481101561189d578260046000600a848154811061177a5761177a611fff565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806117e557508160056000600a84815481106117be576117be611fff565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156117fb57600c54600b54945094505050509091565b61184160046000600a848154811061181557611815611fff565b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906115b6565b925061188960056000600a848154811061185d5761185d611fff565b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906115b6565b91508061189581612058565b915050611758565b50600b54600c546118ad9161104a565b8210156118c457600c54600b549350935050509091565b90939092509050565b6000806000806118dc85611c06565b905060006118e986611c28565b90506000611901826118fb89866115b6565b906115b6565b979296509094509092505050565b600080808061191e888661108c565b9050600061192c888761108c565b9050600061193a888861108c565b9050600061194c826118fb86866115b6565b939b939a50919850919650505050505050565b60135461196857565b601380546014556011805460125560009182905555565b60008060008060008061199187611567565b6001600160a01b038f16600090815260056020526040902054959b509399509197509550935091506119c390886115b6565b6001600160a01b038a166000908152600560209081526040808320939093556004905220546119f290876115b6565b6001600160a01b03808b1660009081526004602052604080822093909355908a1681522054611a219086611508565b6001600160a01b038916600090815260046020526040902055611a448188611c51565b611a4e8483611dae565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611a9391815260200190565b60405180910390a3505050505050505050565b600080600080600080611ab887611567565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150611aea90876115b6565b6001600160a01b03808b16600090815260046020908152604080832094909455918b16815260059091522054611b209084611508565b6001600160a01b038916600090815260056020908152604080832093909355600490522054611a219086611508565b600080600080600080611b6187611567565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150611b9390886115b6565b6001600160a01b038a16600090815260056020908152604080832093909355600490522054611aea90876115b6565b600080600080600080611bd487611567565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506119f290876115b6565b60006105786064611c226013548561108c90919063ffffffff16565b9061104a565b600080611c456064611c226011548661108c90919063ffffffff16565b90506106ee8282611508565b6000611c5b6114e5565b90506000611c6e6064611c22858461108c565b90506000611c7c828461108c565b30600090815260046020526040902054909150611c999082611508565b3060009081526004602090815260408083209390935560089052205460ff1615611ce85730600090815260056020526040902054611cd79083611508565b306000908152600560205260409020555b6000611cf4838761202b565b90506000611d02828661108c565b6003546001600160a01b0316600090815260046020526040902054909150611d2a9082611508565b600380546001600160a01b03908116600090815260046020908152604080832095909555925490911681526008909152205460ff1615611da5576003546001600160a01b0316600090815260056020526040902054611d899083611508565b6003546001600160a01b03166000908152600560205260409020555b50505050505050565b600c54611dbb90836115b6565b600c55600d54611dcb9082611508565b600d555050565b600060208083528351808285015260005b81811015611dff57858101830151858201604001528201611de3565b81811115611e11576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114611e3e57600080fd5b919050565b60008060408385031215611e5657600080fd5b611e5f83611e27565b946020939093013593505050565b80358015158114611e3e57600080fd5b60008060408385031215611e9057600080fd5b611e9983611e27565b9150611ea760208401611e6d565b90509250929050565b60008060408385031215611ec357600080fd5b50508035926020909101359150565b600080600060608486031215611ee757600080fd5b611ef084611e27565b9250611efe60208501611e27565b9150604084013590509250925092565b600060208284031215611f2057600080fd5b5035919050565b600060208284031215611f3957600080fd5b6106ee82611e27565b60008060408385031215611f5557600080fd5b82359150611ea760208401611e6d565b60008060408385031215611f7857600080fd5b611f8183611e27565b9150611ea760208401611e27565b600181811c90821680611fa357607f821691505b60208210811415611fc457634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008282101561203d5761203d612015565b500390565b634e487b7160e01b600052603160045260246000fd5b600060001982141561206c5761206c612015565b5060010190565b6000821982111561208657612086612015565b500190565b60008160001904831182151516156120a5576120a5612015565b500290565b6000826120c757634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220876c6a29d7c04580df0f7cd9308df2deff4c52ea54db15652a6762dd442139a464736f6c634300080b0033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef