0x6080604052620000126012600a62000679565b620000259066017e9d8602b4006200068a565b6003556200005f60646200004b60016003546200044960201b62000f681790919060201c565b620004e060201b62000fea1790919060201c565b6004556200008560646200004b60016003546200044960201b62000f681790919060201c565b6005556001600a8190556000600b819055600c819055600d819055600e82905581620000b28280620006a4565b620000be9190620006a4565b620000ca9190620006a4565b620000d69190620006a4565b600f5560646010819055601181905560128190556013819055601e601955601a55601d805461ffff60a01b1916600160a81b1790556003546103e8906200011f9060076200068a565b6200012b9190620006ba565b601e553480156200013b57600080fd5b50600080546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601b80546001600160a01b031916734752ba5dbc23f44d87826276bf6fd6b1c372ad24908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa158015620001fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002219190620006dd565b600280546001600160a01b0319166001600160a01b03928316179055601b546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801562000280573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a69190620006dd565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af1158015620002f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031e9190620006dd565b601d80546001600160a01b039283166001600160a01b031991821681178355601c805483169091179055306000818152600760209081526040808320601b5488168452825280832060001990553380845260088352818420805460ff1990811660019081179092556009855283862080548216831790559754891685528285208054891682179055601580549099168552828520805489168217905594845281842080549097169094179095556014805485168417905585548416831790955560168054841683179055601780548416831790556018805490931661dead179092556003548183526006855283832081905592519283529290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000758565b6000826000036200045d57506000620004da565b60006200046b83856200068a565b9050826200047a8583620006ba565b14620004d75760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b6000620004d783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200052a60201b60201c565b600081836200054e5760405162461bcd60e51b8152600401620004ce919062000708565b5060006200055d8486620006ba565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005bd578160001904821115620005a157620005a162000566565b80851615620005af57918102915b93841c939080029062000581565b509250929050565b600082620005d657506001620004da565b81620005e557506000620004da565b8160018114620005fe5760028114620006095762000629565b6001915050620004da565b60ff8411156200061d576200061d62000566565b50506001821b620004da565b5060208310610133831016604e8410600b84101617156200064e575081810a620004da565b6200065a83836200057c565b806000190482111562000671576200067162000566565b029392505050565b6000620004d760ff841683620005c5565b8082028115828204841417620004da57620004da62000566565b80820180821115620004da57620004da62000566565b600082620006d857634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620006f057600080fd5b81516001600160a01b0381168114620004d757600080fd5b600060208083528351808285015260005b81811015620007375785810183015185820160400152820162000719565b506000604082860101526040601f19601f8301168501019250505092915050565b61207e80620007686000396000f3fe6080604052600436106102135760003560e01c806377b54bad11610118578063a9059cbb116100a0578063ded1e4381161006f578063ded1e43814610627578063df20fd4914610647578063f2fde38b14610667578063f429389014610687578063f887ea401461069c57600080fd5b8063a9059cbb14610581578063b2bdfa7b146105a1578063c0cbdea4146105c1578063dd62ed3e146105e157600080fd5b8063893d20e8116100e7578063893d20e8146104cf5780638da5cb5b1461050157806395d89b411461051f578063a70419d21461054c578063a8aa1b311461056157600080fd5b806377b54bad1461046357806378109e54146104835780637d1db4a51461049957806382528791146104af57600080fd5b806330c9a6a01161019b5780635d83e1d51161016a5780635d83e1d5146103c25780636ddd1713146103e257806370a0823114610403578063715018a614610439578063751039fc1461044e57600080fd5b806330c9a6a014610351578063313ce56714610371578063552656691461038d578063571ac8b0146103a257600080fd5b806318160ddd116101e257806318160ddd146102cf5780631df4ccfc146102e457806323b872dd146102fa578063282c87491461031a578063293230b81461033c57600080fd5b80630445b6671461021f57806306fdde031461024857806308fd3d051461027e578063095ea7b3146102af57600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b50610235601e5481565b6040519081526020015b60405180910390f35b34801561025457600080fd5b506040805180820190915260048152634d6f676f60e01b60208201525b60405161023f9190611c3a565b34801561028a57600080fd5b50601d5461029f90600160a01b900460ff1681565b604051901515815260200161023f565b3480156102bb57600080fd5b5061029f6102ca366004611ca4565b6106bc565b3480156102db57600080fd5b50600354610235565b3480156102f057600080fd5b50610235600f5481565b34801561030657600080fd5b5061029f610315366004611cce565b610729565b34801561032657600080fd5b5061033a610335366004611d0a565b6107eb565b005b34801561034857600080fd5b5061033a6108c2565b34801561035d57600080fd5b5061023561036c366004611d4d565b610913565b34801561037d57600080fd5b506040516012815260200161023f565b34801561039957600080fd5b5061023561095a565b3480156103ae57600080fd5b5061029f6103bd366004611d66565b6109cb565b3480156103ce57600080fd5b5061033a6103dd366004611d4d565b6109d9565b3480156103ee57600080fd5b50601d5461029f90600160a81b900460ff1681565b34801561040f57600080fd5b5061023561041e366004611d66565b6001600160a01b031660009081526006602052604090205490565b34801561044557600080fd5b5061033a610a67565b34801561045a57600080fd5b5061033a610adb565b34801561046f57600080fd5b5061029f61047e366004611ca4565b610b12565b34801561048f57600080fd5b5061023560055481565b3480156104a557600080fd5b5061023560045481565b3480156104bb57600080fd5b5061033a6104ca366004611d81565b610c40565b3480156104db57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161023f565b34801561050d57600080fd5b506000546001600160a01b03166104e9565b34801561052b57600080fd5b506040805180820190915260048152634d4f474f60e01b6020820152610271565b34801561055857600080fd5b5061033a610d18565b34801561056d57600080fd5b50601d546104e9906001600160a01b031681565b34801561058d57600080fd5b5061029f61059c366004611ca4565b610d53565b3480156105ad57600080fd5b506000546104e9906001600160a01b031681565b3480156105cd57600080fd5b5061033a6105dc366004611de6565b610d60565b3480156105ed57600080fd5b506102356105fc366004611e12565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561063357600080fd5b5061029f610642366004611e45565b610d9b565b34801561065357600080fd5b5061033a610662366004611e75565b610daf565b34801561067357600080fd5b5061033a610682366004611d66565b610e42565b34801561069357600080fd5b5061033a610f2c565b3480156106a857600080fd5b50601b546104e9906001600160a01b031681565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107179086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383166000908152600760209081526040808320338452909152812054600019146107d6576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526007825283812033825290915291909120546107b191849061102c565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b6107e1848484611066565b90505b9392505050565b6000546001600160a01b0316331461081e5760405162461bcd60e51b815260040161081590611e93565b60405180910390fd5b600a869055600d859055600b849055600c839055600e82905561084f82610849858188818c8c6113c9565b906113c9565b600f556010819055610862600282611ede565b600f54106108b25760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e203530250000006044820152606401610815565b6108ba611428565b505050505050565b6000546001600160a01b031633146108ec5760405162461bcd60e51b815260040161081590611e93565b601d805460ff60a01b1916600160a01b1790556105786012556103206011556103e8601355565b600061072361092061095a565b601d546001600160a01b03166000908152600660205260409020546109549061094d906002905b90610f68565b8590610f68565b90610fea565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead60009081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e225460035491926109c69290916109c091906114c3565b906114c3565b905090565b6000610723826000196106bc565b6000546001600160a01b03163314610a035760405162461bcd60e51b815260040161081590611e93565b6001811015610a1157600080fd5b6103e881600354610a229190611f00565b610a2c9190611ede565b60058190556040519081527f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be519060200160405180910390a150565b6000546001600160a01b03163314610a915760405162461bcd60e51b815260040161081590611e93565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610b055760405162461bcd60e51b815260040161081590611e93565b6003546004819055600555565b600081600003610b87576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610b60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b849190611f17565b91505b604080516001600160a01b0385168152602081018490527fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f910160405180910390a160145460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303816000875af1158015610c1c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e49190611f30565b6000546001600160a01b03163314610c6a5760405162461bcd60e51b815260040161081590611e93565b601480546001600160a01b038781166001600160a01b031992831617909255601580548784169083168117909155601680548785169084168117909155601880548786169085168117909155601780549587169590941685179093556040805192835260208301949094529281019190915260608101919091527f06cd79b5e338fdebb51e28f829f3333e4fda9663d4732f262d97dbbacf748b159060800160405180910390a15050505050565b6000546001600160a01b03163314610d425760405162461bcd60e51b815260040161081590611e93565b606460128190556011819055601355565b60006107e4338484611066565b6000546001600160a01b03163314610d8a5760405162461bcd60e51b815260040161081590611e93565b601191909155601291909155601355565b600082610da783610913565b119392505050565b6000546001600160a01b03163314610dd95760405162461bcd60e51b815260040161081590611e93565b601d805460ff60a81b1916600160a81b84151581029190911791829055601e8390556040805184815260ff9290930491909116151560208301527f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee60910160405180910390a15050565b6000546001600160a01b03163314610e6c5760405162461bcd60e51b815260040161081590611e93565b6001600160a01b038116610ed15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610815565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6014546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610f65573d6000803e3d6000fd5b50565b600082600003610f7a57506000610723565b6000610f868385611f00565b905082610f938583611ede565b146107e45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610815565b60006107e483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611505565b600081848411156110505760405162461bcd60e51b81526004016108159190611c3a565b50600061105d8486611f4d565b95945050505050565b601f5460009060ff16156110865761107f848484611533565b90506107e4565b6001600160a01b03841660009081526001602052604090205460ff161580156110c857506001600160a01b03831660009081526001602052604090205460ff16155b1561111d57601d54600160a01b900460ff1661111d5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610815565b6001600160a01b03841660009081526001602052604090205460ff1615801561114f57506001600160a01b0383163014155b801561116657506001600160a01b03831661dead14155b80156111805750601d546001600160a01b03848116911614155b801561119a57506018546001600160a01b03848116911614155b80156111b457506015546001600160a01b03848116911614155b80156111d957506001600160a01b03831660009081526009602052604090205460ff16155b1561127a576001600160a01b0383166000908152600660205260409020546005546112048483611f60565b11156112785760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610815565b505b6112848483611607565b61128c611674565b15611299576112996116ca565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600690915291909120546112eb91849061102c565b6001600160a01b038516600090815260066020908152604080832093909355600890529081205460ff168061133857506001600160a01b03841660009081526008602052604090205460ff165b61134c57611347858486611ab1565b61134e565b825b6001600160a01b03851660009081526006602052604090205490915061137490826113c9565b6001600160a01b038086166000818152600660205260409081902093909355915190871690600080516020612029833981519152906113b69085815260200190565b60405180910390a3506001949350505050565b6000806113d68385611f60565b9050838110156107e45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610815565b7f8cc651ceed4360bdb07d4dfc17daa4a6fa17092a313d2464a582a73e9b9328006114656064610954601254600f54610f6890919063ffffffff16565b6114816064610954601154600f54610f6890919063ffffffff16565b61149d6064610954601354600f54610f6890919063ffffffff16565b6040805160ff9485168152928416602084015292168183015290519081900360600190a1565b60006107e483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061102c565b600081836115265760405162461bcd60e51b81526004016108159190611c3a565b50600061105d8486611ede565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260069091529182205461158491849061102c565b6001600160a01b0380861660009081526006602052604080822093909355908516815220546115b390836113c9565b6001600160a01b038085166000818152600660205260409081902093909355915190861690600080516020612029833981519152906115f59086815260200190565b60405180910390a35060019392505050565b6004548111158061163057506001600160a01b03821660009081526009602052604090205460ff165b6116705760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610815565b5050565b601d546000906001600160a01b031633148015906116955750601f5460ff16155b80156116aa5750601d54600160a81b900460ff165b80156109c6575050601e5430600090815260066020526040902054101590565b601f805460ff19166001179055601954601a546000916116e991610d9b565b6116f557600a546116f8565b60005b9050600061171c6002610954600f5461095486601e54610f6890919063ffffffff16565b9050600061173582601e546114c390919063ffffffff16565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061176f5761176f611f73565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106117a0576117a0611f73565b6001600160a01b039283166020918202929092010152601b5460405163791ac94760e01b81524792919091169063791ac947906117ea908690600090879030904290600401611f89565b600060405180830381600087803b15801561180457600080fd5b505af1158015611818573d6000803e3d6000fd5b50505050600061183182476114c390919063ffffffff16565b9050600061184c611843886002610fea565b600f54906114c3565b9050600061186160026109548481878d610f68565b9050600061187e83610954600b5487610f6890919063ffffffff16565b9050600061189b84610954600d5488610f6890919063ffffffff16565b905060006118b885610954600c5489610f6890919063ffffffff16565b6015546040519192506000916001600160a01b039091169085908381818185875af1925050503d806000811461190a576040519150601f19603f3d011682016040523d82523d6000602084013e61190f565b606091505b50506016546040519192506001600160a01b0316908390600081818185875af1925050503d806000811461195f576040519150601f19603f3d011682016040523d82523d6000602084013e611964565b606091505b50506017546040519192506001600160a01b0316908490600081818185875af1925050503d80600081146119b4576040519150601f19603f3d011682016040523d82523d6000602084013e6119b9565b606091505b5060009250508b159050611a9957601b5460145460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611a37573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a5c9190611ffa565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601f805460ff1916905550505050505050505050565b601354601d54600091906001600160a01b0390811690841603611ad75750601154611af2565b601d546001600160a01b0390811690861603611af257506012545b6000611b1f6010546064611b069190611f00565b61095484610947600f548a610f6890919063ffffffff16565b90506000611b3e600f54610954600e5485610f6890919063ffffffff16565b90506000611b4c83836114c3565b30600090815260066020526040902054909150611b6990826113c9565b30600090815260066020526040808220929092556018546001600160a01b031681522054611b9790836113c9565b6018546001600160a01b0390811660009081526006602090815260409182902093909355518381523092918b1691600080516020612029833981519152910160405180910390a38115611c2457600354611bf190836114c3565b6003556040518281526000906001600160a01b038a16906000805160206120298339815191529060200160405180910390a35b611c2e87846114c3565b98975050505050505050565b600060208083528351808285015260005b81811015611c6757858101830151858201604001528201611c4b565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611c9f57600080fd5b919050565b60008060408385031215611cb757600080fd5b611cc083611c88565b946020939093013593505050565b600080600060608486031215611ce357600080fd5b611cec84611c88565b9250611cfa60208501611c88565b9150604084013590509250925092565b60008060008060008060c08789031215611d2357600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600060208284031215611d5f57600080fd5b5035919050565b600060208284031215611d7857600080fd5b6107e482611c88565b600080600080600060a08688031215611d9957600080fd5b611da286611c88565b9450611db060208701611c88565b9350611dbe60408701611c88565b9250611dcc60608701611c88565b9150611dda60808701611c88565b90509295509295909350565b600080600060608486031215611dfb57600080fd5b505081359360208301359350604090920135919050565b60008060408385031215611e2557600080fd5b611e2e83611c88565b9150611e3c60208401611c88565b90509250929050565b60008060408385031215611e5857600080fd5b50508035926020909101359150565b8015158114610f6557600080fd5b60008060408385031215611e8857600080fd5b8235611cc081611e67565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082611efb57634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761072357610723611ec8565b600060208284031215611f2957600080fd5b5051919050565b600060208284031215611f4257600080fd5b81516107e481611e67565b8181038181111561072357610723611ec8565b8082018082111561072357610723611ec8565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611fd95784516001600160a01b031683529383019391830191600101611fb4565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561200f57600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220bc5c4ca1f330250b1d79ce763cf73f4a6139a6a9922237a3ccc689b983884d1964736f6c63430008120033