Sarwar accuses Swinney of 'dishonest' by-election campaign