<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body style="background-color: rgb(255, 255, 255); color: rgb(0, 0,
    0); font-family: Tahoma; font-size: 16px;" text="#000000"
    bgcolor="#FFFFFF">
    <div class="markdown-here-wrapper" data-md-url="Thunderbird"
      style="" markdown-here-wrapper-content-modified="true">
      <p style="margin: 0px 0px 1.2em ! important;">Hello,</p>
      <p style="margin: 0px 0px 1.2em ! important;">Thanks for the
        reply, responses inline below:</p>
      <p style="margin: 0px 0px 1.2em ! important;"></p>
      <div class="markdown-here-exclude">
        <p></p>
        <blockquote type="cite"
cite="mid:CAEhFLkQp575h6_yLQ1MnZta57EDHs4Mi=0xS9ZauLDSNxCzR1Q@mail.gmail.com"
          style="font-size: medium;">
          <pre wrap="">Hello,

I haven't touched this for a while, but could you give us your user_*
variable overrides?</pre>
        </blockquote>
        <p></p>
      </div>
      <p style="margin: 0px 0px 1.2em ! important;"></p>
      <p style="margin: 0px 0px 1.2em ! important;">OK, here we go. Let
        me know if there’s a preferred way to send large data blocks - I
        considered a gist or a pastebin, but figured that having the
        content archived with the mailing list message would be the best
        result.</p>
      <p style="margin: 0px 0px 1.2em ! important;">I think the
        overrides is what you’re asking for? The only MTU-related
        override I have is “container<em>mtu” for the vxlan network
          below. I expect it doesn’t actually _do</em> anything though,
        because I can’t find the string “container_mtu” within any of
        the related ansible roles (see grep for container_mtu vs
        container_bridge below for illustration). I found <a
          href="https://bugs.launchpad.net/openstack-ansible/+bug/1678165">https://bugs.launchpad.net/openstack-ansible/+bug/1678165</a>
        which looked related</p>
      <pre style="font-size: 0.85em; font-family: Consolas,Inconsolata,Courier,monospace;font-size: 1em; line-height: 1.2em;margin: 1.2em 0px;"><code style="font-size: 0.85em; font-family: Consolas,Inconsolata,Courier,monospace;margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;white-space: pre; overflow: auto; border-radius: 3px; border: 1px solid rgb(204, 204, 204); padding: 0.5em 0.7em; display: block ! important;">root@nbs-dh-09:~# grep container_mtu /etc/ansible/ -ri
root@nbs-dh-09:~# grep container_bridge /etc/ansible/ -ri
/etc/ansible/roles/plugins/library/provider_networks:#     container_bridge: "br-mgmt"
/etc/ansible/roles/plugins/library/provider_networks:#     container_bridge: "br-vxlan"
/etc/ansible/roles/plugins/library/provider_networks:#     container_bridge: "br-vlan"
/etc/ansible/roles/plugins/library/provider_networks:#     container_bridge: "br-vlan"
/etc/ansible/roles/plugins/library/provider_networks:#     container_bridge: "br-storage"
/etc/ansible/roles/plugins/library/provider_networks:                            bind_device = net['network']['container_bridge']
/etc/ansible/roles/os_neutron/doc/source/configure-network-services.rst:          container_bridge: "br-vlan"
root@nbs-dh-09:~#
</code></pre>
      <pre style="font-size: 0.85em; font-family: Consolas,Inconsolata,Courier,monospace;font-size: 1em; line-height: 1.2em;margin: 1.2em 0px;"><code style="font-size: 0.85em; font-family: Consolas,Inconsolata,Courier,monospace;margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;white-space: pre; overflow: auto; border-radius: 3px; border: 1px solid rgb(204, 204, 204); padding: 0.5em 0.7em; display: block ! important;">global_overrides:
  internal_lb_vip_address: 10.76.76.11
  #
  # The below domain name must resolve to an IP address
  # in the CIDR specified in haproxy_keepalived_external_vip_cidr.
  # If using different protocols (https/http) for the public/internal
  # endpoints the two addresses must be different.
  #
  external_lb_vip_address: openstack.dev.safenz.net
  tunnel_bridge: "br-vxlan"
  management_bridge: "br-mgmt"
  provider_networks:
    - network:
        container_bridge: "br-mgmt"
        container_type: "veth"
        container_interface: "eth1"
        ip_from_q: "container"
        type: "raw"
        group_binds:
          - all_containers
          - hosts
        is_container_address: true
        is_ssh_address: true
    - network:
        container_bridge: "br-vxlan"
        container_type: "veth"
        container_interface: "eth10"
        container_mtu: "9000"
        ip_from_q: "tunnel"
        type: "vxlan"
        range: "1:1000"
        net_name: "vxlan"
        group_binds:
          - neutron_linuxbridge_agent
    - network:
        container_bridge: "br-vlan"
        container_type: "veth"
        container_interface: "eth12"
        host_bind_override: "eth12"
        type: "flat"
        net_name: "flat"
        group_binds:
          - neutron_linuxbridge_agent
    - network:
        container_bridge: "br-vlan"
        container_type: "veth"
        container_interface: "eth11"
        type: "vlan"
        range: "1:4094"
        net_name: "vlan"
        group_binds:
          - neutron_linuxbridge_agent
    - network:
        container_bridge: "br-storage"
        container_type: "veth"
        container_interface: "eth2"
        ip_from_q: "storage"
        type: "raw"
        group_binds:
          - glance_api
          - cinder_api
          - cinder_volume
          - nova_compute
          - swift_proxy
