Return-Path: <ovmsdev-bounces@lists.openvehicles.com>
Received: from network-box.com ([unix socket])
	 by nbmailhq5.network-box.com with LMTPA;
	 Thu, 17 May 2018 14:14:26 +0800
X-Sieve: CMU Sieve 2.4
Received: from nbmailscanhq5.network-box.com (unknown [10.12.18.182])
	by network-box.com (Postfix) with ESMTP id 9BC51403A18B
	for <mark.johnson@network-box.com>; Thu, 17 May 2018 14:14:26 +0800 (HKT)
Received: from nbmailhk1.network-box.com (localhost [127.0.0.1])
	by nbmailscanhq5.network-box.com (Postfix) with ESMTP id 98BDBA1217
	for <mark.johnson@network-box.com>; Thu, 17 May 2018 14:14:23 +0800 (HKT)
Received: from unknown (EHLO nbmailhk1.network-box.com) (10.8.12.9)
  by 127.0.0.1 (Network Box) with SMTP id
 '8b152a4e-5999-11e8-8728-7e2b5a688fa9'; 17 May 2018 06:14:26 -0000
X-Scanned-By-nbmailscanhq5: eMail scan performed by network-box
X-Scanned-By-nbmailscanhq5: Network Box scan job
 8b4d4226-5999-11e8-8728-7e2b5a688fa9
X-Scanned-By-nbmailscanhq5: Network Box message id
 8b152a4e-5999-11e8-8728-7e2b5a688fa9
Received: from nbmailscanhq5.network-box.com (unknown [10.12.18.182])
	by nbmailhk1.network-box.com (Postfix) with ESMTP id 3343E9004B
	for <mark@webb-johnson.net>; Thu, 17 May 2018 14:14:23 +0800 (HKT)
Received: from charged.hk (localhost [127.0.0.1])
	by nbmailscanhq5.network-box.com (Postfix) with ESMTP id 331FCA109E
	for <mark@webb-johnson.net>; Thu, 17 May 2018 14:14:20 +0800 (HKT)
Received: from unknown (EHLO charged.hk) (10.12.12.188)
  by 127.0.0.1 (Network Box) with SMTP id
 '89135ad6-5999-11e8-b2f6-7e2b5a688fa9'; 17 May 2018 06:14:23 -0000
X-NetworkBox-Signature-Group-NBHQ: =?utf-8?q?0501=3BGROUP=3BNBHQ=3Bnbmailsca?=
 =?utf-8?q?nhq5=3B5f807f87e3ee1abc656824757c2e72b78c10b3a3d4e7fe436f9d8a276a?=
 =?utf-8?q?b99468?=
X-Scanned-By-nbmailscanhq5: eMail scan performed by network-box
X-Scanned-By-nbmailscanhq5: Network Box scan job
 893d70dc-5999-11e8-b2f6-7e2b5a688fa9
X-Scanned-By-nbmailscanhq5: Network Box message id
 89135ad6-5999-11e8-b2f6-7e2b5a688fa9
Received: from [10.12.12.188] (localhost [IPv6:::1])
	by charged.hk (Postfix) with ESMTP id D8DB280C3209;
	Thu, 17 May 2018 14:14:19 +0800 (HKT)
X-Original-To: ovmsdev@lists.openvehicles.com
Delivered-To: ovmsdev@lists.openvehicles.com
Received: from nbmailscanhq5.network-box.com (unknown [10.12.18.182])
 by charged.hk (Postfix) with ESMTP id 23D1680C3207
 for <ovmsdev@lists.openvehicles.com>; Thu, 17 May 2018 14:14:18 +0800 (HKT)
Received: from ns31.expeedo.de (localhost [127.0.0.1])
 by nbmailscanhq5.network-box.com (Postfix) with ESMTP id 1A6EBA0EF0
 for <ovmsdev@lists.openvehicles.com>; Thu, 17 May 2018 14:14:07 +0800 (HKT)
Received: from unknown (EHLO ns31.expeedo.de) (85.25.217.79)
 by 127.0.0.1 (Network Box) with SMTP id
 '7e925800-5999-11e8-bc2d-7e2b5a688fa9';
 17 May 2018 06:14:17 -0000
X-Scanned-By-nbmailscanhq5: eMail scan performed by network-box
X-Scanned-By-nbmailscanhq5: Network Box scan job
 81c5fc5c-5999-11e8-bc2d-7e2b5a688fa9
X-Scanned-By-nbmailscanhq5: Network Box message id
 7e925800-5999-11e8-bc2d-7e2b5a688fa9
Received: from localhost (localhost [127.0.0.1])
 by ns31.expeedo.de (Postfix) with ESMTP id CF0CD8056B2CB
 for <ovmsdev@lists.openvehicles.com>; Thu, 17 May 2018 08:14:00 +0200 (CEST)
