<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.0.2) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-ostermeyer-jmd-00" category="info" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="JMD">JMD: A Text-Based Structured Data Format for LLM-Driven Infrastructure</title>

    <author initials="A." surname="Ostermeyer" fullname="Andreas Ostermeyer">
      <organization>(individual)</organization>
      <address>
        <email>andreas@ostermeyer.de</email>
      </address>
    </author>

    <date year="2026" month="July" day="05"/>

    <area>Applications and Real-Time</area>
    <workgroup>Independent Submission</workgroup>
    <keyword>structured data</keyword> <keyword>serialization format</keyword> <keyword>llm</keyword> <keyword>agentic systems</keyword> <keyword>streaming</keyword> <keyword>media type</keyword>

    <abstract>


<?line 59?>

<t>This document defines JMD (JSON Markdown), a text-based structured data
format designed for use in LLM-driven infrastructure, including tool-calling
pipelines, MCP (Model Context Protocol) servers, REST APIs consumed by LLM
agents, and multi-agent workflows. JMD encodes the full JSON type system
(RFC 8259) using a subset of Markdown syntax -- headings for hierarchy,
<spanx style="verb">key: value</spanx> lines for object fields, bullet lists for array items, and
blockquotes for multiline strings. The format is line-oriented and
streamable: every completed line is an independent, parseable event. JMD
documents are in bijection with JSON values, and the roundtrip
JSON -&gt; JMD -&gt; JSON preserves the value.</t>

<t>This document specifies the JMD grammar, the canonical parse result
(envelope), the four document modes (data, query, schema, delete), the
streaming event model, and the media type registration for
<spanx style="verb">application/jmd</spanx>.</t>



    </abstract>



  </front>

  <middle>


<?line 77?>

<section anchor="introduction"><name>Introduction</name>

<section anchor="motivation"><name>Motivation</name>

<t>Large Language Models (LLMs) consume and produce structured data in a wide
range of infrastructure scenarios: API responses, tool-call arguments and
results, agent-to-agent messages, schema descriptions, and configuration
data. JSON <xref target="RFC8259"/> is the predominant structured data format in these
settings, but its design -- driven by machine-to-machine exchange between
programs that can buffer complete documents -- is suboptimal for LLM
consumption and generation:</t>

<t><list style="symbols">
  <t><strong>Token inefficiency.</strong> JSON's structural overhead (quoted keys, braces,
brackets, comma separators) consumes tokens that carry no data payload.
For pretty-printed JSON -- the real-world baseline, since LLMs cannot
reliably produce minified JSON -- the overhead is approximately 19 percent of
total tokens relative to JMD for the same data on average (10 to 22
percent depending on the model tokenizer). At LLM inference scale,
token count translates directly to compute cost and energy consumption.</t>
  <t><strong>Streaming hostility.</strong> JSON uses matched delimiters for hierarchy. An
object is only structurally valid once the closing brace arrives; an
array only once the closing bracket arrives. A partially received JSON
document is syntactically invalid. Streaming JSON parsers exist but are
workarounds for the grammar, not solutions: they require additional
buffering logic and, in the case of NDJSON, abandon standard JSON syntax.</t>
  <t><strong>LLM generation variance.</strong> LLMs produce JSON variants that diverge
from the specification in ways that cause parse failures: trailing
commas, unquoted keys, single quotes around strings, comments,
concatenated documents. These are not bugs in the model; they reflect
the heterogeneity of JSON-like content in training data.</t>
</list></t>

<t>JMD addresses these properties by encoding the same JSON type system
using a subset of Markdown syntax that LLMs produce reliably and that
is inherently line-streamable.</t>

</section>
<section anchor="design-principles"><name>Design Principles</name>

<t>JMD is designed to satisfy the following properties:</t>

<t><list style="numbers" type="1">
  <t><strong>Lossless bijection with JSON.</strong> Every JMD data document maps to
exactly one JSON value. Every JSON value has at least one JMD
representation. The roundtrip JSON -&gt; JMD -&gt; JSON preserves the value.</t>
  <t><strong>Streaming by construction.</strong> Every completed line is an
independently processable event. No closing delimiters are required.
Parsers maintain bounded state (a depth-indexed scope stack).</t>
  <t><strong>LLM-native generation.</strong> Every syntactic element reflects a pattern
that LLMs produce naturally from their training on Markdown corpora:
headings for hierarchy, bullets for lists, blockquotes for prose,
blank lines for section separation.</t>
  <t><strong>Generator-strict, parser-tolerant.</strong> Serializers produce a canonical
form; parsers accept the natural variations that LLMs exhibit
(anonymous headings, depth-qualified item markers, cosmetic blank
lines, and other variations enumerated in <xref target="JMD-SPEC"/>).</t>
  <t><strong>Transport-agnostic.</strong> The format is independent of any particular
transport protocol. It is suitable for HTTP, Server-Sent Events, MCP
tool calls, WebSocket frames, plain files, and pipeline stdout/stdin.</t>
</list></t>

</section>
<section anchor="scope-of-this-document"><name>Scope of This Document</name>

<t>This document specifies:</t>

<t><list style="symbols">
  <t>The JMD grammar (Section <xref target="core-grammar"/>)</t>
  <t>The canonical parse result -- the envelope -- returned by a conforming
parser (Section <xref target="parse-result"/>)</t>
  <t>The four document modes and their interpretation (Section
<xref target="document-modes"/>)</t>
  <t>The streaming event model (Section <xref target="streaming"/>)</t>
  <t>The media type registration for <spanx style="verb">application/jmd</spanx>
(Section <xref target="iana-considerations"/>)</t>
  <t>Security considerations (Section <xref target="security-considerations"/>)</t>
</list></t>

<t>The complete JMD specification, including non-normative recommendations
for filter-expression and type-expression conventions used in query and
schema documents, is published as <xref target="JMD-SPEC"/>. A companion proposal for
integration with HTTP-based REST APIs is published as <xref target="JMD-HTTP"/>.</t>

</section>
</section>
<section anchor="terminology"><name>Terminology</name>

<section anchor="requirement-words"><name>Requirement Words</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?>

</section>
<section anchor="definitions"><name>Definitions</name>

<t>The following terms are used throughout this document:</t>

<dl>
  <dt>Document:</dt>
  <dd>
    <t>A complete JMD source text, beginning with an optional frontmatter
block and a single root heading, followed by zero or more body elements.</t>
  </dd>
  <dt>Root heading:</dt>
  <dd>
    <t>The first heading in a document, at heading depth 1 (a line beginning
with exactly one <spanx style="verb">#</spanx> character followed by a mode marker and/or space
and label text). The root heading determines the document mode.</t>
  </dd>
  <dt>Mode marker:</dt>
  <dd>
    <t>An optional character (<spanx style="verb">!</spanx>, <spanx style="verb">?</spanx>, or <spanx style="verb">-</spanx>) appearing immediately after
the <spanx style="verb">#</spanx> of the root heading, distinguishing schema, query, and delete
documents from data documents respectively. Absence of a mode marker
denotes a data document.</t>
  </dd>
  <dt>Body:</dt>
  <dd>
    <t>The content of a document following the root heading, consisting of
bare fields, headings, array items, blockquotes, and blank lines.</t>
  </dd>
  <dt>Bare field:</dt>
  <dd>
    <t>A <spanx style="verb">key: value</spanx> line without a heading prefix, belonging to the
innermost open object scope.</t>
  </dd>
  <dt>Scope:</dt>
  <dd>
    <t>An object or array context opened by a heading or array marker. Scopes
form a stack; fields and items belong to the scope at the top of the
stack. Scopes close when a heading at the same or shallower depth
arrives, when a blank line precedes a bare field, or at end of input.</t>
  </dd>
  <dt>Frontmatter:</dt>
  <dd>
    <t>Zero or more <spanx style="verb">key: value</spanx> lines and bare-key lines preceding the root
heading, carrying document-level metadata that is preserved by the
parser but not included in the document body value.</t>
  </dd>
  <dt>Envelope:</dt>
  <dd>
    <t>The canonical return value of a conforming parser: an object containing
the mode, label, frontmatter, and value of the document. Defined in
Section <xref target="parse-result"/>.</t>
  </dd>
  <dt>Conforming parser:</dt>
  <dd>
    <t>An implementation that accepts any document produced by a conforming
generator, plus the parser-tolerance variations enumerated in Section
<xref target="conformance"/>, and returns the envelope defined in Section
<xref target="parse-result"/>.</t>
  </dd>
  <dt>Conforming generator:</dt>
  <dd>
    <t>An implementation that produces output matching the canonical grammar
