60806040526008805460ff60a81b191690553480156200001e57600080fd5b5060405162005337380380620053378339810160408190526200004191620003ca565b6040518060400160405280600a8152602001694c6f757665727475726560b01b8152506040518060400160405280600381526020016213159560ea1b81525081600390805190602001906200009892919062000307565b508051620000ae90600490602084019062000307565b5050506000620000c36200019960201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506008805460ff60a01b1916600160a01b17905560005b81518160ff16101562000191576200017c828260ff16815181106200015c57634e487b7160e01b600052603260045260246000fd5b60200260200101516a52b7d2dcc80cd2e40000006200019d60201b60201c565b806200018881620004f6565b91505062000127565b505062000545565b3390565b6001600160a01b038216620001f95760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b62000215816002546200029d60201b6200322d1790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620002489183906200322d6200029d821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600080620002ac83856200049e565b905083811015620003005760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401620001f0565b9392505050565b8280546200031590620004b9565b90600052602060002090601f01602090048101928262000339576000855562000384565b82601f106200035457805160ff191683800117855562000384565b8280016001018555821562000384579182015b828111156200038457825182559160200191906001019062000367565b506200039292915062000396565b5090565b5b8082111562000392576000815560010162000397565b80516001600160a01b0381168114620003c557600080fd5b919050565b60006020808385031215620003dd578182fd5b82516001600160401b0380821115620003f4578384fd5b818501915085601f83011262000408578384fd5b8151818111156200041d576200041d6200052f565b8060051b604051601f19603f830116810181811085821117156200044557620004456200052f565b604052828152858101935084860182860187018a101562000464578788fd5b8795505b8386101562000491576200047c81620003ad565b85526001959095019493860193860162000468565b5098975050505050505050565b60008219821115620004b457620004b462000519565b500190565b600181811c90821680620004ce57607f821691505b60208210811415620004f057634e487b7160e01b600052602260045260246000fd5b50919050565b600060ff821660ff81141562000510576200051062000519565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b614de280620005556000396000f3fe6080604052600436106102b15760003560e01c806378f225e511610175578063ab7b4193116100dc578063e79d313711610095578063ed0c4b4a1161006f578063ed0c4b4a146108ac578063f2fde38b146108cc578063f59feadc146108ec578063ffa4e6181461090257600080fd5b8063e79d313714610850578063ec65240614610866578063ece682661461087c57600080fd5b8063ab7b419314610770578063aff63b7d146107a0578063be5c3f28146107c0578063c9567bf9146107e0578063d1058e59146107f5578063dd62ed3e1461080a57600080fd5b80639608088c1161012e5780639608088c146106c55780639b05ddb3146106e5578063a457c2d7146106fa578063a5e0b3351461071a578063a68204981461073a578063a9059cbb1461075057600080fd5b806378f225e51461060857806379b9c39914610628578063864bd587146106525780638c52fbbc146106725780638da5cb5b1461069257806395d89b41146106b057600080fd5b80633f1302821161021957806360532f05116101d257806360532f051461053d5780636b2ef71b1461055d5780636ba4c1381461057d57806370a082311461059d578063715018a6146105d35780637211bbc9146105e857600080fd5b80633f130282146104555780634103af2a1461048d57806345227a4a146104bd5780634a4b9feb146104dd57806359eea977146104fd5780635cb677ee1461051d57600080fd5b806318160ddd1161026b57806318160ddd1461039a57806323b872dd146103b9578063313ce567146103d9578063335ce7a9146103f557806339509351146104155780633a49bf2b1461043557600080fd5b806281a21f146102bd57806301173a74146102df57806306fdde03146102ff578063095ea7b31461032a5780630e85d1e31461035a578063162c3e161461037a57600080fd5b366102b857005b600080fd5b3480156102c957600080fd5b506102dd6102d83660046144bd565b610932565b005b3480156102eb57600080fd5b506102dd6102fa3660046141f8565b6109db565b34801561030b57600080fd5b50610314610a1d565b604051610321919061481c565b60405180910390f35b34801561033657600080fd5b5061034a6103453660046143ab565b610aaf565b6040519015158152602001610321565b34801561036657600080fd5b506102dd6103753660046143d6565b610ac6565b34801561038657600080fd5b506102dd6103953660046144bd565b610b75565b3480156103a657600080fd5b506002545b604051908152602001610321565b3480156103c557600080fd5b5061034a6103d436600461436b565b610bdd565b3480156103e557600080fd5b5060405160128152602001610321565b34801561040157600080fd5b506102dd61041036600461442b565b610c47565b34801561042157600080fd5b5061034a6104303660046143ab565b610ec0565b34801561044157600080fd5b506102dd6104503660046143ab565b610ef6565b34801561046157600080fd5b50600d54610475906001600160a01b031681565b6040516001600160a01b039091168152602001610321565b34801561049957600080fd5b5061034a6104a83660046141f8565b60136020526000908152604090205460ff1681565b3480156104c957600080fd5b506102dd6104d836600461446b565b6111d4565b3480156104e957600080fd5b506102dd6104f836600461467d565b61121c565b34801561050957600080fd5b506102dd6105183660046144a3565b611265565b34801561052957600080fd5b506102dd61053836600461467d565b6113e0565b34801561054957600080fd5b506102dd6105583660046144a3565b61153e565b34801561056957600080fd5b506102dd6105783660046143ab565b6116ac565b34801561058957600080fd5b506102dd61059836600461442b565b6116fc565b3480156105a957600080fd5b506103ab6105b83660046141f8565b6001600160a01b031660009081526020819052604090205490565b3480156105df57600080fd5b506102dd61196e565b3480156105f457600080fd5b506103ab61060336600461464d565b6119e2565b34801561061457600080fd5b506103ab6106233660046145bd565b611a96565b34801561063457600080fd5b5061063d611d35565b60408051928352602083019190915201610321565b34801561065e57600080fd5b50600b54610475906001600160a01b031681565b34801561067e57600080fd5b506102dd61068d3660046143ab565b6127d3565b34801561069e57600080fd5b506005546001600160a01b0316610475565b3480156106bc57600080fd5b50610314612a97565b3480156106d157600080fd5b506102dd6106e036600461424c565b612aa6565b3480156106f157600080fd5b506102dd612b20565b34801561070657600080fd5b5061034a6107153660046143ab565b612c84565b34801561072657600080fd5b50600c54610475906001600160a01b031681565b34801561074657600080fd5b506103ab60105481565b34801561075c57600080fd5b5061034a61076b3660046143ab565b612cd3565b34801561077c57600080fd5b5061034a61078b3660046141f8565b60156020526000908152604090205460ff1681565b3480156107ac57600080fd5b506102dd6107bb36600461464d565b612ce0565b3480156107cc57600080fd5b50600a54610475906001600160a01b031681565b3480156107ec57600080fd5b506102dd612ea0565b34801561080157600080fd5b506102dd612f73565b34801561081657600080fd5b506103ab610825366004614214565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561085c57600080fd5b506103ab600f5481565b34801561087257600080fd5b506103ab600e5481565b34801561088857600080fd5b5061034a6108973660046141f8565b60146020526000908152604090205460ff1681565b3480156108b857600080fd5b506102dd6108c736600461431b565b6130d6565b3480156108d857600080fd5b506102dd6108e73660046141f8565b613142565b3480156108f857600080fd5b506103ab60115481565b34801561090e57600080fd5b5061034a61091d3660046141f8565b60126020526000908152604090205460ff1681565b3360009081526012602052604090205460ff161561096b5760405162461bcd60e51b815260040161096290614995565b60405180910390fd5b60065460405163024f5ed360e11b81526001600160a01b039091169063049ebda6906109a39033908890889088908890600401614793565b600060405180830381600087803b1580156109bd57600080fd5b505af11580156109d1573d6000803e3d6000fd5b5050505050505050565b6005546001600160a01b03163314610a055760405162461bcd60e51b81526004016109629061491b565b610a1a816a52b7d2dcc80cd2e400000061328c565b50565b606060038054610a2c90614c6e565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5890614c6e565b8015610aa55780601f10610a7a57610100808354040283529160200191610aa5565b820191906000526020600020905b815481529060010190602001808311610a8857829003601f168201915b5050505050905090565b6000610abc33848461336a565b5060015b92915050565b6005546001600160a01b03163314610af05760405162461bcd60e51b81526004016109629061491b565b60005b82811015610b6f578160126000868685818110610b2057634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610b3591906141f8565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610b6781614ca9565b915050610af3565b50505050565b3360009081526012602052604090205460ff1615610ba55760405162461bcd60e51b815260040161096290614995565b60065460405163d04267c360e01b81526001600160a01b039091169063d04267c3906109a39033908890889088908890600401614793565b6000610bea84848461348f565b610c3c8433610c3785604051806060016040528060288152602001614d60602891396001600160a01b038a16600090815260016020908152604080832033845290915290205491906138b0565b61336a565b5060015b9392505050565b3360009081526012602052604090205460ff1615610c775760405162461bcd60e51b815260040161096290614995565b80610c8157600080fd5b60005b81811015610ebb576000838383818110610cae57634e487b7160e01b600052603260045260246000fd5b600654604051633d0e601960e11b81526020909202939093013593506001600160a01b0390921691637a1cc0329150610cf09084903390600190600401614a59565b60206040518083038186803b158015610d0857600080fd5b505afa158015610d1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d409190614487565b610d745760405162461bcd60e51b8152602060048201526005602482015264576169742160d81b6044820152606401610962565b60065460405163d34db04560e01b81526004810183905260009182916001600160a01b039091169063d34db0459060240160606040518083038186803b158015610dbd57600080fd5b505afa158015610dd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df591906146c1565b5090925090508115610ea557610e0b82826138ea565b60065460405163d846612160e01b8152600481018590523360248201526001600160a01b039091169063d846612190604401600060405180830381600087803b158015610e5757600080fd5b505af1158015610e6b573d6000803e3d6000fd5b50506040518581523392507f169f1815ebdea059aac3bb00ec9a9594c7a5ffcb64a17e8392b5d84909a14556915060200160405180910390a25b5050508080610eb390614ca9565b915050610c84565b505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610abc918590610c37908661322d565b6009546001600160a01b03163314610f3e5760405162461bcd60e51b815260206004820152600b60248201526a139bdd08185b1b1bddd95960aa1b6044820152606401610962565b60008111610f4b57600080fd5b6001600160a01b03821660009081526012602052604090205460ff1615610f845760405162461bcd60e51b815260040161096290614995565b6001600160a01b03821660009081526013602052604090205460ff1615610fe05760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b5a59dc985d195960821b6044820152606401610962565b600d546040516370a0823160e01b81526001600160a01b03848116600483015260009216906370a082319060240160206040518083038186803b15801561102657600080fd5b505afa15801561103a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105e9190614665565b905081811161106d578061106f565b815b90508015610ebb57600061112f600f54611129600d60009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156110d057600080fd5b505afa1580156110e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110891906146ee565b61111390600a614b61565b6111296111226012600a614b61565b8790613951565b906139d0565b600b54600d54919250611151916001600160a01b039081169187911685613a12565b600b54611168906001600160a01b03168583613a6c565b6001600160a01b03841660008181526013602052604090819020805460ff19166001179055517f85713fb936d2917e69847b410c06542d00e219baddee81facafe13fef2e1a62b906111c69085908590918252602082015260400190565b60405180910390a250505050565b6005546001600160a01b031633146111fe5760405162461bcd60e51b81526004016109629061491b565b60088054911515600160a01b0260ff60a01b19909216919091179055565b6005546001600160a01b031633146112465760405162461bcd60e51b81526004016109629061491b565b61125c6112556012600a614b61565b8390613951565b600e5560105550565b3360009081526012602052604090205460ff16156112955760405162461bcd60e51b815260040161096290614995565b60065460405163287ddddd60e01b815260009182916001600160a01b039091169063287ddddd906112cf9033908790600190600401614764565b604080518083038186803b1580156112e657600080fd5b505afa1580156112fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131e919061469e565b90925090508115610ebb576113338282613b75565b600654604051631a7c563160e01b81526001600160a01b0390911690631a7c5631906113689033908790600190600401614764565b600060405180830381600087803b15801561138257600080fd5b505af1158015611396573d6000803e3d6000fd5b50505050336001600160a01b03167f8ec85488fc2c7aae05a5589a2ccbfcc05de4ca6a2d09872ed0408e537828d2c7846040516113d39190614809565b60405180910390a2505050565b3360009081526012602052604090205460ff16156114105760405162461bcd60e51b815260040161096290614995565b600081116114515760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b6044820152606401610962565b600a546114699033906001600160a01b031683613a6c565b600a54604051630bf3a9b160e21b815260048101839052600160248201526001600160a01b0390911690632fcea6c490604401600060405180830381600087803b1580156114b657600080fd5b505af11580156114ca573d6000803e3d6000fd5b5050600654604051632c2cdd2160e01b815260048101869052602481018590523360448201526001600160a01b039091169250632c2cdd2191506064015b600060405180830381600087803b15801561152257600080fd5b505af1158015611536573d6000803e3d6000fd5b505050505050565b3360009081526012602052604090205460ff161561156e5760405162461bcd60e51b815260040161096290614995565b600654604051638c46d91b60e01b815260009182916001600160a01b0390911690638c46d91b906115a89033908790600190600401614764565b604080518083038186803b1580156115bf57600080fd5b505afa1580156115d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f7919061469e565b90925090508115610ebb5761160c82826138ea565b60065460405163048c49ed60e41b81526001600160a01b03909116906348c49ed0906116419033908790600190600401614764565b600060405180830381600087803b15801561165b57600080fd5b505af115801561166f573d6000803e3d6000fd5b50505050336001600160a01b03167f842f8f58162315a491e27f7e3f83ac0f604807f5b00da61215016f662fbea95f846040516113d39190614809565b6005546001600160a01b031633146116d65760405162461bcd60e51b81526004016109629061491b565b600d80546001600160a01b0319166001600160a01b039390931692909217909155600f55565b3360009081526012602052604090205460ff161561172c5760405162461bcd60e51b815260040161096290614995565b8061173657600080fd5b60005b81811015610ebb57600083838381811061176357634e487b7160e01b600052603260045260246000fd5b600654604051633d0e601960e11b81526020909202939093013593506001600160a01b0390921691637a1cc03291506117a59084903390600090600401614a59565b60206040518083038186803b1580156117bd57600080fd5b505afa1580156117d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f59190614487565b6118295760405162461bcd60e51b8152602060048201526005602482015264576169742160d81b6044820152606401610962565b600654604051635aef244760e01b81526004810183905260009182916001600160a01b0390911690635aef244790602401604080518083038186803b15801561187157600080fd5b505afa158015611885573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a9919061469e565b90925090508115611958576118be8282613b75565b600654604051636eeaf0d960e11b8152600481018590523360248201526001600160a01b039091169063ddd5e1b290604401600060405180830381600087803b15801561190a57600080fd5b505af115801561191e573d6000803e3d6000fd5b50506040518581523392507f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4915060200160405180910390a25b505050808061196690614ca9565b915050611739565b6005546001600160a01b031633146119985760405162461bcd60e51b81526004016109629061491b565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b3360009081526012602052604081205460ff1615611a125760405162461bcd60e51b815260040161096290614995565b60065460405163d34db04560e01b8152600481018490526001600160a01b039091169063d34db0459060240160606040518083038186803b158015611a5657600080fd5b505afa158015611a6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8e91906146c1565b949350505050565b3360009081526012602052604081205460ff1615611ac65760405162461bcd60e51b815260040161096290614995565b611af46040518060400160405280600c81526020016b4e6f6465206e616d6520257360a01b81525085613ba1565b60008311611b355760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b6044820152606401610962565b60038451118015611b47575060208451105b611b935760405162461bcd60e51b815260206004820181905260248201527f4e4f4445204352454154494f4e3a204e414d452053495a4520494e56414c49446044820152606401610962565b6004826005811115611bb557634e487b7160e01b600052602160045260246000fd5b1480611bc35750600e548310155b611c025760405162461bcd60e51b815260206004820152601060248201526f155b99195c881b5a5b88185b5bdd5b9d60821b6044820152606401610962565b6005826005811115611c2457634e487b7160e01b600052602160045260246000fd5b1415611c615760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964207479706560a01b6044820152606401610962565b611c8c60405180604001604052806009815260200168416d6f756e7420257360b81b81525084613be6565b600a54611ca49033906001600160a01b031685613a6c565b600654604051630488613f60e01b81526001600160a01b0390911690630488613f90611ce390879060009081908990429082908b90339060040161482f565b602060405180830381600087803b158015611cfd57600080fd5b505af1158015611d11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8e9190614665565b33600090815260126020526040812054819060ff1615611d675760405162461bcd60e51b815260040161096290614995565b3360009081526014602052604090205460ff1615611dc05760405162461bcd60e51b81526020600482015260166024820152755553455220414c5245414459204d494752415445442160501b6044820152606401610962565b60408051808201825260018152602360f81b602082015260085491516319a6f1d160e11b8152336004820152600092611e6492916001600160a01b039091169063334de3a2906024015b60006040518083038186803b158015611e2257600080fd5b505afa158015611e36573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e5e919081019061454e565b90613c2b565b90506000815111611ea15760405162461bcd60e51b81526020600482015260076024820152664e6f204e6f646560c81b6044820152606401610962565b60408051808201825260018152602360f81b60208201526008549151632bacfd8160e11b8152336004820152600092611eef92916001600160a01b0390911690635759fb0290602401611e0a565b60408051808201825260018152602360f81b602082015260085491516364940ce760e11b8152336004820152929350600092611f3d926001600160a01b03169063c92819ce90602401611e0a565b60408051808201825260018152602360f81b6020820152600854915163251c4fd760e11b8152336004820152929350600092611f8b926001600160a01b031690634a389fae90602401611e0a565b905060005b845181101561278a576000838281518110611fbb57634e487b7160e01b600052603260045260246000fd5b60200260200101517340eed546262d5cb89e4d7783d2264a7124cdc8ca6342346c5e90916040518263ffffffff1660e01b8152600401611ffb919061481c565b60206040518083038186803b15801561201357600080fd5b505af4158015612027573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204b9190614665565b600854604051637ce4f85f60e01b8152336004820152602481018390529192506000916001600160a01b0390911690637ce4f85f9060440160206040518083038186803b15801561209b57600080fd5b505afa1580156120af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d39190614665565b60085460405163e599ef5b60e01b81523360048201526024810185905291925062020f58916001600160a01b039091169063e599ef5b9060440160206040518083038186803b15801561212557600080fd5b505afa158015612139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215d9190614665565b1061247d57600660009054906101000a90046001600160a01b03166001600160a01b031663a5a1fd296040518061012001604052808a87815181106121b257634e487b7160e01b600052603260045260246000fd5b60200260200101518152602001600081526020018481526020014281526020018787815181106121f257634e487b7160e01b600052603260045260246000fd5b60200260200101517340eed546262d5cb89e4d7783d2264a7124cdc8ca6342346c5e90916040518263ffffffff1660e01b8152600401612232919061481c565b60206040518083038186803b15801561224a57600080fd5b505af415801561225e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122829190614665565b61228c9086614c2b565b815260065460408051632d6b80e160e11b815290516020938401936001600160a01b0390931692635ad701c29260048082019391829003018186803b1580156122d457600080fd5b505afa1580156122e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230c9190614665565b8152602001600081526020016000600581111561233957634e487b7160e01b600052602160045260246000fd5b8152600754604080516354ab5ba760e01b815290516020938401936001600160a01b03909316926354ab5ba79260048082019391829003018186803b15801561238157600080fd5b505afa158015612395573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b99190614665565b60058111156123d857634e487b7160e01b600052602160045260246000fd5b60058111156123f757634e487b7160e01b600052602160045260246000fd5b815250336040518363ffffffff1660e01b81526004016124189291906149ba565b602060405180830381600087803b15801561243257600080fd5b505af1158015612446573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061246a9190614665565b508861247581614ca9565b995050612775565b600660009054906101000a90046001600160a01b03166001600160a01b031663a5a1fd296040518061012001604052808a87815181106124cd57634e487b7160e01b600052603260045260246000fd5b602002602001015181526020016000815260200184815260200189878151811061250757634e487b7160e01b600052603260045260246000fd5b60200260200101517340eed546262d5cb89e4d7783d2264a7124cdc8ca6342346c5e90916040518263ffffffff1660e01b8152600401612547919061481c565b60206040518083038186803b15801561255f57600080fd5b505af4158015612573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125979190614665565b81526020018787815181106125bc57634e487b7160e01b600052603260045260246000fd5b60200260200101517340eed546262d5cb89e4d7783d2264a7124cdc8ca6342346c5e90916040518263ffffffff1660e01b81526004016125fc919061481c565b60206040518083038186803b15801561261457600080fd5b505af4158015612628573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264c9190614665565b6126569086614c2b565b81526000602082015260085460408051632ac7a06760e21b8152336004820152602481018990529201916001600160a01b039091169063ab1e819c9060440160206040518083038186803b1580156126ad57600080fd5b505afa1580156126c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126e59190614665565b8152602001600081526020016004815250336040518363ffffffff1660e01b81526004016127149291906149ba565b602060405180830381600087803b15801561272e57600080fd5b505af1158015612742573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127669190614665565b508761277181614ca9565b9850505b5050808061278290614ca9565b915050611f90565b5033600081815260146020526040808220805460ff19166001179055517f258bd44e0f895ff76d1c76c39643478bbb43ead45cd0a7f9547405ea8268daed9190a2505050509091565b6009546001600160a01b0316331461281b5760405162461bcd60e51b815260206004820152600b60248201526a139bdd08185b1b1bddd95960aa1b6044820152606401610962565b6000811161282857600080fd5b6001600160a01b03821660009081526012602052604090205460ff16156128615760405162461bcd60e51b815260040161096290614995565b6001600160a01b03821660009081526015602052604090205460ff16156128bd5760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b5a59dc985d195960821b6044820152606401610962565b600c546040516370a0823160e01b81526001600160a01b03848116600483015260009216906370a082319060240160206040518083038186803b15801561290357600080fd5b505afa158015612917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293b9190614665565b905081811161294a578061294c565b815b90508015610ebb576000612a00600c60009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156129a757600080fd5b505afa1580156129bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129df91906146ee565b6129ea90600a614b61565b6111296129f96012600a614b61565b8590613951565b600b54600c54919250612a22916001600160a01b039081169187911685613a12565b600b54612a39906001600160a01b03168583613a6c565b6001600160a01b03841660008181526015602052604090819020805460ff19166001179055517f07ed395d6222549c0f3a23fe2f7179e7b5b087d893fbf976e5a26c4d11229550906111c69085908590918252602082015260400190565b606060048054610a2c90614c6e565b6005546001600160a01b03163314612ad05760405162461bcd60e51b81526004016109629061491b565b600a80546001600160a01b039586166001600160a01b03199182161790915560068054948616948216949094179093556007805492851692841692909217909155600b8054919093169116179055565b3360009081526012602052604090205460ff1615612b505760405162461bcd60e51b815260040161096290614995565b600654604051638c46d91b60e01b815260009182916001600160a01b0390911690638c46d91b90612b8990339060049086908201614764565b604080518083038186803b158015612ba057600080fd5b505afa158015612bb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bd8919061469e565b90925090508115612c8057612bed82826138ea565b60065460405163048c49ed60e41b81526001600160a01b03909116906348c49ed090612c229033906004906000908201614764565b600060405180830381600087803b158015612c3c57600080fd5b505af1158015612c50573d6000803e3d6000fd5b50506040513392507fee274ed056fbd070d6cd9e1f922a0ef7b294a84bd690e33affc4738135f8eedb9150600090a25b5050565b6000610abc3384610c3785604051806060016040528060258152602001614d88602591393360009081526001602090815260408083206001600160a01b038d16845290915290205491906138b0565b6000610abc33848461348f565b60065460405163239af15360e11b81526004810183905233602482015260009182916001600160a01b0390911690634735e2a690604401604080518083038186803b158015612d2e57600080fd5b505afa158015612d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d66919061469e565b90925090508115610ebb57600b54600a54612d8e916001600160a01b03908116911683613a6c565b600b54612da5906001600160a01b03163384613a6c565b600a54604051630bf3a9b160e21b815260048101839052600060248201526001600160a01b0390911690632fcea6c490604401600060405180830381600087803b158015612df257600080fd5b505af1158015612e06573d6000803e3d6000fd5b505060065460405163037c14e760e41b8152600481018790523360248201526001600160a01b0390911692506337c14e709150604401600060405180830381600087803b158015612e5657600080fd5b505af1158015612e6a573d6000803e3d6000fd5b50506040518581523392507f1811e9ee4cabd849c895692cd9237cea7f019f52d7d12c88e1f6d7d8b3e5029b91506020016113d3565b6005546001600160a01b03163314612eca5760405162461bcd60e51b81526004016109629061491b565b600854600160a81b900460ff1615612f245760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610962565b6008805460ff60a81b1916600160a81b1790556040517f1344a223a416e8ccc34b53262a05bb13e0a3de1ba8a305a88d1d171c63bcddc090612f699042815260200190565b60405180910390a1565b3360009081526012602052604090205460ff1615612fa35760405162461bcd60e51b815260040161096290614995565b60065460405163287ddddd60e01b815260009182916001600160a01b039091169063287ddddd90612fdc90339060049086908201614764565b604080518083038186803b158015612ff357600080fd5b505afa158015613007573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061302b919061469e565b90925090508115612c80576130408282613b75565b600654604051631a7c563160e01b81526001600160a01b0390911690631a7c5631906130759033906004906000908201614764565b600060405180830381600087803b15801561308f57600080fd5b505af11580156130a3573d6000803e3d6000fd5b50506040513392507f35c46ad0a3be0baa9f2efefd524536899a004933e4fd4c13a81a0e1a38f551159150600090a25050565b6005546001600160a01b031633146131005760405162461bcd60e51b81526004016109629061491b565b600980546001600160a01b03199081166001600160a01b0396871617909155600c80548216948616949094179093556008805490931691909316179055601155565b6005546001600160a01b0316331461316c5760405162461bcd60e51b81526004016109629061491b565b6001600160a01b0381166131d15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610962565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b60008061323a8385614ae6565b905083811015610c405760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610962565b6001600160a01b0382166132e25760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610962565b6002546132ef908261322d565b6002556001600160a01b038216600090815260208190526040902054613315908261322d565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b0383166133cc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610962565b6001600160a01b03821661342d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610962565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831660009081526012602052604090205460ff161580156134d157506001600160a01b03821660009081526012602052604090205460ff16155b6135135760405162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b6044820152606401610962565b6001600160a01b0383166135395760405162461bcd60e51b815260040161096290614950565b6001600160a01b03821661355f5760405162461bcd60e51b8152600401610962906148d8565b600854600160a01b900460ff166135af5760405162461bcd60e51b8152602060048201526014602482015273151c985b9cd9995c881b9bddc8185b1b1bddd95960621b6044820152606401610962565b6000806000806000600a60009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b815260040160a06040518083038186803b15801561360557600080fd5b505afa158015613619573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061363d91906142a7565b945094509450945094506136596005546001600160a01b031690565b6001600160a01b0316886001600160a01b03161415801561368c5750846001600160a01b0316876001600160a01b031614155b80156136aa5750836001600160a01b0316876001600160a01b031614155b80156136bf57506001600160a01b0387163014155b80156136d457506001600160a01b0388163014155b156138a557600854600160a81b900460ff166137325760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610962565b826001600160a01b0316876001600160a01b0316141580156137665750816001600160a01b0316876001600160a01b031614155b80156137845750806001600160a01b0316876001600160a01b031614155b80156137a25750826001600160a01b0316886001600160a01b031614155b80156137c05750816001600160a01b0316886001600160a01b031614155b80156137de5750806001600160a01b0316886001600160a01b031614155b156138a55760006137ee60025490565b90506000613811896001600160a01b031660009081526020819052604090205490565b905061382e6127106111296010548561395190919063ffffffff16565b613838898361322d565b11156138a25760405162461bcd60e51b815260206004820152603360248201527f53544f5020545259494e4720544f204245434f4d452041205748414c452e2057604482015272229025a727ab902ba427902ca7aa9020a9229760691b6064820152608401610962565b50505b6109d1888888613a6c565b600081848411156138d45760405162461bcd60e51b8152600401610962919061481c565b5060006138e18486614c2b565b95945050505050565b600b54613901906001600160a01b03163084613a6c565b600a546139199030906001600160a01b031683613a6c565b600a54604051630bf3a9b160e21b815260048101839052600060248201526001600160a01b0390911690632fcea6c490604401611508565b60008261396057506000610ac0565b600061396c8385614c0c565b9050826139798583614afe565b14610c405760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610962565b6000610c4083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613e66565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610b6f908590613e94565b6001600160a01b038316613a925760405162461bcd60e51b815260040161096290614950565b6001600160a01b038216613ab85760405162461bcd60e51b8152600401610962906148d8565b613af581604051806060016040528060268152602001614d3a602691396001600160a01b03861660009081526020819052604090205491906138b0565b6001600160a01b038085166000908152602081905260408082209390935590841681522054613b24908261322d565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101613482565b600a54613b8d9030906001600160a01b031683613a6c565b6139193033613b9c8585613f66565b613a6c565b612c808282604051602401613bb7929190614891565b60408051601f198184030181529190526020810180516001600160e01b0316634b5c427760e01b179052613fa8565b612c808282604051602401613bfc9291906148b6565b60408051601f198184030181529190526020810180516001600160e01b03166309710a9d60e41b179052613fa8565b606082600060015b60018351613c419190614c2b565b821015613c88576000613c55878785613fc9565b9050806000191415613c675750613c88565b81613c7181614ca9565b9250613c809050816001614ae6565b925050613c33565b8067ffffffffffffffff811115613caf57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015613ce257816020015b6060815260200190600190039081613ccd5790505b50935060009150600090505b60018351613cfc9190614c2b565b821015613e5d576000613d10878785613fc9565b9050806000191415613d20575082515b6000613d2c8483614c2b565b67ffffffffffffffff811115613d5257634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015613d7c576020820181803683370190505b509050806000855b84811015613e0f57878181518110613dac57634e487b7160e01b600052603260045260246000fd5b01602001516001600160f81b0319168383613dc681614ca9565b945081518110613de657634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535080613e0781614ca9565b915050613d84565b50613e1b846001614ae6565b9550818886613e2981614ca9565b975081518110613e4957634e487b7160e01b600052603260045260246000fd5b602002602001018190525050505050613cee565b50505092915050565b60008183613e875760405162461bcd60e51b8152600401610962919061481c565b5060006138e18486614afe565b6000613ee9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661408f9092919063ffffffff16565b805190915015610ebb5780806020019051810190613f079190614487565b610ebb5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610962565b6000610c4083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506138b0565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b815160009084908490600114613fef57634e487b7160e01b600052600160045260246000fd5b835b8251811015614081578160008151811061401b57634e487b7160e01b600052603260045260246000fd5b602001015160f81c60f81b6001600160f81b03191683828151811061405057634e487b7160e01b600052603260045260246000fd5b01602001516001600160f81b031916141561406f579250610c40915050565b8061407981614ca9565b915050613ff1565b506000199695505050505050565b6060611a8e848460008585843b6140e85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610962565b600080866001600160a01b031685876040516141049190614748565b60006040518083038185875af1925050503d8060008114614141576040519150601f19603f3d011682016040523d82523d6000602084013e614146565b606091505b5091509150614156828286614161565b979650505050505050565b60608315614170575081610c40565b8251156141805782518084602001fd5b8160405162461bcd60e51b8152600401610962919061481c565b60008083601f8401126141ab578182fd5b50813567ffffffffffffffff8111156141c2578182fd5b6020830191508360208260051b85010111156141dd57600080fd5b9250929050565b8035600681106141f357600080fd5b919050565b600060208284031215614209578081fd5b8135610c4081614d16565b60008060408385031215614226578081fd5b823561423181614d16565b9150602083013561424181614d16565b809150509250929050565b60008060008060808587031215614261578182fd5b843561426c81614d16565b9350602085013561427c81614d16565b9250604085013561428c81614d16565b9150606085013561429c81614d16565b939692955090935050565b600080600080600060a086880312156142be578081fd5b85516142c981614d16565b60208701519095506142da81614d16565b60408701519094506142eb81614d16565b60608701519093506142fc81614d16565b608087015190925061430d81614d16565b809150509295509295909350565b60008060008060808587031215614330578384fd5b843561433b81614d16565b9350602085013561434b81614d16565b9250604085013561435b81614d16565b9396929550929360600135925050565b60008060006060848603121561437f578283fd5b833561438a81614d16565b9250602084013561439a81614d16565b929592945050506040919091013590565b600080604083850312156143bd578182fd5b82356143c881614d16565b946020939093013593505050565b6000806000604084860312156143ea578081fd5b833567ffffffffffffffff811115614400578182fd5b61440c8682870161419a565b909450925050602084013561442081614d2b565b809150509250925092565b6000806020838503121561443d578182fd5b823567ffffffffffffffff811115614453578283fd5b61445f8582860161419a565b90969095509350505050565b60006020828403121561447c578081fd5b8135610c4081614d2b565b600060208284031215614498578081fd5b8151610c4081614d2b565b6000602082840312156144b4578081fd5b610c40826141e4565b600080600080604085870312156144d2578182fd5b843567ffffffffffffffff808211156144e9578384fd5b818701915087601f8301126144fc578384fd5b81358181111561450a578485fd5b88602082850101111561451b578485fd5b602092830196509450908601359080821115614535578384fd5b506145428782880161419a565b95989497509550505050565b60006020828403121561455f578081fd5b815167ffffffffffffffff811115614575578182fd5b8201601f81018413614585578182fd5b805161459861459382614abe565b614a8d565b8181528560208385010111156145ac578384fd5b6138e1826020830160208601614c42565b6000806000606084860312156145d1578081fd5b833567ffffffffffffffff8111156145e7578182fd5b8401601f810186136145f7578182fd5b803561460561459382614abe565b818152876020838501011115614619578384fd5b81602084016020830137836020838301015280955050505060208401359150614644604085016141e4565b90509250925092565b60006020828403121561465e578081fd5b5035919050565b600060208284031215614676578081fd5b5051919050565b6000806040838503121561468f578182fd5b50508035926020909101359150565b600080604083850312156146b0578182fd5b505080516020909101519092909150565b6000806000606084860312156146d5578081fd5b8351925060208401519150604084015190509250925092565b6000602082840312156146ff578081fd5b815160ff81168114610c40578182fd5b61471881614d06565b9052565b60008151808452614734816020860160208601614c42565b601f01601f19169290920160200192915050565b6000825161475a818460208701614c42565b9190910192915050565b6001600160a01b03841681526060810161477d84614d06565b8360208301528215156040830152949350505050565b6001600160a01b0386168152606060208201819052810184905283856080830137600060808583018101829052601f19601f8701168301838103820160408501529081018490526001600160fb1b038411156147ed578182fd5b8360051b808660a08401370160a0019081529695505050505050565b6020810161481683614d06565b91905290565b602081526000610c40602083018461471c565b60006101008083526148438184018c61471c565b9150508860208301528760408301528660608301528560808301528460a083015261486d84614d06565b60c08201939093526001600160a01b039190911660e0909101529695505050505050565b6040815260006148a4604083018561471c565b82810360208401526138e1818561471c565b6040815260006148c9604083018561471c565b90508260208301529392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252600b908201526a109b1858dadb1a5cdd195960aa1b604082015260600190565b60408152600083516101208060408501526149d961016085018361471c565b91506020860151606085015260408601516080850152606086015160a0850152608086015160c085015260a086015160e085015260c0860151610100818187015260e08801519150614a2d8387018361470f565b8701519150614a42905061014085018261470f565b506001600160a01b03841660208401529050610c40565b8381526001600160a01b03831660208201526060810160028310614a7f57614a7f614cda565b826040830152949350505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715614ab657614ab6614cf0565b604052919050565b600067ffffffffffffffff821115614ad857614ad8614cf0565b50601f01601f191660200190565b60008219821115614af957614af9614cc4565b500190565b600082614b1957634e487b7160e01b81526012600452602481fd5b500490565b600181815b80851115614b59578160001904821115614b3f57614b3f614cc4565b80851615614b4c57918102915b93841c9390800290614b23565b509250929050565b6000610c4060ff841683600082614b7a57506001610ac0565b81614b8757506000610ac0565b8160018114614b9d5760028114614ba757614bc3565b6001915050610ac0565b60ff841115614bb857614bb8614cc4565b50506001821b610ac0565b5060208310610133831016604e8410600b8410161715614be6575081810a610ac0565b614bf08383614b1e565b8060001904821115614c0457614c04614cc4565b029392505050565b6000816000190483118215151615614c2657614c26614cc4565b500290565b600082821015614c3d57614c3d614cc4565b500390565b60005b83811015614c5d578181015183820152602001614c45565b83811115610b6f5750506000910152565b600181811c90821680614c8257607f821691505b60208210811415614ca357634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415614cbd57614cbd614cc4565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60068110610a1a57610a1a614cda565b6001600160a01b0381168114610a1a57600080fd5b8015158114610a1a57600080fdfe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201659d05a8a46ed738e03d01b480cb2f4c52640ec041cdc31625afe89f09bedf664736f6c63430008040033000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000002d836f3167aa9954f3b81168ef8c7a06ecb89db20000000000000000000000002d836f3167aa9954f3b81168ef8c7a06ecb89db20000000000000000000000008f0155c9e2489146bcff1d1e5d168bcd7a98cc9000000000000000000000000081ae314bed3a0cb9401a8f590e7cedd27711a0b5000000000000000000000000df974829f6d977370b21e065ae445390cb9d010c0000000000000000000000006b5085c49300a348d5f915dea29d5c0bc4878b0e000000000000000000000000325439b8fccda776147687eeb066d2fc19bf6d1800000000000000000000000023027146bb7bb8b028b849b14f4d4968c2025c04000000000000000000000000fd1b05e51653339c850c8a18c9ac11aed9105f2a0000000000000000000000002d836f3167aa9954f3b81168ef8c7a06ecb89db200000000000000000000000094116c0c9ecb456e3d40cad5070e01ded0bcd72300000000000000000000000090498570d0aa0cc09f6d73b7d226aa540bef0086000000000000000000000000c2a60bed1e4e6022a2dc415650c1eee6eafa25b5000000000000000000000000e82aadf62d4adc097595478941218dd66778e082000000000000000000000000cb66f4dac68b2b8ecabf40346b7a2b5d23b9211e00000000000000000000000023643862901025ffcb41b677624f365ef8ecb364