</code></pre>
      <p style="margin: 0px 0px 1.2em ! important;"></p>
      <div class="markdown-here-exclude">
        <p></p>
        <blockquote type="cite"
cite="mid:CAEhFLkQp575h6_yLQ1MnZta57EDHs4Mi=0xS9ZauLDSNxCzR1Q@mail.gmail.com"
          style="font-size: medium;">
          <pre wrap="">Here are a few things I watch for mtu related discussions:
1) ``lxc_net_mtu``: It is used in lxc_hosts to define the lxc bridge.</pre>
        </blockquote>
        <p></p>
      </div>
      <p style="margin: 0px 0px 1.2em ! important;"></p>
      <p style="margin: 0px 0px 1.2em ! important;">Aha. I didn’t know
        about this, it sounds like what I need. I’ll add this and report
        back.</p>
      <p style="margin: 0px 0px 1.2em ! important;"></p>
      <div class="markdown-here-exclude">
        <p></p>
        <blockquote type="cite"
cite="mid:CAEhFLkQp575h6_yLQ1MnZta57EDHs4Mi=0xS9ZauLDSNxCzR1Q@mail.gmail.com"
          style="font-size: medium;">
          <pre wrap="">2) Your compute nodes and your controller nodes need to have
consistent mtus on their bridges.</pre>
        </blockquote>
        <p></p>
      </div>
      <p style="margin: 0px 0px 1.2em ! important;"></p>
      <p style="margin: 0px 0px 1.2em ! important;">They are both
        configured for an MTU of 9000, but the controller nodes bridges’
        drop their MTU to 1500 when the veth interface paired with the
        neutron-agent LXC container is joined to the bridge (bridges
        downgrade their MTU to the MTU of the lowest participating
        interface)</p>
      <p style="margin: 0px 0px 1.2em ! important;"></p>
      <div class="markdown-here-exclude">
        <p></p>
        <blockquote type="cite"
cite="mid:CAEhFLkQp575h6_yLQ1MnZta57EDHs4Mi=0xS9ZauLDSNxCzR1Q@mail.gmail.com"
          style="font-size: medium;">
          <pre wrap="">3) Neutron needs a configuration override.</pre>
        </blockquote>
        <p></p>
      </div>
      <p style="margin: 0px 0px 1.2em ! important;"></p>
      <p style="margin: 0px 0px 1.2em ! important;">I’ve set this in
        neutron.conf on all neutron LXC containers, and on the compute
        nodes too:<br>
        <code style="font-size: 0.85em; font-family: Consolas,Inconsolata,Courier,monospace;margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;">global_physnet_mtu = 1550</code></p>
      <p style="margin: 0px 0px 1.2em ! important;">And likewise in
        /etc/neutron/plugins/ml2/ml2_conf.ini:</p>
      <pre style="font-size: 0.85em; font-family: Consolas,Inconsolata,Courier,monospace;font-size: 1em; line-height: 1.2em;margin: 1.2em 0px;"><code style="font-size: 0.85em; font-family: Consolas,Inconsolata,Courier,monospace;margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;white-space: pre; overflow: auto; border-radius: 3px; border: 1px solid rgb(204, 204, 204); padding: 0.5em 0.7em; display: block ! important;"># Set a global MTU of 1550 (to allow VXLAN at 1500)
path_mtu = 1550

# Drop VLAN and FLAT providers back to 1500, to align with outside FWs
physical_network_mtus = vlan:1500,flat:1500
</code></pre>
      <p style="margin: 0px 0px 1.2em ! important;"></p>
      <div class="markdown-here-exclude">
        <p></p>
        <blockquote type="cite"
cite="mid:CAEhFLkQp575h6_yLQ1MnZta57EDHs4Mi=0xS9ZauLDSNxCzR1Q@mail.gmail.com"
          style="font-size: medium;">
          <pre wrap="">4) the lxc containers need to be properly defined: each network should
have a mtu defined, or alternatively, you can define a default mtu for
all the networks defined in openstack_user_config with
``lxc_container_default_mtu``. (This one is the one that spawns up the
veth pair to the lxc container)</pre>
        </blockquote>
        <p></p>
      </div>
      <p style="margin: 0px 0px 1.2em ! important;"></p>
      <p style="margin: 0px 0px 1.2em ! important;">I didn’t know about
        this one either, it didn’t exist in any of the default
        ansible-provided sample configs, but now that I’ve grepped in
        the ansible roles for “mtu”, it’s obvious. I’ll try this too. </p>
      <pre style="font-size: 0.85em; font-family: Consolas,Inconsolata,Courier,monospace;font-size: 1em; line-height: 1.2em;margin: 1.2em 0px;"><code style="font-size: 0.85em; font-family: Consolas,Inconsolata,Courier,monospace;margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;white-space: pre; overflow: auto; border-radius: 3px; border: 1px solid rgb(204, 204, 204); padding: 0.5em 0.7em; display: block ! important;">root@nbs-dh-09:~# grep -ri lxc_container_default_mtu /etc/openstack_deploy/*
