diff --git a/.travis.yml b/.travis.yml index 0fbe725..beb8834 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,6 +17,7 @@ after_success: - coveralls notifications: email: false + irc: "chat.freenode.net#ramlfications" slack: secure: RGdJmcQiapxCZWALwbogYykeuqUWhKgFtMR7JgRqPg/swcqbvD2rWYkT7eqUBrUldU7dTFhXt0RRqBf6J5vm4WcvkY5heQ4OpTi7R4itIiMLPndN24eG//PaOMhqrUyjkCsrWb0B7nuGRXmnH0C5xkPS/Dz1acugPG7zzXBKbKk= deploy: diff --git a/README.rst b/README.rst index b126aeb..16104be 100644 --- a/README.rst +++ b/README.rst @@ -107,6 +107,12 @@ or:: Then within ``ramlfications/docs/_build`` you can open the index.html page in your browser. +Still have issues? +^^^^^^^^^^^^^^^^^^ + +Feel free to drop by ``#ramlfications`` on Freenode (`webchat`_) or ping via `Twitter`_. +"roguelynn" is the maintainer, a.k.a `econchick`_ on GitHub, and based in San Fran. + .. _pip: https://pip.pypa.io/en/latest/installing.html#install-pip .. _PyPI: https://pypi.python.org/project/ramlfications/ @@ -117,3 +123,6 @@ Then within ``ramlfications/docs/_build`` you can open the index.html page in yo .. _`Read the Docs site`: https://ramlfications.readthedocs.org .. _`usage`: http://ramlfications.readthedocs.org/en/latest/usage.html .. _`How to Contribute`: http://ramlfications.readthedocs.org/en/latest/contributing.html +.. _`webchat`: http://webchat.freenode.net?channels=%23ramlfications&uio=ND10cnVlJjk9dHJ1ZQb4 +.. _`econchick`: https://github.com/econchick +.. _`Twitter`: https://twitter.com/roguelynn diff --git a/docs/_static/fonts/fontawesome_webfont.ttf b/docs/_static/fonts/fontawesome_webfont.ttf new file mode 100644 index 0000000..ed9372f Binary files /dev/null and b/docs/_static/fonts/fontawesome_webfont.ttf differ diff --git a/docs/_static/fonts/fontawesome_webfont.woff b/docs/_static/fonts/fontawesome_webfont.woff new file mode 100644 index 0000000..8b280b9 Binary files /dev/null and b/docs/_static/fonts/fontawesome_webfont.woff differ diff --git a/docs/_static/fonts/fontawesome_webfont.woff2 b/docs/_static/fonts/fontawesome_webfont.woff2 new file mode 100644 index 0000000..3311d58 Binary files /dev/null and b/docs/_static/fonts/fontawesome_webfont.woff2 differ diff --git a/docs/changelog.rst b/docs/changelog.rst index 190f1f4..369d296 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -1,6 +1,21 @@ Changelog ========= + +0.1.3 (2015-05-14) +------------------ + +Added: + +- New ``#ramlfications`` channel on `freenode`_ (web chat link)! Come chat, I'm lonely. +- Documentation for configuration and the ``update`` command. + +Fixed: + +- Handle recursive/cyclical ``!includes`` in RAML files for now (`PR`_) +- Encoding issues from upgrading to tox 2.0 +- ``tests/test_utils.py`` would create ``ramlfications/data/supported_mime_types.json``; now mocked out. + 0.1.2 (2015-04-21) ------------------ @@ -19,3 +34,7 @@ New: 0.1.0a1 (2015-04-18) -------------------- Initial alpha release of ``ramlfications``\! + + +.. _`PR`: https://github.com/spotify/ramlfications/pull/8 +.. _`freenode`: http://webchat.freenode.net?channels=%23ramlfications&uio=ND10cnVlJjk9dHJ1ZQb4 diff --git a/docs/conf.py b/docs/conf.py index b3c623a..7d33cce 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -46,6 +46,22 @@ def find_version(*file_paths): return version_match.group(1) raise RuntimeError("Unable to find version string.") + +def find_latest_release_date(): + """ + Build a date string from the latest release logged in ``changelog.rst`` + """ + changelog = read("changelog.rst") + # format of either YYYY-MM-DD or YYYY/MM/DD + date_regex = re.compile("(\d{4}[-/]\d{2}[-/]\d{2})") + date_match = date_regex.findall(changelog)[0] + if date_match: + release_date = datetime.datetime.strptime(date_match, "%Y-%m-%d") + fmt_release_date = release_date.strftime("%b %-d, %Y") + return fmt_release_date + raise RuntimeError("Unable to find latest release date in changelog.rst") + + # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. @@ -103,7 +119,7 @@ def find_version(*file_paths): # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: -#today = '' +today = find_latest_release_date() # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' diff --git a/docs/config.rst b/docs/config.rst new file mode 100644 index 0000000..27ecf8b --- /dev/null +++ b/docs/config.rst @@ -0,0 +1,121 @@ +Configuration +============= + +.. _supported: + +Supported +--------- + +In support of the `RAML spec`_, ``ramlfications`` will automatically support +the following: + +RAML Versions +^^^^^^^^^^^^^ + +| **Config variable**: ``raml_versions`` +| **Config type**: list of strings +| **Supported**: ``0.8`` +| + + +HTTP Methods +^^^^^^^^^^^^ +| **Config variable**: ``http_methods`` +| **Config type**: list of strings +| **Supported**: ``GET``, ``POST``, ``PUT``, ``DELETE``, ``PATCH``, ``HEAD``, ``OPTIONS``, ``TRACE``, ``CONNECT`` +| + +Authentication Schemes +^^^^^^^^^^^^^^^^^^^^^^ + +| **Config variable**: ``auth_schemes`` +| **Config type**: list of strings +| **Supported**: OAuth 1.0, OAuth 2.0, Basic Authentication, Digest Authentication +| + +HTTP Response Codes +^^^^^^^^^^^^^^^^^^^ + +| **Config variable**: ``resp_codes`` +| **Config type**: list of integers +| **Supported**: From Python stdlib ``BaseHTTPServer`` +| ``100``, ``101``, +| ``200``, ``201``, ``202``, ``203``, ``204``, ``205``, ``206``, +| ``300``, ``301``, ``302``, ``303``, ``304``, ``305``, ``307``, +| ``400``, ``401``, ``402``, ``403``, ``404``, ``405``, ``406``, ``407``, ``408``, ``409``, ``410``, ``411``, ``412``, ``413``, ``414``, ``415``, ``416``, ``417``, +| ``500``, ``501``, ``502``, ``503``, ``504``, ``505`` +| + +Protocols +^^^^^^^^^ + +| **Config variable**: ``protocols`` +| **Config type**: list of strings +| **Supported**: ``HTTP``, ``HTTPS`` +| + +MIME Media Types +^^^^^^^^^^^^^^^^ + +| **Config variable**: ``media_types`` +| **Config type**: list of strings that fit the regex defined under `default media type`_: ``application\/[A-Za-z.-0-1]*+?(json|xml)`` +| **Supported**: MIME media types that the package supports can be found on `GitHub`_ and is up to date as of the time of this release (|today|). +| + +.. note:: + If you would like to update your own setup with the latest `IANA`_ supported MIME media types, refer to :doc:`usage`. + + +User-specified +-------------- + +You may define additional values beyond what ``ramlfications`` already supports above. + +To do so, create your own ``ini`` file with a ``[custom]`` section. + +Then add the attributes defined :ref:`above ` that you want to support. +You can **only** add support to the configuration values explained above. + +.. warning:: + + Additionally supported values defined in your configuration will only **add** to the values + that ``ramlfications`` will validate against; it will **not** overwrite values that the + ``ramlfications`` supports as defined in the `RAML spec`_. + +An example ``config.ini`` file:: + + [custom] + raml_versions = 0.9, 1.0 + http_methods = foo, bar + auth_schemes = oauth_3_0, my_auth + media_types = application/vnd.foobar.v2 + protocols = FTP + resp_codes = 429, 440 + + +Usage +^^^^^ + +To use your configuration from within Python: + +.. code-block:: python + + >>> from ramlfications import parse, validate + >>> RAML_FILE = "path/to/api.raml" + >>> CONFIG_FILE = "path/to/api.ini" + >>> api = parse(RAML_FILE, CONFIG_FILE) + >>> validate(RAML_FILE, CONFIG_FILE) + >>> + +To use via the command line: + +.. code-block:: bash + + $ ramlfications validate --config path/to/api.ini path/to/api.raml + $ ramlfications tree --config path/to/api.ini path/to/api.raml + + +.. _`RAML spec`: http://raml.org/spec.html +.. _`default media type`: http://raml.org/spec.html#default-media-type +.. _IANA: https://www.iana.org/assignments/media-types/media-types.xml +.. _GitHub: https://github.com/spotify/ramlfications/blob/master/ramlfications/data/supported_mime_types.json diff --git a/docs/index.rst b/docs/index.rst index 5d29aec..6b5322a 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -16,6 +16,7 @@ User's Guide installation usage extendedusage + config api diff --git a/docs/usage.rst b/docs/usage.rst index b8e852e..28b460b 100644 --- a/docs/usage.rst +++ b/docs/usage.rst @@ -15,7 +15,7 @@ To parse a RAML file, include ramlfications in your project and call the parse f >>> RAML_FILE = "/path/to/my-api.raml" >>> api = ramlfications.parse(RAML_FILE) >>> api - + RootNode(title='Example Web API') >>> api.title 'My Foo API' >>> api.version @@ -24,37 +24,37 @@ To parse a RAML file, include ramlfications in your project and call the parse f .. code-block:: python >>> api.security_schemes - [] + [SecurityScheme(name='oauth_2_0')] >>> oauth2 = api.security_schemes[0] >>> oauth2.name 'oauth_2_0' >>> oauth2.type 'OAuth 2.0' - >>> oauth2.settings.scopes + >>> oauth2.settings.get("scopes") ['playlist-read-private', 'playlist-modify-public',..., 'user-read-email'] - >>> oauth2.settings.access_token_uri + >>> oauth2.settings.get("accessTokenUri") 'https://accounts.foo.com/api/token' .. code-block:: python >>> api.resources - [, , ..., ] + [ResourceNode(method='get', path='/foo'), ResourceNode(method='put', path='/foo'), ..., ResourceNode(method='get', path='/foo/bar/{id}')] >>> foo_bar = api.resources[-1] >>> foo_bar.name '/{id}' >>> foo_bar.display_name 'fooBarID' - >>> foo_bar.absolute_path + >>> foo_bar.absolute_uri 'https://api.foo.com/v1/foo/bar/{id}' >>> foo_bar.uri_params - [] + [URIParameter(name='id')] .. code-block:: python - >>> uri_param = foo_bar.uri_params[0] - >>> uri_param.required + >>> id_param = foo_bar.uri_params[0] + >>> id_param.required True - >>> uri_param.type + >>> id_param.type 'string' >>> id_param.example 'f00b@r1D' @@ -109,6 +109,25 @@ To validate a RAML file with Python: When using ``validate`` within Python (versus the command line utility), if the RAML \ file is valid, then nothing is returned. Only invalid files will return an exception. +If you have additionally supported items beyond the standard (e.g. protocols beyond HTTP/S), you +can still validate your code by passing in your config file. + +.. code-block:: bash + + $ cat api.ini + [custom] + protocols = FTP + +.. code-block:: python + + >>> from ramlfications import validate + >>> RAML_FILE = "/path/to/support-ftp-protocol.raml" + >>> CONFIG_FILE = "/path/to/api.ini" + >>> validate(RAML_FILE, CONFIG_FILE) + >>> + +To learn more about ``ramlfications`` configuration including default/supported configuration, +check out :doc:`config`. Tree ---- @@ -156,6 +175,26 @@ And the most verbose: | URI Params | ⌙ id: ID of foo + +Update +------ + +At the time of this release (|today|), the MIME media types that ``ramlfications`` supports can be found +on `GitHub`_. + +However, you do have the ability to update your own setup with the latest-supported MIME media types as +defined by the `IANA`_. To do so: + +.. code-block:: bash + + $ ramlfications update + +.. note:: + If you are running Python version 2.7.8 or earlier, or Python version 3.4.2 or earlier, it is + encouraged to have ``requests[all]`` installed in your environment. + The command will still work without the package using the standard lib's ``urllib2``, but does + not perform SSL certificate verification. Please see `PEP 467`_ for more details. + Options and Arguments --------------------- @@ -163,58 +202,59 @@ The full usage is: .. code-block:: bash - $ ramlfications [OPTIONS] COMMAND RAMLFILE + $ ramlfications [OPTIONS] COMMAND [ARGS] The ``RAMLFILE`` is a file containing the RAML-defined API you’d like to work with. Valid ``COMMAND`` s are the following: -.. option:: validate +.. option:: validate RAMLFILE Validate the RAML file according to the `RAML Specification`_. -.. option:: tree - - Visualize the RAML file via your console. - + .. program:: validate + .. option:: -c PATH, --config PATH -Valid ``OPTIONS`` for all commands are the following: + Additionally supported items beyond RAML spec. -.. option:: --help - Show a brief usage summary and exit. +.. option:: update -Valid ``OPTIONS`` for the ``tree`` command are the following: + Update RAMLfications' supported MIME types from IANA. -.. option:: -c light|dark - Use a light color scheme for dark terminal backgrounds [DEFAULT], or dark color scheme for light backgrounds. +.. option:: tree RAMLFILE -.. option:: --color light|dark + Visualize the RAML file as a tree. - Use a light color scheme for dark terminal backgrounds [DEFAULT], or dark color scheme for light backgrounds. + .. program:: tree + .. option:: -c PATH, --config PATH -.. option:: -o + Additionally supported items beyond RAML spec. - Save tree output desired file + .. option:: -C , --color -.. option:: --output + Use a light color scheme for dark terminal backgrounds [DEFAULT], or dark color scheme for light backgrounds. - Save tree output desired file + .. option:: -o FILENAME, --output FILENAME -.. option:: -v + Save tree output to desired file - Increase verbose output of the tree one level: adds the HTTP methods + .. option:: -v -.. option:: -vv + Increase verbose output of the tree one level: adds the HTTP methods - Increase verbose output of the tree one level: adds the parameter names + .. option:: -vv -.. option:: -vvv + Increase verbose output of the tree one level: adds the parameter names - Increase verbose output of the tree one level: adds the parameter display name + .. option:: -vvv + Increase verbose output of the tree one level: adds the parameter display name .. _`RAML Specification`: http://raml.org/spec.html +.. _GitHub: https://github.com/spotify/ramlfications/blob/master/ramlfications/data/supported_mime_types.json +.. _IANA: https://www.iana.org/assignments/media-types/media-types.xml +.. _`PEP 467`: https://www.python.org/dev/peps/pep-0476/ diff --git a/ramlfications/__init__.py b/ramlfications/__init__.py index 9db1b6e..97ccc84 100644 --- a/ramlfications/__init__.py +++ b/ramlfications/__init__.py @@ -4,7 +4,7 @@ from __future__ import absolute_import, division, print_function __author__ = "Lynn Root" -__version__ = "0.1.2" +__version__ = "0.1.3" __license__ = "Apache 2.0" __email__ = "lynn@spotify.com" diff --git a/ramlfications/__main__.py b/ramlfications/__main__.py index de95e80..f27d7da 100644 --- a/ramlfications/__main__.py +++ b/ramlfications/__main__.py @@ -16,13 +16,14 @@ @click.group() def main(): - """The main routine.""" + """Yet Another RAML Parser""" # Needed to collect the validate & tree commands @main.command(help="Validate a RAML file.") @click.argument("ramlfile", type=click.Path(exists=True)) -@click.option("--config", "-c", type=click.Path(exists=True)) +@click.option("--config", "-c", type=click.Path(exists=True), + help="Additionally supported items beyond RAML spec.") def validate(ramlfile, config): """Validate a given RAML file.""" try: @@ -38,7 +39,7 @@ def validate(ramlfile, config): @main.command(help="Visualize the RAML file as a tree.") @click.argument('ramlfile', type=click.Path(exists=True)) -@click.option("-c", "--color", type=click.Choice(['dark', 'light']), +@click.option("-C", "--color", type=click.Choice(['dark', 'light']), default=None, help=("Color theme 'light' for dark-screened backgrounds")) @click.option("-o", "--output", type=click.File('w'), @@ -47,7 +48,8 @@ def validate(ramlfile, config): help="Include methods for each endpoint") @click.option("-V", "--validate", default=False, is_flag=True, help="Validate RAML file") -@click.option("-C", "--config", type=click.Path(exists=True)) +@click.option("-c", "--config", type=click.Path(exists=True), + help="Additionally supported items beyond RAML spec.") def tree(ramlfile, color, output, verbose, validate, config): """Pretty-print a tree of the RAML-defined API.""" try: @@ -60,7 +62,7 @@ def tree(ramlfile, color, output, verbose, validate, config): raise SystemExit(1) -@main.command(help="Update RAMLfications' supported MIME types from IANA") +@main.command(help="Update RAMLfications' supported MIME types from IANA.") def update(): umt() diff --git a/ramlfications/_helpers.py b/ramlfications/_helpers.py index 9736756..fcc34a5 100644 --- a/ramlfications/_helpers.py +++ b/ramlfications/_helpers.py @@ -1,5 +1,10 @@ # -*- coding: utf-8 -*- # Copyright (c) 2015 Spotify AB +import sys + +if sys.version_info[0] == 2: + from io import open + import os import six @@ -30,7 +35,7 @@ def _get_raml_object(raml_file): if isinstance(raml_file, six.text_type) or isinstance( raml_file, bytes): - return open(os.path.abspath(raml_file), 'r') + return open(os.path.abspath(raml_file), 'r', encoding="UTF-8") elif hasattr(raml_file, 'read'): return raml_file else: diff --git a/ramlfications/data/supported_mime_types.json b/ramlfications/data/supported_mime_types.json index 90691a6..c71a489 100644 --- a/ramlfications/data/supported_mime_types.json +++ b/ramlfications/data/supported_mime_types.json @@ -1 +1 @@ -["application/1d-interleaved-parityfec", "application/3gpdash-qoe-report+xml", "application/3gpp-ims+xml", "application/A2L", "application/activemessage", "application/activemessage", "application/alto-costmap+json", "application/alto-costmapfilter+json", "application/alto-directory+json", "application/alto-endpointprop+json", "application/alto-endpointpropparams+json", "application/alto-endpointcost+json", "application/alto-endpointcostparams+json", "application/alto-error+json", "application/alto-networkmapfilter+json", "application/alto-networkmap+json", "application/AML", "application/andrew-inset", "application/applefile", "application/ATF", "application/ATFX", "application/atom+xml", "application/atomcat+xml", "application/atomdeleted+xml", "application/atomicmail", "application/atomsvc+xml", "application/ATXML", "application/auth-policy+xml", "application/bacnet-xdd+zip", "application/batch-SMTP", "application/beep+xml", "application/calendar+json", "application/calendar+xml", "application/call-completion", "application/cals-1840", "application/cbor", "application/ccmp+xml", "application/ccxml+xml", "application/CDFX+XML", "application/cdmi-capability", "application/cdmi-container", "application/cdmi-domain", "application/cdmi-object", "application/cdmi-queue", "application/CEA", "application/cea-2018+xml", "application/cellml+xml", "application/cfw", "application/cms", "application/cnrp+xml", "application/coap-group+json", "application/commonground", "application/conference-info+xml", "application/cpl+xml", "application/csrattrs", "application/csta+xml", "application/CSTAdata+xml", "application/cybercash", "application/dash+xml", "application/dashdelta", "application/davmount+xml", "application/dca-rft", "application/DCD", "application/dec-dx", "application/dialog-info+xml", "application/dicom", "application/DII", "application/DIT", "application/dns", "application/dskpp+xml", "application/dssc+der", "application/dssc+xml", "application/dvcs", "application/ecmascript", "application/EDI-consent", "application/EDIFACT", "application/EDI-X12", "application/emma+xml", "application/emotionml+xml", "application/encaprtp", "application/epp+xml", "application/epub+zip", "application/eshop", "application/example", "application/exi", "application/fastinfoset", "application/fastsoap", "application/fdt+xml", "application/fits", "application/font-sfnt", "application/font-tdpfr", "application/font-woff", "application/framework-attributes+xml", "application/gzip", "application/H224", "application/held+xml", "application/http", "application/hyperstudio", "application/ibe-key-request+xml", "application/ibe-pkg-reply+xml", "application/ibe-pp-data", "application/iges", "application/im-iscomposing+xml", "application/index", "application/index.cmd", "application/index.obj", "application/index.response", "application/index.vnd", "application/inkml+xml", "application/IOTP", "application/ipfix", "application/ipp", "application/ISUP", "application/its+xml", "application/javascript", "application/jose", "application/jose+json", "application/jrd+json", "application/json", "application/json-patch+json", "application/json-seq", "application/jwk+json", "application/jwk-set+json", "application/jwt", "application/kpml-request+xml", "application/kpml-response+xml", "application/ld+json", "application/link-format", "application/load-control+xml", "application/lost+xml", "application/lostsync+xml", "application/LXF", "application/mac-binhex40", "application/macwriteii", "application/mads+xml", "application/marc", "application/marcxml+xml", "application/mathematica", "application/mathml-content+xml", "application/mathml-presentation+xml", "application/mathml+xml", "application/mbms-associated-procedure-description+xml", "application/mbms-deregister+xml", "application/mbms-envelope+xml", "application/mbms-msk-response+xml", "application/mbms-msk+xml", "application/mbms-protection-description+xml", "application/mbms-reception-report+xml", "application/mbms-register-response+xml", "application/mbms-register+xml", "application/mbms-schedule+xml", "application/mbms-user-service-description+xml", "application/mbox+xml", "application/media_control+xml", "application/media-policy-dataset+xml", "application/mediaservercontrol+xml", "application/merge-patch+json", "application/metalink4+xml", "application/mets+xml", "application/MF4", "application/mikey", "application/mods+xml", "application/moss-keys", "application/moss-signature", "application/mosskey-data", "application/mosskey-request", "application/mp21", "application/mp4", "application/mpeg4-generic", "application/mpeg4-iod", "application/mpeg4-iod-xmt", "application/mrb-consumer+xml", "application/mrb-publish+xml", "application/msc-ivr+xml", "application/msc-mixer+xml", "application/msword", "application/mxf", "application/nasdata", "application/news-checkgroups", "application/news-groupinfo", "application/news-transmission", "application/nlsml+xml", "application/nss", "application/ocsp-request", "application/oscp-response", "application/octet-stream", "application/ODA", "application/ODX", "application/oebps-package+xml", "application/ogg", "application/oxps", "application/p2p-overlay+xml", "application/parityfec", "application/patch-ops-error+xml", "application/pdf", "application/PDX", "application/pgp-encrypted", "application/pgp-keys", "application/pgp-signature", "application/pidf-diff+xml", "application/pidf+xml", "application/pkcs10", "application/pkcs7-mime", "application/pkcs7-signature", "application/pkcs8", "application/pkix-attr-cert", "application/pkix-cert", "application/pkix-crl", "application/pkix-pkipath", "application/pkixcmp", "application/pls+xml", "application/poc-settings+xml", "application/postscript", "application/provenance+xml", "application/prs.alvestrand.titrax-sheet", "application/prs.cww", "application/prs.hpub+zip", "application/prs.nprend", "application/prs.plucker", "application/prs.rdf-xml-crypt", "application/prs.xsf+xml", "application/pskc+xml", "application/rdf+xml", "application/QSIG", "application/raptorfec", "application/rdap+json", "application/reginfo+xml", "application/relax-ng-compact-syntax", "application/remote-printing", "application/reputon+json", "application/resource-lists-diff+xml", "application/resource-lists+xml", "application/riscos", "application/rlmi+xml", "application/rls-services+xml", "application/rpki-ghostbusters", "application/rpki-manifest", "application/rpki-roa", "application/rpki-updown", "application/rtf", "application/rtploopback", "application/rtx", "application/samlassertion+xml", "application/samlmetadata+xml", "application/sbml+xml", "application/scaip+xml", "application/scvp-cv-request", "application/scvp-cv-response", "application/scvp-vp-request", "application/scvp-vp-response", "application/sdp", "application/sep-exi", "application/sep+xml", "application/session-info", "application/set-payment", "application/set-payment-initiation", "application/set-registration", "application/set-registration-initiation", "application/SGML", "application/sgml-open-catalog", "application/shf+xml", "application/sieve", "application/simple-filter+xml", "application/simple-message-summary", "application/simpleSymbolContainer", "application/slate", "application/smil", "application/smil+xml", "application/smpte336m", "application/soap+fastinfoset", "application/soap+xml", "application/sparql-query", "application/sparql-results+xml", "application/spirits-event+xml", "application/sql", "application/srgs", "application/srgs+xml", "application/sru+xml", "application/ssml+xml", "application/tamp-apex-update", "application/tamp-apex-update-confirm", "application/tamp-community-update", "application/tamp-community-update-confirm", "application/tamp-error", "application/tamp-sequence-adjust", "application/tamp-sequence-adjust-confirm", "application/tamp-status-query", "application/tamp-status-response", "application/tamp-update", "application/tamp-update-confirm", "application/tei+xml", "application/thraud+xml", "application/timestamp-query", "application/timestamp-reply", "application/timestamped-data", "application/ttml+xml", "application/tve-trigger", "application/ulpfec", "application/urc-grpsheet+xml", "application/urc-ressheet+xml", "application/urc-targetdesc+xml", "application/urc-uisocketdesc+xml", "application/vcard+json", "application/vcard+xml", "application/vemmi", "application/vnd.3gpp.bsf+xml", "application/vnd.3gpp.pic-bw-large", "application/vnd.3gpp.pic-bw-small", "application/vnd.3gpp.pic-bw-var", "application/vnd.3gpp.sms", "application/vnd.3gpp2.bcmcsinfo+xml", "application/vnd.3gpp2.sms", "application/vnd.3gpp2.tcap", "application/vnd.3M.Post-it-Notes", "application/vnd.accpac.simply.aso", "application/vnd.accpac.simply.imp", "application/vnd-acucobol", "application/vnd.acucorp", "application/vnd.adobe.flash-movie", "application/vnd.adobe.formscentral.fcdt", "application/vnd.adobe.fxp", "application/vnd.adobe.partial-upload", "application/vnd.adobe.xdp+xml", "application/vnd.adobe.xfdf", "application/vnd.aether.imp", "application/vnd.ah-barcode", "application/vnd.ahead.space", "application/vnd.airzip.filesecure.azf", "application/vnd.airzip.filesecure.azs", "application/vnd.americandynamics.acc", "application/vnd.amiga.ami", "application/vnd.amundsen.maze+xml", "application/vnd.anser-web-certificate-issue-initiation", "application/vnd.antix.game-component", "application/vnd.apache.thrift.binary", "application/vnd.apache.thrift.compact", "application/vnd.apache.thrift.json", "application/vnd.api+json", "application/vnd.apple.mpegurl", "application/vnd.apple.installer+xml", "application/vnd.arastra.swi", "application/vnd.aristanetworks.swi", "application/vnd.artsquare", "application/vnd.astraea-software.iota", "application/vnd.audiograph", "application/vnd.autopackage", "application/vnd.avistar+xml", "application/vnd.balsamiq.bmml+xml", "application/vnd.balsamiq.bmpr", "application/vnd.bekitzur-stech+json", "application/vnd.blueice.multipass", "application/vnd.bluetooth.ep.oob", "application/vnd.bluetooth.le.oob", "application/vnd.bmi", "application/vnd.businessobjects", "application/vnd.cab-jscript", "application/vnd.canon-cpdl", "application/vnd.canon-lips", "application/vnd.cendio.thinlinc.clientconf", "application/vnd.century-systems.tcp_stream", "application/vnd.chemdraw+xml", "application/vnd.chipnuts.karaoke-mmd", "application/vnd.cinderella", "application/vnd.cirpack.isdn-ext", "application/vnd.citationstyles.style+xml", "application/vnd.claymore", "application/vnd.cloanto.rp9", "application/vnd.clonk.c4group", "application/vnd.cluetrust.cartomobile-config", "application/vnd.cluetrust.cartomobile-config-pkg", "application/vnd.coffeescript", "application/vnd.collection.doc+json", "application/vnd.collection+json", "application/vnd.collection.next+json", "application/vnd.commerce-battelle", "application/vnd.commonspace", "application/vnd.cosmocaller", "application/vnd.contact.cmsg", "application/vnd.crick.clicker", "application/vnd.crick.clicker.keyboard", "application/vnd.crick.clicker.palette", "application/vnd.crick.clicker.template", "application/vnd.crick.clicker.wordbank", "application/vnd.criticaltools.wbs+xml", "application/vnd.ctc-posml", "application/vnd.ctct.ws+xml", "application/vnd.cups-pdf", "application/vnd.cups-postscript", "application/vnd.cups-ppd", "application/vnd.cups-raster", "application/vnd.cups-raw", "application/vnd-curl", "application/vnd.cyan.dean.root+xml", "application/vnd.cybank", "application/vnd-dart", "application/vnd.data-vision.rdz", "application/vnd.debian.binary-package", "application/vnd.dece.data", "application/vnd.dece.ttml+xml", "application/vnd.dece.unspecified", "application/vnd.dece-zip", "application/vnd.denovo.fcselayout-link", "application/vnd.desmume-movie", "application/vnd.dir-bi.plate-dl-nosuffix", "application/vnd.dm.delegation+xml", "application/vnd.dna", "application/vnd.document+json", "application/vnd.dolby.mobile.1", "application/vnd.dolby.mobile.2", "application/vnd.doremir.scorecloud-binary-document", "application/vnd.dpgraph", "application/vnd.dreamfactory", "application/vnd.dtg.local", "application/vnd.dtg.local.flash", "application/vnd.dtg.local.html", "application/vnd.dvb.ait", "application/vnd.dvb.dvbj", "application/vnd.dvb.esgcontainer", "application/vnd.dvb.ipdcdftnotifaccess", "application/vnd.dvb.ipdcesgaccess", "application/vnd.dvb.ipdcesgaccess2", "application/vnd.dvb.ipdcesgpdd", "application/vnd.dvb.ipdcroaming", "application/vnd.dvb.iptv.alfec-base", "application/vnd.dvb.iptv.alfec-enhancement", "application/vnd.dvb.notif-aggregate-root+xml", "application/vnd.dvb.notif-container+xml", "application/vnd.dvb.notif-generic+xml", "application/vnd.dvb.notif-ia-msglist+xml", "application/vnd.dvb.notif-ia-registration-request+xml", "application/vnd.dvb.notif-ia-registration-response+xml", "application/vnd.dvb.notif-init+xml", "application/vnd.dvb.pfr", "application/vnd.dvb_service", "application/vnd-dxr", "application/vnd.dynageo", "application/vnd.dzr", "application/vnd.easykaraoke.cdgdownload", "application/vnd.ecdis-update", "application/vnd.ecowin.chart", "application/vnd.ecowin.filerequest", "application/vnd.ecowin.fileupdate", "application/vnd.ecowin.series", "application/vnd.ecowin.seriesrequest", "application/vnd.ecowin.seriesupdate", "application/vnd.emclient.accessrequest+xml", "application/vnd.enliven", "application/vnd.enphase.envoy", "application/vnd.eprints.data+xml", "application/vnd.epson.esf", "application/vnd.epson.msf", "application/vnd.epson.quickanime", "application/vnd.epson.salt", "application/vnd.epson.ssf", "application/vnd.ericsson.quickcall", "application/vnd.eszigno3+xml", "application/vnd.etsi.aoc+xml", "application/vnd.etsi.asic-s+zip", "application/vnd.etsi.asic-e+zip", "application/vnd.etsi.cug+xml", "application/vnd.etsi.iptvcommand+xml", "application/vnd.etsi.iptvdiscovery+xml", "application/vnd.etsi.iptvprofile+xml", "application/vnd.etsi.iptvsad-bc+xml", "application/vnd.etsi.iptvsad-cod+xml", "application/vnd.etsi.iptvsad-npvr+xml", "application/vnd.etsi.iptvservice+xml", "application/vnd.etsi.iptvsync+xml", "application/vnd.etsi.iptvueprofile+xml", "application/vnd.etsi.mcid+xml", "application/vnd.etsi.mheg5", "application/vnd.etsi.overload-control-policy-dataset+xml", "application/vnd.etsi.pstn+xml", "application/vnd.etsi.sci+xml", "application/vnd.etsi.simservs+xml", "application/vnd.etsi.timestamp-token", "application/vnd.etsi.tsl+xml", "application/vnd.etsi.tsl.der", "application/vnd.eudora.data", "application/vnd.ezpix-album", "application/vnd.ezpix-package", "application/vnd.f-secure.mobile", "application/vnd.fastcopy-disk-image", "application/vnd-fdf", "application/vnd.fdsn.mseed", "application/vnd.fdsn.seed", "application/vnd.ffsns", "application/vnd.fints", "application/vnd.FloGraphIt", "application/vnd.fluxtime.clip", "application/vnd.font-fontforge-sfd", "application/vnd.framemaker", "application/vnd.frogans.fnc", "application/vnd.frogans.ltf", "application/vnd.fsc.weblaunch", "application/vnd.fujitsu.oasys", "application/vnd.fujitsu.oasys2", "application/vnd.fujitsu.oasys3", "application/vnd.fujitsu.oasysgp", "application/vnd.fujitsu.oasysprs", "application/vnd.fujixerox.ART4", "application/vnd.fujixerox.ART-EX", "application/vnd.fujixerox.ddd", "application/vnd.fujixerox.docuworks", "application/vnd.fujixerox.docuworks.binder", "application/vnd.fujixerox.docuworks.container", "application/vnd.fujixerox.HBPL", "application/vnd.fut-misnet", "application/vnd.fuzzysheet", "application/vnd.genomatix.tuxedo", "application/vnd.geo+json", "application/vnd.geocube+xml", "application/vnd.geogebra.file", "application/vnd.geogebra.tool", "application/vnd.geometry-explorer", "application/vnd.geonext", "application/vnd.geoplan", "application/vnd.geospace", "application/vnd.gerber", "application/vnd.globalplatform.card-content-mgt", "application/vnd.globalplatform.card-content-mgt-response", "application/vnd.gmx", "application/vnd.google-earth.kml+xml", "application/vnd.google-earth.kmz", "application/vnd.gov.sk.e-form+xml", "application/vnd.gov.sk.e-form+zip", "application/vnd.gov.sk.xmldatacontainer+xml", "application/vnd.grafeq", "application/vnd.gridmp", "application/vnd.groove-account", "application/vnd.groove-help", "application/vnd.groove-identity-message", "application/vnd.groove-injector", "application/vnd.groove-tool-message", "application/vnd.groove-tool-template", "application/vnd.groove-vcard", "application/vnd.hal+json", "application/vnd.hal+xml", "application/vnd.HandHeld-Entertainment+xml", "application/vnd.hbci", "application/vnd.hcl-bireports", "application/vnd.heroku+json", "application/vnd.hhe.lesson-player", "application/vnd.hp-HPGL", "application/vnd.hp-hpid", "application/vnd.hp-hps", "application/vnd.hp-jlyt", "application/vnd.hp-PCL", "application/vnd.hp-PCLXL", "application/vnd.httphone", "application/vnd.hydrostatix.sof-data", "application/vnd.hzn-3d-crossword", "application/vnd.ibm.afplinedata", "application/vnd.ibm.electronic-media", "application/vnd.ibm.MiniPay", "application/vnd.ibm.modcap", "application/vnd.ibm.rights-management", "application/vnd.ibm.secure-container", "application/vnd.iccprofile", "application/vnd.ieee.1905", "application/vnd.igloader", "application/vnd.immervision-ivp", "application/vnd.immervision-ivu", "application/vnd.ims.imsccv1p1", "application/vnd.ims.imsccv1p2", "application/vnd.ims.imsccv1p3", "application/vnd.ims.lis.v2.result+json", "application/vnd.ims.lti.v2.toolconsumerprofile+json", "application/vnd.ims.lti.v2.toolproxy.id+json", "application/vnd.ims.lti.v2.toolproxy+json", "application/vnd.ims.lti.v2.toolsettings+json", "application/vnd.ims.lti.v2.toolsettings.simple+json", "application/vnd.informedcontrol.rms+xml", "application/vnd.infotech.project", "application/vnd.infotech.project+xml", "application/vnd.informix-visionary", "application/vnd.innopath.wamp.notification", "application/vnd.insors.igm", "application/vnd.intercon.formnet", "application/vnd.intergeo", "application/vnd.intertrust.digibox", "application/vnd.intertrust.nncp", "application/vnd.intu.qbo", "application/vnd.intu.qfx", "application/vnd.iptc.g2.catalogitem+xml", "application/vnd.iptc.g2.conceptitem+xml", "application/vnd.iptc.g2.knowledgeitem+xml", "application/vnd.iptc.g2.newsitem+xml", "application/vnd.iptc.g2.newsmessage+xml", "application/vnd.iptc.g2.packageitem+xml", "application/vnd.iptc.g2.planningitem+xml", "application/vnd.ipunplugged.rcprofile", "application/vnd.irepository.package+xml", "application/vnd.is-xpr", "application/vnd.isac.fcs", "application/vnd.jam", "application/vnd.japannet-directory-service", "application/vnd.japannet-jpnstore-wakeup", "application/vnd.japannet-payment-wakeup", "application/vnd.japannet-registration", "application/vnd.japannet-registration-wakeup", "application/vnd.japannet-setstore-wakeup", "application/vnd.japannet-verification", "application/vnd.japannet-verification-wakeup", "application/vnd.jcp.javame.midlet-rms", "application/vnd.jisp", "application/vnd.joost.joda-archive", "application/vnd.jsk.isdn-ngn", "application/vnd.kahootz", "application/vnd.kde.karbon", "application/vnd.kde.kchart", "application/vnd.kde.kformula", "application/vnd.kde.kivio", "application/vnd.kde.kontour", "application/vnd.kde.kpresenter", "application/vnd.kde.kspread", "application/vnd.kde.kword", "application/vnd.kenameaapp", "application/vnd.kidspiration", "application/vnd.Kinar", "application/vnd.koan", "application/vnd.kodak-descriptor", "application/vnd.las.las+xml", "application/vnd.liberty-request+xml", "application/vnd.llamagraphics.life-balance.desktop", "application/vnd.llamagraphics.life-balance.exchange+xml", "application/vnd.lotus-1-2-3", "application/vnd.lotus-approach", "application/vnd.lotus-freelance", "application/vnd.lotus-notes", "application/vnd.lotus-organizer", "application/vnd.lotus-screencam", "application/vnd.lotus-wordpro", "application/vnd.macports.portpkg", "application/vnd.marlin.drm.actiontoken+xml", "application/vnd.marlin.drm.conftoken+xml", "application/vnd.marlin.drm.license+xml", "application/vnd.marlin.drm.mdcf", "application/vnd.mason+json", "application/vnd.maxmind.maxmind-db", "application/vnd.mcd", "application/vnd.medcalcdata", "application/vnd.mediastation.cdkey", "application/vnd.meridian-slingshot", "application/vnd.MFER", "application/vnd.mfmp", "application/vnd.micro+json", "application/vnd.micrografx.flo", "application/vnd.micrografx-igx", "application/vnd.microsoft.portable-executable", "application/vnd.miele+json", "application/vnd-mif", "application/vnd.minisoft-hp3000-save", "application/vnd.mitsubishi.misty-guard.trustweb", "application/vnd.Mobius.DAF", "application/vnd.Mobius.DIS", "application/vnd.Mobius.MBK", "application/vnd.Mobius.MQY", "application/vnd.Mobius.MSL", "application/vnd.Mobius.PLC", "application/vnd.Mobius.TXF", "application/vnd.mophun.application", "application/vnd.mophun.certificate", "application/vnd.motorola.flexsuite", "application/vnd.motorola.flexsuite.adsi", "application/vnd.motorola.flexsuite.fis", "application/vnd.motorola.flexsuite.gotap", "application/vnd.motorola.flexsuite.kmr", "application/vnd.motorola.flexsuite.ttc", "application/vnd.motorola.flexsuite.wem", "application/vnd.motorola.iprm", "application/vnd.mozilla.xul+xml", "application/vnd.ms-artgalry", "application/vnd.ms-asf", "application/vnd.ms-cab-compressed", "application/vnd.ms-3mfdocument", "application/vnd.ms-excel", "application/vnd.ms-excel.addin.macroEnabled.12", "application/vnd.ms-excel.sheet.binary.macroEnabled.12", "application/vnd.ms-excel.sheet.macroEnabled.12", "application/vnd.ms-excel.template.macroEnabled.12", "application/vnd.ms-fontobject", "application/vnd.ms-htmlhelp", "application/vnd.ms-ims", "application/vnd.ms-lrm", "application/vnd.ms-office.activeX+xml", "application/vnd.ms-officetheme", "application/vnd.ms-playready.initiator+xml", "application/vnd.ms-powerpoint", "application/vnd.ms-powerpoint.addin.macroEnabled.12", "application/vnd.ms-powerpoint.presentation.macroEnabled.12", "application/vnd.ms-powerpoint.slide.macroEnabled.12", "application/vnd.ms-powerpoint.slideshow.macroEnabled.12", "application/vnd.ms-powerpoint.template.macroEnabled.12", "application/vnd.ms-project", "application/vnd.ms-tnef", "application/vnd.ms-windows.printerpairing", "application/vnd.ms-wmdrm.lic-chlg-req", "application/vnd.ms-wmdrm.lic-resp", "application/vnd.ms-wmdrm.meter-chlg-req", "application/vnd.ms-wmdrm.meter-resp", "application/vnd.ms-word.document.macroEnabled.12", "application/vnd.ms-word.template.macroEnabled.12", "application/vnd.ms-works", "application/vnd.ms-wpl", "application/vnd.ms-xpsdocument", "application/vnd.msa-disk-image", "application/vnd.mseq", "application/vnd.msign", "application/vnd.multiad.creator", "application/vnd.multiad.creator.cif", "application/vnd.musician", "application/vnd.music-niff", "application/vnd.muvee.style", "application/vnd.mynfc", "application/vnd.ncd.control", "application/vnd.ncd.reference", "application/vnd.nervana", "application/vnd.netfpx", "application/vnd.neurolanguage.nlu", "application/vnd.nintendo.snes.rom", "application/vnd.nintendo.nitro.rom", "application/vnd.nitf", "application/vnd.noblenet-directory", "application/vnd.noblenet-sealer", "application/vnd.noblenet-web", "application/vnd.nokia.catalogs", "application/vnd.nokia.conml+wbxml", "application/vnd.nokia.conml+xml", "application/vnd.nokia.iptv.config+xml", "application/vnd.nokia.iSDS-radio-presets", "application/vnd.nokia.landmark+wbxml", "application/vnd.nokia.landmark+xml", "application/vnd.nokia.landmarkcollection+xml", "application/vnd.nokia.ncd", "application/vnd.nokia.n-gage.ac+xml", "application/vnd.nokia.n-gage.data", "application/vnd.nokia.n-gage.symbian.install", "application/vnd.nokia.pcd+wbxml", "application/vnd.nokia.pcd+xml", "application/vnd.nokia.radio-preset", "application/vnd.nokia.radio-presets", "application/vnd.novadigm.EDM", "application/vnd.novadigm.EDX", "application/vnd.novadigm.EXT", "application/vnd.ntt-local.content-share", "application/vnd.ntt-local.file-transfer", "application/vnd.ntt-local.ogw_remote-access", "application/vnd.ntt-local.sip-ta_remote", "application/vnd.ntt-local.sip-ta_tcp_stream", "application/vnd.oasis.opendocument.chart", "application/vnd.oasis.opendocument.chart-template", "application/vnd.oasis.opendocument.database", "application/vnd.oasis.opendocument.formula", "application/vnd.oasis.opendocument.formula-template", "application/vnd.oasis.opendocument.graphics", "application/vnd.oasis.opendocument.graphics-template", "application/vnd.oasis.opendocument.image", "application/vnd.oasis.opendocument.image-template", "application/vnd.oasis.opendocument.presentation", "application/vnd.oasis.opendocument.presentation-template", "application/vnd.oasis.opendocument.spreadsheet", "application/vnd.oasis.opendocument.spreadsheet-template", "application/vnd.oasis.opendocument.text", "application/vnd.oasis.opendocument.text-master", "application/vnd.oasis.opendocument.text-template", "application/vnd.oasis.opendocument.text-web", "application/vnd.obn", "application/vnd.oftn.l10n+json", "application/vnd.oipf.contentaccessdownload+xml", "application/vnd.oipf.contentaccessstreaming+xml", "application/vnd.oipf.cspg-hexbinary", "application/vnd.oipf.dae.svg+xml", "application/vnd.oipf.dae.xhtml+xml", "application/vnd.oipf.mippvcontrolmessage+xml", "application/vnd.oipf.pae.gem", "application/vnd.oipf.spdiscovery+xml", "application/vnd.oipf.spdlist+xml", "application/vnd.oipf.ueprofile+xml", "application/vnd.oipf.userprofile+xml", "application/vnd.olpc-sugar", "application/vnd.oma.bcast.associated-procedure-parameter+xml", "application/vnd.oma.bcast.drm-trigger+xml", "application/vnd.oma.bcast.imd+xml", "application/vnd.oma.bcast.ltkm", "application/vnd.oma.bcast.notification+xml", "application/vnd.oma.bcast.provisioningtrigger", "application/vnd.oma.bcast.sgboot", "application/vnd.oma.bcast.sgdd+xml", "application/vnd.oma.bcast.sgdu", "application/vnd.oma.bcast.simple-symbol-container", "application/vnd.oma.bcast.smartcard-trigger+xml", "application/vnd.oma.bcast.sprov+xml", "application/vnd.oma.bcast.stkm", "application/vnd.oma.cab-address-book+xml", "application/vnd.oma.cab-feature-handler+xml", "application/vnd.oma.cab-pcc+xml", "application/vnd.oma.cab-subs-invite+xml", "application/vnd.oma.cab-user-prefs+xml", "application/vnd.oma.dcd", "application/vnd.oma.dcdc", "application/vnd.oma.dd2+xml", "application/vnd.oma.drm.risd+xml", "application/vnd.oma.group-usage-list+xml", "application/vnd.oma.pal+xml", "application/vnd.oma.poc.detailed-progress-report+xml", "application/vnd.oma.poc.final-report+xml", "application/vnd.oma.poc.groups+xml", "application/vnd.oma.poc.invocation-descriptor+xml", "application/vnd.oma.poc.optimized-progress-report+xml", "application/vnd.oma.push", "application/vnd.oma.scidm.messages+xml", "application/vnd.oma.xcap-directory+xml", "application/vnd.omads-email+xml", "application/vnd.omads-file+xml", "application/vnd.omads-folder+xml", "application/vnd.omaloc-supl-init", "application/vnd.oma-scws-config", "application/vnd.oma-scws-http-request", "application/vnd.oma-scws-http-response", "application/vnd.openeye.oeb", "application/vnd.openxmlformats-officedocument.custom-properties+xml", "application/vnd.openxmlformats-officedocument.customXmlProperties+xml", "application/vnd.openxmlformats-officedocument.drawing+xml", "application/vnd.openxmlformats-officedocument.drawingml.chart+xml", "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml", "application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml", "application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml", "application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml", "application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml", "application/vnd.openxmlformats-officedocument.extended-properties+xml", "application/vnd.openxmlformats-officedocument.presentationml.commentAuthors+xml", "application/vnd.openxmlformats-officedocument.presentationml.comments+xml", "application/vnd.openxmlformats-officedocument.presentationml.handoutMaster+xml", "application/vnd.openxmlformats-officedocument.presentationml.notesMaster+xml", "application/vnd.openxmlformats-officedocument.presentationml.notesSlide+xml", "application/vnd.openxmlformats-officedocument.presentationml.presentation", "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml", "application/vnd.openxmlformats-officedocument.presentationml.presProps+xml", "application/vnd.openxmlformats-officedocument.presentationml.slide", "application/vnd.openxmlformats-officedocument.presentationml.slide+xml", "application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml", "application/vnd.openxmlformats-officedocument.presentationml.slideMaster+xml", "application/vnd.openxmlformats-officedocument.presentationml.slideshow", "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml", "application/vnd.openxmlformats-officedocument.presentationml.slideUpdateInfo+xml", "application/vnd.openxmlformats-officedocument.presentationml.tableStyles+xml", "application/vnd.openxmlformats-officedocument.presentationml.tags+xml", "application/vnd.openxmlformats-officedocument.presentationml-template", "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml", "application/vnd.openxmlformats-officedocument.presentationml.viewProps+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml-template", "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml", "application/vnd.openxmlformats-officedocument.theme+xml", "application/vnd.openxmlformats-officedocument.themeOverride+xml", "application/vnd.openxmlformats-officedocument.vmlDrawing", "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml", "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml", "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml", "application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml", "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml", "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml", "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml", "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml", "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml", "application/vnd.openxmlformats-officedocument.wordprocessingml-template", "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml", "application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml", "application/vnd.openxmlformats-package.core-properties+xml", "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml", "application/vnd.openxmlformats-package.relationships+xml", "application/vnd.oracle.resource+json", "application/vnd.orange.indata", "application/vnd.osa.netdeploy", "application/vnd.osgeo.mapguide.package", "application/vnd.osgi.bundle", "application/vnd.osgi.dp", "application/vnd.osgi.subsystem", "application/vnd.otps.ct-kip+xml", "application/vnd.palm", "application/vnd.panoply", "application/vnd.paos+xml", "application/vnd.pawaafile", "application/vnd.pcos", "application/vnd.pg.format", "application/vnd.pg.osasli", "application/vnd.piaccess.application-licence", "application/vnd.picsel", "application/vnd.pmi.widget", "application/vnd.poc.group-advertisement+xml", "application/vnd.pocketlearn", "application/vnd.powerbuilder6", "application/vnd.powerbuilder6-s", "application/vnd.powerbuilder7", "application/vnd.powerbuilder75", "application/vnd.powerbuilder75-s", "application/vnd.powerbuilder7-s", "application/vnd.preminet", "application/vnd.previewsystems.box", "application/vnd.proteus.magazine", "application/vnd.publishare-delta-tree", "application/vnd.pvi.ptid1", "application/vwg-multiplexed", "application/vnd.pwg-xhtml-print+xml", "application/vnd.qualcomm.brew-app-res", "application/vnd.Quark.QuarkXPress", "application/vnd.quobject-quoxdocument", "application/vnd.radisys.moml+xml", "application/vnd.radisys.msml-audit-conf+xml", "application/vnd.radisys.msml-audit-conn+xml", "application/vnd.radisys.msml-audit-dialog+xml", "application/vnd.radisys.msml-audit-stream+xml", "application/vnd.radisys.msml-audit+xml", "application/vnd.radisys.msml-conf+xml", "application/vnd.radisys.msml-dialog-base+xml", "application/vnd.radisys.msml-dialog-fax-detect+xml", "application/vnd.radisys.msml-dialog-fax-sendrecv+xml", "application/vnd.radisys.msml-dialog-group+xml", "application/vnd.radisys.msml-dialog-speech+xml", "application/vnd.radisys.msml-dialog-transform+xml", "application/vnd.radisys.msml-dialog+xml", "application/vnd.radisys.msml+xml", "application/vnd.rainstor.data", "application/vnd.rapid", "application/vnd.realvnc.bed", "application/vnd.recordare.musicxml", "application/vnd.recordare.musicxml+xml", "application/vnd.renlearn.rlprint", "application/vnd.rig.cryptonote", "application/vnd.route66.link66+xml", "application/vnd.rs-274x", "application/vnd.ruckus.download", "application/vnd.s3sms", "application/vnd.sailingtracker.track", "application/vnd.sbm.cid", "application/vnd.sbm.mid2", "application/vnd.scribus", "application/vnd.sealed.3df", "application/vnd.sealed.csf", "application/vnd.sealed-doc", "application/vnd.sealed-eml", "application/vnd.sealed-mht", "application/vnd.sealed.net", "application/vnd.sealed-ppt", "application/vnd.sealed-tiff", "application/vnd.sealed-xls", "application/vnd.sealedmedia.softseal-html", "application/vnd.sealedmedia.softseal-pdf", "application/vnd.seemail", "application/vnd-sema", "application/vnd.semd", "application/vnd.semf", "application/vnd.shana.informed.formdata", "application/vnd.shana.informed.formtemplate", "application/vnd.shana.informed.interchange", "application/vnd.shana.informed.package", "application/vnd.SimTech-MindMapper", "application/vnd.siren+json", "application/vnd.smaf", "application/vnd.smart.notebook", "application/vnd.smart.teacher", "application/vnd.software602.filler.form+xml", "application/vnd.software602.filler.form-xml-zip", "application/vnd.solent.sdkm+xml", "application/vnd.spotfire.dxp", "application/vnd.spotfire.sfs", "application/vnd.sss-cod", "application/vnd.sss-dtf", "application/vnd.sss-ntf", "application/vnd.stepmania.package", "application/vnd.stepmania.stepchart", "application/vnd.street-stream", "application/vnd.sun.wadl+xml", "application/vnd.sus-calendar", "application/vnd.svd", "application/vnd.swiftview-ics", "application/vnd.syncml.dm.notification", "application/vnd.syncml.dmddf+xml", "application/vnd.syncml.dmtnds+wbxml", "application/vnd.syncml.dmtnds+xml", "application/vnd.syncml.dmddf+wbxml", "application/vnd.syncml.dm+wbxml", "application/vnd.syncml.dm+xml", "application/vnd.syncml.ds.notification", "application/vnd.syncml+xml", "application/vnd.tao.intent-module-archive", "application/vnd.tcpdump.pcap", "application/vnd.tmd.mediaflex.api+xml", "application/vnd.tmobile-livetv", "application/vnd.trid.tpt", "application/vnd.triscape.mxs", "application/vnd.trueapp", "application/vnd.truedoc", "application/vnd.ubisoft.webplayer", "application/vnd.ufdl", "application/vnd.uiq.theme", "application/vnd.umajin", "application/vnd.unity", "application/vnd.uoml+xml", "application/vnd.uplanet.alert", "application/vnd.uplanet.alert-wbxml", "application/vnd.uplanet.bearer-choice", "application/vnd.uplanet.bearer-choice-wbxml", "application/vnd.uplanet.cacheop", "application/vnd.uplanet.cacheop-wbxml", "application/vnd.uplanet.channel", "application/vnd.uplanet.channel-wbxml", "application/vnd.uplanet.list", "application/vnd.uplanet.listcmd", "application/vnd.uplanet.listcmd-wbxml", "application/vnd.uplanet.list-wbxml", "application/vnd.uplanet.signal", "application/vnd.valve.source.material", "application/vnd.vcx", "application/vnd.vd-study", "application/vnd.vectorworks", "application/vnd.verimatrix.vcas", "application/vnd.vidsoft.vidconference", "application/vnd.visio", "application/vnd.visionary", "application/vnd.vividence.scriptfile", "application/vnd.vsf", "application/vnd.wap.sic", "application/vnd.wap-slc", "application/vnd.wap-wbxml", "application/vnd-wap-wmlc", "application/vnd.wap.wmlscriptc", "application/vnd.webturbo", "application/vnd.wfa.p2p", "application/vnd.wfa.wsc", "application/vnd.windows.devicepairing", "application/vnd.wmc", "application/vnd.wmf.bootstrap", "application/vnd.wolfram.mathematica", "application/vnd.wolfram.mathematica.package", "application/vnd.wolfram.player", "application/vnd.wordperfect", "application/vnd.wqd", "application/vnd.wrq-hp3000-labelled", "application/vnd.wt.stf", "application/vnd.wv.csp+xml", "application/vnd.wv.csp+wbxml", "application/vnd.wv.ssp+xml", "application/vnd.xacml+json", "application/vnd.xara", "application/vnd.xfdl", "application/vnd.xfdl.webform", "application/vnd.xmi+xml", "application/vnd.xmpie.cpkg", "application/vnd.xmpie.dpkg", "application/vnd.xmpie.plan", "application/vnd.xmpie.ppkg", "application/vnd.xmpie.xlim", "application/vnd.yamaha.hv-dic", "application/vnd.yamaha.hv-script", "application/vnd.yamaha.hv-voice", "application/vnd.yamaha.openscoreformat.osfpvg+xml", "application/vnd.yamaha.openscoreformat", "application/vnd.yamaha.remote-setup", "application/vnd.yamaha.smaf-audio", "application/vnd.yamaha.smaf-phrase", "application/vnd.yamaha.through-ngn", "application/vnd.yamaha.tunnel-udpencap", "application/vnd.yaoweme", "application/vnd.yellowriver-custom-menu", "application/vnd.zul", "application/vnd.zzazz.deck+xml", "application/voicexml+xml", "application/vq-rtcpxr", "application/watcherinfo+xml", "application/whoispp-query", "application/whoispp-response", "application/widget", "application/wita", "application/wordperfect5.1", "application/wsdl+xml", "application/wspolicy+xml", "application/x-www-form-urlencoded", "application/x400-bp", "application/xacml+xml", "application/xcap-att+xml", "application/xcap-caps+xml", "application/xcap-diff+xml", "application/xcap-el+xml", "application/xcap-error+xml", "application/xcap-ns+xml", "application/xcon-conference-info-diff+xml", "application/xcon-conference-info+xml", "application/xenc+xml", "application/xhtml-voice+xml", "application/xhtml+xml", "application/xml", "application/xml-dtd", "application/xml-external-parsed-entity", "application/xml-patch+xml", "application/xmpp+xml", "application/xop+xml", "application/xslt+xml", "application/xv+xml", "application/yang", "application/yin+xml", "application/zip", "application/zlib", "audio/1d-interleaved-parityfec", "audio/32kadpcm", "audio/3gpp", "audio/3gpp2", "audio/ac3", "audio/AMR", "audio/AMR-WB", "audio/amr-wb+", "audio/aptx", "audio/asc", "audio/ATRAC-ADVANCED-LOSSLESS", "audio/ATRAC-X", "audio/ATRAC3", "audio/basic", "audio/BV16", "audio/BV32", "audio/clearmode", "audio/CN", "audio/DAT12", "audio/dls", "audio/dsr-es201108", "audio/dsr-es202050", "audio/dsr-es202211", "audio/dsr-es202212", "audio/DV", "audio/DVI4", "audio/eac3", "audio/encaprtp", "audio/EVRC", "audio/EVRC-QCP", "audio/EVRC0", "audio/EVRC1", "audio/EVRCB", "audio/EVRCB0", "audio/EVRCB1", "audio/EVRCNW", "audio/EVRCNW0", "audio/EVRCNW1", "audio/EVRCWB", "audio/EVRCWB0", "audio/EVRCWB1", "audio/example", "audio/fwdred", "audio/G719", "audio/G721", "audio/G722", "audio/G723", "audio/G726-16", "audio/G726-24", "audio/G726-32", "audio/G726-40", "audio/G728", "audio/G729", "audio/G7291", "audio/G729D", "audio/G729E", "audio/GSM", "audio/GSM-EFR", "audio/GSM-HR-08", "audio/iLBC", "audio/ip-mr_v2.5", "audio/L8", "audio/L16", "audio/L20", "audio/L24", "audio/LPC", "audio/mobile-xmf", "audio/MPA", "audio/mp4", "audio/MP4A-LATM", "audio/mpa-robust", "audio/mpeg", "audio/mpeg4-generic", "audio/ogg", "audio/opus", "audio/parityfec", "audio/PCMA", "audio/PCMA-WB", "audio/PCMU", "audio/PCMU-WB", "audio/prs.sid", "audio/QCELP", "audio/raptorfec", "audio/RED", "audio/rtp-enc-aescm128", "audio/rtploopback", "audio/rtp-midi", "audio/rtx", "audio/SMV", "audio/SMV0", "audio/SMV-QCP", "audio/sp-midi", "audio/speex", "audio/t140c", "audio/t38", "audio/telephone-event", "audio/tone", "audio/UEMCLIP", "audio/ulpfec", "audio/VDVI", "audio/VMR-WB", "audio/vnd.3gpp.iufp", "audio/vnd.4SB", "audio/vnd.audiokoz", "audio/vnd.CELP", "audio/vnd.cisco.nse", "audio/vnd.cmles.radio-events", "audio/vnd.cns.anp1", "audio/vnd.cns.inf1", "audio/vnd.dece.audio", "audio/vnd.digital-winds", "audio/vnd.dlna.adts", "audio/vnd.dolby.heaac.1", "audio/vnd.dolby.heaac.2", "audio/vnd.dolby.mlp", "audio/vnd.dolby.mps", "audio/vnd.dolby.pl2", "audio/vnd.dolby.pl2x", "audio/vnd.dolby.pl2z", "audio/vnd.dolby.pulse.1", "audio/vnd.dra", "audio/vnd.dts", "audio/vnd.dts.hd", "audio/vnd.dvb.file", "audio/vnd.everad.plj", "audio/vnd.hns.audio", "audio/vnd.lucent.voice", "audio/vnd.ms-playready.media.pya", "audio/vnd.nokia.mobile-xmf", "audio/vnd.nortel.vbk", "audio/vnd.nuera.ecelp4800", "audio/vnd.nuera.ecelp7470", "audio/vnd.nuera.ecelp9600", "audio/vnd.octel.sbc", "audio/vnd.qcelp", "audio/vnd.rhetorex.32kadpcm", "audio/vnd.rip", "audio/vnd.sealedmedia.softseal-mpeg", "audio/vnd.vmx.cvsd", "audio/vorbis", "audio/vorbis-config", "image/cgm", "image/example", "image/fits", "image/g3fax", "image/gif", "image/ief", "image/jp2", "image/jpeg", "image/jpm", "image/jpx", "image/ktx", "image/naplps", "image/png", "image/prs.btif", "image/prs.pti", "image/pwg-raster", "image/svg+xml", "image/t38", "image/tiff", "image/tiff-fx", "image/vnd.adobe.photoshop", "image/vnd.airzip.accelerator.azv", "image/vnd.cns.inf2", "image/vnd.dece.graphic", "image/vnd-djvu", "image/vnd.dwg", "image/vnd.dxf", "image/vnd.dvb.subtitle", "image/vnd.fastbidsheet", "image/vnd.fpx", "image/vnd.fst", "image/vnd.fujixerox.edmics-mmr", "image/vnd.fujixerox.edmics-rlc", "image/vnd.globalgraphics.pgb", "image/vnd.microsoft.icon", "image/vnd.mix", "image/vnd.ms-modi", "image/vnd.net-fpx", "image/vnd.radiance", "image/vnd.sealed-png", "image/vnd.sealedmedia.softseal-gif", "image/vnd.sealedmedia.softseal-jpg", "image/vnd-svf", "image/vnd.tencent.tap", "image/vnd.valve.source.texture", "image/vnd-wap-wbmp", "image/vnd.xiff", "image/vnd.zbrush.pcx", "message/CPIM", "message/delivery-status", "message/disposition-notification", "message/example", "message/external-body", "message/feedback-report", "message/global", "message/global-delivery-status", "message/global-disposition-notification", "message/global-headers", "message/http", "message/imdn+xml", "message/news", "message/partial", "message/rfc822", "message/s-http", "message/sip", "message/sipfrag", "message/tracking-status", "message/vnd.si.simp", "message/vnd.wfa.wsc", "model/example", "model/iges", "model/mesh", "model/vnd.collada+xml", "model/vnd-dwf", "model/vnd.flatland.3dml", "model/vnd.gdl", "model/vnd.gs-gdl", "model/vnd.gtw", "model/vnd.moml+xml", "model/vnd.mts", "model/vnd.opengex", "model/vnd.parasolid.transmit-binary", "model/vnd.parasolid.transmit-text", "model/vnd.valve.source.compiled-map", "model/vnd.vtu", "model/vrml", "model/x3d-vrml", "model/x3d+fastinfoset", "model/x3d+xml", "multipart/alternative", "multipart/appledouble", "multipart/byteranges", "multipart/digest", "multipart/encrypted", "multipart/example", "multipart/form-data", "multipart/header-set", "multipart/mixed", "multipart/parallel", "multipart/related", "multipart/report", "multipart/signed", "multipart/voice-message", "multipart/x-mixed-replace", "text/1d-interleaved-parityfec", "text/cache-manifest", "text/calendar", "text/css", "text/csv", "text/csv-schema", "text/directory", "text/dns", "text/ecmascript", "text/encaprtp", "text/enriched", "text/example", "text/fwdred", "text/grammar-ref-list", "text/html", "text/javascript", "text/jcr-cnd", "text/markdown", "text/mizar", "text/n3", "text/parameters", "text/parityfec", "text/plain", "text/provenance-notation", "text/prs.fallenstein.rst", "text/prs.lines.tag", "text/raptorfec", "text/RED", "text/rfc822-headers", "text/richtext", "text/rtf", "text/rtp-enc-aescm128", "text/rtploopback", "text/rtx", "text/SGML", "text/t140", "text/tab-separated-values", "text/troff", "text/turtle", "text/ulpfec", "text/uri-list", "text/vcard", "text/vnd-a", "text/vnd.abc", "text/vnd-curl", "text/vnd.debian.copyright", "text/vnd.DMClientScript", "text/vnd.dvb.subtitle", "text/vnd.esmertec.theme-descriptor", "text/vnd.fly", "text/vnd.fmi.flexstor", "text/vnd.graphviz", "text/vnd.in3d.3dml", "text/vnd.in3d.spot", "text/vnd.IPTC.NewsML", "text/vnd.IPTC.NITF", "text/vnd.latex-z", "text/vnd.motorola.reflex", "text/vnd.ms-mediapackage", "text/vnd.net2phone.commcenter.command", "text/vnd.radisys.msml-basic-layout", "text/vnd.si.uricatalogue", "text/vnd.sun.j2me.app-descriptor", "text/vnd.trolltech.linguist", "text/vnd.wap.si", "text/vnd.wap.sl", "text/vnd.wap-wml", "text/vnd.wap.wmlscript", "text/xml", "text/xml-external-parsed-entity", "video/1d-interleaved-parityfec", "video/3gpp", "video/3gpp2", "video/3gpp-tt", "video/BMPEG", "video/BT656", "video/CelB", "video/DV", "video/encaprtp", "video/example", "video/H261", "video/H263", "video/H263-1998", "video/H263-2000", "video/H264", "video/H264-RCDO", "video/H264-SVC", "video/iso.segment", "video/JPEG", "video/jpeg2000", "video/mj2", "video/MP1S", "video/MP2P", "video/MP2T", "video/mp4", "video/MP4V-ES", "video/MPV", "video/mpeg", "video/mpeg4-generic", "video/nv", "video/ogg", "video/parityfec", "video/pointer", "video/quicktime", "video/raptorfec", "video/raw", "video/rtp-enc-aescm128", "video/rtploopback", "video/rtx", "video/SMPTE292M", "video/ulpfec", "video/vc1", "video/vnd.CCTV", "video/vnd.dece.hd", "video/vnd.dece.mobile", "video/vnd.dece-mp4", "video/vnd.dece.pd", "video/vnd.dece.sd", "video/vnd.dece.video", "video/vnd.directv-mpeg", "video/vnd.directv.mpeg-tts", "video/vnd.dlna.mpeg-tts", "video/vnd.dvb.file", "video/vnd.fvt", "video/vnd.hns.video", "video/vnd.iptvforum.1dparityfec-1010", "video/vnd.iptvforum.1dparityfec-2005", "video/vnd.iptvforum.2dparityfec-1010", "video/vnd.iptvforum.2dparityfec-2005", "video/vnd.iptvforum.ttsavc", "video/vnd.iptvforum.ttsmpeg2", "video/vnd.motorola.video", "video/vnd.motorola.videop", "video/vnd-mpegurl", "video/vnd.ms-playready.media.pyv", "video/vnd.nokia.interleaved-multimedia", "video/vnd.nokia.videovoip", "video/vnd.objectvideo", "video/vnd.radgamettools.bink", "video/vnd.radgamettools.smacker", "video/vnd.sealed.mpeg1", "video/vnd.sealed.mpeg4", "video/vnd.sealed-swf", "video/vnd.sealedmedia.softseal-mov", "video/vnd.uvvu-mp4", "video/vnd-vivo"] \ No newline at end of file +["application/1d-interleaved-parityfec", "application/3gpdash-qoe-report+xml", "application/3gpp-ims+xml", "application/A2L", "application/activemessage", "application/activemessage", "application/alto-costmap+json", "application/alto-costmapfilter+json", "application/alto-directory+json", "application/alto-endpointprop+json", "application/alto-endpointpropparams+json", "application/alto-endpointcost+json", "application/alto-endpointcostparams+json", "application/alto-error+json", "application/alto-networkmapfilter+json", "application/alto-networkmap+json", "application/AML", "application/andrew-inset", "application/applefile", "application/ATF", "application/ATFX", "application/atom+xml", "application/atomcat+xml", "application/atomdeleted+xml", "application/atomicmail", "application/atomsvc+xml", "application/ATXML", "application/auth-policy+xml", "application/bacnet-xdd+zip", "application/batch-SMTP", "application/beep+xml", "application/calendar+json", "application/calendar+xml", "application/call-completion", "application/cals-1840", "application/cbor", "application/ccmp+xml", "application/ccxml+xml", "application/CDFX+XML", "application/cdmi-capability", "application/cdmi-container", "application/cdmi-domain", "application/cdmi-object", "application/cdmi-queue", "application/CEA", "application/cea-2018+xml", "application/cellml+xml", "application/cfw", "application/cms", "application/cnrp+xml", "application/coap-group+json", "application/commonground", "application/conference-info+xml", "application/cpl+xml", "application/csrattrs", "application/csta+xml", "application/CSTAdata+xml", "application/cybercash", "application/dash+xml", "application/dashdelta", "application/davmount+xml", "application/dca-rft", "application/DCD", "application/dec-dx", "application/dialog-info+xml", "application/dicom", "application/DII", "application/DIT", "application/dns", "application/dskpp+xml", "application/dssc+der", "application/dssc+xml", "application/dvcs", "application/ecmascript", "application/EDI-consent", "application/EDIFACT", "application/EDI-X12", "application/emma+xml", "application/emotionml+xml", "application/encaprtp", "application/epp+xml", "application/epub+zip", "application/eshop", "application/example", "application/exi", "application/fastinfoset", "application/fastsoap", "application/fdt+xml", "application/fits", "application/font-sfnt", "application/font-tdpfr", "application/font-woff", "application/framework-attributes+xml", "application/gzip", "application/H224", "application/held+xml", "application/http", "application/hyperstudio", "application/ibe-key-request+xml", "application/ibe-pkg-reply+xml", "application/ibe-pp-data", "application/iges", "application/im-iscomposing+xml", "application/index", "application/index.cmd", "application/index.obj", "application/index.response", "application/index.vnd", "application/inkml+xml", "application/IOTP", "application/ipfix", "application/ipp", "application/ISUP", "application/its+xml", "application/javascript", "application/jose", "application/jose+json", "application/jrd+json", "application/json", "application/json-patch+json", "application/json-seq", "application/jwk+json", "application/jwk-set+json", "application/jwt", "application/kpml-request+xml", "application/kpml-response+xml", "application/ld+json", "application/link-format", "application/load-control+xml", "application/lost+xml", "application/lostsync+xml", "application/LXF", "application/mac-binhex40", "application/macwriteii", "application/mads+xml", "application/marc", "application/marcxml+xml", "application/mathematica", "application/mathml-content+xml", "application/mathml-presentation+xml", "application/mathml+xml", "application/mbms-associated-procedure-description+xml", "application/mbms-deregister+xml", "application/mbms-envelope+xml", "application/mbms-msk-response+xml", "application/mbms-msk+xml", "application/mbms-protection-description+xml", "application/mbms-reception-report+xml", "application/mbms-register-response+xml", "application/mbms-register+xml", "application/mbms-schedule+xml", "application/mbms-user-service-description+xml", "application/mbox+xml", "application/media_control+xml", "application/media-policy-dataset+xml", "application/mediaservercontrol+xml", "application/merge-patch+json", "application/metalink4+xml", "application/mets+xml", "application/MF4", "application/mikey", "application/mods+xml", "application/moss-keys", "application/moss-signature", "application/mosskey-data", "application/mosskey-request", "application/mp21", "application/mp4", "application/mpeg4-generic", "application/mpeg4-iod", "application/mpeg4-iod-xmt", "application/mrb-consumer+xml", "application/mrb-publish+xml", "application/msc-ivr+xml", "application/msc-mixer+xml", "application/msword", "application/mxf", "application/nasdata", "application/news-checkgroups", "application/news-groupinfo", "application/news-transmission", "application/nlsml+xml", "application/nss", "application/ocsp-request", "application/oscp-response", "application/octet-stream", "application/ODA", "application/ODX", "application/oebps-package+xml", "application/ogg", "application/oxps", "application/p2p-overlay+xml", "application/parityfec", "application/patch-ops-error+xml", "application/pdf", "application/PDX", "application/pgp-encrypted", "application/pgp-keys", "application/pgp-signature", "application/pidf-diff+xml", "application/pidf+xml", "application/pkcs10", "application/pkcs7-mime", "application/pkcs7-signature", "application/pkcs8", "application/pkix-attr-cert", "application/pkix-cert", "application/pkix-crl", "application/pkix-pkipath", "application/pkixcmp", "application/pls+xml", "application/poc-settings+xml", "application/postscript", "application/provenance+xml", "application/prs.alvestrand.titrax-sheet", "application/prs.cww", "application/prs.hpub+zip", "application/prs.nprend", "application/prs.plucker", "application/prs.rdf-xml-crypt", "application/prs.xsf+xml", "application/pskc+xml", "application/rdf+xml", "application/QSIG", "application/raptorfec", "application/rdap+json", "application/reginfo+xml", "application/relax-ng-compact-syntax", "application/remote-printing", "application/reputon+json", "application/resource-lists-diff+xml", "application/resource-lists+xml", "application/riscos", "application/rlmi+xml", "application/rls-services+xml", "application/rpki-ghostbusters", "application/rpki-manifest", "application/rpki-roa", "application/rpki-updown", "application/rtf", "application/rtploopback", "application/rtx", "application/samlassertion+xml", "application/samlmetadata+xml", "application/sbml+xml", "application/scaip+xml", "application/scvp-cv-request", "application/scvp-cv-response", "application/scvp-vp-request", "application/scvp-vp-response", "application/sdp", "application/sep-exi", "application/sep+xml", "application/session-info", "application/set-payment", "application/set-payment-initiation", "application/set-registration", "application/set-registration-initiation", "application/SGML", "application/sgml-open-catalog", "application/shf+xml", "application/sieve", "application/simple-filter+xml", "application/simple-message-summary", "application/simpleSymbolContainer", "application/slate", "application/smil", "application/smil+xml", "application/smpte336m", "application/soap+fastinfoset", "application/soap+xml", "application/sparql-query", "application/sparql-results+xml", "application/spirits-event+xml", "application/sql", "application/srgs", "application/srgs+xml", "application/sru+xml", "application/ssml+xml", "application/tamp-apex-update", "application/tamp-apex-update-confirm", "application/tamp-community-update", "application/tamp-community-update-confirm", "application/tamp-error", "application/tamp-sequence-adjust", "application/tamp-sequence-adjust-confirm", "application/tamp-status-query", "application/tamp-status-response", "application/tamp-update", "application/tamp-update-confirm", "application/tei+xml", "application/thraud+xml", "application/timestamp-query", "application/timestamp-reply", "application/timestamped-data", "application/ttml+xml", "application/tve-trigger", "application/ulpfec", "application/urc-grpsheet+xml", "application/urc-ressheet+xml", "application/urc-targetdesc+xml", "application/urc-uisocketdesc+xml", "application/vcard+json", "application/vcard+xml", "application/vemmi", "application/vnd.3gpp.bsf+xml", "application/vnd.3gpp.pic-bw-large", "application/vnd.3gpp.pic-bw-small", "application/vnd.3gpp.pic-bw-var", "application/vnd.3gpp.sms", "application/vnd.3gpp2.bcmcsinfo+xml", "application/vnd.3gpp2.sms", "application/vnd.3gpp2.tcap", "application/vnd.3M.Post-it-Notes", "application/vnd.accpac.simply.aso", "application/vnd.accpac.simply.imp", "application/vnd-acucobol", "application/vnd.acucorp", "application/vnd.adobe.flash-movie", "application/vnd.adobe.formscentral.fcdt", "application/vnd.adobe.fxp", "application/vnd.adobe.partial-upload", "application/vnd.adobe.xdp+xml", "application/vnd.adobe.xfdf", "application/vnd.aether.imp", "application/vnd.ah-barcode", "application/vnd.ahead.space", "application/vnd.airzip.filesecure.azf", "application/vnd.airzip.filesecure.azs", "application/vnd.americandynamics.acc", "application/vnd.amiga.ami", "application/vnd.amundsen.maze+xml", "application/vnd.anser-web-certificate-issue-initiation", "application/vnd.antix.game-component", "application/vnd.apache.thrift.binary", "application/vnd.apache.thrift.compact", "application/vnd.apache.thrift.json", "application/vnd.api+json", "application/vnd.apple.mpegurl", "application/vnd.apple.installer+xml", "application/vnd.arastra.swi", "application/vnd.aristanetworks.swi", "application/vnd.artsquare", "application/vnd.astraea-software.iota", "application/vnd.audiograph", "application/vnd.autopackage", "application/vnd.avistar+xml", "application/vnd.balsamiq.bmml+xml", "application/vnd.balsamiq.bmpr", "application/vnd.bekitzur-stech+json", "application/vnd.blueice.multipass", "application/vnd.bluetooth.ep.oob", "application/vnd.bluetooth.le.oob", "application/vnd.bmi", "application/vnd.businessobjects", "application/vnd.cab-jscript", "application/vnd.canon-cpdl", "application/vnd.canon-lips", "application/vnd.cendio.thinlinc.clientconf", "application/vnd.century-systems.tcp_stream", "application/vnd.chemdraw+xml", "application/vnd.chipnuts.karaoke-mmd", "application/vnd.cinderella", "application/vnd.cirpack.isdn-ext", "application/vnd.citationstyles.style+xml", "application/vnd.claymore", "application/vnd.cloanto.rp9", "application/vnd.clonk.c4group", "application/vnd.cluetrust.cartomobile-config", "application/vnd.cluetrust.cartomobile-config-pkg", "application/vnd.coffeescript", "application/vnd.collection.doc+json", "application/vnd.collection+json", "application/vnd.collection.next+json", "application/vnd.commerce-battelle", "application/vnd.commonspace", "application/vnd.cosmocaller", "application/vnd.contact.cmsg", "application/vnd.crick.clicker", "application/vnd.crick.clicker.keyboard", "application/vnd.crick.clicker.palette", "application/vnd.crick.clicker.template", "application/vnd.crick.clicker.wordbank", "application/vnd.criticaltools.wbs+xml", "application/vnd.ctc-posml", "application/vnd.ctct.ws+xml", "application/vnd.cups-pdf", "application/vnd.cups-postscript", "application/vnd.cups-ppd", "application/vnd.cups-raster", "application/vnd.cups-raw", "application/vnd-curl", "application/vnd.cyan.dean.root+xml", "application/vnd.cybank", "application/vnd-dart", "application/vnd.data-vision.rdz", "application/vnd.debian.binary-package", "application/vnd.dece.data", "application/vnd.dece.ttml+xml", "application/vnd.dece.unspecified", "application/vnd.dece-zip", "application/vnd.denovo.fcselayout-link", "application/vnd.desmume-movie", "application/vnd.dir-bi.plate-dl-nosuffix", "application/vnd.dm.delegation+xml", "application/vnd.dna", "application/vnd.document+json", "application/vnd.dolby.mobile.1", "application/vnd.dolby.mobile.2", "application/vnd.doremir.scorecloud-binary-document", "application/vnd.dpgraph", "application/vnd.dreamfactory", "application/vnd.dtg.local", "application/vnd.dtg.local.flash", "application/vnd.dtg.local.html", "application/vnd.dvb.ait", "application/vnd.dvb.dvbj", "application/vnd.dvb.esgcontainer", "application/vnd.dvb.ipdcdftnotifaccess", "application/vnd.dvb.ipdcesgaccess", "application/vnd.dvb.ipdcesgaccess2", "application/vnd.dvb.ipdcesgpdd", "application/vnd.dvb.ipdcroaming", "application/vnd.dvb.iptv.alfec-base", "application/vnd.dvb.iptv.alfec-enhancement", "application/vnd.dvb.notif-aggregate-root+xml", "application/vnd.dvb.notif-container+xml", "application/vnd.dvb.notif-generic+xml", "application/vnd.dvb.notif-ia-msglist+xml", "application/vnd.dvb.notif-ia-registration-request+xml", "application/vnd.dvb.notif-ia-registration-response+xml", "application/vnd.dvb.notif-init+xml", "application/vnd.dvb.pfr", "application/vnd.dvb_service", "application/vnd-dxr", "application/vnd.dynageo", "application/vnd.dzr", "application/vnd.easykaraoke.cdgdownload", "application/vnd.ecdis-update", "application/vnd.ecowin.chart", "application/vnd.ecowin.filerequest", "application/vnd.ecowin.fileupdate", "application/vnd.ecowin.series", "application/vnd.ecowin.seriesrequest", "application/vnd.ecowin.seriesupdate", "application/vnd.emclient.accessrequest+xml", "application/vnd.enliven", "application/vnd.enphase.envoy", "application/vnd.eprints.data+xml", "application/vnd.epson.esf", "application/vnd.epson.msf", "application/vnd.epson.quickanime", "application/vnd.epson.salt", "application/vnd.epson.ssf", "application/vnd.ericsson.quickcall", "application/vnd.eszigno3+xml", "application/vnd.etsi.aoc+xml", "application/vnd.etsi.asic-s+zip", "application/vnd.etsi.asic-e+zip", "application/vnd.etsi.cug+xml", "application/vnd.etsi.iptvcommand+xml", "application/vnd.etsi.iptvdiscovery+xml", "application/vnd.etsi.iptvprofile+xml", "application/vnd.etsi.iptvsad-bc+xml", "application/vnd.etsi.iptvsad-cod+xml", "application/vnd.etsi.iptvsad-npvr+xml", "application/vnd.etsi.iptvservice+xml", "application/vnd.etsi.iptvsync+xml", "application/vnd.etsi.iptvueprofile+xml", "application/vnd.etsi.mcid+xml", "application/vnd.etsi.mheg5", "application/vnd.etsi.overload-control-policy-dataset+xml", "application/vnd.etsi.pstn+xml", "application/vnd.etsi.sci+xml", "application/vnd.etsi.simservs+xml", "application/vnd.etsi.timestamp-token", "application/vnd.etsi.tsl+xml", "application/vnd.etsi.tsl.der", "application/vnd.eudora.data", "application/vnd.ezpix-album", "application/vnd.ezpix-package", "application/vnd.f-secure.mobile", "application/vnd.fastcopy-disk-image", "application/vnd-fdf", "application/vnd.fdsn.mseed", "application/vnd.fdsn.seed", "application/vnd.ffsns", "application/vnd.fints", "application/vnd.FloGraphIt", "application/vnd.fluxtime.clip", "application/vnd.font-fontforge-sfd", "application/vnd.framemaker", "application/vnd.frogans.fnc", "application/vnd.frogans.ltf", "application/vnd.fsc.weblaunch", "application/vnd.fujitsu.oasys", "application/vnd.fujitsu.oasys2", "application/vnd.fujitsu.oasys3", "application/vnd.fujitsu.oasysgp", "application/vnd.fujitsu.oasysprs", "application/vnd.fujixerox.ART4", "application/vnd.fujixerox.ART-EX", "application/vnd.fujixerox.ddd", "application/vnd.fujixerox.docuworks", "application/vnd.fujixerox.docuworks.binder", "application/vnd.fujixerox.docuworks.container", "application/vnd.fujixerox.HBPL", "application/vnd.fut-misnet", "application/vnd.fuzzysheet", "application/vnd.genomatix.tuxedo", "application/vnd.geo+json", "application/vnd.geocube+xml", "application/vnd.geogebra.file", "application/vnd.geogebra.tool", "application/vnd.geometry-explorer", "application/vnd.geonext", "application/vnd.geoplan", "application/vnd.geospace", "application/vnd.gerber", "application/vnd.globalplatform.card-content-mgt", "application/vnd.globalplatform.card-content-mgt-response", "application/vnd.gmx", "application/vnd.google-earth.kml+xml", "application/vnd.google-earth.kmz", "application/vnd.gov.sk.e-form+xml", "application/vnd.gov.sk.e-form+zip", "application/vnd.gov.sk.xmldatacontainer+xml", "application/vnd.grafeq", "application/vnd.gridmp", "application/vnd.groove-account", "application/vnd.groove-help", "application/vnd.groove-identity-message", "application/vnd.groove-injector", "application/vnd.groove-tool-message", "application/vnd.groove-tool-template", "application/vnd.groove-vcard", "application/vnd.hal+json", "application/vnd.hal+xml", "application/vnd.HandHeld-Entertainment+xml", "application/vnd.hbci", "application/vnd.hcl-bireports", "application/vnd.heroku+json", "application/vnd.hhe.lesson-player", "application/vnd.hp-HPGL", "application/vnd.hp-hpid", "application/vnd.hp-hps", "application/vnd.hp-jlyt", "application/vnd.hp-PCL", "application/vnd.hp-PCLXL", "application/vnd.httphone", "application/vnd.hydrostatix.sof-data", "application/vnd.hzn-3d-crossword", "application/vnd.ibm.afplinedata", "application/vnd.ibm.electronic-media", "application/vnd.ibm.MiniPay", "application/vnd.ibm.modcap", "application/vnd.ibm.rights-management", "application/vnd.ibm.secure-container", "application/vnd.iccprofile", "application/vnd.ieee.1905", "application/vnd.igloader", "application/vnd.immervision-ivp", "application/vnd.immervision-ivu", "application/vnd.ims.imsccv1p1", "application/vnd.ims.imsccv1p2", "application/vnd.ims.imsccv1p3", "application/vnd.ims.lis.v2.result+json", "application/vnd.ims.lti.v2.toolconsumerprofile+json", "application/vnd.ims.lti.v2.toolproxy.id+json", "application/vnd.ims.lti.v2.toolproxy+json", "application/vnd.ims.lti.v2.toolsettings+json", "application/vnd.ims.lti.v2.toolsettings.simple+json", "application/vnd.informedcontrol.rms+xml", "application/vnd.infotech.project", "application/vnd.infotech.project+xml", "application/vnd.informix-visionary", "application/vnd.innopath.wamp.notification", "application/vnd.insors.igm", "application/vnd.intercon.formnet", "application/vnd.intergeo", "application/vnd.intertrust.digibox", "application/vnd.intertrust.nncp", "application/vnd.intu.qbo", "application/vnd.intu.qfx", "application/vnd.iptc.g2.catalogitem+xml", "application/vnd.iptc.g2.conceptitem+xml", "application/vnd.iptc.g2.knowledgeitem+xml", "application/vnd.iptc.g2.newsitem+xml", "application/vnd.iptc.g2.newsmessage+xml", "application/vnd.iptc.g2.packageitem+xml", "application/vnd.iptc.g2.planningitem+xml", "application/vnd.ipunplugged.rcprofile", "application/vnd.irepository.package+xml", "application/vnd.is-xpr", "application/vnd.isac.fcs", "application/vnd.jam", "application/vnd.japannet-directory-service", "application/vnd.japannet-jpnstore-wakeup", "application/vnd.japannet-payment-wakeup", "application/vnd.japannet-registration", "application/vnd.japannet-registration-wakeup", "application/vnd.japannet-setstore-wakeup", "application/vnd.japannet-verification", "application/vnd.japannet-verification-wakeup", "application/vnd.jcp.javame.midlet-rms", "application/vnd.jisp", "application/vnd.joost.joda-archive", "application/vnd.jsk.isdn-ngn", "application/vnd.kahootz", "application/vnd.kde.karbon", "application/vnd.kde.kchart", "application/vnd.kde.kformula", "application/vnd.kde.kivio", "application/vnd.kde.kontour", "application/vnd.kde.kpresenter", "application/vnd.kde.kspread", "application/vnd.kde.kword", "application/vnd.kenameaapp", "application/vnd.kidspiration", "application/vnd.Kinar", "application/vnd.koan", "application/vnd.kodak-descriptor", "application/vnd.las.las+xml", "application/vnd.liberty-request+xml", "application/vnd.llamagraphics.life-balance.desktop", "application/vnd.llamagraphics.life-balance.exchange+xml", "application/vnd.lotus-1-2-3", "application/vnd.lotus-approach", "application/vnd.lotus-freelance", "application/vnd.lotus-notes", "application/vnd.lotus-organizer", "application/vnd.lotus-screencam", "application/vnd.lotus-wordpro", "application/vnd.macports.portpkg", "application/vnd.marlin.drm.actiontoken+xml", "application/vnd.marlin.drm.conftoken+xml", "application/vnd.marlin.drm.license+xml", "application/vnd.marlin.drm.mdcf", "application/vnd.mason+json", "application/vnd.maxmind.maxmind-db", "application/vnd.mcd", "application/vnd.medcalcdata", "application/vnd.mediastation.cdkey", "application/vnd.meridian-slingshot", "application/vnd.MFER", "application/vnd.mfmp", "application/vnd.micro+json", "application/vnd.micrografx.flo", "application/vnd.micrografx-igx", "application/vnd.microsoft.portable-executable", "application/vnd.miele+json", "application/vnd-mif", "application/vnd.minisoft-hp3000-save", "application/vnd.mitsubishi.misty-guard.trustweb", "application/vnd.Mobius.DAF", "application/vnd.Mobius.DIS", "application/vnd.Mobius.MBK", "application/vnd.Mobius.MQY", "application/vnd.Mobius.MSL", "application/vnd.Mobius.PLC", "application/vnd.Mobius.TXF", "application/vnd.mophun.application", "application/vnd.mophun.certificate", "application/vnd.motorola.flexsuite", "application/vnd.motorola.flexsuite.adsi", "application/vnd.motorola.flexsuite.fis", "application/vnd.motorola.flexsuite.gotap", "application/vnd.motorola.flexsuite.kmr", "application/vnd.motorola.flexsuite.ttc", "application/vnd.motorola.flexsuite.wem", "application/vnd.motorola.iprm", "application/vnd.mozilla.xul+xml", "application/vnd.ms-artgalry", "application/vnd.ms-asf", "application/vnd.ms-cab-compressed", "application/vnd.ms-3mfdocument", "application/vnd.ms-excel", "application/vnd.ms-excel.addin.macroEnabled.12", "application/vnd.ms-excel.sheet.binary.macroEnabled.12", "application/vnd.ms-excel.sheet.macroEnabled.12", "application/vnd.ms-excel.template.macroEnabled.12", "application/vnd.ms-fontobject", "application/vnd.ms-htmlhelp", "application/vnd.ms-ims", "application/vnd.ms-lrm", "application/vnd.ms-office.activeX+xml", "application/vnd.ms-officetheme", "application/vnd.ms-playready.initiator+xml", "application/vnd.ms-powerpoint", "application/vnd.ms-powerpoint.addin.macroEnabled.12", "application/vnd.ms-powerpoint.presentation.macroEnabled.12", "application/vnd.ms-powerpoint.slide.macroEnabled.12", "application/vnd.ms-powerpoint.slideshow.macroEnabled.12", "application/vnd.ms-powerpoint.template.macroEnabled.12", "application/vnd.ms-project", "application/vnd.ms-tnef", "application/vnd.ms-windows.printerpairing", "application/vnd.ms-wmdrm.lic-chlg-req", "application/vnd.ms-wmdrm.lic-resp", "application/vnd.ms-wmdrm.meter-chlg-req", "application/vnd.ms-wmdrm.meter-resp", "application/vnd.ms-word.document.macroEnabled.12", "application/vnd.ms-word.template.macroEnabled.12", "application/vnd.ms-works", "application/vnd.ms-wpl", "application/vnd.ms-xpsdocument", "application/vnd.msa-disk-image", "application/vnd.mseq", "application/vnd.msign", "application/vnd.multiad.creator", "application/vnd.multiad.creator.cif", "application/vnd.musician", "application/vnd.music-niff", "application/vnd.muvee.style", "application/vnd.mynfc", "application/vnd.ncd.control", "application/vnd.ncd.reference", "application/vnd.nervana", "application/vnd.netfpx", "application/vnd.neurolanguage.nlu", "application/vnd.nintendo.snes.rom", "application/vnd.nintendo.nitro.rom", "application/vnd.nitf", "application/vnd.noblenet-directory", "application/vnd.noblenet-sealer", "application/vnd.noblenet-web", "application/vnd.nokia.catalogs", "application/vnd.nokia.conml+wbxml", "application/vnd.nokia.conml+xml", "application/vnd.nokia.iptv.config+xml", "application/vnd.nokia.iSDS-radio-presets", "application/vnd.nokia.landmark+wbxml", "application/vnd.nokia.landmark+xml", "application/vnd.nokia.landmarkcollection+xml", "application/vnd.nokia.ncd", "application/vnd.nokia.n-gage.ac+xml", "application/vnd.nokia.n-gage.data", "application/vnd.nokia.n-gage.symbian.install", "application/vnd.nokia.pcd+wbxml", "application/vnd.nokia.pcd+xml", "application/vnd.nokia.radio-preset", "application/vnd.nokia.radio-presets", "application/vnd.novadigm.EDM", "application/vnd.novadigm.EDX", "application/vnd.novadigm.EXT", "application/vnd.ntt-local.content-share", "application/vnd.ntt-local.file-transfer", "application/vnd.ntt-local.ogw_remote-access", "application/vnd.ntt-local.sip-ta_remote", "application/vnd.ntt-local.sip-ta_tcp_stream", "application/vnd.oasis.opendocument.chart", "application/vnd.oasis.opendocument.chart-template", "application/vnd.oasis.opendocument.database", "application/vnd.oasis.opendocument.formula", "application/vnd.oasis.opendocument.formula-template", "application/vnd.oasis.opendocument.graphics", "application/vnd.oasis.opendocument.graphics-template", "application/vnd.oasis.opendocument.image", "application/vnd.oasis.opendocument.image-template", "application/vnd.oasis.opendocument.presentation", "application/vnd.oasis.opendocument.presentation-template", "application/vnd.oasis.opendocument.spreadsheet", "application/vnd.oasis.opendocument.spreadsheet-template", "application/vnd.oasis.opendocument.text", "application/vnd.oasis.opendocument.text-master", "application/vnd.oasis.opendocument.text-template", "application/vnd.oasis.opendocument.text-web", "application/vnd.obn", "application/vnd.oftn.l10n+json", "application/vnd.oipf.contentaccessdownload+xml", "application/vnd.oipf.contentaccessstreaming+xml", "application/vnd.oipf.cspg-hexbinary", "application/vnd.oipf.dae.svg+xml", "application/vnd.oipf.dae.xhtml+xml", "application/vnd.oipf.mippvcontrolmessage+xml", "application/vnd.oipf.pae.gem", "application/vnd.oipf.spdiscovery+xml", "application/vnd.oipf.spdlist+xml", "application/vnd.oipf.ueprofile+xml", "application/vnd.oipf.userprofile+xml", "application/vnd.olpc-sugar", "application/vnd.oma.bcast.associated-procedure-parameter+xml", "application/vnd.oma.bcast.drm-trigger+xml", "application/vnd.oma.bcast.imd+xml", "application/vnd.oma.bcast.ltkm", "application/vnd.oma.bcast.notification+xml", "application/vnd.oma.bcast.provisioningtrigger", "application/vnd.oma.bcast.sgboot", "application/vnd.oma.bcast.sgdd+xml", "application/vnd.oma.bcast.sgdu", "application/vnd.oma.bcast.simple-symbol-container", "application/vnd.oma.bcast.smartcard-trigger+xml", "application/vnd.oma.bcast.sprov+xml", "application/vnd.oma.bcast.stkm", "application/vnd.oma.cab-address-book+xml", "application/vnd.oma.cab-feature-handler+xml", "application/vnd.oma.cab-pcc+xml", "application/vnd.oma.cab-subs-invite+xml", "application/vnd.oma.cab-user-prefs+xml", "application/vnd.oma.dcd", "application/vnd.oma.dcdc", "application/vnd.oma.dd2+xml", "application/vnd.oma.drm.risd+xml", "application/vnd.oma.group-usage-list+xml", "application/vnd.oma.pal+xml", "application/vnd.oma.poc.detailed-progress-report+xml", "application/vnd.oma.poc.final-report+xml", "application/vnd.oma.poc.groups+xml", "application/vnd.oma.poc.invocation-descriptor+xml", "application/vnd.oma.poc.optimized-progress-report+xml", "application/vnd.oma.push", "application/vnd.oma.scidm.messages+xml", "application/vnd.oma.xcap-directory+xml", "application/vnd.omads-email+xml", "application/vnd.omads-file+xml", "application/vnd.omads-folder+xml", "application/vnd.omaloc-supl-init", "application/vnd.oma-scws-config", "application/vnd.oma-scws-http-request", "application/vnd.oma-scws-http-response", "application/vnd.openeye.oeb", "application/vnd.openxmlformats-officedocument.custom-properties+xml", "application/vnd.openxmlformats-officedocument.customXmlProperties+xml", "application/vnd.openxmlformats-officedocument.drawing+xml", "application/vnd.openxmlformats-officedocument.drawingml.chart+xml", "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml", "application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml", "application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml", "application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml", "application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml", "application/vnd.openxmlformats-officedocument.extended-properties+xml", "application/vnd.openxmlformats-officedocument.presentationml.commentAuthors+xml", "application/vnd.openxmlformats-officedocument.presentationml.comments+xml", "application/vnd.openxmlformats-officedocument.presentationml.handoutMaster+xml", "application/vnd.openxmlformats-officedocument.presentationml.notesMaster+xml", "application/vnd.openxmlformats-officedocument.presentationml.notesSlide+xml", "application/vnd.openxmlformats-officedocument.presentationml.presentation", "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml", "application/vnd.openxmlformats-officedocument.presentationml.presProps+xml", "application/vnd.openxmlformats-officedocument.presentationml.slide", "application/vnd.openxmlformats-officedocument.presentationml.slide+xml", "application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml", "application/vnd.openxmlformats-officedocument.presentationml.slideMaster+xml", "application/vnd.openxmlformats-officedocument.presentationml.slideshow", "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml", "application/vnd.openxmlformats-officedocument.presentationml.slideUpdateInfo+xml", "application/vnd.openxmlformats-officedocument.presentationml.tableStyles+xml", "application/vnd.openxmlformats-officedocument.presentationml.tags+xml", "application/vnd.openxmlformats-officedocument.presentationml-template", "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml", "application/vnd.openxmlformats-officedocument.presentationml.viewProps+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml-template", "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml", "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml", "application/vnd.openxmlformats-officedocument.theme+xml", "application/vnd.openxmlformats-officedocument.themeOverride+xml", "application/vnd.openxmlformats-officedocument.vmlDrawing", "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml", "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml", "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml", "application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml", "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml", "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml", "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml", "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml", "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml", "application/vnd.openxmlformats-officedocument.wordprocessingml-template", "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml", "application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml", "application/vnd.openxmlformats-package.core-properties+xml", "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml", "application/vnd.openxmlformats-package.relationships+xml", "application/vnd.oracle.resource+json", "application/vnd.orange.indata", "application/vnd.osa.netdeploy", "application/vnd.osgeo.mapguide.package", "application/vnd.osgi.bundle", "application/vnd.osgi.dp", "application/vnd.osgi.subsystem", "application/vnd.otps.ct-kip+xml", "application/vnd.palm", "application/vnd.panoply", "application/vnd.paos+xml", "application/vnd.pawaafile", "application/vnd.pcos", "application/vnd.pg.format", "application/vnd.pg.osasli", "application/vnd.piaccess.application-licence", "application/vnd.picsel", "application/vnd.pmi.widget", "application/vnd.poc.group-advertisement+xml", "application/vnd.pocketlearn", "application/vnd.powerbuilder6", "application/vnd.powerbuilder6-s", "application/vnd.powerbuilder7", "application/vnd.powerbuilder75", "application/vnd.powerbuilder75-s", "application/vnd.powerbuilder7-s", "application/vnd.preminet", "application/vnd.previewsystems.box", "application/vnd.proteus.magazine", "application/vnd.publishare-delta-tree", "application/vnd.pvi.ptid1", "application/vwg-multiplexed", "application/vnd.pwg-xhtml-print+xml", "application/vnd.qualcomm.brew-app-res", "application/vnd.Quark.QuarkXPress", "application/vnd.quobject-quoxdocument", "application/vnd.radisys.moml+xml", "application/vnd.radisys.msml-audit-conf+xml", "application/vnd.radisys.msml-audit-conn+xml", "application/vnd.radisys.msml-audit-dialog+xml", "application/vnd.radisys.msml-audit-stream+xml", "application/vnd.radisys.msml-audit+xml", "application/vnd.radisys.msml-conf+xml", "application/vnd.radisys.msml-dialog-base+xml", "application/vnd.radisys.msml-dialog-fax-detect+xml", "application/vnd.radisys.msml-dialog-fax-sendrecv+xml", "application/vnd.radisys.msml-dialog-group+xml", "application/vnd.radisys.msml-dialog-speech+xml", "application/vnd.radisys.msml-dialog-transform+xml", "application/vnd.radisys.msml-dialog+xml", "application/vnd.radisys.msml+xml", "application/vnd.rainstor.data", "application/vnd.rapid", "application/vnd.realvnc.bed", "application/vnd.recordare.musicxml", "application/vnd.recordare.musicxml+xml", "application/vnd.renlearn.rlprint", "application/vnd.rig.cryptonote", "application/vnd.route66.link66+xml", "application/vnd.rs-274x", "application/vnd.ruckus.download", "application/vnd.s3sms", "application/vnd.sailingtracker.track", "application/vnd.sbm.cid", "application/vnd.sbm.mid2", "application/vnd.scribus", "application/vnd.sealed.3df", "application/vnd.sealed.csf", "application/vnd.sealed-doc", "application/vnd.sealed-eml", "application/vnd.sealed-mht", "application/vnd.sealed.net", "application/vnd.sealed-ppt", "application/vnd.sealed-tiff", "application/vnd.sealed-xls", "application/vnd.sealedmedia.softseal-html", "application/vnd.sealedmedia.softseal-pdf", "application/vnd.seemail", "application/vnd-sema", "application/vnd.semd", "application/vnd.semf", "application/vnd.shana.informed.formdata", "application/vnd.shana.informed.formtemplate", "application/vnd.shana.informed.interchange", "application/vnd.shana.informed.package", "application/vnd.SimTech-MindMapper", "application/vnd.siren+json", "application/vnd.smaf", "application/vnd.smart.notebook", "application/vnd.smart.teacher", "application/vnd.software602.filler.form+xml", "application/vnd.software602.filler.form-xml-zip", "application/vnd.solent.sdkm+xml", "application/vnd.spotfire.dxp", "application/vnd.spotfire.sfs", "application/vnd.sss-cod", "application/vnd.sss-dtf", "application/vnd.sss-ntf", "application/vnd.stepmania.package", "application/vnd.stepmania.stepchart", "application/vnd.street-stream", "application/vnd.sun.wadl+xml", "application/vnd.sus-calendar", "application/vnd.svd", "application/vnd.swiftview-ics", "application/vnd.syncml.dm.notification", "application/vnd.syncml.dmddf+xml", "application/vnd.syncml.dmtnds+wbxml", "application/vnd.syncml.dmtnds+xml", "application/vnd.syncml.dmddf+wbxml", "application/vnd.syncml.dm+wbxml", "application/vnd.syncml.dm+xml", "application/vnd.syncml.ds.notification", "application/vnd.syncml+xml", "application/vnd.tao.intent-module-archive", "application/vnd.tcpdump.pcap", "application/vnd.tmd.mediaflex.api+xml", "application/vnd.tmobile-livetv", "application/vnd.trid.tpt", "application/vnd.triscape.mxs", "application/vnd.trueapp", "application/vnd.truedoc", "application/vnd.ubisoft.webplayer", "application/vnd.ufdl", "application/vnd.uiq.theme", "application/vnd.umajin", "application/vnd.unity", "application/vnd.uoml+xml", "application/vnd.uplanet.alert", "application/vnd.uplanet.alert-wbxml", "application/vnd.uplanet.bearer-choice", "application/vnd.uplanet.bearer-choice-wbxml", "application/vnd.uplanet.cacheop", "application/vnd.uplanet.cacheop-wbxml", "application/vnd.uplanet.channel", "application/vnd.uplanet.channel-wbxml", "application/vnd.uplanet.list", "application/vnd.uplanet.listcmd", "application/vnd.uplanet.listcmd-wbxml", "application/vnd.uplanet.list-wbxml", "application/vnd.uplanet.signal", "application/vnd.valve.source.material", "application/vnd.vcx", "application/vnd.vd-study", "application/vnd.vectorworks", "application/vnd.verimatrix.vcas", "application/vnd.vidsoft.vidconference", "application/vnd.visio", "application/vnd.visionary", "application/vnd.vividence.scriptfile", "application/vnd.vsf", "application/vnd.wap.sic", "application/vnd.wap-slc", "application/vnd.wap-wbxml", "application/vnd-wap-wmlc", "application/vnd.wap.wmlscriptc", "application/vnd.webturbo", "application/vnd.wfa.p2p", "application/vnd.wfa.wsc", "application/vnd.windows.devicepairing", "application/vnd.wmc", "application/vnd.wmf.bootstrap", "application/vnd.wolfram.mathematica", "application/vnd.wolfram.mathematica.package", "application/vnd.wolfram.player", "application/vnd.wordperfect", "application/vnd.wqd", "application/vnd.wrq-hp3000-labelled", "application/vnd.wt.stf", "application/vnd.wv.csp+xml", "application/vnd.wv.csp+wbxml", "application/vnd.wv.ssp+xml", "application/vnd.xacml+json", "application/vnd.xara", "application/vnd.xfdl", "application/vnd.xfdl.webform", "application/vnd.xmi+xml", "application/vnd.xmpie.cpkg", "application/vnd.xmpie.dpkg", "application/vnd.xmpie.plan", "application/vnd.xmpie.ppkg", "application/vnd.xmpie.xlim", "application/vnd.yamaha.hv-dic", "application/vnd.yamaha.hv-script", "application/vnd.yamaha.hv-voice", "application/vnd.yamaha.openscoreformat.osfpvg+xml", "application/vnd.yamaha.openscoreformat", "application/vnd.yamaha.remote-setup", "application/vnd.yamaha.smaf-audio", "application/vnd.yamaha.smaf-phrase", "application/vnd.yamaha.through-ngn", "application/vnd.yamaha.tunnel-udpencap", "application/vnd.yaoweme", "application/vnd.yellowriver-custom-menu", "application/vnd.zul", "application/vnd.zzazz.deck+xml", "application/voicexml+xml", "application/vq-rtcpxr", "application/watcherinfo+xml", "application/whoispp-query", "application/whoispp-response", "application/widget", "application/wita", "application/wordperfect5.1", "application/wsdl+xml", "application/wspolicy+xml", "application/x-www-form-urlencoded", "application/x400-bp", "application/xacml+xml", "application/xcap-att+xml", "application/xcap-caps+xml", "application/xcap-diff+xml", "application/xcap-el+xml", "application/xcap-error+xml", "application/xcap-ns+xml", "application/xcon-conference-info-diff+xml", "application/xcon-conference-info+xml", "application/xenc+xml", "application/xhtml+xml", "application/xml", "application/xml-dtd", "application/xml-external-parsed-entity", "application/xml-patch+xml", "application/xmpp+xml", "application/xop+xml", "application/xslt+xml", "application/xv+xml", "application/yang", "application/yin+xml", "application/zip", "application/zlib", "audio/1d-interleaved-parityfec", "audio/32kadpcm", "audio/3gpp", "audio/3gpp2", "audio/ac3", "audio/AMR", "audio/AMR-WB", "audio/amr-wb+", "audio/aptx", "audio/asc", "audio/ATRAC-ADVANCED-LOSSLESS", "audio/ATRAC-X", "audio/ATRAC3", "audio/basic", "audio/BV16", "audio/BV32", "audio/clearmode", "audio/CN", "audio/DAT12", "audio/dls", "audio/dsr-es201108", "audio/dsr-es202050", "audio/dsr-es202211", "audio/dsr-es202212", "audio/DV", "audio/DVI4", "audio/eac3", "audio/encaprtp", "audio/EVRC", "audio/EVRC-QCP", "audio/EVRC0", "audio/EVRC1", "audio/EVRCB", "audio/EVRCB0", "audio/EVRCB1", "audio/EVRCNW", "audio/EVRCNW0", "audio/EVRCNW1", "audio/EVRCWB", "audio/EVRCWB0", "audio/EVRCWB1", "audio/example", "audio/fwdred", "audio/G719", "audio/G721", "audio/G722", "audio/G723", "audio/G726-16", "audio/G726-24", "audio/G726-32", "audio/G726-40", "audio/G728", "audio/G729", "audio/G7291", "audio/G729D", "audio/G729E", "audio/GSM", "audio/GSM-EFR", "audio/GSM-HR-08", "audio/iLBC", "audio/ip-mr_v2.5", "audio/L8", "audio/L16", "audio/L20", "audio/L24", "audio/LPC", "audio/mobile-xmf", "audio/MPA", "audio/mp4", "audio/MP4A-LATM", "audio/mpa-robust", "audio/mpeg", "audio/mpeg4-generic", "audio/ogg", "audio/opus", "audio/parityfec", "audio/PCMA", "audio/PCMA-WB", "audio/PCMU", "audio/PCMU-WB", "audio/prs.sid", "audio/QCELP", "audio/raptorfec", "audio/RED", "audio/rtp-enc-aescm128", "audio/rtploopback", "audio/rtp-midi", "audio/rtx", "audio/SMV", "audio/SMV0", "audio/SMV-QCP", "audio/sp-midi", "audio/speex", "audio/t140c", "audio/t38", "audio/telephone-event", "audio/tone", "audio/UEMCLIP", "audio/ulpfec", "audio/VDVI", "audio/VMR-WB", "audio/vnd.3gpp.iufp", "audio/vnd.4SB", "audio/vnd.audiokoz", "audio/vnd.CELP", "audio/vnd.cisco.nse", "audio/vnd.cmles.radio-events", "audio/vnd.cns.anp1", "audio/vnd.cns.inf1", "audio/vnd.dece.audio", "audio/vnd.digital-winds", "audio/vnd.dlna.adts", "audio/vnd.dolby.heaac.1", "audio/vnd.dolby.heaac.2", "audio/vnd.dolby.mlp", "audio/vnd.dolby.mps", "audio/vnd.dolby.pl2", "audio/vnd.dolby.pl2x", "audio/vnd.dolby.pl2z", "audio/vnd.dolby.pulse.1", "audio/vnd.dra", "audio/vnd.dts", "audio/vnd.dts.hd", "audio/vnd.dvb.file", "audio/vnd.everad.plj", "audio/vnd.hns.audio", "audio/vnd.lucent.voice", "audio/vnd.ms-playready.media.pya", "audio/vnd.nokia.mobile-xmf", "audio/vnd.nortel.vbk", "audio/vnd.nuera.ecelp4800", "audio/vnd.nuera.ecelp7470", "audio/vnd.nuera.ecelp9600", "audio/vnd.octel.sbc", "audio/vnd.qcelp", "audio/vnd.rhetorex.32kadpcm", "audio/vnd.rip", "audio/vnd.sealedmedia.softseal-mpeg", "audio/vnd.vmx.cvsd", "audio/vorbis", "audio/vorbis-config", "image/cgm", "image/example", "image/fits", "image/g3fax", "image/gif", "image/ief", "image/jp2", "image/jpeg", "image/jpm", "image/jpx", "image/ktx", "image/naplps", "image/png", "image/prs.btif", "image/prs.pti", "image/pwg-raster", "image/svg+xml", "image/t38", "image/tiff", "image/tiff-fx", "image/vnd.adobe.photoshop", "image/vnd.airzip.accelerator.azv", "image/vnd.cns.inf2", "image/vnd.dece.graphic", "image/vnd-djvu", "image/vnd.dwg", "image/vnd.dxf", "image/vnd.dvb.subtitle", "image/vnd.fastbidsheet", "image/vnd.fpx", "image/vnd.fst", "image/vnd.fujixerox.edmics-mmr", "image/vnd.fujixerox.edmics-rlc", "image/vnd.globalgraphics.pgb", "image/vnd.microsoft.icon", "image/vnd.mix", "image/vnd.ms-modi", "image/vnd.net-fpx", "image/vnd.radiance", "image/vnd.sealed-png", "image/vnd.sealedmedia.softseal-gif", "image/vnd.sealedmedia.softseal-jpg", "image/vnd-svf", "image/vnd.tencent.tap", "image/vnd.valve.source.texture", "image/vnd-wap-wbmp", "image/vnd.xiff", "image/vnd.zbrush.pcx", "message/CPIM", "message/delivery-status", "message/disposition-notification", "message/example", "message/external-body", "message/feedback-report", "message/global", "message/global-delivery-status", "message/global-disposition-notification", "message/global-headers", "message/http", "message/imdn+xml", "message/news", "message/partial", "message/rfc822", "message/s-http", "message/sip", "message/sipfrag", "message/tracking-status", "message/vnd.si.simp", "message/vnd.wfa.wsc", "model/example", "model/iges", "model/mesh", "model/vnd.collada+xml", "model/vnd-dwf", "model/vnd.flatland.3dml", "model/vnd.gdl", "model/vnd.gs-gdl", "model/vnd.gtw", "model/vnd.moml+xml", "model/vnd.mts", "model/vnd.opengex", "model/vnd.parasolid.transmit-binary", "model/vnd.parasolid.transmit-text", "model/vnd.valve.source.compiled-map", "model/vnd.vtu", "model/vrml", "model/x3d-vrml", "model/x3d+fastinfoset", "model/x3d+xml", "multipart/alternative", "multipart/appledouble", "multipart/byteranges", "multipart/digest", "multipart/encrypted", "multipart/example", "multipart/form-data", "multipart/header-set", "multipart/mixed", "multipart/parallel", "multipart/related", "multipart/report", "multipart/signed", "multipart/voice-message", "multipart/x-mixed-replace", "text/1d-interleaved-parityfec", "text/cache-manifest", "text/calendar", "text/css", "text/csv", "text/csv-schema", "text/directory", "text/dns", "text/ecmascript", "text/encaprtp", "text/enriched", "text/example", "text/fwdred", "text/grammar-ref-list", "text/html", "text/javascript", "text/jcr-cnd", "text/markdown", "text/mizar", "text/n3", "text/parameters", "text/parityfec", "text/plain", "text/provenance-notation", "text/prs.fallenstein.rst", "text/prs.lines.tag", "text/raptorfec", "text/RED", "text/rfc822-headers", "text/richtext", "text/rtf", "text/rtp-enc-aescm128", "text/rtploopback", "text/rtx", "text/SGML", "text/t140", "text/tab-separated-values", "text/troff", "text/turtle", "text/ulpfec", "text/uri-list", "text/vcard", "text/vnd-a", "text/vnd.abc", "text/vnd-curl", "text/vnd.debian.copyright", "text/vnd.DMClientScript", "text/vnd.dvb.subtitle", "text/vnd.esmertec.theme-descriptor", "text/vnd.fly", "text/vnd.fmi.flexstor", "text/vnd.graphviz", "text/vnd.in3d.3dml", "text/vnd.in3d.spot", "text/vnd.IPTC.NewsML", "text/vnd.IPTC.NITF", "text/vnd.latex-z", "text/vnd.motorola.reflex", "text/vnd.ms-mediapackage", "text/vnd.net2phone.commcenter.command", "text/vnd.radisys.msml-basic-layout", "text/vnd.si.uricatalogue", "text/vnd.sun.j2me.app-descriptor", "text/vnd.trolltech.linguist", "text/vnd.wap.si", "text/vnd.wap.sl", "text/vnd.wap-wml", "text/vnd.wap.wmlscript", "text/xml", "text/xml-external-parsed-entity", "video/1d-interleaved-parityfec", "video/3gpp", "video/3gpp2", "video/3gpp-tt", "video/BMPEG", "video/BT656", "video/CelB", "video/DV", "video/encaprtp", "video/example", "video/H261", "video/H263", "video/H263-1998", "video/H263-2000", "video/H264", "video/H264-RCDO", "video/H264-SVC", "video/iso.segment", "video/JPEG", "video/jpeg2000", "video/mj2", "video/MP1S", "video/MP2P", "video/MP2T", "video/mp4", "video/MP4V-ES", "video/MPV", "video/mpeg", "video/mpeg4-generic", "video/nv", "video/ogg", "video/parityfec", "video/pointer", "video/quicktime", "video/raptorfec", "video/raw", "video/rtp-enc-aescm128", "video/rtploopback", "video/rtx", "video/SMPTE292M", "video/ulpfec", "video/vc1", "video/vnd.CCTV", "video/vnd.dece.hd", "video/vnd.dece.mobile", "video/vnd.dece-mp4", "video/vnd.dece.pd", "video/vnd.dece.sd", "video/vnd.dece.video", "video/vnd.directv-mpeg", "video/vnd.directv.mpeg-tts", "video/vnd.dlna.mpeg-tts", "video/vnd.dvb.file", "video/vnd.fvt", "video/vnd.hns.video", "video/vnd.iptvforum.1dparityfec-1010", "video/vnd.iptvforum.1dparityfec-2005", "video/vnd.iptvforum.2dparityfec-1010", "video/vnd.iptvforum.2dparityfec-2005", "video/vnd.iptvforum.ttsavc", "video/vnd.iptvforum.ttsmpeg2", "video/vnd.motorola.video", "video/vnd.motorola.videop", "video/vnd-mpegurl", "video/vnd.ms-playready.media.pyv", "video/vnd.nokia.interleaved-multimedia", "video/vnd.nokia.videovoip", "video/vnd.objectvideo", "video/vnd.radgamettools.bink", "video/vnd.radgamettools.smacker", "video/vnd.sealed.mpeg1", "video/vnd.sealed.mpeg4", "video/vnd.sealed-swf", "video/vnd.sealedmedia.softseal-mov", "video/vnd.uvvu-mp4", "video/vnd-vivo"] \ No newline at end of file diff --git a/ramlfications/utils.py b/ramlfications/utils.py index 0482010..47b9786 100644 --- a/ramlfications/utils.py +++ b/ramlfications/utils.py @@ -7,15 +7,25 @@ import json import logging import os +import sys import xmltodict -try: # NOCOV - import requests - SECURE_DOWNLOAD = True -except ImportError: +PYVER = sys.version_info[:3] + +if PYVER == (2, 7, 9) or PYVER == (3, 4, 3): import six.moves.urllib.request as urllib - SECURE_DOWNLOAD = False + URLLIB = True + SECURE_DOWNLOAD = True +else: + try: # NOCOV + import requests + URLLIB = False + SECURE_DOWNLOAD = True + except ImportError: + import six.moves.urllib.request as urllib + URLLIB = True + SECURE_DOWNLOAD = False from .errors import MediaTypeError @@ -44,7 +54,7 @@ def load_schema(data): return data -def secure_download_xml(): +def requests_download_xml(): try: response = requests.get(IANA_URL) return response.text @@ -53,7 +63,7 @@ def secure_download_xml(): raise MediaTypeError(msg) -def insecure_download_xml(): +def urllib_download_xml(): try: response = urllib.urlopen(IANA_URL) except urllib.URLError as e: @@ -124,14 +134,16 @@ def setup_logger(): log = setup_logger() log.debug("Getting XML data from IANA") - if SECURE_DOWNLOAD: - raw_data = secure_download_xml() + if SECURE_DOWNLOAD and not URLLIB: + raw_data = requests_download_xml() + elif SECURE_DOWNLOAD and URLLIB: + raw_data = urllib_download_xml() else: msg = ("Downloading over HTTPS but can not verify the host's " "certificate. To avoid this in the future, `pip install" - " requests`.") + " \"requests[security]\"`.") log.warn(msg) - raw_data = insecure_download_xml() + raw_data = urllib_download_xml() log.debug("Data received; parsing...") xml_data = xml_to_dict(raw_data) diff --git a/setup.py b/setup.py index 5a32f7e..507a132 100644 --- a/setup.py +++ b/setup.py @@ -107,6 +107,9 @@ def run_tests(self): ], package_data={"": ["data/supported_mime_types.json"]}, install_requires=install_requires(), + extras_require={ + "all": ["requests[security]"] + }, tests_require=[ "pytest", "mock" ], diff --git a/tests/integration/test_github.py b/tests/integration/test_github.py index 86d7a7c..cc65792 100644 --- a/tests/integration/test_github.py +++ b/tests/integration/test_github.py @@ -18,21 +18,23 @@ @pytest.fixture(scope="session") def github_raml(): - raml_file = os.path.join(EXAMPLES + "github.raml") + raml_file = os.path.join(EXAMPLES, "github.raml") return load_file(raml_file) def test_parse_raml(github_raml): - config = setup_config(EXAMPLES + "github-config.ini") + config_file = os.path.join(EXAMPLES, "github-config.ini") + config = setup_config(config_file) root = pw.parse_raml(github_raml, config) assert isinstance(root, RootNode) @pytest.fixture(scope="session") def root(): - raml_file = os.path.join(EXAMPLES + "github.raml") + raml_file = os.path.join(EXAMPLES, "github.raml") loaded_raml_file = load_file(raml_file) - config = setup_config(EXAMPLES + "github-config.ini") + config_file = os.path.join(EXAMPLES, "github-config.ini") + config = setup_config(config_file) return pw.create_root(loaded_raml_file, config) @@ -80,8 +82,8 @@ def test_media_type(root): @pytest.fixture(scope="session") def sec_schemes(): - raml_file = os.path.join(EXAMPLES + "github.raml") - config = os.path.join(EXAMPLES + "github-config.ini") + raml_file = os.path.join(EXAMPLES, "github.raml") + config = os.path.join(EXAMPLES, "github-config.ini") api = parse(raml_file, config) return api.security_schemes @@ -148,8 +150,8 @@ def test_create_security_schemes(sec_schemes): @pytest.fixture(scope="session") def traits(): - raml_file = os.path.join(EXAMPLES + "github.raml") - config = os.path.join(EXAMPLES + "github-config.ini") + raml_file = os.path.join(EXAMPLES, "github.raml") + config = os.path.join(EXAMPLES, "github-config.ini") api = parse(raml_file, config) return api.traits @@ -251,8 +253,8 @@ def test_trait_filterable(traits): @pytest.fixture(scope="session") def resource_types(): - raml_file = os.path.join(EXAMPLES + "github.raml") - config = os.path.join(EXAMPLES + "github-config.ini") + raml_file = os.path.join(EXAMPLES, "github.raml") + config = os.path.join(EXAMPLES, "github-config.ini") api = parse(raml_file, config) return api.resource_types diff --git a/tests/integration/test_twitter.py b/tests/integration/test_twitter.py index aef253a..5984214 100644 --- a/tests/integration/test_twitter.py +++ b/tests/integration/test_twitter.py @@ -19,25 +19,28 @@ @pytest.fixture(scope="session") def raml(): - raml_file = os.path.join(EXAMPLES + "twitter.raml") + raml_file = os.path.join(EXAMPLES, "twitter.raml") return load_file(raml_file) def test_parse_raml(raml): - config = setup_config(EXAMPLES + "twitter-config.ini") + config_file = os.path.join(EXAMPLES, "twitter-config.ini") + config = setup_config(config_file) root = pw.parse_raml(raml, config) assert isinstance(root, RootNode) @pytest.fixture(scope="session") def root(raml): - config = setup_config(EXAMPLES + "twitter-config.ini") + config_file = os.path.join(EXAMPLES, "twitter-config.ini") + config = setup_config(config_file) return pw.create_root(raml, config) @pytest.fixture(scope="session") def api(raml): - config = setup_config(EXAMPLES + "twitter-config.ini") + config_file = os.path.join(EXAMPLES, "twitter-config.ini") + config = setup_config(config_file) return pw.parse_raml(raml, config) diff --git a/tests/test_main.py b/tests/test_main.py index f0e57d2..7709771 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -26,7 +26,7 @@ def test_validate(runner): """ Successfully validate RAML file via CLI. """ - raml_file = os.path.join(EXAMPLES + "complete-valid-example.raml") + raml_file = os.path.join(EXAMPLES, "complete-valid-example.raml") exp_code = 0 exp_msg = "Success! Valid RAML file: {0}\n".format(raml_file) result = runner.invoke(main.validate, [raml_file]) @@ -37,7 +37,7 @@ def test_validate_fail(runner): """ Raise error for invalid RAML file via CLI when validating. """ - raml_file = os.path.join(VALIDATE + "no-title.raml") + raml_file = os.path.join(VALIDATE, "no-title.raml") exp_code = 1 exp_msg = "Error validating file {0}: {1}\n".format( raml_file, 'RAML File does not define an API title.') @@ -49,8 +49,8 @@ def test_tree(runner): """ Successfully print out tree of RAML file via CLI. """ - raml_file = os.path.join(EXAMPLES + "complete-valid-example.raml") - config_file = os.path.join(EXAMPLES + "test-config.ini") + raml_file = os.path.join(EXAMPLES, "complete-valid-example.raml") + config_file = os.path.join(EXAMPLES, "test-config.ini") exp_code = 0 exp_msg = None result = runner.invoke(main.tree, [raml_file, "--color=light", @@ -62,7 +62,7 @@ def test_tree_invalid(runner): """ Raise error for invalid RAML file via CLI when printing the tree. """ - raml_file = os.path.join(VALIDATE + "no-title.raml") + raml_file = os.path.join(VALIDATE, "no-title.raml") exp_code = 1 exp_msg = '"{0}" is not a valid RAML file: {1}\n'.format( raml_file, 'RAML File does not define an API title.') @@ -70,15 +70,26 @@ def test_tree_invalid(runner): check_result(exp_code, exp_msg, result) -def test_update(runner, monkeypatch): +def test_update(runner, mocker): """ Successfully update supported mime types """ - monkeypatch.setattr( - "ramlfications.utils.save_data", lambda x, y: ["foo/bar"] - ) - exp_code = 0 - exp_msg = None + json_file = "ramlfications/data/supported_mime_types.json" + parent = os.path.dirname(os.path.pardir) + json_path = os.path.join(parent, json_file) - result = runner.invoke(main.update) - check_result(exp_code, exp_msg, result) + start_mtime = os.path.getmtime(json_path) + + from ramlfications import utils + mocker.patch("ramlfications.utils.update_mime_types") + mocker.patch("ramlfications.utils.save_data") + + runner.invoke(main.update) + + utils.update_mime_types.assert_called_once() + utils.save_data.assert_called_once() + + end_mtime = os.path.getmtime(json_path) + + # sanity check that data was not written to file + assert start_mtime == end_mtime diff --git a/tests/test_utils.py b/tests/test_utils.py index 204bc65..1be455e 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -1,5 +1,10 @@ # -*- coding: utf-8 -*- # Copyright (c) 2015 Spotify AB +import sys + +if sys.version_info[0] == 2: + from io import open + import json import os import tempfile @@ -31,19 +36,19 @@ def no_data_xml(): @pytest.fixture(scope="session") def expected_data(): expected_json = os.path.join(UPDATE, "expected_mime_types.json") - with open(expected_json, "r") as f: + with open(expected_json, "r", encoding="UTF-8") as f: return json.load(f) @pytest.fixture(scope="session") def parsed_xml(downloaded_xml): - with open(downloaded_xml, "r") as f: + with open(downloaded_xml, "r", encoding="UTF-8") as f: data = f.read() return xmltodict.parse(data) def test_xml_to_dict(downloaded_xml): - with open(downloaded_xml, "r") as f: + with open(downloaded_xml, "r", encoding="UTF-8") as f: data = f.read() xml_data = utils.xml_to_dict(data) assert xml_data is not None @@ -52,7 +57,7 @@ def test_xml_to_dict(downloaded_xml): def test_xml_to_dict_no_data(no_data_xml): with pytest.raises(utils.MediaTypeError) as e: - with open(no_data_xml, "r") as f: + with open(no_data_xml, "r", encoding="UTF-8") as f: data = f.read() utils.xml_to_dict(data) @@ -62,7 +67,7 @@ def test_xml_to_dict_no_data(no_data_xml): def test_xml_to_dict_invalid(invalid_xml): with pytest.raises(utils.MediaTypeError) as e: - with open(invalid_xml, "r") as f: + with open(invalid_xml, "r", encoding="UTF-8") as f: data = f.read() utils.xml_to_dict(data) @@ -80,7 +85,7 @@ def test_parse_xml_data(parsed_xml, expected_data): @pytest.fixture(scope="session") def incorrect_registry_count(): xml_file = os.path.join(UPDATE, "unexpected_registry_count.xml") - with open(xml_file, "r") as f: + with open(xml_file, "r", encoding="UTF-8") as f: data = f.read() return xmltodict.parse(data) @@ -96,7 +101,7 @@ def test_parse_xml_data_incorrect_reg(incorrect_registry_count): @pytest.fixture(scope="session") def no_registries(): xml_file = os.path.join(UPDATE, "no_registries.xml") - with open(xml_file, "r") as f: + with open(xml_file, "r", encoding="UTF-8") as f: data = f.read() return xmltodict.parse(data) @@ -109,66 +114,70 @@ def test_parse_xml_data_no_reg(no_registries): assert e.value.args == msg -def test_secure_download_xml(downloaded_xml): +def test_requests_download_xml(downloaded_xml): utils.requests = Mock() - with open(downloaded_xml) as xml: + with open(downloaded_xml, "r", encoding="UTF-8") as xml: expected = xml.read() utils.requests.get.return_value.text = expected - results = utils.secure_download_xml() + results = utils.requests_download_xml() assert results == expected -def test_insecure_download(downloaded_xml): +def test_urllib_download(downloaded_xml): utils.urllib = Mock() - with open(downloaded_xml) as xml: + with open(downloaded_xml, "r", encoding="UTF-8") as xml: utils.urllib.urlopen.return_value = xml - results = utils.insecure_download_xml() + results = utils.urllib_download_xml() - with open(downloaded_xml) as xml: + with open(downloaded_xml, "r", encoding="UTF-8") as xml: assert results == xml.read() -@patch("ramlfications.utils.insecure_download_xml") @patch("ramlfications.utils.parse_xml_data") @patch("ramlfications.utils.xml_to_dict") @patch("ramlfications.utils.save_data") -def test_insecure_download_flag(_a, _b, _c, _d, monkeypatch): +def test_insecure_download_urllib_flag(_a, _b, _c, mocker, monkeypatch): monkeypatch.setattr(utils, "SECURE_DOWNLOAD", False) + monkeypatch.setattr(utils, "URLLIB", True) + utils.requests = Mock() - # # lots of mocking D: - utils.urllib2 = Mock() + mocker.patch("ramlfications.utils.urllib_download_xml") utils.update_mime_types() - utils.insecure_download_xml.assert_called_once() + utils.urllib_download_xml.assert_called_once() + + mocker.stopall() @patch("ramlfications.utils.xml_to_dict") @patch("ramlfications.utils.parse_xml_data") @patch("ramlfications.utils.save_data") -def test_secure_download_flag(_a, _b_, c, monkeypatch): +def test_secure_download_requests_flag(_a, _b_, _c, mocker, monkeypatch): monkeypatch.setattr(utils, "SECURE_DOWNLOAD", True) + monkeypatch.setattr(utils, "URLLIB", False) + utils.urllib = Mock() - # lots of mocking D: - utils.requests = Mock() - utils.secure_download_xml = Mock() + mocker.patch("ramlfications.utils.requests_download_xml") utils.update_mime_types() - utils.secure_download_xml.assert_called_once() + utils.requests_download_xml.assert_called_once() + + mocker.stopall() @patch("ramlfications.utils.xml_to_dict") @patch("ramlfications.utils.parse_xml_data") -@patch("ramlfications.utils.secure_download_xml") -@patch("ramlfications.utils.insecure_download_xml") +@patch("ramlfications.utils.requests_download_xml") +@patch("ramlfications.utils.urllib_download_xml") @patch("ramlfications.utils.save_data") def test_update_mime_types(_a, _b, _c, _d, _e, downloaded_xml): utils.requests = Mock() - with open(downloaded_xml, "r") as raw_data: + with open(downloaded_xml, "r", encoding="UTF-8") as raw_data: utils.update_mime_types() - utils.secure_download_xml.assert_called_once() - utils.secure_download_xml.return_value = raw_data.read() + utils.requests_download_xml.assert_called_once() + utils.requests_download_xml.return_value = raw_data.read() utils.xml_to_dict.assert_called_once() utils.parse_xml_data.assert_called_once() utils.save_data.assert_called_once() @@ -179,7 +188,7 @@ def test_save_data(): temp_output = tempfile.mkstemp()[1] utils.save_data(temp_output, content) - result = open(temp_output).read() + result = open(temp_output, "r", encoding="UTF-8").read() result = json.loads(result) assert result == content diff --git a/tox.ini b/tox.ini index d827c2d..941004b 100644 --- a/tox.ini +++ b/tox.ini @@ -44,6 +44,8 @@ commands = basepython = python2.7 setenv = PYTHONHASHSEED = 0 + LC_ALL=en_US.utf-8 + LANG=en_US.utf-8 deps = sphinx commands =