0x60806040526200001967016345785d8a00005f1962000366565b62000026905f1962000386565b6006555f6008819055600a6009819055819055600f600b819055600c829055600d819055600e919091558055601280547396a99ed09b85ca2cab25adbe35ef96e307da6c8e6001600160a01b031991821681179092556013805482169092179091556014805473d9e1b1a9d5dcc1869beac6712959c2b88473c0ec92169190911790556016805462ffffff60a01b191661010160a81b179055655af3107a400060175566071afd498d000060185566038d7ea4c68000601955348015620000eb575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600654335f9081526002602090815260409182902092909255601580546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa158015620001a5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001cb9190620003ac565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000217573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200023d9190620003ac565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000288573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002ae9190620003ac565b601680546001600160a01b0319166001600160a01b039283161790555f805482168152600560209081526040808320805460ff19908116600190811790925530855282852080548216831790556012548616855282852080548216831790556013548616855282852080549091169091179055601454905167016345785d8a000081529316927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620003db565b5f826200038157634e487b7160e01b5f52601260045260245ffd5b500690565b81810381811115620003a657634e487b7160e01b5f52601160045260245ffd5b92915050565b5f60208284031215620003bd575f80fd5b81516001600160a01b0381168114620003d4575f80fd5b9392505050565b6122f580620003e95f395ff3fe6080604052600436106101de575f3560e01c80637d1db4a5116100fd578063a9059cbb11610092578063d220054011610062578063d220054014610551578063dd62ed3e14610570578063ea1644d5146105b4578063f2fde38b146105d3575f80fd5b8063a9059cbb146104d1578063bfd79284146104f0578063c3c8cd801461051e578063c492f04614610532575f80fd5b806395d89b41116100cd57806395d89b41146101e957806395e706191461047457806398a5c31514610493578063a2a957bb146104b2575f80fd5b80637d1db4a5146104035780637f2feddc146104185780638da5cb5b146104435780638f9a55c01461045f575f80fd5b8063313ce567116101735780636fc3eaec116101435780636fc3eaec1461039d57806370a08231146103b1578063715018a6146103d057806374010ece146103e4575f80fd5b8063313ce567146103255780633459052d1461034057806349bd5a5e1461035f5780636d8aa8f81461037e575f80fd5b806318160ddd116101ae57806318160ddd146102ac57806323b872dd146102d05780632a9b8072146102ef5780632fd689e314610310575f80fd5b806306fdde03146101e957806308a4f07214610227578063095ea7b3146102465780631694505e14610275575f80fd5b366101e557005b5f80fd5b3480156101f4575f80fd5b506040805180820190915260048152636e6f766160e01b60208201525b60405161021e9190611bcc565b60405180910390f35b348015610232575f80fd5b50610211610241366004611bfe565b6105f2565b348015610251575f80fd5b50610265610260366004611c29565b6106ea565b604051901515815260200161021e565b348015610280575f80fd5b50601554610294906001600160a01b031681565b6040516001600160a01b03909116815260200161021e565b3480156102b7575f80fd5b5067016345785d8a00005b60405190815260200161021e565b3480156102db575f80fd5b506102656102ea366004611c53565b610700565b3480156102fa575f80fd5b5061030e610309366004611ca5565b610767565b005b34801561031b575f80fd5b506102c260195481565b348015610330575f80fd5b506040516009815260200161021e565b34801561034b575f80fd5b5061030e61035a366004611cbe565b6107ae565b34801561036a575f80fd5b50601654610294906001600160a01b031681565b348015610389575f80fd5b5061030e610398366004611ca5565b6107f7565b3480156103a8575f80fd5b5061030e61083e565b3480156103bc575f80fd5b506102c26103cb366004611cbe565b610888565b3480156103db575f80fd5b5061030e6108a9565b3480156103ef575f80fd5b5061030e6103fe366004611bfe565b61091a565b34801561040e575f80fd5b506102c260175481565b348015610423575f80fd5b506102c2610432366004611cbe565b60116020525f908152604090205481565b34801561044e575f80fd5b505f546001600160a01b0316610294565b34801561046a575f80fd5b506102c260185481565b34801561047f575f80fd5b5061030e61048e366004611d1e565b610948565b34801561049e575f80fd5b5061030e6104ad366004611bfe565b6109d0565b3480156104bd575f80fd5b5061030e6104cc366004611dcb565b6109fe565b3480156104dc575f80fd5b506102656104eb366004611c29565b610a3b565b3480156104fb575f80fd5b5061026561050a366004611cbe565b60106020525f908152604090205460ff1681565b348015610529575f80fd5b5061030e610a47565b34801561053d575f80fd5b5061030e61054c366004611dfa565b610a99565b34801561055c575f80fd5b5061030e61056b366004611ee3565b610b2c565b34801561057b575f80fd5b506102c261058a366004611f65565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b3480156105bf575f80fd5b5061030e6105ce366004611bfe565b610cd7565b3480156105de575f80fd5b5061030e6105ed366004611cbe565b610d05565b601a5460609082106106415760405162461bcd60e51b8152602060048201526013602482015272496e646578206f7574206f6620626f756e647360681b60448201526064015b60405180910390fd5b601a828154811061065457610654611f9c565b905f5260205f2001805461066790611fb0565b80601f016020809104026020016040519081016040528092919081815260200182805461069390611fb0565b80156106de5780601f106106b5576101008083540402835291602001916106de565b820191905f5260205f20905b8154815290600101906020018083116106c157829003601f168201915b50505050509050919050565b5f6106f6338484610dec565b5060015b92915050565b5f61070c848484610f0f565b61075d843361075885604051806060016040528060288152602001612298602891396001600160a01b038a165f908152600460209081526040808320338452909152902054919061143f565b610dec565b5060019392505050565b5f546001600160a01b031633146107905760405162461bcd60e51b815260040161063890611fe8565b60168054911515600160a01b0260ff60a01b19909216919091179055565b5f546001600160a01b031633146107d75760405162461bcd60e51b815260040161063890611fe8565b6001600160a01b03165f908152601060205260409020805460ff19169055565b5f546001600160a01b031633146108205760405162461bcd60e51b815260040161063890611fe8565b60168054911515600160b01b0260ff60b01b19909216919091179055565b6012546001600160a01b0316336001600160a01b0316148061087357506013546001600160a01b0316336001600160a01b0316145b61087b575f80fd5b4761088581611477565b50565b6001600160a01b0381165f908152600260205260408120546106fa906114ae565b5f546001600160a01b031633146108d25760405162461bcd60e51b815260040161063890611fe8565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146109435760405162461bcd60e51b815260040161063890611fe8565b601755565b5f546001600160a01b031633146109715760405162461bcd60e51b815260040161063890611fe8565b5f5b81518110156109cc57600160105f84848151811061099357610993611f9c565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610973565b5050565b5f546001600160a01b031633146109f95760405162461bcd60e51b815260040161063890611fe8565b601955565b5f546001600160a01b03163314610a275760405162461bcd60e51b815260040161063890611fe8565b600893909355600a91909155600955600b55565b5f6106f6338484610f0f565b6012546001600160a01b0316336001600160a01b03161480610a7c57506013546001600160a01b0316336001600160a01b0316145b610a84575f80fd5b5f610a8e30610888565b905061088581611530565b5f546001600160a01b03163314610ac25760405162461bcd60e51b815260040161063890611fe8565b5f5b82811015610b26578160055f868685818110610ae257610ae2611f9c565b9050602002016020810190610af79190611cbe565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610ac4565b50505050565b5f546001600160a01b03163314610b555760405162461bcd60e51b815260040161063890611fe8565b8180519060200120838051906020012003610bb25760405162461bcd60e51b815260206004820181905260248201527f5341433120616e6420534143322063616e6e6f74206265207468652073616d656044820152606401610638565b8080519060200120838051906020012003610c0f5760405162461bcd60e51b815260206004820181905260248201527f5341433120616e6420534143332063616e6e6f74206265207468652073616d656044820152606401610638565b8080519060200120828051906020012003610c6c5760405162461bcd60e51b815260206004820181905260248201527f5341433220616e6420534143332063616e6e6f74206265207468652073616d656044820152606401610638565b5f838383604051602001610c829392919061201d565b60408051601f19818403018152919052601a80546001810182555f919091529091507f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e01610cd082826120db565b5050505050565b5f546001600160a01b03163314610d005760405162461bcd60e51b815260040161063890611fe8565b601855565b5f546001600160a01b03163314610d2e5760405162461bcd60e51b815260040161063890611fe8565b6001600160a01b038116610d935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610638565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610e4e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610638565b6001600160a01b038216610eaf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610638565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610f735760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610638565b6001600160a01b038216610fd55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610638565b5f81116110365760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610638565b5f546001600160a01b0384811691161480159061106057505f546001600160a01b03838116911614155b1561133b57601654600160a01b900460ff166110f8575f546001600160a01b038481169116146110f85760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610638565b60175481111561114a5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610638565b6001600160a01b0383165f9081526010602052604090205460ff1615801561118a57506001600160a01b0382165f9081526010602052604090205460ff16155b6111e25760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610638565b6016546001600160a01b03838116911614611267576018548161120484610888565b61120e91906121af565b106112675760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610638565b5f61127130610888565b60195460175491925082101590821061128a5760175491505b8080156112a15750601654600160a81b900460ff16155b80156112bb57506016546001600160a01b03868116911614155b80156112d05750601654600160b01b900460ff165b80156112f457506001600160a01b0385165f9081526005602052604090205460ff16155b801561131857506001600160a01b0384165f9081526005602052604090205460ff16155b156113385761132682611530565b4780156113365761133647611477565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff168061137b57506001600160a01b0383165f9081526005602052604090205460ff165b806113ad57506016546001600160a01b038581169116148015906113ad57506016546001600160a01b03848116911614155b156113b957505f611433565b6016546001600160a01b0385811691161480156113e457506015546001600160a01b03848116911614155b156113f657600854600c55600954600d555b6016546001600160a01b03848116911614801561142157506015546001600160a01b03858116911614155b1561143357600a54600c55600b54600d555b610b26848484846116a0565b5f81848411156114625760405162461bcd60e51b81526004016106389190611bcc565b505f61146e84866121c2565b95945050505050565b6013546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156109cc573d5f803e3d5ffd5b5f6006548211156115145760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610638565b5f61151d6116ce565b905061152983826116ef565b9392505050565b6016805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061157657611576611f9c565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156115cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115f191906121d5565b8160018151811061160457611604611f9c565b6001600160a01b03928316602091820292909201015260155461162a9130911684610dec565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac947906116629085905f908690309042906004016121f0565b5f604051808303815f87803b158015611679575f80fd5b505af115801561168b573d5f803e3d5ffd5b50506016805460ff60a81b1916905550505050565b806116ad576116ad611730565b6116b884848461175d565b80610b2657610b26600e54600c55600f54600d55565b5f805f6116d96118c5565b90925090506116e882826116ef565b9250505090565b5f61152983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611904565b600c541580156117405750600d54155b1561174757565b600c8054600e55600d8054600f555f9182905555565b5f805f805f8061176c87611930565b6001600160a01b038f165f90815260026020526040902054959b5093995091975095509350915061179d9087611985565b6001600160a01b03808b165f9081526002602052604080822093909355908a16815220546117cb90866119c6565b6001600160a01b0389165f908152600260205260409020556117ec81611a24565b6117f68483611a6a565b6016546001600160a01b038a81169116148061181e57505f546001600160a01b038a81169116145b1561186c576014546040518481526001600160a01b038a81169216907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36118ba565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516118b191815260200190565b60405180910390a35b505050505050505050565b6006545f90819067016345785d8a00006118df82826116ef565b8210156118fb5750506006549267016345785d8a000092509050565b90939092509050565b5f81836119245760405162461bcd60e51b81526004016106389190611bcc565b505f61146e8486612261565b5f805f805f805f805f6119488a600c54600d54611a8e565b9250925092505f6119576116ce565b90505f805f6119688e878787611ae0565b919e509c509a509598509396509194505050505091939550919395565b5f61152983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061143f565b5f806119d283856121af565b9050838110156115295760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610638565b5f611a2d6116ce565b90505f611a3a8383611b2c565b305f90815260026020526040902054909150611a5690826119c6565b305f90815260026020526040902055505050565b600654611a779083611985565b600655600754611a8790826119c6565b6007555050565b5f808080611aa76064611aa18989611b2c565b906116ef565b90505f611ab96064611aa18a89611b2c565b90505f611ad082611aca8b86611985565b90611985565b9992985090965090945050505050565b5f808080611aee8886611b2c565b90505f611afb8887611b2c565b90505f611b088888611b2c565b90505f611b1982611aca8686611985565b939b939a50919850919650505050505050565b5f825f03611b3b57505f6106fa565b5f611b468385612280565b905082611b538583612261565b146115295760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610638565b5f5b83811015611bc4578181015183820152602001611bac565b50505f910152565b602081525f8251806020840152611bea816040850160208701611baa565b601f01601f19169190910160400192915050565b5f60208284031215611c0e575f80fd5b5035919050565b6001600160a01b0381168114610885575f80fd5b5f8060408385031215611c3a575f80fd5b8235611c4581611c15565b946020939093013593505050565b5f805f60608486031215611c65575f80fd5b8335611c7081611c15565b92506020840135611c8081611c15565b929592945050506040919091013590565b80358015158114611ca0575f80fd5b919050565b5f60208284031215611cb5575f80fd5b61152982611c91565b5f60208284031215611cce575f80fd5b813561152981611c15565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611d1657611d16611cd9565b604052919050565b5f6020808385031215611d2f575f80fd5b823567ffffffffffffffff80821115611d46575f80fd5b818501915085601f830112611d59575f80fd5b813581811115611d6b57611d6b611cd9565b8060051b9150611d7c848301611ced565b8181529183018401918481019088841115611d95575f80fd5b938501935b83851015611dbf5784359250611daf83611c15565b8282529385019390850190611d9a565b98975050505050505050565b5f805f8060808587031215611dde575f80fd5b5050823594602084013594506040840135936060013592509050565b5f805f60408486031215611e0c575f80fd5b833567ffffffffffffffff80821115611e23575f80fd5b818601915086601f830112611e36575f80fd5b813581811115611e44575f80fd5b8760208260051b8501011115611e58575f80fd5b602092830195509350611e6e9186019050611c91565b90509250925092565b5f82601f830112611e86575f80fd5b813567ffffffffffffffff811115611ea057611ea0611cd9565b611eb3601f8201601f1916602001611ced565b818152846020838601011115611ec7575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f60608486031215611ef5575f80fd5b833567ffffffffffffffff80821115611f0c575f80fd5b611f1887838801611e77565b94506020860135915080821115611f2d575f80fd5b611f3987838801611e77565b93506040860135915080821115611f4e575f80fd5b50611f5b86828701611e77565b9150509250925092565b5f8060408385031215611f76575f80fd5b8235611f8181611c15565b91506020830135611f9181611c15565b809150509250929050565b634e487b7160e01b5f52603260045260245ffd5b600181811c90821680611fc457607f821691505b602082108103611fe257634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b605b60f81b81525f8451612038816001850160208901611baa565b808301905061016160f51b806001830152855161205c816003850160208a01611baa565b60039201918201528351612077816005840160208801611baa565b605d60f81b6005929091019182015260060195945050505050565b601f8211156120d657805f5260205f20601f840160051c810160208510156120b75750805b601f840160051c820191505b81811015610cd0575f81556001016120c3565b505050565b815167ffffffffffffffff8111156120f5576120f5611cd9565b612109816121038454611fb0565b84612092565b602080601f83116001811461213c575f84156121255750858301515b5f19600386901b1c1916600185901b178555612193565b5f85815260208120601f198616915b8281101561216a5788860151825594840194600190910190840161214b565b508582101561218757878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156106fa576106fa61219b565b818103818111156106fa576106fa61219b565b5f602082840312156121e5575f80fd5b815161152981611c15565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156122405784516001600160a01b03168352938301939183019160010161221b565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261227b57634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176106fa576106fa61219b56fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f59af5078c0aebf64263c735cd179c9fb9a13c6549ae4c0944c97b6ff4daed2a64736f6c63430008170033