mirror of
https://github.com/recloudstream/cloudstream.git
synced 2024-08-15 01:53:11 +00:00
FUCK ANDROID STORAGE
This commit is contained in:
parent
9b4701fe91
commit
3659906516
4 changed files with 883 additions and 31 deletions
|
@ -591,7 +591,7 @@ class ResultViewModel2 : ViewModel() {
|
||||||
link,
|
link,
|
||||||
"$fileName ${link.name}",
|
"$fileName ${link.name}",
|
||||||
folder,
|
folder,
|
||||||
if (link.url.contains(".srt")) ".srt" else "vtt",
|
if (link.url.contains(".srt")) "srt" else "vtt",
|
||||||
false,
|
false,
|
||||||
null, createNotificationCallback = {}
|
null, createNotificationCallback = {}
|
||||||
)
|
)
|
||||||
|
@ -719,7 +719,7 @@ class ResultViewModel2 : ViewModel() {
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
.map { ExtractorSubtitleLink(it.name, it.url, "") }
|
.map { ExtractorSubtitleLink(it.name, it.url, "") }.take(3)
|
||||||
.forEach { link ->
|
.forEach { link ->
|
||||||
val fileName = VideoDownloadManager.getFileName(context, meta)
|
val fileName = VideoDownloadManager.getFileName(context, meta)
|
||||||
downloadSubtitle(context, link, fileName, folder)
|
downloadSubtitle(context, link, fileName, folder)
|
||||||
|
|
|
@ -581,6 +581,7 @@ object VideoDownloadManager {
|
||||||
val foundFile = subDir.findFile(displayName)
|
val foundFile = subDir.findFile(displayName)
|
||||||
|
|
||||||
val (file, fileLength) = if (foundFile == null || foundFile.exists() != true) {
|
val (file, fileLength) = if (foundFile == null || foundFile.exists() != true) {
|
||||||
|
foundFile?.delete()
|
||||||
subDir.createFileOrThrow(displayName) to 0L
|
subDir.createFileOrThrow(displayName) to 0L
|
||||||
} else {
|
} else {
|
||||||
if (tryResume) {
|
if (tryResume) {
|
||||||
|
@ -1678,6 +1679,11 @@ object VideoDownloadManager {
|
||||||
try {
|
try {
|
||||||
val info =
|
val info =
|
||||||
context.getKey<DownloadedFileInfo>(KEY_DOWNLOAD_INFO, id.toString()) ?: return null
|
context.getKey<DownloadedFileInfo>(KEY_DOWNLOAD_INFO, id.toString()) ?: return null
|
||||||
|
|
||||||
|
/*
|
||||||
|
val test = basePathToFile(context, info.basePath)?.gotoDirectory(info.relativePath)
|
||||||
|
val files = test?.listFiles()
|
||||||
|
println("FILES:::: $files")*/
|
||||||
val file = info.toFile(context)
|
val file = info.toFile(context)
|
||||||
|
|
||||||
// only delete the key if the file is not found
|
// only delete the key if the file is not found
|
||||||
|
|
|
@ -13,6 +13,7 @@ import com.hippo.unifile.UniRandomAccessFile
|
||||||
import com.lagradost.cloudstream3.mvvm.logError
|
import com.lagradost.cloudstream3.mvvm.logError
|
||||||
import okhttp3.internal.closeQuietly
|
import okhttp3.internal.closeQuietly
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
import java.io.FileNotFoundException
|
||||||
import java.io.InputStream
|
import java.io.InputStream
|
||||||
import java.io.OutputStream
|
import java.io.OutputStream
|
||||||
|
|
||||||
|
@ -65,6 +66,10 @@ class MediaFile(
|
||||||
private val external: Boolean = true,
|
private val external: Boolean = true,
|
||||||
absolutePath: String,
|
absolutePath: String,
|
||||||
) : SafeFile {
|
) : SafeFile {
|
||||||
|
override fun toString(): String {
|
||||||
|
return sanitizedAbsolutePath
|
||||||
|
}
|
||||||
|
|
||||||
// this is the path relative to the download directory so "/hello/text.txt" = "hello/text.txt" is in fact "Download/hello/text.txt"
|
// this is the path relative to the download directory so "/hello/text.txt" = "hello/text.txt" is in fact "Download/hello/text.txt"
|
||||||
private val sanitizedAbsolutePath: String =
|
private val sanitizedAbsolutePath: String =
|
||||||
replaceDuplicateFileSeparators(absolutePath)
|
replaceDuplicateFileSeparators(absolutePath)
|
||||||
|
@ -84,6 +89,20 @@ class MediaFile(
|
||||||
private val baseUri = folderType.toUri(external)
|
private val baseUri = folderType.toUri(external)
|
||||||
private val contentResolver: ContentResolver = context.contentResolver
|
private val contentResolver: ContentResolver = context.contentResolver
|
||||||
|
|
||||||
|
fun removeCache() {
|
||||||
|
cachedUri = null
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setCache(uri: Uri) {
|
||||||
|
cachedUri = uri
|
||||||
|
}
|
||||||
|
|
||||||
|
private var cachedUri : Uri? = null
|
||||||
|
private val fileUri: Uri? get() {
|
||||||
|
cachedUri?.let { return it }
|
||||||
|
return if (isFile) query()?.uri?.also { cachedUri = it } else null
|
||||||
|
}
|
||||||
|
|
||||||
init {
|
init {
|
||||||
// some standard asserts that should always be hold or else this class wont work
|
// some standard asserts that should always be hold or else this class wont work
|
||||||
assert(!relativePath.endsWith(File.separator))
|
assert(!relativePath.endsWith(File.separator))
|
||||||
|
@ -130,7 +149,7 @@ class MediaFile(
|
||||||
// VideoDownloadManager.sanitizeFilename(path.replace(File.separator, ""))
|
// VideoDownloadManager.sanitizeFilename(path.replace(File.separator, ""))
|
||||||
|
|
||||||
// in case of duplicate path, aka Download -> Download
|
// in case of duplicate path, aka Download -> Download
|
||||||
if(relativePath == path) return this
|
if (relativePath == path) return this
|
||||||
|
|
||||||
val newPath =
|
val newPath =
|
||||||
sanitizedAbsolutePath + path + if (folder) File.separator else ""
|
sanitizedAbsolutePath + path + if (folder) File.separator else ""
|
||||||
|
@ -155,7 +174,12 @@ class MediaFile(
|
||||||
put(MediaStore.MediaColumns.MIME_TYPE, mime)
|
put(MediaStore.MediaColumns.MIME_TYPE, mime)
|
||||||
put(MediaStore.MediaColumns.RELATIVE_PATH, relativePath)
|
put(MediaStore.MediaColumns.RELATIVE_PATH, relativePath)
|
||||||
}
|
}
|
||||||
return contentResolver.insert(baseUri, newFile)
|
|
||||||
|
return contentResolver.insert(baseUri, newFile)?.also {
|
||||||
|
if(displayName == namePath) {
|
||||||
|
setCache(it)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun createFile(displayName: String?): SafeFile? {
|
override fun createFile(displayName: String?): SafeFile? {
|
||||||
|
@ -172,22 +196,79 @@ class MediaFile(
|
||||||
|
|
||||||
private data class QueryResult(
|
private data class QueryResult(
|
||||||
val uri: Uri,
|
val uri: Uri,
|
||||||
val lastModified: Long,
|
// val lastModified: Long,
|
||||||
val length: Long,
|
// val length: Long,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@RequiresApi(Build.VERSION_CODES.Q)
|
@RequiresApi(Build.VERSION_CODES.Q)
|
||||||
private fun query(displayName: String = namePath): QueryResult? {
|
private fun query(displayName: String = namePath): QueryResult? {
|
||||||
try {
|
try {
|
||||||
//val (name, mime) = splitFilenameMime(fullName)
|
val (name, ext) = splitFilenameExt(displayName)
|
||||||
|
contentResolver.query(
|
||||||
val projection = arrayOf(
|
baseUri,
|
||||||
|
arrayOf(
|
||||||
MediaStore.MediaColumns._ID,
|
MediaStore.MediaColumns._ID,
|
||||||
MediaStore.MediaColumns.DATE_MODIFIED,
|
//MediaStore.MediaColumns.DATE_MODIFIED,
|
||||||
MediaStore.MediaColumns.SIZE,
|
//MediaStore.MediaColumns.SIZE
|
||||||
)
|
),
|
||||||
|
"${MediaStore.MediaColumns.RELATIVE_PATH}='$relativePath${File.separator}' AND ${MediaStore.MediaColumns.DISPLAY_NAME}='$displayName'",
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
)?.use { cursor ->
|
||||||
|
while (cursor.moveToNext()) {
|
||||||
|
val cursorId =
|
||||||
|
cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.MediaColumns._ID))
|
||||||
|
|
||||||
val selection =
|
return QueryResult(
|
||||||
|
uri = ContentUris.withAppendedId(
|
||||||
|
baseUri, cursorId
|
||||||
|
),
|
||||||
|
// lastModified = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATE_MODIFIED)),
|
||||||
|
// length = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.SIZE)),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// fuck android fr, who decided that MediaStore.MediaColumns.DISPLAY_NAME ***WONT*** BE THE SAME AS THE FUCKING NAME IN EXPLORER
|
||||||
|
contentResolver.query(
|
||||||
|
baseUri,
|
||||||
|
arrayOf(
|
||||||
|
MediaStore.MediaColumns._ID,
|
||||||
|
MediaStore.MediaColumns.MIME_TYPE,
|
||||||
|
// MediaStore.MediaColumns.DATE_MODIFIED,
|
||||||
|
// MediaStore.MediaColumns.SIZE
|
||||||
|
),
|
||||||
|
"${MediaStore.MediaColumns.RELATIVE_PATH}='$relativePath${File.separator}' AND ${MediaStore.MediaColumns.TITLE}='$name'",
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
)?.use { cursor ->
|
||||||
|
while (cursor.moveToNext()) {
|
||||||
|
val cursorMime =
|
||||||
|
cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.MIME_TYPE))
|
||||||
|
|
||||||
|
val matchAgainst = MimeTypes.fromMimeToExt(cursorMime)
|
||||||
|
// if extension does not exist and mime has no match, or both are nonull and match contains ext
|
||||||
|
if (!((ext == null && matchAgainst == null) || (matchAgainst != null && ext != null && matchAgainst.contains(
|
||||||
|
ext
|
||||||
|
)))
|
||||||
|
) continue
|
||||||
|
|
||||||
|
val cursorId =
|
||||||
|
cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.MediaColumns._ID))
|
||||||
|
|
||||||
|
return QueryResult(
|
||||||
|
uri = ContentUris.withAppendedId(
|
||||||
|
baseUri, cursorId
|
||||||
|
),
|
||||||
|
//lastModified = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATE_MODIFIED)),
|
||||||
|
//length = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.SIZE)),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*val selection =
|
||||||
"${MediaStore.MediaColumns.RELATIVE_PATH}='$relativePath${File.separator}' AND ${MediaStore.MediaColumns.DISPLAY_NAME}='$displayName'"
|
"${MediaStore.MediaColumns.RELATIVE_PATH}='$relativePath${File.separator}' AND ${MediaStore.MediaColumns.DISPLAY_NAME}='$displayName'"
|
||||||
|
|
||||||
contentResolver.query(
|
contentResolver.query(
|
||||||
|
@ -206,7 +287,7 @@ class MediaFile(
|
||||||
length = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.SIZE)),
|
length = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.SIZE)),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
} catch (t: Throwable) {
|
} catch (t: Throwable) {
|
||||||
logError(t)
|
logError(t)
|
||||||
}
|
}
|
||||||
|
@ -215,7 +296,7 @@ class MediaFile(
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun uri(): Uri? {
|
override fun uri(): Uri? {
|
||||||
return query()?.uri
|
return fileUri //query()?.uri
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun name(): String? {
|
override fun name(): String? {
|
||||||
|
@ -241,23 +322,42 @@ class MediaFile(
|
||||||
|
|
||||||
override fun lastModified(): Long? {
|
override fun lastModified(): Long? {
|
||||||
if (isDir) return null
|
if (isDir) return null
|
||||||
return query()?.lastModified
|
|
||||||
|
return null
|
||||||
|
//return query()?.lastModified
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun length(): Long? {
|
override fun length(): Long? {
|
||||||
if (isDir) return null
|
if (isDir) return null
|
||||||
val length = query()?.length ?: return null
|
//val query = query()
|
||||||
if(length <= 0) {
|
// val length = query?.length ?: return null
|
||||||
val inputStream : InputStream = openInputStream() ?: return null
|
// if (length <= 0) {
|
||||||
|
try {
|
||||||
|
uri()?.let { uri ->
|
||||||
|
contentResolver.openFileDescriptor(uri, "r")
|
||||||
|
.use {
|
||||||
|
it?.statSize
|
||||||
|
}?.let {
|
||||||
|
return it
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (e: FileNotFoundException) {
|
||||||
|
removeCache()
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
val inputStream: InputStream = openInputStream() ?: return null
|
||||||
return try {
|
return try {
|
||||||
inputStream.available().toLong()
|
inputStream.available().toLong()
|
||||||
} catch (t : Throwable) {
|
} catch (t: Throwable) {
|
||||||
|
logError(t)
|
||||||
null
|
null
|
||||||
} finally {
|
} finally {
|
||||||
inputStream.closeQuietly()
|
inputStream.closeQuietly()
|
||||||
}
|
}
|
||||||
}
|
//return null
|
||||||
return length
|
// }
|
||||||
|
// return length
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun canRead(): Boolean {
|
override fun canRead(): Boolean {
|
||||||
|
@ -278,20 +378,24 @@ class MediaFile(
|
||||||
it.delete()
|
it.delete()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
delete(uri() ?: return false)
|
delete(uri() ?: return false).also {
|
||||||
|
removeCache()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun exists(): Boolean {
|
override fun exists(): Boolean {
|
||||||
if (isDir) return true
|
if (isDir) return true
|
||||||
return query() != null
|
return length() != null
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun listFiles(): List<SafeFile>? {
|
override fun listFiles(): List<SafeFile>? {
|
||||||
if (isFile) return null
|
if (isFile) return null
|
||||||
try {
|
try {
|
||||||
val projection = arrayOf(
|
val projection = arrayOf(
|
||||||
MediaStore.MediaColumns.DISPLAY_NAME
|
MediaStore.MediaColumns.DISPLAY_NAME,
|
||||||
|
// MediaStore.MediaColumns.TITLE,
|
||||||
|
// MediaStore.MediaColumns._ID
|
||||||
)
|
)
|
||||||
|
|
||||||
val selection =
|
val selection =
|
||||||
|
@ -304,14 +408,16 @@ class MediaFile(
|
||||||
while (cursor.moveToNext()) {
|
while (cursor.moveToNext()) {
|
||||||
val nameIdx = cursor.getColumnIndex(MediaStore.MediaColumns.DISPLAY_NAME)
|
val nameIdx = cursor.getColumnIndex(MediaStore.MediaColumns.DISPLAY_NAME)
|
||||||
if (nameIdx == -1) continue
|
if (nameIdx == -1) continue
|
||||||
|
//val titleIdx = cursor.getColumnIndex(MediaStore.MediaColumns.TITLE)
|
||||||
|
//val title = cursor.getString(titleIdx)
|
||||||
val name = cursor.getString(nameIdx)
|
val name = cursor.getString(nameIdx)
|
||||||
|
//println("title = $title, name = $name")
|
||||||
appendRelativePath(name, false)?.let { new ->
|
appendRelativePath(name, false)?.let { new ->
|
||||||
out.add(new)
|
out.add(new)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
out
|
return out
|
||||||
}
|
}
|
||||||
} catch (t: Throwable) {
|
} catch (t: Throwable) {
|
||||||
logError(t)
|
logError(t)
|
||||||
|
@ -362,6 +468,7 @@ class MediaFile(
|
||||||
try {
|
try {
|
||||||
return contentResolver.openInputStream(uri() ?: return null)
|
return contentResolver.openInputStream(uri() ?: return null)
|
||||||
} catch (t: Throwable) {
|
} catch (t: Throwable) {
|
||||||
|
logError(t)
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,739 @@
|
||||||
|
package com.lagradost.cloudstream3.utils.storage
|
||||||
|
|
||||||
|
object MimeTypes {
|
||||||
|
fun fromMimeToExt(mime : String) : Array<String>? {
|
||||||
|
return map[mime.lowercase()]
|
||||||
|
}
|
||||||
|
|
||||||
|
private val map : HashMap<String, Array<String>> = hashMapOf(
|
||||||
|
"application/x-subrip" to arrayOf("srt"),
|
||||||
|
"text/vtt " to arrayOf("vtt"),
|
||||||
|
|
||||||
|
"application/andrew-inset" to arrayOf("ez"),
|
||||||
|
"application/applixware" to arrayOf("aw"),
|
||||||
|
"application/atom+xml" to arrayOf("atom"),
|
||||||
|
"application/atomcat+xml" to arrayOf("atomcat"),
|
||||||
|
"application/atomsvc+xml" to arrayOf("atomsvc"),
|
||||||
|
"application/ccxml+xml" to arrayOf("ccxml"),
|
||||||
|
"application/cu-seeme" to arrayOf("cu"),
|
||||||
|
"application/davmount+xml" to arrayOf("davmount"),
|
||||||
|
"application/ecmascript" to arrayOf("ecma"),
|
||||||
|
"application/emma+xml" to arrayOf("emma"),
|
||||||
|
"application/epub+zip" to arrayOf("epub"),
|
||||||
|
"application/font-tdpfr" to arrayOf("pfr"),
|
||||||
|
"application/gzip" to arrayOf("gz","tgz"),
|
||||||
|
"application/x-gzip" to arrayOf("gz","tgz"),
|
||||||
|
"application/hyperstudio" to arrayOf("stk"),
|
||||||
|
"application/java-archive" to arrayOf("jar"),
|
||||||
|
"application/java-serialized-object" to arrayOf("ser"),
|
||||||
|
"application/java-vm" to arrayOf("class"),
|
||||||
|
"application/json" to arrayOf("json"),
|
||||||
|
"text/json" to arrayOf("json"),
|
||||||
|
"application/lost+xml" to arrayOf("lostxml"),
|
||||||
|
"application/mac-binhex40" to arrayOf("hqx"),
|
||||||
|
"application/mac-compactpro" to arrayOf("cpt"),
|
||||||
|
"application/marc" to arrayOf("mrc"),
|
||||||
|
"application/mathematica" to arrayOf("ma","mb","nb"),
|
||||||
|
"application/mathml+xml" to arrayOf("mathml","mml"),
|
||||||
|
"text/mathml" to arrayOf("mathml","mml"),
|
||||||
|
"application/mbox" to arrayOf("mbox"),
|
||||||
|
"application/mediaservercontrol+xml" to arrayOf("mscml"),
|
||||||
|
"application/mp4" to arrayOf("mp4s"),
|
||||||
|
"application/msword" to arrayOf("doc","dot","wiz"),
|
||||||
|
"application/mxf" to arrayOf("mxf"),
|
||||||
|
"application/octet-stream" to arrayOf("a","bin","bpk","deploy","dist","distz","dmg","dms","dump","elc","iso","lha","lrf","lzh","o","obj","pkg","so","srt"),
|
||||||
|
"application/oda" to arrayOf("oda"),
|
||||||
|
"application/oebps-package+xml" to arrayOf("opf"),
|
||||||
|
"application/ogg" to arrayOf("ogx"),
|
||||||
|
"application/onenote" to arrayOf("onepkg","onetmp","onetoc","onetoc2"),
|
||||||
|
"application/patch-ops-error+xml" to arrayOf("xer"),
|
||||||
|
"application/pdf" to arrayOf("pdf"),
|
||||||
|
"application/x-pdf" to arrayOf("pdf"),
|
||||||
|
"application/pgp-encrypted" to arrayOf("pgp"),
|
||||||
|
"application/pgp-signature" to arrayOf("asc","sig"),
|
||||||
|
"application/pics-rules" to arrayOf("prf"),
|
||||||
|
"application/pkcs10" to arrayOf("p10"),
|
||||||
|
"application/pkcs7-mime" to arrayOf("p7c","p7m"),
|
||||||
|
"application/x-pkcs7-certreqresp" to arrayOf("p7c","p7m"),
|
||||||
|
"application/x-pkcs7-certificates" to arrayOf("p7c","p7m"),
|
||||||
|
"application/pkcs7-signature" to arrayOf("p7s"),
|
||||||
|
"application/pkix-cert" to arrayOf("cer"),
|
||||||
|
"application/pkix-crl" to arrayOf("crl"),
|
||||||
|
"application/pkix-pkipath" to arrayOf("pkipath"),
|
||||||
|
"application/pkixcmp" to arrayOf("pki"),
|
||||||
|
"application/pls+xml" to arrayOf("pls"),
|
||||||
|
"application/postscript" to arrayOf("ai","eps","ps"),
|
||||||
|
"application/prs.cww" to arrayOf("cww"),
|
||||||
|
"application/rdf+xml" to arrayOf("rdf"),
|
||||||
|
"application/reginfo+xml" to arrayOf("rif"),
|
||||||
|
"application/relax-ng-compact-syntax" to arrayOf("rnc"),
|
||||||
|
"application/resource-lists+xml" to arrayOf("rl"),
|
||||||
|
"application/resource-lists-diff+xml" to arrayOf("rld"),
|
||||||
|
"application/rls-services+xml" to arrayOf("rs"),
|
||||||
|
"application/rsd+xml" to arrayOf("rsd"),
|
||||||
|
"application/rss+xml" to arrayOf("rss","xml"),
|
||||||
|
"application/rtf" to arrayOf("rtf"),
|
||||||
|
"application/sbml+xml" to arrayOf("sbml"),
|
||||||
|
"application/scvp-cv-request" to arrayOf("scq"),
|
||||||
|
"application/scvp-cv-response" to arrayOf("scs"),
|
||||||
|
"application/scvp-vp-request" to arrayOf("spq"),
|
||||||
|
"application/scvp-vp-response" to arrayOf("spp"),
|
||||||
|
"application/sdp" to arrayOf("sdp"),
|
||||||
|
"application/set-payment-initiation" to arrayOf("setpay"),
|
||||||
|
"application/set-registration-initiation" to arrayOf("setreg"),
|
||||||
|
"application/shf+xml" to arrayOf("shf"),
|
||||||
|
"application/smil+xml" to arrayOf("smi","smil"),
|
||||||
|
"application/sparql-query" to arrayOf("rq"),
|
||||||
|
"application/sparql-results+xml" to arrayOf("srx"),
|
||||||
|
"application/srgs" to arrayOf("gram"),
|
||||||
|
"application/srgs+xml" to arrayOf("grxml"),
|
||||||
|
"application/ssml+xml" to arrayOf("ssml"),
|
||||||
|
"application/vnd.3gpp.pic-bw-large" to arrayOf("plb"),
|
||||||
|
"application/vnd.3gpp.pic-bw-small" to arrayOf("psb"),
|
||||||
|
"application/vnd.3gpp.pic-bw-var" to arrayOf("pvb"),
|
||||||
|
"application/vnd.3gpp2.tcap" to arrayOf("tcap"),
|
||||||
|
"application/vnd.3m.post-it-notes" to arrayOf("pwn"),
|
||||||
|
"application/vnd.accpac.simply.aso" to arrayOf("aso"),
|
||||||
|
"application/vnd.accpac.simply.imp" to arrayOf("imp"),
|
||||||
|
"application/vnd.acucobol" to arrayOf("acu"),
|
||||||
|
"application/vnd.acucorp" to arrayOf("acutc","atc"),
|
||||||
|
"application/vnd.adobe.air-application-installer-package+zip" to arrayOf("air"),
|
||||||
|
"application/vnd.adobe.xdp+xml" to arrayOf("xdp"),
|
||||||
|
"application/vnd.adobe.xfdf" to arrayOf("xfdf"),
|
||||||
|
"application/vnd.airzip.filesecure.azf" to arrayOf("azf"),
|
||||||
|
"application/vnd.airzip.filesecure.azs" to arrayOf("azs"),
|
||||||
|
"application/vnd.amazon.ebook" to arrayOf("azw"),
|
||||||
|
"application/vnd.americandynamics.acc" to arrayOf("acc"),
|
||||||
|
"application/vnd.amiga.ami" to arrayOf("ami"),
|
||||||
|
"application/vnd.android.package-archive" to arrayOf("apk"),
|
||||||
|
"application/vnd.anser-web-certificate-issue-initiation" to arrayOf("cii"),
|
||||||
|
"application/vnd.anser-web-funds-transfer-initiation" to arrayOf("fti"),
|
||||||
|
"application/vnd.antix.game-component" to arrayOf("atx"),
|
||||||
|
"application/vnd.apple.installer+xml" to arrayOf("mpkg"),
|
||||||
|
"application/vnd.arastra.swi" to arrayOf("swi"),
|
||||||
|
"application/vnd.audiograph" to arrayOf("aep"),
|
||||||
|
"application/vnd.blueice.multipass" to arrayOf("mpm"),
|
||||||
|
"application/vnd.bmi" to arrayOf("bmi"),
|
||||||
|
"application/vnd.businessobjects" to arrayOf("rep"),
|
||||||
|
"application/vnd.chemdraw+xml" to arrayOf("cdxml"),
|
||||||
|
"application/vnd.chipnuts.karaoke-mmd" to arrayOf("mmd"),
|
||||||
|
"application/vnd.cinderella" to arrayOf("cdy"),
|
||||||
|
"application/vnd.claymore" to arrayOf("cla"),
|
||||||
|
"application/vnd.clonk.c4group" to arrayOf("c4d","c4f","c4g","c4p","c4u"),
|
||||||
|
"application/vnd.commonspace" to arrayOf("csp"),
|
||||||
|
"application/vnd.contact.cmsg" to arrayOf("cdbcmsg"),
|
||||||
|
"application/vnd.cosmocaller" to arrayOf("cmc"),
|
||||||
|
"application/vnd.crick.clicker" to arrayOf("clkx"),
|
||||||
|
"application/vnd.crick.clicker.keyboard" to arrayOf("clkk"),
|
||||||
|
"application/vnd.crick.clicker.palette" to arrayOf("clkp"),
|
||||||
|
"application/vnd.crick.clicker.template" to arrayOf("clkt"),
|
||||||
|
"application/vnd.crick.clicker.wordbank" to arrayOf("clkw"),
|
||||||
|
"application/vnd.criticaltools.wbs+xml" to arrayOf("wbs"),
|
||||||
|
"application/vnd.ctc-posml" to arrayOf("pml"),
|
||||||
|
"application/vnd.cups-ppd" to arrayOf("ppd"),
|
||||||
|
"application/vnd.curl.car" to arrayOf("car"),
|
||||||
|
"application/vnd.curl.pcurl" to arrayOf("pcurl"),
|
||||||
|
"application/vnd.data-vision.rdz" to arrayOf("rdz"),
|
||||||
|
"application/vnd.debian.binary-package" to arrayOf("deb","udeb"),
|
||||||
|
"application/vnd.denovo.fcselayout-link" to arrayOf("fe_launch"),
|
||||||
|
"application/vnd.dna" to arrayOf("dna"),
|
||||||
|
"application/vnd.dolby.mlp" to arrayOf("mlp"),
|
||||||
|
"application/vnd.dpgraph" to arrayOf("dpg"),
|
||||||
|
"application/vnd.dreamfactory" to arrayOf("dfac"),
|
||||||
|
"application/vnd.dynageo" to arrayOf("geo"),
|
||||||
|
"application/vnd.ecowin.chart" to arrayOf("mag"),
|
||||||
|
"application/vnd.enliven" to arrayOf("nml"),
|
||||||
|
"application/vnd.epson.esf" to arrayOf("esf"),
|
||||||
|
"application/vnd.epson.msf" to arrayOf("msf"),
|
||||||
|
"application/vnd.epson.quickanime" to arrayOf("qam"),
|
||||||
|
"application/vnd.epson.salt" to arrayOf("slt"),
|
||||||
|
"application/vnd.epson.ssf" to arrayOf("ssf"),
|
||||||
|
"application/vnd.eszigno3+xml" to arrayOf("es3","et3"),
|
||||||
|
"application/vnd.ezpix-album" to arrayOf("ez2"),
|
||||||
|
"application/vnd.ezpix-package" to arrayOf("ez3"),
|
||||||
|
"application/vnd.fdf" to arrayOf("fdf"),
|
||||||
|
"application/vnd.fdsn.mseed" to arrayOf("mseed"),
|
||||||
|
"application/vnd.fdsn.seed" to arrayOf("dataless","seed"),
|
||||||
|
"application/vnd.flographit" to arrayOf("gph"),
|
||||||
|
"application/vnd.fluxtime.clip" to arrayOf("ftc"),
|
||||||
|
"application/vnd.framemaker" to arrayOf("book","fm","frame","maker"),
|
||||||
|
"application/vnd.frogans.fnc" to arrayOf("fnc"),
|
||||||
|
"application/vnd.frogans.ltf" to arrayOf("ltf"),
|
||||||
|
"application/vnd.fsc.weblaunch" to arrayOf("fsc"),
|
||||||
|
"application/vnd.fujitsu.oasys" to arrayOf("oas"),
|
||||||
|
"application/vnd.fujitsu.oasys2" to arrayOf("oa2"),
|
||||||
|
"application/vnd.fujitsu.oasys3" to arrayOf("oa3"),
|
||||||
|
"application/vnd.fujitsu.oasysgp" to arrayOf("fg5"),
|
||||||
|
"application/vnd.fujitsu.oasysprs" to arrayOf("bh2"),
|
||||||
|
"application/vnd.fujixerox.ddd" to arrayOf("ddd"),
|
||||||
|
"application/vnd.fujixerox.docuworks" to arrayOf("xdw"),
|
||||||
|
"application/vnd.fujixerox.docuworks.binder" to arrayOf("xbd"),
|
||||||
|
"application/vnd.fuzzysheet" to arrayOf("fzs"),
|
||||||
|
"application/vnd.genomatix.tuxedo" to arrayOf("txd"),
|
||||||
|
"application/vnd.geogebra.file" to arrayOf("ggb"),
|
||||||
|
"application/vnd.geogebra.tool" to arrayOf("ggt"),
|
||||||
|
"application/vnd.geometry-explorer" to arrayOf("gex","gre"),
|
||||||
|
"application/vnd.gmx" to arrayOf("gmx"),
|
||||||
|
"application/vnd.google-earth.kml+xml" to arrayOf("kml"),
|
||||||
|
"application/vnd.google-earth.kmz" to arrayOf("kmz"),
|
||||||
|
"application/vnd.grafeq" to arrayOf("gqf","gqs"),
|
||||||
|
"application/vnd.groove-account" to arrayOf("gac"),
|
||||||
|
"application/vnd.groove-help" to arrayOf("ghf"),
|
||||||
|
"application/vnd.groove-identity-message" to arrayOf("gim"),
|
||||||
|
"application/vnd.groove-injector" to arrayOf("grv"),
|
||||||
|
"application/vnd.groove-tool-message" to arrayOf("gtm"),
|
||||||
|
"application/vnd.groove-tool-template" to arrayOf("tpl"),
|
||||||
|
"application/vnd.groove-vcard" to arrayOf("vcg"),
|
||||||
|
"application/vnd.handheld-entertainment+xml" to arrayOf("zmm"),
|
||||||
|
"application/vnd.hbci" to arrayOf("hbci"),
|
||||||
|
"application/vnd.hhe.lesson-player" to arrayOf("les"),
|
||||||
|
"application/vnd.hp-hpgl" to arrayOf("hpgl"),
|
||||||
|
"application/vnd.hp-hpid" to arrayOf("hpid"),
|
||||||
|
"application/vnd.hp-hps" to arrayOf("hps"),
|
||||||
|
"application/vnd.hp-jlyt" to arrayOf("jlt"),
|
||||||
|
"application/vnd.hp-pcl" to arrayOf("pcl"),
|
||||||
|
"application/vnd.hp-pclxl" to arrayOf("pclxl"),
|
||||||
|
"application/vnd.hydrostatix.sof-data" to arrayOf("sfd-hdstx"),
|
||||||
|
"application/vnd.hzn-3d-crossword" to arrayOf("x3d"),
|
||||||
|
"application/vnd.ibm.minipay" to arrayOf("mpy"),
|
||||||
|
"application/vnd.ibm.modcap" to arrayOf("afp","list3820","listafp"),
|
||||||
|
"application/vnd.ibm.rights-management" to arrayOf("irm"),
|
||||||
|
"application/vnd.ibm.secure-container" to arrayOf("sc"),
|
||||||
|
"application/vnd.iccprofile" to arrayOf("icc","icm"),
|
||||||
|
"application/vnd.igloader" to arrayOf("igl"),
|
||||||
|
"application/vnd.immervision-ivp" to arrayOf("ivp"),
|
||||||
|
"application/vnd.immervision-ivu" to arrayOf("ivu"),
|
||||||
|
"application/vnd.intercon.formnet" to arrayOf("xpw","xpx"),
|
||||||
|
"application/vnd.intu.qbo" to arrayOf("qbo"),
|
||||||
|
"application/vnd.intu.qfx" to arrayOf("qfx"),
|
||||||
|
"application/vnd.ipunplugged.rcprofile" to arrayOf("rcprofile"),
|
||||||
|
"application/vnd.irepository.package+xml" to arrayOf("irp"),
|
||||||
|
"application/vnd.is-xpr" to arrayOf("xpr"),
|
||||||
|
"application/vnd.jam" to arrayOf("jam"),
|
||||||
|
"application/vnd.jcp.javame.midlet-rms" to arrayOf("rms"),
|
||||||
|
"application/vnd.jisp" to arrayOf("jisp"),
|
||||||
|
"application/vnd.joost.joda-archive" to arrayOf("joda"),
|
||||||
|
"application/vnd.kahootz" to arrayOf("ktr","ktz"),
|
||||||
|
"application/vnd.kde.karbon" to arrayOf("karbon"),
|
||||||
|
"application/vnd.kde.kchart" to arrayOf("chrt"),
|
||||||
|
"application/vnd.kde.kformula" to arrayOf("kfo"),
|
||||||
|
"application/vnd.kde.kivio" to arrayOf("flw"),
|
||||||
|
"application/vnd.kde.kontour" to arrayOf("kon"),
|
||||||
|
"application/vnd.kde.kpresenter" to arrayOf("kpr","kpt"),
|
||||||
|
"application/vnd.kde.kspread" to arrayOf("ksp"),
|
||||||
|
"application/vnd.kde.kword" to arrayOf("kwd","kwt"),
|
||||||
|
"application/vnd.kenameaapp" to arrayOf("htke"),
|
||||||
|
"application/vnd.kidspiration" to arrayOf("kia"),
|
||||||
|
"application/vnd.kinar" to arrayOf("kne","knp"),
|
||||||
|
"application/vnd.koan" to arrayOf("skd","skm","skp","skt"),
|
||||||
|
"application/vnd.kodak-descriptor" to arrayOf("sse"),
|
||||||
|
"application/vnd.llamagraphics.life-balance.desktop" to arrayOf("lbd"),
|
||||||
|
"application/vnd.llamagraphics.life-balance.exchange+xml" to arrayOf("lbe"),
|
||||||
|
"application/vnd.lotus-1-2-3" to arrayOf("123"),
|
||||||
|
"application/vnd.lotus-approach" to arrayOf("apr"),
|
||||||
|
"application/vnd.lotus-freelance" to arrayOf("pre"),
|
||||||
|
"application/vnd.lotus-notes" to arrayOf("nsf"),
|
||||||
|
"application/vnd.lotus-organizer" to arrayOf("org"),
|
||||||
|
"application/vnd.lotus-screencam" to arrayOf("scm"),
|
||||||
|
"application/vnd.lotus-wordpro" to arrayOf("lwp"),
|
||||||
|
"application/vnd.macports.portpkg" to arrayOf("portpkg"),
|
||||||
|
"application/vnd.mcd" to arrayOf("mcd"),
|
||||||
|
"application/vnd.medcalcdata" to arrayOf("mc1"),
|
||||||
|
"application/vnd.mediastation.cdkey" to arrayOf("cdkey"),
|
||||||
|
"application/vnd.mfer" to arrayOf("mwf"),
|
||||||
|
"application/vnd.mfmp" to arrayOf("mfm"),
|
||||||
|
"application/vnd.micrografx.flo" to arrayOf("flo"),
|
||||||
|
"application/vnd.micrografx.igx" to arrayOf("igx"),
|
||||||
|
"application/vnd.mif" to arrayOf("mif"),
|
||||||
|
"application/vnd.mobius.daf" to arrayOf("daf"),
|
||||||
|
"application/vnd.mobius.dis" to arrayOf("dis"),
|
||||||
|
"application/vnd.mobius.mbk" to arrayOf("mbk"),
|
||||||
|
"application/vnd.mobius.mqy" to arrayOf("mqy"),
|
||||||
|
"application/vnd.mobius.msl" to arrayOf("msl"),
|
||||||
|
"application/vnd.mobius.plc" to arrayOf("plc"),
|
||||||
|
"application/vnd.mobius.txf" to arrayOf("txf"),
|
||||||
|
"application/vnd.mophun.application" to arrayOf("mpn"),
|
||||||
|
"application/vnd.mophun.certificate" to arrayOf("mpc"),
|
||||||
|
"application/vnd.mozilla.xul+xml" to arrayOf("xul"),
|
||||||
|
"application/vnd.ms-artgalry" to arrayOf("cil"),
|
||||||
|
"application/vnd.ms-cab-compressed" to arrayOf("cab"),
|
||||||
|
"application/vnd.ms-excel" to arrayOf("xla","xlb","xlc","xlm","xls","xlt","xlw"),
|
||||||
|
"application/vnd.ms-excel.addin.macroenabled.12" to arrayOf("xlam"),
|
||||||
|
"application/vnd.ms-excel.sheet.binary.macroenabled.12" to arrayOf("xlsb"),
|
||||||
|
"application/vnd.ms-excel.sheet.macroenabled.12" to arrayOf("xlsm"),
|
||||||
|
"application/vnd.ms-excel.template.macroenabled.12" to arrayOf("xltm"),
|
||||||
|
"application/vnd.ms-fontobject" to arrayOf("eot"),
|
||||||
|
"application/vnd.ms-htmlhelp" to arrayOf("chm"),
|
||||||
|
"application/vnd.ms-ims" to arrayOf("ims"),
|
||||||
|
"application/vnd.ms-lrm" to arrayOf("lrm"),
|
||||||
|
"application/vnd.ms-pki.seccat" to arrayOf("cat"),
|
||||||
|
"application/vnd.ms-pki.stl" to arrayOf("stl"),
|
||||||
|
"application/vnd.ms-powerpoint" to arrayOf("pot","ppa","pps","ppt","pwz"),
|
||||||
|
"application/vnd.ms-powerpoint.addin.macroenabled.12" to arrayOf("ppam"),
|
||||||
|
"application/vnd.ms-powerpoint.presentation.macroenabled.12" to arrayOf("pptm"),
|
||||||
|
"application/vnd.ms-powerpoint.slide.macroenabled.12" to arrayOf("sldm"),
|
||||||
|
"application/vnd.ms-powerpoint.slideshow.macroenabled.12" to arrayOf("ppsm"),
|
||||||
|
"application/vnd.ms-powerpoint.template.macroenabled.12" to arrayOf("potm"),
|
||||||
|
"application/vnd.ms-project" to arrayOf("mpp","mpt"),
|
||||||
|
"application/vnd.ms-word.document.macroenabled.12" to arrayOf("docm"),
|
||||||
|
"application/vnd.ms-word.template.macroenabled.12" to arrayOf("dotm"),
|
||||||
|
"application/vnd.ms-works" to arrayOf("wcm","wdb","wks","wps"),
|
||||||
|
"application/vnd.ms-wpl" to arrayOf("wpl"),
|
||||||
|
"application/vnd.ms-xpsdocument" to arrayOf("xps"),
|
||||||
|
"application/vnd.mseq" to arrayOf("mseq"),
|
||||||
|
"application/vnd.musician" to arrayOf("mus"),
|
||||||
|
"application/vnd.muvee.style" to arrayOf("msty"),
|
||||||
|
"application/vnd.neurolanguage.nlu" to arrayOf("nlu"),
|
||||||
|
"application/vnd.noblenet-directory" to arrayOf("nnd"),
|
||||||
|
"application/vnd.noblenet-sealer" to arrayOf("nns"),
|
||||||
|
"application/vnd.noblenet-web" to arrayOf("nnw"),
|
||||||
|
"application/vnd.nokia.n-gage.data" to arrayOf("ngdat"),
|
||||||
|
"application/vnd.nokia.n-gage.symbian.install" to arrayOf("n-gage"),
|
||||||
|
"application/vnd.nokia.radio-preset" to arrayOf("rpst"),
|
||||||
|
"application/vnd.nokia.radio-presets" to arrayOf("rpss"),
|
||||||
|
"application/vnd.novadigm.edm" to arrayOf("edm"),
|
||||||
|
"application/vnd.novadigm.edx" to arrayOf("edx"),
|
||||||
|
"application/vnd.novadigm.ext" to arrayOf("ext"),
|
||||||
|
"application/vnd.oasis.opendocument.chart" to arrayOf("odc"),
|
||||||
|
"application/vnd.oasis.opendocument.chart-template" to arrayOf("otc"),
|
||||||
|
"application/vnd.oasis.opendocument.database" to arrayOf("odb"),
|
||||||
|
"application/vnd.oasis.opendocument.formula" to arrayOf("odf"),
|
||||||
|
"application/vnd.oasis.opendocument.formula-template" to arrayOf("odft"),
|
||||||
|
"application/vnd.oasis.opendocument.graphics" to arrayOf("odg"),
|
||||||
|
"application/vnd.oasis.opendocument.graphics-template" to arrayOf("otg"),
|
||||||
|
"application/vnd.oasis.opendocument.image" to arrayOf("odi"),
|
||||||
|
"application/vnd.oasis.opendocument.image-template" to arrayOf("oti"),
|
||||||
|
"application/vnd.oasis.opendocument.presentation" to arrayOf("odp"),
|
||||||
|
"application/vnd.oasis.opendocument.presentation-template" to arrayOf("otp"),
|
||||||
|
"application/vnd.oasis.opendocument.spreadsheet" to arrayOf("ods"),
|
||||||
|
"application/vnd.oasis.opendocument.spreadsheet-template" to arrayOf("ots"),
|
||||||
|
"application/vnd.oasis.opendocument.text" to arrayOf("odt"),
|
||||||
|
"application/vnd.oasis.opendocument.text-master" to arrayOf("otm"),
|
||||||
|
"application/vnd.oasis.opendocument.text-template" to arrayOf("ott"),
|
||||||
|
"application/vnd.oasis.opendocument.text-web" to arrayOf("oth"),
|
||||||
|
"application/vnd.olpc-sugar" to arrayOf("xo"),
|
||||||
|
"application/vnd.oma.dd2+xml" to arrayOf("dd2"),
|
||||||
|
"application/vnd.openofficeorg.extension" to arrayOf("oxt"),
|
||||||
|
"application/vnd.openxmlformats-officedocument.presentationml.presentation" to arrayOf("pptx"),
|
||||||
|
"application/vnd.openxmlformats-officedocument.presentationml.slide" to arrayOf("sldx"),
|
||||||
|
"application/vnd.openxmlformats-officedocument.presentationml.slideshow" to arrayOf("ppsx"),
|
||||||
|
"application/vnd.openxmlformats-officedocument.presentationml.template" to arrayOf("potx"),
|
||||||
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" to arrayOf("xlsx"),
|
||||||
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.template" to arrayOf("xltx"),
|
||||||
|
"application/vnd.openxmlformats-officedocument.wordprocessingml.document" to arrayOf("docx"),
|
||||||
|
"application/vnd.openxmlformats-officedocument.wordprocessingml.template" to arrayOf("dotx"),
|
||||||
|
"application/vnd.osgi.dp" to arrayOf("dp"),
|
||||||
|
"application/vnd.palm" to arrayOf("oprc","pdb","pqa"),
|
||||||
|
"application/vnd.pg.format" to arrayOf("str"),
|
||||||
|
"application/vnd.pg.osasli" to arrayOf("ei6"),
|
||||||
|
"application/vnd.picsel" to arrayOf("efif"),
|
||||||
|
"application/vnd.pocketlearn" to arrayOf("plf"),
|
||||||
|
"application/vnd.powerbuilder6" to arrayOf("pbd"),
|
||||||
|
"application/vnd.previewsystems.box" to arrayOf("box"),
|
||||||
|
"application/vnd.proteus.magazine" to arrayOf("mgz"),
|
||||||
|
"application/vnd.publishare-delta-tree" to arrayOf("qps"),
|
||||||
|
"application/vnd.pvi.ptid1" to arrayOf("ptid"),
|
||||||
|
"application/vnd.quark.quarkxpress" to arrayOf("qwd","qwt","qxb","qxd","qxl","qxt"),
|
||||||
|
"application/vnd.rar" to arrayOf("rar"),
|
||||||
|
"application/x-rar-compressed" to arrayOf("rar"),
|
||||||
|
"application/vnd.recordare.musicxml" to arrayOf("mxl"),
|
||||||
|
"application/vnd.recordare.musicxml+xml" to arrayOf("musicxml"),
|
||||||
|
"application/vnd.rim.cod" to arrayOf("cod"),
|
||||||
|
"application/vnd.rn-realmedia" to arrayOf("rm"),
|
||||||
|
"application/vnd.route66.link66+xml" to arrayOf("link66"),
|
||||||
|
"application/vnd.seemail" to arrayOf("see"),
|
||||||
|
"application/vnd.sema" to arrayOf("sema"),
|
||||||
|
"application/vnd.semd" to arrayOf("semd"),
|
||||||
|
"application/vnd.semf" to arrayOf("semf"),
|
||||||
|
"application/vnd.shana.informed.formdata" to arrayOf("ifm"),
|
||||||
|
"application/vnd.shana.informed.formtemplate" to arrayOf("itp"),
|
||||||
|
"application/vnd.shana.informed.interchange" to arrayOf("iif"),
|
||||||
|
"application/vnd.shana.informed.package" to arrayOf("ipk"),
|
||||||
|
"application/vnd.simtech-mindmapper" to arrayOf("twd","twds"),
|
||||||
|
"application/vnd.smaf" to arrayOf("mmf"),
|
||||||
|
"application/vnd.smart.teacher" to arrayOf("teacher"),
|
||||||
|
"application/vnd.solent.sdkm+xml" to arrayOf("sdkd","sdkm"),
|
||||||
|
"application/vnd.spotfire.dxp" to arrayOf("dxp"),
|
||||||
|
"application/vnd.spotfire.sfs" to arrayOf("sfs"),
|
||||||
|
"application/vnd.sqlite3" to arrayOf("db","sqlite","sqlite3","db-wal","sqlite-wal","db-shm","sqlite-shm"),
|
||||||
|
"application/x-sqlite3" to arrayOf("db","sqlite","sqlite3","db-wal","sqlite-wal","db-shm","sqlite-shm"),
|
||||||
|
"application/vnd.stardivision.calc" to arrayOf("sdc"),
|
||||||
|
"application/vnd.stardivision.draw" to arrayOf("sda"),
|
||||||
|
"application/vnd.stardivision.impress" to arrayOf("sdd"),
|
||||||
|
"application/vnd.stardivision.math" to arrayOf("smf"),
|
||||||
|
"application/vnd.stardivision.writer" to arrayOf("sdw","vor"),
|
||||||
|
"application/vnd.stardivision.writer-global" to arrayOf("sgl"),
|
||||||
|
"application/vnd.sun.xml.calc" to arrayOf("sxc"),
|
||||||
|
"application/vnd.sun.xml.calc.template" to arrayOf("stc"),
|
||||||
|
"application/vnd.sun.xml.draw" to arrayOf("sxd"),
|
||||||
|
"application/vnd.sun.xml.draw.template" to arrayOf("std"),
|
||||||
|
"application/vnd.sun.xml.impress" to arrayOf("sxi"),
|
||||||
|
"application/vnd.sun.xml.impress.template" to arrayOf("sti"),
|
||||||
|
"application/vnd.sun.xml.math" to arrayOf("sxm"),
|
||||||
|
"application/vnd.sun.xml.writer" to arrayOf("sxw"),
|
||||||
|
"application/vnd.sun.xml.writer.global" to arrayOf("sxg"),
|
||||||
|
"application/vnd.sun.xml.writer.template" to arrayOf("stw"),
|
||||||
|
"application/vnd.sus-calendar" to arrayOf("sus","susp"),
|
||||||
|
"application/vnd.svd" to arrayOf("svd"),
|
||||||
|
"application/vnd.symbian.install" to arrayOf("sis","sisx"),
|
||||||
|
"application/vnd.syncml+xml" to arrayOf("xsm"),
|
||||||
|
"application/vnd.syncml.dm+wbxml" to arrayOf("bdm"),
|
||||||
|
"application/vnd.syncml.dm+xml" to arrayOf("xdm"),
|
||||||
|
"application/vnd.tao.intent-module-archive" to arrayOf("tao"),
|
||||||
|
"application/vnd.tmobile-livetv" to arrayOf("tmo"),
|
||||||
|
"application/vnd.trid.tpt" to arrayOf("tpt"),
|
||||||
|
"application/vnd.triscape.mxs" to arrayOf("mxs"),
|
||||||
|
"application/vnd.trueapp" to arrayOf("tra"),
|
||||||
|
"application/vnd.ufdl" to arrayOf("ufd","ufdl"),
|
||||||
|
"application/vnd.uiq.theme" to arrayOf("utz"),
|
||||||
|
"application/vnd.umajin" to arrayOf("umj"),
|
||||||
|
"application/vnd.unity" to arrayOf("unityweb"),
|
||||||
|
"application/vnd.uoml+xml" to arrayOf("uoml"),
|
||||||
|
"application/vnd.vcx" to arrayOf("vcx"),
|
||||||
|
"application/vnd.visio" to arrayOf("vsd","vss","vst","vsw","vsdx","vssx","vstx","vssm","vstm"),
|
||||||
|
"application/vnd.visionary" to arrayOf("vis"),
|
||||||
|
"application/vnd.vsf" to arrayOf("vsf"),
|
||||||
|
"application/vnd.wap.sic" to arrayOf("sic"),
|
||||||
|
"application/vnd.wap.slc" to arrayOf("slc"),
|
||||||
|
"application/vnd.wap.wbxml" to arrayOf("wbxml"),
|
||||||
|
"application/vnd.wap.wmlc" to arrayOf("wmlc"),
|
||||||
|
"application/vnd.wap.wmlscriptc" to arrayOf("wmlsc"),
|
||||||
|
"application/vnd.webturbo" to arrayOf("wtb"),
|
||||||
|
"application/vnd.wordperfect" to arrayOf("wpd"),
|
||||||
|
"application/vnd.wqd" to arrayOf("wqd"),
|
||||||
|
"application/vnd.wt.stf" to arrayOf("stf"),
|
||||||
|
"application/vnd.xara" to arrayOf("xar"),
|
||||||
|
"application/vnd.xfdl" to arrayOf("xfdl"),
|
||||||
|
"application/vnd.yamaha.hv-dic" to arrayOf("hvd"),
|
||||||
|
"application/vnd.yamaha.hv-script" to arrayOf("hvs"),
|
||||||
|
"application/vnd.yamaha.hv-voice" to arrayOf("hvp"),
|
||||||
|
"application/vnd.yamaha.openscoreformat" to arrayOf("osf"),
|
||||||
|
"application/vnd.yamaha.openscoreformat.osfpvg+xml" to arrayOf("osfpvg"),
|
||||||
|
"application/vnd.yamaha.smaf-audio" to arrayOf("saf"),
|
||||||
|
"application/vnd.yamaha.smaf-phrase" to arrayOf("spf"),
|
||||||
|
"application/vnd.yellowriver-custom-menu" to arrayOf("cmp"),
|
||||||
|
"application/vnd.zul" to arrayOf("zir","zirz"),
|
||||||
|
"application/vnd.zzazz.deck+xml" to arrayOf("zaz"),
|
||||||
|
"application/voicexml+xml" to arrayOf("vxml"),
|
||||||
|
"application/winhlp" to arrayOf("hlp"),
|
||||||
|
"application/wsdl+xml" to arrayOf("wsdl"),
|
||||||
|
"application/wspolicy+xml" to arrayOf("wspolicy"),
|
||||||
|
"application/x-7z-compressed" to arrayOf("7z"),
|
||||||
|
"application/x-abiword" to arrayOf("abw"),
|
||||||
|
"application/x-ace-compressed" to arrayOf("ace"),
|
||||||
|
"application/x-authorware-bin" to arrayOf("aab","u32","vox","x32"),
|
||||||
|
"application/x-authorware-map" to arrayOf("aam"),
|
||||||
|
"application/x-authorware-seg" to arrayOf("aas"),
|
||||||
|
"application/x-bcpio" to arrayOf("bcpio"),
|
||||||
|
"application/x-bittorrent" to arrayOf("torrent"),
|
||||||
|
"application/x-bzip" to arrayOf("bz"),
|
||||||
|
"application/x-bzip2" to arrayOf("boz","bz2"),
|
||||||
|
"application/x-cdlink" to arrayOf("vcd"),
|
||||||
|
"application/x-chat" to arrayOf("chat"),
|
||||||
|
"application/x-chess-pgn" to arrayOf("pgn"),
|
||||||
|
"application/x-cpio" to arrayOf("cpio"),
|
||||||
|
"application/x-csh" to arrayOf("csh"),
|
||||||
|
"application/x-debian-package" to arrayOf("deb","udeb"),
|
||||||
|
"application/x-director" to arrayOf("cct","cst","cxt","dcr","dir","dxr","fgd","swa","w3d"),
|
||||||
|
"application/x-doom" to arrayOf("wad"),
|
||||||
|
"application/x-dtbncx+xml" to arrayOf("ncx"),
|
||||||
|
"application/x-dtbook+xml" to arrayOf("dtb"),
|
||||||
|
"application/x-dtbresource+xml" to arrayOf("res"),
|
||||||
|
"application/x-dvi" to arrayOf("dvi"),
|
||||||
|
"application/x-font-bdf" to arrayOf("bdf"),
|
||||||
|
"application/x-font-ghostscript" to arrayOf("gsf"),
|
||||||
|
"application/x-font-linux-psf" to arrayOf("psf"),
|
||||||
|
"application/x-font-otf" to arrayOf("otf"),
|
||||||
|
"font/otf" to arrayOf(),
|
||||||
|
"application/x-font-pcf" to arrayOf("pcf"),
|
||||||
|
"application/x-font-snf" to arrayOf("snf"),
|
||||||
|
"application/x-font-ttf" to arrayOf("ttc","ttf"),
|
||||||
|
"application/x-font-type1" to arrayOf("afm","pfa","pfb","pfm"),
|
||||||
|
"application/x-futuresplash" to arrayOf("spl"),
|
||||||
|
"application/x-gnumeric" to arrayOf("gnumeric"),
|
||||||
|
"application/x-gtar" to arrayOf("gtar"),
|
||||||
|
"application/x-gzip" to arrayOf("gz","tgz"),
|
||||||
|
"application/gzip" to arrayOf("gz","tgz"),
|
||||||
|
"application/x-hdf" to arrayOf("hdf"),
|
||||||
|
"application/x-java-jnlp-file" to arrayOf("jnlp"),
|
||||||
|
"application/x-killustrator" to arrayOf("kil"),
|
||||||
|
"application/x-krita" to arrayOf("kra","krz"),
|
||||||
|
"application/x-latex" to arrayOf("latex"),
|
||||||
|
"application/x-mobipocket-ebook" to arrayOf("mobi","prc"),
|
||||||
|
"application/x-ms-application" to arrayOf("application"),
|
||||||
|
"application/x-ms-wmd" to arrayOf("wmd"),
|
||||||
|
"application/x-ms-wmz" to arrayOf("wmz"),
|
||||||
|
"application/x-ms-xbap" to arrayOf("xbap"),
|
||||||
|
"application/x-msaccess" to arrayOf("mdb"),
|
||||||
|
"application/x-msbinder" to arrayOf("obd"),
|
||||||
|
"application/x-mscardfile" to arrayOf("crd"),
|
||||||
|
"application/x-msclip" to arrayOf("clp"),
|
||||||
|
"application/x-msdownload" to arrayOf("bat","com","dll","exe","msi"),
|
||||||
|
"application/x-msmediaview" to arrayOf("m13","m14","mvb"),
|
||||||
|
"application/x-msmetafile" to arrayOf("wmf"),
|
||||||
|
"application/x-msmoney" to arrayOf("mny"),
|
||||||
|
"application/x-mspublisher" to arrayOf("pub"),
|
||||||
|
"application/x-msschedule" to arrayOf("scd"),
|
||||||
|
"application/x-msterminal" to arrayOf("trm"),
|
||||||
|
"application/x-mswrite" to arrayOf("wri"),
|
||||||
|
"application/x-netcdf" to arrayOf("cdf","nc"),
|
||||||
|
"application/x-perl" to arrayOf("pm","pl"),
|
||||||
|
"application/x-pkcs12" to arrayOf("p12","pfx"),
|
||||||
|
"application/x-pkcs7-certificates" to arrayOf("p7b","spc"),
|
||||||
|
"application/x-python-code" to arrayOf("pyc","pyo"),
|
||||||
|
"application/x-redhat-package-manager" to arrayOf("rpa"),
|
||||||
|
"application/x-rpm" to arrayOf("rpm"),
|
||||||
|
"application/x-sh" to arrayOf("sh"),
|
||||||
|
"application/x-shar" to arrayOf("shar"),
|
||||||
|
"application/x-shellscript" to arrayOf("sh"),
|
||||||
|
"application/x-shockwave-flash" to arrayOf("swf"),
|
||||||
|
"application/x-silverlight-app" to arrayOf("xap"),
|
||||||
|
"application/x-stuffit" to arrayOf("sit"),
|
||||||
|
"application/x-stuffitx" to arrayOf("sitx"),
|
||||||
|
"application/x-sv4cpio" to arrayOf("sv4cpio"),
|
||||||
|
"application/x-sv4crc" to arrayOf("sv4crc"),
|
||||||
|
"application/x-tar" to arrayOf("tar"),
|
||||||
|
"application/x-tcl" to arrayOf("tcl"),
|
||||||
|
"application/x-tex" to arrayOf("tex"),
|
||||||
|
"application/x-tex-tfm" to arrayOf("tfm"),
|
||||||
|
"application/x-texinfo" to arrayOf("texi","texinfo"),
|
||||||
|
"application/x-trash" to arrayOf(),
|
||||||
|
"application/x-ustar" to arrayOf("ustar"),
|
||||||
|
"application/x-wais-source" to arrayOf("src"),
|
||||||
|
"application/x-x509-ca-cert" to arrayOf("crt","der"),
|
||||||
|
"application/x-xfig" to arrayOf("fig"),
|
||||||
|
"application/x-xpinstall" to arrayOf("xpi"),
|
||||||
|
"application/xenc+xml" to arrayOf("xenc"),
|
||||||
|
"application/xhtml+xml" to arrayOf("xht","xhtml"),
|
||||||
|
"application/xml" to arrayOf("xml","xpdl","xsl"),
|
||||||
|
"application/xml-dtd" to arrayOf("dtd"),
|
||||||
|
"application/xop+xml" to arrayOf("xop"),
|
||||||
|
"application/xslt+xml" to arrayOf("xslt"),
|
||||||
|
"application/xspf+xml" to arrayOf("xspf"),
|
||||||
|
"application/xv+xml" to arrayOf("mxml","xhvml","xvm","xvml"),
|
||||||
|
"application/yaml" to arrayOf("yaml","yml"),
|
||||||
|
"text/yaml" to arrayOf("yaml","yml"),
|
||||||
|
"text/x-yaml" to arrayOf("yaml","yml"),
|
||||||
|
"application/x-yaml" to arrayOf("yaml","yml"),
|
||||||
|
"application/zip" to arrayOf("zip"),
|
||||||
|
"application/x-zip-compressed" to arrayOf("zip"),
|
||||||
|
"application/zip-compressed" to arrayOf("zip"),
|
||||||
|
"audio/3gpp" to arrayOf("3gp"),
|
||||||
|
"video/3gpp" to arrayOf("3gp"),
|
||||||
|
"audio/3gpp2" to arrayOf("3g2"),
|
||||||
|
"video/3gpp2" to arrayOf("3g2"),
|
||||||
|
"audio/aac" to arrayOf("aac","mp4","m4a"),
|
||||||
|
"audio/x-aac" to arrayOf("aac","mp4","m4a"),
|
||||||
|
"audio/adpcm" to arrayOf("adp"),
|
||||||
|
"audio/aiff" to arrayOf("aiff","aif","aff"),
|
||||||
|
"audio/x-aiff" to arrayOf("aiff","aif","aff"),
|
||||||
|
"audio/basic" to arrayOf("au","snd"),
|
||||||
|
"audio/flac" to arrayOf("flac"),
|
||||||
|
"audio/x-flac" to arrayOf("flac"),
|
||||||
|
"audio/midi" to arrayOf("kar","mid","midi","rmi"),
|
||||||
|
"audio/mp4" to arrayOf("mp4a"),
|
||||||
|
"audio/mpeg" to arrayOf("m2a","m3a","mp2","mp2a","mp3","mpga"),
|
||||||
|
"audio/mp3" to arrayOf("m2a","m3a","mp2","mp2a","mp3","mpga"),
|
||||||
|
"audio/mpeg3" to arrayOf("m2a","m3a","mp2","mp2a","mp3","mpga"),
|
||||||
|
"audio/x-mpeg-3" to arrayOf("m2a","m3a","mp2","mp2a","mp3","mpga"),
|
||||||
|
"audio/ogg" to arrayOf("oga","ogg","spx"),
|
||||||
|
"audio/opus" to arrayOf("opus"),
|
||||||
|
"audio/vnd.digital-winds" to arrayOf("eol"),
|
||||||
|
"audio/vnd.dts" to arrayOf("dts"),
|
||||||
|
"audio/vnd.dts.hd" to arrayOf("dtshd"),
|
||||||
|
"audio/vnd.lucent.voice" to arrayOf("lvp"),
|
||||||
|
"audio/vnd.ms-playready.media.pya" to arrayOf("pya"),
|
||||||
|
"audio/vnd.nuera.ecelp4800" to arrayOf("ecelp4800"),
|
||||||
|
"audio/vnd.nuera.ecelp7470" to arrayOf("ecelp7470"),
|
||||||
|
"audio/vnd.nuera.ecelp9600" to arrayOf("ecelp9600"),
|
||||||
|
"audio/wav" to arrayOf("wav"),
|
||||||
|
"audio/x-wav" to arrayOf("wav"),
|
||||||
|
"audio/vnd.wave" to arrayOf("wav"),
|
||||||
|
"audio/wave" to arrayOf("wav"),
|
||||||
|
"audio/x-pn-wav" to arrayOf("wav"),
|
||||||
|
"audio/webm" to arrayOf("weba"),
|
||||||
|
"audio/x-aiff" to arrayOf("aif","aifc","aiff"),
|
||||||
|
"audio/x-matroska" to arrayOf("mka"),
|
||||||
|
"audio/x-mpegurl" to arrayOf("m3u"),
|
||||||
|
"audio/x-ms-wax" to arrayOf("wax"),
|
||||||
|
"audio/x-ms-wma" to arrayOf("wma"),
|
||||||
|
"audio/x-pn-realaudio" to arrayOf("ra","ram"),
|
||||||
|
"audio/x-pn-realaudio-plugin" to arrayOf("rmp"),
|
||||||
|
"chemical/x-cdx" to arrayOf("cdx"),
|
||||||
|
"chemical/x-cif" to arrayOf("cif"),
|
||||||
|
"chemical/x-cmdf" to arrayOf("cmdf"),
|
||||||
|
"chemical/x-cml" to arrayOf("cml"),
|
||||||
|
"chemical/x-csml" to arrayOf("csml"),
|
||||||
|
"chemical/x-xyz" to arrayOf("xyz"),
|
||||||
|
"font/otf" to arrayOf("otf"),
|
||||||
|
"application/x-font-otf" to arrayOf(),
|
||||||
|
"font/woff" to arrayOf("woff"),
|
||||||
|
"font/woff2" to arrayOf("woff2"),
|
||||||
|
"gcode" to arrayOf("gcode"),
|
||||||
|
"text/x.gcode" to arrayOf("gcode"),
|
||||||
|
"text/x-gcode" to arrayOf("gcode"),
|
||||||
|
"image/avif" to arrayOf("avif","avifs"),
|
||||||
|
"image/bmp" to arrayOf("bmp"),
|
||||||
|
"image/cgm" to arrayOf("cgm"),
|
||||||
|
"image/g3fax" to arrayOf("g3"),
|
||||||
|
"image/gif" to arrayOf("gif"),
|
||||||
|
"image/heic" to arrayOf("heif","heic"),
|
||||||
|
"image/ief" to arrayOf("ief"),
|
||||||
|
"image/jpeg" to arrayOf("jpe","jpeg","jpg","pjpg","jfif","jfif-tbnl","jif"),
|
||||||
|
"image/pjpeg" to arrayOf("jpe","jpeg","jpg","pjpg","jfi","jfif","jfif-tbnl","jif"),
|
||||||
|
"image/png" to arrayOf("png"),
|
||||||
|
"image/x-png" to arrayOf("png"),
|
||||||
|
"image/vnd.mozilla.apng" to arrayOf(),
|
||||||
|
"image/prs.btif" to arrayOf("btif"),
|
||||||
|
"image/svg+xml" to arrayOf("svg","svgz"),
|
||||||
|
"image/tiff" to arrayOf("tif","tiff"),
|
||||||
|
"image/vnd.adobe.photoshop" to arrayOf("psd"),
|
||||||
|
"image/vnd.djvu" to arrayOf("djv","djvu"),
|
||||||
|
"image/vnd.dwg" to arrayOf("dwg"),
|
||||||
|
"image/vnd.dxf" to arrayOf("dxf"),
|
||||||
|
"image/vnd.fastbidsheet" to arrayOf("fbs"),
|
||||||
|
"image/vnd.fpx" to arrayOf("fpx"),
|
||||||
|
"image/vnd.fst" to arrayOf("fst"),
|
||||||
|
"image/vnd.fujixerox.edmics-mmr" to arrayOf("mmr"),
|
||||||
|
"image/vnd.fujixerox.edmics-rlc" to arrayOf("rlc"),
|
||||||
|
"image/vnd.ms-modi" to arrayOf("mdi"),
|
||||||
|
"image/vnd.net-fpx" to arrayOf("npx"),
|
||||||
|
"image/vnd.wap.wbmp" to arrayOf("wbmp"),
|
||||||
|
"image/vnd.xiff" to arrayOf("xif"),
|
||||||
|
"image/webp" to arrayOf("webp"),
|
||||||
|
"image/x-adobe-dng" to arrayOf("dng"),
|
||||||
|
"image/x-canon-cr2" to arrayOf("cr2"),
|
||||||
|
"image/x-canon-crw" to arrayOf("crw"),
|
||||||
|
"image/x-cmu-raster" to arrayOf("ras"),
|
||||||
|
"image/x-cmx" to arrayOf("cmx"),
|
||||||
|
"image/x-epson-erf" to arrayOf("erf"),
|
||||||
|
"image/x-freehand" to arrayOf("fh","fh4","fh5","fh7","fhc"),
|
||||||
|
"image/x-fuji-raf" to arrayOf("raf"),
|
||||||
|
"image/x-icns" to arrayOf("icns"),
|
||||||
|
"image/x-icon" to arrayOf("ico"),
|
||||||
|
"image/x-kodak-dcr" to arrayOf("dcr"),
|
||||||
|
"image/x-kodak-k25" to arrayOf("k25"),
|
||||||
|
"image/x-kodak-kdc" to arrayOf("kdc"),
|
||||||
|
"image/x-minolta-mrw" to arrayOf("mrw"),
|
||||||
|
"image/x-nikon-nef" to arrayOf("nef"),
|
||||||
|
"image/x-olympus-orf" to arrayOf("orf"),
|
||||||
|
"image/x-panasonic-raw" to arrayOf("raw","rw2","rwl"),
|
||||||
|
"image/x-pcx" to arrayOf("pcx"),
|
||||||
|
"image/x-pentax-pef" to arrayOf("pef","ptx"),
|
||||||
|
"image/x-pict" to arrayOf("pct","pic"),
|
||||||
|
"image/x-portable-anymap" to arrayOf("pnm"),
|
||||||
|
"image/x-portable-bitmap" to arrayOf("pbm"),
|
||||||
|
"image/x-portable-graymap" to arrayOf("pgm"),
|
||||||
|
"image/x-portable-pixmap" to arrayOf("ppm"),
|
||||||
|
"image/x-rgb" to arrayOf("rgb"),
|
||||||
|
"image/x-sigma-x3f" to arrayOf("x3f"),
|
||||||
|
"image/x-sony-arw" to arrayOf("arw"),
|
||||||
|
"image/x-sony-sr2" to arrayOf("sr2"),
|
||||||
|
"image/x-sony-srf" to arrayOf("srf"),
|
||||||
|
"image/x-xbitmap" to arrayOf("xbm"),
|
||||||
|
"image/x-xpixmap" to arrayOf("xpm"),
|
||||||
|
"image/x-xwindowdump" to arrayOf("xwd"),
|
||||||
|
"message/rfc822" to arrayOf("eml","mht","mhtml","mime","nws"),
|
||||||
|
"model/iges" to arrayOf("iges","igs"),
|
||||||
|
"model/mesh" to arrayOf("mesh","msh","silo"),
|
||||||
|
"model/vnd.dwf" to arrayOf("dwf"),
|
||||||
|
"model/vnd.gdl" to arrayOf("gdl"),
|
||||||
|
"model/vnd.gtw" to arrayOf("gtw"),
|
||||||
|
"model/vnd.mts" to arrayOf("mts"),
|
||||||
|
"model/vnd.vtu" to arrayOf("vtu"),
|
||||||
|
"model/vrml" to arrayOf("vrml","wrl"),
|
||||||
|
"text/calendar" to arrayOf("ics","ifb"),
|
||||||
|
"text/css" to arrayOf("css"),
|
||||||
|
"text/csv" to arrayOf("csv"),
|
||||||
|
"application/csv" to arrayOf(),
|
||||||
|
"text/x-csv" to arrayOf(),
|
||||||
|
"application/x-csv" to arrayOf(),
|
||||||
|
"text/x-comma-separated-values" to arrayOf(),
|
||||||
|
"text/comma-separated-values" to arrayOf(),
|
||||||
|
"text/html" to arrayOf("htm","html"),
|
||||||
|
"text/javascript" to arrayOf("js"),
|
||||||
|
"application/ecmascript" to arrayOf("js"),
|
||||||
|
"application/javascript" to arrayOf("js"),
|
||||||
|
"application/x-ecmascript" to arrayOf("js"),
|
||||||
|
"application/x-javascript" to arrayOf("js"),
|
||||||
|
"text/ecmascript" to arrayOf("js"),
|
||||||
|
"text/javascript1.0" to arrayOf("js"),
|
||||||
|
"text/javascript1.1" to arrayOf("js"),
|
||||||
|
"text/javascript1.2" to arrayOf("js"),
|
||||||
|
"text/javascript1.3" to arrayOf("js"),
|
||||||
|
"text/javascript1.4" to arrayOf("js"),
|
||||||
|
"text/javascript1.5" to arrayOf("js"),
|
||||||
|
"text/jscript" to arrayOf("js"),
|
||||||
|
"text/livescript" to arrayOf("js"),
|
||||||
|
"text/x-ecmascript" to arrayOf("js"),
|
||||||
|
"text/x-javascript" to arrayOf("js"),
|
||||||
|
"text/markdown" to arrayOf("md","markdown","mdown","markdn"),
|
||||||
|
"text/x-markdown" to arrayOf("md","markdown","mdown","markdn"),
|
||||||
|
"text/mathml" to arrayOf("mathml","mml"),
|
||||||
|
"application/mathml+xml" to arrayOf("mml"),
|
||||||
|
"text/plain" to arrayOf("conf","def","diff","in","ksh","list","log","pl","text","txt"),
|
||||||
|
"text/prs.lines.tag" to arrayOf("dsc"),
|
||||||
|
"text/richtext" to arrayOf("rtx"),
|
||||||
|
"text/sgml" to arrayOf("sgm","sgml"),
|
||||||
|
"text/tab-separated-values" to arrayOf("tsv"),
|
||||||
|
"text/troff" to arrayOf("man","me","ms","roff","t","tr"),
|
||||||
|
"text/uri-list" to arrayOf("uri","uris","urls"),
|
||||||
|
"text/vnd.curl" to arrayOf("curl"),
|
||||||
|
"text/vnd.curl.dcurl" to arrayOf("dcurl"),
|
||||||
|
"text/vnd.curl.mcurl" to arrayOf("mcurl"),
|
||||||
|
"text/vnd.curl.scurl" to arrayOf("scurl"),
|
||||||
|
"text/vnd.fly" to arrayOf("fly"),
|
||||||
|
"text/vnd.fmi.flexstor" to arrayOf("flx"),
|
||||||
|
"text/vnd.graphviz" to arrayOf("gv"),
|
||||||
|
"text/vnd.in3d.3dml" to arrayOf("3dml"),
|
||||||
|
"text/vnd.in3d.spot" to arrayOf("spot"),
|
||||||
|
"text/vnd.sun.j2me.app-descriptor" to arrayOf("jad"),
|
||||||
|
"text/vnd.wap.si" to arrayOf("si"),
|
||||||
|
"text/vnd.wap.sl" to arrayOf("sl"),
|
||||||
|
"text/vnd.wap.wml" to arrayOf("wml"),
|
||||||
|
"text/vnd.wap.wmlscript" to arrayOf("wmls"),
|
||||||
|
"text/x-asm" to arrayOf("asm","s"),
|
||||||
|
"text/x-c" to arrayOf("c","cc","cpp","cxx","dic","h","hh"),
|
||||||
|
"text/x-fortran" to arrayOf("f","f77","f90","for"),
|
||||||
|
"text/x-java-source" to arrayOf("java"),
|
||||||
|
"text/x-pascal" to arrayOf("p","pas","pp","inc"),
|
||||||
|
"text/x-python" to arrayOf("py"),
|
||||||
|
"text/x-setext" to arrayOf("etx"),
|
||||||
|
"text/x-uuencode" to arrayOf("uu"),
|
||||||
|
"text/x-vcalendar" to arrayOf("vcs"),
|
||||||
|
"text/x-vcard" to arrayOf("vcf"),
|
||||||
|
"video/3gpp" to arrayOf("3gp"),
|
||||||
|
"audio/3gpp" to arrayOf("3gp"),
|
||||||
|
"video/3gpp2" to arrayOf("3g2"),
|
||||||
|
"audio/3gpp2" to arrayOf("3g2"),
|
||||||
|
"video/h261" to arrayOf("h261"),
|
||||||
|
"video/h263" to arrayOf("h263"),
|
||||||
|
"video/h264" to arrayOf("h264"),
|
||||||
|
"video/jpeg" to arrayOf("jpgv"),
|
||||||
|
"video/jpm" to arrayOf("jpgm","jpm"),
|
||||||
|
"video/mj2" to arrayOf("mj2","mjp2"),
|
||||||
|
"video/mp2t" to arrayOf("ts"),
|
||||||
|
"video/mp4" to arrayOf("mp4","mp4v","mpg4"),
|
||||||
|
"video/mpeg" to arrayOf("m1v","m2v","mpa","mpe","mpeg","mpg"),
|
||||||
|
"video/ogg" to arrayOf("ogv"),
|
||||||
|
"video/quicktime" to arrayOf("mov","qt"),
|
||||||
|
"video/vnd.fvt" to arrayOf("fvt"),
|
||||||
|
"video/vnd.mpegurl" to arrayOf("m4u","mxu"),
|
||||||
|
"video/vnd.ms-playready.media.pyv" to arrayOf("pyv"),
|
||||||
|
"video/vnd.vivo" to arrayOf("viv"),
|
||||||
|
"video/webm" to arrayOf("webm"),
|
||||||
|
"video/x-f4v" to arrayOf("f4v"),
|
||||||
|
"video/x-fli" to arrayOf("fli"),
|
||||||
|
"video/x-flv" to arrayOf("flv"),
|
||||||
|
"video/x-m4v" to arrayOf("m4v"),
|
||||||
|
"video/x-matroska" to arrayOf("mkv"),
|
||||||
|
"video/x-ms-asf" to arrayOf("asf","asx"),
|
||||||
|
"video/x-ms-wm" to arrayOf("wm"),
|
||||||
|
"video/x-ms-wmv" to arrayOf("wmv"),
|
||||||
|
"video/x-ms-wmx" to arrayOf("wmx"),
|
||||||
|
"video/x-ms-wvx" to arrayOf("wvx"),
|
||||||
|
"video/x-msvideo" to arrayOf("avi"),
|
||||||
|
"video/x-sgi-movie" to arrayOf("movie"),
|
||||||
|
"x-conference/x-cooltalk" to arrayOf("ice"))
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue