<?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-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-moq-warp-01" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.0 -->
  <front>
    <title>WARP Streaming Format</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-moq-warp-01"/>
    <author fullname="Will Law">
      <organization>Akamai</organization>
      <address>
        <email>wilaw@akamai.com</email>
      </address>
    </author>
    <author fullname="Luke Curley">
      <organization>Twitch</organization>
      <address>
        <email>kixelated@gmail.com</email>
      </address>
    </author>
    <author fullname="Victor Vasiliev">
      <organization>Google</organization>
      <address>
        <email>vasilvv@google.com</email>
      </address>
    </author>
    <author fullname="Suhas Nandakumar">
      <organization>Cisco</organization>
      <address>
        <email>snandaku@cisco.com</email>
      </address>
    </author>
    <author fullname="Kirill Pugin">
      <organization>Meta</organization>
      <address>
        <email>ikir@meta.com</email>
      </address>
    </author>
    <date year="2025" month="July" day="22"/>
    <area>Applications and Real-Time</area>
    <workgroup>Media Over QUIC</workgroup>
    <keyword>MoQ</keyword>
    <keyword>MoQTransport</keyword>
    <keyword>WARP</keyword>
    <abstract>
      <?line 73?>

<t>This document specifies the WARP Streaming Format, designed to operate on Media Over QUIC Transport.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://moq-wg.github.io/warp-streaming-format/ draft-ietf-moq-warp.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-moq-warp/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Media Over QUIC Working Group mailing list (<eref target="mailto:moq@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/moq/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/moq/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/moq-wg/warp-streaming-format"/>.</t>
    </note>
  </front>
  <middle>
    <?line 78?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>WARP Streaming Format (WARP) is a media format designed to deliver LOC <xref target="LOC"/>
compliant media content over Media Over QUIC Transport (MOQT) <xref target="MoQTransport"/>.
WARP works by fragmenting the bitstream into objects that can be independently
transmitted. WARP leverages a catalog format to describe the output of the
original publisher. WARP specifies how content should be packaged and signaled,
defines how the catalog communicates the content, specifies prioritization
strategies for real-time and workflows for beginning and terminating broadcasts.
WARP also details how end-subscribers may perform adaptive bitrate switching.
WARP is targeted at real-time and interactive levels of live latency, as well as
VOD content.</t>
      <t>This document describes version 1 of the streaming format.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>This document uses the conventions detailed in Section 1.3 of <xref target="RFC9000"/> when
describing the binary encoding.</t>
    </section>
    <section anchor="scope">
      <name>Scope</name>
      <t>The purpose of WARP is to provide an interoperable media streaming format
operating over <xref target="MoQTransport"/>. Interoperability implies that:</t>
      <ul spacing="normal">
        <li>
          <t>An original publisher can package incoming media content into tracks, prepare
a catalog and annouce the availability of the content to a MOQT relay. Media
content refers to audio and video data, as well as ancillary data such as
captions, subtitles, accessibility and other timed-text data.</t>
        </li>
        <li>
          <t>A MOQT relay can process the annoucement as well as cache and propagate the
tracks, both to other relays or to the final subscriber.</t>
        </li>
        <li>
          <t>A final subscriber can parse the catalog, request tracks, decode and render
the received media data.</t>
        </li>
      </ul>
      <t>WARP is intended to provide a format for delivering commercial media content. To
that end, the following features are within scope:</t>
      <ul spacing="normal">
        <li>
          <t>Video codecs - all codecs supported by <xref target="LOC"/></t>
        </li>
        <li>
          <t>Audio codecs  - all audio codecs supported by <xref target="LOC"/></t>
        </li>
        <li>
          <t>Catalog track - describes the availability and characteristics of content
produced by the original publisher.</t>
        </li>
        <li>
          <t>Timeline track - describes the relationship between MOQT Group and Object IDs
to media time.</t>
        </li>
        <li>
          <t>Token-based authorization and access control</t>
        </li>
        <li>
          <t>Captions + Subtitles - support for <xref target="WEBVTT"/> and <xref target="IMSC1"/> transmission</t>
        </li>
        <li>
          <t>Latency support across multiple regimes (thresholds are informative only and
describe the delay between the original publisher placing the content on the
wire and the final subscriber rendering it)</t>
        </li>
        <li>
          <t>Real-time - less than 500ms</t>
        </li>
        <li>
          <t>Interactive - between 500ms and 2500ms</t>
        </li>
        <li>
          <t>Standard  - above 2500ms</t>
        </li>
        <li>
          <t>VOD latency - content that was previously produced, is no longer live and is
available indefinitely.</t>
        </li>
        <li>
          <t>Content encryption</t>
        </li>
        <li>
          <t>ABR between time-synced tracks - subscribers may switch between between tracks
at different quality levels in order to maximize visual or audio quality under
fconditions of throughput variability.</t>
        </li>
        <li>
          <t>Capable of delivering interstitial advertising.</t>
        </li>
        <li>
          <t>Logs and analytics management - support for the reporting of client-side QoE
 and relay delivery actions.</t>
        </li>
      </ul>
      <t>Initial verisons of WARP will prioritize basic features necessary to exercise
interoperability across delivery systems. Later versions will add commercially
necessary features.</t>
    </section>
    <section anchor="mediapackaging">
      <name>Media packaging</name>
      <t>WARP delivers LOC <xref target="LOC"/> packaged media bitstreams.</t>
      <section anchor="loc-packaging">
        <name>LOC packaging</name>
        <t>This specification references Low Overhead Container (LOC) <xref target="LOC"/> to define how
audio and video content is packaged. With this packaging mode, each
EncodedAudioChunk or EncodedVideoChunk sample is placed in a separate MOQT
Object. Samples that belong to the same Group of Pictures (GOP) <bcp14>MUST</bcp14> be placed
within the same MOQT Group.</t>
        <t>When LOC packaging is used for a track, the catalog packaging attribute
(<xref target="packaging"/>) <bcp14>MUST</bcp14> be present and it <bcp14>MUST</bcp14> be populated with a value of "loc".</t>
      </section>
      <section anchor="timealignment">
        <name>Time-alignment</name>
        <t>WARP Tracks <bcp14>MAY</bcp14> be time-aligned. Those that are, are subject to the following
requirements:</t>
        <ul spacing="normal">
          <li>
            <t>Time-aligned tracks <bcp14>MUST</bcp14> be advertised in the catalog as belonging to a common
render group.</t>
          </li>
          <li>
            <t>The render duration of the first media object of each equally numbered MOQT
Group, after decoding, <bcp14>MUST</bcp14> have overlapping presentation time.</t>
          </li>
        </ul>
        <t>A consequence of this restriction is that a WARP receiver <bcp14>SHOULD</bcp14> be able to
cleanly switch between time-aligned media tracks at group boundaries.</t>
      </section>
      <section anchor="contentprotection">
        <name>Content protection and encryption</name>
        <t>ToDo - content protection for LOC-packaged content.</t>
      </section>
    </section>
    <section anchor="catalog">
      <name>Catalog</name>
      <t>A Catalog is a MOQT Track that provides information about the other tracks being
produced by a WARP publisher. A Catalog is used by WARP publishers for
advertising their output and for subscribers in consuming that output. The
payload of the Catalog object is opaque to Relays and can be end-to-end
encrypted. The Catalog provides the names and namespaces of the tracks being
produced, along with therelationship between tracks, properties of the tracks
that consumers may use for selection and any relevant initialization data.</t>
      <t>The catalog track <bcp14>MUST</bcp14> have a case-sensitive Track Name of "catalog".</t>
      <t>A catalog object <bcp14>MAY</bcp14> be independent of other catalog objects or it <bcp14>MAY</bcp14> represent
a delta update of a prior catalog object. The first catalog object published
within a new group <bcp14>MUST</bcp14> be independent.  A catalog object <bcp14>SHOULD</bcp14> only be
published only when the availability of tracks changes.</t>
      <t>Each catalog update <bcp14>MUST</bcp14> be mapped to a discreet MOQT Object.</t>
      <section anchor="catalog-fields">
        <name>Catalog Fields</name>
        <t>A catalog is a JSON <xref target="JSON"/> document, comprised of a series of mandatory and
optional fields. At a minimum, a catalog <bcp14>MUST</bcp14> provide all mandatory fields. A
producer <bcp14>MAY</bcp14> add additional fields to the ones described in this draft. Custom
field names <bcp14>MUST NOT</bcp14> collide with field names described in this draft. The order
of field names within the JSON document is not important.</t>
        <t>A parser <bcp14>MUST</bcp14> ignore fields it does not understand.</t>
        <t>Table 1 provides an overview of all fields defined by this document.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">Name</th>
              <th align="left">Definition</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">WARP version</td>
              <td align="left">version</td>
              <td align="left">
                <xref target="warpversion"/></td>
            </tr>
            <tr>
              <td align="left">Delta update</td>
              <td align="left">deltaUpdate</td>
              <td align="left">
                <xref target="deltaupdate"/></td>
            </tr>
            <tr>
              <td align="left">Add tracks</td>
              <td align="left">addTracks</td>
              <td align="left">
                <xref target="addtracks"/></td>
            </tr>
            <tr>
              <td align="left">Remove tracks</td>
              <td align="left">removeTracks</td>
              <td align="left">
                <xref target="removetracks"/></td>
            </tr>
            <tr>
              <td align="left">Clone tracks</td>
              <td align="left">cloneTracks</td>
              <td align="left">
                <xref target="clonetracks"/></td>
            </tr>
            <tr>
              <td align="left">Generated at</td>
              <td align="left">generatedAt</td>
              <td align="left">
                <xref target="generatedat"/></td>
            </tr>
            <tr>
              <td align="left">Tracks</td>
              <td align="left">tracks</td>
              <td align="left">
                <xref target="tracks"/></td>
            </tr>
            <tr>
              <td align="left">Track namespace</td>
              <td align="left">namespace</td>
              <td align="left">
                <xref target="tracknamespace"/></td>
            </tr>
            <tr>
              <td align="left">Track name</td>
              <td align="left">name</td>
              <td align="left">
                <xref target="trackname"/></td>
            </tr>
            <tr>
              <td align="left">Packaging</td>
              <td align="left">packaging</td>
              <td align="left">
                <xref target="packaging"/></td>
            </tr>
            <tr>
              <td align="left">Is Live</td>
              <td align="left">isLive</td>
              <td align="left">
                <xref target="islive"/></td>
            </tr>
            <tr>
              <td align="left">Track role</td>
              <td align="left">role</td>
              <td align="left">
                <xref target="trackrole"/></td>
            </tr>
            <tr>
              <td align="left">Track label</td>
              <td align="left">label</td>
              <td align="left">
                <xref target="tracklabel"/></td>
            </tr>
            <tr>
              <td align="left">Render group</td>
              <td align="left">renderGroup</td>
              <td align="left">
                <xref target="rendergroup"/></td>
            </tr>
            <tr>
              <td align="left">Alternate group</td>
              <td align="left">altGroup</td>
              <td align="left">
                <xref target="altgroup"/></td>
            </tr>
            <tr>
              <td align="left">Initialization data</td>
              <td align="left">initData</td>
              <td align="left">
                <xref target="initdata"/></td>
            </tr>
            <tr>
              <td align="left">Dependencies</td>
              <td align="left">depends</td>
              <td align="left">
                <xref target="dependencies"/></td>
            </tr>
            <tr>
              <td align="left">Temporal ID</td>
              <td align="left">temporalId</td>
              <td align="left">
                <xref target="temporalid"/></td>
            </tr>
            <tr>
              <td align="left">Spatial ID</td>
              <td align="left">spatialId</td>
              <td align="left">
                <xref target="spatialid"/></td>
            </tr>
            <tr>
              <td align="left">Codec</td>
              <td align="left">codec</td>
              <td align="left">
                <xref target="codec"/></td>
            </tr>
            <tr>
              <td align="left">Mime type</td>
              <td align="left">mimeType</td>
              <td align="left">
                <xref target="mimetype"/></td>
            </tr>
            <tr>
              <td align="left">Framerate</td>
              <td align="left">framerate</td>
              <td align="left">
                <xref target="framerate"/></td>
            </tr>
            <tr>
              <td align="left">Timescale</td>
              <td align="left">timescale</td>
              <td align="left">
                <xref target="timescale"/></td>
            </tr>
            <tr>
              <td align="left">Bitrate</td>
              <td align="left">bitrate</td>
              <td align="left">
                <xref target="bitrate"/></td>
            </tr>
            <tr>
              <td align="left">Width</td>
              <td align="left">width</td>
              <td align="left">
                <xref target="width"/></td>
            </tr>
            <tr>
              <td align="left">Height</td>
              <td align="left">height</td>
              <td align="left">
                <xref target="height"/></td>
            </tr>
            <tr>
              <td align="left">Audio sample rate</td>
              <td align="left">samplerate</td>
              <td align="left">
                <xref target="audiosamplerate"/></td>
            </tr>
            <tr>
              <td align="left">Channel configuration</td>
              <td align="left">channelConfig</td>
              <td align="left">
                <xref target="channelconfiguration"/></td>
            </tr>
            <tr>
              <td align="left">Display width</td>
              <td align="left">displayWidth</td>
              <td align="left">
                <xref target="displaywidth"/></td>
            </tr>
            <tr>
              <td align="left">Display height</td>
              <td align="left">displayHeight</td>
              <td align="left">
                <xref target="displayheight"/></td>
            </tr>
            <tr>
              <td align="left">Language</td>
              <td align="left">lang</td>
              <td align="left">
                <xref target="language"/></td>
            </tr>
            <tr>
              <td align="left">Parent name</td>
              <td align="left">parentName</td>
              <td align="left">
                <xref target="parentname"/></td>
            </tr>
            <tr>
              <td align="left">Track duration</td>
              <td align="left">trackDuration</td>
              <td align="left">
                <xref target="trackduration"/></td>
            </tr>
          </tbody>
        </table>
        <t>Table 2 defines the allowed locations for these fields within the document</t>
        <table>
          <thead>
            <tr>
              <th align="left">Location</th>
              <th align="left">Allowed locations for the field</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">R</td>
              <td align="left">The Root of the JSON object</td>
            </tr>
            <tr>
              <td align="left">T</td>
              <td align="left">Track object</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="warpversion">
        <name>WARP version</name>
        <t>Location: R    Required: Yes    JSON Type: Number</t>
        <t>Specifies the version of WARP referenced by this catalog. There is no guarantee
that future catalog versions are backwards compatible and field definitions and
interpretation may change between versions. A subscriber <bcp14>MUST NOT</bcp14> attempt to
parse a catalog version which it does not understand.</t>
        <section anchor="deltaupdate">
          <name>Delta update</name>
          <t>Location: R    Required: Optional    JSON Type: Boolean</t>
          <t>A Boolean that if true indicates that this catalog object represents a delta
(or partial) update. A delta update has a restricted set of fields and special
processing rules - see <xref target="deltaupdates"/>. This value <bcp14>SHOULD NOT</bcp14> be added to a
catalog if it is false.</t>
        </section>
        <section anchor="addtracks">
          <name>Add tracks</name>
          <t>Location: R    Required: Optional    JSON Type: Array</t>
          <t>Indicates a delta processing instruction to add new tracks. The value of this
field is an Array of track objects <xref target="trackobject"/>.</t>
        </section>
        <section anchor="removetracks">
          <name>Remove tracks</name>
          <t>Location: R    Required: Optional    JSON Type: Array</t>
          <t>Indicates a delta processing instruction to remove new tracks. The value of this
field is an Array of track objects <xref target="trackobject"/>. Each track object <bcp14>MUST</bcp14> include
a Track Name <xref target="trackname"/> field, <bcp14>MAY</bcp14> include a Track Namespace <xref target="tracknamespace"/>
field and <bcp14>MUST NOT</bcp14> hold any other fields.</t>
        </section>
        <section anchor="clonetracks">
          <name>Clone tracks</name>
          <t>Location: R    Required: Optional    JSON Type: Array</t>
          <t>Indicates a delta processing instruction to clone new tracks from previously declared
tracks. The value of this field is an Array of track objects <xref target="trackobject"/>. Each
track object <bcp14>MUST</bcp14> include a Parent Name <xref target="parentname"/> field.</t>
        </section>
        <section anchor="generatedat">
          <name>Generated at</name>
          <t>Location: R    Required: Optional    JSON Type: Number</t>
          <t>The wallclock time at which this catalog instance was generated, expressed as the
number of milliseconds that have elapsed since January 1, 1970 (midnight UTC/GMT).
This field <bcp14>SHOULD NOT</bcp14> be included if the isLive field is false.</t>
        </section>
        <section anchor="tracks">
          <name>Tracks</name>
          <t>Location: R    Required: Yes    JSON Type: Array</t>
          <t>An array of track objects <xref target="trackobject"/>.</t>
        </section>
        <section anchor="trackobject">
          <name>Tracks object</name>
          <t>A track object is JSON Object containing a collection of fields whose location
is specified 'T' in Table 2.</t>
        </section>
        <section anchor="tracknamespace">
          <name>Track namespace</name>
          <t>Location: T    Required: Optional    JSON Type: String</t>
          <t>The name space under which the track name is defined. See section 2.3 of
<xref target="MoQTransport"/>. The track namespace is optional. If it is not declared within
a track, then each track <bcp14>MUST</bcp14> inherit the namespace of the catalog track. A
namespace declared in a track object overwrites any inherited name space.</t>
        </section>
        <section anchor="trackname">
          <name>Track name</name>
          <t>Location: T    Required: Yes   JSON Type: String</t>
          <t>A string defining the name of the track. See section 2.3 of <xref target="MoQTransport"/>.
Within the catalog, track names <bcp14>MUST</bcp14> be unique per namespace.</t>
        </section>
        <section anchor="packaging">
          <name>Packaging</name>
          <t>Location: T    Required: Yes   JSON Type: String</t>
          <t>A string defining the type of payload encapsulation. Allowed values are strings
as defined in Table 3.</t>
          <t>Table 3: Allowed packaging values</t>
          <table>
            <thead>
              <tr>
                <th align="left">Name</th>
                <th align="left">Value</th>
                <th align="left">Reference</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">LOC</td>
                <td align="left">loc</td>
                <td align="left">See RFC XXXX</td>
              </tr>
              <tr>
                <td align="left">Timeline</td>
                <td align="left">timeline</td>
                <td align="left">See <xref target="timelinetrack"/></td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="trackrole">
          <name>Track role</name>
          <t>Location: T    Required: Optional   JSON Type: String</t>
          <t>A string defining the role of content carried by the track. Reserved roles
are described in Table 4. These role values are case-sensitive.</t>
          <t>This role field <bcp14>MAY</bcp14> be used in conjunction with the Mimetype <xref target="mimetype"/> to
fully describe the content of the track.</t>
          <t>Table 4: Reserved track roles</t>
          <table>
            <thead>
              <tr>
                <th align="left">Role</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">audiodescription</td>
                <td align="left">An audio description for visually impaired users</td>
              </tr>
              <tr>
                <td align="left">video</td>
                <td align="left">Visual content</td>
              </tr>
              <tr>
                <td align="left">audio</td>
                <td align="left">Audio content</td>
              </tr>
              <tr>
                <td align="left">timeline</td>
                <td align="left">A WARP timeline <xref target="timelinetrack"/></td>
              </tr>
              <tr>
                <td align="left">caption</td>
                <td align="left">A textual representation of the audio track</td>
              </tr>
              <tr>
                <td align="left">subtitle</td>
                <td align="left">A transcription of the spoken dialogue</td>
              </tr>
              <tr>
                <td align="left">signlanguage</td>
                <td align="left">A visual track for hearing impaired users.</td>
              </tr>
            </tbody>
          </table>
          <t>Custom roles <bcp14>MAY</bcp14> be used as long as they do not collide with the reserved roles.</t>
        </section>
        <section anchor="islive">
          <name>Is Live</name>
          <t>Location: T    Required: Required  JSON Type: Boolean</t>
          <t>True if new Objects will be added to the track.
False if no new Objects will be added to the track. This is sent under two
possible conditions:
* the publisher of a previously live track has ended the track.
* the track is Video-On-Demand (VOD) and was never live.</t>
        </section>
        <section anchor="tracklabel">
          <name>Track label</name>
          <t>Location: TF    Required: Optional   JSON Type: String</t>
          <t>A string defining a human-readable label for the track. Examples might be
"Overhead camera view" or "Deutscher Kommentar". Note that the <xref target="JSON"/> spec
requires UTF-8 support by decoders.</t>
        </section>
        <section anchor="rendergroup">
          <name>Render group</name>
          <t>Location: T    Required: Optional   JSON Type: Number</t>
          <t>An integer specifying a group of tracks which are designed to be rendered
together. Tracks with the same group number <bcp14>SHOULD</bcp14> be rendered simultaneously,
are usually time-aligned and are designed to accompany one another. A common
example would be tying together audio and video tracks.</t>
        </section>
        <section anchor="altgroup">
          <name>Alternate group</name>
          <t>Location: T    Required: Optional   JSON Type: Number</t>
          <t>An integer specifying a group of tracks which are alternate versions of
one-another. Alternate tracks represent the same media content, but differ in
their selection properties. Alternate tracks <bcp14>SHOULD</bcp14> have matching framerate
<xref target="framerate"/> and media time sequences. A subscriber typically subscribes to
one track from a set of tracks specifying the same alternate group number. A
common example would be a set video tracks of the same content offered in
alternate bitrates.</t>
        </section>
        <section anchor="initdata">
          <name>Initialization data</name>
          <t>Location: T    Required: Optional   JSON Type: String</t>
          <t>A string holding Base64 <xref target="BASE64"/> encoded initialization data for the track.</t>
        </section>
        <section anchor="dependencies">
          <name>Dependencies</name>
          <t>Location: T    Required: Optional   JSON Type: Array</t>
          <t>Certain tracks may depend on other tracks for decoding. Dependencies holds an
array of track names <xref target="trackname"/> on which the current track is dependent.
Since only the track name is signaled, the namespace of the dependencies is
assumed to match that of the track declaring the dependencies.</t>
        </section>
        <section anchor="temporalid">
          <name>Temporal ID</name>
          <t>Location: T    Required: Optional   JSON Type: Number</t>
          <t>A number identifying the temporal layer/sub-layer encoding of the track,
starting with 0 for the base layer, and increasing with higher temporal
fidelity.</t>
        </section>
        <section anchor="spatialid">
          <name>Spatial ID</name>
          <t>Location: T    Required: Optional   JSON Type: Number</t>
          <t>A number identifying the spatial layer encoding of the track, starting with 0
for the base layer, and increasing with higher fidelity.</t>
        </section>
        <section anchor="codec">
          <name>Codec</name>
          <t>Location: T    Required: Optional   JSON Type: String</t>
          <t>A string defining the codec used to encode the track.
For LOC packaged content, the string codec registrations are defined in Sect 3
and Section 4 of <xref target="WEBCODECS-CODEC-REGISTRY"/>.</t>
        </section>
        <section anchor="mimetype">
          <name>Mimetype</name>
          <t>Location: T    Required: Optional   JSON Type: String</t>
          <t>A string defining the mime type <xref target="MIME"/> of the track.</t>
        </section>
        <section anchor="framerate">
          <name>Framerate</name>
          <t>Location: T    Required: Optional   JSON Type: Number</t>
          <t>A number defining the video framerate of the track, expressed as frames per
second.</t>
        </section>
        <section anchor="timescale">
          <name>Timescale</name>
          <t>Location: T    Required: Optional   JSON Type: Number</t>
          <t>The number of time units that pass per second.</t>
        </section>
        <section anchor="bitrate">
          <name>Bitrate</name>
          <t>Location: T    Required: Optional   JSON Type: Number</t>
          <t>A number defining the bitrate of track, expressed in bits per second.</t>
        </section>
        <section anchor="width">
          <name>Width</name>
          <t>Location: T    Required: Optional   JSON Type: Number</t>
          <t>A number expressing the encoded width of the video frames in pixels.</t>
        </section>
        <section anchor="height">
          <name>Height</name>
          <t>Location: T    Required: Optional   JSON Type: Number</t>
          <t>A number expressing the encoded height of the video frames in pixels.</t>
        </section>
        <section anchor="audiosamplerate">
          <name>Audio sample rate</name>
          <t>Location: T    Required: Optional   JSON Type: Number</t>
          <t>The number of audio frame samples per second. This property <bcp14>SHOULD</bcp14> only
accompany audio codecs.</t>
        </section>
        <section anchor="channelconfiguration">
          <name>Channel configuration</name>
          <t>Location: T    Required: Optional   JSON Type: String</t>
          <t>A string specifying the audio channel configuration. This property <bcp14>SHOULD</bcp14> only
accompany audio codecs. A string is used in order to provide the flexibility to
describe complex channel configurations for multi-channel and Next Generation
Audio schemas.</t>
        </section>
        <section anchor="displaywidth">
          <name>Display width</name>
          <t>Location: T    Required: Optional   JSON Type: Number</t>
          <t>A number expressing the intended display width of the track content in pixels.</t>
        </section>
        <section anchor="displayheight">
          <name>Display height</name>
          <t>Location: T    Required: Optional   JSON Type: Number</t>
          <t>A number expressing the intended display height of the track content in pixels.</t>
        </section>
        <section anchor="language">
          <name>Language</name>
          <t>Location: T    Required: Optional   JSON Type: String</t>
          <t>A string defining the dominant language of the track. The string <bcp14>MUST</bcp14> be one of
the standard Tags for Identifying Languages as defined by <xref target="LANG"/>.</t>
        </section>
        <section anchor="parentname">
          <name>Parent name</name>
          <t>Location: T    Required: Optional   JSON Type: String</t>
          <t>A string defining the parent track name <xref target="trackname"/> to be cloned. This field
<bcp14>MUST</bcp14> only be included inside a Clone tracks <xref target="clonetracks"/> object.</t>
        </section>
        <section anchor="trackduration">
          <name>Track duration</name>
          <t>Location: T    Required: Optional   JSON Type: Number</t>
          <t>The duration of the track expressed in integer milliseconds. This field <bcp14>MUST NOT</bcp14>
be included if the isLive <xref target="islive"/> field value is false.</t>
        </section>
      </section>
      <section anchor="deltaupdates">
        <name>Delta updates</name>
        <t>A catalog update might contain incremental changes. This is a useful property if
many tracks may be initially declared but then there are small changes to a
subset of tracks. The producer can issue a delta update to describe these changes.
Changes are described incrementally, meaning that a delta update can itself modify
a prior delta update.</t>
        <t>A restricted set of operations are allowed with each delta update:
* Add a new track that has not previously been declared.
* Add a new track by cloning a previously declared track.
* Remove a track that has been previously declared.</t>
        <t>The following rules are to be followed in constructing and processing delta updates:</t>
        <ul spacing="normal">
          <li>
            <t>A delta update <bcp14>MUST</bcp14> include the Delta Update <xref target="deltaupdate"/> field set to true.</t>
          </li>
          <li>
            <t>A delta update catalog <bcp14>MUST</bcp14> contain at least one instance of Add tracks
<xref target="addtracks"/>, Remove tracks <xref target="removetracks"/> or Clone Tracks <xref target="clonetracks"/>
fields and <bcp14>MAY</bcp14> contain more. It <bcp14>MUST NOT</bcp14> contain an instance of a Tracks
<xref target="tracks"/> field or a WARP version <xref target="warpversion"/> field.</t>
          </li>
          <li>
            <t>The Add, Delete and Clone operations are applied sequentially in the order they
are declared in the document. Each operation in the sequence is applied to the
target document; the resulting document becomes the target of the next operation.
Evaluation continues until all operations are successfully applied.</t>
          </li>
          <li>
            <t>A Cloned track inherits all the attributes of the track defined by the Parent Name
<xref target="parentname"/>, except the Track Name which <bcp14>MUST</bcp14> be new. Attributes redefined
in the cloning Object overwrite inherited values.</t>
          </li>
          <li>
            <t>The tuple of Track Namespace and Track Name defines a fixed set of Track attributes
which <bcp14>MUST NOT</bcp14> be modified after being declared. To modify any attribute, a new
track with a different Namespace|Name tuple is created by Adding or Cloning and then
the old track is removed.</t>
          </li>
        </ul>
      </section>
      <section anchor="catalog-examples">
        <name>Catalog Examples</name>
        <t>The following section provides non-normative JSON examples of various catalogs
compliant with this draft.</t>
        <section anchor="time-aligned-audiovideo-tracks-with-single-quality">
          <name>Time-aligned Audio/Video Tracks with single quality</name>
          <t>This example shows a catalog for a media producer capable of sending LOC
packaged, time-aligned audio and video tracks.</t>
          <sourcecode type="json"><![CDATA[
{
  "version": 1,
  "generatedAt": 1746104606044,
  "tracks": [
    {
      "name": "1080p-video",
      "namespace": "conference.example.com/conference123/alice",
      "packaging": "loc",
      "isLive": true,
      "role": "video",
      "renderGroup": 1,
      "codec":"av01.0.08M.10.0.110.09",
      "width":1920,
      "height":1080,
      "framerate":30,
      "bitrate":1500000
    },
    {
      "name": "audio",
      "namespace": "conference.example.com/conference123/alice",
      "packaging": "loc",
      "isLive": true,
      "role": "audio",
      "renderGroup": 1,
      "codec":"opus",
      "samplerate":48000,
      "channelConfig":"2",
      "bitrate":32000
    }
   ]
}

]]></sourcecode>
        </section>
        <section anchor="simulcast-video-tracks-3-alternate-qualities-along-with-audio">
          <name>Simulcast video tracks - 3 alternate qualities along with audio</name>
          <t>This example shows catalog for a media producer capable of sending 3
time-aligned video tracks for high definition, low definition and medium
definition video qualities, along with an audio track. In this example the
namespace is absent, which infers that each track must inherit the namespace
of the catalog.</t>
          <sourcecode type="json"><![CDATA[
{
  "version": 1,
  "generatedAt": 1746104606044,
  "tracks":[
    {
      "name": "hd",
      "renderGroup": 1,
      "packaging": "loc",
      "isLive": true,
      "role": "video",
      "codec":"av01",
      "width":1920,
      "height":1080,
      "bitrate":5000000,
      "framerate":30,
      "altGroup":1
    },
    {
      "name": "md",
      "renderGroup": 1,
      "packaging": "loc",
      "isLive": true,
      "role": "video",
      "codec":"av01",
      "width":720,
      "height":640,
      "bitrate":3000000,
      "framerate":30,
      "altGroup":1
    },
    {
      "name": "sd",
      "renderGroup": 1,
      "packaging": "loc",
      "isLive": true,
      "role": "video",
      "codec":"av01",
      "width":192,
      "height":144,
      "bitrate":500000,
      "framerate":30,
      "altGroup":1
    },
    {
      "name": "audio",
      "renderGroup": 1,
      "packaging": "loc",
      "isLive": true,
      "role": "audio",
      "codec":"opus",
      "samplerate":48000,
      "channelConfig":"2",
      "bitrate":32000
    }
   ]
}
]]></sourcecode>
        </section>
        <section anchor="svc-video-tracks-with-2-spatial-and-2-temporal-qualities">
          <name>SVC video tracks with 2 spatial and 2 temporal qualities</name>
          <t>This example shows catalog for a media producer capable
of sending scalable video codec with 2 spatial and 2 temporal
layers with a dependency relation as shown below:</t>
          <sourcecode type="ascii-figure"><![CDATA[
                  +----------+
     +----------->|  S1T1    |
     |            | 1080p30  |
     |            +----------+
     |                  ^
     |                  |
+----------+            |
|  S1TO    |            |
| 1080p15  |            |
+----------+      +-----+----+
      ^           |  SOT1    |
      |           | 480p30   |
      |           +----------+
      |               ^
+----------+          |
|  SOTO     |         |
| 480p15    |---------+
+----------+
]]></sourcecode>
          <t>The corresponding catalog uses "depends" attribute to
express the track relationships.</t>
          <sourcecode type="json"><![CDATA[
{
  "version": 1,
  "generatedAt": 1746104606044,
  "tracks":[
    {
      "name": "480p15",
      "namespace": "conference.example.com/conference123/alice",
      "renderGroup": 1,
      "packaging": "loc",
      "isLive": true,
      "role": "video",
      "codec":"av01.0.01M.10.0.110.09",
      "width":640,
      "height":480,
      "bitrate":3000000,
      "framerate":15
    },
    {
      "name": "480p30",
      "namespace": "conference.example.com/conference123/alice",
      "renderGroup": 1,
      "packaging": "loc",
      "isLive": true,
      "role": "video",
      "codec":"av01.0.04M.10.0.110.09",
      "width":640,
      "height":480,
      "bitrate":3000000,
      "framerate":30,
      "depends": ["480p15"]
    },
    {
      "name": "1080p15",
      "namespace": "conference.example.com/conference123/alice",
      "renderGroup": 1,
      "packaging": "loc",
      "isLive": true,
      "role": "video",
      "codec":"av01.0.05M.10.0.110.09",
      "width":1920,
      "height":1080,
      "bitrate":3000000,
      "framerate":15,
      "depends":["480p15"]
    },

    {
      "name": "1080p30",
      "namespace": "conference.example.com/conference123/alice",
      "renderGroup": 1,
      "packaging": "loc",
      "isLive": true,
      "role": "video",
      "codec":"av01.0.08M.10.0.110.09",
      "width":1920,
      "height":1080,
      "bitrate":5000000,
      "framerate":30,
      "depends": ["480p30", "1080p15"]
    },
    {
      "name": "audio",
      "namespace": "conference.example.com/conference123/alice",
      "renderGroup": 1,
      "packaging": "loc",
      "isLive": true,
      "role": "audio",
      "codec":"opus",
      "samplerate":48000,
      "channelConfig":"2",
      "bitrate":32000
    }
   ]
}
]]></sourcecode>
        </section>
        <section anchor="delta-update-adding-two-tracks">
          <name>Delta update  - adding two tracks</name>
          <t>This example shows the catalog delta update for a media producer adding
two tracks to an established video conference. One track is newly declared,
the other is cloned from a previous track.</t>
          <sourcecode type="json"><![CDATA[
{
  "deltaUpdate": true,
  "generatedAt": 1746104606044,
  "addTracks": [
      {
        "name": "slides",
        "isLive": true,
        "role": "video",
        "codec": "av01.0.08M.10.0.110.09",
        "width": 1920,
        "height": 1080,
        "framerate": 15,
        "bitrate": 750000,
        "renderGroup": 1
      }
   ],
   "cloneTracks": [
      {
        "parentName": "video-1080",
        "name": "video-720",
        "width":1280,
        "height":720,
        "bitrate":600000
      }
   ]
}
]]></sourcecode>
        </section>
        <section anchor="delta-update-removing-tracks">
          <name>Delta update removing tracks</name>
          <t>This example shows a delta update for a media producer removing two tracks
from an established video conference.</t>
          <sourcecode type="json"><![CDATA[
{
  "deltaUpdate": true,
  "generatedAt": 1746104606044,
  "removeTracks": [{"name": "video"},{"name": "slides"}]
}
]]></sourcecode>
        </section>
        <section anchor="time-aligned-audiovideo-tracks-with-custom-field-values">
          <name>Time-aligned Audio/Video Tracks with custom field values</name>
          <t>This example shows catalog for a media producer capable of sending LOC packaged,
time-aligned audio and video tracks along with custom fields in each track
description.</t>
          <sourcecode type="json"><![CDATA[
{
  "version": 1,
  "generatedAt": 1746104606044,
  "tracks": [
    {
      "name": "1080p-video",
      "namespace": "conference.example.com/conference123/alice",
      "packaging": "loc",
      "isLive": true,
      "role": "video",
      "renderGroup": 1,
      "codec":"av01.0.08M.10.0.110.09",
      "width":1920,
      "height":1080,
      "framerate":30,
      "bitrate":1500000,
      "com.example-billing-code": 3201,
      "com.example-tier": "premium",
      "com.example-debug": "h349835bfkjfg82394d945034jsdfn349fns"
    },
    {
      "name": "audio",
      "namespace": "conference.example.com/conference123/alice",
      "packaging": "loc",
      "isLive": true,
      "role": "audio",
      "renderGroup": 1,
      "codec":"opus",
      "samplerate":48000,
      "channelConfig":"2",
      "bitrate":32000
    }
   ]
}

]]></sourcecode>
        </section>
        <section anchor="time-aligned-vod-audiovideo-tracks">
          <name>Time-aligned VOD Audio/Video Tracks</name>
          <t>This example shows catalog for a media producer offering VOD (video on-demand)
non-live content. The content is LOC packaged, and includes time-aligned audio
and video tracks.</t>
          <sourcecode type="json"><![CDATA[
{
  "version": 1,
  "tracks": [
    {
      "name": "video",
      "namespace": "movies.example.com/assets/boy-meets-girl-season3/episode5",
      "packaging": "loc",
      "isLive": false,
      "trackDuration": 8072340,
      "renderGroup": 1,
      "codec":"av01.0.08M.10.0.110.09",
      "width":1920,
      "height":1080,
      "framerate":30,
      "bitrate":1500000
    },
    {
      "name": "audio",
      "namespace": "movies.example.com/assets/boy-meets-girl-season3/episode5",
      "packaging": "loc",
      "isLive": false,
      "trackDuration": 8072340,
      "renderGroup": 1,
      "codec":"opus",
      "samplerate":48000,
      "channelConfig":"2",
      "bitrate":32000
    }
   ]
}

]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="media-transmission">
      <name>Media transmission</name>
      <t>The MOQT Groups and MOQT Objects need to be mapped to MOQT Streams. Irrespective
of the <xref target="mediapackaging"/> in place, each MOQT Object <bcp14>MUST</bcp14> be mapped to a new
MOQT Stream.</t>
      <section anchor="group-numbering">
        <name>Group numbering</name>
        <t>The Group ID of the first Group published in a track at application startup <bcp14>MUST</bcp14> be
a unique integer that will not repeat in the future. One approach to achieve this
is to set the initial Group ID to the creation time of the first Object in the
group, represented as the number of milliseconds since the Unix epoch, rounded to
the nearest millisecond. This ensures that republishing the same track in the
future, such as after a loss of connectivity or an encoder restart, will not result
in smaller or duplicate Group IDs for the same track name. Note that this method
does not prevent duplication if more than 1000 groups are published per second.</t>
        <t>Each subsequent Group ID <bcp14>MUST</bcp14> increase by 1.</t>
        <t>If a publisher is able to maintain state across a republish, it <bcp14>MUST</bcp14> signal the gap
in Group IDs using the MOQT Prior Group ID Gap Extension header.</t>
      </section>
    </section>
    <section anchor="timelinetrack">
      <name>Timeline track</name>
      <t>The timeline track provides data about the previously published groups and their
relationship to wallclock time, media time and associated timed-metadata.
Timeline tracks allow players to seek to precise points behind the live head in
a live broadcast, or for random access in a VOD asset. A timeline track might also
be used to insert events at media times which do not correlate with Object
boundaries. Timeline tracks are optional. Multiple timeline tracks can exist
inside a catalog.</t>
      <section anchor="timeline-track-payload">
        <name>Timeline track payload</name>
        <t>The payload of a timeline track is a UTF-8 encoded CSV text file. This payload
is formatted according to RFC4180 "Common Format and MIME Type for
Comma-Separated Values (CSV)" Files <xref target="RFC4180"/>. The separator is a comma and
each line is separated by a carriage return. The mime-type of a timeline track
<bcp14>MUST</bcp14> be specified as "text/csv" in the catalog.</t>
        <t>Each timeline track begins with a header row of MEDIA_PTS,GROUP_ID,OBJECT_ID,
WALLCLOCK,METADATA. This row defines the 5 columns of data within each record.</t>
        <ul spacing="normal">
          <li>
            <t>MEDIA_PTS: a media timestamp rounded to the nearest millisecond. This entry
<bcp14>MUST NOT</bcp14> be empty. If the Object ID entry is present, then this value <bcp14>MUST</bcp14>
match the media presentation timestamp of the first media sample in the
referenced Object.</t>
          </li>
          <li>
            <t>GROUP_ID: the MOQT Group ID. This entry <bcp14>MAY</bcp14> be empty.</t>
          </li>
          <li>
            <t>OBJECT_ID: the MOQT Object ID. This entry <bcp14>MAY</bcp14> be empty.</t>
          </li>
          <li>
            <t>WALLCLOCK: the wallclock time at which the media was encoded, expressed as
the number of milliseconds that have elapsed since January 1, 1970
(midnight UTC/GMT). For VOD assets, or if the wallclock time is not known,
the value <bcp14>SHOULD</bcp14> be 0.</t>
          </li>
          <li>
            <t>METADATA: a flexible field holding arbitrary string metadata. This field may
be empty. If not empty, it <bcp14>MUST</bcp14> be enclosed in double quotes. A double-quote
appearing inside this field <bcp14>MUST</bcp14> be escaped by preceding it with another
double quote.</t>
          </li>
        </ul>
      </section>
      <section anchor="timeline-catalog-requirements">
        <name>Timeline Catalog requirements</name>
        <t>A timeline track <bcp14>MUST</bcp14> carry a 'type' identifier in the Catalog with a value of
"timeline". A timeline track <bcp14>MUST</bcp14> carry a 'dependes' attribute which
contains an array of all track names to which the timeline track applies.</t>
      </section>
      <section anchor="timeline-track-updating">
        <name>Timeline track updating.</name>
        <t>The publisher <bcp14>MUST</bcp14> publish a complete timeline in the first MOQT Object of each
MOQT Group of a timeline track. The publisher <bcp14>MAY</bcp14> publish incremental updates
in the second and subsequent Objects within each GROUP. Incremental updates
only contain timeline events since the last timeline Object. Group duration
<bcp14>SHOULD</bcp14> not exceed 30 seconds inside a timeline track.</t>
      </section>
    </section>
    <section anchor="workflow">
      <name>Workflow</name>
      <t>A WARP publisher <bcp14>MUST</bcp14> publish a catalog track object before publishing any media
track objects.</t>
      <t>At the completion of a session, a publisher <bcp14>MUST</bcp14> publish a catalog update that
removes all currently active tracks.  This action <bcp14>SHOULD</bcp14> be interpreted by
receivers to mean that the publish session is complete.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>ToDo</t>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>This document creates a new entry in the "MoQ Streaming Format" Registry
(see <xref target="MoQTransport"/> Sect 8).  The type value is 0x001, the name is
"WARP Streaming Format" and the RFC is XXX.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="MoQTransport">
        <front>
          <title>Media over QUIC Transport</title>
          <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
            <organization>Cisco</organization>
          </author>
          <author fullname="Victor Vasiliev" initials="V." surname="Vasiliev">
            <organization>Google</organization>
          </author>
          <author fullname="Ian Swett" initials="I." surname="Swett">
            <organization>Google</organization>
          </author>
          <author fullname="Alan Frindell" initials="A." surname="Frindell">
            <organization>Meta</organization>
          </author>
          <date day="28" month="April" year="2025"/>
          <abstract>
            <t>   This document defines the core behavior for Media over QUIC Transport
   (MOQT), a media transport protocol designed to operate over QUIC and
   WebTransport, which have similar functionality.  MOQT allows a
   producer of media to publish data and have it consumed via
   subscription by a multiplicity of endpoints.  It supports
   intermediate content distribution networks and is designed for high
   scale and low latency distribution.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-moq-transport-11"/>
      </reference>
      <reference anchor="LOC">
        <front>
          <title>Low Overhead Media Container</title>
          <author fullname="Mo Zanaty" initials="M." surname="Zanaty">
            <organization>Cisco</organization>
          </author>
          <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
            <organization>Cisco</organization>
          </author>
          <author fullname="Peter Thatcher" initials="P." surname="Thatcher">
            <organization>Microsoft</organization>
          </author>
          <date day="3" month="March" year="2025"/>
          <abstract>
            <t>   This specification describes a media container format for encoded and
   encrypted audio and video media data to be used primarily for
   interactive Media over QUIC Transport (MOQT) [MoQTransport], with the
   goal of it being a low-overhead format.  It further defines the LOC
   Streaming Format for the MOQ Common Catalog format [MoQCatalog] for
   publishers to annouce and describe their LOC tracks and for
   subscribers to consume them.  The specification also provides
   examples to aid application developers for building media
   applications over MOQT and intending to use LOC as the streaming
   format.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-mzanaty-moq-loc-05"/>
      </reference>
      <reference anchor="BASE64">
        <front>
          <title>The Base16, Base32, and Base64 Data Encodings</title>
          <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
          <date month="October" year="2006"/>
          <abstract>
            <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="4648"/>
        <seriesInfo name="DOI" value="10.17487/RFC4648"/>
      </reference>
      <reference anchor="JSON">
        <front>
          <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
          <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
          <date month="December" year="2017"/>
          <abstract>
            <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
            <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="90"/>
        <seriesInfo name="RFC" value="8259"/>
        <seriesInfo name="DOI" value="10.17487/RFC8259"/>
      </reference>
      <reference anchor="LANG">
        <front>
          <title>Tags for Identifying Languages</title>
          <author fullname="A. Phillips" initials="A." role="editor" surname="Phillips"/>
          <author fullname="M. Davis" initials="M." role="editor" surname="Davis"/>
          <date month="September" year="2009"/>
          <abstract>
            <t>This document describes the structure, content, construction, and semantics of language tags for use in cases where it is desirable to indicate the language used in an information object. It also describes how to register values for use in language tags and the creation of user-defined extensions for private interchange. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="47"/>
        <seriesInfo name="RFC" value="5646"/>
        <seriesInfo name="DOI" value="10.17487/RFC5646"/>
      </reference>
      <reference anchor="MIME">
        <front>
          <title>Media Type Specifications and Registration Procedures</title>
          <author fullname="N. Freed" initials="N." surname="Freed"/>
          <author fullname="J. Klensin" initials="J." surname="Klensin"/>
          <author fullname="T. Hansen" initials="T." surname="Hansen"/>
          <date month="January" year="2013"/>
          <abstract>
            <t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols. This memo documents an Internet Best Current Practice.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="13"/>
        <seriesInfo name="RFC" value="6838"/>
        <seriesInfo name="DOI" value="10.17487/RFC6838"/>
      </reference>
      <reference anchor="RFC9000">
        <front>
          <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
          <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
          <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
          <date month="May" year="2021"/>
          <abstract>
            <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9000"/>
        <seriesInfo name="DOI" value="10.17487/RFC9000"/>
      </reference>
      <reference anchor="RFC4180">
        <front>
          <title>Common Format and MIME Type for Comma-Separated Values (CSV) Files</title>
          <author fullname="Y. Shafranovich" initials="Y." surname="Shafranovich"/>
          <date month="October" year="2005"/>
          <abstract>
            <t>This RFC documents the format used for Comma-Separated Values (CSV) files and registers the associated MIME type "text/csv". This memo provides information for the Internet community.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="4180"/>
        <seriesInfo name="DOI" value="10.17487/RFC4180"/>
      </reference>
      <reference anchor="WEBCODECS-CODEC-REGISTRY" target="https://www.w3.org/TR/webcodecs-codec-registry/">
        <front>
          <title>WebCodecs Codec Registry</title>
          <author>
            <organization/>
          </author>
          <date year="2024" month="September"/>
        </front>
      </reference>
      <reference anchor="WEBVTT" target="https://www.w3.org/TR/webvtt1/">
        <front>
          <title>World Wide Web Consortium (W3C), WebVTT: The Web Video Text Tracks Format</title>
          <author>
            <organization/>
          </author>
          <date year="2019" month="April"/>
        </front>
      </reference>
      <reference anchor="IMSC1" target="https://www.w3.org/TR/ttml-imsc1/">
        <front>
          <title>W3C, TTML Profiles for Internet Media Subtitles and Captions 1.0 (IMSC1)</title>
          <author>
            <organization/>
          </author>
          <date year="2016" month="April"/>
        </front>
      </reference>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
    </references>
    <?line 998?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <ul spacing="normal">
        <li>
          <t>the MoQ Workgroup and mailing lists.</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+0923Ibx5Xv8xW94IMlBwAJkZIl7m7WFEkpTERRJmE5qa1k
q4FpAGMNZpC5EEJA5lv2W/bL9lz6OjOkJJtxOVvLKlvkzPTp06fPvU93DwaD
qEqqVB2K3g9Hl+/EVVUouUyyuXiVF0tZ9aKprNQ8LzaHIslmeRTF+TSTS2gQ
F3JWDRJVzQbL/K+DtSxWg71RVNaTZVKWSZ5VmxV8dnY6fiXEjpBpmUMvSRar
lYL/ZVWvL3pnRy/hn7yA3y7Hr3pRVi8nqjiMYuj1MJrmWamysi4PRVXUKro+
FPuRBAwB0NFqlSaAHHRUCpnF4lLJdDBOlqoXrfPiw7zI6xV8d67iRIqLa1WI
774/O+5FH9QG3seHkRiI8/w7/c+4kFm5yosK/0ZSRNcqqwEHIe6EJAQPsfcD
9Ic0e41f4vOlTFJ4DnT5Fgk0zIs5PpbFdAGPF1W1Kg93d/ErfJRcq6H5bBcf
7E6KfF2qXWi/i+3mSbWoJwxwsJ7vEq1LM1WDmZ4qIVIgW1n5XVCDIQMYJnl3
011oan865nW4qJZpL4pkXS3yAilHDWZ1mjIv/JCkqXgj1/QYRiGz5G80NYfi
6IOEcdILxWRZw6jX30p6Ppzmyza4N/UHJY7rIlWbDojjdVJNFz7ED8lHhUOP
v53jg26g75NpBYz2XpZJmqjrDsCv83yeKh/wNX58ff3tnN50w72qF7IUb4EF
5Yd6KYsOwMdJOc19uGXGn387xTfdcP+QFEjVd/U8yTpgnqtK+iCTD0nx7RIe
ErQoo4kFzkIO9vkbJHJwMmxMcmXeDkYj+P7NxbH/2fJvMpPVhr5M8+lg7yl8
8/Lo6vTZwaG4fHV88OzgOTz5/dXFW/r7+ZOnLxDK0dvX9PfTZwfPEIuz81P6
+9nzffwefnuxt7d3aH7hRwej5/wIf4FHP5y+PL44OT2+GtA/g8vT12dX48s/
HdLgrfJSk+M8VtNS0D+gDOYJcPmmR1+RNhFXalUpVC/iyd6TA24ui7kCkhhx
Wa/Xw/U+yeH4cnetJlMCOqB/BoUGustovR+PG0jkRRqDLMRKAD6ASVYCSZN6
KR79sH/8uI9PsZEYL/iL9/BpLsbqYyVgfqYfSqt1HdZHK2ADwHj04vMwvq6q
ESJ4dn51PGrgt3/cF+Px+RvxrshnSapKAfIvzrJKFZmqBCu4q3pCDVirHssV
q9jRcE88IqCPO9F79hnoVaBGBsmynAKGEZoTy6NRNBgMhJwAeeW0iqLxIikF
mJp6CYZClCs1TWYJoFQh5boMVV/EqkzmmYpFlYt8pQpAT+SZaGhtYQVhqDtd
JnEMUh/tICGKPK6nOOAo6uwGZhIePxaAnRRLAs2jCLqPVZpghyBHYruF/9/e
gi1bgsGSMBpuBratwrHl+OGdSIpH5xffjR8DFF+Gb2+HjB4aulJMNmJWyDmS
CjFFGk2SipU8WG2kx+RHNa2QfIDpVGZiooRnidNNRBpgmVSgRIdM4VQBOnKO
fABNKpnmczNWGmI5LRIAg73ldbWqYSgz/CvKiwRUlkzFqp6kSblQhYbopnGR
ry0BykVeg9gAqBWIAHQYE+MhNWWq4n4Uq1mS6UbYm0EGKLqsM/QBNGNoiH2v
I+BOQKfSWjNC9gJ3JtGcX6DLUIHLQD0iMWcpGF56N4HPsgzpie9AQoALJNEX
jLOMp7KsSj0L6NoAQSrQw4wlUHUAfhBTqCjBHdgI4EiknpAxStQ1TRHxaEnm
DABraMBaLEVIiKqBY4KyChKCAHCCoEOgekp/ArBsuukLsEZrBZZDltH7ixND
lWFTqMwMlgLmGf01MdIzKKx/oCd8iNIB6uwaOcz4Wyc4LQn9jaCVAMcKaRiX
4Cp9fzVG9w7/FW8v6PfLU2Dty9MT/P3qd0dv3thfIv3F1e8uvn9z4n5zLY8v
zs9P355wY3gqgkdR7/zoT/AGsepdvBufXbw9etMDWsFg/BGD54isS7wPZFwV
TOMyMqRA+oqXx+/+579HByBy/wJW6Mlo9OL2Vv/xfPTNAfyxXqiMe8uzdKP/
BLptIrlaKVkgFAkTMJWrBFi1pCkBNl9nAoRBATW//k+kzJ8Pxb9NpqvRwW/1
Axxw8NDQLHhINGs/aTVmInY86ujGUjN43qB0iO/Rn4K/Dd29h//2HykIrhiM
nv/Hb6Mm+9Wlk1rLVyxEPA9XihQxGJ595MvtVrsJegLMpDmNl8liA6IHtpqE
CVj2agqGgJlzVRervFQIyUpZDuohv0ZzDRqRWILsxiRVWkc35SBiu4IPSG23
tDLbUoYCXma1EQlqfcWaF8zc1+IoE20FSTpZqz/ABDQb9hEaClLkFbkJfUBc
rYCdMaaw+hAZUmZZXk9ZK8trjC80HlqyDTAAJQWaFtAvqdwM2QIBOPNBoWao
ufC7Ok5yAn5N7grYfekrGXg1BUcViY+vRFlPFyhUAvmfphUUsvEpoOF0qiA8
1GiREFVIAVRx8aBCXwjBDJFUHoZMoSLHxjw6HikLtkNmKqcLVpXw8UrOUcOi
URKWdBPoj3wE6paAlxiBInWh6YxmxmlvRqT5VE9YUSrfJPUB3F9riMBsZ+A2
5jHjU6CtxegAGxRqqkBpx3qOecRW/yMvwsdxwKLG+KJx0g4GMglaQVVME0Av
4JehGOcR2XsA1eeh5SmYN2JnJau6QNMOKhHsD5gfUaKwEIuyW8quL0TDpMr4
j7JeIacDZuBzGM8G6EMsor/RLaT/7I52x5pziVrQzpmkFv8iBacLibYPxl1W
yZQsnx4sUHVFrhv3QD5J2wuBHjE/QEqpu0vkBmLZRbICO1GtlcqYCSm0Jywu
yJcSZyfI4jBBTHVkX+og/6CywUSWaFkoXNa+B4snMT9hXeQpUUC717/x/O6B
oRfN9XbLsQboPQSx3ZITDn9pl41yLQDqDdt/21ZOixz6WtZplaxSHNsccCzF
o2oBM7/I05in3/PD2Z5BLzCywMGLSQQNQbrJK1apnBptbL3bTEvfOilYDLpk
TMsGNk6qx5H4mpM55PUMwM8hkQeBe7q3tyzx9ZnnBg0sXvSaOnliv7yqMNIu
YmLLCWht7x16R9prgrdWNaLMrCX6juo6yesSSGKYq4/SmeUizbM5oE1+F7ll
yAuGYVP2rck7UukGueJYw4auig3NOErNy0tHUhjqoNxkyMCsO4gLQheSPUXb
xral79EUgOpMZqC3sau/1pIER3uJCZqdWJGaW8qPyTL5mwKFXsJXqPxYWk2b
WmuqGdAkZhePDQgIwXyBrv61LBItmkNmYxo3fOSpJjKpIKoVKicZw9MqKck2
A7fm81JbLJluSJyX8OucFXooASyZ+CdZXpB6MKlZNShRL36XnxLtScMil2oE
gI/JfwAnPTrLGAfEq9SD4fgJMyw2RgAnQpbJ1GnHTKG4omUDqqmPqGZLFSVN
G68lzXZcbspKLcshiWRh3OuSe5Nx7OlsiLxcJ6Zf8l04JGSfAIe93SFFYx/c
srXQnZZ+rOkCKdZNNhgkyDv0qYXDbpmOmDifysYfeBVI8AbCGYxLF0rGxMYS
tGchHgGMx7Y/igcxSMPoJ2o6DNaBKS1iEBAmaIUX9hn5O2As+kKBBY9O0Y1T
MRmW40WdfUAm1Q/JPPHDUi5RtSEUUD7sN4IHgr4RGn7U3BHr66G4om91DDxR
KMLG5gMYpTU8cMa7ZMrT/+j1BYT65JhjdEo9RNpa2mbOOqABB8c0JC/iVqMx
QEaWLKv9IIx1n8qqAmmvKxU92m7dRN96OABa5PCgzqnc43xVU/6TbDl0cy3T
mqSxl+bTHs86mr4ByPc8IxHb7qDOsX9rdtJpKHDuEW5lm+CUjRc5uTuSIqk+
GQ9QUWQNjfNkPIwIHSFQ+Qi6JKdi7MEyKs7gb3QDT6BPHFDDPFUJz5Yk2ckx
Ico2g7PzZHlJS9CzuC6YkbXXO0tADWlh4FQIvkFGEwp1Hmh4XngABIhnBM8o
jHGGEkxeHGDQZ4wXEk0loJxCvIeI6WnhPtkTiI4ErV6AOwhyxIgAK8CHMMcc
2CSaFyXrIu0SFkIHaUgX1KlVHk1TJdEyNwyAPz3GDWHCAlSiCzi7NZq/RGnR
N4YIDFql4yvkJWeXgC+0vLpPbiGEyk9yz0Z6zZGvgeMHVue4fMOOdfAAKP92
C3QxDymHRuJDXMfE0O5u6dwSRBGGUbHbwbECj3KikNN8x0+T0ks8Bd2RIMJn
4UeU74k8+4Q9JYXJaiF9cJC+NQYuxdmtl/w14M0fo5CoaCU3aQ7qUnOfQUBz
HuABgQnwBfLzJYcf5N1yWg5zR1U+gH8iPSssew6OJRECx7UCbk+/wSyo0nTc
SSbgaVJ9a1bAqtPldWEm2rkqacLkwIJJYLwTIC7TSaUeZ8lsg3ZZXUsKYckO
G49YRz1jT97ZLXdShtFtCZ6RysqEvD1mlbeoeVG96XY9FriQ0FqJeXlObMIc
FH5K8V/CLcDRYGmOJBpXCGjrVUy55BlgQ75CozXPDuuYBgqGx6zZkOBTrLVs
Gu3nITgUojUMrQ7INZ8AcxmQLvnUHe3z5EPMBK4qSv8pqjsDW4/JoLDExFXM
CjZOgM0VLgegaGrrGbH20K1fJQqiB5/kJMu4AAQ+Af4DToHJ9PRRZQPdUPaI
hqUqNEMt0Tev8oJjjpwUELhpMwIPsou6EUQsWdbLvpfoIKxtXAw+lYNjmxp+
L2hS0emC/5KgA2O0ckwuBylAThvi2tdQHNdllS8jaqKlzaTqYGBpijiQLPlf
3AltTKETetcwfL+F51YQGW2ejAKOCvNI4P9K0qtHnHkoGBFQ/3mhzJiAi+Nc
cRty40sMgFDKyJiMnPYAdYM27DoBhsR5SS1d2JfTkbSXswMoNzz3ov1zI1gq
u17YH5cz1u+im8N/v+Pnzjd3N4F3gCFpd5PTDhDpeMgvtltc5tavgXe9dwDw
xFcDQTtSEN93vNhu6RW3aQE8iq0L1EAEmHTc+WK7hVfcJgDHAC/VEkPbFswb
UGf4pgUTAfKrNkwEeAw2ogMetJvimzaOCJBedeCIAF+rjJbkaE0jaDc3b46q
JkD7SlYtgF1k4nZdlNUAOwnoA3RW1GvXfhYCtO8d4BBgs137WRtgxyy/s5FC
s92q+w0C9OKIFsAziO/QqLYRSco7Xmy3SYkR5300LPK0NeT2s3DI+L4DQwYI
dk2ljXbtZyFAeh9CZElxUUMDQ3rzuv0CJQVfUZu2LKe4eo4KIIQJspxWLWga
ILxqQ9MAz9pOkm6HqvPE/BkCxFf4ZRfAE+1dTNHqBu3Y72iJCqsv16ipHMYK
jRHY0bOTRrtKvzmLWwDNqyRuT8rVSlJ+pgEP2pX8pgGPAOpXTXisvqgIpP1z
wwnprhegvvBVm68J4DmmIrHaq9VuCW/GXS+2W3yFbbom5VUBMl407Aa1m3W/
QYD2VZekYHJ3KltSdkNhYscbmhTzqgPgS70+3SKHXbnuGLJ+1aIi2eUkBjep
/XMDzk/nG7LL+OqOSfmdSuaLqqvdovsNAuRX3eqL1zF0Uskb4o1+1ho1yTI2
cu8tZOJD8L4zhcsn2SyZm6wE8SG/OaYXIUD9KmiDUEmWk3KFSc4mxW7Qbcc3
TSKTLPOrFil9gE2KWYBNInsAW6REgG8g3qhxGbNF+1S2LJcBmOpGXZLyTlI+
u2Uz0erhm5bXyVYPX7XtqLMpsZsN244Mx0nHC21TYm82LEDtWT8Rpk6FojHM
g4Gzk+amRFUnskvrqXsev3Gw0b9+o1sEfjP9HN0FUwcSTbr6vvV9PvPn/JDp
dPTAMOYyz03JD4csOl799A9NggeM5uOzW7eAUWgaOP3bHd+djwxJD3kIl5ya
jA/Fn9ggEvZjKuV9S2nAKLoKKs4MXLNsYPPjLkbSsSlFeIXSy0TA0wWEbEpx
vmRWY17ZhrF2XQATqROgASAdlxQtA7rIU5R6ormNXbENxcq2gIV5BfMvHOnb
FI6Bjikwb6XNxq6yQouMmduI17FlEzGxXiTTxd0R5Q6QPQiNtjt+0HM32S9M
oB/S/mWeY54T41v9K6fWkhlVf2OexBZ7YRGaR3bDPTZ5g+kIQiZ6BDICA0RX
4bFGFEkSpHawgFfa3CzMaqmItbWkUjkaMoRMI12CgK52UevFWqXCeK/EShBa
VuE8vKu64WS3XtmXkc2ezJDK8P1MpqXSpPWCxO2OC/6+mKxHRSE3uAZmqGfy
Wt5QkgyGzoWPhBl0jXkq7pKzFnZJAemu0yEJZRGoA5tysik1rTP5T6xYpFGF
kep2JwhCf4mxcYcPPzxB+TX/G52eyaZpHatI+qnLMM6j3vqUqNJfC/9rDj3b
sabGErnTSjUu61POldOcOh3GpA9i+u2OH63/EoSn/jy6g6ObL/1FdvC+U1CF
cXTnvIifOi/RnfMCiGsHQ09M4DlQf5p8QQZju+PnJr6YfMbM4AjX4CsAbXAB
hKo8K613A/2GtJS4kISFCbbrvlAfUeFRsQmZKr2BhpKrSZompcIlfK0xKaOu
UrnC72GKANzvZVbj0vOoL0YvvtkTj5ZJnJHD9/34ePf1+fjxkBeImfKhJtMk
jElDL5RJGthJ8rXZ2LDdJzmubZQ1sx1lYCm/QNXoLvWk6571N2hkAp4AdKlH
Xd0z5ZVuWpWlNK9e0nBGYU2rocYXi9waOtDjq/FXmPjVjqGPjpdL0gg5gfZI
Mv4sLrqqsMyCuYjcYwZMRtoykSl1og8Sm9wdiiswW6Ue1hOqsYza9YzjoD3D
pwUsRmgozozpQvfASLD2bSN/vTvj9VZvgSfJQEUllVvGIuimUNFfEMJ8vvvC
9kLrKcEsYkJ7DTApvb0xPajYI09rNvyJuGcOmC07qH+EZaLIKOyj6QKoTK9Q
2QnoInhXWb+LCmxRoTcBdsWmzhJcQlzBTFvK6KG5NOF2xysXeaiRURYEcDer
nOAHg0apeRVxaKMUUtzs2zKUMpJuacFKx75dmtg/tG1dOpOhYFzUDPMwPHpP
xsEuMVwat9wLNFpxj//krqiI4tiL4zDOQFm3v+NcXr46Fn+EHz8WuXEVhvbb
yj7hdpx2wSc0sWBmbnyepEyp5knKin6WXvjs6SPwrnISuKwoElc2qXn1Erzo
AutT8fMS91yGa1o8ZQekIEoN1JvxcNHWbD2gr9g66LXZWpd8ADI/1hmLhlmY
ppwbMVuQSYN4BffIbcICRVtv6Euc4SzcpWbGU1kaE1ddNtPSyEonBHkVJgE+
56dzOetnhd7IUZRgij2cbrCInKus/MeYDeCKvpTqziUyCZK4KEMcdV1WMOr3
XApo6PiFo9bYBBBNUfCXAySIVUOOECJH3/ZNW5DuhajL0QMcBRac48Bt5BgU
DvGwmGc6IJqy9hAiqnM7KWZHzQrrgkWcoEavu1ZCNMRknqV+Bg0h6jJNRgNn
eaEkF1gGkzzsgjho/XQ8+vwf0FS8IM4iFMgxqHeqLGFPFAQ0J6cgWCTnUk5f
t2ijZZaitjt6felurWd+604ejClVMKNA40L7h1R46Yfeno54hU4qNcg/tw3H
9ujx0UYWcreqdR6tctzYkJI20mWzh9HX1NBVSesyEhv1UA0xTy2mIXTdv8Pv
a8+Hgy6p+HFwkQ1OFFY9iEfvL04e8/Y1iQWr17osOXBzeK1M2xReGPPJ+yqk
75daFSkWNeAyKJSMSd9ydyY5qWl2+lHXXy4pvJioqGfrSqe0rCGwFKFHhwGc
qLoqp0iuP2CpLEhl0RuKt3mlTO5HuUIT9LtNvWEJccurwXNbPjzZ6C0YRWkT
EN4CIOYf3NLelxpaE8Ud8e4hrAjnGGDDZJmbilId8LJLrm2p3Sw6MWWLGPnm
c1VR3ZoOXqzQUK0pA9QhnisTNM1Be2C1v8wUsVafzHatDUJQLEiVWQ085JQy
j5g7yDD1mFe6gE5XXCqeQLE22zWrDRdlMsqtfUI6itfJrMYq6XbHLoH+clSX
FgmbeoWgB0Y7cKO1n+jW1i64WQi22fTFpDZl94BPxKWDrgbOVdB1ANdTSHH5
UvIuULf+F4ULfkhZt9dEmNLSZoIX3KRkSjNuH2KlU2RzP5x3kSbHqVHxSGgH
KhuTxoyHwRizhGixBEP1598aQATovLSZ4gAucn3opUNrEDqWwcE4mHXun+0U
Y6YM/30Jruoz3O3JBxoAoRWXmXdVKzaUmsmBe+vrmAP3Vs6/FE2d6jgGlpGJ
qcOk9D6DxQ01QQ0s7wbTex5DVPQWH6BxmDXhQDJMQdpsPznTdUEZMWt0XH1i
dEVpIyo9bOcW7J7t7pjepwxumZEllo/GvCWlos5l6MLrWN9wpQ/AGDivFgEM
nCsy+MlqxejXBAfsiYSBDeZto4pdkK4B/Wa3nAaY96OykrxhhXT4nmUd3BvG
MPp6S/cULGdpv1yAfcT51d1FswT3eOA+GxqwVyux3XE1EA8+XA1a3DdG0Rhj
9IVjbAyNqzawAB0LMR427OW6D/JTcS8PiXjgBnIZu2iWsffNhnjea4lA9DEg
5ughMqM2q4G7lvGQIhi02cB8wJmeuw4ysflKF+/u2Hj3YYmwtFUs2y2exoKC
P2vpM1east1xBuhnM1iACZsIV+oSslWQ1aaPSsx0RZzNNpJvy1p4KwvXsfxU
NCmHanPnZGFr0P86c74CVUW5tgADUyGz3TFlLw9LJFNnYzS3TxhgNdzW1UaK
C0C2O1zt8bMR0j0alIxt5PoTPWveZNLWiBUex2QUtK4f2e7oapF/FEa6gOVz
UGqX+YA72qjieRg+Yp+Y0ND9BTPGgaR2ETd+pX/kvHF/I7VRlJ1lRaA4uyqH
frYKabiGGp8uFH7CgITtxuzP8XeqmiJ/KnJJ1UdzbAD4szb9RwfrqI/dGLGD
RHugB+YD1M1v8ZwBvaKHyzeaJSDkXMqSdzvsNIqtwLPz66gemo/tnv846DXw
htxRECFDN4q4LKb/IJFroRrK3v242vqw7Y6t+npYKxfj6Rm43cgm0sJ1mLEz
6GY1BYMjCAXZ1OsN42M51+djeZ6Rwb4UMtgnsd3iaWfWlPs1a7gIY5eUH3ak
DNh3wkOvnrMLtPBulA2l3yMat95R5C3jZiWfNBFWCjTq+nOzI8jll2KngsI6
uZ+jRZubOHmUgQU08b+/1O2P09ZFRHevVnsF7dyGKw6C5eugzKkM65zKW28b
lK4n4hSXXkNm55eSWKndjmVTiBKV3qxOndJMZtES1aQX+xH2FIx6ZRKUeKj0
9i/MbuBK25IO6+BOuMYIswB+pM/8b3dH4a7DBOIwJRrb3RpnfIE/b7eSHWv4
zVUhO8x00xdLJTO7O7IBmzqtSpXOcM83iFZkdtb5n9FOp3ZRlj6Dx/jeptKS
4gpaYvZhYP4VC6mkKzwxtRC8ZO1lYidYNmeoO+xoCHKOosBppo7CFZey1VVO
stkjddHRUu+CdAe0cG2ZO7CK39jFMl1Yow8n82pu/LHzvutGqVtQ+4JiwKyt
9zA1ty2xRCDh6eyhWg3bEINdeYbnYbwpBHwVaVZbvAKz56raIhFuauo3a8Oa
G5SAPVgxjTsVE55X4er1cGHCILPMCzUUZ5W/cU+jmQXI6aorRs32y0Sg7fth
lWlj05guFuKd6DDOPtJWVVzGyZg3eRfPsCXOxlyelu/EHLBCPtCCjkBlSXNl
D37RsK48s6DNe7v3HLWM7oiXMSJzTqOF8a9mYQYdJWQjs/twAkp1qatgdRut
jjP0oGynQ4B5ipqTUUD6JhmuBtfwS0qbCxtjL2s6C4fXcjV+zF1EKrNSq0s4
SgJB7qc5JKFsZoq8TYvKL+qi2fTLujCOmqoVp3S9qjzOgBmfAOQet6Da3oD0
3AXAMxUaWhtcNKpPvMITXhQ3XFHVK159b1b3IYt4mJhScglM9dGpPv7CUQDP
1XE466os0qg42Xx2Ae3+dopGjHOtc6lCxsLqs6Yz52SZgyTceTIW1xvCkEeC
FWqFkvpgJ+B5ShGxnNqjE/GwNj71CosTbVKRpTtubC02y0RNhVi6fDpvX83y
bGAPuWUfQpklJiAVHlADOtZop9I7f3Ntjx7hTbmRyyfYBRKKB3b1+azeUgwq
WRi3PihH1zWYNDge8dc4LdOeEuoZXHtUTgleNDmVF8eRyTv1Gws1dy2q/P3v
f/+xhMBlC6TtaR3UOxSjPv7tbanEZ98cPBvtHTzbe7Z3cEDvGQq8+k86tHWr
j3/uoXjA095o7/neakA99vr+S2IA/AKDLK61GerR47HDu+7x6Mn+LgwCvrYA
bFUPAsBzSewbdsV6fMq3fYrLw/hpAw9vn54ZMD2ngLJ32JPXe6Ph3nDv+flw
BP8MR/j/F649xVW9w9GLJ3v2GQcw8BAGbh/a7FTvcN891UkZ+Pbp3h6fWizE
bb+bkDR9vwISNvD4FAnzVV26r11WpHd48ByG7L73NzFBuye9Npn2n1gi4f//
HN0S80Za6q5wyRIPUw1XjQZi31t+YnHDVQPv7AoaU6cEfqn87UeBzAWIULkF
MIe3A6MvQCd5f9uVuXoZeU8ZjEU9OHdDZn5pCR4byQrJjIMqef2CSzkpKRmt
t2RkfDgjne7nqiqXdVl1V1VGYVXlQ+mPO9THIv40qz2QMvCF/ieIuOVSluVP
yb7Z0QtQ7hX75a+EAN90jP/ZQcfw9x90+OWvZPgw/+3pZxbumv0HGv1n6toH
UuW/kMpmjU0K+/1xqCFJoT2x64V0/KJbLLX6L/rJqjryVDUu8pD6NkfL4YLc
vRhEtAxZWofWLCFv7GGf7nRmPGpsfUjKUZbTJBlQIllFmkL+z29cTdxvouaT
wW9vhLgajUf4/IZfB9s5bwS5WPt73a/bwFubQYX4y51vbiIfQPiGEbtoYxRp
nEZPW2/a0PjJbzwExV+C4Ymri2D0AcgbcaAH3/m6PfrWIP9yxwh5fBc8Pq8V
Pj/Qg4O/PPhBZ9ovoQOp8gLC4VXObGfze3hodU8fm9Bz0RMuSOjMpBeS+kdr
PZjPfofN5dE9oKv5Cypu9NZH93vrvtUyqvygy5DfY8lGT+/V28yT/7wUPPjH
U9CzhkYGIIY0vPfne8mrlcs/L32f/tx48vN4tE3hNoHvofA/Mwf/7Ij9C935
Jg8j7Ryj3s/ODx3Z/x9yE1vnAuDR25warNbGbez0Bv2Nf8EaQ6d7yDAjB5MW
vDKhykqaMxLtCcRmQsSFrYPFTYtq7a3C9GkBmMsrMbPJeWhdLmtWbWypVGDN
vYPgvBn5pFG3x73ZXJxjNT+gwg0Ubt7umvw7Jc0xgPiUsDlxE768eRInfJEL
ZUs49eUzivjmqS+NbW7XL5iN6LOed8xcN23c4S92vAPEzB9JFryFaLhjmKMn
z7tG+U0wdjuUZy7n90m2pwQ3cf3dHC8/g88dHCc9zJSf4PWH4VH/BEGcim1I
1t5tf9tk1NswZPyszPqUtxV5a/DdFPsJyXVb1NmPPiO57ufpfKSojsxl2yJv
693/5+N/Pfl4r/+locVgggUi2Zzu8QMkwXKNOr+rElXgEEHZL5N62ev8KFaT
mmi22D948Xz/6WT24cfZ/PmT/RcH8YuDp3v7Bz+W8SyDl7Os7P2iXsT/qfWB
lurA+zra6uPLtQRtP0HdgAAfseznGcwr7qh7HOHKIu3KczfpeDuMkzJUKaa+
HQsqyo7Fu6hj8e5+bfEpbXCfHkBLocqAYWRZqqrcneSbwVLBb4N5UqSDUklA
YH9XrZISZvXpF/EQVUbZx4SvOTUN3j7f++bJvhdt/soUxE8WyH9G2v5Ckqpv
K6n8G4lQaNzlGLoqxx0pjs633QDpzh+nL670bSXijJJwii76MWtY223jIpRb
qjHF2zn48hC/l84TzrHOweuHS/xee1vc+FoUcyXI2Ul4jwQ/deewe8eQYKmb
u5eat8e4k94jaY7tMIWLfNcQ7jTGWrQC4lFZmeISPi2OAxYAWuTkeuA+zUWi
sEwKD6ria+yoQGthiwQd3nrbMtVoJPpuinAwmkzcZzTnWy/spkd7rpC441wh
PkUIP/g+Sz4KtcqnC2iPt04QtSMuFZJYxue31AWQeLl3YQ50g16ZpsEmRFMG
RPgxTfrmjjld4iJFivfv8KEWGXELHYJfkIdM+wMKKiSE2ej75MZypwivPsOy
SRwdXh3C0+cm3x2z6OGDiiHckAyjWapqkceRPS0PQ0a6abN2LJHMqBxN0H1W
IxAo3lvJNVGOp4JtHVTfRXWcVCbmptcU8+HeKoUVOCO87Ig2mNv95rR4TNeI
4K3kXPYGlMCyNL62SDrC9+2lMryTj0Y9lyukkSNHbQvBSYjeUeGmxem1XInT
jxWe/ZHjfZcyxpvXop3m1Wu8accd3kACV4Xf2GIf2nvpbgHxb+ayJJs7NUOb
cKPgZgsYfnjQVt/fTEv7ocsynyZUy8R3EeJl2nxFRYh6yTWnqHI2+o7EUqkP
vF9B4RVRYpUneAbhRAEv825+cihoszudi0R/2otk+8h5dCEtIIKBHV8TR4oF
fRQyM7hVokEfrjPG62cjcwgDIJFkpSoqQbxHV8G4gZrd0PZohoKIpA9nYF0Q
eXfGiNbIC+Ud/nRu7parGp9hga/6mJQoXbqm3JUe7LR4QR8lxBd1ustTZHO8
VC/NG/zNtp/jq/d0hofA+6zN/hMNLin1nYmkx6Yw2lhfI6SvFxe9Y97IrC93
JhN1dn5K1eh0Kwy+l4MrfaFUzCcOleIRdPu4J17RHdp0MymCMwdm6funchY+
2j8v6dROsk40Hjo8wgCli2voHB7crFAo0HEZQ8INewNz4FKTHJGxbe7gMVCJ
PaTG7rS87jXuUjKKpEFTuufYLo+yvIICpzshzk9Pzo7+6934qv/68uL7d/91
dtK/ePn70+Mx/hb9cPTmzTH4wn/on5+Oj06Oxkea/oUpj9GFo0/xDJB6yfeu
kSjrs2+JHiAyMDF4Ka7r79A67cS1FfgtnlERnzIqVYFFs35RJB51uqHTyrCt
vcKRv6X7w9jg9U1FvT28E6EAMLNBWdlgonHlEyPZceGUuaPM3IToHR5rLlf5
Whj6Hjq9ajSqPypz3goPB9rZ6fAa2tHd29LOHre8+xRCM+I1nU5CUhfu0IzE
fR7CZ548CEA6zh5EwXQasCQ9qbdvNBDWJ9B9yPJ11tcYBaevwtj3hsRjzKvI
YrylzB5KZY4EkAX5vHiTH2+6sZbA31uylMhkAW8hBvRX37+dDYgG/gk7inFe
T6h+NK/45AZ+MKAHAI4vkNanZ/LOt3AzC8Irp3LFagPtjSKck8pUllH+GkD5
XTW0rim29S9pi1rWhQv6QS2hevoKtdBXZpd4QoddEJENrMbNc1HPQOt1GK4Q
tK7JKL/yFtSJ+yJdp0/nfdpTDKgS3DvJAE27O+ww7IgLy8tOq0M5Vzw2QV8Q
bTwmvl6I/2T1vaIyfgvaOOgk5L7I6UvlIk9+O/S23oHj+gPJNN35e4X0Lo7I
1vOjQPFhxM4XdMcVOY1KygSLCtuwaM+X2f1g0dKugnPmUyzItK/NDYo8IrMv
K9KCRUz/cYrB3P6eMGJv7X5j7BQt/pAXH2bgQuEGn/Authbxg3vB9CmPEzXL
nbfMdeYb1lLBQa847UeV3v5Pk6i3k+ExJRSk9gNX+Y6+zYYoUGQRJ8N5N4I+
JiPlm0btxpWhYC3B14966se/dH6yicx9fyVfImxOu64cbxgsaTFKcyET8EpB
5xjjQMCOdNYbK/iePvzg7OjtUeMleNz49LZ5ETsX8Jd6p5M2iMxyvfP8Ox0k
I5XZS+qJSz4AYRM94qOvwzMs+QiE54+JDvq4Abunbu/j3t7IHQ+Cp4D0iAPa
vZjLgvGYRWj5xz/+EcY+GAzoqHQc49EUtX2q4jkrsO2hucTx33uURenBWAds
F2EcyHRze4szxEKYEQZvrEQ++V+n0WJXCYsAAA==

-->

</rfc>
