0x60806040526040518060400160405280600881526020017f5370706173746e67000000000000000000000000000000000000000000000000815250600190816200004a919062000363565b506040518060400160405280600881526020017f5350504153544e470000000000000000000000000000000000000000000000008152506002908162000091919062000363565b50601260035f6101000a81548160ff021916908360ff160217905550348015620000b9575f80fd5b50335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000447565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200017b57607f821691505b60208210810362000191576200019062000136565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620001f57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620001b8565b620002018683620001b8565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6200024b620002456200023f8462000219565b62000222565b62000219565b9050919050565b5f819050919050565b62000266836200022b565b6200027e620002758262000252565b848454620001c4565b825550505050565b5f90565b6200029462000286565b620002a18184846200025b565b505050565b5b81811015620002c857620002bc5f826200028a565b600181019050620002a7565b5050565b601f8211156200031757620002e18162000197565b620002ec84620001a9565b81016020851015620002fc578190505b620003146200030b85620001a9565b830182620002a6565b50505b505050565b5f82821c905092915050565b5f620003395f19846008026200031c565b1980831691505092915050565b5f62000353838362000328565b9150826002028217905092915050565b6200036e82620000ff565b67ffffffffffffffff8111156200038a576200038962000109565b5b62000396825462000163565b620003a3828285620002cc565b5f60209050601f831160018114620003d9575f8415620003c4578287015190505b620003d0858262000346565b8655506200043f565b601f198416620003e98662000197565b5f5b828110156200041257848901518255600182019150602085019450602081019050620003eb565b868310156200043257848901516200042e601f89168262000328565b8355505b6001600288020188555050505b505050505050565b61199380620004555f395ff3fe60806040526004361061010c575f3560e01c80638da5cb5b11610094578063d56926a011610063578063d56926a014610379578063dd62ed3e146103a3578063f0a7c261146103df578063fa9b701814610407578063fdb21779146104315761011b565b80638da5cb5b146102ad57806395d89b41146102d7578063a9059cbb14610301578063b77cf9c61461033d5761011b565b8063313ce567116100db578063313ce567146101f157806332cb6b0c1461021b5780634de0941d146102455780635c06051a1461025b57806370a08231146102715761011b565b806306fdde0314610125578063095ea7b31461014f57806318160ddd1461018b57806323b872dd146101b55761011b565b3661011b5761011961045b565b005b61012361045b565b005b348015610130575f80fd5b506101396105b1565b6040516101469190611275565b60405180910390f35b34801561015a575f80fd5b5061017560048036038101906101709190611326565b61063d565b604051610182919061137e565b60405180910390f35b348015610196575f80fd5b5061019f61072a565b6040516101ac91906113a6565b60405180910390f35b3480156101c0575f80fd5b506101db60048036038101906101d691906113bf565b610730565b6040516101e8919061137e565b60405180910390f35b3480156101fc575f80fd5b50610205610a7e565b604051610212919061142a565b60405180910390f35b348015610226575f80fd5b5061022f610a90565b60405161023c91906113a6565b60405180910390f35b348015610250575f80fd5b50610259610a9f565b005b348015610266575f80fd5b5061026f61045b565b005b34801561027c575f80fd5b5061029760048036038101906102929190611443565b610b04565b6040516102a491906113a6565b60405180910390f35b3480156102b8575f80fd5b506102c1610b19565b6040516102ce919061147d565b60405180910390f35b3480156102e2575f80fd5b506102eb610b3c565b6040516102f89190611275565b60405180910390f35b34801561030c575f80fd5b5061032760048036038101906103229190611326565b610bc8565b604051610334919061137e565b60405180910390f35b348015610348575f80fd5b50610363600480360381019061035e9190611443565b610dcc565b60405161037091906113a6565b60405180910390f35b348015610384575f80fd5b5061038d610de1565b60405161039a91906113a6565b60405180910390f35b3480156103ae575f80fd5b506103c960048036038101906103c49190611496565b610dee565b6040516103d691906113a6565b60405180910390f35b3480156103ea575f80fd5b50610405600480360381019061040091906114d4565b610e70565b005b348015610412575f80fd5b5061041b610ede565b60405161042891906113a6565b60405180910390f35b34801561043c575f80fd5b50610445610eeb565b60405161045291906113a6565b60405180910390f35b61182460075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546104a6919061152c565b4210156104e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104df906115a9565b60405180910390fd5b5f6105056804fcc1a89027f000006810f7bf61a7a9440000610ef0565b90506a1498ada132da5c3f9c000081600454610521919061152c565b1115610562576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055990611611565b60405180910390fd5b61056c3382610f58565b4260075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555050565b600180546105be9061165c565b80601f01602080910402602001604051908101604052809291908181526020018280546105ea9061165c565b80156106355780601f1061060c57610100808354040283529160200191610635565b820191905f5260205f20905b81548152906001019060200180831161061857829003601f168201915b505050505081565b5f8160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161071891906113a6565b60405180910390a36001905092915050565b60045481565b5f8160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156107b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a8906116d6565b60405180910390fd5b8160065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561086c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108639061173e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d1906117a6565b60405180910390fd5b8160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461092691906117c4565b925050819055508160065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109b491906117c4565b925050819055508160055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610a07919061152c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a6b91906113a6565b60405180910390a3600190509392505050565b60035f9054906101000a900460ff1681565b6a1498ada132da5c3f9c000081565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610b01573d5f803e3d5ffd5b50565b6005602052805f5260405f205f915090505481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054610b499061165c565b80601f0160208091040260200160405190810160405280929190818152602001828054610b759061165c565b8015610bc05780601f10610b9757610100808354040283529160200191610bc0565b820191905f5260205f20905b815481529060010190602001808311610ba357829003601f168201915b505050505081565b5f8160055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c40906116d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cae906117a6565b60405180910390fd5b8160055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610d0391906117c4565b925050819055508160055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610d56919061152c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610dba91906113a6565b60405180910390a36001905092915050565b6007602052805f5260405f205f915090505481565b6804fcc1a89027f0000081565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b804710610edb575f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610ed9573d5f803e3d5ffd5b505b50565b6810f7bf61a7a944000081565b606781565b5f808360018585610f0191906117c4565b610f0b919061152c565b424433604051602001610f209392919061185c565b604051602081830303815290604052805190602001205f1c610f4291906118c5565b610f4c919061152c565b90508091505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbd9061193f565b60405180910390fd5b610fd15f8383610fd5565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611025578060045f828254611019919061152c565b925050819055506110ef565b5f60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a0906116d6565b60405180910390fd5b81810360055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611136578060045f8282540392505081905550611181565b8060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516111de91906113a6565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611222578082015181840152602081019050611207565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611247826111eb565b61125181856111f5565b9350611261818560208601611205565b61126a8161122d565b840191505092915050565b5f6020820190508181035f83015261128d818461123d565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6112c282611299565b9050919050565b6112d2816112b8565b81146112dc575f80fd5b50565b5f813590506112ed816112c9565b92915050565b5f819050919050565b611305816112f3565b811461130f575f80fd5b50565b5f81359050611320816112fc565b92915050565b5f806040838503121561133c5761133b611295565b5b5f611349858286016112df565b925050602061135a85828601611312565b9150509250929050565b5f8115159050919050565b61137881611364565b82525050565b5f6020820190506113915f83018461136f565b92915050565b6113a0816112f3565b82525050565b5f6020820190506113b95f830184611397565b92915050565b5f805f606084860312156113d6576113d5611295565b5b5f6113e3868287016112df565b93505060206113f4868287016112df565b925050604061140586828701611312565b9150509250925092565b5f60ff82169050919050565b6114248161140f565b82525050565b5f60208201905061143d5f83018461141b565b92915050565b5f6020828403121561145857611457611295565b5b5f611465848285016112df565b91505092915050565b611477816112b8565b82525050565b5f6020820190506114905f83018461146e565b92915050565b5f80604083850312156114ac576114ab611295565b5b5f6114b9858286016112df565b92505060206114ca858286016112df565b9150509250929050565b5f602082840312156114e9576114e8611295565b5b5f6114f684828501611312565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611536826112f3565b9150611541836112f3565b9250828201905080821115611559576115586114ff565b5b92915050565b7f436f6f6c646f776e20706572696f64206e6f74206f76657200000000000000005f82015250565b5f6115936018836111f5565b915061159e8261155f565b602082019050919050565b5f6020820190508181035f8301526115c081611587565b9050919050565b7f4d617820737570706c79206578636565646564000000000000000000000000005f82015250565b5f6115fb6013836111f5565b9150611606826115c7565b602082019050919050565b5f6020820190508181035f830152611628816115ef565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061167357607f821691505b6020821081036116865761168561162f565b5b50919050565b7f4e6f20656e6f7567682062616c616e63650000000000000000000000000000005f82015250565b5f6116c06011836111f5565b91506116cb8261168c565b602082019050919050565b5f6020820190508181035f8301526116ed816116b4565b9050919050565b7f4e6f20656e6f75676820616c6c6f77616e63652062616c616e636500000000005f82015250565b5f611728601b836111f5565b9150611733826116f4565b602082019050919050565b5f6020820190508181035f8301526117558161171c565b9050919050565b7f746f2061646472657373206973203000000000000000000000000000000000005f82015250565b5f611790600f836111f5565b915061179b8261175c565b602082019050919050565b5f6020820190508181035f8301526117bd81611784565b9050919050565b5f6117ce826112f3565b91506117d9836112f3565b92508282039050818111156117f1576117f06114ff565b5b92915050565b5f819050919050565b61181161180c826112f3565b6117f7565b82525050565b5f8160601b9050919050565b5f61182d82611817565b9050919050565b5f61183e82611823565b9050919050565b611856611851826112b8565b611834565b82525050565b5f6118678286611800565b6020820191506118778285611800565b6020820191506118878284611845565b601482019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6118cf826112f3565b91506118da836112f3565b9250826118ea576118e9611898565b5b828206905092915050565b7f6d696e7420746f206164647265737320697320300000000000000000000000005f82015250565b5f6119296014836111f5565b9150611934826118f5565b602082019050919050565b5f6020820190508181035f8301526119568161191d565b905091905056fea2646970667358221220cb5ed72107eb9c7190bb826254693b030181c5807cd140e3c036691c38796c7764736f6c63430008140033