how to get the diffuse texture?

in my code i can get all textures mask and diffuse … but how i can detect the diffuse texture from textures

TArray<UMaterialInterface*> mats = smComponent->GetMaterials();
					for (UMaterialInterface* mat : mats)
					{
						mat->GetUsedTextures(outTextures, EMaterialQualityLevel::High, false, ERHIFeatureLevel::Type::ES2, true);
						mat->GetUsedTextures(outTextures, EMaterialQualityLevel::High, false, ERHIFeatureLevel::Type::ES3_1, true);
						mat->GetUsedTextures(outTextures, EMaterialQualityLevel::High, false, ERHIFeatureLevel::Type::Num, true);
						mat->GetUsedTextures(outTextures, EMaterialQualityLevel::High, false, ERHIFeatureLevel::Type::SM4, true);
						mat->GetUsedTextures(outTextures, EMaterialQualityLevel::High, false, ERHIFeatureLevel::Type::SM5, true);
					}

solved

TArray<UTexture*> textures;
		FString xx;
		
		FString name_D = "_D";

		UTexture * tex_D;
		if (mat->GetTextureParameterValue("Diffuse", tex_D))
		{
			name_D = tex_D->GetName();
		}
		else
		{
			name_D = (mat->GetMaterial()->GetBaseMaterial()->BaseColor.Expression->GetReferencedTexture()->GetName());
		}

		mat->GetBaseMaterial()->GetBaseMaterial()->GetUsedTextures(textures, EMaterialQualityLevel::High, true, ERHIFeatureLevel::Type::ES2, true);
		mat->GetBaseMaterial()->GetBaseMaterial()->GetUsedTextures(textures, EMaterialQualityLevel::High, true, ERHIFeatureLevel::Type::ES3_1, true);
		mat->GetBaseMaterial()->GetBaseMaterial()->GetUsedTextures(textures, EMaterialQualityLevel::High, true, ERHIFeatureLevel::Type::Num, true);
		mat->GetBaseMaterial()->GetBaseMaterial()->GetUsedTextures(textures, EMaterialQualityLevel::High, true, ERHIFeatureLevel::Type::SM4, true);
		mat->GetBaseMaterial()->GetBaseMaterial()->GetUsedTextures(textures, EMaterialQualityLevel::High, true, ERHIFeatureLevel::Type::SM5, true);
		if (textures.Num() > 0)
		{
			
			FString NumX;
			NumX = FString::FromInt(textures.Num());
			for (UTexture* tex : textures)
			{
				


				FString sID = tex->GetName();
				if (tex->GetName()==name_D)
				{
					//now the tex is the Diffuse texture

				}

			}

		}

TArray<UTexture*> textures;
FString xx;

		FString name_D = "_D";

						UTexture * tex_D;
						if (mat->GetTextureParameterValue("Diffuse", tex_D))
						{
							name_D = tex_D->GetName();
						}
						else
						{
							if (mat->GetTextureParameterValue("BaseColor", tex_D))
							{
								name_D = tex_D->GetName();
							}
							else
							{
								if (mat->GetMaterial() != NULL)
									if (mat->GetMaterial()->GetBaseMaterial() != NULL)
											if (mat->GetMaterial()->GetBaseMaterial()->BaseColor.Expression != NULL)
												if (mat->GetMaterial()->GetBaseMaterial()->BaseColor.Expression->GetReferencedTexture() != NULL)
													name_D = (mat->GetMaterial()->GetBaseMaterial()->BaseColor.Expression->GetReferencedTexture()->GetName());
							}
						}

		mat->GetBaseMaterial()->GetBaseMaterial()->GetUsedTextures(textures, EMaterialQualityLevel::High, true, ERHIFeatureLevel::Type::ES2, true);
		mat->GetBaseMaterial()->GetBaseMaterial()->GetUsedTextures(textures, EMaterialQualityLevel::High, true, ERHIFeatureLevel::Type::ES3_1, true);
		mat->GetBaseMaterial()->GetBaseMaterial()->GetUsedTextures(textures, EMaterialQualityLevel::High, true, ERHIFeatureLevel::Type::Num, true);
		mat->GetBaseMaterial()->GetBaseMaterial()->GetUsedTextures(textures, EMaterialQualityLevel::High, true, ERHIFeatureLevel::Type::SM4, true);
		mat->GetBaseMaterial()->GetBaseMaterial()->GetUsedTextures(textures, EMaterialQualityLevel::High, true, ERHIFeatureLevel::Type::SM5, true);
		if (textures.Num() > 0)
		{
			
			FString NumX;
			NumX = FString::FromInt(textures.Num());
			for (UTexture* tex : textures)
			{
				


				FString sID = tex->GetName();
				if (tex->GetName()==name_D)
				{
					//now the tex is the Diffuse texture

				}

			}

		}