update for qrcode, firstbad, no allow selfpoint