0x6080604052348015600e575f80fd5b50734752ba5dbc23f44d87826276bf6fd6b1c372ad245f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c318061006f5f395ff3fe60806040526004361061003e575f3560e01c806307980cb9146100425780631694505e1461006a578063df4c7f1b14610094578063e95f7b64146100aa575b5f80fd5b34801561004d575f80fd5b5061006860048036038101906100639190610624565b6100c6565b005b348015610075575f80fd5b5061007e610124565b60405161008b91906106aa565b60405180910390f35b34801561009f575f80fd5b506100a8610147565b005b6100c460048036038101906100bf91906107ac565b61018d565b005b8073ffffffffffffffffffffffffffffffffffffffff16638a8c523c6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561010b575f80fd5b505af115801561011d573d5f803e3d5ffd5b5050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561018a573d5f803e3d5ffd5b50565b8383905082829050146101d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101cc906108cf565b60405180910390fd5b5f3411610217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161020e90610937565b60405180910390fd5b5f8690508073ffffffffffffffffffffffffffffffffffffffff16638a8c523c6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610260575f80fd5b505af1158015610272573d5f803e3d5ffd5b505050505f805b868690508110156102b85786868281811061029757610296610955565b5b90506020020135826102a991906109af565b91508080600101915050610279565b50348111156102fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f390610a52565b60405180910390fd5b5f600267ffffffffffffffff81111561031857610317610a70565b5b6040519080825280602002602001820160405280156103465781602001602082028036833780820191505090505b5090505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103d59190610ab1565b815f815181106103e8576103e7610955565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050888160018151811061043757610436610955565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f4290505f5b86869050811015610568575f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958a8a848181106104d0576104cf610955565b5b905060200201358c868b8b878181106104ec576104eb610955565b5b90506020020160208101906105019190610624565b60068861050e91906109af565b6040518663ffffffff1660e01b815260040161052d9493929190610bb1565b5f604051808303818588803b158015610544575f80fd5b505af1158015610556573d5f803e3d5ffd5b50505050508080600101915050610477565b505f4711156105b6573373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f193505050501580156105b4573d5f803e3d5ffd5b505b50505050505050505050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6105f3826105ca565b9050919050565b610603816105e9565b811461060d575f80fd5b50565b5f8135905061061e816105fa565b92915050565b5f60208284031215610639576106386105c2565b5b5f61064684828501610610565b91505092915050565b5f819050919050565b5f61067261066d610668846105ca565b61064f565b6105ca565b9050919050565b5f61068382610658565b9050919050565b5f61069482610679565b9050919050565b6106a48161068a565b82525050565b5f6020820190506106bd5f83018461069b565b92915050565b5f819050919050565b6106d5816106c3565b81146106df575f80fd5b50565b5f813590506106f0816106cc565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112610717576107166106f6565b5b8235905067ffffffffffffffff811115610734576107336106fa565b5b6020830191508360208202830111156107505761074f6106fe565b5b9250929050565b5f8083601f84011261076c5761076b6106f6565b5b8235905067ffffffffffffffff811115610789576107886106fa565b5b6020830191508360208202830111156107a5576107a46106fe565b5b9250929050565b5f805f805f80608087890312156107c6576107c56105c2565b5b5f6107d389828a01610610565b96505060206107e489828a016106e2565b955050604087013567ffffffffffffffff811115610805576108046105c6565b5b61081189828a01610702565b9450945050606087013567ffffffffffffffff811115610834576108336105c6565b5b61084089828a01610757565b92509250509295509295509295565b5f82825260208201905092915050565b7f5f746f20616e642045544820616d6f756e7473206d757374206d6174636820695f8201527f6e206c656e677468000000000000000000000000000000000000000000000000602082015250565b5f6108b960288361084f565b91506108c48261085f565b604082019050919050565b5f6020820190508181035f8301526108e6816108ad565b9050919050565b7f4e6565642045544820746f2062757920746f6b656e73000000000000000000005f82015250565b5f61092160168361084f565b915061092c826108ed565b602082019050919050565b5f6020820190508181035f83015261094e81610915565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6109b9826106c3565b91506109c4836106c3565b92508282019050808211156109dc576109db610982565b5b92915050565b7f4554482073656e74206973206c657373207468616e207468652073756d206f665f8201527f20696e646976696475616c207377617073000000000000000000000000000000602082015250565b5f610a3c60318361084f565b9150610a47826109e2565b604082019050919050565b5f6020820190508181035f830152610a6981610a30565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050610aab816105fa565b92915050565b5f60208284031215610ac657610ac56105c2565b5b5f610ad384828501610a9d565b91505092915050565b610ae5816106c3565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b610b1d816105e9565b82525050565b5f610b2e8383610b14565b60208301905092915050565b5f602082019050919050565b5f610b5082610aeb565b610b5a8185610af5565b9350610b6583610b05565b805f5b83811015610b95578151610b7c8882610b23565b9750610b8783610b3a565b925050600181019050610b68565b5085935050505092915050565b610bab816105e9565b82525050565b5f608082019050610bc45f830187610adc565b8181036020830152610bd68186610b46565b9050610be56040830185610ba2565b610bf26060830184610adc565b9594505050505056fea264697066735822122099a927b636bb63af35a272b1610e80abbe4d2fd0915a1701aa695e260d67b7b864736f6c63430008190033