hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat hat