#include<iostream>
using namespace std;
#define DB(x) 
char *ans[100];

struct Pos{
	double x,y;
};

Pos VSub(Pos *a,Pos *b){
	Pos p;
	p.x = a ->x - b ->x;
	p.y = a ->y - b ->y;
	return p;
}
double VDot(Pos *a,Pos *b){
	return a->x * b->x + a->y * b->y;
}
int main(){
	int cor = 0,i;
	Pos c[4];
	while(cin >> c[0].x){
		cin >> c[0].y;
		for(i = 1;i < 4;i++)
			cin >> c[i].x >> c[i].y;
		Pos v[2];
			v[0] = VSub(&c[0],&c[1]);
			v[1] = VSub(&c[2],&c[3]);
			DB(cout << v[0].x << " " << v[0].y << endl;
			cout << v[1].x << " " << v[1].y << endl;
			cout << VDot(&v[0],&v[1]) << endl;)
			if(VDot(&v[0],&v[1]) == 0)
				ans[cor] = "YES";
			else
				ans[cor] = "NO";
			cor++;
	}
	for(i = 0;i < cor;i++)
		cout << ans[i] << endl;
	return 0;
}