SpotBugs Bug Detector Report

The following document contains the results of SpotBugs

SpotBugs Version is 4.9.3

Threshold is medium

Effort is default

Summary

Classes Bugs Errors Missing Classes
100 83 0 0

Files

Class Bugs
org.petify.funding.config.PaymentConfiguration$PaymentProperties 6
org.petify.funding.config.StripeConfiguration 2
org.petify.funding.controller.DonationController 3
org.petify.funding.controller.FundraiserController 1
org.petify.funding.dto.DonationResponse 3
org.petify.funding.dto.DonationResponse$DonationResponseBuilder 1
org.petify.funding.dto.DonationWithPaymentStatusResponse 6
org.petify.funding.dto.DonationWithPaymentStatusResponse$DonationWithPaymentStatusResponseBuilder 2
org.petify.funding.dto.PaymentInitializationResponse 6
org.petify.funding.dto.PaymentInitializationResponse$PaymentInitializationResponseBuilder 3
org.petify.funding.dto.PaymentOptionsResponse 6
org.petify.funding.dto.PaymentOptionsResponse$PaymentOptionsResponseBuilder 2
org.petify.funding.dto.PaymentProviderOption 6
org.petify.funding.dto.PaymentProviderOption$PaymentProviderOptionBuilder 2
org.petify.funding.dto.WebhookEventDto 3
org.petify.funding.dto.WebhookEventDto$WebhookEventDtoBuilder 1
org.petify.funding.model.Donation 6
org.petify.funding.model.Donation$DonationBuilder 2
org.petify.funding.model.Payment 9
org.petify.funding.model.Payment$PaymentBuilder 2
org.petify.funding.service.DonationService 2
org.petify.funding.service.DonationStatusUpdateService 1
org.petify.funding.service.PaymentService 3
org.petify.funding.service.payment.PayUPaymentService 4
org.petify.funding.service.payment.StripePaymentService 1

org.petify.funding.config.PaymentConfiguration$PaymentProperties

Bug Category Details Line Priority
org.petify.funding.config.PaymentConfiguration$PaymentProperties.getAnalytics() may expose internal representation by returning PaymentConfiguration$PaymentProperties.analytics MALICIOUS_CODE EI_EXPOSE_REP 29 Medium
org.petify.funding.config.PaymentConfiguration$PaymentProperties.getPayu() may expose internal representation by returning PaymentConfiguration$PaymentProperties.payu MALICIOUS_CODE EI_EXPOSE_REP 28 Medium
org.petify.funding.config.PaymentConfiguration$PaymentProperties.getStripe() may expose internal representation by returning PaymentConfiguration$PaymentProperties.stripe MALICIOUS_CODE EI_EXPOSE_REP 27 Medium
org.petify.funding.config.PaymentConfiguration$PaymentProperties.setAnalytics(PaymentConfiguration$PaymentProperties$Analytics) may expose internal representation by storing an externally mutable object into PaymentConfiguration$PaymentProperties.analytics MALICIOUS_CODE EI_EXPOSE_REP2 25 Medium
org.petify.funding.config.PaymentConfiguration$PaymentProperties.setPayu(PaymentConfiguration$PaymentProperties$PayU) may expose internal representation by storing an externally mutable object into PaymentConfiguration$PaymentProperties.payu MALICIOUS_CODE EI_EXPOSE_REP2 25 Medium
org.petify.funding.config.PaymentConfiguration$PaymentProperties.setStripe(PaymentConfiguration$PaymentProperties$Stripe) may expose internal representation by storing an externally mutable object into PaymentConfiguration$PaymentProperties.stripe MALICIOUS_CODE EI_EXPOSE_REP2 25 Medium

org.petify.funding.config.StripeConfiguration

Bug Category Details Line Priority
new org.petify.funding.config.StripeConfiguration(PaymentConfiguration$PaymentProperties) may expose internal representation by storing an externally mutable object into StripeConfiguration.paymentProperties MALICIOUS_CODE EI_EXPOSE_REP2 11 Medium
Write to static field com.stripe.Stripe.apiKey from instance method org.petify.funding.config.StripeConfiguration.initializeStripe() STYLE ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD 18 High

org.petify.funding.controller.DonationController