X-Virus-Scanned: amavisd-new at expeedo.de
Received: from ns31.expeedo.de ([127.0.0.1])
 by localhost (ns31.expeedo.de [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id QY5gr5Wv-iRu for <ovmsdev@lists.openvehicles.com>;
 Thu, 17 May 2018 08:14:00 +0200 (CEST)
Received: from leela.expeedo.de (pD9E4B4B9.dip0.t-ipconnect.de
 [217.228.180.185]) (Authenticated sender: dexter)
 by ns31.expeedo.de (Postfix) with ESMTPA id 8A0648056B2C6
 for <ovmsdev@lists.openvehicles.com>; Thu, 17 May 2018 08:14:00 +0200 (CEST)
To: ovmsdev@lists.openvehicles.com
References: <2f8e0090-75a4-ebe9-4dae-f02e2d5beb81@expeedo.de>
 <bb72d0da-1e88-fd99-63d2-4931eb82abd1@expeedo.de>
 <91D76B0B-304D-4E3B-B32A-1ED73C773767@webb-johnson.net>
 <20180516101727.GB28462@mail.ro.nu>
 <55A24900-5F22-43B5-BDFA-89B61E97CD0A@webb-johnson.net>
From: Michael Balzer <dexter@expeedo.de>
Openpgp: preference=signencrypt
Autocrypt: addr=dexter@expeedo.de; prefer-encrypt=mutual; keydata=
 xsDiBD44hpIRBACN5hNaP1ucEyZXyM6E5oubK7jZZXAq9AnYlCesn7imWruNjk4oP44eS7qh
 3MTueFZb3rMcvIA08qNw1WySB73lLM7SOqTfnlaIRdbyg5Ynwu09os/eHTArWEGMOn8uHxBh
 IdD7wv9SiZmAC7FKCuhBKk8kNIWt9Bw8ZfNvTgG2RwCg/AwvZGZjbFhN9dStw+jTYuVXCs0D
 /jmSsYNKNSnMD2v4SI7lnarGvhLuwMuwsYEa/s2iG66Q8BRSkc8o3WX6OJ5R/8f3dtsxS3fe
 /IhhPLQx5gG7wWUmhPDl0S842Kay9mzWNzjP1UCslnZ2ldFM4lbWwP0ArvKXIWbGATsaNB14
 qvhaljuS8x6JkqFWge3j2YYRjSl/A/4zPycwDNg2GNgwG6pn+ay8RhPEOysdRCp/RU/TQ0uK
 XBACVDQRdhbgcRaqd5pWpiEepJUvIRBxNAKy2posXIfeMcNjks2mT2hvWAaD6vJHzl1pOZE5
 sFlpTSQc0s5fEoYW6KjGjKpqIgjcbLDGZvtVVpR+mpPUmDasUZfC1wO/+80iTWljaGFlbCBC
 YWx6ZXIgPGRleHRlckBleHBlZWRvLmRlPsJXBBMRAgAXBQI+OIaSBQsHCgMEAxUDAgMWAgEC
 F4AACgkQ4cdaqUnOjcLqGwCbBJ/FHHIBvd6gAADlGGgU37AqWyEAn1jSt21B+taovlIoAHV2
 PjjiWbOZzsBNBD44hpQQBACt/vjPd+2tvyU6z441DwjDl6LU9cDMJIc/AEfJu5KgWKJHHAeo
 aqvvtoQiGxb3NA3vFUS+9esPUFitlFisovmu9mP4NeTexUvcRTLwjAIdL4VtyrpkAds/XfPO
 LaFfjV1VM7vGQ0y1HY28GrGiegwV4XAdpxd5UrEF99UGfMJNJwADBQQAiYb1PysXCggpy/Y9
 llzh9axeGGRmseMoH7K/mfMutIz8KSjOyeeNaIpjwPXNFpk+KWvOOgty8riFbp9WBdNdtwU/
 q6u48xkQjMvtexhY+4DEKTelLQ1y0QUxLTfynDZMcyQl6RbA2SF57BGFUZJ+mnSz6QG72sVs
 JDCRSu5d7dbCRgQYEQIABgUCPjiGlAAKCRDhx1qpSc6NwklUAJ98niT6IAO4Hf2MBbrKJstG
 8dx/PwCguu5JQK6/mRH++SV45zbw9cfsz+w=
Message-ID: <50cf8d08-b5b4-ad1f-f044-232493d4633b@expeedo.de>
Date: Thu, 17 May 2018 08:14:00 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101
 Thunderbird/52.7.0
MIME-Version: 1.0
In-Reply-To: <55A24900-5F22-43B5-BDFA-89B61E97CD0A@webb-johnson.net>
Content-Language: de-DE
Subject: Re: [Ovmsdev] Charge time prediction
X-BeenThere: ovmsdev@lists.openvehicles.com
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: OVMS Developers <ovmsdev.lists.openvehicles.com>
List-Unsubscribe: <http://lists.openvehicles.com/mailman/options/ovmsdev>,
 <mailto:ovmsdev-request@lists.openvehicles.com?subject=unsubscribe>
List-Archive: <http://lists.openvehicles.com/pipermail/ovmsdev/>
List-Post: <mailto:ovmsdev@lists.openvehicles.com>
List-Help: <mailto:ovmsdev-request@lists.openvehicles.com?subject=help>
List-Subscribe: <http://lists.openvehicles.com/mailman/listinfo/ovmsdev>,
 <mailto:ovmsdev-request@lists.openvehicles.com?subject=subscribe>
Reply-To: OVMS Developers <ovmsdev@lists.openvehicles.com>
Content-Type: multipart/mixed; boundary="===============7255930488656375735=="
Errors-To: ovmsdev-bounces@lists.openvehicles.com
Sender: "OvmsDev" <ovmsdev-bounces@lists.openvehicles.com>

This is a multi-part message in MIME format.
--===============7255930488656375735==
Content-Type: multipart/alternative;
 boundary="------------E53BB8FC79F97CBAC1E46794"
Content-Language: de-DE

This is a multi-part message in MIME format.
--------------E53BB8FC79F97CBAC1E46794
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable


Am 16.05.2018 um 14:56 schrieb Mark Webb-Johnson:
> The original intent of that metric was to provide an estimate for the c=
harge time remaining on the current charge. That is why it was cleared at=
 the end of
> the charge.

This original intent of the three "minsremaining" car variables wasn't do=
cumented and in my opinion is unnecessarily restricted. The variables hav=
e been fully
under control of the vehicle modules before, and there were no separate c=
ar variables for a general charge time prediction, so I have been using t=
hem in that
more general way.

Using them in that way provides a continuous configurable charge time est=
imation for the user.

During an actual charge, the estimates can be done for the current charge=
r capabilities. During driving and parking, I use the charge current limi=
t configured
by the user. That is configured as the current level at the battery, so t=
he input voltage doesn't matter.

That way the user can for example check how long a charge at reduced curr=
ent level of i.e. a camping lot would take by simply setting the charge c=
urrent
accordingly. The Android App displays the charge time estimations at the =
bottom of the battery page, so getting an updated estimation is a matter =
of three clicks.

I always calculate and show all three times (full, sufficient range, suff=
icient SOC), so the user can set the charge limits for the next part of t=
he route
and/or the return to home and still see how long a full charge would take=
=2E

While supporting more than one range estimation would be nice, it now alr=
eady is perfectly sufficient for every day use, as you can easily adjust =
the
destination levels to check the times for other routes.

Being able to provide parallel estimations of multiple charge destination=
 levels for a set of user defined standard chargers would be nice, but ca=
n overload the
user with information and/or configuration.

The most user friendly solution would be using the OpenChargeMap data on =
charge station capabilities to automatically provide all estimations for =
all chargers
currently in reach. The user still would need a way to configure some sta=
ndard chargers for cases not covered by the OCM.

But for now, setting one charger capability by setting the charge current=
 limit is already sufficient and convenient and doesn't require too much =
interaction
from the user.

Regards,
Michael


> The estimation of charge time remaining is non-trivial. It depends on a=
 large set of factors (such as target SOC, temperature, charge mode, char=
ge power, and
> fundamentally the proprietary ramp up/down algorithm of the vehicle man=
ufacturer). To come up with the predictor for the Tesla Roadster, we gath=
ered several
> years worth of charging records, from hundreds of different cars in the=
 field in different charging environments (powers, modes, temperatures, e=
tc). Tom then
> came up with a model to try to predict the charge time behaviour, and t=
hen tested the model against the real world data we had. It was pretty co=
ol.
>
> I think there is certainly more that algorithm could be used for, but i=
t is Tesla Roadster specific.
>
> Perhaps what we need is a generic interface in vehicle.{h, cpp} for a c=
harge time predictor. Something like:
>
>     int OvmsVehicle::MinutesToCharge(
>     =C2=A0 Chargemode,
>     =C2=A0 Watts,
>     =C2=A0 StartSOC or StartRange,
>     =C2=A0 TargetSOC or TargetRange,
>     =C2=A0 Temperature)
>
>
> Individual vehicle modules could then implement that as best they could=
 (a simplistic implementation being just based on battery kWh *
> (TargetSoc-StartSoc)/100). We could then generically use it to show est=
imates for various scenarios, etc. Along the lines of what Robin is talki=
ng about below.
>
> But for this specific metric (MS_V_CHARGE_DURATION_FULL), that is inten=
ded to be an indication for how long the current charge will take to comp=
lete, and
> nothing more. Once the current charge is complete (targetSOC reached), =
it should be cleared. If the charge is interrupted, but the charger still=
 connected,
> there is an argument for it to remain visible (to show how long it will=
 take should the charge be resumed).
>
> The other two (MS_V_CHARGE_DURATION_RANGE and=C2=A0MS_V_CHARGE_DURATION=
_SOC, derived from=C2=A0MS_V_CHARGE_LIMIT_RANGE and=C2=A0MS_V_CHARGE_LIMI=
T_SOC) are a historical relic
> in the conversion from v2 -> v3, and should probably go. There are bett=
er ways of doing that.
>
> But, the question is how can we make this generic? I really want things=
 to work the same across as many vehicle types as possible - keeping the =
implementation
> of vehicle support as simple as possible.
>
> Regards, Mark.
>
>> On 16 May 2018, at 6:17 PM, Robin O'Leary <ovmsdev@caederus.org <mailt=
o:ovmsdev@caederus.org>> wrote:
>>
>> On Wed, May 16, 2018 at 08:19:13AM +0800, Mark Webb-Johnson wrote:
>>> If we don=E2=80=99t know current + voltage available from the charger=
, then
>>> how can we predict charge time? Or is the current + voltage for the
>>> Twizy always the same (fixed?).
>>
>> It's still useful to show charge time estimate(s) even when charging
>> isn't in progress. =C2=A0We can't be sure what will happen, but we can=
 still
>> make reasonable guesses in various ways:
>>
>> =C2=A0=C2=A0=C2=A0- show several estimates covering a range of charger=
 capabilities
>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0(this is what the Leaf does on the dash)=

>>
>> =C2=A0=C2=A0=C2=A0- assume the charge continues with the same paramete=
rs as it left off
>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0(is this what OVMS did before the change=
 discussed?)
>>
>> =C2=A0=C2=A0=C2=A0- use past location data and history to predict what=
 will happen
>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0(wishful thinking!)
>>
>> It seems to me that there is a strong case for having an "estimates"
>> module to off-load this kind of thing from vehicle-specific modules.
>> It gets so much more complicated when you go beyond what the vehicle
>> module can report as objective fact (the battery capacity is X, the
>> charger current is Y) and in to more subjective territory, where peopl=
e
>> have different ideas of what works best for them. =C2=A0We've already =
hit
>> that in the Leaf code with the SOC metric. =C2=A0I think there needs t=
o be a
>> clear separation. =C2=A0=C2=A0To please everyone, the "estimates" modu=
le is likely
>> going to need a load of tunable parameters that shouldn't be replicate=
d
>> in the vehicle modules. =C2=A0Maybe it could be completely general, li=
ke the
>> script-driven metric generator for OBDII?
>>
>>> I think it is important to clear these prediction values when they
>>> are no longer useful or correct, and relying on individual vehicle
>>> modules to do it seems incorrect. =C2=A0We should be able to do this =
in a
>>> standard way. But, I see your point about an interrupted charge (I
>>> guess in that case we can presume a new charge would resume and the
>>> predictions would be roughly correct, so long as vehicle and charger
>>> state did not change).
>>
>> Not sure I see your reasoning here. =C2=A0Even when the car is not plu=
gged in
>> to a charger, wouldn't you still want to see some estimated charge tim=
es?
>>
>>> How about we clear these when the vehicle charge port is detected
>>> closed? (in addition to the existing =E2=80=98charge done=E2=80=99 co=
ndition)
>>
>> That wouldn't help the Leaf, which doesn't seem to have a sensor for
>> the charge port door, so we are currently faking that from the charge
>> detect logic.
>> _______________________________________________
>> OvmsDev mailing list
>> OvmsDev@lists.openvehicles.com <mailto:OvmsDev@lists.openvehicles.com>=

>> http://lists.openvehicles.com/mailman/listinfo/ovmsdev
>
>
>
> _______________________________________________
> OvmsDev mailing list
> OvmsDev@lists.openvehicles.com
> http://lists.openvehicles.com/mailman/listinfo/ovmsdev

--=20
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26


--------------E53BB8FC79F97CBAC1E46794
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: base64

PGh0bWw+CiAgPGhlYWQ+CiAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+CiAgPC9oZWFkPgogIDxib2R5IHRleHQ9IiMw
MDAwMDAiIGJnY29sb3I9IiNGRkZGRkYiPgogICAgPGJyPgogICAgPGRpdiBjbGFzcz0ibW96LWNp
dGUtcHJlZml4Ij5BbSAxNi4wNS4yMDE4IHVtIDE0OjU2IHNjaHJpZWIgTWFyawogICAgICBXZWJi
LUpvaG5zb246PGJyPgogICAgPC9kaXY+CiAgICA8YmxvY2txdW90ZSB0eXBlPSJjaXRlIgogICAg
ICBjaXRlPSJtaWQ6NTVBMjQ5MDAtNUYyMi00M0I1LUJERkEtODlCNjFFOTdDRDBBQHdlYmItam9o
bnNvbi5uZXQiPgogICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9
InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+CiAgICAgIFRoZSBvcmlnaW5hbCBpbnRlbnQgb2Yg
dGhhdCBtZXRyaWMgd2FzIHRvIHByb3ZpZGUgYW4gZXN0aW1hdGUgZm9yCiAgICAgIHRoZSBjaGFy
Z2UgdGltZSByZW1haW5pbmcgb24gdGhlIGN1cnJlbnQgY2hhcmdlLiBUaGF0IGlzIHdoeSBpdAog
ICAgICB3YXMgY2xlYXJlZCBhdCB0aGUgZW5kIG9mIHRoZSBjaGFyZ2UuPC9ibG9ja3F1b3RlPgog
ICAgPGJyPgogICAgVGhpcyBvcmlnaW5hbCBpbnRlbnQgb2YgdGhlIHRocmVlICJtaW5zcmVtYWlu
aW5nIiBjYXIgdmFyaWFibGVzCiAgICB3YXNuJ3QgZG9jdW1lbnRlZCBhbmQgaW4gbXkgb3Bpbmlv
biBpcyB1bm5lY2Vzc2FyaWx5IHJlc3RyaWN0ZWQuIFRoZQogICAgdmFyaWFibGVzIGhhdmUgYmVl
biBmdWxseSB1bmRlciBjb250cm9sIG9mIHRoZSB2ZWhpY2xlIG1vZHVsZXMKICAgIGJlZm9yZSwg
YW5kIHRoZXJlIHdlcmUgbm8gc2VwYXJhdGUgY2FyIHZhcmlhYmxlcyBmb3IgYSBnZW5lcmFsCiAg
ICBjaGFyZ2UgdGltZSBwcmVkaWN0aW9uLCBzbyBJIGhhdmUgYmVlbiB1c2luZyB0aGVtIGluIHRo
YXQgbW9yZQogICAgZ2VuZXJhbCB3YXkuPGJyPgogICAgPGJyPgogICAgVXNpbmcgdGhlbSBpbiB0
aGF0IHdheSBwcm92aWRlcyBhIGNvbnRpbnVvdXMgY29uZmlndXJhYmxlIGNoYXJnZQogICAgdGlt
ZSBlc3RpbWF0aW9uIGZvciB0aGUgdXNlci48YnI+CiAgICA8YnI+CiAgICBEdXJpbmcgYW4gYWN0
dWFsIGNoYXJnZSwgdGhlIGVzdGltYXRlcyBjYW4gYmUgZG9uZSBmb3IgdGhlIGN1cnJlbnQKICAg
IGNoYXJnZXIgY2FwYWJpbGl0aWVzLiBEdXJpbmcgZHJpdmluZyBhbmQgcGFya2luZywgSSB1c2Ug
dGhlIGNoYXJnZQogICAgY3VycmVudCBsaW1pdCBjb25maWd1cmVkIGJ5IHRoZSB1c2VyLiBUaGF0
IGlzIGNvbmZpZ3VyZWQgYXMgdGhlCiAgICBjdXJyZW50IGxldmVsIGF0IHRoZSBiYXR0ZXJ5LCBz
byB0aGUgaW5wdXQgdm9sdGFnZSBkb2Vzbid0IG1hdHRlci48YnI+CiAgICA8YnI+CiAgICBUaGF0
IHdheSB0aGUgdXNlciBjYW4gZm9yIGV4YW1wbGUgY2hlY2sgaG93IGxvbmcgYSBjaGFyZ2UgYXQg
cmVkdWNlZAogICAgY3VycmVudCBsZXZlbCBvZiBpLmUuIGEgY2FtcGluZyBsb3Qgd291bGQgdGFr
ZSBieSBzaW1wbHkgc2V0dGluZyB0aGUKICAgIGNoYXJnZSBjdXJyZW50IGFjY29yZGluZ2x5LiBU
aGUgQW5kcm9pZCBBcHAgZGlzcGxheXMgdGhlIGNoYXJnZSB0aW1lCiAgICBlc3RpbWF0aW9ucyBh
dCB0aGUgYm90dG9tIG9mIHRoZSBiYXR0ZXJ5IHBhZ2UsIHNvIGdldHRpbmcgYW4gdXBkYXRlZAog
ICAgZXN0aW1hdGlvbiBpcyBhIG1hdHRlciBvZiB0aHJlZSBjbGlja3MuPGJyPgogICAgPGJyPgog
ICAgSSBhbHdheXMgY2FsY3VsYXRlIGFuZCBzaG93IGFsbCB0aHJlZSB0aW1lcyAoZnVsbCwgc3Vm
ZmljaWVudCByYW5nZSwKICAgIHN1ZmZpY2llbnQgU09DKSwgc28gdGhlIHVzZXIgY2FuIHNldCB0
aGUgY2hhcmdlIGxpbWl0cyBmb3IgdGhlIG5leHQKICAgIHBhcnQgb2YgdGhlIHJvdXRlIGFuZC9v
ciB0aGUgcmV0dXJuIHRvIGhvbWUgYW5kIHN0aWxsIHNlZSBob3cgbG9uZyBhCiAgICBmdWxsIGNo
YXJnZSB3b3VsZCB0YWtlLjxicj4KICAgIDxicj4KICAgIFdoaWxlIHN1cHBvcnRpbmcgbW9yZSB0
aGFuIG9uZSByYW5nZSBlc3RpbWF0aW9uIHdvdWxkIGJlIG5pY2UsIGl0CiAgICBub3cgYWxyZWFk
eSBpcyBwZXJmZWN0bHkgc3VmZmljaWVudCBmb3IgZXZlcnkgZGF5IHVzZSwgYXMgeW91IGNhbgog
ICAgZWFzaWx5IGFkanVzdCB0aGUgZGVzdGluYXRpb24gbGV2ZWxzIHRvIGNoZWNrIHRoZSB0aW1l
cyBmb3Igb3RoZXIKICAgIHJvdXRlcy48YnI+CiAgICA8YnI+CiAgICBCZWluZyBhYmxlIHRvIHBy
b3ZpZGUgcGFyYWxsZWwgZXN0aW1hdGlvbnMgb2YgbXVsdGlwbGUgY2hhcmdlCiAgICBkZXN0aW5h
dGlvbiBsZXZlbHMgZm9yIGEgc2V0IG9mIHVzZXIgZGVmaW5lZCBzdGFuZGFyZCBjaGFyZ2VycyB3
b3VsZAogICAgYmUgbmljZSwgYnV0IGNhbiBvdmVybG9hZCB0aGUgdXNlciB3aXRoIGluZm9ybWF0
aW9uIGFuZC9vcgogICAgY29uZmlndXJhdGlvbi48YnI+CiAgICA8YnI+CiAgICBUaGUgbW9zdCB1
c2VyIGZyaWVuZGx5IHNvbHV0aW9uIHdvdWxkIGJlIHVzaW5nIHRoZSBPcGVuQ2hhcmdlTWFwCiAg
ICBkYXRhIG9uIGNoYXJnZSBzdGF0aW9uIGNhcGFiaWxpdGllcyB0byBhdXRvbWF0aWNhbGx5IHBy
b3ZpZGUgYWxsCiAgICBlc3RpbWF0aW9ucyBmb3IgYWxsIGNoYXJnZXJzIGN1cnJlbnRseSBpbiBy
ZWFjaC4gVGhlIHVzZXIgc3RpbGwKICAgIHdvdWxkIG5lZWQgYSB3YXkgdG8gY29uZmlndXJlIHNv
bWUgc3RhbmRhcmQgY2hhcmdlcnMgZm9yIGNhc2VzIG5vdAogICAgY292ZXJlZCBieSB0aGUgT0NN
Ljxicj4KICAgIDxicj4KICAgIEJ1dCBmb3Igbm93LCBzZXR0aW5nIG9uZSBjaGFyZ2VyIGNhcGFi
aWxpdHkgYnkgc2V0dGluZyB0aGUgY2hhcmdlCiAgICBjdXJyZW50IGxpbWl0IGlzIGFscmVhZHkg
c3VmZmljaWVudCBhbmQgY29udmVuaWVudCBhbmQgZG9lc24ndAogICAgcmVxdWlyZSB0b28gbXVj
aCBpbnRlcmFjdGlvbiBmcm9tIHRoZSB1c2VyLjxicj4KICAgIDxicj4KICAgIFJlZ2FyZHMsPGJy
PgogICAgTWljaGFlbDxicj4KICAgIDxicj4KICAgIDxicj4KICAgIDxibG9ja3F1b3RlIHR5cGU9
ImNpdGUiCiAgICAgIGNpdGU9Im1pZDo1NUEyNDkwMC01RjIyLTQzQjUtQkRGQS04OUI2MUU5N0NE
MEFAd2ViYi1qb2huc29uLm5ldCI+CiAgICAgIDxkaXYgY2xhc3M9IiI+VGhlIGVzdGltYXRpb24g
b2YgY2hhcmdlIHRpbWUgcmVtYWluaW5nIGlzCiAgICAgICAgbm9uLXRyaXZpYWwuIEl0IGRlcGVu
ZHMgb24gYSBsYXJnZSBzZXQgb2YgZmFjdG9ycyAoc3VjaCBhcwogICAgICAgIHRhcmdldCBTT0Ms
IHRlbXBlcmF0dXJlLCBjaGFyZ2UgbW9kZSwgY2hhcmdlIHBvd2VyLCBhbmQKICAgICAgICBmdW5k
YW1lbnRhbGx5IHRoZSBwcm9wcmlldGFyeSByYW1wIHVwL2Rvd24gYWxnb3JpdGhtIG9mIHRoZQog
ICAgICAgIHZlaGljbGUgbWFudWZhY3R1cmVyKS4gVG8gY29tZSB1cCB3aXRoIHRoZSBwcmVkaWN0
b3IgZm9yIHRoZQogICAgICAgIFRlc2xhIFJvYWRzdGVyLCB3ZSBnYXRoZXJlZCBzZXZlcmFsIHll
YXJzIHdvcnRoIG9mIGNoYXJnaW5nCiAgICAgICAgcmVjb3JkcywgZnJvbSBodW5kcmVkcyBvZiBk
aWZmZXJlbnQgY2FycyBpbiB0aGUgZmllbGQgaW4KICAgICAgICBkaWZmZXJlbnQgY2hhcmdpbmcg
ZW52aXJvbm1lbnRzIChwb3dlcnMsIG1vZGVzLCB0ZW1wZXJhdHVyZXMsCiAgICAgICAgZXRjKS4g
VG9tIHRoZW4gY2FtZSB1cCB3aXRoIGEgbW9kZWwgdG8gdHJ5IHRvIHByZWRpY3QgdGhlIGNoYXJn
ZQogICAgICAgIHRpbWUgYmVoYXZpb3VyLCBhbmQgdGhlbiB0ZXN0ZWQgdGhlIG1vZGVsIGFnYWlu
c3QgdGhlIHJlYWwgd29ybGQKICAgICAgICBkYXRhIHdlIGhhZC4gSXQgd2FzIHByZXR0eSBjb29s
LjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSIiPjxiciBjbGFzcz0iIj4KICAgICAgPC9kaXY+CiAg
ICAgIDxkaXYgY2xhc3M9IiI+SSB0aGluayB0aGVyZSBpcyBjZXJ0YWlubHkgbW9yZSB0aGF0IGFs
Z29yaXRobSBjb3VsZAogICAgICAgIGJlIHVzZWQgZm9yLCBidXQgaXQgaXMgVGVzbGEgUm9hZHN0
ZXIgc3BlY2lmaWMuPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9IiI+PGJyIGNsYXNzPSIiPgogICAg
ICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iIj5QZXJoYXBzIHdoYXQgd2UgbmVlZCBpcyBhIGdl
bmVyaWMgaW50ZXJmYWNlIGluCiAgICAgICAgdmVoaWNsZS57aCwgY3BwfSBmb3IgYSBjaGFyZ2Ug
dGltZSBwcmVkaWN0b3IuIFNvbWV0aGluZyBsaWtlOjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSIi
PjxiciBjbGFzcz0iIj4KICAgICAgPC9kaXY+CiAgICAgIDxibG9ja3F1b3RlIHN0eWxlPSJtYXJn
aW46IDAgMCAwIDQwcHg7IGJvcmRlcjogbm9uZTsgcGFkZGluZzoKICAgICAgICAwcHg7IiBjbGFz
cz0iIj4KICAgICAgICA8ZGl2IGNsYXNzPSIiPjxmb250IGNsYXNzPSIiIGZhY2U9IkFuZGFsZSBN
b25vIj5pbnQKICAgICAgICAgICAgT3Ztc1ZlaGljbGU6Ok1pbnV0ZXNUb0NoYXJnZSg8L2ZvbnQ+
PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iIj48Zm9udCBjbGFzcz0iIiBmYWNlPSJBbmRhbGUg
TW9ubyI+wqAgQ2hhcmdlbW9kZSw8L2ZvbnQ+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iIj48
Zm9udCBjbGFzcz0iIiBmYWNlPSJBbmRhbGUgTW9ubyI+wqAgV2F0dHMsPC9mb250PjwvZGl2Pgog
ICAgICAgIDxkaXYgY2xhc3M9IiI+PGZvbnQgY2xhc3M9IiIgZmFjZT0iQW5kYWxlIE1vbm8iPsKg
IFN0YXJ0U09DIG9yCiAgICAgICAgICAgIFN0YXJ0UmFuZ2UsPC9mb250PjwvZGl2PgogICAgICAg
IDxkaXYgY2xhc3M9IiI+PGZvbnQgY2xhc3M9IiIgZmFjZT0iQW5kYWxlIE1vbm8iPsKgIFRhcmdl
dFNPQyBvcgogICAgICAgICAgICBUYXJnZXRSYW5nZSw8L2ZvbnQ+PC9kaXY+CiAgICAgICAgPGRp
diBjbGFzcz0iIj48Zm9udCBjbGFzcz0iIiBmYWNlPSJBbmRhbGUgTW9ubyI+wqAgVGVtcGVyYXR1
cmUpPC9mb250PjwvZGl2PgogICAgICA8L2Jsb2NrcXVvdGU+CiAgICAgIDxkaXYgY2xhc3M9IiI+
PGJyIGNsYXNzPSIiPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iIj5JbmRpdmlkdWFs
IHZlaGljbGUgbW9kdWxlcyBjb3VsZCB0aGVuIGltcGxlbWVudCB0aGF0CiAgICAgICAgYXMgYmVz
dCB0aGV5IGNvdWxkIChhIHNpbXBsaXN0aWMgaW1wbGVtZW50YXRpb24gYmVpbmcganVzdCBiYXNl
ZAogICAgICAgIG9uIGJhdHRlcnkga1doICogKFRhcmdldFNvYy1TdGFydFNvYykvMTAwKS4gV2Ug
Y291bGQgdGhlbgogICAgICAgIGdlbmVyaWNhbGx5IHVzZSBpdCB0byBzaG93IGVzdGltYXRlcyBm
b3IgdmFyaW91cyBzY2VuYXJpb3MsIGV0Yy4KICAgICAgICBBbG9uZyB0aGUgbGluZXMgb2Ygd2hh
dCBSb2JpbiBpcyB0YWxraW5nIGFib3V0IGJlbG93LjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSIi
PjxiciBjbGFzcz0iIj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9IiI+QnV0IGZvciB0
aGlzIHNwZWNpZmljIG1ldHJpYwogICAgICAgIChNU19WX0NIQVJHRV9EVVJBVElPTl9GVUxMKSwg
dGhhdCBpcyBpbnRlbmRlZCB0byBiZSBhbgogICAgICAgIGluZGljYXRpb24gZm9yIGhvdyBsb25n
IHRoZSBjdXJyZW50IGNoYXJnZSB3aWxsIHRha2UgdG8KICAgICAgICBjb21wbGV0ZSwgYW5kIG5v
dGhpbmcgbW9yZS4gT25jZSB0aGUgY3VycmVudCBjaGFyZ2UgaXMgY29tcGxldGUKICAgICAgICAo
dGFyZ2V0U09DIHJlYWNoZWQpLCBpdCBzaG91bGQgYmUgY2xlYXJlZC4gSWYgdGhlIGNoYXJnZSBp
cwogICAgICAgIGludGVycnVwdGVkLCBidXQgdGhlIGNoYXJnZXIgc3RpbGwgY29ubmVjdGVkLCB0
aGVyZSBpcyBhbgogICAgICAgIGFyZ3VtZW50IGZvciBpdCB0byByZW1haW4gdmlzaWJsZSAodG8g
c2hvdyBob3cgbG9uZyBpdCB3aWxsIHRha2UKICAgICAgICBzaG91bGQgdGhlIGNoYXJnZSBiZSBy
ZXN1bWVkKS48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iIj48YnIgY2xhc3M9IiI+CiAgICAgIDwv
ZGl2PgogICAgICA8ZGl2IGNsYXNzPSIiPlRoZSBvdGhlciB0d28gKE1TX1ZfQ0hBUkdFX0RVUkFU
SU9OX1JBTkdFCiAgICAgICAgYW5kwqBNU19WX0NIQVJHRV9EVVJBVElPTl9TT0MsIGRlcml2ZWQK
ICAgICAgICBmcm9twqBNU19WX0NIQVJHRV9MSU1JVF9SQU5HRSBhbmTCoE1TX1ZfQ0hBUkdFX0xJ
TUlUX1NPQykgYXJlIGEKICAgICAgICBoaXN0b3JpY2FsIHJlbGljIGluIHRoZSBjb252ZXJzaW9u
IGZyb20gdjIgLSZndDsgdjMsIGFuZCBzaG91bGQKICAgICAgICBwcm9iYWJseSBnby4gVGhlcmUg
YXJlIGJldHRlciB3YXlzIG9mIGRvaW5nIHRoYXQuPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9IiI+
PGJyIGNsYXNzPSIiPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iIj5CdXQsIHRoZSBx
dWVzdGlvbiBpcyBob3cgY2FuIHdlIG1ha2UgdGhpcyBnZW5lcmljPyBJCiAgICAgICAgcmVhbGx5
IHdhbnQgdGhpbmdzIHRvIHdvcmsgdGhlIHNhbWUgYWNyb3NzIGFzIG1hbnkgdmVoaWNsZSB0eXBl
cwogICAgICAgIGFzIHBvc3NpYmxlIC0ga2VlcGluZyB0aGUgaW1wbGVtZW50YXRpb24gb2YgdmVo
aWNsZSBzdXBwb3J0IGFzCiAgICAgICAgc2ltcGxlIGFzIHBvc3NpYmxlLjwvZGl2PgogICAgICA8
ZGl2IGNsYXNzPSIiPjxiciBjbGFzcz0iIj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9
IiI+UmVnYXJkcywgTWFyay48YnIgY2xhc3M9IiI+CiAgICAgICAgPGRpdiBjbGFzcz0iIj48YnIg
Y2xhc3M9IiI+CiAgICAgICAgICA8ZGl2PgogICAgICAgICAgICA8YmxvY2txdW90ZSB0eXBlPSJj
aXRlIiBjbGFzcz0iIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSIiPk9uIDE2IE1heSAyMDE4
LCBhdCA2OjE3IFBNLCBSb2JpbiBPJ0xlYXJ5CiAgICAgICAgICAgICAgICAmbHQ7PGEgaHJlZj0i
bWFpbHRvOm92bXNkZXZAY2FlZGVydXMub3JnIiBjbGFzcz0iIgogICAgICAgICAgICAgICAgICBt
b3otZG8tbm90LXNlbmQ9InRydWUiPm92bXNkZXZAY2FlZGVydXMub3JnPC9hPiZndDsKICAgICAg
ICAgICAgICAgIHdyb3RlOjwvZGl2PgogICAgICAgICAgICAgIDxiciBjbGFzcz0iQXBwbGUtaW50
ZXJjaGFuZ2UtbmV3bGluZSI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iIj4KICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9IiI+T24gV2VkLCBNYXkgMTYsIDIwMTggYXQgMDg6MTk6MTNBTSAr
MDgwMCwKICAgICAgICAgICAgICAgICAgTWFyayBXZWJiLUpvaG5zb24gd3JvdGU6PGJyIGNsYXNz
PSIiPgogICAgICAgICAgICAgICAgICA8YmxvY2txdW90ZSB0eXBlPSJjaXRlIiBjbGFzcz0iIj5J
ZiB3ZSBkb27igJl0IGtub3cKICAgICAgICAgICAgICAgICAgICBjdXJyZW50ICsgdm9sdGFnZSBh
dmFpbGFibGUgZnJvbSB0aGUgY2hhcmdlciwgdGhlbjxicgogICAgICAgICAgICAgICAgICAgICAg
Y2xhc3M9IiI+CiAgICAgICAgICAgICAgICAgICAgaG93IGNhbiB3ZSBwcmVkaWN0IGNoYXJnZSB0
aW1lPyBPciBpcyB0aGUgY3VycmVudCArCiAgICAgICAgICAgICAgICAgICAgdm9sdGFnZSBmb3Ig
dGhlPGJyIGNsYXNzPSIiPgogICAgICAgICAgICAgICAgICAgIFR3aXp5IGFsd2F5cyB0aGUgc2Ft
ZSAoZml4ZWQ/KS48YnIgY2xhc3M9IiI+CiAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4K
ICAgICAgICAgICAgICAgICAgPGJyIGNsYXNzPSIiPgogICAgICAgICAgICAgICAgICBJdCdzIHN0
aWxsIHVzZWZ1bCB0byBzaG93IGNoYXJnZSB0aW1lIGVzdGltYXRlKHMpIGV2ZW4KICAgICAgICAg
ICAgICAgICAgd2hlbiBjaGFyZ2luZzxiciBjbGFzcz0iIj4KICAgICAgICAgICAgICAgICAgaXNu
J3QgaW4gcHJvZ3Jlc3MuIMKgV2UgY2FuJ3QgYmUgc3VyZSB3aGF0IHdpbGwgaGFwcGVuLAogICAg
ICAgICAgICAgICAgICBidXQgd2UgY2FuIHN0aWxsPGJyIGNsYXNzPSIiPgogICAgICAgICAgICAg
ICAgICBtYWtlIHJlYXNvbmFibGUgZ3Vlc3NlcyBpbiB2YXJpb3VzIHdheXM6PGJyIGNsYXNzPSIi
PgogICAgICAgICAgICAgICAgICA8YnIgY2xhc3M9IiI+CiAgICAgICAgICAgICAgICAgIMKgwqDC
oC0gc2hvdyBzZXZlcmFsIGVzdGltYXRlcyBjb3ZlcmluZyBhIHJhbmdlIG9mCiAgICAgICAgICAg
ICAgICAgIGNoYXJnZXIgY2FwYWJpbGl0aWVzPGJyIGNsYXNzPSIiPgogICAgICAgICAgICAgICAg
ICDCoMKgwqDCoMKgKHRoaXMgaXMgd2hhdCB0aGUgTGVhZiBkb2VzIG9uIHRoZSBkYXNoKTxicgog
ICAgICAgICAgICAgICAgICAgIGNsYXNzPSIiPgogICAgICAgICAgICAgICAgICA8YnIgY2xhc3M9
IiI+CiAgICAgICAgICAgICAgICAgIMKgwqDCoC0gYXNzdW1lIHRoZSBjaGFyZ2UgY29udGludWVz
IHdpdGggdGhlIHNhbWUKICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycyBhcyBpdCBsZWZ0IG9m
ZjxiciBjbGFzcz0iIj4KICAgICAgICAgICAgICAgICAgwqDCoMKgwqDCoChpcyB0aGlzIHdoYXQg
T1ZNUyBkaWQgYmVmb3JlIHRoZSBjaGFuZ2UKICAgICAgICAgICAgICAgICAgZGlzY3Vzc2VkPyk8
YnIgY2xhc3M9IiI+CiAgICAgICAgICAgICAgICAgIDxiciBjbGFzcz0iIj4KICAgICAgICAgICAg
ICAgICAgwqDCoMKgLSB1c2UgcGFzdCBsb2NhdGlvbiBkYXRhIGFuZCBoaXN0b3J5IHRvIHByZWRp
Y3QKICAgICAgICAgICAgICAgICAgd2hhdCB3aWxsIGhhcHBlbjxiciBjbGFzcz0iIj4KICAgICAg
ICAgICAgICAgICAgwqDCoMKgwqDCoCh3aXNoZnVsIHRoaW5raW5nISk8YnIgY2xhc3M9IiI+CiAg
ICAgICAgICAgICAgICAgIDxiciBjbGFzcz0iIj4KICAgICAgICAgICAgICAgICAgSXQgc2VlbXMg
dG8gbWUgdGhhdCB0aGVyZSBpcyBhIHN0cm9uZyBjYXNlIGZvciBoYXZpbmcKICAgICAgICAgICAg
ICAgICAgYW4gImVzdGltYXRlcyI8YnIgY2xhc3M9IiI+CiAgICAgICAgICAgICAgICAgIG1vZHVs
ZSB0byBvZmYtbG9hZCB0aGlzIGtpbmQgb2YgdGhpbmcgZnJvbQogICAgICAgICAgICAgICAgICB2
ZWhpY2xlLXNwZWNpZmljIG1vZHVsZXMuPGJyIGNsYXNzPSIiPgogICAgICAgICAgICAgICAgICBJ
dCBnZXRzIHNvIG11Y2ggbW9yZSBjb21wbGljYXRlZCB3aGVuIHlvdSBnbyBiZXlvbmQKICAgICAg
ICAgICAgICAgICAgd2hhdCB0aGUgdmVoaWNsZTxiciBjbGFzcz0iIj4KICAgICAgICAgICAgICAg
ICAgbW9kdWxlIGNhbiByZXBvcnQgYXMgb2JqZWN0aXZlIGZhY3QgKHRoZSBiYXR0ZXJ5CiAgICAg
ICAgICAgICAgICAgIGNhcGFjaXR5IGlzIFgsIHRoZTxiciBjbGFzcz0iIj4KICAgICAgICAgICAg
ICAgICAgY2hhcmdlciBjdXJyZW50IGlzIFkpIGFuZCBpbiB0byBtb3JlIHN1YmplY3RpdmUKICAg
ICAgICAgICAgICAgICAgdGVycml0b3J5LCB3aGVyZSBwZW9wbGU8YnIgY2xhc3M9IiI+CiAgICAg
ICAgICAgICAgICAgIGhhdmUgZGlmZmVyZW50IGlkZWFzIG9mIHdoYXQgd29ya3MgYmVzdCBmb3Ig
dGhlbS4KICAgICAgICAgICAgICAgICAgwqBXZSd2ZSBhbHJlYWR5IGhpdDxiciBjbGFzcz0iIj4K
ICAgICAgICAgICAgICAgICAgdGhhdCBpbiB0aGUgTGVhZiBjb2RlIHdpdGggdGhlIFNPQyBtZXRy
aWMuIMKgSSB0aGluawogICAgICAgICAgICAgICAgICB0aGVyZSBuZWVkcyB0byBiZSBhPGJyIGNs
YXNzPSIiPgogICAgICAgICAgICAgICAgICBjbGVhciBzZXBhcmF0aW9uLiDCoMKgVG8gcGxlYXNl
IGV2ZXJ5b25lLCB0aGUKICAgICAgICAgICAgICAgICAgImVzdGltYXRlcyIgbW9kdWxlIGlzIGxp
a2VseTxiciBjbGFzcz0iIj4KICAgICAgICAgICAgICAgICAgZ29pbmcgdG8gbmVlZCBhIGxvYWQg
b2YgdHVuYWJsZSBwYXJhbWV0ZXJzIHRoYXQKICAgICAgICAgICAgICAgICAgc2hvdWxkbid0IGJl
IHJlcGxpY2F0ZWQ8YnIgY2xhc3M9IiI+CiAgICAgICAgICAgICAgICAgIGluIHRoZSB2ZWhpY2xl
IG1vZHVsZXMuIMKgTWF5YmUgaXQgY291bGQgYmUgY29tcGxldGVseQogICAgICAgICAgICAgICAg
ICBnZW5lcmFsLCBsaWtlIHRoZTxiciBjbGFzcz0iIj4KICAgICAgICAgICAgICAgICAgc2NyaXB0
LWRyaXZlbiBtZXRyaWMgZ2VuZXJhdG9yIGZvciBPQkRJST88YnIgY2xhc3M9IiI+CiAgICAgICAg
ICAgICAgICAgIDxiciBjbGFzcz0iIj4KICAgICAgICAgICAgICAgICAgPGJsb2NrcXVvdGUgdHlw
ZT0iY2l0ZSIgY2xhc3M9IiI+SSB0aGluayBpdCBpcwogICAgICAgICAgICAgICAgICAgIGltcG9y
dGFudCB0byBjbGVhciB0aGVzZSBwcmVkaWN0aW9uIHZhbHVlcyB3aGVuIHRoZXk8YnIKICAgICAg
ICAgICAgICAgICAgICAgIGNsYXNzPSIiPgogICAgICAgICAgICAgICAgICAgIGFyZSBubyBsb25n
ZXIgdXNlZnVsIG9yIGNvcnJlY3QsIGFuZCByZWx5aW5nIG9uCiAgICAgICAgICAgICAgICAgICAg
aW5kaXZpZHVhbCB2ZWhpY2xlPGJyIGNsYXNzPSIiPgogICAgICAgICAgICAgICAgICAgIG1vZHVs
ZXMgdG8gZG8gaXQgc2VlbXMgaW5jb3JyZWN0LiDCoFdlIHNob3VsZCBiZSBhYmxlCiAgICAgICAg
ICAgICAgICAgICAgdG8gZG8gdGhpcyBpbiBhPGJyIGNsYXNzPSIiPgogICAgICAgICAgICAgICAg
ICAgIHN0YW5kYXJkIHdheS4gQnV0LCBJIHNlZSB5b3VyIHBvaW50IGFib3V0IGFuCiAgICAgICAg
ICAgICAgICAgICAgaW50ZXJydXB0ZWQgY2hhcmdlIChJPGJyIGNsYXNzPSIiPgogICAgICAgICAg
ICAgICAgICAgIGd1ZXNzIGluIHRoYXQgY2FzZSB3ZSBjYW4gcHJlc3VtZSBhIG5ldyBjaGFyZ2Ug
d291bGQKICAgICAgICAgICAgICAgICAgICByZXN1bWUgYW5kIHRoZTxiciBjbGFzcz0iIj4KICAg
ICAgICAgICAgICAgICAgICBwcmVkaWN0aW9ucyB3b3VsZCBiZSByb3VnaGx5IGNvcnJlY3QsIHNv
IGxvbmcgYXMKICAgICAgICAgICAgICAgICAgICB2ZWhpY2xlIGFuZCBjaGFyZ2VyPGJyIGNsYXNz
PSIiPgogICAgICAgICAgICAgICAgICAgIHN0YXRlIGRpZCBub3QgY2hhbmdlKS48YnIgY2xhc3M9
IiI+CiAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KICAgICAgICAgICAgICAgICAgPGJy
IGNsYXNzPSIiPgogICAgICAgICAgICAgICAgICBOb3Qgc3VyZSBJIHNlZSB5b3VyIHJlYXNvbmlu
ZyBoZXJlLiDCoEV2ZW4gd2hlbiB0aGUgY2FyCiAgICAgICAgICAgICAgICAgIGlzIG5vdCBwbHVn
Z2VkIGluPGJyIGNsYXNzPSIiPgogICAgICAgICAgICAgICAgICB0byBhIGNoYXJnZXIsIHdvdWxk
bid0IHlvdSBzdGlsbCB3YW50IHRvIHNlZSBzb21lCiAgICAgICAgICAgICAgICAgIGVzdGltYXRl
ZCBjaGFyZ2UgdGltZXM/PGJyIGNsYXNzPSIiPgogICAgICAgICAgICAgICAgICA8YnIgY2xhc3M9
IiI+CiAgICAgICAgICAgICAgICAgIDxibG9ja3F1b3RlIHR5cGU9ImNpdGUiIGNsYXNzPSIiPkhv
dyBhYm91dCB3ZSBjbGVhcgogICAgICAgICAgICAgICAgICAgIHRoZXNlIHdoZW4gdGhlIHZlaGlj
bGUgY2hhcmdlIHBvcnQgaXMgZGV0ZWN0ZWQ8YnIKICAgICAgICAgICAgICAgICAgICAgIGNsYXNz
PSIiPgogICAgICAgICAgICAgICAgICAgIGNsb3NlZD8gKGluIGFkZGl0aW9uIHRvIHRoZSBleGlz
dGluZyDigJhjaGFyZ2UgZG9uZeKAmQogICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbik8YnIg
Y2xhc3M9IiI+CiAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KICAgICAgICAgICAgICAg
ICAgPGJyIGNsYXNzPSIiPgogICAgICAgICAgICAgICAgICBUaGF0IHdvdWxkbid0IGhlbHAgdGhl
IExlYWYsIHdoaWNoIGRvZXNuJ3Qgc2VlbSB0bwogICAgICAgICAgICAgICAgICBoYXZlIGEgc2Vu
c29yIGZvcjxiciBjbGFzcz0iIj4KICAgICAgICAgICAgICAgICAgdGhlIGNoYXJnZSBwb3J0IGRv
b3IsIHNvIHdlIGFyZSBjdXJyZW50bHkgZmFraW5nIHRoYXQKICAgICAgICAgICAgICAgICAgZnJv
bSB0aGUgY2hhcmdlPGJyIGNsYXNzPSIiPgogICAgICAgICAgICAgICAgICBkZXRlY3QgbG9naWMu
PGJyIGNsYXNzPSIiPgogICAgICAgICAgICAgICAgICBfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXzxicgogICAgICAgICAgICAgICAgICAgIGNsYXNzPSIiPgog
ICAgICAgICAgICAgICAgICBPdm1zRGV2IG1haWxpbmcgbGlzdDxiciBjbGFzcz0iIj4KICAgICAg
ICAgICAgICAgICAgPGEgaHJlZj0ibWFpbHRvOk92bXNEZXZAbGlzdHMub3BlbnZlaGljbGVzLmNv
bSIKICAgICAgICAgICAgICAgICAgICBjbGFzcz0iIiBtb3otZG8tbm90LXNlbmQ9InRydWUiPk92
bXNEZXZAbGlzdHMub3BlbnZlaGljbGVzLmNvbTwvYT48YnIKICAgICAgICAgICAgICAgICAgICBj
bGFzcz0iIj4KICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9Im1vei10eHQtbGluay1mcmVldGV4
dCIgaHJlZj0iaHR0cDovL2xpc3RzLm9wZW52ZWhpY2xlcy5jb20vbWFpbG1hbi9saXN0aW5mby9v
dm1zZGV2Ij5odHRwOi8vbGlzdHMub3BlbnZlaGljbGVzLmNvbS9tYWlsbWFuL2xpc3RpbmZvL292
bXNkZXY8L2E+PGJyCiAgICAgICAgICAgICAgICAgICAgY2xhc3M9IiI+CiAgICAgICAgICAgICAg
ICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgog
ICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8YnIgY2xhc3M9IiI+CiAgICAgICAgPC9kaXY+CiAg
ICAgIDwvZGl2PgogICAgICA8YnI+CiAgICAgIDxmaWVsZHNldCBjbGFzcz0ibWltZUF0dGFjaG1l
bnRIZWFkZXIiPjwvZmllbGRzZXQ+CiAgICAgIDxicj4KICAgICAgPHByZSB3cmFwPSIiPl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk92bXNEZXYgbWFpbGlu
ZyBsaXN0CjxhIGNsYXNzPSJtb3otdHh0LWxpbmstYWJicmV2aWF0ZWQiIGhyZWY9Im1haWx0bzpP
dm1zRGV2QGxpc3RzLm9wZW52ZWhpY2xlcy5jb20iPk92bXNEZXZAbGlzdHMub3BlbnZlaGljbGVz
LmNvbTwvYT4KPGEgY2xhc3M9Im1vei10eHQtbGluay1mcmVldGV4dCIgaHJlZj0iaHR0cDovL2xp
c3RzLm9wZW52ZWhpY2xlcy5jb20vbWFpbG1hbi9saXN0aW5mby9vdm1zZGV2Ij5odHRwOi8vbGlz
dHMub3BlbnZlaGljbGVzLmNvbS9tYWlsbWFuL2xpc3RpbmZvL292bXNkZXY8L2E+CjwvcHJlPgog
ICAgPC9ibG9ja3F1b3RlPgogICAgPGJyPgogICAgPHByZSBjbGFzcz0ibW96LXNpZ25hdHVyZSIg
Y29scz0iMTYwIj4tLSAKTWljaGFlbCBCYWx6ZXIgKiBIZWxrZW5iZXJnZXIgV2VnIDkgKiBELTU4
MjU2IEVubmVwZXRhbApGb24gMDIzMzMgLyA4MzMgNTczNSAqIEhhbmR5IDAxNzYgLyAyMDYgOTg5
IDI2CjwvcHJlPgogIDwvYm9keT4KPC9odG1sPgo=

--------------E53BB8FC79F97CBAC1E46794--

--===============7255930488656375735==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
OvmsDev mailing list
OvmsDev@lists.openvehicles.com
http://lists.openvehicles.com/mailman/listinfo/ovmsdev

--===============7255930488656375735==--
