0x60806040526040518060400160405280600781526020017f4e696b2055534400000000000000000000000000000000000000000000000000815250600090816200004a9190620003b8565b506040518060400160405280600481526020017f4e5553440000000000000000000000000000000000000000000000000000000081525060019081620000919190620003b8565b506012600260006101000a81548160ff021916908360ff160217905550600260009054906101000a900460ff1660ff16600a620000cf919062000622565b642e90edd000620000e1919062000673565b600355348015620000f157600080fd5b50600354600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620006be565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620001c057607f821691505b602082108103620001d657620001d562000178565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620002407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000201565b6200024c868362000201565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000299620002936200028d8462000264565b6200026e565b62000264565b9050919050565b6000819050919050565b620002b58362000278565b620002cd620002c482620002a0565b8484546200020e565b825550505050565b600090565b620002e4620002d5565b620002f1818484620002aa565b505050565b5b8181101562000319576200030d600082620002da565b600181019050620002f7565b5050565b601f82111562000368576200033281620001dc565b6200033d84620001f1565b810160208510156200034d578190505b620003656200035c85620001f1565b830182620002f6565b50505b505050565b600082821c905092915050565b60006200038d600019846008026200036d565b1980831691505092915050565b6000620003a883836200037a565b9150826002028217905092915050565b620003c3826200013e565b67ffffffffffffffff811115620003df57620003de62000149565b5b620003eb8254620001a7565b620003f88282856200031d565b600060209050601f8311600181146200043057600084156200041b578287015190505b6200042785826200039a565b86555062000497565b601f1984166200044086620001dc565b60005b828110156200046a5784890151825560018201915060208501945060208101905062000443565b868310156200048a578489015162000486601f8916826200037a565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200052d578086048111156200050557620005046200049f565b5b6001851615620005155780820291505b80810290506200052585620004ce565b9450620004e5565b94509492505050565b6000826200054857600190506200061b565b816200055857600090506200061b565b81600181146200057157600281146200057c57620005b2565b60019150506200061b565b60ff8411156200059157620005906200049f565b5b8360020a915084821115620005ab57620005aa6200049f565b5b506200061b565b5060208310610133831016604e8410600b8410161715620005ec5782820a905083811115620005e657620005e56200049f565b5b6200061b565b620005fb8484846001620004db565b925090508184048111156200061557620006146200049f565b5b81810290505b9392505050565b60006200062f8262000264565b91506200063c8362000264565b92506200066b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000536565b905092915050565b6000620006808262000264565b91506200068d8362000264565b92508282026200069d8162000264565b91508282048414831517620006b757620006b66200049f565b5b5092915050565b610cf580620006ce6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461013457806370a082311461015257806395d89b4114610182578063a9059cbb146101a0578063dd62ed3e146101d057610093565b806306fdde0314610098578063095ea7b3146100b657806318160ddd146100e657806323b872dd14610104575b600080fd5b6100a0610200565b6040516100ad919061089e565b60405180910390f35b6100d060048036038101906100cb9190610959565b61028e565b6040516100dd91906109b4565b60405180910390f35b6100ee6102a5565b6040516100fb91906109de565b60405180910390f35b61011e600480360381019061011991906109f9565b6102ab565b60405161012b91906109b4565b60405180910390f35b61013c610496565b6040516101499190610a68565b60405180910390f35b61016c60048036038101906101679190610a83565b6104a9565b60405161017991906109de565b60405180910390f35b61018a6104c1565b604051610197919061089e565b60405180910390f35b6101ba60048036038101906101b59190610959565b61054f565b6040516101c791906109b4565b60405180910390f35b6101ea60048036038101906101e59190610ab0565b6105e8565b6040516101f791906109de565b60405180910390f35b6000805461020d90610b1f565b80601f016020809104026020016040519081016040528092919081815260200182805461023990610b1f565b80156102865780601f1061025b57610100808354040283529160200191610286565b820191906000526020600020905b81548152906001019060200180831161026957829003601f168201915b505050505081565b600061029b33848461060d565b6001905092915050565b60035481565b600081600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561032f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161032690610b9c565b60405180910390fd5b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156103ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e590610c08565b60405180910390fd5b6103f98484846106f8565b61048b843384600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546104869190610c57565b61060d565b600190509392505050565b600260009054906101000a900460ff1681565b60046020528060005260406000206000915090505481565b600180546104ce90610b1f565b80601f01602080910402602001604051908101604052809291908181526020018280546104fa90610b1f565b80156105475780601f1061051c57610100808354040283529160200191610547565b820191906000526020600020905b81548152906001019060200180831161052a57829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156105d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ca90610b9c565b60405180910390fd5b6105de3384846106f8565b6001905092915050565b6005602052816000526040600020602052806000526040600020600091509150505481565b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516106eb91906109de565b60405180910390a3505050565b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107479190610c57565b9250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461079d9190610c8b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161080191906109de565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561084857808201518184015260208101905061082d565b60008484015250505050565b6000601f19601f8301169050919050565b60006108708261080e565b61087a8185610819565b935061088a81856020860161082a565b61089381610854565b840191505092915050565b600060208201905081810360008301526108b88184610865565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006108f0826108c5565b9050919050565b610900816108e5565b811461090b57600080fd5b50565b60008135905061091d816108f7565b92915050565b6000819050919050565b61093681610923565b811461094157600080fd5b50565b6000813590506109538161092d565b92915050565b600080604083850312156109705761096f6108c0565b5b600061097e8582860161090e565b925050602061098f85828601610944565b9150509250929050565b60008115159050919050565b6109ae81610999565b82525050565b60006020820190506109c960008301846109a5565b92915050565b6109d881610923565b82525050565b60006020820190506109f360008301846109cf565b92915050565b600080600060608486031215610a1257610a116108c0565b5b6000610a208682870161090e565b9350506020610a318682870161090e565b9250506040610a4286828701610944565b9150509250925092565b600060ff82169050919050565b610a6281610a4c565b82525050565b6000602082019050610a7d6000830184610a59565b92915050565b600060208284031215610a9957610a986108c0565b5b6000610aa78482850161090e565b91505092915050565b60008060408385031215610ac757610ac66108c0565b5b6000610ad58582860161090e565b9250506020610ae68582860161090e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610b3757607f821691505b602082108103610b4a57610b49610af0565b5b50919050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000610b86601483610819565b9150610b9182610b50565b602082019050919050565b60006020820190508181036000830152610bb581610b79565b9050919050565b7f4e6f7420656e6f75676820616c6c6f77616e6365000000000000000000000000600082015250565b6000610bf2601483610819565b9150610bfd82610bbc565b602082019050919050565b60006020820190508181036000830152610c2181610be5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610c6282610923565b9150610c6d83610923565b9250828203905081811115610c8557610c84610c28565b5b92915050565b6000610c9682610923565b9150610ca183610923565b9250828201905080821115610cb957610cb8610c28565b5b9291505056fea264697066735822122044020c1d800877c738353724656434f52e6f4897c00a59db8bf5864abf48981964736f6c63430008120033