0x60806040526004361061004d575f3560e01c80631414a26114610050578063214ff459146100785780632296c6ce146100a057806364238eec146100ca5780638da5cb5b146100f25761004e565b5b005b34801561005b575f5ffd5b50610076600480360381019061007191906109f3565b61011c565b005b348015610083575f5ffd5b5061009e60048036038101906100999190610a50565b61030f565b005b3480156100ab575f5ffd5b506100b46104ff565b6040516100c19190610a93565b60405180910390f35b3480156100d5575f5ffd5b506100f060048036038101906100eb9190610b98565b610504565b005b3480156100fd575f5ffd5b50610106610753565b6040516101139190610c0b565b60405180910390f35b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101a290610c7e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610219576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161021090610ce6565b60405180910390fd5b6032828290501115610260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025790610d4e565b60405180910390fd5b5f5f90505b82829050811015610309575f73ffffffffffffffffffffffffffffffffffffffff1683838381811061029a57610299610d6c565b5b90506020020160208101906102af9190610d99565b73ffffffffffffffffffffffffffffffffffffffff16146102fc576102fb8383838181106102e0576102df610d6c565b5b90506020020160208101906102f59190610d99565b85610778565b5b8080600101915050610265565b50505050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461039e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039590610c7e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361040c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040390610ce6565b60405180910390fd5b5f4790505f8111610452576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044990610e0e565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff168260405161047790610e59565b5f6040518083038185875af1925050503d805f81146104b1576040519150601f19603f3d011682016040523d82523d5f602084013e6104b6565b606091505b50509050806104fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f190610eb7565b60405180910390fd5b505050565b603281565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058a90610c7e565b60405180910390fd5b5f8473ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105dd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106019190610eff565b90508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b385836040518363ffffffff1660e01b815260040161063e929190610f2a565b6020604051808303815f875af115801561065a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061067e9190610f86565b505f5f8573ffffffffffffffffffffffffffffffffffffffff1663baa2abde5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686865f5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016107079796959493929190610ff3565b60408051808303815f875af1158015610722573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107469190611060565b9150915050505050505050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016107b19190610c0b565b602060405180830381865afa9250505080156107eb57506040513d601f19601f820116820180604052508101906107e89190610eff565b60015b610840578173ffffffffffffffffffffffffffffffffffffffff167f8de7bc2e23ec1cd85c4a74e4585ca9366e331f89ae32be9a99c3eb552b2f777e604051610833906110e8565b60405180910390a261092c565b5f81111561092a578273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610883929190610f2a565b6020604051808303815f875af115801561089f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c39190610f86565b508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8210728e7c071f615b840ee026032693858fbcd5e5359e67e438c890f59e5620836040516109219190610a93565b60405180910390a35b505b5050565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61096182610938565b9050919050565b61097181610957565b811461097b575f5ffd5b50565b5f8135905061098c81610968565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f8401126109b3576109b2610992565b5b8235905067ffffffffffffffff8111156109d0576109cf610996565b5b6020830191508360208202830111156109ec576109eb61099a565b5b9250929050565b5f5f5f60408486031215610a0a57610a09610930565b5b5f610a178682870161097e565b935050602084013567ffffffffffffffff811115610a3857610a37610934565b5b610a448682870161099e565b92509250509250925092565b5f60208284031215610a6557610a64610930565b5b5f610a728482850161097e565b91505092915050565b5f819050919050565b610a8d81610a7b565b82525050565b5f602082019050610aa65f830184610a84565b92915050565b5f610ab682610938565b9050919050565b5f610ac782610aac565b9050919050565b610ad781610abd565b8114610ae1575f5ffd5b50565b5f81359050610af281610ace565b92915050565b5f610b0282610aac565b9050919050565b610b1281610af8565b8114610b1c575f5ffd5b50565b5f81359050610b2d81610b09565b92915050565b5f610b3d82610aac565b9050919050565b610b4d81610b33565b8114610b57575f5ffd5b50565b5f81359050610b6881610b44565b92915050565b610b7781610aac565b8114610b81575f5ffd5b50565b5f81359050610b9281610b6e565b92915050565b5f5f5f5f60808587031215610bb057610baf610930565b5b5f610bbd87828801610ae4565b9450506020610bce87828801610b1f565b9350506040610bdf87828801610b5a565b9250506060610bf087828801610b84565b91505092959194509250565b610c0581610aac565b82525050565b5f602082019050610c1e5f830184610bfc565b92915050565b5f82825260208201905092915050565b7f4e6f7420746865206f776e6572000000000000000000000000000000000000005f82015250565b5f610c68600d83610c24565b9150610c7382610c34565b602082019050919050565b5f6020820190508181035f830152610c9581610c5c565b9050919050565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f610cd0600f83610c24565b9150610cdb82610c9c565b602082019050919050565b5f6020820190508181035f830152610cfd81610cc4565b9050919050565b7f546f6f206d616e7920746f6b656e7300000000000000000000000000000000005f82015250565b5f610d38600f83610c24565b9150610d4382610d04565b602082019050919050565b5f6020820190508181035f830152610d6581610d2c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610dae57610dad610930565b5b5f610dbb84828501610b84565b91505092915050565b7f4e6f2045544820746f20776974686472617700000000000000000000000000005f82015250565b5f610df8601283610c24565b9150610e0382610dc4565b602082019050919050565b5f6020820190508181035f830152610e2581610dec565b9050919050565b5f81905092915050565b50565b5f610e445f83610e2c565b9150610e4f82610e36565b5f82019050919050565b5f610e6382610e39565b9150819050919050565b7f455448207472616e73666572206661696c6564000000000000000000000000005f82015250565b5f610ea1601383610c24565b9150610eac82610e6d565b602082019050919050565b5f6020820190508181035f830152610ece81610e95565b9050919050565b610ede81610a7b565b8114610ee8575f5ffd5b50565b5f81519050610ef981610ed5565b92915050565b5f60208284031215610f1457610f13610930565b5b5f610f2184828501610eeb565b91505092915050565b5f604082019050610f3d5f830185610bfc565b610f4a6020830184610a84565b9392505050565b5f8115159050919050565b610f6581610f51565b8114610f6f575f5ffd5b50565b5f81519050610f8081610f5c565b92915050565b5f60208284031215610f9b57610f9a610930565b5b5f610fa884828501610f72565b91505092915050565b5f819050919050565b5f819050919050565b5f610fdd610fd8610fd384610fb1565b610fba565b610a7b565b9050919050565b610fed81610fc3565b82525050565b5f60e0820190506110065f83018a610bfc565b6110136020830189610bfc565b6110206040830188610a84565b61102d6060830187610fe4565b61103a6080830186610fe4565b61104760a0830185610bfc565b61105460c0830184610a84565b98975050505050505050565b5f5f6040838503121561107657611075610930565b5b5f61108385828601610eeb565b925050602061109485828601610eeb565b9150509250929050565b7f546f6b656e207769746864726177616c206661696c65640000000000000000005f82015250565b5f6110d2601783610c24565b91506110dd8261109e565b602082019050919050565b5f6020820190508181035f8301526110ff816110c6565b905091905056fea264697066735822122070a5fb0449aa44fe1d49c82372ff76fab461e8c7b84582fb017f4419a5d5b11c64736f6c634300081e0033
0x608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073dac17f958d2ee523a2206206994597c13d831ec760015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4860025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561010a575f5ffd5b5073f9e8c85764c43d1c5dc35e3c5deb347c78b633b060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061113c8061016c5f395ff3fe60806040526004361061004d575f3560e01c80631414a26114610050578063214ff459146100785780632296c6ce146100a057806364238eec146100ca5780638da5cb5b146100f25761004e565b5b005b34801561005b575f5ffd5b50610076600480360381019061007191906109f3565b61011c565b005b348015610083575f5ffd5b5061009e60048036038101906100999190610a50565b61030f565b005b3480156100ab575f5ffd5b506100b46104ff565b6040516100c19190610a93565b60405180910390f35b3480156100d5575f5ffd5b506100f060048036038101906100eb9190610b98565b610504565b005b3480156100fd575f5ffd5b50610106610753565b6040516101139190610c0b565b60405180910390f35b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101a290610c7e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610219576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161021090610ce6565b60405180910390fd5b6032828290501115610260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025790610d4e565b60405180910390fd5b5f5f90505b82829050811015610309575f73ffffffffffffffffffffffffffffffffffffffff1683838381811061029a57610299610d6c565b5b90506020020160208101906102af9190610d99565b73ffffffffffffffffffffffffffffffffffffffff16146102fc576102fb8383838181106102e0576102df610d6c565b5b90506020020160208101906102f59190610d99565b85610778565b5b8080600101915050610265565b50505050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461039e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039590610c7e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361040c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040390610ce6565b60405180910390fd5b5f4790505f8111610452576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044990610e0e565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff168260405161047790610e59565b5f6040518083038185875af1925050503d805f81146104b1576040519150601f19603f3d011682016040523d82523d5f602084013e6104b6565b606091505b50509050806104fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f190610eb7565b60405180910390fd5b505050565b603281565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058a90610c7e565b60405180910390fd5b5f8473ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105dd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106019190610eff565b90508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b385836040518363ffffffff1660e01b815260040161063e929190610f2a565b6020604051808303815f875af115801561065a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061067e9190610f86565b505f5f8573ffffffffffffffffffffffffffffffffffffffff1663baa2abde5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686865f5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016107079796959493929190610ff3565b60408051808303815f875af1158015610722573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107469190611060565b9150915050505050505050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016107b19190610c0b565b602060405180830381865afa9250505080156107eb57506040513d601f19601f820116820180604052508101906107e89190610eff565b60015b610840578173ffffffffffffffffffffffffffffffffffffffff167f8de7bc2e23ec1cd85c4a74e4585ca9366e331f89ae32be9a99c3eb552b2f777e604051610833906110e8565b60405180910390a261092c565b5f81111561092a578273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610883929190610f2a565b6020604051808303815f875af115801561089f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c39190610f86565b508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8210728e7c071f615b840ee026032693858fbcd5e5359e67e438c890f59e5620836040516109219190610a93565b60405180910390a35b505b5050565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61096182610938565b9050919050565b61097181610957565b811461097b575f5ffd5b50565b5f8135905061098c81610968565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f8401126109b3576109b2610992565b5b8235905067ffffffffffffffff8111156109d0576109cf610996565b5b6020830191508360208202830111156109ec576109eb61099a565b5b9250929050565b5f5f5f60408486031215610a0a57610a09610930565b5b5f610a178682870161097e565b935050602084013567ffffffffffffffff811115610a3857610a37610934565b5b610a448682870161099e565b92509250509250925092565b5f60208284031215610a6557610a64610930565b5b5f610a728482850161097e565b91505092915050565b5f819050919050565b610a8d81610a7b565b82525050565b5f602082019050610aa65f830184610a84565b92915050565b5f610ab682610938565b9050919050565b5f610ac782610aac565b9050919050565b610ad781610abd565b8114610ae1575f5ffd5b50565b5f81359050610af281610ace565b92915050565b5f610b0282610aac565b9050919050565b610b1281610af8565b8114610b1c575f5ffd5b50565b5f81359050610b2d81610b09565b92915050565b5f610b3d82610aac565b9050919050565b610b4d81610b33565b8114610b57575f5ffd5b50565b5f81359050610b6881610b44565b92915050565b610b7781610aac565b8114610b81575f5ffd5b50565b5f81359050610b9281610b6e565b92915050565b5f5f5f5f60808587031215610bb057610baf610930565b5b5f610bbd87828801610ae4565b9450506020610bce87828801610b1f565b9350506040610bdf87828801610b5a565b9250506060610bf087828801610b84565b91505092959194509250565b610c0581610aac565b82525050565b5f602082019050610c1e5f830184610bfc565b92915050565b5f82825260208201905092915050565b7f4e6f7420746865206f776e6572000000000000000000000000000000000000005f82015250565b5f610c68600d83610c24565b9150610c7382610c34565b602082019050919050565b5f6020820190508181035f830152610c9581610c5c565b9050919050565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f610cd0600f83610c24565b9150610cdb82610c9c565b602082019050919050565b5f6020820190508181035f830152610cfd81610cc4565b9050919050565b7f546f6f206d616e7920746f6b656e7300000000000000000000000000000000005f82015250565b5f610d38600f83610c24565b9150610d4382610d04565b602082019050919050565b5f6020820190508181035f830152610d6581610d2c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610dae57610dad610930565b5b5f610dbb84828501610b84565b91505092915050565b7f4e6f2045544820746f20776974686472617700000000000000000000000000005f82015250565b5f610df8601283610c24565b9150610e0382610dc4565b602082019050919050565b5f6020820190508181035f830152610e2581610dec565b9050919050565b5f81905092915050565b50565b5f610e445f83610e2c565b9150610e4f82610e36565b5f82019050919050565b5f610e6382610e39565b9150819050919050565b7f455448207472616e73666572206661696c6564000000000000000000000000005f82015250565b5f610ea1601383610c24565b9150610eac82610e6d565b602082019050919050565b5f6020820190508181035f830152610ece81610e95565b9050919050565b610ede81610a7b565b8114610ee8575f5ffd5b50565b5f81519050610ef981610ed5565b92915050565b5f60208284031215610f1457610f13610930565b5b5f610f2184828501610eeb565b91505092915050565b5f604082019050610f3d5f830185610bfc565b610f4a6020830184610a84565b9392505050565b5f8115159050919050565b610f6581610f51565b8114610f6f575f5ffd5b50565b5f81519050610f8081610f5c565b92915050565b5f60208284031215610f9b57610f9a610930565b5b5f610fa884828501610f72565b91505092915050565b5f819050919050565b5f819050919050565b5f610fdd610fd8610fd384610fb1565b610fba565b610a7b565b9050919050565b610fed81610fc3565b82525050565b5f60e0820190506110065f83018a610bfc565b6110136020830189610bfc565b6110206040830188610a84565b61102d6060830187610fe4565b61103a6080830186610fe4565b61104760a0830185610bfc565b61105460c0830184610a84565b98975050505050505050565b5f5f6040838503121561107657611075610930565b5b5f61108385828601610eeb565b925050602061109485828601610eeb565b9150509250929050565b7f546f6b656e207769746864726177616c206661696c65640000000000000000005f82015250565b5f6110d2601783610c24565b91506110dd8261109e565b602082019050919050565b5f6020820190508181035f8301526110ff816110c6565b905091905056fea264697066735822122070a5fb0449aa44fe1d49c82372ff76fab461e8c7b84582fb017f4419a5d5b11c64736f6c634300081e0033