<?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.5 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bucksch-autoconfig-02" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.1 -->
  <front>
    <title abbrev="autoconfig">Mail Autoconfig</title>
    <seriesInfo name="Internet-Draft" value="draft-autoconfig-1-latest"/>
    <author fullname="Ben Bucksch">
      <organization>Beonex</organization>
      <address>
        <email>ben.bucksch@beonex.com</email>
      </address>
    </author>
    <date year="2024" month="January" day="31"/>
    <keyword>next generation</keyword>
    <keyword>unicorn</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <?line 37?>

<t>Set up a mail account with only email address and password.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://benbucksch.github.io/autoconfig-spec/draft-autoconfig-1.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-autoconfig-1/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/benbucksch/autoconfig-spec"/>.</t>
    </note>
  </front>
  <middle>
    <?line 41?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This protocol allows users to set up their existing email account in a new mail client application,
by entering only their name, email address, and password.
The mail application, by means of mail autoconfig specified here, will determine all the other
parameters that are required, including IMAP or POP3 hostname, TLS configuration,
form of username, authentication method, and other settings, and likewise for SMTP.
Contact sync and calendar, file sharing and other services can also be set up automatically.</t>
      <t>The protocol works by first determining the domain from the email address, and the querying
well-known URLs at the email provider, which return the configuration parameters in computer-readable form. Failing that, various fallback sources can be applied, like a common database of
configurations for large email providers who do not directly support this protocol,
or other mechanisms to determine the configuration.</t>
    </section>
    <section anchor="implementations">
      <name>Implementations</name>
      <t>This protocol is in production use since 15 years by major email clients, and the
config database (used as fallback) contains configurations for over 50% of all email accounts.</t>
      <t>Currently, this protocol or parts of it has been implemented by:</t>
      <ul spacing="normal">
        <li>
          <t><eref target="https://thunderbird.net">Thunderbird</eref></t>
        </li>
        <li>
          <t><eref target="https://projects.gnome.org/evolution/">Evolution</eref></t>
        </li>
        <li>
          <t><eref target="https://userbase.kde.org/KMail">KMail</eref></t>
        </li>
        <li>
          <t><eref target="https://www.kontact.org">Kontact</eref></t>
        </li>
        <li>
          <t><eref target="https://k9mail.app">K9 Mail</eref></t>
        </li>
        <li>
          <t><eref target="https://email.faircode.eu">FairEmail</eref></t>
        </li>
        <li>
          <t><eref target="https://apps.nextcloud.com/apps/mail">NextCloud email</eref></t>
        </li>
        <li>
          <t><eref target="https://delta.chat/">Delta Chat</eref></t>
        </li>
      </ul>
      <t>and likely other mail clients.</t>
      <t>The purpose of this paper is to document and specify what is deployed in the wild. A later version 2 of the protocol might be based on JSON.</t>
      <t>Additionally, there are known problems with OAuth2 in combination with mail clients, which would need to be solved by another specification.</t>
    </section>
    <section anchor="data-format">
      <name>Data format</name>
      <t>Whether the ISP or a common central database returns the configuration, the resulting