Bug Category Details Line Priority
Found reliance on default encoding in org.petify.funding.controller.DonationController.generateSessionToken(Long): String.getBytes() I18N DM_DEFAULT_ENCODING 215 High
Found reliance on default encoding in org.petify.funding.controller.DonationController.validateSessionToken(String, Long): new String(byte[]) I18N DM_DEFAULT_ENCODING 220 High
new org.petify.funding.controller.DonationController(DonationService, PaymentService) may expose internal representation by storing an externally mutable object into DonationController.donationService MALICIOUS_CODE EI_EXPOSE_REP2 46 Medium

org.petify.funding.controller.FundraiserController

Bug Category Details Line Priority
new org.petify.funding.controller.FundraiserController(FundraiserService) may expose internal representation by storing an externally mutable object into FundraiserController.fundraiserService MALICIOUS_CODE EI_EXPOSE_REP2 35 Medium

org.petify.funding.dto.DonationResponse

Bug Category Details Line Priority
org.petify.funding.dto.DonationResponse.getPayments() may expose internal representation by returning DonationResponse.payments MALICIOUS_CODE EI_EXPOSE_REP 59 Medium
new org.petify.funding.dto.DonationResponse(Long, Long, Long, Long, String, String, String, Boolean, Instant, Instant, Instant, Instant, Instant, DonationType, DonationStatus, BigDecimal, Currency, BigDecimal, BigDecimal, String, BigDecimal, Integer, Integer, Boolean, Boolean, Boolean, List) may expose internal representation by storing an externally mutable object into DonationResponse.payments MALICIOUS_CODE EI_EXPOSE_REP2 24 Medium
org.petify.funding.dto.DonationResponse.setPayments(List) may expose internal representation by storing an externally mutable object into DonationResponse.payments MALICIOUS_CODE EI_EXPOSE_REP2 22 Medium

org.petify.funding.dto.DonationResponse$DonationResponseBuilder

Bug Category Details Line Priority
org.petify.funding.dto.DonationResponse$DonationResponseBuilder.payments(List) may expose internal representation by storing an externally mutable object into DonationResponse$DonationResponseBuilder.payments MALICIOUS_CODE EI_EXPOSE_REP2 25 Medium

org.petify.funding.dto.DonationWithPaymentStatusResponse

Bug Category Details Line Priority
org.petify.funding.dto.DonationWithPaymentStatusResponse.getDonation() may expose internal representation by returning DonationWithPaymentStatusResponse.donation MALICIOUS_CODE EI_EXPOSE_REP 15 Medium
org.petify.funding.dto.DonationWithPaymentStatusResponse.getLatestPayment() may expose internal representation by returning DonationWithPaymentStatusResponse.latestPayment MALICIOUS_CODE EI_EXPOSE_REP 16 Medium
new org.petify.funding.dto.DonationWithPaymentStatusResponse(DonationResponse, PaymentResponse, Boolean, String) may expose internal representation by storing an externally mutable object into DonationWithPaymentStatusResponse.donation MALICIOUS_CODE EI_EXPOSE_REP2 12 Medium
new org.petify.funding.dto.DonationWithPaymentStatusResponse(DonationResponse, PaymentResponse, Boolean, String) may expose internal representation by storing an externally mutable object into DonationWithPaymentStatusResponse.latestPayment MALICIOUS_CODE EI_EXPOSE_REP2 12 Medium
org.petify.funding.dto.DonationWithPaymentStatusResponse.setDonation(DonationResponse) may expose internal representation by storing an externally mutable object into DonationWithPaymentStatusResponse.donation MALICIOUS_CODE EI_EXPOSE_REP2 10 Medium
org.petify.funding.dto.DonationWithPaymentStatusResponse.setLatestPayment(PaymentResponse) may expose internal representation by storing an externally mutable object into DonationWithPaymentStatusResponse.latestPayment MALICIOUS_CODE EI_EXPOSE_REP2 10 Medium

org.petify.funding.dto.DonationWithPaymentStatusResponse$DonationWithPaymentStatusResponseBuilder

