60806040525f80555f60015534801562000017575f80fd5b506012600a62000028919062000348565b6298968062000038919062000398565b60025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a62000189919062000348565b6298968062000199919062000398565b604051620001a89190620003f3565b60405180910390a36200040e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200024057808604811115620002185762000217620001b6565b5b6001851615620002285780820291505b80810290506200023885620001e3565b9450620001f8565b94509492505050565b5f826200025a57600190506200032c565b8162000269575f90506200032c565b81600181146200028257600281146200028d57620002c3565b60019150506200032c565b60ff841115620002a257620002a1620001b6565b5b8360020a915084821115620002bc57620002bb620001b6565b5b506200032c565b5060208310610133831016604e8410600b8410161715620002fd5782820a905083811115620002f757620002f6620001b6565b5b6200032c565b6200030c8484846001620001ef565b92509050818404811115620003265762000325620001b6565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620003548262000333565b915062000361836200033c565b9250620003907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000249565b905092915050565b5f620003a48262000333565b9150620003b18362000333565b9250828202620003c18162000333565b91508282048414831517620003db57620003da620001b6565b5b5092915050565b620003ed8162000333565b82525050565b5f602082019050620004085f830184620003e2565b92915050565b611441806200041c5f395ff3fe60806040526004361061009f575f3560e01c806370a082311161006357806370a08231146101a057806395d89b41146101dc578063a9059cbb14610206578063c9567bf914610242578063d45f587414610258578063dd62ed3e14610280576100a6565b806306fdde03146100aa578063095ea7b3146100d457806318160ddd1461011057806323b872dd1461013a578063313ce56714610176576100a6565b366100a657005b5f80fd5b3480156100b5575f80fd5b506100be6102bc565b6040516100cb9190610d32565b60405180910390f35b3480156100df575f80fd5b506100fa60048036038101906100f59190610de3565b6102f5565b6040516101079190610e3b565b60405180910390f35b34801561011b575f80fd5b506101246103e2565b6040516101319190610e63565b60405180910390f35b348015610145575f80fd5b50610160600480360381019061015b9190610e7c565b610401565b60405161016d9190610e3b565b60405180910390f35b348015610181575f80fd5b5061018a6104a4565b6040516101979190610ee7565b60405180910390f35b3480156101ab575f80fd5b506101c660048036038101906101c19190610f00565b6104a9565b6040516101d39190610e63565b60405180910390f35b3480156101e7575f80fd5b506101f06104be565b6040516101fd9190610d32565b60405180910390f35b348015610211575f80fd5b5061022c60048036038101906102279190610de3565b6104f7565b6040516102399190610e3b565b60405180910390f35b34801561024d575f80fd5b5061025661050b565b005b348015610263575f80fd5b5061027e60048036038101906102799190610f2b565b61058c565b005b34801561028b575f80fd5b506102a660048036038101906102a19190610f69565b6105e8565b6040516102b39190610e63565b60405180910390f35b6040518060400160405280600781526020017f5341564d2041490000000000000000000000000000000000000000000000000081525081565b5f8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103d09190610e63565b60405180910390a36001905092915050565b6012600a6103f09190611103565b629896806103fe919061114d565b81565b5f8160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610489919061118e565b9250508190555061049b848484610608565b90509392505050565b601281565b6002602052805f5260405f205f915090505481565b6040518060400160405280600681526020017f5341564d4149000000000000000000000000000000000000000000000000000081525081565b5f610503338484610608565b905092915050565b73ccc168b82e331f57187a49addcd2b69ee97370a573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610556575f80fd5b600460159054906101000a900460ff161561056f575f80fd5b6001600460156101000a81548160ff021916908315150217905550565b73ccc168b82e331f57187a49addcd2b69ee97370a573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105d7575f80fd5b815f81905550806001819055505050565b6003602052815f5260405f20602052805f5260405f205f91509150505481565b5f600460159054906101000a900460ff1680610663575073ccc168b82e331f57187a49addcd2b69ee97370a573ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b806106ad575073ccc168b82e331f57187a49addcd2b69ee97370a573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b6106b5575f80fd5b600460159054906101000a900460ff1615801561071e57505f73ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b801561072957505f82115b1561076f578260045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107bb919061118e565b9250508190555060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561082b5750600460149054906101000a900460ff16155b801561089b575060646012600a6108429190611103565b62989680610850919061114d565b61085a91906111ee565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b15610ad6576001600460146101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156108d7576108d661121e565b5b6040519080825280602002602001820160405280156109055781602001602082028036833780820191505090505b50905030815f8151811061091c5761091b61124b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061097f5761097e61124b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac94760646012600a6109f99190611103565b62989680610a07919061114d565b610a1191906111ee565b5f8430426040518663ffffffff1660e01b8152600401610a35959493929190611380565b5f604051808303815f87803b158015610a4c575f80fd5b505af1158015610a5e573d5f803e3d5ffd5b5050505073ccc168b82e331f57187a49addcd2b69ee97370a573ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610ab9573d5f803e3d5ffd5b505f600460146101000a81548160ff021916908315150217905550505b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614610be5575f606460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614610b6857600154610b6b565b5f545b84610b76919061114d565b610b8091906111ee565b90508083610b8e919061118e565b92508060025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610bdc91906113d8565b92505081905550505b8160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610c3191906113d8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c959190610e63565b60405180910390a3600190509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610cdf578082015181840152602081019050610cc4565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610d0482610ca8565b610d0e8185610cb2565b9350610d1e818560208601610cc2565b610d2781610cea565b840191505092915050565b5f6020820190508181035f830152610d4a8184610cfa565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610d7f82610d56565b9050919050565b610d8f81610d75565b8114610d99575f80fd5b50565b5f81359050610daa81610d86565b92915050565b5f819050919050565b610dc281610db0565b8114610dcc575f80fd5b50565b5f81359050610ddd81610db9565b92915050565b5f8060408385031215610df957610df8610d52565b5b5f610e0685828601610d9c565b9250506020610e1785828601610dcf565b9150509250929050565b5f8115159050919050565b610e3581610e21565b82525050565b5f602082019050610e4e5f830184610e2c565b92915050565b610e5d81610db0565b82525050565b5f602082019050610e765f830184610e54565b92915050565b5f805f60608486031215610e9357610e92610d52565b5b5f610ea086828701610d9c565b9350506020610eb186828701610d9c565b9250506040610ec286828701610dcf565b9150509250925092565b5f60ff82169050919050565b610ee181610ecc565b82525050565b5f602082019050610efa5f830184610ed8565b92915050565b5f60208284031215610f1557610f14610d52565b5b5f610f2284828501610d9c565b91505092915050565b5f8060408385031215610f4157610f40610d52565b5b5f610f4e85828601610dcf565b9250506020610f5f85828601610dcf565b9150509250929050565b5f8060408385031215610f7f57610f7e610d52565b5b5f610f8c85828601610d9c565b9250506020610f9d85828601610d9c565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156110295780860481111561100557611004610fa7565b5b60018516156110145780820291505b808102905061102285610fd4565b9450610fe9565b94509492505050565b5f8261104157600190506110fc565b8161104e575f90506110fc565b8160018114611064576002811461106e5761109d565b60019150506110fc565b60ff8411156110805761107f610fa7565b5b8360020a91508482111561109757611096610fa7565b5b506110fc565b5060208310610133831016604e8410600b84101617156110d25782820a9050838111156110cd576110cc610fa7565b5b6110fc565b6110df8484846001610fe0565b925090508184048111156110f6576110f5610fa7565b5b81810290505b9392505050565b5f61110d82610db0565b915061111883610ecc565b92506111457fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611032565b905092915050565b5f61115782610db0565b915061116283610db0565b925082820261117081610db0565b9150828204841483151761118757611186610fa7565b5b5092915050565b5f61119882610db0565b91506111a383610db0565b92508282039050818111156111bb576111ba610fa7565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6111f882610db0565b915061120383610db0565b925082611213576112126111c1565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f6112a461129f61129a84611278565b611281565b610db0565b9050919050565b6112b48161128a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6112ec81610d75565b82525050565b5f6112fd83836112e3565b60208301905092915050565b5f602082019050919050565b5f61131f826112ba565b61132981856112c4565b9350611334836112d4565b805f5b8381101561136457815161134b88826112f2565b975061135683611309565b925050600181019050611337565b5085935050505092915050565b61137a81610d75565b82525050565b5f60a0820190506113935f830188610e54565b6113a060208301876112ab565b81810360408301526113b28186611315565b90506113c16060830185611371565b6113ce6080830184610e54565b9695505050505050565b5f6113e282610db0565b91506113ed83610db0565b925082820190508082111561140557611404610fa7565b5b9291505056fea2646970667358221220913c4220e6675a7e78ded7b326044f97ecba76a813b4828beed1011155bbd63164736f6c63430008140033