package com.ssj.dao.sys.analysis.dao.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Repository;

import com.ssj.bean.sys.analysis.bean.Analysis;
import com.ssj.dao.sys.analysis.dao.AnalysisQueryDao;
import com.ssj.framework.core.persistence.PagingHibernateJdbcDao;

@Repository
public class AnalysisQueryDaoImpl  implements AnalysisQueryDao {

    @Autowired
    private PagingHibernateJdbcDao dao;
    

	@Override
	public Long countLibJoinConsumeSumByLibService(String date) {
		Long count=new Long(0);
		StringBuilder sb = new StringBuilder();
        sb.append(" SELECT IFNULL(SUM(t.lib_service),0) as count from tb_lib_join_consume t LEFT JOIN fx_merchant m ON t.from_merchant_id=m.id WHERE m.type=1 AND t.type in ('2') AND date_format(t.create_time, '%Y-%m') =?  ");
        List<Object> param = new ArrayList<>();
        param.add(date);
        List<Map<String, Object>> list=dao.findMap(sb.toString(), param.toArray());
        if(list!=null && list.size()>0) {
        	count=Long.parseLong(list.get(0).get("count").toString());
        }
        return count;
	}

	@Override
	public Long countFxMerchantSumByPortNum() {
		Long count=new Long(0);
		StringBuilder sb = new StringBuilder();
        sb.append(" SELECT IFNULL(SUM(t.port_num),0) as count from  fx_merchant t WHERE t.type=1 ");
        List<Object> param = new ArrayList<>();
        List<Map<String, Object>> list=dao.findMap(sb.toString(), param.toArray());
        if(list!=null && list.size()>0) {
        	count=Long.parseLong(list.get(0).get("count").toString());
        }
        return count;
	}

	@Override
	public List<Map<String,Object>> countFxMerchantSumByTop(String date) {
		StringBuilder sb = new StringBuilder();
        sb.append(" SELECT *,IFNULL(count/lib_service,0) as lcount from ( ");
        sb.append(" SELECT ");
        sb.append(" (SELECT IFNULL(SUM(c.lib_service),0) from tb_lib_join_consume c WHERE c.type in ('2') AND date_format(c.create_time, '%Y-%m') =? AND c.from_merchant_id=t.id ) as count,	");
        sb.append(" t.lib_service,");
        sb.append(" t.unit_name");
        sb.append(" from fx_merchant t WHERE t.type=1 ");
        sb.append(" ) as tmp ORDER BY lcount desc LIMIT 10 ");
        
        List<Object> param = new ArrayList<>();
        param.add(date);
        return dao.findMap(sb.toString(), param.toArray());
	}

	@Override
	public Page<Map<String, Object>> countFxMerchantServiceByDate(Map<String, Object> params, Pageable pageable) {
		StringBuilder sb = new StringBuilder();
        sb.append("  SELECT ");
        sb.append("  t.id,t.unit_name,j.league_name, ");
        sb.append("  	( SELECT COUNT(DISTINCT s.vip_id) from tb_lib_vip_service s WHERE s.lib_id=t.lib_id AND date_format(s.start_time, '%Y-%m') =? 	) as count_1, ");
        sb.append("  	( SELECT COUNT(DISTINCT s.vip_id) from tb_lib_vip_service s WHERE s.lib_id=t.lib_id AND date_format(s.end_time, '%Y-%m') =? ) as count_2, ");
        sb.append("  	( SELECT COUNT(DISTINCT s.vip_id) from tb_lib_vip_service s WHERE s.lib_id=t.lib_id AND date_format(s.end_time, '%Y-%m') >=? ) as count_3, ");
        sb.append("  	( SELECT COUNT(DISTINCT s.vip_id) from tb_lib_vip_service s WHERE s.lib_id=t.lib_id AND date_format(s.end_time, '%Y-%m') >? ) as count_4");
        sb.append(" from fx_merchant t  ");
        sb.append(" LEFT JOIN  tb_lib_join j ON t.lib_id=j.id ");
        sb.append(" WHERE t.type=1 AND t.lib_id is NOT null ");
        List<Object> param = new ArrayList<>();
        param.add(params.get("date"));
        param.add(params.get("date"));
        param.add(params.get("date"));
        param.add(params.get("date"));
        if(params.get("unitName")!=null && StringUtils.isNotEmpty(params.get("unitName").toString())) {
        	 sb.append(" and t.unit_name like concat('%',?,'%')  ");
        	 param.add(params.get("unitName"));
        }
        sb.append(" ORDER BY count_1 desc,count_2 desc,count_3 desc,count_4 desc ");
        return dao.findPage(sb.toString(),param.toArray(),pageable);
	}
    
