60806040523480156200001157600080fd5b5060405162001bad38038062001bad833981016040819052620000349162000190565b6040518060400160405280601781526020017f5265646265616e20436f66666565205265776172642031000000000000000000815250604051806040016040528060048152602001635243523160e01b8152508160029081620000989190620002f4565b506003620000a78282620002f4565b5050600160005550620000ba3362000128565b60016009558051620001125760405162461bcd60e51b815260206004820181905260248201527f5b4572726f725d2042617365205552492043616e6e6f7420426520426c616e6b604482015260640160405180910390fd5b600a620001208282620002f4565b5050620003c0565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215620001a457600080fd5b82516001600160401b0380821115620001bc57600080fd5b818501915085601f830112620001d157600080fd5b815181811115620001e657620001e66200017a565b604051601f8201601f19908116603f011681019083821181831017156200021157620002116200017a565b8160405282815288868487010111156200022a57600080fd5b600093505b828410156200024e57848401860151818501870152928501926200022f565b600086848301015280965050505050505092915050565b600181811c908216806200027a57607f821691505b6020821081036200029b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002ef57600081815260208120601f850160051c81016020861015620002ca5750805b601f850160051c820191505b81811015620002eb57828155600101620002d6565b5050505b505050565b81516001600160401b038111156200031057620003106200017a565b620003288162000321845462000265565b84620002a1565b602080601f831160018114620003605760008415620003475750858301515b600019600386901b1c1916600185901b178555620002eb565b600085815260208120601f198616915b82811015620003915788860151825594840194600190910190840162000370565b5085821015620003b05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6117dd80620003d06000396000f3fe60806040526004361061011f5760003560e01c80636352211e116100a0578063a22cb46511610064578063a22cb465146102f2578063b88d4fde14610312578063c87b56dd14610325578063e985e9c514610345578063f2fde38b1461036557600080fd5b80636352211e1461026a57806370a082311461028a578063715018a6146102aa5780638da5cb5b146102bf57806395d89b41146102dd57600080fd5b806323b872dd116100e757806323b872dd146101ef578063375a069a146102025780633ccfd60b1461022257806342842e0e1461023757806355f804b31461024a57600080fd5b806301ffc9a71461012457806306fdde0314610159578063081812fc1461017b578063095ea7b3146101b357806318160ddd146101c8575b600080fd5b34801561013057600080fd5b5061014461013f36600461111c565b610385565b60405190151581526020015b60405180910390f35b34801561016557600080fd5b5061016e6103d7565b6040516101509190611189565b34801561018757600080fd5b5061019b61019636600461119c565b610469565b6040516001600160a01b039091168152602001610150565b6101c66101c13660046111d1565b6104ad565b005b3480156101d457600080fd5b5060015460005403600019015b604051908152602001610150565b6101c66101fd3660046111fb565b61054d565b34801561020e57600080fd5b506101c661021d36600461119c565b6106e6565b34801561022e57600080fd5b506101c6610829565b6101c66102453660046111fb565b610940565b34801561025657600080fd5b506101c66102653660046112c3565b610a18565b34801561027657600080fd5b5061019b61028536600461119c565b610a9d565b34801561029657600080fd5b506101e16102a536600461130c565b610aa8565b3480156102b657600080fd5b506101c6610af7565b3480156102cb57600080fd5b506008546001600160a01b031661019b565b3480156102e957600080fd5b5061016e610b2d565b3480156102fe57600080fd5b506101c661030d366004611327565b610b3c565b6101c6610320366004611363565b610ba8565b34801561033157600080fd5b5061016e61034036600461119c565b610bf2565b34801561035157600080fd5b506101446103603660046113df565b610c50565b34801561037157600080fd5b506101c661038036600461130c565b610c7e565b60006301ffc9a760e01b6001600160e01b0319831614806103b657506380ac58cd60e01b6001600160e01b03198316145b806103d15750635b5e139f60e01b6001600160e01b03198316145b92915050565b6060600280546103e690611412565b80601f016020809104026020016040519081016040528092919081815260200182805461041290611412565b801561045f5780601f106104345761010080835404028352916020019161045f565b820191906000526020600020905b81548152906001019060200180831161044257829003601f168201915b5050505050905090565b600061047482610d19565b610491576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b60006104b882610a9d565b9050336001600160a01b038216146104f1576104d48133610c50565b6104f1576040516367d9dca160e11b815260040160405180910390fd5b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600061055882610d4e565b9050836001600160a01b0316816001600160a01b03161461058b5760405162a1148160e81b815260040160405180910390fd5b60008281526006602052604090208054338082146001600160a01b038816909114176105d8576105bb8633610c50565b6105d857604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b0385166105ff57604051633a954ecd60e21b815260040160405180910390fd5b801561060a57600082555b6001600160a01b038681166000908152600560205260408082208054600019019055918716808252919020805460010190554260a01b17600160e11b17600085815260046020526040812091909155600160e11b8416900361069c5760018401600081815260046020526040812054900361069a57600054811461069a5760008181526004602052604090208490555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b6008546001600160a01b031633146107195760405162461bcd60e51b81526004016107109061144c565b60405180910390fd5b60026009540361073b5760405162461bcd60e51b815260040161071090611481565b600260095532331461075f5760405162461bcd60e51b8152600401610710906114b8565b600154600054603c9183910360001901610779919061151d565b11156107c75760405162461bcd60e51b815260206004820152601860248201527f5b4572726f725d204d6178204d696e74205265616368656400000000000000006044820152606401610710565b600081116108175760405162461bcd60e51b815260206004820152601f60248201527f5b4572726f725d205175616e746974792063616e6e6f74206265207a65726f006044820152606401610710565b6108213382610dc4565b506001600955565b6008546001600160a01b031633146108535760405162461bcd60e51b81526004016107109061144c565b6002600954036108755760405162461bcd60e51b815260040161071090611481565b60026009553233146108995760405162461bcd60e51b8152600401610710906114b8565b60006108ad6008546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d80600081146108f7576040519150601f19603f3d011682016040523d82523d6000602084013e6108fc565b606091505b50509050806108215760405162461bcd60e51b815260206004820152601060248201526f5472616e73666572206661696c65642160801b6044820152606401610710565b6002600954036109625760405162461bcd60e51b815260040161071090611481565b60026009553233146109865760405162461bcd60e51b8152600401610710906114b8565b6008546001600160a01b038381169116146109f35760016109a683610aa8565b106109f35760405162461bcd60e51b815260206004820181905260248201527f54686973206164647265737320616c726561647920686173206120746f6b656e6044820152606401610710565b610a0e83838360405180602001604052806000815250610ba8565b5050600160095550565b6008546001600160a01b03163314610a425760405162461bcd60e51b81526004016107109061144c565b600260095403610a645760405162461bcd60e51b815260040161071090611481565b6002600955323314610a885760405162461bcd60e51b8152600401610710906114b8565b600a610a948282611576565b50506001600955565b60006103d182610d4e565b60006001600160a01b038216610ad1576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b031660009081526005602052604090205467ffffffffffffffff1690565b6008546001600160a01b03163314610b215760405162461bcd60e51b81526004016107109061144c565b610b2b6000610ec7565b565b6060600380546103e690611412565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610bb384848461054d565b6001600160a01b0383163b15610bec57610bcf84848484610f19565b610bec576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b60606000600a8054610c0390611412565b905011610c1f57604051806020016040528060008152506103d1565b600a610c2a83611005565b604051602001610c3b929190611636565b60405160208183030381529060405292915050565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b6008546001600160a01b03163314610ca85760405162461bcd60e51b81526004016107109061144c565b6001600160a01b038116610d0d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610710565b610d1681610ec7565b50565b600081600111158015610d2d575060005482105b80156103d1575050600090815260046020526040902054600160e01b161590565b60008180600111610dab57600054811015610dab5760008181526004602052604081205490600160e01b82169003610da9575b80600003610da2575060001901600081815260046020526040902054610d81565b9392505050565b505b604051636f96cda160e11b815260040160405180910390fd5b6000805490829003610de95760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b03831660008181526005602090815260408083208054680100000000000000018802019055848352600490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b818114610e9857808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600101610e60565b5081600003610eb957604051622e076360e81b815260040160405180910390fd5b60005550505050565b505050565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290610f4e9033908990889088906004016116cd565b6020604051808303816000875af1925050508015610f89575060408051601f3d908101601f19168201909252610f869181019061170a565b60015b610fe7573d808015610fb7576040519150601f19603f3d011682016040523d82523d6000602084013e610fbc565b606091505b508051600003610fdf576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b60608160000361102c5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611056578061104081611727565b915061104f9050600a83611756565b9150611030565b60008167ffffffffffffffff81111561107157611071611237565b6040519080825280601f01601f19166020018201604052801561109b576020820181803683370190505b5090505b8415610ffd576110b060018361176a565b91506110bd600a8661177d565b6110c890603061151d565b60f81b8183815181106110dd576110dd611791565b60200101906001600160f81b031916908160001a9053506110ff600a86611756565b945061109f565b6001600160e01b031981168114610d1657600080fd5b60006020828403121561112e57600080fd5b8135610da281611106565b60005b8381101561115457818101518382015260200161113c565b50506000910152565b60008151808452611175816020860160208601611139565b601f01601f19169290920160200192915050565b602081526000610da2602083018461115d565b6000602082840312156111ae57600080fd5b5035919050565b80356001600160a01b03811681146111cc57600080fd5b919050565b600080604083850312156111e457600080fd5b6111ed836111b5565b946020939093013593505050565b60008060006060848603121561121057600080fd5b611219846111b5565b9250611227602085016111b5565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561126857611268611237565b604051601f8501601f19908116603f0116810190828211818310171561129057611290611237565b816040528093508581528686860111156112a957600080fd5b858560208301376000602087830101525050509392505050565b6000602082840312156112d557600080fd5b813567ffffffffffffffff8111156112ec57600080fd5b8201601f810184136112fd57600080fd5b610ffd8482356020840161124d565b60006020828403121561131e57600080fd5b610da2826111b5565b6000806040838503121561133a57600080fd5b611343836111b5565b91506020830135801515811461135857600080fd5b809150509250929050565b6000806000806080858703121561137957600080fd5b611382856111b5565b9350611390602086016111b5565b925060408501359150606085013567ffffffffffffffff8111156113b357600080fd5b8501601f810187136113c457600080fd5b6113d38782356020840161124d565b91505092959194509250565b600080604083850312156113f257600080fd5b6113fb836111b5565b9150611409602084016111b5565b90509250929050565b600181811c9082168061142657607f821691505b60208210810361144657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252602f908201527f5b4572726f725d2046756e6374696f6e2063616e6e6f742062652063616c6c6560408201526e1908189e48184818dbdb9d1c9858dd608a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b808201808211156103d1576103d1611507565b601f821115610ec257600081815260208120601f850160051c810160208610156115575750805b601f850160051c820191505b818110156106de57828155600101611563565b815167ffffffffffffffff81111561159057611590611237565b6115a48161159e8454611412565b84611530565b602080601f8311600181146115d957600084156115c15750858301515b600019600386901b1c1916600185901b1785556106de565b600085815260208120601f198616915b82811015611608578886015182559484019460019091019084016115e9565b50858210156116265787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600080845461164481611412565b6001828116801561165c5760018114611671576116a0565b60ff19841687528215158302870194506116a0565b8860005260208060002060005b858110156116975781548a82015290840190820161167e565b50505082870194505b5050505083516116b4818360208801611139565b64173539b7b760d91b9101908152600501949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906117009083018461115d565b9695505050505050565b60006020828403121561171c57600080fd5b8151610da281611106565b60006001820161173957611739611507565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261176557611765611740565b500490565b818103818111156103d1576103d1611507565b60008261178c5761178c611740565b500690565b634e487b7160e01b600052603260045260246000fdfea264697066735822122075120a0945cc4aae9d05d22d7043398713fdd976172b7fe8a2fa01610c00d4fa64736f6c634300081100330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000005968747470733a2f2f62616679626569687165796f643732726c76676c746368796235696574323373697276797a663571357a78676334356862786e65706d35333773792e697066732e6e667473746f726167652e6c696e6b2f00000000000000