make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make likemake like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like make like please