	@Override
	public Page<Map<String, Object>> countFxMerchantServiceByVipDate(Map<String, Object> params, Pageable pageable) {
		StringBuilder sb = new StringBuilder();
		List<Object> param = new ArrayList<>();
		 
        String type=params.get("type")!=null ? params.get("type").toString() : "1";
       
        switch (type) {
			case "1":
				sb.append(" SELECT s.vip_id,u.wx_name,u.photo,v.parent_name,v.child_name,s.start_time,s.end_time from tb_lib_vip_service s  ");
				sb.append(" LEFT JOIN fx_merchant t ON s.lib_id=t.lib_id ");
				sb.append(" LEFT JOIN tb_lib_vip v ON s.vip_id=v.id ");
				sb.append(" LEFT JOIN tb_user u ON v.user_id=u.id ");
				sb.append(" WHERE date_format(s.start_time, '%Y-%m') =?");
				sb.append(" AND t.id=? ");
				param.add(params.get("date"));
				param.add(params.get("id"));
				if(params.get("name")!=null && StringUtils.isNotEmpty(params.get("name").toString())) {
					sb.append(" AND v.child_name like concat('%',?,'%')  ");
					param.add(params.get("name"));
				}
				sb.append(" GROUP BY s.vip_id ORDER BY s.start_time DESC ");
				return dao.findPage(sb.toString(),param.toArray(),pageable);
			case "2":
				sb.append(" SELECT s.vip_id,u.wx_name,u.photo,v.parent_name,v.child_name,s.start_time,s.end_time from tb_lib_vip_service s  ");
				sb.append(" LEFT JOIN fx_merchant t ON s.lib_id=t.lib_id ");
				sb.append(" LEFT JOIN tb_lib_vip v ON s.vip_id=v.id ");
				sb.append(" LEFT JOIN tb_user u ON v.user_id=u.id ");
				sb.append(" WHERE date_format(s.end_time, '%Y-%m') =?");
				sb.append(" AND t.id=? ");
				param.add(params.get("date"));
				param.add(params.get("id"));
				if(params.get("name")!=null && StringUtils.isNotEmpty(params.get("name").toString())) {
					sb.append(" AND v.child_name like concat('%',?,'%')  ");
					param.add(params.get("name"));
				}
				sb.append(" GROUP BY s.vip_id ORDER BY s.start_time DESC ");
				return dao.findPage(sb.toString(),param.toArray(),pageable);
			case "3":
				sb.append(" SELECT s.vip_id,u.wx_name,u.photo,v.parent_name,v.child_name,s.start_time,s.end_time from tb_lib_vip_service s  ");
				sb.append(" LEFT JOIN fx_merchant t ON s.lib_id=t.lib_id ");
				sb.append(" LEFT JOIN tb_lib_vip v ON s.vip_id=v.id ");
				sb.append(" LEFT JOIN tb_user u ON v.user_id=u.id ");
				sb.append(" WHERE date_format(s.end_time, '%Y-%m') >=?");
				sb.append(" AND t.id=? ");
				param.add(params.get("date"));
				param.add(params.get("id"));
				if(params.get("name")!=null && StringUtils.isNotEmpty(params.get("name").toString())) {
					sb.append(" AND v.child_name like concat('%',?,'%')  ");
					param.add(params.get("name"));
				}
				sb.append(" GROUP BY s.vip_id ORDER BY s.start_time DESC ");
				return dao.findPage(sb.toString(),param.toArray(),pageable);
			case "4":
				sb.append(" SELECT s.vip_id,u.wx_name,u.photo,v.parent_name,v.child_name,s.start_time,s.end_time from tb_lib_vip_service s  ");
				sb.append(" LEFT JOIN fx_merchant t ON s.lib_id=t.lib_id ");
				sb.append(" LEFT JOIN tb_lib_vip v ON s.vip_id=v.id ");
				sb.append(" LEFT JOIN tb_user u ON v.user_id=u.id ");
				sb.append(" WHERE date_format(s.end_time, '%Y-%m') =?");
				sb.append(" AND t.id=? ");
				param.add(params.get("date"));
				param.add(params.get("id"));
				if(params.get("name")!=null && StringUtils.isNotEmpty(params.get("name").toString())) {
					sb.append(" AND v.child_name like concat('%',?,'%')  ");
					param.add(params.get("name"));
				}
				sb.append(" GROUP BY s.vip_id ORDER BY s.start_time DESC ");
				return dao.findPage(sb.toString(),param.toArray(),pageable);
			default:
				return null;
		}
       
	}
    
	
	@Override
	public Page<Map<String, Object>> countFxMerchantCommonByCountDate(Map<String, Object> params, Pageable pageable) {
		StringBuilder sb = new StringBuilder();
		String[] types=params.get("types").toString().split(";");
		List<Object> param = new ArrayList<>();
        sb.append("  SELECT ");
        sb.append("  t.id,t.unit_name,j.id as lib_id, j.league_name");
        for (int i = 0; i < types.length; i++) {
        	 sb.append(" , ( SELECT IFNULL(SUM(a.count),0) from tb_analysis_count a WHERE a.lib_id=t.lib_id AND a.type=? AND a.source=? AND a.day_time>=? AND a.day_time<=? ) as count_"+i );
        	 param.add(types[i]);
        	 param.add(params.get("source"));
        	 param.add(params.get("date"));
        	 param.add(params.get("date2"));
		}
        sb.append(" from fx_merchant t  ");
        sb.append(" JOIN  tb_lib_join j ON t.lib_id=j.id ");
        sb.append(" WHERE t.type in (1,5)  ");
        if(params.get("unitName")!=null && StringUtils.isNotEmpty(params.get("unitName").toString())) {
        	 sb.append(" and t.unit_name like concat('%',?,'%')  ");
        	 param.add(params.get("unitName"));
        }
        for (int i = 0; i < types.length; i++) {
        	if(i==0) {
        		sb.append(" ORDER BY count_"+i+" desc ");
        	}else {
        		sb.append("  , count_"+i+" desc ");
        	}
        }
        return dao.findPage(sb.toString(),param.toArray(),pageable);
	}
	