root@nbs-dh-09:~# grep -ri lxc_container_default_mtu /etc/ansible/
/etc/ansible/roles/lxc_container_create/defaults/main.yml:lxc_container_default_mtu: "1500"
/etc/ansible/roles/lxc_container_create/templates/container-interface.ini.j2:lxc.network.mtu = {{ item.value.mtu|default(lxc_container_default_mtu) }}
/etc/ansible/roles/lxc_container_create/templates/debian-interface.cfg.j2:    mtu {{ item.value.mtu|default(lxc_container_default_mtu) }}
/etc/ansible/roles/lxc_container_create/templates/rhel-interface.j2:MTU={{ item.value.mtu|default(lxc_container_default_mtu) }}
root@nbs-dh-09:~#
</code></pre>
      <p style="margin: 0px 0px 1.2em ! important;"></p>
      <div class="markdown-here-exclude">
        <p></p>
        <blockquote type="cite"
cite="mid:CAEhFLkQp575h6_yLQ1MnZta57EDHs4Mi=0xS9ZauLDSNxCzR1Q@mail.gmail.com"
          style="font-size: medium;">
          <pre wrap="">5) The container interfaces need to have this proper mtu. This is
taking the same configuration as 4) above, so it should work out of
the box.</pre>
        </blockquote>
        <p></p>
      </div>
      <p style="margin: 0px 0px 1.2em ! important;"></p>
      <p style="margin: 0px 0px 1.2em ! important;">Agreed, that seems
        to be the case currently with 1500, I’d expect it to be true
        with the updated value</p>
      <p style="margin: 0px 0px 1.2em ! important;"></p>
      <div class="markdown-here-exclude">
        <p></p>
        <blockquote type="cite"
cite="mid:CAEhFLkQp575h6_yLQ1MnZta57EDHs4Mi=0xS9ZauLDSNxCzR1Q@mail.gmail.com"
          style="font-size: medium;">
          <pre wrap="">6) If your instance is reaching its router with no mtu issue, you may
still have issues for the Northbound trafic. Check how you configured
this northbound and if the interfaces have proper mtu. If there are
veth pairs to create pseudo links, check their mtus too.

I think it's a good start for the conversation...
</pre>
        </blockquote>
        <p></p>
      </div>
      <p style="margin: 0px 0px 1.2em ! important;"></p>
      <p style="margin: 0px 0px 1.2em ! important;">Thank you, this is
        very helpful. I’ll give it a try and respond.</p>
      <p style="margin: 0px 0px 1.2em ! important;">Re #1 and #4, do I
        need to destroy / recreate my existing LXC containers, or will
        rerunning the playbooks be enough to update the MTUs?</p>
      <p style="margin: 0px 0px 1.2em ! important;">Many thanks,<br>
        David</p>
      <div
