//
0x608060405260048054600160a01b60ff021916905534801561002057600080fd5b506040516020806117ca8339810180604052602081101561004057600080fd5b5051600180546001600160a01b031916331790819055604080516001600160a01b03929092168252517f47faea4248095943034a5272688739ee6f2c28c2ead4e3584b59a918ae530dac9181900360200190a1806001600160a01b031663d246699d6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156100ce57600080fd5b505af11580156100e2573d6000803e3d6000fd5b505050506040513d60208110156100f857600080fd5b5051151561016757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f46616b65416c69616e613a206973416c69616e612066616c7365000000000000604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055611634806101966000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c80636af04a57116100c35780638f4ffcb11161007c5780638f4ffcb1146103905780639b19251a14610455578063b047fb501461047b578063da6e920014610483578063df8de3e7146104a9578063e2ec6ec3146104cf57610158565b80636af04a57146102fd5780637108cd7614610305578063715879881461030d5780637b9417c81461033357806383d1f1aa146103595780638456cb591461038857610158565b80632ba73c15116101155780632ba73c1514610263578063382244f3146102895780633f4ba83a146102915780634e0a3379146102995780635c975abb146102bf5780635e35359e146102c757610158565b80630519ce791461015d5780630776c6fb146101815780630a0f8168146101a95780631589a4fd146101b157806324953eaa146101b9578063286dd3f51461023d575b600080fd5b61016561053f565b604080516001600160a01b039092168252519081900360200190f35b6101a76004803603602081101561019757600080fd5b50356001600160a01b031661054e565b005b61016561064c565b61016561065b565b610229600480360360208110156101cf57600080fd5b8101906020810181356401000000008111156101ea57600080fd5b8201836020820111156101fc57600080fd5b8035906020019184602083028401116401000000008311171561021e57600080fd5b50909250905061066a565b604080519115158252519081900360200190f35b6102296004803603602081101561025357600080fd5b50356001600160a01b0316610704565b6101a76004803603602081101561027957600080fd5b50356001600160a01b0316610767565b6101a7610865565b6101a7610920565b6101a7600480360360208110156102af57600080fd5b50356001600160a01b0316610a07565b610229610b05565b6101a7600480360360608110156102dd57600080fd5b506001600160a01b03813581169160208101359091169060400135610b15565b610165610c42565b610165610c51565b6101a76004803603602081101561032357600080fd5b50356001600160a01b0316610c60565b6102296004803603602081101561034957600080fd5b50356001600160a01b0316610d56565b6103766004803603602081101561036f57600080fd5b5035610db1565b60408051918252519081900360200190f35b6101a7610dbd565b6101a7600480360360808110156103a657600080fd5b6001600160a01b0382358116926020810135926040820135909216918101906080810160608201356401000000008111156103e057600080fd5b8201836020820111156103f257600080fd5b8035906020019184600183028401116401000000008311171561041457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610ea5945050505050565b6102296004803603602081101561046b57600080fd5b50356001600160a01b0316610f73565b610165610f88565b6102296004803603602081101561049957600080fd5b50356001600160a01b0316610f97565b6101a7600480360360208110156104bf57600080fd5b50356001600160a01b0316610fb6565b610229600480360360208110156104e557600080fd5b81019060208101813564010000000081111561050057600080fd5b82018360208201111561051257600080fd5b8035906020019184602083028401116401000000008311171561053457600080fd5b50909250905061118a565b6003546001600160a01b031681565b6001546001600160a01b0316331461059d5760408051600160e51b62461bcd0281526020600482015260076024820152600160c81b666e6f742063656f02604482015290519081900360640190fd5b6001600160a01b03811615156105f25760408051600160e51b62461bcd02815260206004820152600f60248201526001608c1b6e0616464722063616e277420626520302604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b03838116919091179182905560408051929091168252517f55b80fb4511e0b943ccc1f4339e36bb5c0bd9d8907412a7e15b2902740d34192916020908290030190a150565b6001546001600160a01b031681565b6006546001600160a01b031681565b6001546000906001600160a01b031633146106bc5760408051600160e51b62461bcd0281526020600482015260076024820152600160c81b666e6f742063656f02604482015290519081900360640190fd5b60005b828110156106fd576106eb8484838181106106d657fe5b905060200201356001600160a01b031661121d565b156106f557600191505b6001016106bf565b5092915050565b6001546000906001600160a01b031633146107565760408051600160e51b62461bcd0281526020600482015260076024820152600160c81b666e6f742063656f02604482015290519081900360640190fd5b61075f8261121d565b90505b919050565b6001546001600160a01b031633146107b65760408051600160e51b62461bcd0281526020600482015260076024820152600160c81b666e6f742063656f02604482015290519081900360640190fd5b6001600160a01b038116151561080b5760408051600160e51b62461bcd02815260206004820152600f60248201526001608c1b6e0616464722063616e277420626520302604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b03838116919091179182905560408051929091168252517faabebeb2ff97ad067c61c8502e6a2abb9994358e1df40b67dcb61981d5432181916020908290030190a150565b6002546001600160a01b031633146108c75760408051600160e51b62461bcd02815260206004820152601960248201527f796f7520617265206e6f74207468652063616e64696461746500000000000000604482015290519081900360640190fd5b600254600180546001600160a01b0319166001600160a01b0392831617908190556040805191909216815290517f47faea4248095943034a5272688739ee6f2c28c2ead4e3584b59a918ae530dac9181900360200190a1565b6001546001600160a01b0316331461096f5760408051600160e51b62461bcd0281526020600482015260076024820152600160c81b666e6f742063656f02604482015290519081900360640190fd5b600454600160a01b900460ff1615156109c25760408051600160e51b62461bcd02815260206004820152600a6024820152600160b21b691b9bdd081c185d5cd95902604482015290519081900360640190fd5b60048054600160a01b60ff02191690556040805133815290517faeb196d352664784d1900b0e7414a8face7d29f4dae8c4b0cf68ed477423bbf49181900360200190a1565b6001546001600160a01b03163314610a565760408051600160e51b62461bcd0281526020600482015260076024820152600160c81b666e6f742063656f02604482015290519081900360640190fd5b6001600160a01b0381161515610aab5760408051600160e51b62461bcd02815260206004820152600f60248201526001608c1b6e0616464722063616e277420626520302604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b03838116919091179182905560408051929091168252517f84b74c5bbb392e2b5031680a6778f6e49e0eed616d7f59d1b7cbe0dc06c814be916020908290030190a150565b600454600160a01b900460ff1681565b6001546001600160a01b03163314610b645760408051600160e51b62461bcd0281526020600482015260076024820152600160c81b666e6f742063656f02604482015290519081900360640190fd5b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610bc457600080fd5b505af1158015610bd8573d6000803e3d6000fd5b505050506040513d6020811015610bee57600080fd5b50511515610bf857fe5b6040805182815290516001600160a01b03808516923392918716917fc9e8848e763791df46dee01dfdd8f0eb58cd33dd15e0773146866af844e8f09b9181900360200190a4505050565b6005546001600160a01b031681565b6002546001600160a01b031681565b6001546001600160a01b03163314610caf5760408051600160e51b62461bcd0281526020600482015260076024820152600160c81b666e6f742063656f02604482015290519081900360640190fd5b600454600160a01b900460ff161515610d025760408051600160e51b62461bcd02815260206004820152600a6024820152600160b21b691b9bdd081c185d5cd95902604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f450db8da6efbe9c22f2347f7c2021231df1fc58d3ae9a2fa75d39fa4461993059181900360200190a150565b6001546000906001600160a01b03163314610da85760408051600160e51b62461bcd0281526020600482015260076024820152600160c81b666e6f742063656f02604482015290519081900360640190fd5b61075f826112eb565b600061075f33836113bd565b6001546001600160a01b03163314610e0c5760408051600160e51b62461bcd0281526020600482015260076024820152600160c81b666e6f742063656f02604482015290519081900360640190fd5b600454600160a01b900460ff1615610e5a5760408051600160e51b62461bcd0281526020600482015260066024820152600160d21b651c185d5cd95902604482015290519081900360640190fd5b60048054600160a01b60ff021916600160a01b1790556040805133815290517f5ee71a369c8672edded508e624ffc9257fa1ae6886ef32905c18e60196bca3999181900360200190a1565b602081015160018114610f025760408051600160e51b62461bcd02815260206004820152601960248201527f46616b65416c69616e613a20756e6b6e6f7720616374696f6e00000000000000604482015290519081900360640190fd5b8060011415610f6c576006546001600160a01b03848116911614610f5a57604051600160e51b62461bcd02815260040180806020018281038252604a8152602001806115bf604a913960600191505060405180910390fd5b6040820151610f6986826113bd565b50505b5050505050565b60006020819052908152604090205460ff1681565b6004546001600160a01b031681565b6001600160a01b031660009081526007602052604090205460ff161590565b6001546001600160a01b031633146110055760408051600160e51b62461bcd0281526020600482015260076024820152600160c81b666e6f742063656f02604482015290519081900360640190fd5b6001600160a01b0381161515611048576040513390303180156108fc02916000818181858888f19350505050158015611042573d6000803e3d6000fd5b50611187565b60408051600160e01b6370a08231028152306004820152905182916000916001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561109657600080fd5b505afa1580156110aa573d6000803e3d6000fd5b505050506040513d60208110156110c057600080fd5b505160408051600160e01b63a9059cbb0281523360048201526024810183905290519192506001600160a01b0384169163a9059cbb916044808201926020929091908290030181600087803b15801561111857600080fd5b505af115801561112c573d6000803e3d6000fd5b505050506040513d602081101561114257600080fd5b505060408051828152905133916001600160a01b038616917ff931edb47c50b4b4104c187b5814a9aef5f709e17e2ecf9617e860cacade929c9181900360200190a350505b50565b6001546000906001600160a01b031633146111dc5760408051600160e51b62461bcd0281526020600482015260076024820152600160c81b666e6f742063656f02604482015290519081900360640190fd5b60005b828110156106fd5761120b8484838181106111f657fe5b905060200201356001600160a01b03166112eb565b1561121557600191505b6001016111df565b6001546000906001600160a01b0316331461126f5760408051600160e51b62461bcd0281526020600482015260076024820152600160c81b666e6f742063656f02604482015290519081900360640190fd5b6001600160a01b03821660009081526020819052604090205460ff1615610762576001600160a01b03821660008181526020818152604091829020805460ff19169055815192835290517ff1abf01a1043b7c244d128e8595cf0c1d10743b022b03a02dffd8ca3bf729f5a9281900390910190a1506001919050565b6001546000906001600160a01b0316331461133d5760408051600160e51b62461bcd0281526020600482015260076024820152600160c81b666e6f742063656f02604482015290519081900360640190fd5b6001600160a01b03821660009081526020819052604090205460ff161515610762576001600160a01b03821660008181526020818152604091829020805460ff19166001179055815192835290517fd1bba68c128cc3f427e5831b3c6f99f480b6efa6b9e80c757768f6124158cc3f9281900390910190a1506001919050565b600454600090600160a01b900460ff161561140e5760408051600160e51b62461bcd0281526020600482015260066024820152600160d21b651c185d5cd95902604482015290519081900360640190fd5b6001600160a01b03831660009081526007602052604090205460ff161561147f5760408051600160e51b62461bcd02815260206004820181905260248201527f46616b65416c69616e613a20696e73756666696369656e742062616c616e6365604482015290519081900360640190fd5b60065460408051600160e11b6331a9108f0281526004810185905290516001600160a01b03808716931691636352211e916024808301926020929190829003018186803b1580156114cf57600080fd5b505afa1580156114e3573d6000803e3d6000fd5b505050506040513d60208110156114f957600080fd5b50516001600160a01b0316146115595760408051600160e51b62461bcd02815260206004820152601d60248201527f46616b65416c69616e613a206d75737420626520746865206f776e6572000000604482015290519081900360640190fd5b6001600160a01b038316600081815260076020908152604091829020805460ff19166001179055815185815290810185905281517fed5798771e3136d434956668758246d5528718456c9778ca2816f10ec50207b7929181900390910190a25091905056fe46616b65416c69616e613a20617070726f76616c20616e642077616e74206d696e742075736520616c69616e612c20627574207573656420746f6b656e2069736e277420416c69616e61a165627a7a723058206ec7336c383ae69251de12111a226737c46912b7c38dd6d31634bbbc6ab3a2240029000000000000000000000000ec0cd5c1d61943a195bca7b381dc60f9f545a540