	@Override
	public Page<Map<String, Object>> countFxMerchantCommonByVipDate(Map<String, Object> params, Pageable pageable) {
		StringBuilder sb = new StringBuilder();
		List<Object> param = new ArrayList<>();
        sb.append(" SELECT t.user_id,t.vip_id,u.wx_name,u.photo,v.parent_name,v.child_name,t.create_time ");
        sb.append(" from tb_analysis t  ");
        sb.append(" LEFT JOIN tb_lib_vip v ON t.vip_id=v.id ");
        sb.append(" LEFT JOIN tb_user u ON v.user_id=u.id ");
        sb.append(" WHERE t.lib_id=? AND t.type=? AND t.source =? AND TO_DAYS(t.create_time)>=TO_DAYS(?) AND TO_DAYS(t.create_time)<=TO_DAYS(?)  ");
        param.add(params.get("libId"));
        param.add(params.get("type"));
        param.add(params.get("source"));
        param.add(params.get("date"));
        param.add(params.get("date2"));
        if(params.get("name")!=null && StringUtils.isNotEmpty(params.get("name").toString())) {
        	 sb.append(" and v.child_name like concat('%',?,'%')  ");
        	 param.add(params.get("name"));
        }
        sb.append(" GROUP BY TO_DAYS(t.create_time),t.vip_id ORDER BY t.create_time asc ");
        return dao.findPage(sb.toString(),param.toArray(),pageable);
	}
	
	
	
	@Override
	public Page<Map<String, Object>> countFxMerchantCommonByUserDate(Map<String, Object> params, Pageable pageable) {
		StringBuilder sb = new StringBuilder();
		List<Object> param = new ArrayList<>();
        sb.append(" SELECT t.user_id,u.wx_name,u.photo,u.user_name,t.create_time ");
        sb.append(" from tb_analysis t  ");
        sb.append(" LEFT JOIN tb_user u ON t.user_id=u.id ");
        sb.append(" WHERE t.lib_id=? AND t.type=? AND t.source =? AND TO_DAYS(t.create_time)>=TO_DAYS(?) AND TO_DAYS(t.create_time)<=TO_DAYS(?)  ");
        param.add(params.get("libId"));
        param.add(params.get("type"));
        param.add(params.get("source"));
        param.add(params.get("date"));
        param.add(params.get("date2"));
        if(params.get("name")!=null && StringUtils.isNotEmpty(params.get("name").toString())) {
        	 sb.append(" and u.user_name like concat('%',?,'%')  ");
        	 param.add(params.get("name"));
        }
        sb.append(" GROUP BY TO_DAYS(t.create_time),t.user_id ORDER BY t.create_time asc ");
        return dao.findPage(sb.toString(),param.toArray(),pageable);
	}

	@Override
	public Analysis getAnalysisByDay(String libId, String userId, String vipId, Integer source, Integer type,String dayTime) {
		StringBuilder sb = new StringBuilder();
		List<Object> param = new ArrayList<>();
        sb.append(" SELECT * FROM `tb_analysis` t WHERE t.source=? AND t.type=? AND t.day_time=? AND t.lib_id=? ");
        param.add(source);
        param.add(type);
        param.add(dayTime);
        param.add(libId);
        if(StringUtils.isNotEmpty(userId)) {
       	 	sb.append(" AND t.user_id=? ");
       	 	param.add(userId);
        }
        if(StringUtils.isNotEmpty(userId)) {
          	sb.append(" AND t.vip_id=? ");
          	param.add(vipId);
        }
        sb.append(" LIMIT 1 ");
        List<Analysis> list=dao.findList(sb.toString(),param.toArray(),Analysis.class);
        return list!=null && list.size()>0 ? list.get(0) : null ;
	}
	
	
	
	
	@Override
	public Map<String, Object> countAnalysisCountCommonByCountDate(Map<String, Object> params) {
		StringBuilder sb = new StringBuilder();
		String[] types=params.get("types").toString().split(";");
		List<Object> param = new ArrayList<>();
        sb.append("  SELECT 1 ");
        for (int i = 0; i < types.length; i++) {
        	 sb.append(" , ( SELECT IFNULL(SUM(t.count),0) as count from tb_analysis_count t WHERE t.source=? AND t.type=? AND t.day_time>=? AND t.day_time<=?  ) as count_"+i );
        	 param.add(params.get("source"));
        	 param.add(types[i]);
        	 param.add(params.get("date"));
        	 param.add(params.get("date2"));
        	 
        	 sb.append(" , ( SELECT IFNULL(SUM(t.count),0) as count from tb_analysis_count t WHERE t.source=? AND t.type=? AND t.day_time>=? AND t.day_time<=?  ) as count_"+i+"_"+i );
        	 param.add(params.get("source"));
        	 param.add(types[i]);
        	 param.add(params.get("date3"));
        	 param.add(params.get("date4"));
		}
        List<Map<String, Object>>  list=dao.findMap(sb.toString(),param.toArray());
        return list!=null && list.size()>0 ? list.get(0) : new HashMap<String, Object>();
	}
	
	
	
	@Override
	public Map<String, Object> countRecallCommonByCountDate(Map<String, Object> params) {
		StringBuilder sb = new StringBuilder();
		List<Object> param = new ArrayList<>();
        sb.append("	SELECT 	");
      	sb.append("	IFNULL((SELECT COUNT(DISTINCT a.lib_id) from tb_analysis_count a WHERE a.day_time>=? AND a.day_time<=? ),0)  as count_0, " );
    	sb.append(" IFNULL((SELECT COUNT(DISTINCT a.lib_id) from tb_analysis_count a WHERE a.day_time>=? AND a.day_time<=? ),0)  as count_1 LIMIT 1");
      	param.add(params.get("date"));
    	param.add(params.get("date2"));
    	param.add(params.get("date3"));
    	param.add(params.get("date4"));
    	List<Map<String, Object>>  list=dao.findMap(sb.toString(),param.toArray());
        return list!=null && list.size()>0 ? list.get(0) : new HashMap<String, Object>();
	}
	
	
	@Override
	public Map<String, Object> countUploadWorkCommonByCountDate(Map<String, Object> params) {
		StringBuilder sb = new StringBuilder();
		List<Object> param = new ArrayList<>();
        sb.append("	SELECT  	");
      	sb.append("	 (SELECT IFNULL(count(1),0) from (SELECT t.vip_id,count(t.day_time) as count from tb_analysis t WHERE t.type=3 AND t.day_time>=? AND t.day_time<=? GROUP BY t.vip_id HAVING count>=3) as tmp) as count_0, " );
    	sb.append("  (SELECT IFNULL(count(1),0) from (SELECT t.vip_id,count(t.day_time) as count from tb_analysis t WHERE t.type=3 AND t.day_time>=? AND t.day_time<=? GROUP BY t.vip_id HAVING count>=3) as tmp) as count_1  LIMIT 1");
      	param.add(params.get("date"));
    	param.add(params.get("date2"));
    	param.add(params.get("date3"));
    	param.add(params.get("date4"));
    	List<Map<String, Object>>  list=dao.findMap(sb.toString(),param.toArray());
        return list!=null && list.size()>0 ? list.get(0) : new HashMap<String, Object>();
	}
	
	@Override
	public Integer countActiveNumCommonByLibCountWeek(Map<String, Object> params) {
		StringBuilder sb = new StringBuilder();
		List<Object> param = new ArrayList<>();
      	sb.append("	SELECT IFNULL(count(1),0) as count from (SELECT t.vip_id,count(t.day_time) as count from tb_analysis t WHERE t.lib_id=? AND t.type=3 AND DATE_FORMAT(t.day_time,'%Y')=DATE_FORMAT(DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 1 DAY),'%Y-%m-%d'),'%Y') AND DATE_FORMAT(t.day_time,'%Y')=DATE_FORMAT(DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 1 DAY),'%Y-%m-%d'),'%u') GROUP BY t.vip_id HAVING count>=3) as tmp" );
    	param.add(params.get("libId"));
    	List<Map<String, Object>>  list=dao.findMap(sb.toString(),param.toArray());
        return list!=null && list.size()>0 ? Integer.parseInt(list.get(0).get("count").toString()): 0;
	}
	
	
	public Integer countMemberNumCommonByLibCountWeek(Map<String, Object> params) {
		StringBuilder sb = new StringBuilder();
		List<Object> param = new ArrayList<>();
      	sb.append("	SELECT COUNT(1) as count from tb_lib_vip t WHERE t.lib_id=? " );
    	param.add(params.get("libId"));
    	List<Map<String, Object>>  list=dao.findMap(sb.toString(),param.toArray());
        return list!=null && list.size()>0 ? Integer.parseInt(list.get(0).get("count").toString()) : 0;
	}

	@Override
	public Map<String, Object> countAnalysisWeekCountCommonByCountCurDate(Map<String, Object> params) {
		StringBuilder sb = new StringBuilder();
		List<Object> param = new ArrayList<>();
        sb.append("	SELECT ");
      	sb.append("	 (SELECT COUNT(DISTINCT t.lib_id) from tb_analysis_week t WHERE t.year_week=? AND t.active_ratio>=50) as count_0, " );
    	sb.append("  (SELECT COUNT(DISTINCT t.lib_id) from tb_analysis_week t WHERE t.year_week=? AND t.active_ratio>=50) as count_1, ");
    	sb.append("	 (SELECT COUNT(1) from fx_merchant t WHERE t.type=1 AND t.lib_id is NOT NULL) as count_2	");
      	param.add(params.get("date"));
    	param.add(params.get("date2"));
    	List<Map<String, Object>>  list=dao.findMap(sb.toString(),param.toArray());
        return list!=null && list.size()>0 ? list.get(0) : new HashMap<String, Object>();
	}

	@Override
	public List<Map<String, Object>> countAnalysisWeekCountCommonByCountMonthDate(Map<String, Object> params) {
		StringBuilder sb = new StringBuilder();
		List<Object> param = new ArrayList<>();
      	sb.append("	 SELECT t.lib_id,COUNT(DISTINCT t.year_week) as count from tb_analysis_week t WHERE t.year_week>=? AND t.year_week<=? GROUP BY t.lib_id HAVING count>=?" );
      	param.add(params.get("date"));
    	param.add(params.get("date2"));
    	param.add(params.get("count"));
    	return dao.findMap(sb.toString(),param.toArray());
	}

