Профиль
Slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot Slot
Slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot slot Slot
If you beloved this short article and you would like to obtain more facts regarding Judi Slot kindly stop by our web site.
Роль форума: Участник
Тем начато: 0
Ответов написано: 0