0x608060405260043610610134575f3560e01c80638a8c523c116100a8578063afa4f3b21161006d578063afa4f3b214610365578063c024666814610384578063dd62ed3e146103a3578063e01af92c146103e7578063f499133514610406578063f507de771461041b575f80fd5b80638a8c523c146102cc5780638da5cb5b146102e05780638f83745f1461030657806395d89b411461031b578063a9059cbb14610346575f80fd5b8063313ce567116100f9578063313ce567146102165780635b4f472a146102315780635d0044ca1461025157806370a0823114610270578063715018a6146102a4578063751039fc146102b8575f80fd5b806306fdde031461013f578063095ea7b3146101835780630b78f9c0146101b257806318160ddd146101d357806323b872dd146101f7575f80fd5b3661013b57005b5f80fd5b34801561014a575f80fd5b5060408051808201909152600a81526921b7b4b7223ab1ba37b960b11b60208201525b60405161017a9190610f88565b60405180910390f35b34801561018e575f80fd5b506101a261019d366004610feb565b610430565b604051901515815260200161017a565b3480156101bd575f80fd5b506101d16101cc366004611015565b610446565b005b3480156101de575f80fd5b5067016345785d8a00005b60405190815260200161017a565b348015610202575f80fd5b506101a2610211366004611035565b6104a0565b348015610221575f80fd5b506040516009815260200161017a565b34801561023c575f80fd5b506009546101a290600160a01b900460ff1681565b34801561025c575f80fd5b506101d161026b366004611073565b610507565b34801561027b575f80fd5b506101e961028a36600461108a565b6001600160a01b03165f9081526002602052604090205490565b3480156102af575f80fd5b506101d16105a9565b3480156102c3575f80fd5b506101d161061a565b3480156102d7575f80fd5b506101d1610651565b3480156102eb575f80fd5b505f546040516001600160a01b03909116815260200161017a565b348015610311575f80fd5b506101e960065481565b348015610326575f80fd5b5060408051808201909152600381526221a22960e91b602082015261016d565b348015610351575f80fd5b506101a2610360366004610feb565b61068f565b348015610370575f80fd5b506101d161037f366004611073565b61069b565b34801561038f575f80fd5b506101d161039e3660046110b9565b6106c9565b3480156103ae575f80fd5b506101e96103bd3660046110ec565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156103f2575f80fd5b506101d1610401366004611123565b61071c565b348015610411575f80fd5b506101e960045481565b348015610426575f80fd5b506101e960075481565b5f61043c33848461075f565b5060015b92915050565b5f546001600160a01b031633146104785760405162461bcd60e51b815260040161046f9061113c565b60405180910390fd5b6006829055600781905560198211801590610494575060198111155b61049c575f80fd5b5050565b5f6104ac8484846107bf565b6104fd84336104f885604051806060016040528060288152602001611282602891396001600160a01b038a165f9081526001602090815260408083203384529091529020549190610c44565b61075f565b5060019392505050565b5f546001600160a01b031633146105305760405162461bcd60e51b815260040161046f9061113c565b61054461022667016345785d8a0000611185565b8110156105a45760405162461bcd60e51b815260206004820152602860248201527f4d61782077616c6c65742073697a652063616e2774206265206c6f776572207460448201526768616e20302e322560c01b606482015260840161046f565b600455565b5f546001600160a01b031633146105d25760405162461bcd60e51b815260040161046f9061113c565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146106435760405162461bcd60e51b815260040161046f9061113c565b67016345785d8a0000600455565b5f546001600160a01b0316331461067a5760405162461bcd60e51b815260040161046f9061113c565b6009805460ff60a01b1916600160a01b179055565b5f61043c3384846107bf565b5f546001600160a01b031633146106c45760405162461bcd60e51b815260040161046f9061113c565b600355565b5f546001600160a01b031633146106f25760405162461bcd60e51b815260040161046f9061113c565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146107455760405162461bcd60e51b815260040161046f9061113c565b600880549115156101000261ff0019909216919091179055565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383165f908152600b602052604081205460ff161580156107ff57506001600160a01b0383165f908152600b602052604090205460ff16155b801561081857505f546001600160a01b03858116911614155b15610b0757600954600160a01b900460ff1661086a5760405162461bcd60e51b81526020600482015260116024820152702a3930b2329034b9903737ba1037b832b760791b604482015260640161046f565b61088a606461088460065485610c7c90919063ffffffff16565b90610d01565b6008549091506001600160a01b0385811662010000909204161480156108c857506001600160a01b0383165f908152600b602052604090205460ff16155b1561093e57600454826108ef856001600160a01b03165f9081526002602052604090205490565b6108f991906111a4565b111561093e5760405162461bcd60e51b81526020600482015260146024820152734d61782077616c6c65742072656163686564212160601b604482015260640161046f565b6008546001600160a01b0384811662010000909204161480159061097a57506001600160a01b0383165f908152600b602052604090205460ff16155b156109f057600454826109a1856001600160a01b03165f9081526002602052604090205490565b6109ab91906111a4565b11156109f05760405162461bcd60e51b81526020600482015260146024820152734d61782077616c6c65742072656163686564212160601b604482015260640161046f565b6008546001600160a01b038481166201000090920416148015610a2b57506001600160a01b0383165f908152600b602052604090205460ff16155b15610a4d57606460075483610a4091906111b7565b610a4a9190611185565b90505b305f9081526002602052604090205460085460ff16158015610a8257506008546001600160a01b038581166201000090920416145b8015610a955750600854610100900460ff165b8015610aa2575060035481115b15610b0557610ac4610abf84610aba84600554610d42565b610d42565b610d56565b478015610b03576009546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610b01573d5f803e3d5ffd5b505b505b505b8015610b7f57305f90815260026020526040902054610b269082610ebd565b305f81815260026020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b769085815260200190565b60405180910390a35b6001600160a01b0384165f90815260026020526040902054610ba19083610f1b565b6001600160a01b0385165f90815260026020526040902055610be4610bc68383610f1b565b6001600160a01b0385165f9081526002602052604090205490610ebd565b6001600160a01b038085165f8181526002602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610c2d8585610f1b565b60405190815260200160405180910390a350505050565b5f8184841115610c675760405162461bcd60e51b815260040161046f9190610f88565b505f610c7384866111ce565b95945050505050565b5f825f03610c8b57505f610440565b5f610c9683856111b7565b905082610ca38583611185565b14610cfa5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161046f565b9392505050565b5f610cfa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610f5c565b5f818311610d505782610cfa565b50919050565b6008805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610d9657610d966111e1565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610ded573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e1191906111f5565b81600181518110610e2457610e246111e1565b6001600160a01b039283166020918202929092010152600a54610e4a913091168461075f565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac94790610e829085905f90869030904290600401611210565b5f604051808303815f87803b158015610e99575f80fd5b505af1158015610eab573d5f803e3d5ffd5b50506008805460ff1916905550505050565b5f80610ec983856111a4565b905083811015610cfa5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161046f565b5f610cfa83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c44565b5f8183610f7c5760405162461bcd60e51b815260040161046f9190610f88565b505f610c738486611185565b5f602080835283518060208501525f5b81811015610fb457858101830151858201604001528201610f98565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610fe8575f80fd5b50565b5f8060408385031215610ffc575f80fd5b823561100781610fd4565b946020939093013593505050565b5f8060408385031215611026575f80fd5b50508035926020909101359150565b5f805f60608486031215611047575f80fd5b833561105281610fd4565b9250602084013561106281610fd4565b929592945050506040919091013590565b5f60208284031215611083575f80fd5b5035919050565b5f6020828403121561109a575f80fd5b8135610cfa81610fd4565b803580151581146110b4575f80fd5b919050565b5f80604083850312156110ca575f80fd5b82356110d581610fd4565b91506110e3602084016110a5565b90509250929050565b5f80604083850312156110fd575f80fd5b823561110881610fd4565b9150602083013561111881610fd4565b809150509250929050565b5f60208284031215611133575f80fd5b610cfa826110a5565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f8261119f57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561044057610440611171565b808202811582820484141761044057610440611171565b8181038181111561044057610440611171565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611205575f80fd5b8151610cfa81610fd4565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156112605784516001600160a01b03168352938301939183019160010161123b565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220871aa4168849d3c0766bdad3c158daf9a2c413004205f04a30d51d465fd1c1b064736f6c63430008170033
0x60806040526200001a6103e867016345785d8a000062000354565b60035560646200003467016345785d8a0000600262000374565b62000040919062000354565b60045562000058606467016345785d8a000062000354565b600555600f60065560146007556008805461ffff191661010017905534801562000080575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600980546001600160a01b03199081163317909155600a8054737a250d5630b4cf539739df2c5dacb4c659f2488d9216821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200012f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200015591906200039e565b6001600160a01b031663c9c6539630600a5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001b5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001db91906200039e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000226573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200024c91906200039e565b600880546001600160a01b0392909216620100000262010000600160b01b0319909216919091179055305f908152600b60208181526040808420805460ff1990811660019081179092553386526002845291852067016345785d8a00009055737a250d5630b4cf539739df2c5dacb4c659f2488d9094529190527fd1def2fe8304e5e69b6f2907349cddd4c272de4ef47368d65b87ae00d7f1014780549091169091179055620002f93390565b6001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a00006040516200034691815260200190565b60405180910390a3620003cd565b5f826200036f57634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176200039857634e487b7160e01b5f52601160045260245ffd5b92915050565b5f60208284031215620003af575f80fd5b81516001600160a01b0381168114620003c6575f80fd5b9392505050565b6112df80620003db5f395ff3fe608060405260043610610134575f3560e01c80638a8c523c116100a8578063afa4f3b21161006d578063afa4f3b214610365578063c024666814610384578063dd62ed3e146103a3578063e01af92c146103e7578063f499133514610406578063f507de771461041b575f80fd5b80638a8c523c146102cc5780638da5cb5b146102e05780638f83745f1461030657806395d89b411461031b578063a9059cbb14610346575f80fd5b8063313ce567116100f9578063313ce567146102165780635b4f472a146102315780635d0044ca1461025157806370a0823114610270578063715018a6146102a4578063751039fc146102b8575f80fd5b806306fdde031461013f578063095ea7b3146101835780630b78f9c0146101b257806318160ddd146101d357806323b872dd146101f7575f80fd5b3661013b57005b5f80fd5b34801561014a575f80fd5b5060408051808201909152600a81526921b7b4b7223ab1ba37b960b11b60208201525b60405161017a9190610f88565b60405180910390f35b34801561018e575f80fd5b506101a261019d366004610feb565b610430565b604051901515815260200161017a565b3480156101bd575f80fd5b506101d16101cc366004611015565b610446565b005b3480156101de575f80fd5b5067016345785d8a00005b60405190815260200161017a565b348015610202575f80fd5b506101a2610211366004611035565b6104a0565b348015610221575f80fd5b506040516009815260200161017a565b34801561023c575f80fd5b506009546101a290600160a01b900460ff1681565b34801561025c575f80fd5b506101d161026b366004611073565b610507565b34801561027b575f80fd5b506101e961028a36600461108a565b6001600160a01b03165f9081526002602052604090205490565b3480156102af575f80fd5b506101d16105a9565b3480156102c3575f80fd5b506101d161061a565b3480156102d7575f80fd5b506101d1610651565b3480156102eb575f80fd5b505f546040516001600160a01b03909116815260200161017a565b348015610311575f80fd5b506101e960065481565b348015610326575f80fd5b5060408051808201909152600381526221a22960e91b602082015261016d565b348015610351575f80fd5b506101a2610360366004610feb565b61068f565b348015610370575f80fd5b506101d161037f366004611073565b61069b565b34801561038f575f80fd5b506101d161039e3660046110b9565b6106c9565b3480156103ae575f80fd5b506101e96103bd3660046110ec565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156103f2575f80fd5b506101d1610401366004611123565b61071c565b348015610411575f80fd5b506101e960045481565b348015610426575f80fd5b506101e960075481565b5f61043c33848461075f565b5060015b92915050565b5f546001600160a01b031633146104785760405162461bcd60e51b815260040161046f9061113c565b60405180910390fd5b6006829055600781905560198211801590610494575060198111155b61049c575f80fd5b5050565b5f6104ac8484846107bf565b6104fd84336104f885604051806060016040528060288152602001611282602891396001600160a01b038a165f9081526001602090815260408083203384529091529020549190610c44565b61075f565b5060019392505050565b5f546001600160a01b031633146105305760405162461bcd60e51b815260040161046f9061113c565b61054461022667016345785d8a0000611185565b8110156105a45760405162461bcd60e51b815260206004820152602860248201527f4d61782077616c6c65742073697a652063616e2774206265206c6f776572207460448201526768616e20302e322560c01b606482015260840161046f565b600455565b5f546001600160a01b031633146105d25760405162461bcd60e51b815260040161046f9061113c565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146106435760405162461bcd60e51b815260040161046f9061113c565b67016345785d8a0000600455565b5f546001600160a01b0316331461067a5760405162461bcd60e51b815260040161046f9061113c565b6009805460ff60a01b1916600160a01b179055565b5f61043c3384846107bf565b5f546001600160a01b031633146106c45760405162461bcd60e51b815260040161046f9061113c565b600355565b5f546001600160a01b031633146106f25760405162461bcd60e51b815260040161046f9061113c565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146107455760405162461bcd60e51b815260040161046f9061113c565b600880549115156101000261ff0019909216919091179055565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383165f908152600b602052604081205460ff161580156107ff57506001600160a01b0383165f908152600b602052604090205460ff16155b801561081857505f546001600160a01b03858116911614155b15610b0757600954600160a01b900460ff1661086a5760405162461bcd60e51b81526020600482015260116024820152702a3930b2329034b9903737ba1037b832b760791b604482015260640161046f565b61088a606461088460065485610c7c90919063ffffffff16565b90610d01565b6008549091506001600160a01b0385811662010000909204161480156108c857506001600160a01b0383165f908152600b602052604090205460ff16155b1561093e57600454826108ef856001600160a01b03165f9081526002602052604090205490565b6108f991906111a4565b111561093e5760405162461bcd60e51b81526020600482015260146024820152734d61782077616c6c65742072656163686564212160601b604482015260640161046f565b6008546001600160a01b0384811662010000909204161480159061097a57506001600160a01b0383165f908152600b602052604090205460ff16155b156109f057600454826109a1856001600160a01b03165f9081526002602052604090205490565b6109ab91906111a4565b11156109f05760405162461bcd60e51b81526020600482015260146024820152734d61782077616c6c65742072656163686564212160601b604482015260640161046f565b6008546001600160a01b038481166201000090920416148015610a2b57506001600160a01b0383165f908152600b602052604090205460ff16155b15610a4d57606460075483610a4091906111b7565b610a4a9190611185565b90505b305f9081526002602052604090205460085460ff16158015610a8257506008546001600160a01b038581166201000090920416145b8015610a955750600854610100900460ff165b8015610aa2575060035481115b15610b0557610ac4610abf84610aba84600554610d42565b610d42565b610d56565b478015610b03576009546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610b01573d5f803e3d5ffd5b505b505b505b8015610b7f57305f90815260026020526040902054610b269082610ebd565b305f81815260026020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b769085815260200190565b60405180910390a35b6001600160a01b0384165f90815260026020526040902054610ba19083610f1b565b6001600160a01b0385165f90815260026020526040902055610be4610bc68383610f1b565b6001600160a01b0385165f9081526002602052604090205490610ebd565b6001600160a01b038085165f8181526002602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610c2d8585610f1b565b60405190815260200160405180910390a350505050565b5f8184841115610c675760405162461bcd60e51b815260040161046f9190610f88565b505f610c7384866111ce565b95945050505050565b5f825f03610c8b57505f610440565b5f610c9683856111b7565b905082610ca38583611185565b14610cfa5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161046f565b9392505050565b5f610cfa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610f5c565b5f818311610d505782610cfa565b50919050565b6008805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610d9657610d966111e1565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610ded573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e1191906111f5565b81600181518110610e2457610e246111e1565b6001600160a01b039283166020918202929092010152600a54610e4a913091168461075f565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac94790610e829085905f90869030904290600401611210565b5f604051808303815f87803b158015610e99575f80fd5b505af1158015610eab573d5f803e3d5ffd5b50506008805460ff1916905550505050565b5f80610ec983856111a4565b905083811015610cfa5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161046f565b5f610cfa83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c44565b5f8183610f7c5760405162461bcd60e51b815260040161046f9190610f88565b505f610c738486611185565b5f602080835283518060208501525f5b81811015610fb457858101830151858201604001528201610f98565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610fe8575f80fd5b50565b5f8060408385031215610ffc575f80fd5b823561100781610fd4565b946020939093013593505050565b5f8060408385031215611026575f80fd5b50508035926020909101359150565b5f805f60608486031215611047575f80fd5b833561105281610fd4565b9250602084013561106281610fd4565b929592945050506040919091013590565b5f60208284031215611083575f80fd5b5035919050565b5f6020828403121561109a575f80fd5b8135610cfa81610fd4565b803580151581146110b4575f80fd5b919050565b5f80604083850312156110ca575f80fd5b82356110d581610fd4565b91506110e3602084016110a5565b90509250929050565b5f80604083850312156110fd575f80fd5b823561110881610fd4565b9150602083013561111881610fd4565b809150509250929050565b5f60208284031215611133575f80fd5b610cfa826110a5565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f8261119f57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561044057610440611171565b808202811582820484141761044057610440611171565b8181038181111561044057610440611171565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611205575f80fd5b8151610cfa81610fd4565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156112605784516001600160a01b03168352938301939183019160010161123b565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220871aa4168849d3c0766bdad3c158daf9a2c413004205f04a30d51d465fd1c1b064736f6c63430008170033