Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 24 Jan 2014 15:56:17 +0100
From:      Vincenzo Maffione <v.maffione@gmail.com>
To:        Wang Weidong <wangweidong1@huawei.com>
Cc:        =?ISO-8859-1?Q?facolt=E0?= <giuseppe.lettieri73@gmail.com>, Giuseppe Lettieri <g.lettieri@iet.unipi.it>, Luigi Rizzo <rizzo@iet.unipi.it>, net@freebsd.org
Subject:   Re: netmap: I got some troubles with netmap
Message-ID:  <CA%2B_eA9hOzQiOWKvHOiKjY4kjxmerMWp=MhtF_vbr8t-q4V732g@mail.gmail.com>
In-Reply-To: <52E1E272.8060009@huawei.com>
References:  <52D74E15.1040909@huawei.com> <CA%2BhQ2%2BjBhSyHwFsFo%2BzH-EuJEkKEcyc6YBH%2BfnEHi=Y27FyWyQ@mail.gmail.com> <92C7725B-B30A-4A19-925A-A93A2489A525@iet.unipi.it> <52D8A5E1.9020408@huawei.com> <52DD1914.7090506@iet.unipi.it> <52E1E272.8060009@huawei.com>

next in thread | previous in thread | raw e-mail | index | archive | help
--047d7b604cbc65dca304f0b88f04
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

2014/1/24 Wang Weidong <wangweidong1@huawei.com>

> On 2014/1/20 20:39, Giuseppe Lettieri wrote:
> > Hi Wang,
> >
> > OK, you are using the netmap support in the upstream qemu git. That doe=
s
> not yet include all our modifications, some of which are very important f=
or
> high throughput with VALE. In particular, the upstream qemu does not
> include the batching improvements in the frontend/backend interface, and =
it
> does not include the "map ring" optimization of the e1000 frontend. Pleas=
e
> find attached a gzipped patch that contains all of our qemu code. The pat=
ch
> is against the latest upstream master (commit 1cf892ca).
> >
> > Please ./configure the patched qemu with the following option, in
> addition to any other option you may need:
> >
> > --enable-e1000-paravirt --enable-netmap \
> > --extra-cflags=3D-I/path/to/netmap/sys/directory
> >
> > Note that --enable-e1000-paravirt is needed to enable the "map ring"
> optimization in the e1000 frontend, even if you are not going to use the
> e1000-paravirt device.
> >
> > Now you should be able to rerun your tests. I am also attaching a READM=
E
> file that describes some more tests you may want to run.
> >
>
> Hello,


> Yes, I patch the qemu-netmap-bc767e701.patch to the qemu, download the
> 20131019-tinycore-netmap.hdd.
> And I do some test that:
>
> 1. I use the bridge below:
> qemu-system-x86_64 -m 2048 -boot c -net nic -net bridge,br=3Dbr1 -hda
> /home/wwd/tinycores/20131019-tinycore-netmap.hdd -enable-kvm -vnc :0
> test between two vms.
> br1 without device.
> Use pktgen, I got the 237.95 kpps.
> Use the netserver/netperf I got the speed 1037M bits/sec with TCP_STREAM.
> The max speed is up to 1621M.
> Use the netserver/netperf I got the speed 3296/s with TCP_RR
> Use the netserver/netperf I got the speed 234M/86M bits/sec with UDP_STRE=
AM
>
> When I add a device from host to the br1, the speed is 159.86 kpps.
> Use the netserver/netperf I got the speed 720M bits/sec with TCP_STREAM.
> The max speed is up to 1000M.
> Use the netserver/netperf I got the speed 3556/s with TCP_RR
> Use the netserver/netperf I got the speed 181M/181M bits/sec with
> UDP_STREAM
>
> What do you think of these data?
>

You are using the old/deprecated QEMU command line syntax (-net), and
therefore honestly It's not clear to me what kind of network configuration
you are running.

Please use our scripts "launch-qemu.sh", "prep-taps.sh", according to what
described in the README.images file (attached).
Alternatively, use the syntax like in the following examples

