# Copyright (C) 2014-2024 RhodeCode GmbH
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License, version 3
# (only), as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# This program is dual-licensed. If you wish to learn more about the
# RhodeCode Enterprise Edition, including its added features, Support services,
# and proprietary license terms, please see https://rhodecode.com/licenses/

DEFAULTS = {
    "encodings_map": {".gz": "gzip", ".Z": "compress", ".bz2": "bzip2", ".xz": "xz"},
    "suffix_map": {
        ".svgz": ".svg.gz",
        ".tgz": ".tar.gz",
        ".taz": ".tar.gz",
        ".tz": ".tar.gz",
        ".tbz2": ".tar.bz2",
        ".txz": ".tar.xz",
    },
}

TYPES_MAP = [
    {
        ".jpg": "image/jpg",
        ".mid": "audio/midi",
        ".midi": "audio/midi",
        ".pct": "image/pict",
        ".pic": "image/pict",
        ".pict": "image/pict",
        ".rtf": "application/rtf",
        ".xul": "text/xul",
    },
    {
        ".123": "application/vnd.lotus-1-2-3",
        ".3dml": "text/vnd.in3d.3dml",
        ".3g2": "video/3gpp2",
        ".3gp": "video/3gpp",
        ".7z": "application/x-7z-compressed",
        ".ASM": "text/x-nasm",
        ".C": "text/x-c++hdr",
        ".COB": "text/x-cobol",
        ".CPP": "text/x-c++hdr",
        ".CPY": "text/x-cobol",
        ".F": "text/x-fortran",
        ".F90": "text/x-fortran",
        ".H": "text/x-c++hdr",
        ".R": "text/S-plus",
        ".Rd": "text/x-r-doc",
        ".S": "text/S-plus",
        ".[1234567]": "application/x-troff",
        ".a": "application/octet-stream",
        ".aab": "application/x-authorware-bin",
        ".aac": "audio/x-aac",
        ".aam": "application/x-authorware-map",
        ".aas": "application/x-authorware-seg",
        ".abap": "text/x-abap",
        ".abw": "application/x-abiword",
        ".ac": "application/pkix-attr-cert",
        ".acc": "application/vnd.americandynamics.acc",
        ".ace": "application/x-ace-compressed",
        ".acu": "application/vnd.acucobol",
        ".acutc": "application/vnd.acucorp",
        ".ada": "text/x-ada",
        ".adb": "text/x-ada",
        ".adp": "audio/adpcm",
        ".ads": "text/x-ada",
        ".aep": "application/vnd.audiograph",
        ".afm": "application/x-font-type1",
        ".afp": "application/vnd.ibm.modcap",
        ".ahead": "application/vnd.ahead.space",
        ".ahk": "text/x-autohotkey",
        ".ahkl": "text/x-autohotkey",
        ".ai": "application/postscript",
        ".aif": "audio/x-aiff",
        ".aifc": "audio/x-aiff",
        ".aiff": "audio/x-aiff",
        ".air": "application/vnd.adobe.air-application-installer-package+zip",
        ".ait": "application/vnd.dvb.ait",
        ".aj": "text/x-aspectj",
        ".ami": "application/vnd.amiga.ami",
        ".apk": "application/vnd.android.package-archive",
        ".application": "application/x-ms-application",
        ".apr": "application/vnd.lotus-approach",
        ".as": "application/x-actionscript3",
        ".asc": "application/pgp-signature",
        ".asf": "video/x-ms-asf",
        ".asm": "text/x-asm",
        ".aso": "application/vnd.accpac.simply.aso",
        ".aspx": "application/x-aspx",
        ".asx": "video/x-ms-asf",
        ".asy": "text/x-asymptote",
        ".atc": "application/vnd.acucorp",
        ".atom": "application/atom+xml",
        ".atomcat": "application/atomcat+xml",
        ".atomsvc": "application/atomsvc+xml",
        ".atx": "application/vnd.antix.game-component",
        ".au": "audio/basic",
        ".au3": "text/x-autoit",
        ".aux": "text/x-tex",
        ".avi": "video/x-msvideo",
        ".aw": "application/applixware",
        ".awk": "application/x-awk",
        ".azf": "application/vnd.airzip.filesecure.azf",
        ".azs": "application/vnd.airzip.filesecure.azs",
        ".azw": "application/vnd.amazon.ebook",
        ".b": "application/x-brainfuck",
        ".bas": "text/x-vbnet",
        ".bash": "text/x-sh",
        ".bat": "application/x-msdownload",
        ".bcpio": "application/x-bcpio",
        ".bdf": "application/x-font-bdf",
        ".bdm": "application/vnd.syncml.dm+wbxml",
        ".bed": "application/vnd.realvnc.bed",
        ".befunge": "application/x-befunge",
        ".bf": "application/x-brainfuck",
        ".bh2": "application/vnd.fujitsu.oasysprs",
        ".bin": "application/octet-stream",
        ".bmi": "application/vnd.bmi",
        ".bmp": "image/bmp",
        ".bmx": "text/x-bmx",
        ".boo": "text/x-boo",
        ".book": "application/vnd.framemaker",
        ".box": "application/vnd.previewsystems.box",
        ".boz": "application/x-bzip2",
        ".bpk": "application/octet-stream",
        ".btif": "image/prs.btif",
        ".bz": "application/x-bzip",
        ".bz2": "application/x-bzip2",
        ".c": "text/x-c",
        ".c++": "text/x-c++hdr",
        ".c++-objdump": "text/x-cpp-objdump",
        ".c-objdump": "text/x-c-objdump",
        ".c11amc": "application/vnd.cluetrust.cartomobile-config",
        ".c11amz": "application/vnd.cluetrust.cartomobile-config-pkg",
        ".c4d": "application/vnd.clonk.c4group",
        ".c4f": "application/vnd.clonk.c4group",
        ".c4g": "application/vnd.clonk.c4group",
        ".c4p": "application/vnd.clonk.c4group",
        ".c4u": "application/vnd.clonk.c4group",
        ".cab": "application/vnd.ms-cab-compressed",
        ".car": "application/vnd.curl.car",
        ".cat": "application/vnd.ms-pki.seccat",
        ".cc": "text/x-c",
        ".cct": "application/x-director",
        ".ccxml": "application/ccxml+xml",
        ".cdbcmsg": "application/vnd.contact.cmsg",
        ".cdf": "application/x-netcdf",
        ".cdkey": "application/vnd.mediastation.cdkey",
        ".cdmia": "application/cdmi-capability",
        ".cdmic": "application/cdmi-container",
        ".cdmid": "application/cdmi-domain",
        ".cdmio": "application/cdmi-object",
        ".cdmiq": "application/cdmi-queue",
        ".cdx": "chemical/x-cdx",
        ".cdxml": "application/vnd.chemdraw+xml",
        ".cdy": "application/vnd.cinderella",
        ".cer": "application/pkix-cert",
        ".ceylon": "text/x-ceylon",
        ".cfc": "application/x-coldfusion",
        ".cfg": "text/x-ini",
        ".cfm": "application/x-coldfusion",
        ".cfml": "application/x-coldfusion",
        ".cgm": "image/cgm",
        ".chat": "application/x-chat",
        ".chm": "application/vnd.ms-htmlhelp",
        ".chrt": "application/vnd.kde.kchart",
        ".cif": "chemical/x-cif",
        ".cii": "application/vnd.anser-web-certificate-issue-initiation",
        ".cil": "application/vnd.ms-artgalry",
        ".cl": "text/x-common-lisp",
        ".cla": "application/vnd.claymore",
        ".class": "application/java-vm",
        ".clj": "text/x-clojure",
        ".clkk": "application/vnd.crick.clicker.keyboard",
        ".clkp": "application/vnd.crick.clicker.palette",
        ".clkt": "application/vnd.crick.clicker.template",
        ".clkw": "application/vnd.crick.clicker.wordbank",
        ".clkx": "application/vnd.crick.clicker",
        ".clp": "application/x-msclip",
        ".cls": "text/x-openedge",
        ".cmake": "text/x-cmake",
        ".cmc": "application/vnd.cosmocaller",
        ".cmd": "application/x-dos-batch",
        ".cmdf": "chemical/x-cmdf",
        ".cml": "chemical/x-cml",
        ".cmp": "application/vnd.yellowriver-custom-menu",
        ".cmx": "image/x-cmx",
        ".cob": "text/x-cobol",
        ".cod": "application/vnd.rim.cod",
        ".coffee": "text/coffeescript",
        ".com": "application/x-msdownload",
        ".conf": "text/plain",
        ".cp": "text/x-c++hdr",
        ".cpio": "application/x-cpio",
        ".cpp": "text/x-c",
        ".cpp-objdump": "text/x-cpp-objdump",
        ".cpt": "application/mac-compactpro",
        ".cpy": "text/x-cobol",
        ".crd": "application/x-mscardfile",
        ".crl": "application/pkix-crl",
        ".croc": "text/x-crocsrc",
        ".crt": "application/x-x509-ca-cert",
        ".cryptonote": "application/vnd.rig.cryptonote",
        ".cs": "text/x-csharp",
        ".csh": "application/x-csh",
        ".csml": "chemical/x-csml",
        ".csp": "application/vnd.commonspace",
        ".css": "text/css",
        ".cst": "application/x-director",
        ".csv": "text/csv",
        ".cu": "application/cu-seeme",
        ".cuh": "text/x-cuda",
        ".curl": "text/vnd.curl",
        ".cww": "application/prs.cww",
        ".cxt": "application/x-director",
        ".cxx": "text/x-c",
        ".cxx-objdump": "text/x-cpp-objdump",
        ".d": "text/x-dsrc",
        ".d-objdump": "text/x-d-objdump",
        ".dae": "model/vnd.collada+xml",
        ".daf": "application/vnd.mobius.daf",
        ".dart": "text/x-dart",
        ".dataless": "application/vnd.fdsn.seed",
        ".davmount": "application/davmount+xml",
        ".dcr": "application/x-director",
        ".dcurl": "text/vnd.curl.dcurl",
        ".dd2": "application/vnd.oma.dd2+xml",
        ".ddd": "application/vnd.fujixerox.ddd",
        ".deb": "application/x-debian-package",
        ".def": "text/plain",
        ".deploy": "application/octet-stream",
        ".der": "application/x-x509-ca-cert",
        ".dfac": "application/vnd.dreamfactory",
        ".dg": "text/x-dg",
        ".di": "text/x-dsrc",
        ".dic": "text/x-c",
        ".dif": "video/x-dv",
        ".diff": "text/x-diff",
        ".dir": "application/x-director",
        ".dis": "application/vnd.mobius.dis",
        ".dist": "application/octet-stream",
        ".distz": "application/octet-stream",
        ".djv": "image/vnd.djvu",
        ".djvu": "image/vnd.djvu",
        ".dll": "application/x-msdownload",
        ".dmg": "application/octet-stream",
        ".dms": "application/octet-stream",
        ".dna": "application/vnd.dna",
        ".doc": "application/msword",
        ".docm": "application/vnd.ms-word.document.macroenabled.12",
        ".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
        ".dot": "application/msword",
        ".dotm": "application/vnd.ms-word.template.macroenabled.12",
        ".dotx": "application/vnd.openxmlformats-officedocument.wordprocessingml.template",
        ".dp": "application/vnd.osgi.dp",
        ".dpg": "application/vnd.dpgraph",
        ".dra": "audio/vnd.dra",
        ".dsc": "text/prs.lines.tag",
        ".dssc": "application/dssc+der",
        ".dtb": "application/x-dtbook+xml",
        ".dtd": "application/xml-dtd",
        ".dts": "audio/vnd.dts",
        ".dtshd": "audio/vnd.dts.hd",
        ".duby": "text/x-ruby",
        ".duel": "text/x-duel",
        ".dump": "application/octet-stream",
        ".dv": "video/x-dv",
        ".dvi": "application/x-dvi",
        ".dwf": "model/vnd.dwf",
        ".dwg": "image/vnd.dwg",
        ".dxf": "image/vnd.dxf",
        ".dxp": "application/vnd.spotfire.dxp",
        ".dxr": "application/x-director",
        ".dyl": "text/x-dylan",
        ".dylan": "text/x-dylan",
        ".dylan-console": "text/x-dylan-console",
        ".ebuild": "text/x-sh",
        ".ec": "text/x-echdr",
        ".ecelp4800": "audio/vnd.nuera.ecelp4800",
        ".ecelp7470": "audio/vnd.nuera.ecelp7470",
        ".ecelp9600": "audio/vnd.nuera.ecelp9600",
        ".ecl": "text/x-ecl",
        ".eclass": "text/x-sh",
        ".ecma": "application/ecmascript",
        ".edm": "application/vnd.novadigm.edm",
        ".edx": "application/vnd.novadigm.edx",
        ".efif": "application/vnd.picsel",
        ".eh": "text/x-echdr",
        ".ei6": "application/vnd.pg.osasli",
        ".el": "text/x-common-lisp",
        ".elc": "application/octet-stream",
        ".eml": "message/rfc822",
        ".emma": "application/emma+xml",
        ".eol": "audio/vnd.digital-winds",
        ".eot": "application/vnd.ms-fontobject",
        ".eps": "application/postscript",
        ".epub": "application/epub+zip",
        ".erl": "text/x-erlang",
        ".erl-sh": "text/x-erl-shellsession",
        ".es": "text/x-erlang",
        ".es3": "application/vnd.eszigno3+xml",
        ".escript": "text/x-erlang",
        ".esf": "application/vnd.epson.esf",
        ".et3": "application/vnd.eszigno3+xml",
        ".etx": "text/x-setext",
        ".evoque": "application/x-evoque",
        ".ex": "text/x-elixir",
        ".exe": "application/x-msdownload",
        ".exi": "application/exi",
        ".exs": "text/x-elixir",
        ".ext": "application/vnd.novadigm.ext",
        ".ez": "application/andrew-inset",
        ".ez2": "application/vnd.ezpix-album",
        ".ez3": "application/vnd.ezpix-package",
        ".f": "text/x-fortran",
        ".f4v": "video/x-f4v",
        ".f77": "text/x-fortran",
        ".f90": "text/x-fortran",
        ".factor": "text/x-factor",
        ".fan": "application/x-fantom",
        ".fancypack": "text/x-fancysrc",
        ".fbs": "image/vnd.fastbidsheet",
        ".fcs": "application/vnd.isac.fcs",
        ".fdf": "application/vnd.fdf",
        ".fe_launch": "application/vnd.denovo.fcselayout-link",
        ".feature": "text/x-gherkin",
        ".fg5": "application/vnd.fujitsu.oasysgp",
        ".fgd": "application/x-director",
        ".fh": "image/x-freehand",
        ".fh4": "image/x-freehand",
        ".fh5": "image/x-freehand",
        ".fh7": "image/x-freehand",
        ".fhc": "image/x-freehand",
        ".fig": "application/x-xfig",
        ".fli": "video/x-fli",
        ".flo": "application/vnd.micrografx.flo",
        ".flv": "video/x-flv",
        ".flw": "application/vnd.kde.kivio",
        ".flx": "text/vnd.fmi.flexstor",
        ".flxh": "text/x-felix",
        ".fly": "text/vnd.fly",
        ".fm": "application/vnd.framemaker",
        ".fnc": "application/vnd.frogans.fnc",
        ".for": "text/x-fortran",
        ".fpx": "image/vnd.fpx",
        ".frag": "text/x-glslsrc",
        ".frame": "application/vnd.framemaker",
        ".fs": "text/x-fsharp",
        ".fsc": "application/vnd.fsc.weblaunch",
        ".fsi": "text/x-fsharp",
        ".fst": "image/vnd.fst",
        ".ftc": "application/vnd.fluxtime.clip",
        ".fti": "application/vnd.anser-web-funds-transfer-initiation",
        ".fun": "text/x-standardml",
        ".fvt": "video/vnd.fvt",
        ".fxp": "application/vnd.adobe.fxp",
        ".fxpl": "application/vnd.adobe.fxp",
        ".fy": "text/x-fancysrc",
        ".fzs": "application/vnd.fuzzysheet",
        ".g2w": "application/vnd.geoplan",
        ".g3": "image/g3fax",
        ".g3w": "application/vnd.geospace",
        ".gac": "application/vnd.groove-account",
        ".gdc": "text/x-gooddata-cl",
        ".gdl": "model/vnd.gdl",
        ".gemspec": "text/x-ruby",
        ".geo": "application/vnd.dynageo",
        ".gex": "application/vnd.geometry-explorer",
        ".ggb": "application/vnd.geogebra.file",
        ".ggt": "application/vnd.geogebra.tool",
        ".ghf": "application/vnd.groove-help",
        ".gif": "image/gif",
        ".gim": "application/vnd.groove-identity-message",
        ".gmx": "application/vnd.gmx",
        ".gnumeric": "application/x-gnumeric",
        ".go": "text/x-gosrc",
        ".gph": "application/vnd.flographit",
        ".gqf": "application/vnd.grafeq",
        ".gqs": "application/vnd.grafeq",
        ".gram": "application/srgs",
        ".gre": "application/vnd.geometry-explorer",
        ".groovy": "text/x-groovy",
        ".grv": "application/vnd.groove-injector",
        ".grxml": "application/srgs+xml",
        ".gs": "text/x-gosu",
        ".gsf": "application/x-font-ghostscript",
        ".gsp": "text/x-gosu",
        ".gst": "text/x-gosu-template",
        ".gsx": "text/x-gosu",
        ".gtar": "application/x-gtar",
        ".gtm": "application/vnd.groove-tool-message",
        ".gtw": "model/vnd.gtw",
        ".gv": "text/vnd.graphviz",
        ".gxt": "application/vnd.geonext",
        ".h": "text/x-c",
        ".h++": "text/x-c++hdr",
        ".h261": "video/h261",
        ".h263": "video/h263",
        ".h264": "video/h264",
        ".hal": "application/vnd.hal+xml",
        ".haml": "text/x-haml",
        ".hbci": "application/vnd.hbci",
        ".hdf": "application/x-hdf",
        ".hdp": "text/x-dylan-lid",
        ".hh": "text/x-c",
        ".hlp": "application/winhlp",
        ".hpgl": "application/vnd.hp-hpgl",
        ".hpid": "application/vnd.hp-hpid",
        ".hpp": "text/x-c++hdr",
        ".hps": "application/vnd.hp-hps",
        ".hqx": "application/mac-binhex40",
        ".hrl": "text/x-erlang",
        ".hs": "text/x-haskell",
        ".htke": "application/vnd.kenameaapp",
        ".htm": "text/html",
        ".html": "text/html",
        ".hvd": "application/vnd.yamaha.hv-dic",
        ".hvp": "application/vnd.yamaha.hv-voice",
        ".hvs": "application/vnd.yamaha.hv-script",
        ".hx": "text/haxe",
        ".hxx": "text/x-c++hdr",
        ".hy": "text/x-hybris",
        ".hyb": "text/x-hybris",
        ".i2g": "application/vnd.intergeo",
        ".icc": "application/vnd.iccprofile",
        ".ice": "x-conference/x-cooltalk",
        ".icm": "application/vnd.iccprofile",
        ".ico": "image/x-icon",
        ".ics": "text/calendar",
        ".idc": "text/x-chdr",
        ".ief": "image/ief",
        ".ifb": "text/calendar",
        ".ifm": "application/vnd.shana.informed.formdata",
        ".iges": "model/iges",
        ".igl": "application/vnd.igloader",
        ".igm": "application/vnd.insors.igm",
        ".igs": "model/iges",
        ".igx": "application/vnd.micrografx.igx",
        ".iif": "application/vnd.shana.informed.interchange",
        ".ik": "text/x-iokesrc",
        ".imp": "application/vnd.accpac.simply.imp",
        ".ims": "application/vnd.ms-ims",
        ".in": "text/plain",
        ".inc": "text/x-povray",
        ".ini": "text/x-ini",
        ".intr": "text/x-dylan",
        ".io": "text/x-iosrc",
        ".ipfix": "application/ipfix",
        ".ipk": "application/vnd.shana.informed.package",
        ".irm": "application/vnd.ibm.rights-management",
        ".irp": "application/vnd.irepository.package+xml",
        ".iso": "application/octet-stream",
        ".itp": "application/vnd.shana.informed.formtemplate",
        ".ivp": "application/vnd.immervision-ivp",
        ".ivu": "application/vnd.immervision-ivu",
        ".j": "text/x-objective-j",
        ".jad": "text/vnd.sun.j2me.app-descriptor",
        ".jade": "text/x-jade",
        ".jam": "application/vnd.jam",
        ".jar": "application/java-archive",
        ".java": "text/x-java-source",
        ".jbst": "text/x-duel",
        ".jisp": "application/vnd.jisp",
        ".jl": "text/x-julia",
        ".jlt": "application/vnd.hp-jlyt",
        ".jnlp": "application/x-java-jnlp-file",
        ".joda": "application/vnd.joost.joda-archive",
        ".jp2": "image/jp2",
        ".jpe": "image/jpeg",
        ".jpeg": "image/jpeg",
        ".jpg": "image/jpeg",
        ".jpgm": "video/jpm",
        ".jpgv": "video/jpeg",
        ".jpm": "video/jpm",
        ".js": "application/javascript",
        ".json": "application/json",
        ".jsp": "application/x-jsp",
        ".kar": "audio/midi",
        ".karbon": "application/vnd.kde.karbon",
        ".kfo": "application/vnd.kde.kformula",
        ".kia": "application/vnd.kidspiration",
        ".kid": "application/x-genshi",
        ".kk": "text/x-koka",
        ".kki": "text/x-koka",
        ".kml": "application/vnd.google-earth.kml+xml",
        ".kmz": "application/vnd.google-earth.kmz",
        ".kne": "application/vnd.kinar",
        ".knp": "application/vnd.kinar",
        ".kon": "application/vnd.kde.kontour",
        ".kpr": "application/vnd.kde.kpresenter",
        ".kpt": "application/vnd.kde.kpresenter",
        ".ksh": "text/plain",
        ".ksp": "application/vnd.kde.kspread",
        ".kt": "text/x-kotlin",
        ".ktr": "application/vnd.kahootz",
        ".ktx": "image/ktx",
        ".ktz": "application/vnd.kahootz",
        ".kwd": "application/vnd.kde.kword",
        ".kwt": "application/vnd.kde.kword",
        ".lasso": "text/x-lasso",
        ".lasso[89]": "text/x-lasso",
        ".lasxml": "application/vnd.las.las+xml",
        ".latex": "application/x-latex",
        ".lbd": "application/vnd.llamagraphics.life-balance.desktop",
        ".lbe": "application/vnd.llamagraphics.life-balance.exchange+xml",
        ".les": "application/vnd.hhe.lesson-player",
        ".less": "text/x-less",
        ".lgt": "text/x-logtalk",
        ".lha": "application/octet-stream",
        ".lhs": "text/x-literate-haskell",
        ".lid": "text/x-dylan-lid",
        ".link66": "application/vnd.route66.link66+xml",
        ".lisp": "text/x-common-lisp",
        ".list": "text/plain",
        ".list3820": "application/vnd.ibm.modcap",
        ".listafp": "application/vnd.ibm.modcap",
        ".ll": "text/x-llvm",
        ".log": "text/plain",
        ".lostxml": "application/lost+xml",
        ".lrf": "application/octet-stream",
        ".lrm": "application/vnd.ms-lrm",
        ".ls": "text/x-livescript",
        ".lsp": "text/x-newlisp",
        ".ltf": "application/vnd.frogans.ltf",
        ".ltx": "text/x-latex",
        ".lua": "text/x-lua",
        ".lvp": "audio/vnd.lucent.voice",
        ".lwp": "application/vnd.lotus-wordpro",
        ".lzh": "application/octet-stream",
        ".m": "text/octave",
        ".m13": "application/x-msmediaview",
        ".m14": "application/x-msmediaview",
        ".m1v": "video/mpeg",
        ".m21": "application/mp21",
        ".m2a": "audio/mpeg",
        ".m2v": "video/mpeg",
        ".m3a": "audio/mpeg",
        ".m3u": "audio/x-mpegurl",
        ".m3u8": "application/x-mpegurl",
        ".m4a": "audio/mp4a-latm",
        ".m4p": "audio/mp4a-latm",
        ".m4u": "video/vnd.mpegurl",
        ".m4v": "video/x-m4v",
        ".ma": "application/mathematica",
        ".mac": "image/x-macpaint",
        ".mads": "application/mads+xml",
        ".mag": "application/vnd.ecowin.chart",
        ".mak": "text/x-makefile",
        ".maker": "application/vnd.framemaker",
        ".mako": "application/x-mako",
        ".man": "text/troff",
        ".manifest": "text/cache-manifest",
        ".maql": "text/x-gooddata-maql",
        ".markdown": "text/x-markdown",
        ".mathml": "application/mathml+xml",
        ".mb": "application/mathematica",
        ".mbk": "application/vnd.mobius.mbk",
        ".mbox": "application/mbox",
        ".mc": "application/x-mason",
        ".mc1": "application/vnd.medcalcdata",
        ".mcd": "application/vnd.mcd",
        ".mcurl": "text/vnd.curl.mcurl",
        ".md": "text/x-minidsrc",
        ".mdb": "application/x-msaccess",
        ".mdi": "image/vnd.ms-modi",
        ".mdown": "text/x-markdown",
        ".me": "text/troff",
        ".mesh": "model/mesh",
        ".meta4": "application/metalink4+xml",
        ".mets": "application/mets+xml",
        ".mfm": "application/vnd.mfmp",
        ".mgp": "application/vnd.osgeo.mapguide.package",
        ".mgz": "application/vnd.proteus.magazine",
        ".mht": "message/rfc822",
        ".mhtml": "message/rfc822",
        ".mi": "application/x-mason",
        ".mid": "audio/midi",
        ".midi": "audio/midi",
        ".mif": "application/vnd.mif",
        ".mime": "message/rfc822",
        ".mj2": "video/mj2",
        ".mjp2": "video/mj2",
        ".ml": "text/x-ocaml",
        ".mli": "text/x-ocaml",
        ".mll": "text/x-ocaml",
        ".mlp": "application/vnd.dolby.mlp",
        ".mly": "text/x-ocaml",
        ".mm": "text/x-objective-c++",
        ".mmd": "application/vnd.chipnuts.karaoke-mmd",
        ".mmf": "application/vnd.smaf",
        ".mmr": "image/vnd.fujixerox.edmics-mmr",
        ".mny": "application/x-msmoney",
        ".mo": "text/x-modelica",
        ".mobi": "application/x-mobipocket-ebook",
        ".mobipocket-ebook": "application/octet-stream",
        ".mod": "text/x-modula2",
        ".mods": "application/mods+xml",
        ".monkey": "text/x-monkey",
        ".moo": "text/x-moocode",
        ".moon": "text/x-moonscript",
        ".mov": "video/quicktime",
        ".movie": "video/x-sgi-movie",
        ".mp2": "audio/mpeg",
        ".mp21": "application/mp21",
        ".mp2a": "audio/mpeg",
        ".mp3": "audio/mpeg",
        ".mp4": "video/mp4",
        ".mp4a": "audio/mp4",
        ".mp4s": "application/mp4",
        ".mp4v": "video/mp4",
        ".mpa": "video/mpeg",
        ".mpc": "application/vnd.mophun.certificate",
        ".mpe": "video/mpeg",
        ".mpeg": "video/mpeg",
        ".mpg": "video/mpeg",
        ".mpg4": "video/mp4",
        ".mpga": "audio/mpeg",
        ".mpkg": "application/vnd.apple.installer+xml",
        ".mpm": "application/vnd.blueice.multipass",
        ".mpn": "application/vnd.mophun.application",
        ".mpp": "application/vnd.ms-project",
        ".mpt": "application/vnd.ms-project",
        ".mpy": "application/vnd.ibm.minipay",
        ".mqy": "application/vnd.mobius.mqy",
        ".mrc": "application/marc",
        ".mrcx": "application/marcxml+xml",
        ".ms": "text/troff",
        ".mscml": "application/mediaservercontrol+xml",
        ".mseed": "application/vnd.fdsn.mseed",
        ".mseq": "application/vnd.mseq",
        ".msf": "application/vnd.epson.msf",
        ".msh": "model/mesh",
        ".msi": "application/x-msdownload",
        ".msl": "application/vnd.mobius.msl",
        ".msty": "application/vnd.muvee.style",
        ".mts": "model/vnd.mts",
        ".mus": "application/vnd.musician",
        ".musicxml": "application/vnd.recordare.musicxml+xml",
        ".mvb": "application/x-msmediaview",
        ".mwf": "application/vnd.mfer",
        ".mxf": "application/mxf",
        ".mxl": "application/vnd.recordare.musicxml",
        ".mxml": "application/xv+xml",
        ".mxs": "application/vnd.triscape.mxs",
        ".mxu": "video/vnd.mpegurl",
        ".myt": "application/x-myghty",
        ".n": "text/x-nemerle",
        ".n-gage": "application/vnd.nokia.n-gage.symbian.install",
        ".n3": "text/n3",
        ".nb": "application/mathematica",
        ".nbp": "application/vnd.wolfram.player",
        ".nc": "application/x-netcdf",
        ".ncx": "application/x-dtbncx+xml",
        ".ngdat": "application/vnd.nokia.n-gage.data",
        ".nim": "text/x-nimrod",
        ".nimrod": "text/x-nimrod",
        ".nl": "text/x-newlisp",
        ".nlu": "application/vnd.neurolanguage.nlu",
        ".nml": "application/vnd.enliven",
        ".nnd": "application/vnd.noblenet-directory",
        ".nns": "application/vnd.noblenet-sealer",
        ".nnw": "application/vnd.noblenet-web",
        ".npx": "image/vnd.net-fpx",
        ".ns2": "text/x-newspeak",
        ".nsf": "application/vnd.lotus-notes",
        ".nsh": "text/x-nsis",
        ".nsi": "text/x-nsis",
        ".nws": "message/rfc822",
        ".o": "application/octet-stream",
        ".oa2": "application/vnd.fujitsu.oasys2",
        ".oa3": "application/vnd.fujitsu.oasys3",
        ".oas": "application/vnd.fujitsu.oasys",
        ".obd": "application/x-msbinder",
        ".obj": "application/octet-stream",
        ".objdump": "text/x-objdump",
        ".oda": "application/oda",
        ".odb": "application/vnd.oasis.opendocument.database",
        ".odc": "application/vnd.oasis.opendocument.chart",
        ".odf": "application/vnd.oasis.opendocument.formula",
        ".odft": "application/vnd.oasis.opendocument.formula-template",
        ".odg": "application/vnd.oasis.opendocument.graphics",
        ".odi": "application/vnd.oasis.opendocument.image",
        ".odm": "application/vnd.oasis.opendocument.text-master",
        ".odp": "application/vnd.oasis.opendocument.presentation",
        ".ods": "application/vnd.oasis.opendocument.spreadsheet",
        ".odt": "application/vnd.oasis.opendocument.text",
        ".oga": "audio/ogg",
        ".ogg": "audio/ogg",
        ".ogv": "video/ogg",
        ".ogx": "application/ogg",
        ".onepkg": "application/onenote",
        ".onetmp": "application/onenote",
        ".onetoc": "application/onenote",
        ".onetoc2": "application/onenote",
        ".ooc": "text/x-ooc",
        ".opa": "text/x-opa",
        ".opf": "application/oebps-package+xml",
        ".oprc": "application/vnd.palm",
        ".org": "application/vnd.lotus-organizer",
        ".osf": "application/vnd.yamaha.openscoreformat",
        ".osfpvg": "application/vnd.yamaha.openscoreformat.osfpvg+xml",
        ".otc": "application/vnd.oasis.opendocument.chart-template",
        ".otf": "application/x-font-otf",
        ".otg": "application/vnd.oasis.opendocument.graphics-template",
        ".oth": "application/vnd.oasis.opendocument.text-web",
        ".oti": "application/vnd.oasis.opendocument.image-template",
        ".otp": "application/vnd.oasis.opendocument.presentation-template",
        ".ots": "application/vnd.oasis.opendocument.spreadsheet-template",
        ".ott": "application/vnd.oasis.opendocument.text-template",
        ".oxt": "application/vnd.openofficeorg.extension",
        ".p": "text/x-pascal",
        ".p10": "application/pkcs10",
        ".p12": "application/x-pkcs12",
        ".p7b": "application/x-pkcs7-certificates",
        ".p7c": "application/pkcs7-mime",
        ".p7m": "application/pkcs7-mime",
        ".p7r": "application/x-pkcs7-certreqresp",
        ".p7s": "application/pkcs7-signature",
        ".p8": "application/pkcs8",
        ".pas": "text/x-pascal",
        ".patch": "text/x-diff",
        ".paw": "application/vnd.pawaafile",
        ".pbd": "application/vnd.powerbuilder6",
        ".pbm": "image/x-portable-bitmap",
        ".pcf": "application/x-font-pcf",
        ".pcl": "application/vnd.hp-pcl",
        ".pclxl": "application/vnd.hp-pclxl",
        ".pct": "image/x-pict",
        ".pcurl": "application/vnd.curl.pcurl",
        ".pcx": "image/x-pcx",
        ".pdb": "application/vnd.palm",
        ".pdf": "application/pdf",
        ".pfa": "application/x-font-type1",
        ".pfb": "application/x-font-type1",
        ".pfm": "application/x-font-type1",
        ".pfr": "application/font-tdpfr",
        ".pfx": "application/x-pkcs12",
        ".pgm": "image/x-portable-graymap",
        ".pgn": "application/x-chess-pgn",
        ".pgp": "application/pgp-encrypted",
        ".php": "text/x-php",
        ".php[345]": "text/x-php",
        ".phtml": "application/x-php",
        ".pic": "image/x-pict",
        ".pict": "image/pict",
        ".pkg": "application/octet-stream",
        ".pki": "application/pkixcmp",
        ".pkipath": "application/pkix-pkipath",
        ".pl": "text/plain",
        ".plb": "application/vnd.3gpp.pic-bw-large",
        ".plc": "application/vnd.mobius.plc",
        ".plf": "application/vnd.pocketlearn",
        ".plot": "text/x-gnuplot",
        ".pls": "application/pls+xml",
        ".plt": "text/x-gnuplot",
        ".pm": "text/x-perl",
        ".pml": "application/vnd.ctc-posml",
        ".png": "image/png",
        ".pnm": "image/x-portable-anymap",
        ".pnt": "image/x-macpaint",
        ".pntg": "image/x-macpaint",
        ".po": "application/x-gettext",
        ".portpkg": "application/vnd.macports.portpkg",
        ".pot": "application/vnd.ms-powerpoint",
        ".potm": "application/vnd.ms-powerpoint.template.macroenabled.12",
        ".potx": "application/vnd.openxmlformats-officedocument.presentationml.template",
        ".pov": "text/x-povray",
        ".ppa": "application/vnd.ms-powerpoint",
        ".ppam": "application/vnd.ms-powerpoint.addin.macroenabled.12",
        ".ppd": "application/vnd.cups-ppd",
        ".ppm": "image/x-portable-pixmap",
        ".pps": "application/vnd.ms-powerpoint",
        ".ppsm": "application/vnd.ms-powerpoint.slideshow.macroenabled.12",
        ".ppsx": "application/vnd.openxmlformats-officedocument.presentationml.slideshow",
        ".ppt": "application/vnd.ms-powerpoint",
        ".pptm": "application/vnd.ms-powerpoint.presentation.macroenabled.12",
        ".pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
        ".pqa": "application/vnd.palm",
        ".prc": "application/x-mobipocket-ebook",
        ".pre": "application/vnd.lotus-freelance",
        ".prf": "application/pics-rules",
        ".pro": "text/idl",
        ".prolog": "text/x-prolog",
        ".properties": "text/x-properties",
        ".ps": "application/postscript",
        ".ps1": "text/x-powershell",
        ".psb": "application/vnd.3gpp.pic-bw-small",
        ".psd": "image/vnd.adobe.photoshop",
        ".psf": "application/x-font-linux-psf",
        ".pskcxml": "application/pskc+xml",
        ".ptid": "application/vnd.pvi.ptid1",
        ".pub": "application/x-mspublisher",
        ".pvb": "application/vnd.3gpp.pic-bw-var",
        ".pwn": "application/vnd.3m.post-it-notes",
        ".pwz": "application/vnd.ms-powerpoint",
        ".pxd": "text/x-cython",
        ".pxi": "text/x-cython",
        ".py": "text/x-python",
        ".py3tb": "text/x-python3-traceback",
        ".pya": "audio/vnd.ms-playready.media.pya",
        ".pyc": "application/x-python-code",
        ".pyo": "application/x-python-code",
        ".pypylog": "application/x-pypylog",
        ".pytb": "text/x-python-traceback",
        ".pyv": "video/vnd.ms-playready.media.pyv",
        ".pyw": "text/x-python",
        ".pyx": "text/x-cython",
        ".qam": "application/vnd.epson.quickanime",
        ".qbo": "application/vnd.intu.qbo",
        ".qfx": "application/vnd.intu.qfx",
        ".qml": "application/x-qml",
        ".qps": "application/vnd.publishare-delta-tree",
        ".qt": "video/quicktime",
        ".qti": "image/x-quicktime",
        ".qtif": "image/x-quicktime",
        ".qwd": "application/vnd.quark.quarkxpress",
        ".qwt": "application/vnd.quark.quarkxpress",
        ".qxb": "application/vnd.quark.quarkxpress",
        ".qxd": "application/vnd.quark.quarkxpress",
        ".qxl": "application/vnd.quark.quarkxpress",
        ".qxt": "application/vnd.quark.quarkxpress",
        ".r": "text/x-rebol",
        ".r3": "text/x-rebol",
        ".ra": "audio/x-pn-realaudio",
        ".rake": "text/x-ruby",
        ".ram": "audio/x-pn-realaudio",
        ".rar": "application/x-rar-compressed",
        ".ras": "image/x-cmu-raster",
        ".rb": "text/x-ruby",
        ".rbw": "text/x-ruby",
        ".rbx": "text/x-ruby",
        ".rc": "text/x-stsrc",
        ".rcprofile": "application/vnd.ipunplugged.rcprofile",
        ".rdf": "application/rdf+xml",
        ".rdz": "application/vnd.data-vision.rdz",
        ".reg": "text/x-windows-registry",
        ".rep": "application/vnd.businessobjects",
        ".res": "application/x-dtbresource+xml",
        ".rest": "text/x-rst",
        ".rgb": "image/x-rgb",
        ".rhtml": "text/html+ruby",
        ".rif": "application/reginfo+xml",
        ".rip": "audio/vnd.rip",
        ".rkt": "text/x-racket",
        ".rktl": "text/x-racket",
        ".rl": "application/resource-lists+xml",
        ".rlc": "image/vnd.fujixerox.edmics-rlc",
        ".rld": "application/resource-lists-diff+xml",
        ".rm": "application/vnd.rn-realmedia",
        ".rmi": "audio/midi",
        ".rmp": "audio/x-pn-realaudio-plugin",
        ".rms": "application/vnd.jcp.javame.midlet-rms",
        ".rnc": "application/relax-ng-compact-syntax",
        ".robot": "text/x-robotframework",
        ".roff": "text/troff",
        ".rp9": "application/vnd.cloanto.rp9",
        ".rpss": "application/vnd.nokia.radio-presets",
        ".rpst": "application/vnd.nokia.radio-preset",
        ".rq": "application/sparql-query",
        ".rs": "application/rls-services+xml",
        ".rsd": "application/rsd+xml",
        ".rss": "application/rss+xml",
        ".rst": "text/x-rst",
        ".rtf": "application/rtf",
        ".rtx": "text/richtext",
        ".s": "text/x-asm",
        ".saf": "application/vnd.yamaha.smaf-audio",
        ".sage": "text/x-python",
        ".sass": "text/x-sass",
        ".sbml": "application/sbml+xml",
        ".sc": "application/vnd.ibm.secure-container",
        ".scala": "text/x-scala",
        ".scaml": "text/x-scaml",
        ".scd": "application/x-msschedule",
        ".sce": "text/scilab",
        ".sci": "text/scilab",
        ".scm": "application/vnd.lotus-screencam",
        ".scq": "application/scvp-cv-request",
        ".scs": "application/scvp-cv-response",
        ".scss": "text/x-scss",
        ".scurl": "text/vnd.curl.scurl",
        ".sda": "application/vnd.stardivision.draw",
        ".sdc": "application/vnd.stardivision.calc",
        ".sdd": "application/vnd.stardivision.impress",
        ".sdkd": "application/vnd.solent.sdkm+xml",
        ".sdkm": "application/vnd.solent.sdkm+xml",
        ".sdp": "application/sdp",
        ".sdw": "application/vnd.stardivision.writer",
        ".see": "application/vnd.seemail",
        ".seed": "application/vnd.fdsn.seed",
        ".sema": "application/vnd.sema",
        ".semd": "application/vnd.semd",
        ".semf": "application/vnd.semf",
        ".ser": "application/java-serialized-object",
        ".setpay": "application/set-payment-initiation",
        ".setreg": "application/set-registration-initiation",
        ".sfd-hdstx": "application/vnd.hydrostatix.sof-data",
        ".sfs": "application/vnd.spotfire.sfs",
        ".sgl": "application/vnd.stardivision.writer-global",
        ".sgm": "text/sgml",
        ".sgml": "text/sgml",
        ".sh": "application/x-sh",
        ".sh-session": "application/x-shell-session",
        ".shar": "application/x-shar",
        ".shell-session": "application/x-sh-session",
        ".shf": "application/shf+xml",
        ".sig": "application/pgp-signature",
        ".silo": "model/mesh",
        ".sis": "application/vnd.symbian.install",
        ".sisx": "application/vnd.symbian.install",
        ".sit": "application/x-stuffit",
        ".sitx": "application/x-stuffitx",
        ".skd": "application/vnd.koan",
        ".skm": "application/vnd.koan",
        ".skp": "application/vnd.koan",
        ".skt": "application/vnd.koan",
        ".sldm": "application/vnd.ms-powerpoint.slide.macroenabled.12",
        ".sldx": "application/vnd.openxmlformats-officedocument.presentationml.slide",
        ".slt": "application/vnd.epson.salt",
        ".sm": "application/vnd.stepmania.stepchart",
        ".smali": "text/smali",
        ".smf": "application/vnd.stardivision.math",
        ".smi": "application/smil+xml",
        ".smil": "application/smil+xml",
        ".sml": "text/x-standardml",
        ".snd": "audio/basic",
        ".snf": "application/x-font-snf",
        ".snobol": "text/x-snobol",
        ".so": "application/octet-stream",
        ".sp": "text/x-sourcepawn",
        ".spc": "application/x-pkcs7-certificates",
        ".spec": "text/x-rpm-spec",
        ".spf": "application/vnd.yamaha.smaf-phrase",
        ".spl": "application/x-futuresplash",
        ".spot": "text/vnd.in3d.spot",
        ".spp": "application/scvp-vp-response",
        ".spq": "application/scvp-vp-request",
        ".spt": "application/x-cheetah",
        ".spx": "audio/ogg",
        ".sql": "text/x-sql",
        ".sqlite3-console": "text/x-sqlite3-console",
        ".src": "application/x-wais-source",
        ".sru": "application/sru+xml",
        ".srx": "application/sparql-results+xml",
        ".ss": "text/x-scheme",
        ".sse": "application/vnd.kodak-descriptor",
        ".ssf": "application/vnd.epson.ssf",
        ".ssml": "application/ssml+xml",
        ".ssp": "application/x-ssp",
        ".st": "application/vnd.sailingtracker.track",
        ".stc": "application/vnd.sun.xml.calc.template",
        ".std": "application/vnd.sun.xml.draw.template",
        ".stf": "application/vnd.wt.stf",
        ".sti": "application/vnd.sun.xml.impress.template",
        ".stk": "application/hyperstudio",
        ".stl": "application/vnd.ms-pki.stl",
        ".str": "application/vnd.pg.format",
        ".stw": "application/vnd.sun.xml.writer.template",
        ".sub": "image/vnd.dvb.subtitle",
        ".sus": "application/vnd.sus-calendar",
        ".susp": "application/vnd.sus-calendar",
        ".sv": "text/x-systemverilog",
        ".sv4cpio": "application/x-sv4cpio",
        ".sv4crc": "application/x-sv4crc",
        ".svc": "application/vnd.dvb.service",
        ".svd": "application/vnd.svd",
        ".svg": "image/svg+xml",
        ".svgz": "image/svg+xml",
        ".svh": "text/x-systemverilog",
        ".swa": "application/x-director",
        ".swf": "application/x-shockwave-flash",
        ".swi": "application/vnd.aristanetworks.swi",
        ".sxc": "application/vnd.sun.xml.calc",
        ".sxd": "application/vnd.sun.xml.draw",
        ".sxg": "application/vnd.sun.xml.writer.global",
        ".sxi": "application/vnd.sun.xml.impress",
        ".sxm": "application/vnd.sun.xml.math",
        ".sxw": "application/vnd.sun.xml.writer",
        ".t": "text/troff",
        ".tac": "text/x-python",
        ".tao": "application/vnd.tao.intent-module-archive",
        ".tar": "application/x-tar",
        ".tcap": "application/vnd.3gpp2.tcap",
        ".tcl": "application/x-tcl",
        ".tcsh": "application/x-csh",
        ".tea": "text/x-tea",
        ".teacher": "application/vnd.smart.teacher",
        ".tei": "application/tei+xml",
        ".teicorpus": "application/tei+xml",
        ".tex": "application/x-tex",
        ".texi": "application/x-texinfo",
        ".texinfo": "application/x-texinfo",
        ".text": "text/plain",
        ".tfi": "application/thraud+xml",
        ".tfm": "application/x-tex-tfm",
        ".thmx": "application/vnd.ms-officetheme",
        ".tif": "image/tiff",
        ".tiff": "image/tiff",
        ".tmo": "application/vnd.tmobile-livetv",
        ".tmpl": "application/x-cheetah",
        ".toc": "text/x-tex",
        ".torrent": "application/x-bittorrent",
        ".tpl": "application/vnd.groove-tool-template",
        ".tpt": "application/vnd.trid.tpt",
        ".tr": "text/troff",
        ".tra": "application/vnd.trueapp",
        ".trm": "application/x-msterminal",
        ".ts": "video/mp2t",
        ".tsd": "application/timestamped-data",
        ".tst": "text/scilab",
        ".tsv": "text/tab-separated-values",
        ".ttc": "application/x-font-ttf",
        ".ttf": "application/x-font-ttf",
        ".ttl": "text/turtle",
        ".twd": "application/vnd.simtech-mindmapper",
        ".twds": "application/vnd.simtech-mindmapper",
        ".txd": "application/vnd.genomatix.tuxedo",
        ".txf": "application/vnd.mobius.txf",
        ".txt": "text/plain",
        ".u": "application/x-urbiscript",
        ".u32": "application/x-authorware-bin",
        ".udeb": "application/x-debian-package",
        ".ufd": "application/vnd.ufdl",
        ".ufdl": "application/vnd.ufdl",
        ".umj": "application/vnd.umajin",
        ".unityweb": "application/vnd.unity",
        ".uoml": "application/vnd.uoml+xml",
        ".uri": "text/uri-list",
        ".uris": "text/uri-list",
        ".urls": "text/uri-list",
        ".ustar": "application/x-ustar",
        ".utz": "application/vnd.uiq.theme",
        ".uu": "text/x-uuencode",
        ".uva": "audio/vnd.dece.audio",
        ".uvd": "application/vnd.dece.data",
        ".uvf": "application/vnd.dece.data",
        ".uvg": "image/vnd.dece.graphic",
        ".uvh": "video/vnd.dece.hd",
        ".uvi": "image/vnd.dece.graphic",
        ".uvm": "video/vnd.dece.mobile",
        ".uvp": "video/vnd.dece.pd",
        ".uvs": "video/vnd.dece.sd",
        ".uvt": "application/vnd.dece.ttml+xml",
        ".uvu": "video/vnd.uvvu.mp4",
        ".uvv": "video/vnd.dece.video",
        ".uvva": "audio/vnd.dece.audio",
        ".uvvd": "application/vnd.dece.data",
        ".uvvf": "application/vnd.dece.data",
        ".uvvg": "image/vnd.dece.graphic",
        ".uvvh": "video/vnd.dece.hd",
        ".uvvi": "image/vnd.dece.graphic",
        ".uvvm": "video/vnd.dece.mobile",
        ".uvvp": "video/vnd.dece.pd",
        ".uvvs": "video/vnd.dece.sd",
        ".uvvt": "application/vnd.dece.ttml+xml",
        ".uvvu": "video/vnd.uvvu.mp4",
        ".uvvv": "video/vnd.dece.video",
        ".uvvx": "application/vnd.dece.unspecified",
        ".uvx": "application/vnd.dece.unspecified",
        ".v": "text/x-verilog",
        ".vala": "text/x-vala",
        ".vapi": "text/x-vala",
        ".vark": "text/x-gosu",
        ".vb": "text/vbscript",
        ".vcd": "application/x-cdlink",
        ".vcf": "text/x-vcard",
        ".vcg": "application/vnd.groove-vcard",
        ".vcs": "text/x-vcalendar",
        ".vcx": "application/vnd.vcx",
        ".vert": "text/x-glslsrc",
        ".vhd": "text/x-vhdl",
        ".vhdl": "text/x-vhdl",
        ".vim": "text/x-vim",
        ".vis": "application/vnd.visionary",
        ".viv": "video/vnd.vivo",
        ".vor": "application/vnd.stardivision.writer",
        ".vox": "application/x-authorware-bin",
        ".vrml": "model/vrml",
        ".vsd": "application/vnd.visio",
        ".vsf": "application/vnd.vsf",
        ".vss": "application/vnd.visio",
        ".vst": "application/vnd.visio",
        ".vsw": "application/vnd.visio",
        ".vtu": "model/vnd.vtu",
        ".vxml": "application/voicexml+xml",
        ".w3d": "application/x-director",
        ".wad": "application/x-doom",
        ".wav": "audio/x-wav",
        ".wax": "audio/x-ms-wax",
        ".wbmp": "image/vnd.wap.wbmp",
        ".wbs": "application/vnd.criticaltools.wbs+xml",
        ".wbxml": "application/vnd.wap.wbxml",
        ".wcm": "application/vnd.ms-works",
        ".wdb": "application/vnd.ms-works",
        ".weba": "audio/webm",
        ".webm": "video/webm",
        ".webp": "image/webp",
        ".weechatlog": "text/x-irclog",
        ".wg": "application/vnd.pmi.widget",
        ".wgt": "application/widget",
        ".wiz": "application/msword",
        ".wks": "application/vnd.ms-works",
        ".wlua": "text/x-lua",
        ".wm": "video/x-ms-wm",
        ".wma": "audio/x-ms-wma",
        ".wmd": "application/x-ms-wmd",
        ".wmf": "application/x-msmetafile",
        ".wml": "text/vnd.wap.wml",
        ".wmlc": "application/vnd.wap.wmlc",
        ".wmls": "text/vnd.wap.wmlscript",
        ".wmlsc": "application/vnd.wap.wmlscriptc",
        ".wmv": "video/x-ms-wmv",
        ".wmx": "video/x-ms-wmx",
        ".wmz": "application/x-ms-wmz",
        ".woff": "application/x-font-woff",
        ".wpd": "application/vnd.wordperfect",
        ".wpl": "application/vnd.ms-wpl",
        ".wps": "application/vnd.ms-works",
        ".wqd": "application/vnd.wqd",
        ".wri": "application/x-mswrite",
        ".wrl": "model/vrml",
        ".wsdl": "application/wsdl+xml",
        ".wspolicy": "application/wspolicy+xml",
        ".wtb": "application/vnd.webturbo",
        ".wvx": "video/x-ms-wvx",
        ".x": "text/x-logos",
        ".x32": "application/x-authorware-bin",
        ".x3d": "application/vnd.hzn-3d-crossword",
        ".xap": "application/x-silverlight-app",
        ".xar": "application/vnd.xara",
        ".xbap": "application/x-ms-xbap",
        ".xbd": "application/vnd.fujixerox.docuworks.binder",
        ".xbm": "image/x-xbitmap",
        ".xdf": "application/xcap-diff+xml",
        ".xdm": "application/vnd.syncml.dm+xml",
        ".xdp": "application/vnd.adobe.xdp+xml",
        ".xdssc": "application/dssc+xml",
        ".xdw": "application/vnd.fujixerox.docuworks",
        ".xenc": "application/xenc+xml",
        ".xer": "application/patch-ops-error+xml",
        ".xfdf": "application/vnd.adobe.xfdf",
        ".xfdl": "application/vnd.xfdl",
        ".xht": "application/xhtml+xml",
        ".xhtml": "application/xhtml+xml",
        ".xhvml": "application/xv+xml",
        ".xi": "text/x-logos",
        ".xif": "image/vnd.xiff",
        ".xla": "application/vnd.ms-excel",
        ".xlam": "application/vnd.ms-excel.addin.macroenabled.12",
        ".xlb": "application/vnd.ms-excel",
        ".xlc": "application/vnd.ms-excel",
        ".xlm": "application/vnd.ms-excel",
        ".xls": "application/vnd.ms-excel",
        ".xlsb": "application/vnd.ms-excel.sheet.binary.macroenabled.12",
        ".xlsm": "application/vnd.ms-excel.sheet.macroenabled.12",
        ".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
        ".xlt": "application/vnd.ms-excel",
        ".xltm": "application/vnd.ms-excel.template.macroenabled.12",
        ".xltx": "application/vnd.openxmlformats-officedocument.spreadsheetml.template",
        ".xlw": "application/vnd.ms-excel",
        ".xm": "text/x-logos",
        ".xmi": "text/x-logos",
        ".xml": "application/xml",
        ".xo": "application/vnd.olpc-sugar",
        ".xop": "application/xop+xml",
        ".xpdl": "application/xml",
        ".xpi": "application/x-xpinstall",
        ".xpl": "application/xsl+xml",
        ".xpm": "image/x-xpixmap",
        ".xpr": "application/vnd.is-xpr",
        ".xps": "application/vnd.ms-xpsdocument",
        ".xpw": "application/vnd.intercon.formnet",
        ".xpx": "application/vnd.intercon.formnet",
        ".xq": "application/xquery",
        ".xql": "application/xquery",
        ".xqm": "application/xquery",
        ".xquery": "application/xquery",
        ".xqy": "application/xquery",
        ".xsd": "application/xml",
        ".xsl": "application/xml",
        ".xslt": "application/xslt+xml",
        ".xsm": "application/vnd.syncml+xml",
        ".xspf": "application/xspf+xml",
        ".xtend": "text/x-xtend",
        ".xul": "application/vnd.mozilla.xul+xml",
        ".xvm": "application/xv+xml",
        ".xvml": "application/xv+xml",
        ".xwd": "image/x-xwindowdump",
        ".xyz": "chemical/x-xyz",
        ".yaml": "text/x-yaml",
        ".yang": "application/yang",
        ".yin": "application/yin+xml",
        ".yml": "text/x-yaml",
        ".zaz": "application/vnd.zzazz.deck+xml",
        ".zip": "application/zip",
        ".zir": "application/vnd.zul",
        ".zirz": "application/vnd.zul",
        ".zmm": "application/vnd.handheld-entertainment+xml",
    },
]


def get_mimetypes_db(extra_types=None):
    import mimetypes

    types_map = TYPES_MAP
    if extra_types:
        types_map = TYPES_MAP[::]  # copy the initial version for extending
        types_map[1].update(extra_types)
    db = mimetypes.MimeTypes()
    db.types_map = types_map
    db.encodings_map.update(DEFAULTS["encodings_map"])
    db.suffix_map.update(DEFAULTS["suffix_map"])
    return db
