0x6080604052600436106101395760003560e01c806370a08231116100ab5780638c41180e1161006f5780638c41180e1461043557806395d89b411461045e578063a8aa1b3114610489578063a9059cbb146104b4578063dd62ed3e146104f1578063f2fde38b1461052e57610140565b806370a082311461034e57806378109e541461038b5780637d1db4a5146103b657806384836778146103e1578063893d20e81461040a57610140565b8063293230b8116100fd578063293230b8146102405780632f54bf6e14610257578063313ce5671461029457806334c5d2ce146102bf5780633f4218e0146102e857806348ff2b8b1461032557610140565b806306fdde0314610145578063095ea7b31461017057806318160ddd146101ad5780631f976b7e146101d857806323b872dd1461020357610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a610557565b6040516101679190612552565b60405180910390f35b34801561017c57600080fd5b506101976004803603810190610192919061260d565b610594565b6040516101a49190612668565b60405180910390f35b3480156101b957600080fd5b506101c26105ab565b6040516101cf9190612692565b60405180910390f35b3480156101e457600080fd5b506101ed6105ec565b6040516101fa9190612692565b60405180910390f35b34801561020f57600080fd5b5061022a600480360381019061022591906126ad565b610615565b6040516102379190612668565b60405180910390f35b34801561024c57600080fd5b506102556106e0565b005b34801561026357600080fd5b5061027e60048036038101906102799190612700565b610745565b60405161028b9190612668565b60405180910390f35b3480156102a057600080fd5b506102a961079e565b6040516102b69190612749565b60405180910390f35b3480156102cb57600080fd5b506102e660048036038101906102e19190612764565b6107a7565b005b3480156102f457600080fd5b5061030f600480360381019061030a9190612700565b610907565b60405161031c9190612668565b60405180910390f35b34801561033157600080fd5b5061034c600480360381019061034791906127e3565b610927565b005b34801561035a57600080fd5b5061037560048036038101906103709190612700565b6109ca565b6040516103829190612692565b60405180910390f35b34801561039757600080fd5b506103a0610a13565b6040516103ad9190612692565b60405180910390f35b3480156103c257600080fd5b506103cb610a3c565b6040516103d89190612692565b60405180910390f35b3480156103ed57600080fd5b5061040860048036038101906104039190612823565b610a65565b005b34801561041657600080fd5b5061041f610ba1565b60405161042c91906128bf565b60405180910390f35b34801561044157600080fd5b5061045c600480360381019061045791906127e3565b610bca565b005b34801561046a57600080fd5b50610473610c6d565b6040516104809190612552565b60405180910390f35b34801561049557600080fd5b5061049e610caa565b6040516104ab91906128bf565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d6919061260d565b610cd0565b6040516104e89190612668565b60405180910390f35b3480156104fd57600080fd5b50610518600480360381019061051391906128da565b610ce7565b6040516105259190612692565b60405180910390f35b34801561053a57600080fd5b5061055560048036038101906105509190612958565b610d6e565b005b60606040518060400160405280600981526020017f416d617465726173750000000000000000000000000000000000000000000000815250905090565b60006105a1338484610e30565b6001905092915050565b60006105e76105ba60006109ca565b6105d96105c861dead6109ca565b600154610ff990919063ffffffff16565b610ff990919063ffffffff16565b905090565b60006012546003546105fc6105ab565b61060691906129b4565b6106109190612a3d565b905090565b600061062284848461100f565b6106d584336106d08560405180606001604052806028815260200161344d60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112089092919063ffffffff16565b610e30565b600190509392505050565b6106e933610745565b610728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071f90612aba565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6107b033610745565b6107ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e690612aba565b60405180910390fd5b6000612710846107fd6105ab565b61080791906129b4565b6108119190612a3d565b90506000612710846108216105ab565b61082b91906129b4565b6108359190612a3d565b90506000612710846108456105ab565b61084f91906129b4565b6108599190612a3d565b905085600281905550846003819055508360048190555060006108a16103e861089360056108856105ab565b61125d90919063ffffffff16565b61127390919063ffffffff16565b90508084101580156108b35750808310155b80156108bf5750808210155b6108fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f590612b4c565b60405180910390fd5b50505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b61093033610745565b61096f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096690612aba565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601254600454610a236105ab565b610a2d91906129b4565b610a379190612a3d565b905090565b6000601254600254610a4c6105ab565b610a5691906129b4565b610a609190612a3d565b905090565b610a6e33610745565b610aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa490612aba565b60405180910390fd5b85600b8190555084600c8190555083600e8190555082600d54610ad09190612b6c565b508160108190555080601181905550610b1683610b0886610afa898b61128990919063ffffffff16565b61128990919063ffffffff16565b61128990919063ffffffff16565b600f81905550610b32600560125461127390919063ffffffff16565b600f5411158015610b5a5750610b54600560125461127390919063ffffffff16565b60105411155b610b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9090612c12565b60405180910390fd5b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610bd333610745565b610c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0990612aba565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60606040518060400160405280600881526020017f244f4d494b414d49000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610cdd33848461100f565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d7733610745565b610db6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dad90612aba565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610e259190612c91565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9690612d1e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0590612db0565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610fec9190612692565b60405180910390a3505050565b600081836110079190612b6c565b905092915050565b61101a83838361129f565b6110248383611410565b61102f83838361150d565b61103983836116eb565b6110448383836117b6565b61104f8383836119f5565b6110a181600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ff990919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006110f08484611a1e565b6110fa5781611106565b611105848484611acc565b5b905061115a81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461128990919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516111fa9190612692565b60405180910390a350505050565b6000838311158290611250576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112479190612552565b60405180910390fd5b5082840390509392505050565b6000818361126b91906129b4565b905092915050565b600081836112819190612a3d565b905092915050565b600081836112979190612dd0565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361130e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130590612e76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361137d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137490612f08565b60405180910390fd5b600081116113c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b790612f9a565b60405180910390fd5b6113c9836109ca565b81111561140b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114029061302c565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114b45750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561150957600a60149054906101000a900460ff16611508576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ff90613098565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115b15750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561160b5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611645575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156116e657611652610a13565b6116a482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461128990919063ffffffff16565b11156116e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116dc90613104565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156117925750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117b2576001601460008282546117aa9190612dd0565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118fe576118136105ec565b8111158061186a5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118be5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6118fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f490613170565b60405180910390fd5b5b611906610a3c565b8111158061195d5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119b15750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6119f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e790613170565b60405180910390fd5b505050565b611a00838383611c74565b15611a1957611a10601654611dad565b60006014819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ac45750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080611ad98585611ffe565b1115611c69576000611b11611aee8686611ffe565b611b036012548661127390919063ffffffff16565b61125d90919063ffffffff16565b9050611b6581600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461128990919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c059190612692565b60405180910390a36000600e541115611c4e57611c4d3061dead611c48600e54611c3a6012548961127390919063ffffffff16565b61125d90919063ffffffff16565b61100f565b5b611c618184610ff990919063ffffffff16565b915050611c6d565b8190505b9392505050565b60008060175483101590506000601654611c8d306109ca565b10159050601560009054906101000a900460ff16158015611cba5750601360009054906101000a900460ff165b8015611cd25750600a60149054906101000a900460ff165b8015611cdb5750815b8015611d315750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d8a5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611d995750600360145410155b8015611da25750805b925050509392505050565b6001601560006101000a81548160ff0219169083151502179055506000611e1b6002611e0d600d54611dff600c54611df16001600b5461128990919063ffffffff16565b61128990919063ffffffff16565b61128990919063ffffffff16565b61125d90919063ffffffff16565b90506000611e4682611e38600b548661125d90919063ffffffff16565b61127390919063ffffffff16565b90506000611e5d8285610ff990919063ffffffff16565b90506000479050611e6d8261218d565b6000611e828247610ff990919063ffffffff16565b90506000611ead611e9e600b5488610ff990919063ffffffff16565b8361127390919063ffffffff16565b90506000611ec6600b548361125d90919063ffffffff16565b90506000811115611edc57611edb86826123d0565b5b6000611f06600c54611ef860028661125d90919063ffffffff16565b61125d90919063ffffffff16565b90506000811115611f6d57735aae07ba8263631793ad5dcf1580384575ad695573ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f6b573d6000803e3d6000fd5b505b60004790506000811115611fd75773f0ab700e4a653dc204f6ccd6a4363e98447031fb73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611fd5573d6000803e3d6000fd5b505b5050505050505050506000601560006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120a15750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156120c3576120bc6064601254610ff990919063ffffffff16565b9050612187565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612122576010549050612187565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361218157600f549050612187565b60115490505b92915050565b6000600267ffffffffffffffff8111156121aa576121a9613190565b5b6040519080825280602002602001820160405280156121d85781602001602082028036833780820191505090505b50905030816000815181106121f0576121ef6131bf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122bb9190613203565b816001815181106122cf576122ce6131bf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061233630600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e30565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161239a959493929190613329565b600060405180830381600087803b1580156123b457600080fd5b505af11580156123c8573d6000803e3d6000fd5b505050505050565b6123fd30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e30565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008073f0ab700e4a653dc204f6ccd6a4363e98447031fb426040518863ffffffff1660e01b815260040161247896959493929190613383565b60606040518083038185885af1158015612496573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124bb91906133f9565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156124fc5780820151818401526020810190506124e1565b60008484015250505050565b6000601f19601f8301169050919050565b6000612524826124c2565b61252e81856124cd565b935061253e8185602086016124de565b61254781612508565b840191505092915050565b6000602082019050818103600083015261256c8184612519565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125a482612579565b9050919050565b6125b481612599565b81146125bf57600080fd5b50565b6000813590506125d1816125ab565b92915050565b6000819050919050565b6125ea816125d7565b81146125f557600080fd5b50565b600081359050612607816125e1565b92915050565b6000806040838503121561262457612623612574565b5b6000612632858286016125c2565b9250506020612643858286016125f8565b9150509250929050565b60008115159050919050565b6126628161264d565b82525050565b600060208201905061267d6000830184612659565b92915050565b61268c816125d7565b82525050565b60006020820190506126a76000830184612683565b92915050565b6000806000606084860312156126c6576126c5612574565b5b60006126d4868287016125c2565b93505060206126e5868287016125c2565b92505060406126f6868287016125f8565b9150509250925092565b60006020828403121561271657612715612574565b5b6000612724848285016125c2565b91505092915050565b600060ff82169050919050565b6127438161272d565b82525050565b600060208201905061275e600083018461273a565b92915050565b60008060006060848603121561277d5761277c612574565b5b600061278b868287016125f8565b935050602061279c868287016125f8565b92505060406127ad868287016125f8565b9150509250925092565b6127c08161264d565b81146127cb57600080fd5b50565b6000813590506127dd816127b7565b92915050565b600080604083850312156127fa576127f9612574565b5b6000612808858286016125c2565b9250506020612819858286016127ce565b9150509250929050565b60008060008060008060c087890312156128405761283f612574565b5b600061284e89828a016125f8565b965050602061285f89828a016125f8565b955050604061287089828a016125f8565b945050606061288189828a016125f8565b935050608061289289828a016125f8565b92505060a06128a389828a016125f8565b9150509295509295509295565b6128b981612599565b82525050565b60006020820190506128d460008301846128b0565b92915050565b600080604083850312156128f1576128f0612574565b5b60006128ff858286016125c2565b9250506020612910858286016125c2565b9150509250929050565b600061292582612579565b9050919050565b6129358161291a565b811461294057600080fd5b50565b6000813590506129528161292c565b92915050565b60006020828403121561296e5761296d612574565b5b600061297c84828501612943565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129bf826125d7565b91506129ca836125d7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612a0357612a02612985565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a48826125d7565b9150612a53836125d7565b925082612a6357612a62612a0e565b5b828204905092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612aa46006836124cd565b9150612aaf82612a6e565b602082019050919050565b60006020820190508181036000830152612ad381612a97565b9050919050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612b36602e836124cd565b9150612b4182612ada565b604082019050919050565b60006020820190508181036000830152612b6581612b29565b9050919050565b6000612b77826125d7565b9150612b82836125d7565b9250828203905081811115612b9a57612b99612985565b5b92915050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b6000612bfc602c836124cd565b9150612c0782612ba0565b604082019050919050565b60006020820190508181036000830152612c2b81612bef565b9050919050565b6000819050919050565b6000612c57612c52612c4d84612579565b612c32565b612579565b9050919050565b6000612c6982612c3c565b9050919050565b6000612c7b82612c5e565b9050919050565b612c8b81612c70565b82525050565b6000602082019050612ca66000830184612c82565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612d086024836124cd565b9150612d1382612cac565b604082019050919050565b60006020820190508181036000830152612d3781612cfb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d9a6022836124cd565b9150612da582612d3e565b604082019050919050565b60006020820190508181036000830152612dc981612d8d565b9050919050565b6000612ddb826125d7565b9150612de6836125d7565b9250828201905080821115612dfe57612dfd612985565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612e606025836124cd565b9150612e6b82612e04565b604082019050919050565b60006020820190508181036000830152612e8f81612e53565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612ef26023836124cd565b9150612efd82612e96565b604082019050919050565b60006020820190508181036000830152612f2181612ee5565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612f846029836124cd565b9150612f8f82612f28565b604082019050919050565b60006020820190508181036000830152612fb381612f77565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b60006130166031836124cd565b915061302182612fba565b604082019050919050565b6000602082019050818103600083015261304581613009565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b6000613082600e836124cd565b915061308d8261304c565b602082019050919050565b600060208201905081810360008301526130b181613075565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b60006130ee601e836124cd565b91506130f9826130b8565b602082019050919050565b6000602082019050818103600083015261311d816130e1565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b600061315a6011836124cd565b915061316582613124565b602082019050919050565b600060208201905081810360008301526131898161314d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506131fd816125ab565b92915050565b60006020828403121561321957613218612574565b5b6000613227848285016131ee565b91505092915050565b6000819050919050565b600061325561325061324b84613230565b612c32565b6125d7565b9050919050565b6132658161323a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6132a081612599565b82525050565b60006132b28383613297565b60208301905092915050565b6000602082019050919050565b60006132d68261326b565b6132e08185613276565b93506132eb83613287565b8060005b8381101561331c57815161330388826132a6565b975061330e836132be565b9250506001810190506132ef565b5085935050505092915050565b600060a08201905061333e6000830188612683565b61334b602083018761325c565b818103604083015261335d81866132cb565b905061336c60608301856128b0565b6133796080830184612683565b9695505050505050565b600060c08201905061339860008301896128b0565b6133a56020830188612683565b6133b2604083018761325c565b6133bf606083018661325c565b6133cc60808301856128b0565b6133d960a0830184612683565b979650505050505050565b6000815190506133f3816125e1565b92915050565b60008060006060848603121561341257613411612574565b5b6000613420868287016133e4565b9350506020613431868287016133e4565b9250506040613442868287016133e4565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ab533ff3cb07408b21ec6025e2364750c2b208ff52325ca6e441b8ba06b664c764736f6c63430008100033
0x60806040526009600a6200001491906200070f565b633b9aca0062000025919062000760565b60015560c860025560c860035560c86004556000600a60146101000a81548160ff0219169083151502179055506064600b5560c8600c556064600d556064600e556101f4600f556103e860105560006011556127106012556001601360006101000a81548160ff021916908315150217905550620186a0610190600154620000ae919062000760565b620000ba9190620007f0565b601655620186a0600a600154620000d2919062000760565b620000de9190620007f0565b601755348015620000ee57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000198573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001be919062000892565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000226573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024c919062000892565b6040518363ffffffff1660e01b81526004016200026b929190620008d5565b6020604051808303816000875af11580156200028b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b1919062000892565b905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073f0ab700e4a653dc204f6ccd6a4363e98447031fb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000735aae07ba8263631793ad5dcf1580384575ad695573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600154600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60015460405162000565919062000913565b60405180910390a3505062000930565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200060357808604811115620005db57620005da62000575565b5b6001851615620005eb5780820291505b8081029050620005fb85620005a4565b9450620005bb565b94509492505050565b6000826200061e5760019050620006f1565b816200062e5760009050620006f1565b8160018114620006475760028114620006525762000688565b6001915050620006f1565b60ff84111562000667576200066662000575565b5b8360020a91508482111562000681576200068062000575565b5b50620006f1565b5060208310610133831016604e8410600b8410161715620006c25782820a905083811115620006bc57620006bb62000575565b5b620006f1565b620006d18484846001620005b1565b92509050818404811115620006eb57620006ea62000575565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200071c82620006f8565b9150620007298362000702565b9250620007587fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200060c565b905092915050565b60006200076d82620006f8565b91506200077a83620006f8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007b657620007b562000575565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007fd82620006f8565b91506200080a83620006f8565b9250826200081d576200081c620007c1565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200085a826200082d565b9050919050565b6200086c816200084d565b81146200087857600080fd5b50565b6000815190506200088c8162000861565b92915050565b600060208284031215620008ab57620008aa62000828565b5b6000620008bb848285016200087b565b91505092915050565b620008cf816200084d565b82525050565b6000604082019050620008ec6000830185620008c4565b620008fb6020830184620008c4565b9392505050565b6200090d81620006f8565b82525050565b60006020820190506200092a600083018462000902565b92915050565b6134aa80620009406000396000f3fe6080604052600436106101395760003560e01c806370a08231116100ab5780638c41180e1161006f5780638c41180e1461043557806395d89b411461045e578063a8aa1b3114610489578063a9059cbb146104b4578063dd62ed3e146104f1578063f2fde38b1461052e57610140565b806370a082311461034e57806378109e541461038b5780637d1db4a5146103b657806384836778146103e1578063893d20e81461040a57610140565b8063293230b8116100fd578063293230b8146102405780632f54bf6e14610257578063313ce5671461029457806334c5d2ce146102bf5780633f4218e0146102e857806348ff2b8b1461032557610140565b806306fdde0314610145578063095ea7b31461017057806318160ddd146101ad5780631f976b7e146101d857806323b872dd1461020357610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a610557565b6040516101679190612552565b60405180910390f35b34801561017c57600080fd5b506101976004803603810190610192919061260d565b610594565b6040516101a49190612668565b60405180910390f35b3480156101b957600080fd5b506101c26105ab565b6040516101cf9190612692565b60405180910390f35b3480156101e457600080fd5b506101ed6105ec565b6040516101fa9190612692565b60405180910390f35b34801561020f57600080fd5b5061022a600480360381019061022591906126ad565b610615565b6040516102379190612668565b60405180910390f35b34801561024c57600080fd5b506102556106e0565b005b34801561026357600080fd5b5061027e60048036038101906102799190612700565b610745565b60405161028b9190612668565b60405180910390f35b3480156102a057600080fd5b506102a961079e565b6040516102b69190612749565b60405180910390f35b3480156102cb57600080fd5b506102e660048036038101906102e19190612764565b6107a7565b005b3480156102f457600080fd5b5061030f600480360381019061030a9190612700565b610907565b60405161031c9190612668565b60405180910390f35b34801561033157600080fd5b5061034c600480360381019061034791906127e3565b610927565b005b34801561035a57600080fd5b5061037560048036038101906103709190612700565b6109ca565b6040516103829190612692565b60405180910390f35b34801561039757600080fd5b506103a0610a13565b6040516103ad9190612692565b60405180910390f35b3480156103c257600080fd5b506103cb610a3c565b6040516103d89190612692565b60405180910390f35b3480156103ed57600080fd5b5061040860048036038101906104039190612823565b610a65565b005b34801561041657600080fd5b5061041f610ba1565b60405161042c91906128bf565b60405180910390f35b34801561044157600080fd5b5061045c600480360381019061045791906127e3565b610bca565b005b34801561046a57600080fd5b50610473610c6d565b6040516104809190612552565b60405180910390f35b34801561049557600080fd5b5061049e610caa565b6040516104ab91906128bf565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d6919061260d565b610cd0565b6040516104e89190612668565b60405180910390f35b3480156104fd57600080fd5b50610518600480360381019061051391906128da565b610ce7565b6040516105259190612692565b60405180910390f35b34801561053a57600080fd5b5061055560048036038101906105509190612958565b610d6e565b005b60606040518060400160405280600981526020017f416d617465726173750000000000000000000000000000000000000000000000815250905090565b60006105a1338484610e30565b6001905092915050565b60006105e76105ba60006109ca565b6105d96105c861dead6109ca565b600154610ff990919063ffffffff16565b610ff990919063ffffffff16565b905090565b60006012546003546105fc6105ab565b61060691906129b4565b6106109190612a3d565b905090565b600061062284848461100f565b6106d584336106d08560405180606001604052806028815260200161344d60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112089092919063ffffffff16565b610e30565b600190509392505050565b6106e933610745565b610728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071f90612aba565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6107b033610745565b6107ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e690612aba565b60405180910390fd5b6000612710846107fd6105ab565b61080791906129b4565b6108119190612a3d565b90506000612710846108216105ab565b61082b91906129b4565b6108359190612a3d565b90506000612710846108456105ab565b61084f91906129b4565b6108599190612a3d565b905085600281905550846003819055508360048190555060006108a16103e861089360056108856105ab565b61125d90919063ffffffff16565b61127390919063ffffffff16565b90508084101580156108b35750808310155b80156108bf5750808210155b6108fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f590612b4c565b60405180910390fd5b50505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b61093033610745565b61096f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096690612aba565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601254600454610a236105ab565b610a2d91906129b4565b610a379190612a3d565b905090565b6000601254600254610a4c6105ab565b610a5691906129b4565b610a609190612a3d565b905090565b610a6e33610745565b610aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa490612aba565b60405180910390fd5b85600b8190555084600c8190555083600e8190555082600d54610ad09190612b6c565b508160108190555080601181905550610b1683610b0886610afa898b61128990919063ffffffff16565b61128990919063ffffffff16565b61128990919063ffffffff16565b600f81905550610b32600560125461127390919063ffffffff16565b600f5411158015610b5a5750610b54600560125461127390919063ffffffff16565b60105411155b610b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9090612c12565b60405180910390fd5b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610bd333610745565b610c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0990612aba565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60606040518060400160405280600881526020017f244f4d494b414d49000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610cdd33848461100f565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d7733610745565b610db6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dad90612aba565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610e259190612c91565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9690612d1e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0590612db0565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610fec9190612692565b60405180910390a3505050565b600081836110079190612b6c565b905092915050565b61101a83838361129f565b6110248383611410565b61102f83838361150d565b61103983836116eb565b6110448383836117b6565b61104f8383836119f5565b6110a181600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ff990919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006110f08484611a1e565b6110fa5781611106565b611105848484611acc565b5b905061115a81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461128990919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516111fa9190612692565b60405180910390a350505050565b6000838311158290611250576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112479190612552565b60405180910390fd5b5082840390509392505050565b6000818361126b91906129b4565b905092915050565b600081836112819190612a3d565b905092915050565b600081836112979190612dd0565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361130e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130590612e76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361137d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137490612f08565b60405180910390fd5b600081116113c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b790612f9a565b60405180910390fd5b6113c9836109ca565b81111561140b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114029061302c565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114b45750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561150957600a60149054906101000a900460ff16611508576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ff90613098565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115b15750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561160b5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611645575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156116e657611652610a13565b6116a482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461128990919063ffffffff16565b11156116e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116dc90613104565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156117925750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117b2576001601460008282546117aa9190612dd0565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118fe576118136105ec565b8111158061186a5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118be5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6118fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f490613170565b60405180910390fd5b5b611906610a3c565b8111158061195d5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119b15750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6119f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e790613170565b60405180910390fd5b505050565b611a00838383611c74565b15611a1957611a10601654611dad565b60006014819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ac45750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080611ad98585611ffe565b1115611c69576000611b11611aee8686611ffe565b611b036012548661127390919063ffffffff16565b61125d90919063ffffffff16565b9050611b6581600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461128990919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c059190612692565b60405180910390a36000600e541115611c4e57611c4d3061dead611c48600e54611c3a6012548961127390919063ffffffff16565b61125d90919063ffffffff16565b61100f565b5b611c618184610ff990919063ffffffff16565b915050611c6d565b8190505b9392505050565b60008060175483101590506000601654611c8d306109ca565b10159050601560009054906101000a900460ff16158015611cba5750601360009054906101000a900460ff165b8015611cd25750600a60149054906101000a900460ff165b8015611cdb5750815b8015611d315750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d8a5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611d995750600360145410155b8015611da25750805b925050509392505050565b6001601560006101000a81548160ff0219169083151502179055506000611e1b6002611e0d600d54611dff600c54611df16001600b5461128990919063ffffffff16565b61128990919063ffffffff16565b61128990919063ffffffff16565b61125d90919063ffffffff16565b90506000611e4682611e38600b548661125d90919063ffffffff16565b61127390919063ffffffff16565b90506000611e5d8285610ff990919063ffffffff16565b90506000479050611e6d8261218d565b6000611e828247610ff990919063ffffffff16565b90506000611ead611e9e600b5488610ff990919063ffffffff16565b8361127390919063ffffffff16565b90506000611ec6600b548361125d90919063ffffffff16565b90506000811115611edc57611edb86826123d0565b5b6000611f06600c54611ef860028661125d90919063ffffffff16565b61125d90919063ffffffff16565b90506000811115611f6d57735aae07ba8263631793ad5dcf1580384575ad695573ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f6b573d6000803e3d6000fd5b505b60004790506000811115611fd75773f0ab700e4a653dc204f6ccd6a4363e98447031fb73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611fd5573d6000803e3d6000fd5b505b5050505050505050506000601560006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120a15750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156120c3576120bc6064601254610ff990919063ffffffff16565b9050612187565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612122576010549050612187565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361218157600f549050612187565b60115490505b92915050565b6000600267ffffffffffffffff8111156121aa576121a9613190565b5b6040519080825280602002602001820160405280156121d85781602001602082028036833780820191505090505b50905030816000815181106121f0576121ef6131bf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122bb9190613203565b816001815181106122cf576122ce6131bf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061233630600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e30565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161239a959493929190613329565b600060405180830381600087803b1580156123b457600080fd5b505af11580156123c8573d6000803e3d6000fd5b505050505050565b6123fd30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e30565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008073f0ab700e4a653dc204f6ccd6a4363e98447031fb426040518863ffffffff1660e01b815260040161247896959493929190613383565b60606040518083038185885af1158015612496573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124bb91906133f9565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156124fc5780820151818401526020810190506124e1565b60008484015250505050565b6000601f19601f8301169050919050565b6000612524826124c2565b61252e81856124cd565b935061253e8185602086016124de565b61254781612508565b840191505092915050565b6000602082019050818103600083015261256c8184612519565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125a482612579565b9050919050565b6125b481612599565b81146125bf57600080fd5b50565b6000813590506125d1816125ab565b92915050565b6000819050919050565b6125ea816125d7565b81146125f557600080fd5b50565b600081359050612607816125e1565b92915050565b6000806040838503121561262457612623612574565b5b6000612632858286016125c2565b9250506020612643858286016125f8565b9150509250929050565b60008115159050919050565b6126628161264d565b82525050565b600060208201905061267d6000830184612659565b92915050565b61268c816125d7565b82525050565b60006020820190506126a76000830184612683565b92915050565b6000806000606084860312156126c6576126c5612574565b5b60006126d4868287016125c2565b93505060206126e5868287016125c2565b92505060406126f6868287016125f8565b9150509250925092565b60006020828403121561271657612715612574565b5b6000612724848285016125c2565b91505092915050565b600060ff82169050919050565b6127438161272d565b82525050565b600060208201905061275e600083018461273a565b92915050565b60008060006060848603121561277d5761277c612574565b5b600061278b868287016125f8565b935050602061279c868287016125f8565b92505060406127ad868287016125f8565b9150509250925092565b6127c08161264d565b81146127cb57600080fd5b50565b6000813590506127dd816127b7565b92915050565b600080604083850312156127fa576127f9612574565b5b6000612808858286016125c2565b9250506020612819858286016127ce565b9150509250929050565b60008060008060008060c087890312156128405761283f612574565b5b600061284e89828a016125f8565b965050602061285f89828a016125f8565b955050604061287089828a016125f8565b945050606061288189828a016125f8565b935050608061289289828a016125f8565b92505060a06128a389828a016125f8565b9150509295509295509295565b6128b981612599565b82525050565b60006020820190506128d460008301846128b0565b92915050565b600080604083850312156128f1576128f0612574565b5b60006128ff858286016125c2565b9250506020612910858286016125c2565b9150509250929050565b600061292582612579565b9050919050565b6129358161291a565b811461294057600080fd5b50565b6000813590506129528161292c565b92915050565b60006020828403121561296e5761296d612574565b5b600061297c84828501612943565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129bf826125d7565b91506129ca836125d7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612a0357612a02612985565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a48826125d7565b9150612a53836125d7565b925082612a6357612a62612a0e565b5b828204905092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612aa46006836124cd565b9150612aaf82612a6e565b602082019050919050565b60006020820190508181036000830152612ad381612a97565b9050919050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612b36602e836124cd565b9150612b4182612ada565b604082019050919050565b60006020820190508181036000830152612b6581612b29565b9050919050565b6000612b77826125d7565b9150612b82836125d7565b9250828203905081811115612b9a57612b99612985565b5b92915050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b6000612bfc602c836124cd565b9150612c0782612ba0565b604082019050919050565b60006020820190508181036000830152612c2b81612bef565b9050919050565b6000819050919050565b6000612c57612c52612c4d84612579565b612c32565b612579565b9050919050565b6000612c6982612c3c565b9050919050565b6000612c7b82612c5e565b9050919050565b612c8b81612c70565b82525050565b6000602082019050612ca66000830184612c82565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612d086024836124cd565b9150612d1382612cac565b604082019050919050565b60006020820190508181036000830152612d3781612cfb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d9a6022836124cd565b9150612da582612d3e565b604082019050919050565b60006020820190508181036000830152612dc981612d8d565b9050919050565b6000612ddb826125d7565b9150612de6836125d7565b9250828201905080821115612dfe57612dfd612985565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612e606025836124cd565b9150612e6b82612e04565b604082019050919050565b60006020820190508181036000830152612e8f81612e53565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612ef26023836124cd565b9150612efd82612e96565b604082019050919050565b60006020820190508181036000830152612f2181612ee5565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612f846029836124cd565b9150612f8f82612f28565b604082019050919050565b60006020820190508181036000830152612fb381612f77565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b60006130166031836124cd565b915061302182612fba565b604082019050919050565b6000602082019050818103600083015261304581613009565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b6000613082600e836124cd565b915061308d8261304c565b602082019050919050565b600060208201905081810360008301526130b181613075565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b60006130ee601e836124cd565b91506130f9826130b8565b602082019050919050565b6000602082019050818103600083015261311d816130e1565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b600061315a6011836124cd565b915061316582613124565b602082019050919050565b600060208201905081810360008301526131898161314d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506131fd816125ab565b92915050565b60006020828403121561321957613218612574565b5b6000613227848285016131ee565b91505092915050565b6000819050919050565b600061325561325061324b84613230565b612c32565b6125d7565b9050919050565b6132658161323a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6132a081612599565b82525050565b60006132b28383613297565b60208301905092915050565b6000602082019050919050565b60006132d68261326b565b6132e08185613276565b93506132eb83613287565b8060005b8381101561331c57815161330388826132a6565b975061330e836132be565b9250506001810190506132ef565b5085935050505092915050565b600060a08201905061333e6000830188612683565b61334b602083018761325c565b818103604083015261335d81866132cb565b905061336c60608301856128b0565b6133796080830184612683565b9695505050505050565b600060c08201905061339860008301896128b0565b6133a56020830188612683565b6133b2604083018761325c565b6133bf606083018661325c565b6133cc60808301856128b0565b6133d960a0830184612683565b979650505050505050565b6000815190506133f3816125e1565b92915050565b60008060006060848603121561341257613411612574565b5b6000613420868287016133e4565b9350506020613431868287016133e4565b9250506040613442868287016133e4565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ab533ff3cb07408b21ec6025e2364750c2b208ff52325ca6e441b8ba06b664c764736f6c63430008100033