60806040526008805462ffffff60b81b191661010160b81b17905560c8600981905562000041306001600160a01b031660009081526020819052604090205490565b6200004d9190620009be565b600a556200006e600c54600b54620004df60201b62001a4c1790919060201c565b600d556064600e553480156200008357600080fd5b506040516200427238038062004272833981016040819052620000a691620009fe565b604080518082018252600881526722b73232b0bb37b960c11b60208083019182528351808501909452600584526422a7222b2960d91b908401528151919291620000f39160039162000902565b5080516200010990600490602084019062000902565b50505060006200011e6200054f60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620001a1866200018d6103e88a6200055360201b62001ab21790919060201c565b6200059d60201b62001af41790919060201c565b620001b190633b9aca0062000a83565b601055620001d3856200018d896103e862000553602090811b62001ab217901c565b620001e390633b9aca0062000a83565b60115562000205846200018d896103e862000553602090811b62001ab217901c565b6200021590633b9aca0062000a83565b6012556200023187606462000553602090811b62001ab217901c565b6200024190633b9aca0062000a83565b600f55600b899055600c889055620002668989620004df602090811b62001a4c17901c565b600d8190555060008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002ad57600080fd5b505afa158015620002c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e8919062000aa5565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200033157600080fd5b505afa15801562000346573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036c919062000aa5565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620003b557600080fd5b505af1158015620003ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f0919062000aa5565b600880546001600160a01b038086166001600160a01b031992831617909255601a80549284169290911691909117905590506200042f81600162000624565b601b80546001600160a01b038681166001600160a01b031992831617909255601c805488841692169190911790556005546200046e911660016200070f565b6200047b3060016200070f565b601b5462000494906001600160a01b031660016200070f565b620004a18560016200070f565b620004ce620004b86005546001600160a01b031690565b620004c88b633b9aca0062000a83565b620007ca565b505050505050505050505062000b73565b600080620004ee838562000ac3565b905083811015620005465760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b90505b92915050565b3390565b60006200054683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620008c660201b60201c565b600082620005ae5750600062000549565b6000620005bc838562000a83565b905082620005cb8583620009be565b14620005465760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016200053d565b6001600160a01b03821660009081526018602052604090205460ff1615158115151415620006bb5760405162461bcd60e51b815260206004820152603f60248201527f546f6b656e3a204175746f6d61746564206d61726b6574206d616b657220706160448201527f697220697320616c72656164792073657420746f20746861742076616c75650060648201526084016200053d565b6001600160a01b038216600081815260186020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b031633146200076b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200053d565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620008225760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200053d565b6200083e81600254620004df60201b62001a4c1790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200087191839062001a4c620004df821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60008183620008ea5760405162461bcd60e51b81526004016200053d919062000ade565b506000620008f98486620009be565b95945050505050565b828054620009109062000b36565b90600052602060002090601f0160209004810192826200093457600085556200097f565b82601f106200094f57805160ff19168380011785556200097f565b828001600101855582156200097f579182015b828111156200097f57825182559160200191906001019062000962565b506200098d92915062000991565b5090565b5b808211156200098d576000815560010162000992565b634e487b7160e01b600052601160045260246000fd5b600082620009dc57634e487b7160e01b600052601260045260246000fd5b500490565b80516001600160a01b0381168114620009f957600080fd5b919050565b60008060008060008060008060006101208a8c03121562000a1e57600080fd5b8951985060208a0151975060408a0151965060608a0151955060808a0151945060a08a0151935062000a5360c08b01620009e1565b925062000a6360e08b01620009e1565b915062000a746101008b01620009e1565b90509295985092959850929598565b600081600019048311821515161562000aa05762000aa0620009a8565b500290565b60006020828403121562000ab857600080fd5b6200054682620009e1565b6000821982111562000ad95762000ad9620009a8565b500190565b600060208083528351808285015260005b8181101562000b0d5785810183015185820160400152820162000aef565b8181111562000b20576000604083870101525b50601f01601f1916929092016040019392505050565b600181811c9082168062000b4b57607f821691505b6020821081141562000b6d57634e487b7160e01b600052602260045260246000fd5b50919050565b6136ef8062000b836000396000f3fe6080604052600436106103855760003560e01c8063877f4de5116101d1578063c1a106c611610102578063dd62ed3e116100a0578063e6db992f1161006f578063e6db992f14610aae578063eb91d37e14610ac3578063f2fde38b14610ad8578063f8b3c23e14610af857600080fd5b8063dd62ed3e14610a1c578063ddbbf68314610a62578063e2f4560514610a82578063e6c75f7114610a9857600080fd5b8063cb0e55a8116100dc578063cb0e55a81461095a578063d9c3c610146109d1578063da473fcd146109e6578063dd467064146109fc57600080fd5b8063c1a106c6146108fa578063c492f0461461091a578063ca02d7911461093a57600080fd5b8063a457c2d71161016f578063b6c5232411610149578063b6c523241461088f578063b99d4839146108a4578063bf56b371146108c4578063c0246668146108da57600080fd5b8063a457c2d71461081f578063a9059cbb1461083f578063b62496f51461085f57600080fd5b806395d89b41116101ab57806395d89b41146107b357806398118cb4146107c85780639a7a23d6146107de5780639ec5691d146107fe57600080fd5b8063877f4de5146107545780638da5cb5b146107755780638e9893821461079357600080fd5b8063316601a7116102b65780635aa821a91161025457806370a082311161022357806370a08231146106df578063715018a6146106ff5780637290b621146107145780637316c2e91461073457600080fd5b80635aa821a9146106735780635d098b381461068957806365b8dbc0146106a95780636b67c4df146106c957600080fd5b8063455a439611610290578063455a4396146105da57806349bd5a5e146105fa5780634fbee1931461061a57806352f7c9881461065357600080fd5b8063316601a71461057957806331a0a88c1461059957806339509351146105ba57600080fd5b806318160ddd116103235780631fca803d116102fd5780631fca803d146104ed57806323b872dd1461051d578063264d26dd1461053d578063313ce5671461055d57600080fd5b806318160ddd146104875780631c15aa111461049c5780631cdd3be3146104bd57600080fd5b806306fdde031161035f57806306fdde03146103e7578063095ea7b31461040957806313114a9d146104395780631694505e1461044f57600080fd5b806301339c211461039157806301f59d16146103a857806302259e9e146103d157600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103a6610b19565b005b3480156103b457600080fd5b506103be600e5481565b6040519081526020015b60405180910390f35b3480156103dd57600080fd5b506103be60115481565b3480156103f357600080fd5b506103fc610b6f565b6040516103c89190612fff565b34801561041557600080fd5b50610429610424366004613069565b610c01565b60405190151581526020016103c8565b34801561044557600080fd5b506103be600d5481565b34801561045b57600080fd5b5060085461046f906001600160a01b031681565b6040516001600160a01b0390911681526020016103c8565b34801561049357600080fd5b506002546103be565b3480156104a857600080fd5b5060085461042990600160b81b900460ff1681565b3480156104c957600080fd5b506104296104d8366004613095565b60156020526000908152604090205460ff1681565b3480156104f957600080fd5b50610429610508366004613095565b60166020526000908152604090205460ff1681565b34801561052957600080fd5b506104296105383660046130b2565b610c18565b34801561054957600080fd5b50601b5461046f906001600160a01b031681565b34801561056957600080fd5b50604051600981526020016103c8565b34801561058557600080fd5b506103a66105943660046130f3565b610c81565b3480156105a557600080fd5b5060085461042990600160c81b900460ff1681565b3480156105c657600080fd5b506104296105d5366004613069565b610cb0565b3480156105e657600080fd5b506103a66105f536600461311a565b610ce6565b34801561060657600080fd5b50601a5461046f906001600160a01b031681565b34801561062657600080fd5b50610429610635366004613095565b6001600160a01b031660009081526017602052604090205460ff1690565b34801561065f57600080fd5b506103a661066e366004613153565b610d3b565b34801561067f57600080fd5b506103be60105481565b34801561069557600080fd5b506103a66106a4366004613095565b610dca565b3480156106b557600080fd5b506103a66106c4366004613095565b610e16565b3480156106d557600080fd5b506103be600c5481565b3480156106eb57600080fd5b506103be6106fa366004613095565b6110b4565b34801561070b57600080fd5b506103a66110cf565b34801561072057600080fd5b506103a661072f366004613175565b611146565b34801561074057600080fd5b506103a661074f3660046131a1565b6111a8565b34801561076057600080fd5b5060085461042990600160a81b900460ff1681565b34801561078157600080fd5b506005546001600160a01b031661046f565b34801561079f57600080fd5b506103a66107ae3660046131be565b6111f0565b3480156107bf57600080fd5b506103fc611320565b3480156107d457600080fd5b506103be600b5481565b3480156107ea57600080fd5b506103a66107f936600461311a565b61132f565b34801561080a57600080fd5b5060085461042990600160c01b900460ff1681565b34801561082b57600080fd5b5061042961083a366004613069565b611400565b34801561084b57600080fd5b5061042961085a366004613069565b61144f565b34801561086b57600080fd5b5061042961087a366004613095565b60186020526000908152604090205460ff1681565b34801561089b57600080fd5b506007546103be565b3480156108b057600080fd5b506103a66108bf3660046131ec565b61145c565b3480156108d057600080fd5b506103be60135481565b3480156108e657600080fd5b506103a66108f536600461311a565b6114cb565b34801561090657600080fd5b506103a6610915366004613069565b611554565b34801561092657600080fd5b506103a661093536600461322e565b611595565b34801561094657600080fd5b50601c5461046f906001600160a01b031681565b34801561096657600080fd5b506109a7610975366004613095565b601460205260009081526040902080546001820154600283015460038401546004909401549293919290919060ff1685565b6040805195865260208601949094529284019190915260608301521515608082015260a0016103c8565b3480156109dd57600080fd5b506103a6611671565b3480156109f257600080fd5b506103be60095481565b348015610a0857600080fd5b506103a6610a173660046130f3565b611728565b348015610a2857600080fd5b506103be610a373660046131be565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a6e57600080fd5b5061046f610a7d3660046130f3565b6117ad565b348015610a8e57600080fd5b506103be600a5481565b348015610aa457600080fd5b506103be60125481565b348015610aba57600080fd5b506103a66117d7565b348015610acf57600080fd5b506103be611883565b348015610ae457600080fd5b506103a6610af3366004613095565b611973565b348015610b0457600080fd5b5060085461042990600160b01b900460ff1681565b6005546001600160a01b03163314610b4c5760405162461bcd60e51b8152600401610b43906132a9565b60405180910390fd5b6008805460ff60b01b1916600160b01b179055610b6a426000611a4c565b601355565b606060038054610b7e906132de565b80601f0160208091040260200160405190810160405280929190818152602001828054610baa906132de565b8015610bf75780601f10610bcc57610100808354040283529160200191610bf7565b820191906000526020600020905b815481529060010190602001808311610bda57829003601f168201915b5050505050905090565b6000610c0e338484611b73565b5060015b92915050565b6000610c25848484611c98565b610c778433610c728560405180606001604052806028815260200161364d602891396001600160a01b038a166000908152600160209081526040808320338452909152902054919061271b565b611b73565b5060019392505050565b6005546001600160a01b03163314610cab5760405162461bcd60e51b8152600401610b43906132a9565b600955565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610c0e918590610c729086611a4c565b6005546001600160a01b03163314610d105760405162461bcd60e51b8152600401610b43906132a9565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d655760405162461bcd60e51b8152600401610b43906132a9565b600b829055600c819055610d798282611a4c565b600d819055600b54600c546040805192835260208301919091528101919091527f9fef908e44cc0f51b9e9f7fd26bc506a50448657da0dc10a9661e37bc1c4a3929060600160405180910390a15050565b6005546001600160a01b03163314610df45760405162461bcd60e51b8152600401610b43906132a9565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610e405760405162461bcd60e51b8152600401610b43906132a9565b6008546001600160a01b0382811691161415610eb15760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e3a2054686520726f7574657220616c7265616479206861732074686044820152696174206164647265737360b01b6064820152608401610b43565b6008546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600880546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b815290516000929163c45a0155916004808301926020929190829003018186803b158015610f4357600080fd5b505afa158015610f57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7b9190613319565b6001600160a01b031663c9c6539630600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610fd857600080fd5b505afa158015610fec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110109190613319565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561105857600080fd5b505af115801561106c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110909190613319565b601a80546001600160a01b0319166001600160a01b03929092169190911790555050565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b031633146110f95760405162461bcd60e51b8152600401610b43906132a9565b600554600680546001600160a01b0319166001600160a01b03909216918217905560405160009190600080516020613675833981519152908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146111705760405162461bcd60e51b8152600401610b43906132a9565b61117e83633b9aca0061334c565b60105561118f82633b9aca0061334c565b6011556111a081633b9aca0061334c565b601255505050565b6005546001600160a01b031633146111d25760405162461bcd60e51b8152600401610b43906132a9565b60088054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b0316331461121a5760405162461bcd60e51b8152600401610b43906132a9565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b15801561125c57600080fd5b505afa158015611270573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611294919061336b565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb90604401602060405180830381600087803b1580156112e257600080fd5b505af11580156112f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131a9190613384565b50505050565b606060048054610b7e906132de565b6005546001600160a01b031633146113595760405162461bcd60e51b8152600401610b43906132a9565b601a546001600160a01b03838116911614156113f25760405162461bcd60e51b815260206004820152604c60248201527f546f6b656e3a205468652050616e63616b655377617020706169722063616e6e60448201527f6f742062652072656d6f7665642066726f6d206175746f6d617465644d61726b60648201526b65744d616b6572506169727360a01b608482015260a401610b43565b6113fc8282612755565b5050565b6000610c0e3384610c7285604051806060016040528060258152602001613695602591393360009081526001602090815260408083206001600160a01b038d168452909152902054919061271b565b6000610c0e338484611c98565b6005546001600160a01b031633146114865760405162461bcd60e51b8152600401610b43906132a9565b604183111561149457600080fd5b6008805461ffff60b81b1916600160b81b9315159390930260ff60c01b191692909217600160c01b91151591909102179055600e55565b6005546001600160a01b031633146114f55760405162461bcd60e51b8152600401610b43906132a9565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461157e5760405162461bcd60e51b8152600401610b43906132a9565b6113fc8261159083633b9aca0061334c565b61283e565b6005546001600160a01b031633146115bf5760405162461bcd60e51b8152600401610b43906132a9565b60005b828110156116305781601760008686858181106115e1576115e16133a1565b90506020020160208101906115f69190613095565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611628816133b7565b9150506115c2565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b35838383604051611664939291906133d2565b60405180910390a1505050565b6006546001600160a01b031633146116d75760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610b43565b6006546005546040516001600160a01b03928316929091169060008051602061367583398151915290600090a3600654600580546001600160a01b0319166001600160a01b03909216919091179055565b6005546001600160a01b031633146117525760405162461bcd60e51b8152600401610b43906132a9565b60058054600680546001600160a01b03199081166001600160a01b03841617909155169055611781814261342b565b6007556005546040516000916001600160a01b031690600080516020613675833981519152908390a350565b601981815481106117bd57600080fd5b6000918252602090912001546001600160a01b0316905081565b6005546001600160a01b031633146118015760405162461bcd60e51b8152600401610b43906132a9565b60005b60195481101561188057600060198281548110611823576118236133a1565b60009182526020822001546001600160a01b03169150611842826110b4565b905061184e8282612848565b506001600160a01b03166000908152601660205260409020805460ff1916905580611878816133b7565b915050611804565b50565b601a5460408051630240bc6b60e21b815290516000926001600160a01b031691839182918491630902f1ac91600480820192606092909190829003018186803b1580156118cf57600080fd5b505afa1580156118e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611907919061345f565b506001600160701b0391821693501690508181111561192257905b80611930576000935061196d565b8161194182655af3107a400061334c565b1115611968576119618261195b83655af3107a400061334c565b90611ab2565b935061196d565b600093505b50505090565b6005546001600160a01b0316331461199d5760405162461bcd60e51b8152600401610b43906132a9565b6001600160a01b038116611a025760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b43565b6005546040516001600160a01b0380841692169060008051602061367583398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600080611a59838561342b565b905083811015611aab5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b43565b9392505050565b6000611aab83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612954565b600082611b0357506000610c12565b6000611b0f838561334c565b905082611b1c85836134a4565b14611aab5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b43565b6001600160a01b038316611bd55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b43565b6001600160a01b038216611c365760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b43565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611cbe5760405162461bcd60e51b8152600401610b43906134c6565b6001600160a01b038216611ce45760405162461bcd60e51b8152600401610b439061350b565b6001600160a01b03821660009081526015602052604090205460ff16158015611d2657506001600160a01b03831660009081526015602052604090205460ff16155b611d8b5760405162461bcd60e51b815260206004820152603060248201527f596f75722061646472657373206f7220726563697069656e742061646472657360448201526f1cc81a5cc8189b1858dadb1a5cdd195960821b6064820152608401610b43565b80611da157611d9c83836000612982565b505050565b6000611dac306110b4565b90506000600a5482101590506000818015611dd15750600854600160a01b900460ff16155b8015611df657506001600160a01b03861660009081526018602052604090205460ff16155b8015611e1057506005546001600160a01b03878116911614155b8015611e2a57506005546001600160a01b03868116911614155b15611f18576008805460ff60a01b1916600160a01b179055600d54600c54600091611e5a9161195b908790611af4565b9050611e6581612a8b565b601c54604080518381526001600160a01b0390921660208301527feafa9125fd4b0edd379b9ab67721e8f4eb26bc018c352092ccac54a89ac6fed7910160405180910390a16000611ec7600d5461195b600b5488611af490919063ffffffff16565b9050611ed281612acd565b6040518181527f61d10b3f17a77466a4241488e37c886fa1637f9863ae76dd5076a80a932bc4eb9060200160405180910390a150506008805460ff60a01b191690555060015b6008546001600160a01b03871660009081526017602052604090205460ff600160a01b909204821615911680611f6657506001600160a01b03861660009081526017602052604090205460ff165b15611f6f575060005b8015612707576001600160a01b03871660009081526018602052604090205460ff161561224957600854600160b01b900460ff16611fef5760405162461bcd60e51b815260206004820152601860248201527f546f6b656e2069736e2774206c61756e636865642079657400000000000000006044820152606401610b43565b6010548511156120525760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610b43565b6012548561205f886110b4565b612069919061342b565b11156120c35760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610b43565b601354421180159081906120f057506001600160a01b03871660009081526016602052604090205460ff16155b1561214157601980546001810182556000919091527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c96950180546001600160a01b0319166001600160a01b0389161790555b600854600160a81b900460ff16801561217357506001600160a01b03871660009081526016602052604090205460ff16155b156121c457601980546001810182556000919091527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c96950180546001600160a01b0319166001600160a01b0389161790555b600854600160c01b900460ff16151560011415612202576121e58787612b54565b6001600160a01b0388166000908152601460205260409020600201555b604080518781526001600160a01b03891660208201527f1df6c66a1a6eb6b0b6a23930c6ec94664e676e5d72f819a20a11e6c54540fa42910160405180910390a1506125a7565b6001600160a01b03861660009081526018602052604090205460ff16156124a8576001600160a01b03871660009081526016602052604090205460ff16156122c45760405162461bcd60e51b815260206004820152600e60248201526d2cb7ba9030b9329039b734b832b960911b6044820152606401610b43565b60115485111561233c5760405162461bcd60e51b815260206004820152603a60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d617853656c6c5472616e73616374696f6e416d6f756e742e0000000000006064820152608401610b43565b600854600160c81b900460ff161515600114801561237657506001600160a01b03871660009081526014602052604090206004015460ff16155b1561242e576000612386886110b4565b9050600281111561242c5761239c816002611ab2565b8611156123a857600080fd5b6001600160a01b038816600090815260146020526040812060030180548892906123d390849061342b565b909155506123e49050816003611ab2565b6001600160a01b0389166000908152601460205260409020600301541061242c576001600160a01b0388166000908152601460205260409020600401805460ff191660011790555b505b6124418561243b896110b4565b90612be5565b612462576001600160a01b0387166000908152601460205260408120600201555b604080518681526001600160a01b03891660208201527f845540a7f3f9afb8980bffef1e5a59039c43bbd45de62cc2ce5def5830465f04910160405180910390a16125a7565b6001600160a01b03871660009081526017602052604090205460ff161580156124ea57506001600160a01b03861660009081526017602052604090205460ff16155b156125a757600854600160c01b900460ff1615156001141561252d576125108686612b54565b6001600160a01b0387166000908152601460205260409020600201555b61253a8561243b896110b4565b61255b576001600160a01b0387166000908152601460205260408120600201555b604080516001600160a01b03808a168252881660208201529081018690527f38e8feed990acd7f5210170f614d354c7a0485670b9a787e9e00f8fca640d5749060600160405180910390a15b60006125c3606461195b600d5489611af490919063ffffffff16565b6001600160a01b03881660009081526018602052604090205490915060ff1615612604576125f7606461195b886001611af4565b612601908261342b565b90505b600854600090600160b81b900460ff161515600114801561263e57506001600160a01b03891660009081526017602052604090205460ff16155b801561266257506001600160a01b03881660009081526018602052604090205460ff165b156126da5760006001851515141561269557600f548711612684576001612692565b600f54612692908890611ab2565b90505b6001600160a01b038a166000908152601460205260409020600201546126bc908983612c27565b91508282116126cc5760006126d6565b6126d6838361354e565b9150505b6126ee6126e7828461342b565b8890612be5565b965061270489306126ff848661342b565b612982565b50505b612712878787612982565b50505050505050565b6000818484111561273f5760405162461bcd60e51b8152600401610b439190612fff565b50600061274c848661354e565b95945050505050565b6001600160a01b03821660009081526018602052604090205460ff16151581151514156127ea5760405162461bcd60e51b815260206004820152603f60248201527f546f6b656e3a204175746f6d61746564206d61726b6574206d616b657220706160448201527f697220697320616c72656164792073657420746f20746861742076616c7565006064820152608401610b43565b6001600160a01b038216600081815260186020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6113fc8282612cfc565b6001600160a01b0382166128a85760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610b43565b6128e581604051806060016040528060228152602001613605602291396001600160a01b038516600090815260208190526040902054919061271b565b6001600160a01b03831660009081526020819052604090205560025461290b9082612be5565b6002556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b600081836129755760405162461bcd60e51b8152600401610b439190612fff565b50600061274c84866134a4565b6001600160a01b0383166129a85760405162461bcd60e51b8152600401610b43906134c6565b6001600160a01b0382166129ce5760405162461bcd60e51b8152600401610b439061350b565b612a0b81604051806060016040528060268152602001613627602691396001600160a01b038616600090815260208190526040902054919061271b565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612a3a9082611a4c565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611c8b565b612a9481612dd3565b601c546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156113fc573d6000803e3d6000fd5b6000612ada826002611ab2565b90506000612ae88383612be5565b905047612af483612dd3565b6000612b004783612be5565b9050612b0c8382612f3c565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050505050565b600080612b5f611883565b6001600160a01b038516600090815260146020526040812060020154919250612b87866110b4565b9050811580612b94575080155b15612ba157829350612bdc565b84612bae57819350612bdc565b612bd9612bbb868361342b565b612bc5878661334c565b612bcf848661334c565b61195b919061342b565b93505b50505092915050565b6000611aab83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061271b565b600080612c32611883565b90506000851580612c435750606485105b15612c515760009250612cf3565b81612c5d87600a61342b565b1015612cee576064612c88612c81612c7a600261195b8b8861354e565b8590611ab2565b8290611ab2565b915084600e541115612ce35784600e54612ca2919061354e565b821015612caf5781612cbd565b84600e54612cbd919061354e565b915060008211612cce576000612cdc565b612cdc8161195b8885611af4565b9350612ce8565b600093505b50612cf3565b600092505b50509392505050565b6001600160a01b038216612d525760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610b43565b600254612d5f9082611a4c565b6002556001600160a01b038216600090815260208190526040902054612d859082611a4c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101612948565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612e0857612e086133a1565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612e5c57600080fd5b505afa158015612e70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e949190613319565b81600181518110612ea757612ea76133a1565b6001600160a01b039283166020918202929092010152600854612ecd9130911684611b73565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac94790612f06908590600090869030904290600401613565565b600060405180830381600087803b158015612f2057600080fd5b505af1158015612f34573d6000803e3d6000fd5b505050505050565b600854612f549030906001600160a01b031684611b73565b600854601b5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b158015612fbf57600080fd5b505af1158015612fd3573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ff891906135d6565b5050505050565b600060208083528351808285015260005b8181101561302c57858101830151858201604001528201613010565b8181111561303e576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461188057600080fd5b6000806040838503121561307c57600080fd5b823561308781613054565b946020939093013593505050565b6000602082840312156130a757600080fd5b8135611aab81613054565b6000806000606084860312156130c757600080fd5b83356130d281613054565b925060208401356130e281613054565b929592945050506040919091013590565b60006020828403121561310557600080fd5b5035919050565b801515811461188057600080fd5b6000806040838503121561312d57600080fd5b823561313881613054565b915060208301356131488161310c565b809150509250929050565b6000806040838503121561316657600080fd5b50508035926020909101359150565b60008060006060848603121561318a57600080fd5b505081359360208301359350604090920135919050565b6000602082840312156131b357600080fd5b8135611aab8161310c565b600080604083850312156131d157600080fd5b82356131dc81613054565b9150602083013561314881613054565b60008060006060848603121561320157600080fd5b8335925060208401356132138161310c565b915060408401356132238161310c565b809150509250925092565b60008060006040848603121561324357600080fd5b833567ffffffffffffffff8082111561325b57600080fd5b818601915086601f83011261326f57600080fd5b81358181111561327e57600080fd5b8760208260051b850101111561329357600080fd5b602092830195509350508401356132238161310c565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806132f257607f821691505b6020821081141561331357634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561332b57600080fd5b8151611aab81613054565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561336657613366613336565b500290565b60006020828403121561337d57600080fd5b5051919050565b60006020828403121561339657600080fd5b8151611aab8161310c565b634e487b7160e01b600052603260045260246000fd5b60006000198214156133cb576133cb613336565b5060010190565b6040808252810183905260008460608301825b868110156134155782356133f881613054565b6001600160a01b03168252602092830192909101906001016133e5565b5080925050508215156020830152949350505050565b6000821982111561343e5761343e613336565b500190565b80516001600160701b038116811461345a57600080fd5b919050565b60008060006060848603121561347457600080fd5b61347d84613443565b925061348b60208501613443565b9150604084015163ffffffff8116811461322357600080fd5b6000826134c157634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60008282101561356057613560613336565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156135b55784516001600160a01b031683529383019391830191600101613590565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156135eb57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122078f0ba5efc4041068529cded6481ace72997d16b35bf6d5afa126ea449db467464736f6c6343000808003300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140000000000000000000000000f967de85141d31c96dfd5cb943194b322ae1b4c0000000000000000000000000f967de85141d31c96dfd5cb943194b322ae1b4c0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d