From e7c2ebdae4c9e297f22839cd518133a4bc7d00c1 Mon Sep 17 00:00:00 2001 From: Anton Erofeev Date: Thu, 17 Oct 2024 21:57:22 +0300 Subject: [PATCH 1/3] KTOR-7586: improve parsing of supported media types --- ktor-http/common/src/io/ktor/http/Mimes.kt | 2207 ++++++++--------- .../test/io/ktor/tests/http/MimesTest.kt | 28 + 2 files changed, 1016 insertions(+), 1219 deletions(-) create mode 100644 ktor-http/common/test/io/ktor/tests/http/MimesTest.kt diff --git a/ktor-http/common/src/io/ktor/http/Mimes.kt b/ktor-http/common/src/io/ktor/http/Mimes.kt index c1da7de818e..682b346c37c 100644 --- a/ktor-http/common/src/io/ktor/http/Mimes.kt +++ b/ktor-http/common/src/io/ktor/http/Mimes.kt @@ -8,1231 +8,1000 @@ import io.ktor.util.* private val rawMimes: String get() = """ -.123,application/vnd.lotus-1-2-3 -.3dmf,x-world/x-3dmf -.3dml,text/vnd.in3d.3dml -.3dm,x-world/x-3dmf -.3g2,video/3gpp2 -.3gp,video/3gpp -.7z,application/x-7z-compressed -.aab,application/x-authorware-bin -.aac,audio/aac -.aam,application/x-authorware-map -.a,application/octet-stream -.aas,application/x-authorware-seg -.abc,text/vnd.abc -.abw,application/x-abiword -.ac,application/pkix-attr-cert -.acc,application/vnd.americandynamics.acc -.ace,application/x-ace-compressed -.acgi,text/html -.acu,application/vnd.acucobol -.adp,audio/adpcm -.aep,application/vnd.audiograph -.afl,video/animaflex -.afp,application/vnd.ibm.modcap -.ahead,application/vnd.ahead.space -.ai,application/postscript -.aif,audio/aiff -.aifc,audio/aiff -.aiff,audio/aiff -.aim,application/x-aim -.aip,text/x-audiosoft-intra -.air,application/vnd.adobe.air-application-installer-package+zip -.ait,application/vnd.dvb.ait -.ami,application/vnd.amiga.ami -.ani,application/x-navi-animation -.aos,application/x-nokia-9000-communicator-add-on-software -.apk,application/vnd.android.package-archive -.application,application/x-ms-application -,application/pgp-encrypted -.apr,application/vnd.lotus-approach -.aps,application/mime -.arc,application/octet-stream -.arj,application/arj -.arj,application/octet-stream -.art,image/x-jg -.asf,video/x-ms-asf -.asm,text/x-asm -.aso,application/vnd.accpac.simply.aso -.asp,text/asp -.asx,application/x-mplayer2 -.asx,video/x-ms-asf -.asx,video/x-ms-asf-plugin -.atc,application/vnd.acucorp -.atomcat,application/atomcat+xml -.atomsvc,application/atomsvc+xml -.atom,application/atom+xml -.atx,application/vnd.antix.game-component -.au,audio/basic -.au,audio/x-au -.avi,video/avi -.avi,video/msvideo -.avi,video/x-msvideo -.avif,image/avif -.avifs,image/avif -.avs,video/avs-video -.aw,application/applixware -.azf,application/vnd.airzip.filesecure.azf -.azs,application/vnd.airzip.filesecure.azs -.azw,application/vnd.amazon.ebook -.bcpio,application/x-bcpio -.bdf,application/x-font-bdf -.bdm,application/vnd.syncml.dm+wbxml -.bed,application/vnd.realvnc.bed -.bh2,application/vnd.fujitsu.oasysprs -.bin,application/macbinary -.bin,application/mac-binary -.bin,application/octet-stream -.bin,application/x-binary -.bin,application/x-macbinary -.bmi,application/vnd.bmi -.bm,image/bmp -.bmp,image/bmp -.bmp,image/x-windows-bmp -.boo,application/book -.book,application/book -.box,application/vnd.previewsystems.box -.boz,application/x-bzip2 -.bsh,application/x-bsh -.btif,image/prs.btif -.bz2,application/x-bzip2 -.bz,application/x-bzip -.c11amc,application/vnd.cluetrust.cartomobile-config -.c11amz,application/vnd.cluetrust.cartomobile-config-pkg -.c4g,application/vnd.clonk.c4group -.cab,application/vnd.ms-cab-compressed -.car,application/vnd.curl.car -.cat,application/vnd.ms-pki.seccat -.ccad,application/clariscad -.cco,application/x-cocoa -.cc,text/plain -.cc,text/x-c -.ccxml,application/ccxml+xml, -.cdbcmsg,application/vnd.contact.cmsg -.cdf,application/cdf -.cdf,application/x-cdf -.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 -.cgm,image/cgm -.cha,application/x-chat -.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 -.cla,application/vnd.claymore -.class,application/java -.class,application/java-byte-code -.class,application/java-vm -.class,application/x-java-class -.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 -.cmc,application/vnd.cosmocaller -.cmdf,chemical/x-cmdf -.cml,chemical/x-cml -.cmp,application/vnd.yellowriver-custom-menu -.cmx,image/x-cmx -.cod,application/vnd.rim.cod -.collection,font/collection -.com,application/octet-stream -.com,text/plain -.conf,text/plain -.cpio,application/x-cpio -.cpp,text/x-c -.cpt,application/mac-compactpro -.cpt,application/x-compactpro -.cpt,application/x-cpt -.crd,application/x-mscardfile -.crl,application/pkcs-crl -.crl,application/pkix-crl -.crt,application/pkix-cert -.crt,application/x-x509-ca-cert -.crt,application/x-x509-user-cert -.cryptonote,application/vnd.rig.cryptonote -.csh,application/x-csh -.csh,text/x-script.csh -.csml,chemical/x-csml -.csp,application/vnd.commonspace -.css,text/css -.csv,text/csv -.c,text/plain -.c++,text/plain -.c,text/x-c -.cu,application/cu-seeme -.curl,text/vnd.curl -.cww,application/prs.cww -.cxx,text/plain -.dat,binary/octet-stream -.dae,model/vnd.collada+xml -.daf,application/vnd.mobius.daf -.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 -.deepv,application/x-deepv -.def,text/plain -.der,application/x-x509-ca-cert -.dfac,application/vnd.dreamfactory -.dif,video/x-dv -.dir,application/x-director -.dis,application/vnd.mobius.dis -.djvu,image/vnd.djvu -.dl,video/dl -.dl,video/x-dl -.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/commonground -.dp,application/vnd.osgi.dp -.dpg,application/vnd.dpgraph -.dra,audio/vnd.dra -.drw,application/drafting -.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 -.dump,application/octet-stream -.dvi,application/x-dvi -.dv,video/x-dv -.dwf,model/vnd.dwf -.dwg,application/acad -.dwg,image/vnd.dwg -.dwg,image/x-dwg -.dxf,application/dxf -.dxf,image/vnd.dwg -.dxf,image/vnd.dxf -.dxf,image/x-dwg -.dxp,application/vnd.spotfire.dxp -.dxr,application/x-director -.ecelp4800,audio/vnd.nuera.ecelp4800 -.ecelp7470,audio/vnd.nuera.ecelp7470 -.ecelp9600,audio/vnd.nuera.ecelp9600 -.edm,application/vnd.novadigm.edm -.edx,application/vnd.novadigm.edx -.efif,application/vnd.picsel -.ei6,application/vnd.pg.osasli -.elc,application/x-elc -.el,text/x-script.elisp -.eml,message/rfc822 -.emma,application/emma+xml -.env,application/x-envoy -.eol,audio/vnd.digital-winds -.eot,application/vnd.ms-fontobject -.eps,application/postscript -.epub,application/epub+zip -.es3,application/vnd.eszigno3+xml -.es,application/ecmascript -.es,application/x-esrehber -.esf,application/vnd.epson.esf -.etx,text/x-setext -.evy,application/envoy -.evy,application/x-envoy -.exe,application/octet-stream -.exe,application/x-msdownload -.exi,application/exi -.ext,application/vnd.novadigm.ext -.ez2,application/vnd.ezpix-album -.ez3,application/vnd.ezpix-package -.f4v,video/x-f4v -.f77,text/x-fortran -.f90,text/plain -.f90,text/x-fortran -.fbs,image/vnd.fastbidsheet -.fcs,application/vnd.isac.fcs -.fdf,application/vnd.fdf -.fe_launch,application/vnd.denovo.fcselayout-link -.fg5,application/vnd.fujitsu.oasysgp -.fh,image/x-freehand -.fif,application/fractals -.fif,image/fif -.fig,application/x-xfig -.fli,video/fli -.fli,video/x-fli -.flo,application/vnd.micrografx.flo -.flo,image/florian -.flv,video/x-flv -.flw,application/vnd.kde.kivio -.flx,text/vnd.fmi.flexstor -.fly,text/vnd.fly -.fm,application/vnd.framemaker -.fmf,video/x-atomic3d-feature -.fnc,application/vnd.frogans.fnc -.for,text/plain -.for,text/x-fortran -.fpx,image/vnd.fpx -.fpx,image/vnd.net-fpx -.frl,application/freeloader -.fsc,application/vnd.fsc.weblaunch -.fst,image/vnd.fst -.ftc,application/vnd.fluxtime.clip -.f,text/plain -.f,text/x-fortran -.fti,application/vnd.anser-web-funds-transfer-initiation -.funk,audio/make -.fvt,video/vnd.fvt -.fxp,application/vnd.adobe.fxp -.fzs,application/vnd.fuzzysheet -.g2w,application/vnd.geoplan -.g3,image/g3fax -.g3w,application/vnd.geospace -.gac,application/vnd.groove-account -.gdl,model/vnd.gdl -.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 -.gl,video/gl -.gl,video/x-gl -.gmx,application/vnd.gmx -.gnumeric,application/x-gnumeric -.gph,application/vnd.flographit -.gqf,application/vnd.grafeq -.gram,application/srgs -.grv,application/vnd.groove-injector -.grxml,application/srgs+xml -.gsd,audio/x-gsm -.gsf,application/x-font-ghostscript -.gsm,audio/x-gsm -.gsp,application/x-gsp -.gss,application/x-gss -.gtar,application/x-gtar -.g,text/plain -.gtm,application/vnd.groove-tool-message -.gtw,model/vnd.gtw -.gv,text/vnd.graphviz -.gxt,application/vnd.geonext -.gz,application/gzip -.gz,application/x-compressed -.gz,application/x-gzip -.gzip,application/gzip -.gzip,application/x-gzip -.gzip,multipart/x-gzip -.h261,video/h261 -.h263,video/h263 -.h264,video/h264 -.hal,application/vnd.hal+xml -.hbci,application/vnd.hbci -.hdf,application/x-hdf -.help,application/x-helpfile -.heic,image/heic -.heif,image/heif -.hgl,application/vnd.hp-hpgl -.hh,text/plain -.hh,text/x-h -.hlb,text/x-script -.hlp,application/hlp -.hlp,application/winhlp -.hlp,application/x-helpfile -.hlp,application/x-winhelp -.hpg,application/vnd.hp-hpgl -.hpgl,application/vnd.hp-hpgl -.hpid,application/vnd.hp-hpid -.hps,application/vnd.hp-hps -.hqx,application/binhex -.hqx,application/binhex4 -.hqx,application/mac-binhex -.hqx,application/mac-binhex40 -.hqx,application/x-binhex40 -.hqx,application/x-mac-binhex40 -.hta,application/hta -.htc,text/x-component -.h,text/plain -.h,text/x-h -.htke,application/vnd.kenameaapp -.htmls,text/html -.html,text/html -.htm,text/html -.htt,text/webviewhtml -.htx,text/html -.hvd,application/vnd.yamaha.hv-dic -.hvp,application/vnd.yamaha.hv-voice -.hvs,application/vnd.yamaha.hv-script -.i2g,application/vnd.intergeo -.icc,application/vnd.iccprofile -.ice,x-conference/x-cooltalk -.ico,image/x-icon -.ics,text/calendar -.idc,text/plain -.ief,image/ief -.iefs,image/ief -.iff,application/iff -.ifm,application/vnd.shana.informed.formdata -.iges,application/iges -.iges,model/iges -.igl,application/vnd.igloader -.igm,application/vnd.insors.igm -.igs,application/iges -.igs,model/iges -.igx,application/vnd.micrografx.igx -.iif,application/vnd.shana.informed.interchange -.ima,application/x-ima -.imap,application/x-httpd-imap -.imp,application/vnd.accpac.simply.imp -.ims,application/vnd.ms-ims -.inf,application/inf -.ins,application/x-internett-signup -.ip,application/x-ip2 -.ipfix,application/ipfix -.ipk,application/vnd.shana.informed.package -.irm,application/vnd.ibm.rights-management -.irp,application/vnd.irepository.package+xml -.isu,video/x-isvideo -.it,audio/it -.itp,application/vnd.shana.informed.formtemplate -.iv,application/x-inventor -.ivp,application/vnd.immervision-ivp -.ivr,i-world/i-vrml -.ivu,application/vnd.immervision-ivu -.ivy,application/x-livescreen -.jad,text/vnd.sun.j2me.app-descriptor -.jam,application/vnd.jam -.jam,audio/x-jam -.jar,application/java-archive -.java,text/plain -.java,text/x-java-source -.jav,text/plain -.jav,text/x-java-source -.jcm,application/x-java-commerce -.jfif,image/jpeg -.jfif,image/pjpeg -.jfif-tbnl,image/jpeg -.jisp,application/vnd.jisp -.jlt,application/vnd.hp-jlyt -.jnlp,application/x-java-jnlp-file -.joda,application/vnd.joost.joda-archive -.jpeg,image/jpeg -.jpe,image/jpeg -.jpg,image/jpeg -.jpgv,video/jpeg -.jpm,video/jpm -.jps,image/x-jps -.js,text/javascript -.js,application/javascript -.json,application/json -.jut,image/jutvision -.kar,audio/midi -.karbon,application/vnd.kde.karbon -.kar,music/x-karaoke -.key,application/pgp-keys -.keychain,application/octet-stream -.kfo,application/vnd.kde.kformula -.kia,application/vnd.kidspiration -.kml,application/vnd.google-earth.kml+xml -.kmz,application/vnd.google-earth.kmz -.kne,application/vnd.kinar -.kon,application/vnd.kde.kontour -.kpr,application/vnd.kde.kpresenter -.ksh,application/x-ksh -.ksh,text/x-script.ksh -.ksp,application/vnd.kde.kspread -.ktx,image/ktx -.ktz,application/vnd.kahootz -.kwd,application/vnd.kde.kword -.la,audio/nspaudio -.la,audio/x-nspaudio -.lam,audio/x-liveaudio -.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 -.lha,application/lha -.lha,application/x-lha -.link66,application/vnd.route66.link66+xml -.list,text/plain -.lma,audio/nspaudio -.lma,audio/x-nspaudio -.log,text/plain -.lrm,application/vnd.ms-lrm -.lsp,application/x-lisp -.lsp,text/x-script.lisp -.lst,text/plain -.lsx,text/x-la-asf -.ltf,application/vnd.frogans.ltf -.ltx,application/x-latex -.lvp,audio/vnd.lucent.voice -.lwp,application/vnd.lotus-wordpro -.lzh,application/octet-stream -.lzh,application/x-lzh -.lzx,application/lzx -.lzx,application/octet-stream -.lzx,application/x-lzx -.m1v,video/mpeg -.m21,application/mp21 -.m2a,audio/mpeg -.m2v,video/mpeg -.m3u8,application/vnd.apple.mpegurl -.m3u,audio/x-mpegurl -.m4a,audio/mp4 -.m4v,video/mp4 -.ma,application/mathematica -.mads,application/mads+xml -.mag,application/vnd.ecowin.chart -.man,application/x-troff-man -.map,application/x-navimap -.mar,text/plain -.mathml,application/mathml+xml -.mbd,application/mbedlet -.mbk,application/vnd.mobius.mbk -.mbox,application/mbox -.mc1,application/vnd.medcalcdata -.mc${'$'},application/x-magic-cap-package-1.0 -.mcd,application/mcad -.mcd,application/vnd.mcd -.mcd,application/x-mathcad -.mcf,image/vasa -.mcf,text/mcf -.mcp,application/netmc -.mcurl,text/vnd.curl.mcurl -.mdb,application/x-msaccess -.mdi,image/vnd.ms-modi -.me,application/x-troff-me -.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 -.mid,application/x-midi -.mid,audio/midi -.mid,audio/x-mid -.midi,application/x-midi -.midi,audio/midi -.midi,audio/x-mid -.midi,audio/x-midi -.midi,music/crescendo -.midi,x-music/x-midi -.mid,music/crescendo -.mid,x-music/x-midi -.mif,application/vnd.mif -.mif,application/x-frame -.mif,application/x-mif -.mime,message/rfc822 -.mime,www/mime -.mj2,video/mj2 -.mjf,audio/x-vnd.audioexplosion.mjuicemediafile -.mjpg,video/x-motion-jpeg -.mjs,text/javascript -.mkv,video/x-matroska -.mkv,audio/x-matroska -.mlp,application/vnd.dolby.mlp -.mm,application/base64 -.mm,application/x-meme -.mmd,application/vnd.chipnuts.karaoke-mmd -.mme,application/base64 -.mmf,application/vnd.smaf -.mmr,image/vnd.fujixerox.edmics-mmr -.mny,application/x-msmoney -.mod,audio/mod -.mod,audio/x-mod -.mods,application/mods+xml -.moov,video/quicktime -.movie,video/x-sgi-movie -.mov,video/quicktime -.mp2,audio/mpeg -.mp2,audio/x-mpeg -.mp2,video/mpeg -.mp2,video/x-mpeg -.mp2,video/x-mpeq2a -.mp3,audio/mpeg -.mp3,audio/mpeg3 -.mp4a,audio/mp4 -.mp4,video/mp4 -.mp4,application/mp4 -.mpa,audio/mpeg -.mpc,application/vnd.mophun.certificate -.mpc,application/x-project -.mpeg,video/mpeg -.mpe,video/mpeg -.mpga,audio/mpeg -.mpg,video/mpeg -.mpg,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/x-project -.mpv,application/x-project -.mpx,application/x-project -.mpy,application/vnd.ibm.minipay -.mqy,application/vnd.mobius.mqy -.mrc,application/marc -.mrcx,application/marcxml+xml -.ms,application/x-troff-ms -.mscml,application/mediaservercontrol+xml -.mseq,application/vnd.mseq -.msf,application/vnd.epson.msf -.msg,application/vnd.ms-outlook -.msh,model/mesh -.msl,application/vnd.mobius.msl -.msty,application/vnd.muvee.style -.m,text/plain -.m,text/x-m -.mts,model/vnd.mts -.mus,application/vnd.musician -.musicxml,application/vnd.recordare.musicxml+xml -.mvb,application/x-msmediaview -.mv,video/x-sgi-movie -.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 -.my,audio/make -.mzz,application/x-vnd.audioexplosion.mzz -.n3,text/n3 -N/A,application/andrew-inset -.nap,image/naplps -.naplps,image/naplps -.nbp,application/vnd.wolfram.player -.nc,application/x-netcdf -.ncm,application/vnd.nokia.configuration-message -.ncx,application/x-dtbncx+xml -.n-gage,application/vnd.nokia.n-gage.symbian.install -.ngdat,application/vnd.nokia.n-gage.data -.niff,image/x-niff -.nif,image/x-niff -.nix,application/x-mix-transfer -.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 -.nsc,application/x-conference -.nsf,application/vnd.lotus-notes -.nvd,application/x-navidoc -.oa2,application/vnd.fujitsu.oasys2 -.oa3,application/vnd.fujitsu.oasys3 -.o,application/octet-stream -.oas,application/vnd.fujitsu.oasys -.obd,application/x-msbinder -.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 -.omc,application/x-omc -.omcd,application/x-omcdatamaker -.omcr,application/x-omcregerator -.onetoc,application/onenote -.opf,application/oebps-package+xml -.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,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 -.p10,application/pkcs10 -.p12,application/pkcs-12 -.p7a,application/x-pkcs7-signature -.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 -.pages,application/vnd.apple.pages -.part,application/pro_eng -.par,text/plain-bas -.pas,text/pascal -.paw,application/vnd.pawaafile -.pbd,application/vnd.powerbuilder6 -.pbm,image/x-portable-bitmap -.pcf,application/x-font-pcf -.pcl,application/vnd.hp-pcl -.pcl,application/x-pcl -.pclxl,application/vnd.hp-pclxl -.pct,image/x-pict -.pcurl,application/vnd.curl.pcurl -.pcx,image/x-pcx -.pdb,application/vnd.palm -.pdb,chemical/x-pdb -.pdf,application/pdf -.pem,application/x-pem-file -.pfa,application/x-font-type1 -.pfr,application/font-tdpfr -.pfunk,audio/make -.pfunk,audio/make.my.funk -.pfx,application/x-pkcs12 -.pgm,image/x-portable-graymap -.pgn,application/x-chess-pgn -.pgp,application/pgp-signature -.pic,image/pict -.pict,image/pict -.pkg,application/x-newton-compatible-pkg -.pki,application/pkixcmp -.pkipath,application/pkix-pkipath -.pko,application/vnd.ms-pki.pko -.plb,application/vnd.3gpp.pic-bw-large -.plc,application/vnd.mobius.plc -.plf,application/vnd.pocketlearn -.pls,application/pls+xml -.pl,text/plain -.pl,text/x-script.perl -.plx,application/x-pixclscript -.pm4,application/x-pagemaker -.pm5,application/x-pagemaker -.pm,image/x-xpixmap -.pml,application/vnd.ctc-posml -.pm,text/x-script.perl-module -.png,image/png -.pnm,application/x-portable-anymap -.pnm,image/x-portable-anymap -.portpkg,application/vnd.macports.portpkg -.pot,application/mspowerpoint -.pot,application/vnd.ms-powerpoint -.potm,application/vnd.ms-powerpoint.template.macroenabled.12 -.potx,application/vnd.openxmlformats-officedocument.presentationml.template -.pov,model/x-pov -.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/mspowerpoint -.pps,application/vnd.ms-powerpoint -.ppsm,application/vnd.ms-powerpoint.slideshow.macroenabled.12 -.ppsx,application/vnd.openxmlformats-officedocument.presentationml.slideshow -.ppt,application/mspowerpoint -.ppt,application/powerpoint -.ppt,application/vnd.ms-powerpoint -.ppt,application/x-mspowerpoint -.pptm,application/vnd.ms-powerpoint.presentation.macroenabled.12 -.pptx,application/vnd.openxmlformats-officedocument.presentationml.presentation -.ppz,application/mspowerpoint -.prc,application/x-mobipocket-ebook -.pre,application/vnd.lotus-freelance -.pre,application/x-freelance -.prf,application/pics-rules -.prt,application/pro_eng -.ps,application/postscript -.psb,application/vnd.3gpp.pic-bw-small -.psd,application/octet-stream -.psd,image/vnd.adobe.photoshop -.psf,application/x-font-linux-psf -.pskcxml,application/pskc+xml -.p,text/x-pascal -.ptid,application/vnd.pvi.ptid1 -.pub,application/x-mspublisher -.pvb,application/vnd.3gpp.pic-bw-var -.pvu,paleovu/x-pv -.pwn,application/vnd.3m.post-it-notes -.pwz,application/vnd.ms-powerpoint -.pya,audio/vnd.ms-playready.media.pya -.pyc,application/x-bytecode.python -.py,text/x-script.python -.pyv,video/vnd.ms-playready.media.pyv -.qam,application/vnd.epson.quickanime -.qbo,application/vnd.intu.qbo -.qcp,audio/vnd.qcelp -.qd3d,x-world/x-3dmf -.qd3,x-world/x-3dmf -.qfx,application/vnd.intu.qfx -.qif,image/x-quicktime -.qps,application/vnd.publishare-delta-tree -.qtc,video/x-qtc -.qtif,image/x-quicktime -.qti,image/x-quicktime -.qt,video/quicktime -.qxd,application/vnd.quark.quarkxpress -.ra,audio/x-pn-realaudio -.ra,audio/x-pn-realaudio-plugin -.ra,audio/x-realaudio -.ram,audio/x-pn-realaudio -.rar,application/x-rar-compressed -.ras,application/x-cmu-raster -.ras,image/cmu-raster -.ras,image/x-cmu-raster -.rast,image/cmu-raster -.rcprofile,application/vnd.ipunplugged.rcprofile -.rdf,application/rdf+xml -.rdz,application/vnd.data-vision.rdz -.rep,application/vnd.businessobjects -.res,application/x-dtbresource+xml -.rexx,text/x-script.rexx -.rf,image/vnd.rn-realflash -.rgb,image/x-rgb -.rif,application/reginfo+xml -.rip,audio/vnd.rip -.rl,application/resource-lists+xml -.rlc,image/vnd.fujixerox.edmics-rlc -.rld,application/resource-lists-diff+xml -.rm,application/vnd.rn-realmedia -.rm,audio/x-pn-realaudio -.rmi,audio/mid -.rmm,audio/x-pn-realaudio -.rmp,audio/x-pn-realaudio -.rmp,audio/x-pn-realaudio-plugin -.rms,application/vnd.jcp.javame.midlet-rms -.rnc,application/relax-ng-compact-syntax -.rng,application/ringing-tones -.rng,application/vnd.nokia.ringing-tone -.rnx,application/vnd.rn-realplayer -.roff,application/x-troff -.rp9,application/vnd.cloanto.rp9 -.rp,image/vnd.rn-realpix -.rpm,audio/x-pn-realaudio-plugin -.rpm,application/x-rpm -.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 -.rtf,application/rtf -.rtf,text/rtf -.rt,text/richtext -.rt,text/vnd.rn-realtext -.rtx,application/rtf -.rtx,text/richtext -.rv,video/vnd.rn-realvideo -.s3m,audio/s3m -.saf,application/vnd.yamaha.smaf-audio -.saveme,application/octet-stream -.sbk,application/x-tbook -.sbml,application/sbml+xml -.sc,application/vnd.ibm.secure-container -.scd,application/x-msschedule -.scm,application/vnd.lotus-screencam -.scm,application/x-lotusscreencam -.scm,text/x-script.guile -.scm,text/x-script.scheme -.scm,video/x-scm -.scq,application/scvp-cv-request -.scs,application/scvp-cv-response -.scurl,text/vnd.curl.scurl -.sda,application/vnd.stardivision.draw -.sdc,application/vnd.stardivision.calc -.sdd,application/vnd.stardivision.impress -.sdf,application/octet-stream -.sdkm,application/vnd.solent.sdkm+xml -.sdml,text/plain -.sdp,application/sdp -.sdp,application/x-sdp -.sdr,application/sounder -.sdw,application/vnd.stardivision.writer -.sea,application/sea -.sea,application/x-sea -.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 -.set,application/set -.setpay,application/set-payment-initiation -.setreg,application/set-registration-initiation -.sfd-hdstx,application/vnd.hydrostatix.sof-data -.sfnt,font/sfnt -.sfs,application/vnd.spotfire.sfs -.sgl,application/vnd.stardivision.writer-global -.sgml,text/sgml -.sgml,text/x-sgml -.sgm,text/sgml -.sgm,text/x-sgml -.sh,application/x-bsh -.sh,application/x-sh -.sh,application/x-shar -.shar,application/x-bsh -.shar,application/x-shar -.shf,application/shf+xml -.sh,text/x-script.sh -.shtml,text/html -.shtml,text/x-server-parsed-html -.sid,audio/x-psid -.sis,application/vnd.symbian.install -.sit,application/x-sit -.sit,application/x-stuffit -.sitx,application/x-stuffitx -.skd,application/x-koan -.skm,application/x-koan -.skp,application/vnd.koan -.skp,application/x-koan -.skt,application/x-koan -.sl,application/x-seelogo -.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 -.smf,application/vnd.stardivision.math -.smi,application/smil -.smi,application/smil+xml -.smil,application/smil -.snd,audio/basic -.snd,audio/x-adpcm -.snf,application/x-font-snf -.sol,application/solids -.spc,application/x-pkcs7-certificates -.spc,text/x-speech -.spf,application/vnd.yamaha.smaf-phrase -.spl,application/futuresplash -.spl,application/x-futuresplash -.spot,text/vnd.in3d.spot -.spp,application/scvp-vp-response -.spq,application/scvp-vp-request -.spr,application/x-sprite -.sprite,application/x-sprite -.src,application/x-wais-source -.srt,text/srt -.sru,application/sru+xml -.srx,application/sparql-results+xml -.sse,application/vnd.kodak-descriptor -.ssf,application/vnd.epson.ssf -.ssi,text/x-server-parsed-html -.ssm,application/streamingmedia -.ssml,application/ssml+xml -.sst,application/vnd.ms-pki.certstore -.st,application/vnd.sailingtracker.track -.stc,application/vnd.sun.xml.calc.template -.std,application/vnd.sun.xml.draw.template -.step,application/step -.s,text/x-asm -.stf,application/vnd.wt.stf -.sti,application/vnd.sun.xml.impress.template -.stk,application/hyperstudio -.stl,application/sla -.stl,application/vnd.ms-pki.stl -.stl,application/x-navistyle -.stp,application/step -.str,application/vnd.pg.format -.stw,application/vnd.sun.xml.writer.template -.sub,image/vnd.dvb.subtitle -.sus,application/vnd.sus-calendar -.sv4cpio,application/x-sv4cpio -.sv4crc,application/x-sv4crc -.svc,application/vnd.dvb.service -.svd,application/vnd.svd -.svf,image/vnd.dwg -.svf,image/x-dwg -.svg,image/svg+xml -.svr,application/x-world -.svr,x-world/x-svr -.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 -.talk,text/x-speech -.tao,application/vnd.tao.intent-module-archive -.t,application/x-troff -.tar,application/x-tar -.tbk,application/toolbook -.tbk,application/x-tbook -.tcap,application/vnd.3gpp2.tcap -.tcl,application/x-tcl -.tcl,text/x-script.tcl -.tcsh,text/x-script.tcsh -.teacher,application/vnd.smart.teacher -.tei,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 -.tgz,application/gnutar -.tgz,application/x-compressed -.thmx,application/vnd.ms-officetheme -.tiff,image/tiff -.tif,image/tiff -.tmo,application/vnd.tmobile-livetv -.torrent,application/x-bittorrent -.tpl,application/vnd.groove-tool-template -.tpt,application/vnd.trid.tpt -.tra,application/vnd.trueapp -.tr,application/x-troff -.trm,application/x-msterminal -.tsd,application/timestamped-data -.tsi,audio/tsp-audio -.tsp,application/dsptype -.tsp,audio/tsplayer -.tsv,text/tab-separated-values -.t,text/troff -.ttf,font/ttf -.ttl,text/turtle -.turbot,image/florian -.twd,application/vnd.simtech-mindmapper -.txd,application/vnd.genomatix.tuxedo -.txf,application/vnd.mobius.txf -.txt,text/plain -.ufd,application/vnd.ufdl -.uil,text/x-uil -.umj,application/vnd.umajin -.unis,text/uri-list -.uni,text/uri-list -.unityweb,application/vnd.unity -.unv,application/i-deas -.uoml,application/vnd.uoml+xml -.uris,text/uri-list -.uri,text/uri-list -.ustar,application/x-ustar -.ustar,multipart/x-ustar -.utz,application/vnd.uiq.theme -.uu,application/octet-stream -.uue,text/x-uuencode -.uu,text/x-uuencode -.uva,audio/vnd.dece.audio -.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 -.uvu,video/vnd.uvvu.mp4 -.uvv,video/vnd.dece.video -.vcd,application/x-cdlink -.vcf,text/x-vcard -.vcg,application/vnd.groove-vcard -.vcs,text/x-vcalendar -.vcx,application/vnd.vcx -.vda,application/vda -.vdo,video/vdo -.vew,application/groupwise -.vis,application/vnd.visionary -.vivo,video/vivo -.vivo,video/vnd.vivo -.viv,video/vivo -.viv,video/vnd.vivo -.vmd,application/vocaltec-media-desc -.vmf,application/vocaltec-media-file -.vob,video/dvd -.voc,audio/voc -.voc,audio/x-voc -.vos,video/vosaic -.vox,audio/voxware -.vqe,audio/x-twinvq-plugin -.vqf,audio/x-twinvq -.vql,audio/x-twinvq-plugin -.vrml,application/x-vrml -.vrml,model/vrml -.vrml,x-world/x-vrml -.vrt,x-world/x-vrt -.vsd,application/vnd.visio -.vsd,application/x-visio -.vsf,application/vnd.vsf -.vst,application/x-visio -.vsw,application/x-visio -.vtt,text/vtt -.vtu,model/vnd.vtu -.vxml,application/voicexml+xml -.w60,application/wordperfect6.0 -.w61,application/wordperfect6.1 -.w6w,application/msword -.wad,application/x-doom -.war,application/zip -.wasm,application/wasm -.wav,audio/wav -.wax,audio/x-ms-wax -.wb1,application/x-qpro -.wbmp,image/vnd.wap.wbmp -.wbs,application/vnd.criticaltools.wbs+xml -.wbxml,application/vnd.wap.wbxml -.weba,audio/webm -.web,application/vnd.xara -.webm,video/webm -.webmanifest,application/manifest+json -.webp,image/webp -.wg,application/vnd.pmi.widget -.wgt,application/widget -.wiz,application/msword -.wk1,application/x-123 -.wma,audio/x-ms-wma -.wmd,application/x-ms-wmd -.wmf,application/x-msmetafile -.wmf,windows/metafile -.wmlc,application/vnd.wap.wmlc -.wmlsc,application/vnd.wap.wmlscriptc -.wmls,text/vnd.wap.wmlscript -.wml,text/vnd.wap.wml -.wm,video/x-ms-wm -.wmv,video/x-ms-wmv -.wmx,video/x-ms-wmx -.wmz,application/x-ms-wmz -.woff,font/woff -.woff2,font/woff2 -.word,application/msword -.wp5,application/wordperfect -.wp5,application/wordperfect6.0 -.wp6,application/wordperfect -.wp,application/wordperfect -.wpd,application/vnd.wordperfect -.wpd,application/wordperfect -.wpd,application/x-wpwin -.wpl,application/vnd.ms-wpl -.wps,application/vnd.ms-works -.wq1,application/x-lotus -.wqd,application/vnd.wqd -.wri,application/mswrite -.wri,application/x-mswrite -.wri,application/x-wri -.wrl,application/x-world -.wrl,model/vrml -.wrl,x-world/x-vrml -.wrz,model/vrml -.wrz,x-world/x-vrml -.wsc,text/scriplet -.wsdl,application/wsdl+xml -.wspolicy,application/wspolicy+xml -.wsrc,application/x-wais-source -.wtb,application/vnd.webturbo -.wtk,application/x-wintalk -.wvx,video/x-ms-wvx -.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/xbm -.xbm,image/x-xbitmap -.xbm,image/x-xbm -.xdf,application/xcap-diff+xml -.xdm,application/vnd.syncml.dm+xml -.xdp,application/vnd.adobe.xdp+xml -.xdr,video/x-amt-demorun -.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 -.xgz,xgl/drawing -.xhtml,application/xhtml+xml -.xif,image/vnd.xiff -.xla,application/excel -.xla,application/x-excel -.xla,application/x-msexcel -.xlam,application/vnd.ms-excel.addin.macroenabled.12 -.xl,application/excel -.xlb,application/excel -.xlb,application/vnd.ms-excel -.xlb,application/x-excel -.xlc,application/excel -.xlc,application/vnd.ms-excel -.xlc,application/x-excel -.xld,application/excel -.xld,application/x-excel -.xlk,application/excel -.xlk,application/x-excel -.xll,application/excel -.xll,application/vnd.ms-excel -.xll,application/x-excel -.xlm,application/excel -.xlm,application/vnd.ms-excel -.xlm,application/x-excel -.xls,application/excel -.xls,application/vnd.ms-excel -.xls,application/x-excel -.xls,application/x-msexcel -.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/excel -.xlt,application/x-excel -.xltm,application/vnd.ms-excel.template.macroenabled.12 -.xltx,application/vnd.openxmlformats-officedocument.spreadsheetml.template -.xlv,application/excel -.xlv,application/x-excel -.xlw,application/excel -.xlw,application/vnd.ms-excel -.xlw,application/x-excel -.xlw,application/x-msexcel -.xm,audio/xm -.xml,application/xml -.xml,text/xml -.xmz,xgl/movie -.xo,application/vnd.olpc-sugar -.xop,application/xop+xml -.xpi,application/x-xpinstall -.xpix,application/x-vnd.ls-xpix -.xpm,image/xpm -.xpm,image/x-xpixmap -.x-png,image/png -.xpr,application/vnd.is-xpr -.xps,application/vnd.ms-xpsdocument -.xpw,application/vnd.intercon.formnet -.xslt,application/xslt+xml -.xsm,application/vnd.syncml+xml -.xspf,application/xspf+xml -.xsr,video/x-amt-showrun -.xul,application/vnd.mozilla.xul+xml -.xwd,image/x-xwd -.xwd,image/x-xwindowdump -.xyz,chemical/x-pdb -.xyz,chemical/x-xyz -.xz,application/x-xz -.yaml,text/yaml -.yang,application/yang -.yin,application/yin+xml -.z,application/x-compress -.z,application/x-compressed -.zaz,application/vnd.zzazz.deck+xml -.zip,application/zip -.zip,application/x-compressed -.zip,application/x-zip-compressed -.zip,multipart/x-zip -.zir,application/vnd.zul -.zmm,application/vnd.handheld-entertainment+xml -.zoo,application/octet-stream -.zsh,text/x-script.zsh +application/acad,dwg +application/andrew-inset,N/A +application/applixware,aw +application/arj,arj +application/atom+xml,atom +application/atomcat+xml,atomcat +application/atomsvc+xml,atomsvc +application/base64,mm mme +application/binhex,hqx +application/binhex4,hqx +application/book,boo book +application/ccxml+xml,ccxml +application/cdf,cdf +application/cdmi-capability,cdmia +application/cdmi-container,cdmic +application/cdmi-domain,cdmid +application/cdmi-object,cdmio +application/cdmi-queue,cdmiq +application/clariscad,ccad +application/commonground,dp +application/cu-seeme,cu +application/davmount+xml,davmount +application/drafting,drw +application/dsptype,tsp +application/dssc+der,dssc +application/dssc+xml,xdssc +application/dxf,dxf +application/ecmascript,es +application/emma+xml,emma +application/envoy,evy +application/epub+zip,epub +application/excel,xl xla xlb xlc xld xlk xll xlm xls xlt xlv xlw +application/exi,exi +application/font-tdpfr,pfr +application/fractals,fif +application/freeloader,frl +application/futuresplash,spl +application/gnutar,tgz +application/groupwise,vew +application/gzip,gz gzip +application/hlp,hlp +application/hta,hta +application/hyperstudio,stk +application/i-deas,unv +application/iff,iff +application/iges,iges igs +application/inf,inf +application/ipfix,ipfix +application/java,class +application/java-archive,jar +application/java-byte-code,class +application/java-serialized-object,ser +application/java-vm,class +application/javascript,js +application/json,json +application/lha,lha +application/lzx,lzx +application/mac-binary,bin +application/mac-binhex,hqx +application/mac-binhex40,hqx +application/mac-compactpro,cpt +application/macbinary,bin +application/mads+xml,mads +application/manifest+json,webmanifest +application/marc,mrc +application/marcxml+xml,mrcx +application/mathematica,ma +application/mathml+xml,mathml +application/mbedlet,mbd +application/mbox,mbox +application/mcad,mcd +application/mediaservercontrol+xml,mscml +application/metalink4+xml,meta4 +application/mets+xml,mets +application/mime,aps +application/mods+xml,mods +application/mp21,m21 +application/mp4,mp4 +application/mspowerpoint,pot pps ppt ppz +application/msword,doc dot w6w wiz word +application/mswrite,wri +application/mxf,mxf +application/netmc,mcp +application/octet-stream,a arc arj bin com dump exe keychain lzh lzx o psd saveme sdf uu zoo +application/oda,oda +application/oebps-package+xml,opf +application/ogg,ogx +application/onenote,onetoc +application/patch-ops-error+xml,xer +application/pdf,pdf +application/pgp-encrypted, +application/pgp-keys,key +application/pgp-signature,pgp +application/pics-rules,prf +application/pkcs-12,p12 +application/pkcs-crl,crl +application/pkcs10,p10 +application/pkcs7-mime,p7c p7m +application/pkcs7-signature,p7s +application/pkcs8,p8 +application/pkix-attr-cert,ac +application/pkix-cert,cer crt +application/pkix-crl,crl +application/pkix-pkipath,pkipath +application/pkixcmp,pki +application/pls+xml,pls +application/postscript,ai eps ps +application/powerpoint,ppt +application/pro_eng,part prt +application/prs.cww,cww +application/pskc+xml,pskcxml +application/rdf+xml,rdf +application/reginfo+xml,rif +application/relax-ng-compact-syntax,rnc +application/resource-lists+xml,rl +application/resource-lists-diff+xml,rld +application/ringing-tones,rng +application/rls-services+xml,rs +application/rsd+xml,rsd +application/rss+xml,rss +application/rtf,rtf rtx +application/sbml+xml,sbml +application/scvp-cv-request,scq +application/scvp-cv-response,scs +application/scvp-vp-request,spq +application/scvp-vp-response,spp +application/sdp,sdp +application/sea,sea +application/set,set +application/set-payment-initiation,setpay +application/set-registration-initiation,setreg +application/shf+xml,shf +application/sla,stl +application/smil+xml,smi +application/smil,smi smil +application/solids,sol +application/sounder,sdr +application/sparql-query,rq +application/sparql-results+xml,srx +application/srgs+xml,grxml +application/srgs,gram +application/sru+xml,sru +application/ssml+xml,ssml +application/step,step stp +application/streamingmedia,ssm +application/tei+xml,tei +application/thraud+xml,tfi +application/timestamped-data,tsd +application/toolbook,tbk +application/vda,vda +application/vnd.3gpp.pic-bw-large,plb +application/vnd.3gpp.pic-bw-small,psb +application/vnd.3gpp.pic-bw-var,pvb +application/vnd.3gpp2.tcap,tcap +application/vnd.3m.post-it-notes,pwn +application/vnd.accpac.simply.aso,aso +application/vnd.accpac.simply.imp,imp +application/vnd.acucobol,acu +application/vnd.acucorp,atc +application/vnd.adobe.air-application-installer-package+zip,air +application/vnd.adobe.fxp,fxp +application/vnd.adobe.xdp+xml,xdp +application/vnd.adobe.xfdf,xfdf +application/vnd.ahead.space,ahead +application/vnd.airzip.filesecure.azf,azf +application/vnd.airzip.filesecure.azs,azs +application/vnd.amazon.ebook,azw +application/vnd.americandynamics.acc,acc +application/vnd.amiga.ami,ami +application/vnd.android.package-archive,apk +application/vnd.anser-web-certificate-issue-initiation,cii +application/vnd.anser-web-funds-transfer-initiation,fti +application/vnd.antix.game-component,atx +application/vnd.apple.installer+xml,mpkg +application/vnd.apple.mpegurl,m3u8 +application/vnd.apple.pages,pages +application/vnd.aristanetworks.swi,swi +application/vnd.audiograph,aep +application/vnd.blueice.multipass,mpm +application/vnd.bmi,bmi +application/vnd.businessobjects,rep +application/vnd.chemdraw+xml,cdxml +application/vnd.chipnuts.karaoke-mmd,mmd +application/vnd.cinderella,cdy +application/vnd.claymore,cla +application/vnd.cloanto.rp9,rp9 +application/vnd.clonk.c4group,c4g +application/vnd.cluetrust.cartomobile-config,c11amc +application/vnd.cluetrust.cartomobile-config-pkg,c11amz +application/vnd.commonspace,csp +application/vnd.contact.cmsg,cdbcmsg +application/vnd.cosmocaller,cmc +application/vnd.crick.clicker,clkx +application/vnd.crick.clicker.keyboard,clkk +application/vnd.crick.clicker.palette,clkp +application/vnd.crick.clicker.template,clkt +application/vnd.crick.clicker.wordbank,clkw +application/vnd.criticaltools.wbs+xml,wbs +application/vnd.ctc-posml,pml +application/vnd.cups-ppd,ppd +application/vnd.curl.car,car +application/vnd.curl.pcurl,pcurl +application/vnd.data-vision.rdz,rdz +application/vnd.denovo.fcselayout-link,fe_launch +application/vnd.dna,dna +application/vnd.dolby.mlp,mlp +application/vnd.dpgraph,dpg +application/vnd.dreamfactory,dfac +application/vnd.dvb.ait,ait +application/vnd.dvb.service,svc +application/vnd.dynageo,geo +application/vnd.ecowin.chart,mag +application/vnd.enliven,nml +application/vnd.epson.esf,esf +application/vnd.epson.msf,msf +application/vnd.epson.quickanime,qam +application/vnd.epson.salt,slt +application/vnd.epson.ssf,ssf +application/vnd.eszigno3+xml,es3 +application/vnd.ezpix-album,ez2 +application/vnd.ezpix-package,ez3 +application/vnd.fdf,fdf +application/vnd.fdsn.seed,seed +application/vnd.flographit,gph +application/vnd.fluxtime.clip,ftc +application/vnd.framemaker,fm +application/vnd.frogans.fnc,fnc +application/vnd.frogans.ltf,ltf +application/vnd.fsc.weblaunch,fsc +application/vnd.fujitsu.oasys,oas +application/vnd.fujitsu.oasys2,oa2 +application/vnd.fujitsu.oasys3,oa3 +application/vnd.fujitsu.oasysgp,fg5 +application/vnd.fujitsu.oasysprs,bh2 +application/vnd.fujixerox.ddd,ddd +application/vnd.fujixerox.docuworks,xdw +application/vnd.fujixerox.docuworks.binder,xbd +application/vnd.fuzzysheet,fzs +application/vnd.genomatix.tuxedo,txd +application/vnd.geogebra.file,ggb +application/vnd.geogebra.tool,ggt +application/vnd.geometry-explorer,gex +application/vnd.geonext,gxt +application/vnd.geoplan,g2w +application/vnd.geospace,g3w +application/vnd.gmx,gmx +application/vnd.google-earth.kml+xml,kml +application/vnd.google-earth.kmz,kmz +application/vnd.grafeq,gqf +application/vnd.groove-account,gac +application/vnd.groove-help,ghf +application/vnd.groove-identity-message,gim +application/vnd.groove-injector,grv +application/vnd.groove-tool-message,gtm +application/vnd.groove-tool-template,tpl +application/vnd.groove-vcard,vcg +application/vnd.hal+xml,hal +application/vnd.handheld-entertainment+xml,zmm +application/vnd.hbci,hbci +application/vnd.hhe.lesson-player,les +application/vnd.hp-hpgl,hgl hpg hpgl +application/vnd.hp-hpid,hpid +application/vnd.hp-hps,hps +application/vnd.hp-jlyt,jlt +application/vnd.hp-pcl,pcl +application/vnd.hp-pclxl,pclxl +application/vnd.hydrostatix.sof-data,sfd-hdstx +application/vnd.hzn-3d-crossword,x3d +application/vnd.ibm.minipay,mpy +application/vnd.ibm.modcap,afp +application/vnd.ibm.rights-management,irm +application/vnd.ibm.secure-container,sc +application/vnd.iccprofile,icc +application/vnd.igloader,igl +application/vnd.immervision-ivp,ivp +application/vnd.immervision-ivu,ivu +application/vnd.insors.igm,igm +application/vnd.intercon.formnet,xpw +application/vnd.intergeo,i2g +application/vnd.intu.qbo,qbo +application/vnd.intu.qfx,qfx +application/vnd.ipunplugged.rcprofile,rcprofile +application/vnd.irepository.package+xml,irp +application/vnd.is-xpr,xpr +application/vnd.isac.fcs,fcs +application/vnd.jam,jam +application/vnd.jcp.javame.midlet-rms,rms +application/vnd.jisp,jisp +application/vnd.joost.joda-archive,joda +application/vnd.kahootz,ktz +application/vnd.kde.karbon,karbon +application/vnd.kde.kchart,chrt +application/vnd.kde.kformula,kfo +application/vnd.kde.kivio,flw +application/vnd.kde.kontour,kon +application/vnd.kde.kpresenter,kpr +application/vnd.kde.kspread,ksp +application/vnd.kde.kword,kwd +application/vnd.kenameaapp,htke +application/vnd.kidspiration,kia +application/vnd.kinar,kne +application/vnd.koan,skp +application/vnd.kodak-descriptor,sse +application/vnd.las.las+xml,lasxml +application/vnd.llamagraphics.life-balance.desktop,lbd +application/vnd.llamagraphics.life-balance.exchange+xml,lbe +application/vnd.lotus-1-2-3,23 +application/vnd.lotus-approach,apr +application/vnd.lotus-freelance,pre +application/vnd.lotus-notes,nsf +application/vnd.lotus-organizer,org +application/vnd.lotus-screencam,scm +application/vnd.lotus-wordpro,lwp +application/vnd.macports.portpkg,portpkg +application/vnd.mcd,mcd +application/vnd.medcalcdata,mc1 +application/vnd.mediastation.cdkey,cdkey +application/vnd.mfer,mwf +application/vnd.mfmp,mfm +application/vnd.micrografx.flo,flo +application/vnd.micrografx.igx,igx +application/vnd.mif,mif +application/vnd.mobius.daf,daf +application/vnd.mobius.dis,dis +application/vnd.mobius.mbk,mbk +application/vnd.mobius.mqy,mqy +application/vnd.mobius.msl,msl +application/vnd.mobius.plc,plc +application/vnd.mobius.txf,txf +application/vnd.mophun.application,mpn +application/vnd.mophun.certificate,mpc +application/vnd.mozilla.xul+xml,xul +application/vnd.ms-artgalry,cil +application/vnd.ms-cab-compressed,cab +application/vnd.ms-excel,xlb xlc xll xlm xls xlw +application/vnd.ms-excel.addin.macroenabled.12,xlam +application/vnd.ms-excel.sheet.binary.macroenabled.12,xlsb +application/vnd.ms-excel.sheet.macroenabled.12,xlsm +application/vnd.ms-excel.template.macroenabled.12,xltm +application/vnd.ms-fontobject,eot +application/vnd.ms-htmlhelp,chm +application/vnd.ms-ims,ims +application/vnd.ms-lrm,lrm +application/vnd.ms-officetheme,thmx +application/vnd.ms-outlook,msg +application/vnd.ms-pki.certstore,sst +application/vnd.ms-pki.pko,pko +application/vnd.ms-pki.seccat,cat +application/vnd.ms-pki.stl,stl +application/vnd.ms-powerpoint,pot ppa pps ppt pwz +application/vnd.ms-powerpoint.addin.macroenabled.12,ppam +application/vnd.ms-powerpoint.presentation.macroenabled.12,pptm +application/vnd.ms-powerpoint.slide.macroenabled.12,sldm +application/vnd.ms-powerpoint.slideshow.macroenabled.12,ppsm +application/vnd.ms-powerpoint.template.macroenabled.12,potm +application/vnd.ms-project,mpp +application/vnd.ms-word.document.macroenabled.12,docm +application/vnd.ms-word.template.macroenabled.12,dotm +application/vnd.ms-works,wps +application/vnd.ms-wpl,wpl +application/vnd.ms-xpsdocument,xps +application/vnd.mseq,mseq +application/vnd.musician,mus +application/vnd.muvee.style,msty +application/vnd.neurolanguage.nlu,nlu +application/vnd.noblenet-directory,nnd +application/vnd.noblenet-sealer,nns +application/vnd.noblenet-web,nnw +application/vnd.nokia.configuration-message,ncm +application/vnd.nokia.n-gage.data,ngdat +application/vnd.nokia.n-gage.symbian.install,n-gage +application/vnd.nokia.radio-preset,rpst +application/vnd.nokia.radio-presets,rpss +application/vnd.nokia.ringing-tone,rng +application/vnd.novadigm.edm,edm +application/vnd.novadigm.edx,edx +application/vnd.novadigm.ext,ext +application/vnd.oasis.opendocument.chart,odc +application/vnd.oasis.opendocument.chart-template,otc +application/vnd.oasis.opendocument.database,odb +application/vnd.oasis.opendocument.formula,odf +application/vnd.oasis.opendocument.formula-template,odft +application/vnd.oasis.opendocument.graphics,odg +application/vnd.oasis.opendocument.graphics-template,otg +application/vnd.oasis.opendocument.image,odi +application/vnd.oasis.opendocument.image-template,oti +application/vnd.oasis.opendocument.presentation,odp +application/vnd.oasis.opendocument.presentation-template,otp +application/vnd.oasis.opendocument.spreadsheet,ods +application/vnd.oasis.opendocument.spreadsheet-template,ots +application/vnd.oasis.opendocument.text,odt +application/vnd.oasis.opendocument.text-master,odm +application/vnd.oasis.opendocument.text-template,ott +application/vnd.oasis.opendocument.text-web,oth +application/vnd.olpc-sugar,xo +application/vnd.oma.dd2+xml,dd2 +application/vnd.openofficeorg.extension,oxt +application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx +application/vnd.openxmlformats-officedocument.presentationml.slide,sldx +application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx +application/vnd.openxmlformats-officedocument.presentationml.template,potx +application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx +application/vnd.openxmlformats-officedocument.spreadsheetml.template,xltx +application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx +application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx +application/vnd.osgeo.mapguide.package,mgp +application/vnd.osgi.dp,dp +application/vnd.palm,pdb +application/vnd.pawaafile,paw +application/vnd.pg.format,str +application/vnd.pg.osasli,ei6 +application/vnd.picsel,efif +application/vnd.pmi.widget,wg +application/vnd.pocketlearn,plf +application/vnd.powerbuilder6,pbd +application/vnd.previewsystems.box,box +application/vnd.proteus.magazine,mgz +application/vnd.publishare-delta-tree,qps +application/vnd.pvi.ptid1,ptid +application/vnd.quark.quarkxpress,qxd +application/vnd.realvnc.bed,bed +application/vnd.recordare.musicxml+xml,musicxml +application/vnd.recordare.musicxml,mxl +application/vnd.rig.cryptonote,cryptonote +application/vnd.rim.cod,cod +application/vnd.rn-realmedia,rm +application/vnd.rn-realplayer,rnx +application/vnd.route66.link66+xml,link66 +application/vnd.sailingtracker.track,st +application/vnd.seemail,see +application/vnd.sema,sema +application/vnd.semd,semd +application/vnd.semf,semf +application/vnd.shana.informed.formdata,ifm +application/vnd.shana.informed.formtemplate,itp +application/vnd.shana.informed.interchange,iif +application/vnd.shana.informed.package,ipk +application/vnd.simtech-mindmapper,twd +application/vnd.smaf,mmf +application/vnd.smart.teacher,teacher +application/vnd.solent.sdkm+xml,sdkm +application/vnd.spotfire.dxp,dxp +application/vnd.spotfire.sfs,sfs +application/vnd.stardivision.calc,sdc +application/vnd.stardivision.draw,sda +application/vnd.stardivision.impress,sdd +application/vnd.stardivision.math,smf +application/vnd.stardivision.writer,sdw +application/vnd.stardivision.writer-global,sgl +application/vnd.stepmania.stepchart,sm +application/vnd.sun.xml.calc,sxc +application/vnd.sun.xml.calc.template,stc +application/vnd.sun.xml.draw,sxd +application/vnd.sun.xml.draw.template,std +application/vnd.sun.xml.impress,sxi +application/vnd.sun.xml.impress.template,sti +application/vnd.sun.xml.math,sxm +application/vnd.sun.xml.writer,sxw +application/vnd.sun.xml.writer.global,sxg +application/vnd.sun.xml.writer.template,stw +application/vnd.sus-calendar,sus +application/vnd.svd,svd +application/vnd.symbian.install,sis +application/vnd.syncml+xml,xsm +application/vnd.syncml.dm+wbxml,bdm +application/vnd.syncml.dm+xml,xdm +application/vnd.tao.intent-module-archive,tao +application/vnd.tmobile-livetv,tmo +application/vnd.trid.tpt,tpt +application/vnd.triscape.mxs,mxs +application/vnd.trueapp,tra +application/vnd.ufdl,ufd +application/vnd.uiq.theme,utz +application/vnd.umajin,umj +application/vnd.unity,unityweb +application/vnd.uoml+xml,uoml +application/vnd.vcx,vcx +application/vnd.visio,vsd +application/vnd.visionary,vis +application/vnd.vsf,vsf +application/vnd.wap.wbxml,wbxml +application/vnd.wap.wmlc,wmlc +application/vnd.wap.wmlscriptc,wmlsc +application/vnd.webturbo,wtb +application/vnd.wolfram.player,nbp +application/vnd.wordperfect,wpd +application/vnd.wqd,wqd +application/vnd.wt.stf,stf +application/vnd.xara,web xar +application/vnd.xfdl,xfdl +application/vnd.yamaha.hv-dic,hvd +application/vnd.yamaha.hv-script,hvs +application/vnd.yamaha.hv-voice,hvp +application/vnd.yamaha.openscoreformat,osf +application/vnd.yamaha.openscoreformat.osfpvg+xml,osfpvg +application/vnd.yamaha.smaf-audio,saf +application/vnd.yamaha.smaf-phrase,spf +application/vnd.yellowriver-custom-menu,cmp +application/vnd.zul,zir +application/vnd.zzazz.deck+xml,zaz +application/vocaltec-media-desc,vmd +application/vocaltec-media-file,vmf +application/voicexml+xml,vxml +application/wasm,wasm +application/widget,wgt +application/winhlp,hlp +application/wordperfect,wp wp5 wp6 wpd +application/wordperfect6.0,w60 wp5 +application/wordperfect6.1,w61 +application/wsdl+xml,wsdl +application/wspolicy+xml,wspolicy +application/x-123,wk1 +application/x-7z-compressed,7z +application/x-abiword,abw +application/x-ace-compressed,ace +application/x-aim,aim +application/x-authorware-bin,aab +application/x-authorware-map,aam +application/x-authorware-seg,aas +application/x-bcpio,bcpio +application/x-binary,bin +application/x-binhex40,hqx +application/x-bittorrent,torrent +application/x-bsh,bsh sh shar +application/x-bytecode.python,pyc +application/x-bzip,bz +application/x-bzip2,boz bz2 +application/x-cdf,cdf +application/x-cdlink,vcd +application/x-chat,cha chat +application/x-chess-pgn,pgn +application/x-cmu-raster,ras +application/x-cocoa,cco +application/x-compactpro,cpt +application/x-compress,z +application/x-compressed,gz tgz z zip +application/x-conference,nsc +application/x-cpio,cpio +application/x-cpt,cpt +application/x-csh,csh +application/x-debian-package,deb +application/x-deepv,deepv +application/x-director,dcr dir dxr +application/x-doom,wad +application/x-dtbncx+xml,ncx +application/x-dtbook+xml,dtb +application/x-dtbresource+xml,res +application/x-dvi,dvi +application/x-elc,elc +application/x-envoy,env evy +application/x-esrehber,es +application/x-excel,xla xlb xlc xld xlk xll xlm xls xlt xlv xlw +application/x-font-bdf,bdf +application/x-font-ghostscript,gsf +application/x-font-linux-psf,psf +application/x-font-pcf,pcf +application/x-font-snf,snf +application/x-font-type1,pfa +application/x-frame,mif +application/x-freelance,pre +application/x-futuresplash,spl +application/x-gnumeric,gnumeric +application/x-gsp,gsp +application/x-gss,gss +application/x-gtar,gtar +application/x-gzip,gz gzip +application/x-hdf,hdf +application/x-helpfile,help hlp +application/x-httpd-imap,imap +application/x-ima,ima +application/x-internett-signup,ins +application/x-inventor,iv +application/x-ip2,ip +application/x-java-class,class +application/x-java-commerce,jcm +application/x-java-jnlp-file,jnlp +application/x-koan,skd skm skp skt +application/x-ksh,ksh +application/x-latex,latex ltx +application/x-lha,lha +application/x-lisp,lsp +application/x-livescreen,ivy +application/x-lotus,wq1 +application/x-lotusscreencam,scm +application/x-lzh,lzh +application/x-lzx,lzx +application/x-mac-binhex40,hqx +application/x-macbinary,bin +application/x-magic-cap-package-1.0,mc${'$'} +application/x-mathcad,mcd +application/x-meme,mm +application/x-midi,mid midi +application/x-mif,mif +application/x-mix-transfer,nix +application/x-mobipocket-ebook,prc +application/x-mplayer2,asx +application/x-ms-application,application +application/x-ms-wmd,wmd +application/x-ms-wmz,wmz +application/x-ms-xbap,xbap +application/x-msaccess,mdb +application/x-msbinder,obd +application/x-mscardfile,crd +application/x-msclip,clp +application/x-msdownload,exe +application/x-msexcel,xla xls xlw +application/x-msmediaview,mvb +application/x-msmetafile,wmf +application/x-msmoney,mny +application/x-mspowerpoint,ppt +application/x-mspublisher,pub +application/x-msschedule,scd +application/x-msterminal,trm +application/x-mswrite,wri +application/x-navi-animation,ani +application/x-navidoc,nvd +application/x-navimap,map +application/x-navistyle,stl +application/x-netcdf,cdf nc +application/x-newton-compatible-pkg,pkg +application/x-nokia-9000-communicator-add-on-software,aos +application/x-omc,omc +application/x-omcdatamaker,omcd +application/x-omcregerator,omcr +application/x-pagemaker,pm4 pm5 +application/x-pcl,pcl +application/x-pem-file,pem +application/x-pixclscript,plx +application/x-pkcs12,pfx +application/x-pkcs7-certificates,p7b spc +application/x-pkcs7-certreqresp,p7r +application/x-pkcs7-signature,p7a +application/x-portable-anymap,pnm +application/x-project,mpc mpt mpv mpx +application/x-qpro,wb1 +application/x-rar-compressed,rar +application/x-rpm,rpm +application/x-sdp,sdp +application/x-sea,sea +application/x-seelogo,sl +application/x-sh,sh +application/x-shar,sh shar +application/x-shockwave-flash,swf +application/x-silverlight-app,xap +application/x-sit,sit +application/x-sprite,spr sprite +application/x-stuffit,sit +application/x-stuffitx,sitx +application/x-sv4cpio,sv4cpio +application/x-sv4crc,sv4crc +application/x-tar,tar +application/x-tbook,sbk tbk +application/x-tcl,tcl +application/x-tex,tex +application/x-tex-tfm,tfm +application/x-texinfo,texi texinfo +application/x-troff,roff t tr +application/x-troff-man,man +application/x-troff-me,me +application/x-troff-ms,ms +application/x-ustar,ustar +application/x-visio,vsd vst vsw +application/x-vnd.audioexplosion.mzz,mzz +application/x-vnd.ls-xpix,xpix +application/x-vrml,vrml +application/x-wais-source,src wsrc +application/x-winhelp,hlp +application/x-wintalk,wtk +application/x-world,svr wrl +application/x-wpwin,wpd +application/x-wri,wri +application/x-x509-ca-cert,crt der +application/x-x509-user-cert,crt +application/x-xfig,fig +application/x-xpinstall,xpi +application/x-xz,xz +application/x-zip-compressed,zip +application/xcap-diff+xml,xdf +application/xenc+xml,xenc +application/xhtml+xml,xhtml +application/xml,xml +application/xml-dtd,dtd +application/xop+xml,xop +application/xslt+xml,xslt +application/xspf+xml,xspf +application/xv+xml,mxml +application/yang,yang +application/yin+xml,yin +application/zip,war zip +audio/aac,aac +audio/adpcm,adp +audio/aiff,aif aifc aiff +audio/basic,au snd +audio/it,it +audio/make,funk my pfunk +audio/make.my.funk,pfunk +audio/mid,rmi +audio/midi,kar mid midi +audio/mod,mod +audio/mp4,m4a mp4a +audio/mpeg,m2a mp2 mp3 mpa mpg mpga +audio/mpeg3,mp3 +audio/nspaudio,la lma +audio/ogg,oga ogg +audio/s3m,s3m +audio/tsp-audio,tsi +audio/tsplayer,tsp +audio/vnd.dece.audio,uva +audio/vnd.digital-winds,eol +audio/vnd.dra,dra +audio/vnd.dts,dts +audio/vnd.dts.hd,dtshd +audio/vnd.lucent.voice,lvp +audio/vnd.ms-playready.media.pya,pya +audio/vnd.nuera.ecelp4800,ecelp4800 +audio/vnd.nuera.ecelp7470,ecelp7470 +audio/vnd.nuera.ecelp9600,ecelp9600 +audio/vnd.qcelp,qcp +audio/vnd.rip,rip +audio/voc,voc +audio/voxware,vox +audio/wav,wav +audio/webm,weba +audio/x-adpcm,snd +audio/x-au,au +audio/x-gsm,gsd gsm +audio/x-jam,jam +audio/x-liveaudio,lam +audio/x-matroska,mkv +audio/x-mid,mid midi +audio/x-midi,midi +audio/x-mod,mod +audio/x-mpeg,mp2 +audio/x-mpegurl,m3u +audio/x-ms-wax,wax +audio/x-ms-wma,wma +audio/x-nspaudio,la lma +audio/x-pn-realaudio,ra ram rm rmm rmp +audio/x-pn-realaudio-plugin,ra rmp rpm +audio/x-psid,sid +audio/x-realaudio,ra +audio/x-twinvq,vqf +audio/x-twinvq-plugin,vqe vql +audio/x-vnd.audioexplosion.mjuicemediafile,mjf +audio/x-voc,voc +audio/xm,xm +binary/octet-stream,dat +chemical/x-cdx,cdx +chemical/x-cif,cif +chemical/x-cmdf,cmdf +chemical/x-cml,cml +chemical/x-csml,csml +chemical/x-pdb,pdb xyz +chemical/x-xyz,xyz +font/collection ,collection +font/otf,otf +font/sfnt,sfnt +font/ttf,ttf +font/woff,woff +font/woff2,woff2 +i-world/i-vrml,ivr +image/avif,avif avifs +image/bmp,bm bmp +image/cgm,cgm +image/cmu-raster,ras rast +image/fif,fif +image/florian,flo turbot +image/g3fax,g3 +image/gif,gif +image/heic,heic +image/heif,heif +image/ief,ief iefs +image/jpeg,jfif jfif-tbnl jpe jpeg jpg +image/jutvision,jut +image/ktx,ktx +image/naplps,nap naplps +image/pict,pic pict +image/pjpeg,jfif +image/png,png x-png +image/prs.btif,btif +image/svg+xml,svg +image/tiff,tif tiff +image/vasa,mcf +image/vnd.adobe.photoshop,psd +image/vnd.dece.graphic,uvi +image/vnd.djvu,djvu +image/vnd.dvb.subtitle,sub +image/vnd.dwg,dwg dxf svf +image/vnd.dxf,dxf +image/vnd.fastbidsheet,fbs +image/vnd.fpx,fpx +image/vnd.fst,fst +image/vnd.fujixerox.edmics-mmr,mmr +image/vnd.fujixerox.edmics-rlc,rlc +image/vnd.ms-modi,mdi +image/vnd.net-fpx,fpx npx +image/vnd.rn-realflash,rf +image/vnd.rn-realpix,rp +image/vnd.wap.wbmp,wbmp +image/vnd.xiff,xif +image/webp,webp +image/x-cmu-raster,ras +image/x-cmx,cmx +image/x-dwg,dwg dxf svf +image/x-freehand,fh +image/x-icon,ico +image/x-jg,art +image/x-jps,jps +image/x-niff,nif niff +image/x-pcx,pcx +image/x-pict,pct +image/x-portable-anymap,pnm +image/x-portable-bitmap,pbm +image/x-portable-graymap,pgm +image/x-portable-pixmap,ppm +image/x-quicktime,qif qti qtif +image/x-rgb,rgb +image/x-windows-bmp,bmp +image/x-xbitmap,xbm +image/x-xbm,xbm +image/x-xpixmap,pm xpm +image/x-xwd,xwd +image/x-xwindowdump,xwd +image/xbm,xbm +image/xpm,xpm +message/rfc822,eml mht mhtml mime +model/iges,iges igs +model/mesh,msh +model/vnd.collada+xml,dae +model/vnd.dwf,dwf +model/vnd.gdl,gdl +model/vnd.gtw,gtw +model/vnd.mts,mts +model/vnd.vtu,vtu +model/vrml,vrml wrl wrz +model/x-pov,pov +multipart/x-gzip,gzip +multipart/x-ustar,ustar +multipart/x-zip,zip +music/crescendo,mid midi +music/x-karaoke,kar +paleovu/x-pv,pvu +text/asp,asp +text/calendar,ics +text/css,css +text/csv,csv +text/html,acgi htm html htmls htx shtml +text/javascript,js mjs +text/mcf,mcf +text/n3,n3 +text/pascal,pas +text/plain,c c++ cc com conf cxx def f f90 for g h hh idc jav java list log lst m mar pl sdml text txt +text/plain-bas,par +text/prs.lines.tag,dsc +text/richtext,rt rtx +text/rtf,rtf +text/scriplet,wsc +text/sgml,sgm sgml +text/srt,srt +text/tab-separated-values,tsv +text/troff,t +text/turtle,ttl +text/uri-list,uni unis uri uris +text/vnd.abc,abc +text/vnd.curl,curl +text/vnd.curl.dcurl,dcurl +text/vnd.curl.mcurl,mcurl +text/vnd.curl.scurl,scurl +text/vnd.fly,fly +text/vnd.fmi.flexstor,flx +text/vnd.graphviz,gv +text/vnd.in3d.3dml,3dml +text/vnd.in3d.spot,spot +text/vnd.rn-realtext,rt +text/vnd.sun.j2me.app-descriptor,jad +text/vnd.wap.wml,wml +text/vnd.wap.wmlscript,wmls +text/vtt,vtt +text/webviewhtml,htt +text/x-asm,asm s +text/x-audiosoft-intra,aip +text/x-c,c cc cpp +text/x-component,htc +text/x-fortran,f f77 f90 for +text/x-h,h hh +text/x-java-source,jav java +text/x-la-asf,lsx +text/x-m,m +text/x-pascal,p +text/x-script,hlb +text/x-script.csh,csh +text/x-script.elisp,el +text/x-script.guile,scm +text/x-script.ksh,ksh +text/x-script.lisp,lsp +text/x-script.perl,pl +text/x-script.perl-module,pm +text/x-script.python,py +text/x-script.rexx,rexx +text/x-script.scheme,scm +text/x-script.sh,sh +text/x-script.tcl,tcl +text/x-script.tcsh,tcsh +text/x-script.zsh,zsh +text/x-server-parsed-html,shtml ssi +text/x-setext,etx +text/x-sgml,sgm sgml +text/x-speech,spc talk +text/x-uil,uil +text/x-uuencode,uu uue +text/x-vcalendar,vcs +text/x-vcard,vcf +text/xml,xml +text/yaml,yaml +video/3gpp,3gp +video/3gpp2,3g2 +video/animaflex,afl +video/avi,avi +video/avs-video,avs +video/dl,dl +video/dvd,vob +video/fli,fli +video/gl,gl +video/h261,h261 +video/h263,h263 +video/h264,h264 +video/jpeg,jpgv +video/jpm,jpm +video/mj2,mj2 +video/mp4,m4v mp4 +video/mpeg,m1v m2v mp2 mpe mpeg mpg +video/msvideo,avi +video/ogg,ogv +video/quicktime,moov mov qt +video/vdo,vdo +video/vivo,viv vivo +video/vnd.dece.hd,uvh +video/vnd.dece.mobile,uvm +video/vnd.dece.pd,uvp +video/vnd.dece.sd,uvs +video/vnd.dece.video,uvv +video/vnd.fvt,fvt +video/vnd.mpegurl,mxu +video/vnd.ms-playready.media.pyv,pyv +video/vnd.rn-realvideo,rv +video/vnd.uvvu.mp4,uvu +video/vnd.vivo,viv vivo +video/vosaic,vos +video/webm,webm +video/x-amt-demorun,xdr +video/x-amt-showrun,xsr +video/x-atomic3d-feature,fmf +video/x-dl,dl +video/x-dv,dif dv +video/x-f4v,f4v +video/x-fli,fli +video/x-flv,flv +video/x-gl,gl +video/x-isvideo,isu +video/x-matroska,mkv +video/x-motion-jpeg,mjpg +video/x-mpeg,mp2 +video/x-mpeq2a,mp2 +video/x-ms-asf,asf asx +video/x-ms-asf-plugin,asx +video/x-ms-wm,wm +video/x-ms-wmv,wmv +video/x-ms-wmx,wmx +video/x-ms-wvx,wvx +video/x-msvideo,avi +video/x-qtc,qtc +video/x-scm,scm +video/x-sgi-movie,movie mv +windows/metafile,wmf +www/mime,mime +x-conference/x-cooltalk,ice +x-music/x-midi,mid midi +x-world/x-3dmf,3dm 3dmf qd3 qd3d +x-world/x-svr,svr +x-world/x-vrml,vrml wrl wrz +x-world/x-vrt,vrt +xgl/drawing,xgz +xgl/movie,xmz """ internal fun loadMimes(): List> { return rawMimes.lineSequence().mapNotNull { val line = it.trim() if (line.isEmpty()) return@mapNotNull null - - val index = line.indexOf(',') - val extension = line.substring(0, index) - val mime = line.substring(index + 1) - - extension.removePrefix(".").toLowerCasePreservingASCIIRules() to mime.toContentType() - }.toList() + val (mime, extensions) = line.split(',') + extensions.split(" ").map { + ext -> ext.toLowerCasePreservingASCIIRules() to mime.toContentType() + } + }.flatten().toList() } internal val mimes: List> by lazy { loadMimes() } diff --git a/ktor-http/common/test/io/ktor/tests/http/MimesTest.kt b/ktor-http/common/test/io/ktor/tests/http/MimesTest.kt new file mode 100644 index 00000000000..31f805765ff --- /dev/null +++ b/ktor-http/common/test/io/ktor/tests/http/MimesTest.kt @@ -0,0 +1,28 @@ +/* + * Copyright 2014-2024 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +package io.ktor.tests.http + +import io.ktor.http.* +import kotlin.test.* + +class MimesTest { + + @Test + fun testMimeMultipleExtensions() { + val textPlain = "text/plain".toContentType() + val textMime = "text" to textPlain + val txtMime = "txt" to textPlain + assertTrue(mimes.contains(textMime)) + assertTrue(mimes.contains(txtMime)) + } + + @Test + fun testMimeSingleExtension() { + val acad = "application/acad".toContentType() + val dwgMime = "dwg" to acad + assertTrue(mimes.contains(dwgMime)) + } + +} From 4b31de38d47d84d6f42259a1da4203275862aef4 Mon Sep 17 00:00:00 2001 From: Anton Erofeev Date: Fri, 18 Oct 2024 00:21:51 +0300 Subject: [PATCH 2/3] KTOR-7586: test fix --- .../common/test/io/ktor/tests/http/ContentTypeLookupTest.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ktor-http/common/test/io/ktor/tests/http/ContentTypeLookupTest.kt b/ktor-http/common/test/io/ktor/tests/http/ContentTypeLookupTest.kt index 7a26a16f01e..eb6c726cbb5 100644 --- a/ktor-http/common/test/io/ktor/tests/http/ContentTypeLookupTest.kt +++ b/ktor-http/common/test/io/ktor/tests/http/ContentTypeLookupTest.kt @@ -19,8 +19,8 @@ class ContentTypeLookupTest { fun testExtensionMultiple() { assertEquals( listOf( - ContentType.parse("audio/x-pn-realaudio-plugin"), - ContentType.parse("application/x-rpm") + ContentType.parse("application/x-rpm"), + ContentType.parse("audio/x-pn-realaudio-plugin") ), ContentType.fromFileExtension(".rpm") ) From 807cdc9f9c524e46776847e7a78a554899e0bbc9 Mon Sep 17 00:00:00 2001 From: Anton Erofeev Date: Tue, 22 Oct 2024 21:33:44 +0300 Subject: [PATCH 3/3] KTOR-7586: fix review points --- ktor-http/common/src/io/ktor/http/Mimes.kt | 52 +++++++++-------- .../ktor/tests/http/ContentTypeLookupTest.kt | 57 ++++++++++++++++++- .../test/io/ktor/tests/http/MimesTest.kt | 5 ++ 3 files changed, 89 insertions(+), 25 deletions(-) diff --git a/ktor-http/common/src/io/ktor/http/Mimes.kt b/ktor-http/common/src/io/ktor/http/Mimes.kt index 682b346c37c..f398f8374f9 100644 --- a/ktor-http/common/src/io/ktor/http/Mimes.kt +++ b/ktor-http/common/src/io/ktor/http/Mimes.kt @@ -6,10 +6,12 @@ package io.ktor.http import io.ktor.util.* +internal const val MIMES_COUNT: Int = 1212 + private val rawMimes: String get() = """ application/acad,dwg -application/andrew-inset,N/A +application/andrew-inset,ez application/applixware,aw application/arj,arj application/atom+xml,atom @@ -35,7 +37,6 @@ application/dsptype,tsp application/dssc+der,dssc application/dssc+xml,xdssc application/dxf,dxf -application/ecmascript,es application/emma+xml,emma application/envoy,evy application/epub+zip,epub @@ -61,15 +62,14 @@ application/java-archive,jar application/java-byte-code,class application/java-serialized-object,ser application/java-vm,class -application/javascript,js application/json,json application/lha,lha application/lzx,lzx +application/macbinary,bin application/mac-binary,bin application/mac-binhex,hqx application/mac-binhex40,hqx application/mac-compactpro,cpt -application/macbinary,bin application/mads+xml,mads application/manifest+json,webmanifest application/marc,mrc @@ -85,7 +85,6 @@ application/mets+xml,mets application/mime,aps application/mods+xml,mods application/mp21,m21 -application/mp4,mp4 application/mspowerpoint,pot pps ppt ppz application/msword,doc dot w6w wiz word application/mswrite,wri @@ -142,7 +141,6 @@ application/set-registration-initiation,setreg application/shf+xml,shf application/sla,stl application/smil+xml,smi -application/smil,smi smil application/solids,sol application/sounder,sdr application/sparql-query,rq @@ -234,8 +232,6 @@ application/vnd.fdsn.seed,seed application/vnd.flographit,gph application/vnd.fluxtime.clip,ftc application/vnd.framemaker,fm -application/vnd.frogans.fnc,fnc -application/vnd.frogans.ltf,ltf application/vnd.fsc.weblaunch,fsc application/vnd.fujitsu.oasys,oas application/vnd.fujitsu.oasys2,oa2 @@ -277,7 +273,6 @@ application/vnd.hp-pclxl,pclxl application/vnd.hydrostatix.sof-data,sfd-hdstx application/vnd.hzn-3d-crossword,x3d application/vnd.ibm.minipay,mpy -application/vnd.ibm.modcap,afp application/vnd.ibm.rights-management,irm application/vnd.ibm.secure-container,sc application/vnd.iccprofile,icc @@ -314,7 +309,7 @@ application/vnd.kodak-descriptor,sse application/vnd.las.las+xml,lasxml application/vnd.llamagraphics.life-balance.desktop,lbd application/vnd.llamagraphics.life-balance.exchange+xml,lbe -application/vnd.lotus-1-2-3,23 +application/vnd.lotus-1-2-3,123 application/vnd.lotus-approach,apr application/vnd.lotus-freelance,pre application/vnd.lotus-notes,nsf @@ -378,7 +373,6 @@ application/vnd.noblenet-sealer,nns application/vnd.noblenet-web,nnw application/vnd.nokia.configuration-message,ncm application/vnd.nokia.n-gage.data,ngdat -application/vnd.nokia.n-gage.symbian.install,n-gage application/vnd.nokia.radio-preset,rpst application/vnd.nokia.radio-presets,rpss application/vnd.nokia.ringing-tone,rng @@ -387,7 +381,6 @@ application/vnd.novadigm.edx,edx application/vnd.novadigm.ext,ext application/vnd.oasis.opendocument.chart,odc application/vnd.oasis.opendocument.chart-template,otc -application/vnd.oasis.opendocument.database,odb application/vnd.oasis.opendocument.formula,odf application/vnd.oasis.opendocument.formula-template,odft application/vnd.oasis.opendocument.graphics,odg @@ -543,6 +536,7 @@ application/x-cmu-raster,ras application/x-cocoa,cco application/x-compactpro,cpt application/x-compress,z +application/zip,zip application/x-compressed,gz tgz z zip application/x-conference,nsc application/x-cpio,cpio @@ -644,7 +638,6 @@ application/x-portable-anymap,pnm application/x-project,mpc mpt mpv mpx application/x-qpro,wb1 application/x-rar-compressed,rar -application/x-rpm,rpm application/x-sdp,sdp application/x-sea,sea application/x-seelogo,sl @@ -696,7 +689,7 @@ application/xspf+xml,xspf application/xv+xml,mxml application/yang,yang application/yin+xml,yin -application/zip,war zip +application/zip,war audio/aac,aac audio/adpcm,adp audio/aiff,aif aifc aiff @@ -708,7 +701,7 @@ audio/mid,rmi audio/midi,kar mid midi audio/mod,mod audio/mp4,m4a mp4a -audio/mpeg,m2a mp2 mp3 mpa mpg mpga +audio/mpeg,m2a mp2 mp3 mpa mpga audio/mpeg3,mp3 audio/nspaudio,la lma audio/ogg,oga ogg @@ -736,7 +729,6 @@ audio/x-au,au audio/x-gsm,gsd gsm audio/x-jam,jam audio/x-liveaudio,lam -audio/x-matroska,mkv audio/x-mid,mid midi audio/x-midi,midi audio/x-mod,mod @@ -747,6 +739,7 @@ audio/x-ms-wma,wma audio/x-nspaudio,la lma audio/x-pn-realaudio,ra ram rm rmm rmp audio/x-pn-realaudio-plugin,ra rmp rpm +application/x-rpm,rpm audio/x-psid,sid audio/x-realaudio,ra audio/x-twinvq,vqf @@ -938,7 +931,9 @@ video/jpeg,jpgv video/jpm,jpm video/mj2,mj2 video/mp4,m4v mp4 +application/mp4,mp4 video/mpeg,m1v m2v mp2 mpe mpeg mpg +audio/mpeg,mpg video/msvideo,avi video/ogg,ogv video/quicktime,moov mov qt @@ -968,6 +963,7 @@ video/x-flv,flv video/x-gl,gl video/x-isvideo,isu video/x-matroska,mkv +audio/x-matroska,mkv video/x-motion-jpeg,mjpg video/x-mpeg,mp2 video/x-mpeq2a,mp2 @@ -991,17 +987,27 @@ x-world/x-vrml,vrml wrl wrz x-world/x-vrt,vrt xgl/drawing,xgz xgl/movie,xmz +# Deprecated media types +application/ecmascript,es +application/javascript,js +application/smil,smi sml +application/vnd.frogans.fnc,fnc +application/vnd.frogans.ltf,ltf +application/vnd.ibm.modcap,afp +application/vnd.nokia.n-gage.symbian.install,n-gage +application/vnd.oasis.opendocument.database,odb """ internal fun loadMimes(): List> { - return rawMimes.lineSequence().mapNotNull { + return rawMimes.lineSequence().flatMapTo(ArrayList(MIMES_COUNT)) { val line = it.trim() - if (line.isEmpty()) return@mapNotNull null - val (mime, extensions) = line.split(',') - extensions.split(" ").map { - ext -> ext.toLowerCasePreservingASCIIRules() to mime.toContentType() - } - }.flatten().toList() + if (line.isEmpty() || line.startsWith("#")) return@flatMapTo emptyList() + val (mime, extensions) = line.split(",", limit = 2) + val contentType = mime.toContentType() + extensions.splitToSequence(" ").map { + ext -> ext.toLowerCasePreservingASCIIRules() to contentType + }.toList() + } } internal val mimes: List> by lazy { loadMimes() } diff --git a/ktor-http/common/test/io/ktor/tests/http/ContentTypeLookupTest.kt b/ktor-http/common/test/io/ktor/tests/http/ContentTypeLookupTest.kt index eb6c726cbb5..dece101f2b9 100644 --- a/ktor-http/common/test/io/ktor/tests/http/ContentTypeLookupTest.kt +++ b/ktor-http/common/test/io/ktor/tests/http/ContentTypeLookupTest.kt @@ -19,11 +19,64 @@ class ContentTypeLookupTest { fun testExtensionMultiple() { assertEquals( listOf( - ContentType.parse("application/x-rpm"), - ContentType.parse("audio/x-pn-realaudio-plugin") + ContentType.parse("audio/x-pn-realaudio-plugin"), + ContentType.parse("application/x-rpm") ), ContentType.fromFileExtension(".rpm") ) + + assertEquals( + listOf( + ContentType.parse("application/macbinary"), + ContentType.parse("application/mac-binary"), + ContentType.parse("application/octet-stream"), + ContentType.parse("application/x-binary"), + ContentType.parse("application/x-macbinary") + ), + ContentType.fromFileExtension(".bin") + ) + + assertEquals( + listOf( + ContentType.parse("application/zip"), + ContentType.parse("application/x-compressed"), + ContentType.parse("application/x-zip-compressed"), + ContentType.parse("multipart/x-zip") + ), + ContentType.fromFileExtension(".zip") + ) + + assertEquals( + listOf( + ContentType.parse("video/mpeg"), + ContentType.parse("audio/mpeg") + ), + ContentType.fromFileExtension(".mpg") + ) + + assertEquals( + listOf( + ContentType.parse("video/mp4"), + ContentType.parse("application/mp4") + ), + ContentType.fromFileExtension(".mp4") + ) + + assertEquals( + listOf( + ContentType.parse("video/x-matroska"), + ContentType.parse("audio/x-matroska"), + ), + ContentType.fromFileExtension(".mkv") + ) + + assertEquals( + listOf( + ContentType.parse("text/javascript"), + ContentType.parse("application/javascript"), + ), + ContentType.fromFileExtension(".js") + ) } @Test diff --git a/ktor-http/common/test/io/ktor/tests/http/MimesTest.kt b/ktor-http/common/test/io/ktor/tests/http/MimesTest.kt index 31f805765ff..cdd8eeb0053 100644 --- a/ktor-http/common/test/io/ktor/tests/http/MimesTest.kt +++ b/ktor-http/common/test/io/ktor/tests/http/MimesTest.kt @@ -25,4 +25,9 @@ class MimesTest { assertTrue(mimes.contains(dwgMime)) } + @Test + fun testMimesSize() { + assertEquals(MIMES_COUNT, mimes.size) + } + }