From be480ead88f3426d03d4bb33e3367181b3527811 Mon Sep 17 00:00:00 2001 From: Rainnny7 Date: Thu, 6 Jun 2024 14:22:13 -0400 Subject: [PATCH] English content --- .../me/braydon/profanity/common/Language.java | 10 + .../controller/ContentController.java | 48 + .../exception/ExceptionController.java | 38 + .../exception/impl/BadRequestException.java | 18 + .../profanity/model/ProfanityList.java | 33 + .../model/input/ContentProcessInput.java | 26 + .../response/ContentProcessResponse.java | 37 + .../model/response/ErrorResponse.java | 43 + .../repository/ProfanityListRepository.java | 18 + .../profanity/service/FiltrationService.java | 21 +- .../profanity/service/ModerationService.java | 8 +- lists/english.json | 2596 +++++++++++++++++ 12 files changed, 2894 insertions(+), 2 deletions(-) create mode 100644 API/src/main/java/me/braydon/profanity/common/Language.java create mode 100644 API/src/main/java/me/braydon/profanity/controller/ContentController.java create mode 100644 API/src/main/java/me/braydon/profanity/exception/ExceptionController.java create mode 100644 API/src/main/java/me/braydon/profanity/exception/impl/BadRequestException.java create mode 100644 API/src/main/java/me/braydon/profanity/model/ProfanityList.java create mode 100644 API/src/main/java/me/braydon/profanity/model/input/ContentProcessInput.java create mode 100644 API/src/main/java/me/braydon/profanity/model/response/ContentProcessResponse.java create mode 100644 API/src/main/java/me/braydon/profanity/model/response/ErrorResponse.java create mode 100644 API/src/main/java/me/braydon/profanity/repository/ProfanityListRepository.java create mode 100644 lists/english.json diff --git a/API/src/main/java/me/braydon/profanity/common/Language.java b/API/src/main/java/me/braydon/profanity/common/Language.java new file mode 100644 index 0000000..a26b1f3 --- /dev/null +++ b/API/src/main/java/me/braydon/profanity/common/Language.java @@ -0,0 +1,10 @@ +package me.braydon.profanity.common; + +/** + * A list of supported languages. + * + * @author Braydon + */ +public enum Language { + ENGLISH +} \ No newline at end of file diff --git a/API/src/main/java/me/braydon/profanity/controller/ContentController.java b/API/src/main/java/me/braydon/profanity/controller/ContentController.java new file mode 100644 index 0000000..9699a2d --- /dev/null +++ b/API/src/main/java/me/braydon/profanity/controller/ContentController.java @@ -0,0 +1,48 @@ +package me.braydon.profanity.controller; + +import lombok.NonNull; +import me.braydon.profanity.exception.impl.BadRequestException; +import me.braydon.profanity.model.input.ContentProcessInput; +import me.braydon.profanity.model.response.ContentProcessResponse; +import me.braydon.profanity.service.FiltrationService; +import me.braydon.profanity.service.ModerationService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author Braydon + */ +@RestController +@RequestMapping(value = "/content", produces = MediaType.APPLICATION_JSON_VALUE) +public final class ContentController { + /** + * The filtration service to use. + */ + @NonNull private final FiltrationService filtrationService; + + /** + * The moderation service to use. + */ + @NonNull private final ModerationService moderationService; + + @Autowired + public ContentController(@NonNull FiltrationService filtrationService, @NonNull ModerationService moderationService) { + this.filtrationService = filtrationService; + this.moderationService = moderationService; + } + + @PostMapping(path = "/process") @ResponseBody @NonNull + public ResponseEntity process(ContentProcessInput input) throws BadRequestException { + if (input == null || (input.isMalformed())) { // Validate the input + throw new BadRequestException("Missing or malformed input."); + } + ContentProcessResponse response = filtrationService.process(input); // Filter the content + moderationService.handleAlerts(response); // Handle moderation + return ResponseEntity.ok(response); + } +} \ No newline at end of file diff --git a/API/src/main/java/me/braydon/profanity/exception/ExceptionController.java b/API/src/main/java/me/braydon/profanity/exception/ExceptionController.java new file mode 100644 index 0000000..98645f2 --- /dev/null +++ b/API/src/main/java/me/braydon/profanity/exception/ExceptionController.java @@ -0,0 +1,38 @@ +package me.braydon.profanity.exception; + +import jakarta.servlet.http.HttpServletRequest; +import lombok.NonNull; +import me.braydon.profanity.model.response.ErrorResponse; +import org.springframework.boot.autoconfigure.web.servlet.error.AbstractErrorController; +import org.springframework.boot.web.error.ErrorAttributeOptions; +import org.springframework.boot.web.servlet.error.ErrorAttributes; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Map; + +/** + * The route to handle errors for this app. + * + * @author Braydon + */ +@RestController +@RequestMapping(value = "/error", produces = MediaType.APPLICATION_JSON_VALUE) +public final class ExceptionController extends AbstractErrorController { + public ExceptionController(@NonNull ErrorAttributes errorAttributes) { + super(errorAttributes); + } + + @RequestMapping @ResponseBody @NonNull + public ResponseEntity onError(@NonNull HttpServletRequest request) { + Map error = getErrorAttributes(request, ErrorAttributeOptions.of( + ErrorAttributeOptions.Include.MESSAGE + )); + HttpStatus status = getStatus(request); // The status code + return new ResponseEntity<>(new ErrorResponse(status, (String) error.get("message")), status); + } +} \ No newline at end of file diff --git a/API/src/main/java/me/braydon/profanity/exception/impl/BadRequestException.java b/API/src/main/java/me/braydon/profanity/exception/impl/BadRequestException.java new file mode 100644 index 0000000..3c88414 --- /dev/null +++ b/API/src/main/java/me/braydon/profanity/exception/impl/BadRequestException.java @@ -0,0 +1,18 @@ +package me.braydon.profanity.exception.impl; + +import lombok.NonNull; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ResponseStatus; + +/** + * This exception is raised + * when a bad request is made. + * + * @author Braydon + */ +@ResponseStatus(HttpStatus.BAD_REQUEST) +public final class BadRequestException extends RuntimeException { + public BadRequestException(@NonNull String message) { + super(message); + } +} \ No newline at end of file diff --git a/API/src/main/java/me/braydon/profanity/model/ProfanityList.java b/API/src/main/java/me/braydon/profanity/model/ProfanityList.java new file mode 100644 index 0000000..cb6bc3a --- /dev/null +++ b/API/src/main/java/me/braydon/profanity/model/ProfanityList.java @@ -0,0 +1,33 @@ +package me.braydon.profanity.model; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NonNull; +import me.braydon.profanity.common.Language; + +import java.util.List; +import java.util.Map; + +/** + * A list of profane words and + * phrases for each language. + * + * @author Braydon + */ +@AllArgsConstructor @Getter +public final class ProfanityList { + /** + * The links that are whitelisted from the filter. + */ + @NonNull private final List whitelistedLinks; + + /** + * Profane words for each language. + */ + @NonNull private final Map> profaneWords; + + /** + * Profane phrases for each language. + */ + @NonNull private final Map> profanePhrases; +} \ No newline at end of file diff --git a/API/src/main/java/me/braydon/profanity/model/input/ContentProcessInput.java b/API/src/main/java/me/braydon/profanity/model/input/ContentProcessInput.java new file mode 100644 index 0000000..437e66a --- /dev/null +++ b/API/src/main/java/me/braydon/profanity/model/input/ContentProcessInput.java @@ -0,0 +1,26 @@ +package me.braydon.profanity.model.input; + +import lombok.Getter; +import lombok.Setter; + +/** + * The input to use for processing content. + * + * @author Braydon + */ +@Setter @Getter +public final class ContentProcessInput { + /** + * The content to process. + */ + private String content; + + /** + * Check if this input is malformed. + * + * @return whether the input is malformed + */ + public boolean isMalformed() { + return content == null || content.isEmpty(); + } +} \ No newline at end of file diff --git a/API/src/main/java/me/braydon/profanity/model/response/ContentProcessResponse.java b/API/src/main/java/me/braydon/profanity/model/response/ContentProcessResponse.java new file mode 100644 index 0000000..a58e0a4 --- /dev/null +++ b/API/src/main/java/me/braydon/profanity/model/response/ContentProcessResponse.java @@ -0,0 +1,37 @@ +package me.braydon.profanity.model.response; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NonNull; + +import java.util.List; + +/** + * @author Braydon + */ +@AllArgsConstructor @Getter +public final class ContentProcessResponse { + /** + * The replacement for the content. + */ + @NonNull private final String replacement; + + /** + * The matched elements in the content. + */ + @NonNull private final List matched; + + /** + * The tags obtained from the content. + */ + @NonNull private final List tags; + + /** + * The score of the content. + *

+ * This is a value from 0-1 representing the + * probability that the content is profane. + *

+ */ + private final double score; +} \ No newline at end of file diff --git a/API/src/main/java/me/braydon/profanity/model/response/ErrorResponse.java b/API/src/main/java/me/braydon/profanity/model/response/ErrorResponse.java new file mode 100644 index 0000000..11d6fcf --- /dev/null +++ b/API/src/main/java/me/braydon/profanity/model/response/ErrorResponse.java @@ -0,0 +1,43 @@ +package me.braydon.profanity.model.response; + +import lombok.Getter; +import lombok.NonNull; +import lombok.ToString; +import org.springframework.http.HttpStatus; + +import java.util.Date; + +/** + * A response representing an error. + * + * @author Braydon + */ +@Getter @ToString +public class ErrorResponse { + /** + * The status code of this error. + */ + @NonNull private final HttpStatus status; + + /** + * The HTTP code of this error. + */ + private final int code; + + /** + * The message of this error. + */ + @NonNull private final String message; + + /** + * The timestamp this error occurred. + */ + @NonNull private final Date timestamp; + + public ErrorResponse(@NonNull HttpStatus status, @NonNull String message) { + this.status = status; + this.message = message; + this.code = status.value(); + timestamp = new Date(); + } +} \ No newline at end of file diff --git a/API/src/main/java/me/braydon/profanity/repository/ProfanityListRepository.java b/API/src/main/java/me/braydon/profanity/repository/ProfanityListRepository.java new file mode 100644 index 0000000..7398ba2 --- /dev/null +++ b/API/src/main/java/me/braydon/profanity/repository/ProfanityListRepository.java @@ -0,0 +1,18 @@ +package me.braydon.profanity.repository; + +import me.braydon.profanity.model.ProfanityList; +import org.springframework.data.mongodb.repository.MongoRepository; + +/** + * @author Braydon + */ +public interface ProfanityListRepository extends MongoRepository { + /** + * Get the profanity list. + * + * @return the profanity list + */ + default ProfanityList getProfanityList() { + return findById("primary").orElse(null); + } +} \ No newline at end of file diff --git a/API/src/main/java/me/braydon/profanity/service/FiltrationService.java b/API/src/main/java/me/braydon/profanity/service/FiltrationService.java index d983608..b4a11fd 100644 --- a/API/src/main/java/me/braydon/profanity/service/FiltrationService.java +++ b/API/src/main/java/me/braydon/profanity/service/FiltrationService.java @@ -1,7 +1,14 @@ package me.braydon.profanity.service; +import lombok.NonNull; +import me.braydon.profanity.model.input.ContentProcessInput; +import me.braydon.profanity.model.response.ContentProcessResponse; +import me.braydon.profanity.repository.ProfanityListRepository; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; + /** * This service is responsible * for filtering text content. @@ -9,4 +16,16 @@ import org.springframework.stereotype.Service; * @author Braydon */ @Service -public final class FiltrationService { } \ No newline at end of file +public final class FiltrationService { + @NonNull private final ProfanityListRepository profanityListRepository; + + @Autowired + public FiltrationService(@NonNull ProfanityListRepository profanityListRepository) { + this.profanityListRepository = profanityListRepository; + } + + @NonNull + public ContentProcessResponse process(@NonNull ContentProcessInput input) { + return new ContentProcessResponse(input.getContent(), new ArrayList<>(), new ArrayList<>(), 0D); + } +} \ No newline at end of file diff --git a/API/src/main/java/me/braydon/profanity/service/ModerationService.java b/API/src/main/java/me/braydon/profanity/service/ModerationService.java index 77d4d00..11f1d6e 100644 --- a/API/src/main/java/me/braydon/profanity/service/ModerationService.java +++ b/API/src/main/java/me/braydon/profanity/service/ModerationService.java @@ -1,5 +1,7 @@ package me.braydon.profanity.service; +import lombok.NonNull; +import me.braydon.profanity.model.response.ContentProcessResponse; import org.springframework.stereotype.Service; /** @@ -9,4 +11,8 @@ import org.springframework.stereotype.Service; * @author Braydon */ @Service -public final class ModerationService { } \ No newline at end of file +public final class ModerationService { + public void handleAlerts(@NonNull ContentProcessResponse response) { + // TODO: handle alerting of the content to the appropriate parties + } +} \ No newline at end of file diff --git a/lists/english.json b/lists/english.json new file mode 100644 index 0000000..cae080f --- /dev/null +++ b/lists/english.json @@ -0,0 +1,2596 @@ +[ + "2 girls 1 cup", + "2g1c", + "abbo", + "abeed", + "abuse", + "acrotomophilia", + "africoon", + "ahole", + "alabama hot pocket", + "alaskan pipeline", + "amcik", + "anal", + "analannie", + "analprobe", + "analsex", + "andskota", + "anilingus", + "anus", + "apeshit", + "arabush", + "arabushs", + "areola", + "areole", + "argie", + "armo", + "armos", + "aroused", + "arrse", + "arschloch", + "arse", + "arsehole", + "aryan", + "ashole", + "ass monkey", + "ass", + "ass-fucker", + "ass-hat", + "ass-pirate", + "assbag", + "assbagger", + "assbandit", + "assbang", + "assbanged", + "assbanger", + "assbangs", + "assbite", + "assblaster", + "assclown", + "asscock", + "asscowboy", + "asscracker", + "asses", + "assface", + "assfuck", + "assfucker", + "assfukka", + "assgoblin", + "asshat", + "asshead", + "assho1e", + "asshole", + "assholes", + "assholz", + "asshopper", + "asshore", + "assjacker", + "assjockey", + "asskiss", + "asskisser", + "assklown", + "asslick", + "asslicker", + "asslover", + "assman", + "assmaster", + "assmonkey", + "assmunch", + "assmuncher", + "assnigger", + "asspacker", + "asspirate", + "asspuppies", + "assrammer", + "assranger", + "assshit", + "assshole", + "asssucker", + "asswad", + "asswhole", + "asswhore", + "asswipe", + "asswipes", + "autoerotic", + "ayir", + "azazel", + "azz", + "azzhole", + "babeland", + "babes", + "baby batter", + "baby juice", + "backdoor", + "backdoorman", + "badfuck", + "bagging", + "ball gag", + "ball gravy", + "ball kicking", + "ball licking", + "ball sack", + "ball sucking", + "ballbag", + "balllicker", + "ballsack", + "bampot", + "bangbro", + "bangbros", + "bangbus", + "banger", + "banging", + "bareback", + "barely legal", + "barelylegal", + "barenaked", + "basterd", + "bassterd", + "bassterds", + "bastard", + "bastardo", + "bastards", + "bastardz", + "basterds", + "basterdz", + "bastinado", + "bawdy", + "bazongas", + "bazooms", + "bbw", + "bdsm", + "beaner", + "beaners", + "beaney", + "beaneys", + "beardedclam", + "beastality", + "beastial", + "beastiality", + "beastility", + "beatch", + "beatoff", + "beatyourmeat", + "beaver cleaver", + "beaver lips", + "beef curtains", + "beeyotch", + "bellend", + "beotch", + "bestial", + "bestiality", + "bi curious", + "biatch", + "bicurious", + "big black", + "big breasts", + "big knockers", + "big tits", + "bigass", + "bigbastard", + "bigbreasts", + "bigbutt", + "bigtits", + "bimbo", + "bimbos", + "bint", + "birdlock", + "bitch", + "bitchass", + "bitched", + "bitcher", + "bitchers", + "bitches", + "bitchez", + "bitchin", + "bitching", + "bitchslap", + "bitchtit", + "bitchy", + "biteme", + "bitties", + "black cock", + "blackcock", + "blackout", + "blonde action", + "blonde on blonde action", + "blonde on blonde", + "bloodclaat", + "bloody", + "blow j", + "blow job", + "blow your load", + "blowjob", + "blowjobs", + "blue waffle", + "bluegum", + "bluegums", + "blumpkin", + "boang", + "boche", + "boches", + "boffing", + "bogan", + "bohunk", + "boink", + "boiolas", + "bollick", + "bollock", + "bollocks", + "bollok", + "bollox", + "bomd", + "bondage", + "boner", + "boners", + "bong", + "bookie", + "boong", + "boonga", + "boongas", + "boongs", + "boonie", + "boonies", + "booobs", + "boooobs", + "booooobs", + "booooooobs", + "bootee", + "bootlip", + "bootlips", + "boozer", + "boozy", + "bosch", + "bosche", + "bosches", + "boschs", + "bosomy", + "bounty bar", + "bounty bars", + "bountybar", + "breastjob", + "breastlover", + "breastman", + "brown shower", + "brown showers", + "brunette action", + "btch", + "buceta", + "buddhahead", + "buddhaheads", + "buffies", + "bugger", + "buggered", + "buggery", + "bukake", + "bukkake", + "bulldike", + "bulldyke", + "bullet vibe", + "bullshit", + "bullshits", + "bullshitted", + "bullturds", + "bumblefuck", + "bumfuck", + "bung hole", + "bung", + "bunga", + "bungas", + "bunghole", + "bunny fucker", + "burr head", + "burr heads", + "burrhead", + "burrheads", + "butchbabes", + "butchdike", + "butchdyke", + "butt plug", + "butt-pirate", + "buttbang", + "buttcheeks", + "buttface", + "buttfuck", + "buttfucker", + "buttfuckers", + "butthead", + "butthole", + "buttman", + "buttmuch", + "buttmunch", + "buttmuncher", + "buttpirate", + "buttplug", + "buttstain", + "buttwipe", + "byatch", + "c0k", + "cabron", + "caca", + "cacker", + "cahone", + "camel jockey", + "camel jockeys", + "camel toe", + "cameljockey", + "cameltoe", + "camgirl", + "camslut", + "camwhore", + "carpet muncher", + "carpetmuncher", + "carruth", + "cawk", + "cawks", + "cazzo", + "cervix", + "chav", + "cheese eating surrender monkey", + "cheese eating surrender monkies", + "cheeseeating surrender monkey", + "cheeseeating surrender monkies", + "cheesehead", + "cheeseheads", + "cherrypopper", + "chickslick", + "china swede", + "china swedes", + "chinaman", + "chinamen", + "chinaswede", + "chinaswedes", + "chinc", + "chincs", + "ching chong", + "ching chongs", + "chinga", + "chingchong", + "chingchongs", + "chink", + "chinks", + "chinky", + "choad", + "chocolate rosebuds", + "chode", + "chodes", + "chonkies", + "chonky", + "chonkys", + "chraa", + "christ killer", + "christ killers", + "chug", + "chugs", + "chuj", + "chunger", + "chungers", + "chunkies", + "chunkys", + "chute", + "cipa", + "circlejerk", + "cl1t", + "clamdigger", + "clamdiver", + "clamps", + "clansman", + "clansmen", + "clanswoman", + "clanswomen", + "cleveland steamer", + "clit", + "clitface", + "clitfuck", + "clitoris", + "clitorus", + "clits", + "clitty", + "clogwog", + "clover clamps", + "clusterfuck", + "cnts", + "cntz", + "cnut", + "cocain", + "cocaine", + "cock", + "cock-head", + "cock-sucker", + "cockbite", + "cockblock", + "cockblocker", + "cockburger", + "cockcowboy", + "cockface", + "cockfight", + "cockfucker", + "cockhead", + "cockholster", + "cockjockey", + "cockknob", + "cockknocker", + "cockknoker", + "cocklicker", + "cocklover", + "cockmaster", + "cockmongler", + "cockmongruel", + "cockmonkey", + "cockmunch", + "cockmuncher", + "cocknob", + "cocknose", + "cocknugget", + "cockqueen", + "cockrider", + "cocks", + "cockshit", + "cocksman", + "cocksmith", + "cocksmoker", + "cocksucer", + "cocksuck", + "cocksucked", + "cocksucker", + "cocksucking", + "cocksucks", + "cocksuka", + "cocksukka", + "cocktease", + "cocky", + "cohee", + "coital", + "coitus", + "cok", + "cokmuncher", + "coksucka", + "commie", + "condom", + "coochie", + "coochy", + "coolie", + "coolies", + "cooly", + "coon ass", + "coon asses", + "coonass", + "coonasses", + "coondog", + "coons", + "cooter", + "coprolagnia", + "coprophilia", + "copulate", + "corksucker", + "cornhole", + "crabs", + "crackcocain", + "cracker", + "crackpipe", + "crackwhore", + "crap", + "crapola", + "crapper", + "crappy", + "creampie", + "crotch", + "crotchjockey", + "crotchmonkey", + "crotchrot", + "cuck", + "cum face", + "cum licker", + "cum", + "cumbubble", + "cumdumpster", + "cumfest", + "cumguzzler", + "cuming", + "cumjockey", + "cumlickr", + "cumm", + "cummer", + "cummin", + "cumming", + "cumquat", + "cumqueen", + "cums", + "cumshot", + "cumshots", + "cumslut", + "cumstain", + "cumsucker", + "cumtart", + "cunilingus", + "cunillingus", + "cunn", + "cunnie", + "cunnilingus", + "cunntt", + "cunny", + "cunt", + "cunteyed", + "cuntface", + "cuntfuck", + "cuntfucker", + "cunthole", + "cunthunter", + "cuntlick", + "cuntlicker", + "cuntlicking", + "cuntrag", + "cunts", + "cuntslut", + "cuntsucker", + "cuntz", + "curry muncher", + "curry munchers", + "currymuncher", + "currymunchers", + "cushi", + "cushis", + "cyalis", + "cyberfuc", + "cyberfuck", + "cyberfucked", + "cyberfucker", + "cyberfuckers", + "cyberfucking", + "cybersex", + "cyberslimer", + "d0uch3", + "d0uche", + "d1ck", + "d1ld0", + "d1ldo", + "dago", + "dagos", + "damnation", + "darkey", + "darkeys", + "darkie", + "darkies", + "darky", + "date rape", + "daterape", + "datnigga", + "dawgie style", + "dawgie-style", + "daygo", + "deapthroat", + "deep throat", + "deep throating", + "deepaction", + "deepthroat", + "deepthroating", + "defecate", + "deggo", + "dego", + "degos", + "demon", + "dendrophilia", + "destroyyourpussy", + "deth", + "diaper daddy", + "diaper head", + "diaper heads", + "diaperdaddy", + "diaperhead", + "diaperheads", + "dick pic", + "dick", + "dick-ish", + "dickbag", + "dickbeater", + "dickbeaters", + "dickbrain", + "dickdipper", + "dickface", + "dickflipper", + "dickforbrains", + "dickfuck", + "dickhead", + "dickheads", + "dickhole", + "dickish", + "dickjuice", + "dickless", + "dicklick", + "dicklicker", + "dickman", + "dickmilk", + "dickmonger", + "dickpic", + "dickripper", + "dicks", + "dicksipper", + "dickslap", + "dickslicker", + "dicksucker", + "dickwad", + "dickweasel", + "dickweed", + "dickwhipper", + "dickwod", + "dickzipper", + "diddle", + "dike", + "dild0", + "dild0s", + "dildo", + "dildos", + "dilf", + "diligaf", + "dilld0", + "dilld0s", + "dillweed", + "dimwit", + "dingle", + "dingleberries", + "dingleberry", + "dink", + "dinks", + "dipship", + "dipshit", + "dipstick", + "dirsa", + "dirty pillows", + "dirty sanchez", + "dix", + "dixiedike", + "dixiedyke", + "dlck", + "dog style", + "dog-fucker", + "doggie style", + "doggie", + "doggie-style", + "doggiestyle", + "doggin", + "dogging", + "doggy style", + "doggy-style", + "doggystyle", + "dolcett", + "domination", + "dominatricks", + "dominatrics", + "dominatrix", + "dommes", + "dong", + "donkey punch", + "donkeypunch", + "donkeyribber", + "doochbag", + "doodoo", + "doofus", + "dookie", + "doosh", + "dot head", + "dot heads", + "dothead", + "dotheads", + "double dong", + "double penetration", + "doubledong", + "doublepenetration", + "douch3", + "douche bag", + "douche", + "douche-fag", + "douchebag", + "douchebags", + "douchewaffle", + "douchey", + "dp action", + "dpaction", + "dragqueen", + "dragqween", + "dripdick", + "dry hump", + "dryhump", + "duche", + "dudette", + "dumass", + "dumb ass", + "dumbass", + "dumbasses", + "dumbbitch", + "dumbfuck", + "dumbshit", + "dumshit", + "dune coon", + "dune coons", + "dupa", + "dvda", + "dyefly", + "dyke", + "dykes", + "dziwka", + "earotics", + "easyslut", + "eat my ass", + "eat my", + "eatadick", + "eatballs", + "eathairpie", + "eatme", + "eatmyass", + "eatpussy", + "ecchi", + "ejackulate", + "ejakulate", + "ekrem", + "ekto", + "enculer", + "enema", + "enlargement", + "erect", + "erection", + "ero", + "erotic", + "erotism", + "escort", + "esqua", + "essohbee", + "ethical slut", + "evl", + "excrement", + "exkwew", + "extacy", + "extasy", + "f4nny", + "facefucker", + "fack", + "faeces", + "faen", + "fag", + "fag1t", + "fagbag", + "faget", + "fagfucker", + "fagg", + "fagg1t", + "fagged", + "fagging", + "faggit", + "faggitt", + "faggot", + "faggotcock", + "faggs", + "fagit", + "fagot", + "fagots", + "fags", + "fagt", + "fagtard", + "fagz", + "faig", + "faigs", + "faigt", + "fanculo", + "fannybandit", + "fannyflaps", + "fannyfucker", + "fanyy", + "fartknocker", + "fastfuck", + "fatah", + "fatfuck", + "fatfucker", + "fatso", + "fck", + "fckcum", + "fckd", + "fcuk", + "fcuker", + "fcuking", + "fecal", + "feck", + "fecker", + "feg", + "felatio", + "felch", + "felcher", + "felching", + "fellate", + "fellatio", + "feltch", + "feltcher", + "feltching", + "female squirting", + "femalesquirtin", + "femalesquirting", + "femdom", + "fetish", + "ficken", + "figging", + "fingerbang", + "fingerfood", + "fingerfuck", + "fingerfucked", + "fingerfucker", + "fingerfuckers", + "fingerfucking", + "fingerfucks", + "fingering", + "fisted", + "fister", + "fistfuck", + "fistfucked", + "fistfucker", + "fistfuckers", + "fistfucking", + "fistfuckings", + "fistfucks", + "fisting", + "fisty", + "flamer", + "flange", + "flasher", + "flikker", + "flipping the bird", + "flogthelog", + "floo", + "floozy", + "flydie", + "flydye", + "foad", + "fok", + "fondle", + "foobar", + "fook", + "fooker", + "foot fetish", + "footaction", + "footfetish", + "footfuck", + "footfucker", + "footjob", + "footlicker", + "footstar", + "foreskin", + "forni", + "fornicate", + "fotze", + "foursome", + "fourtwenty", + "freakfuck", + "freakyfucker", + "freefuck", + "frotting", + "fucck", + "fuck", + "fuck-tard", + "fucka", + "fuckable", + "fuckass", + "fuckbag", + "fuckbitch", + "fuckbook", + "fuckboy", + "fuckbrain", + "fuckbuddy", + "fuckbutt", + "fuckd", + "fucked", + "fuckedup", + "fucker", + "fuckers", + "fuckersucker", + "fuckface", + "fuckfest", + "fuckfreak", + "fuckfriend", + "fuckhead", + "fuckheads", + "fuckher", + "fuckhole", + "fuckin", + "fuckina", + "fucking", + "fuckingbitch", + "fuckings", + "fuckinnuts", + "fuckinright", + "fuckit", + "fuckknob", + "fuckme", + "fuckmeat", + "fuckmehard", + "fuckmonkey", + "fuckn", + "fucknugget", + "fucknut", + "fucknuts", + "fucknutt", + "fucknutz", + "fuckoff", + "fuckpig", + "fuckpuppet", + "fuckr", + "fucks", + "fuckstick", + "fucktard", + "fucktards", + "fucktoy", + "fucktrophy", + "fuckup", + "fuckwad", + "fuckwhit", + "fuckwhore", + "fuckwit", + "fuckwitt", + "fuckyomama", + "fuckyou", + "fudge packer", + "fudgepacker", + "fugly", + "fuk", + "fukah", + "fuken", + "fuker", + "fukin", + "fuking", + "fukk", + "fukkah", + "fukken", + "fukker", + "fukkin", + "fukking", + "fuks", + "fuktard", + "fuktards", + "fukwhit", + "fukwit", + "funfuck", + "fungus", + "futanari", + "futanary", + "futkretzn", + "fuuck", + "fux", + "fux0r", + "fuxor", + "fvck", + "fvk", + "fxck", + "g-spot", + "g00k", + "gae", + "gai", + "gang bang", + "gangbang", + "gangbanged", + "gangbanger", + "gangbangs", + "gangsta", + "ganja", + "gassyass", + "gator bait", + "gatorbait", + "gay sex", + "gayass", + "gaybob", + "gayboy", + "gaydo", + "gaygirl", + "gaylord", + "gays", + "gaysex", + "gaytard", + "gaywad", + "gayz", + "geezer", + "geni", + "genital", + "genitals", + "getiton", + "gey", + "gfy", + "ghay", + "ghey", + "giant cock", + "gigolo", + "ginzo", + "ginzos", + "gipp", + "gippo", + "gippos", + "gipps", + "givehead", + "glans", + "glazeddonut", + "goatcx", + "goatse", + "gob", + "gokkun", + "golden shower", + "goldenshower", + "golliwog", + "golliwogs", + "gonad", + "gonads", + "gonorrehea", + "gonzagas", + "goo girl", + "gooch", + "goodpoop", + "gook eye", + "gook eyes", + "gook", + "gookeye", + "gookeyes", + "gookies", + "gooks", + "gooky", + "gora", + "goras", + "goregasm", + "gotohell", + "goy", + "goyim", + "greaseball", + "greaseballs", + "groe", + "groid", + "groids", + "grope", + "grostulation", + "group sex", + "gspot", + "gstring", + "gtfo", + "gub", + "gubba", + "gubbas", + "gubs", + "guido", + "guiena", + "guineas", + "guizi", + "gummer", + "guro", + "gwailo", + "gwailos", + "gweilo", + "gweilos", + "gyopo", + "gyopos", + "gyp", + "gyped", + "gypo", + "gypos", + "gypp", + "gypped", + "gyppie", + "gyppies", + "gyppo", + "gyppos", + "gyppy", + "gyppys", + "gypsys", + "h00r", + "h0ar", + "h0m0", + "h0mo", + "h0r", + "h0re", + "h4x0r", + "hadji", + "hadjis", + "hairyback", + "hairybacks", + "haji", + "hajis", + "hajji", + "hajjis", + "half breed", + "half caste", + "halfbreed", + "halfcaste", + "hamas", + "hamflap", + "hand job", + "handjob", + "haole", + "haoles", + "hapa", + "hard core", + "hardcore", + "hardcoresex", + "hardon", + "harem", + "he11", + "headfuck", + "hebe", + "hebes", + "heeb", + "heebs", + "hell", + "hells", + "helvete", + "hentai", + "heroin", + "herp", + "herpes", + "herpy", + "heshe", + "hijacker", + "hijacking", + "hillbillies", + "hillbilly", + "hindoo", + "hiscock", + "hitler", + "hitlerism", + "hitlerist", + "hoar", + "hoare", + "hobag", + "hodgie", + "hoe", + "hoer", + "hoes", + "holestuffer", + "hom0", + "homey", + "homo", + "homobangers", + "homodumbshit", + "homoey", + "honger", + "honkers", + "honkey", + "honkeys", + "honkie", + "honkies", + "honky", + "hooch", + "hooker", + "hookers", + "hoor", + "hoore", + "hootch", + "hooter", + "hooters", + "hore", + "hori", + "horis", + "hork", + "horndawg", + "horndog", + "horney", + "horniest", + "horny", + "horseshit", + "hosejob", + "hoser", + "hotdamn", + "hotpussy", + "hotsex", + "hottotrot", + "howtokill", + "howtomurdep", + "huevon", + "huge fat", + "hugefat", + "hui", + "hummer", + "humped", + "humper", + "humpher", + "humphim", + "humpin", + "humping", + "hussy", + "hustler", + "hymen", + "hymie", + "hymies", + "iblowu", + "ike", + "ikes", + "ikey", + "ikeymo", + "ikeymos", + "ikwe", + "inbred", + "incest", + "indon", + "indons", + "injun", + "injuns", + "insest", + "intercourse", + "interracial", + "intheass", + "inthebuff", + "j3rk0ff", + "jack off", + "jack-off", + "jackass", + "jackhole", + "jackoff", + "jackshit", + "jacktheripper", + "jail bait", + "jailbait", + "jap", + "japcrap", + "japie", + "japies", + "japs", + "jebus", + "jelly donut", + "jerk off", + "jerk", + "jerk-off", + "jerk0ff", + "jerked", + "jerkoff", + "jerries", + "jerry", + "jewboy", + "jewed", + "jewess", + "jiga", + "jigaboo", + "jigaboos", + "jigarooni", + "jigaroonis", + "jigg", + "jigga", + "jiggabo", + "jiggaboo", + "jiggabos", + "jiggas", + "jigger", + "jiggerboo", + "jiggers", + "jiggs", + "jiggy", + "jigs", + "jihad", + "jijjiboo", + "jijjiboos", + "jimfish", + "jisim", + "jism", + "jiss", + "jiz", + "jizim", + "jizin", + "jizjuice", + "jizm", + "jizn", + "jizz", + "jizzd", + "jizzed", + "jizzim", + "jizzin", + "jizzn", + "jizzum", + "jugg", + "juggs", + "jugs", + "jungle bunnies", + "jungle bunny", + "junglebunny", + "kacap", + "kacapas", + "kacaps", + "kaffer", + "kaffir", + "kaffre", + "kafir", + "kanake", + "kanker", + "katsap", + "katsaps", + "kawk", + "khokhol", + "khokhols", + "kicking", + "kigger", + "kike", + "kikes", + "kimchis", + "kinbaku", + "kink", + "kinkster", + "kinky", + "kinkyJesus", + "kissass", + "kiunt", + "kkk", + "klan", + "klansman", + "klansmen", + "klanswoman", + "klanswomen", + "klootzak", + "knobbing", + "knobead", + "knobed", + "knobend", + "knobhead", + "knobjocky", + "knobjokey", + "knobz", + "knockers", + "knulle", + "kock", + "kondum", + "kondums", + "kooch", + "kooches", + "koon", + "kootch", + "krap", + "krappy", + "kraut", + "krauts", + "kuffar", + "kuk", + "kuksuger", + "kum", + "kumbubble", + "kumbullbe", + "kumer", + "kummer", + "kumming", + "kumquat", + "kums", + "kunilingus", + "kunnilingus", + "kunt", + "kunts", + "kuntz", + "kurac", + "kurwa", + "kushi", + "kushis", + "kusi", + "kwif", + "kyke", + "kykes", + "kyopo", + "kyopos", + "kyrpa", + "labia", + "lapdance", + "leather restraint", + "leather straight", + "leatherrestraint", + "lebos", + "lemon party", + "lemonparty", + "leper", + "lesbain", + "lesbayn", + "lesbin", + "lesbo", + "lesbos", + "lezbe", + "lezbefriends", + "lezbian", + "lezbians", + "lezbo", + "lezbos", + "lezzian", + "lezzie", + "lezzies", + "lezzo", + "libido", + "licker", + "licking", + "lickme", + "lilniglet", + "limey", + "limpdick", + "limy", + "lingerie", + "lipshits", + "lipshitz", + "livesex", + "loadedgun", + "loin", + "loins", + "lolita", + "lovebone", + "lovegoo", + "lovegun", + "lovejuice", + "lovemaking", + "lovemuscle", + "lovepistol", + "loverocket", + "lowlife", + "lsd", + "lubejob", + "lubra", + "lucifer", + "luckycammeltoe", + "lugan", + "lugans", + "lust", + "lusting", + "lusty", + "lynch", + "m-fucking", + "m0f0", + "m0fo", + "m45terbate", + "ma5terb8", + "ma5terbate", + "mabuno", + "mabunos", + "macaca", + "macacas", + "mafugly", + "magicwand", + "mahbuno", + "mahbunos", + "make me cum", + "makemecum", + "male squirting", + "mamhoon", + "mams", + "manhater", + "manpaste", + "maricon", + "maricón", + "marijuana", + "masochist", + "masokist", + "massa", + "massterbait", + "masstrbait", + "masstrbate", + "mastabate", + "mastabater", + "master-bate", + "masterb8", + "masterbaiter", + "masterbat", + "masterbat3", + "masterbate", + "masterbates", + "masterbating", + "masterbation", + "masterbations", + "masterblaster", + "mastrabator", + "masturbat", + "masturbate", + "masturbating", + "masturbation", + "mattressprincess", + "mcfagget", + "meatbeatter", + "meatrack", + "menage", + "merd", + "mgger", + "mggor", + "mibun", + "mick", + "mickeyfinn", + "mideast", + "mierda", + "milf", + "minge", + "minger", + "mo-fo", + "mockey", + "mockie", + "mocky", + "mof0", + "mofo", + "moky", + "molest", + "molestation", + "molester", + "molestor", + "moneyshot", + "mong", + "monkleigh", + "moolie", + "moon cricket", + "moon crickets", + "mooncricket", + "mooncrickets", + "moskal", + "moskals", + "moslem", + "mosshead", + "motha fucker", + "motha fuker", + "motha fukkah", + "motha fukker", + "mothafuck", + "mothafucka", + "mothafuckas", + "mothafuckaz", + "mothafucked", + "mothafucker", + "mothafuckers", + "mothafuckin", + "mothafucking", + "mothafuckings", + "mothafucks", + "mother fucker", + "mother fukah", + "mother fuker", + "mother fukkah", + "mother fukker", + "mother-fucker", + "motherfuck", + "motherfucka", + "motherfucked", + "motherfucker", + "motherfuckers", + "motherfuckin", + "motherfucking", + "motherfuckings", + "motherfuckka", + "motherfucks", + "motherfvcker", + "motherlovebone", + "mothrfucker", + "mouliewop", + "mound of venus", + "moundofvenus", + "mtherfucker", + "mthrfuck", + "mthrfucker", + "mthrfucking", + "mtrfck", + "mtrfuck", + "mtrfucker", + "muff diver", + "muff", + "muffdive", + "muffdiver", + "muffdiving", + "muffindiver", + "mufflikcer", + "muffpuff", + "muie", + "mulatto", + "mulkku", + "muncher", + "mung", + "munging", + "munt", + "munter", + "muschi", + "mutha fucker", + "mutha fukah", + "mutha fuker", + "mutha fukkah", + "mutha fukker", + "muthafecker", + "muthafuckaz", + "muthafucker", + "muthafuckker", + "muther", + "mutherfucker", + "mutherfucking", + "muthrfucking", + "mzungu", + "mzungus", + "n1gga", + "n1gger", + "n1gr", + "nad", + "nads", + "naked", + "nambla", + "nappy", + "nastt", + "nasty", + "nastybitch", + "nastyho", + "nastyslut", + "nastywhore", + "nawashi", + "nazi", + "nazis", + "nazism", + "necked", + "necro", + "needthedick", + "negres", + "negress", + "negro", + "negroes", + "negroid", + "negros", + "neonazi", + "nepesaurio", + "nig nog", + "nig", + "niga", + "nigar", + "nigars", + "nigas", + "nigers", + "nigette", + "nigettes", + "nigg", + "nigg3r", + "nigg4h", + "nigga", + "niggah", + "niggahs", + "niggar", + "niggaracci", + "niggard", + "niggarded", + "niggarding", + "niggardliness", + "niggardlinesss", + "niggardly", + "niggards", + "niggars", + "niggas", + "niggaz", + "nigger", + "niggerhead", + "niggerhole", + "niggers", + "niggle", + "niggled", + "niggles", + "niggling", + "nigglings", + "niggor", + "niggress", + "niggresses", + "nigguh", + "nigguhs", + "niggur", + "niggurs", + "niglet", + "nignog", + "nigor", + "nigors", + "nigr", + "nigra", + "nigras", + "nigre", + "nigres", + "nigress", + "nigs", + "nigur", + "niiger", + "niigr", + "nimphomania", + "nimrod", + "nittit", + "nlgger", + "nlggor", + "nob jokey", + "nobjocky", + "nobjokey", + "nofuckingway", + "nookey", + "nookie", + "nooky", + "noonan", + "nooner", + "nudger", + "numbnuts", + "nut sack", + "nutbutter", + "nutfucker", + "nutsack", + "nutten", + "nymph", + "nympho", + "nymphomania", + "octopussy", + "omorashi", + "one cup two girls", + "one guy one jar", + "one guy", + "one jar", + "ontherag", + "orafis", + "orally", + "orgasim", + "orgasim;", + "orgasims", + "orgasm", + "orgasmic", + "orgasms", + "orgasum", + "orgies", + "orgy", + "oriface", + "orifice", + "orifiss", + "orospu", + "osama", + "ovum", + "ovums", + "p0rn", + "packi", + "packie", + "packy", + "paedophile", + "paki", + "pakie", + "pakis", + "paky", + "pancake face", + "pancake faces", + "panooch", + "pansies", + "pansy", + "panti", + "pantie", + "panties", + "panty", + "paska", + "pastie", + "pasty", + "payo", + "pcp", + "pearlnecklace", + "pecker", + "peckerhead", + "peckerwood", + "pedo", + "pedobear", + "pedophile", + "pedophilia", + "pedophiliac", + "peeenus", + "peeenusss", + "peehole", + "peenus", + "peepee", + "peepshow", + "peepshpw", + "pegging", + "peinus", + "pen1s", + "penas", + "pendejo", + "pendy", + "penetrate", + "penetration", + "peni5", + "penial", + "penile", + "penis", + "penis-breath", + "penises", + "penisfucker", + "penisland", + "penislick", + "penislicker", + "penispuffer", + "penthouse", + "penus", + "penuus", + "perv", + "perversion", + "peyote", + "phalli", + "phallic", + "phone sex", + "phonesex", + "phuc", + "phuck", + "phuk", + "phuked", + "phuker", + "phuking", + "phukked", + "phukker", + "phukking", + "phuks", + "phungky", + "phuq", + "pi55", + "picaninny", + "piccaninny", + "picka", + "pickaninnies", + "pickaninny", + "piece of shit", + "pieceofshit", + "piefke", + "piefkes", + "pierdol", + "pigfucker", + "piker", + "pikey", + "piky", + "pillowbiter", + "pillu", + "pimmel", + "pimp", + "pimped", + "pimper", + "pimpis", + "pimpjuic", + "pimpjuice", + "pimpsimp", + "pindick", + "pinko", + "pises", + "piss pig", + "piss", + "piss-off", + "pisser", + "pissers", + "pisses", + "pissflap", + "pissflaps", + "pisshead", + "pissoff", + "pisspig", + "pizda", + "playboy", + "playgirl", + "pleasure chest", + "pleasurechest", + "pocha", + "pochas", + "pocho", + "pochos", + "pocketpool", + "pohm", + "pohms", + "polac", + "polack", + "polacks", + "polak", + "pole smoker", + "polesmoker", + "pollock", + "pollocks", + "pommie grant", + "pommie grants", + "pommy", + "ponyplay", + "poon", + "poonani", + "poonany", + "poontang", + "poontsee", + "poop chute", + "poopchute", + "pooper", + "pooperscooper", + "pooping", + "poorwhitetrash", + "popimp", + "porch monkey", + "porch monkies", + "porchmonkey", + "porn", + "pornflick", + "pornking", + "porno", + "pornography", + "pornos", + "pornprincess", + "pound town", + "poundtown", + "pplicker", + "pr0n", + "pr1c", + "pr1ck", + "pr1k", + "prairie nigger", + "prairie niggers", + "premature", + "preteen", + "pric", + "prickhead", + "pricks", + "prig", + "prince albert piercing", + "pron", + "prostitute", + "pthc", + "pu55i", + "pu55y", + "pube", + "pubes", + "pubic", + "pubiclice", + "pubis", + "pud", + "pudboy", + "pudd", + "puddboy", + "puke", + "pula", + "pule", + "punani", + "punanny", + "punany", + "punkass", + "punky", + "punta", + "puntang", + "purinapricness", + "pusies", + "puss", + "pusse", + "pussee", + "pussi", + "pussie", + "pussies", + "pussy", + "pussycat", + "pussydestroyer", + "pussyeater", + "pussyfart", + "pussyfucker", + "pussylicker", + "pussylicking", + "pussylips", + "pussylover", + "pussypalace", + "pussypounder", + "pussys", + "pusy", + "puta", + "puto", + "puuke", + "puuker", + "qahbeh", + "quashie", + "queaf", + "queef", + "queerhole", + "queero", + "queers", + "queerz", + "quickie", + "quicky", + "quiff", + "quim", + "qweers", + "qweerz", + "qweir", + "r-tard", + "r-tards", + "r5e", + "ra8s", + "raghead", + "ragheads", + "rape", + "raped", + "raper", + "raping", + "rapist", + "rautenberg", + "rearend", + "rearentry", + "recktum", + "rectal", + "rectum", + "rectus", + "redleg", + "redlegs", + "redlight", + "redneck", + "rednecks", + "redskin", + "redskins", + "reefer", + "reestie", + "reetard", + "reich", + "renob", + "rentafuck", + "reverse cowgirl", + "reversecowgirl", + "rigger", + "rimjaw", + "rimjob", + "rimming", + "ritard", + "rosebuds", + "rosy palm and her 5 sisters", + "rosy palm", + "rosypalm", + "rosypalmandher5sisters", + "rosypalmandherefivesisters", + "round eyes", + "roundeye", + "rtard", + "rtards", + "rumprammer", + "ruski", + "russki", + "russkie", + "rusty trombone", + "rustytrombone", + "sac", + "sadis", + "sadism", + "sadist", + "sadom", + "sambo", + "sambos", + "samckdaddy", + "sanchez", + "sand nigger", + "sand niggers", + "sandm", + "sandnigger", + "santorum", + "sausagequeen", + "scag", + "scallywag", + "scank", + "scantily", + "scat", + "schaffer", + "scheiss", + "schizo", + "schlampe", + "schlong", + "schmuck", + "schvartse", + "schvartsen", + "schwartze", + "schwartzen", + "scissoring", + "screwed", + "screwing", + "screwyou", + "scroat", + "scrog", + "scrote", + "scrotum", + "scrud", + "seduce", + "semen", + "seppo", + "seppos", + "septics", + "sex", + "sexcam", + "sexed", + "sexfarm", + "sexhound", + "sexhouse", + "sexi", + "sexing", + "sexkitten", + "sexo", + "sexpot", + "sexslave", + "sextogo", + "sextoy", + "sextoys", + "sexual", + "sexually", + "sexwhore", + "sexx", + "sexxi", + "sexxx", + "sexxxi", + "sexxxy", + "sexxy", + "sexy", + "sexymoma", + "sexyslim", + "sh!+", + "sh!t", + "sh1t", + "sh1ter", + "sh1ts", + "sh1tter", + "sh1tz", + "shag", + "shagger", + "shaggin", + "shagging", + "shamedame", + "sharmuta", + "sharmute", + "shat", + "shav", + "shaved beaver", + "shaved pussy", + "shavedbeaver", + "shavedpussy", + "shawtypimp", + "sheeney", + "shemale", + "shhit", + "shi+", + "shibari", + "shibary", + "shinola", + "shipal", + "shit ass", + "shit", + "shit-ass", + "shit-bag", + "shit-bagger", + "shit-brain", + "shit-breath", + "shit-cunt", + "shit-dick", + "shit-eating", + "shit-face", + "shit-faced", + "shit-fit", + "shit-head", + "shit-heel", + "shit-hole", + "shit-house", + "shit-load", + "shit-pot", + "shit-spitter", + "shit-stain", + "shitass", + "shitbag", + "shitbagger", + "shitblimp", + "shitbrain", + "shitbreath", + "shitcan", + "shitcunt", + "shitdick", + "shite", + "shiteater", + "shiteating", + "shited", + "shitey", + "shitface", + "shitfaced", + "shitfit", + "shitforbrains", + "shitfuck", + "shitfucker", + "shitfull", + "shithapens", + "shithappens", + "shithead", + "shitheel", + "shithole", + "shithouse", + "shiting", + "shitings", + "shitlist", + "shitload", + "shitola", + "shitoutofluck", + "shitpot", + "shitspitter", + "shitstain", + "shitt", + "shitted", + "shitter", + "shitters", + "shittiest", + "shitting", + "shittings", + "shitty", + "shity", + "shylock", + "shylocks", + "shyt", + "shyte", + "shytty", + "shyty", + "sixsixsix", + "sixtynine", + "sixtyniner", + "skag", + "skanck", + "skank", + "skankbitch", + "skankee", + "skankey", + "skankfuck", + "skanks", + "skankwhore", + "skanky", + "skankybitch", + "skankywhore", + "skeet", + "skinflute", + "skribz", + "skullfuck", + "skum", + "skumbag", + "skurwysyn", + "skwa", + "skwe", + "slag", + "slanteye", + "slanty", + "sleezeball", + "slideitin", + "slimeball", + "slimebucket", + "slopehead", + "slopeheads", + "sloper", + "slopers", + "slopes", + "slopey", + "slopeys", + "slopies", + "slopy", + "slut", + "slutbag", + "slutbucket", + "slutdumper", + "slutkiss", + "sluts", + "slutt", + "slutting", + "slutty", + "slutwear", + "slutwhore", + "slutz", + "smack", + "smackthemonkey", + "smeg", + "smegma", + "smoker", + "smut", + "smutty", + "snatchpatch", + "snigger", + "sniggered", + "sniggering", + "sniggers", + "snowback", + "snowballing", + "snownigger", + "snuff", + "socksucker", + "sodom", + "sodomise", + "sodomite", + "sodomize", + "sodomy", + "son of a bitch", + "son of a whore", + "son-of-a-bitch", + "son-of-a-whore", + "sonofabitch", + "sonofbitch", + "sooties", + "sooty", + "souse", + "soused", + "soyboy", + "spac", + "spade", + "spades", + "spaghettibender", + "spaghettinigger", + "spankthemonkey", + "spastic", + "spearchucker", + "spearchuckers", + "sperm", + "spermacide", + "spermbag", + "spermhearder", + "spermherder", + "sphencter", + "spic", + "spick", + "spicks", + "spics", + "spierdalaj", + "spig", + "spigotty", + "spik", + "spiks", + "spitter", + "splittail", + "splooge", + "spludge", + "spooge", + "spread legs", + "spreadeagle", + "spunk", + "spunky", + "sqeh", + "squarehead", + "squareheads", + "squaw", + "squinty", + "squirting", + "stagg", + "steamy", + "stiffy", + "stoned", + "strap on", + "strapon", + "strappado", + "stringer", + "strip club", + "stripclub", + "stroke", + "stroking", + "stuinties", + "stupidfuck", + "stupidfucker", + "style doggy", + "suckdick", + "suckme", + "suckmyass", + "suckmydick", + "suckmytit", + "suckoff", + "suicide girl", + "suicide girls", + "suicidegirl", + "suicidegirls", + "suka", + "sultrywoman", + "sultrywomen", + "sumofabiatch", + "swallower", + "swamp guinea", + "swamp guineas", + "swastika", + "syphilis", + "t1t", + "t1tt1e5", + "t1tties", + "taboo", + "tacohead", + "tacoheads", + "taff", + "tar babies", + "tar baby", + "tarbaby", + "tard", + "tastemy", + "tawdry", + "tea bagging", + "teabagging", + "teat", + "teets", + "teez", + "terd", + "terrorist", + "testee", + "testes", + "testical", + "testicle", + "testicles", + "testis", + "thicklip", + "thicklips", + "thirdeye", + "thirdleg", + "threesome", + "threeway", + "throating", + "thumbzilla", + "thundercunt", + "tig ol bitties", + "tig old bitties", + "tight white", + "timber nigger", + "timber niggers", + "timbernigger", + "tinkle", + "tit", + "titbitnipply", + "titfuck", + "titfucker", + "titfuckin", + "titi", + "titjob", + "titlicker", + "titlover", + "tits", + "titt", + "tittie", + "tittie5", + "tittiefucker", + "titties", + "tittis", + "titty", + "tittyfuck", + "tittyfucker", + "tittys", + "tittywank", + "titwank", + "tity", + "tongethruster", + "tongueina", + "tonguethrust", + "tonguetramp", + "topless", + "tortur", + "tosser", + "towel head", + "towel heads", + "towelhead", + "trailertrash", + "tramp", + "trannie", + "tranny", + "transsexual", + "transvestite", + "trashy", + "tribadism", + "triplex", + "trisexual", + "trois", + "trots", + "tub girl", + "tubgirl", + "tuckahoe", + "tunneloflove", + "turd burgler", + "turnon", + "tush", + "tushy", + "tw4t", + "twat", + "twathead", + "twatlips", + "twats", + "twatty", + "twatwaffle", + "twink", + "twinkie", + "two girls one cup", + "twobitwhore", + "twunt", + "twunter", + "udge packer", + "ukrop", + "unclefucker", + "undressing", + "unfuckable", + "upskirt", + "uptheass", + "upthebutt", + "urethra play", + "urethraplay", + "urophilia", + "usama", + "ussys", + "uzi", + "v a g i n a", + "v14gra", + "v1gra", + "v4gra", + "va-j-j", + "va1jina", + "vag", + "vag1na", + "vagiina", + "vaj1na", + "vajina", + "valium", + "venus mound", + "vgra", + "vibr", + "vibrater", + "vibrator", + "vigra", + "violet wand", + "virgin", + "virginbreaker", + "vittu", + "vixen", + "vjayjay", + "vorarephilia", + "voyeurweb", + "voyuer", + "vullva", + "vulva", + "w00se", + "w0p", + "wab", + "wad", + "wang", + "wank", + "wanker", + "wanking", + "wanky", + "waysted", + "wazoo", + "weenie", + "weewee", + "weiner", + "welcher", + "wench", + "wet dream", + "wetb", + "wetback", + "wetbacks", + "wetdream", + "wetspot", + "wh00r", + "wh0re", + "wh0reface", + "whacker", + "whash", + "whigger", + "whiggers", + "whiskeydick", + "whiskydick", + "white power", + "white trash", + "whitenigger", + "whitepower", + "whitetrash", + "whitey", + "whiteys", + "whities", + "whoar", + "whop", + "whoralicious", + "whore", + "whorealicious", + "whorebag", + "whored", + "whoreface", + "whorefucker", + "whorehopper", + "whorehouse", + "whores", + "whoring", + "wichser", + "wigga", + "wiggas", + "wigger", + "wiggers", + "willie", + "willies", + "williewanker", + "willy", + "wog", + "wogs", + "woose", + "worldsex", + "wrapping men", + "wrinkled starfish", + "x-rated", + "x-rated2g1c", + "xkwe", + "xrated", + "yank", + "yaoi", + "yarpie", + "yarpies", + "yeasty", + "yed", + "yellow showers", + "yellowman", + "yellowshowers", + "yid", + "yids", + "yiffy", + "yobbo", + "yourboobs", + "yourpenis", + "yourtits", + "yury", + "zabourah", + "zigabo", + "zigabos", + "zipperhead", + "zipperheads", + "zoophile", + "zoophilia" +]