0x608060405234801561001057600080fd5b50610ac2806100206000396000f3fe60806040526004361061004a5760003560e01c80633cfba0e31461004f5780634dbf6c5a1461008c5780639956b436146100c9578063f14210a6146100f2578063f6326fb31461011b575b600080fd5b34801561005b57600080fd5b50610076600480360381019061007191906106eb565b610125565b6040516100839190610731565b60405180910390f35b34801561009857600080fd5b506100b360048036038101906100ae919061074c565b61013d565b6040516100c09190610731565b60405180910390f35b3480156100d557600080fd5b506100f060048036038101906100eb91906107f0565b610162565b005b3480156100fe57600080fd5b5061011960048036038101906101149190610857565b61050e565b005b610123610630565b005b60016020528060005260406000206000915090505481565b6000602052816000526040600020602052806000526040600020600091509150505481565b80156102ed57818361017491906108b3565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156101f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec90610952565b60405180910390fd5b826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546102809190610972565b92505081905550818361029391906108b3565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546102e191906109a6565b9250508190555061049f565b826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156103ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a290610a26565b60405180910390fd5b826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461043691906109a6565b92505081905550818361044991906108b3565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104979190610972565b925050819055505b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9653d0044b349e17ee4814904a1a79902e2c2563d0d228ee7cdcba3bfe969e1685858560405161050093929190610a55565b60405180910390a350505050565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610590576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058790610952565b60405180910390fd5b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105df91906109a6565b925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561062c573d6000803e3d6000fd5b5050565b34600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461067f9190610972565b92505081905550565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006106b88261068d565b9050919050565b6106c8816106ad565b81146106d357600080fd5b50565b6000813590506106e5816106bf565b92915050565b60006020828403121561070157610700610688565b5b600061070f848285016106d6565b91505092915050565b6000819050919050565b61072b81610718565b82525050565b60006020820190506107466000830184610722565b92915050565b6000806040838503121561076357610762610688565b5b6000610771858286016106d6565b9250506020610782858286016106d6565b9150509250929050565b61079581610718565b81146107a057600080fd5b50565b6000813590506107b28161078c565b92915050565b60008115159050919050565b6107cd816107b8565b81146107d857600080fd5b50565b6000813590506107ea816107c4565b92915050565b6000806000806080858703121561080a57610809610688565b5b6000610818878288016106d6565b9450506020610829878288016107a3565b935050604061083a878288016107a3565b925050606061084b878288016107db565b91505092959194509250565b60006020828403121561086d5761086c610688565b5b600061087b848285016107a3565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006108be82610718565b91506108c983610718565b92508282026108d781610718565b915082820484148315176108ee576108ed610884565b5b5092915050565b600082825260208201905092915050565b7f496e73756666696369656e74204554482062616c616e63650000000000000000600082015250565b600061093c6018836108f5565b915061094782610906565b602082019050919050565b6000602082019050818103600083015261096b8161092f565b9050919050565b600061097d82610718565b915061098883610718565b92508282019050808211156109a05761099f610884565b5b92915050565b60006109b182610718565b91506109bc83610718565b92508282039050818111156109d4576109d3610884565b5b92915050565b7f496e73756666696369656e7420746f6b656e2062616c616e6365000000000000600082015250565b6000610a10601a836108f5565b9150610a1b826109da565b602082019050919050565b60006020820190508181036000830152610a3f81610a03565b9050919050565b610a4f816107b8565b82525050565b6000606082019050610a6a6000830186610722565b610a776020830185610722565b610a846040830184610a46565b94935050505056fea2646970667358221220b145ac0f075df3f6f4de50cc65dce72524f9e25d7209d9e0decf5893b7eebd0764736f6c63430008120033