defined in Section <xref target="core-grammar"/>.</t>
  </dd>
</dl>

</section>
</section>
<section anchor="core-grammar"><name>Core Grammar</name>

<t>This section defines the canonical generator language of JMD in ABNF
<xref target="RFC5234"/>. The grammar operates on Unicode code points after UTF-8
<xref target="RFC3629"/> decoding. A conforming generator <bcp14>MUST</bcp14> produce output
matching this grammar; a conforming parser <bcp14>MUST</bcp14> accept this grammar
plus the tolerance variations enumerated in Section <xref target="conformance"/>.</t>

<figure><sourcecode type="abnf"><![CDATA[
jmd-document    = [BOM] [frontmatter] root-heading *body-element

BOM             = %xFEFF

frontmatter     = 1*frontmatter-line
frontmatter-line = ( fm-field / fm-bare-key ) EOL
fm-field        = key kv-sep value
fm-bare-key     = key

root-heading    = "#" [mode-mark] SP ( array-sigil / label ) EOL
mode-mark       = "?" / "!" / "-"
array-sigil     = "[]"
label           = 1*label-char
label-char      = SP / VCHAR / uni-char

body-element    = heading-line / bare-field / multiline-field /
                  array-item / indent-field / blank-line

heading-line    = object-heading / array-heading /
                  sub-array-heading / scalar-heading / level-pop
heading-prefix  = 2*"#" SP
object-heading  = heading-prefix key EOL
array-heading   = heading-prefix key array-sigil EOL
sub-array-heading = heading-prefix array-sigil EOL
scalar-heading  = heading-prefix key kv-sep value EOL
level-pop       = 1*"#" EOL

bare-field      = key kv-sep value EOL
multiline-field = key ":" EOL blockquote-block
blockquote-block = 1*blockquote-line
blockquote-line = ( "> " *line-char / ">" ) EOL

array-item      = scalar-item / object-item
scalar-item     = "- " value EOL
object-item     = ( "-" / "- " key kv-sep value ) EOL
indent-field    = INDENT key kv-sep value EOL
INDENT          = 2SP

key             = bare-key / json-string
bare-key        = 1*( ALPHA / DIGIT / "_" / "-" )

value           = json-string / json-number / "true" / "false" /
                  "null" / bare-string
bare-string     = 1*line-char

kv-sep          = ":" SP
blank-line      = EOL
EOL             = LF
line-char       = SP / VCHAR / uni-char
uni-char        = %x80-D7FF / %xE000-10FFFF

json-string     = DQUOTE *json-char DQUOTE
json-char       = json-unescaped / json-escaped
json-unescaped  = %x20-21 / %x23-5B / %x5D-D7FF / %xE000-10FFFF
json-escaped    = "\" ( %x22 / "\" / "/" / "b" / "f" / "n" /
                  "r" / "t" / "u" 4HEXDIG )
json-number     = ["-"] json-int [json-frac] [json-exp]
json-int        = "0" / ( %x31-39 *DIGIT )
json-frac       = "." 1*DIGIT
json-exp        = ( "e" / "E" ) ["+" / "-"] 1*DIGIT
]]></sourcecode></figure>

<t>The rules <spanx style="verb">json-string</spanx> and <spanx style="verb">json-number</spanx> are equivalent to the
<spanx style="verb">string</spanx> and <spanx style="verb">number</spanx> productions of Sections 7 and 6 of <xref target="RFC8259"/>.
The core rules <spanx style="verb">ALPHA</spanx>, <spanx style="verb">DIGIT</spanx>, <spanx style="verb">HEXDIG</spanx>, <spanx style="verb">SP</spanx>, <spanx style="verb">LF</spanx>, <spanx style="verb">VCHAR</spanx>, and
<spanx style="verb">DQUOTE</spanx> are those of <xref target="RFC5234"/>, Appendix B.1.</t>

<section anchor="prose-constraints"><name>Prose Constraints</name>

<t>The following constraints are normative but not expressed in the ABNF:</t>

<t><list style="numbers" type="1">
  <t>A <spanx style="verb">bare-string</spanx> <bcp14>MUST NOT</bcp14> be produced where the same character
sequence would match <spanx style="verb">json-number</spanx>, <spanx style="verb">true</spanx>, <spanx style="verb">false</spanx>, or <spanx style="verb">null</spanx>;
such values <bcp14>MUST</bcp14> be emitted as <spanx style="verb">json-string</spanx>. A <spanx style="verb">bare-string</spanx> <bcp14>MUST
NOT</bcp14> begin with <spanx style="verb">"</spanx> (%x22), <spanx style="verb"># </spanx> (%x23.20), or <spanx style="verb">- </spanx> (%x2D.20), and
<bcp14>MUST NOT</bcp14> be exactly <spanx style="verb">-</spanx>. A scalar array item whose string content
contains <spanx style="verb">: </spanx> (%x3A.20) <bcp14>MUST</bcp14> be emitted as <spanx style="verb">json-string</spanx> -- an
unquoted item matching the <spanx style="verb">key kv-sep value</spanx> pattern denotes an
object item, not a string.</t>
  <t><spanx style="verb">frontmatter-line</spanx> and <spanx style="verb">bare-field</spanx> share a surface syntax; they
are distinguished by position. Lines before the root heading are
frontmatter; lines after it are body fields.</t>
  <t>Heading depth expresses nesting: a heading with N <spanx style="verb">#</spanx> characters
opens (or, for <spanx style="verb">level-pop</spanx>, returns to) a scope at depth N. The
parser maintains a depth-indexed scope stack; hierarchy is never
expressed by indentation. An <spanx style="verb">indent-field</spanx> is valid only while an
array object item is open, and appends a field to that item.</t>
  <t>A <spanx style="verb">level-pop</spanx> (anonymous heading) at depth N returns to the scope