title="MDH:PGZvbnQgZmFjZT0iVGFob21hIj5UaGFua3MgZm9yIHRoZSByZXBseSwgcmVzcG9uc2VzIGlubGluZSBiZWxvdzo8L2ZvbnQ+PGJsb2NrcXVvdGUgdHlwZT0iY2l0ZSIgY2l0ZT0ibWlkOkNBRWhGTGtR
cDU3NWg2X3lMUTFNblp0YTU3RURIczRNaT0weFM5WmF1TERTTnhDelIxUUBtYWlsLmdtYWlsLmNv
bSIgc3R5bGU9ImZvbnQtc2l6ZTogbWVkaXVtOyI+PHByZSB3cmFwPSIiPkhlbGxvLAoKSSBoYXZl
bid0IHRvdWNoZWQgdGhpcyBmb3IgYSB3aGlsZSwgYnV0IGNvdWxkIHlvdSBnaXZlIHVzIHlvdXIg
dXNlcl8qCnZhcmlhYmxlIG92ZXJyaWRlcz88L3ByZT48L2Jsb2NrcXVvdGU+T0ssIGhlcmUgd2Ug
Z28uIExldCBtZSBrbm93IGlmIHRoZXJlJ3MgYSBwcmVmZXJyZWQgd2F5IHRvIHNlbmQgbGFyZ2Ug
ZGF0YSBibG9ja3MgLSBJIGNvbnNpZGVyZWQgYSBnaXN0IG9yIGEgcGFzdGViaW4sIGJ1dCBmaWd1
cmVkIHRoYXQgaGF2aW5nIHRoZSBjb250ZW50IGFyY2hpdmVkIHdpdGggdGhlIG1haWxpbmcgbGlz
dCBtZXNzYWdlIHdvdWxkIGJlIHRoZSBiZXN0IHJlc3VsdC48YnI+PGJyPkkgdGhpbmsgdGhlIG92
ZXJyaWRlcyBpcyB3aGF0IHlvdSdyZSBhc2tpbmcgZm9yPyBUaGUgb25seSBNVFUtcmVsYXRlZCBv
dmVycmlkZSBJIGhhdmUgaXMgImNvbnRhaW5lcl9tdHUiIGZvciB0aGUgdnhsYW4gbmV0d29yayBi
ZWxvdy4gSSBleHBlY3QgaXQgZG9lc24ndCBhY3R1YWxseSBfZG9fIGFueXRoaW5nIHRob3VnaCwg
YmVjYXVzZSBJIGNhbid0IGZpbmQgdGhlIHN0cmluZyAiY29udGFpbmVyX210dSIgd2l0aGluIGFu
eSBvZiB0aGUgcmVsYXRlZCBhbnNpYmxlIHJvbGVzIChzZWUgZ3JlcCBmb3IgY29udGFpbmVyX210
dSB2cyBjb250YWluZXJfYnJpZGdlIGJlbG93IGZvciBpbGx1c3RyYXRpb24pLiBJIGZvdW5kIGh0
dHBzOi8vYnVncy5sYXVuY2hwYWQubmV0L29wZW5zdGFjay1hbnNpYmxlLytidWcvMTY3ODE2NSB3
aGljaCBsb29rZWQgcmVsYXRlZDxicj48YnI+YGBgYDxicj5yb290QG5icy1kaC0wOTp+IyBncmVw
IGNvbnRhaW5lcl9tdHUgL2V0Yy9hbnNpYmxlLyAtcmk8YnI+cm9vdEBuYnMtZGgtMDk6fiMgZ3Jl
cCBjb250YWluZXJfYnJpZGdlIC9ldGMvYW5zaWJsZS8gLXJpPGJyPi9ldGMvYW5zaWJsZS9yb2xl
cy9wbHVnaW5zL2xpYnJhcnkvcHJvdmlkZXJfbmV0d29ya3M6I8KgwqDCoMKgIGNvbnRhaW5lcl9i
cmlkZ2U6ICJici1tZ210Ijxicj4vZXRjL2Fuc2libGUvcm9sZXMvcGx1Z2lucy9saWJyYXJ5L3By
b3ZpZGVyX25ldHdvcmtzOiPCoMKgwqDCoCBjb250YWluZXJfYnJpZGdlOiAiYnItdnhsYW4iPGJy
Pi9ldGMvYW5zaWJsZS9yb2xlcy9wbHVnaW5zL2xpYnJhcnkvcHJvdmlkZXJfbmV0d29ya3M6I8Kg
wqDCoMKgIGNvbnRhaW5lcl9icmlkZ2U6ICJici12bGFuIjxicj4vZXRjL2Fuc2libGUvcm9sZXMv
cGx1Z2lucy9saWJyYXJ5L3Byb3ZpZGVyX25ldHdvcmtzOiPCoMKgwqDCoCBjb250YWluZXJfYnJp
ZGdlOiAiYnItdmxhbiI8YnI+L2V0Yy9hbnNpYmxlL3JvbGVzL3BsdWdpbnMvbGlicmFyeS9wcm92
aWRlcl9uZXR3b3JrczojwqDCoMKgwqAgY29udGFpbmVyX2JyaWRnZTogImJyLXN0b3JhZ2UiPGJy
Pi9ldGMvYW5zaWJsZS9yb2xlcy9wbHVnaW5zL2xpYnJhcnkvcHJvdmlkZXJfbmV0d29ya3M6wqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJpbmRf
ZGV2aWNlID0gbmV0WyduZXR3b3JrJ11bJ2NvbnRhaW5lcl9icmlkZ2UnXTxicj4vZXRjL2Fuc2li
bGUvcm9sZXMvb3NfbmV1dHJvbi9kb2Mvc291cmNlL2NvbmZpZ3VyZS1uZXR3b3JrLXNlcnZpY2Vz
LnJzdDrCoMKgwqDCoMKgwqDCoMKgwqAgY29udGFpbmVyX2JyaWRnZTogImJyLXZsYW4iPGJyPnJv
b3RAbmJzLWRoLTA5On4jPGJyPmBgYGA8YnI+PGJyPmBgYGA8YnI+Z2xvYmFsX292ZXJyaWRlczo8
YnI+wqAgaW50ZXJuYWxfbGJfdmlwX2FkZHJlc3M6IDEwLjc2Ljc2LjExPGJyPsKgICM8YnI+wqAg
IyBUaGUgYmVsb3cgZG9tYWluIG5hbWUgbXVzdCByZXNvbHZlIHRvIGFuIElQIGFkZHJlc3M8YnI+
wqAgIyBpbiB0aGUgQ0lEUiBzcGVjaWZpZWQgaW4gaGFwcm94eV9rZWVwYWxpdmVkX2V4dGVybmFs
X3ZpcF9jaWRyLjxicj7CoCAjIElmIHVzaW5nIGRpZmZlcmVudCBwcm90b2NvbHMgKGh0dHBzL2h0
dHApIGZvciB0aGUgcHVibGljL2ludGVybmFsPGJyPsKgICMgZW5kcG9pbnRzIHRoZSB0d28gYWRk
cmVzc2VzIG11c3QgYmUgZGlmZmVyZW50Ljxicj7CoCAjPGJyPsKgIGV4dGVybmFsX2xiX3ZpcF9h
ZGRyZXNzOiBvcGVuc3RhY2suZGV2LnNhZmVuei5uZXQ8YnI+wqAgdHVubmVsX2JyaWRnZTogImJy
LXZ4bGFuIjxicj7CoCBtYW5hZ2VtZW50X2JyaWRnZTogImJyLW1nbXQiPGJyPsKgIHByb3ZpZGVy
X25ldHdvcmtzOjxicj7CoMKgwqAgLSBuZXR3b3JrOjxicj7CoMKgwqDCoMKgwqDCoCBjb250YWlu
ZXJfYnJpZGdlOiAiYnItbWdtdCI8YnI+wqDCoMKgwqDCoMKgwqAgY29udGFpbmVyX3R5cGU6ICJ2
ZXRoIjxicj7CoMKgwqDCoMKgwqDCoCBjb250YWluZXJfaW50ZXJmYWNlOiAiZXRoMSI8YnI+wqDC
oMKgwqDCoMKgwqAgaXBfZnJvbV9xOiAiY29udGFpbmVyIjxicj7CoMKgwqDCoMKgwqDCoCB0eXBl
OiAicmF3Ijxicj7CoMKgwqDCoMKgwqDCoCBncm91cF9iaW5kczo8YnI+wqDCoMKgwqDCoMKgwqDC
oMKgIC0gYWxsX2NvbnRhaW5lcnM8YnI+wqDCoMKgwqDCoMKgwqDCoMKgIC0gaG9zdHM8YnI+wqDC
oMKgwqDCoMKgwqAgaXNfY29udGFpbmVyX2FkZHJlc3M6IHRydWU8YnI+wqDCoMKgwqDCoMKgwqAg
aXNfc3NoX2FkZHJlc3M6IHRydWU8YnI+wqDCoMKgIC0gbmV0d29yazo8YnI+wqDCoMKgwqDCoMKg
wqAgY29udGFpbmVyX2JyaWRnZTogImJyLXZ4bGFuIjxicj7CoMKgwqDCoMKgwqDCoCBjb250YWlu
ZXJfdHlwZTogInZldGgiPGJyPsKgwqDCoMKgwqDCoMKgIGNvbnRhaW5lcl9pbnRlcmZhY2U6ICJl
dGgxMCI8YnI+wqDCoMKgwqDCoMKgwqAgY29udGFpbmVyX210dTogIjkwMDAiPGJyPsKgwqDCoMKg
wqDCoMKgIGlwX2Zyb21fcTogInR1bm5lbCI8YnI+wqDCoMKgwqDCoMKgwqAgdHlwZTogInZ4bGFu
Ijxicj7CoMKgwqDCoMKgwqDCoCByYW5nZTogIjE6MTAwMCI8YnI+wqDCoMKgwqDCoMKgwqAgbmV0
X25hbWU6ICJ2eGxhbiI8YnI+wqDCoMKgwqDCoMKgwqAgZ3JvdXBfYmluZHM6PGJyPsKgwqDCoMKg
wqDCoMKgwqDCoCAtIG5ldXRyb25fbGludXhicmlkZ2VfYWdlbnQ8YnI+wqDCoMKgIC0gbmV0d29y
azo8YnI+wqDCoMKgwqDCoMKgwqAgY29udGFpbmVyX2JyaWRnZTogImJyLXZsYW4iPGJyPsKgwqDC
oMKgwqDCoMKgIGNvbnRhaW5lcl90eXBlOiAidmV0aCI8YnI+wqDCoMKgwqDCoMKgwqAgY29udGFp
bmVyX2ludGVyZmFjZTogImV0aDEyIjxicj7CoMKgwqDCoMKgwqDCoCBob3N0X2JpbmRfb3ZlcnJp
ZGU6ICJldGgxMiI8YnI+wqDCoMKgwqDCoMKgwqAgdHlwZTogImZsYXQiPGJyPsKgwqDCoMKgwqDC
oMKgIG5ldF9uYW1lOiAiZmxhdCI8YnI+wqDCoMKgwqDCoMKgwqAgZ3JvdXBfYmluZHM6PGJyPsKg
wqDCoMKgwqDCoMKgwqDCoCAtIG5ldXRyb25fbGludXhicmlkZ2VfYWdlbnQ8YnI+wqDCoMKgIC0g
bmV0d29yazo8YnI+wqDCoMKgwqDCoMKgwqAgY29udGFpbmVyX2JyaWRnZTogImJyLXZsYW4iPGJy
PsKgwqDCoMKgwqDCoMKgIGNvbnRhaW5lcl90eXBlOiAidmV0aCI8YnI+wqDCoMKgwqDCoMKgwqAg
Y29udGFpbmVyX2ludGVyZmFjZTogImV0aDExIjxicj7CoMKgwqDCoMKgwqDCoCB0eXBlOiAidmxh
biI8YnI+wqDCoMKgwqDCoMKgwqAgcmFuZ2U6ICIxOjQwOTQiPGJyPsKgwqDCoMKgwqDCoMKgIG5l
dF9uYW1lOiAidmxhbiI8YnI+wqDCoMKgwqDCoMKgwqAgZ3JvdXBfYmluZHM6PGJyPsKgwqDCoMKg
wqDCoMKgwqDCoCAtIG5ldXRyb25fbGludXhicmlkZ2VfYWdlbnQ8YnI+wqDCoMKgIC0gbmV0d29y
azo8YnI+wqDCoMKgwqDCoMKgwqAgY29udGFpbmVyX2JyaWRnZTogImJyLXN0b3JhZ2UiPGJyPsKg
wqDCoMKgwqDCoMKgIGNvbnRhaW5lcl90eXBlOiAidmV0aCI8YnI+wqDCoMKgwqDCoMKgwqAgY29u
dGFpbmVyX2ludGVyZmFjZTogImV0aDIiPGJyPsKgwqDCoMKgwqDCoMKgIGlwX2Zyb21fcTogInN0
b3JhZ2UiPGJyPsKgwqDCoMKgwqDCoMKgIHR5cGU6ICJyYXciPGJyPsKgwqDCoMKgwqDCoMKgIGdy
b3VwX2JpbmRzOjxicj7CoMKgwqDCoMKgwqDCoMKgwqAgLSBnbGFuY2VfYXBpPGJyPsKgwqDCoMKg
wqDCoMKgwqDCoCAtIGNpbmRlcl9hcGk8YnI+wqDCoMKgwqDCoMKgwqDCoMKgIC0gY2luZGVyX3Zv
bHVtZTxicj7CoMKgwqDCoMKgwqDCoMKgwqAgLSBub3ZhX2NvbXB1dGU8YnI+wqDCoMKgwqDCoMKg
wqDCoMKgIC0gc3dpZnRfcHJveHk8YnI+YGBgYDxicj48YmxvY2txdW90ZSB0eXBlPSJjaXRlIiBj
aXRlPSJtaWQ6Q0FFaEZMa1FwNTc1aDZfeUxRMU1uWnRhNTdFREhzNE1pPTB4UzlaYXVMRFNOeEN6
UjFRQG1haWwuZ21haWwuY29tIiBzdHlsZT0iZm9udC1zaXplOiBtZWRpdW07Ij48cHJlIHdyYXA9
IiI+SGVyZSBhcmUgYSBmZXcgdGhpbmdzIEkgd2F0Y2ggZm9yIG10dSByZWxhdGVkIGRpc2N1c3Np
b25zOgoxKSBgYGx4Y19uZXRfbXR1YGA6IEl0IGlzIHVzZWQgaW4gbHhjX2hvc3RzIHRvIGRlZmlu
ZSB0aGUgbHhjIGJyaWRnZS48L3ByZT48L2Jsb2NrcXVvdGU+QWhhLiBJIGRpZG4ndCBrbm93IGFi
b3V0IHRoaXMsIGl0IHNvdW5kcyBsaWtlIHdoYXQgSSBuZWVkLiBJJ2xsIGFkZCB0aGlzIGFuZCBy
ZXBvcnQgYmFjay48YnI+PGJyPjxibG9ja3F1b3RlIHR5cGU9ImNpdGUiIGNpdGU9Im1pZDpDQUVo
RkxrUXA1NzVoNl95TFExTW5adGE1N0VESHM0TWk9MHhTOVphdUxEU054Q3pSMVFAbWFpbC5nbWFp
bC5jb20iIHN0eWxlPSJmb250LXNpemU6IG1lZGl1bTsiPjxwcmUgd3JhcD0iIj4yKSBZb3VyIGNv
bXB1dGUgbm9kZXMgYW5kIHlvdXIgY29udHJvbGxlciBub2RlcyBuZWVkIHRvIGhhdmUKY29uc2lz
dGVudCBtdHVzIG9uIHRoZWlyIGJyaWRnZXMuPC9wcmU+PC9ibG9ja3F1b3RlPlRoZXkgYXJlIGJv
dGggY29uZmlndXJlZCBmb3IgYW4gTVRVIG9mIDkwMDAsIGJ1dCB0aGUgY29udHJvbGxlciBub2Rl
cyBicmlkZ2VzJyBkcm9wIHRoZWlyIE1UVSB0byAxNTAwIHdoZW4gdGhlIHZldGggaW50ZXJmYWNl
IHBhaXJlZCB3aXRoIHRoZSBuZXV0cm9uLWFnZW50IExYQyBjb250YWluZXIgaXMgam9pbmVkIHRv
IHRoZSBicmlkZ2UgKGJyaWRnZXMgZG93bmdyYWRlIHRoZWlyIE1UVSB0byB0aGUgTVRVIG9mIHRo
ZSBsb3dlc3QgcGFydGljaXBhdGluZyBpbnRlcmZhY2UpPGJyPjxibG9ja3F1b3RlIHR5cGU9ImNp
dGUiIGNpdGU9Im1pZDpDQUVoRkxrUXA1NzVoNl95TFExTW5adGE1N0VESHM0TWk9MHhTOVphdUxE
U054Q3pSMVFAbWFpbC5nbWFpbC5jb20iIHN0eWxlPSJmb250LXNpemU6IG1lZGl1bTsiPjxwcmUg
d3JhcD0iIj4zKSBOZXV0cm9uIG5lZWRzIGEgY29uZmlndXJhdGlvbiBvdmVycmlkZS48L3ByZT48
L2Jsb2NrcXVvdGU+SSd2ZSBzZXQgdGhpcyBpbiBuZXV0cm9uLmNvbmYgb24gYWxsIG5ldXRyb24g
TFhDIGNvbnRhaW5lcnMsIGFuZCBvbiB0aGUgY29tcHV0ZSBub2RlcyB0b286PGJyPmBgYGBnbG9i
YWxfcGh5c25ldF9tdHUgPSAxNTUwYGBgYDxicj48YnI+QW5kIGxpa2V3aXNlIGluIC9ldGMvbmV1
dHJvbi9wbHVnaW5zL21sMi9tbDJfY29uZi5pbmk6PGJyPmBgYGA8YnI+IyBTZXQgYSBnbG9iYWwg
TVRVIG9mIDE1NTAgKHRvIGFsbG93IFZYTEFOIGF0IDE1MDApPGJyPnBhdGhfbXR1ID0gMTU1MDxi
cj48YnI+IyBEcm9wIFZMQU4gYW5kIEZMQVQgcHJvdmlkZXJzIGJhY2sgdG8gMTUwMCwgdG8gYWxp
Z24gd2l0aCBvdXRzaWRlIEZXczxicj5waHlzaWNhbF9uZXR3b3JrX210dXMgPSB2bGFuOjE1MDAs
ZmxhdDoxNTAwPGJyPmBgYGA8YnI+PGJsb2NrcXVvdGUgdHlwZT0iY2l0ZSIgY2l0ZT0ibWlkOkNB
RWhGTGtRcDU3NWg2X3lMUTFNblp0YTU3RURIczRNaT0weFM5WmF1TERTTnhDelIxUUBtYWlsLmdt
YWlsLmNvbSIgc3R5bGU9ImZvbnQtc2l6ZTogbWVkaXVtOyI+PHByZSB3cmFwPSIiPjQpIHRoZSBs
eGMgY29udGFpbmVycyBuZWVkIHRvIGJlIHByb3Blcmx5IGRlZmluZWQ6IGVhY2ggbmV0d29yayBz
aG91bGQKaGF2ZSBhIG10dSBkZWZpbmVkLCBvciBhbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGRlZmlu
ZSBhIGRlZmF1bHQgbXR1IGZvcgphbGwgdGhlIG5ldHdvcmtzIGRlZmluZWQgaW4gb3BlbnN0YWNr
X3VzZXJfY29uZmlnIHdpdGgKYGBseGNfY29udGFpbmVyX2RlZmF1bHRfbXR1YGAuIChUaGlzIG9u
ZSBpcyB0aGUgb25lIHRoYXQgc3Bhd25zIHVwIHRoZQp2ZXRoIHBhaXIgdG8gdGhlIGx4YyBjb250
YWluZXIpPC9wcmU+PC9ibG9ja3F1b3RlPkkgZGlkbid0IGtub3cgYWJvdXQgdGhpcyBvbmUgZWl0
aGVyLCBpdCBkaWRuJ3QgZXhpc3QgaW4gYW55IG9mIHRoZSBkZWZhdWx0IGFuc2libGUtcHJvdmlk
ZWQgc2FtcGxlIGNvbmZpZ3MsIGJ1dCBub3cgdGhhdCBJJ3ZlIGdyZXBwZWQgaW4gdGhlIGFuc2li
bGUgcm9sZXMgZm9yICJtdHUiLCBpdCdzIG9idmlvdXMuIEknbGwgdHJ5IHRoaXMgdG9vLiA8YnI+
YGBgYDxicj5yb290QG5icy1kaC0wOTp+IyBncmVwIC1yaSBseGNfY29udGFpbmVyX2RlZmF1bHRf
bXR1IC9ldGMvb3BlbnN0YWNrX2RlcGxveS8qPGJyPnJvb3RAbmJzLWRoLTA5On4jIGdyZXAgLXJp
IGx4Y19jb250YWluZXJfZGVmYXVsdF9tdHUgL2V0Yy9hbnNpYmxlLzxicj4vZXRjL2Fuc2libGUv
cm9sZXMvbHhjX2NvbnRhaW5lcl9jcmVhdGUvZGVmYXVsdHMvbWFpbi55bWw6bHhjX2NvbnRhaW5l
cl9kZWZhdWx0X210dTogIjE1MDAiPGJyPi9ldGMvYW5zaWJsZS9yb2xlcy9seGNfY29udGFpbmVy
X2NyZWF0ZS90ZW1wbGF0ZXMvY29udGFpbmVyLWludGVyZmFjZS5pbmkuajI6bHhjLm5ldHdvcmsu
bXR1ID0ge3sgaXRlbS52YWx1ZS5tdHV8ZGVmYXVsdChseGNfY29udGFpbmVyX2RlZmF1bHRfbXR1
KSB9fTxicj4vZXRjL2Fuc2libGUvcm9sZXMvbHhjX2NvbnRhaW5lcl9jcmVhdGUvdGVtcGxhdGVz
L2RlYmlhbi1pbnRlcmZhY2UuY2ZnLmoyOsKgwqDCoCBtdHUge3sgaXRlbS52YWx1ZS5tdHV8ZGVm
YXVsdChseGNfY29udGFpbmVyX2RlZmF1bHRfbXR1KSB9fTxicj4vZXRjL2Fuc2libGUvcm9sZXMv
bHhjX2NvbnRhaW5lcl9jcmVhdGUvdGVtcGxhdGVzL3JoZWwtaW50ZXJmYWNlLmoyOk1UVT17eyBp
dGVtLnZhbHVlLm10dXxkZWZhdWx0KGx4Y19jb250YWluZXJfZGVmYXVsdF9tdHUpIH19PGJyPnJv
b3RAbmJzLWRoLTA5On4jPGJyPmBgYGA8YnI+PGJsb2NrcXVvdGUgdHlwZT0iY2l0ZSIgY2l0ZT0i
bWlkOkNBRWhGTGtRcDU3NWg2X3lMUTFNblp0YTU3RURIczRNaT0weFM5WmF1TERTTnhDelIxUUBt
YWlsLmdtYWlsLmNvbSIgc3R5bGU9ImZvbnQtc2l6ZTogbWVkaXVtOyI+PHByZSB3cmFwPSIiPjUp
IFRoZSBjb250YWluZXIgaW50ZXJmYWNlcyBuZWVkIHRvIGhhdmUgdGhpcyBwcm9wZXIgbXR1LiBU
aGlzIGlzCnRha2luZyB0aGUgc2FtZSBjb25maWd1cmF0aW9uIGFzIDQpIGFib3ZlLCBzbyBpdCBz
aG91bGQgd29yayBvdXQgb2YKdGhlIGJveC48L3ByZT48L2Jsb2NrcXVvdGU+QWdyZWVkLCB0aGF0
IHNlZW1zIHRvIGJlIHRoZSBjYXNlIGN1cnJlbnRseSB3aXRoIDE1MDAsIEknZCBleHBlY3QgaXQg
dG8gYmUgdHJ1ZSB3aXRoIHRoZSB1cGRhdGVkIHZhbHVlPGJyPjxibG9ja3F1b3RlIHR5cGU9ImNp
dGUiIGNpdGU9Im1pZDpDQUVoRkxrUXA1NzVoNl95TFExTW5adGE1N0VESHM0TWk9MHhTOVphdUxE
U054Q3pSMVFAbWFpbC5nbWFpbC5jb20iIHN0eWxlPSJmb250LXNpemU6IG1lZGl1bTsiPjxwcmUg
d3JhcD0iIj42KSBJZiB5b3VyIGluc3RhbmNlIGlzIHJlYWNoaW5nIGl0cyByb3V0ZXIgd2l0aCBu
byBtdHUgaXNzdWUsIHlvdSBtYXkKc3RpbGwgaGF2ZSBpc3N1ZXMgZm9yIHRoZSBOb3J0aGJvdW5k
IHRyYWZpYy4gQ2hlY2sgaG93IHlvdSBjb25maWd1cmVkCnRoaXMgbm9ydGhib3VuZCBhbmQgaWYg
dGhlIGludGVyZmFjZXMgaGF2ZSBwcm9wZXIgbXR1LiBJZiB0aGVyZSBhcmUKdmV0aCBwYWlycyB0
byBjcmVhdGUgcHNldWRvIGxpbmtzLCBjaGVjayB0aGVpciBtdHVzIHRvby4KCkkgdGhpbmsgaXQn
cyBhIGdvb2Qgc3RhcnQgZm9yIHRoZSBjb252ZXJzYXRpb24uLi4KPC9wcmU+PC9ibG9ja3F1b3Rl
Pjxicj5UaGFuayB5b3UsIHRoaXMgaXMgdmVyeSBoZWxwZnVsLiBJJ2xsIGdpdmUgaXQgYSB0cnkg
YW5kIHJlc3BvbmQuPGJyPjxicj5SZSAjMSBhbmQgIzQsIGRvIEkgbmVlZCB0byBkZXN0cm95IC8g
cmVjcmVhdGUgbXkgZXhpc3RpbmcgTFhDIGNvbnRhaW5lcnMsIG9yIHdpbGwgcmVydW5uaW5nIHRo
ZSBwbGF5Ym9va3MgYmUgZW5vdWdoIHRvIHVwZGF0ZSB0aGUgTVRVcz88YnI+Cjxicj48YnI+TWFu
        eSB0aGFua3MsPGJyPkRhdmlkPGJyPg=="
style="height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0;">​</div>
    </div>
  </body>
</html>