(#1)   qemu-system-x86_64 archdisk.qcow -enable-kvm -device
virtio-net-pci,netdev=3Dmynet -netdev
tap,ifname=3Dtap01,id=3Dmynet,script=3Dno,downscript=3Dno -smp 2
(#2)   qemu-system-x86_64 archdisk.qcow -enable-kvm -device
e1000,mitigation=3Doff,mac=3D00:AA:BB:CC:DD:01,netdev=3Dmynet -netdev
netmap,ifname=3Dvale0:01,id=3Dmynet -smp 2

so that it's clear to us what network frontend (e.g. emulated NIC) and
network backend (e.g. netmap, tap, vde, ecc..) you are using.
In example #1 we are using virtio-net as frontend and tap as backend, while
in example #2 we are using e1000 as frontend and netmap as backend.
Also consider giving more than one core (e.g. -smp 2) to each guest, to
mitigate receiver livelock problems.


>
> 2. I use the vale below:
> qemu-system-x86_64 -m 2048 -boot c -net nic -net netmap,vale0:0 -hda
> /home/wwd/tinycores/20131019-tinycore-netmap.hdd -enable-kvm -vnc :0
>
> Same for here, it's not clear what you are using. I guess each guest has
an e1000 device and is connected to a different port of the same vale
switch (e.g. vale0:0 and vale0:1)?

Test with 2 vms from the same host
> vale0 without device.
> I use the pkt-gen, the speed is 938 Kpps
>

You should get ~4Mpps with e1000 frontend + netmap backend on a reasonably
good machine. Make sure you have ./configure'd QEMU with
--enable-e1000-paravirt.


> I use netperf -H 10.0.0.2 -t UDP_STREAM, I got the speed is 195M/195M,
> then add -- -m 8, I only got 1.07M/1.07M.
> When use the smaller msg size, the speed will smaller?
>

If you use e1000 with netperf (without pkt-gen) your performance is doomed
to be horrible. Use e1000-paravirt (as a frontend) instead if you are
interested in netperf experiment.
Also consider that the point in using the "-- -m8" options is experimenting
high packet rates, so what you should measure here is not the througput in
Mbps, but the packet rate: netperf reports the number of packets sent and
received, so you can obtain the packet rate by dividing by the running time=
.
The throughput in Mbps is uninteresting, if you want high bulk throughput
you just don't use "-- -m 8", but leave the defaults.
Using virtio-net in this case will help because of the TSO offloadings.

cheers
  Vincenzo


>
> with vale-ctl -a vale0:eth2,
> use pkt-gen, the speed is 928 Kpps
> I use netperf -H 10.0.0.2 -t UDP_STREAM, I got the speed is 209M/208M,
> then add -- -m 8, I only got 1.06M/1.06M.
>
> with vale-ctl -h vale0:eth2,
> use pkt-gen, the speed is 928 Kpps
> I use netperf -H 10.0.0.2 -t UDP_STREAM, I got the speed is 192M/192M,
> then add -- -m 8, I only got 1.06M/1.06M.
>
> Test with 2 vms form two host,
> I only can test it by vale-ctl -h vale0:eth2 and set eth2 into promisc
> use pkt-gen with the default params, the speed is about 750 Kpps
> use netperf -H 10.0.0.2 -t UDP_STREAM, I got the speed is 160M/160M
> Is this right?
>

> 3. I can't use the l2 utils.
> When I do the "sudo l2open -t eth0 l2recv[l2send], I got that "l2open
> ioctl(TUNSETIFF...): Invalid argument"
> and "use l2open -r eth0 l2recv", wait a moment (only several seconds), I
> got the result:
> TEST-RESULT: 0.901 kpps 1pkts
> select/read=3D100.00 err=3D0
>
> And I can't find the l2 utils from the net? Is it implemented by your tea=
m?
>
> All of them is tested on vms.
>
> Cheers.
> Wang
>
>
> >
> > Cheers,
> > Giuseppe
> >
> > Il 17/01/2014 04:39, Wang Weidong ha scritto:
> >> On 2014/1/16 18:24, facolt=E0 wrote:
> [...]
> >>
> >>
> >
> >
>
>
>


--=20
Vincenzo Maffione

--047d7b604cbc65dca304f0b88f04
Content-Type: application/octet-stream; name="README.images"
Content-Disposition: attachment; filename="README.images"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_hqtjyltm0

CUVYUEVSSU1FTlRJTkcgV0lUSCBORVRNQVAsIFZBTEUgQU5EIEZBU1QgUUVNVQoJLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpUbyBlYXNlIGV4cGVyaW1lbnRz
IHdpdGggTmV0bWFwLCB0aGUgVkFMRSBzd2l0Y2ggYW5kIG91ciBRZW11IGVuaGFuY2VtZW50cwp3
ZSBoYXZlIHByZXBhcmVkIGEgY291cGxlIG9mIGJvb3RhYmxlIGltYWdlcyAobGludXggYW5kIEZy
ZWVCU0QpLgpZb3UgY2FuIGZpbmQgdGhlbSBvbiB0aGUgbmV0bWFwIHBhZ2UKCglodHRwOi8vaW5m
by5pZXQudW5pcGkuaXQvfmx1aWdpL25ldG1hcC8KCndoZXJlIHlvdSBjYW4gYWxzbyBsb29rIGF0
IG1vcmUgcmVjZW50IHZlcnNpb25zIG9mIHRoaXMgZmlsZS4KCkJlbG93IGFyZSBzdGVwLWJ5LXN0
ZXAgaW5zdHJ1Y3Rpb25zIG9uIGV4cGVyaW1lbnRzIHlvdSBjYW4gcnVuCndpdGggdGhlc2UgaW1h
Z2VzLiBUaGUgdHdvIG1haW4gdmVyc2lvbnMgYXJlCgoJcGljb2JzZC5oZGQJLT4gRnJlZUJTRCBI
RUFEIChuZXRtYXAgKyBWQUxFKQoJdGlueWNvcmUuaGRkCS0+IExpbnV4IChxZW11ICsgbmV0bWFw
ICsgVkFMRSkgICAgICAKCkJvb3RpbmcgdGhlIGltYWdlCi0tLS0tLS0tLS0tLS0tLS0tCkZvciBh
bGwgZXhwZXJpbWVudHMgeW91IG5lZWQgdG8gY29weSB0aGUgaW1hZ2Ugb24gYSBVU0Igc3RpY2sK
YW5kIGJvb3QgYSBQQyB3aXRoIGl0LiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHVzZSB0aGUgaW1h
Z2UKd2l0aCBWaXJ0dWFsQm94LCBRZW11IG9yIG90aGVyIGVtdWxhdG9ycywgYXMgYW4gZXhhbXBs
ZQoKICAgIHFlbXUtc3lzdGVtLXg4Nl82NCAtaGRhIElNQUdFX0ZJTEUgLW0gMUcgLW1hY2hpbmUg
YWNjZWw9a3ZtIC4uLgoKKHJlbW92ZSAnYWNjZWw9a3ZtJyBpZiB5b3VyIGhvc3QgZG9lcyBub3Qg
c3VwcG9ydCBrdm0pLgpUaGUgaW1hZ2VzIGRvIG5vdCBpbnN0YWxsIGFueXRoaW5nIG9uIHRoZSBo
YXJkIGRpc2suCgpCb3RoIHN5c3RlbXMgaGF2ZSBwcmVsb2FkZWQgZHJpdmVycyBmb3IgYSBudW1i
ZXIgb2YgbmV0d29yayBjYXJkcwooaW5jbHVkaW5nIHRoZSBpbnRlbCAxMCBHYml0IG9uZXMpIHdp
dGggbmV0bWFwIGV4dGVuc2lvbnMuClRoZSBWQUxFIHN3aXRjaCBpcyBhbHNvIGF2YWlsYWJsZSAo
aXQgaXMgcGFydCBvZiB0aGUgbmV0bWFwIG1vZHVsZSkuCnNzaCwgc2NwIGFuZCBhIGZldyBvdGhl
ciB1dGlsaXRpZXMgYXJlIGFsc28gaW5jbHVkZWQuCgpGcmVlQlNEIGltYWdlOgoKICArIHRoZSBP
UyBib290cyBkaXJlY3RseSBpbiBjb25zb2xlIG1vZGUsIHlvdSBjYW4gc3dpdGNoCiAgICBiZXR3
ZWVuIHRlcm1pbmFscyB3aXRoIEFMVC1Gbi4KICAgIFRoZSBwYXNzd29yZCBmb3IgdGhlICdyb290
JyBhY2NvdW50IGlzICdzZXR1cCcKCiAgKyBpZiB5b3UgYXJlIGNvbm5lY3RlZCB0byBhIG5ldHdv
cmssIHlvdSBjYW4gdXNlCiAgICAJZGhjbGllbnQgZW0wICMgb3Igb3RoZXIgaW50ZXJmYWNlIG5h
bWUKICAgIHRvIG9idGFpbiBhbiBJUCBhZGRyZXNzIGFuZCBleHRlcm5hbCBjb25uZWN0aXZpdHku
CgpMaW51eCBpbWFnZToKCiAgKyBpbiBhZGRpdGlvbiB0byB0aGUgbmV0bWFwL1ZBTEUgbW9kdWxl
cywgdGhlIEtWTSBrZXJuZWwgbW9kdWxlCiAgICBpcyBhbHNvIHByZWxvYWRlZC4KCiAgKyB0aGUg
Ym9vdC1sb2FkZXIgZ2l2ZXMgeW91IHR3byBtYWluIG9wdGlvbnMgKGVhY2ggd2l0aAogICAgYSB2
YXJpYW50IHRvIGRlbGF5IGJvb3QgaW4gY2FzZSB5b3UgaGF2ZSBzbG93IGRldmljZXMpOgoKICAg
ICsgIkJvb3QgVGlueUNvcmUiCiAgICAgIGJvb3RzIGluIGFuIFgxMSBlbnZpcm9ubWVudCBhcyB1
c2VyICd0YycuCiAgICAgIFlvdSBjYW4gY3JlYXRlIGEgZmV3IHRlcm1pbmFscyB1c2luZyB0aGUg
aWNvbiBhdCB0aGUKICAgICAgYm90dG9tLiBZb3UgY2FuIHVzZSAic3VkbyAtcyIgdG8gZ2V0IHJv
b3QgYWNjZXNzLgogICAgICBJbiBjYXNlIG5vIHN1aXRhYmxlIHZpZGVvIGNhcmQgaXMgYXZhaWxh
YmxlL2RldGVjdGVkLAogICAgICBpdCBmYWxscyBiYWNrIHRvIGNvbW1hbmQgbGluZSBtb2RlLgoK
ICAgICsgIkJvb3QgQ29yZSAoY29tbWFuZCBsaW5lIG9ubHkpIgogICAgICBib290cyBpbiBjb25z
b2xlIG1vZGUgd2l0aCB2aXJ0dWFsIHRlcm1pbmFscy4KICAgICAgWW91J3JlIGF1dG9tYXRpY2Fs
bHkgbG9nZ2VkIGluIGFzIHVzZXIgJ3RjJy4KICAgICAgVG8gbG9nIGluIHRoZSBvdGhlciB0ZXJt
aW5hbHMgdXNlIHRoZSBzYW1lIHVzZXJuYW1lIAogICAgICAobm8gcGFzc3dvcmQgcmVxdWlyZWQp
LgoKICArIFRoZSBzeXN0ZW0gc2hvdWxkIGF1dG9tYXRpY2FsbHkgcmVjb2duaXplIHRoZSBleGlz
dGluZyBldGhlcm5ldAogICAgZGV2aWNlcywgYW5kIGxvYWQgdGhlIGFwcHJvcHJpYXRlIG5ldG1h
cC1jYXBhYmxlIGRldmljZSBkcml2ZXJzCiAgICB3aGVuIGF2YWlsYWJsZS4gIEludGVyZmFjZXMg
YXJlIGNvbmZpZ3VyZWQgdGhyb3VnaCBESENQIHdoZW4gcG9zc2libGUuCgoKR2VuZXJhbCB0ZXN0
IHJlY29tbWVuZGF0aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCk5PVEU6IFRoZSB0
ZXN0cyBvdXRsaW5lZCBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb25zIGNhbiBnZW5lcmF0ZSB2ZXJ5
IGhpZ2gKcGFja2V0IHJhdGVzLCBhbmQgc29tZSBoYXJkd2FyZSBtaXNjb25maWd1cmF0aW9uIHBy
b2JsZW1zIG1heSBwcmV2ZW50CnlvdSBmcm9tIGFjaGlldmluZyBtYXhpbXVtIHNwZWVkLgpDb21t
b24gcHJvYmxlbXMgYXJlOgoKKyBzbG93IGxpbmsgYXV0b25lZ290aWF0aW9uLgogIE91ciBwcm9n
cmFtcyB0eXBpY2FsbHkgd2FpdCAyLTQgc2Vjb25kcyBmb3IKICBsaW5rIG5lZ290aWF0aW9uIHRv
IGNvbXBsZXRlLCBidXQgc29tZSBOSUMvc3dpdGNoIGNvbWJpbmF0aW9ucwogIGFyZSBtdWNoIHNs
b3dlci4gSW4gdGhpcyBjYXNlIHlvdSBzaG91bGQgaW5jcmVhc2UgdGhlIGRlbGF5CiAgKHBrdC1n
ZW4gaGFzIHRoZSAtdyBYWCBvcHRpb24gZm9yIHRoYXQpIG9yIHBvc3NpYmx5IGZvcmNlCiAgdGhl
IGxpbmsgc3BlZWQgYW5kIGR1cGxleCBtb2RlIG9uIGJvdGggc2lkZXMuCgogIENoZWNrIHRoZSBs
aW5rIHNwZWVkIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gbm9nb3RpYXRpb24KICBwcm9ibGVt
cywgYW5kIHRoYXQgeW91IHNlZSB0aGUgZXhwZWN0ZWQgc3BlZWQuCgogICAgZXRodG9vbCBJRk5B
TUUJIyBvbiBsaW51eAogICAgaWZjb25maWcgSUZOQU1FCSMgb24gRnJlZUJTRAoKKyBldGhlcm5l
dCBmbG93IGNvbnRyb2wuCiAgSWYgdGhlIHJlY2VpdmluZyBwb3J0IGlzIHNsb3cgKG9mdGVuIHRo
ZSBjYXNlIGluIHByZXNlbmNlCiAgb2YgbXVsdGljYXN0L2Jyb2FkY2FzdCB0cmFmZmljLCBvciBh
bHNvIHVuaWNhc3QgaWYgeW91IGFyZQogIHNlbmRpbmcgdG8gbm9uLW5ldG1hcCByZWNlaXZlcnMp
LCBpdCB3aWxsIGdlbmVyYXRlIGV0aGVybmV0CiAgZmxvdyBjb250cm9sIGZyYW1lcyB0aGF0IHRo
cm90dGxlIGRvd24gdGhlIHNlbmRlci4KCiAgV2UgcmVjb21tZW5kIHRvIGRpc2FibGUgQk9USCBS
WCBhbmQgVFggZXRoZXJuZXQgZmxvdyBjb250cm9sCiAgb24gQk9USCBzZW5kZXIgYW5kIHJlY2Vp
dmVyLgogIE9uIExpbnV4IHRoaXMgY2FuIGJlIGRvbmUgd2l0aCBldGh0b29sOgoKICAgIGV0aHRv
b2wgLUEgSUZOQU1FIHR4IG9mZiByeCBvZmYKCiAgd2hlcmVhcyBvbiBGcmVlQlNEIHRoZXJlIGFy
ZSBkZXZpY2Utc3BlY2lmaWMgc3lzY3RsCgoJc3lzY3RsIGRldi5peC4wLnF1ZXVlMC5mbG93X2Nv
bnRyb2wgPSAwCgorIENQVSBwb3dlciBzYXZpbmcuCiAgVGhlIENQVSBnb3Zlcm5vciBvbiBsaW51
eCwgb3IgZXF1aXZhbGVudCBpbiBGcmVlQlNELCB0ZW5kIHRvCiAgdGhyb3R0bGUgZG93biB0aGUg
Y2xvY2sgcmF0ZSByZWR1Y2luZyBwZXJmb3JtYW5jZS4KICBVbmxpa2Ugb3RoZXIgc2ltaWxhciBz
eXN0ZW1zLCBuZXRtYXAgZG9lcyBub3QgaGF2ZSBidXN5LXdhaXQKICBsb29wcywgc28gdGhlIENQ
VSBsb2FkIGlzIGdlbmVyYWxseSBsb3cgYW5kIHRoaXMgY2FuIHRyaWdnZXIKICB0aGUgY2xvY2sg
c2xvd2Rvd24uCgogIE1ha2Ugc3VyZSB0aGF0IEFMTCBDUFVzIHJ1biBhdCBtYXhpbXVtIHNwZWVk
IGRpc2FibGluZyB0aGUKICBkeW5hbWljIGZyZXF1ZW5jeS1zY2FsaW5nIG1lY2hhbmlzbXMuCgog
ICAgY3B1ZnJlcS1zZXQgLWdwZXJmb3JtYW5jZQkjIG9uIGxpbnV4CgogICAgc3lzY3RsIGRldi5j
cHUuMC5mcmVxPTM0MDEJIyBvbiBGcmVlQlNELgoKKyB3cm9uZyBNQUMgYWRkcmVzcwogIG5ldG1h
cCBkb2VzIG5vdCBwdXQgdGhlIE5JQyBpbiBwcm9taXNjdW91cyBtb2RlLCBzbyB1bmxlc3MgdGhl
CiAgYXBwbGljYXRpb24gZG9lcyBpdCwgdGhlIE5JQyB3aWxsIG9ubHkgcmVjZWl2ZSBicm9hZGNh
c3QgdHJhZmZpYyBvcgogIHVuaWNhc3QgZGlyZWN0ZWQgdG8gaXRzIG93biBNQUMgYWRkcmVzcy4K
CgpTVEFOREFSRCBTT0NLRVQgVEVTVFMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkZvciBtb3N0IHNv
Y2tldC1iYXNlZCBleHBlcmltZW50cyB5b3UgY2FuIHVzZSB0aGUgIm5ldHBlcmYiIHRvb2wgaW5z
dGFsbGVkCm9uIHRoZSBzeXN0ZW0gKHZlcnNpb24gMi42LjApLiBCZSBjYXJlZnVsIHRvIHVzZSBh
IG1hdGNoaW5nIHZlcnNpb24gZm9yCnRoZSBvdGhlciBuZXRwZXJmIGVuZHBvaW50IChlLmcuIG5l
dHNlcnZlcikgd2hlbiBydW5uaW5nIHRlc3RzIGJldHdlZW4KZGlmZmVyZW50IG1hY2hpbmVzLgoK
SW50ZXJlc3RpbmcgZXhwZXJpbWVudHMgYXJlOgoKICAgIG5ldHBlcmYgLUggeC55LnoudyAtdFRD
UF9TVFJFQU0gICMgdGVzdCBUQ1AgdGhyb3VnaHB1dAogICAgbmV0cGVyZiAtSCB4Lnkuei53IC10
VENQX1JSICAgICAgIyB0ZXN0IGxhdGVuY3kKICAgIG5ldHBlcmYgLUggeC55LnoudyAtdFVEUF9T
VFJFQU0gLS0gLW04ICAjIHRlc3QgVURQIHRocm91Z2hwdXQgd2l0aCBzaG9ydCBwYWNrZXRzCgp3
aGVyZSB4Lnkuei53IGlzIHRoZSBob3N0IHJ1bm5pbmcgIm5ldHNlcnZlciIuCgoKUkFXIFNPQ0tF
VCBBTkQgVEFQIFRFU1RTCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpGb3IgZXhwZXJpbWVudHMg
d2l0aCByYXcgc29ja2V0cyBhbmQgdGFwIGRldmljZXMgeW91IGNhbiB1c2UgdGhlIGwyCnV0aWxp
dGllcyAobDJvcGVuLCBsMnNlbmQsIGwycmVjdikgaW5zdGFsbGVkIG9uIHRoZSBzeXN0ZW0uCldp
dGggdGhlc2UgdXRpbGl0aWVzIHlvdSBjYW4gc2VuZC9yZWNlaXZlIGN1c3RvbSBuZXR3b3JrIHBh
Y2tldHMKdG8vZnJvbSByYXcgc29ja2V0cyBvciB0YXAgZmlsZSBkZXNjcmlwdG9ycy4KClRoZSBy
ZWNlaXZlciBjYW4gYmUgcnVuIHdpdGggb25lIG9mIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMKCiAg
ICBsMm9wZW4gLXIgSUZOQU1FIGwycmVjdiAgICAgIyByZWNlaXZlIGZyb20gYSByYXcgc29ja2V0
IGF0dGFjaGVkIHRvIElGTkFNRQogICAgbDJvcGVuIC10IElGTkFNRSBsMnJlY3YgICAgICMgcmVj
ZWl2ZSBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW5lZCBvbiB0aGUgdGFwIElGTkFNRQoKVGhl
IHJlY2VpdmVyIHByb2Nlc3Mgd2lsbCB3YWl0IGluZGVmaW5pdGVseSBmb3IgdGhlIGZpcnN0IHBh
Y2tldAphbmQgdGhlbiBrZWVwIHJlY2VpdmluZyBhcyBsb25nIGFzIHBhY2tldHMga2VlcCBjb21p
bmcuIFdoZW4gdGhlCmZsb3cgc3RvcHMgKGFmdGVyIGEgMiBzZWNvbmRzIHRpbWVvdXQpIHRoZSBw
cm9jZXNzIHRlcm1pbmF0ZXMgYW5kCnByaW50cyB0aGUgcmVjZWl2ZWQgcGFja2V0IHJhdGUgYW5k
IHBhY2tldCBjb3VudC4KClRvIHJ1biB0aGUgc2VuZGVyIGluIGFuIGVhc3kgd2F5LCB5b3UgY2Fu
IHVzZSB0aGUgc2NyaXB0IGwyLXNlbmQuc2gKaW4gdGhlIGhvbWUgZGlyZWN0b3J5LiBUaGlzIHNj
cmlwdCBkZWZpbmVzIHNldmVyYWwgc2hlbGwgdmFyaWFibGVzCnRoYXQgY2FuIGJlIG1hbnVhbGx5
IGNoYW5nZWQgdG8gY3VzdG9taXplIHRoZSB0ZXN0IChzZWUKdGhlIGNvbW1lbnRzIGluIHRoZSBz
Y3JpcHQgaXRzZWxmKS4KCkFzIGFuIGV4YW1wbGUsIHlvdSBjYW4gdGVzdCBjb25maWd1cmF0aW9u
cyB3aXRoIFZpcnR1YWwKTWFjaGluZXMgYXR0YWNoZWQgdG8gaG9zdCB0YXAgZGV2aWNlcyBicmlk
Z2VkIHRvZ2V0aGVyLgoKClRlc3RzIHVzaW5nIHRoZSBMaW51eCBpbi1rZXJuZWwgcGt0Z2VuCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRvIHVzZSB0aGUgTGludXggaW4t
a2VybmVsIHBhY2tldCBnZW5lcmF0b3IsIHlvdSBjYW4gdXNlIHRoZQpzY3JpcHQgImxpbnV4LXBr
dGdlbi5zaCIgaW4gdGhlIGhvbWUgZGlyZWN0b3J5LgpUaGUgcGt0Z2VuIGNyZWF0ZXMgYSBrZXJu
ZWwgdGhyZWFkIGZvciBlYWNoIGhhcmR3YXJlIFRYIHF1ZXVlCm9mIGEgZ2l2ZW4gTklDLgoKQnkg
bWFudWFsbHkgY2hhbmdpbmcgdGhlIHNjcmlwdCBzaGVsbCB2YXJpYWJsZSBkZWZpbml0aW9ucyB5
b3UKY2FuIGNoYW5nZSB0aGUgdGVzdCBjb25maWd1cmF0aW9uIChlLmcuIGFkZHJlc3NlcyBpbiB0
aGUgZ2VuZXJhdGVkCnBhY2tldCkuIFBsZWFzZSBjaGFuZ2UgdGhlICJOQ1BVIiB2YXJpYWJsZSB0
byBtYXRjaCB0aGUgbnVtYmVyCm9mIENQVXMgb24geW91ciBtYWNoaW5lLiBUaGUgc2NyaXB0IGhh
cyBhbiBhcmd1bWVudCB3aGljaApzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBOSUMgcXVldWVzIChp
LmUuIGtlcm5lbCB0aHJlYWRzKQp0byB1c2UgbWludXMgb25lLgoKRm9yIGV4YW1wbGU6CgogICAg
Li9saW51eC1wa3RnZW4uc2ggMiAgIyBVc2VzIDMgTklDIHF1ZXVlcwoKV2hlbiB0aGUgc2NyaXB0
IHRlcm1pbmF0ZXMsIGl0IHByaW50cyB0aGUgcGVyLXF1ZXVlIHJhdGVzIGFuZAp0aGUgdG90YWwg
cmF0ZSBhY2hpZXZlZC4KCgpORVRNQVAgQU5EIFZBTEUgRVhQRVJJTUVOVFMKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCgpGb3IgbW9zdCBleHBlcmltZW50cyB3aXRoIG5ldG1hcCB5b3UgY2Fu
IHVzZSB0aGUgInBrdC1nZW4iIGNvbW1hbmQKKGRvIG5vdCBjb25mdXNlIGl0IHdpdGggdGhlIExp
bnV4IGluLWtlcm5lbCBwa3RnZW4pLCB3aGljaCBoYXMgYSBsYXJnZQpudW1iZXIgb2Ygb3B0aW9u
cyB0byBzZW5kIGFuZCByZWNlaXZlIHRyYWZmaWMgKGFsc28gb24gVEFQIGRldmljZXMpLgoKcGt0
LWdlbiBub3JtYWxseSBnZW5lcmF0ZXMgVURQIHRyYWZmaWMgZm9yIGEgc3BlY2lmaWMgSVAgYWRk
cmVzcwphbmQgdXNpbmcgdGhlIGJyb2RhZGNhc3QgTUFDIGFkZHJlc3MKCk5ldG1hcCB0ZXN0aW5n
IHdpdGggbmV0d29yayBpbnRlcmZhY2VzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCgpSZW1lbWJlciB0aGF0IHlvdSBuZWVkIGEgbmV0bWFwLWNhcGFibGUgZHJpdmVyIGlu
IG9yZGVyIHRvIHVzZQpuZXRtYXAgb24gYSBzcGVjaWZpYyBOSUMuIEN1cnJlbnRseSBzdXBwb3J0
ZWQgZHJpdmVycyBhcmUgZTEwMDAsCmUxMDAwZSwgaXhnYmUsIGlnYi4gRm9yIHVwZGF0ZWQgaW5m
b3JtYXRpb24gcGxlYXNlIHZpc2l0Cmh0dHA6Ly9pbmZvLmlldC51bmlwaS5pdC9+bHVpZ2kvbmV0
bWFwLwoKQmVmb3JlIHJ1bm5pbmcgcGt0LWdlbiwgbWFrZSBzdXJlIHRoYXQgdGhlIGxpbmsgaXMg
dXAuCgpSdW4gcGt0LWdlbiBvbiBhbiBpbnRlcmZhY2UgY2FsbGVkICJJRk5BTUUiOgoKICAgIHBr
dC1nZW4gLWkgSUZOQU1FIC1mIHR4ICAjIHJ1biBhIHBrdC1nZW4gc2VuZGVyCiAgICBwa3QtZ2Vu
IC1pIElGTkFNRSAtZiByeCAgIyBydW4gYSBwa3QtZ2VuIHJlY2VpdmVyCgpwa3QtZ2VuIHdpdGhv
dXQgYXJndW1lbnRzIHdpbGwgc2hvdyBvdGhlciBvcHRpb25zLCBlLmcuCiAgKyAtdyBzZWMJbW9k
aWZpZXMgdGhlIHdhaXQgdGltZSBmb3IgbGluayBuZWdvdGlvYXRpb24KICArIC1sIGxlbgltb2Rp
ZmllcyB0aGUgcGFja2V0IHNpemUKICArIC1kLCAtcwlzZXQgdGhlIElQIGRlc3RpbmF0aW9uL3Nv
dXJjZSBhZGRyZXNzZXMgYW5kIHBvcnRzCiAgKyAtRCwgLVMJc2V0IHRoZSBNQUMgZGVzdGluYXRp
b24vc291cmNlIGFkZHJlc3NlcwoKYW5kIG1vcmUuCgpUZXN0aW5nIHRoZSBWQUxFIHN3aXRjaAot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRvIHVzZSB0aGUgVkFMRSBzd2l0Y2ggaW5zdGVhZCBv
ZiBwaHlzaWNhbCBwb3J0cyB5b3Ugb25seSBuZWVkCnRvIGNoYW5nZSB0aGUgaW50ZXJmYWNlIG5h
bWUgaW4gdGhlIHBrdC1nZW4gY29tbWFuZC4KQXMgYW4gZXhhbXBsZSwgb24gYSBzaW5nbGUgbWFj
aGluZSwgeW91IGNhbiBydW4gc2VuZGVycyBhbmQgcmVjZWl2ZXJzCm9uIG11bHRpcGxlIHBvcnRz
IG9mIGEgVkFMRSBzd2l0Y2ggYXMgZm9sbG93cyAocnVuIHRoZSBjb21tYW5kcyBpbnRvCnNlcGFy
YXRlIHRlcm1pbmFscyB0byBzZWUgdGhlIG91dHB1dCkKCiAgICBwa3QtZ2VuIC1pdmFsZTA6MDEg
LWZ0eCAgIyBydW4gYSBzZW5kZXIgb24gdGhlIHBvcnQgMDEgb2YgdGhlIHN3aXRjaCB2YWxlMAog
ICAgcGt0LWdlbiAtaXZhbGUwOjAyIC1mcnggICMgcmVjZWl2ZXIgb24gdGhlIHBvcnQgMDIgb2Yg
c2FtZSBzd2l0Y2gKICAgIHBrdC1nZW4gLWl2YWxlMDowMyAtZnR4ICAjIGFub3RoZXIgc2VuZGVy
IG9uIHRoZSBwb3J0IDAzCgpUaGUgVkFMRSBzd2l0Y2hlcyBhbmQgcG9ydHMgYXJlIGNyZWF0ZWQg
KGFuZCBkZXN0cm95ZWQpIG9uIHRoZSBmbHkuCgoKVHJhbnNwYXJlbnQgY29ubmVjdGlvbiBvZiBw
aHlzaWNhbCBwb3J0cyB0byB0aGUgVkFMRSBzd2l0Y2gKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkl0IGlzIGFsc28gcG9zc2libGUg
dG8gdXNlIGEgbmV0d29yayBkZXZpY2UgYXMgYSBwb3J0IG9mIGEgVkFMRQpzd2l0Y2guIFlvdSBj
YW4gZG8gdGhpcyB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKCiAgICB2YWxlLWN0bCAtaCB2
YWxlMDpldGgwICAjIGF0dGFjaCBpbnRlcmZhY2UgImV0aDAiIHRvIHRoZSAidmFsZTAiIHN3aXRj
aAoKVG8gZGV0YWNoIGFuIGludGVyZmFjZSBmcm9tIGEgYnJpZGdlOgoKICAgIHZhbGUtY3RsIC1k
IHZhbGUwOmV0aDAgICMgZGV0YWNoIGludGVyZmFjZSAiZXRoMCIgZnJvbSB0aGUgInZhbGUwIiBz
d2l0Y2gKClRoZXNlIG9wZXJhdGlvbnMgY2FuIGJlIGlzc3VlZCBhdCBhbnkgbW9tZW50LgoKClRl
c3RzIHdpdGggb3VyIG1vZGlmaWVkIFFFTVUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoK
VGhlIExpbnV4IGltYWdlIGFsc28gY29udGFpbnMgb3VyIG1vZGlmaWVkIFFFTVUsIHdpdGggdGhl
IFZBTEUgYmFja2VuZCBhbmQKdGhlICJlMTAwMC1wYXJhdmlydCIgZnJvbnRlbmQgKGEgcGFyYXZp
cnR1YWxpemVkIGUxMDAwIGVtdWxhdGlvbikuCgpBZnRlciB5b3UgaGF2ZSBib290ZWQgdGhlIGlt
YWdlIG9uIGEgcGh5c2ljYWwgbWFjaGluZSAoc28geW91IGNhbiBleHBsb2l0CktWTSksIHlvdSBj
YW4gYm9vdCB0aGUgc2FtZSBpbWFnZSBhIHNlY29uZCB0aW1lIChyZWN1cnNpdmVseSkgd2l0aCBR
RU1VLgpUaGVyZWZvcmUsIHlvdSBjYW4gcnVuIGFsbCB0aGUgdGVzdHMgYWJvdmUgYWxzbyBmcm9t
IHdpdGhpbiB0aGUgdmlydHVhbAptYWNoaW5lIGVudmlyb25tZW50LgoKVG8gbWFrZSBWTSB0ZXN0
aW5nIGVhc2llciwgdGhlIGhvbWUgZGlyZWN0b3J5IGNvbnRhaW5zIHNvbWUKc29tZSB1c2VmdWwg
c2NyaXB0cyB0byBzZXQgdXAgYW5kIGxhdW5jaCBWTXMgb24gdGhlIHBoeXNpY2FsIG1hY2hpbmUu
CgorICJwcmVwLXRhcHMuc2giCiAgY3JlYXRlcyBhbmQgc2V0cyB1cCB0d28gcGVybWFuZW50IHRh
cCBpbnRlcmZhY2VzICgidGFwMDEiIGFuZCAidGFwMDIiKQogIGFuZCBhIExpbnV4IGluLWtlcm5l
bCBicmlkZ2UuIFRoZSB0YXAgaW50ZXJmYWNlcyBhcmUgdGhlbiBicmlkZ2VkCiAgdG9nZXRoZXIg
b24gdGhlIHNhbWUgYnJpZGdlLiBUaGUgYnJpZGdlIGludGVyZmFjZSAoImJyMCIpLCBpcyBnaXZl
bgogIHRoZSBhZGRyZXNzIDEwLjAuMC4yMDAvMjQuCgogIFRoaXMgc2V0dXAgY2FuIGJlIHVzZWQg
dG8gbWFrZSB0d28gVk1zIGNvbW11bmljYXRlIHRocm91Z2ggdGhlCiAgaG9zdCBicmlkZ2UsIG9y
IHRvIHRlc3QgdGhlIHNwZWVkIG9mIGEgbGludXggc3dpdGNoIHVzaW5nCiAgbDJvcGVuCgorICJ1
bnByZXAtdGFwcy5zaCIKICB1bmRvZXMgdGhlIGFib3ZlIHNldHVwLgoKKyAibGF1bmNoLXFlbXUu
c2giCiAgY2FuIGJlIHVzZWQgdG8gcnVuIFFFTVUgdmlydHVhbCBtYWNoaW5lcy4gSXQgdGFrZXMg
Zm91ciBhcmd1bWVudHM6CgogICAgKyBUaGUgZmlyc3QgYXJndW1lbnQgY2FuIGJlICJxZW11IiBv
ciAia3ZtIiwgZGVwZW5kaW5nIG9uCiAgICAgIHdoZXRoZXIgd2Ugd2FudCB0byB1c2UgdGhlIHN0
YW5kYXJkIFFFTVUgYmluYXJ5IHRyYW5zbGF0aW9uCiAgICAgIG9yIHRoZSBoYXJkd2FyZSB2aXJ0
dWFsaXphdGlvbiBhY2NlbGVyYXRpb24uCgogICAgKyBUaGUgdGhpcmQgYXJndW1lbnQgY2FuIGJl
ICItLXRhcCIsICItLW5ldHVzZXIiIG9yICItLXZhbGUiLAogICAgICBhbmQgdGVsbHMgUUVNVSB3
aGF0IG5ldHdvcmsgYmFja2VuZCB0byB1c2U6IGEgdGFwIGRldmljZSwKICAgICAgdGhlIFFFTVUg
dXNlciBuZXR3b3JraW5nIChzbGlycCksIG9yIGEgVkFMRSBzd2l0Y2ggcG9ydC4KCiAgICArIFdo
ZW4gdGhlIHRoaXJkIGFyZ3VtZW50IGlzICItLXRhcCIgb3IgIi0tdmFsZSIsIHRoZSBmb3VydGgK
ICAgICAgYXJndW1lbnQgc3BlY2lmaWVzIGFuIGluZGV4IChlLmcuICIwMSIsICIwMiIsIGV0Yy4u
KSB3aGljaAogICAgICB0ZWxscyBRRU1VIHdoYXQgdGFwIGRldmljZSBvciBWQUxFIHBvcnQgdG8g
dXNlIGFzIGJhY2tlbmQuCgogIFlvdSBjYW4gbWFudWFsbHkgbW9kaWZ5IHRoZSBzY3JpcHQgdG8g
c2V0IHRoZSBzaGVsbCB2YXJpYWJsZXMgdGhhdAogIHNlbGVjdCB0aGUgdHlwZSBvZiBlbXVsYXRl
ZCBkZXZpY2UgKGUuZy4gIGUxMDAwLCB2aXJ0aW8tbmV0LXBjaSwgLi4uKQogIGFuZCByZWxhdGVk
IG9wdGlvbnMgKGlvZXZlbnRmZCwgdmlydGlvIHZob3N0LCBlMTAwMCBtaXRpZ2F0aW9uLCAuLi4u
KS4KCiAgVGhlIGRlZmF1bHQgc2V0dXAgaGFzIGFuICJlMTAwMCIgZGV2aWNlIHdpdGggaW50ZXJy
dXB0IG1pdGlnYXRpb24KICBkaXNhYmxlZC4KCllvdSBjYW4gdHJ5IHRoZSBwYXJhdmlydHVhbGl6
ZWQgZTEwMDAgZGV2aWNlICgiZTEwMDAtcGFyYXZpcnQiKQpvciB0aGUgInZpcnRpby1uZXQiIGRl
dmljZSB0byBnZXQgYmV0dGVyIHBlcmZvcm1hbmNlLiBIb3dldmVyLCBiZWFyCmluIG1pbmQgdGhh
dCB0aGVzZSBwYXJhdmlydHVhbGl6ZWQgZGV2aWNlcyBkb24ndCBoYXZlIG5ldG1hcCBzdXBwb3J0
Cih3aGVyZWFzIHRoZSBzdGFuZGFyZCBlMTAwMCBkb2VzIGhhdmUgbmV0bWFwIHN1cHBvcnQpLgoK
RXhhbXBsZXM6CgogICAgIyBSdW4gYSBrdm0gVk0gYXR0YWNoZWQgdG8gdGhlIHBvcnQgMDEgb2Yg
YSBWQUxFIHN3aXRjaAogICAgLi9sYXVuY2gtcWVtdS5zaCBrdm0gLS12YWxlIDAxCgogICAgIyBS
dW4gYSBrdm0gVk0gYXR0YWNoZWQgdG8gdGhlIHBvcnQgMDIgb2YgdGhlIHNhbWUgVkFMRSBzd2l0
Y2gKICAgIC4vbGF1bmNoLXFlbXUuc2gga3ZtIC0tdmFsZSAwMgoKICAgICMgUnVuIGEga3ZtIFZN
IGF0dGFjaGVkIHRvIHRoZSB0YXAgY2FsbGVkICJ0YXAwMSIKICAgIC4vbGF1bmNoLXFlbXUuc2gg
a3ZtIC0tdGFwIDAxCgogICAgIyBSdW4gYSBrdm0gVk0gYXR0YWNoZWQgdG8gdGhlIHRhcCBjYWxs
ZWQgInRhcDAyIgogICAgLi9sYXVuY2gtcWVtdS5zaCBrdm0gLS10YXAgMDIKCgpHdWVzdC10by1n
dWVzdCB0ZXN0cwotLS0tLS0tLS0tLS0tLS0tLS0tLQoKSWYgeW91IHJ1biB0d28gVk1zIGF0dGFj
aGVkIHRvIHRoZSBzYW1lIHN3aXRjaCAod2hpY2ggY2FuIGJlIGEgTGludXgKYnJpZGdlIG9yIGEg
VkFMRSBzd2l0Y2gpLCB5b3UgY2FuIHJ1biBndWVzdC10by1ndWVzdCBleHBlcmltZW50cy4KCkFs
bCB0aGUgdGVzdHMgcmVwb3J0ZWQgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb25zIGFyZSBwb3NzaWJs
ZSAobm9ybWFsCnNvY2tldHMsIHJhdyBzb2NrZXRzLCBwa3QtZ2VuLCAuLi4pLCBpbmRpcGVuZGVu
dGx5IG9mIHRoZSBiYWNrZW5kIHVzZWQuCgpJbiB0aGUgZm9sbG93aW5nIGV4YW1wbGVzIHdlIGFz
c3VtZSB0aGF0OgoKICAgICsgRWFjaCBWTSBoYXMgYW4gZXRoZXJuZXQgaW50ZXJmYWNlIGNhbGxl
ZCAiZXRoMCIuCgogICAgKyBUaGUgaW50ZXJmYWNlIG9mIHRoZSBmaXJzdCBWTSBpcyBnaXZlbiB0
aGUgSVAgMTAuMC4wLjEvMjQuCgogICAgKyBUaGUgaW50ZXJmYWNlIG9mIHRoZSBzZWNvbmQgVk0g
aXMgZ2l2ZW4gdGhlIElQIDEwLjAuMC4yLzI0LgoKICAgICsgVGhlIExpbnV4IGJyaWRnZSBpbnRl
cmZhY2UgImJyMCIgb24gdGhlIGhvc3QgaXMgZ2l2ZW4gdGhlCiAgICAgIElQIDEwLjAuMC4yMDAv
MjQuCgpFeGFtcGxlczoKCiAgICBbMV0gIyMjIFRlc3QgVURQIHNob3J0IHBhY2tldHMgb3ZlciB0
cmFkaXRpb25hbCBzb2NrZXRzICMjIwogICAgICAgICMgT24gdGhlIGd1ZXN0IDEwLjAuMC4yIHJ1
bgogICAgICAgICAgICBuZXRzZXJ2ZXIKICAgICAgICAjIG9uIHRoZSBndWVzdCAxMC4wLjAuMSBy
dW4KICAgICAgICAgICAgbmV0cGVyZiAtSDEwLjAuMC4yIC10VURQX1NUUkVBTSAtLSAtbTgKCiAg
ICBbMl0gIyMjIFRlc3QgVURQIHNob3J0IHBhY2tldHMgd2l0aCBwa3QtZ2VuICMjIwogICAgICAg
ICMgT24gdGhlIGd1ZXN0IDEwLjAuMC4yIHJ1bgogICAgICAgICAgICBwa3QtZ2VuIC1pZXRoMCAt
ZnJ4CiAgICAgICAgIyBPbiB0aGUgZ3Vlc3QgMTAuMC4wLjEgcnVuCiAgICAgICAgICAgIHBrdC1n
ZW4gLWlldGgwIC1mdHgKCiAgICBbM10gIyMjIFRlc3QgZ3Vlc3QtdG8tZ3Vlc3QgbGF0ZW5jeSAj
IyMKICAgICAgICAjIE9uIHRoZSBndWVzdCAxMC4wLjAuMiBydW4KICAgICAgICAgICAgbmV0c2Vy
dmVyCiAgICAgICAgIyBPbiB0aGUgZ3Vlc3QgMTAuMC4wLjEgcnVuCiAgICAgICAgICAgIG5ldHBl
cmYgLUgxMC4wLjAuMiAtdFRDUF9SUgoKTm90ZSB0aGF0IHlvdSBjYW4gdXNlIHBrdC1nZW4gaW50
byBhIFZNIG9ubHkgaWYgdGhlIGVtdWxhdGVkIGV0aGVybmV0CmRldmljZSBpcyBzdXBwb3J0ZWQg
YnkgbmV0bWFwLiBUaGUgZGVmYXVsdCBlbXVsYXRlZCBkZXZpY2UgaXMKImUxMDAwIiwgd2hpY2gg
aGFzIG5ldG1hcCBzdXBwb3J0LiAgSWYgeW91IHRyeSB0byBydW4gcGt0LWdlbiBvbgphbiB1bnN1
cHBvcnRlZCBkZXZpY2UsIHBrdC1nZW4gd2lsbCBub3Qgd29yaywgcmVwb3J0aW5nIHRoYXQgaXQg
aXMKdW5hYmxlIHRvIHJlZ2lzdGVyIHRoZSBpbnRlcmZhY2UuCgoKR3Vlc3QtdG8taG9zdCB0ZXN0
cyAoZm9sbG93cyBmcm9tIHRoZSBwcmV2aW91cyBzZWN0aW9uKQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpJZiB5b3UgcnVuIG9ubHkgYSBW
TSBvbiB5b3VyIGhvc3QgbWFjaGluZSwgeW91IGNhbiBtZWFzdXJlIHRoZQpuZXR3b3JrIHBlcmZv
cm1hbmNlIGJldHdlZW4gdGhlIFZNIGFuZCB0aGUgaG9zdCBtYWNoaW5lLiAgSW4gdGhpcwpjYXNl
IHRoZSBleHBlcmltZW50IHNldHVwIGRlcGVuZHMgb24gdGhlIGJhY2tlbmQgeW91IGFyZSB1c2lu
Zy4KCldpdGggdGhlIHRhcCBiYWNrZW5kLCB5b3UgY2FuIHVzZSB0aGUgYnJpZGdlIGludGVyZmFj
ZSAiYnIwIiBhcyBhCmNvbW11bmljYXRpb24gZW5kcG9pbnQuIFlvdSBjYW4gcnVuIG5vcm1hbC9y
YXcgc29ja2V0cyBleHBlcmltZW50cywKYnV0IHlvdSBjYW5ub3QgdXNlIHBrdC1nZW4gb24gdGhl
ICJicjAiIGludGVyZmFjZSwgc2luY2UgdGhlIExpbnV4CmJyaWRnZSBpbnRlcmZhY2UgaXMgbm90
IHN1cHBvcnRlZCBieSBuZXRtYXAuCgpFeGFtcGxlcyB3aXRoIHRoZSB0YXAgYmFja2VuZDoKCiAg
ICBbMV0gIyMjIFRlc3QgVENQIHRocm91Z2hwdXQgb3ZlciB0cmFkaXRpb25hbCBzb2NrZXRzICMj
IwogICAgICAgICMgT24gdGhlIGhvc3QgcnVuCiAgICAgICAgICAgIG5ldHNlcnZlcgogICAgICAg
ICMgb24gdGhlIGd1ZXN0IDEwLjAuMC4xIHJ1bgogICAgICAgICAgICBuZXRwZXJmIC1IMTAuMC4w
LjIwMCAtdFRDUF9TVFJFQU0KCiAgICBbMl0gIyMjIFRlc3QgVURQIHNob3J0IHBhY2tldHMgd2l0
aCBwa3QtZ2VuIGFuZCBsMiAjIyMKICAgICAgICAjIE9uIHRoZSBob3N0IHJ1bgogICAgICAgICAg
ICBsMm9wZW4gLXIgYnIwIGwycmVjdgogICAgICAgICMgT24gdGhlIGd1ZXN0IDEwLjAuMC4xIHJ1
biAoeHg6eXk6eno6d3c6dXU6dnYgaXMgdGhlCiAgICAgICAgIyAiYnIwIiBoYXJkd2FyZSBhZGRy
ZXNzKQogICAgICAgICAgICBwa3QtZ2VuIC1pZXRoMCAtZnR4IC1kMTAuMC4wLjIwMDo3Nzc3IC1E
eHg6eXk6eno6d3c6dXU6dnYKCgpXaXRoIHRoZSBWQUxFIGJhY2tlbmQgeW91IGNhbiBwZXJmb3Jt
IG9ubHkgVURQIHRlc3RzLCBzaW5jZSB3ZSBkb24ndCBoYXZlCmEgbmV0bWFwIGFwcGxpY2F0aW9u
IHdoaWNoIGltcGxlbWVudHMgYSBUQ1AgZW5kcG9pbnQ6IHBrdC1nZW4gZ2VuZXJhdGVzClVEUCBw
YWNrZXRzLgpBcyBhIGNvbW11bmljYXRpb24gZW5kcG9pbnQgb24gdGhlIGhvc3QsIHlvdSBjYW4g
dXNlIGEgdmlydHVhbCBWQUxFIHBvcnQKb3BlbmVkIG9uIHRoZSBmbHkgYnkgYSBwa3QtZ2VuIGlu
c3RhbmNlLgoKRXhhbXBsZXMgd2l0aCB0aGUgVkFMRSBiYWNrZW5kOgoKICAgIFsxXSAjIyMgVGVz
dCBVRFAgc2hvcnQgcGFja2V0cyAjIyMKICAgICAgICAjIE9uIHRoZSBob3N0IHJ1bgogICAgICAg
ICAgICBwa3QtZ2VuIC1pdmFsZTA6OTkgLWZyeAogICAgICAgICMgT24gdGhlIGd1ZXN0IDEwLjAu
MC4xIHJ1bgogICAgICAgICAgICBwa3QtZ2VuIC1pZXRoMCAtZnR4CgogICAgWzJdICMjIyBUZXN0
IFVEUCBiaWcgcGFja2V0cyAocmVjZWl2ZXIgb24gdGhlIGd1ZXN0KSAjIyMKICAgICAgICAjIE9u
IHRoZSBndWVzdCAxMC4wLjAuMSBydW4KICAgICAgICAgICAgcGt0LWdlbiAtaWV0aDAgLWZyeAog
ICAgICAgICMgT24gdGhlIGhvc3QgcnVuIHBrdC1nZW4gLWl2YWxlMDo5OSAtZnR4IC1sMTQ2MAoK
--047d7b604cbc65dca304f0b88f04--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CA%2B_eA9hOzQiOWKvHOiKjY4kjxmerMWp=MhtF_vbr8t-q4V732g>