Bug Category Details Line Priority
org.petify.funding.dto.DonationWithPaymentStatusResponse$DonationWithPaymentStatusResponseBuilder.donation(DonationResponse) may expose internal representation by storing an externally mutable object into DonationWithPaymentStatusResponse$DonationWithPaymentStatusResponseBuilder.donation MALICIOUS_CODE EI_EXPOSE_REP2 13 Medium
org.petify.funding.dto.DonationWithPaymentStatusResponse$DonationWithPaymentStatusResponseBuilder.latestPayment(PaymentResponse) may expose internal representation by storing an externally mutable object into DonationWithPaymentStatusResponse$DonationWithPaymentStatusResponseBuilder.latestPayment MALICIOUS_CODE EI_EXPOSE_REP2 13 Medium

org.petify.funding.dto.PaymentInitializationResponse

Bug Category Details Line Priority
org.petify.funding.dto.PaymentInitializationResponse.getPayment() may expose internal representation by returning PaymentInitializationResponse.payment MALICIOUS_CODE EI_EXPOSE_REP 13 Medium
org.petify.funding.dto.PaymentInitializationResponse.getProviderSpecificData() may expose internal representation by returning PaymentInitializationResponse.providerSpecificData MALICIOUS_CODE EI_EXPOSE_REP 15 Medium
org.petify.funding.dto.PaymentInitializationResponse.getUiConfig() may expose internal representation by returning PaymentInitializationResponse.uiConfig MALICIOUS_CODE EI_EXPOSE_REP 14 Medium
org.petify.funding.dto.PaymentInitializationResponse.setPayment(PaymentResponse) may expose internal representation by storing an externally mutable object into PaymentInitializationResponse.payment MALICIOUS_CODE EI_EXPOSE_REP2 10 Medium
org.petify.funding.dto.PaymentInitializationResponse.setProviderSpecificData(Map) may expose internal representation by storing an externally mutable object into PaymentInitializationResponse.providerSpecificData MALICIOUS_CODE EI_EXPOSE_REP2 10 Medium
org.petify.funding.dto.PaymentInitializationResponse.setUiConfig(PaymentUiConfig) may expose internal representation by storing an externally mutable object into PaymentInitializationResponse.uiConfig MALICIOUS_CODE EI_EXPOSE_REP2 10 Medium

org.petify.funding.dto.PaymentInitializationResponse$PaymentInitializationResponseBuilder

Bug Category Details Line Priority
org.petify.funding.dto.PaymentInitializationResponse$PaymentInitializationResponseBuilder.payment(PaymentResponse) may expose internal representation by storing an externally mutable object into PaymentInitializationResponse$PaymentInitializationResponseBuilder.payment MALICIOUS_CODE EI_EXPOSE_REP2 11 Medium
org.petify.funding.dto.PaymentInitializationResponse$PaymentInitializationResponseBuilder.providerSpecificData(Map) may expose internal representation by storing an externally mutable object into PaymentInitializationResponse$PaymentInitializationResponseBuilder.providerSpecificData MALICIOUS_CODE EI_EXPOSE_REP2 11 Medium
org.petify.funding.dto.PaymentInitializationResponse$PaymentInitializationResponseBuilder.uiConfig(PaymentUiConfig) may expose internal representation by storing an externally mutable object into PaymentInitializationResponse$PaymentInitializationResponseBuilder.uiConfig MALICIOUS_CODE EI_EXPOSE_REP2 11 Medium

org.petify.funding.dto.PaymentOptionsResponse

Bug Category Details Line Priority
org.petify.funding.dto.PaymentOptionsResponse.getAvailableProviders() may expose internal representation by returning PaymentOptionsResponse.availableProviders MALICIOUS_CODE EI_EXPOSE_REP 19 Medium
org.petify.funding.dto.PaymentOptionsResponse.getDonation() may expose internal representation by returning PaymentOptionsResponse.donation MALICIOUS_CODE EI_EXPOSE_REP 18 Medium
new org.petify.funding.dto.PaymentOptionsResponse(Long, DonationResponse, List, String) may expose internal representation by storing an externally mutable object into PaymentOptionsResponse.availableProviders MALICIOUS_CODE EI_EXPOSE_REP2 15 Medium
new org.petify.funding.dto.PaymentOptionsResponse(Long, DonationResponse, List, String) may expose internal representation by storing an externally mutable object into PaymentOptionsResponse.donation MALICIOUS_CODE EI_EXPOSE_REP2 15 Medium
org.petify.funding.dto.PaymentOptionsResponse.setAvailableProviders(List) may expose internal representation by storing an externally mutable object into PaymentOptionsResponse.availableProviders MALICIOUS_CODE EI_EXPOSE_REP2 12 Medium
org.petify.funding.dto.PaymentOptionsResponse.setDonation(DonationResponse) may expose internal representation by storing an externally mutable object into PaymentOptionsResponse.donation MALICIOUS_CODE EI_EXPOSE_REP2 12 Medium

