<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.3.24 -->
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-murillo-avtcore-multi-codec-payload-format-00" category="std" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.9.0 -->
  <front>
    <title>Multi Codec RTP payload format</title>
    <seriesInfo name="Internet-Draft" value="draft-murillo-avtcore-multi-codec-payload-format-00"/>
    <author initials="S." surname="Garcia Murillo" fullname="Sergio Garcia Murillo">
      <organization>CoSMo</organization>
      <address>
        <email>sergio.garcia.murillo@cosmosoftware.io</email>
      </address>
    </author>
    <author initials="Y." surname="Fablet" fullname="Youenn Fablet">
      <organization>Apple Inc.</organization>
      <address>
        <email>youenn@apple.com</email>
      </address>
    </author>
    <author initials="A." surname="Gouaillard" fullname="Alex Gouaillard">
      <organization>CoSMo</organization>
      <address>
        <email>alex.gouaillard@cosmosoftware.io</email>
      </address>
    </author>
    <author initials="J." surname="Uberti" fullname="Justin Uberti">
      <organization>Clubhouse</organization>
      <address>
        <email>justin@uberti.name</email>
      </address>
    </author>
    <date year="2021" month="July" day="11"/>
    <area>ART</area>
    <workgroup>AVTCORE</workgroup>
    <abstract>
      <t>RTP Media Chains usually rely on piping encoder output directly to packetizers. Media packetization formats often support a specific codec format and optimize RTP packets generation accordingly.
With the development of Selective Forward Unit (SFU) solutions, RTP Media Chains used in WebRTC solutions are increasingly relying on application-specific transforms that sit between encoder and packetizer on one end and between depacketizer and decoder on the other end. These transforms are typically encrypting media content so that the media content is not readable from the SFU, for instance using <xref target="SFrame" format="default"/> or <xref target="WebRTCInsertableStreams" format="default"/>.
In that context, RTP packetizers can no longer expect to use packetization formats that mandate media content to be in a specific codec format.
This document provides a solution to that problem by describing a RTP packetization format that can be used for many media content, and how to negotiate use of this format.
This document also describes a solution to allow SFUs to continue performing packet routing on top of this RTP packetization format.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>As per Figure 1 of <xref target="RFC7656" format="default"/>, a Media Packetizer transforms a single Encoded Stream into one or several RTP packets.
The Encoded Stream is coming straight from the Media Encoder and is expected to follow the format produced by the Media Encoder.
A number of Media Packetizer formats have been designed to process a specific format produced by Media Encoder.
For instance <xref target="RFC6184" format="default"/> is dedicated to the processing of content produced by H.264 Media Encoders, and generates packets following NALUs organization.</t>
      <t>WebRTC applications are increasingly deploying end-to-end encryption solutions on top of RTP Media Chains.
End-to-end encryption is implemented by inserting application-specific Media Transformers between Media Encoder and Media Packetizer on the sending side, and between Media Depacketizer and Media Decoder on the receiving side, as described in Figure 1 and Figure 2.
To support end-to-end encryption, Media Transformers can use the <xref target="SFrame" format="default"/> format.
In browsers, Media Transformers are implemented using <xref target="WebRTCInsertableStreams" format="default"/>, for instance by injecting JavaScript code provided by web pages.</t>
      <t><tt>
                Physical Stimulus
                      |
                      V
           +----------------------+
           |     Media Capture    |
           +----------------------+
                      |
                 Raw Stream
                      V
           +----------------------+
           |     Media Source     |&lt;-- Synchronization Timing
           +----------------------+
                      |
                Source Stream
                      V
           +----------------------+
           |    Media Encoder     |
           +----------------------+
                      |
                Encoded Stream 
                      V
           +----------------------+
           |   Media Transformer  |&lt;-- NEW: application-specific transform
           +----------------------+         (e.g. SFrame Encryption)
                      |
              Transformed Stream    +------------+
                      V             |            V
           +----------------------+ | +----------------------+
           |   Media Packetizer   | | | RTP-Based Redundancy |
           +----------------------+ | +----------------------+
                      |             |            |
                      +-------------+  Redundancy RTP Stream
               Source RTP Stream                 |
                      V                          V
           +----------------------+   +----------------------+
           |  RTP-Based Security  |   |  RTP-Based Security  |
           +----------------------+   +----------------------+
                      |                          |
              Secured RTP Stream   Secured Redundancy RTP Stream
                      V                          V
           +----------------------+   +----------------------+
           |   Media Transport    |   |   Media Transport    |
           +----------------------+   +----------------------+
</tt>
             Figure 1: Sender Side Concepts in the Media Chain
             With Application-level Media Transform</t>
      <t>These RTP packets are sent over the wire to a receiver media chain matching the sender side, reaching the Media Depacketizer that will reconstruct the Encoded Stream before passing it to the Media Decoder.
<tt>
          +----------------------+   +----------------------+
          |   Media Transport    |   |   Media Transport    |
          +----------------------+   +----------------------+
            Received |                 Received | Secured
            Secured RTP Stream       Redundancy RTP Stream
                     V                          V
          +----------------------+   +----------------------+
          | RTP-Based Validation |   | RTP-Based Validation |
          +----------------------+   +----------------------+
                     |                          |
            Received RTP Stream   Received Redundancy RTP Stream
                     |                          |
                     |     +--------------------+
                     V     V
          +----------------------+
          |   RTP-Based Repair   |
          +----------------------+
                     |
            Repaired RTP Stream
                     V
          +----------------------+
          |  Media Depacketizer  |
          +----------------------+
                     |
         Received Transformed Stream
                     V
          +----------------------+
          |   Media Transformer  |&lt;-- NEW: application-specific transform
          +----------------------+         (e.g. SFrame Decryption)
                     |
           Received Encoded Stream
                     V
          +----------------------+
          |    Media Decoder     |
          +----------------------+
                     |
           Received Source Stream
                     V
          +----------------------+
          |      Media Sink      |--&gt; Synchronization Information
          +----------------------+
                     |
            Received Raw Stream
                     V
          +----------------------+
          |     Media Render     |
          +----------------------+
                     |
                     V
             Physical Stimulus