	@Override
	public List<Map<String, Object>> countLibJoinCountCommonByCountDate(Map<String, Object> params) {
		StringBuilder sb = new StringBuilder();
		List<Object> param = new ArrayList<>();
      	sb.append("	 SELECT t.id,COUNT(m.id) as count from tb_lib_join t LEFT JOIN tb_lib_manager m ON t.id=m.lib_id  " );
       	sb.append("	WHERE TO_DAYS(t.create_time) >=TO_DAYS(?) AND TO_DAYS(t.create_time) <=TO_DAYS(?) ");
       	sb.append(" GROUP BY t.id HAVING count<=0 	");
      	param.add(params.get("date"));
    	param.add(params.get("date2"));
    	return dao.findMap(sb.toString(),param.toArray());
	}
	
	@Override
	public List<Map<String, Object>> countLibJoinCountCommonByCountDateExport(Map<String, Object> params) {
		StringBuilder sb = new StringBuilder();
		List<Object> param = new ArrayList<>();
      	sb.append("	SELECT t.*,COUNT(m.id) as count from tb_lib_join t LEFT JOIN tb_lib_manager m ON t.id=m.lib_id " );
       	sb.append("	WHERE TO_DAYS(t.create_time) >=TO_DAYS(?) AND TO_DAYS(t.create_time) <=TO_DAYS(?) ");
       	sb.append(" GROUP BY t.id HAVING count<=0  ORDER BY t.create_time desc	");
      	param.add(params.get("date"));
    	param.add(params.get("date2"));
    	return dao.findMap(sb.toString(),param.toArray());
	}
	

	@Override
	public Map<String, Object> countVipActivateCountCommonByCountDate(Map<String, Object> params) {
		StringBuilder sb = new StringBuilder();
		List<Object> param = new ArrayList<>();
      	sb.append("	 SELECT  " );
       	sb.append(" (SELECT count(1) from tb_lib_vip t WHERE TO_DAYS(t.activate_time)>=TO_DAYS(?) AND TO_DAYS(t.activate_time)>=TO_DAYS(?)) AS count_0, ");
       	sb.append(" (SELECT count(1) from tb_lib_vip t WHERE t.activate_time is NOT null ) AS count_1	");
      	param.add(params.get("date"));
    	param.add(params.get("date2"));
    	List<Map<String, Object>>  list=dao.findMap(sb.toString(),param.toArray());
        return list!=null && list.size()>0 ? list.get(0) : new HashMap<String, Object>();
	}
	
	@Override
	public List<Map<String, Object>> countVipActivateCountCommonByCountDateExport(Map<String, Object> params) {
		StringBuilder sb = new StringBuilder();
		List<Object> param = new ArrayList<>();
       	sb.append(" SELECT j.league_name,t.* from tb_lib_vip t  LEFT JOIN tb_lib_join j ON t.lib_id=j.id WHERE TO_DAYS(t.activate_time)>=TO_DAYS(?) AND TO_DAYS(t.activate_time)>=TO_DAYS(?) ORDER BY t.activate_time desc ");
      	param.add(params.get("date"));
    	param.add(params.get("date2"));
    	return dao.findMap(sb.toString(),param.toArray());
	}
	

	@Override
	public List<Map<String, Object>> countAnalysisCountCommonByCountTask() {
		StringBuilder sb = new StringBuilder();
		List<Object> param = new ArrayList<>();
      	sb.append("	SELECT t.lib_id,t.source,t.type,DATE_FORMAT(t.create_time,'%Y-%m-%d') as day_time,IF(type=3,COUNT(DISTINCT t.user_id),COUNT(DISTINCT t.vip_id)) as count from tb_analysis t WHERE  TO_DAYS(t.create_time)=TO_DAYS(DATE_SUB(NOW(),INTERVAL 1 DAY)) GROUP BY t.lib_id,t.source,t.type " );
    	return dao.findMap(sb.toString(),param.toArray());
	}

	
}