org.petify.funding.dto.PaymentOptionsResponse$PaymentOptionsResponseBuilder

Bug Category Details Line Priority
org.petify.funding.dto.PaymentOptionsResponse$PaymentOptionsResponseBuilder.availableProviders(List) may expose internal representation by storing an externally mutable object into PaymentOptionsResponse$PaymentOptionsResponseBuilder.availableProviders MALICIOUS_CODE EI_EXPOSE_REP2 13 Medium
org.petify.funding.dto.PaymentOptionsResponse$PaymentOptionsResponseBuilder.donation(DonationResponse) may expose internal representation by storing an externally mutable object into PaymentOptionsResponse$PaymentOptionsResponseBuilder.donation MALICIOUS_CODE EI_EXPOSE_REP2 13 Medium

org.petify.funding.dto.PaymentProviderOption

Bug Category Details Line Priority
org.petify.funding.dto.PaymentProviderOption.getFees() may expose internal representation by returning PaymentProviderOption.fees MALICIOUS_CODE EI_EXPOSE_REP 22 Medium
org.petify.funding.dto.PaymentProviderOption.getSupportedMethods() may expose internal representation by returning PaymentProviderOption.supportedMethods MALICIOUS_CODE EI_EXPOSE_REP 21 Medium
new org.petify.funding.dto.PaymentProviderOption(PaymentProvider, String, List, PaymentFeeCalculation, boolean) may expose internal representation by storing an externally mutable object into PaymentProviderOption.fees MALICIOUS_CODE EI_EXPOSE_REP2 17 Medium
new org.petify.funding.dto.PaymentProviderOption(PaymentProvider, String, List, PaymentFeeCalculation, boolean) may expose internal representation by storing an externally mutable object into PaymentProviderOption.supportedMethods MALICIOUS_CODE EI_EXPOSE_REP2 17 Medium
org.petify.funding.dto.PaymentProviderOption.setFees(PaymentFeeCalculation) may expose internal representation by storing an externally mutable object into PaymentProviderOption.fees MALICIOUS_CODE EI_EXPOSE_REP2 14 Medium
org.petify.funding.dto.PaymentProviderOption.setSupportedMethods(List) may expose internal representation by storing an externally mutable object into PaymentProviderOption.supportedMethods MALICIOUS_CODE EI_EXPOSE_REP2 14 Medium

org.petify.funding.dto.PaymentProviderOption$PaymentProviderOptionBuilder

Bug Category Details Line Priority
org.petify.funding.dto.PaymentProviderOption$PaymentProviderOptionBuilder.fees(PaymentFeeCalculation) may expose internal representation by storing an externally mutable object into PaymentProviderOption$PaymentProviderOptionBuilder.fees MALICIOUS_CODE EI_EXPOSE_REP2 15 Medium
org.petify.funding.dto.PaymentProviderOption$PaymentProviderOptionBuilder.supportedMethods(List) may expose internal representation by storing an externally mutable object into PaymentProviderOption$PaymentProviderOptionBuilder.supportedMethods MALICIOUS_CODE EI_EXPOSE_REP2 15 Medium

org.petify.funding.dto.WebhookEventDto

Bug Category Details Line Priority
org.petify.funding.dto.WebhookEventDto.getEventData() may expose internal representation by returning WebhookEventDto.eventData MALICIOUS_CODE EI_EXPOSE_REP 22 Medium
new org.petify.funding.dto.WebhookEventDto(String, String, String, String, Map, Instant, boolean) may expose internal representation by storing an externally mutable object into WebhookEventDto.eventData MALICIOUS_CODE EI_EXPOSE_REP2 15 Medium
org.petify.funding.dto.WebhookEventDto.setEventData(Map) may expose internal representation by storing an externally mutable object into WebhookEventDto.eventData MALICIOUS_CODE EI_EXPOSE_REP2 13 Medium

org.petify.funding.dto.WebhookEventDto$WebhookEventDtoBuilder

