0x608060405234801561001057600080fd5b50604051610cd0380380610cd0833981810160405281019061003291906100ce565b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610149565b6000815190506100c881610132565b92915050565b6000602082840312156100e4576100e361012d565b5b60006100f2848285016100b9565b91505092915050565b60006101068261010d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b61013b816100fb565b811461014657600080fd5b50565b610b78806101586000396000f3fe60806040526004361061003f5760003560e01c8063a7edc77214610044578063acbcd95b1461006d578063cfb5192814610089578063d4f5e4d5146100c6575b600080fd5b34801561005057600080fd5b5061006b600480360381019061006691906105e4565b6100ef565b005b61008760048036038101906100829190610631565b6101b7565b005b34801561009557600080fd5b506100b060048036038101906100ab9190610691565b6103b1565b6040516100bd9190610761565b60405180910390f35b3480156100d257600080fd5b506100ed60048036038101906100e891906105b7565b6103bf565b005b60005b828290508110156101b25760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f14fcbc884848481811061014c5761014b610a36565b5b905060200201356040518263ffffffff1660e01b815260040161016f9190610761565b600060405180830381600087803b15801561018957600080fd5b505af115801561019d573d6000803e3d6000fd5b50505050806101ab906109be565b90506100f2565b505050565b600080604051806080016040528060428152602001610b016042913990505b848490508210156103aa576000600560008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166383e7f6ff88888781811061023457610233610a36565b5b90506020028101906102469190610818565b886040518463ffffffff1660e01b8152600401610265939291906107e6565b60206040518083038186803b15801561027d57600080fd5b505afa158015610291573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b591906106da565b6102bf91906108e2565b905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f7a169638288888781811061031157610310610a36565b5b90506020028101906103239190610818565b338961032e896103b1565b734976fb03c32e5b8cfe2b6ccb31c09ba78ebaba41336040518963ffffffff1660e01b8152600401610366979695949392919061077c565b6000604051808303818588803b15801561037f57600080fd5b505af1158015610393573d6000803e3d6000fd5b505050505050816103a3906109be565b91506101d6565b5050505050565b600060208201519050919050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461041957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061046f61046a846108a0565b61087b565b90508281526020810184848401111561048b5761048a610ab2565b5b61049684828561097e565b509392505050565b6000813590506104ad81610ad2565b92915050565b60008083601f8401126104c9576104c8610a99565b5b8235905067ffffffffffffffff8111156104e6576104e5610a94565b5b60208301915083602082028301111561050257610501610aa8565b5b9250929050565b60008083601f84011261051f5761051e610a99565b5b8235905067ffffffffffffffff81111561053c5761053b610a94565b5b60208301915083602082028301111561055857610557610aa8565b5b9250929050565b600082601f83011261057457610573610a99565b5b813561058484826020860161045c565b91505092915050565b60008135905061059c81610ae9565b92915050565b6000815190506105b181610ae9565b92915050565b6000602082840312156105cd576105cc610abc565b5b60006105db8482850161049e565b91505092915050565b600080602083850312156105fb576105fa610abc565b5b600083013567ffffffffffffffff81111561061957610618610ab7565b5b610625858286016104b3565b92509250509250929050565b60008060006040848603121561064a57610649610abc565b5b600084013567ffffffffffffffff81111561066857610667610ab7565b5b61067486828701610509565b935093505060206106878682870161058d565b9150509250925092565b6000602082840312156106a7576106a6610abc565b5b600082013567ffffffffffffffff8111156106c5576106c4610ab7565b5b6106d18482850161055f565b91505092915050565b6000602082840312156106f0576106ef610abc565b5b60006106fe848285016105a2565b91505092915050565b61071081610938565b82525050565b61071f8161094a565b82525050565b600061073183856108d1565b935061073e83858461097e565b61074783610ac1565b840190509392505050565b61075b81610974565b82525050565b60006020820190506107766000830184610716565b92915050565b600060c082019050818103600083015261079781898b610725565b90506107a66020830188610707565b6107b36040830187610752565b6107c06060830186610716565b6107cd6080830185610707565b6107da60a0830184610707565b98975050505050505050565b60006040820190508181036000830152610801818587610725565b90506108106020830184610752565b949350505050565b6000808335600160200384360303811261083557610834610aa3565b5b80840192508235915067ffffffffffffffff82111561085757610856610a9e565b5b60208301925060018202360383131561087357610872610aad565b5b509250929050565b6000610885610896565b9050610891828261098d565b919050565b6000604051905090565b600067ffffffffffffffff8211156108bb576108ba610a65565b5b6108c482610ac1565b9050602081019050919050565b600082825260208201905092915050565b60006108ed82610974565b91506108f883610974565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561092d5761092c610a07565b5b828201905092915050565b600061094382610954565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b61099682610ac1565b810181811067ffffffffffffffff821117156109b5576109b4610a65565b5b80604052505050565b60006109c982610974565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156109fc576109fb610a07565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b610adb81610938565b8114610ae657600080fd5b50565b610af281610974565b8114610afd57600080fd5b5056fe307832376362386432343236383539343039623434393064633132656164386638333331653837313862353031316265373336643464613436646234326433623466a2646970667358221220e0af0e3c9fe55485953d3df5fb7b0144c88eaeb8b4715dcd85c799e50f5f7d2964736f6c63430008070033000000000000000000000000283af0b28c62c092c9727f1ee09c02ca627eb7f5