0x6080604052348015600e575f80fd5b50611d6d8061001c5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c80633439c57b146100435780637fea0d4b14610061578063ed2bee101461006b575b5f80fd5b61004b610075565b60405161005891906105c3565b60405180910390f35b61006961010b565b005b6100736101c2565b005b5f8060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663609ff1bd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100e1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101059190610613565b14905090565b5f7f63616e6469646174653100000000000000000000000000000000000000000000908060018154018082558091505060019003905f5260205f20015f90919091909150555f60405161015d90610592565b6101679190610747565b604051809103905ff080158015610180573d5f803e3d5ffd5b5060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6102006040518060400160405280601c81526020017f52756e6e696e6720636865636b57696e6e696e6750726f706f73616c000000008152506104b5565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630121b93f5f6040518263ffffffff1660e01b815260040161025a91906107a9565b5f604051808303815f87803b158015610271575f80fd5b505af1158015610283573d5f803e3d5ffd5b5050505073d02b3c10666a3700a836f34297dc7ee948190c2d63abcd796060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663609ff1bd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561030b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061032f9190610613565b5f6040518363ffffffff1660e01b815260040161034d929190610851565b602060405180830381865af4158015610368573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061038c91906108b5565b5073d02b3c10666a3700a836f34297dc7ee948190c2d63ea79dd7960015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2ba53f06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610411573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610435919061090a565b7f63616e64696461746531000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016104739291906109b4565b602060405180830381865af415801561048e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104b291906108b5565b50565b61054b816040516024016104c99190610a5e565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061054e565b50565b6105658161055d610568610587565b63ffffffff16565b50565b5f6a636f6e736f6c652e6c6f6790505f80835160208501845afa505050565b61059f819050919050565b61128c80610aac83390190565b6105a7610a7e565b565b5f8115159050919050565b6105bd816105a9565b82525050565b5f6020820190506105d65f8301846105b4565b92915050565b5f80fd5b5f819050919050565b6105f2816105e0565b81146105fc575f80fd5b50565b5f8151905061060d816105e9565b92915050565b5f60208284031215610628576106276105dc565b5b5f610635848285016105ff565b91505092915050565b5f81549050919050565b5f82825260208201905092915050565b5f819050815f5260205f209050919050565b5f819050919050565b61067c8161066a565b82525050565b5f61068d8383610673565b60208301905092915050565b5f815f1c9050919050565b5f819050919050565b5f6106bf6106ba83610699565b6106a4565b9050919050565b5f6106d182546106ad565b9050919050565b5f600182019050919050565b5f6106ee8261063e565b6106f88185610648565b935061070383610658565b805f5b8381101561073a57610717826106c6565b6107218882610682565b975061072c836106d8565b925050600181019050610706565b5085935050505092915050565b5f6020820190508181035f83015261075f81846106e4565b905092915050565b5f819050919050565b5f819050919050565b5f61079361078e61078984610767565b610770565b6105e0565b9050919050565b6107a381610779565b82525050565b5f6020820190506107bc5f83018461079a565b92915050565b6107cb816105e0565b82525050565b5f82825260208201905092915050565b7f70726f706f73616c20617420696e64657820302073686f756c642062652074685f8201527f652077696e6e696e672070726f706f73616c0000000000000000000000000000602082015250565b5f61083b6032836107d1565b9150610846826107e1565b604082019050919050565b5f6060820190506108645f8301856107c2565b61087160208301846107c2565b81810360408301526108828161082f565b90509392505050565b610894816105a9565b811461089e575f80fd5b50565b5f815190506108af8161088b565b92915050565b5f602082840312156108ca576108c96105dc565b5b5f6108d7848285016108a1565b91505092915050565b6108e98161066a565b81146108f3575f80fd5b50565b5f81519050610904816108e0565b92915050565b5f6020828403121561091f5761091e6105dc565b5b5f61092c848285016108f6565b91505092915050565b61093e8161066a565b82525050565b7f63616e646964617465312073686f756c64206265207468652077696e6e6572205f8201527f6e616d6500000000000000000000000000000000000000000000000000000000602082015250565b5f61099e6024836107d1565b91506109a982610944565b604082019050919050565b5f6060820190506109c75f830185610935565b6109d46020830184610935565b81810360408301526109e581610992565b90509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610a30826109ee565b610a3a81856109f8565b9350610a4a818560208601610a08565b610a5381610a16565b840191505092915050565b5f6020820190508181035f830152610a768184610a26565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52605160045260245ffdfe608060405234801561000f575f80fd5b5060405161128c38038061128c833981810160405281019061003191906102f2565b335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001805f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01819055505f5b815181101561015757600260405180604001604052808484815181106100ff576100fe610339565b5b602002602001015181526020015f815250908060018154018082558091505060019003905f5260205f2090600202015f909190919091505f820151815f015560208201518160010155505080806001019150506100d6565b5050610366565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6101b982610173565b810181811067ffffffffffffffff821117156101d8576101d7610183565b5b80604052505050565b5f6101ea61015e565b90506101f682826101b0565b919050565b5f67ffffffffffffffff82111561021557610214610183565b5b602082029050602081019050919050565b5f80fd5b5f819050919050565b61023c8161022a565b8114610246575f80fd5b50565b5f8151905061025781610233565b92915050565b5f61026f61026a846101fb565b6101e1565b9050808382526020820190506020840283018581111561029257610291610226565b5b835b818110156102bb57806102a78882610249565b845260208401935050602081019050610294565b5050509392505050565b5f82601f8301126102d9576102d861016f565b5b81516102e984826020860161025d565b91505092915050565b5f6020828403121561030757610306610167565b5b5f82015167ffffffffffffffff8111156103245761032361016b565b5b610330848285016102c5565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b610f19806103735f395ff3fe608060405234801561000f575f80fd5b5060043610610086575f3560e01c8063609ff1bd11610059578063609ff1bd146101115780639e7b8d611461012f578063a3ec138d1461014b578063e2ba53f01461017e57610086565b80630121b93f1461008a578063013cf08b146100a65780632e4176cf146100d75780635c19a95c146100f5575b5f80fd5b6100a4600480360381019061009f9190610993565b61019c565b005b6100c060048036038101906100bb9190610993565b6102d7565b6040516100ce9291906109e5565b60405180910390f35b6100df610306565b6040516100ec9190610a4b565b60405180910390f35b61010f600480360381019061010a9190610a8e565b610329565b005b6101196106ae565b6040516101269190610ab9565b60405180910390f35b61014960048036038101906101449190610a8e565b610729565b005b61016560048036038101906101609190610a8e565b6108d4565b6040516101759493929190610aec565b60405180910390f35b61018661092c565b6040516101939190610b2f565b60405180910390f35b5f60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f815f015403610221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161021890610ba2565b60405180910390fd5b806001015f9054906101000a900460ff1615610272576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161026990610c0a565b60405180910390fd5b6001816001015f6101000a81548160ff021916908315150217905550818160020181905550805f0154600283815481106102af576102ae610c28565b5b905f5260205f2090600202016001015f8282546102cc9190610c82565b925050819055505050565b600281815481106102e6575f80fd5b905f5260205f2090600202015f91509050805f0154908060010154905082565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050806001015f9054906101000a900460ff16156103ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103b190610cff565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041f90610d67565b60405180910390fd5b5b5f73ffffffffffffffffffffffffffffffffffffffff1660015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060010160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105925760015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060010160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361058d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058490610dcf565b60405180910390fd5b610429565b6001816001015f6101000a81548160ff021916908315150217905550818160010160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050806001015f9054906101000a900460ff161561068c57815f0154600282600201548154811061066357610662610c28565b5b905f5260205f2090600202016001015f8282546106809190610c82565b925050819055506106a9565b815f0154815f015f8282546106a19190610c82565b925050819055505b505050565b5f805f90505f5b6002805490508110156107245781600282815481106106d7576106d6610c28565b5b905f5260205f209060020201600101541115610717576002818154811061070157610700610c28565b5b905f5260205f2090600202016001015491508092505b80806001019150506106b5565b505090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ad90610e5d565b60405180910390fd5b60015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f9054906101000a900460ff1615610843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a90610ec5565b60405180910390fd5b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01541461088d575f80fd5b6001805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f018190555050565b6001602052805f5260405f205f91509050805f015490806001015f9054906101000a900460ff16908060010160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154905084565b5f60026109376106ae565b8154811061094857610947610c28565b5b905f5260205f2090600202015f0154905090565b5f80fd5b5f819050919050565b61097281610960565b811461097c575f80fd5b50565b5f8135905061098d81610969565b92915050565b5f602082840312156109a8576109a761095c565b5b5f6109b58482850161097f565b91505092915050565b5f819050919050565b6109d0816109be565b82525050565b6109df81610960565b82525050565b5f6040820190506109f85f8301856109c7565b610a0560208301846109d6565b9392505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610a3582610a0c565b9050919050565b610a4581610a2b565b82525050565b5f602082019050610a5e5f830184610a3c565b92915050565b610a6d81610a2b565b8114610a77575f80fd5b50565b5f81359050610a8881610a64565b92915050565b5f60208284031215610aa357610aa261095c565b5b5f610ab084828501610a7a565b91505092915050565b5f602082019050610acc5f8301846109d6565b92915050565b5f8115159050919050565b610ae681610ad2565b82525050565b5f608082019050610aff5f8301876109d6565b610b0c6020830186610add565b610b196040830185610a3c565b610b2660608301846109d6565b95945050505050565b5f602082019050610b425f8301846109c7565b92915050565b5f82825260208201905092915050565b7f486173206e6f20726967687420746f20766f74650000000000000000000000005f82015250565b5f610b8c601483610b48565b9150610b9782610b58565b602082019050919050565b5f6020820190508181035f830152610bb981610b80565b9050919050565b7f416c726561647920766f7465642e0000000000000000000000000000000000005f82015250565b5f610bf4600e83610b48565b9150610bff82610bc0565b602082019050919050565b5f6020820190508181035f830152610c2181610be8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610c8c82610960565b9150610c9783610960565b9250828201905080821115610caf57610cae610c55565b5b92915050565b7f596f7520616c726561647920766f7465642e00000000000000000000000000005f82015250565b5f610ce9601283610b48565b9150610cf482610cb5565b602082019050919050565b5f6020820190508181035f830152610d1681610cdd565b9050919050565b7f53656c662d64656c65676174696f6e20697320646973616c6c6f7765642e00005f82015250565b5f610d51601e83610b48565b9150610d5c82610d1d565b602082019050919050565b5f6020820190508181035f830152610d7e81610d45565b9050919050565b7f466f756e64206c6f6f7020696e2064656c65676174696f6e2e000000000000005f82015250565b5f610db9601983610b48565b9150610dc482610d85565b602082019050919050565b5f6020820190508181035f830152610de681610dad565b9050919050565b7f4f6e6c79206368616972706572736f6e2063616e2067697665207269676874205f8201527f746f20766f74652e000000000000000000000000000000000000000000000000602082015250565b5f610e47602883610b48565b9150610e5282610ded565b604082019050919050565b5f6020820190508181035f830152610e7481610e3b565b9050919050565b7f54686520766f74657220616c726561647920766f7465642e00000000000000005f82015250565b5f610eaf601883610b48565b9150610eba82610e7b565b602082019050919050565b5f6020820190508181035f830152610edc81610ea3565b905091905056fea264697066735822122067a970e2efab2b29a4bb4868793f22b99b5eec086b6e25f7b353ce95b3515f7e64736f6c634300081a0033a2646970667358221220a0166b8de531e7731a39491b0c160459f6ef21e40bd17803b8020a7f93482f4d64736f6c634300081a0033