0x608060405234801562000010575f80fd5b506040516200183a3803806200183a83398181016040528101906200003691906200031a565b6040518060400160405280601081526020017f4d6174766969656e6b6f20544f4b454e000000000000000000000000000000008152506040518060400160405280600381526020017f4d414100000000000000000000000000000000000000000000000000000000008152506e01ed09bead87c0378d8e64000000008260049081620000c39190620005ae565b508160059081620000d59190620005ae565b503360015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200012881336200013260201b60201c565b50505050620007a3565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620001c4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001bb90620006f0565b60405180910390fd5b620001d75f8284620002b060201b60201c565b8160025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546200022591906200073d565b92505081905550815f808282546200023e91906200073d565b925050819055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051620002a4919062000788565b60405180910390a35050565b505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620002e482620002b9565b9050919050565b620002f681620002d8565b811462000301575f80fd5b50565b5f815190506200031481620002eb565b92915050565b5f60208284031215620003325762000331620002b5565b5b5f620003418482850162000304565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620003c657607f821691505b602082108103620003dc57620003db62000381565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620004407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000403565b6200044c868362000403565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000496620004906200048a8462000464565b6200046d565b62000464565b9050919050565b5f819050919050565b620004b18362000476565b620004c9620004c0826200049d565b8484546200040f565b825550505050565b5f90565b620004df620004d1565b620004ec818484620004a6565b505050565b5b818110156200051357620005075f82620004d5565b600181019050620004f2565b5050565b601f82111562000562576200052c81620003e2565b6200053784620003f4565b8101602085101562000547578190505b6200055f6200055685620003f4565b830182620004f1565b50505b505050565b5f82821c905092915050565b5f620005845f198460080262000567565b1980831691505092915050565b5f6200059e838362000573565b9150826002028217905092915050565b620005b9826200034a565b67ffffffffffffffff811115620005d557620005d462000354565b5b620005e18254620003ae565b620005ee82828562000517565b5f60209050601f83116001811462000624575f84156200060f578287015190505b6200061b858262000591565b8655506200068a565b601f1984166200063486620003e2565b5f5b828110156200065d5784890151825560018201915060208501945060208101905062000636565b868310156200067d578489015162000679601f89168262000573565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f6e6f7420616e206f776e657221000000000000000000000000000000000000005f82015250565b5f620006d8600d8362000692565b9150620006e582620006a2565b602082019050919050565b5f6020820190508181035f8301526200070981620006ca565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620007498262000464565b9150620007568362000464565b925082820190508082111562000771576200077062000710565b5b92915050565b620007828162000464565b82525050565b5f6020820190506200079d5f83018462000777565b92915050565b61108980620007b15f395ff3fe608060405234801561000f575f80fd5b50600436106100a7575f3560e01c806370a082311161006f57806370a082311461013d57806394bf804d1461016d57806395d89b41146101895780639dc29fac146101a7578063a9059cbb146101c3578063dd62ed3e146101df576100a7565b806306fdde03146100ab578063095ea7b3146100c957806318160ddd146100e557806323b872dd14610103578063313ce5671461011f575b5f80fd5b6100b361020f565b6040516100c09190610c1d565b60405180910390f35b6100e360048036038101906100de9190610cce565b61029f565b005b6100ed6102ae565b6040516100fa9190610d1b565b60405180910390f35b61011d60048036038101906101189190610d34565b6102b6565b005b610127610569565b6040516101349190610d1b565b60405180910390f35b61015760048036038101906101529190610d84565b610571565b6040516101649190610d1b565b60405180910390f35b61018760048036038101906101829190610daf565b6105b7565b005b610191610724565b60405161019e9190610c1d565b60405180910390f35b6101c160048036038101906101bc9190610cce565b6107b4565b005b6101dd60048036038101906101d89190610cce565b6108bc565b005b6101f960048036038101906101f49190610ded565b610a25565b6040516102069190610d1b565b60405180910390f35b60606004805461021e90610e58565b80601f016020809104026020016040519081016040528092919081815260200182805461024a90610e58565b80156102955780601f1061026c57610100808354040283529160200191610295565b820191905f5260205f20905b81548152906001019060200180831161027857829003601f168201915b5050505050905090565b6102aa338383610aa7565b5050565b5f8054905090565b8281806102c283610571565b1015610303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fa90610ed2565b60405180910390fd5b61030e858585610b8e565b8260035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156103c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c090610f3a565b60405180910390fd5b8260035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546104509190610f85565b925050819055508260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546104a39190610f85565b925050819055508260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546104f69190610fb8565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161055a9190610d1b565b60405180910390a35050505050565b5f6012905090565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063d90611035565b60405180910390fd5b6106515f8284610b8e565b8160025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461069d9190610fb8565b92505081905550815f808282546106b49190610fb8565b925050819055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107189190610d1b565b60405180910390a35050565b60606005805461073390610e58565b80601f016020809104026020016040519081016040528092919081815260200182805461075f90610e58565b80156107aa5780601f10610781576101008083540402835291602001916107aa565b820191905f5260205f20905b81548152906001019060200180831161078d57829003601f168201915b5050505050905090565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a90611035565b60405180910390fd5b61084e825f83610b8e565b8060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461089a9190610f85565b92505081905550805f808282546108b19190610f85565b925050819055505050565b3381806108c883610571565b1015610909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090090610ed2565b60405180910390fd5b610914338585610b8e565b8260025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109609190610f85565b925050819055508260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109b39190610fb8565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610a179190610d1b565b60405180910390a350505050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f6e11fb1b7f119e3f2fa29896ef5fdf8b8a2d0d4df6fe90ba8668e7d8b2ffa25e83604051610b819190610d1b565b60405180910390a3505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610bca578082015181840152602081019050610baf565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610bef82610b93565b610bf98185610b9d565b9350610c09818560208601610bad565b610c1281610bd5565b840191505092915050565b5f6020820190508181035f830152610c358184610be5565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610c6a82610c41565b9050919050565b610c7a81610c60565b8114610c84575f80fd5b50565b5f81359050610c9581610c71565b92915050565b5f819050919050565b610cad81610c9b565b8114610cb7575f80fd5b50565b5f81359050610cc881610ca4565b92915050565b5f8060408385031215610ce457610ce3610c3d565b5b5f610cf185828601610c87565b9250506020610d0285828601610cba565b9150509250929050565b610d1581610c9b565b82525050565b5f602082019050610d2e5f830184610d0c565b92915050565b5f805f60608486031215610d4b57610d4a610c3d565b5b5f610d5886828701610c87565b9350506020610d6986828701610c87565b9250506040610d7a86828701610cba565b9150509250925092565b5f60208284031215610d9957610d98610c3d565b5b5f610da684828501610c87565b91505092915050565b5f8060408385031215610dc557610dc4610c3d565b5b5f610dd285828601610cba565b9250506020610de385828601610c87565b9150509250929050565b5f8060408385031215610e0357610e02610c3d565b5b5f610e1085828601610c87565b9250506020610e2185828601610c87565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610e6f57607f821691505b602082108103610e8257610e81610e2b565b5b50919050565b7f6e6f7420656e6f75676820746f6b656e732100000000000000000000000000005f82015250565b5f610ebc601283610b9d565b9150610ec782610e88565b602082019050919050565b5f6020820190508181035f830152610ee981610eb0565b9050919050565b7f636865636b20616c6c6f77616e636521000000000000000000000000000000005f82015250565b5f610f24601083610b9d565b9150610f2f82610ef0565b602082019050919050565b5f6020820190508181035f830152610f5181610f18565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610f8f82610c9b565b9150610f9a83610c9b565b9250828203905081811115610fb257610fb1610f58565b5b92915050565b5f610fc282610c9b565b9150610fcd83610c9b565b9250828201905080821115610fe557610fe4610f58565b5b92915050565b7f6e6f7420616e206f776e657221000000000000000000000000000000000000005f82015250565b5f61101f600d83610b9d565b915061102a82610feb565b602082019050919050565b5f6020820190508181035f83015261104c81611013565b905091905056fea26469706673582212207daeebf16adabcccef2718d6248128e7cf956e2eac991d84fa0c13b20277d20d64736f6c634300081400330000000000000000000000002ff2270467c90366b10835b00ef39ee12437b75f