Bug Category Details Line Priority
org.petify.funding.dto.WebhookEventDto$WebhookEventDtoBuilder.eventData(Map) may expose internal representation by storing an externally mutable object into WebhookEventDto$WebhookEventDtoBuilder.eventData MALICIOUS_CODE EI_EXPOSE_REP2 16 Medium

org.petify.funding.model.Donation

Bug Category Details Line Priority
org.petify.funding.model.Donation.getFundraiser() may expose internal representation by returning Donation.fundraiser MALICIOUS_CODE EI_EXPOSE_REP 72 Medium
org.petify.funding.model.Donation.getPayments() may expose internal representation by returning Donation.payments MALICIOUS_CODE EI_EXPOSE_REP 58 Medium
new org.petify.funding.model.Donation(Long, List, DonationStatus, Long, Long, Fundraiser, String, Instant, DonationType, BigDecimal, Currency, String, Boolean, Instant, Instant, Instant, Instant, Integer) may expose internal representation by storing an externally mutable object into Donation.fundraiser MALICIOUS_CODE EI_EXPOSE_REP2 38 Medium
new org.petify.funding.model.Donation(Long, List, DonationStatus, Long, Long, Fundraiser, String, Instant, DonationType, BigDecimal, Currency, String, Boolean, Instant, Instant, Instant, Instant, Integer) may expose internal representation by storing an externally mutable object into Donation.payments MALICIOUS_CODE EI_EXPOSE_REP2 38 Medium
org.petify.funding.model.Donation.setFundraiser(Fundraiser) may expose internal representation by storing an externally mutable object into Donation.fundraiser MALICIOUS_CODE EI_EXPOSE_REP2 36 Medium
org.petify.funding.model.Donation.setPayments(List) may expose internal representation by storing an externally mutable object into Donation.payments MALICIOUS_CODE EI_EXPOSE_REP2 36 Medium

org.petify.funding.model.Donation$DonationBuilder

Bug Category Details Line Priority
org.petify.funding.model.Donation$DonationBuilder.fundraiser(Fundraiser) may expose internal representation by storing an externally mutable object into Donation$DonationBuilder.fundraiser MALICIOUS_CODE EI_EXPOSE_REP2 39 Medium
org.petify.funding.model.Donation$DonationBuilder.payments(List) may expose internal representation by storing an externally mutable object into Donation$DonationBuilder.payments$value MALICIOUS_CODE EI_EXPOSE_REP2 39 Medium

org.petify.funding.model.Payment

Bug Category Details Line Priority
org.petify.funding.model.Payment.getDonation() may expose internal representation by returning Payment.donation MALICIOUS_CODE EI_EXPOSE_REP 44 Medium
org.petify.funding.model.Payment.getMetadata() may expose internal representation by returning Payment.metadata MALICIOUS_CODE EI_EXPOSE_REP 85 Medium
new org.petify.funding.model.Payment(Long, Donation, PaymentStatus, PaymentProvider, PaymentMethod, String, BigDecimal, Currency, BigDecimal, BigDecimal, String, String, Map, String, String, Instant, Instant, Instant) may expose internal representation by storing an externally mutable object into Payment.donation MALICIOUS_CODE EI_EXPOSE_REP2 34 Medium
new org.petify.funding.model.Payment(Long, Donation, PaymentStatus, PaymentProvider, PaymentMethod, String, BigDecimal, Currency, BigDecimal, BigDecimal, String, String, Map, String, String, Instant, Instant, Instant) may expose internal representation by storing an externally mutable object into Payment.metadata MALICIOUS_CODE EI_EXPOSE_REP2 34 Medium
org.petify.funding.model.Payment.setDonation(Donation) may expose internal representation by storing an externally mutable object into Payment.donation MALICIOUS_CODE EI_EXPOSE_REP2 32 Medium
org.petify.funding.model.Payment.setMetadata(Map) may expose internal representation by storing an externally mutable object into Payment.metadata MALICIOUS_CODE EI_EXPOSE_REP2 32 Medium
Null passed for non-null parameter of java.math.BigDecimal.add(BigDecimal) in org.petify.funding.model.Payment.calculateProviderFee() CORRECTNESS NP_NULL_PARAM_DEREF 136 High
Null passed for non-null parameter of java.math.BigDecimal.add(BigDecimal) in org.petify.funding.model.Payment.calculateProviderFee() CORRECTNESS NP_NULL_PARAM_DEREF 136 High
Null passed for non-null parameter of java.math.BigDecimal.add(BigDecimal) in org.petify.funding.model.Payment.calculateProviderFee() CORRECTNESS NP_NULL_PARAM_DEREF 136 Medium

