るるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるるる