diff --git a/src/it/mangaeden/AndroidManifest.xml b/src/it/mangaeden/AndroidManifest.xml
deleted file mode 100644
index 30deb7f79..000000000
--- a/src/it/mangaeden/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/src/it/mangaeden/build.gradle b/src/it/mangaeden/build.gradle
deleted file mode 100644
index 7a19cbdc1..000000000
--- a/src/it/mangaeden/build.gradle
+++ /dev/null
@@ -1,11 +0,0 @@
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
-
-ext {
- extName = 'Mangaeden'
- pkgNameSuffix = 'it.mangaeden'
- extClass = '.Mangaeden'
- extVersionCode = 6
-}
-
-apply from: "$rootDir/common.gradle"
diff --git a/src/it/mangaeden/res/mipmap-hdpi/ic_launcher.png b/src/it/mangaeden/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index d5fe0354d..000000000
Binary files a/src/it/mangaeden/res/mipmap-hdpi/ic_launcher.png and /dev/null differ
diff --git a/src/it/mangaeden/res/mipmap-mdpi/ic_launcher.png b/src/it/mangaeden/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index fba82aa13..000000000
Binary files a/src/it/mangaeden/res/mipmap-mdpi/ic_launcher.png and /dev/null differ
diff --git a/src/it/mangaeden/res/mipmap-xhdpi/ic_launcher.png b/src/it/mangaeden/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index bc5643ede..000000000
Binary files a/src/it/mangaeden/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/src/it/mangaeden/res/mipmap-xxhdpi/ic_launcher.png b/src/it/mangaeden/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index 4b3eb907e..000000000
Binary files a/src/it/mangaeden/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/src/it/mangaeden/res/mipmap-xxxhdpi/ic_launcher.png b/src/it/mangaeden/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index 58d5afdc0..000000000
Binary files a/src/it/mangaeden/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ
diff --git a/src/it/mangaeden/res/web_hi_res_512.png b/src/it/mangaeden/res/web_hi_res_512.png
deleted file mode 100644
index a4d44efcd..000000000
Binary files a/src/it/mangaeden/res/web_hi_res_512.png and /dev/null differ
diff --git a/src/it/mangaeden/src/eu/kanade/tachiyomi/extension/it/mangaeden/Mangaeden.kt b/src/it/mangaeden/src/eu/kanade/tachiyomi/extension/it/mangaeden/Mangaeden.kt
deleted file mode 100644
index 561831d30..000000000
--- a/src/it/mangaeden/src/eu/kanade/tachiyomi/extension/it/mangaeden/Mangaeden.kt
+++ /dev/null
@@ -1,224 +0,0 @@
-package eu.kanade.tachiyomi.extension.it.mangaeden
-
-import eu.kanade.tachiyomi.network.GET
-import eu.kanade.tachiyomi.source.model.Filter
-import eu.kanade.tachiyomi.source.model.FilterList
-import eu.kanade.tachiyomi.source.model.Page
-import eu.kanade.tachiyomi.source.model.SChapter
-import eu.kanade.tachiyomi.source.model.SManga
-import eu.kanade.tachiyomi.source.online.ParsedHttpSource
-import okhttp3.Headers
-import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
-import okhttp3.Request
-import org.jsoup.nodes.Document
-import org.jsoup.nodes.Element
-import java.text.ParseException
-import java.text.SimpleDateFormat
-import java.util.Calendar
-import java.util.Locale
-
-class Mangaeden : ParsedHttpSource() {
-
- override val name = "Manga Eden"
-
- override val baseUrl = "https://www2.mangaeden.com"
-
- override val lang = "it"
-
- override val supportsLatest = true
-
- // so hcaptcha won't be triggered on images
- override fun headersBuilder(): Headers.Builder {
- return super.headersBuilder().add("Referer", baseUrl)
- }
-
- override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/it/it-directory/?order=3&page=$page", headers)
-
- override fun latestUpdatesSelector() = searchMangaSelector()
-
- override fun latestUpdatesFromElement(element: Element): SManga = searchMangaFromElement(element)
-
- override fun latestUpdatesNextPageSelector() = searchMangaNextPageSelector()
-
- override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/it/it-directory/?order=1&page=$page", headers)
-
- override fun popularMangaSelector() = searchMangaSelector()
-
- override fun popularMangaFromElement(element: Element): SManga = searchMangaFromElement(element)
-
- override fun popularMangaNextPageSelector() = searchMangaNextPageSelector()
-
- override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
- val url = "$baseUrl/it/it-directory/".toHttpUrlOrNull()?.newBuilder()!!.addQueryParameter("title", query)
- (if (filters.isEmpty()) getFilterList() else filters).forEach { filter ->
- when (filter) {
- is StatusList ->
- filter.state
- .filter { it.state }
- .map { it.id.toString() }
- .forEach { url.addQueryParameter("status", it) }
- is Types ->
- filter.state
- .filter { it.state }
- .map { it.id.toString() }
- .forEach { url.addQueryParameter("type", it) }
- is GenreList ->
- filter.state
- .filter { !it.isIgnored() }
- .forEach { genre -> url.addQueryParameter(if (genre.isIncluded()) "categoriesInc" else "categoriesExcl", genre.id) }
- is TextField -> url.addQueryParameter(filter.key, filter.state)
- is OrderBy -> filter.state?.let {
- val sortId = it.index
- url.addQueryParameter("order", if (it.ascending) "-$sortId" else "$sortId")
- }
- }
- }
- url.addQueryParameter("page", page.toString())
- return GET(url.toString(), headers)
- }
-
- override fun searchMangaSelector() = "table#mangaList tbody tr td:first-child a"
-
- override fun searchMangaFromElement(element: Element) = SManga.create().apply {
- setUrlWithoutDomain(element.attr("href"))
- title = element.text()
- }
-
- override fun searchMangaNextPageSelector() = "a:has(span.next)"
-
- override fun mangaDetailsParse(document: Document) = SManga.create().apply {
- val infos = document.select("div.rightbox")
-
- author = infos.select("a[href^=/it/it-directory/?author]").first()?.text()
- artist = infos.select("a[href^=/it/it-directory/?artist]").first()?.text()
- genre = infos.select("a[href^=/it/it-directory/?categoriesInc]").joinToString { it.text() }
- description = document.select("h2#mangaDescription").text()
- status = parseStatus(infos.select("h4:containsOwn(Stato)").first()?.nextSibling().toString())
- thumbnail_url = document.select("div.mangaImage2 > img").attr("abs:src")
- }
-
- private fun parseStatus(status: String) = when {
- status.contains("In Corso", true) -> SManga.ONGOING
- status.contains("Completato", true) -> SManga.COMPLETED
- else -> SManga.UNKNOWN
- }
-
- override fun chapterListSelector() = "div#leftContent > table > tbody > tr"
-
- override fun chapterFromElement(element: Element) = SChapter.create().apply {
- val a = element.select("a[href^=/it/it-manga/]").first()
-
- setUrlWithoutDomain(a.attr("href"))
- name = a?.select("b")?.first()?.text().orEmpty()
- date_upload = element.select("td.chapterDate").first()?.text()?.let { parseChapterDate(it.trim()) } ?: 0L
- }
-
- private fun parseChapterDate(date: String): Long =
- when {
- "Oggi" in date -> {
- Calendar.getInstance().apply {
- set(Calendar.HOUR_OF_DAY, 0)
- set(Calendar.MINUTE, 0)
- set(Calendar.SECOND, 0)
- set(Calendar.MILLISECOND, 0)
- }.timeInMillis
- }
- "Ieri" in date -> {
- Calendar.getInstance().apply {
- add(Calendar.DATE, -1)
- set(Calendar.HOUR_OF_DAY, 0)
- set(Calendar.MINUTE, 0)
- set(Calendar.SECOND, 0)
- set(Calendar.MILLISECOND, 0)
- }.timeInMillis
- }
- else ->
- try {
- SimpleDateFormat("d MMM yyyy", Locale.ITALIAN).parse(date)?.time ?: 0L
- } catch (e: ParseException) {
- 0L
- }
- }
-
- override fun pageListParse(document: Document): List {
- return document.select("select#pageSelect option").mapIndexed { i, element ->
- Page(i, element.attr("abs:value"))
- }
- }
-
- override fun imageUrlParse(document: Document): String = document.select("a.next img").attr("abs:src")
-
- private class NamedId(name: String, val id: Int) : Filter.CheckBox(name)
- private class Genre(name: String, val id: String) : Filter.TriState(name)
- private class TextField(name: String, val key: String) : Filter.Text(name)
- private class OrderBy : Filter.Sort(
- "Order by",
- arrayOf("Titolo manga", "Visite", "Capitoli", "Ultimo capitolo"),
- Selection(1, false)
- )
-
- private class StatusList(statuses: List) : Filter.Group("Stato", statuses)
- private class Types(types: List) : Filter.Group("Tipo", types)
- private class GenreList(genres: List) : Filter.Group("Generi", genres)
-
- override fun getFilterList() = FilterList(
- TextField("Autore", "author"),
- TextField("Artista", "artist"),
- OrderBy(),
- Types(types()),
- StatusList(statuses()),
- GenreList(genres())
- )
-
- private fun types() = listOf(
- NamedId("Japanese Manga", 0),
- NamedId("Korean Manhwa", 1),
- NamedId("Chinese Manhua", 2),
- NamedId("Comic", 3),
- NamedId("Doujinshi", 4)
- )
-
- private fun statuses() = listOf(
- NamedId("In corso", 1),
- NamedId("Completato", 2),
- NamedId("Sospeso", 0)
- )
-
- private fun genres() = listOf(
-
- Genre("Avventura", "4e70ea8cc092255ef70073d3"),
- Genre("Azione", "4e70ea8cc092255ef70073c3"),
- Genre("Bara", "4e70ea90c092255ef70074b7"),
- Genre("Commedia", "4e70ea8cc092255ef70073d0"),
- Genre("Demenziale", "4e70ea8fc092255ef7007475"),
- Genre("Dounshinji", "4e70ea93c092255ef70074e4"),
- Genre("Drama", "4e70ea8cc092255ef70073f9"),
- Genre("Ecchi", "4e70ea8cc092255ef70073cd"),
- Genre("Fantasy", "4e70ea8cc092255ef70073c4"),
- Genre("Harem", "4e70ea8cc092255ef70073d1"),
- Genre("Hentai", "4e70ea90c092255ef700749a"),
- Genre("Horror", "4e70ea8cc092255ef70073ce"),
- Genre("Josei", "4e70ea90c092255ef70074bd"),
- Genre("Magico", "4e70ea93c092255ef700751b"),
- Genre("Mecha", "4e70ea8cc092255ef70073ef"),
- Genre("Misteri", "4e70ea8dc092255ef700740a"),
- Genre("Musica", "4e70ea8fc092255ef7007456"),
- Genre("Psicologico", "4e70ea8ec092255ef7007439"),
- Genre("Raccolta", "4e70ea90c092255ef70074ae"),
- Genre("Romantico", "4e70ea8cc092255ef70073c5"),
- Genre("Sci-Fi", "4e70ea8cc092255ef70073e4"),
- Genre("Scolastico", "4e70ea8cc092255ef70073e5"),
- Genre("Seinen", "4e70ea8cc092255ef70073ea"),
- Genre("Sentimentale", "4e70ea8dc092255ef7007432"),
- Genre("Shota", "4e70ea90c092255ef70074b8"),
- Genre("Shoujo", "4e70ea8dc092255ef7007421"),
- Genre("Shounen", "4e70ea8cc092255ef70073c6"),
- Genre("Sovrannaturale", "4e70ea8cc092255ef70073c7"),
- Genre("Splatter", "4e70ea99c092255ef70075a3"),
- Genre("Sportivo", "4e70ea8dc092255ef7007426"),
- Genre("Storico", "4e70ea8cc092255ef70073f4"),
- Genre("Vita Quotidiana", "4e70ea8ec092255ef700743f"),
- Genre("Yaoi", "4e70ea8cc092255ef70073de"),
- Genre("Yuri", "4e70ea9ac092255ef70075d1")
- )
-}
diff --git a/src/it/perveden/AndroidManifest.xml b/src/it/perveden/AndroidManifest.xml
deleted file mode 100644
index 30deb7f79..000000000
--- a/src/it/perveden/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/src/it/perveden/build.gradle b/src/it/perveden/build.gradle
deleted file mode 100644
index 102e8b0b3..000000000
--- a/src/it/perveden/build.gradle
+++ /dev/null
@@ -1,12 +0,0 @@
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
-
-ext {
- extName = 'Perveden'
- pkgNameSuffix = 'it.perveden'
- extClass = '.Perveden'
- extVersionCode = 3
- isNsfw = true
-}
-
-apply from: "$rootDir/common.gradle"
diff --git a/src/it/perveden/res/mipmap-hdpi/ic_launcher.png b/src/it/perveden/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index 773444ec5..000000000
Binary files a/src/it/perveden/res/mipmap-hdpi/ic_launcher.png and /dev/null differ
diff --git a/src/it/perveden/res/mipmap-mdpi/ic_launcher.png b/src/it/perveden/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index a4b97dcfe..000000000
Binary files a/src/it/perveden/res/mipmap-mdpi/ic_launcher.png and /dev/null differ
diff --git a/src/it/perveden/res/mipmap-xhdpi/ic_launcher.png b/src/it/perveden/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index cdf36f539..000000000
Binary files a/src/it/perveden/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/src/it/perveden/res/mipmap-xxhdpi/ic_launcher.png b/src/it/perveden/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index 90278a445..000000000
Binary files a/src/it/perveden/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/src/it/perveden/res/mipmap-xxxhdpi/ic_launcher.png b/src/it/perveden/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index 0db019b95..000000000
Binary files a/src/it/perveden/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ
diff --git a/src/it/perveden/res/web_hi_res_512.png b/src/it/perveden/res/web_hi_res_512.png
deleted file mode 100644
index 1476a57af..000000000
Binary files a/src/it/perveden/res/web_hi_res_512.png and /dev/null differ
diff --git a/src/it/perveden/src/eu/kanade/tachiyomi/extension/it/perveden/Perveden.kt b/src/it/perveden/src/eu/kanade/tachiyomi/extension/it/perveden/Perveden.kt
deleted file mode 100644
index cc2abeb71..000000000
--- a/src/it/perveden/src/eu/kanade/tachiyomi/extension/it/perveden/Perveden.kt
+++ /dev/null
@@ -1,415 +0,0 @@
-package eu.kanade.tachiyomi.extension.it.perveden
-
-import eu.kanade.tachiyomi.network.GET
-import eu.kanade.tachiyomi.source.model.Filter
-import eu.kanade.tachiyomi.source.model.FilterList
-import eu.kanade.tachiyomi.source.model.Page
-import eu.kanade.tachiyomi.source.model.SChapter
-import eu.kanade.tachiyomi.source.model.SManga
-import eu.kanade.tachiyomi.source.online.ParsedHttpSource
-import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
-import okhttp3.Request
-import org.jsoup.nodes.Document
-import org.jsoup.nodes.Element
-import java.text.ParseException
-import java.text.SimpleDateFormat
-import java.util.Calendar
-import java.util.Locale
-
-class Perveden : ParsedHttpSource() {
-
- override val name = "PervEden"
-
- override val baseUrl = "https://www.perveden.com"
-
- override val lang = "it"
-
- override val supportsLatest = true
-
- override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/it/it-directory/?order=3&page=$page", headers)
-
- override fun latestUpdatesSelector() = searchMangaSelector()
-
- override fun latestUpdatesFromElement(element: Element): SManga = searchMangaFromElement(element)
-
- override fun latestUpdatesNextPageSelector() = searchMangaNextPageSelector()
-
- override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/it/it-directory/?page=$page", headers)
-
- override fun popularMangaSelector() = searchMangaSelector()
-
- override fun popularMangaFromElement(element: Element): SManga = searchMangaFromElement(element)
-
- override fun popularMangaNextPageSelector() = searchMangaNextPageSelector()
-
- override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
- val url = "$baseUrl/it/it-directory/".toHttpUrlOrNull()?.newBuilder()!!.addQueryParameter("title", query)
- (if (filters.isEmpty()) getFilterList() else filters).forEach { filter ->
- when (filter) {
- is StatusList ->
- filter.state
- .filter { it.state }
- .map { it.id.toString() }
- .forEach { url.addQueryParameter("status", it) }
- is Types ->
- filter.state
- .filter { it.state }
- .map { it.id.toString() }
- .forEach { url.addQueryParameter("type", it) }
- is TextField -> url.addQueryParameter(filter.key, filter.state)
- is OrderBy -> filter.state?.let {
- val sortId = it.index
- url.addQueryParameter("order", if (it.ascending) "-$sortId" else "$sortId")
- }
- is GenreField -> filter.state.toLowerCase(Locale.ENGLISH).split(',', ';').forEach {
- val id = genres[it.trim()]
- if (id != null) url.addQueryParameter(filter.key, id)
- }
- }
- }
- url.addQueryParameter("page", page.toString())
- return GET(url.toString(), headers)
- }
-
- override fun searchMangaSelector() = "table#mangaList > tbody > tr:has(td:gt(1))"
-
- override fun searchMangaFromElement(element: Element) = SManga.create().apply {
- element.select("td > a").first()?.let {
- setUrlWithoutDomain(it.attr("href"))
- title = it.text()
- }
- }
-
- override fun searchMangaNextPageSelector() = "a:has(span.next)"
-
- override fun mangaDetailsParse(document: Document) = SManga.create().apply {
- val infos = document.select("div.rightbox")
-
- author = infos.select("a[href^=/it/it-directory/?author]").first()?.text()
- artist = infos.select("a[href^=/it/it-directory/?artist]").first()?.text()
- genre = infos.select("a[href^=/it/it-directory/?categoriesInc]").joinToString { it.text() }
- description = document.select("h2#mangaDescription").text()
- status = parseStatus(infos.select("h4:containsOwn(Stato)").first()?.nextSibling().toString())
- val img = infos.select("div.mangaImage2 > img").first()?.attr("src")
- if (!img.isNullOrBlank()) thumbnail_url = img.let { "https:$it" }
- }
-
- private fun parseStatus(status: String) = when {
- status.contains("In Corso", true) -> SManga.ONGOING
- status.contains("Completato", true) -> SManga.COMPLETED
- else -> SManga.UNKNOWN
- }
-
- override fun chapterListSelector() = "div#leftContent > table > tbody > tr"
-
- override fun chapterFromElement(element: Element) = SChapter.create().apply {
- val a = element.select("a[href^=/it/it-manga/]").first()
-
- setUrlWithoutDomain(a?.attr("href").orEmpty())
- name = a?.select("b")?.first()?.text().orEmpty()
- date_upload = element.select("td.chapterDate").first()?.text()?.let { parseChapterDate(it.trim()) } ?: 0L
- }
-
- private fun parseChapterDate(date: String): Long =
- when {
- "Oggi" in date -> {
- Calendar.getInstance().apply {
- set(Calendar.HOUR_OF_DAY, 0)
- set(Calendar.MINUTE, 0)
- set(Calendar.SECOND, 0)
- set(Calendar.MILLISECOND, 0)
- }.timeInMillis
- }
- "Ieri" in date -> {
- Calendar.getInstance().apply {
- add(Calendar.DATE, -1)
- set(Calendar.HOUR_OF_DAY, 0)
- set(Calendar.MINUTE, 0)
- set(Calendar.SECOND, 0)
- set(Calendar.MILLISECOND, 0)
- }.timeInMillis
- }
- else ->
- try {
- SimpleDateFormat("d MMM yyyy", Locale.ITALIAN).parse(date)?.time ?: 0L
- } catch (e: ParseException) {
- 0L
- }
- }
-
- override fun pageListParse(document: Document): List = mutableListOf().apply {
- document.select("option[value^=/it/it-manga/]").forEach {
- add(Page(size, "$baseUrl${it.attr("value")}"))
- }
- }
-
- override fun imageUrlParse(document: Document): String = document.select("a#nextA.next > img").first()?.attr("src").let { "https:$it" }
-
- private class NamedId(name: String, val id: Int) : Filter.CheckBox(name)
- private class TextField(name: String, val key: String) : Filter.Text(name)
- private class GenreField(name: String, val key: String) : Filter.Text(name)
- private class OrderBy : Filter.Sort(
- "Ordina per",
- arrayOf("Titolo manga", "Visite", "Capitoli", "Ultimo capitolo"),
- Selection(1, false)
- )
-
- private class StatusList(statuses: List) : Filter.Group("Stato", statuses)
- private class Types(types: List) : Filter.Group("Tipo", types)
-
- override fun getFilterList() = FilterList(
- TextField("Autore", "author"),
- TextField("Artista", "artist"),
- GenreField("Generi inclusi", "categoriesInc"),
- GenreField("Generi esclusi", "categoriesExcl"),
- OrderBy(),
- Types(types()),
- StatusList(statuses())
- )
-
- private fun types() = listOf(
- NamedId("Japanese Manga", 0),
- NamedId("Korean Manhwa", 1),
- NamedId("Chinese Manhua", 2),
- NamedId("Comic", 3),
- NamedId("Doujinshi", 4)
- )
-
- private fun statuses() = listOf(
- NamedId("In corso", 1),
- NamedId("Completato", 2),
- NamedId("Sospeso", 0)
- )
-
- private val genres = mapOf(
- Pair("commedia", "4e70ea9ac092255ef70075d8"),
- Pair("ecchi", "4e70ea9ac092255ef70075d9"),
- Pair("age progression", "5782b043719a16947390104a"),
- Pair("ahegao", "577e6f90719a168e7d256a3f"),
- Pair("anal", "577e6f90719a168e7d256a3b"),
- Pair("angel", "577e724a719a168ef96a74d6"),
- Pair("apron", "577e720a719a166f4719a7be"),
- Pair("armpit licking", "577e71db719a166f4719a3e7"),
- Pair("assjob", "58474a08719a1668eeeea29b"),
- Pair("aunt", "577e6f8d719a168e7d256a20"),
- Pair("bbw", "5782ae42719a1675f68a6e29"),
- Pair("bdsm", "577e723d719a168ef96a7416"),
- Pair("bestiality", "57ad8919719a1629a0a327cf"),
- Pair("big areolae", "577e7226719a166f4719a9d0"),
- Pair("big ass", "577e6f8d719a168e7d256a21"),
- Pair("big balls", "577e7267719a168ef96a76ee"),
- Pair("big breasts", "577e6f8d719a168e7d256a1c"),
- Pair("big clit", "57ef0396719a163dffb8fdff"),
- Pair("big nipples", "5782ae42719a1675f68a6e2a"),
- Pair("big penis", "577e7267719a168ef96a76ef"),
- Pair("bike shorts", "577e7210719a166f4719a820"),
- Pair("bikini", "577e6f91719a168e7d256a77"),
- Pair("birth", "577e7273719a168ef96a77cf"),
- Pair("blackmail", "577e6f91719a168e7d256a78"),
- Pair("blindfold", "577e7208719a166f4719a78d"),
- Pair("blood", "577e7295719a168ef96a79e6"),
- Pair("bloomers", "5782b051719a1694739010ee"),
- Pair("blowjob", "577e6f8d719a168e7d256a22"),
- Pair("blowjob face", "577e71eb719a166f4719a544"),
- Pair("body modification", "577e6f93719a168e7d256a8e"),
- Pair("bodystocking", "5782b05c719a169473901151"),
- Pair("bodysuit", "577e6f90719a168e7d256a42"),
- Pair("bondage", "577e6f90719a168e7d256a45"),
- Pair("breast expansion", "577e71c3719a166f4719a235"),
- Pair("bukkake", "577e7210719a166f4719a821"),
- Pair("bunny girl", "577e7224719a166f4719a9b9"),
- Pair("business suit", "577e71e5719a166f4719a4b2"),
- Pair("catgirl", "577e71d5719a166f4719a366"),
- Pair("centaur", "577e7297719a168ef96a7a06"),
- Pair("cervix penetration", "577e7273719a168ef96a77d0"),
- Pair("cheating", "577e71b5719a166f4719a13b"),
- Pair("cheerleader", "57c0a6de719a1641240e9257"),
- Pair("chikan", "5782b0c6719a1679528762ac"),
- Pair("chinese dress", "5782b059719a169473901131"),
- Pair("chloroform", "577e6f92719a168e7d256a7f"),
- Pair("christmas", "5782af2b719a169473900752"),
- Pair("clit growth", "57ef0396719a163dffb8fe00"),
- Pair("collar", "577e6f93719a168e7d256a8f"),
- Pair("condom", "577e71d5719a166f4719a36c"),
- Pair("corruption", "577e6f90719a168e7d256a41"),
- Pair("cosplaying", "5782b185719a167952876944"),
- Pair("cousin", "577e7283719a168ef96a78c3"),
- Pair("cow", "5865d767719a162cce299571"),
- Pair("cunnilingus", "577e6f8d719a168e7d256a23"),
- Pair("dark skin", "577e6f90719a168e7d256a55"),
- Pair("daughter", "577e7250719a168ef96a7539"),
- Pair("deepthroat", "577e6f90719a168e7d256a3c"),
- Pair("defloration", "577e6f92719a168e7d256a82"),
- Pair("demon girl", "577e7218719a166f4719a8c8"),
- Pair("dick growth", "577e6f93719a168e7d256a90"),
- Pair("dickgirl on dickgirl", "5782af0e719a16947390067a"),
- Pair("dog girl", "577e7218719a166f4719a8c9"),
- Pair("double penetration", "577e6f90719a168e7d256a3d"),
- Pair("double vaginal", "577e7226719a166f4719a9d1"),
- Pair("drugs", "577e71da719a166f4719a3cb"),
- Pair("drunk", "577e7199719a16697b9853ea"),
- Pair("elf", "577e6f93719a168e7d256a91"),
- Pair("enema", "5782aff7719a169473900d8a"),
- Pair("exhibitionism", "577e72a7719a168ef96a7b26"),
- Pair("eyemask", "577e7208719a166f4719a78e"),
- Pair("facesitting", "577e7230719a166f4719aa8c"),
- Pair("females only", "577e6f90719a168e7d256a44"),
- Pair("femdom", "577e6f8c719a168e7d256a13"),
- Pair("filming", "577e7242719a168ef96a7465"),
- Pair("fingering", "577e6f90719a168e7d256a5d"),
- Pair("fisting", "57c349e1719a1625b42603f4"),
- Pair("foot licking", "5782b152719a16795287677d"),
- Pair("footjob", "577e6f8d719a168e7d256a17"),
- Pair("freckles", "5782ae42719a1675f68a6e2b"),
- Pair("fundoshi", "577e71d9719a166f4719a3bf"),
- Pair("furry", "5782ae45719a1675f68a6e49"),
- Pair("futanari", "577e6f92719a168e7d256a80"),
- Pair("gag", "577e6f90719a168e7d256a56"),
- Pair("gaping", "577e7210719a166f4719a822"),
- Pair("garter belt", "577e7201719a166f4719a704"),
- Pair("glasses", "577e6f90719a168e7d256a5e"),
- Pair("gothic lolita", "577e7201719a166f4719a705"),
- Pair("group", "577e726e719a168ef96a7764"),
- Pair("gyaru", "577e6f91719a168e7d256a79"),
- Pair("hairjob", "57bcea9f719a1687ea2bc092"),
- Pair("hairy", "577e7250719a168ef96a753a"),
- Pair("hairy armpits", "5782b13c719a16795287669c"),
- Pair("handjob", "577e71c8719a166f4719a29b"),
- Pair("harem", "577e71c3719a166f4719a239"),
- Pair("heterochromia", "577e7201719a166f4719a706"),
- Pair("hotpants", "585b302d719a1648da4f0389"),
- Pair("huge breasts", "577e71d9719a166f4719a3c0"),
- Pair("huge penis", "585b302d719a1648da4f038a"),
- Pair("human on furry", "577e7203719a166f4719a722"),
- Pair("human pet", "577e6f90719a168e7d256a57"),
- Pair("humiliation", "577e7210719a166f4719a823"),
- Pair("impregnation", "577e6f90719a168e7d256a47"),
- Pair("incest", "577e6f93719a168e7d256a92"),
- Pair("inflation", "577e7273719a168ef96a77d1"),
- Pair("insect girl", "577e71fc719a166f4719a692"),
- Pair("inverted nipples", "5813993a719a165f236ddacd"),
- Pair("kimono", "577e723d719a168ef96a7417"),
- Pair("kissing", "5782ae4f719a1675f68a6ece"),
- Pair("lactation", "577e6f93719a168e7d256a93"),
- Pair("latex", "577e6f90719a168e7d256a58"),
- Pair("layer cake", "577e7230719a166f4719aa8d"),
- Pair("leg lock", "57b7c0c2719a169265b768bd"),
- Pair("leotard", "579b141e719a16881d14ccfe"),
- Pair("lingerie", "577e71fc719a166f4719a693"),
- Pair("living clothes", "577e6f90719a168e7d256a49"),
- Pair("lizard girl", "5782b127719a1679528765e9"),
- Pair("lolicon", "5782af84719a1694739009b5"),
- Pair("long tongue", "5782b158719a1679528767d5"),
- Pair("machine", "57ef0396719a163dffb8fe01"),
- Pair("magical girl", "577e71c3719a166f4719a236"),
- Pair("maid", "5782ae3f719a1675f68a6e19"),
- Pair("male on dickgirl", "577e7267719a168ef96a76f0"),
- Pair("masked face", "57c349e1719a1625b42603f5"),
- Pair("masturbation", "577e71b5719a166f4719a13c"),
- Pair("mermaid", "578d3c5b719a164fa798c09e"),
- Pair("metal armor", "5782b158719a1679528767d6"),
- Pair("miko", "577e726e719a168ef96a7765"),
- Pair("milf", "577e6f8d719a168e7d256a24"),
- Pair("military", "577e6f8d719a168e7d256a18"),
- Pair("milking", "577e6f93719a168e7d256a94"),
- Pair("mind break", "577e6f90719a168e7d256a4b"),
- Pair("mind control", "577e6f90719a168e7d256a4d"),
- Pair("monster girl", "577e6f90719a168e7d256a4f"),
- Pair("monster girl", "577e6f90719a168e7d256a46"),
- Pair("moral degeneration", "577e71da719a166f4719a3cc"),
- Pair("mother", "577e71c7719a166f4719a293"),
- Pair("mouse girl", "5782ae45719a1675f68a6e4a"),
- Pair("multiple breasts", "5782ae45719a1675f68a6e4b"),
- Pair("multiple penises", "577e722a719a166f4719aa29"),
- Pair("muscle", "577e7250719a168ef96a753c"),
- Pair("nakadashi", "577e6f8e719a168e7d256a26"),
- Pair("netorare", "577e71c7719a166f4719a294"),
- Pair("niece", "5782b10a719a1679528764b5"),
- Pair("nurse", "577e6f8d719a168e7d256a1d"),
- Pair("oil", "5782af5e719a1694739008b1"),
- Pair("onahole", "582324e5719a1674f99b3444"),
- Pair("orgasm denial", "577e725d719a168ef96a762f"),
- Pair("paizuri", "577e6f90719a168e7d256a3e"),
- Pair("pantyhose", "577e6f8d719a168e7d256a19"),
- Pair("pantyjob", "577e7276719a168ef96a77f9"),
- Pair("parasite", "577e6f90719a168e7d256a50"),
- Pair("pasties", "5782b029719a169473900f3b"),
- Pair("piercing", "577e6f90719a168e7d256a59"),
- Pair("plant girl", "577e71f4719a166f4719a5fa"),
- Pair("policewoman", "57af673b719a1655a6ca8b58"),
- Pair("ponygirl", "577e6f90719a168e7d256a5a"),
- Pair("possession", "5782aff7719a169473900d8b"),
- Pair("pregnant", "577e71da719a166f4719a3cd"),
- Pair("prolapse", "5782cc79719a165f600844e0"),
- Pair("prostitution", "577e7242719a168ef96a7466"),
- Pair("pubic stubble", "577e71da719a166f4719a3ce"),
- Pair("public use", "5782cc79719a165f600844e1"),
- Pair("rape", "577e6f90719a168e7d256a51"),
- Pair("rimjob", "577e725f719a168ef96a765e"),
- Pair("robot", "5782b144719a1679528766f3"),
- Pair("ryona", "577e723e719a168ef96a7424"),
- Pair("saliva", "5884ed6f719a1678dfbb2258"),
- Pair("scar", "5782b081719a167952876168"),
- Pair("school swimsuit", "5782b05f719a169473901177"),
- Pair("schoolgirl uniform", "577e7199719a16697b9853e6"),
- Pair("selfcest", "5782b152719a16795287677e"),
- Pair("sex toys", "577e6f90719a168e7d256a5b"),
- Pair("sheep girl", "5782affa719a169473900da2"),
- Pair("shemale", "577e7267719a168ef96a76f1"),
- Pair("shibari", "577e72a6719a168ef96a7b18"),
- Pair("shimapan", "5782aebd719a1694739004c5"),
- Pair("sister", "577e6f8c719a168e7d256a14"),
- Pair("slave", "577e71b4719a166f4719a138"),
- Pair("sleeping", "577e71e5719a166f4719a4b3"),
- Pair("slime", "577e6f93719a168e7d256a95"),
- Pair("slime girl", "577e6f90719a168e7d256a48"),
- Pair("small breasts", "577e6f90719a168e7d256a5f"),
- Pair("smell", "577e7210719a166f4719a824"),
- Pair("snake girl", "577e721e719a166f4719a94b"),
- Pair("sole dickgirl", "582324e5719a1674f99b3445"),
- Pair("sole female", "577e6f91719a168e7d256a7a"),
- Pair("solo action", "5782afbf719a169473900ba2"),
- Pair("spanking", "577e7199719a16697b9853e7"),
- Pair("squirting", "577e7250719a168ef96a753d"),
- Pair("stockings", "577e6f8d719a168e7d256a1a"),
- Pair("stomach deformation", "5782aef2719a169473900606"),
- Pair("strap-on", "577e71d5719a166f4719a367"),
- Pair("stuck in wall", "5782aecf719a16947390055b"),
- Pair("sundress", "577e7216719a166f4719a8a2"),
- Pair("sweating", "577e71b5719a166f4719a13d"),
- Pair("swimsuit", "577e71d3719a166f4719a342"),
- Pair("swinging", "577e7203719a166f4719a723"),
- Pair("syringe", "577e71da719a166f4719a3cf"),
- Pair("tall girl", "577e71d9719a166f4719a3c1"),
- Pair("tanlines", "577e6f91719a168e7d256a7b"),
- Pair("teacher", "577e7199719a16697b9853e8"),
- Pair("tentacles", "577e6f90719a168e7d256a52"),
- Pair("thigh high boots", "577e6f93719a168e7d256a96"),
- Pair("tiara", "5782cc74719a165f600844d3"),
- Pair("tights", "5782b059719a169473901132"),
- Pair("tomboy", "577e7201719a166f4719a6fb"),
- Pair("torture", "577e725d719a168ef96a7630"),
- Pair("tracksuit", "5782b146719a167952876708"),
- Pair("transformation", "577e6f90719a168e7d256a4a"),
- Pair("tribadism", "577e6f90719a168e7d256a60"),
- Pair("tube", "577e7208719a166f4719a78f"),
- Pair("tutor", "5782af34719a1694739007a3"),
- Pair("twins", "577e726a719a168ef96a7729"),
- Pair("unusual pupils", "577e6f90719a168e7d256a53"),
- Pair("urethra insertion", "5877c07f719a163627a2ceb0"),
- Pair("urination", "577e7210719a166f4719a825"),
- Pair("vaginal sticker", "577e721c719a166f4719a930"),
- Pair("vomit", "5782ae45719a1675f68a6e4c"),
- Pair("vore", "577e6f8c719a168e7d256a15"),
- Pair("voyeurism", "583ca1ef719a161795a60847"),
- Pair("waitress", "5782ae3f719a1675f68a6e1a"),
- Pair("widow", "5782b13c719a16795287669d"),
- Pair("wings", "5782b158719a1679528767d7"),
- Pair("witch", "577e6f93719a168e7d256a97"),
- Pair("wolf girl", "577e724c719a168ef96a74fd"),
- Pair("wrestling", "577e7230719a166f4719aa8e"),
- Pair("x-ray", "577e6f90719a168e7d256a40"),
- Pair("yandere", "577e7295719a168ef96a79e7"),
- Pair("yuri", "577e6f90719a168e7d256a4c")
- )
-}