established at depth N, closing all deeper scopes. At depth 1 it
returns to the root scope. An anonymous heading never opens an
object; an object keyed by the empty string is expressed with a
quoted empty key (<spanx style="verb">## ""</spanx>).</t>
  <t>A <spanx style="verb">blank-line</spanx> resets the scope stack to the root scope, except
within an array body where a blank line followed by an array item
is cosmetic.</t>
  <t>Trailing spaces and tabs on any line are insignificant and <bcp14>MUST</bcp14> be
stripped before interpretation; a string value with significant
leading or trailing whitespace <bcp14>MUST</bcp14> be emitted as <spanx style="verb">json-string</spanx>.
A conforming generator <bcp14>MUST NOT</bcp14> emit trailing whitespace.</t>
  <t><spanx style="verb">EOL</spanx> is a bare LF in canonical form. A conforming parser <bcp14>MUST</bcp14>
accept an optional CR immediately preceding LF (CRLF tolerance);
a CR not followed by LF <bcp14>MUST</bcp14> be rejected with a parse error. A
single leading <spanx style="verb">BOM</spanx> (U+FEFF) <bcp14>MUST</bcp14> be consumed and ignored; a
conforming generator <bcp14>MUST NOT</bcp14> emit one.</t>
  <t><spanx style="verb">INDENT</spanx> is exactly two spaces in canonical form; a conforming
parser <bcp14>MUST</bcp14> accept any non-empty run of spaces and/or horizontal
tabs as an indent.</t>
</list></t>

</section>
<section anchor="one-document"><name>The One-Document Rule</name>

<t>A JMD byte sequence -- a file, an HTTP message body <xref target="RFC9110"/>, a
Server-Sent-Events event payload, an MCP message -- contains exactly
one document. Multiplexing
is the transport's responsibility: one framing unit, one document.
After the root heading, a second labelled depth-1 heading or a mode
marker <bcp14>MUST</bcp14> be rejected with a parse error; it <bcp14>MUST NOT</bcp14> be silently
ignored and <bcp14>MUST NOT</bcp14> open a second document.</t>

</section>
</section>
<section anchor="parse-result"><name>Canonical Parse Result</name>

<t>A conforming parser returns every successfully parsed document as an
<strong>envelope</strong> with exactly four members:</t>

<dl>
  <dt>mode:</dt>
  <dd>
    <t>One of <spanx style="verb">data</spanx>, <spanx style="verb">query</spanx>, <spanx style="verb">schema</spanx>, <spanx style="verb">delete</spanx>, derived from the mode
marker of the root heading. Absence of a marker denotes <spanx style="verb">data</spanx>.</t>
  </dd>
  <dt>label:</dt>
  <dd>
    <t>The root heading's label text with the mode marker and any trailing
<spanx style="verb">[]</spanx> sigil stripped. Labels are opaque: they carry no parser
semantics and are never serialized into the value.</t>
  </dd>
  <dt>frontmatter:</dt>
  <dd>
    <t>A JSON object holding the frontmatter fields. Always present; empty
(<spanx style="verb">{}</spanx>) when the document has no frontmatter. A parser <bcp14>MUST</bcp14> preserve
unknown frontmatter keys and surface them to the application layer;
dropping them before the application can inspect them is
non-conformant.</t>
  </dd>
  <dt>value:</dt>
  <dd>
    <t>The JSON value denoted by the document body.</t>
  </dd>
</dl>

<t>Expressed as a JSON shape:</t>

<figure><sourcecode type="json"><![CDATA[
{ "mode": "data", "label": "Order",
  "frontmatter": {}, "value": { "id": 42 } }
]]></sourcecode></figure>

<section anchor="prose-is-a-parse-error"><name>Prose Is a Parse Error</name>

<t>A body line that is not a field, an indented continuation, an array
item, a blockquote line, a heading, or a thematic break <bcp14>MUST</bcp14> be
rejected with a parse error. It <bcp14>MUST NOT</bcp14> be silently dropped and <bcp14>MUST
NOT</bcp14> be returned as an empty or partial value. This rule is what makes
the format's failure mode a visible error rather than silent data
loss.</t>

</section>
<section anchor="roundtrip-contract"><name>Roundtrip Contract</name>

<t>Every valid data document denotes exactly one JSON value. Every JSON
value has at least one JMD representation, and exactly one canonical
representation (Section <xref target="core-grammar"/>). The roundtrip
JSON -&gt; JMD -&gt; JSON preserves the value up to the normalization
freedoms of <xref target="RFC8259"/> (object member order, number formatting).
Multiple valid JMD representations may denote the same value;
interoperability requires agreement on the value, not on the byte
sequence.</t>

</section>
</section>
<section anchor="document-modes"><name>Document Modes</name>

<t>The root heading's mode marker selects one of four document modes.
All four share the complete body grammar of Section <xref target="core-grammar"/>;
the marker is the only syntactic difference, and it appears at
position zero, before any content.</t>

<texttable>
      <ttcol align='left'>Marker</ttcol>
      <ttcol align='left'>Mode</ttcol>
      <ttcol align='left'>Purpose</ttcol>
      <c><spanx style="verb">#</spanx></c>
      <c>data</c>
      <c>Structured data transport</c>
      <c><spanx style="verb">#?</spanx></c>
      <c>query</c>
      <c>Query by Example -- selection criteria</c>
      <c><spanx style="verb">#!</spanx></c>
      <c>schema</c>
      <c>Structure contracts and type declarations</c>
      <c><spanx style="verb">#-</spanx></c>
      <c>delete</c>
      <c>Resource deletion by identifier</c>
</texttable>

<t>Only data documents are in bijection with JSON values. In query and
schema documents, field values are <strong>raw strings</strong>: the parser returns
them verbatim (after the scalar rules of Section <xref target="core-grammar"/>) and
<bcp14>MUST NOT</bcp14> attempt structured interpretation of filter or type
expressions. Their semantics are application-defined; common
conventions are collected non-normatively in <xref target="JMD-SPEC"/>, Appendix A.</t>

<t>Delete documents identify resources to remove, either as a single
object body carrying identifying fields or as a root array (<spanx style="verb">#- []</spanx>)
of such objects (bulk delete). Because a delete document carries
destructive intent in the document itself, Section
<xref target="security-considerations"/> applies specifically to this mode.</t>

<t>Error responses are data documents using the label <spanx style="verb">Error</spanx> by
convention, carrying <spanx style="verb">status</spanx>, <spanx style="verb">code</spanx>, and optional <spanx style="verb">message</spanx>,
<spanx style="verb">suggestion</spanx>, and <spanx style="verb">context</spanx> fields. The label is a convention, not a
reservation: whether a response is an error is determined first by
the transport's error signal where one exists, and only second by the
label. A future revision is expected to promote errors to a dedicated
mode marker.</t>

</section>
<section anchor="streaming"><name>Streaming</name>

<t>JMD is line-oriented: every completed line is an independently
processable event, and no closing delimiter is ever required. A
streaming parser emits SAX-style events as each line's terminator
arrives:</t>

<texttable>
      <ttcol align='left'>Line</ttcol>
      <ttcol align='left'>Event</ttcol>
      <ttcol align='left'>Payload</ttcol>
      <c>root heading (after frontmatter)</c>
      <c>DOCUMENT_START</c>
      <c>mode, label, frontmatter</c>
      <c><spanx style="verb">key: value</spanx></c>
      <c>FIELD</c>
      <c>key, parsed value</c>
      <c><spanx style="verb">key:</spanx> (empty value)</c>
      <c>FIELD_START</c>
      <c>key; value follows as multiline</c>
      <c><spanx style="verb">&gt; text</spanx></c>
      <c>FIELD_CONTENT</c>
      <c>incremental multiline content</c>
      <c><spanx style="verb">## key</spanx></c>
      <c>OBJECT_START</c>
      <c>key</c>
      <c><spanx style="verb">## key[]</spanx></c>
      <c>ARRAY_START</c>
      <c>key</c>
      <c><spanx style="verb">-</spanx> / <spanx style="verb">- key: value</spanx></c>
      <c>ITEM_START</c>
      <c>new object item</c>
      <c><spanx style="verb">- value</spanx></c>
      <c>ITEM_VALUE</c>
      <c>parsed scalar item</c>
      <c>anonymous heading</c>
      <c>scope closures</c>
      <c>implicit OBJECT_END / ARRAY_END events</c>
      <c>blank line (non-cosmetic)</c>
      <c>SCOPE_RESET</c>
      <c>implicit closures to root</c>
</texttable>

<t>DOCUMENT_START carries the complete envelope header; body events do
not re-transmit it. Scopes close implicitly on shallower headings,
level-pops, non-cosmetic blank lines, and end of input.</t>

<t><strong>Lookahead.</strong> Streaming requires a single line of lookahead in
exactly one case: a blank line inside an array body defers its scope
decision until the next non-blank line is known (cosmetic before an
array item; SCOPE_RESET otherwise). No other construct requires
lookahead or buffering.</t>

<t><strong>Framing and truncation.</strong> Each framing unit carries exactly one
document (Section <xref target="one-document"/>). A receiver <bcp14>MAY</bcp14> act on events
before the document is complete, subject to the truncation-safety
requirement of Section <xref target="security-considerations"/>. An error cannot
be signalled in-band after a partial document; transports signal
mid-stream failure through their own mechanisms.</t>

</section>
<section anchor="conformance"><name>Conformance</name>

<t>JMD defines two conformance levels, applying the robustness principle
as a formal requirement: be conservative in what you generate, liberal
in what you accept.</t>

<section anchor="generator-conformance-strict"><name>Generator Conformance (Strict)</name>

<t>A conforming generator <bcp14>MUST</bcp14> produce output matching the grammar of
Section <xref target="core-grammar"/> including its prose constraints. In
particular it <bcp14>MUST</bcp14>: label the root heading; quote all values and keys
that the mandatory-quoting rules require; emit bare <spanx style="verb">-</spanx> array items
with a level-pop after any record that opened a nested sub-structure
and is followed by further records; emit LF line endings, two-space
indents, no trailing whitespace, and no byte order mark; and emit
untrusted content only as quoted strings (Section
<xref target="security-considerations"/>).</t>

</section>
<section anchor="parser-conformance-tolerant"><name>Parser Conformance (Tolerant)</name>

<t>A conforming parser <bcp14>MUST</bcp14> accept everything a conforming generator
produces, and additionally <bcp14>MUST</bcp14> accept:</t>

<t><list style="symbols">
  <t>anonymous root headings (empty label);</t>
  <t>thematic breaks (<spanx style="verb">---</spanx>): consumed as decoration within array
bodies, tolerated around the frontmatter block -- never an item
separator, never a scope terminator;</t>
  <t>depth-qualified and depth+1 array items (<spanx style="verb">## -</spanx>, <spanx style="verb">## - key: value</spanx>);</t>
  <t>cosmetic blank lines before headings and between array items;</t>
  <t>YAML-style block-scalar introductions (<spanx style="verb">key: |</spanx>, <spanx style="verb">key: &gt;</spanx>) as an
alternative to the empty-value multiline form;</t>
  <t>repeated sibling headings without <spanx style="verb">[]</spanx> promoted to an array,
subject to the three structured error conditions of <xref target="JMD-SPEC"/>
Section 7.4;</t>
  <t>CRLF line endings, a single leading BOM, and tolerant indent forms
(Section <xref target="core-grammar"/>, prose constraints 7 and 8).</t>
</list></t>

<t>A parser <bcp14>MUST</bcp14> reject with a visible parse error: prose in the body
(Section <xref target="parse-result"/>), a lone CR, a second root heading or
mid-document mode marker (Section <xref target="one-document"/>), and the
structured error conditions of array promotion. Silent dropping of
input is non-conformant in every case.</t>

<t>A conformance fixture suite covering the canonical grammar, every
tolerance, and the must-reject cases is maintained with <xref target="JMD-SPEC"/>
(directory <spanx style="verb">conformance/</spanx>).</t>

</section>
</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>A provisional registration request for the media type
<spanx style="verb">application/jmd</spanx> per <xref target="RFC6838"/> is under review with IANA
(media-types@iana.org, May 2026). Publication of this document is
intended to support promotion of that registration. The registration
template follows; its authoritative source is maintained in the
specification repository (<spanx style="verb">iana/application-jmd.md</spanx>).</t>

<dl>
  <dt>Type name:</dt>
  <dd>
    <t>application</t>
  </dd>
  <dt>Subtype name:</dt>
  <dd>
    <t>jmd</t>
  </dd>
  <dt>Required parameters:</dt>
  <dd>
    <t>None</t>
  </dd>
  <dt>Optional parameters:</dt>
  <dd>
    <t>None</t>
  </dd>
  <dt>Encoding considerations:</dt>
  <dd>
    <t>JMD is a text format and <bcp14>MUST</bcp14> be encoded as UTF-8 <xref target="RFC3629"/>.
Documents consisting entirely of ASCII characters are 7-bit safe.</t>
  </dd>
  <dt>Security considerations:</dt>
  <dd>
    <t>See Section <xref target="security-considerations"/> of this document.</t>
  </dd>
  <dt>Interoperability considerations:</dt>
  <dd>
    <t>Every valid data document is in bijection with a JSON value
(Section <xref target="parse-result"/>). Line endings and byte order mark
handling are defined in Section <xref target="core-grammar"/>, prose
constraint 7.</t>
  </dd>
  <dt>Published specification:</dt>
  <dd>
    <t>This document, and <xref target="JMD-SPEC"/>.</t>
  </dd>
  <dt>Applications that use this media type:</dt>
  <dd>
    <t>MCP servers for LLM tool integration; REST APIs with LLM agent
clients; streaming data pipelines with line-level event processing;
LLM-generated structured output in agentic workflows;
service-to-service data exchange; configuration files.</t>
  </dd>
  <dt>Fragment identifier considerations:</dt>
  <dd>
    <t>None.</t>
  </dd>
  <dt>Additional information:</dt>
  <dd>
    <t>File extension <spanx style="verb">.jmd</spanx>; no magic number; Macintosh file type TEXT.</t>
  </dd>
  <dt>Person and email address to contact:</dt>
  <dd>
    <t>Andreas Ostermeyer <eref target="mailto:andreas@ostermeyer.de">andreas@ostermeyer.de</eref></t>
  </dd>
  <dt>Intended usage:</dt>
  <dd>
    <t>COMMON</t>
  </dd>
  <dt>Restrictions on usage:</dt>
  <dd>
    <t>None</t>
  </dd>
  <dt>Author/Change controller:</dt>
  <dd>
    <t>Andreas Ostermeyer <eref target="mailto:andreas@ostermeyer.de">andreas@ostermeyer.de</eref></t>
  </dd>
</dl>

<t>A future revision of this document may additionally request
registration of <spanx style="verb">+jmd</spanx> as a structured syntax suffix per <xref target="RFC6839"/>.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>JMD inherits the security posture of <spanx style="verb">application/json</spanx>, with one
format-specific addition (structure injection). The normative
treatment mirrors Section 24 of <xref target="JMD-SPEC"/>.</t>

<t><strong>Structure injection in naive generation.</strong> JMD assigns structural
meaning to line starts. A generator that interpolates untrusted text
into a document without quoting hands that text structural power:
injected headings, fields, frontmatter directives, or an attempted
mode switch. Untrusted content <bcp14>MUST</bcp14> be emitted as quoted strings with
<xref target="RFC8259"/> escaping; a generator <bcp14>MUST NOT</bcp14> interpolate untrusted
text into bare-value, key, label, or frontmatter position. The
one-document rule (Section <xref target="one-document"/>) bounds the damage of a
missed quoting step: an injected root heading or mode marker
mid-document is a parse error, not a second, potentially destructive
document.</t>

<t><strong>Delete documents in pipelines.</strong> A delete document carries
destructive intent in the document itself and can traverse queues,
logs, and relay agents. Sinks <bcp14>SHOULD</bcp14> execute delete documents only
from explicitly allowlisted sources, and treat archived delete
documents as sensitive to replay.</t>

<t><strong>Parser resource consumption.</strong> Parsing is O(n) time and O(d) stack
depth. The grammar places no bound on depth, line length, or field
count; implementations <bcp14>SHOULD</bcp14> enforce practical, configurable bounds
(a reasonable default depth bound is 32). Exceeding a resource bound
is a resource-limit error, not a conformance violation.</t>

<t><strong>Content confusion with Markdown.</strong> JMD is not guaranteed to be
valid CommonMark <xref target="CommonMark"/> (heading depth beyond six; the mode
markers <spanx style="verb">#!</spanx>, <spanx style="verb">#?</spanx>, <spanx style="verb">#-</spanx> are not ATX headings). Renderers <bcp14>MUST</bcp14> dispatch on the
declared media type, never on content sniffing.</t>

<t><strong>No active content.</strong> JMD has no scripting, template expansion,
external references, or anchor/alias mechanism; parsing triggers no
network access, code execution, or I/O.</t>

<t><strong>Privacy.</strong> Documents are opaque structured data; URI-valued fields
are application data that no conforming parser follows.</t>

<t><strong>Streaming truncation safety.</strong> A receiver acting on events before a
document is complete <bcp14>MUST</bcp14> ensure such actions are safe under
truncation; a truncated document plus a transport error signal <bcp14>MUST
NOT</bcp14> be treated as a complete document.</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<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="RFC3629">
  <front>
    <title>UTF-8, a transformation format of ISO 10646</title>
    <author fullname="F. Yergeau" initials="F." surname="Yergeau"/>
    <date month="November" year="2003"/>
    <abstract>
      <t>ISO/IEC 10646-1 defines a large character set called the Universal Character Set (UCS) which encompasses most of the world's writing systems. The originally proposed encodings of the UCS, however, were not compatible with many current applications and protocols, and this has led to the development of UTF-8, the object of this memo. UTF-8 has the characteristic of preserving the full US-ASCII range, providing compatibility with file systems, parsers and other software that rely on US-ASCII values but are transparent to other values. This memo obsoletes and replaces RFC 2279.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="63"/>
  <seriesInfo name="RFC" value="3629"/>
  <seriesInfo name="DOI" value="10.17487/RFC3629"/>
</reference>

<reference anchor="RFC6838">
  <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="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>

<reference anchor="RFC8259">
  <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="RFC5234">
  <front>
    <title>Augmented BNF for Syntax Specifications: ABNF</title>
    <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
    <author fullname="P. Overell" initials="P." surname="Overell"/>
    <date month="January" year="2008"/>
    <abstract>
      <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="68"/>
  <seriesInfo name="RFC" value="5234"/>
  <seriesInfo name="DOI" value="10.17487/RFC5234"/>
</reference>




    </references>

    <references title='Informative References' anchor="sec-informative-references">



<reference anchor="RFC6839">
  <front>
    <title>Additional Media Type Structured Syntax Suffixes</title>
    <author fullname="T. Hansen" initials="T." surname="Hansen"/>
    <author fullname="A. Melnikov" initials="A." surname="Melnikov"/>
    <date month="January" year="2013"/>
    <abstract>
      <t>A content media type name sometimes includes partitioned meta- information distinguished by a structured syntax to permit noting an attribute of the media as a suffix to the name. This document defines several structured syntax suffixes for use with media type registrations. In particular, it defines and registers the "+json", "+ber", "+der", "+fastinfoset", "+wbxml" and "+zip" structured syntax suffixes, and provides a media type structured syntax suffix registration form for the "+xml" structured syntax suffix. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6839"/>
  <seriesInfo name="DOI" value="10.17487/RFC6839"/>
</reference>

<reference anchor="RFC9110">
  <front>
    <title>HTTP Semantics</title>
    <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
    <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
    <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
    <date month="June" year="2022"/>
    <abstract>
      <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
      <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="97"/>
  <seriesInfo name="RFC" value="9110"/>
  <seriesInfo name="DOI" value="10.17487/RFC9110"/>
</reference>


<reference anchor="CommonMark" target="https://spec.commonmark.org/">
  <front>
    <title>CommonMark Specification</title>
    <author initials="J." surname="MacFarlane">
      <organization></organization>
    </author>
    <date year="2024"/>
  </front>
</reference>
<reference anchor="JMD-SPEC" target="https://github.com/ostermeyer/jmd-spec/blob/main/jmd-spec-v0_3.md">
  <front>
    <title>JMD Specification v0.3.5</title>
    <author initials="A." surname="Ostermeyer">
      <organization></organization>
    </author>
    <date year="2026"/>
  </front>
</reference>
<reference anchor="JMD-HTTP" target="https://github.com/ostermeyer/jmd-spec/blob/main/jmd-over-http.md">
  <front>
    <title>JMD over HTTP: REST Integration Proposal</title>
    <author initials="A." surname="Ostermeyer">
      <organization></organization>
    </author>
    <date year="2026"/>
  </front>
</reference>


    </references>

</references>


<?line 653?>

<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>JMD owes structural debts to JSON <xref target="RFC8259"/> and CommonMark, and --
most directly -- to the corpus of Markdown on which large language
models are trained. Thanks to the IANA media-types reviewers for
early feedback on the registration request.</t>

</section>
<section numbered="false" anchor="companion-documents"><name>Companion Documents</name>

<t><list style="symbols">
  <t>The JMD Specification <xref target="JMD-SPEC"/> contains the normative grammar
with extensive examples, the non-normative convention appendix for
query and schema expressions, and the design rationale.</t>
  <t>The JMD-over-HTTP proposal <xref target="JMD-HTTP"/> describes how JMD composes
with HTTP-based REST APIs, including content negotiation, method
mappings, and streaming over chunked transfer encoding.</t>
</list></t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA719eXPbSJLv//UpauiYWElDUIfdlzTTvbSOaU3oGknenX5e
RxMkQREjEOAAoI6xPZ9lP8t+ss1fZlahQFJuv3gRzxFtg0BdmZV3ZlVHUWTq
tM6Sfdv5y/nRvu3b2+Spjt7GVTK2N3W5GNWLkh6P4jq2J0U5i2s7KUp7dnYe
HZXpQ5Lb03xSxpVr2jHxcFgmD/uWxjPjYpTHMxp9XMaTOiqqOilnyXNSRn+f
jaOdHTOK6+SuKJ/3bZpPClMthrO0qtIir5/nCV6Ok3lCf+W1SeflvqVpqnpv
Z+eHnT0Tl0lMK57Ps5SGoT6VjfOxvU7iLLpNZ4l5LMr7u7JYzPdpkX4ge+Mn
MffJMzUa7xtrI1s14I4JXHmXlGmcpf/k8QE5IYA/ZNmM/43vaMh0ZKtngm1W
uYGSeJbmd/xrlozT2AIeU9W0wF/jrMgJtuekMvMUU9fFSH5aWxUldZ5U/vfz
rPlp4kU9LUpeLf1nCT30pd+zlx6v/FpQ3s/HtIxq+WNR3sW5ArRvNwjD6UM6
XsTZJn9OZnGa7QOR6PzvzY71xokxOSOAth1ruD453Nvd/UEfX3+75x6//f71
9/r4/e53b9zj3jfUwGCf24NQc9fzh93dHTweFrNZkZ/H5f0+r0pptHltb+bJ
KJ3oxnObBjn4Ewly/tKz5/HoJC6zOE9kqLi8S+p9O63rebW/vV3RQL0RDzyj
gXuEn21uSDRAU+7t7L2hn0TM0c3V8WFrOfSyvQ77sNN73fvm5eWs7tXycu7S
eroYYkHbDe63wS1Y6PYwK4bbtEW5fxU97Pz6ujcbt9f8ra7559vbq9aawea2
eEhKy5/s9fHNLXEHcWEpIFyVxbyo4qzz/w0KrCZCzzVQmCgiHhsSR8Wj2pjb
aVpZEiqLGRh5nEzSPKl4Hzb+cnN5YUEa4+Ix3+xaYjlIsiFLsmXWFhKkAar0
LqeXEGmLKiHwWLKNRbKlLcnWpd+jbDEmviaOLbJoFGcZmHyezpMMC+na88Mr
u3FejJOMaDXHAoBP4u8i24QsIUipFeO8f3Va2REJLYJlbIfPmNiwNKEWkGOz
RVanEb+xkGSTrHisegxsko9ojsrW08ROFllmGXiIGJVDZoOYyYLjNgkurDi2
JFurpLbFxGOJGud1/GQJxdMkBmAVY2KaJmVcjqbPXTMgCblvH+JskQwsA8kt
iuHfkxFpgjTJxrTcIa2Bhs7SqpbvcVnGzzaFRGRgDO346P4fi6LWARg4jIet
wcQ9ewtgZF9ok/EtKsqUoCf0YAiRqvEQVJwQIp8Je7M5zUvfeaQU8j9UGV07
j8sqQRf0yOueU0pMP9S85C0fpoAGxP9IdCvIZJB1J4BmUiP5mJY6N/w5+pE3
Av/g57xMeHdlS7hvb5laK5EU2ga9ieVmJHO6/GIU50VOciSTRVsakXBkNpL8
IcmKebIpzSbFomzGnDEZbICmu/YfC0JK11ajKQnxLhE3cCPdjFdJggjumDXQ
NTqK5r1LwW5O4ZlB3GhY8OugJ1w5S8fjjHTCK4iPshgvGIX0+5U9L0i8i2Q2
ZxAN9izO7xZEy5aZg5ZM1F5tOvrndcx5jGSZV7FBMW0MqZ+SBklAwG3GJIiT
PC7TAqLp6hSYm9O42D3Pp7TVd27TiZYEudhesFdUF8pns6Sq6KlyWISEGNGm
s3Uh6KIlT9K7hSDIYIU9oYGPH1XJff4MUgRaiSzGBWE9xvYvgeVIPUfLinYo
qWswAriJXtNCRTqBO1UekZCYxaMpOINWrI82eRpNGTHDpH5MktwQIkFZWAJN
QHRFI04mJPEdv9iGA2hwWiuJhoJgnBHxqXFnZGcYcAab0JMIzKTDI7u1dVvc
s4hMJqT9iE1Hz72tLcbEv1UeWBoQ0h3SxW4w+48tSRQASQKd8EzyHk/3CTYD
WpjkVEIMENdF2dAHgYLZPEQlMX9eCB7n8XNWxOMejUT2KVBe18/RnIQKJhNm
jYSFYRiSJM1I3JJWgMygfSahngDiCpjKC1h3JX0jofHsSZK2EJzbHs4DBrkz
p6ZPhMA6oW67P9h5Uo5AUMWE7buaEKEg0OBs/NBvFgJAOIaryGgTiIBxGhvc
srG7g3Z7ezSKG1LEG1i5yIV5Wd/w8Ok/k3KzZ/s1IAKbJGUC+CrigaTLS8Gu
jUiY1WRLx3lFiyH0jtOSJCAtnSYDlSyISEakuXnrsfN3zzagiJ6QwI0XKlNq
S+K89jQAbVoRtdbERmOIonRG2qBc0i+0Uthuqk0Ij0VOa2iIh36QLE3H9J6A
YCmZFazOmHygZgiT1QEtk4YRpcNDrG1PROZ60MQQs3XKcxDsCb2V7aWBvHgF
a0BFkmQbccs05/X0bAO6yH+IbIIueSLZyQxMqoVGgt6OWXVUfqO91CdiI3s/
W7Bw2cc3LOUfC9oLG4/HKd7HGTiE2ReTZcUd+Rq0KV0VHES0FYvEiyMshETU
kL4SYbCrEZdKsqLoddtAGg07E4bJxSF8YeuYDxzVqx7E11pZj3wFogVANimL
mdBtywCmVT3Gz55RYVOJOpuQW0HCD3CWcZqJc8QMT4y/yFuyATtGKlvNBcGf
sxNESrCVxAPk8CDzGJ29VGNbokpYvQPJwwUZNmnALAcO2ZOMCA9sQV+mJBlJ
chJiiI6BUsAfZek9WIGESS7CmlafYytY8hsDFqbNIsgq0eyAmEzohIiLXpDI
ZmONjUbH5SvW2m+baIzP1u54ISU6nNzSFEBOwfHgZDagGpupx4r5SFTKFaFy
lJIuqASAtGpMYZIAFe1lNXlWeyMjuxPLa6AiDbDbAyEVVUVjVOsMKFDTMVtp
mIDlWmO1xHNIdNj6yVPMcoc84sDu6rmu/o2dkidLKMjIKa2lNVlyFrKabS9C
EgsmtiK9rWa/3lbb67UE2lDkHUsijOuhWWdzGnbFvdkpimMEUyKwPC8KL4wC
cQgSVZ5nFWavVJLAO6pjGKcAhl0YInK7AZNkXk8jzPeE16MCdEQy6n6TwHjd
EwaPclEyDZ83IHiRZslC5A1RRqDlELfWtDAGaZXmaFAVy47907LhCNp+T7aj
opwXZcyO4wu+hXoN8ppdB3q15CbQxBXrLfoS5/eBB1Ipwam1IErpDaD/s4Bc
lKD+dOS8gJJspow+0F4QJm40rgNUO+jixgbHjDDQDrxkj0cjwjuTjGJBRKPE
nRpUJU/TdJhCptBe0WjPs2JReRR0dff+saDJ2aKAj2QReGDPkHTuLMHOMLgY
RB1LMHlBk5fhrElO/FSy7CNC+fjRBSk+fwYpfANk3ELH007UZODmUNIjQN92
tQLSheiJ82fRjaNFFrN7X7tBgCp2Znv2VLTjIq2ZyLElCCh0gVn48zcY7fhB
3Flyi3kcssYtFCm9+s9keFOwSiZTfgYQ5xnIfZJmDl7nVxN1j4tFvU3/pLnI
sRumelosu1hHKlhe9LjYZL1te11240ZJ6ONHotYk0veEPG283iNz5p/zy/Cb
bM5FmYsbH7OHQMgVFSf0E07GbyIZrJlsnV+n3hnxGIzZEqataFk3Go3/8aPr
FHGnZsS1Ll+4EN+g6fMFP9Cu+IE0ezAaWQlxBJlJnpr00rVQk0UJldr+2FqJ
NlnT3/BOOMcF+9cyOMKgDO1W5AOUMOrYUBjLWAj5gLgIj1HyBB1QOdcG4Ibv
aBFAGC9yUQlzsW8tYQh1DJ2x0QUfzBdDkmAwdUlNhYwIQxOrj3OMPNfYGvvV
aRB0Y7UJ/tF4VRMhWj84mtLgcL5vE5BaQZbhM7PGtWgTJqP/LMpxJSgkywrW
KNmhnfN3N7edrvxrLy75+fr4r+9Or4+P8Hzzc//szD8YbXHz8+W7s6Pmqel5
eHl+fnxxJJ3prW29Mp3z/i8d4ejO5dXt6eVF/6wj5ljIrNCEZHsMk4bYGWIj
LvhQ9uHt4dX//PfuG0LD7zT8TN62/EComX48TpNc5SU8AfkJc88Q/SZxyfGE
DHJoTrILooiwWk2htGA7EU633gMzH/btH4ej+e6bH/UFAG69dDhrvWScrb5Z
6SxIXPNqzTQem633S5hur7f/S+u3w3vw8o8/sWyNdr//6UejxuGEFLlwi7lt
2X4I4YqxwgxRT8nEupuSUG5vIsnZI/+4r6TfMC6JOLhlyRPp5CGJl5zNBqb9
OLfFXBwe2BZ5PWM7BM4PTALez9g5BmVBRr2q1K6uUoQv6fPCIrxIAp0sp/Gz
M3Eq2tfroBuWxyCmZeVfSqjJAdOFvem+sNq2u7C/GG1++XDyAEBoyA5eDexo
GiNkTaI/XF/MUlj1PYDahikzJ18W/ivBmMVD+PKEok1nyxbhKmrmdrVdW+qC
ADxvxmb0BzhtlrMx+N2gawc/0V8Q6tFg0wpjMAJmrAE4ihFPZAMwEyAibVtP
l5E/Jh1BDwuST+jvYo8aigREEoYMvOpKjMeWS1Bx0A76gJQqwgLkB8GFhzkS
ogzDJLm4he0RCPy3tN9uX53HxgN4PAUEvQIJqx4GRoI2Q1C7C3A39lsrsh2Y
qwJsYKViQX4I4YaVYDqTDrgo9ltMcm+SPoE/siK/k1wDR3DhYpBhO0NUhsyO
3EVN2AGgydgkctsun3wgfqS5CPRzhOgm9I0Ewz2xrZB7hBEDpoNvcaCoYCgZ
el2hLk/9kFgs5LqYK7kghYn+blj2gRKWysEatBs7x2CIacwsUwrbSWgHYZuu
69jgGQgbJWwtBVvGtE2jJlADiBfPF6CQk0ayAFP/J5QWazIdvKM0ZgTlKa9k
tpCCjA1oCJFJZlRnk2Vke2VkVtUxUyv7CWnlfVDeC0GTGoqIHSFmIWaNKL0W
r7NUc17rsRqhnuy9ySomqTrPzAWNWapz7bPUFVIBhYgbpxwPpuuKOOqGElno
3A8bLq0nGoTXTKO8ZPHSsg9XliJ0m0JbzJwzL9gSx6tit8QjQV22dQb3nXP/
4FEsNA7fcgBHyctOVGhY67Do8PmzwC1YrdoOwNhD3er+Jaj9Ir8AuMJYWRIQ
RL4STHWU12y0ui0sGZfXseLasMV4CHL/s3pBtNJXrTbqRDn/2uVYlyZ16ycK
0cQOAmYIJeW2//bixIhN9s3e6zcwgm+buCeEUMlBZxr9HQ0H6c5/zYuU8zPQ
O/bd7Un0vY6C0gKy7MaJBNLEpl7FpWUrzXnzgjUTYI2g0jUcrGMH6e79/Ka1
8XT09QS0TD6E+H/96182HuYTg5y3p2T68yf7/u3l+Qf7PmCzDyxbIicgt8D1
kdoypFguz23450/2908nxycnxgRD6JfdreBdBClmll9Qqw07mUUsOu02Hr3Y
27THl2fGf/QT4tv9Q1QlcxEGJuzkmxjTAoNfd1517HuIlwga54O9uaLZWQVF
VXqXZrQAsYJkat/ST935qUNtOr/jv6OOCftqi/cfOkYGCZG0u8XvIhhDpnl0
n2kh2/Y/Dn/uX9O/izyVdiZEvTRUcAR326IiHO58Ytu9MXbljyyYIz/bHH0h
ReH6s2aTbTKteXhmkdYen9s6lP+9ZrJqMYyWWnE6KC6DF6ymonkx93OKHYI5
97awYzdXZmnyABHaGFuPLWtP90LDcNfQaXWdK91WurTBWD9PSKTcy8Ma0AUg
xDcT7OULhC5EubTL0qyzz6MEZmHEj2b5Bc8ZvOTtXvrNTNn50XbsFk/ElEoE
/2NHGcMEZKRrVYQoZel+4ZcJvyiPRDR0A1HQWBtsgLmYxajhChZkDS3i5V6n
5Ite3K7Hmn4LOHKPyMo4idG89oJk2/69KvJIcj+mJV905zZs/+zq5z61PDr9
8+kt1vurCga7aYxMHo4dDOiGJwE+TBi5dblIuPckzio8rWGoTr7Iso7j+3Bp
OqoXNm7bCERBRbAM0AoB37C7+wBEgYjaGDk7MQ0VuJfrBZZ7aDr//un7nejo
u5MTavb7p+OdnZ1od+fkBPoixIY0Pvrru8vbY7vFX3gceWOaFy1ULsg6GMXz
ZOywqT/N0ldex95OtLfLq9h7HX3zlp++OVq/tnAwxdl/dYgqqe8etui/eKO2
+e+hbBr/nb+wbSV/rfnvRce++fn4b0QyRCQhDchE74l6Pgg0ZJLY9/w0IQf6
gz4nT/MPxn9vNnUHo2OJr3ej1z/YLaFJnQIDNE17HSIR/m7ckM1AxHtCh8fg
9vedPyhJf/B9yJqQIE25yMiWGgQbOWBTdRCANeDQDQKDxA9QY+pTDlodXNu5
L+apYNWpRVPZ77jZt3inETcudulpiLb0a2GORJCBl4oHwTWebq7w99kJ/mbS
HUiB2ECoTFZKTrFktUMrsotSX1Q+PNm3vV3JA1whP4RSu4qzUGQ9wp7lrFE0
at5+Xo5nBd80S+zCxs7/0nhw44DBqpXEJznyAbsPrAsOInbpHZNHBBMbr9bH
X0CZFe0EhzceiwXJTTZR2/tFyIEowr8siTRYA8kzOOAhFtRFatRkfpo7maW1
xEzb5LB+xRhFFn2XagB60BnYDbDXJs37ysqP1729nU2NFemrI3mFbaNBQvBd
FGwQ8ayidYKYCaEFG6YCR4M0GET9T1r5vkzyuo9JfhM2ZF8kAetrCDSjFjhL
g2VtNHBpziaaxGO4QhQaQcozYl2qJIgHy4azMk5jNAwQu0D5Bm1QOUGJiuTv
peAAU+BrEDQTF3ZeVKmkr8/Y2Romk0KppxX/k6KS0B0/cKEKdppSCaNziEDi
NZIS/rkVxXSkXVnqiYXsB6EYJoSLdgizYtzMUb20Ab+as0HejCLa9G5xsQnQ
XShIprtg9w9DqJ/lUtscw3spmX3QZIoRMMlR8SkFA44vh89qO2vmn9zoQWiP
DNDPlQ9xJiDNEt1oLRVqtpuLj+YucxCzoMH6xLJhcRlLS0kz90MErMn0bgbw
B+hpQmUMS4XkqaZ2fPOurxNAmmKcJOQvS5+KK7tcKFqSzEtjM7lISBAIWVmX
IFI3MyT6gyAYROziI1PEefP62XFsWgUbIIF7DKGcJ03BbBsDEs6dzkDz0JA/
3tAZINab1FUQNuQdXwWhi9pGghZTYDKE53PdO6ZxEbKtcGAr2p4HooeLNCqf
YaeFfUuEqbVIEoPXjGs85NgEAk48pFQJozyG0465VMWpZGJhjFoTWCnKt+1s
7YGXImoKM96C4TjN30RjXX0UCJZEExb22yIeY3wpKgL5jM7rRidUfEfCjYxO
ZhmNo56dQPM1IR8MvBR5CeImzFQSOglTOYfXrZRCEz2l0TcOr+lvH1LZZL0W
owskb7iP1MwhoExAoZ74NDOflGVR0uJ4MyRH5BA6eHt5Tgz67g+IjzT6xBfe
czz7jvR/Mj4QYv4KJBY5kPY9IU1cmoEwhui++rFw5LSCwIPlaOW62BMID7ls
YadykcMSaggUKaNpUab/hMrkShWm2NhXv3MyhPgPJs8l+QwuJWevyTxjA4nW
7yNQZBv1OXI3fK6TxjSBXuViDEhETk274mhhPa52xnEdDo2aoOojkqoPrTrQ
8lweBacj3CA0vtf5ijmD3FkTTD6Hjz3PkidgSguqfSXKv1WuzDsdcuHpPmfe
UEuCjSMfqO7a1nimzypyNfGDimNaiubeMi5XhVLabaVIOCBuNHH3FdR4AGUc
mkZVmnFtmFFqa4QIGnBGx68kSGq9soeegrg2zF5LGQobumGIGfu4ypxOP8iJ
CTIbUZeGMyPP0mIcZOBZI2xtucD21lY7tcklKrMEBioqaoAQhK+JxECgAyQ4
YLBy7g8PkgzEk+QAB6h+KrnQ1lePMlatS4iuSTEu5wKloTPbZFJCE++dy4KE
/YlQmpyqwOPmDdKwzHNBYerg/YeBlUCTE+5km2Ec8ReKeUxgas2ur0cXlCPl
RXDjVKAoFHYwWO2604TsVai6c6mcSTs31ZdiRdXI0yLzSacwxKtGnu1nXHWr
pZAHoolRnzP4+HmwKVmzVhYJ5ZS04mAsLYn2wsilqAxM6/sc9RHhzKjUZeic
oUvDz5wKDyqFCPvPZKYiPVEW87kCMQtN3LD1iGUYp4KlXQrjE9LQh9PBFYw0
t91BlajQhbddWkkzpMu87QJa19LoaYz8GYfnoVLNR9sBdXT2bQfUhaIWpiC8
uCyJgjsoSOwEyKAvH0kKdngN+GE76Zj+fbNnP9vP4qp7Z/UUMwsnH0NQgG1Z
orKt4RKE4nxoLtPL9YSPn5DJvtDiJ2fhGHFZ4iD0aOV8Q9wIOhZjQGrMFYZl
Et97K+aLevV0vSSTHQ0kmdEGvhxOdJLoMVRzSsW9q/HlPBNCBgD4EYDP4vuk
MrWvTiTm1bpxYdjYPqQk8DNdmSXdPGWZTrPIquR4H9nPlejAa18KjPN4cohQ
qmDFM2gXJjux8ttVyeblquSlkmTxKMIRmyrTdssvVCQu1TV/7Rk0u5g7luQI
hzvITMImwcmkajmWQ/6dCBwR87RpY6R8NTgmmwKPkex6p54VkauAo4b5WVHa
BEJ4XQdc/Mb15LGob1cETei8o7XxbujxFu4h7ri+gaVinKXCOtKbOOdcOAnd
uFQWqcGytmYItUCVSAl0IepsTT0mmRBZJh/Ey6/D0kTmYZ/jnLyYgj1g+tZJ
1ayRYy++LHucTvTgTlfrLbREB8RmXLCAi526TpBCgWk8hTDyiSuxaYJPjBFC
yCd7tSjnEECfzKdI/6w+fNUfGoEDBDwscxAebpYOuDVVw9L+pwE3k0pKevgr
P5CkPn6KgUOYhLIJrAhKFMinsXb+nXTW4stgMgYafF35Wk4kirPYlZlK/0j6
iyFCD2RESTUav8GECCdAxqJgmPBmzCU2ZalK6TcPjJKw/HKxqAQUNHKH4ba2
yvjRnW7Z2toPChac8WZYE5LsGRJMM7sRe0tWA2wSd/0C0W3yarwQh9YioRye
SVyqMAYHcLEse6S4u6ApkJXzNWkZmjllS41HWopwYOVgvQlLamPetCwTfdMq
2uUTVq362SDo2ye6PkqWzi/qlkF+yIZyJKRMZsUDwgcp6wdW9uIXap5LuNWX
67hR8Kx1ToV2Y4khUYQNIiNLhuGmgT+GAKwMVtmN4SK7dwdue/ZtIiefYkdv
Xo5gxjThmlY5WvIg0YK8XqnzSWtihknXl5R8oUpaUE+g+9LoTI7ycRWDFgce
i8Z0Z2MlENmmbjmGhFWIyTzgPgNijWADgyqnAc6kLCpY+CjgGGjZrXP+B+rr
DbpmUC3u7hBsLHJtNdCatIG3YW/9vByECGdka8iIftOLK8iklb31IOn5b7EM
+ESTFkuOtcqTwFj2IaUxYjG0XokmFXykVo6j+Cpi9cu0WItXCXt5smARVCYw
S3D6jcNjQtiE/jl5OVB+PAsTJihiDCZJxiZQPqzDmsNHUF9Ncb4/otU6Ev+1
Z+DJ4Vw5jCSA5WsOJDEEDyx59EyS7Qdnx1UsIQZS2Zv+36KqfnaDcgQiiYkr
sBDCrWAf0ROj5Xv7UEyIcJMA5iABtJLEBxqt5FTRp5a6aYXBVQAGFvgmjXR0
efju/Pji9teb2/71Lb14qYRNVEJY7vfJnpwenx3Rv/S26xxjMaF844HdEEuW
32+6Tn46anOgfSR4xRhpLjrggX60QvSu8+HlxS1y4p9Q8CdV+0SJTSdXxypa
7BUmQefLt385PrwNpw5bwHn9ZPvX1/1fVpuQJtxGKqcN/+nt8blvmyePrdi4
9Ftq/B/9s3fH9EORpZrIt1+NPH/SYC+IDidBAfMMKoPMG4Xn+OKIFicLx7MS
FsYLQrwb4g5KHBf7cHN4eXX86/XxzfFtOKifCBoB9ENKfYlIVB63LTlf2IeV
I8UiheSylnFhII1IubIcQTQwrZeqW90K2N4Pqll9FXFTg1J1bQhNWECsjkO7
ghWHLov7GCPxMTbPmo397COgqViymeuAssy2H1Il++3oecqKZSnKTsocJ+DA
85K6IPtK5N2C5HMm7gWiK4AkHKyyEjfYaMBzxqppAvMHrf3jQ26PaQU9elHo
mTd/FNODaRqoirI5IM0YOtEgINuD5SIfNecfIZ7CGKEngAAv/n6Q0B9rRUzh
j/XdqfHSnvd/sfGIvRMhEhMEN8Kz5I7CuijKYvZS56xZZVTFk6R+NmVwiqdl
171oBHC+R/SZXmTArjo0W8b2XTTkYBSLztj74m59B41erLSbmaVjPUHs3XA9
+aHH0rC5swTXT6TVrNLiUl/1aKW2tKmCFE3mK0ofCxt8lRo0UD0ZM89NhfVw
UdU5DhnP3aFlw4YZ98tsgKh9F9gXK4FNK4krPBcLF8uHRkjJmSXwwq8SepeY
gT9A2gJm44ZPk24uhVm/WH3aTkM3zqF5yU4PTrOB3biQISxWgHthmsOZLsa8
72KcSy7ugWTmOJHoXI5cTtkbjjSJK4ozckX5HKExyxJ2JxSzB5Ly4JwQlEdw
AMJosKipqFPqyvlOhaKUg+nu2EHM+WboisUw8q6HYQ+3aiV8JouS+V4GqXQJ
ZyciV+T2C9zu8lhEcnhGwmMsTNdluLzBwzkODmqw5XUgIpYGNyTKcLWcRtgk
/IBDMJVLbqqH1py9/NKxRa1OEXOpRUW3egh5mY7W5IHYwKuZfOK1JGdcibhm
rf2dEbTwYCA+/dro45BAKmfTMP1sHphoKUBIDQZkgg0294OUWcWl2MHRxdSF
IS00Rio372RaFK33NyyHrqUQknx+CY3DapUsrb//pes+qeHQGJRY5/JBajlr
RO/+sBvSqKSiI/go+Dc0exjcdZrXqSmPJD4IIrfrhGOj/y/98zM1gxmiyBlC
wZ1IWATP+wnL4KcfcexKM/Ax/OzcXwrjk+6RGJONMcgZRIPjxvOEUYtYKCjC
L9SdJ+L8hbof7Io4jY7Q9bLymZZJ69YlVSLk8KS+CCz0yYOzHd/13mBBnMlt
82a8nIh9e3mu900pB2hMm6Gq2meJ20KxuyoHtRbtezBaO20hgWwXxnbh4iCc
va+jqb8NC8e8fDobgOC6RgIxyBS2vBHiQyjKVqzQxfdetiD83VvmNzAv9CZ7
yXUuNxrodukUUidsHUraIEyUAEb1EsnU6wUSh2XRJH2S67MWKV/38yB3zKw9
XtKVgYxP1wd3h5HYjBTtmIfPLLsaH5dRaNHPhlw3RCqHwwBuQdtcLvLKnvYv
+lzTFxwWhymx7oQ5b39ZiP/N5kBwah0ajDSOv3knuIlz5TA7rleSpDZur5Qr
vHDxRsnePTlEDAaWZjZ4nAjjVP+OReHOyK49p23CnYVkHF7hxPbIR9LaB53T
iqPffKkHLltZzN3VCrLD0iOuW7BoAiB4YxDCw+1Nzts8YJNBLmxMaxEnGuRs
b4hQvmlf3EMyBXFl7MnGAEBth/E8wlCPkIT9uUWElW8YNfthzM+Ym8WwDj9S
J2P0OPoYLEjva84d75NpjwMOly5UtO7jsbs3p73laKABEbni0d1kERTl6AWJ
rKr4IJENDxKhWObIB72Cc58IN5UIQtIO9G8OT0+DEjiOl30XDckOgYmOA5fr
7zXA+m5IoH6Fyb5CGzTq6XJiZHX0l/NXfJnHcnQ6DuLTbTG7JOuk+tCJcFF6
bXsJZx3pdaa1iF9z4kyFt9zVpOKb1IYxV/5WgxYhSlI3wIkImtadCsT04aW/
zCyIt0q40zM5hkLJid676a62k2tIgtsXDoLrFhhjaMT3AWLVGeJtxFxNFEyu
nXOXfkoXjs3JYU+te5GgG4xwGgU38jgHpHUbqfoJMKD0ImF/1ecB20LlQzri
6/70UWZ3d/4dtK8jlNtT+KBrfCcU0aQ0VgnpQuqY+t5utP5yXtmIE1RMEosl
Obv7gx4k5QEM6VmMi8gkL3iAK3ZRz1BNeQGShLk9/tsttpkwr/ds8NXC7rIs
uWmOM15yBnL5smL7x7V3EP8oLMLSc4HoMnrjEoTLCwgbufJHdGfeNBCJ0mfZ
uH0o1yVy4gh5iPL/dgGrgd8VIY/UZ8seV11kWgoKZTN/YO0jKYqGLvTar2ox
wTmmUDf9oKc4vfhZoylfkjgaSsYlYakrwHTDkPhnmLCmlnKsOGbPVA4sCoFE
jmk9lHajuZAzzVUCaeLaJ3gMmKgWDKUSFXeCY+/Nsp3JwZyb1UHBLXm8ersV
X8VWIXYRXkBpZknM90wQweltQuQ/8w2Aje8uZRecAivkRsTGH4SOMVyuE0ha
Z2g7lxliUSUR66TgAsw5Yn/7RpZP4zV3CbjbBUK3SEwjOexesFukyTqXMaho
6tG0Z9+tOKxrikSXfFes2rTy/Xy+hiMF8bpqxwAlDUYMQ8gY4cp3TdBz6Fyj
7UUrOh/Ut6MSPLSEpf7jZTNZrj/T6y7imR40jg0ucCfAHPppWfN9yXwolpdM
9NYlEi1zPa3a5S6+8J9NfVJfBZArF0UGaTsT6OytrdW8ZN5oCNBm//89FSi3
z8Z8BSH0GS5ITHBHscmKu8qdT88gePgWaXgKOTnweq1M8kScXifL65A7Nw0X
5CVPPm7NIWtcygbqkcSqWvxgYIu6fC7k09s9ggw5jo7n2G7xZsmupCUxkq5c
Ulut0vBCUUIRPmuN+eVGvmnrVC8GvtwYb0qJuGEHv32cnIZH1hfBHY4z8Jl1
atUVbidf6Q4/Ci2WM3z36cHSifsGS1CAI5zj0Us/u42GhSMp5Gg2kHaMSTLy
SzKDYpRkSmW+LIOgeL1H4u/4aZRIyXPcQM5NDFOeexdxBq5NgqGz9pCCC1O+
5m5r61BZHi0WlTf13PV7ThpqIdndIobDnYjDMUyM2I7BbfofPzY/UAXUvvZm
mDzD661SOccSlsJWXJvR5fKOrtRZuFs3+7d/87KOEHENnV2iB0uXcVrN+dyT
1PQYqdmgFTb2m4v/yJVcDG+Vp6QQNc5/USDsDjpzhS8KthY36s3NKH3zvhKR
eMzGTNfArinFZ9RqGydyR7ASCEVI37nottwEyHqkTO/uAEdemDypYa9xoK3i
+/vGiXIaJ65puNPtS6H+Mn2I5ZLko1Y9idSSLt8PfWDfXZ+KaB2rojBLVRa2
uVIkL9bEEtUvdGpUrdcm12Al1yDiyWczgFK5zFEzXi5nY9alMmQzieElkED7
GY+aMg9MIF60aaaFqtFfYfUxX7IQVg21cvNheSGLIFfDuXKntd5OPoS4IDOp
P0IOKkvGbA9X5uO+GK3J+E96yFetItLSrXurx8mwZit15XJvyKSGXUQsRpHh
m3n8Rcq4JbDQvGI5X1StS13Br9MUqXK+HN3docEKXiuM2VNC/v2W6O/en+/h
2EgQf9DohLo3JolLFGoTpwN+Vy+3LiiiyRp3M50nyfUIam5PbP//LkJzrann
r0OTL7igRKvJ2Z144MOC2Luqqx3C2/ua6g89jEVWMAC0TXGVKwYLCpOaoJTe
nS4wx7j+1oMg/78JPtHg7+MLb9Wz7sK5yk6LRwYaREZObOVgWHdTX3gToRNX
eXJH9omWgc4SMhnHXOzOgTtdbeNX8v+VYzRd5PcQ1OADXNrurg/umf8FLwWg
961nAAA=

-->

</rfc>

