60806040526a52b7d2dcc80cd2e400000060015573e470699f6d0384e3ea68f1144e41d22c6c8fdeef60025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506019620186a06a52b7d2dcc80cd2e40000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620000a6919062000e93565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620000d3919062000ef7565b620000df919062000f31565b620000eb919062000f68565b6007557340fe02cc162496e5166a5749c29753fcf514716360085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b5f6101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff0219169083151502179055505f600b60026101000a81548160ff0219169083151502179055505f600b60036101000a81548160ff0219169083151502179055506001600b60046101000a81548160ff0219169083151502179055506001600b60056101000a81548160ff0219169083151502179055505f600c555f600d555f600f555f6010556040518060400160405280601381526020017f44796e616d696320426c617374204d6f6e657900000000000000000000000000815250601190816200023791906200120d565b506040518060400160405280600381526020017f44424d0000000000000000000000000000000000000000000000000000000000815250601290816200027e91906200120d565b50600160135f6101000a81548160ff021916908315150217905550348015620002a5575f80fd5b50620002c6620002ba62000d0b60201b60201c565b62000d1260201b60201c565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000393573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003b9919062001356565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000440573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000466919062001356565b6040518363ffffffff1660e01b81526004016200048592919062001397565b6020604051808303815f875af1158015620004a2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004c8919062001356565b90508060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60155f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60155f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60155f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060146009819055506014600a819055506032600e81905550600160165f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160165f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160165f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160165f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160165f8073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160165f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506a52b7d2dcc80cd2e400000060058190555062000a0b6005546a52b7d2dcc80cd2e40000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620009cf919062000e93565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620009fc919062000ef7565b62000dd360201b90919060201c565b60068190555062000aa1601462000a9260646a52b7d2dcc80cd2e40000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000a56919062000e93565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000a83919062000ef7565b62000dd360201b90919060201c565b62000dea60201b90919060201c565b60145f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555062000b93605062000b8460646a52b7d2dcc80cd2e40000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000b48919062000e93565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000b75919062000ef7565b62000dd360201b90919060201c565b62000dea60201b90919060201c565b60145f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef62000c7660085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1662000e0160201b60201c565b60405162000c859190620013d3565b60405180910390a33373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef62000ced3362000e0160201b60201c565b60405162000cfc9190620013d3565b60405180910390a350620013ee565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f818362000de2919062000f31565b905092915050565b5f818362000df9919062000f68565b905092915050565b5f62000e5660065460145f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205462000dd360201b90919060201c565b9050919050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000e9f8262000e5d565b915062000eac8362000e5d565b92508262000ebf5762000ebe62000e66565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000f038262000e5d565b915062000f108362000e5d565b925082820390508181111562000f2b5762000f2a62000eca565b5b92915050565b5f62000f3d8262000e5d565b915062000f4a8362000e5d565b92508262000f5d5762000f5c62000e66565b5b828204905092915050565b5f62000f748262000e5d565b915062000f818362000e5d565b925082820262000f918162000e5d565b9150828204841483151762000fab5762000faa62000eca565b5b5092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200102e57607f821691505b60208210810362001044576200104362000fe9565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620010a87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200106b565b620010b486836200106b565b95508019841693508086168417925050509392505050565b5f819050919050565b5f620010f5620010ef620010e98462000e5d565b620010cc565b62000e5d565b9050919050565b5f819050919050565b6200111083620010d5565b620011286200111f82620010fc565b84845462001077565b825550505050565b5f90565b6200113e62001130565b6200114b81848462001105565b505050565b5b818110156200117257620011665f8262001134565b60018101905062001151565b5050565b601f821115620011c1576200118b816200104a565b62001196846200105c565b81016020851015620011a6578190505b620011be620011b5856200105c565b83018262001150565b50505b505050565b5f82821c905092915050565b5f620011e35f1984600802620011c6565b1980831691505092915050565b5f620011fd8383620011d2565b9150826002028217905092915050565b620012188262000fb2565b67ffffffffffffffff81111562001234576200123362000fbc565b5b62001240825462001016565b6200124d82828562001176565b5f60209050601f83116001811462001283575f84156200126e578287015190505b6200127a8582620011f0565b865550620012e9565b601f19841662001293866200104a565b5f5b82811015620012bc5784890151825560018201915060208501945060208101905062001295565b86831015620012dc5784890151620012d8601f891682620011d2565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200132082620012f5565b9050919050565b620013328162001314565b81146200133d575f80fd5b50565b5f81519050620013508162001327565b92915050565b5f602082840312156200136e576200136d620012f1565b5b5f6200137d8482850162001340565b91505092915050565b620013918162001314565b82525050565b5f604082019050620013ac5f83018562001386565b620013bb602083018462001386565b9392505050565b620013cd8162000e5d565b82525050565b5f602082019050620013e85f830184620013c2565b92915050565b613f8380620013fc5f395ff3fe60806040526004361061036e575f3560e01c80636ac5eeee116101c5578063b5680cb5116100f6578063d65fcf6511610094578063df20fd491161006e578063df20fd4914610c07578063f2fde38b14610c2f578063fcc3a28914610c57578063ffb3a6be14610c8157610375565b8063d65fcf6514610b8d578063d85a282814610bb5578063dd62ed3e14610bcb57610375565b8063c21b7255116100d0578063c21b725514610ae7578063c600589314610b0f578063cc1776d314610b39578063d41c435e14610b6357610375565b8063b5680cb514610a7d578063b921aa3414610a93578063bc1b392d14610abd57610375565b80638da5cb5b11610163578063a457c2d71161013d578063a457c2d7146109c5578063a9059cbb14610a01578063aed8d6ba14610a3d578063af14052c14610a6757610375565b80638da5cb5b1461094757806395d89b4114610971578063963b86d21461099b57610375565b8063715018a61161019f578063715018a6146108cb57806379b004c9146108e15780638187f516146109095780638a8c523c1461093157610375565b80636ac5eeee1461084f5780636ddd17131461086557806370a082311461088f57610375565b80633ac0b1ee1161029f5780634f7041a51161023d5780635a61a962116102175780635a61a962146107bd5780635b26059d146107d35780636135af2a146107fd57806368b3f9bb1461082557610375565b80634f7041a51461071b578063571ac8b0146107455780635898c8df1461078157610375565b80633f8555ea116102795780633f8555ea14610673578063407d51431461069d5780634ada218b146106c75780634f00beaf146106f157610375565b80633ac0b1ee146105e35780633af32abf1461060d5780633eaaf86b1461064957610375565b80632b112e491161030c578063364333f4116102e6578063364333f41461052b57806339071c9e14610541578063395093511461056b57806339653bd4146105a757610375565b80632b112e49146104ad578063313ce567146104d7578063329ceacd1461050157610375565b806316ce74eb1161034857806316ce74eb1461040757806318160ddd1461041d57806323b872dd1461044757806325ec340b1461048357610375565b806306fdde0314610379578063095ea7b3146103a35780630f58cfa7146103df57610375565b3661037557005b5f80fd5b348015610384575f80fd5b5061038d610cab565b60405161039a9190613259565b60405180910390f35b3480156103ae575f80fd5b506103c960048036038101906103c4919061330a565b610d3b565b6040516103d69190613362565b60405180910390f35b3480156103ea575f80fd5b50610405600480360381019061040091906133a5565b610e28565b005b348015610412575f80fd5b5061041b610ed4565b005b348015610428575f80fd5b50610431610f08565b60405161043e91906133df565b60405180910390f35b348015610452575f80fd5b5061046d600480360381019061046891906133f8565b610f11565b60405161047a9190613362565b60405180910390f35b34801561048e575f80fd5b50610497611181565b6040516104a49190613457565b60405180910390f35b3480156104b8575f80fd5b506104c16111a6565b6040516104ce91906133df565b60405180910390f35b3480156104e2575f80fd5b506104eb6111d7565b6040516104f8919061348b565b60405180910390f35b34801561050c575f80fd5b506105156111df565b6040516105229190613362565b60405180910390f35b348015610536575f80fd5b5061053f6111ed565b005b34801561054c575f80fd5b50610555611269565b6040516105629190613362565b60405180910390f35b348015610576575f80fd5b50610591600480360381019061058c919061330a565b61127c565b60405161059e9190613362565b60405180910390f35b3480156105b2575f80fd5b506105cd60048036038101906105c891906134a4565b61146b565b6040516105da91906133df565b60405180910390f35b3480156105ee575f80fd5b506105f761148b565b60405161060491906133df565b60405180910390f35b348015610618575f80fd5b50610633600480360381019061062e91906134e2565b611491565b6040516106409190613362565b60405180910390f35b348015610654575f80fd5b5061065d6114ae565b60405161066a91906133df565b60405180910390f35b34801561067e575f80fd5b506106876114b4565b60405161069491906133df565b60405180910390f35b3480156106a8575f80fd5b506106b1611519565b6040516106be91906133df565b60405180910390f35b3480156106d2575f80fd5b506106db61151f565b6040516106e89190613362565b60405180910390f35b3480156106fc575f80fd5b50610705611532565b6040516107129190613362565b60405180910390f35b348015610726575f80fd5b5061072f611545565b60405161073c91906133df565b60405180910390f35b348015610750575f80fd5b5061076b600480360381019061076691906134e2565b61154b565b6040516107789190613362565b60405180910390f35b34801561078c575f80fd5b506107a760048036038101906107a291906134e2565b61157d565b6040516107b491906133df565b60405180910390f35b3480156107c8575f80fd5b506107d1611592565b005b3480156107de575f80fd5b506107e7611679565b6040516107f491906133df565b60405180910390f35b348015610808575f80fd5b50610823600480360381019061081e919061350d565b61167f565b005b348015610830575f80fd5b506108396116df565b6040516108469190613362565b60405180910390f35b34801561085a575f80fd5b506108636116f1565b005b348015610870575f80fd5b506108796117aa565b6040516108869190613362565b60405180910390f35b34801561089a575f80fd5b506108b560048036038101906108b091906134e2565b6117bd565b6040516108c291906133df565b60405180910390f35b3480156108d6575f80fd5b506108df611817565b005b3480156108ec575f80fd5b50610907600480360381019061090291906133a5565b61182a565b005b348015610914575f80fd5b5061092f600480360381019061092a91906134e2565b6118d5565b005b34801561093c575f80fd5b50610945611920565b005b348015610952575f80fd5b5061095b6119b0565b6040516109689190613457565b60405180910390f35b34801561097c575f80fd5b506109856119d7565b6040516109929190613259565b60405180910390f35b3480156109a6575f80fd5b506109af611a67565b6040516109bc9190613362565b60405180910390f35b3480156109d0575f80fd5b506109eb60048036038101906109e6919061330a565b611a79565b6040516109f89190613362565b60405180910390f35b348015610a0c575f80fd5b50610a276004803603810190610a22919061330a565b611cf7565b604051610a349190613362565b60405180910390f35b348015610a48575f80fd5b50610a51611d0b565b604051610a5e9190613457565b60405180910390f35b348015610a72575f80fd5b50610a7b611d30565b005b348015610a88575f80fd5b50610a91612024565b005b348015610a9e575f80fd5b50610aa76120dd565b604051610ab491906133df565b60405180910390f35b348015610ac8575f80fd5b50610ad16120ec565b604051610ade91906133df565b60405180910390f35b348015610af2575f80fd5b50610b0d6004803603810190610b08919061354b565b6120f0565b005b348015610b1a575f80fd5b50610b23612102565b604051610b3091906135d1565b60405180910390f35b348015610b44575f80fd5b50610b4d612127565b604051610b5a91906133df565b60405180910390f35b348015610b6e575f80fd5b50610b7761212d565b604051610b8491906133df565b60405180910390f35b348015610b98575f80fd5b50610bb36004803603810190610bae91906135ea565b612133565b005b348015610bc0575f80fd5b50610bc96121f9565b005b348015610bd6575f80fd5b50610bf16004803603810190610bec91906134a4565b612217565b604051610bfe91906133df565b60405180910390f35b348015610c12575f80fd5b50610c2d6004803603810190610c289190613628565b612299565b005b348015610c3a575f80fd5b50610c556004803603810190610c5091906134e2565b612340565b005b348015610c62575f80fd5b50610c6b6123c2565b604051610c7891906133df565b60405180910390f35b348015610c8c575f80fd5b50610c956123c8565b604051610ca29190613362565b60405180910390f35b606060118054610cba90613693565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce690613693565b8015610d315780601f10610d0857610100808354040283529160200191610d31565b820191905f5260205f20905b815481529060010190602001808311610d1457829003601f168201915b5050505050905090565b5f8160155f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610e1691906133df565b60405180910390a36001905092915050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610eb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eae9061370d565b60405180910390fd5b80600b60056101000a81548160ff02191690831515021790555050565b610edc6123db565b5f600b60046101000a81548160ff02191690831515021790555060056009819055506005600a81905550565b5f600554905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541461116d578160155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561106c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106390613775565b60405180910390fd5b8160155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546110f091906137c0565b60155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b611178848484612459565b90509392505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6111b05f6117bd565b6111bb61dead6117bd565b6005546111c891906137c0565b6111d291906137c0565b905090565b5f6012905090565b5f600f546010541415905090565b6111f56123db565b5f3373ffffffffffffffffffffffffffffffffffffffff164760405161121a90613820565b5f6040518083038185875af1925050503d805f8114611254576040519150601f19603f3d011682016040523d82523d5f602084013e611259565b606091505b5050905080611266575f80fd5b50565b600b60059054906101000a900460ff1681565b5f6113088260155f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c7290919063ffffffff16565b60155f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560155f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460405161145991906133df565b60405180910390a36001905092915050565b6015602052815f5260405f20602052805f5260405f205f91509150505481565b60105481565b6016602052805f5260405f205f915054906101000a900460ff1681565b60055481565b6a52b7d2dcc80cd2e40000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6114eb9190613861565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61151691906137c0565b81565b600e5481565b600b60029054906101000a900460ff1681565b600b60049054906101000a900460ff1681565b60095481565b5f611576827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610d3b565b9050919050565b6014602052805f5260405f205f915090505481565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611621576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116189061370d565b60405180910390fd5b60016009819055506001600a819055505f600b60046101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b60065481565b6116876123db565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600b5f9054906101000a900460ff1681565b6001600b60066101000a81548160ff0219169083151502179055505f611716306117bd565b90505f8103611725575061178e565b61174f6014611741600654600754612c8790919063ffffffff16565b612c9c90919063ffffffff16565b811115611783576117806014611772600654600754612c8790919063ffffffff16565b612c9c90919063ffffffff16565b90505b61178c81612cb1565b505b5f600b60066101000a81548160ff021916908315150217905550565b600b60039054906101000a900460ff1681565b5f61181060065460145f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c8790919063ffffffff16565b9050919050565b61181f6123db565b6118285f612edc565b565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b09061370d565b60405180910390fd5b80600b5f6101000a81548160ff02191690831515021790555050565b6118dd6123db565b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6119286123db565b600b60029054906101000a900460ff1615611978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196f906138db565b60405180910390fd5b6001600b60026101000a81548160ff0219169083151502179055506001600b60036101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060601280546119e690613693565b80601f0160208091040260200160405190810160405280929190818152602001828054611a1290613693565b8015611a5d5780601f10611a3457610100808354040283529160200191611a5d565b820191905f5260205f20905b815481529060010190602001808311611a4057829003601f168201915b5050505050905090565b60135f9054906101000a900460ff1681565b5f8060155f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050808310611b7f575f60155f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611c0f565b611b928382612f9d90919063ffffffff16565b60155f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560155f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054604051611ce491906133df565b60405180910390a3600191505092915050565b5f611d03338484612459565b905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611dbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db69061370d565b60405180910390fd5b5f429050600f5460105403611e0b577fdd970dd9b5bfe707922155b058a407655cb18288b807e2216442bca8ad83d6b55f604051611dfd919061397c565b60405180910390a150612022565b5f600f54601054611e1c91906139a8565b90505f600f5460105411611e3f57601054600f54611e3a91906137c0565b611e50565b600f54601054611e4f91906137c0565b5b90505f82620f424083611e6391906139db565b611e6d9190613a1c565b90505f60135f9054906101000a900460ff16611ea557620f424082620ee6c4611e9691906139db565b611ea09190613a1c565b611ec3565b620f424082620ff938611eb891906139db565b611ec29190613a1c565b5b90505f620f424082600554611ed891906139db565b611ee29190613a1c565b90505f196fffffffffffffffffffffffffffffffff168111611f2257670de0b6b3a76400008110611f135780611f1d565b670de0b6b3a76400005b611f37565b5f196fffffffffffffffffffffffffffffffff165b9050806005819055506005546a52b7d2dcc80cd2e40000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611f7a9190613861565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611fa591906137c0565b611faf9190613a1c565b6006819055505f6010819055505f600f81905550600b60059054906101000a900460ff1615611fe157611fe0612fb2565b5b857f11c6bf55864ff83827df712625d7a80e5583eef0264921025e7cd22003a2151160055460405161201391906133df565b60405180910390a25050505050505b565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120aa9061370d565b60405180910390fd5b60135f9054906101000a900460ff161560135f6101000a81548160ff021916908315150217905550565b6a52b7d2dcc80cd2e400000081565b5f81565b6120f86123db565b80600e8190555050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b60015481565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b99061370d565b60405180910390fd5b81600b5f6101000a81548160ff02191690831515021790555080600b60016101000a81548160ff0219169083151502179055505050565b6122016123db565b612214303361220f306117bd565b612459565b50565b5f60155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6122a16123db565b81600b60036101000a81548160ff021916908315150217905550620186a0816a52b7d2dcc80cd2e40000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6122f79190613861565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61232291906137c0565b61232c91906139db565b6123369190613a1c565b6007819055505050565b6123486123db565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ad90613abc565b60405180910390fd5b6123bf81612edc565b50565b600f5481565b600b60019054906101000a900460ff1681565b6123e3613031565b73ffffffffffffffffffffffffffffffffffffffff166124016119b0565b73ffffffffffffffffffffffffffffffffffffffff1614612457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244e90613b24565b60405180910390fd5b565b5f80821161249c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249390613bb2565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361250c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250390613c1a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361257a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257190613c1a565b60405180910390fd5b5f61259060065484612c9c90919063ffffffff16565b90508060145f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015612612576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260990613c82565b60405180910390fd5b600b60069054906101000a900460ff16158015612676575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156126c9575060165f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612a8057600b60029054906101000a900460ff1661271d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271490613cea565b60405180910390fd5b61272684613038565b15612783573073ffffffffffffffffffffffffffffffffffffffff16636ac5eeee6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612770575f80fd5b505af1925050508015612781575060015b505b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612859577fda1382e9d46d51bc7bb1ca2f7b95af327f7106f5d7d5df69d2f3de2644165bfc60018560405161280a929190613d08565b60405180910390a183600f5f82825461282391906139a8565b92505081905550612852606461284460095485612c9c90919063ffffffff16565b612c8790919063ffffffff16565b905061292a565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612929577fda1382e9d46d51bc7bb1ca2f7b95af327f7106f5d7d5df69d2f3de2644165bfc5f856040516128de929190613d08565b60405180910390a18360105f8282546128f791906139a8565b925050819055506129266064612918600a5485612c9c90919063ffffffff16565b612c8790919063ffffffff16565b90505b5b5f811115612a7e578060145f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461297e91906137c0565b925050819055508060145f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546129d191906139a8565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612a3c60065485612c8790919063ffffffff16565b604051612a4991906133df565b60405180910390a38082612a5d91906137c0565b9150600b60049054906101000a900460ff1615612a7d57612a7c6130eb565b5b5b505b612ad08160145f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612f9d90919063ffffffff16565b60145f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612b618160145f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c7290919063ffffffff16565b60145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fdd970dd9b5bfe707922155b058a407655cb18288b807e2216442bca8ad83d6b5612bd860065483612c8790919063ffffffff16565b604051612be59190613d79565b60405180910390a18373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612c5160065485612c8790919063ffffffff16565b604051612c5e91906133df565b60405180910390a360019150509392505050565b5f8183612c7f91906139a8565b905092915050565b5f8183612c949190613a1c565b905092915050565b5f8183612ca991906139db565b905092915050565b5f600267ffffffffffffffff811115612ccd57612ccc613da5565b5b604051908082528060200260200182016040528015612cfb5781602001602082028036833780820191505090505b50905030815f81518110612d1257612d11613dd2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612db6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dda9190613e13565b81600181518110612dee57612ded613dd2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612eab959493929190613ef5565b5f604051808303815f87803b158015612ec2575f80fd5b505af1158015612ed4573d5f803e3d5ffd5b505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f8183612faa91906137c0565b905092915050565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561301c575f80fd5b505af192505050801561302d575060015b5050565b5f33905090565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156130a25750600b60069054906101000a900460ff16155b80156130ba5750600b60039054906101000a900460ff165b80156130e457506130d8600654600754612c8790919063ffffffff16565b6130e1306117bd565b10155b9050919050565b6001600d5f8282546130fd91906139a8565b92505081905550600e54600d540361312357600a600981905550600a80819055506131cd565b6131396002600e54612c9c90919063ffffffff16565b600d54036131565760056009819055506005600a819055506131cc565b61316c6003600e54612c9c90919063ffffffff16565b600d54106131cb5760056009819055506005600a819055505f600b60046101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a15b5b5b565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156132065780820151818401526020810190506131eb565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61322b826131cf565b61323581856131d9565b93506132458185602086016131e9565b61324e81613211565b840191505092915050565b5f6020820190508181035f8301526132718184613221565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6132a68261327d565b9050919050565b6132b68161329c565b81146132c0575f80fd5b50565b5f813590506132d1816132ad565b92915050565b5f819050919050565b6132e9816132d7565b81146132f3575f80fd5b50565b5f81359050613304816132e0565b92915050565b5f80604083850312156133205761331f613279565b5b5f61332d858286016132c3565b925050602061333e858286016132f6565b9150509250929050565b5f8115159050919050565b61335c81613348565b82525050565b5f6020820190506133755f830184613353565b92915050565b61338481613348565b811461338e575f80fd5b50565b5f8135905061339f8161337b565b92915050565b5f602082840312156133ba576133b9613279565b5b5f6133c784828501613391565b91505092915050565b6133d9816132d7565b82525050565b5f6020820190506133f25f8301846133d0565b92915050565b5f805f6060848603121561340f5761340e613279565b5b5f61341c868287016132c3565b935050602061342d868287016132c3565b925050604061343e868287016132f6565b9150509250925092565b6134518161329c565b82525050565b5f60208201905061346a5f830184613448565b92915050565b5f60ff82169050919050565b61348581613470565b82525050565b5f60208201905061349e5f83018461347c565b92915050565b5f80604083850312156134ba576134b9613279565b5b5f6134c7858286016132c3565b92505060206134d8858286016132c3565b9150509250929050565b5f602082840312156134f7576134f6613279565b5b5f613504848285016132c3565b91505092915050565b5f806040838503121561352357613522613279565b5b5f613530858286016132c3565b925050602061354185828601613391565b9150509250929050565b5f602082840312156135605761355f613279565b5b5f61356d848285016132f6565b91505092915050565b5f819050919050565b5f61359961359461358f8461327d565b613576565b61327d565b9050919050565b5f6135aa8261357f565b9050919050565b5f6135bb826135a0565b9050919050565b6135cb816135b1565b82525050565b5f6020820190506135e45f8301846135c2565b92915050565b5f8060408385031215613600576135ff613279565b5b5f61360d85828601613391565b925050602061361e85828601613391565b9150509250929050565b5f806040838503121561363e5761363d613279565b5b5f61364b85828601613391565b925050602061365c858286016132f6565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806136aa57607f821691505b6020821081036136bd576136bc613666565b5b50919050565b7f4e6f74206f7261636c65000000000000000000000000000000000000000000005f82015250565b5f6136f7600a836131d9565b9150613702826136c3565b602082019050919050565b5f6020820190508181035f830152613724816136eb565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f61375f601d836131d9565b915061376a8261372b565b602082019050919050565b5f6020820190508181035f83015261378c81613753565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6137ca826132d7565b91506137d5836132d7565b92508282039050818111156137ed576137ec613793565b5b92915050565b5f81905092915050565b50565b5f61380b5f836137f3565b9150613816826137fd565b5f82019050919050565b5f61382a82613800565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61386b826132d7565b9150613876836132d7565b92508261388657613885613834565b5b828206905092915050565b7f546f6b656e206c61756e636865640000000000000000000000000000000000005f82015250565b5f6138c5600e836131d9565b91506138d082613891565b602082019050919050565b5f6020820190508181035f8301526138f2816138b9565b9050919050565b7f73616d6520616d6f756e742c206e6f206e65656420746f2072656261736500005f82015250565b5f61392d601e836131d9565b9150613938826138f9565b602082019050919050565b5f819050919050565b5f61396661396161395c84613943565b613576565b6132d7565b9050919050565b6139768161394c565b82525050565b5f6040820190508181035f83015261399381613921565b90506139a2602083018461396d565b92915050565b5f6139b2826132d7565b91506139bd836132d7565b92508282019050808211156139d5576139d4613793565b5b92915050565b5f6139e5826132d7565b91506139f0836132d7565b92508282026139fe816132d7565b91508282048414831517613a1557613a14613793565b5b5092915050565b5f613a26826132d7565b9150613a31836132d7565b925082613a4157613a40613834565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613aa66026836131d9565b9150613ab182613a4c565b604082019050919050565b5f6020820190508181035f830152613ad381613a9a565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613b0e6020836131d9565b9150613b1982613ada565b602082019050919050565b5f6020820190508181035f830152613b3b81613b02565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613b9c6029836131d9565b9150613ba782613b42565b604082019050919050565b5f6020820190508181035f830152613bc981613b90565b9050919050565b7f506c6561736520757365206120676f6f642061646472657373000000000000005f82015250565b5f613c046019836131d9565b9150613c0f82613bd0565b602082019050919050565b5f6020820190508181035f830152613c3181613bf8565b9050919050565b7f496e73756666696369656e742042616c616e63650000000000000000000000005f82015250565b5f613c6c6014836131d9565b9150613c7782613c38565b602082019050919050565b5f6020820190508181035f830152613c9981613c60565b9050919050565b7f54726164696e67206e6f74206c697665000000000000000000000000000000005f82015250565b5f613cd46010836131d9565b9150613cdf82613ca0565b602082019050919050565b5f6020820190508181035f830152613d0181613cc8565b9050919050565b5f604082019050613d1b5f830185613353565b613d2860208301846133d0565b9392505050565b7f416d6f756e74207472616e7366657265640000000000000000000000000000005f82015250565b5f613d636011836131d9565b9150613d6e82613d2f565b602082019050919050565b5f6040820190508181035f830152613d9081613d57565b9050613d9f60208301846133d0565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613e0d816132ad565b92915050565b5f60208284031215613e2857613e27613279565b5b5f613e3584828501613dff565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613e708161329c565b82525050565b5f613e818383613e67565b60208301905092915050565b5f602082019050919050565b5f613ea382613e3e565b613ead8185613e48565b9350613eb883613e58565b805f5b83811015613ee8578151613ecf8882613e76565b9750613eda83613e8d565b925050600181019050613ebb565b5085935050505092915050565b5f60a082019050613f085f8301886133d0565b613f15602083018761396d565b8181036040830152613f278186613e99565b9050613f366060830185613448565b613f4360808301846133d0565b969550505050505056fea264697066735822122053f061c23463eb10139142b1b429b412b5a54a2a3fedfb3cdc885d1fa3a756c764736f6c63430008140033