0x60806040526004361061005a5760003560e01c8063aaccd23011610043578063aaccd230146100aa578063e445e7dd146100d8578063e5320bb9146100f457600080fd5b8063086011b91461005f57806337b02c2814610074575b600080fd5b61007261006d3660046105d2565b610124565b005b34801561008057600080fd5b5061009461008f36600461063e565b6101d1565b6040516100a19190610680565b60405180910390f35b3480156100b657600080fd5b506100ca6100c53660046105d2565b6101f7565b6040519081526020016100a1565b3480156100e457600080fd5b50604051600281526020016100a1565b34801561010057600080fd5b5061011461010f36600461063e565b6102a4565b60405190151581526020016100a1565b61012e84846102a4565b6101bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4162737472616374506f73744469737061746368486f6f6b3a20696e76616c6960448201527f64206d657461646174612076617269616e74000000000000000000000000000060648201526084015b60405180910390fd5b6101cb848484846102c6565b50505050565b60606101db610427565b8060200190518101906101ee9190610732565b90505b92915050565b600061020385856102a4565b61028f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4162737472616374506f73744469737061746368486f6f6b3a20696e76616c6960448201527f64206d657461646174612076617269616e74000000000000000000000000000060648201526084016101b6565b61029b85858585610457565b95945050505050565b60008115806101ee575060016102ba8484610538565b61ffff16149392505050565b60006102d283836101d1565b805190915060005b8181101561041e5760008382815181106102f6576102f6610815565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663aaccd230898989896040518563ffffffff1660e01b815260040161033c949392919061088d565b602060405180830381865afa158015610359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037d91906108bf565b905083828151811061039157610391610815565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663086011b9828a8a8a8a6040518663ffffffff1660e01b81526004016103d8949392919061088d565b6000604051808303818588803b1580156103f157600080fd5b505af1158015610405573d6000803e3d6000fd5b505050505050808061041690610907565b9150506102da565b50505050505050565b60608060203603803580820391506040519250602081018301604052808352602083018183823750919392505050565b60008061046484846101d1565b80519091506000805b8281101561052c5783818151811061048757610487610815565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663aaccd2308a8a8a8a6040518563ffffffff1660e01b81526004016104cd949392919061088d565b602060405180830381865afa1580156104ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050e91906108bf565b610518908361093f565b91508061052481610907565b91505061046d565b50979650505050505050565b6000610545816002610952565b60ff16821015610557575060006101f1565b82600083610566826002610952565b60ff16926105769392919061096b565b61057f91610995565b60f01c9392505050565b60008083601f84011261059b57600080fd5b50813567ffffffffffffffff8111156105b357600080fd5b6020830191508360208285010111156105cb57600080fd5b9250929050565b600080600080604085870312156105e857600080fd5b843567ffffffffffffffff8082111561060057600080fd5b61060c88838901610589565b9096509450602087013591508082111561062557600080fd5b5061063287828801610589565b95989497509550505050565b6000806020838503121561065157600080fd5b823567ffffffffffffffff81111561066857600080fd5b61067485828601610589565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156106ce57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010161069c565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b805173ffffffffffffffffffffffffffffffffffffffff8116811461072d57600080fd5b919050565b6000602080838503121561074557600080fd5b825167ffffffffffffffff8082111561075d57600080fd5b818501915085601f83011261077157600080fd5b815181811115610783576107836106da565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156107c6576107c66106da565b6040529182528482019250838101850191888311156107e457600080fd5b938501935b82851015610809576107fa85610709565b845293850193928501926107e9565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6040815260006108a1604083018688610844565b82810360208401526108b4818587610844565b979650505050505050565b6000602082840312156108d157600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610938576109386108d8565b5060010190565b808201808211156101f1576101f16108d8565b60ff81811683821601908111156101f1576101f16108d8565b6000808585111561097b57600080fd5b8386111561098857600080fd5b5050820193919092039150565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156109d55780818660020360031b1b83161692505b50509291505056fea2646970667358221220bfcd573a48cf84e11e3d45702622230c2bf09354ba8ae0ba86f59a3920dd798d64736f6c63430008130033
0x608060405234801561001057600080fd5b50610a13806100206000396000f3fe60806040526004361061005a5760003560e01c8063aaccd23011610043578063aaccd230146100aa578063e445e7dd146100d8578063e5320bb9146100f457600080fd5b8063086011b91461005f57806337b02c2814610074575b600080fd5b61007261006d3660046105d2565b610124565b005b34801561008057600080fd5b5061009461008f36600461063e565b6101d1565b6040516100a19190610680565b60405180910390f35b3480156100b657600080fd5b506100ca6100c53660046105d2565b6101f7565b6040519081526020016100a1565b3480156100e457600080fd5b50604051600281526020016100a1565b34801561010057600080fd5b5061011461010f36600461063e565b6102a4565b60405190151581526020016100a1565b61012e84846102a4565b6101bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4162737472616374506f73744469737061746368486f6f6b3a20696e76616c6960448201527f64206d657461646174612076617269616e74000000000000000000000000000060648201526084015b60405180910390fd5b6101cb848484846102c6565b50505050565b60606101db610427565b8060200190518101906101ee9190610732565b90505b92915050565b600061020385856102a4565b61028f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4162737472616374506f73744469737061746368486f6f6b3a20696e76616c6960448201527f64206d657461646174612076617269616e74000000000000000000000000000060648201526084016101b6565b61029b85858585610457565b95945050505050565b60008115806101ee575060016102ba8484610538565b61ffff16149392505050565b60006102d283836101d1565b805190915060005b8181101561041e5760008382815181106102f6576102f6610815565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663aaccd230898989896040518563ffffffff1660e01b815260040161033c949392919061088d565b602060405180830381865afa158015610359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037d91906108bf565b905083828151811061039157610391610815565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663086011b9828a8a8a8a6040518663ffffffff1660e01b81526004016103d8949392919061088d565b6000604051808303818588803b1580156103f157600080fd5b505af1158015610405573d6000803e3d6000fd5b505050505050808061041690610907565b9150506102da565b50505050505050565b60608060203603803580820391506040519250602081018301604052808352602083018183823750919392505050565b60008061046484846101d1565b80519091506000805b8281101561052c5783818151811061048757610487610815565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663aaccd2308a8a8a8a6040518563ffffffff1660e01b81526004016104cd949392919061088d565b602060405180830381865afa1580156104ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050e91906108bf565b610518908361093f565b91508061052481610907565b91505061046d565b50979650505050505050565b6000610545816002610952565b60ff16821015610557575060006101f1565b82600083610566826002610952565b60ff16926105769392919061096b565b61057f91610995565b60f01c9392505050565b60008083601f84011261059b57600080fd5b50813567ffffffffffffffff8111156105b357600080fd5b6020830191508360208285010111156105cb57600080fd5b9250929050565b600080600080604085870312156105e857600080fd5b843567ffffffffffffffff8082111561060057600080fd5b61060c88838901610589565b9096509450602087013591508082111561062557600080fd5b5061063287828801610589565b95989497509550505050565b6000806020838503121561065157600080fd5b823567ffffffffffffffff81111561066857600080fd5b61067485828601610589565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156106ce57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010161069c565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b805173ffffffffffffffffffffffffffffffffffffffff8116811461072d57600080fd5b919050565b6000602080838503121561074557600080fd5b825167ffffffffffffffff8082111561075d57600080fd5b818501915085601f83011261077157600080fd5b815181811115610783576107836106da565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156107c6576107c66106da565b6040529182528482019250838101850191888311156107e457600080fd5b938501935b82851015610809576107fa85610709565b845293850193928501926107e9565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6040815260006108a1604083018688610844565b82810360208401526108b4818587610844565b979650505050505050565b6000602082840312156108d157600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610938576109386108d8565b5060010190565b808201808211156101f1576101f16108d8565b60ff81811683821601908111156101f1576101f16108d8565b6000808585111561097b57600080fd5b8386111561098857600080fd5b5050820193919092039150565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156109d55780818660020360031b1b83161692505b50509291505056fea2646970667358221220bfcd573a48cf84e11e3d45702622230c2bf09354ba8ae0ba86f59a3920dd798d64736f6c63430008130033