</tt>
             Figure 2: Receiver Side Concepts in the Media Chain
             With Application-level Media Transform</t>
      <t>This packetization does not change how the mapping between one or several encoded or dependant streams are mapped to the RTP streams or how the synchronization sources(s) (SSRC) are assigned.</t>
      <t>Given the use of post-encoder application-specific transforms, the whole Media Chain needs to be made aware of it.
This includes the sender post-transform Media Chain, Media Transport intermediaries (SFUs typically) and receiver pre-transform Media Chain.</t>
      <t>As these transforms can alter Encoded Streams in any possible way, the use of codec-specific Media Packetizers like <xref target="RFC6184" format="default"/> on Transformed Stream may be suboptimal on sender side.
It may also be problematic on the receiving side in case codec-specific processing is done prior the Media Transformer.
Media Transport intermediaries are often looking at the Media Content itself to fuel their packet selection algorithms.</t>
    </section>
    <section anchor="goals" numbered="true" toc="default">
      <name>Goals</name>
      <t>The objective of this document is to support inserting any application-specific transform between encoders and packetizers in the Media Chain.
For that purpose, this document will:
1. Provide a packetization format that supports multiple media content used by WebRTC applications (audio compressed by Opus, video compressed by H264 or VP8, encrypted content...) that allows reuse of existing RTP mechanisms in place in WebRTC applications such as RTX, RED or FEC.
2. Provide a way to negotiate use of this packetization format between sender and receiver, with minimum impact on existing negotiation approaches.
3. Provide a side-channel information so that network intermediaries (SFU in particular) can do their existing packet routing strategies without inspecting the media content.</t>
    </section>
    <section anchor="rtp-packetization" numbered="true" toc="default">
      <name>RTP Packetization</name>
      <t>This packetizer, by design, is not expected to understand the format of the media to transmit. The unit used by the packetizer to do processing is called a frame in the remainder of the document.</t>
      <t>It is the responsibility of the application using the packetizer to group media content in meaningful frames. In the common case of a video codec, the packetizer frame is the frame in byte format (h264 annex b for example) generated by the encoder.</t>
      <t>If the application wants to transform encoded content, the application needs to split the encoded content into frames prior the transform.
Each frame is then transformed independently, for instance encrypted using <xref target="SFrame" format="default"/>.
The content of each transformed frame is then processed by the packetizer.</t>
      <t>In the case of a video codec supporting spatial scalability, each spatial layer MUST be split in its own frame by the application before passing it to the packetizer.</t>
      <t>When the packetizer receives a frame from the application, it MUST fragment the frame content in multiple RTP packets to ensure packets do not exceed the network maximum transmission unit. The content of the frame will be treated as a binary blob by the packetizer, so the decision about the boundaries of each fragment is decided arbitrarily by the packetizer. The packetizer or any relying server MUST NOT modify the frame content and concatenating the RTP payload of the RTP packets for each frame MUST produce the exact binary content of the input frame content.</t>
      <t>The marker bit of each RTP packet in a frame MUST be set according to the audio and video profiles specified in <xref target="RFC3551" format="default"/>.</t>
      <t>The spatial layer frames are sent in ascending order, with the same RTP timestamp, and only the last RTP packet of the last spatial layer frame will have the marker bit set to 1.</t>
    </section>
    <section anchor="payload-multiplexing" numbered="true" toc="default">
      <name>Payload Multiplexing</name>
      <t>In order to reduce the number of payload type in the SDP exchange, a single payload type code for this multi-codec packetization can be used for all negotiated media formats that the multi-codec packetization supports.
That requires to identify the original payload type code of the frame negotiated media format, called the associated payload type (APT) hereunder.
The APT value is the payload type code of the associated format passed to the multi-codec Media Packetizer before any transformation is applied.</t>
      <t>The APT value is sent in a dedicated header extension.
The payload of this header extension can be encoded using either the one-byte or two-byte header defined in <xref target="RFC5285" format="default"/>.
Figures 3 and 4 show examples with each one of these examples.</t>
      <t><tt>
                    0                   1
                    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
                   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                   |  ID   | len=0 |S|     APT     |
                   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</tt>
Figure 3: Frame Associated Payload Type Encoding Using the One-Byte Header Format</t>
      <t><tt>
      0                   1                   2                   3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |      ID       |     len=1     |S|     APT     |    0 (pad)    |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</tt>
Figure 4: Frame Associated Payload Type Encoding Using the Two-Byte Header Format</t>
      <t>The APT value is the associated payload type value.
The S bit indicates if the media stream can be forwarded safely starting from this RTP packet.
Typically, it will be set to 1 on the first RTP packet of an intra video frame and in all RTP audio packets.</t>
      <t>Receivers MUST be ready to receive RTP packets with different associated payload types in the same way they would receive different payload type codes on the RTP packets.</t>
      <t>The URI for declaring this header extension in an extmap attribute is "urn:ietf:params:rtp-hdrext:associated-payload-type".</t>
    </section>
    <section anchor="sdp-negotiation" numbered="true" toc="default">
      <name>SDP Negotiation</name>
      <t>To use the multi-codec packetization, the SDP Offer/Answer exchange MUST negotiate:
- The payload type of the negotiated codec format
- The multi-codec payload type
- The associated payload type header extension</t>
      <t>Only the negotiated payload types are allowed to be used as associated payload types.
