0x60806040526004361061028e575f3560e01c8063875c2af811610155578063bf56b371116100be578063f2fde38b11610078578063f2fde38b146107d9578063f887ea40146107f8578063f8b45b0514610817578063fa05db0f1461082c578063fabe62831461084b578063ffb54a991461086a575f80fd5b8063bf56b37114610719578063c45a01551461072e578063c8d1293d1461074d578063c9567bf914610762578063d920334e14610776578063dd62ed3e14610795575f80fd5b80638ea5220f1161010f5780638ea5220f1461065257806395d89b4114610671578063a3a2e89e1461069d578063a8aa1b31146106bc578063a9059cbb146106db578063b515566a146106fa575f80fd5b8063875c2af81461059057806389215317146105af57806389291a8f146105c4578063893d20e8146105d85780638b42507f146106085780638da5cb5b14610636575f80fd5b80633dab5269116101f757806366eb3785116101b157806366eb3785146104e057806370a08231146104f4578063715018a6146105285780637437681e1461053c5780637db1342c146105515780637dfcbe3414610570575f80fd5b80633dab5269146104145780633f4218e0146104335780634551bbe914610461578063470624021461048c5780634a74bb02146104a1578063571ac8b0146104c1575f80fd5b8063246ea64e11610248578063246ea64e1461037d578063273123b7146103925780632b112e49146103b15780632b14ca56146103c55780632dbea2e1146103da578063313ce567146103f9575f80fd5b80630445b6671461029957806306fdde03146102c1578063095ea7b3146102fa57806318160ddd146103295780631816467f1461033d57806323b872dd1461035e575f80fd5b3661029557005b5f80fd5b3480156102a4575f80fd5b506102ae601b5481565b6040519081526020015b60405180910390f35b3480156102cc575f80fd5b5060408051808201909152600881526709acadaca408aa8960c31b60208201525b6040516102b8919061198c565b348015610305575f80fd5b506103196103143660046119fb565b61088a565b60405190151581526020016102b8565b348015610334575f80fd5b506001546102ae565b348015610348575f80fd5b5061035c610357366004611a25565b6108f6565b005b348015610369575f80fd5b50610319610378366004611a40565b61094a565b348015610388575f80fd5b506102ae60125481565b34801561039d575f80fd5b5061035c6103ac366004611a25565b610a08565b3480156103bc575f80fd5b506102ae610a51565b3480156103d0575f80fd5b506102ae600e5481565b3480156103e5575f80fd5b5061035c6103f4366004611a7e565b610aa1565b348015610404575f80fd5b50604051601281526020016102b8565b34801561041f575f80fd5b5061035c61042e366004611ab4565b610ad8565b34801561043e575f80fd5b5061031961044d366004611a25565b60096020525f908152604090205460ff1681565b34801561046c575f80fd5b506102ae61047b366004611a25565b600f6020525f908152604090205481565b348015610497575f80fd5b506102ae600d5481565b3480156104ac575f80fd5b5060185461031990600160a81b900460ff1681565b3480156104cc575f80fd5b506103196104db366004611a25565b610b23565b3480156104eb575f80fd5b5061035c610b2f565b3480156104ff575f80fd5b506102ae61050e366004611a25565b6001600160a01b03165f9081526002602052604090205490565b348015610533575f80fd5b5061035c610b62565b348015610547575f80fd5b506102ae60195481565b34801561055c575f80fd5b5061035c61056b366004611ad0565b610b94565b34801561057b575f80fd5b5060075461031990600160a01b900460ff1681565b34801561059b575f80fd5b5061035c6105aa366004611ad0565b610bc2565b3480156105ba575f80fd5b506102ae60115481565b3480156105cf575f80fd5b5061035c610bf0565b3480156105e3575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016102b8565b348015610613575f80fd5b50610319610622366004611a25565b600a6020525f908152604090205460ff1681565b348015610641575f80fd5b505f546001600160a01b03166105f0565b34801561065d575f80fd5b506018546105f0906001600160a01b031681565b34801561067c575f80fd5b5060408051808201909152600481526309a8aa8960e31b60208201526102ed565b3480156106a8575f80fd5b5061035c6106b7366004611ae7565b610c5c565b3480156106c7575f80fd5b506015546105f0906001600160a01b031681565b3480156106e6575f80fd5b506103196106f53660046119fb565b610caf565b348015610705575f80fd5b5061035c610714366004611b32565b610cbb565b348015610724575f80fd5b506102ae600b5481565b348015610739575f80fd5b506016546105f0906001600160a01b031681565b348015610758575f80fd5b506102ae60105481565b34801561076d575f80fd5b5061035c610d49565b348015610781575f80fd5b5061035c610790366004611ad0565b610d8b565b3480156107a0575f80fd5b506102ae6107af366004611bf2565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156107e4575f80fd5b5061035c6107f3366004611a25565b610db9565b348015610803575f80fd5b506014546105f0906001600160a01b031681565b348015610822575f80fd5b506102ae601a5481565b348015610837575f80fd5b5061035c610846366004611ad0565b610e50565b348015610856575f80fd5b5061035c610865366004611ae7565b610e7e565b348015610875575f80fd5b5060185461031990600160b01b900460ff1681565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108e49086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b031633146109285760405162461bcd60e51b815260040161091f90611c1e565b60405180910390fd5b601880546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f19146109f3576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f9081526003825283812033825290915291909120546109cf918490610ed1565b6001600160a01b0385165f9081526003602090815260408083203384529091529020555b6109fe848484610f09565b90505b9392505050565b5f546001600160a01b03163314610a315760405162461bcd60e51b815260040161091f90611c1e565b6001600160a01b03165f908152600860205260409020805460ff19169055565b6007546001600160a01b03165f90815260026020526040812054610a9c906006546001600160a01b03165f90815260026020526040902054610a9690600154906112a9565b906112a9565b905090565b5f546001600160a01b03163314610aca5760405162461bcd60e51b815260040161091f90611c1e565b601192909255601055601255565b5f546001600160a01b03163314610b015760405162461bcd60e51b815260040161091f90611c1e565b60188054921515600160a81b0260ff60a81b1990931692909217909155601b55565b5f6108f0825f1961088a565b5f546001600160a01b03163314610b585760405162461bcd60e51b815260040161091f90611c1e565b610b606112ea565b565b5f546001600160a01b03163314610b8b5760405162461bcd60e51b815260040161091f90611c1e565b610b605f611464565b5f546001600160a01b03163314610bbd5760405162461bcd60e51b815260040161091f90611c1e565b601a55565b5f546001600160a01b03163314610beb5760405162461bcd60e51b815260040161091f90611c1e565b600e55565b5f546001600160a01b03163314610c195760405162461bcd60e51b815260040161091f90611c1e565b478015610c59576018546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610c57573d5f803e3d5ffd5b505b50565b5f546001600160a01b03163314610c855760405162461bcd60e51b815260040161091f90611c1e565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b5f610a01338484610f09565b5f546001600160a01b03163314610ce45760405162461bcd60e51b815260040161091f90611c1e565b5f5b8151811015610c5757600160085f848481518110610d0657610d06611c53565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610d4181611c7b565b915050610ce6565b5f546001600160a01b03163314610d725760405162461bcd60e51b815260040161091f90611c1e565b43600b556018805460ff60b01b1916600160b01b179055565b5f546001600160a01b03163314610db45760405162461bcd60e51b815260040161091f90611c1e565b601955565b5f546001600160a01b03163314610de25760405162461bcd60e51b815260040161091f90611c1e565b6001600160a01b038116610e475760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161091f565b610c5981611464565b5f546001600160a01b03163314610e795760405162461bcd60e51b815260040161091f90611c1e565b600d55565b5f546001600160a01b03163314610ea75760405162461bcd60e51b815260040161091f90611c1e565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b5f8184841115610ef45760405162461bcd60e51b815260040161091f919061198c565b505f610f008486611c93565b95945050505050565b5f80546001600160a01b03858116911614801590610f3457505f546001600160a01b03848116911614155b15610f8a57601854600160b01b900460ff16610f8a5760405162461bcd60e51b81526020600482015260156024820152743830ba34b2b731b29034b99030903b34b93a3ab29760591b604482015260640161091f565b6001600160a01b0384165f9081526008602052604090205460ff16158015610fca57506001600160a01b0383165f9081526008602052604090205460ff16155b610fd2575f80fd5b601854600160a01b900460ff1615610ff657610fef8484846114b3565b9050610a01565b6019548211158061101e57506001600160a01b0384165f908152600a602052604090205460ff165b61104f5760405162461bcd60e51b81526020600482015260026024820152610e8f60f31b604482015260640161091f565b6001600160a01b0383165f908152600a602052604090205460ff161580156110805750600754600160a01b900460ff165b156110e157601a546001600160a01b0384165f908152600260205260409020546110aa9084611596565b11156110e15760405162461bcd60e51b81526020600482015260066024820152651dd85b1b195d60d21b604482015260640161091f565b6015546001600160a01b031633148015906111065750601854600160a01b900460ff16155b801561111b5750601854600160a81b900460ff165b80156111375750601b54305f9081526002602052604090205410155b15611144576111446112ea565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f90815260029091529190912054611195918490610ed1565b6001600160a01b0385165f90815260026020908152604080832093909355600990529081205460ff161580156111e357506001600160a01b0384165f9081526009602052604090205460ff16155b6111ed57826111f8565b6111f88585856115f4565b6001600160a01b0385165f9081526002602052604090205490915061121d9082611596565b6001600160a01b038086165f8181526002602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112709085815260200190565b60405180910390a350506001600160a01b038084165f908152600f60205260408082204290819055928516825290205560019392505050565b5f610a0183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ed1565b6018805460ff60a01b1916600160a01b179055305f9081526002602052604081205460125490919061132a906064906113249085906116b3565b90611731565b90505f61134c60026113246064611324601054886116b390919063ffffffff16565b90505f61135d83610a9686856112a9565b905061136881611772565b60065460405163a9059cbb60e01b81526001600160a01b03909116600482015260248101849052309063a9059cbb906044016020604051808303815f875af11580156113b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113da9190611ca6565b505f4790505f6113ff60026113246064611324601054876116b390919063ffffffff16565b905083156114115761141184826118c7565b811561144f576018546040516001600160a01b03909116904780156108fc02915f818181858888f1935050505015801561144d573d5f803e3d5ffd5b505b50506018805460ff60a01b1916905550505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600290915291822054611503918490610ed1565b6001600160a01b038086165f9081526002602052604080822093909355908516815220546115319083611596565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115849086815260200190565b60405180910390a35060019392505050565b5f806115a28385611cc1565b905083811015610a015760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161091f565b6015545f9081906001600160a01b0385811691161461161557600d54611619565b600e545b90505f61162b606461132486856116b3565b305f908152600260205260409020549091506116479082611596565b305f81815260026020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116979085815260200190565b60405180910390a36116a984826112a9565b9695505050505050565b5f825f036116c257505f6108f0565b5f6116cd8385611cd4565b9050826116da8583611ceb565b14610a015760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161091f565b5f610a0183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611960565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106117a5576117a5611c53565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156117fc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118209190611d0a565b8160018151811061183357611833611c53565b60200260200101906001600160a01b031690816001600160a01b03168152505061185d308361088a565b5060145460405163791ac94760e01b81526001600160a01b039091169063791ac947906118969085905f90869030904290600401611d25565b5f604051808303815f87803b1580156118ad575f80fd5b505af11580156118bf573d5f803e3d5ffd5b505050505050565b601454600c5460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611934573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906119599190611d94565b5050505050565b5f81836119805760405162461bcd60e51b815260040161091f919061198c565b505f610f008486611ceb565b5f6020808352835180828501525f5b818110156119b75785810183015185820160400152820161199b565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610c59575f80fd5b80356119f6816119d7565b919050565b5f8060408385031215611a0c575f80fd5b8235611a17816119d7565b946020939093013593505050565b5f60208284031215611a35575f80fd5b8135610a01816119d7565b5f805f60608486031215611a52575f80fd5b8335611a5d816119d7565b92506020840135611a6d816119d7565b929592945050506040919091013590565b5f805f60608486031215611a90575f80fd5b505081359360208301359350604090920135919050565b8015158114610c59575f80fd5b5f8060408385031215611ac5575f80fd5b8235611a1781611aa7565b5f60208284031215611ae0575f80fd5b5035919050565b5f8060408385031215611af8575f80fd5b8235611b03816119d7565b91506020830135611b1381611aa7565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f6020808385031215611b43575f80fd5b823567ffffffffffffffff80821115611b5a575f80fd5b818501915085601f830112611b6d575f80fd5b813581811115611b7f57611b7f611b1e565b8060051b604051601f19603f83011681018181108582111715611ba457611ba4611b1e565b604052918252848201925083810185019188831115611bc1575f80fd5b938501935b82851015611be657611bd7856119eb565b84529385019392850192611bc6565b98975050505050505050565b5f8060408385031215611c03575f80fd5b8235611c0e816119d7565b91506020830135611b13816119d7565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201611c8c57611c8c611c67565b5060010190565b818103818111156108f0576108f0611c67565b5f60208284031215611cb6575f80fd5b8151610a0181611aa7565b808201808211156108f0576108f0611c67565b80820281158282048414176108f0576108f0611c67565b5f82611d0557634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611d1a575f80fd5b8151610a01816119d7565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611d735784516001600160a01b031683529383019391830191600101611d4e565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611da6575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220c74b7a30d36782884433c4556970d44bc4e8cf3c68b4ee876794439ccc73fc6b64736f6c63430008150033
0x6080604052620000126012600a62000572565b6200002290633b8b87c062000582565b6001819055600680546001600160a01b031990811661dead908117909255600780546001600160a81b031916600160a01b179055600c805490911690911790556045600d819055600e555f60105560506011556014601255606460135560188054600162ffff0160a01b031916750100cbd1ba12783c7ed709207df1f36cd243276836aa179055620000b690603b62000381565b601955600154620000c990603b62000381565b601a55600154620000dd9061019062000381565b601b55348015620000ec575f80fd5b50620000f833620003d3565b601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa1580156200015b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200018191906200059c565b600580546001600160a01b0319166001600160a01b039283161790556014546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa158015620001de573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200020491906200059c565b6005546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af115801562000253573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200027991906200059c565b601580546001600160a01b0319166001600160a01b03928316178155305f9081526003602090815260408083206014548616845282528083205f19905582548516835260098252808320805460ff19908116600190811790925560188054881686528386208054831684179055855488168652600a85528386208054831684179055548716855282852080548216831790559454861684528184208054861682179055600654861684528184208054909516811790945592548254851683526002825283832081905582549351908152929093169290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000638565b5f620003ca83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200042260201b60201c565b90505b92915050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f81836200044e5760405162461bcd60e51b8152600401620004459190620005cb565b60405180910390fd5b505f6200045c848662000618565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620004b957815f19048211156200049d576200049d62000465565b80851615620004ab57918102915b93841c93908002906200047e565b509250929050565b5f82620004d157506001620003cd565b81620004df57505f620003cd565b8160018114620004f85760028114620005035762000523565b6001915050620003cd565b60ff84111562000517576200051762000465565b50506001821b620003cd565b5060208310610133831016604e8410600b841016171562000548575081810a620003cd565b62000554838362000479565b805f19048211156200056a576200056a62000465565b029392505050565b5f620003ca60ff841683620004c1565b8082028115828204841417620003cd57620003cd62000465565b5f60208284031215620005ad575f80fd5b81516001600160a01b0381168114620005c4575f80fd5b9392505050565b5f6020808352835180828501525f5b81811015620005f857858101830151858201604001528201620005da565b505f604082860101526040601f19601f8301168501019250505092915050565b5f826200063357634e487b7160e01b5f52601260045260245ffd5b500490565b611df580620006465f395ff3fe60806040526004361061028e575f3560e01c8063875c2af811610155578063bf56b371116100be578063f2fde38b11610078578063f2fde38b146107d9578063f887ea40146107f8578063f8b45b0514610817578063fa05db0f1461082c578063fabe62831461084b578063ffb54a991461086a575f80fd5b8063bf56b37114610719578063c45a01551461072e578063c8d1293d1461074d578063c9567bf914610762578063d920334e14610776578063dd62ed3e14610795575f80fd5b80638ea5220f1161010f5780638ea5220f1461065257806395d89b4114610671578063a3a2e89e1461069d578063a8aa1b31146106bc578063a9059cbb146106db578063b515566a146106fa575f80fd5b8063875c2af81461059057806389215317146105af57806389291a8f146105c4578063893d20e8146105d85780638b42507f146106085780638da5cb5b14610636575f80fd5b80633dab5269116101f757806366eb3785116101b157806366eb3785146104e057806370a08231146104f4578063715018a6146105285780637437681e1461053c5780637db1342c146105515780637dfcbe3414610570575f80fd5b80633dab5269146104145780633f4218e0146104335780634551bbe914610461578063470624021461048c5780634a74bb02146104a1578063571ac8b0146104c1575f80fd5b8063246ea64e11610248578063246ea64e1461037d578063273123b7146103925780632b112e49146103b15780632b14ca56146103c55780632dbea2e1146103da578063313ce567146103f9575f80fd5b80630445b6671461029957806306fdde03146102c1578063095ea7b3146102fa57806318160ddd146103295780631816467f1461033d57806323b872dd1461035e575f80fd5b3661029557005b5f80fd5b3480156102a4575f80fd5b506102ae601b5481565b6040519081526020015b60405180910390f35b3480156102cc575f80fd5b5060408051808201909152600881526709acadaca408aa8960c31b60208201525b6040516102b8919061198c565b348015610305575f80fd5b506103196103143660046119fb565b61088a565b60405190151581526020016102b8565b348015610334575f80fd5b506001546102ae565b348015610348575f80fd5b5061035c610357366004611a25565b6108f6565b005b348015610369575f80fd5b50610319610378366004611a40565b61094a565b348015610388575f80fd5b506102ae60125481565b34801561039d575f80fd5b5061035c6103ac366004611a25565b610a08565b3480156103bc575f80fd5b506102ae610a51565b3480156103d0575f80fd5b506102ae600e5481565b3480156103e5575f80fd5b5061035c6103f4366004611a7e565b610aa1565b348015610404575f80fd5b50604051601281526020016102b8565b34801561041f575f80fd5b5061035c61042e366004611ab4565b610ad8565b34801561043e575f80fd5b5061031961044d366004611a25565b60096020525f908152604090205460ff1681565b34801561046c575f80fd5b506102ae61047b366004611a25565b600f6020525f908152604090205481565b348015610497575f80fd5b506102ae600d5481565b3480156104ac575f80fd5b5060185461031990600160a81b900460ff1681565b3480156104cc575f80fd5b506103196104db366004611a25565b610b23565b3480156104eb575f80fd5b5061035c610b2f565b3480156104ff575f80fd5b506102ae61050e366004611a25565b6001600160a01b03165f9081526002602052604090205490565b348015610533575f80fd5b5061035c610b62565b348015610547575f80fd5b506102ae60195481565b34801561055c575f80fd5b5061035c61056b366004611ad0565b610b94565b34801561057b575f80fd5b5060075461031990600160a01b900460ff1681565b34801561059b575f80fd5b5061035c6105aa366004611ad0565b610bc2565b3480156105ba575f80fd5b506102ae60115481565b3480156105cf575f80fd5b5061035c610bf0565b3480156105e3575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016102b8565b348015610613575f80fd5b50610319610622366004611a25565b600a6020525f908152604090205460ff1681565b348015610641575f80fd5b505f546001600160a01b03166105f0565b34801561065d575f80fd5b506018546105f0906001600160a01b031681565b34801561067c575f80fd5b5060408051808201909152600481526309a8aa8960e31b60208201526102ed565b3480156106a8575f80fd5b5061035c6106b7366004611ae7565b610c5c565b3480156106c7575f80fd5b506015546105f0906001600160a01b031681565b3480156106e6575f80fd5b506103196106f53660046119fb565b610caf565b348015610705575f80fd5b5061035c610714366004611b32565b610cbb565b348015610724575f80fd5b506102ae600b5481565b348015610739575f80fd5b506016546105f0906001600160a01b031681565b348015610758575f80fd5b506102ae60105481565b34801561076d575f80fd5b5061035c610d49565b348015610781575f80fd5b5061035c610790366004611ad0565b610d8b565b3480156107a0575f80fd5b506102ae6107af366004611bf2565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156107e4575f80fd5b5061035c6107f3366004611a25565b610db9565b348015610803575f80fd5b506014546105f0906001600160a01b031681565b348015610822575f80fd5b506102ae601a5481565b348015610837575f80fd5b5061035c610846366004611ad0565b610e50565b348015610856575f80fd5b5061035c610865366004611ae7565b610e7e565b348015610875575f80fd5b5060185461031990600160b01b900460ff1681565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108e49086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b031633146109285760405162461bcd60e51b815260040161091f90611c1e565b60405180910390fd5b601880546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f19146109f3576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f9081526003825283812033825290915291909120546109cf918490610ed1565b6001600160a01b0385165f9081526003602090815260408083203384529091529020555b6109fe848484610f09565b90505b9392505050565b5f546001600160a01b03163314610a315760405162461bcd60e51b815260040161091f90611c1e565b6001600160a01b03165f908152600860205260409020805460ff19169055565b6007546001600160a01b03165f90815260026020526040812054610a9c906006546001600160a01b03165f90815260026020526040902054610a9690600154906112a9565b906112a9565b905090565b5f546001600160a01b03163314610aca5760405162461bcd60e51b815260040161091f90611c1e565b601192909255601055601255565b5f546001600160a01b03163314610b015760405162461bcd60e51b815260040161091f90611c1e565b60188054921515600160a81b0260ff60a81b1990931692909217909155601b55565b5f6108f0825f1961088a565b5f546001600160a01b03163314610b585760405162461bcd60e51b815260040161091f90611c1e565b610b606112ea565b565b5f546001600160a01b03163314610b8b5760405162461bcd60e51b815260040161091f90611c1e565b610b605f611464565b5f546001600160a01b03163314610bbd5760405162461bcd60e51b815260040161091f90611c1e565b601a55565b5f546001600160a01b03163314610beb5760405162461bcd60e51b815260040161091f90611c1e565b600e55565b5f546001600160a01b03163314610c195760405162461bcd60e51b815260040161091f90611c1e565b478015610c59576018546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610c57573d5f803e3d5ffd5b505b50565b5f546001600160a01b03163314610c855760405162461bcd60e51b815260040161091f90611c1e565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b5f610a01338484610f09565b5f546001600160a01b03163314610ce45760405162461bcd60e51b815260040161091f90611c1e565b5f5b8151811015610c5757600160085f848481518110610d0657610d06611c53565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610d4181611c7b565b915050610ce6565b5f546001600160a01b03163314610d725760405162461bcd60e51b815260040161091f90611c1e565b43600b556018805460ff60b01b1916600160b01b179055565b5f546001600160a01b03163314610db45760405162461bcd60e51b815260040161091f90611c1e565b601955565b5f546001600160a01b03163314610de25760405162461bcd60e51b815260040161091f90611c1e565b6001600160a01b038116610e475760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161091f565b610c5981611464565b5f546001600160a01b03163314610e795760405162461bcd60e51b815260040161091f90611c1e565b600d55565b5f546001600160a01b03163314610ea75760405162461bcd60e51b815260040161091f90611c1e565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b5f8184841115610ef45760405162461bcd60e51b815260040161091f919061198c565b505f610f008486611c93565b95945050505050565b5f80546001600160a01b03858116911614801590610f3457505f546001600160a01b03848116911614155b15610f8a57601854600160b01b900460ff16610f8a5760405162461bcd60e51b81526020600482015260156024820152743830ba34b2b731b29034b99030903b34b93a3ab29760591b604482015260640161091f565b6001600160a01b0384165f9081526008602052604090205460ff16158015610fca57506001600160a01b0383165f9081526008602052604090205460ff16155b610fd2575f80fd5b601854600160a01b900460ff1615610ff657610fef8484846114b3565b9050610a01565b6019548211158061101e57506001600160a01b0384165f908152600a602052604090205460ff165b61104f5760405162461bcd60e51b81526020600482015260026024820152610e8f60f31b604482015260640161091f565b6001600160a01b0383165f908152600a602052604090205460ff161580156110805750600754600160a01b900460ff165b156110e157601a546001600160a01b0384165f908152600260205260409020546110aa9084611596565b11156110e15760405162461bcd60e51b81526020600482015260066024820152651dd85b1b195d60d21b604482015260640161091f565b6015546001600160a01b031633148015906111065750601854600160a01b900460ff16155b801561111b5750601854600160a81b900460ff165b80156111375750601b54305f9081526002602052604090205410155b15611144576111446112ea565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f90815260029091529190912054611195918490610ed1565b6001600160a01b0385165f90815260026020908152604080832093909355600990529081205460ff161580156111e357506001600160a01b0384165f9081526009602052604090205460ff16155b6111ed57826111f8565b6111f88585856115f4565b6001600160a01b0385165f9081526002602052604090205490915061121d9082611596565b6001600160a01b038086165f8181526002602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112709085815260200190565b60405180910390a350506001600160a01b038084165f908152600f60205260408082204290819055928516825290205560019392505050565b5f610a0183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ed1565b6018805460ff60a01b1916600160a01b179055305f9081526002602052604081205460125490919061132a906064906113249085906116b3565b90611731565b90505f61134c60026113246064611324601054886116b390919063ffffffff16565b90505f61135d83610a9686856112a9565b905061136881611772565b60065460405163a9059cbb60e01b81526001600160a01b03909116600482015260248101849052309063a9059cbb906044016020604051808303815f875af11580156113b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113da9190611ca6565b505f4790505f6113ff60026113246064611324601054876116b390919063ffffffff16565b905083156114115761141184826118c7565b811561144f576018546040516001600160a01b03909116904780156108fc02915f818181858888f1935050505015801561144d573d5f803e3d5ffd5b505b50506018805460ff60a01b1916905550505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600290915291822054611503918490610ed1565b6001600160a01b038086165f9081526002602052604080822093909355908516815220546115319083611596565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115849086815260200190565b60405180910390a35060019392505050565b5f806115a28385611cc1565b905083811015610a015760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161091f565b6015545f9081906001600160a01b0385811691161461161557600d54611619565b600e545b90505f61162b606461132486856116b3565b305f908152600260205260409020549091506116479082611596565b305f81815260026020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116979085815260200190565b60405180910390a36116a984826112a9565b9695505050505050565b5f825f036116c257505f6108f0565b5f6116cd8385611cd4565b9050826116da8583611ceb565b14610a015760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161091f565b5f610a0183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611960565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106117a5576117a5611c53565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156117fc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118209190611d0a565b8160018151811061183357611833611c53565b60200260200101906001600160a01b031690816001600160a01b03168152505061185d308361088a565b5060145460405163791ac94760e01b81526001600160a01b039091169063791ac947906118969085905f90869030904290600401611d25565b5f604051808303815f87803b1580156118ad575f80fd5b505af11580156118bf573d5f803e3d5ffd5b505050505050565b601454600c5460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611934573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906119599190611d94565b5050505050565b5f81836119805760405162461bcd60e51b815260040161091f919061198c565b505f610f008486611ceb565b5f6020808352835180828501525f5b818110156119b75785810183015185820160400152820161199b565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610c59575f80fd5b80356119f6816119d7565b919050565b5f8060408385031215611a0c575f80fd5b8235611a17816119d7565b946020939093013593505050565b5f60208284031215611a35575f80fd5b8135610a01816119d7565b5f805f60608486031215611a52575f80fd5b8335611a5d816119d7565b92506020840135611a6d816119d7565b929592945050506040919091013590565b5f805f60608486031215611a90575f80fd5b505081359360208301359350604090920135919050565b8015158114610c59575f80fd5b5f8060408385031215611ac5575f80fd5b8235611a1781611aa7565b5f60208284031215611ae0575f80fd5b5035919050565b5f8060408385031215611af8575f80fd5b8235611b03816119d7565b91506020830135611b1381611aa7565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f6020808385031215611b43575f80fd5b823567ffffffffffffffff80821115611b5a575f80fd5b818501915085601f830112611b6d575f80fd5b813581811115611b7f57611b7f611b1e565b8060051b604051601f19603f83011681018181108582111715611ba457611ba4611b1e565b604052918252848201925083810185019188831115611bc1575f80fd5b938501935b82851015611be657611bd7856119eb565b84529385019392850192611bc6565b98975050505050505050565b5f8060408385031215611c03575f80fd5b8235611c0e816119d7565b91506020830135611b13816119d7565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201611c8c57611c8c611c67565b5060010190565b818103818111156108f0576108f0611c67565b5f60208284031215611cb6575f80fd5b8151610a0181611aa7565b808201808211156108f0576108f0611c67565b80820281158282048414176108f0576108f0611c67565b5f82611d0557634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611d1a575f80fd5b8151610a01816119d7565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611d735784516001600160a01b031683529383019391830191600101611d4e565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611da6575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220c74b7a30d36782884433c4556970d44bc4e8cf3c68b4ee876794439ccc73fc6b64736f6c63430008150033