From d76b74665de3d0b0dfa023d548362ce23d1876a3 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Wed, 2 Sep 2026 15:07:14 +1000 Subject: [PATCH] Release version 2.0.0 Require Ruby 3.3 and refresh the bundled MIME database from mime-types-data 3.2026.0701. Use byte offsets for Unicode-safe database lookups, avoid duplicate lowercase misses, and preserve extension priorities when rebuilding the database. Update CI to cover current Ruby implementations and runners. closes #64, #65, #66 --- .gitattributes | 2 + .github/workflows/ci.yml | 56 +- .github/workflows/db.yml | 14 +- .gitignore | 1 + .ruby-version | 1 + CHANGELOG | 10 + Gemfile | 4 +- README.md | 4 + Rakefile | 16 +- lib/db/content_type_mime.db | 266 ++- lib/db/ext_mime.db | 2815 +++++++++++++++----------- lib/mini_mime.rb | 64 +- lib/mini_mime/version.rb | 2 +- mini_mime.gemspec | 8 +- test/cache_test.rb | 64 + test/database_test.rb | 151 ++ test/extension_lookup_test.rb | 59 + test/fixtures/unicode_ext_mime.db | 2 + test/mini_mime/configuration_test.rb | 26 + test/mini_mime_test.rb | 40 +- test/thread_safety_test.rb | 65 + 21 files changed, 2372 insertions(+), 1298 deletions(-) create mode 100644 .gitattributes create mode 100644 .ruby-version create mode 100644 test/cache_test.rb create mode 100644 test/database_test.rb create mode 100644 test/extension_lookup_test.rb create mode 100644 test/fixtures/unicode_ext_mime.db create mode 100644 test/thread_safety_test.rb diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9777623 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +/lib/db/*.db text eol=lf +/test/fixtures/*.db text eol=lf diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d8df2e5..11a9b27 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,42 +7,44 @@ on: - main jobs: - build: - runs-on: ${{ matrix.os }}-latest - name: "Ruby ${{ matrix.ruby }} / ${{ matrix.os }} / Failure allowed: ${{ matrix.experimental }}" - continue-on-error: ${{ matrix.experimental }} - timeout-minutes: 5 + test: + runs-on: ${{ matrix.os }} + name: "${{ matrix.ruby }} / ${{ matrix.os }}" + timeout-minutes: 10 strategy: fail-fast: false matrix: - os: ["ubuntu"] - ruby: ["3.1", "3.2"] - experimental: [false] + os: [ubuntu-24.04] + ruby: + - "3.3" + - "3.4" + - "4.0" + - "jruby-10.0" + - "jruby-10.1" + - "truffleruby-34.0" include: - - ruby: "3.2" - os: "windows" - experimental: false - - ruby: "ruby-head" - os: "ubuntu" - experimental: true - - ruby: "truffleruby-head" - os: "ubuntu" - experimental: true - - ruby: "jruby-head" - os: "ubuntu" - experimental: true - - ruby: "jruby-9.4.0.0" - os: "ubuntu" - experimental: true + - ruby: "4.0" + os: windows-2025 + steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v6 - uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true - - name: Rubocop - run: bundle exec rubocop - if: "!contains(matrix.ruby, 'jruby')" - name: Tests run: bundle exec rake test + + lint: + runs-on: ubuntu-24.04 + timeout-minutes: 5 + + steps: + - uses: actions/checkout@v6 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: "4.0" + bundler-cache: true + - name: Rubocop + run: bundle exec rubocop diff --git a/.github/workflows/db.yml b/.github/workflows/db.yml index b95e8f8..496cb20 100644 --- a/.github/workflows/db.yml +++ b/.github/workflows/db.yml @@ -6,21 +6,27 @@ on: - cron: "0 10 1 * *" workflow_dispatch: +permissions: + contents: write + pull-requests: write + jobs: update_db: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 name: "Update MIME type DB" steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v6 - uses: ruby/setup-ruby@v1 with: - ruby-version: "2.7" + ruby-version: "4.0" bundler-cache: true - name: Update mime-types-data run: bundle update mime-types-data - name: Update DB run: bundle exec rake rebuild_db + - name: Test updated DB + run: bundle exec rake test - name: Create PR run: bin/db_pull_request env: - GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index 0cb6eeb..64ceb1c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ /.bundle/ /.yardoc /Gemfile.lock +/mise.toml /_yardoc/ /coverage/ /doc/ diff --git a/.ruby-version b/.ruby-version new file mode 100644 index 0000000..d13e837 --- /dev/null +++ b/.ruby-version @@ -0,0 +1 @@ +4.0.6 diff --git a/CHANGELOG b/CHANGELOG index 99b1d31..3236357 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,13 @@ +02-09-2026 + - Version 2.0.0 + - Require Ruby 3.3 or newer + - Update the bundled MIME database from mime-types-data 3.2026.0701; some extension and content-type mappings changed to match current upstream priorities + - Use byte offsets for reliable lookups in Unicode custom databases (#65, thanks @OskarEichler) + - Avoid duplicate database reads for lowercase extension misses (#64, thanks @OskarEichler) + - Preserve preferred extensions and extension-specific priorities when rebuilding the database (#66, thanks @OskarEichler) + - Reload custom MIME databases when their configured paths change + - Validate custom database row widths, row structure, and UTF-8 encoding + 08-08-2023 - Version 1.1.5 - Update mime types from upstream diff --git a/Gemfile b/Gemfile index 1e36790..b9fe7c9 100644 --- a/Gemfile +++ b/Gemfile @@ -4,6 +4,8 @@ source 'https://rubygems.org' # Specify your gem's dependencies in mini_mime.gemspec gemspec -gem "mime-types", "~> 3" if RUBY_VERSION > '2' +gem "mime-types", "~> 3.7.0" gem "memory_profiler" gem "benchmark-ips" +gem "rubocop", platforms: :mri +gem "rubocop-discourse", platforms: :mri diff --git a/README.md b/README.md index 47b7540..5078f87 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ Minimal mime type implementation for use with the mail and rest-client gem. ## Installation +MiniMime 2.0 requires Ruby 3.3 or newer. Supported JRuby and TruffleRuby releases must implement a maintained Ruby language version. + Add this line to your application's Gemfile: ```ruby @@ -46,6 +48,8 @@ MiniMime::Configuration.ext_db_path = "path_to_file_extension_db" MiniMime::Configuration.content_type_db_path = "path_to_content_type_db" ``` +Configuration is process-global and should normally be set during application startup. Changing either path resets the lookup database so subsequent lookups use the new files. Custom databases must contain UTF-8 rows with three whitespace-separated columns, a final newline, and a consistent byte width. + Check out the [default databases](lib/db) for proper formatting and structure hints. ## Performance diff --git a/Rakefile b/Rakefile index f16f94b..2e43040 100644 --- a/Rakefile +++ b/Rakefile @@ -16,7 +16,7 @@ def pad(array) array.each do |row| i = 0 row.each do |col| - max[i] = [max[i] || 0, col.length].max + max[i] = [max[i] || 0, col.bytesize].max i += 1 end end @@ -24,7 +24,7 @@ def pad(array) array.each do |row| i = 0 row.each do |col| - col << " " * (max[i] - col.length) + col << " " * (max[i] - col.bytesize) i += 1 end end @@ -36,13 +36,14 @@ task :rebuild_db do puts "Generating mime type DB" require 'mime/types' index = {} + preferred_extensions = {} MIME::Types.each do |type| type.extensions.each { |ext| (index[ext.downcase] ||= []) << type } end - index.each do |k, list| - list.sort! { |a, b| a.priority_compare(b) } + index.each do |extension, list| + list.sort! { |a, b| a.__extension_priority_compare(b, [extension]) } end buffer = [] @@ -51,6 +52,7 @@ task :rebuild_db do mime_type = list.detect { |t| !t.obsolete? } mime_type ||= list.detect(&:registered) mime_type ||= list.first + preferred_extensions[mime_type.content_type] ||= mime_type.preferred_extension buffer << [ext.dup, mime_type.content_type.dup, mime_type.encoding.dup] end @@ -58,7 +60,7 @@ task :rebuild_db do buffer.sort! { |a, b| a[0] <=> b[0] } - File.open("lib/db/ext_mime.db", File::CREAT | File::TRUNC | File::RDWR) do |f| + File.open("lib/db/ext_mime.db", File::BINARY | File::CREAT | File::TRUNC | File::RDWR) do |f| buffer.each do |row| f.write "#{row[0]} #{row[1]} #{row[2]}\n" end @@ -77,12 +79,12 @@ task :rebuild_db do # we got to confirm we pick the right extension for each type buffer.each do |row| - row[0] = MIME::Types.type_for("xyz.#{row[0].strip}")[0].extensions[0].dup + row[0] = preferred_extensions.fetch(row[1]).dup end pad(buffer) - File.open("lib/db/content_type_mime.db", File::CREAT | File::TRUNC | File::RDWR) do |f| + File.open("lib/db/content_type_mime.db", File::BINARY | File::CREAT | File::TRUNC | File::RDWR) do |f| last = nil count = 0 buffer.each do |row| diff --git a/lib/db/content_type_mime.db b/lib/db/content_type_mime.db index 03356ab..654835a 100644 --- a/lib/db/content_type_mime.db +++ b/lib/db/content_type_mime.db @@ -3,27 +3,35 @@ aw application/applixware atom application/atom+xml 8bit atomcat application/atomcat+xml 8bit atomsvc application/atomsvc+xml 8bit +bpm application/bizagi-modeler base64 +cbor application/cbor base64 ccxml application/ccxml+xml base64 cdmia application/cdmi-capability base64 cdmic application/cdmi-container base64 cdmid application/cdmi-domain base64 cdmio application/cdmi-object base64 cdmiq application/cdmi-queue base64 +cdr application/coreldraw base64 cu application/cu-seeme base64 +mpd application/dash+xml base64 davmount application/davmount+xml base64 dcm application/dicom base64 +dif application/dif+xml base64 dbk application/docbook+xml base64 dssc application/dssc+der base64 xdssc application/dssc+xml base64 ecma application/ecmascript base64 emma application/emma+xml base64 +hdr application/envi.hdr base64 epub application/epub+zip base64 exi application/exi base64 +fits application/fits base64 pfr application/font-tdpfr base64 gml application/gml+xml base64 gpx application/gpx+xml base64 gxf application/gxf base64 gz application/gzip base64 +hwpx application/hwp+zip base64 stk application/hyperstudio base64 ink application/inkml+xml base64 ipfix application/ipfix base64 @@ -50,7 +58,6 @@ m21 application/mp21 mp4 application/mp4 base64 doc application/msword base64 mxf application/mxf base64 -nc application/netcdf base64 bin application/octet-stream base64 oda application/oda base64 opf application/oebps-package+xml base64 @@ -66,7 +73,6 @@ p10 application/pkcs10 p7m application/pkcs7-mime base64 p7s application/pkcs7-signature base64 p8 application/pkcs8 base64 -ac application/pkix-attr-cert base64 cer application/pkix-cert base64 crl application/pkix-crl base64 pkipath application/pkix-pkipath base64 @@ -95,12 +101,14 @@ scs application/scvp-cv-response spq application/scvp-vp-request base64 spp application/scvp-vp-response base64 sdp application/sdp base64 +srl application/sereal base64 setpay application/set-payment-initiation base64 setreg application/set-registration-initiation base64 sgml application/sgml base64 soc application/sgml-open-catalog base64 shf application/shf+xml base64 siv application/sieve base64 +sldprt application/sldworks base64 smi application/smil+xml 8bit rq application/sparql-query base64 srx application/sparql-results+xml base64 @@ -112,6 +120,7 @@ ssml application/ssml+xml tei application/tei+xml base64 tfi application/thraud+xml base64 tsd application/timestamped-data base64 +ttml application/ttml+xml base64 pwn application/vnd.3M.Post-it-Notes base64 plb application/vnd.3gpp.pic-bw-large base64 psb application/vnd.3gpp.pic-bw-small base64 @@ -135,9 +144,11 @@ aso application/vnd.accpac.simply.aso imp application/vnd.accpac.simply.imp base64 acu application/vnd.acucobol base64 atc application/vnd.acucorp 7bit +aet application/vnd.adobe.aftereffects.template base64 air application/vnd.adobe.air-application-installer-package+zip base64 fcdt application/vnd.adobe.formscentral.fcdt base64 fxp application/vnd.adobe.fxp base64 +idml application/vnd.adobe.indesign-idml-package base64 xdp application/vnd.adobe.xdp+xml base64 xfdf application/vnd.adobe.xfdf base64 ahead application/vnd.ahead.space base64 @@ -150,8 +161,12 @@ apk application/vnd.android.package-archive cii application/vnd.anser-web-certificate-issue-initiation base64 fti application/vnd.anser-web-funds-transfer-initiation base64 atx application/vnd.antix.game-component base64 +parquet application/vnd.apache.parquet base64 mpkg application/vnd.apple.installer+xml base64 +key application/vnd.apple.keynote base64 m3u8 application/vnd.apple.mpegurl base64 +numbers application/vnd.apple.numbers base64 +pages application/vnd.apple.pages base64 pkpass application/vnd.apple.pkpass base64 swi application/vnd.aristanetworks.swi base64 iota application/vnd.astraea-software.iota base64 @@ -204,6 +219,8 @@ qam application/vnd.epson.quickanime slt application/vnd.epson.salt base64 ssf application/vnd.epson.ssf base64 es3 application/vnd.eszigno3+xml base64 +asice application/vnd.etsi.asic-e+zip base64 +asics application/vnd.etsi.asic-s+zip base64 ez2 application/vnd.ezpix-album base64 ez3 application/vnd.ezpix-package base64 fdf application/vnd.fdf base64 @@ -252,6 +269,7 @@ hpid application/vnd.hp-hpid hps application/vnd.hp-hps base64 jlt application/vnd.hp-jlyt base64 sfd-hdstx application/vnd.hydrostatix.sof-data base64 +x3d application/vnd.hzn-3d-crossword base64 mpy application/vnd.ibm.MiniPay base64 emm application/vnd.ibm.electronic-media base64 afp application/vnd.ibm.modcap base64 @@ -266,11 +284,14 @@ xpw application/vnd.intercon.formnet i2g application/vnd.intergeo base64 qbo application/vnd.intu.qbo base64 qfx application/vnd.intu.qfx base64 +nar application/vnd.iptc.g2.newsmessage+xml base64 rcprofile application/vnd.ipunplugged.rcprofile base64 irp application/vnd.irepository.package+xml base64 xpr application/vnd.is-xpr base64 fcs application/vnd.isac.fcs base64 jam application/vnd.jam base64 +hprof application/vnd.java.hprof base64 +hprof.txt application/vnd.java.hprof.text base64 rms application/vnd.jcp.javame.midlet-rms base64 jisp application/vnd.jisp base64 joda application/vnd.joost.joda-archive base64 @@ -305,6 +326,7 @@ mfm application/vnd.mfmp flo application/vnd.micrografx.flo base64 igx application/vnd.micrografx.igx base64 mif application/vnd.mif base64 +mmp application/vnd.mindjet.mindmanager base64 mpn application/vnd.mophun.application base64 mpc application/vnd.mophun.certificate base64 xul application/vnd.mozilla.xul+xml base64 @@ -322,6 +344,8 @@ ims application/vnd.ms-ims lrm application/vnd.ms-lrm base64 thmx application/vnd.ms-officetheme base64 msg application/vnd.ms-outlook base64 +pst application/vnd.ms-outlook-pst base64 +3mf application/vnd.ms-package.3dmanufacturing-3dmodel+xml base64 cat application/vnd.ms-pki.seccat base64 stl application/vnd.ms-pki.stl base64 ppt application/vnd.ms-powerpoint base64 @@ -331,11 +355,18 @@ sldm application/vnd.ms-powerpoint.slide.macroEnabled.12 ppsm application/vnd.ms-powerpoint.slideshow.macroEnabled.12 base64 potm application/vnd.ms-powerpoint.template.macroEnabled.12 base64 mpp application/vnd.ms-project base64 +vsdx application/vnd.ms-visio.drawing base64 +vsdm application/vnd.ms-visio.drawing.macroEnabled.12 base64 +vssx application/vnd.ms-visio.stencil base64 +vssm application/vnd.ms-visio.stencil.macroEnabled.12 base64 +vstx application/vnd.ms-visio.template base64 +vstm application/vnd.ms-visio.template.macroEnabled.12 base64 docm application/vnd.ms-word.document.macroEnabled.12 base64 dotm application/vnd.ms-word.template.macroEnabled.12 base64 wcm application/vnd.ms-works base64 wpl application/vnd.ms-wpl base64 xps application/vnd.ms-xpsdocument 8bit +msa application/vnd.msa-disk-image base64 mseq application/vnd.mseq base64 mus application/vnd.musician base64 msty application/vnd.muvee.style base64 @@ -353,9 +384,12 @@ rpss application/vnd.nokia.radio-presets edm application/vnd.novadigm.EDM base64 edx application/vnd.novadigm.EDX base64 ext application/vnd.novadigm.EXT base64 +odb application/vnd.oasis.opendocument.base base64 odc application/vnd.oasis.opendocument.chart base64 odc application/vnd.oasis.opendocument.chart-template base64 -odb application/vnd.oasis.opendocument.database base64 +fodp application/vnd.oasis.opendocument.flat.presentation base64 +fods application/vnd.oasis.opendocument.flat.spreadsheet base64 +fodt application/vnd.oasis.opendocument.flat.text base64 odf application/vnd.oasis.opendocument.formula base64 odf application/vnd.oasis.opendocument.formula-template base64 odg application/vnd.oasis.opendocument.graphics base64 @@ -372,6 +406,7 @@ ott application/vnd.oasis.opendocument.text-template oth application/vnd.oasis.opendocument.text-web base64 xo application/vnd.olpc-sugar base64 dd2 application/vnd.oma.dd2+xml base64 +bau application/vnd.openofficeorg.autotext base64 oxt application/vnd.openofficeorg.extension base64 pptx application/vnd.openxmlformats-officedocument.presentationml.presentation base64 sldx application/vnd.openxmlformats-officedocument.presentationml.slide base64 @@ -452,6 +487,7 @@ bdm application/vnd.syncml.dm+wbxml xdm application/vnd.syncml.dm+xml base64 tao application/vnd.tao.intent-module-archive base64 cap application/vnd.tcpdump.pcap base64 +pcapng application/vnd.tcpdump.pcapng base64 tmo application/vnd.tmobile-livetv base64 tpt application/vnd.trid.tpt base64 mxs application/vnd.triscape.mxs base64 @@ -473,6 +509,7 @@ wmlc application/vnd.wap.wmlc wmlsc application/vnd.wap.wmlscriptc base64 wtb application/vnd.webturbo base64 nbp application/vnd.wolfram.player base64 +wl application/vnd.wolfram.wl base64 wpd application/vnd.wordperfect base64 wqd application/vnd.wqd base64 stf application/vnd.wt.stf base64 @@ -490,6 +527,8 @@ cmp application/vnd.yellowriver-custom-menu zir application/vnd.zul base64 zaz application/vnd.zzazz.deck+xml base64 vxml application/voicexml+xml base64 +warc application/warc base64 +warc.gz application/warc+gz base64 wasm application/wasm 8bit wif application/watcherinfo+xml base64 wgt application/widget base64 @@ -502,17 +541,30 @@ bck application/x-VMSBACKUP wz application/x-Wingz base64 abw application/x-abiword base64 ace application/x-ace-compressed base64 +indd application/x-adobe-indesign base64 +inx application/x-adobe-indesign-interchange base64 +amf application/x-amf base64 +adf application/x-amiga-disk-format base64 dmg application/x-apple-diskimage base64 +cwk application/x-appleworks base64 +ar application/x-archive base64 +arj application/x-arj base64 +las application/x-asprs base64 aab application/x-authorware-bin base64 aam application/x-authorware-map base64 aas application/x-authorware-seg base64 +axx application/x-axcrypt base64 +bat application/x-bat base64 bcpio application/x-bcpio base64 +bib application/x-bibtex-text-file base64 torrent application/x-bittorrent base64 bleep application/x-bleeper base64 blb application/x-blorb base64 +br application/x-brotli base64 bz application/x-bzip base64 boz application/x-bzip2 base64 cb7 application/x-cbr base64 +cda application/x-cdf base64 vcd application/x-cdlink base64 cfs application/x-cfs-compressed base64 chat application/x-chat base64 @@ -520,32 +572,49 @@ pgn application/x-chess-pgn crx application/x-chrome-extension base64 z application/x-compressed base64 nsc application/x-conference base64 +shw application/x-corelpresentations base64 cpio application/x-cpio base64 csh application/x-csh 8bit csm application/x-cu-seeme base64 +dbf application/x-dbf base64 deb application/x-debian-package base64 +dex application/x-dex base64 dgc application/x-dgc-compressed base64 dcr application/x-director base64 wad application/x-doom base64 +exe application/x-dosexec base64 ncx application/x-dtbncx+xml base64 dtb application/x-dtbook+xml base64 res application/x-dtbresource+xml base64 +ifo application/x-dvd-ifo base64 dvi application/x-dvi base64 +enw application/x-endnote-refer base64 +ens application/x-endnote-style base64 evy application/x-envoy base64 +hfa application/x-erdas-hfa base64 +lyr application/x-esri-layer base64 eva application/x-eva base64 +fb2 application/x-fictionbook+xml base64 +fp7 application/x-filemaker base64 +afm application/x-font-adobe-metric base64 bdf application/x-font-bdf base64 gsf application/x-font-ghostscript base64 psf application/x-font-linux-psf base64 pcf application/x-font-pcf base64 +pfm application/x-font-printer-metric base64 snf application/x-font-snf base64 afm application/x-font-type1 base64 arc application/x-freearc base64 spl application/x-futuresplash base64 gca application/x-gca-compressed base64 +gpkg application/x-geopackage base64 ulx application/x-glulx base64 +gnucash application/x-gnucash base64 gnumeric application/x-gnumeric base64 gramps application/x-gramps-xml base64 +grb application/x-grib base64 gtar application/x-gtar base64 +gp4 application/x-guitar-pro base64 hdf application/x-hdf base64 hep application/x-hep base64 rhtml application/x-html+ruby 8bit @@ -553,18 +622,25 @@ phtml application/x-httpd-php ibooks application/x-ibooks+zip base64 ica application/x-ica base64 imagemap application/x-imagemap 8bit -install application/x-install-instructions base64 iso application/x-iso9660-image base64 -key application/x-iwork-keynote-sffkey base64 -numbers application/x-iwork-numbers-sffnumbers base64 -pages application/x-iwork-pages-sffpages base64 +jnilib application/x-java-jnilib base64 jnlp application/x-java-jnlp-file base64 +jks application/x-java-keystore base64 +pack application/x-java-pack200 base64 +jdf application/x-jeol-jdf base64 +kil application/x-killustrator base64 ltx application/x-latex 8bit +lz4 application/x-lz4 base64 +lz application/x-lzip base64 +lzma application/x-lzma base64 cpt application/x-mac-compactpro base64 +mat application/x-matlab-data base64 +memgraph application/x-memgraph base64 mie application/x-mie base64 mobi application/x-mobipocket-ebook base64 application application/x-ms-application base64 -exe application/x-ms-dos-executable base64 +asx application/x-ms-asx base64 +msi application/x-ms-installer base64 lnk application/x-ms-shortcut base64 wmd application/x-ms-wmd base64 wmz application/x-ms-wmz base64 @@ -576,32 +652,67 @@ clp application/x-msclip cmd application/x-msdos-program base64 exe application/x-msdownload base64 m13 application/x-msmediaview base64 -emf application/x-msmetafile base64 mny application/x-msmoney base64 pub application/x-mspublisher base64 scd application/x-msschedule base64 trm application/x-msterminal base64 wri application/x-mswrite base64 +myi application/x-mysql-misam-compressed-index base64 +myd application/x-mysql-misam-data base64 +nes application/x-nesrom base64 +nc application/x-netcdf base64 pac application/x-ns-proxy-autoconfig base64 nzb application/x-nzb base64 +scad application/x-openscad base64 oex application/x-opera-extension base64 pm application/x-pagemaker base64 pl application/x-perl 8bit p12 application/x-pkcs12 base64 p7b application/x-pkcs7-certificates base64 p7r application/x-pkcs7-certreqresp base64 +mpx application/x-project base64 +prt application/x-prt base64 py application/x-python 8bit +wq1 application/x-quattro-pro base64 qtl application/x-quicktimeplayer base64 rar application/x-rar-compressed base64 ris application/x-research-info-systems base64 +toast application/x-roxio-toast base64 +rpm application/x-rpm base64 rb application/x-ruby 8bit +sas application/x-sas base64 +sa7 application/x-sas-access base64 +st7 application/x-sas-audit base64 +sas7bbak application/x-sas-backup base64 +sc7 application/x-sas-catalog base64 +sd7 application/x-sas-data base64 +si7 application/x-sas-data-index base64 +sd2 application/x-sas-data-v6 base64 +s7m application/x-sas-dmdb base64 +sf7 application/x-sas-fdb base64 +sr7 application/x-sas-itemstor base64 +sm7 application/x-sas-mddb base64 +ss7 application/x-sas-program-data base64 +sp7 application/x-sas-putility base64 +stx application/x-sas-transport base64 +su7 application/x-sas-utility base64 +sv7 application/x-sas-view base64 +xpt application/x-sas-xport base64 +sfdu application/x-sfdu base64 sh application/x-sh 8bit +shp application/x-shapefile base64 shar application/x-shar 8bit swf application/x-shockwave-flash base64 +sib application/x-sibelius base64 xap application/x-silverlight-app base64 notebook application/x-smarttech-notebook base64 +sz application/x-snappy-framed base64 +tzx application/x-spectrum-tzx base64 sav application/x-spss base64 sql application/x-sql base64 +vor application/x-staroffice-template base64 +do application/x-stata-do base64 +dta application/x-stata-dta base64 sit application/x-stuffit base64 sitx application/x-stuffitx base64 srt application/x-subrip base64 @@ -613,19 +724,29 @@ tar application/x-tar tcl application/x-tcl 8bit tex application/x-tex 8bit tfm application/x-tex-tfm base64 +vf application/x-tex-virtual-font base64 texinfo application/x-texinfo 8bit obj application/x-tgif base64 +ear application/x-tika-java-enterprise-archive base64 +war application/x-tika-java-web-archive base64 +xlr application/x-tika-msworks-spreadsheet base64 +tmx application/x-tmx base64 tbk application/x-toolbook base64 +uc2 application/x-uc2-compressed base64 ustar application/x-ustar base64 +vmdk application/x-vmdk base64 src application/x-wais-source base64 webapp application/x-web-app-manifest+json base64 -wp6 application/x-wordperfect6.1 base64 +webarchive application/x-webarchive base64 crt application/x-x509-ca-cert base64 fig application/x-xfig base64 xlf application/x-xliff+xml base64 +xlz application/x-xliff+zip base64 +xmind application/x-xmind base64 xpi application/x-xpinstall base64 xz application/x-xz base64 z1 application/x-zmachine base64 +zoo application/x-zoo base64 xaml application/xaml+xml base64 xdf application/xcap-diff+xml base64 xenc application/xenc+xml base64 @@ -634,18 +755,23 @@ xml application/xml dtd application/xml-dtd 8bit xop application/xop+xml base64 xpl application/xproc+xml base64 +xq application/xquery base64 +xslfo application/xslfo+xml base64 xslt application/xslt+xml base64 xspf application/xspf+xml base64 mxml application/xv+xml base64 yang application/yang base64 yin application/yin+xml base64 zip application/zip base64 +zst application/zstd base64 amr audio/AMR base64 awb audio/AMR-WB base64 evc audio/EVRC base64 l16 audio/L16 base64 +m4a audio/MP4A-LATM base64 smv audio/SMV base64 aac audio/aac base64 +ac3 audio/ac3 base64 adp audio/adpcm base64 au audio/basic base64 flac audio/flac base64 @@ -654,8 +780,11 @@ kar audio/midi mp4 audio/mp4 base64 mpga audio/mpeg base64 oga audio/ogg base64 +opus audio/opus base64 s3m audio/s3m base64 sil audio/silk base64 +spx audio/speex base64 +asnd audio/vnd.adobe.soundbooth base64 uva audio/vnd.dece.audio base64 eol audio/vnd.digital-winds 7bit dra audio/vnd.dra base64 @@ -672,16 +801,21 @@ ecelp9600 audio/vnd.nuera.ecelp9600 qcp audio/vnd.qcelp base64 rip audio/vnd.rip base64 smp3 audio/vnd.sealedmedia.softseal.mpeg base64 -wav audio/wav base64 +wav audio/vnd.wave base64 +ogg audio/vorbis base64 weba audio/webm base64 aif audio/x-aiff base64 caf audio/x-caf base64 +mid audio/x-midi base64 +mod audio/x-mod base64 m3u audio/x-mpegurl base64 wax audio/x-ms-wax base64 wma audio/x-ms-wma base64 wmv audio/x-ms-wmv base64 ra audio/x-pn-realaudio base64 rmp audio/x-pn-realaudio-plugin base64 +psf1 audio/x-psf base64 +sap audio/x-sap base64 xm audio/xm base64 cdx chemical/x-cdx base64 cif chemical/x-cif base64 @@ -693,15 +827,18 @@ otf font/otf ttf font/ttf base64 woff font/woff base64 woff2 font/woff2 base64 +exr image/aces base64 avif image/avif base64 bmp image/bmp base64 cgm image/cgm base64 +emf image/emf base64 g3 image/g3fax base64 gif image/gif base64 heic image/heic base64 heics image/heic-sequence base64 heif image/heif base64 heifs image/heif-sequence base64 +icns image/icns base64 ief image/ief base64 jp2 image/jp2 base64 jpeg image/jpeg base64 @@ -715,10 +852,13 @@ sgi image/sgi svg image/svg+xml 8bit tiff image/tiff base64 psd image/vnd.adobe.photoshop base64 +ppj image/vnd.adobe.premiere base64 uvg image/vnd.dece.graphic base64 +dgn image/vnd.dgn base64 djvu image/vnd.djvu base64 sub image/vnd.dvb.subtitle base64 dwg image/vnd.dwg base64 +dxb image/vnd.dxb base64 dxf image/vnd.dxf base64 fbs image/vnd.fastbidsheet base64 fpx image/vnd.fpx base64 @@ -732,18 +872,27 @@ wdp image/vnd.ms-photo npx image/vnd.net-fpx base64 wbmp image/vnd.wap.wbmp base64 xif image/vnd.xiff base64 +dcx image/vnd.zbrush.dcx base64 +pcx image/vnd.zbrush.pcx base64 webp image/webp base64 +wmf image/wmf base64 3ds image/x-3ds base64 dng image/x-adobe-dng base64 +bpg image/x-bpg base64 cr2 image/x-canon-cr2 base64 +cr3 image/x-canon-cr3 base64 crw image/x-canon-crw base64 ras image/x-cmu-raster base64 cmx image/x-cmx base64 xcfbz2 image/x-compressed-xcf base64 +dpx image/x-dpx base64 +emz image/x-emf-compressed base64 erf image/x-epson-erf base64 fh image/x-freehand base64 raf image/x-fuji-raf base64 3fr image/x-hasselblad-3fr base64 +jb2 image/x-jbig2 base64 +j2c image/x-jp2-codestream base64 k25 image/x-kodak-k25 base64 kdc image/x-kodak-kdc base64 mrw image/x-minolta-mrw base64 @@ -752,29 +901,45 @@ nef image/x-nikon-nef orf image/x-olympus-orf base64 psp image/x-paintshoppro base64 raw image/x-panasonic-raw base64 -pcx image/x-pcx base64 pef image/x-pentax-pef base64 pct image/x-pict base64 pnm image/x-portable-anymap base64 +pam image/x-portable-arbitrarymap base64 pbm image/x-portable-bitmap base64 pgm image/x-portable-graymap base64 ppm image/x-portable-pixmap base64 +bay image/x-raw-casio base64 +fff image/x-raw-imacon base64 +k25 image/x-raw-kodak base64 +mos image/x-raw-leaf base64 +pxn image/x-raw-logitech base64 +mef image/x-raw-mamiya base64 +nef image/x-raw-nikon base64 +raw image/x-raw-panasonic base64 +ptx image/x-raw-pentax base64 +iiq image/x-raw-phaseone base64 +rwz image/x-raw-rawzor base64 +r3d image/x-raw-red base64 +x3f image/x-raw-sigma base64 +arw image/x-raw-sony base64 rgb image/x-rgb base64 -x3f image/x-sigma-x3f base64 -arw image/x-sony-arw base64 sr2 image/x-sony-sr2 base64 srf image/x-sony-srf base64 tga image/x-targa base64 +tga image/x-tga base64 dgn image/x-vnd.dgn base64 xbm image/x-xbitmap 7bit xcf image/x-xcf base64 xpm image/x-xpixmap 8bit xwd image/x-xwindowdump base64 eml message/rfc822 8bit +emlx message/x-emlx base64 +e57 model/e57 base64 igs model/iges base64 msh model/mesh base64 dae model/vnd.collada+xml base64 dwf model/vnd.dwf base64 +dwfx model/vnd.dwfx+xps base64 gdl model/vnd.gdl base64 gtw model/vnd.gtw base64 mts model/vnd.mts base64 @@ -785,14 +950,18 @@ wrl model/vrml x3db model/x3d+binary base64 x3dv model/x3d+vrml base64 x3d model/x3d+xml base64 +mht multipart/related base64 +asp text/asp quoted-printable +aspx text/aspdotnet quoted-printable appcache text/cache-manifest quoted-printable ics text/calendar quoted-printable css text/css 8bit csv text/csv 8bit +es text/ecmascript quoted-printable html text/html 8bit +iso19139 text/iso19139+xml quoted-printable js text/javascript quoted-printable markdown text/markdown quoted-printable -n3 text/n3 quoted-printable txt text/plain quoted-printable dsc text/prs.lines.tag quoted-printable rtx text/richtext 8bit @@ -810,6 +979,7 @@ flx text/vnd.fmi.flexstor gv text/vnd.graphviz quoted-printable 3dml text/vnd.in3d.3dml quoted-printable spot text/vnd.in3d.spot quoted-printable +anpa text/vnd.iptc.anpa quoted-printable ccc text/vnd.net2phone.commcenter.command quoted-printable jad text/vnd.sun.j2me.app-descriptor 8bit si text/vnd.wap.si quoted-printable @@ -817,22 +987,75 @@ sl text/vnd.wap.sl wml text/vnd.wap.wml quoted-printable wmls text/vnd.wap.wmlscript quoted-printable vtt text/vtt quoted-printable +as text/x-actionscript quoted-printable +ada text/x-ada quoted-printable +applescript text/x-applescript quoted-printable +asciidoc text/x-asciidoc quoted-printable asm text/x-asm quoted-printable +aj text/x-aspectj quoted-printable +s text/x-assembly quoted-printable +awk text/x-awk quoted-printable +bas text/x-basic quoted-printable c text/x-c quoted-printable -coffee text/x-coffescript 8bit -htc text/x-component 8bit +hpp text/x-c++hdr quoted-printable +cpp text/x-c++src quoted-printable +cgi text/x-cgi quoted-printable +clj text/x-clojure quoted-printable +cbl text/x-cobol quoted-printable +coffee text/x-coffeescript quoted-printable +cfm text/x-coldfusion quoted-printable +cl text/x-common-lisp quoted-printable +config text/x-config quoted-printable +cs text/x-csharp quoted-printable +d text/x-d quoted-printable +diff text/x-diff quoted-printable +e text/x-eiffel quoted-printable +el text/x-emacs-lisp quoted-printable +erl text/x-erlang quoted-printable +exp text/x-expect quoted-printable +4th text/x-forth quoted-printable f text/x-fortran quoted-printable +go text/x-go quoted-printable +groovy text/x-groovy quoted-printable +haml text/x-haml quoted-printable +hs text/x-haskell quoted-printable +hx text/x-haxe quoted-printable +idl text/x-idl quoted-printable +ini text/x-ini quoted-printable +properties text/x-java-properties quoted-printable java text/x-java-source quoted-printable +jsp text/x-jsp quoted-printable +less text/x-less quoted-printable +l text/x-lex quoted-printable +lua text/x-lua quoted-printable +makefile text/x-makefile quoted-printable +ml text/x-ml quoted-printable +m3 text/x-modula quoted-printable nfo text/x-nfo quoted-printable +m text/x-objcsrc quoted-printable +ocaml text/x-ocaml quoted-printable opml text/x-opml quoted-printable p text/x-pascal quoted-printable +pl text/x-perl quoted-printable +php text/x-php quoted-printable +pro text/x-prolog quoted-printable +rexx text/x-rexx quoted-printable +r text/x-rsrc quoted-printable +rest text/x-rst quoted-printable +scala text/x-scala quoted-printable +sed text/x-sed quoted-printable etx text/x-setext quoted-printable sfv text/x-sfv quoted-printable +itk text/x-tcl quoted-printable uu text/x-uuencode quoted-printable +cls text/x-vbasic quoted-printable +vb text/x-vbdotnet quoted-printable vcs text/x-vcalendar 8bit vcf text/x-vcard 8bit +v text/x-verilog quoted-printable +vhd text/x-vhdl quoted-printable +y text/x-yacc quoted-printable yaml text/x-yaml 8bit -xml text/xml 8bit 3gp video/3gpp base64 3g2 video/3gpp2 base64 dv video/DV base64 @@ -842,6 +1065,7 @@ h264 video/H264 jpgv video/JPEG base64 mj2 video/MJ2 base64 ts video/MP2T base64 +m4s video/iso.segment base64 mp4 video/mp4 base64 mp2 video/mpeg base64 ogg video/ogg base64 @@ -863,20 +1087,24 @@ sswf video/vnd.sealed.swf smov video/vnd.sealedmedia.softseal.mov base64 uvu video/vnd.uvvu.mp4 base64 viv video/vnd.vivo base64 +webm video/webm base64 +drc video/x-dirac base64 dl video/x-dl base64 +flc video/x-flc base64 fli video/x-fli base64 flv video/x-flv base64 gl video/x-gl base64 ivf video/x-ivf base64 +jng video/x-jng base64 mk3d video/x-matroska base64 mng video/x-mng base64 mjpg video/x-motion-jpeg base64 -asf video/x-ms-asf base64 vob video/x-ms-vob base64 wm video/x-ms-wm base64 wmx video/x-ms-wmx base64 wvx video/x-ms-wvx base64 avi video/x-msvideo base64 +ogm video/x-ogm base64 movie video/x-sgi-movie base64 xyz x-chemical/x-xyz base64 ice x-conference/x-cooltalk base64 diff --git a/lib/db/ext_mime.db b/lib/db/ext_mime.db index ef81e60..ba0f596 100644 --- a/lib/db/ext_mime.db +++ b/lib/db/ext_mime.db @@ -1,1204 +1,1611 @@ -123 application/vnd.lotus-1-2-3 base64 -3dml text/vnd.in3d.3dml quoted-printable -3ds image/x-3ds base64 -3fr image/x-hasselblad-3fr base64 -3g2 video/3gpp2 base64 -3gp video/3gpp base64 -3gpp video/3gpp base64 -3gpp2 video/3gpp2 base64 -7z application/x-7z-compressed base64 -@dir application/x-director base64 -@dxr application/x-director base64 -aab application/x-authorware-bin base64 -aac audio/aac base64 -aam application/x-authorware-map base64 -aas application/x-authorware-seg base64 -abw application/x-abiword base64 -ac application/pkix-attr-cert base64 -acc application/vnd.americandynamics.acc base64 -ace application/x-ace-compressed base64 -acu application/vnd.acucobol base64 -acutc application/vnd.acucorp 7bit -adp audio/adpcm base64 -aep application/vnd.audiograph base64 -afm application/x-font-type1 base64 -afp application/vnd.ibm.modcap base64 -ahead application/vnd.ahead.space base64 -ai application/pdf base64 -aif audio/x-aiff base64 -aifc audio/x-aiff base64 -aiff audio/x-aiff base64 -air application/vnd.adobe.air-application-installer-package+zip base64 -ait application/vnd.dvb.ait base64 -ami application/vnd.amiga.ami base64 -amr audio/AMR base64 -ani application/octet-stream base64 -apk application/vnd.android.package-archive base64 -appcache text/cache-manifest quoted-printable -application application/x-ms-application base64 -apr application/vnd.lotus-approach base64 -arc application/x-freearc base64 -arw image/x-sony-arw base64 -asc application/pgp-signature base64 -asf application/vnd.ms-asf base64 -asm text/x-asm quoted-printable -aso application/vnd.accpac.simply.aso base64 -asx video/x-ms-asf base64 -atc application/vnd.acucorp 7bit -atom application/atom+xml 8bit -atomcat application/atomcat+xml 8bit -atomsvc application/atomsvc+xml 8bit -atx application/vnd.antix.game-component base64 -au audio/basic base64 -avi video/x-msvideo base64 -avif image/avif base64 -aw application/applixware base64 -awb audio/AMR-WB base64 -azf application/vnd.airzip.filesecure.azf base64 -azs application/vnd.airzip.filesecure.azs base64 -azw application/vnd.amazon.ebook base64 -bat application/x-msdos-program base64 -bck application/x-VMSBACKUP base64 -bcpio application/x-bcpio base64 -bdf application/x-font-bdf base64 -bdm application/vnd.syncml.dm+wbxml base64 -bed application/vnd.realvnc.bed base64 -bh2 application/vnd.fujitsu.oasysprs base64 -bin application/octet-stream base64 -bkm application/vnd.nervana base64 -blb application/x-blorb base64 -bleep application/x-bleeper base64 -blorb application/x-blorb base64 -bmi application/vnd.bmi base64 -bmp image/bmp base64 -book application/vnd.framemaker base64 -box application/vnd.previewsystems.box base64 -boz application/x-bzip2 base64 -bpd application/vnd.hbci base64 -bpk application/octet-stream base64 -btif image/prs.btif base64 -bz application/x-bzip base64 -bz2 application/x-bzip2 base64 -c text/plain quoted-printable -c11amc application/vnd.cluetrust.cartomobile-config base64 -c11amz application/vnd.cluetrust.cartomobile-config-pkg base64 -c4d application/vnd.clonk.c4group base64 -c4f application/vnd.clonk.c4group base64 -c4g application/vnd.clonk.c4group base64 -c4p application/vnd.clonk.c4group base64 -c4u application/vnd.clonk.c4group base64 -cab application/vnd.ms-cab-compressed base64 -caf audio/x-caf base64 -cap application/vnd.tcpdump.pcap base64 -car application/vnd.curl.car base64 -cat application/vnd.ms-pki.seccat base64 -cb7 application/x-cbr base64 -cba application/x-cbr base64 -cbr application/x-cbr base64 -cbt application/x-cbr base64 -cbz application/x-cbr base64 -cc text/plain quoted-printable -ccc text/vnd.net2phone.commcenter.command quoted-printable -cct application/x-director base64 -ccxml application/ccxml+xml base64 -cdbcmsg application/vnd.contact.cmsg base64 -cdf application/netcdf base64 -cdkey application/vnd.mediastation.cdkey base64 -cdmia application/cdmi-capability base64 -cdmic application/cdmi-container base64 -cdmid application/cdmi-domain base64 -cdmio application/cdmi-object base64 -cdmiq application/cdmi-queue base64 -cdx chemical/x-cdx base64 -cdxml application/vnd.chemdraw+xml base64 -cdy application/vnd.cinderella base64 -cer application/pkix-cert base64 -cfs application/x-cfs-compressed base64 -cgm image/cgm base64 -chat application/x-chat base64 -chm application/vnd.ms-htmlhelp base64 -chrt application/vnd.kde.kchart base64 -cif chemical/x-cif base64 -cii application/vnd.anser-web-certificate-issue-initiation base64 -cil application/vnd.ms-artgalry base64 -cjs text/javascript quoted-printable -cla application/vnd.claymore base64 -class application/octet-stream base64 -clkk application/vnd.crick.clicker.keyboard base64 -clkp application/vnd.crick.clicker.palette base64 -clkt application/vnd.crick.clicker.template base64 -clkw application/vnd.crick.clicker.wordbank base64 -clkx application/vnd.crick.clicker base64 -clp application/x-msclip base64 -clpi video/MP2T base64 -cmc application/vnd.cosmocaller base64 -cmd application/x-msdos-program base64 -cmdf chemical/x-cmdf base64 -cml chemical/x-cml base64 -cmp application/vnd.yellowriver-custom-menu base64 -cmx image/x-cmx base64 -cod application/vnd.rim.cod base64 -coffee text/x-coffescript 8bit -com application/x-msdos-program base64 -conf text/plain quoted-printable -cpi video/MP2T base64 -cpio application/x-cpio base64 -cpp text/plain quoted-printable -cpt application/x-mac-compactpro base64 -cr2 image/x-canon-cr2 base64 -crd application/x-mscardfile base64 -crl application/pkix-crl base64 -crt application/x-x509-ca-cert base64 -crw image/x-canon-crw base64 -crx application/x-chrome-extension base64 -cryptonote application/vnd.rig.cryptonote base64 -csh application/x-csh 8bit -csm application/x-cu-seeme base64 -csml chemical/x-csml base64 -csp application/vnd.commonspace base64 -css text/css 8bit -cst application/x-director base64 -csv text/csv 8bit -cu application/cu-seeme base64 -curl application/vnd.curl base64 -cw application/prs.cww base64 -cww application/prs.cww base64 -cxt application/x-director base64 -cxx text/x-c quoted-printable -dae model/vnd.collada+xml base64 -daf application/vnd.Mobius.DAF base64 -dart application/vnd.dart base64 -dat text/plain quoted-printable -dataless application/vnd.fdsn.seed base64 -davmount application/davmount+xml base64 -dbk application/docbook+xml base64 -dcm application/dicom base64 -dcr application/x-director base64 -dcurl text/vnd.curl.dcurl quoted-printable -dd2 application/vnd.oma.dd2+xml base64 -ddd application/vnd.fujixerox.ddd base64 -deb application/x-debian-package base64 -def text/plain quoted-printable -deploy application/octet-stream base64 -der application/x-x509-ca-cert base64 -dfac application/vnd.dreamfactory base64 -dgc application/x-dgc-compressed base64 -dgn image/x-vnd.dgn base64 -dic text/x-c quoted-printable -dir application/x-director base64 -dis application/vnd.Mobius.DIS base64 -dist application/octet-stream base64 -distz application/octet-stream base64 -djv image/vnd.djvu base64 -djvu image/vnd.djvu base64 -dl video/x-dl base64 -dll application/octet-stream base64 -dmg application/x-apple-diskimage base64 -dmp application/vnd.tcpdump.pcap base64 -dms application/octet-stream base64 -dna application/vnd.dna base64 -dng image/x-adobe-dng base64 -doc application/msword base64 -docm application/vnd.ms-word.document.macroEnabled.12 base64 -docx application/vnd.openxmlformats-officedocument.wordprocessingml.document base64 -dot application/msword base64 -dotm application/vnd.ms-word.template.macroEnabled.12 base64 -dotx application/vnd.openxmlformats-officedocument.wordprocessingml.template base64 -dp application/vnd.osgi.dp base64 -dpg application/vnd.dpgraph base64 -dra audio/vnd.dra base64 -dsc text/prs.lines.tag quoted-printable -dssc application/dssc+der base64 -dtb application/x-dtbook+xml base64 -dtd application/xml-dtd 8bit -dts audio/vnd.dts base64 -dtshd audio/vnd.dts.hd base64 -dump application/octet-stream base64 -dv video/DV base64 -dvb video/vnd.dvb.file base64 -dvi application/x-dvi base64 -dwf model/vnd.dwf base64 -dwg image/vnd.dwg base64 -dxf image/vnd.dxf base64 -dxp application/vnd.spotfire.dxp base64 -dxr application/x-director base64 -dylib application/octet-stream base64 -ecelp4800 audio/vnd.nuera.ecelp4800 base64 -ecelp7470 audio/vnd.nuera.ecelp7470 base64 -ecelp9600 audio/vnd.nuera.ecelp9600 base64 -ecma application/ecmascript base64 -edm application/vnd.novadigm.EDM base64 -edx application/vnd.novadigm.EDX base64 -efif application/vnd.picsel base64 -ei6 application/vnd.pg.osasli base64 -elc application/octet-stream base64 -emf application/x-msmetafile base64 -eml message/rfc822 8bit -emm application/vnd.ibm.electronic-media base64 -emma application/emma+xml base64 -emz application/x-msmetafile base64 -ent application/vnd.nervana base64 -entity application/vnd.nervana base64 -eol audio/vnd.digital-winds 7bit -eot application/vnd.ms-fontobject base64 -eps application/postscript 8bit -epub application/epub+zip base64 -erf image/x-epson-erf base64 -es application/ecmascript base64 -es3 application/vnd.eszigno3+xml base64 -esa application/vnd.osgi.subsystem base64 -esf application/vnd.epson.esf base64 -et3 application/vnd.eszigno3+xml base64 -etx text/x-setext quoted-printable -eva application/x-eva base64 -evc audio/EVRC base64 -evy application/x-envoy base64 -exe application/x-ms-dos-executable base64 -exi application/exi base64 -ext application/vnd.novadigm.EXT base64 -ez application/andrew-inset base64 -ez2 application/vnd.ezpix-album base64 -ez3 application/vnd.ezpix-package base64 -f text/x-fortran quoted-printable -f4a audio/mp4 base64 -f4b audio/mp4 base64 -f4p video/mp4 base64 -f4v video/mp4 base64 -f77 text/x-fortran quoted-printable -f90 text/x-fortran quoted-printable -fb application/vnd.framemaker base64 -fbdoc application/vnd.framemaker base64 -fbs image/vnd.fastbidsheet base64 -fcdt application/vnd.adobe.formscentral.fcdt base64 -fcs application/vnd.isac.fcs base64 -fdf application/vnd.fdf base64 -fe_launch application/vnd.denovo.fcselayout-link base64 -fg5 application/vnd.fujitsu.oasysgp base64 -fgd application/x-director base64 -fh image/x-freehand base64 -fh4 image/x-freehand base64 -fh5 image/x-freehand base64 -fh7 image/x-freehand base64 -fhc image/x-freehand base64 -fig application/x-xfig base64 -flac audio/flac base64 -fli video/x-fli base64 -flo application/vnd.micrografx.flo base64 -flv video/x-flv base64 -flw application/vnd.kde.kivio base64 -flx text/vnd.fmi.flexstor quoted-printable -fly text/vnd.fly quoted-printable -fm application/vnd.framemaker base64 -fnc application/vnd.frogans.fnc base64 -for text/x-fortran quoted-printable -fpx image/vnd.fpx base64 -frame application/vnd.framemaker base64 -frm application/vnd.framemaker base64 -fsc application/vnd.fsc.weblaunch 7bit -fst image/vnd.fst base64 -ftc application/vnd.fluxtime.clip base64 -fti application/vnd.anser-web-funds-transfer-initiation base64 -fvt video/vnd.fvt base64 -fxp application/vnd.adobe.fxp base64 -fxpl application/vnd.adobe.fxp base64 -fzs application/vnd.fuzzysheet base64 -g2w application/vnd.geoplan base64 -g3 image/g3fax base64 -g3w application/vnd.geospace base64 -gac application/vnd.groove-account base64 -gam application/x-tads base64 -gbr application/rpki-ghostbusters base64 -gca application/x-gca-compressed base64 -gdl model/vnd.gdl base64 -geo application/vnd.dynageo base64 -gex application/vnd.geometry-explorer base64 -ggb application/vnd.geogebra.file base64 -ggs application/vnd.geogebra.slides base64 -ggt application/vnd.geogebra.tool base64 -ghf application/vnd.groove-help base64 -gif image/gif base64 -gim application/vnd.groove-identity-message base64 -gl video/x-gl base64 -gml application/gml+xml base64 -gmx application/vnd.gmx base64 -gnumeric application/x-gnumeric base64 -gpg application/octet-stream base64 -gph application/vnd.FloGraphIt base64 -gpx application/gpx+xml base64 -gqf application/vnd.grafeq base64 -gqs application/vnd.grafeq base64 -gram application/srgs base64 -gramps application/x-gramps-xml base64 -gre application/vnd.geometry-explorer base64 -grv application/vnd.groove-injector base64 -grxml application/srgs+xml base64 -gsf application/x-font-ghostscript base64 -gtar application/x-gtar base64 -gtm application/vnd.groove-tool-message base64 -gtw model/vnd.gtw base64 -gv text/vnd.graphviz quoted-printable -gxf application/gxf base64 -gxt application/vnd.geonext base64 -gz application/gzip base64 -h text/plain quoted-printable -h261 video/H261 base64 -h263 video/H263 base64 -h264 video/H264 base64 -hal application/vnd.hal+xml base64 -hbc application/vnd.hbci base64 -hbci application/vnd.hbci base64 -hdf application/x-hdf base64 -heic image/heic base64 -heics image/heic-sequence base64 -heif image/heif base64 -heifs image/heif-sequence base64 -hep application/x-hep base64 -hh text/plain quoted-printable -hif image/heic base64 -hlp text/plain quoted-printable -hpgl application/vnd.hp-HPGL base64 -hpid application/vnd.hp-hpid base64 -hpp text/plain quoted-printable -hps application/vnd.hp-hps base64 -hqx application/mac-binhex40 8bit -htc text/x-component 8bit -htke application/vnd.kenameaapp base64 -htm text/html 8bit -html text/html 8bit -htmlx text/html 8bit -htx text/html 8bit -hvd application/vnd.yamaha.hv-dic base64 -hvp application/vnd.yamaha.hv-voice base64 -hvs application/vnd.yamaha.hv-script base64 -i2g application/vnd.intergeo base64 -ibooks application/x-ibooks+zip base64 -ica application/x-ica base64 -icc application/vnd.iccprofile base64 -ice x-conference/x-cooltalk base64 -icm application/vnd.iccprofile base64 -ico image/vnd.microsoft.icon base64 -ics text/calendar quoted-printable -ief image/ief base64 -ifb text/calendar quoted-printable -ifm application/vnd.shana.informed.formdata base64 -iges model/iges base64 -igl application/vnd.igloader base64 -igm application/vnd.insors.igm base64 -igs model/iges base64 -igx application/vnd.micrografx.igx base64 -iif application/vnd.shana.informed.interchange base64 -imagemap application/x-imagemap 8bit -imap application/x-imagemap 8bit -imp application/vnd.accpac.simply.imp base64 -ims application/vnd.ms-ims base64 -in text/plain quoted-printable -ink application/inkml+xml base64 -inkml application/inkml+xml base64 -install application/x-install-instructions base64 -iota application/vnd.astraea-software.iota base64 -ipa application/octet-stream base64 -ipfix application/ipfix base64 -ipk application/vnd.shana.informed.package base64 -irm application/vnd.ibm.rights-management base64 -irp application/vnd.irepository.package+xml base64 -iso application/x-iso9660-image base64 -itp application/vnd.shana.informed.formtemplate base64 -ivf video/x-ivf base64 -ivp application/vnd.immervision-ivp base64 -ivu application/vnd.immervision-ivu base64 -jad text/vnd.sun.j2me.app-descriptor 8bit -jam application/vnd.jam base64 -jar application/java-archive base64 -java text/x-java-source quoted-printable -jfif image/jpeg base64 -jisp application/vnd.jisp base64 -jlt application/vnd.hp-jlyt base64 -jnlp application/x-java-jnlp-file base64 -joda application/vnd.joost.joda-archive base64 -jp2 image/jp2 base64 -jpe image/jpeg base64 -jpeg image/jpeg base64 -jpf image/jpx base64 -jpg image/jpeg base64 -jpg2 image/jp2 base64 -jpgm image/jpm base64 -jpgv video/JPEG base64 -jpm image/jpm base64 -jpx image/jpx base64 -js text/javascript quoted-printable -json application/json 8bit -jsonml application/jsonml+json base64 -jxl image/jxl base64 -k25 image/x-kodak-k25 base64 -kar audio/midi base64 -karbon application/vnd.kde.karbon base64 -kcm application/vnd.nervana base64 -kdc image/x-kodak-kdc base64 -key application/x-iwork-keynote-sffkey base64 -kfo application/vnd.kde.kformula base64 -kia application/vnd.kidspiration base64 -kml application/vnd.google-earth.kml+xml 8bit -kmz application/vnd.google-earth.kmz 8bit -kne application/vnd.Kinar base64 -knp application/vnd.Kinar base64 -kom application/vnd.hbci base64 -kon application/vnd.kde.kontour base64 -kpr application/vnd.kde.kpresenter base64 -kpt application/vnd.kde.kpresenter base64 -kpxx application/vnd.ds-keypoint base64 -ksp application/vnd.kde.kspread base64 -ktr application/vnd.kahootz base64 -ktx image/ktx base64 -ktz application/vnd.kahootz base64 -kwd application/vnd.kde.kword base64 -kwt application/vnd.kde.kword base64 -l16 audio/L16 base64 -lasxml application/vnd.las.las+xml base64 -latex application/x-latex 8bit -lbd application/vnd.llamagraphics.life-balance.desktop base64 -lbe application/vnd.llamagraphics.life-balance.exchange+xml base64 -les application/vnd.hhe.lesson-player base64 -lha application/octet-stream base64 -link66 application/vnd.route66.link66+xml base64 -list text/plain quoted-printable -list3820 application/vnd.ibm.modcap base64 -listafp application/vnd.ibm.modcap base64 -lnk application/x-ms-shortcut base64 -log text/plain quoted-printable -lostxml application/lost+xml base64 -lrf application/octet-stream base64 -lrm application/vnd.ms-lrm base64 -ltf application/vnd.frogans.ltf base64 -ltx application/x-latex 8bit -lvp audio/vnd.lucent.voice base64 -lwp application/vnd.lotus-wordpro base64 -lzh application/octet-stream base64 -m13 application/x-msmediaview base64 -m14 application/x-msmediaview base64 -m1v video/mpeg base64 -m21 application/mp21 base64 -m2a audio/mpeg base64 -m2t video/MP2T base64 -m2ts video/MP2T base64 -m2v video/mpeg base64 -m3a audio/mpeg base64 -m3u audio/x-mpegurl base64 -m3u8 application/vnd.apple.mpegurl base64 -m4a audio/mp4 base64 -m4u video/vnd.mpegurl 8bit -m4v video/vnd.objectvideo base64 -ma application/mathematica base64 -mads application/mads+xml base64 -mag application/vnd.ecowin.chart base64 -maker application/vnd.framemaker base64 -man text/troff 8bit -manifest text/cache-manifest quoted-printable -mar application/octet-stream base64 -markdown text/markdown quoted-printable -mathml application/mathml+xml base64 -mb application/mathematica base64 -mbk application/vnd.Mobius.MBK base64 -mbox application/mbox base64 -mc1 application/vnd.medcalcdata base64 -mcd application/vnd.mcd base64 -mcurl text/vnd.curl.mcurl quoted-printable -md text/markdown quoted-printable -mda application/x-msaccess base64 -mdb application/x-msaccess base64 -mde application/x-msaccess base64 -mdf application/x-msaccess base64 -mdi image/vnd.ms-modi base64 -me text/troff 8bit -mesh model/mesh base64 -meta4 application/metalink4+xml base64 -metalink application/metalink+xml base64 -mets application/mets+xml base64 -mfm application/vnd.mfmp base64 -mft application/rpki-manifest base64 -mgp application/vnd.osgeo.mapguide.package base64 -mgz application/vnd.proteus.magazine base64 -mid audio/midi base64 -midi audio/midi base64 -mie application/x-mie base64 -mif application/vnd.mif base64 -mime message/rfc822 8bit -mj2 video/MJ2 base64 -mjp2 video/MJ2 base64 -mjpeg video/x-motion-jpeg base64 -mjpg video/x-motion-jpeg base64 -mjs text/javascript quoted-printable -mk3d video/x-matroska base64 -mka audio/matroska base64 -mkd text/markdown quoted-printable -mks video/x-matroska base64 -mkv video/x-matroska base64 -mlp application/vnd.dolby.mlp base64 -mmd application/vnd.chipnuts.karaoke-mmd base64 -mmf application/vnd.smaf base64 -mmr image/vnd.fujixerox.edmics-mmr base64 -mng video/x-mng base64 -mny application/x-msmoney base64 -mobi application/x-mobipocket-ebook base64 -mods application/mods+xml base64 -mov video/quicktime base64 -movie video/x-sgi-movie base64 -mp2 audio/mpeg base64 -mp21 application/mp21 base64 -mp2a audio/mpeg base64 -mp3 audio/mpeg base64 -mp3g video/mpeg base64 -mp4 application/mp4 base64 -mp4a audio/mp4 base64 -mp4s application/mp4 base64 -mp4v video/mp4 base64 -mpc application/vnd.mophun.certificate base64 -mpe video/mpeg base64 -mpeg video/mpeg base64 -mpg video/mpeg base64 -mpg4 application/mp4 base64 -mpga audio/mpeg base64 -mpkg application/vnd.apple.installer+xml base64 -mpl video/MP2T base64 -mpls video/MP2T base64 -mpm application/vnd.blueice.multipass base64 -mpn application/vnd.mophun.application base64 -mpp application/vnd.ms-project base64 -mpt application/vnd.ms-project base64 -mpy application/vnd.ibm.MiniPay base64 -mqy application/vnd.Mobius.MQY base64 -mrc application/marc base64 -mrcx application/marcxml+xml base64 -mrw image/x-minolta-mrw base64 -ms text/troff 8bit -mscml application/mediaservercontrol+xml base64 -mseed application/vnd.fdsn.mseed base64 -mseq application/vnd.mseq base64 -msf application/vnd.epson.msf base64 -msg application/vnd.ms-outlook base64 -msh model/mesh base64 -msi application/x-msdownload base64 -msl application/vnd.Mobius.MSL base64 -msty application/vnd.muvee.style base64 -mts model/vnd.mts base64 -mus application/vnd.musician base64 -musicxml application/vnd.recordare.musicxml+xml base64 -mvb application/x-msmediaview base64 -mwf application/vnd.MFER base64 -mxf application/mxf base64 -mxl application/vnd.recordare.musicxml base64 -mxmf audio/vnd.nokia.mobile-xmf base64 -mxml application/xv+xml base64 -mxs application/vnd.triscape.mxs base64 -mxu video/vnd.mpegurl 8bit -n-gage application/vnd.nokia.n-gage.symbian.install base64 -n3 text/n3 quoted-printable -nb application/mathematica base64 -nbp application/vnd.wolfram.player base64 -nc application/netcdf base64 -ncx application/x-dtbncx+xml base64 -nef image/x-nikon-nef base64 -nfo text/x-nfo quoted-printable -ngdat application/vnd.nokia.n-gage.data base64 -nim video/vnd.nokia.interleaved-multimedia base64 -nitf application/vnd.nitf base64 -nlu application/vnd.neurolanguage.nlu base64 -nml application/vnd.enliven base64 -nnd application/vnd.noblenet-directory base64 -nns application/vnd.noblenet-sealer base64 -nnw application/vnd.noblenet-web base64 -notebook application/x-smarttech-notebook base64 -npx image/vnd.net-fpx base64 -nsc application/x-conference base64 -nsf application/vnd.lotus-notes base64 -ntf application/vnd.nitf base64 -numbers application/x-iwork-numbers-sffnumbers base64 -nzb application/x-nzb base64 -oa2 application/vnd.fujitsu.oasys2 base64 -oa3 application/vnd.fujitsu.oasys3 base64 -oas application/vnd.fujitsu.oasys base64 -obd application/x-msbinder base64 -obj application/x-tgif base64 -oda application/oda base64 -odb application/vnd.oasis.opendocument.database base64 -odc application/vnd.oasis.opendocument.chart base64 -odf application/vnd.oasis.opendocument.formula base64 -odft application/vnd.oasis.opendocument.formula-template base64 -odg application/vnd.oasis.opendocument.graphics base64 -odi application/vnd.oasis.opendocument.image base64 -odm application/vnd.oasis.opendocument.text-master base64 -odp application/vnd.oasis.opendocument.presentation base64 -ods application/vnd.oasis.opendocument.spreadsheet base64 -odt application/vnd.oasis.opendocument.text base64 -oex application/x-opera-extension base64 -oga audio/ogg base64 -ogg audio/ogg base64 -ogv video/ogg base64 -ogx application/ogg base64 -omdoc application/omdoc+xml base64 -onepkg application/onenote base64 -onetmp application/onenote base64 -onetoc application/onenote base64 -onetoc2 application/onenote base64 -opf application/oebps-package+xml base64 -opml text/x-opml quoted-printable -oprc application/vnd.palm base64 -opus audio/ogg base64 -orf image/x-olympus-orf base64 -org application/vnd.lotus-organizer base64 -osf application/vnd.yamaha.openscoreformat base64 -osfpvg application/vnd.yamaha.openscoreformat.osfpvg+xml base64 -otc application/vnd.oasis.opendocument.chart-template base64 -otf font/otf base64 -otg application/vnd.oasis.opendocument.graphics-template base64 -oth application/vnd.oasis.opendocument.text-web base64 -oti application/vnd.oasis.opendocument.image-template base64 -otp application/vnd.oasis.opendocument.presentation-template base64 -ots application/vnd.oasis.opendocument.spreadsheet-template base64 -ott application/vnd.oasis.opendocument.text-template base64 -oxps application/oxps base64 -oxt application/vnd.openofficeorg.extension base64 -p text/x-pascal quoted-printable -p10 application/pkcs10 base64 -p12 application/x-pkcs12 base64 -p7b application/x-pkcs7-certificates base64 -p7c application/pkcs7-mime base64 -p7m application/pkcs7-mime base64 -p7r application/x-pkcs7-certreqresp base64 -p7s application/pkcs7-signature base64 -p8 application/pkcs8 base64 -pac application/x-ns-proxy-autoconfig base64 -pages application/x-iwork-pages-sffpages base64 -pas text/x-pascal quoted-printable -paw application/vnd.pawaafile base64 -pbd application/vnd.powerbuilder6 base64 -pbm image/x-portable-bitmap base64 -pcap application/vnd.tcpdump.pcap base64 -pcf application/x-font-pcf base64 -pcl application/vnd.hp-PCL base64 -pclxl application/vnd.hp-PCLXL base64 -pct image/x-pict base64 -pcurl application/vnd.curl.pcurl base64 -pcx image/x-pcx base64 -pdb application/vnd.palm base64 -pdf application/pdf base64 -pef image/x-pentax-pef base64 -pfa application/x-font-type1 base64 -pfb application/x-font-type1 base64 -pfm application/x-font-type1 base64 -pfr application/font-tdpfr base64 -pfx application/x-pkcs12 base64 -pgb image/vnd.globalgraphics.pgb base64 -pgm image/x-portable-graymap base64 -pgn application/x-chess-pgn base64 -pgp application/octet-stream base64 -php application/x-httpd-php 8bit -pht application/x-httpd-php 8bit -phtml application/x-httpd-php 8bit -pic image/x-pict base64 -pkd application/vnd.hbci base64 -pkg application/octet-stream base64 -pki application/pkixcmp base64 -pkipath application/pkix-pkipath base64 -pkpass application/vnd.apple.pkpass base64 -pl application/x-perl 8bit -plb application/vnd.3gpp.pic-bw-large base64 -plc application/vnd.Mobius.PLC base64 -plf application/vnd.pocketlearn base64 -plj audio/vnd.everad.plj base64 -pls application/pls+xml base64 -plt application/vnd.hp-HPGL base64 -pm application/x-pagemaker base64 -pm5 application/x-pagemaker base64 -pml application/vnd.ctc-posml base64 -png image/png base64 -pnm image/x-portable-anymap base64 -portpkg application/vnd.macports.portpkg base64 -pot application/vnd.ms-powerpoint base64 -potm application/vnd.ms-powerpoint.template.macroEnabled.12 base64 -potx application/vnd.openxmlformats-officedocument.presentationml.template base64 -ppam application/vnd.ms-powerpoint.addin.macroEnabled.12 base64 -ppd application/vnd.cups-ppd base64 -ppm image/x-portable-pixmap base64 -pps application/vnd.ms-powerpoint base64 -ppsm application/vnd.ms-powerpoint.slideshow.macroEnabled.12 base64 -ppsx application/vnd.openxmlformats-officedocument.presentationml.slideshow base64 -ppt application/vnd.ms-powerpoint base64 -pptm application/vnd.ms-powerpoint.presentation.macroEnabled.12 base64 -pptx application/vnd.openxmlformats-officedocument.presentationml.presentation base64 -pqa application/vnd.palm base64 -prc application/vnd.palm base64 -pre application/vnd.lotus-freelance base64 -prf application/pics-rules base64 -prql application/prql base64 -ps application/postscript 8bit -ps1 application/x-msdos-program base64 -psb application/vnd.3gpp.pic-bw-small base64 -psd image/vnd.adobe.photoshop base64 -psf application/x-font-linux-psf base64 -pskcxml application/pskc+xml base64 -psp image/x-paintshoppro base64 -pspimage image/x-paintshoppro base64 -pt5 application/x-pagemaker base64 -pti application/vnd.pvi.ptid1 base64 -ptid application/vnd.pvi.ptid1 base64 -pub application/x-mspublisher base64 -pvb application/vnd.3gpp.pic-bw-var base64 -pwn application/vnd.3M.Post-it-Notes base64 -py application/x-python 8bit -pya audio/vnd.ms-playready.media.pya base64 -pyv video/vnd.ms-playready.media.pyv base64 -qam application/vnd.epson.quickanime base64 -qbo application/vnd.intu.qbo base64 -qcp audio/vnd.qcelp base64 -qfx application/vnd.intu.qfx base64 -qps application/vnd.publishare-delta-tree base64 -qt video/quicktime base64 -qtl application/x-quicktimeplayer base64 -qwd application/vnd.Quark.QuarkXPress 8bit -qwt application/vnd.Quark.QuarkXPress 8bit -qxb application/vnd.Quark.QuarkXPress 8bit -qxd application/vnd.Quark.QuarkXPress 8bit -qxl application/vnd.Quark.QuarkXPress 8bit -qxt application/vnd.Quark.QuarkXPress 8bit -ra audio/x-pn-realaudio base64 -raf image/x-fuji-raf base64 -ram audio/x-pn-realaudio base64 -rar application/x-rar-compressed base64 -ras image/x-cmu-raster base64 -raw image/x-panasonic-raw base64 -rb application/x-ruby 8bit -rbw application/x-ruby 8bit -rcprofile application/vnd.ipunplugged.rcprofile base64 -rct application/prs.nprend base64 -rdf application/rdf+xml 8bit -rdz application/vnd.data-vision.rdz base64 -reg application/x-msdos-program base64 -rep application/vnd.businessobjects base64 -req application/vnd.nervana base64 -request application/vnd.nervana base64 -res application/x-dtbresource+xml base64 -rgb image/x-rgb base64 -rhtml application/x-html+ruby 8bit -rif application/reginfo+xml base64 -rip audio/vnd.rip base64 -ris application/x-research-info-systems base64 -rl application/resource-lists+xml base64 -rlc image/vnd.fujixerox.edmics-rlc base64 -rld application/resource-lists-diff+xml base64 -rm application/vnd.rn-realmedia base64 -rmi audio/midi base64 -rmp audio/x-pn-realaudio-plugin base64 -rms application/vnd.jcp.javame.midlet-rms base64 -rmvb application/vnd.rn-realmedia-vbr base64 -rnc application/relax-ng-compact-syntax base64 -rnd application/prs.nprend base64 -roa application/rpki-roa base64 -roff text/troff 8bit -rp9 application/vnd.cloanto.rp9 base64 -rpm audio/x-pn-realaudio-plugin base64 -rpss application/vnd.nokia.radio-presets base64 -rpst application/vnd.nokia.radio-preset base64 -rq application/sparql-query base64 -rs application/rls-services+xml base64 -rsd application/rsd+xml base64 -rss application/rss+xml base64 -rst text/plain quoted-printable -rtf application/rtf base64 -rtx text/richtext 8bit -s text/x-asm quoted-printable -s11 video/vnd.sealed.mpeg1 base64 -s14 video/vnd.sealed.mpeg4 base64 -s1a application/vnd.sealedmedia.softseal.pdf base64 -s1e application/vnd.sealed.xls base64 -s1h application/vnd.sealedmedia.softseal.html base64 -s1m audio/vnd.sealedmedia.softseal.mpeg base64 -s1p application/vnd.sealed.ppt base64 -s1q video/vnd.sealedmedia.softseal.mov base64 -s1w application/vnd.sealed.doc base64 -s3m audio/s3m base64 -saf application/vnd.yamaha.smaf-audio base64 -sav application/x-spss base64 -sbml application/sbml+xml base64 -sbs application/x-spss base64 -sc application/vnd.ibm.secure-container base64 -scd application/x-msschedule base64 -scm application/vnd.lotus-screencam base64 -scq application/scvp-cv-request base64 -scs application/scvp-cv-response base64 -scurl text/vnd.curl.scurl quoted-printable -sda application/vnd.stardivision.draw base64 -sdc application/vnd.stardivision.calc base64 -sdd application/vnd.stardivision.impress base64 -sdf application/vnd.Kinar base64 -sdkd application/vnd.solent.sdkm+xml base64 -sdkm application/vnd.solent.sdkm+xml base64 -sdo application/vnd.sealed.doc base64 -sdoc application/vnd.sealed.doc base64 -sdp application/sdp base64 -sds application/vnd.stardivision.chart base64 -sdw application/vnd.stardivision.writer base64 -see application/vnd.seemail base64 -seed application/vnd.fdsn.seed base64 -sem application/vnd.sealed.eml base64 -sema application/vnd.sema base64 -semd application/vnd.semd base64 -semf application/vnd.semf base64 -seml application/vnd.sealed.eml base64 -ser application/java-serialized-object base64 -setpay application/set-payment-initiation base64 -setreg application/set-registration-initiation base64 -sfd-hdstx application/vnd.hydrostatix.sof-data base64 -sfs application/vnd.spotfire.sfs base64 -sfv text/x-sfv quoted-printable -sgi image/sgi base64 -sgl application/vnd.stardivision.writer-global base64 -sgm text/sgml quoted-printable -sgml application/sgml base64 -sh application/x-sh 8bit -shar application/x-shar 8bit -shf application/shf+xml base64 -shtml text/html 8bit -si text/vnd.wap.si quoted-printable -sic application/vnd.wap.sic base64 -sid image/x-mrsid-image base64 -sig application/pgp-signature base64 -sil audio/silk base64 -silo model/mesh base64 -sis application/vnd.symbian.install base64 -sisx application/vnd.symbian.install base64 -sit application/x-stuffit base64 -sitx application/x-stuffitx base64 -siv application/sieve base64 -sj application/javascript 8bit -skd application/vnd.koan base64 -skm application/vnd.koan base64 -skp application/vnd.koan base64 -skt application/vnd.koan base64 -sl text/vnd.wap.sl quoted-printable -slc application/vnd.wap.slc base64 -sldm application/vnd.ms-powerpoint.slide.macroEnabled.12 base64 -sldx application/vnd.openxmlformats-officedocument.presentationml.slide base64 -slt application/vnd.epson.salt base64 -sm application/vnd.stepmania.stepchart base64 -smf application/vnd.stardivision.math base64 -smh application/vnd.sealed.mht base64 -smht application/vnd.sealed.mht base64 -smi application/smil+xml 8bit -smil application/smil+xml 8bit -smo video/vnd.sealedmedia.softseal.mov base64 -smov video/vnd.sealedmedia.softseal.mov base64 -smp audio/vnd.sealedmedia.softseal.mpeg base64 -smp3 audio/vnd.sealedmedia.softseal.mpeg base64 -smpg video/vnd.sealed.mpeg4 base64 -sms application/vnd.3gpp.sms base64 -smv audio/SMV base64 -smzip application/vnd.stepmania.package base64 -snd audio/basic base64 -snf application/x-font-snf base64 -so application/octet-stream base64 -soc application/sgml-open-catalog base64 -spc application/x-pkcs7-certificates base64 -spd application/vnd.sealedmedia.softseal.pdf base64 -spdf application/vnd.sealedmedia.softseal.pdf base64 -spf application/vnd.yamaha.smaf-phrase base64 -spl application/x-futuresplash base64 -spo application/x-spss base64 -spot text/vnd.in3d.spot quoted-printable -spp application/scvp-vp-response base64 -sppt application/vnd.sealed.ppt base64 -spq application/scvp-vp-request base64 -sps application/x-spss base64 -spx audio/ogg base64 -sql application/x-sql base64 -sr2 image/x-sony-sr2 base64 -src application/x-wais-source base64 -srf image/x-sony-srf base64 -srt application/x-subrip base64 -sru application/sru+xml base64 -srx application/sparql-results+xml base64 -ssdl application/ssdl+xml base64 -sse application/vnd.kodak-descriptor base64 -ssf application/vnd.epson.ssf base64 -ssml application/ssml+xml base64 -ssw video/vnd.sealed.swf base64 -sswf video/vnd.sealed.swf base64 -st application/vnd.sailingtracker.track base64 -stc application/vnd.sun.xml.calc.template base64 -std application/vnd.sun.xml.draw.template base64 -stf application/vnd.wt.stf base64 -sti application/vnd.sun.xml.impress.template base64 -stk application/hyperstudio base64 -stl application/vnd.ms-pki.stl base64 -stm application/vnd.sealedmedia.softseal.html base64 -stml application/vnd.sealedmedia.softseal.html base64 -str application/vnd.pg.format base64 -stw application/vnd.sun.xml.writer.template base64 -sub image/vnd.dvb.subtitle base64 -sus application/vnd.sus-calendar base64 -susp application/vnd.sus-calendar base64 -sv4cpio application/x-sv4cpio base64 -sv4crc application/x-sv4crc base64 -svc application/vnd.dvb.service base64 -svd application/vnd.svd base64 -svg image/svg+xml 8bit -svgz image/svg+xml 8bit -swa application/x-director base64 -swf application/x-shockwave-flash base64 -swi application/vnd.aristanetworks.swi base64 -sxc application/vnd.sun.xml.calc base64 -sxd application/vnd.sun.xml.draw base64 -sxg application/vnd.sun.xml.writer.global base64 -sxi application/vnd.sun.xml.impress base64 -sxl application/vnd.sealed.xls base64 -sxls application/vnd.sealed.xls base64 -sxm application/vnd.sun.xml.math base64 -sxw application/vnd.sun.xml.writer base64 -t text/troff 8bit -t3 application/x-t3vm-image base64 -taglet application/vnd.mynfc base64 -tao application/vnd.tao.intent-module-archive base64 -tar application/x-tar base64 -tbk application/x-toolbook base64 -tbz application/x-gtar base64 -tbz2 application/x-gtar base64 -tcap application/vnd.3gpp2.tcap base64 -tcl application/x-tcl 8bit -teacher application/vnd.smart.teacher base64 -tei application/tei+xml base64 -teicorpus application/tei+xml base64 -tex application/x-tex 8bit -texi application/x-texinfo 8bit -texinfo application/x-texinfo 8bit -text text/plain quoted-printable -textile text/plain quoted-printable -tfi application/thraud+xml base64 -tfm application/x-tex-tfm base64 -tga image/x-targa base64 -tgz application/x-gtar base64 -thmx application/vnd.ms-officetheme base64 -tif image/tiff base64 -tiff image/tiff base64 -tmo application/vnd.tmobile-livetv base64 -torrent application/x-bittorrent base64 -tpl application/vnd.groove-tool-template base64 -tpt application/vnd.trid.tpt base64 -tr text/troff 8bit -tra application/vnd.trueapp base64 -trm application/x-msterminal base64 -troff text/troff 8bit -ts video/MP2T base64 -tsd application/timestamped-data base64 -tsv text/tab-separated-values quoted-printable -ttc font/collection base64 -ttf font/ttf base64 -ttl text/turtle quoted-printable -twd application/vnd.SimTech-MindMapper base64 -twds application/vnd.SimTech-MindMapper base64 -txd application/vnd.genomatix.tuxedo base64 -txf application/vnd.Mobius.TXF base64 -txt text/plain quoted-printable -u32 application/x-authorware-bin base64 -udeb application/x-debian-package base64 -ufd application/vnd.ufdl base64 -ufdl application/vnd.ufdl base64 -ulx application/x-glulx base64 -umj application/vnd.umajin base64 -unityweb application/vnd.unity base64 -uoml application/vnd.uoml+xml base64 -upa application/vnd.hbci base64 -uri text/uri-list quoted-printable -uris text/uri-list quoted-printable -urls text/uri-list quoted-printable -ustar application/x-ustar base64 -utz application/vnd.uiq.theme base64 -uu text/x-uuencode quoted-printable -uva audio/vnd.dece.audio base64 -uvd application/vnd.dece.data base64 -uvf application/vnd.dece.data base64 -uvg image/vnd.dece.graphic base64 -uvh video/vnd.dece.hd base64 -uvi image/vnd.dece.graphic base64 -uvm video/vnd.dece.mobile base64 -uvp video/vnd.dece.pd base64 -uvs video/vnd.dece.sd base64 -uvt application/vnd.dece.ttml+xml base64 -uvu video/vnd.uvvu.mp4 base64 -uvv video/vnd.dece.video base64 -uvva audio/vnd.dece.audio base64 -uvvd application/vnd.dece.data base64 -uvvf application/vnd.dece.data base64 -uvvg image/vnd.dece.graphic base64 -uvvh video/vnd.dece.hd base64 -uvvi image/vnd.dece.graphic base64 -uvvm video/vnd.dece.mobile base64 -uvvp video/vnd.dece.pd base64 -uvvs video/vnd.dece.sd base64 -uvvt application/vnd.dece.ttml+xml base64 -uvvu video/vnd.uvvu.mp4 base64 -uvvv video/vnd.dece.video base64 -uvvx application/vnd.dece.unspecified base64 -uvvz application/vnd.dece.zip base64 -uvx application/vnd.dece.unspecified base64 -uvz application/vnd.dece.zip base64 -vbk audio/vnd.nortel.vbk base64 -vbs application/x-msdos-program base64 -vcard text/vcard quoted-printable -vcd application/x-cdlink base64 -vcf text/x-vcard 8bit -vcg application/vnd.groove-vcard base64 -vcs text/x-vcalendar 8bit -vcx application/vnd.vcx base64 -vis application/vnd.visionary base64 -viv video/vnd.vivo base64 -vivo video/vnd.vivo base64 -vob video/x-ms-vob base64 -vor application/vnd.stardivision.writer base64 -vox application/x-authorware-bin base64 -vrml model/vrml base64 -vsc application/vnd.vidsoft.vidconference 8bit -vsd application/vnd.visio base64 -vsf application/vnd.vsf base64 -vss application/vnd.visio base64 -vst application/vnd.visio base64 -vsw application/vnd.visio base64 -vtt text/vtt quoted-printable -vtu model/vnd.vtu base64 -vxml application/voicexml+xml base64 -w3d application/x-director base64 -wad application/x-doom base64 -wasm application/wasm 8bit -wav audio/wav base64 -wax audio/x-ms-wax base64 -wbmp image/vnd.wap.wbmp base64 -wbs application/vnd.criticaltools.wbs+xml base64 -wbxml application/vnd.wap.wbxml base64 -wcm application/vnd.ms-works base64 -wdb application/vnd.ms-works base64 -wdp image/vnd.ms-photo base64 -weba audio/webm base64 -webapp application/x-web-app-manifest+json base64 -webm audio/webm base64 -webmanifest application/manifest+json base64 -webp image/webp base64 -wg application/vnd.pmi.widget base64 -wgt application/widget base64 -wif application/watcherinfo+xml base64 -wk application/x-123 base64 -wks application/vnd.lotus-1-2-3 base64 -wkz application/x-Wingz base64 -wm video/x-ms-wm base64 -wma audio/x-ms-wma base64 -wmd application/x-ms-wmd base64 -wmf application/x-msmetafile base64 -wml text/vnd.wap.wml quoted-printable -wmlc application/vnd.wap.wmlc base64 -wmls text/vnd.wap.wmlscript quoted-printable -wmlsc application/vnd.wap.wmlscriptc base64 -wmv audio/x-ms-wmv base64 -wmx video/x-ms-wmx base64 -wmz application/x-ms-wmz base64 -woff font/woff base64 -woff2 font/woff2 base64 -wp application/wordperfect5.1 base64 -wp5 application/wordperfect5.1 base64 -wp6 application/x-wordperfect6.1 base64 -wpd application/vnd.wordperfect base64 -wpl application/vnd.ms-wpl base64 -wps application/vnd.ms-works base64 -wqd application/vnd.wqd base64 -wrd application/msword base64 -wri application/x-mswrite base64 -wrl model/vrml base64 -wsdl application/wsdl+xml base64 -wspolicy application/wspolicy+xml base64 -wtb application/vnd.webturbo base64 -wv application/vnd.wv.csp+wbxml base64 -wvx video/x-ms-wvx base64 -wz application/x-Wingz base64 -x32 application/x-authorware-bin base64 -x3d model/x3d+xml base64 -x3db model/x3d+binary base64 -x3dbz model/x3d+binary base64 -x3dv model/x3d+vrml base64 -x3dvz model/x3d+vrml base64 -x3dz model/x3d+xml base64 -x3f image/x-sigma-x3f base64 -x_b model/vnd.parasolid.transmit.binary base64 -x_t model/vnd.parasolid.transmit.text quoted-printable -xaml application/xaml+xml base64 -xap application/x-silverlight-app base64 -xar application/vnd.xara base64 -xbap application/x-ms-xbap base64 -xbd application/vnd.fujixerox.docuworks.binder base64 -xbm image/x-xbitmap 7bit -xcf image/x-xcf base64 -xcfbz2 image/x-compressed-xcf base64 -xcfgz image/x-compressed-xcf base64 -xdf application/xcap-diff+xml base64 -xdm application/vnd.syncml.dm+xml base64 -xdp application/vnd.adobe.xdp+xml base64 -xdssc application/dssc+xml base64 -xdw application/vnd.fujixerox.docuworks base64 -xenc application/xenc+xml base64 -xer application/patch-ops-error+xml base64 -xfdf application/vnd.adobe.xfdf base64 -xfdl application/vnd.xfdl base64 -xht application/xhtml+xml 8bit -xhtml application/xhtml+xml 8bit -xhvml application/xv+xml base64 -xif image/vnd.xiff base64 -xla application/vnd.ms-excel base64 -xlam application/vnd.ms-excel.addin.macroEnabled.12 base64 -xlc application/vnd.ms-excel base64 -xlf application/x-xliff+xml base64 -xlm application/vnd.ms-excel base64 -xls application/vnd.ms-excel base64 -xlsb application/vnd.ms-excel.sheet.binary.macroEnabled.12 base64 -xlsm application/vnd.ms-excel.sheet.macroEnabled.12 base64 -xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet base64 -xlt application/vnd.ms-excel base64 -xltm application/vnd.ms-excel.template.macroEnabled.12 base64 -xltx application/vnd.openxmlformats-officedocument.spreadsheetml.template base64 -xlw application/vnd.ms-excel base64 -xm audio/xm base64 -xml application/xml 8bit -xmt_bin model/vnd.parasolid.transmit.binary base64 -xmt_txt model/vnd.parasolid.transmit.text quoted-printable -xo application/vnd.olpc-sugar base64 -xop application/xop+xml base64 -xpi application/x-xpinstall base64 -xpl application/xproc+xml base64 -xpm image/x-xpixmap 8bit -xpr application/vnd.is-xpr base64 -xps application/vnd.ms-xpsdocument 8bit -xpw application/vnd.intercon.formnet base64 -xpx application/vnd.intercon.formnet base64 -xsd text/xml 8bit -xsl application/xml 8bit -xslt application/xslt+xml base64 -xsm application/vnd.syncml+xml base64 -xspf application/xspf+xml base64 -xul application/vnd.mozilla.xul+xml base64 -xvm application/xv+xml base64 -xvml application/xv+xml base64 -xwd image/x-xwindowdump base64 -xyz x-chemical/x-xyz base64 -xz application/x-xz base64 -yaml text/x-yaml 8bit -yang application/yang base64 -yin application/yin+xml base64 -yml text/x-yaml 8bit -z application/x-compressed base64 -z1 application/x-zmachine base64 -z2 application/x-zmachine base64 -z3 application/x-zmachine base64 -z4 application/x-zmachine base64 -z5 application/x-zmachine base64 -z6 application/x-zmachine base64 -z7 application/x-zmachine base64 -z8 application/x-zmachine base64 -zaz application/vnd.zzazz.deck+xml base64 -zip application/zip base64 -zir application/vnd.zul base64 -zirz application/vnd.zul base64 -zmm application/vnd.HandHeld-Entertainment+xml base64 +.htaccess text/plain quoted-printable +123 application/vnd.lotus-1-2-3 base64 +3dml text/vnd.in3d.3dml quoted-printable +3ds image/x-3ds base64 +3fr image/x-hasselblad-3fr base64 +3g2 video/3gpp2 base64 +3gp video/3gpp base64 +3gpp video/3gpp base64 +3gpp2 video/3gpp2 base64 +3mf application/vnd.ms-package.3dmanufacturing-3dmodel+xml base64 +4th text/x-forth quoted-printable +7z application/x-7z-compressed base64 +@dir application/x-director base64 +@dxr application/x-director base64 +a application/x-archive base64 +aab application/x-authorware-bin base64 +aac audio/aac base64 +aam application/x-authorware-map base64 +aart text/plain quoted-printable +aas application/x-authorware-seg base64 +abs-linkmap text/plain quoted-printable +abs-menulinks text/plain quoted-printable +abw application/x-abiword base64 +ac text/plain quoted-printable +ac3 audio/ac3 base64 +acc application/vnd.americandynamics.acc base64 +accdb application/x-msaccess base64 +ace application/x-ace-compressed base64 +acfm application/x-font-adobe-metric base64 +acu application/vnd.acucobol base64 +acutc application/vnd.acucorp 7bit +ad text/x-asciidoc quoted-printable +ad.txt text/x-asciidoc quoted-printable +ada text/x-ada quoted-printable +adb text/x-ada quoted-printable +adf application/x-amiga-disk-format base64 +adoc text/x-asciidoc quoted-printable +adoc.txt text/x-asciidoc quoted-printable +adp audio/adpcm base64 +ads text/x-ada quoted-printable +aep application/vnd.audiograph base64 +aet application/vnd.adobe.aftereffects.template base64 +afm application/x-font-adobe-metric base64 +afp application/vnd.ibm.modcap base64 +ahead application/vnd.ahead.space base64 +ai application/postscript 8bit +aif audio/x-aiff base64 +aifc audio/x-aiff base64 +aiff audio/x-aiff base64 +air application/vnd.adobe.air-application-installer-package+zip base64 +ait application/vnd.dvb.ait base64 +aj text/x-aspectj quoted-printable +al text/x-perl quoted-printable +am text/plain quoted-printable +amf application/x-amf base64 +amfm application/x-font-adobe-metric base64 +ami application/vnd.amiga.ami base64 +amr audio/AMR base64 +ani application/octet-stream base64 +anpa text/vnd.iptc.anpa quoted-printable +apk application/vnd.android.package-archive base64 +appcache text/cache-manifest quoted-printable +applescript text/x-applescript quoted-printable +application application/x-ms-application base64 +apr application/vnd.lotus-approach base64 +apt text/plain quoted-printable +ar application/x-archive base64 +arc application/x-freearc base64 +arj application/x-arj base64 +arw image/x-raw-sony base64 +as text/x-actionscript quoted-printable +asc text/plain quoted-printable +asciidoc text/x-asciidoc quoted-printable +asf application/vnd.ms-asf base64 +asice application/vnd.etsi.asic-e+zip base64 +asics application/vnd.etsi.asic-s+zip base64 +asm text/x-asm quoted-printable +asnd audio/vnd.adobe.soundbooth base64 +aso application/vnd.accpac.simply.aso base64 +asp text/asp quoted-printable +aspx text/aspdotnet quoted-printable +asx application/x-ms-asx base64 +atc application/vnd.acucorp 7bit +atom application/atom+xml 8bit +atomcat application/atomcat+xml 8bit +atomsvc application/atomsvc+xml 8bit +atx application/vnd.antix.game-component base64 +au audio/basic base64 +avi video/x-msvideo base64 +avif image/avif base64 +aw application/applixware base64 +awb audio/AMR-WB base64 +awk text/x-awk quoted-printable +axx application/x-axcrypt base64 +azf application/vnd.airzip.filesecure.azf base64 +azs application/vnd.airzip.filesecure.azs base64 +azw application/vnd.amazon.ebook base64 +bas text/x-basic quoted-printable +bash application/x-sh 8bit +bat application/x-bat base64 +bau application/vnd.openofficeorg.autotext base64 +bay image/x-raw-casio base64 +bck application/x-VMSBACKUP base64 +bcpio application/x-bcpio base64 +bdf application/x-font-bdf base64 +bdm application/vnd.syncml.dm+wbxml base64 +bed application/vnd.realvnc.bed base64 +bh2 application/vnd.fujitsu.oasysprs base64 +bib application/x-bibtex-text-file base64 +bibtex application/x-bibtex-text-file base64 +bin application/octet-stream base64 +bkm application/vnd.nervana base64 +blb application/x-blorb base64 +bleep application/x-bleeper base64 +blorb application/x-blorb base64 +bmi application/vnd.bmi base64 +bmp image/bmp base64 +book application/vnd.framemaker base64 +box application/vnd.previewsystems.box base64 +boz application/x-bzip2 base64 +bpd application/vnd.hbci base64 +bpg image/x-bpg base64 +bpk application/octet-stream base64 +bpm application/bizagi-modeler base64 +br application/x-brotli base64 +brotli application/x-brotli base64 +bsh text/plain quoted-printable +btif image/prs.btif base64 +bup application/x-dvd-ifo base64 +bz application/x-bzip base64 +bz2 application/x-bzip2 base64 +c text/plain quoted-printable +c++ text/x-c++src quoted-printable +c11amc application/vnd.cluetrust.cartomobile-config base64 +c11amz application/vnd.cluetrust.cartomobile-config-pkg base64 +c4d application/vnd.clonk.c4group base64 +c4f application/vnd.clonk.c4group base64 +c4g application/vnd.clonk.c4group base64 +c4p application/vnd.clonk.c4group base64 +c4u application/vnd.clonk.c4group base64 +cab application/vnd.ms-cab-compressed base64 +caf audio/x-caf base64 +cap application/vnd.tcpdump.pcap base64 +car application/vnd.curl.car base64 +cat application/vnd.ms-pki.seccat base64 +cb7 application/x-cbr base64 +cba application/x-cbr base64 +cbl text/x-cobol quoted-printable +cbor application/cbor base64 +cbr application/x-cbr base64 +cbt application/x-cbr base64 +cbz application/x-cbr base64 +cc text/plain quoted-printable +ccc text/vnd.net2phone.commcenter.command quoted-printable +cct application/x-director base64 +ccxml application/ccxml+xml base64 +cda application/x-cdf base64 +cdbcmsg application/vnd.contact.cmsg base64 +cdf application/x-netcdf base64 +cdkey application/vnd.mediastation.cdkey base64 +cdmia application/cdmi-capability base64 +cdmic application/cdmi-container base64 +cdmid application/cdmi-domain base64 +cdmio application/cdmi-object base64 +cdmiq application/cdmi-queue base64 +cdr application/coreldraw base64 +cdx chemical/x-cdx base64 +cdxml application/vnd.chemdraw+xml base64 +cdy application/vnd.cinderella base64 +cel image/vnd.dgn base64 +cer application/pkix-cert base64 +cfc text/x-coldfusion quoted-printable +cfg text/x-config quoted-printable +cfm text/x-coldfusion quoted-printable +cfml text/x-coldfusion quoted-printable +cfs application/x-cfs-compressed base64 +cgi text/x-cgi quoted-printable +cgm image/cgm base64 +chat application/x-chat base64 +chm application/vnd.ms-htmlhelp base64 +chrt application/vnd.kde.kchart base64 +cif chemical/x-cif base64 +cii application/vnd.anser-web-certificate-issue-initiation base64 +cil application/vnd.ms-artgalry base64 +cjs text/javascript quoted-printable +cl text/x-common-lisp quoted-printable +cla application/vnd.claymore base64 +class application/octet-stream base64 +classpath text/plain quoted-printable +clj text/x-clojure quoted-printable +clkk application/vnd.crick.clicker.keyboard base64 +clkp application/vnd.crick.clicker.palette base64 +clkt application/vnd.crick.clicker.template base64 +clkw application/vnd.crick.clicker.wordbank base64 +clkx application/vnd.crick.clicker base64 +clp application/x-msclip base64 +clpi video/MP2T base64 +cls text/x-vbasic quoted-printable +cmc application/vnd.cosmocaller base64 +cmd application/x-msdos-program base64 +cmdf chemical/x-cmdf base64 +cml chemical/x-cml base64 +cmp application/vnd.yellowriver-custom-menu base64 +cmx image/x-cmx base64 +cnd text/plain quoted-printable +cob text/x-cobol quoted-printable +cod application/vnd.rim.cod base64 +coffee text/x-coffeescript quoted-printable +com application/x-msdownload base64 +conf text/plain quoted-printable +config text/x-config quoted-printable +cpi video/MP2T base64 +cpio application/x-cpio base64 +cpp text/plain quoted-printable +cpt application/x-mac-compactpro base64 +cr2 image/x-canon-cr2 base64 +cr3 image/x-canon-cr3 base64 +crd application/x-mscardfile base64 +crl application/pkix-crl base64 +crt application/x-x509-ca-cert base64 +crw image/x-canon-crw base64 +crx application/x-chrome-extension base64 +cryptonote application/vnd.rig.cryptonote base64 +cs text/x-csharp quoted-printable +csh application/x-csh 8bit +csm application/x-cu-seeme base64 +csml chemical/x-csml base64 +csp application/vnd.commonspace base64 +css text/css 8bit +cst application/x-director base64 +csv text/csv 8bit +cu application/cu-seeme base64 +curl application/vnd.curl base64 +cw application/prs.cww base64 +cwiki text/plain quoted-printable +cwk application/x-appleworks base64 +cww application/prs.cww base64 +cxt application/x-director base64 +cxx text/x-c quoted-printable +d text/x-d quoted-printable +dae model/vnd.collada+xml base64 +daf application/vnd.Mobius.DAF base64 +dart application/vnd.dart base64 +dat text/plain quoted-printable +data text/plain quoted-printable +dataless application/vnd.fdsn.seed base64 +davmount application/davmount+xml base64 +dbase application/x-dbf base64 +dbase3 application/x-dbf base64 +dbf application/x-dbf base64 +dbk application/docbook+xml base64 +dcl text/plain quoted-printable +dcm application/dicom base64 +dcr application/x-director base64 +dcs image/x-raw-kodak base64 +dcurl text/vnd.curl.dcurl quoted-printable +dcx image/vnd.zbrush.dcx base64 +dd2 application/vnd.oma.dd2+xml base64 +ddd application/vnd.fujixerox.ddd base64 +deb application/x-debian-package base64 +def text/plain quoted-printable +deploy application/octet-stream base64 +der application/x-x509-ca-cert base64 +dex application/x-dex base64 +dfac application/vnd.dreamfactory base64 +dgc application/x-dgc-compressed base64 +dgn image/x-vnd.dgn base64 +dgnlib image/vnd.dgn base64 +dib image/bmp base64 +dic text/x-c quoted-printable +dif application/dif+xml base64 +diff text/x-diff quoted-printable +dir application/x-director base64 +dis application/vnd.Mobius.DIS base64 +dist application/octet-stream base64 +distz application/octet-stream base64 +djv image/vnd.djvu base64 +djvu image/vnd.djvu base64 +dl video/x-dl base64 +dll application/octet-stream base64 +dmg application/x-apple-diskimage base64 +dmp application/vnd.tcpdump.pcap base64 +dms application/octet-stream base64 +dna application/vnd.dna base64 +dng image/x-adobe-dng base64 +do application/x-stata-do base64 +doc application/msword base64 +docm application/vnd.ms-word.document.macroEnabled.12 base64 +docx application/vnd.openxmlformats-officedocument.wordprocessingml.document base64 +dot application/msword base64 +dotm application/vnd.ms-word.template.macroEnabled.12 base64 +dotx application/vnd.openxmlformats-officedocument.wordprocessingml.template base64 +dp application/vnd.osgi.dp base64 +dpg application/vnd.dpgraph base64 +dpr text/x-pascal quoted-printable +dpx image/x-dpx base64 +dra audio/vnd.dra base64 +drc video/x-dirac base64 +drf image/x-raw-kodak base64 +dsc text/prs.lines.tag quoted-printable +dsp text/plain quoted-printable +dssc application/dssc+der base64 +dsw text/plain quoted-printable +dta application/x-stata-dta base64 +dtb application/x-dtbook+xml base64 +dtd application/xml-dtd 8bit +dts audio/vnd.dts base64 +dtshd audio/vnd.dts.hd base64 +dump application/octet-stream base64 +dv video/DV base64 +dvb video/vnd.dvb.file base64 +dvi application/x-dvi base64 +dwf model/vnd.dwf base64 +dwfx model/vnd.dwfx+xps base64 +dwg image/vnd.dwg base64 +dxb image/vnd.dxb base64 +dxf image/vnd.dxf base64 +dxp application/vnd.spotfire.dxp base64 +dxr application/x-director base64 +dylib application/octet-stream base64 +e text/x-eiffel quoted-printable +e57 model/e57 base64 +ear application/x-tika-java-enterprise-archive base64 +ecelp4800 audio/vnd.nuera.ecelp4800 base64 +ecelp7470 audio/vnd.nuera.ecelp7470 base64 +ecelp9600 audio/vnd.nuera.ecelp9600 base64 +ecma application/ecmascript base64 +edm application/vnd.novadigm.EDM base64 +edx application/vnd.novadigm.EDX base64 +efif application/vnd.picsel base64 +egrm text/plain quoted-printable +ei6 application/vnd.pg.osasli base64 +el text/x-emacs-lisp quoted-printable +elc application/octet-stream base64 +emf image/emf base64 +eml message/rfc822 8bit +emlx message/x-emlx base64 +emm application/vnd.ibm.electronic-media base64 +emma application/emma+xml base64 +emz image/x-emf-compressed base64 +enr application/x-endnote-refer base64 +ens application/x-endnote-style base64 +ent text/plain quoted-printable +entity application/vnd.nervana base64 +enw application/x-endnote-refer base64 +eol audio/vnd.digital-winds 7bit +eot application/vnd.ms-fontobject base64 +eps application/postscript 8bit +epsf application/postscript 8bit +epsi application/postscript 8bit +epub application/epub+zip base64 +erf image/x-epson-erf base64 +erl text/x-erlang quoted-printable +es text/ecmascript quoted-printable +es3 application/vnd.eszigno3+xml base64 +esa application/vnd.osgi.subsystem base64 +esf application/vnd.epson.esf base64 +et3 application/vnd.eszigno3+xml base64 +etx text/x-setext quoted-printable +eva application/x-eva base64 +evc audio/EVRC base64 +evy application/x-envoy base64 +exe application/x-dosexec base64 +exi application/exi base64 +exp text/x-expect quoted-printable +exr image/aces base64 +ext application/vnd.novadigm.EXT base64 +ez application/andrew-inset base64 +ez2 application/vnd.ezpix-album base64 +ez3 application/vnd.ezpix-package base64 +f text/x-fortran quoted-printable +f4a audio/mp4 base64 +f4b audio/mp4 base64 +f4p video/mp4 base64 +f4v video/mp4 base64 +f77 text/x-fortran quoted-printable +f90 text/x-fortran quoted-printable +fb application/vnd.framemaker base64 +fb2 application/x-fictionbook+xml base64 +fbdoc application/vnd.framemaker base64 +fbs image/vnd.fastbidsheet base64 +fcdt application/vnd.adobe.formscentral.fcdt base64 +fcs application/vnd.isac.fcs base64 +fdf application/vnd.fdf base64 +fe_launch application/vnd.denovo.fcselayout-link base64 +fff image/x-raw-imacon base64 +fg5 application/vnd.fujitsu.oasysgp base64 +fgd application/x-director base64 +fh image/x-freehand base64 +fh10 image/x-freehand base64 +fh11 image/x-freehand base64 +fh12 image/x-freehand base64 +fh4 image/x-freehand base64 +fh40 image/x-freehand base64 +fh5 image/x-freehand base64 +fh50 image/x-freehand base64 +fh7 image/x-freehand base64 +fh8 image/x-freehand base64 +fh9 image/x-freehand base64 +fhc image/x-freehand base64 +fig application/x-xfig base64 +fit application/fits base64 +fits application/fits base64 +flac audio/flac base64 +flc video/x-flc base64 +fli video/x-fli base64 +flo application/vnd.micrografx.flo base64 +flv video/x-flv base64 +flw application/vnd.kde.kivio base64 +flx text/vnd.fmi.flexstor quoted-printable +fly text/vnd.fly quoted-printable +fm application/vnd.framemaker base64 +fn text/plain quoted-printable +fnc application/vnd.frogans.fnc base64 +fo application/xslfo+xml base64 +fodp application/vnd.oasis.opendocument.flat.presentation base64 +fods application/vnd.oasis.opendocument.flat.spreadsheet base64 +fodt application/vnd.oasis.opendocument.flat.text base64 +for text/x-fortran quoted-printable +fp7 application/x-filemaker base64 +fpx image/vnd.fpx base64 +frame application/vnd.framemaker base64 +frm application/vnd.framemaker base64 +fsc application/vnd.fsc.weblaunch 7bit +fst image/vnd.fst base64 +ft text/plain quoted-printable +ft10 image/x-freehand base64 +ft11 image/x-freehand base64 +ft12 image/x-freehand base64 +ft7 image/x-freehand base64 +ft8 image/x-freehand base64 +ft9 image/x-freehand base64 +ftc application/vnd.fluxtime.clip base64 +fti application/vnd.anser-web-funds-transfer-initiation base64 +fts application/fits base64 +fv text/plain quoted-printable +fvt video/vnd.fvt base64 +fxp application/vnd.adobe.fxp base64 +fxpl application/vnd.adobe.fxp base64 +fzs application/vnd.fuzzysheet base64 +g text/plain quoted-printable +g2w application/vnd.geoplan base64 +g3 image/g3fax base64 +g3w application/vnd.geospace base64 +gac application/vnd.groove-account base64 +gam application/x-tads base64 +gbr application/rpki-ghostbusters base64 +gca application/x-gca-compressed base64 +gdl model/vnd.gdl base64 +geo application/vnd.dynageo base64 +gex application/vnd.geometry-explorer base64 +ggb application/vnd.geogebra.file base64 +ggs application/vnd.geogebra.slides base64 +ggt application/vnd.geogebra.tool base64 +ghf application/vnd.groove-help base64 +gif image/gif base64 +gim application/vnd.groove-identity-message base64 +gl video/x-gl base64 +gml application/gml+xml base64 +gmx application/vnd.gmx base64 +gnucash application/x-gnucash base64 +gnumakefile text/x-makefile quoted-printable +gnumeric application/x-gnumeric base64 +go text/x-go quoted-printable +gp4 application/x-guitar-pro base64 +gpg application/octet-stream base64 +gph application/vnd.FloGraphIt base64 +gpkg application/x-geopackage base64 +gpx application/gpx+xml base64 +gqf application/vnd.grafeq base64 +gqs application/vnd.grafeq base64 +gram application/srgs base64 +gramps application/x-gramps-xml base64 +grb application/x-grib base64 +grb1 application/x-grib base64 +grb2 application/x-grib base64 +gre application/vnd.geometry-explorer base64 +grm text/plain quoted-printable +groovy text/x-groovy quoted-printable +grv application/vnd.groove-injector base64 +grxml application/srgs+xml base64 +gsf application/x-font-ghostscript base64 +gslib audio/x-psf base64 +gtar application/x-gtar base64 +gtm application/vnd.groove-tool-message base64 +gtw model/vnd.gtw base64 +gv text/vnd.graphviz quoted-printable +gxf application/gxf base64 +gxt application/vnd.geonext base64 +gz application/gzip base64 +h text/plain quoted-printable +h++ text/x-c++hdr quoted-printable +h261 video/H261 base64 +h263 video/H263 base64 +h264 video/H264 base64 +h5 application/x-hdf base64 +hal application/vnd.hal+xml base64 +haml text/x-haml quoted-printable +handlers text/plain quoted-printable +hbc application/vnd.hbci base64 +hbci application/vnd.hbci base64 +hdf application/x-hdf base64 +hdr application/envi.hdr base64 +he5 application/x-hdf base64 +heic image/heic base64 +heics image/heic-sequence base64 +heif image/heif base64 +heifs image/heif-sequence base64 +hep application/x-hep base64 +hfa application/x-erdas-hfa base64 +hh text/plain quoted-printable +hif image/heic base64 +hlp text/plain quoted-printable +hp text/x-c++hdr quoted-printable +hpgl application/vnd.hp-HPGL base64 +hpid application/vnd.hp-hpid base64 +hpp text/plain quoted-printable +hprof application/vnd.java.hprof base64 +hprof.txt application/vnd.java.hprof.text base64 +hps application/vnd.hp-hps base64 +hqx application/mac-binhex40 8bit +hs text/x-haskell quoted-printable +htc text/plain quoted-printable +htke application/vnd.kenameaapp base64 +htm text/html 8bit +html text/html 8bit +htmlx text/html 8bit +htx text/html 8bit +hvd application/vnd.yamaha.hv-dic base64 +hvp application/vnd.yamaha.hv-voice base64 +hvs application/vnd.yamaha.hv-script base64 +hwpx application/hwp+zip base64 +hx text/x-haxe quoted-printable +hxx text/x-c++hdr quoted-printable +i2g application/vnd.intergeo base64 +i3 text/x-modula quoted-printable +ibooks application/x-ibooks+zip base64 +ica application/x-ica base64 +icb image/x-tga base64 +icc application/vnd.iccprofile base64 +ice x-conference/x-cooltalk base64 +icm application/vnd.iccprofile base64 +icns image/icns base64 +ico image/vnd.microsoft.icon base64 +ics text/calendar quoted-printable +idl text/x-idl quoted-printable +idml application/vnd.adobe.indesign-idml-package base64 +ief image/ief base64 +ifb text/calendar quoted-printable +ifm application/vnd.shana.informed.formdata base64 +ifo application/x-dvd-ifo base64 +ig text/x-modula quoted-printable +iges model/iges base64 +igl application/vnd.igloader base64 +igm application/vnd.insors.igm base64 +igs model/iges base64 +igx application/vnd.micrografx.igx base64 +ihtml text/plain quoted-printable +iif application/vnd.shana.informed.interchange base64 +iiq image/x-raw-phaseone base64 +imagemap application/x-imagemap 8bit +imap application/x-imagemap 8bit +imp application/vnd.accpac.simply.imp base64 +ims application/vnd.ms-ims base64 +in text/plain quoted-printable +indd application/x-adobe-indesign base64 +ini text/x-ini quoted-printable +ink application/inkml+xml base64 +inkml application/inkml+xml base64 +install text/plain quoted-printable +inx application/x-adobe-indesign-interchange base64 +iota application/vnd.astraea-software.iota base64 +ipa application/octet-stream base64 +ipfix application/ipfix base64 +ipk application/vnd.shana.informed.package base64 +irm application/vnd.ibm.rights-management base64 +irp application/vnd.irepository.package+xml base64 +iso application/x-iso9660-image base64 +iso19139 text/iso19139+xml quoted-printable +itk text/x-tcl quoted-printable +itp application/vnd.shana.informed.formtemplate base64 +ivf video/x-ivf base64 +ivp application/vnd.immervision-ivp base64 +ivu application/vnd.immervision-ivu base64 +j2c image/x-jp2-codestream base64 +jad text/vnd.sun.j2me.app-descriptor 8bit +jam application/vnd.jam base64 +jar application/java-archive base64 +java text/x-java-source quoted-printable +jb2 image/x-jbig2 base64 +jbig2 image/x-jbig2 base64 +jdf application/x-jeol-jdf base64 +jfi image/jpeg base64 +jfif image/jpeg base64 +jif image/jpeg base64 +jisp application/vnd.jisp base64 +jks application/x-java-keystore base64 +jl text/x-common-lisp quoted-printable +jlt application/vnd.hp-jlyt base64 +jmx text/plain quoted-printable +jng video/x-jng base64 +jnilib application/x-java-jnilib base64 +jnlp application/x-java-jnlp-file base64 +joda application/vnd.joost.joda-archive base64 +jp2 image/jp2 base64 +jpe image/jpeg base64 +jpeg image/jpeg base64 +jpf image/jpx base64 +jpg image/jpeg base64 +jpg2 image/jp2 base64 +jpgm image/jpm base64 +jpgv video/JPEG base64 +jpm image/jpm base64 +jpx image/jpx base64 +js text/javascript quoted-printable +json application/json 8bit +jsonml application/jsonml+json base64 +jsp text/x-jsp quoted-printable +junit text/plain quoted-printable +jx text/plain quoted-printable +jxl image/jxl base64 +k25 image/x-kodak-k25 base64 +kar audio/midi base64 +karbon application/vnd.kde.karbon base64 +kcm application/vnd.nervana base64 +kdc image/x-kodak-kdc base64 +key application/vnd.apple.keynote base64 +keys text/plain quoted-printable +kfo application/vnd.kde.kformula base64 +kia application/vnd.kidspiration base64 +kil application/x-killustrator base64 +kml application/vnd.google-earth.kml+xml 8bit +kmz application/vnd.google-earth.kmz 8bit +kne application/vnd.Kinar base64 +knp application/vnd.Kinar base64 +kom application/vnd.hbci base64 +kon application/vnd.kde.kontour base64 +kpr application/vnd.kde.kpresenter base64 +kpt application/vnd.kde.kpresenter base64 +kpxx application/vnd.ds-keypoint base64 +ksp application/vnd.kde.kspread base64 +ktr application/vnd.kahootz base64 +ktx image/ktx base64 +ktz application/vnd.kahootz base64 +kwd application/vnd.kde.kword base64 +kwt application/vnd.kde.kword base64 +l text/x-lex quoted-printable +l16 audio/L16 base64 +las application/x-asprs base64 +lasxml application/vnd.las.las+xml base64 +latex application/x-latex 8bit +laz application/x-asprs base64 +lbd application/vnd.llamagraphics.life-balance.desktop base64 +lbe application/vnd.llamagraphics.life-balance.exchange+xml base64 +les application/vnd.hhe.lesson-player base64 +less text/x-less quoted-printable +lha application/octet-stream base64 +lhs text/x-haskell quoted-printable +license text/plain quoted-printable +link66 application/vnd.route66.link66+xml base64 +lisp text/x-common-lisp quoted-printable +list text/plain quoted-printable +list3820 application/vnd.ibm.modcap base64 +listafp application/vnd.ibm.modcap base64 +lnk application/x-ms-shortcut base64 +log text/plain quoted-printable +lostxml application/lost+xml base64 +lrf application/octet-stream base64 +lrm application/vnd.ms-lrm base64 +lsp text/x-common-lisp quoted-printable +ltf application/vnd.frogans.ltf base64 +ltx application/x-latex 8bit +lua text/x-lua quoted-printable +lvp audio/vnd.lucent.voice base64 +lwp application/vnd.lotus-wordpro base64 +lyr application/x-esri-layer base64 +lz application/x-lzip base64 +lz4 application/x-lz4 base64 +lzh application/octet-stream base64 +lzma application/x-lzma base64 +m text/x-objcsrc quoted-printable +m13 application/x-msmediaview base64 +m14 application/x-msmediaview base64 +m1v video/mpeg base64 +m21 application/mp21 base64 +m2a audio/mpeg base64 +m2t video/MP2T base64 +m2ts video/MP2T base64 +m2v video/mpeg base64 +m3 text/x-modula quoted-printable +m3a audio/mpeg base64 +m3u audio/x-mpegurl base64 +m3u8 application/vnd.apple.mpegurl base64 +m4 text/plain quoted-printable +m4a audio/MP4A-LATM base64 +m4b audio/mp4 base64 +m4s video/iso.segment base64 +m4u video/vnd.mpegurl 8bit +m4v video/vnd.objectvideo base64 +ma application/mathematica base64 +mads application/mads+xml base64 +mag application/vnd.ecowin.chart base64 +makefile text/x-makefile quoted-printable +maker application/vnd.framemaker base64 +man text/troff 8bit +manifest text/plain quoted-printable +mar application/octet-stream base64 +markdown text/markdown quoted-printable +mat application/x-matlab-data base64 +mathml application/mathml+xml base64 +mb application/mathematica base64 +mbk application/vnd.Mobius.MBK base64 +mbox application/mbox base64 +mc1 application/vnd.medcalcdata base64 +mcd application/vnd.mcd base64 +mcurl text/vnd.curl.mcurl quoted-printable +md text/markdown quoted-printable +mda application/x-msaccess base64 +mdb application/x-msaccess base64 +mde application/x-msaccess base64 +mdf application/x-msaccess base64 +mdi image/vnd.ms-modi base64 +mdo text/plain quoted-printable +mdtext text/markdown quoted-printable +me text/troff 8bit +mef image/x-raw-mamiya base64 +memgraph application/x-memgraph base64 +mesh model/mesh base64 +meta text/plain quoted-printable +meta4 application/metalink4+xml base64 +metalink application/metalink+xml base64 +mets application/mets+xml base64 +mf text/plain quoted-printable +mfm application/vnd.mfmp base64 +mft application/rpki-manifest base64 +mg text/x-modula quoted-printable +mgp application/vnd.osgeo.mapguide.package base64 +mgz application/vnd.proteus.magazine base64 +mht multipart/related base64 +mhtml multipart/related base64 +mid audio/x-midi base64 +midi audio/midi base64 +mie application/x-mie base64 +mif application/vnd.mif base64 +mime message/rfc822 8bit +minigsf audio/x-psf base64 +minipsf audio/x-psf base64 +minipsf1 audio/x-psf base64 +mj2 video/MJ2 base64 +mjp2 video/MJ2 base64 +mjpeg video/x-motion-jpeg base64 +mjpg video/x-motion-jpeg base64 +mjs text/javascript quoted-printable +mk3d video/x-matroska base64 +mka audio/matroska base64 +mkd text/markdown quoted-printable +mks video/x-matroska base64 +mkv video/x-matroska base64 +ml text/x-ml quoted-printable +mli text/x-ocaml quoted-printable +mlp application/vnd.dolby.mlp base64 +mmap application/vnd.mindjet.mindmanager base64 +mmas application/vnd.mindjet.mindmanager base64 +mmat application/vnd.mindjet.mindmanager base64 +mmd application/vnd.chipnuts.karaoke-mmd base64 +mmf application/vnd.smaf base64 +mmmp application/vnd.mindjet.mindmanager base64 +mmp application/vnd.mindjet.mindmanager base64 +mmpt application/vnd.mindjet.mindmanager base64 +mmr image/vnd.fujixerox.edmics-mmr base64 +mng video/x-mng base64 +mny application/x-msmoney base64 +mobi application/x-mobipocket-ebook base64 +mod audio/x-mod base64 +mods application/mods+xml base64 +mos image/x-raw-leaf base64 +mov video/quicktime base64 +movie video/x-sgi-movie base64 +mp2 video/mpeg base64 +mp21 application/mp21 base64 +mp2a audio/mpeg base64 +mp3 audio/mpeg base64 +mp3g video/mpeg base64 +mp4 application/mp4 base64 +mp4a audio/mp4 base64 +mp4s application/mp4 base64 +mp4v video/mp4 base64 +mpc application/vnd.mophun.certificate base64 +mpd application/dash+xml base64 +mpe video/mpeg base64 +mpeg video/mpeg base64 +mpg video/mpeg base64 +mpg4 audio/mp4 base64 +mpga audio/mpeg base64 +mpkg application/vnd.apple.installer+xml base64 +mpl video/MP2T base64 +mpls video/MP2T base64 +mpm application/vnd.blueice.multipass base64 +mpn application/vnd.mophun.application base64 +mpp application/vnd.ms-project base64 +mpt application/vnd.ms-project base64 +mpx application/x-project base64 +mpy application/vnd.ibm.MiniPay base64 +mqy application/vnd.Mobius.MQY base64 +mrc application/marc base64 +mrcx application/marcxml+xml base64 +mrw image/x-minolta-mrw base64 +ms text/troff 8bit +msa application/vnd.msa-disk-image base64 +mscml application/mediaservercontrol+xml base64 +mseed application/vnd.fdsn.mseed base64 +mseq application/vnd.mseq base64 +msf application/vnd.epson.msf base64 +msg application/vnd.ms-outlook base64 +msh model/mesh base64 +msi application/x-ms-installer base64 +msl application/vnd.Mobius.MSL base64 +msp application/x-ms-installer base64 +mst application/x-ms-installer base64 +msty application/vnd.muvee.style base64 +mts model/vnd.mts base64 +mus application/vnd.musician base64 +musicxml application/vnd.recordare.musicxml+xml base64 +mvb application/x-msmediaview base64 +mwf application/vnd.MFER base64 +mxf application/mxf base64 +mxl application/vnd.recordare.musicxml base64 +mxmf audio/vnd.nokia.mobile-xmf base64 +mxml application/xv+xml base64 +mxs application/vnd.triscape.mxs base64 +mxu video/vnd.mpegurl 8bit +myd application/x-mysql-misam-data base64 +myi application/x-mysql-misam-compressed-index base64 +n-gage application/vnd.nokia.n-gage.symbian.install base64 +n3 text/plain quoted-printable +nar application/vnd.iptc.g2.newsmessage+xml base64 +nb application/mathematica base64 +nbp application/vnd.wolfram.player base64 +nc application/x-netcdf base64 +ncx application/x-dtbncx+xml base64 +nef image/x-nikon-nef base64 +nes application/x-nesrom base64 +nfo text/x-nfo quoted-printable +ngdat application/vnd.nokia.n-gage.data base64 +nim video/vnd.nokia.interleaved-multimedia base64 +nitf application/vnd.nitf base64 +nlu application/vnd.neurolanguage.nlu base64 +nml application/vnd.enliven base64 +nnd application/vnd.noblenet-directory base64 +nns application/vnd.noblenet-sealer base64 +nnw application/vnd.noblenet-web base64 +notebook application/x-smarttech-notebook base64 +notice text/plain quoted-printable +npx image/vnd.net-fpx base64 +nroff text/troff 8bit +nrw image/x-raw-nikon base64 +nsc application/x-conference base64 +nsf application/vnd.lotus-notes base64 +ntf application/vnd.nitf base64 +numbers application/vnd.apple.numbers base64 +nzb application/x-nzb base64 +oa2 application/vnd.fujitsu.oasys2 base64 +oa3 application/vnd.fujitsu.oasys3 base64 +oas application/vnd.fujitsu.oasys base64 +obd application/x-msbinder base64 +obj application/x-tgif base64 +ocaml text/x-ocaml quoted-printable +oda application/oda base64 +odb application/vnd.oasis.opendocument.base base64 +odc application/vnd.oasis.opendocument.chart base64 +odf application/vnd.oasis.opendocument.formula base64 +odft application/vnd.oasis.opendocument.formula-template base64 +odg application/vnd.oasis.opendocument.graphics base64 +odi application/vnd.oasis.opendocument.image base64 +odm application/vnd.oasis.opendocument.text-master base64 +odp application/vnd.oasis.opendocument.presentation base64 +ods application/vnd.oasis.opendocument.spreadsheet base64 +odt application/vnd.oasis.opendocument.text base64 +oex application/x-opera-extension base64 +oga audio/ogg base64 +ogg audio/vorbis base64 +ogm video/x-ogm base64 +ogv video/ogg base64 +ogx application/ogg base64 +omdoc application/omdoc+xml base64 +onepkg application/onenote base64 +onetmp application/onenote base64 +onetoc application/onenote base64 +onetoc2 application/onenote base64 +opf application/oebps-package+xml base64 +opml text/x-opml quoted-printable +oprc application/vnd.palm base64 +opus audio/opus base64 +orf image/x-olympus-orf base64 +org application/vnd.lotus-organizer base64 +osf application/vnd.yamaha.openscoreformat base64 +osfpvg application/vnd.yamaha.openscoreformat.osfpvg+xml base64 +ost application/vnd.ms-outlook-pst base64 +otc application/vnd.oasis.opendocument.chart-template base64 +otf font/otf base64 +otg application/vnd.oasis.opendocument.graphics-template base64 +oth application/vnd.oasis.opendocument.text-web base64 +oti application/vnd.oasis.opendocument.image-template base64 +otm application/vnd.oasis.opendocument.text-master base64 +otp application/vnd.oasis.opendocument.presentation-template base64 +ots application/vnd.oasis.opendocument.spreadsheet-template base64 +ott application/vnd.oasis.opendocument.text-template base64 +owl application/rdf+xml 8bit +oxps application/oxps base64 +oxt application/vnd.openofficeorg.extension base64 +p text/x-pascal quoted-printable +p10 application/pkcs10 base64 +p12 application/x-pkcs12 base64 +p7b application/x-pkcs7-certificates base64 +p7c application/pkcs7-mime base64 +p7m application/pkcs7-mime base64 +p7r application/x-pkcs7-certreqresp base64 +p7s application/pkcs7-signature base64 +p8 application/pkcs8 base64 +pac application/x-ns-proxy-autoconfig base64 +pack application/x-java-pack200 base64 +pages application/vnd.apple.pages base64 +pam image/x-portable-arbitrarymap base64 +parquet application/vnd.apache.parquet base64 +pas text/x-pascal quoted-printable +patch text/x-diff quoted-printable +paw application/vnd.pawaafile base64 +pbd application/vnd.powerbuilder6 base64 +pbm image/x-portable-bitmap base64 +pcap application/vnd.tcpdump.pcap base64 +pcapng application/vnd.tcpdump.pcapng base64 +pcf application/x-font-pcf base64 +pcl application/vnd.hp-PCL base64 +pclxl application/vnd.hp-PCLXL base64 +pct image/x-pict base64 +pcurl application/vnd.curl.pcurl base64 +pcx image/vnd.zbrush.pcx base64 +pdb application/vnd.palm base64 +pdf application/pdf base64 +pef image/x-pentax-pef base64 +pen text/plain quoted-printable +perl text/x-perl quoted-printable +pfa application/x-font-type1 base64 +pfb application/x-font-type1 base64 +pfm application/x-font-printer-metric base64 +pfr application/font-tdpfr base64 +pfx application/x-pkcs12 base64 +pgb image/vnd.globalgraphics.pgb base64 +pgm image/x-portable-graymap base64 +pgn application/x-chess-pgn base64 +pgp application/octet-stream base64 +php text/x-php quoted-printable +php3 text/x-php quoted-printable +php4 text/x-php quoted-printable +pht application/x-httpd-php 8bit +phtml application/x-httpd-php 8bit +pic image/x-pict base64 +pict image/x-pict base64 +pkd application/vnd.hbci base64 +pkg application/octet-stream base64 +pki application/pkixcmp base64 +pkipath application/pkix-pkipath base64 +pkpass application/vnd.apple.pkpass base64 +pl application/x-perl 8bit +plb application/vnd.3gpp.pic-bw-large base64 +plc application/vnd.Mobius.PLC base64 +plf application/vnd.pocketlearn base64 +plj audio/vnd.everad.plj base64 +pls application/pls+xml base64 +plt application/vnd.hp-HPGL base64 +pm application/x-pagemaker base64 +pm5 application/x-pagemaker base64 +pml application/vnd.ctc-posml base64 +png image/png base64 +pnm image/x-portable-anymap base64 +pod text/plain quoted-printable +pom text/plain quoted-printable +portpkg application/vnd.macports.portpkg base64 +pot application/vnd.ms-powerpoint base64 +potm application/vnd.ms-powerpoint.template.macroEnabled.12 base64 +potx application/vnd.openxmlformats-officedocument.presentationml.template base64 +pp text/x-pascal quoted-printable +ppa application/vnd.ms-powerpoint base64 +ppam application/vnd.ms-powerpoint.addin.macroEnabled.12 base64 +ppd application/vnd.cups-ppd base64 +ppj image/vnd.adobe.premiere base64 +ppm image/x-portable-pixmap base64 +pps application/vnd.ms-powerpoint base64 +ppsm application/vnd.ms-powerpoint.slideshow.macroEnabled.12 base64 +ppsx application/vnd.openxmlformats-officedocument.presentationml.slideshow base64 +ppt application/vnd.ms-powerpoint base64 +pptm application/vnd.ms-powerpoint.presentation.macroEnabled.12 base64 +pptx application/vnd.openxmlformats-officedocument.presentationml.presentation base64 +ppz application/vnd.ms-powerpoint base64 +pqa application/vnd.palm base64 +prc application/vnd.palm base64 +pre application/vnd.lotus-freelance base64 +prf application/pics-rules base64 +pro text/x-prolog quoted-printable +project text/plain quoted-printable +properties text/x-java-properties quoted-printable +prql application/prql base64 +prt application/x-prt base64 +ps application/postscript 8bit +ps1 application/x-msdownload base64 +psb application/vnd.3gpp.pic-bw-small base64 +psd image/vnd.adobe.photoshop base64 +psf application/x-font-linux-psf base64 +psf1 audio/x-psf base64 +psflib audio/x-psf base64 +pskcxml application/pskc+xml base64 +psp image/x-paintshoppro base64 +pspimage image/x-paintshoppro base64 +pst application/vnd.ms-outlook-pst base64 +pt5 application/x-pagemaker base64 +pti application/vnd.pvi.ptid1 base64 +ptid application/vnd.pvi.ptid1 base64 +ptx image/x-raw-pentax base64 +pub application/x-mspublisher base64 +pvb application/vnd.3gpp.pic-bw-var base64 +pwn application/vnd.3M.Post-it-Notes base64 +pxn image/x-raw-logitech base64 +py application/x-python 8bit +pya audio/vnd.ms-playready.media.pya base64 +pyv video/vnd.ms-playready.media.pyv base64 +qam application/vnd.epson.quickanime base64 +qbo application/vnd.intu.qbo base64 +qcp audio/vnd.qcelp base64 +qfx application/vnd.intu.qfx base64 +qps application/vnd.publishare-delta-tree base64 +qpw application/x-quattro-pro base64 +qt video/quicktime base64 +qtl application/x-quicktimeplayer base64 +qwd application/vnd.Quark.QuarkXPress 8bit +qwt application/vnd.Quark.QuarkXPress 8bit +qxb application/vnd.Quark.QuarkXPress 8bit +qxd application/vnd.Quark.QuarkXPress 8bit +qxl application/vnd.Quark.QuarkXPress 8bit +qxt application/vnd.Quark.QuarkXPress 8bit +r text/x-rsrc quoted-printable +r3d image/x-raw-red base64 +ra audio/x-pn-realaudio base64 +raf image/x-fuji-raf base64 +ram audio/x-pn-realaudio base64 +rar application/x-rar-compressed base64 +ras image/x-cmu-raster base64 +raw image/x-panasonic-raw base64 +rb application/x-ruby 8bit +rbw application/x-ruby 8bit +rcprofile application/vnd.ipunplugged.rcprofile base64 +rct application/prs.nprend base64 +rdf application/rdf+xml 8bit +rdz application/vnd.data-vision.rdz base64 +readme text/plain quoted-printable +reg application/x-msdownload base64 +rep application/vnd.businessobjects base64 +req application/vnd.nervana base64 +request application/vnd.nervana base64 +res application/x-dtbresource+xml base64 +rest text/x-rst quoted-printable +restx text/x-rst quoted-printable +rexx text/x-rexx quoted-printable +rgb image/x-rgb base64 +rhtml application/x-html+ruby 8bit +rif application/reginfo+xml base64 +rip audio/vnd.rip base64 +ris application/x-research-info-systems base64 +rl application/resource-lists+xml base64 +rlc image/vnd.fujixerox.edmics-rlc base64 +rld application/resource-lists-diff+xml base64 +rm application/vnd.rn-realmedia base64 +rmi audio/midi base64 +rmp audio/x-pn-realaudio-plugin base64 +rms application/vnd.jcp.javame.midlet-rms base64 +rmvb application/vnd.rn-realmedia-vbr base64 +rnc application/relax-ng-compact-syntax base64 +rnd application/prs.nprend base64 +rng text/plain quoted-printable +rnx text/plain quoted-printable +roa application/rpki-roa base64 +roff text/troff 8bit +roles text/plain quoted-printable +rp9 application/vnd.cloanto.rp9 base64 +rpm application/x-rpm base64 +rpss application/vnd.nokia.radio-presets base64 +rpst application/vnd.nokia.radio-preset base64 +rq application/sparql-query base64 +rs application/rls-services+xml base64 +rsd application/rsd+xml base64 +rss application/rss+xml base64 +rst text/plain quoted-printable +rtf application/rtf base64 +rtx text/richtext 8bit +rw2 image/x-raw-panasonic base64 +rwz image/x-raw-rawzor base64 +s text/x-assembly quoted-printable +s11 video/vnd.sealed.mpeg1 base64 +s14 video/vnd.sealed.mpeg4 base64 +s1a application/vnd.sealedmedia.softseal.pdf base64 +s1e application/vnd.sealed.xls base64 +s1h application/vnd.sealedmedia.softseal.html base64 +s1m audio/vnd.sealedmedia.softseal.mpeg base64 +s1p application/vnd.sealed.ppt base64 +s1q video/vnd.sealedmedia.softseal.mov base64 +s1w application/vnd.sealed.doc base64 +s3m audio/s3m base64 +s7m application/x-sas-dmdb base64 +sa7 application/x-sas-access base64 +saf application/vnd.yamaha.smaf-audio base64 +sap audio/x-sap base64 +sas application/x-sas base64 +sas7bacs application/x-sas-access base64 +sas7baud application/x-sas-audit base64 +sas7bbak application/x-sas-backup base64 +sas7bcat application/x-sas-catalog base64 +sas7bdat application/x-sas-data base64 +sas7bdmd application/x-sas-dmdb base64 +sas7bfdb application/x-sas-fdb base64 +sas7bitm application/x-sas-itemstor base64 +sas7bmdb application/x-sas-mddb base64 +sas7bndx application/x-sas-data-index base64 +sas7bpgm application/x-sas-program-data base64 +sas7bput application/x-sas-putility base64 +sas7butl application/x-sas-utility base64 +sas7bvew application/x-sas-view base64 +sav application/x-spss base64 +sbml application/sbml+xml base64 +sbs application/x-spss base64 +sc application/vnd.ibm.secure-container base64 +sc7 application/x-sas-catalog base64 +scad application/x-openscad base64 +scala text/x-scala quoted-printable +scd application/x-msschedule base64 +schemas text/plain quoted-printable +scm application/vnd.lotus-screencam base64 +scq application/scvp-cv-request base64 +scs application/scvp-cv-response base64 +scurl text/vnd.curl.scurl quoted-printable +sd2 application/x-sas-data-v6 base64 +sd7 application/x-sas-data base64 +sda application/vnd.stardivision.draw base64 +sdc application/vnd.stardivision.calc base64 +sdd application/vnd.stardivision.impress base64 +sdf application/vnd.Kinar base64 +sdkd application/vnd.solent.sdkm+xml base64 +sdkm application/vnd.solent.sdkm+xml base64 +sdo application/vnd.sealed.doc base64 +sdoc application/vnd.sealed.doc base64 +sdp application/sdp base64 +sds application/vnd.stardivision.chart base64 +sdw application/vnd.stardivision.writer base64 +sed text/x-sed quoted-printable +see application/vnd.seemail base64 +seed application/vnd.fdsn.seed base64 +sem application/vnd.sealed.eml base64 +sema application/vnd.sema base64 +semd application/vnd.semd base64 +semf application/vnd.semf base64 +seml application/vnd.sealed.eml base64 +ser application/java-serialized-object base64 +setpay application/set-payment-initiation base64 +setreg application/set-registration-initiation base64 +sf7 application/x-sas-fdb base64 +sfd-hdstx application/vnd.hydrostatix.sof-data base64 +sfdu application/x-sfdu base64 +sfs application/vnd.spotfire.sfs base64 +sfv text/x-sfv quoted-printable +sgi image/sgi base64 +sgl application/vnd.stardivision.writer-global base64 +sgm text/sgml quoted-printable +sgml application/sgml base64 +sh application/x-sh 8bit +shar application/x-shar 8bit +shf application/shf+xml base64 +shp application/x-shapefile base64 +shtml text/html 8bit +shw application/x-corelpresentations base64 +si text/vnd.wap.si quoted-printable +si7 application/x-sas-data-index base64 +sib application/x-sibelius base64 +sic application/vnd.wap.sic base64 +sid image/x-mrsid-image base64 +sig application/pgp-signature base64 +sil audio/silk base64 +silo model/mesh base64 +sis application/vnd.symbian.install base64 +sisx application/vnd.symbian.install base64 +sit application/x-stuffit base64 +sitx application/x-stuffitx base64 +siv application/sieve base64 +sj application/javascript 8bit +skd application/vnd.koan base64 +skm application/vnd.koan base64 +skp application/vnd.koan base64 +skt application/vnd.koan base64 +sl text/vnd.wap.sl quoted-printable +slc application/vnd.wap.slc base64 +sldasm application/sldworks base64 +slddrw application/sldworks base64 +sldm application/vnd.ms-powerpoint.slide.macroEnabled.12 base64 +sldprt application/sldworks base64 +sldx application/vnd.openxmlformats-officedocument.presentationml.slide base64 +slt application/vnd.epson.salt base64 +sm application/vnd.stepmania.stepchart base64 +sm7 application/x-sas-mddb base64 +smf application/vnd.stardivision.math base64 +smh application/vnd.sealed.mht base64 +smht application/vnd.sealed.mht base64 +smi application/smil+xml 8bit +smil application/smil+xml 8bit +sml application/smil+xml 8bit +smo video/vnd.sealedmedia.softseal.mov base64 +smov video/vnd.sealedmedia.softseal.mov base64 +smp audio/vnd.sealedmedia.softseal.mpeg base64 +smp3 audio/vnd.sealedmedia.softseal.mpeg base64 +smpg video/vnd.sealed.mpeg4 base64 +sms application/vnd.3gpp.sms base64 +smv audio/SMV base64 +smzip application/vnd.stepmania.package base64 +snd audio/basic base64 +snf application/x-font-snf base64 +so application/octet-stream base64 +soc application/sgml-open-catalog base64 +sp7 application/x-sas-putility base64 +spc application/x-pkcs7-certificates base64 +spd application/vnd.sealedmedia.softseal.pdf base64 +spdf application/vnd.sealedmedia.softseal.pdf base64 +spf application/vnd.yamaha.smaf-phrase base64 +spl application/x-futuresplash base64 +spo application/x-spss base64 +spot text/vnd.in3d.spot quoted-printable +spp application/scvp-vp-response base64 +sppt application/vnd.sealed.ppt base64 +spq application/scvp-vp-request base64 +sps application/x-spss base64 +spx audio/speex base64 +sql application/x-sql base64 +sr2 image/x-sony-sr2 base64 +sr7 application/x-sas-itemstor base64 +src application/x-wais-source base64 +srf image/x-sony-srf base64 +srl application/sereal base64 +srt application/x-subrip base64 +sru application/sru+xml base64 +srx application/sparql-results+xml base64 +ss7 application/x-sas-program-data base64 +ssdl application/ssdl+xml base64 +sse application/vnd.kodak-descriptor base64 +ssf application/vnd.epson.ssf base64 +ssml application/ssml+xml base64 +ssw video/vnd.sealed.swf base64 +sswf video/vnd.sealed.swf base64 +st application/vnd.sailingtracker.track base64 +st7 application/x-sas-audit base64 +stc application/vnd.sun.xml.calc.template base64 +std application/vnd.sun.xml.draw.template base64 +stf application/vnd.wt.stf base64 +sti application/vnd.sun.xml.impress.template base64 +stk application/hyperstudio base64 +stl application/vnd.ms-pki.stl base64 +stm application/vnd.sealedmedia.softseal.html base64 +stml application/vnd.sealedmedia.softseal.html base64 +str application/vnd.pg.format base64 +stw application/vnd.sun.xml.writer.template base64 +stx application/x-sas-transport base64 +su7 application/x-sas-utility base64 +sub image/vnd.dvb.subtitle base64 +sus application/vnd.sus-calendar base64 +susp application/vnd.sus-calendar base64 +sv4cpio application/x-sv4cpio base64 +sv4crc application/x-sv4crc base64 +sv7 application/x-sas-view base64 +svc application/vnd.dvb.service base64 +svd application/vnd.svd base64 +svg image/svg+xml 8bit +svgz image/svg+xml 8bit +swa application/x-director base64 +swf application/x-shockwave-flash base64 +swi application/vnd.aristanetworks.swi base64 +sxc application/vnd.sun.xml.calc base64 +sxd application/vnd.sun.xml.draw base64 +sxg application/vnd.sun.xml.writer.global base64 +sxi application/vnd.sun.xml.impress base64 +sxl application/vnd.sealed.xls base64 +sxls application/vnd.sealed.xls base64 +sxm application/vnd.sun.xml.math base64 +sxw application/vnd.sun.xml.writer base64 +sz application/x-snappy-framed base64 +t text/troff 8bit +t3 application/x-t3vm-image base64 +taglet application/vnd.mynfc base64 +tao application/vnd.tao.intent-module-archive base64 +tar application/x-tar base64 +tbk application/x-toolbook base64 +tbz application/x-gtar base64 +tbz2 application/x-gtar base64 +tcap application/vnd.3gpp2.tcap base64 +tcl application/x-tcl 8bit +tcsh application/x-csh 8bit +teacher application/vnd.smart.teacher base64 +tei application/tei+xml base64 +teicorpus application/tei+xml base64 +tex application/x-tex 8bit +texi application/x-texinfo 8bit +texinfo application/x-texinfo 8bit +text text/plain quoted-printable +textile text/plain quoted-printable +tfi application/thraud+xml base64 +tfm application/x-tex-tfm base64 +tga image/x-targa base64 +tgz application/gzip base64 +thmx application/vnd.ms-officetheme base64 +tif image/tiff base64 +tiff image/tiff base64 +tk text/x-tcl quoted-printable +tld text/plain quoted-printable +tmo application/vnd.tmobile-livetv base64 +tmx application/x-tmx base64 +toast application/x-roxio-toast base64 +torrent application/x-bittorrent base64 +tpl application/vnd.groove-tool-template base64 +tpt application/vnd.trid.tpt base64 +tr text/troff 8bit +tra application/vnd.trueapp base64 +trm application/x-msterminal base64 +troff text/troff 8bit +ts video/MP2T base64 +tsd application/timestamped-data base64 +tsv text/tab-separated-values quoted-printable +ttc font/collection base64 +ttf font/ttf base64 +ttl text/turtle quoted-printable +ttml application/ttml+xml base64 +twd application/vnd.SimTech-MindMapper base64 +twds application/vnd.SimTech-MindMapper base64 +txd application/vnd.genomatix.tuxedo base64 +txf application/vnd.Mobius.TXF base64 +txt text/plain quoted-printable +types text/plain quoted-printable +tzx application/x-spectrum-tzx base64 +u32 application/x-authorware-bin base64 +uc2 application/x-uc2-compressed base64 +udeb application/x-debian-package base64 +ufd application/vnd.ufdl base64 +ufdl application/vnd.ufdl base64 +ulx application/x-glulx base64 +umj application/vnd.umajin base64 +unityweb application/vnd.unity base64 +uoml application/vnd.uoml+xml base64 +upa application/vnd.hbci base64 +uri text/uri-list quoted-printable +uris text/uri-list quoted-printable +urls text/uri-list quoted-printable +ustar application/x-ustar base64 +utz application/vnd.uiq.theme base64 +uu text/x-uuencode quoted-printable +uva audio/vnd.dece.audio base64 +uvd application/vnd.dece.data base64 +uvf application/vnd.dece.data base64 +uvg image/vnd.dece.graphic base64 +uvh video/vnd.dece.hd base64 +uvi image/vnd.dece.graphic base64 +uvm video/vnd.dece.mobile base64 +uvp video/vnd.dece.pd base64 +uvs video/vnd.dece.sd base64 +uvt application/vnd.dece.ttml+xml base64 +uvu video/vnd.uvvu.mp4 base64 +uvv video/vnd.dece.video base64 +uvva audio/vnd.dece.audio base64 +uvvd application/vnd.dece.data base64 +uvvf application/vnd.dece.data base64 +uvvg image/vnd.dece.graphic base64 +uvvh video/vnd.dece.hd base64 +uvvi image/vnd.dece.graphic base64 +uvvm video/vnd.dece.mobile base64 +uvvp video/vnd.dece.pd base64 +uvvs video/vnd.dece.sd base64 +uvvt application/vnd.dece.ttml+xml base64 +uvvu video/vnd.uvvu.mp4 base64 +uvvv video/vnd.dece.video base64 +uvvx application/vnd.dece.unspecified base64 +uvvz application/vnd.dece.zip base64 +uvx application/vnd.dece.unspecified base64 +uvz application/vnd.dece.zip base64 +v text/x-verilog quoted-printable +vb text/x-vbdotnet quoted-printable +vbk audio/vnd.nortel.vbk base64 +vbs application/x-msdownload base64 +vcard text/vcard quoted-printable +vcd application/x-cdlink base64 +vcf text/x-vcard 8bit +vcg application/vnd.groove-vcard base64 +vcs text/x-vcalendar 8bit +vcx application/vnd.vcx base64 +vda image/x-tga base64 +vf application/x-tex-virtual-font base64 +vhd text/x-vhdl quoted-printable +vhdl text/x-vhdl quoted-printable +vis application/vnd.visionary base64 +viv video/vnd.vivo base64 +vivo video/vnd.vivo base64 +vm text/plain quoted-printable +vmdk application/x-vmdk base64 +vob video/x-ms-vob base64 +vor application/x-staroffice-template base64 +vox application/x-authorware-bin base64 +vrml model/vrml base64 +vsc application/vnd.vidsoft.vidconference 8bit +vsd application/vnd.visio base64 +vsdm application/vnd.ms-visio.drawing.macroEnabled.12 base64 +vsdx application/vnd.ms-visio.drawing base64 +vsf application/vnd.vsf base64 +vsl text/plain quoted-printable +vss application/vnd.visio base64 +vssm application/vnd.ms-visio.stencil.macroEnabled.12 base64 +vssx application/vnd.ms-visio.stencil base64 +vst application/vnd.visio base64 +vstm application/vnd.ms-visio.template.macroEnabled.12 base64 +vstx application/vnd.ms-visio.template base64 +vsw application/vnd.visio base64 +vtt text/vtt quoted-printable +vtu model/vnd.vtu base64 +vxml application/voicexml+xml base64 +w3d application/x-director base64 +w60 application/vnd.wordperfect base64 +wad application/x-doom base64 +war application/x-tika-java-web-archive base64 +warc application/warc base64 +warc.gz application/warc+gz base64 +wasm application/wasm 8bit +wav audio/vnd.wave base64 +wax audio/x-ms-wax base64 +wb1 application/x-quattro-pro base64 +wb2 application/x-quattro-pro base64 +wb3 application/x-quattro-pro base64 +wbmp image/vnd.wap.wbmp base64 +wbs application/vnd.criticaltools.wbs+xml base64 +wbxml application/vnd.wap.wbxml base64 +wcm application/vnd.ms-works base64 +wdb application/vnd.ms-works base64 +wdp image/vnd.ms-photo base64 +weba audio/webm base64 +webapp application/x-web-app-manifest+json base64 +webarchive application/x-webarchive base64 +webm video/webm base64 +webmanifest application/manifest+json base64 +webp image/webp base64 +wg application/vnd.pmi.widget base64 +wgt application/widget base64 +wif application/watcherinfo+xml base64 +wk application/x-123 base64 +wk1 application/vnd.lotus-1-2-3 base64 +wk2 application/vnd.lotus-1-2-3 base64 +wk3 application/vnd.lotus-1-2-3 base64 +wk4 application/vnd.lotus-1-2-3 base64 +wkq application/x-quattro-pro base64 +wks application/vnd.lotus-1-2-3 base64 +wkz application/x-Wingz base64 +wl application/vnd.wolfram.wl base64 +wm video/x-ms-wm base64 +wma audio/x-ms-wma base64 +wmd application/x-ms-wmd base64 +wmf image/wmf base64 +wml text/vnd.wap.wml quoted-printable +wmlc application/vnd.wap.wmlc base64 +wmls text/vnd.wap.wmlscript quoted-printable +wmlsc application/vnd.wap.wmlscriptc base64 +wmv audio/x-ms-wmv base64 +wmx video/x-ms-wmx base64 +wmz application/x-ms-wmz base64 +woff font/woff base64 +woff2 font/woff2 base64 +wp application/vnd.wordperfect base64 +wp5 application/wordperfect5.1 base64 +wp6 application/vnd.wordperfect base64 +wp61 application/vnd.wordperfect base64 +wpd application/vnd.wordperfect base64 +wpl application/vnd.ms-wpl base64 +wps application/vnd.ms-works base64 +wpt application/vnd.wordperfect base64 +wq1 application/x-quattro-pro base64 +wq2 application/x-quattro-pro base64 +wqd application/vnd.wqd base64 +wrd application/msword base64 +wri application/x-mswrite base64 +wrl model/vrml base64 +wsdd text/plain quoted-printable +wsdl application/wsdl+xml base64 +wspolicy application/wspolicy+xml base64 +wtb application/vnd.webturbo base64 +wv application/vnd.wv.csp+wbxml base64 +wvx video/x-ms-wvx base64 +wz application/x-Wingz base64 +x32 application/x-authorware-bin base64 +x3d application/vnd.hzn-3d-crossword base64 +x3db model/x3d+binary base64 +x3dbz model/x3d+binary base64 +x3dv model/x3d+vrml base64 +x3dvz model/x3d+vrml base64 +x3dz model/x3d+xml base64 +x3f image/x-raw-sigma base64 +x_b model/vnd.parasolid.transmit.binary base64 +x_t model/vnd.parasolid.transmit.text quoted-printable +xaml application/xaml+xml base64 +xap application/x-silverlight-app base64 +xar application/vnd.xara base64 +xargs text/plain quoted-printable +xbap application/x-ms-xbap base64 +xbd application/vnd.fujixerox.docuworks.binder base64 +xbm image/x-xbitmap 7bit +xcat text/plain quoted-printable +xcf image/x-xcf base64 +xcfbz2 image/x-compressed-xcf base64 +xcfgz image/x-compressed-xcf base64 +xconf text/x-config quoted-printable +xdf application/xcap-diff+xml base64 +xdm application/vnd.syncml.dm+xml base64 +xdp application/vnd.adobe.xdp+xml base64 +xdssc application/dssc+xml base64 +xdw application/vnd.fujixerox.docuworks base64 +xegrm text/plain quoted-printable +xenc application/xenc+xml base64 +xer application/patch-ops-error+xml base64 +xfdf application/vnd.adobe.xfdf base64 +xfdl application/vnd.xfdl base64 +xgrm text/plain quoted-printable +xht application/xhtml+xml 8bit +xhtml application/xhtml+xml 8bit +xhtml2 application/xhtml+xml 8bit +xhvml application/xv+xml base64 +xif image/vnd.xiff base64 +xla application/vnd.ms-excel base64 +xlam application/vnd.ms-excel.addin.macroEnabled.12 base64 +xlc application/vnd.ms-excel base64 +xld application/vnd.ms-excel base64 +xlex text/plain quoted-printable +xlf application/x-xliff+xml base64 +xliff application/x-xliff+xml base64 +xll application/vnd.ms-excel base64 +xlm application/vnd.ms-excel base64 +xlog text/plain quoted-printable +xlr application/x-tika-msworks-spreadsheet base64 +xls application/vnd.ms-excel base64 +xlsb application/vnd.ms-excel.sheet.binary.macroEnabled.12 base64 +xlsm application/vnd.ms-excel.sheet.macroEnabled.12 base64 +xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet base64 +xlt application/vnd.ms-excel base64 +xltm application/vnd.ms-excel.template.macroEnabled.12 base64 +xltx application/vnd.openxmlformats-officedocument.spreadsheetml.template base64 +xlw application/vnd.ms-excel base64 +xlz application/x-xliff+zip base64 +xm audio/xm base64 +xmap text/plain quoted-printable +xmind application/x-xmind base64 +xml application/xml 8bit +xmp application/rdf+xml 8bit +xmt_bin model/vnd.parasolid.transmit.binary base64 +xmt_txt model/vnd.parasolid.transmit.text quoted-printable +xo application/vnd.olpc-sugar base64 +xop application/xop+xml base64 +xpi application/x-xpinstall base64 +xpl application/xproc+xml base64 +xpm image/x-xpixmap 8bit +xport application/x-sas-xport base64 +xpr application/vnd.is-xpr base64 +xps application/vnd.ms-xpsdocument 8bit +xpt application/x-sas-xport base64 +xpw application/vnd.intercon.formnet base64 +xpx application/vnd.intercon.formnet base64 +xq application/xquery base64 +xquery application/xquery base64 +xroles text/plain quoted-printable +xsamples text/plain quoted-printable +xsd application/xml 8bit +xsl application/xml 8bit +xslfo application/xslfo+xml base64 +xslt application/xslt+xml base64 +xsm application/vnd.syncml+xml base64 +xsp text/plain quoted-printable +xspf application/xspf+xml base64 +xtest text/plain quoted-printable +xul application/vnd.mozilla.xul+xml base64 +xvm application/xv+xml base64 +xvml application/xv+xml base64 +xwd image/x-xwindowdump base64 +xweb text/plain quoted-printable +xwelcome text/plain quoted-printable +xyz x-chemical/x-xyz base64 +xz application/x-xz base64 +y text/x-yacc quoted-printable +yaml text/x-yaml 8bit +yang application/yang base64 +yin application/yin+xml base64 +yml text/x-yaml 8bit +z application/x-compressed base64 +z1 application/x-zmachine base64 +z2 application/x-zmachine base64 +z3 application/x-zmachine base64 +z4 application/x-zmachine base64 +z5 application/x-zmachine base64 +z6 application/x-zmachine base64 +z7 application/x-zmachine base64 +z8 application/x-zmachine base64 +zaz application/vnd.zzazz.deck+xml base64 +zip application/zip base64 +zipx application/zip base64 +zir application/vnd.zul base64 +zirz application/vnd.zul base64 +zmm application/vnd.HandHeld-Entertainment+xml base64 +zoo application/x-zoo base64 +zst application/zstd base64 diff --git a/lib/mini_mime.rb b/lib/mini_mime.rb index 8055fdb..1aa6fda 100644 --- a/lib/mini_mime.rb +++ b/lib/mini_mime.rb @@ -16,8 +16,18 @@ def self.lookup_by_content_type(mime) module Configuration class << self - attr_accessor :ext_db_path - attr_accessor :content_type_db_path + attr_reader :ext_db_path + attr_reader :content_type_db_path + + def ext_db_path=(path) + @ext_db_path = path + Db.reset! if MiniMime.const_defined?(:Db, false) + end + + def content_type_db_path=(path) + @content_type_db_path = path + Db.reset! if MiniMime.const_defined?(:Db, false) + end end self.ext_db_path = File.expand_path("../db/ext_mime.db", __FILE__) @@ -30,7 +40,10 @@ class Info attr_accessor :extension, :content_type, :encoding def initialize(buffer) - @extension, @content_type, @encoding = buffer.split(/\s+/).map!(&:freeze) + fields = buffer.split(/\s+/) + raise ArgumentError, "invalid MIME database row" unless fields.length == 3 + + @extension, @content_type, @encoding = fields.map!(&:freeze) end def [](idx) @@ -56,6 +69,10 @@ def self.db @db || LOCK.synchronize { @db ||= new } end + def self.reset! + LOCK.synchronize { @db = nil } + end + def self.lookup_by_filename(filename) extension = File.extname(filename) return if extension.empty? @@ -64,7 +81,11 @@ def self.lookup_by_filename(filename) end def self.lookup_by_extension(extension) - db.lookup_by_extension(extension) || db.lookup_by_extension(extension.downcase) + result = db.lookup_by_extension(extension) + return result if result + + downcased = extension.downcase + db.lookup_by_extension(downcased) unless extension == downcased end def self.lookup_by_content_type(content_type) @@ -80,9 +101,6 @@ def initialize(size) def []=(key, val) rval = @hash[key] = val @hash.shift if @hash.length > @size - # In Ruby, we need to return the []= setter value, so - # we have to suppress this warning - # rubocop:disable Lint/Void rval end @@ -92,7 +110,11 @@ def fetch(key, &blk) end if ::File.method_defined?(:pread) - PReadFile = ::File + class PReadFile < ::File + def initialize(filename) + super(filename, "rb") + end + end else # For Windows support class PReadFile @@ -114,6 +136,10 @@ def pread(size, offset) @file.read(size) end end + + def close + @file.close + end end end @@ -123,9 +149,18 @@ class RandomAccessDb def initialize(path, sort_order) @path = path @file = PReadFile.new(@path) - - @row_length = @file.readline("\n").length @file_length = File.size(@path) + if @file_length.zero? + @file.close + raise ArgumentError, "MIME database is empty: #{@path}" + end + + @row_length = @file.readline("\n").bytesize + unless (@file_length % @row_length).zero? && @file.pread(1, @file_length - 1) == "\n" + @file.close + raise ArgumentError, "MIME database rows must have a fixed byte width: #{@path}" + end + @rows = @file_length / @row_length @hit_cache = Cache.new(MAX_CACHED) @@ -171,8 +206,15 @@ def lookup_uncached(val) result end + def close + @file.close + end + def resolve(row) - Info.new(@file.pread(@row_length, row * @row_length).force_encoding(Encoding::UTF_8)) + buffer = @file.pread(@row_length, row * @row_length).force_encoding(Encoding::UTF_8) + raise ArgumentError, "invalid UTF-8 in MIME database: #{@path}" unless buffer.valid_encoding? + + Info.new(buffer) end end diff --git a/lib/mini_mime/version.rb b/lib/mini_mime/version.rb index 968cf0b..bb50d80 100644 --- a/lib/mini_mime/version.rb +++ b/lib/mini_mime/version.rb @@ -1,4 +1,4 @@ # frozen_string_literal: true module MiniMime - VERSION = "1.1.5" + VERSION = "2.0.0" end diff --git a/mini_mime.gemspec b/mini_mime.gemspec index a7227f2..e4009fb 100644 --- a/mini_mime.gemspec +++ b/mini_mime.gemspec @@ -15,17 +15,13 @@ Gem::Specification.new do |spec| spec.homepage = "https://github.com/discourse/mini_mime" spec.license = "MIT" - spec.files = `git ls-files -z`.split("\x0").reject do |f| - f.match(%r{^(test|spec|features)/}) - end + spec.files = Dir["lib/**/*", "CHANGELOG", "LICENSE.txt", "README.md"] spec.bindir = "exe" spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) } spec.require_paths = ["lib"] - spec.required_ruby_version = ">= 3.1.0" + spec.required_ruby_version = ">= 3.3.0" spec.add_development_dependency "bundler" spec.add_development_dependency "rake" spec.add_development_dependency "minitest" - spec.add_development_dependency "rubocop" - spec.add_development_dependency "rubocop-discourse" end diff --git a/test/cache_test.rb b/test/cache_test.rb new file mode 100644 index 0000000..f37f9c1 --- /dev/null +++ b/test/cache_test.rb @@ -0,0 +1,64 @@ +# frozen_string_literal: true +require "test_helper" + +class CacheTest < Minitest::Test + class CountingRandomAccessDb < MiniMime::Db::RandomAccessDb + attr_reader :uncached_lookups + + def initialize(...) + @uncached_lookups = 0 + super + end + + def lookup_uncached(value) + @uncached_lookups += 1 + super + end + end + + def test_random_access_database_caches_hits_and_misses + path = File.expand_path("fixtures/unicode_ext_mime.db", __dir__) + database = CountingRandomAccessDb.new(path, 0) + + 2.times { assert_equal "text/one", database.lookup("é").content_type } + 2.times { assert_nil database.lookup("unknown") } + assert_equal 2, database.uncached_lookups + ensure + database&.close + end + + def test_fetch_returns_a_cached_value_without_running_the_block + cache = MiniMime::Db::Cache.new(2) + cache[:key] = "cached" + + assert_equal "cached", cache.fetch(:key) { flunk "cache block should not run" } + end + + def test_fetch_distinguishes_a_cached_nil_from_a_missing_key + cache = MiniMime::Db::Cache.new(2) + cache[:key] = nil + + assert_nil cache.fetch(:key) { flunk "cache block should not run" } + end + + def test_evicts_the_oldest_entry_when_full + cache = MiniMime::Db::Cache.new(2) + cache[:first] = 1 + cache[:second] = 2 + cache[:third] = 3 + + assert_equal :missing, cache.fetch(:first) { :missing } + assert_equal 2, cache.fetch(:second) { flunk "second entry should be cached" } + assert_equal 3, cache.fetch(:third) { flunk "third entry should be cached" } + end + + def test_updating_an_entry_does_not_evict_another_entry + cache = MiniMime::Db::Cache.new(2) + cache[:first] = 1 + cache[:second] = 2 + cache[:first] = 3 + + assert_equal 3, cache.fetch(:first) { flunk "first entry should be cached" } + assert_equal 2, cache.fetch(:second) { flunk "second entry should be cached" } + end +end diff --git a/test/database_test.rb b/test/database_test.rb new file mode 100644 index 0000000..504def0 --- /dev/null +++ b/test/database_test.rb @@ -0,0 +1,151 @@ +# frozen_string_literal: true +require "fileutils" +require "mime/types" +require "tempfile" +require "tmpdir" +require "test_helper" + +# Rakefiles do not have a .rb extension, so require_relative cannot load this. +# rubocop:disable Discourse/Plugins/UseRequireRelative +load File.expand_path("../Rakefile", __dir__) +# rubocop:enable Discourse/Plugins/UseRequireRelative + +class DatabaseTest < Minitest::Test + def test_bundled_databases_have_fixed_byte_width_rows + %w[content_type_mime.db ext_mime.db].each do |filename| + path = File.expand_path("../lib/db/#{filename}", __dir__) + widths = File.binread(path).lines.map(&:bytesize).uniq + + assert_equal 1, widths.length, "#{filename} contains rows with different byte widths" + end + end + + def test_random_access_database_uses_byte_offsets + path = File.expand_path("fixtures/unicode_ext_mime.db", __dir__) + database = MiniMime::Db::RandomAccessDb.new(path, 0) + info = database.lookup("ê") + + refute_nil info + assert_equal "text/two", info.content_type + ensure + database&.close + end + + def test_random_access_database_search_boundaries + with_database("a text/a 7bit\nm text/m 7bit\nz text/z 7bit\n") do |database| + assert_equal "text/a", database.lookup("a").content_type + assert_equal "text/m", database.lookup("m").content_type + assert_equal "text/z", database.lookup("z").content_type + + assert_nil database.lookup("0") + assert_nil database.lookup("b") + assert_nil database.lookup("n") + assert_nil database.lookup("zz") + end + end + + def test_rejects_an_empty_database + assert_invalid_database("") + end + + def test_rejects_rows_with_different_byte_widths + assert_invalid_database("a text/a 7bit\nbb text/b 7bit\n") + end + + def test_rejects_a_database_without_a_final_newline + assert_invalid_database("a text/a 7bit") + end + + def test_rejects_malformed_rows + with_database("a text/a\n") do |database| + assert_raises(ArgumentError) { database.lookup("a") } + end + end + + def test_rejects_invalid_utf8 + with_database("\xFF text/a 7bit\n".b) do |database| + assert_raises(ArgumentError) { database.lookup("a") } + end + end + + def test_generator_pads_columns_to_equal_byte_widths + rows = [["é".dup, "text/one".dup, "7bit".dup], ["abc".dup, "text/two".dup, "7bit".dup]] + + pad(rows) + + assert_equal 1, rows.map { |row| row.join(" ").bytesize }.uniq.length + end + + def test_rebuild_uses_the_selected_types_preferred_extension + expected_extensions = selected_preferred_extensions + + Dir.mktmpdir do |directory| + FileUtils.mkdir_p(File.join(directory, "lib/db")) + + # rubocop:disable Discourse/NoChdir + Dir.chdir(directory) do + capture_io do + Rake::Task[:rebuild_db].reenable + Rake::Task[:rebuild_db].invoke + end + end + # rubocop:enable Discourse/NoChdir + + generated = File.readlines( + File.join(directory, "lib/db/content_type_mime.db"), + chomp: true, + ).to_h do |line| + extension, content_type, = line.split + [content_type, extension] + end + + assert_equal expected_extensions, generated + assert_equal "txt", generated.fetch("text/plain") + assert_equal "jpeg", generated.fetch("image/jpeg") + assert_equal "zip", generated.fetch("application/zip") + end + end + + private + + def assert_invalid_database(contents) + Tempfile.create do |file| + file.binmode + file.write(contents) + file.flush + + assert_raises(ArgumentError) { MiniMime::Db::RandomAccessDb.new(file.path, 0) } + end + end + + def with_database(contents) + Tempfile.create do |file| + file.binmode + file.write(contents) + file.flush + + database = MiniMime::Db::RandomAccessDb.new(file.path, 0) + yield database + ensure + database&.close + end + end + + def selected_preferred_extensions + types_by_extension = Hash.new { |hash, extension| hash[extension] = [] } + MIME::Types.each do |type| + type.extensions.each { |extension| types_by_extension[extension.downcase] << type } + end + + types_by_extension.each do |extension, types| + types.sort! { |left, right| left.__extension_priority_compare(right, [extension]) } + end + + types_by_extension.each_value.with_object({}) do |types, preferred| + selected = types.detect { |type| !type.obsolete? } + selected ||= types.detect(&:registered) + selected ||= types.first + preferred[selected.content_type] ||= selected.preferred_extension + end + end +end diff --git a/test/extension_lookup_test.rb b/test/extension_lookup_test.rb new file mode 100644 index 0000000..08a4a40 --- /dev/null +++ b/test/extension_lookup_test.rb @@ -0,0 +1,59 @@ +# frozen_string_literal: true +require "test_helper" + +class ExtensionLookupTest < Minitest::Test + class LookupCounter + attr_reader :lookups + + def initialize(results = {}) + @results = results + @lookups = [] + end + + def lookup_by_extension(extension) + @lookups << extension + @results[extension] + end + end + + def test_lowercase_miss_only_looks_up_once + database = LookupCounter.new + + with_database(database) do + assert_nil MiniMime.lookup_by_extension("unknown") + end + + assert_equal ["unknown"], database.lookups + end + + def test_mixed_case_miss_tries_the_lowercase_extension + database = LookupCounter.new + + with_database(database) do + assert_nil MiniMime.lookup_by_extension("Unknown") + end + + assert_equal ["Unknown", "unknown"], database.lookups + end + + def test_exact_case_hit_does_not_fall_back + result = Object.new + database = LookupCounter.new("ZiP" => result) + + with_database(database) do + assert_same result, MiniMime.lookup_by_extension("ZiP") + end + + assert_equal ["ZiP"], database.lookups + end + + private + + def with_database(database) + original_database = MiniMime::Db.instance_variable_get(:@db) + MiniMime::Db.instance_variable_set(:@db, database) + yield + ensure + MiniMime::Db.instance_variable_set(:@db, original_database) + end +end diff --git a/test/fixtures/unicode_ext_mime.db b/test/fixtures/unicode_ext_mime.db new file mode 100644 index 0000000..c115f2b --- /dev/null +++ b/test/fixtures/unicode_ext_mime.db @@ -0,0 +1,2 @@ +é text/one 7bit +ê text/two 7bit diff --git a/test/mini_mime/configuration_test.rb b/test/mini_mime/configuration_test.rb index d2782c7..50c0da2 100644 --- a/test/mini_mime/configuration_test.rb +++ b/test/mini_mime/configuration_test.rb @@ -30,4 +30,30 @@ def test_using_custom_content_type_mime_db assert_equal "liquid", MiniMime.lookup_by_content_type("application/x-liquid").extension assert_equal "quoted-printable", MiniMime.lookup_by_content_type("video/vnd.objectvideo").encoding end + + def test_changing_configuration_reloads_the_database + assert_equal "text/x-lua", MiniMime.lookup_by_extension("lua").content_type + + MiniMime::Configuration.ext_db_path = CUSTOM_EXT_MIME_DB_PATH + + assert_equal "application/x-lua", MiniMime.lookup_by_extension("lua").content_type + end + + def test_changing_content_type_configuration_reloads_the_database + assert_nil MiniMime.lookup_by_content_type("application/x-liquid") + + MiniMime::Configuration.content_type_db_path = CUSTOM_CONTENT_TYPE_MIME_DB_PATH + + assert_equal "liquid", MiniMime.lookup_by_content_type("application/x-liquid").extension + end + + def test_changing_both_paths_uses_both_custom_databases + MiniMime.lookup_by_extension("zip") + + MiniMime::Configuration.ext_db_path = CUSTOM_EXT_MIME_DB_PATH + MiniMime::Configuration.content_type_db_path = CUSTOM_CONTENT_TYPE_MIME_DB_PATH + + assert_equal "application/x-lua", MiniMime.lookup_by_extension("lua").content_type + assert_equal "liquid", MiniMime.lookup_by_content_type("application/x-liquid").extension + end end diff --git a/test/mini_mime_test.rb b/test/mini_mime_test.rb index 5e68980..cfe8f50 100644 --- a/test/mini_mime_test.rb +++ b/test/mini_mime_test.rb @@ -51,24 +51,24 @@ def test_binary_content_type refute MiniMime.lookup_by_content_type("text/plain").binary? end - def should_prioritize_extensions_correctly - assert_equal MiniMime.lookup_by_content_type("text/plain").extension, "txt" + def test_prioritizes_extensions_correctly + assert_equal "txt", MiniMime.lookup_by_content_type("text/plain").extension end if defined? MIME::Types WINDOWS_TYPES = { "cu" => "application/cu-seeme", "ecma" => "application/ecmascript", - "es" => "application/ecmascript", + "es" => "text/ecmascript", "jar" => "application/java-archive", "ser" => "application/java-serialized-object", "mp4" => "application/mp4", - "mpg4" => "application/mp4", + "mpg4" => "audio/mp4", "doc" => "application/msword", "pgp" => "application/octet-stream", "gpg" => "application/octet-stream", - "ai" => "application/pdf", - "asc" => "application/pgp-signature", + "ai" => "application/postscript", + "asc" => "text/plain", "rtf" => "application/rtf", "spp" => "application/scvp-vp-response", "sgml" => "application/sgml", @@ -78,25 +78,25 @@ def should_prioritize_extensions_correctly "odi" => "application/vnd.oasis.opendocument.image", "bdm" => "application/vnd.syncml.dm+wbxml", "dcr" => "application/x-director", - "exe" => "application/x-ms-dos-executable", + "exe" => "application/x-dosexec", "wmz" => "application/x-ms-wmz", "cmd" => "application/x-msdos-program", - "bat" => "application/x-msdos-program", - "com" => "application/x-msdos-program", - "reg" => "application/x-msdos-program", - "ps1" => "application/x-msdos-program", - "vbs" => "application/x-msdos-program", + "bat" => "application/x-bat", + "com" => "application/x-msdownload", + "reg" => "application/x-msdownload", + "ps1" => "application/x-msdownload", + "vbs" => "application/x-msdownload", "pm" => "application/x-pagemaker", "xml" => "application/xml", "dtd" => "application/xml-dtd", "kar" => "audio/midi", - "mid" => "audio/midi", + "mid" => "audio/x-midi", "midi" => "audio/midi", - "m4a" => "audio/mp4", - "mp2" => "audio/mpeg", - "ogg" => "audio/ogg", - "wav" => "audio/wav", - "webm" => "audio/webm", + "m4a" => "audio/MP4A-LATM", + "mp2" => "video/mpeg", + "ogg" => "audio/vorbis", + "wav" => "audio/vnd.wave", + "webm" => "video/webm", "wmv" => "audio/x-ms-wmv", "ra" => "audio/x-pn-realaudio", "hif" => "image/heic", @@ -115,6 +115,10 @@ def test_full_parity_with_mime_types differences = [] exts.each do |ext| + # mime-types treats .htaccess as a full basename rather than an + # extension, so it cannot resolve that entry through type_for. + next if ext == ".htaccess" + types = MIME::Types.type_for("a.#{ext}") type = types.detect { |t| !t.obsolete? } diff --git a/test/thread_safety_test.rb b/test/thread_safety_test.rb new file mode 100644 index 0000000..7d16c67 --- /dev/null +++ b/test/thread_safety_test.rb @@ -0,0 +1,65 @@ +# frozen_string_literal: true +require "test_helper" + +class ThreadSafetyTest < Minitest::Test + def setup + MiniMime::Db.reset! + end + + def teardown + MiniMime::Db.reset! + end + + def test_concurrent_initialization_returns_one_database + ready = Queue.new + start = Queue.new + threads = 16.times.map do + Thread.new do + ready << true + start.pop + MiniMime::Db.db + end + end + + 16.times { ready.pop } + 16.times { start << true } + + assert_equal 1, threads.map(&:value).map(&:object_id).uniq.length + end + + def test_concurrent_lookups_are_safe + extensions = %w[zip txt jpg csv unknown] + threads = 16.times.map do + Thread.new do + 200.times do |iteration| + MiniMime.lookup_by_extension(extensions[iteration % extensions.length]) + end + end + end + + assert_equal [200], threads.map(&:value).uniq + end + + def test_lookup_after_fork + skip "fork is only available on CRuby Unix" unless RUBY_ENGINE == "ruby" && Process.respond_to?(:fork) + + MiniMime.lookup_by_extension("zip") + reader, writer = IO.pipe + pid = fork do + reader.close + writer.write(MiniMime.lookup_by_extension("txt").content_type) + writer.close + exit! 0 + end + + writer.close + result = reader.read + _, status = Process.wait2(pid) + + assert_predicate status, :success? + assert_equal "text/plain", result + ensure + reader&.close + writer&.close unless writer&.closed? + end +end