0x60806040525f5f5f6101000a81548160ff0219169083151502179055503480156026575f5ffd5b50335f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610eb3806100745f395ff3fe608060405234801561000f575f5ffd5b50600436106100b2575f3560e01c80639e1366db1161006f5780639e1366db146101b0578063b1c4d814146101e0578063b5a6cad514610210578063ede3995a14610240578063f2fde38b14610270578063facf24ee1461028c576100b2565b806329533fc3146100b65780633b111c25146100e65780635af8645b14610102578063692f4713146101325780636f122f91146101625780638da5cb5b14610192575b5f5ffd5b6100d060048036038101906100cb91906106df565b6102bc565b6040516100dd9190610737565b60405180910390f35b61010060048036038101906100fb91906107aa565b6102c7565b005b61011c60048036038101906101179190610812565b610471565b604051610129919061085f565b60405180910390f35b61014c600480360381019061014791906109b4565b61047c565b604051610159919061085f565b60405180910390f35b61017c60048036038101906101779190610a0e565b610487565b6040516101899190610737565b60405180910390f35b61019a610492565b6040516101a79190610a93565b60405180910390f35b6101ca60048036038101906101c59190610aac565b6104b7565b6040516101d79190610a93565b60405180910390f35b6101fa60048036038101906101f59190610aea565b61052f565b6040516102079190610a93565b60405180910390f35b61022a60048036038101906102259190610b28565b610539565b6040516102379190610737565b60405180910390f35b61025a60048036038101906102559190610b94565b610545565b604051610267919061085f565b60405180910390f35b61028a60048036038101906102859190610bd2565b610550565b005b6102a660048036038101906102a19190610a0e565b610690565b6040516102b39190610737565b60405180910390f35b5f6001905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161032c90610c57565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff16828360405160240161035f919061085f565b6040516020818303038152906040527fa6b206bf000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516103e99190610cc7565b5f6040518083038185875af1925050503d805f8114610423576040519150601f19603f3d011682016040523d82523d5f602084013e610428565b606091505b505090508061046c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046390610d27565b60405180910390fd5b505050565b5f602a905092915050565b5f602a905092915050565b5f6001905092915050565b5f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051d90610d8f565b60405180910390fd5b5f905092915050565b5f5f905092915050565b5f600190509392505050565b5f602a905092915050565b5f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d690610df7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361064d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064490610e5f565b60405180910390fd5b805f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f6001905092915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b6106be816106ac565b81146106c8575f5ffd5b50565b5f813590506106d9816106b5565b92915050565b5f5f604083850312156106f5576106f46106a4565b5b5f610702858286016106cb565b9250506020610713858286016106cb565b9150509250929050565b5f8115159050919050565b6107318161071d565b82525050565b5f60208201905061074a5f830184610728565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61077982610750565b9050919050565b6107898161076f565b8114610793575f5ffd5b50565b5f813590506107a481610780565b92915050565b5f5f604083850312156107c0576107bf6106a4565b5b5f6107cd85828601610796565b92505060206107de858286016106cb565b9150509250929050565b6107f18161071d565b81146107fb575f5ffd5b50565b5f8135905061080c816107e8565b92915050565b5f5f60408385031215610828576108276106a4565b5b5f610835858286016107fe565b9250506020610846858286016106cb565b9150509250929050565b610859816106ac565b82525050565b5f6020820190506108725f830184610850565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6108c682610880565b810181811067ffffffffffffffff821117156108e5576108e4610890565b5b80604052505050565b5f6108f761069b565b905061090382826108bd565b919050565b5f67ffffffffffffffff82111561092257610921610890565b5b61092b82610880565b9050602081019050919050565b828183375f83830152505050565b5f61095861095384610908565b6108ee565b9050828152602081018484840111156109745761097361087c565b5b61097f848285610938565b509392505050565b5f82601f83011261099b5761099a610878565b5b81356109ab848260208601610946565b91505092915050565b5f5f604083850312156109ca576109c96106a4565b5b5f83013567ffffffffffffffff8111156109e7576109e66106a8565b5b6109f385828601610987565b9250506020610a04858286016106cb565b9150509250929050565b5f5f60408385031215610a2457610a236106a4565b5b5f83013567ffffffffffffffff811115610a4157610a406106a8565b5b610a4d85828601610987565b925050602083013567ffffffffffffffff811115610a6e57610a6d6106a8565b5b610a7a85828601610987565b9150509250929050565b610a8d8161076f565b82525050565b5f602082019050610aa65f830184610a84565b92915050565b5f5f60408385031215610ac257610ac16106a4565b5b5f610acf858286016107fe565b9250506020610ae085828601610796565b9150509250929050565b5f5f60408385031215610b0057610aff6106a4565b5b5f610b0d858286016107fe565b9250506020610b1e858286016107fe565b9150509250929050565b5f5f5f60608486031215610b3f57610b3e6106a4565b5b5f610b4c868287016107fe565b9350506020610b5d868287016106cb565b925050604084013567ffffffffffffffff811115610b7e57610b7d6106a8565b5b610b8a86828701610987565b9150509250925092565b5f5f60408385031215610baa57610ba96106a4565b5b5f610bb785828601610796565b9250506020610bc8858286016107fe565b9150509250929050565b5f60208284031215610be757610be66106a4565b5b5f610bf484828501610796565b91505092915050565b5f82825260208201905092915050565b7f496e76616c696420636f6e7472616374206164647265737300000000000000005f82015250565b5f610c41601883610bfd565b9150610c4c82610c0d565b602082019050919050565b5f6020820190508181035f830152610c6e81610c35565b9050919050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f610ca182610c75565b610cab8185610c7f565b9350610cbb818560208601610c89565b80840191505092915050565b5f610cd28284610c97565b915081905092915050565b7f4661696c656420746f2063616c6c206f7468657220636f6e74726163740000005f82015250565b5f610d11601d83610bfd565b9150610d1c82610cdd565b602082019050919050565b5f6020820190508181035f830152610d3e81610d05565b9050919050565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f610d79600f83610bfd565b9150610d8482610d45565b602082019050919050565b5f6020820190508181035f830152610da681610d6d565b9050919050565b7f43616c6c6572206973206e6f7420746865206f776e65720000000000000000005f82015250565b5f610de1601783610bfd565b9150610dec82610dad565b602082019050919050565b5f6020820190508181035f830152610e0e81610dd5565b9050919050565b7f496e76616c6964206164647265737320666f72206e6577206f776e65720000005f82015250565b5f610e49601d83610bfd565b9150610e5482610e15565b602082019050919050565b5f6020820190508181035f830152610e7681610e3d565b905091905056fea2646970667358221220b40b76adf22df91469d897c4bd13af99ecdb35089c3f8334ee92f12be6462f9b64736f6c634300081c0033