60806040526001600a556001600b556000600d556105dc600e556000601060006101000a81548160ff0219169083151502179055503480156200004157600080fd5b506040518060400160405280600b81526020017f6861756e7465647a6f6e650000000000000000000000000000000000000000008152506040518060400160405280600b81526020017f4861756e7465645a6f6e65000000000000000000000000000000000000000000815250620000ce620000c26200012660201b60201c565b6200012e60201b60201c565b8160039080519060200190620000e6929190620001fb565b508060049080519060200190620000ff929190620001fb565b5062000110620001f260201b60201c565b6001819055505050600160098190555062000310565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006001905090565b8280546200020990620002da565b90600052602060002090601f0160209004810192826200022d576000855562000279565b82601f106200024857805160ff191683800117855562000279565b8280016001018555821562000279579182015b82811115620002785782518255916020019190600101906200025b565b5b5090506200028891906200028c565b5090565b5b80821115620002a75760008160009055506001016200028d565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002f357607f821691505b602082108114156200030a5762000309620002ab565b5b50919050565b613dbe80620003206000396000f3fe6080604052600436106102045760003560e01c8063715018a611610118578063ad29dbd8116100a0578063d786b7cd1161006f578063d786b7cd14610746578063dc33e6811461076f578063e7572230146107ac578063e985e9c5146107e9578063f2fde38b1461082657610204565b8063ad29dbd81461068c578063b88d4fde146106b5578063c87b56dd146106de578063d5abeb011461071b57610204565b80638da5cb5b116100e75780638da5cb5b146105b45780639231ab2a146105df57806395d89b411461061c578063a0712d6814610647578063a22cb4651461066357610204565b8063715018a61461050c57806375236143146105235780637adaa2d7146105605780638d859f3e1461058957610204565b80633ccfd60b1161019b578063559e775b1161016a578063559e775b1461041757806355f804b3146104405780635c40f6f4146104695780636352211e1461049257806370a08231146104cf57610204565b80633ccfd60b1461038157806342842e0e146103985780634e69d560146103c157806351d7ff93146103ec57610204565b80630f2cdd6c116101d75780630f2cdd6c146102d757806318160ddd14610302578063200d2ed21461032d57806323b872dd1461035857610204565b806301ffc9a71461020957806306fdde0314610246578063081812fc14610271578063095ea7b3146102ae575b600080fd5b34801561021557600080fd5b50610230600480360381019061022b9190612cd8565b61084f565b60405161023d9190612d20565b60405180910390f35b34801561025257600080fd5b5061025b610931565b6040516102689190612dd4565b60405180910390f35b34801561027d57600080fd5b5061029860048036038101906102939190612e2c565b6109c3565b6040516102a59190612e9a565b60405180910390f35b3480156102ba57600080fd5b506102d560048036038101906102d09190612ee1565b610a3f565b005b3480156102e357600080fd5b506102ec610b4a565b6040516102f99190612f30565b60405180910390f35b34801561030e57600080fd5b50610317610b50565b6040516103249190612f30565b60405180910390f35b34801561033957600080fd5b50610342610b67565b60405161034f9190612d20565b60405180910390f35b34801561036457600080fd5b5061037f600480360381019061037a9190612f4b565b610b7a565b005b34801561038d57600080fd5b50610396610b8a565b005b3480156103a457600080fd5b506103bf60048036038101906103ba9190612f4b565b610d0b565b005b3480156103cd57600080fd5b506103d6610d2b565b6040516103e39190612d20565b60405180910390f35b3480156103f857600080fd5b50610401610d42565b60405161040e9190612f30565b60405180910390f35b34801561042357600080fd5b5061043e60048036038101906104399190612e2c565b610d48565b005b34801561044c57600080fd5b50610467600480360381019061046291906130d3565b610dce565b005b34801561047557600080fd5b50610490600480360381019061048b9190613148565b610e64565b005b34801561049e57600080fd5b506104b960048036038101906104b49190612e2c565b610efd565b6040516104c69190612e9a565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f19190613175565b610f13565b6040516105039190612f30565b60405180910390f35b34801561051857600080fd5b50610521610fe3565b005b34801561052f57600080fd5b5061054a60048036038101906105459190613175565b61106b565b6040516105579190612f30565b60405180910390f35b34801561056c57600080fd5b5061058760048036038101906105829190612e2c565b611083565b005b34801561059557600080fd5b5061059e611109565b6040516105ab9190612f30565b60405180910390f35b3480156105c057600080fd5b506105c961110f565b6040516105d69190612e9a565b60405180910390f35b3480156105eb57600080fd5b5061060660048036038101906106019190612e2c565b611138565b6040516106139190613225565b60405180910390f35b34801561062857600080fd5b50610631611150565b60405161063e9190612dd4565b60405180910390f35b610661600480360381019061065c9190612e2c565b6111e2565b005b34801561066f57600080fd5b5061068a60048036038101906106859190613240565b611479565b005b34801561069857600080fd5b506106b360048036038101906106ae9190612ee1565b6115f1565b005b3480156106c157600080fd5b506106dc60048036038101906106d79190613321565b6116d2565b005b3480156106ea57600080fd5b5061070560048036038101906107009190612e2c565b61174e565b6040516107129190612dd4565b60405180910390f35b34801561072757600080fd5b506107306117f5565b60405161073d9190612f30565b60405180910390f35b34801561075257600080fd5b5061076d60048036038101906107689190612e2c565b6117fb565b005b34801561077b57600080fd5b5061079660048036038101906107919190613175565b611881565b6040516107a39190612f30565b60405180910390f35b3480156107b857600080fd5b506107d360048036038101906107ce9190612e2c565b611893565b6040516107e09190612f30565b60405180910390f35b3480156107f557600080fd5b50610810600480360381019061080b91906133a4565b6118aa565b60405161081d9190612d20565b60405180910390f35b34801561083257600080fd5b5061084d60048036038101906108489190613175565b61193e565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061091a57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061092a575061092982611a36565b5b9050919050565b60606003805461094090613413565b80601f016020809104026020016040519081016040528092919081815260200182805461096c90613413565b80156109b95780601f1061098e576101008083540402835291602001916109b9565b820191906000526020600020905b81548152906001019060200180831161099c57829003601f168201915b5050505050905090565b60006109ce82611aa0565b610a04576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6007600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a4a82610efd565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ab2576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610ad1611aee565b73ffffffffffffffffffffffffffffffffffffffff1614158015610b035750610b0181610afc611aee565b6118aa565b155b15610b3a576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b45838383611af6565b505050565b600b5481565b6000610b5a611ba8565b6002546001540303905090565b601060009054906101000a900460ff1681565b610b85838383611bb1565b505050565b610b92611aee565b73ffffffffffffffffffffffffffffffffffffffff16610bb061110f565b73ffffffffffffffffffffffffffffffffffffffff1614610c06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfd90613491565b60405180910390fd5b60026009541415610c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c43906134fd565b60405180910390fd5b600260098190555060003373ffffffffffffffffffffffffffffffffffffffff1647604051610c7a9061354e565b60006040518083038185875af1925050503d8060008114610cb7576040519150601f19603f3d011682016040523d82523d6000602084013e610cbc565b606091505b5050905080610d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf7906135af565b60405180910390fd5b506001600981905550565b610d26838383604051806020016040528060008152506116d2565b505050565b6000601060009054906101000a900460ff16905090565b600a5481565b610d50611aee565b73ffffffffffffffffffffffffffffffffffffffff16610d6e61110f565b73ffffffffffffffffffffffffffffffffffffffff1614610dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbb90613491565b60405180910390fd5b80600d8190555050565b610dd6611aee565b73ffffffffffffffffffffffffffffffffffffffff16610df461110f565b73ffffffffffffffffffffffffffffffffffffffff1614610e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4190613491565b60405180910390fd5b80600f9080519060200190610e60929190612b86565b5050565b610e6c611aee565b73ffffffffffffffffffffffffffffffffffffffff16610e8a61110f565b73ffffffffffffffffffffffffffffffffffffffff1614610ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed790613491565b60405180910390fd5b80601060006101000a81548160ff02191690831515021790555050565b6000610f0882612067565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f7b576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b610feb611aee565b73ffffffffffffffffffffffffffffffffffffffff1661100961110f565b73ffffffffffffffffffffffffffffffffffffffff161461105f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105690613491565b60405180910390fd5b61106960006122f6565b565b600c6020528060005260406000206000915090505481565b61108b611aee565b73ffffffffffffffffffffffffffffffffffffffff166110a961110f565b73ffffffffffffffffffffffffffffffffffffffff16146110ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f690613491565b60405180910390fd5b80600a8190555050565b600d5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611140612c0c565b61114982612067565b9050919050565b60606004805461115f90613413565b80601f016020809104026020016040519081016040528092919081815260200182805461118b90613413565b80156111d85780601f106111ad576101008083540402835291602001916111d8565b820191906000526020600020905b8154815290600101906020018083116111bb57829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611250576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112479061361b565b60405180910390fd5b60011515601060009054906101000a900460ff161515146112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129d90613687565b60405180910390fd5b600e54816112b2610b50565b6112bc91906136d6565b11156112fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f490613778565b60405180910390fd5b600a54811115611342576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611339906137e4565b60405180910390fd5b80600d546113509190613804565b341015611392576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611389906138aa565b60405180910390fd5b80600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113e191906136d6565b92505081905550600b54600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561146c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146390613916565b60405180910390fd5b61147633826123ba565b50565b611481611aee565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114e6576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600860006114f3611aee565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166115a0611aee565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516115e59190612d20565b60405180910390a35050565b6115f9611aee565b73ffffffffffffffffffffffffffffffffffffffff1661161761110f565b73ffffffffffffffffffffffffffffffffffffffff161461166d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166490613491565b60405180910390fd5b600e5481611679610b50565b61168391906136d6565b11156116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb90613778565b60405180910390fd5b6116ce82826123ba565b5050565b6116dd848484611bb1565b6116fc8373ffffffffffffffffffffffffffffffffffffffff166123d8565b8015611711575061170f848484846123eb565b155b15611748576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b606061175982611aa0565b611798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178f906139a8565b60405180910390fd5b60006117a261253c565b905060008151116117c257604051806020016040528060008152506117ed565b806117cc846125ce565b6040516020016117dd929190613a9c565b6040516020818303038152906040525b915050919050565b600e5481565b611803611aee565b73ffffffffffffffffffffffffffffffffffffffff1661182161110f565b73ffffffffffffffffffffffffffffffffffffffff1614611877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186e90613491565b60405180910390fd5b80600b8190555050565b600061188c8261272f565b9050919050565b6000600d54826118a39190613804565b9050919050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611946611aee565b73ffffffffffffffffffffffffffffffffffffffff1661196461110f565b73ffffffffffffffffffffffffffffffffffffffff16146119ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b190613491565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2190613b48565b60405180910390fd5b611a33816122f6565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600081611aab611ba8565b11158015611aba575060015482105b8015611ae7575060056000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826007600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006001905090565b6000611bbc82612067565b90508373ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614611c27576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff16611c48611aee565b73ffffffffffffffffffffffffffffffffffffffff161480611c775750611c7685611c71611aee565b6118aa565b5b80611cbc5750611c85611aee565b73ffffffffffffffffffffffffffffffffffffffff16611ca4846109c3565b73ffffffffffffffffffffffffffffffffffffffff16145b905080611cf5576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611d5c576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d698585856001612799565b611d7560008487611af6565b6001600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600560008581526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550428160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060006001850190506000600560008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611ff5576001548214611ff457878160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084602001518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b505050828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612060858585600161279f565b5050505050565b61206f612c0c565b60008290508061207d611ba8565b1115801561208c575060015481105b156122bf576000600560008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff161515151581525050905080604001516122bd57600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146121a15780925050506122f1565b5b6001156122bc57818060019003925050600560008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146122b75780925050506122f1565b6121a2565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6123d48282604051806020016040528060008152506127a5565b5050565b600080823b905060008111915050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612411611aee565b8786866040518563ffffffff1660e01b81526004016124339493929190613bbd565b6020604051808303816000875af192505050801561246f57506040513d601f19601f8201168201806040525081019061246c9190613c1e565b60015b6124e9573d806000811461249f576040519150601f19603f3d011682016040523d82523d6000602084013e6124a4565b606091505b506000815114156124e1576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600f805461254b90613413565b80601f016020809104026020016040519081016040528092919081815260200182805461257790613413565b80156125c45780601f10612599576101008083540402835291602001916125c4565b820191906000526020600020905b8154815290600101906020018083116125a757829003601f168201915b5050505050905090565b60606000821415612616576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061272a565b600082905060005b6000821461264857808061263190613c4b565b915050600a826126419190613cc3565b915061261e565b60008167ffffffffffffffff81111561266457612663612fa8565b5b6040519080825280601f01601f1916602001820160405280156126965781602001600182028036833780820191505090505b5090505b60008514612723576001826126af9190613cf4565b9150600a856126be9190613d28565b60306126ca91906136d6565b60f81b8183815181106126e0576126df613d59565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561271c9190613cc3565b945061269a565b8093505050505b919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b50505050565b50505050565b6127b283838360016127b7565b505050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612825576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000841415612860576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61286d6000868387612799565b83600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846005600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426005600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060008582019050838015612a375750612a368773ffffffffffffffffffffffffffffffffffffffff166123d8565b5b15612afd575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612aac60008884806001019550886123eb565b612ae2576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80821415612a3d578260015414612af857600080fd5b612b69565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480821415612afe575b816001819055505050612b7f600086838761279f565b5050505050565b828054612b9290613413565b90600052602060002090601f016020900481019282612bb45760008555612bfb565b82601f10612bcd57805160ff1916838001178555612bfb565b82800160010185558215612bfb579182015b82811115612bfa578251825591602001919060010190612bdf565b5b509050612c089190612c4f565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b5b80821115612c68576000816000905550600101612c50565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612cb581612c80565b8114612cc057600080fd5b50565b600081359050612cd281612cac565b92915050565b600060208284031215612cee57612ced612c76565b5b6000612cfc84828501612cc3565b91505092915050565b60008115159050919050565b612d1a81612d05565b82525050565b6000602082019050612d356000830184612d11565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d75578082015181840152602081019050612d5a565b83811115612d84576000848401525b50505050565b6000601f19601f8301169050919050565b6000612da682612d3b565b612db08185612d46565b9350612dc0818560208601612d57565b612dc981612d8a565b840191505092915050565b60006020820190508181036000830152612dee8184612d9b565b905092915050565b6000819050919050565b612e0981612df6565b8114612e1457600080fd5b50565b600081359050612e2681612e00565b92915050565b600060208284031215612e4257612e41612c76565b5b6000612e5084828501612e17565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e8482612e59565b9050919050565b612e9481612e79565b82525050565b6000602082019050612eaf6000830184612e8b565b92915050565b612ebe81612e79565b8114612ec957600080fd5b50565b600081359050612edb81612eb5565b92915050565b60008060408385031215612ef857612ef7612c76565b5b6000612f0685828601612ecc565b9250506020612f1785828601612e17565b9150509250929050565b612f2a81612df6565b82525050565b6000602082019050612f456000830184612f21565b92915050565b600080600060608486031215612f6457612f63612c76565b5b6000612f7286828701612ecc565b9350506020612f8386828701612ecc565b9250506040612f9486828701612e17565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612fe082612d8a565b810181811067ffffffffffffffff82111715612fff57612ffe612fa8565b5b80604052505050565b6000613012612c6c565b905061301e8282612fd7565b919050565b600067ffffffffffffffff82111561303e5761303d612fa8565b5b61304782612d8a565b9050602081019050919050565b82818337600083830152505050565b600061307661307184613023565b613008565b90508281526020810184848401111561309257613091612fa3565b5b61309d848285613054565b509392505050565b600082601f8301126130ba576130b9612f9e565b5b81356130ca848260208601613063565b91505092915050565b6000602082840312156130e9576130e8612c76565b5b600082013567ffffffffffffffff81111561310757613106612c7b565b5b613113848285016130a5565b91505092915050565b61312581612d05565b811461313057600080fd5b50565b6000813590506131428161311c565b92915050565b60006020828403121561315e5761315d612c76565b5b600061316c84828501613133565b91505092915050565b60006020828403121561318b5761318a612c76565b5b600061319984828501612ecc565b91505092915050565b6131ab81612e79565b82525050565b600067ffffffffffffffff82169050919050565b6131ce816131b1565b82525050565b6131dd81612d05565b82525050565b6060820160008201516131f960008501826131a2565b50602082015161320c60208501826131c5565b50604082015161321f60408501826131d4565b50505050565b600060608201905061323a60008301846131e3565b92915050565b6000806040838503121561325757613256612c76565b5b600061326585828601612ecc565b925050602061327685828601613133565b9150509250929050565b600067ffffffffffffffff82111561329b5761329a612fa8565b5b6132a482612d8a565b9050602081019050919050565b60006132c46132bf84613280565b613008565b9050828152602081018484840111156132e0576132df612fa3565b5b6132eb848285613054565b509392505050565b600082601f83011261330857613307612f9e565b5b81356133188482602086016132b1565b91505092915050565b6000806000806080858703121561333b5761333a612c76565b5b600061334987828801612ecc565b945050602061335a87828801612ecc565b935050604061336b87828801612e17565b925050606085013567ffffffffffffffff81111561338c5761338b612c7b565b5b613398878288016132f3565b91505092959194509250565b600080604083850312156133bb576133ba612c76565b5b60006133c985828601612ecc565b92505060206133da85828601612ecc565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061342b57607f821691505b6020821081141561343f5761343e6133e4565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061347b602083612d46565b915061348682613445565b602082019050919050565b600060208201905081810360008301526134aa8161346e565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006134e7601f83612d46565b91506134f2826134b1565b602082019050919050565b60006020820190508181036000830152613516816134da565b9050919050565b600081905092915050565b50565b600061353860008361351d565b915061354382613528565b600082019050919050565b60006135598261352b565b9150819050919050565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b6000613599601083612d46565b91506135a482613563565b602082019050919050565b600060208201905081810360008301526135c88161358c565b9050919050565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b6000613605601e83612d46565b9150613610826135cf565b602082019050919050565b60006020820190508181036000830152613634816135f8565b9050919050565b7f53616c65206973206e6f74204163746976650000000000000000000000000000600082015250565b6000613671601283612d46565b915061367c8261363b565b602082019050919050565b600060208201905081810360008301526136a081613664565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006136e182612df6565b91506136ec83612df6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613721576137206136a7565b5b828201905092915050565b7f72656163686564206d617820737570706c790000000000000000000000000000600082015250565b6000613762601283612d46565b915061376d8261372c565b602082019050919050565b6000602082019050818103600083015261379181613755565b9050919050565b7f6578636565647320746865206d6178206d696e74207175616e74697479000000600082015250565b60006137ce601d83612d46565b91506137d982613798565b602082019050919050565b600060208201905081810360008301526137fd816137c1565b9050919050565b600061380f82612df6565b915061381a83612df6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613853576138526136a7565b5b828202905092915050565b7f76616c7565206c657373207468616e2e00000000000000000000000000000000600082015250565b6000613894601083612d46565b915061389f8261385e565b602082019050919050565b600060208201905081810360008301526138c381613887565b9050919050565b7f50757263686173652065786365656473206d617820616c6c6f77656400000000600082015250565b6000613900601c83612d46565b915061390b826138ca565b602082019050919050565b6000602082019050818103600083015261392f816138f3565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613992602f83612d46565b915061399d82613936565b604082019050919050565b600060208201905081810360008301526139c181613985565b9050919050565b600081905092915050565b60006139de82612d3b565b6139e881856139c8565b93506139f8818560208601612d57565b80840191505092915050565b7f2f00000000000000000000000000000000000000000000000000000000000000600082015250565b6000613a3a6001836139c8565b9150613a4582613a04565b600182019050919050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b6000613a866005836139c8565b9150613a9182613a50565b600582019050919050565b6000613aa882856139d3565b9150613ab382613a2d565b9150613abf82846139d3565b9150613aca82613a79565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613b32602683612d46565b9150613b3d82613ad6565b604082019050919050565b60006020820190508181036000830152613b6181613b25565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000613b8f82613b68565b613b998185613b73565b9350613ba9818560208601612d57565b613bb281612d8a565b840191505092915050565b6000608082019050613bd26000830187612e8b565b613bdf6020830186612e8b565b613bec6040830185612f21565b8181036060830152613bfe8184613b84565b905095945050505050565b600081519050613c1881612cac565b92915050565b600060208284031215613c3457613c33612c76565b5b6000613c4284828501613c09565b91505092915050565b6000613c5682612df6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c8957613c886136a7565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613cce82612df6565b9150613cd983612df6565b925082613ce957613ce8613c94565b5b828204905092915050565b6000613cff82612df6565b9150613d0a83612df6565b925082821015613d1d57613d1c6136a7565b5b828203905092915050565b6000613d3382612df6565b9150613d3e83612df6565b925082613d4e57613d4d613c94565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220310d6def8208c416732f6f90c294fc8129532e7850f2292ca783012edd86314b64736f6c634300080a0033