org.petify.funding.model.Payment$PaymentBuilder

Bug Category Details Line Priority
org.petify.funding.model.Payment$PaymentBuilder.donation(Donation) may expose internal representation by storing an externally mutable object into Payment$PaymentBuilder.donation MALICIOUS_CODE EI_EXPOSE_REP2 35 Medium
org.petify.funding.model.Payment$PaymentBuilder.metadata(Map) may expose internal representation by storing an externally mutable object into Payment$PaymentBuilder.metadata MALICIOUS_CODE EI_EXPOSE_REP2 35 Medium

org.petify.funding.service.DonationService

Bug Category Details Line Priority
org.petify.funding.service.DonationService.getAchievementClient() may expose internal representation by returning DonationService.achievementClient MALICIOUS_CODE EI_EXPOSE_REP 50 Medium
new org.petify.funding.service.DonationService(DonationRepository, PaymentRepository, FundraiserRepository, ShelterClient, AchievementClient) may expose internal representation by storing an externally mutable object into DonationService.achievementClient MALICIOUS_CODE EI_EXPOSE_REP2 39 Medium

org.petify.funding.service.DonationStatusUpdateService

Bug Category Details Line Priority
new org.petify.funding.service.DonationStatusUpdateService(DonationRepository, PaymentRepository, AchievementClient) may expose internal representation by storing an externally mutable object into DonationStatusUpdateService.achievementClient MALICIOUS_CODE EI_EXPOSE_REP2 17 Medium

org.petify.funding.service.PaymentService

Bug Category Details Line Priority
new org.petify.funding.service.PaymentService(PaymentRepository, DonationRepository, PaymentProviderFactory, DonationStatusUpdateService) may expose internal representation by storing an externally mutable object into PaymentService.statusUpdateService MALICIOUS_CODE EI_EXPOSE_REP2 42 Medium
Format string should use %n rather than \n in org.petify.funding.service.PaymentService.buildUiConfig(PaymentProvider, PaymentResponse) BAD_PRACTICE VA_FORMAT_STRING_USES_NEWLINE 285 Medium
Format string should use %n rather than \n in org.petify.funding.service.PaymentService.buildUiConfig(PaymentProvider, PaymentResponse) BAD_PRACTICE VA_FORMAT_STRING_USES_NEWLINE 297 Medium

org.petify.funding.service.payment.PayUPaymentService

Bug Category Details Line Priority
new org.petify.funding.service.payment.PayUPaymentService(PaymentRepository, DonationRepository, RestTemplate, ObjectMapper, DonationStatusUpdateService) may expose internal representation by storing an externally mutable object into PayUPaymentService.objectMapper MALICIOUS_CODE EI_EXPOSE_REP2 42 Medium
new org.petify.funding.service.payment.PayUPaymentService(PaymentRepository, DonationRepository, RestTemplate, ObjectMapper, DonationStatusUpdateService) may expose internal representation by storing an externally mutable object into PayUPaymentService.restTemplate MALICIOUS_CODE EI_EXPOSE_REP2 42 Medium
new org.petify.funding.service.payment.PayUPaymentService(PaymentRepository, DonationRepository, RestTemplate, ObjectMapper, DonationStatusUpdateService) may expose internal representation by storing an externally mutable object into PayUPaymentService.statusUpdateService MALICIOUS_CODE EI_EXPOSE_REP2 42 Medium
Exception is caught when Exception is not thrown in org.petify.funding.service.payment.PayUPaymentService.createPayment(PaymentRequest) STYLE REC_CATCH_EXCEPTION 123 Medium

org.petify.funding.service.payment.StripePaymentService

Bug Category Details Line Priority
new org.petify.funding.service.payment.StripePaymentService(PaymentRepository, DonationRepository, DonationStatusUpdateService) may expose internal representation by storing an externally mutable object into StripePaymentService.statusUpdateService MALICIOUS_CODE EI_EXPOSE_REP2 40 Medium