Figure 5 illustrates a SDP that negotiates exchange of video using either VP8 or VP9 codecs with the possibility to use the multi-codec packetization.
In this example, RTX is also negotiated and will be applied normally on each associated payload type.</t>
      <t><tt>
m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=setup:actpass
a=mid:1
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=extmap:4 urn:ietf:params:rtp-hdrext:associated-payload-type
a=sendrecv
a=rtpmap:96 vp9/90000
a=rtpmap:97 vp8/90000
a=rtpmap:98 generic/90000
a=rtpmap:99 rtx/90000
a=fmtp:99 apt=96
a=rtpmap:100 rtx/90000
a=fmtp:100 apt=97
a=rtpmap:101 rtx/90000
a=fmtp:101 apt=98
</tt>
Figure 5: SDP example negotiating the multi-codec payload type and related header extension for video</t>
    </section>
    <section anchor="sfu-packet-selection" numbered="true" toc="default">
      <name>SFU Packet Selection</name>
      <t>SFUs need to have a basic understanding of each frame they receive so they can decide to forward it or not and to which endpoint.
They might need similar information to support media content recording.
This information is either generic to a group of frames (called a stream hereafter) or specific to each frame.</t>
      <t>The information is transmitted as a RTP header extension as the RTP packet payload should be treated as opaque by the SFU.
This is especially necessary if the payload is end-to-end encrypted.
The amount of information should be limited to what is strictly necessary to the SFU task since it is not always as trusted as individual peers.</t>
      <t>For audio, configuration information such as Opus TOC might be useful.
For video, configuration information might include:
- Stream configuration information: resolution, quality, frame rate...
- Codec specific configuration information: codec profile like profile_idc...
- Frame specific information: whether the stream is decodable when starting from this frame, whether the frame is skippable...</t>
      <t>For video content, this information is sent using a Dependency Descriptor header extension.
In that case, the first RTP packet of the frame will have its start_of_frame equal to 1 and the last packet will have its end_of_frame equal to 1.</t>
    </section>
    <section anchor="sender-processing-rules" numbered="true" toc="default">
      <name>Sender Processing Rules</name>
      <t>The sender identifies the use of the multi-codec payload format by using the urn:ietf:params:rtp-hdrext:associated-payload-type extension.
When doing so, the sender follows these additional rules:
- For audio content, the associated payload type MUST reference an audio codec in the supported audio codec list.
  The supported audio codec list contains the audio codecs enumerated in <xref target="RFC7874" format="default"/>. This list may be extended in future versions of this specification.
- For video content, H.264 and VP8 are supported as described in <xref target="RFC7742" format="default"/>, as well as VP9 and AV.1.
  In the case scalable video coding is used, the sender MUST generate a Dependency Descriptor header extension.
  This requires the associated payload type to reference a video codec that can be described using the Dependency Descriptor header extension.
  This also requires the sender to split the video encoder output in frames that can each be described using the Dependency Descriptor header extension.</t>
      <t>These rules apply to both the originator of the content as well as SFUs that might route the content to end receivers.</t>
    </section>
    <section anchor="redundancy-techniques-considerations" numbered="true" toc="default">
      <name>Redundancy Techniques Considerations</name>
      <t>The solution described in this document is expected to integrate well with the existing RTP ecosystem.
This section describes how the multi-codec packetizer can be used jointly with existing techniques that allow to mitigate unreliable transports.</t>
      <section anchor="retransmission-techniques" numbered="true" toc="default">
        <name>Retransmission Techniques</name>
        <t><xref target="RFC4588" format="default"/> defines a retransmission payload format (RTX) that can be used in case of packet loss.
As defined in <xref target="RFC4588" format="default"/>, RTX is able to handle any payload format, including the format described in this document.
Given RTX preserves both RTP packet payload and headers, the receiver will be able to identify the payload type of the recovered packet and whether multi-codec packetization is used.
RTX will also allow recovering RTP header extensions that convey information on the media content itself.</t>
      </section>
      <section anchor="forward-error-correction-fec-techniques" numbered="true" toc="default">
        <name>Forward Error Correction (FEC) Techniques</name>
        <t>FEC is another technique used in RTP Media Chains to protect media content against packet loss.
<xref target="RFC5109" format="default"/> defines such a payload format used to transmit FEC for specific packets protection.</t>
        <t>FEC may protect some parts of the media content more than others. For instance, intra video frame encoded data or important network abstraction layer units (NALUs) like SPS/PPS may be more protected.
With a post-encoder transform and the use of a multi-codec packetization, the granularity of the recovery mechanism is no longer at the NALU level but at the level of the frame generated by the post-encoder transform.
In case a SVC codec is used, each spatial layer will be processed as an independent frame. In that case, base layers can be protected more heavily than higher resolution layers.</t>
      </section>
      <section anchor="redundant-audio-data-techniques" numbered="true" toc="default">
        <name>Redundant Audio Data Techniques</name>
        <t>As defined in <xref target="RFC7656" format="default"/> RTP-based redundancy is defined here as a transformation that generates redundant or repair packets sent out as a Redundancy RTP Stream to mitigate Network Transport impairments, like packet loss and delay.</t>
        <t><xref target="RFC2198" format="default"/> defines a payload format for sending the same audio data encoded multiple times at different quality levels.
This allows to use a lower quality encoding of the audio data, should the higher quality encoding of the audio data is lost during the transmission.</t>
        <t>If a Media Transformation is in use, both the primary and redundant encoding must be transformed independently and the redundant packet created normally. As the RTP headers present in the redundant packet are only applicable to the primary encoding, if the payload type for a redundant encoding block is mapped to the multi-codec packetizer, the value of the associated payload type for the primary encoding is applied to the redundant encoding block as well.</t>
      </section>
    </section>
    <section anchor="alternatives" numbered="true" toc="default">
      <name>Alternatives</name>
      <t>Various alternatives can be used to implement and negotiate multi-codec packetization.
This section describes a few additional alternatives.
This section is to be removed before finalization of the document.</t>
      <section anchor="generic-packetization-with-in-payload-apt" numbered="true" toc="default">
        <name>Generic Packetization With In-Payload APT</name>
        <t>Instead of using a RTP header extension to convey the APT value, it is prepended in the RTP payload itself.
As the value cannot change for a whole frame, its value is prepended to the first packet generated of the frame only.
This removes the need to negotiate a dedicated header extension, but may require the SFU to update the payload when sending or recording content.</t>
      </section>
      <section anchor="a-payload-type-for-generic-packetization-and-media-format" numbered="true" toc="default">
        <name>A Payload Type for Generic Packetization AND Media Format</name>
        <t>The payload type is negotiated in the SDP so as to identify both the negotiated codec format and the multi-codec packetization use.
There is no network cost but this increases the number of payload types used in the SDP.</t>
        <t><tt>
m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=setup:actpass
a=mid:1
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=sendrecv
a=rtpmap:96 vp9/90000
a=rtpmap:97 generic/90000
a=fmtp:97 apt=96
a=rtpmap:98 vp8/90000
a=rtpmap:99 generic/90000
a=fmtp:99 apt=98
a=rtpmap:100 rtx/90000
a=fmtp:100 apt=96
a=rtpmap:101 rtx/90000
a=fmtp:101 apt=97
a=rtpmap:102 rtx/90000
a=fmtp:102 apt=98
a=rtpmap:103 rtx/90000
a=fmtp:103 apt=99
</tt>
Figure 6: SDP example negotiating a payload type for format and multi-codec packetization</t>
        <t>A variation of this approach is to consider defining several multi-codec payload types, each of them having an identified codec format.
<tt>
m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=setup:actpass
a=mid:1
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=sendrecv
a=rtpmap:96 generic/90000
a=fmtp:96 codec=vp9
a=rtpmap:97 generic/90000
a=fmtp:97 codec=vp8
a=rtpmap:98 rtx/90000
a=fmtp:98 apt=96
a=rtpmap:99 rtx/90000
a=fmtp:99 apt=97
</tt>
Figure 7: SDP example negotiating a payload type for format and multi-codec packetization</t>
      </section>
      <section anchor="a-rtp-header-to-choose-packetization" numbered="true" toc="default">
        <name>A RTP Header To Choose Packetization</name>
        <t>A RTP header extension can be used to flag content as opaque so that the receiver knows whether to use or not the multi-codec packetization.
As for the API header extension, the RTP header extension may not need to be sent for every packet, it could for instance be sent for the first packet of every intra video frame.
The main advantage of this approach is the reduced impact on SDP negotiation.
<tt>
m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=setup:actpass
a=mid:1
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=extmap:4 urn:ietf:params:rtp-hdrext:multi-codec-packetization-use
a=sendrecv
a=rtpmap:96 vp9/90000
a=rtpmap:97 vp8/90000
a=rtpmap:98 rtx/90000
a=fmtp:98 apt=96
a=rtpmap:99 rtx/90000
a=fmtp:99 apt=97
</tt>
Figure 8: SDP example negotiating multi-codec packetization as RTP header extension</t>
      </section>
    </section>
    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>RTP packets using the payload format defined in this specification are subject to the general security considerations discussed in <xref target="RFC3550" format="default"/>.
It is not expected that the proposed solution presented in this document can create new security threats.
The use and implementation of RTP Media Chains containing Media Transformers needs to be done carefully.
It is important to refer to the security considerations discussed in <xref target="SFrame" format="default"/> and <xref target="WebRTCInsertableStreams" format="default"/>.
In particular Media Transformers on the receiver side need to be prepared to receive arbitrary content, like decoders already do.
Similarly, since Media Transformers can be implemented as JavaScript in browsers, RTP Packetizers should be prepared to receive arbitrary content.</t>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>Two new media subtypes have been registered with IANA, as described in this section.</t>
      <section anchor="registration-of-audiogeneric" numbered="true" toc="default">
        <name>Registration of audio/generic</name>
        <t>Type name: audio</t>
        <t>Subtype name: generic</t>
        <t>Required parameters: none</t>
        <t>Optional parameters: none</t>
        <t>Encoding considerations: This format is framed (see Section 4.8 in the template document) and contains binary data.</t>
        <t>Security considerations: TBD.</t>
        <t>Interoperability considerations: TBD</t>
        <t>Published specification: TBD.</t>
        <t>Applications that use this media type: TBD.</t>
        <t>Additional information: none</t>
        <t>Intended usage: COMMON</t>
        <t>Restrictions on usage: TBD</t>
        <t>Author:</t>
        <t>Change controller:</t>
      </section>
    </section>
    <section anchor="registration-of-videogeneric" numbered="true" toc="default">
      <name>Registration of video/generic</name>
      <t>Type name: video</t>
      <t>Subtype name: generic</t>
      <t>Required parameters: none</t>
      <t>Optional parameters: none</t>
      <t>Encoding considerations: This format is framed (see Section 4.8 in the template document) and contains binary data.</t>
      <t>Security considerations: TBD.</t>
      <t>Interoperability considerations: TBD</t>
      <t>Published specification: TBD.</t>
      <t>Applications that use this media type: TBD.</t>
      <t>Additional information: none</t>
      <t>Intended usage: COMMON</t>
      <t>Restrictions on usage: TBD</t>
      <t>Author:</t>
      <t>Change controller:</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3550.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3551.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3711.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4566.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5285.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7656.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8285.xml"/>
      </references>
      <references>
        <name>Informative References</name>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2198.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4588.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5109.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6464.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6465.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6904.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6184.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7742.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7874.xml"/>
        <reference anchor="SFrame" target="https://tools.ietf.org/html/draft-omara-sframe">
          <front>
            <title>Secure Frame (SFrame)</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="WebRTCInsertableStreams" target="https://w3c.github.io/webrtc-insertable-streams">
          <front>
            <title>WebRTC Insertable Media using Streams</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAEOj6mAAA+09a2/cOJLfDfg/ELtfbEx3x3YSPxqXw/Y6yawHm8Swncws
DodZtcTu5kQt9YqSnb6Z/PerFynqFTsTz7fJArttiWQV682qonY8Hu/uJHmc
RWs9VUkRLcrxuipMmubj6LaM80LD32lpxnGe6Hi8ibZpHiXjRV6so3J8cLC7
U5oyhblvcJQ6x1Hq6uZSyUjFI3d34qjUy7zYTpUtk90dsymmqiwqWx4dHJwd
HO3uRIWOpmp2dbO7c5cXH5dFXm3g7w835++uXu3u2DLKkp+jNM8A2Fbb3Z3d
nY2Zqv8p83ikbF6UhV5Y+LVd44//xfdRVa7yYrq7A5tUymR2qq4n6vuoiE0E
CNM28Q3v/loXS5P3vM6L5RR2dv2G/tLryKSwCxo9WdLoidDsb3Fu17nNF+Ud
bGdicsSiBv6viXodzVNd1kD/lVc6y4LHBGy22aRaXWTxJIC4paF/i/DdJM7X
zbVnsLG8goFpVCT1+rNUf2q96N1OBOMmSz+uZyNKheB+mKj3c12Upgb1AzDT
ZMFjBpRW81VeWR0A+4VG/q2ikROcjXvJSFLMrZ7i0KvX50eHh2fu99Pnzw+C
34f+98mh//3s+fGx+/386PS5+31y/Nw/P+XnIIDZogvv7LRe69T/fn544PE4
fnb8LPjtYRyfHdTPD0/975OTZ0f+9+kJP79+XSDF8KdSZVQsdTlVq7Lc2OmT
J2Wep3ZidLmYAAGfrMp1+oQVM19HRTS2i4IIRnNZ9651XBVa0apqj1ffxxE/
6vnVzflFBsJaooRdg5JEazsA+e5pPFmaclXNgeFP7vS8KOOx8ZPHlmc3QDME
VYNQb3QC6lNZky3VtZsBojMeq2gOS0RxiX+jjeCh56sIgMCMKkrTrSo0/Fee
qY3Z4BI6Q8tTqLwqN1WpElPouIQRZQ4mJv6oS/N/urATWcs9Ar7CEsxhq0CM
daZstdmAmVCRshsdm4WJFRk1GabAvqh8U5o1rCgmDBezaqkzXfCKUQwmMQG8
0i2o5o9ALFWutEr0rU7zzVpnJQADfqSAJEiWep0XoECJep+ZEjnzfh9MVVrh
WmCremigE9AvR1U/VIESwvMYqGkJOFEJyYM4gUEwMeE39jsDOmcWN2YBQdic
BfhzXd5pIIQjKW64piEuBcYV3ib0xo1OdDAGXwDJmCMZ7T2H/ypw1kTdrLTV
IWhEu9xuADvkLMAttkBgQHtNu47zrESS2ZyRxOWab4xVWV7CbqOEhGtR5Gsa
BqQcIePQGoFniLVI3K+/svh//gzmB/4a0IDPn4F9FxmDJWCfylHAdBIqFUcZ
gFfgc5a4xU9A3BIFD9g0IGm03hqoBN6utRWYN0cmDskfIHSzgv2CN65IkDZF
fmsSbXGCCAIuQiDgHWxmreZbYIeNCzPHzUeNHYSYyUZhP3PNUoa0A0S3TSxH
xOFVfoeQMnDYpcGd4IZBrkvEbwDbKAUuCi4dnIH9sCTwzOJfCMtkFdBQF7ga
os5IK3D6pYh1mW88zKFtTZxlWZskScmLXGRlkSdVjKN2d14E//DtzCJQ9dos
0WAeIoBffxUX8fkz7F708bIW+VCcFWmfVq9IgxKxb8BU2BXqDtDUgikoojQ0
IESr7iSQr5z2jkbRLFdlLd2MxKtAT2E0yx8sAMAWOVEUxwqDN7RreAsi0VkC
MJiprFrPUW0X3T068V1FYLPmrPXWLDMGBkvH2tpQcHuAtgG+DpWTiIx+EfQS
pQbGYkCYsEBrB4JYv/AqEy7/j8nR8bMmEMvSKuYZhM4ZbKYOLvZ29k+QOfCj
USaSQyIj9jWwnD0mFgxfmm/ZByXjMh+jZXQ2DESwts61tLYtOkB71TsZiGDW
EMih7vAG2dGSGvcZdF71xgkjmidnobvS0mGw2GoLWJDEgV0ZNaw8z3jZtvXu
ccPigwfW5jZYx3rFJ+/ltQtXkD+OUAly74N7KTrq2yTaLDQ/CDgw7l7/wYjP
i/zOkjj0zCe2BpR2bmLQMbTcCnHmF3TnMO2H6Da6ho1uSjLdzkQT/yBeAgFc
aksS9u9//5vjpPDf5Wpr0ReCCTBwqqpsdwj/+23oxYfGi+/Gvf++awz6jf5b
hDLalMiNDogHrXQPglfRndi2Pwj767wqYs2P/wuM/vU2i1dF7jRb3Rg0p4+9
L4H6x+ysqbpdDB4B/5bbeeQddDROePP21Y/TeyLTBwH0A/b0ZDmRkxPuSWzG
/oMpUePoadGGO0jWD82lv55uMOcrSRoYb3yM/wHnMv57hMHblU4qiDGzePtA
eXko/KFdNv8aNE/ftaCGiKJrHFAiUbF6RBeZh3Gm+eqhAvZQztT0pwO3KbdM
l6FXjwq/icrQvw6dODWQNGnrHz6IO46cw1AfndKhWaF4QXlK9776dvhdf+2i
GEyvZGidr8HTq/McgoINxJgmC8JsCvZa8yk5MAssYIpJgrbBxFiBj81hxgGD
FkvJhFs8gQCcO4NHaThJSfQFj+XghqDhJFfGK4xQXJQH7zk4A5bWb3qiPDoY
3pk0xYUhmC2LKuaTeMtxzDXgi+deDtNN6WL3Row46ZDyG8XhG6Xhm9Xuismd
9Ghd8Eo0qjm1V/d44sP17qFq981krk3Yhyg1CYdUv33h1aOSOUBk8N9vA5xp
0Ld++hVE/hqL2pjSu7mhrTErH8S1tgaErn8TmaKN2NcSuU1JXLNByaEt/A7k
e4zOoyHvud2N7h5xB48V5X5dkAsW9Z4gt8lGT4um4X5MOrTyAR0cvkkMPf4P
OXH9PvT9SdJkH+XxePzfnYPkhasN5dljKpkzTPedk3/n3nhrV+z8Owh8G/L9
uKnelMZgKHU0dUT4w4IpJWnpZrI4yTXXESBYypaa89tYawDVxVjGJcFaKVwt
egSPEr3R6ExKJUUwCtFwfp3DROPp3sIUB8S2hMuSdNs9u6/2rq+vzvdpKYyq
MN86URgRfg80YpJI5n2T23Ls6zZfLviMOGBc5WmDoirTOrFShlhHQP4Ia7u4
uvHpfJPFaYU1hyCOJNh++XDJUSf8MlmpCwpMCwOr7HHK31WA9ikj6APYTaH7
151Iqr5s15MwGRilAKJl40iCsJgBuFqDhaK7aDsKCcjtC61s6mVQ60nNx2aa
GhNK3ZTBOtoi/Ww1p1IhSAmytA64MSNZ0igqiMy1K9UAu+L+BCriHoNvb+MY
5MSp0JLhWiYvAlUJPBIAvocZzGyshKZ5/pESzWWodq7kVlqdLqjIUIGKwQAI
N6Q8Y7mwiUXHdJnDMXe15nTn9zlsV8otcqRR+fwXqYK6Mo4vFhmSQ5cMDjLf
wMIvS3e7iGlbVcw+WyLFCC6cVQXIiB61EMID0HR353CiLjmlq/pryVJMZcSt
otYYbNVolvqowDbfqr4yw15UJQZrYGsQfysD320qUFuE237zD6x6APIfLk9H
LlUObwTSZDLZZ5SowmZBskTe9SdjiaRoldYaDZ+xrCebNIp1UGVuoGereIUJ
/aubn0bq6tVLhP361TmQ8CikDajXcIWwl3COb6IroSEYAfnBvK9NBi5kjdn6
CI6gMNVvwsExXO4ucjjTUqL9aYgUKtMYd5qB3Jrah/v6cgY45MXHPitFhIlA
CuMqjYp9sjRJLtLv8WhVKbFwV+olroE7gKcoyxspFnSq2RPX93AZEqhZpAw0
KKAk0ohLveAkRq4qHhYEK6Qq9UiFRUHiiMMC3RSq0RrMPZbqYY6pZZWqcEFa
IMftN00Q2nAYHCnqQHGKVmBTD/FUoDmlou1esLLTOLBKGVhnk2J6TAYHwiel
mS4i1ArWbgzI4AHIdLZcVCkjZCfqglECFVrnYlQBTuQ1C+zrqA1ANsNI+p3N
t6Wn4t4KlRDF6pOaU3VIf4qwpLTva4+ehGKW2I1fdPd4BzGE9awgi+bCDF+C
b8/xjtvCszIAkwTkQHtNVAichIeBZUhQmcZes/o1le04xIHF0m2rBFabnXaP
hVS2HRZodxBMuHATpAhUn8ixuAgD+zjnzC5p3gZIA87XgkxGLFEjhu3epNEW
mPvm/fUN+WuiHPDVYDvQXSZoCRIhsQfTXAGmxNwfVxKiBbIkFs16HfEV/QDE
CBclxGDMktxPLXqhfDvnEmYGARmd2arQ/gmoKRuDWGtWfmfm1tEnMqii9bAh
VLLMqX/AtRo+ZQLnKDqaxDrCvcxNFhUQ96T5vMu3EZtXbIKKDYGI5mgJ8RH8
gKiZjKyTDb9nagOIqXoaFXMDSBYm3fbIBSEb9ikVFCe4DiiIHW4dp9++u1Hr
PDGLbQ9J0TbCb+w7yCJvocNeVaFESG/S9lp1CIq0JbAifkJfJQRqUdRk2LHW
QGLigqN1VHwErGHfnjI1WO4SCiCiBMNj333mZJJjCdwY6wlgtjApUFsCJ67H
U1SLTZOksAy/qSZiOXzaGeHbWJoFAKT30XQsQLQQWYh/NZiI9YZbCfIsZbKn
kS3D3Qg56HEPXJY5aj0pm5TBPcNODwnrS2HSG1GLT1Tr7fhOcZ9gSAhvnF9o
z666B8bxHA4n3pVdv7xEPaJD4qju9mkMpbr/ggyskQCQe6NbYU+71wp8Zx0u
JeLNGm1jtPnB9VzMSSY3wpa4/1Sm0GQRDJptJ/QQli9BHNMetBuaPoDMyLl5
ki9r85jHNFbbm13e7KuVhnAz46Q/yhQ8VLdRWnlvOohBsK7rJIrIK4hch2To
lEPFQqMN8I4mck01ZGfhGO3kvIGTl+2gAWmlo4Sa+0A9LfcH3QSou5i2Pczx
1zli9ozaUDMksSHTYwoiUFTucv4tqyR6YbJAN7FZmXSTEyVWPSWFeqYsJhEk
2OAYk00FJSoWcj5274f7TvDfQc+zw6Ghh+oIcHimnqtjdaJO1Vn4rHfSd+N7
/tM76zelLl7S/6Y6e3GgfrvmVBZyjd7/XlhEBkk7PZ1KZ/SsljpnTG5QMimX
gOx77wPQd8C9vyPH/sEcey23GBoE7iVpz7OjnmdP60W+SOz7nsky95LkgeyR
LCkxpf4bmcMb6zCIt7C3iZL9kGGPgE/Iwme/g4U3oHT9LOy1VUOmjgaJUbgm
rwShMtkOOEyHxytO/Tm7sODGb1jNRgvsaAdHyaGrhISNrlZc3yXJKDx0YZjz
gC5ztDBFx7cCQAj/Cxcrs3WnntGMvA6O5kCh7keFc6gcvq2PMLDJesv+kl41
4iCyPRBYLcDmYyzVTy2ffaEYgZIEK71Vd3mV+uN+sErHP1i3z2b3LFP//dUF
eVJwCnBEZzb3WWZKBeLf62ijorIszLwqic9/qYpsijcrpnDUx3sQRbkZr5IC
xk7rHflLTojWXwg8BgZv6xxEJ+wgFHPfpzjoxUc+zHiHNHgyy+wd4S6JaWKF
d8x4cUndtP2ouNDAfYdd5G5KE4V6uns/JO5tauLO3rnALoDZ5DplsDEDxS7c
xT14eBgQFO/swJyBrFecSsHDBlJHsjUCzdYEgs2zlDf87YfLU86RnTEtbB2s
ckKYUw7lAzjkrgVQvzX5VbwW8BOFFpjQDUiAKub0VMIORXeYUr7AQp56YP+1
r16/4A2dqfcvL5/c/PP6Ccj+k+vZh8vX6uxYnZ2oMzD1Z+rwAKz9Adj7+MXF
W3Vx+UwdTOg/uzvRi6KMN9Mz1X0B9qPaTOGIgvEVPlibZHqIP1g/pofqCzph
QSOnMCMYf3TvePybbeG4MfPp/TOlDD0eWuLZl5YYUGCmQgZj4lsm1QaXAtLe
bs6enB0cHByEj0/g8Wn38SlnekzcfXWmivJT/XixLulhtClfnB0HA5GB3ZH4
lIaeNIYe9g495KGnTef4fCoHFxLXOlfqUpADlkBSsGlvFEyGlgSTzN/r9xKA
u6tNvWlLMYRU88k0mwI61kVqHlkTB0lKafQPTtbkKJyL4IzClrOwlCTgSw98
mQrPzAUlPSjdmau7lYF1gMmb3GRcy4LJa7pTQYhYszbgMxpJ4aAA0UwtYh8U
nbLroljjiCFGRwSCm7I4RQk7kpP0ns+VSliAZ6VoUepinyqMvq6RBzTwnq4F
0GVtfT4GvWOHY5FteU7PbThFoP9tZnXyTfSfymfAgGd+t7BDwo/sWKYxX4fJ
DQl23KI4rNPETwcvci/rvOJESCMP7xFJgSGSub5DW4+HM3DUdLOvBimnQRS/
MrIf8TyOlQt/LSxKIcSwtHO8Scwbw/AMJLfCE7DGq4FIVaz/UAw0QjYvUHGE
vCF6UvvAaoy6eXcuEsTebFGlUkcitfjSOjxNSqnkxKV4ODhlitlxuU4yUv8B
3CmhyZqBjnEymeA6fL06uD42uJ7oO+eDuLgpf/xskliW45jaL9dY4G6l/VnW
+htLdPePbuLdYfqzJ6glnEeN6T4FbD+azQZnE/yAmmHuu6twlmtqfMPtpaSp
4y38tHQXA4vt3VO8v90XcbmvP3huZT7JXGGOmHb2c774mV9q5AlH4q7EQuks
Wag5F/Drm8mRJJe/LuvCylWVattvTYNiqpTNJNNjpELvq279Zt6V3rZBaeXr
PWiDqpT1TnJKvOajsE2AL125on2UJAb5B3svcIOkBl4LW7WOgViUouFC02Eh
Rn/lJ+Mm3UmDbTjqfvAyNbaku/M3XxxCeNDN2zqbKhGkzqq1lHZcmgbvb3/+
jPloY3m6dAMQgRIeuajohg2erPhumCSQnJa5KJOp0ZJ+vuSGEoYhLaVja9xb
t6wYpZNnR3RvEUJeDTII/4tRMK4w+zA5JBKENRWul4D6+rqK1PYwXm+wk4jv
yltfo3eK6VPnJ7/AYTpsev42ij3hhdV637Ucfy0+FL03kJKNNupqjEHrzrnJ
nFv3SJHT/lbMXOc3KQgdIcjlzXM5u0gmF2eLkvtSRs1u7rCha8fkdrA2rRuD
qWRUV9vd8d93x97oeJUZCAYs9oBgEZ0dyrBR6rdQ7r5vQ0o7fR9h0Rrr8EuS
L9qNP7Q1mhfA49gtOPe1C1CstKDUl419P1fPqQ5oHqbif8EIEejMuVQHp6xJ
UHdTIIYQpZgl9TdkECobUp3SNdg4SjbqazU16WZy/z+cR/qLn5n4/FkSwpa6
+xurtSz5HhxF91XnLrepa93ikFI49k6oh6qda2aI9aGWdoRxepaknFRvwhxJ
IOOkWzAZZvLEta8hBOxkwfqcZanuCU7pvjnphjSu+fYwf7YWFBtVjr6UCAbu
MFG7fiA+oUsgMlxZEes3wd6MnxgqGQsWAlnUSWNbjZ1NyLNbvW0ELpLJarUt
UHOVC37oNPOqKEDBz/OiELnee/3qfP9hctQnVzCbGJvxhxm8aHtR6Xx1gq94
l/hxgya20RLfly2h4pLF4cFZILgcOrfFtXIlHTnAYCcRnSzrHjdJLwp8Zxdx
HPpWh5bN15rac2yzpcUhusaCEDAi469R2IkKb5+PevKjrm6TRGWEJzKzRo3G
Bk9XPXcfK0GWcLUSS+dwtKM75fscU19fXj+5vLx2gQDhIUiTRFHfatRs36w7
P1woWbluh3sSh2ArM2xPCvpnRDy3dY8XH47cRyukrog4K+6ZnYNHk6f8oBEF
dxpa+lHn+JqMTqSuP5y7mMwFEj2tGE6d6xYQPMtmYeeJHINVM3SfIxRawzqr
50nMFAelvDWUo4TXK3CD1IrhHRLPbbi9Us0o2HuJ7P8KVZPG1LZR5c9H0C2N
Od3SKGr3aurhmATgE3yrcEm7rb9jUHgsc9wIXfhwmsLXwqpSMgF9l1wajuut
iHPQFrrGBdFUg8Xlk2Gt3/KFFyAZdrko0Xb8MlLDTbUUnXRa2gV8+p/DaVIw
p22+pYVaB1AM62KAnHpZKK1z9tLXKKnbSGGOufBjtSv7uLqyBzlyyQZ8LCJx
/yxkFlAB0KoKt5fQH0+kq8t9JuSmU3829LWCUR3EbQqzxlwGZ9scXz0K68qW
nJkZ6MXyRqKeLOyKJZnjcs4TNatTQOJS2QFz1bt3EWoKxvy+NCiJrw0xd7iO
2ikg8r3U29C3s3maxx+RJM0u+f4Yje0bF+S6PQIdgH3oBdV/B2sQK4mfuc8c
+8kz+hCY7X4w5gNY27yy3HUuoxqxFwYm7vMSxKu6J/ZLRYaBSDZSC30XHp5D
uO1pxnXzF3qd480S6YxYYPuHi276mjK/l9Rlow+V71hcZGNXWJ1d3nxl6HEB
Dldz04RL1/SmKvkbQBgwlWEpdiSpPZDZjT9Pt3u0fAQlws4yAxwJ7newTPIN
CMlHoef29d4agAgKZ4ZEJWoX2PCMqCWOA0xwK0UxXqfm+5faS0bkfzFckLNo
neEEE7eh70aFOsZpNt+JVSenGx1ls2Y1HPffz+PZ25diulw5/MEM7mN4pziJ
sUddIQvaqjCebvYqeQs5UMn0hm84cgcF5HxzoSXqccFbjEZ8Tl2IfKsFP+vj
GNbbA1Z/fE1Q/rNE91Uluq+qsXWKaVw1O+lWzYCyvQW5s6E1znyN7KGVt+OH
V96aRbqj3qFHfQg87R36lIeeNet5x8P1vKjrCgNlGVQUNhG34MoCn8Dukq5S
iCeJJfvDcR731vJNuKEaopVInw3lGlPgfI2nTlQ3lXryp0p9q0oNyP0x0/kF
aNwDdc2NP22qW081+7RHL79U9j5pCvTJHyTQGBZIc9dNrs5XeQ5HhNbdmod6
sll/pNKK9BZptAyTsFJEDb9f6dNXHzM8uPg6GB9gpG59XwvKzPowd3Z50RNE
NMP8AGGMLBCCi0rm0tFNfeyUKGBYFGvFdEJqfu4sGN+JjLBiT2t08ikT19WO
zVfJLYTc0VL32xmJy/GzfvVNL5SP4JLXn2bikZtjmt/wDoRtTF9mfpwWmce3
HKfDlmM4Koxsr2pw9VU+zvTAQoe7sOeSL+ENtUYCJEgIdat9Usij67DuxMGH
jBTPcoxR3MBIJcbGlbXNCxwH/Nla3/9Q11Kc9QE9w+utSV2NkQRAXzUGjRsn
EYCydzUq5Qofus+WUt4lS+pTro8hOolkqaYijXq+xBjeP6fbzDHQZVGldKzi
TdVZWFcZdPR6IJ389yER43u//ltf+OzDt3FZW653h3YVT5FRwX+6xiV3k2lb
13QpwybfTMY8ArfZJjmgcM1tSdjzy60tA9+/nDc/YQkCHnyI0oQfwAxvl+Ls
uuPmQdhyfmv2dvYQBaED4F1OsiMt0NWcj1L1d2QLvTS2pKIMldxw8e4XQ8sg
rUE4/PWv6opmFl7aKEv3RKIZHKMUn3b56/P0Wh5fMx7ypjnlio/dmFRCUQHU
7BSUKdPy/t1GMi8D732neVMQp1xlFnPg+mAStWe1xg9B0S6eTU7dAbPUwFDU
PKeN++5+GvcjyI0yTEpO3K76VQAg//2lG3OBN5vzDbyTnteesTL0spqnxq7Q
VoTGqrHcLLwaTkaGG2gxq8d3ioHMboZS/HHJWZ29anQUBURENDO+NgNxwlSd
v3vz5t1bzyFuBXOf1pUxNeYz93/rQH+dc84HKVfkaaqLqbtaAWLUkSKKJ4al
yLc8/ilFf0qR+7j4HAzq7s7/A3Fs3VwrZQAA

-->

</rfc>
