0x60a0604052348015600f57600080fd5b50600660ff1660808160ff16815250506000808190555060805161146e61004160003960006101f1015261146e6000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80635d500bfa116100665780635d500bfa1461010e5780636161ef7b1461012a57806370a08231146101465780637d09ba381461017657806395d89b411461019257610093565b806306fdde031461009857806318160ddd146100b6578063313ce567146100d45780635296a431146100f2575b600080fd5b6100a06101b0565b6040516100ad9190610c2c565b60405180910390f35b6100be6101e9565b6040516100cb9190610c67565b60405180910390f35b6100dc6101ef565b6040516100e99190610c9e565b60405180910390f35b61010c60048036038101906101079190610d54565b610213565b005b61012860048036038101906101239190610e12565b610661565b005b610144600480360381019061013f9190610e3f565b6106c8565b005b610160600480360381019061015b9190610e12565b6108f9565b60405161016d9190610c67565b60405180910390f35b610190600480360381019061018b9190610e92565b6109cc565b005b61019a610b63565b6040516101a79190610c2c565b60405180910390f35b6040518060400160405280601081526020017f5465746865722055534420466c6173680000000000000000000000000000000081525081565b60005481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008311610256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024d90610f44565b60405180910390fd5b60006103e86005856102689190610f93565b6102729190611004565b9050600081856102829190611035565b905084600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fd906110b5565b60405180910390fd5b84600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461035591906110d5565b9250508190555084600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103ab9190611035565b925050819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161040f9190610c67565b60405180910390a360003373ffffffffffffffffffffffffffffffffffffffff168585604051610440929190611148565b6000604051808303816000865af19150503d806000811461047d576040519150601f19603f3d011682016040523d82523d6000602084013e610482565b606091505b50509050806104c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104bd906111ad565b60405180910390fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610548576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053f90611219565b60405180910390fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461059791906110d5565b9250508190555081600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105ed9190611035565b925050819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106519190610c67565b60405180910390a3505050505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050428160010154116106c45760008160000181905550600081600101819055505b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072e906112ab565b60405180910390fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905042826001015411610803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fa90611317565b60405180910390fd5b828260000154101561084a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084190611383565b60405180910390fd5b8282600001600082825461085e91906110d5565b92505081905550828160000160008282546108799190611035565b92505081905550816001015481600101819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516108ea9190610c67565b60405180910390a35050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806040016040529081600082015481526020016001820154815250509050600042826020015111610970576000610976565b81600001515b905080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109c39190611035565b92505050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a32906112ab565b60405180910390fd5b60008111610a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a75906113ef565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905081816000016000828254610ad59190611035565b925050819055506276a70042610aeb9190611035565b81600101819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ff5e9ddebf2de09ec58442b71d72d050c64b95b9c6cec356735b660f2c676fbd5848460010154604051610b5692919061140f565b60405180910390a3505050565b6040518060400160405280600481526020017f555344540000000000000000000000000000000000000000000000000000000081525081565b600081519050919050565b600082825260208201905092915050565b60005b83811015610bd6578082015181840152602081019050610bbb565b60008484015250505050565b6000601f19601f8301169050919050565b6000610bfe82610b9c565b610c088185610ba7565b9350610c18818560208601610bb8565b610c2181610be2565b840191505092915050565b60006020820190508181036000830152610c468184610bf3565b905092915050565b6000819050919050565b610c6181610c4e565b82525050565b6000602082019050610c7c6000830184610c58565b92915050565b600060ff82169050919050565b610c9881610c82565b82525050565b6000602082019050610cb36000830184610c8f565b92915050565b600080fd5b600080fd5b610ccc81610c4e565b8114610cd757600080fd5b50565b600081359050610ce981610cc3565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112610d1457610d13610cef565b5b8235905067ffffffffffffffff811115610d3157610d30610cf4565b5b602083019150836001820283011115610d4d57610d4c610cf9565b5b9250929050565b600080600060408486031215610d6d57610d6c610cb9565b5b6000610d7b86828701610cda565b935050602084013567ffffffffffffffff811115610d9c57610d9b610cbe565b5b610da886828701610cfe565b92509250509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ddf82610db4565b9050919050565b610def81610dd4565b8114610dfa57600080fd5b50565b600081359050610e0c81610de6565b92915050565b600060208284031215610e2857610e27610cb9565b5b6000610e3684828501610dfd565b91505092915050565b600080600060608486031215610e5857610e57610cb9565b5b6000610e6686828701610dfd565b9350506020610e7786828701610dfd565b9250506040610e8886828701610cda565b9150509250925092565b60008060408385031215610ea957610ea8610cb9565b5b6000610eb785828601610dfd565b9250506020610ec885828601610cda565b9150509250929050565b7f4c6f616e20616d6f756e74206d7573742062652067726561746572207468616e60008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000610f2e602583610ba7565b9150610f3982610ed2565b604082019050919050565b60006020820190508181036000830152610f5d81610f21565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610f9e82610c4e565b9150610fa983610c4e565b9250828202610fb781610c4e565b91508282048414831517610fce57610fcd610f64565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061100f82610c4e565b915061101a83610c4e565b92508261102a57611029610fd5565b5b828204905092915050565b600061104082610c4e565b915061104b83610c4e565b925082820190508082111561106357611062610f64565b5b92915050565b7f496e73756666696369656e74206c697175696469747900000000000000000000600082015250565b600061109f601683610ba7565b91506110aa82611069565b602082019050919050565b600060208201905081810360008301526110ce81611092565b9050919050565b60006110e082610c4e565b91506110eb83610c4e565b925082820390508181111561110357611102610f64565b5b92915050565b600081905092915050565b82818337600083830152505050565b600061112f8385611109565b935061113c838584611114565b82840190509392505050565b6000611155828486611123565b91508190509392505050565b7f466c617368206c6f616e2063616c6c6261636b206661696c6564000000000000600082015250565b6000611197601a83610ba7565b91506111a282611161565b602082019050919050565b600060208201905081810360008301526111c68161118a565b9050919050565b7f52657061796d656e74206661696c656400000000000000000000000000000000600082015250565b6000611203601083610ba7565b915061120e826111cd565b602082019050919050565b60006020820190508181036000830152611232816111f6565b9050919050565b7f43616e6e6f74207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611295602383610ba7565b91506112a082611239565b604082019050919050565b600060208201905081810360008301526112c481611288565b9050919050565b7f466c6173682062616c616e636520657870697265640000000000000000000000600082015250565b6000611301601583610ba7565b915061130c826112cb565b602082019050919050565b60006020820190508181036000830152611330816112f4565b9050919050565b7f496e73756666696369656e7420666c6173682062616c616e6365000000000000600082015250565b600061136d601a83610ba7565b915061137882611337565b602082019050919050565b6000602082019050818103600083015261139c81611360565b9050919050565b7f56616c7565206d7573742062652067726561746572207468616e207a65726f00600082015250565b60006113d9601f83610ba7565b91506113e4826113a3565b602082019050919050565b60006020820190508181036000830152611408816113cc565b9050919050565b60006040820190506114246000830185610c58565b6114316020830184610c58565b939250505056fea2646970667358221220c986cb952ca511c9d2784ef84d073b371c487c271e4630a47a61c5c0ca8cd6cd64736f6c634300081c0033