document has the following data format.</t>
      <t>The MIME type is <tt>text/xml</tt> or <tt>text/xml+autoconfig</tt>.</t>
      <section anchor="sample-config-file">
        <name>Sample config file</name>
        <artwork><![CDATA[
<?xml version="1.0"?>
<clientConfig version="1.1">
    <emailProvider id="example.com">
      <domain>example.com</domain>
      <domain>example.net</domain>

      <displayName>Google Mail</displayName>
      <displayShortName>GMail</displayShortName>

      <!-- type=
          "imap": IMAP
          "pop3": POP3
          "jmap": JMAP
          -->
      <incomingServer type="pop3">
        <hostname>pop.example.com</hostname>
        <port>995</port>
          <!-- "plain": no encryption
                "SSL": SSL 3 or TLS 1 on SSL-specific port
                "STARTTLS": on normal plain port and mandatory upgrade to TLS via STARTTLS
                -->
        <socketType>SSL</socketType>
        <username>%EMAILADDRESS%</username>
            <!-- Authentication methods:
                "password-cleartext",
                          Send password in the clear
                          (dangerous, if SSL isn't used either).
                          AUTH PLAIN, LOGIN or protocol-native login.
                "password-encrypted",
                          A secure encrypted password mechanism.
                          Can be CRAM-MD5 or DIGEST-MD5. Not NTLM.
                "NTLM":
                          Use NTLM (or NTLMv2 or successors),
                          the Windows login mechanism.
                "GSSAPI":
                          Use Kerberos / GSSAPI,
                          a single-signon mechanism used for big sites.
                "client-IP-address":
                          The server recognizes this user based on the IP address.
                          No authentication needed, the server will require no username nor password.
                "TLS-client-cert":
                          On the SSL/TLS layer, the server requests a client certificate and the client sends one (possibly after letting the user select/confirm one), if available.
                "OAuth2":
                          mAuth. Should be added only as second alternative.
                "none":
                          No authentication
                -->
        <authentication>password-cleartext</authentication>
        <pop3>
            <!-- remove the following and leave to client/user? -->
            <leaveMessagesOnServer>true</leaveMessagesOnServer>
            <downloadOnBiff>true</downloadOnBiff>
            <daysToLeaveMessagesOnServer>14</daysToLeaveMessagesOnServer>
            <!-- only for servers which don't allow checks more often -->
            <checkInterval minutes="15"/><!-- not yet supported -->
        </pop3>
        <password>optional: the user's password</password>
      </incomingServer>

      <!-- You can have multiple incoming servers,
        and even multiple IMAP server configs.
        The first config is the preferred one, but the user or
        or client can choose the alternative configs. -->
      <incomingServer type="jmap">
        <hostname>jmap.example.com</hostname>
        <port>443</port>
        <socketType>SSL</socketType>
        <username>%EMAILADDRESS%</username>
        <authentication>http-basic</authentication>
        <password>optional: the user's password</password>
      </incomingServer>

      <outgoingServer type="smtp">
        <hostname>smtp.googlemail.com</hostname>
        <port>587</port>
        <socketType>STARTTLS</socketType> <!-- see <incomingServer> -->
        <username>%EMAILADDRESS%</username> <!-- if smtp-auth -->
            <!-- smtp-auth (RFC 2554, 4954) or other auth mechanism.
                For values, see incoming.
                Additional options here:
                "SMTP-after-POP":
                    authenticate to incoming mail server first
                    before contacting the smtp server.
            -->
        <authentication>password-cleartext</authentication>
        <password>optional: the user's password</password>
            <!-- If the server makes some additional requirements beyond <authentication>:
                "client-IP-address": The server is only reachable or works,
                    if the user is in a certain IP network, e.g.
                    the dialed into the ISP's network (DSL, cable, modem) or
                    connected to a company network.
                    Note: <authentication>client-IP-address</>
                    means that you may use the server without any auth.
                    <authentication>password-cleartext</> *and*
                    <restriction>client-IP-address</> means that you need to
                    be in the correct IP network *and* (should) authenticate.
                    Servers which do that are highly discouraged and
                    should be avoided, see {{bug|556267}}.
                Not yet implemented. Spec (element name?) up to change.
            -->
        <restriction>client-IP-address</restriction>
        <!-- remove the following and leave to client/user? -->
        <addThisServer>true</addThisServer>
        <useGlobalPreferredServer>true</useGlobalPreferredServer>
      </outgoingServer>

      <!-- A page where the ISP describes the configuration.
          This is purely informational and currently mainly for
          maintenance of the files and not used by the client at all.
          Note that we do not necessarily use exactly the config suggested
          by the ISP, e.g. when they don't recommend SSL, but it's available,
          we will configure SSL.
          The text content should contains a description in the native
          language of the ISP (customers), and a short English description,
          mostly for us.
      -->
      <documentation url="http://www.example.com/help/mail/">
        <descr lang="en">Configure mail app for IMAP</descr>
        <descr lang="de">Email mit IMAP konfigurieren</descr>
      </documentation>

    </emailProvider>

    <!-- Syncronize the user's address book / contacts. -->
    <addressBook type="carddav">
      <username>%EMAILADDRESS%</username>
        <!-- Authentication methods. See also <incomingServer>.
              "http-basic":
                        Authenticate to the HTTP server using
                        WWW-Authenticate: Basic
              "http-digest":
                        Authenticate to the HTTP server using
                        WWW-Authenticate: Digest
              "OAuth2":
                        mAuth. Uses the same token as for email. <scope> needs to include
                         addressbook/calendar.
              -->
      <authentication>http-basic</authentication>
      <serverURL>https://jmap.example.com/remote.php/dav<serverURL>
    </addressBook>

    <addressBook type="jmap">
      <username>%EMAILADDRESS%</username>
      <authentication>http-basic</authentication>
      <serverURL>https://jmap.example.com<serverURL>
    </addressBook>

    <!-- Syncronize the user's calendar. -->
    <calendar type="caldav">
      <username>%EMAILADDRESS%</username>
      <authentication>http-basic</authentication> <!-- see <addressBook> -->
      <serverURL>https://calendar.example.com/remote.php/dav<serverURL>
    </calendar>

    <calendar type="jmap">
      <username>%EMAILADDRESS%</username>
      <authentication>http-basic</authentication> <!-- see <addressBook> -->
      <serverURL>https://calendar.example.com<serverURL>
    </calendar>

    <!-- Upload files, allowing the user to share them.
        This can be used for Thunderbird's FileLink feature,
        or to set up a file sync folder on the user's desktop. -->
    <fileShare type="webdav">
      <username>%EMAILADDRESS%</username>
      <authentication>http-basic</authentication> <!-- see <addressBook> -->
      <serverURL>https://share.example.com/remote.php/dav<serverURL>
    </fileShare>

    <!-- This allows to login in to the webmail service of the provider.
        The URLs are loaded into a standard webbrowser for the user.
        This is optional. -->
    <webMail>
      <!-- Webpage where the user has to log in manually by entering username
          and password himself.
          HTTPS required. -->
      <loginPage url="https://mail.example.com/login/" />

      <!-- Same as loginAutomaticDOM, but the website makes checks that
          the user comes from the login page. So, open the login page
          in the browser, get the page's DOM, fill out name and password
          fields for the user, and trigger the login button.
          The login button might not be an HTML button, just a div, so
          to trigger it, send a click event to it.
          HTTPS is required for the URL. -->
      <loginPageInfo url="https://mail.example.com/login/">
        <!-- What to fill into the usernameField.
            Format is the same as for <username> within <incomingServer>,
            including placeholders. See below for valid placeholders. -->
        <username>%EMAILADDRESS%</username>
        <!-- Allows to find the textfield on the page, to fill it out.
            The id attribute give the DOM ID,
            The name attribute give the DOM name attribute.
            One or both of id and name attributes must exist.
            Try the ID first (e.g. using getElementById()), if existing.
            Otherwise, try finding the element by name.
            Don't treat the IDs given in this XML file as trusted,
            but before using them, verify the format
            (e.g. only characters and digits for IDs).
            If you use powerful functions like jQuery, and the XML returns
            you code in the username ID, and you feed it unchecked to jQuery,
            it may be executed. -->
        <usernameField id="email_field" name="email" />
        <passwordField name="password" />
        <!-- The submit button to trigger the server submit
            after filling in the fields.
            id and name attributes: See <usernameField> -->
        <loginButton id="submit_button" name="login"/>
      </loginPageInfo>
    </webMail>

    <!-- Ask user for custom input,
       and use them as placeholders in the values.
       Optional. -->
    <inputField key="USERNAME" label="Screen name"></inputField>
    <inputField key="GRANDMA" label="Grandma">Elise Bauer</inputField>

    <!-- oAuth2 specced for mail apps,
        e.g. clientID, expiry, and login page -->
    <mAuth>
      <authURL>https://login.example.com/common/oauth2/v2.0/authorize</authURL>
      <tokenURL>https://login.example.com/common/oauth2/v2.0/token</tokenURL>
      <issuer>login.example.com</issuer>
      <scope>imap pop3 smtp webdav caldav carddav offline_access</scope>
      <clientID>autoconfig</clientID>
    </mAuth>

    <!-- Add this only when users (who already have an account) have to
        do something manually before the account can work with IMAP/POP or SSL.
        Note: Per XML, & (ampersand) needs to be escaped to
        & a m p ; (without spaces).
        Mandatory only if the ISP requires such settings
        before the configs above work. -->
    <enable
      visiturl="https://mail.google.com/mail/?ui=2&shva=1#settings/fwdandpop">
      <instruction>Check 'Enable IMAP and POP' in Google settings page</instruction>
      <instruction lang="de">Schalten Sie 'IMAP und POP aktivieren' auf der Google Einstellungs-Seite an</instruction>
    </enable>

    <clientConfigUpdate url="https://www.example.com/config/mail.xml" />

</clientConfig>
]]></artwork>
      </section>
      <section anchor="formal-definition">
        <name>Formal definition</name>
        <t>TODO Schema for XML</t>
      </section>
    </section>
    <section anchor="config-retrieval-for-mail-clients">
      <name>Config retrieval for mail clients</name>
      <t>The mail client application, when it needs the configuration for a given email address,
will perform several steps to retrieve the configuration from various sources.</t>
      <t>The steps are ordered by priority. They may all be requested at the same time, but a higher priorty
result that is available <bcp14>MUST</bcp14> be preferred over a lower priority one, even if the lower priority one is available earlier. Lower priority requests <bcp14>MAY</bcp14> be cancelled, if a valid higher priority result has been successfully received. The priority is expressed below with the number before the URL or location, with lower numbers meaning higher priority, e.g. 1.2 has higher priority than 4.1.</t>
      <t>In the URLs below,<tt>%EMAILADDRESS</tt> shall be replaced with the email address that the user entered and wishes to use, and <tt>%EMAILDOMAIN%</tt> shall be replaced with the email domain extracted from the email address. For example, for "fred@example.com", the email domain is "example.com", and for "fred@test.cs.example.net", the email domain is "test.cs.example.net".</t>
      <t>For full support of this specification, all "Required" and "Recommended" mechanisms <bcp14>MUST</bcp14> be implemented and working. For partial support of this specification, all "Required" mechanisms <bcp14>MUST</bcp14> be implemented and working, and in this case, you shall make explicit when advertizing or referring to auto config that there is only partial support of this specification.</t>
      <section anchor="mail-provider">
        <name>Mail provider</name>
        <t>First step is to directly ask the mail provider and allow it to return the configuration. This step ensures that the protocol is decentralized and the mail provider is in control of the configuration issued to mail clients.</t>
        <t>To allow the mail provider to return a configuration adjusted for that mailbox, the client sends the email address as query parameter. This allows the mail provider to e.g. separate mailboxes on geographically local mail servers, e.g. a mail server located in the same office building where an employee works. However, while the protocol allows for such heterogenous configurations, mail providers are discouraged from doing so, and are instead encouraged to provide one single configuration for all their users. For example, DNS resolution based on location, mail proxy servers, or other techniques as necessary, can be used to route the traffic and host the mail efficiently.</t>
        <ul spacing="normal">
          <li>
            <t>1.1. <tt>https://autoconfig.%EMAILDOMAIN%/.well-known/mail-v1.xml?emailaddress=%EMAILADDRESS%</tt> (Required)</t>
          </li>
          <li>
            <t>1.2. <tt>https://%EMAILDOMAIN%/.well-known/autoconfig/mail/config-v1.1.xml</tt> (Optional)</t>
          </li>
          <li>
            <t>1.3. <tt>http://autoconfig.%EMAILDOMAIN%/mail/config-v1.1.xml</tt> (Optional)</t>
          </li>
        </ul>
        <t>For example:</t>
        <ul spacing="normal">
          <li>
            <t>1.1. https://autoconfig.example.com/.well-known/mail-v1.xml?emailaddress=fred@example.com</t>
          </li>
          <li>
            <t>1.2. https://example.com/.well-known/autoconfig/mail/config-v1.1.xml</t>
          </li>
          <li>
            <t>1.3. http://autoconfig.example.com/mail/config-v1.1.xml</t>
          </li>
        </ul>
        <t>Step 1.3. is mainly for legacy servers. Many current deployments
use this HTTP URL.</t>
      </section>
      <section anchor="central-database">
        <name>Central database</name>
        <t>The ISPDB contains the configurations for most mail providers with a market share larger than 0.1%, and contains configurations for half of the email accounts in the world.</t>
        <t>This is a useful fallback for mail providers which do not host a config server described in the previous step. Using a central database (ISPDB) of mail configurations for the large mail providers will increase the success rate of finding a valid configuration drastically, up to 10-fold.</t>
        <t>The mail client application may choose the mail config database provider. A public mail config database is available at base URL <tt>https://autoconfig.ispdb.net/v1.1/</tt>.</t>
        <t><tt>%ISPDB%</tt> below is the base URL of that database.</t>
        <ul spacing="normal">
          <li>
            <t>2.1. <tt>%ISPDB%%EMAILDOMAIN%</tt> (Recommended)</t>
          </li>
        </ul>
        <t>For example:</t>
        <ul spacing="normal">
          <li>
            <t>2.1. <eref target="https://autoconfig.ispdb.net/v1.1/geologist.com">https://autoconfig.ispdb.net/v1.1/geologist.com</eref></t>
          </li>
        </ul>
      </section>
      <section anchor="mx">
        <name>MX</name>
        <t>Many companies do not maintain their own mail server, but let their email be hosted by a hosting company, which is then responsible for the email of dozens or thousands of domains. For these hosters, it may be difficult to set up the configuration server (step 1.1.) with valid TLS certificate for each of their customers, and to convince their customers to modify their root DNS specifically for autoconfig. On the other side, the ISPDB can only contain the hosting company and cannot know all their customers. To handle such domains, the protocol first needs to find the server hosting the email.</t>
        <t>If the previous mechanisms yield no result, the client may perform a DNS MX lookup on the email domain, and retrieve the MX server (incoming email server) for that domain. Only the highest priority MX hostname is considered. From that MX hostname, 2 values are extracted:</t>
        <ul spacing="normal">
          <li>
            <t>Remove the first component from the MX hostname, i.e. everything up to and including the first <tt>.</tt>, and use that as value for <tt>%MXFULLDOMAIN%</tt>.</t>
          </li>
          <li>
            <t>Extract only the second-level domain from the MX hostname, and use that as value for <tt>%MXBASEDOMAIN%</tt>. To determine the second-level domain, use the <eref target="https://publicsuffix.org">Public Suffic List</eref> or a similarly suited method, to correctly handle domains like ".co.uk" and ".com.au".</t>
          </li>
        </ul>
        <t>For example:</t>
        <ul spacing="normal">
          <li>
            <t>For "mx.example.com", the MXFULLDOMAIN and MXBASEDOMAIN are both "example.com".</t>
          </li>
          <li>
            <t>For "mx.example.co.uk", the MXFULLDOMAIN and MXBASEDOMAIN are both "example.co.uk".</t>
          </li>
          <li>
            <t>For "mx.premium.europe.example.com", the MXFULLDOMAIN is "premium.europe.example.com" and the MXBASEDOMAIN is "example.com".</t>
          </li>
        </ul>
        <t>Then, attempt to retrieve the config for these MX domains, using the previous methods:</t>
        <ul spacing="normal">
          <li>
            <t>3.1. <tt>https://autoconfig.%MXFULLDOMAIN%/.well-known/mail-v1.xml?emailaddress=%EMAILADDRESS%</tt> (Required)</t>
          </li>
          <li>
            <t>3.2. <tt>https://autoconfig.%MXBASEDOMAIN%/.well-known/mail-v1.xml?emailaddress=%EMAILADDRESS%</tt> (Recommended)</t>
          </li>
          <li>
            <t>3.3. <tt>%ISPDB%%MXFULLDOMAIN%</tt> (Recommended)</t>
          </li>
          <li>
            <t>3.4. <tt>%ISPDB%%MXBASEDOMAIN%</tt> (Recommended)</t>
          </li>
        </ul>
        <t>For example:</t>
        <ul spacing="normal">
          <li>
            <t>3.1. https://autoconfig.premium.europe.example.com/.well-known/mail-v1.xml?emailaddress=fred@example.com</t>
          </li>
          <li>
            <t>3.2. https://autoconfig.example.com/.well-known/mail-v1.xml?emailaddress=fred@example.com</t>
          </li>
          <li>
            <t>3.3. https://autoconfig.ispdb.net/v1.1/premium.europe.example.com</t>
          </li>
          <li>
            <t>3.4. https://autoconfig.ispdb.net/v1.1/example.com</t>
          </li>
        </ul>
      </section>
      <section anchor="local-disk">
        <name>Local disk</name>
        <t>For testing purposes, you may want to define a location on the disk, relative to the application installation directory, or relative to the user configuration directory, which may contain a configuration file for a specific domain, and which your application will use, if the above methods fail.</t>
        <ul spacing="normal">
          <li>
            <t>4.1. <tt>%USER_CONFIGURATION_DIR%/isp/%EMAILDOMAIN%.xml</tt> (Optional)</t>
          </li>
          <li>
            <t>4.2. <tt>%APP_INSTALL_DIR%/isp/%EMAILDOMAIN%.xml</tt> (Optional)</t>
          </li>
        </ul>
        <t>For example:</t>
        <ul spacing="normal">
          <li>
            <t>4.1. /home/fred/.config/yourapp/isp/example.com.xml</t>
          </li>
          <li>
            <t>4.2. /opt/yourapp/isp/example.com.xml</t>
          </li>
        </ul>
      </section>
      <section anchor="other-mechanisms">
        <name>Other mechanisms</name>
        <t>You may want to implement other mechanisms to find a configuration, for example Exchange AutoDiscover, DNS SRV, or heuristic guessing. If you implement such alternative methods, and if they are less secure than some of the mechanisms provided here, the alternative methods <bcp14>SHOULD</bcp14> be considered only with lower priority (as defined above) than the more secure mechanisms defined here. For evaluating other mechanisms, use similar criteria as outlined in section "Security considerations".</t>
      </section>
      <section anchor="manual-configuration">
        <name>Manual configuration</name>
        <t>If the above mechanisms fail to provide a working configuration, or if the user explicitly chooses so, you <bcp14>SHOULD</bcp14> give the end user the ability to manually enter a configuration, and use that configuration to configure the account.</t>
      </section>
    </section>
    <section anchor="config-validation">
      <name>Config validation</name>
      <section anchor="user-approval">
        <name>User approval</name>
        <t>Independent of the mechanisms used to find the configuration, before using that configuration, you <bcp14>SHOULD</bcp14> display that configuration to the end user and let him confirm it. While doing so:</t>
        <ul spacing="normal">
          <li>
            <t>At least the second-level domain name(s) of the hostnames involved <bcp14>MUST</bcp14> be shown clearly and with high prominence.</t>
          </li>
          <li>
            <t>The client <bcp14>MUST NOT</bcp14> cut off parts of long second-level domains, to avoid spoofing. At least 63 characters <bcp14>MUST</bcp14> be displayed.</t>
          </li>
          <li>
            <t>Care <bcp14>SHOULD</bcp14> be taken with international characters that look like ASCII characters, but have a different code.</t>
          </li>
        </ul>
      </section>
      <section anchor="login-testing">
        <name>Login testing</name>
        <t>After the user confirmed the configuration, you <bcp14>SHOULD</bcp14> test the configuration, by attempting a login to each server configured. Only if the login succeeded, and the server is working, should the configuration be saved and retrieving and sending mail be started.</t>
      </section>
      <section anchor="oauth2-windows">
        <name>OAuth2 windows</name>
        <t>If the configuration contains OAuth2 authentication, or any other authentication that uses a web browser with URL redirects, you <bcp14>MUST</bcp14> show the full URL or the second-level domain of the current page to the end user, at all times, including after page changes, URL changes or redirects. This allows the end user to verify that he is logging in at the expected page, e.g. the login server of their company.</t>
        <t>(Editor's note: Not really part of autoconfig, but autoconfig can enable OAuth2, and it's important that this is implemented correctly by mail applications.)</t>
      </section>
    </section>
    <section anchor="config-publishing-for-mail-providers">
      <name>Config publishing for mail providers</name>
      <t>Mail service providers who want to support this specification
and publish the mail configuration for their own mail service,
so that mail client apps can be automatically configured,
<bcp14>SHOULD</bcp14> follow this section as guideline and <bcp14>MUST</bcp14> respect the
definitions in this specification.</t>
      <ul spacing="normal">
        <li>
          <t>Configuration fields <bcp14>MUST NOT</bcp14> contain invalid or non-working
configuration data.</t>
        </li>
        <li>
          <t>The provided configuration <bcp14>MUST</bcp14> be working,
and <bcp14>SHOULD</bcp14> use state-of-the-art security.</t>
        </li>
        <li>
          <t>Configurations <bcp14>MUST</bcp14> be public and <bcp14>MUST NOT</bcp14> require
authentication (see below).</t>
        </li>
      </ul>
      <section anchor="config-location-for-single-domain">
        <name>Config location for single domain</name>
        <t>The configuration file <bcp14>SHOULD</bcp14> be published at the URL for
step 1.1., i.e.</t>
        <ul spacing="normal">
          <li>
            <t><tt>https://autoconfig.%EMAILDOMAIN%/.well-known/mail-v1.xml?emailaddress=%EMAILADDRESS%</tt></t>
          </li>
        </ul>
        <t>e.g. for fred@example.com</t>
        <ul spacing="normal">
          <li>
            <t>https://autoconfig.example.com/.well-known/mail-v1.xml?emailaddress=fred@example.com</t>
          </li>
        </ul>
        <t>For backwards compatibility with older mail clients,
step 1.2. should also be implemented.</t>
      </section>
      <section anchor="config-location-for-domain-hosters">
        <name>Config location for domain hosters</name>
        <t>For mail providers which host entire domains for their business
customers, the same URL as listed in the previous section is
preferred.</t>
        <t>Alternatively, the configuration file <bcp14>SHOULD</bcp14> be published at
the location for step 3.1., i.e.</t>
        <ul spacing="normal">
          <li>
            <t><tt>https://autoconfig.%MXFULLDOMAIN%/.well-known/mail-v1.xml?emailaddress=%EMAILADDRESS%</tt></t>
          </li>
        </ul>
        <t>E.g. if the MX server for customer domain example.net is "mx.premium.europe.example.com", then the config file should be at</t>
        <ul spacing="normal">
          <li>
            <t>https://autoconfig.premium.europe.example.com/.well-known/mail-v1.xml?emailaddress=fred@example.net</t>
          </li>
        </ul>
        <t>For backwards compatibility with older mail clients,
step 3.2. should also be implemented.</t>
      </section>
      <section anchor="no-authentication-for-config">
        <name>No authentication for config</name>
        <t>Any of the above URLs for retrieving the config file <bcp14>MUST NOT</bcp14>
require authentication, but <bcp14>MUST</bcp14> be public.</t>
        <t>This is because the config contains the authentication method.
Without knowing the config, the client does not know which
authentication method is required and which username form
(e.g. username "fred" or "fred@example.com" or "fred\EXAMPLE")
to use. Given that the config is required for authentication,
the config itself cannot require authentication.</t>
      </section>
      <section anchor="return-config-for-non-existing-email-addresses">
        <name>Return config for non-existing email addresses</name>
        <t>Servers <bcp14>SHOULD</bcp14> return a valid config, even if the email address
sent as URL parameter does not exist. Otherwise, spammers
or attackers would be able to test the validity of email addresses.
This is true even if the config server needs the email address
to determine which of multiple configurations is correct.
In such a configuration, if the client sends a non-existing
email address, the config server <bcp14>SHOULD</bcp14> return one of the
valid configuations, so that valid and invalid email addresses
are indistiguishable.</t>
      </section>
      <section anchor="oauth2-requirements">
        <name>oAuth2 requirements</name>
        <t>If oAuth2 is used, the oAuth2 server <bcp14>MUST</bcp14> adhere to the
mAuth specification. The oAuth2 server <bcp14>MUST</bcp14>
either accept the public client ID as given in the config file,
without secret, or <bcp14>MUST</bcp14> allow any string as client ID, without
client registration. There are also specific requirements for
expiry times and the login page, which are needed for
mail client applications to work.</t>
      </section>
    </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?>

</section>
    <section anchor="alternatives-considered">
      <name>Alternatives considered</name>
      <section anchor="dnssec">
        <name>DNSSEC</name>
        <t>Due to their top-level domain, some domains do not have DNSSEC available to them, even if they would like to deploy it.</t>
        <t>Even where the top-level domain supports it, DNSSEC is currently deployed in only 1% of domains, with adoption rates falling instead of rising, due to the difficulties of administrating it correctly.</t>
        <t>Therefore, DNSSEC cannot be relied on in this specification, and DNS must be considered insecure for the purposes of this specification.</t>
      </section>
      <section anchor="dns-srv">
        <name>DNS SRV</name>
        <t>DNS SRV protocols (RFC 2782, RFC 6186) are not used here, for 2 reasons:</t>
        <ol spacing="normal" type="1"><li>
            <t>DNS SRV relies on insecure DNS and the config can therefore be trivially spoofed by an attacker. See also DNSSEC above.</t>
          </li>
          <li>
            <t>DNS SRV does not provide all the necessary configuration parameters. For example, we need all of:</t>
          </li>
        </ol>
        <ul spacing="normal">
          <li>
            <t>the username form ("fred@example.com", or "fred", or "fred\EXAMPLE", or even a username with no relation to the email address)</t>
          </li>
          <li>
            <t>authentication method (password, CRAM-MD5, OAuth2, SSL client certificate)</t>
          </li>
          <li>
            <t>authentication method parameters (e.g. OAuth parameters)</t>
          </li>
        </ul>
        <t>and other parameters. If any of these parameters are not configured right, the configuration won't work. While these parameters could theoretically be added to DNS SRV, that would mean a new specification and render the idea void that this is a protocol that already exists, is standardized and deployed. It is unlikely that all DNS SRV records would be updated with the new values. Therefore, it does not solve the problem.</t>
        <t>This specification was created as an answer to these deficiencies and provides an alternative to DNS SRV.</t>
      </section>
      <section anchor="capabilities">
        <name>CAPABILITIES</name>
        <t>In the wild deployments from actual ISPs show that protocol-specific commands to find available authentication methods, e.g. IMAP <tt>CAPABILITIES</tt> or POP3 <tt>CAPA</tt>, are not reliable. Many email servers advertize authentication methods that do not work.</t>
        <t>Some IMAP servers are default configured to list all SASL authentication methods that have corresponding libraries installed on the system, independent on whether they are actually configured to work. The client receives a long list of authentication methods, and many of them do not work. Additionally, the server response may be only "authentication failed" and may not indicate whether the method failed due to lack of configuration, or because the password was wrong. Because some authentication servers lock the account after 3 failed login attempts, and it may also fail due to unrelated reasons (e.g. username form, wrong password, etc.), the client cannot blindly issue countless login attempts. Locking the account must be avoided. So, simply attempting all methods and seeing which one works is not an option for the email client.</t>
        <t>Additionally, some email servers advertize Kerberos / GSSAPI, but when trying to use it, the method fails, and also runs into a long 2 minute timeout in some cases. End users consider that to be a broken app.</t>
        <t>Additionally, such commands are protocol specific and have to be implemented in multiple different ways.</t>
        <t>Finally, some non-mail protocols may not support capabilties commands that include authentication methods.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="risk">
        <name>Risk</name>
        <t>If an attacker can provide a forged configuration, the provided mail hostname and authentication server can be controlled by the attacker, and the attacker can get access to the plain text password of the user. The attack can be implemented as man-in-the-middle, so the end user might receive mail as expected and never notice the attack.</t>
        <t>An attacker gaining the plain text password of a real user is a very significant threat for the organization, not only because mail itself can contain sensitive information and can be used to issue orders within the organization that have wide-ranging impact, but given single-sign-on solutions, the same username and password may give access to other resources at the organization, including other computers or, in the case of admin users, even adminstrative access to the core of the entire organization.</t>
        <t>Multi-factor authentication might not defend against such attacks, because the user may believe to be logging into his email and therefore comply with any multi-factor authentication steps required.</t>
      </section>
      <section anchor="dns">
        <name>DNS</name>
        <t>Any protocol that relies on DNS without further validation, e.g. http, should be considered insecure. Even if an http URL redirects to a https URL, and the domain of the https URL cannot be validated against the email domain, that is still insecure. This also applies to the DNS MX lookup and the https calls that base on its results, as described in section "MX".</t>
        <t>One possible mitigation is to use multiple different DNS servers
and verify that the results match, e.g. to use the native DNS
resolver of the operating system, and additionally also query
a hardcoded DoH (DNS over HTTPS) server. Nonetheless,
the result should be used with care.</t>
        <t>Such insecure configs may only be used, if the end user confirms the config, particularly the resulting second-level domains. See section "User approval".</t>
      </section>
      <section anchor="config-updates">
        <name>Config updates</name>
        <t>Part of the security properties of this protocol assume that the timeframe of possible attack is limited to the moment when the user manually sets up a new mail client. This moment is triggered by the end user, and a rare action - e.g. maybe once per year or even less, for typical setups -, so an attacker has limited chances to run an attack. While not a complete protection on its own, this reduces the risk significantly.</t>
        <t>However, if the mail client does regular configuration updates using this protocol, this security property is no longer given. For regular configuration updates, the mail client <bcp14>MUST</bcp14> use only mechanisms that are secure and cannot be tampered with by an active attacker. Furthermore, the user <bcp14>SHOULD</bcp14> still approve config changes.</t>
        <t>But even with all these protections implemented, the mail client vendor should make a security assessment for the risks of making such regular updates. The mail client vendor should consider that servers can be hacked, and most users simply approve changes proposed by the app, so these give only a limited protection.</t>
      </section>
      <section anchor="server-security">
        <name>Server security</name>
        <t>Given that mail clients will trust the configuration, the server delivering it needs to be secure. Even though we call it "database", static configuration files that are generated before deployment in combination with a static web server offer better security and significantly better performance than dynamic queries from a database and responses generated on-the-fly on request. If a custom server is used, it <bcp14>SHOULD</bcp14> be updated regularly and hosted on a dedicated secure server with all unnecessary services and server features turned off.</t>
        <t>Additions and modifications to the configurations are applicable to all respective users and must be made with care. The authenticity of the configuration <bcp14>MUST</bcp14> be verified from authorative sources. Server hostnames <bcp14>MUST</bcp14> be compared with the email domain names they are serving, and if they differ, the ownership of the server hostnames <bcp14>MUST</bcp14> be validated.</t>
        <t>For these reasons, mail clients may use the public mail config database mentioned above.</t>
        <t>The risk is mitigated to some degree by section "User approval".</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <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 645?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA81963rbRpbgfzxFDftzR8ryEvmSTrSyMrQkO5rRbUx5nf56
54tBoEgiAgEOCpDMzuRd5lnmyfbcqlAFkpaTTnbXPxIRqMupU6fO/RQGg0FU
Z3WuD1XvMs5yNW7qMimLWTbvRfF0Wul7eBN7D5O41vOyWh+qrJiVUZSWSREv
oX9axbN60DYdHAxyaGvqyDTTZWZMVhb1egUtz89uXyv1JxXnpoTRsyLVKw3/
KepeX/V0mtVllcU5/jgfv4L/lRX89fb2dS8qmuVUV4dRCiMfRjCR0YVpzKGq
q0ZHAOvTCMatdHyoxm/PxvDjoazu5lXZrA7V+zfqPfzKirl6g0+iO72G1+lh
pAaq0B9rNdeFruIaIMVHTZElZUV/mlVc3eXYM81MXWXTptapynU611V0r4sG
oPmTUm4i/MGLDWeEx0tAMzb5Z/0xXq5yPUzKJT6Pq2RxqBZ1vTKHo5H3cgTD
wdBZvWimgK6pLqZNcmeSxchDtlnppAfNGOXQzA7UNh/yEMOs7HYcbe7dcFEv
814UwbNFWSGGYHClZk2e83b3XulCveKRe/SurOZxkf2d0HeoXukSUEovNC8Z
IR8KLP88pde4PJikKKsldLsHJEZIVe2vaDAYqHgKKI+TOoomulbNSsWERBUn
SdkUtXqAdamyyNc8k4rTtNLGqLhI1So2Bvd4yEMtszTNdQT4Pi/qqkybhDY7
ul1kRq2qEhEAA+R5+WBUY3RlVF0qw9PWC51VSn8ECsAd1QEQWQFgFfqBQUvy
DMhZxatVniWEkX40BfiKWlfYl6Dl8RCd/RDyfgf024WWFXvjKRhvqePCqHIm
b93+KdzVbJYBjS50BcM/ZHmuUg2zL7NC4wJxdlXCf6oIaBtgqGmxi7jG86Mq
/R9NVum0DwtL8iZFoM8vxzd4Fm+ub56pRWlqBv32YqJ42qaSpeIWIliIQW6E
dASrF+ABcCCrlNdJQCCOEauy9jy70w+Z0QpGUpPL25thdALsA4hAmXWRUJsk
zoFrxFVfzbJcK7OICbX+kNV9lmgDLQtiNmqq7V4irpDKYJB8PYwIxW7/kWcY
xO8sq0zt8IajI9ZS6AnbPavKJf3esnf4+D8aXa2hT/Sg83xwV5QPhXr39gLo
sva6waT3WaphFQ+LLFkA4uumKqhBgFTl7RJMDgdnBTyoGgCvS+NpTphaDtVr
GJPhjOu+ugeUlI1RM1jlNE7ulCmbymIEkEH0hJuM+Ab6hVGXMBVw13gaA/bL
WRQAYWg/8riad8E3AH4JmFFFCQgDyklqoHDTrFZlhcv1jlc/gjF4h5Y6WQDP
MEs6Zi19bqx+SEcWOeISqIhh6Z7ajBCzcqcaqU8ZIF+tDl6otY4r2tNl/BPM
r71j2u6ZrLZFwB6Mkaq4xeA+wlXD9hu1BTPlPSzqxVdPkPbxjAUswsAiTpqq
ghnzdT/ECR4r2OCaDnNWqwVMOdXAYTO7ZgBjugaO+KX62+2iAWlZTbMq/fc9
y+fr9uGw0PU+Njy7L/MGoWubwYQ/wd6Y4bwol3oIPHukbasRdfpX1APaDniE
ERXDu5Sb03tuySeybfvw8DC844fYlBt9q8IB775FpAyB9Og9EGx1tgxaENaG
M3iRlDCpbqjhFQjok7xsUsZq2xxGMkMU3wm+JYmJj0ZLC+epzutYncCJaDul
+GwI1FfDqiPLcoBkhTA96rDcoalWJZ0J2bp4BQ0zptwyaZbE8GEg5r1rOBBw
0OE9aDd5uYb9y/hYAy9Oh2pMorpSQDGoGamnPLDHhZbZfFHjKUX0A08r1L9M
rq8AmnEKKhL0QdaFdAQcnng2sxjoD+wAThSJxWtQ6BZPhWNMs4J5Cb0KTwBz
n4eyyVMQYzBfzeyyzO+J9GBpwlVZtCTtuTyF06JYakfR+4WmZriU8wnJC8dX
EpiqivP2eDGzM5vnnZYFr02To1SIHILxYOCrWYkymhSydnbZqcvzyzPSvhD7
H2qgjNHHZf4BQXG//kcrLD/gIv6kJqRwCRgkUiLSXo6+g+Z2m172DoZf9b47
5jeMvBPu4bU46HEDakTUeiNsUmXpy56n23kNoSkLlmPv/dFInn2iGZz2tlnQ
LjOrPF5fgdg4flOWc1gdHkVo7L3Y0mECGl/NvYL27fNgmn8CvQqx/dJ7iP96
2TJe9Q5Jbei+WpWrZ/AKNYnuq5+4179s9hoMAmiBs5cgLeYTEPNIcAgCD3wc
dDyyqsoxvBwGyHVvwg4os46//fbF0Yj+6oBBC+4BQrIC4CxK0OqSar1iq2HL
v95kcgEN4b/qGdIg6ksHeJzhycCeJoUz7eh+O357C51gDOhEujLIXZyeOhHP
WcJ/YjCb1qDbzKs41Xh8caL7LFZ2gK3Dh0iF1ZkyudP1LWDzGAA8Gnm/w4ZW
uTt+cnY5Pr8Yn56+PZtMnhyN3IuNCQl1422qoDncvnirBA+SHAQ4nt5ef2vL
9t9Ee8qzZbrU/ZGOe2lcgD0HChNovTPasMwUX9SKlACdIV/bHz4yyPjd7ffq
5mJ8ftVXF9dvzq9ItAtPHxRk2Ki8nGfF9pHaFQtZ6fTRFY9Bq00akACuS7t+
p2I9BvgJq4Qnb8eXg8vTFwj26fmbs8kt/hqqK9Drrm4vLndAja962/ew/fcO
WD42VHswOP5x/xSnMU0COqkpK7P/2EpxK99nRYrmGSHxsfX13kwm45vzzwLt
X0HTge03aqS412PQxKheAlsdmAzUKQ8WphjUCKdojGVgk+8Aj0XI4PxmIPbD
o5CihDPM8kDLLudgcmvDKgkevFZbIAl8Y+2Sx7b/quzaaKgFoG1QtxOSGSmm
IXI+e9KRK3n26taVAgMayGoTXdWPrvOaVwCncISMDOQPGkm1v3qwsAyozLE1
t3FcVk20s8LklQGmAMo12BZ7oMWZbAqqXjxDBSxnw5MaEwKNzkFDHpEigGZs
ofeJH8T3IAzR1NqxQFa1Hl3XEpsNFQhTVLXQCEtT2jCEyOBJLgH0OK8Rtcgt
dkwHBKcfnWxjVz9PBoR9jjeZ8NGo06QrQFfPdnD/Si/BSurocKR/6/iexBbv
GEmR7zZAo3Go6SUQdTzX5rpgBeAYXYBHo+3vNscAFlLkZZxeF6+y2Uw6dx5u
6RWvzW15sXWOg+cwwCfeb8cH7TtyCqZqI4p4WqLgIUeUShY6uTNqWVZofdRg
FW7FCjU7Rw/TfYzWQ9EA2wF19EVvdExToWm+1rW1yoHoNjZ+tLlzR3b3j8sV
Wx2H7qx8Ydyph662na+kjUItbVNz/GvZkDdigbu/RHUftXDby2Il5MRILvoe
8ODak2tK+AJr8B2Gh1yTvTmi4GdGrC0902CT4wHUfTVt6pYRlKHCAHtk+QzA
myxKtAaxsXdW3eSfpaySqrtLWcWXn6+tPn/+bJu2+odpc10WgXb1AERPljzG
Gv4waiqbel52UWyW9W4U48vhnCwjcjk8iuUX3/zlUSyLsh2gmkndaN0lhOPN
I/j4RvBoIJEQfvTaL7YzBJrTNdl7+/pEPX3x4nlfPf/2xfN95bxw9PoRPeo1
tAa2AgK3T+uwy9jeuvVQKN5mQ37oHTo++ncHJIwHYBB+QqZ5hEWSwnEJcmXI
8adTvnOIqZ4hG03YS2XlPmJJ+m8u6PeXjv/AEZAhcGvPZ742tIzvQA005ZIU
Cot90dXQdYIOxTWqFl34d+zKFs3U1z0zw6Kr0jEQDjqggULIcb5ba85mLXNl
b21MOhuasqCpFrrGAfpKD3fQFf4jD3wW5+RQAyIQRxNgTvqrvdPJRR+YNADV
B6mZ6uV+l5f7/4AWClD42OVFvqpVXKztaLsBAYtIH25gcwNtR6PN/bP/OH5D
QZc1yMFlvCandaBxg3XcoJG/JvLfDc7nkOWx+hJk55e7xwCA6ypLdq6kC7F4
Cj9x3JwBXlYYFPD2mWFRe4Y04f3gdO9e5qSjJrUhq0U2XwBBpplJyqYC1StF
RWHnQKZVwO/LjCwdZGw//zxt5v/54sXXT7/+yy+/bIfjShQpzzkPCv1KJ2pP
8wOK6n23T1FD0GgX6Fj4DM7yCPr912HH30GzPoJpMKASaNPhsw1B9SYvp3F+
Y3WooOvO14FAD4X2pno4Bn4417Db6OS2PuVUm6TKpnqL47iLZAoRobe+qdC7
76LLxB0pimgjMihERBfvjIEvQOuOMZIkTnp0D3OAGZVqsvana9/ejEl570KD
LIMJ9kHbYBnwHrQUqiznww8qH8XO2qWBwj4HQwKorDOcTAkoYZ6JaKLTthb7
AR0EyyX6wybIElG7zWrglM6U7fLqB802vsUp2d+bOIVFYLoESlEyrvkouchY
LDtE4s0yAFaQO0PlcDAa3GDBK+7uXtKYGuQYuoMIxTFOUNXqrJjnmVn4g3fh
X4LyJvZUE1gAHXXcxhPY09FU+UtKmJAYlp98sdD5ikJJo64aSWDQCl72dNE7
PnE4s7F6ggNNEzAMsfEnBkh175jCYGC41WzO3Ml4GZB+sWUENFe9VXhn52gU
BB38N3imJusiqUr0G/l6h82amJblnRpZDaljyRxJq1fYiDXsJK7SNL4PIxm/
1prY7RcGxqo1R++7uvM25txrDZFHnCPjjjKJqPj+9taZkQ369j45wvv37wf+
KIfqFc67E6o0w1P8/wCsU5p4G1yf5bMSj9U7IwzXoMevLu+A18Qc92bzCeyg
pERrB7UCIwp63qTdQ9/5JySFdDeyOR3btrZzhH+TAXrEWHz39uLYRoK7dvYI
5ShoIKvFagR07fXwzpd3DPzTtXk6Nkz8X3c0/rBV/qpl7WYabr9CLmEfOxaR
/2Mc4legwTO1/dV0qWcTQ24pv5YWbEcfYx0E/N+jgt91+Z+/Xpz03Qpdp6wa
9dl1GfjVMZFuEbMat+x65zKXk+RCJ16aC1Daaxj2Iivu1EzHNQjZUPKXlZen
F0tCGCaKgSaMYXcJhwjVgii9q8tVh2ix04QBpE170NP//6mWMPqrSdYttbuH
tBGS/ggI5RAbKnAsiAAlztWStdqwTQLbdLlyvluFEc84tRY76HM1xqurFAec
VjAZ+m3Kyu3RFupAf4O4Szr7BmNgmkKAKFzLez3t2A5EhpRBQkvDhS3josE8
GuVnZ9rN7AghPykTrM2l0fmsK6hQVE9c9uSGG5gQeoNQOZ0Td5HEp7+J1G7U
U6NNi2iC0jeW8OfYpjGeXl+23mvACMYcxSck4QM0OzrAOpzAlNDQJTTytiPy
QPsq+4B4Niu8F52RRMeXveyruWZIsCkcOIJuhoYF+jIoYugjszPYLNN5agKC
kAy9KgNDqPJAgRXX24y+8L2kUqG1heZ+Abt0eSHv+uonMDfQZMnu+8p0XRlI
+DJrVvcpjMjxxuSOQhA1qTn1djIAmrWU4FYDJ2I3VZyDefp5lLFFf36PdiVA
Q3h2rjFLy68RqZtq1Wsyh200xAhtIbAtryMnFCCzq39vOvraXOFVHid6QcxX
VPipxljWjP3IWdpp8Rvc4FssCMe4ZpmEf9FOJXqyIgApst+iqUaK3EQLUhDA
GNeS66/mmbhWgJTV+enm0m/JxEX0be8Tvtuc8bogD+q0xFz2GU2O3oWgl1FL
pFXKQN8CcyXugFOJdO2RT4AMBjyQZ+yaerU+T/f2OaRtc9m3gIORAczABlxV
a8KnFebWxQUcE8Hb7HtKvoe60pLofH5qCBfiCgBa+wGOH8lo5MVVg66NTYwi
NxN3Pa8B9YY+5tlhdiW7uSjnsNuR103e6QSEHFix6DBEdIIFltVM3gDUllye
8xm5NdEPsyofdDVrcjVrioRjGJQl/dO/YV53m+aNa5E8xo3hcCzMYbX80eVL
AAXRANhghj5UIESYBjk1+6Flls0TVpOXeIp+Ip009aaM8c4OnXlOOUQ+8iMd
hB7tmjwiCRP0tTyZ+3JT+2yzNesMwDiwxKe27NZjmp4rm9tsrIizMPA04h4L
olgEbO7P9mNxSAwmXPaWyBqxzlcMIiKFAfqRgbZooUa9YJ1Ho4BB+4qU0z1C
NWps7liwIqWxOwtWtmrqYENxJeLuX+JJ8DmiRQTH3AJEXG9Xg2h83rU7vX7Z
ezc5e3s1vjzrqTwG3vuyN0kqzCjHZfaOMZRq239ikDdvx1enl2M3xpsKgF7G
veOzHKszXsVApeFQISJKTj/GLMdEhKB1jnXiRHRm2XmKh0N/XGX2lLVaR7hi
8ktsKNy+dsx5dr745EzkUYktn47unw6/GnGJExi2rJUHqjKMSY6OXz0o9Toa
uc7+iJkxgLbjjXEAkfwmUPnJpYKptApzMzhUyaaJYrtaiQcOxMYMzpD+MaZ0
uqMRd/UHs/g9brOfwZ6zDz26FtR2qDpNmX0TayVfM5dI7WHtR5xjKcqaEzmw
4IarHvb5QSdGlJYUqkS1Yu7p4MztKadCyqrQKKRgEaWso190dHNNWeUbjmmO
x93AqQOW3Fd/VnuAWQAPSGi/dUkh5zRJvNqMW/0Z68rUSv1PWI9E3cwKTmRX
Tly6XFvCQ9Z6rkXZM5jRuHAVTUFnb4mSKqLiKYZtKNYY0rcu0EXvdb/PQK3f
VA85g4EokRzV3zXZy6d/Nov7+OXBnywUo9lDCoADDYUWbVYYkMAcUzpB+aO+
OKN52QmN5w8Q/gXyI8khtyPSicTD3w6wY2DPxz0BiZxjCtMk0+oLmqLhKVR8
V2f35Oz+QsXNTKHdLlOe4WA6zxuYdjDRGeX37Zj6aMR4C9wxXqL+uxUWj4Za
dtfpz1vD2P24zFs7zJ4WHuqYCgdec0Z2qkFJyqSc8Pr0WsFSQcYSzwOCxEIJ
qRQAbaHKNCZpOX4oZRhRW+q3pYKQj1xWW2LeKBGbUbEFq1phUVpEUR04DVSZ
Z8BywToMwOmKDoVAtKXwio1CW0cm5WNSZ8Hd0boH3UBXHANbQcsqq9dD1AvW
pKxgJdRU23xNDMvWnh85W0reVUwRXF3xEPU64vIPjpdlXtBKXb6b3OKIXvIW
KhgxSIoH2x9A4JQuShSTQ7r5PhxYxxWgvRqqi7ChSzW9HP8VJ04wFpjnVB45
g3nZovHB514Ev6vlkjxnrKHFl4mGjUoJT20fAAdEH+4ZopNMJuJ8FEGj4mef
hYBkQVaYl45CsC2vklsbitgjl+1AJxHDg+FTArALOyC9UM+HB7DV54WdyzBE
/Q+BTfYB3Xp2i0mHSVuYw4pc2krndSB/C0fpoYNZaKLFBm0OfCSzgPE0Pr96
8hmzSF0mWHyk86c7KjSHlMwkx71Ph6Y3Azj8guxef3Nc2Jpe2AShbLtj4fUw
MUOvLmfXMNuaAqYRLqQOVzdpa82CmivyrareW/Es9AgM+CmhXnzi1VXas+IX
EhLCuS6dkYGlh1n8a+f9/FkYVdb6S2LcYjR9eEvRTYVUD4wOmBsxuTi9x1zu
v1OtNKZ64zknG5ASmksbGbcEVWmXkPRZawFkI+u+9EtYAf9kNiNbs3V9tpA1
BoW+tqzZduDgNKXoZrWw0a21u0N2YdLAeF9Bpb2j4NevplpK5EAbTZ2FGU6a
Sf0v1q/n1gMb8mxSI8mM7NYxlgLv5rAt+HFntDj9iSx0cWHFNfWclh/7mwn2
m0ceeAsVQrf1y8PQy7wNEmJNRmOXWtvpNG6wmutyXsWrBVduE+vL/fw/I4wt
DpICiUO2JZgkeUBdRh/2tMly8m2wnzhG0UkFm6yTAbv4HvjpvVRo5zrcNFnF
jMtYFmqBKyznukBxGVYI98N1suT0s5WIXaUlpT2XkvqAhI26T5xicY9tCSiS
YUiGcRXKNmWA6/yzihX1Duc7vUJPtZHq37ZwpBUnFuCP6xa7Lm20huNfZCgY
cZNtGsu6HwRykKzKpmasAWUjzmllmGbbbr7G5xnl4QyxxvkAJI/64Cp8nbUy
DGTCaNiW1pOyNrg/QH3tOyJBocCXoQPxg9qzHGyfJnrqTbR79BYE1rHlnox7
BJSKS/esWc6jPpNRPwX9owNF3nYdOrRswYqvu34WTrryzmJi2/UjvwINdumb
K/cH3NozmiB3pN7AHNpcLJXreZw4+hui+bW2WVtSW03prRG7UqAzpUugn514
/Emn6Jh1VzDXTl+1GUsbPJSPNKYTdU8tKR3IXao7rKWggCHdiFCx0vTV8OAJ
H95P3RQAgm9mmXd4S4ArEy8rdNhHNvoV44Eif6S9zMFZD/4lDJIVibEOOmKx
SyJjTmhz5xwvBGXznpV72ADM8qC0wc1a7T1C2b67bWTLokjFpsshNnBGIYmk
0rFNb2VdWBGDhyGtg9nq0iEvS6vYyF0dfcmpPPhqgLHd4SdNJjI/vEoND/B2
YS56icmGzRT6bm8XWAogBekhauDb+FRmVukU9boRUvgIa8w/PCEMAgdivV5i
Lm4YogYY105IjPApMULp2VGI9zydbwuzoK5/exw2kKjoikKNtFx61yp8Xod9
0aR+iCI+mZQ+nYFQECqk7MmYiQ0EEV5R4ElmNv1yDhdm9l4OkB5IvHLxAP2N
xCGp2fayAkZggTJsBSSYyS0o3pkClKbl3zXekYOPgcpjKgOciTIuEhE6GJkR
JVzrY08zlEtkhPq3AHWoU07WnmEOdjDcZybBlEzX43iFiZQvFScLOf2ZdRDT
1KTykXZ7TxeXdBqQSlemEv+AN1UJGEY57rTbXNimt322lFLubwBa71uXFfJA
4FkcKyndPnUxLvftFLifKAg8xcLBBmpdCWytSHPNqpCguB8qTByacu44F6gT
JNqJ3R6iAToLGZVnd6w5SlGKrR1opLiH1uMRE5IufwDdpryDTZRgoG+YMfID
Twi0t3vrSk20R7z7rUrMYyCqJXWXDGpYqbOoYTBbWoSUi3eXZeQ1ARpkOxWG
8Rr11VPx/pMW6KxaOttvvVxvqWpbwhnAZTujNxgrG+ohukKqNftcmYmyVWZj
tu1oH4Yf+l54ApOZDQNDK/7w5PKH1+8uHCcaAkRnDJ+72UoKWQc5TJpvXJkU
wPbpiV6NJ2duIqSx8JqgLdP0XRHF326Yn08a0jsvgGd5V+HQO4OvPtJ1NXxX
icmWwOMrur0oQxZk76qic1mJQSiELjTOkcEe8MNhcycGOTLHYdxYu77lzOpL
Yjq95cfhpsfBRyyN4yOACIEixIEjYrh9SATltw6KfYNh4fAts2Y51E1VrvRj
gKOP4xM9nGUbwNH1r7Box3NZ12CS1TsclZblG6Iqx3RcyNjnG3LTBJDrs50G
RkDav4OF8SywMMKZPNr+zTN5KgBO9sxTF8JTuqXx86Cxf9IeUy6e7bBEdu/6
bzZMnvmGye9s9Dyz1sqnNZ7dq7JofHwMvxOpTBfkukgzc8foRacgpc7wRVOm
72rCHmLOM6IQgyY/t+i3IsdwkD4cjpyLkCX1x1eE0YkAQlvUaXJrlWirk3Mt
7CYZYYH+3XZg1Yv0atEXuv4iSuzgUIS73cYXsTwCrK0KICQbgZy/4qznuJgc
WrB6SBf4kpzSQLUY3v7x5Prq9fmbd2/Ht+fXVz+enr99MgKsh2b8FvP8OR3J
J+Obmx/Prya344uLz+27cQ4ImtECNKARktdoKNYxLg9WR0N6Oy9GMgEwKlf1
J9sRlVAijqfyRNFfO1ThfK5bL9UjBauzRez0lulAcnN9Gt39eor+KNLLUWGa
vP1fRCILIHzMFErUHPQRQ35jSZVpZyelz6+Fl60T5y9t6pqTQdHykytryGam
slWxhj3wxTKzl1gSUWyOrybfX7+7OKW4jFOqJEbdhkOcHrYXGzlIKZPYPsNA
c2NgRQDz4LDNEQzxoaGOEtNx7SK9L/cOkhahwNbGpNIY9ZqyqXMaJ0ObgSOj
vQnOhnBZ2Nme7jkPNcbGw+1zGrE9IQ5QPCS+czC2Dvju/sMS/GJc63zPrbVs
yAOJ+yvIdblsmpW1SgDIcooWlW0Qn6I6mxQXKHkhw3Du/CYM/hMKbNCUjClZ
PuDlHYIABwcWGucYo3J3CG+hI+uJdMZGB7ZOllkXwAARchfajnUEGOLayxpT
hZW9TSarh+o9uZGto5fYyBht4Fg8ots0Z9SU98y+XZxVntFbdM9X9NkQjFmg
iU1Fv/laYmtwCtAeQbpAxRksS1TZb1tbiTpfXd+COYcInLWXUeYl3cKxAZEh
hZhKZ4HNl+WMmIJbx9fP/Nw7C5sgD2wemP4EWUF7dusYC4oIViy3rApbpemN
Q0hHE44V7vHk5Pzce8/OBE5AIdtdk5OQbpEUkYuZRCJoo2hMqWehzKuWeiuN
eCSA/beS0dqqquzJ4rwlDGfElA7i3U7SkN137eWPcGNyi/G1S3FoGIN27IJp
Um+56YnA7Y/vJXQkurKtAsYAjbsrARvWWBWeMmLkmsgHvlrLMZhwdOfPlNZh
DQMxFfQVtJdKeNV8tHMNMpYYs5dspjjvN3q/ACGkZIjaQxSDpMxWKQZFJdi9
64TYSJh4hildrHMi+1KWS0kHxr/amJMQqQ8LQ3iL88kPVpMEwM34VcsTyzY9
FaZakKUPOzuX1EZ78+/HFV84wMnIFK/yaIA3vHUPsQ8GNmrvjO5Gx6sOKNcJ
69ArTVwXzyvdOuv0T0mqaO+ERkcPp8bIBopgxoJgkOJlVZNCwXFJ9jn74dzW
9qVLdMPbqM1w3+PVZFkb8jNs+qjRT+iVkIQXCFudJrg4OIjc0l2tMkHXp+uH
vrZ4G2G6fmTKNobpeYzbK5H9i6G909qP5PRzbb1AJlIchPu8gVXkpJ4XwozR
L4lXHgAoUZsdZFwcvBuR/lKddBRpqoNoebMo3MDyybMIqyzKYiBsIVJdpT2u
Y8vmnSYVNrF82XKWiJNSZaWkx9RxrQflbACLGCCNGdFXhl1wWy4vTnSHB4Rd
UuMi1WUMe8bWBuxLvIZpyJk4FFrlACefdPb4b7E5Wlki9NGmGuFZxsJ+56Jl
jxji/I+JMkYRnWoEfsPshEn/EHOWjBOMDD3EVWqYb9SZqGh8ST4VwwUX/1qU
gEEiYsXelO7fbrFzZ4T5iu+cQdgak6JgFO571XrN2nM6Rd0LFhV5vnAXqMfN
w4KnzNTbwlZyBjMTuXwwvCS5NRTkluTPJ5mImbFPgIikZ4/TzT/uPIqiMyQc
0QpaD3SbSa6rNtPJpQ+R9+wz/HR+doq9N9/dg1LvIM3f1akDwP4jlPrscyh1
8zJLQh+tBkgDlRTfgqLUthnJeKcyddFkOVlkr7/saj8obUMO6AVvpzqJrVPa
imM/9rz18wjD6L3kISN+Q6CCSEdaalIJODZD5y3aOmJQkdb6YlxZCsZKIls2
JM8oua2ntmbJuaf/++yH8eXNxVlvP+IUvqF6Q2moLs2pvXYvKInrYDHym9ZY
YGnDTtvRztv9lhOXPH8wysXuhzqYGLXBz4jwHUJy+l3ekx96DhNHgyEiQ0qD
Icbk0praXeD6LL+EyqziJTI1/PIBmAhA+MQY3cFDnQx1VWtYECCUoTrrQj90
NIXX7ARAhoH+Nkk4BD740ALvP4b07U2KnbA+RapI8RtiIij7eLqGj53fzwSL
gz2IOt/I2AQ33AvMauIjGgX5ADaTympx/JLDWPx3d7M5gwq/2gPdgcHzBa5I
NVKb4l+RRoaPPOf7dOX+W1vHwrDSMY9TrismEyOigomORkea12bPiG+SRi+H
XkkOIGtMgsDzU1Io24q5gBNhLrdUJ+gE0EV2F0NEiimaYHhNFFo1ph2yb68S
i+RRpTGE3yYo2q8IEFN1jtvgAjnUoLgwhy0oZ6O2FTrWQYwj8QXC1GtHfgZ5
KPmWNbYesKKWnuPIp63OzDrfnV5ja6CuHi4YPxBl2TL+/fbs396dvz07xb8n
348vLtwfkbRgImv/anueXF9enl2dcmdUWINHUe9y/FdJ+O1d36C3eXzRc4p8
+/kHJgi69QyOGMhNSoQ1UZB18+rk5r//6+C5+vnnf3r7+uTpwcG3v/wiP745
+Mtz+PHAca8ibUttiA7XESBPxxXZknhNU7zKatiwPt0cTI4f8lGCHP8bYubf
D9XRNFkdPD+WB7jg4KHFWfCQcLb5ZKMzI3HLoy3TOGwGzzuYDuEd/zX4bfHu
PTz6jiyuwcE33x1H5C301D4/xk4H/vRqMjk7iaLTxh7bDE32VSd4TM5oq6La
VCr0KXF/LwmIB1kGomItbJ0cVMRrMUONSsSjM2zWXkfQndpavYZKzWU2ZMDu
ijL/UyJEGQdPvGQWSf+PU74ogXKr+Ms17H7gNFJoX2WG/EipQ0Sb6YKZO+hH
SPGDR8wfsHPd2v8cl63IZ+rAFClN2fn4SSFlL/7akkWOR/tqwrXModMeYGTn
u03jsbGwnVncvK0YqIB95T9cromRO0//8s3TvsK/vj745ut9Zk321jaOLOB0
KAliA7AcRtHB0I7KyzG8HAEOX8WBJ5mcB7VFCnkzq+w+IxcCOUftJ1Sc9Peu
tbJkharoMHraTu0UCufOl892uVzbnZ+I6mT6PjAzpgHKGXmcrdfT6X1qb1sV
hFXwvD+drkePiPTjdigiQUrIyUOvuC+XMQi3XUHds7XGffclgr5zV+EXGTav
et89mPfJLFZqaSDvsXz6hz2WPvZADYidlYA5gu1Ilnxa1xCcp/mi3mZjPlAl
PJf2vbfJ4+FwiXXlAuFYr5O7FL4u2zAcXxtIrbGkR742F5wHcfsWqXi1gWZA
qUUPfeDVi9tsLE65kcpNUtbQLWrcBS2uDsFyHkAN2ZpNId9LkhFy78AkJKKd
dttQwZ1XrYNwS12z8jhJ5hky9NkhsfPpc0bWlgrX+4AaDt4zwB/pQqwU5oEd
sYxp9LthYnmSiboiZ4kbe8HEFtXi7BjfjF+dX5zfnp9NXA0UfrrJzznmhKY4
qTFGdz65MdZlHdftNz+cLoX5FJR/6MKybTrp1rvvxDVMVZIffIA+uM/w0WNM
1hKqRHZFKi7nSfvZasZV1eyaz6ay0Uiilk1QGnrXq0vZgp7FmBbpHQK8Uycz
TAuTMZzUT81B8pQkCqZukgs+z6ZVXGUU0qJchfYrFmYNomuJ/novykeStJZP
TXFcmTcicNs6BdOPdkntnaEYDU1trPN86y7IF3YsP1gGKPIuu7aOJveBCspL
1TablCR2r+uYgA2yRVzYDsdFe4VyRb0VWp7G7a3ozjEPHKDaDO/6Hgd3aRGe
l4eqxEjdK3nPN0aHMNmdzsvkzg/ISpjkmQWC1X6Jedk4fy01nyDZKBwtkDYF
SQTklixmVcfPgDKoz9CpVgjoOhnuB84Oq2mAUpNi+AxrnRSBR2kFIUxYyZnc
WdeJXYbVPOTiX77kyKAXKYzgYW2aUC1H0DTXCZHNXEh9EHJDBAjTaFd++CH4
xuDGZ9sI77uO5+aXaMi9xNe70kclpVKSNMUOdchG0A5UDcUb6NItIvWn8mEI
MuDQiMwk+wKL8gBdZxLKapVnkR1k1cQYt6N7H1erzRWhb8DxODyPTsw4FkiV
P3IbcadcMPM+59DGbh/iNRauvc58tKFnwTqZRdOzR8cGjsAywuQEUmdbvkuV
xHwn5Y7DzjkHLinjJEjKYGcTJWyRguC0OdL/2qQLIIB5N9bi0qA5DkPgu3xg
2q9tZ9BGpaTcL2/vGbZTt4HiABi8gIvvgbAKGH8xjO7tdfygbHNAmEHyGHbW
oJoTcVwMsoIiQfwdXfHDeAFQvmhL+KtECU0b76S7WzR5p8o6S7QHN5KTh9B5
3H5vdQfkMcU+3W3yMYZeQd3O5gUpCBTLpDuI7Hn0P1DcJ2ohjmw5JUHbOh1d
uA0/MZ2RjuDdHm0z4v1CN2ZFVAtv7J1Z3Xk98fcAhDCo4oKDw8sVSC8+5uz5
8T4tNUB6kDI9PzDieGdwMx0eBUrXafefFVys9ePPv4pPNkRIGw3n5vYTsxj9
7jtHFH8Wlu1D5hRi/tITNhiDuVkrrlx+l8SA/Llh7y/x6A9mMWYZbhxNd3sb
qB10ARtSh7EZZ0QymPvhSTwmRhK7OecLE79pQ/HwG9VJsUr4BFX22xAkCNiW
BqG//ARofAWCu+7P2qMcYwi17NaQRD3T+vBmTUXIbtObROnDMEzfC85ssZKB
W4vfAb+fA+3DRAr+nAGFc/BFyyjChAnXwLPhBRrdorqVZ9ZNYq9lMDUXd1mY
JDkCOAN/XdgRQViBYYHh6dHuEf7MHx7Gey6MVHWweytwobn0ucsfMFMOL0+T
z3ppvEA7m9tCaCsnt4gWKpth0UtWoJ+5gZDJ5EBGdbKwWRqlqy0QuwF3m4po
25wNvC9R/CZWcyUG70lLRhAVRkewR2BpYZJSqk7L79UeAkYXWtAtgvv2wyTq
CnQOGD6nCz1aCD0iIU5EhJvE5Aac4Alxjgt74wweDGF94uO2YQ7LxyUVyi+M
7HNlfdJwcUQ7f7YjQYxdHG6ngoy9XhBRZgsRxOtNXLn8PZtogMdohXqR5wVq
y6+B5S51u2eo1cwqru5uKUKkGubiZMtMvvRBWlNJblt7bb5lG5LJaDTsPt0n
2/muuxC59KZQDN121kpnL+OI0m8rMU8QEwMmJdgEsgkwBwZmxe9TO38KbTHL
rfUKnQIISwPnZEAi19c8FnG7KsxWSvjAgeLXNrPOB1JTmb/pmtUz2R05b+VD
IR+mhrU0idz3XYHG48tVcgG6onghHd/DT2Z8pecNZcAGHhHZapdr6X8X3OXU
BPu+ZgWb1FdUDFA4snvrkzP0N6Ai/3djxA7zs6TtF0TkmHjFbpSXiLdI2XMl
XryEhZxz5r1mNr4sbZ4yUZI4w5lDMum3HkPOLANMvgIxQLvOEod9fMbfniAR
a3Nh0DfFHAVmA3SbRtyiMcYwmCFKtYoQbqjhQl6yjUiOWmwK/lgf3D1NaB5Y
E0Y0ogWiRXIYqYaaTQprYllMSHIdbnTpfUID3lvN0sgtmvx1REfoLWrk281y
w6CsOYq84LOfQ8BFBnTj5Ka3LrDdMZfrnm8Dzurg9rBA9qIQny/Qv4oSDJv2
bPlur0/JU+T36eadeDQ31wUKC7rth9SP1r209avdsR0VsyhdquCM7gWqaw8J
bLL6p9a2kKLImAtMYcfSNWiRMCTKo8xeBBy3lc/sVmRnhvEgLtkYmOFn0wt7
SRI7T+2th232qgia2su5sZ5BIT1JV5bKX9SxARnsCUnt2fQ+i0RHpSlaZ7jk
+FljndNm+LZwQHhTYeo9oMozXI1QaOpcip7KGsTBiX9z4FIiPzF9CpUy/JBC
mcJpOPEuLPEzzK0wZvvKqo8S3N90GdsUEtJGMnsrCN9RyBqHvYTLUn2bC277
Uj6NY1ld1U1xY+c1I7S5O3okiMVqkgS/H2DDzSJbtaJ5x8ROb5SiRz7B4vDp
h0fR/9jVp8rulxwSttUaUvBPMgllMCt7LNI5cqfnFaYUrj+heoCJfz6+Gm+Y
97dBNBdFKwgeasmym9wDg8GAcpco3Jhgyg2Y5XPOH/j5kK/d0unL3gx0PN37
RW6Di11LWML/AdxgMAZ3iQAA

-->

</rfc>
