0x608060405234801561001057600080fd5b50604051610f1b380380610f1b8339818101604052810190610032919061011d565b816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505061015d565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100ea826100bf565b9050919050565b6100fa816100df565b811461010557600080fd5b50565b600081519050610117816100f1565b92915050565b60008060408385031215610134576101336100ba565b5b600061014285828601610108565b925050602061015385828601610108565b9150509250929050565b610daf8061016c6000396000f3fe60806040526004361061003f5760003560e01c8063412ca6a91461004457806357ea89b6146100605780635b7633d0146100775780638da5cb5b146100a2575b600080fd5b61005e60048036038101906100599190610803565b6100cd565b005b34801561006c57600080fd5b5061007561029e565b005b34801561008357600080fd5b5061008c6103fe565b60405161009991906108b8565b60405180910390f35b3480156100ae57600080fd5b506100b7610424565b6040516100c491906108b8565b60405180910390f35b42811015610110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010790610930565b60405180910390fd5b60006101473384348560405160200161012c94939291906109b9565b60405160208183030381529060405280519060200120610448565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166101d986868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508361047e90919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff161461022f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022690610a53565b60405180910390fd5b6000633b9aca0084633b9aca00346102479190610aa2565b6102519190610b13565b61025b9190610b13565b90507f1027a425782977e3813afc94e489dccce57fecec47b5b531804d7d8e9eb26bff338260405161028e929190610b53565b60405180910390a1505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461032c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161032390610bc8565b60405180910390fd5b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161037390610c19565b60006040518083038185875af1925050503d80600081146103b0576040519150601f19603f3d011682016040523d82523d6000602084013e6103b5565b606091505b5091509150816103fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103f190610c7a565b60405180910390fd5b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007f19457468657265756d205369676e6564204d6573736167653a0a33320000000060005281601c52603c6000209050919050565b60008060008061048e86866104aa565b92509250925061049e8282610506565b82935050505092915050565b600080600060418451036104ef5760008060006020870151925060408701519150606087015160001a90506104e18882858561066a565b9550955095505050506104ff565b60006002855160001b9250925092505b9250925092565b6000600381111561051a57610519610c9a565b5b82600381111561052d5761052c610c9a565b5b0315610666576001600381111561054757610546610c9a565b5b82600381111561055a57610559610c9a565b5b03610591576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260038111156105a5576105a4610c9a565b5b8260038111156105b8576105b7610c9a565b5b036105fd578060001c6040517ffce698f70000000000000000000000000000000000000000000000000000000081526004016105f49190610cc9565b60405180910390fd5b6003808111156106105761060f610c9a565b5b82600381111561062357610622610c9a565b5b0361066557806040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260040161065c9190610cfd565b60405180910390fd5b5b5050565b60008060007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08460001c11156106aa576000600385925092509250610754565b6000600188888888604051600081526020016040526040516106cf9493929190610d34565b6020604051602081039080840390855afa1580156106f1573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361074557600060016000801b93509350935050610754565b8060008060001b935093509350505b9450945094915050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f84011261078d5761078c610768565b5b8235905067ffffffffffffffff8111156107aa576107a961076d565b5b6020830191508360018202830111156107c6576107c5610772565b5b9250929050565b6000819050919050565b6107e0816107cd565b81146107eb57600080fd5b50565b6000813590506107fd816107d7565b92915050565b6000806000806060858703121561081d5761081c61075e565b5b600085013567ffffffffffffffff81111561083b5761083a610763565b5b61084787828801610777565b9450945050602061085a878288016107ee565b925050604061086b878288016107ee565b91505092959194509250565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006108a282610877565b9050919050565b6108b281610897565b82525050565b60006020820190506108cd60008301846108a9565b92915050565b600082825260208201905092915050565b7f446561646c696e65207061737365640000000000000000000000000000000000600082015250565b600061091a600f836108d3565b9150610925826108e4565b602082019050919050565b600060208201905081810360008301526109498161090d565b9050919050565b60008160601b9050919050565b600061096882610950565b9050919050565b600061097a8261095d565b9050919050565b61099261098d82610897565b61096f565b82525050565b6000819050919050565b6109b36109ae826107cd565b610998565b82525050565b60006109c58287610981565b6014820191506109d582866109a2565b6020820191506109e582856109a2565b6020820191506109f582846109a2565b60208201915081905095945050505050565b7f57726f6e67207369676e65722100000000000000000000000000000000000000600082015250565b6000610a3d600d836108d3565b9150610a4882610a07565b602082019050919050565b60006020820190508181036000830152610a6c81610a30565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610aad826107cd565b9150610ab8836107cd565b9250828202610ac6816107cd565b91508282048414831517610add57610adc610a73565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610b1e826107cd565b9150610b29836107cd565b925082610b3957610b38610ae4565b5b828204905092915050565b610b4d816107cd565b82525050565b6000604082019050610b6860008301856108a9565b610b756020830184610b44565b9392505050565b7f4e6f7420616e206f776e65720000000000000000000000000000000000000000600082015250565b6000610bb2600c836108d3565b9150610bbd82610b7c565b602082019050919050565b60006020820190508181036000830152610be181610ba5565b9050919050565b600081905092915050565b50565b6000610c03600083610be8565b9150610c0e82610bf3565b600082019050919050565b6000610c2482610bf6565b9150819050919050565b7f4661696c656420746f2073656e64204574686572000000000000000000000000600082015250565b6000610c646014836108d3565b9150610c6f82610c2e565b602082019050919050565b60006020820190508181036000830152610c9381610c57565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6000602082019050610cde6000830184610b44565b92915050565b6000819050919050565b610cf781610ce4565b82525050565b6000602082019050610d126000830184610cee565b92915050565b600060ff82169050919050565b610d2e81610d18565b82525050565b6000608082019050610d496000830187610cee565b610d566020830186610d25565b610d636040830185610cee565b610d706060830184610cee565b9594505050505056fea2646970667358221220bb9796837e4321ba814285d7913f7b3c10086ee2ab4c7cab5cf7dc0fe0ca9d9264736f6c634300081b0033000000000000000000000000d319cf4ea5aed2b64360d983ac7f0f16b813b70b0000000000000000000000001b82d8b7b1480c5da27a6011d37a08ca2ea65f02