Re: Spamitarium changes

Jonathan Kamens <[email protected]> Mon, 18 Sep 2017 16:53:18 -0400
Newsgroups gmane.mail.bogofilter.devel
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------1A1FB06E89434E8289702D64
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

New version attached with these changes:

  * Bump version number to 0.5.2.
  * Refactor the header field output code to be cleaner and warn about
    empty fields.
  * Fix two header field references which could cause empty header
    hashes to be inserted.

Thanks,

Jonathan Kamens

On 9/12/17 2:25 AM, Matthias Andree wrote:
> Hi Jonathan,
>
> I have committed the version with two changes:
> - I have bumped the version to 0.5.1
> - I have added your authorship to the AUTHORS section again (Feel free
> to edit the range of years, it's 2004 - 2009 for Tom's parts of the
> code, and ...-2017 for yours).
>
> Please grab the changes from here (a web browser is fine if you don't
> want to use SVN) and include them in the next submission.
> https://svn.code.sf.net/p/bogofilter/code/trunk/bogofilter/contrib/
>
> Thanks again!
>
> Regards,
> Matthias
>
> _______________________________________________
> bogofilter-dev mailing list
> [email protected]
> https://www.bogofilter.org/mailman/listinfo/bogofilter-dev
>

--------------1A1FB06E89434E8289702D64
Content-Type: text/plain; charset=UTF-8;
 name="spamitarium.pl.txt"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="spamitarium.pl.txt"

IyEvdXNyL2Jpbi9wZXJsIC1UdwpyZXF1aXJlIDUuMDA2XzAwMTsKdXNlIHN0cmljdDsKCiMg
VGhpcyBpcyBhIGZvcmsgb2YgVG9tIEFuZGVyc29uJ3Mgc3BhbWl0YXJpdW0ucGwgYnkgSm9u
YXRoYW4gS2FtZW5zCiMgPGppa0BrYW1lbnMudXM+LiBUaGUgY2hhbmdlcyBoZXJlIGhhdmUg
YmVlbiBzdWJtaXR0ZWQgYmFjayB0byBUb20gQW5kZXJzb24KIyBmb3IgaW5jb3Jwb3JhdGlv
biBpbnRvIGhpcyBtYXN0ZXIgdmVyc2lvbi4gSW4gdGhlIG1lYW50aW1lLCB5b3UgbWF5IHdp
c2ggdG8KIyB1c2UgdGhpcyB2ZXJzaW9uIGluc3RlYWQuIEhlcmUgYXJlIHRoZSBjaGFuZ2Vz
IGluIGl0OgojCiMgKiBDb21tYW5kLWxpbmUgcGFyc2luZyBoYXMgYmVlbiB1cGRhdGVkIHRv
IHVzZSB0aGUgc3RhbmRhcmQgUGVybCBHZXRvcHQ6OkxvbmcKIyAgIHN5bnRheCwgd2hpbGUg
Y29udGludWluZyB0byBzdXBwb3J0IHRoZSAiYnVuZGxlZCIgb3B0aW9ucyBzeW50YXggc3Vw
cG9ydGVkCiMgICBieSBwcmV2aW91cyB2ZXJzaW9ucyBvZiB0aGUgc2NyaXB0LgojICogT3B0
aW9ucyBoYXZlIGJlZW4gYWRkZWQgdG8gc3BlY2lmeSBpbmZvcm1hdGlvbiB0aGF0IG1heSBi
ZSBtaXNzaW5nIGZyb20gdGhlCiMgICBtZXNzYWdlIGhlYWRlciwgc3BlY2lmaWNhbGx5IGZv
ciB3aGVuIHNwYW1pdGFyaXVtIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGEKIyAgIE1pbHRlciBh
bmQgdGhlcmVmb3JlIHRoZSBtZXNzYWdlIGRvZXMgbm90IHlldCBoYXZlIHRoZSBSZXR1cm4t
UGF0aCBvciBsb2NhbAojICAgUmVjZWl2ZWQgbGluZXMgdGhhdCB3aWxsIGJlIGluc2VydGVk
IGJ5IHRoZSBNVEEgYmVmb3JlIGZpbmFsIGRlbGl2ZXJ5LiBTZWUKIyAgIHRoZSBkb2N1bWVu
dGF0aW9uIGJlbG93IGZvciB0aGUgb3B0aW9ucyAtLXJldHVybi1wYXRoLCAtLW5vLWxvY2Fs
LXJlY2VpdmVkLAojICAgLS1yZW1vdGUtaXAsIC0tcmVtb3RlLW5hbWUsIC0taGVsbywgLS1s
b2NhbC1pcCwgLS1sb2NhbC1uYW1lLCAtLXJjcHQsIGFuZAojICAgLS1hZGQtbG9jYWwtcmVj
ZWl2ZWQuCiMgKiBBIC0tdGltZW91dCBvcHRpb24gaGFzIGJlZW4gYWRkZWQgZm9yIHNwZWNp
ZnlpbmcgaG93IGxvbmcgdGhlIHNjcmlwdCBzaG91bGQKIyAgIHdhaXQgZm9yIGlucHV0LCBv
ciAwIHRvIGRpc2FibGUgdGhlIHRpbWVvdXQgY29tcGxldGVseS4gVGhpcyBpcyBwcmltYXJp
bHkKIyAgIHVzZWZ1bCBmb3IgZGVidWdnaW5nIHRoZSBzY3JpcHQuCiMgKiBUaGUgaGVhZGVy
IHBhcnNpbmcgY29kZSBoYXMgYmVlbiByZWZhY3RvcmVkIHRvIGJlIGNsZWFuZXIgYW5kIG1v
cmUgcm9idXN0LgojICogSW4gcGFydGljdWxhciwgZW1wdHkgaGVhZGVyIGZpZWxkcyBhcmUg
bm93IGhhbmRsZWQgY29ycmVjdGx5IChwcmV2aW91c2x5LAojICAgdGhleSB3ZXJlIGFwcGVu
ZGVkIHRvIHRoZSBwcmV2aW91cyBoZWFkZXIgZmllbGQhKS4KIyAqIEVtcHR5IGhlYWRlciBm
aWVsZHMgYXJlIG5vdyBpbmNsdWRlZCBpbiB0aGUgb3V0cHV0LCBmb3IgbW9yZSBhY2N1cmF0
ZQojICAgYm9nb2ZpbHRlcidpbmcuCiMgKiBUeXBvcyBhbmQgc3VjaCBoYXZlIGJlZW4gY2xl
YW5lZCB1cCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4KIyAqIEEgZGF0ZS1wYXJzaW5nIGJ1ZyB3
aGljaCB3YXMgY2F1c2luZyB0aGUgdGltZSB6b25lIHRvIGJlIGlnbm9yZWQsIHRodXMKIyAg
IGNhdXNpbmcgdGhlIFgtRGF0ZS1DaGVjayBoZWFkZXIgdG8gcmVwb3J0IGFuIGluYWNjdXJh
dGUgZGVsdGEsIGhhcyBiZWVuCiMgICBmaXhlZC4KIyAqIEEgYnVnIHdoaWNoIGNvdWxkIGNh
dXNlIHNwYW1pdGFyaXVtIHRvIGNyYXNoIHVwb24gZW5jb3VudGVyaW5nIGEgZmFyIGludG8K
IyAgIHRoZSBmdXR1cmUgZGF0ZSBpbiB0aGUgbWVzc2FnZSBoZWFkZXIgaGFzIGJlZW4gZml4
ZWQuCiMgKiBBIGJ1ZyB3aGljaCB3YXMgY2F1c2luZyBzb21lIGRvbWFpbiBuYW1lcyB0byBi
ZSB0cnVuY2F0ZWQgKGUuZy4sCiMgICAib210YTAxLW1kcC53ZXN0Y2hlc3Rlci5wYS5iby5j
b21jYXN0Lm5ldCIgYmVjYW1lICJvbXRhMDEtbWRwLndlc3QiKSBoYXMKIyAgIGJlZW4gZml4
ZWQuCiMgKiBBIGNvdXBsZSBvZiBQZXJsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgd2Fybmlu
Z3MgaGF2ZSBiZWVuIGZpeGVkLgojICogTWFpbDo6U1BGIGlzIHVzZWQgbm93IGluc3RlYWQg
b2YgTWFpbDo6U1BGOjpRdWVyeSwgZm9yIElQdjYgc3VwcG9ydC4KIyAqIENvZGUgaGFzIGJl
ZW4gYWRkZWQgdG8gd29yayBhcm91bmQgdGhlIGZhY3QgdGhhdCBzb21lIGVtYWlscyBnZW5l
cmF0ZWQgYnkKIyAgIENvbnN0YW50IENvbnRhY3QgaGF2ZSBDUiByYXRoZXIgdGhhbiBDUkxG
IGF0IHRoZSBlbmQgb2YgdGhlaXIgRGF0ZTogaGVhZGVyCiMgICBsaW5lcyAodGhpcyBpcyBh
IHZlcnkgc3BlY2lmaWMgd29ya2Fyb3VuZCBmb3IgYSB2ZXJ5IHNwZWNpZmljIHByb2JsZW0K
IyAgIGJlY2F1c2UgdGVjaG5pY2FsbHkgdGhlIHdvcmthcm91bmQgaXMgYSB2aW9sYXRpb24g
b2YgdGhlIFNNVFAgUkZDLCB0aG91Z2gKIyAgIG5vYm9keSBlbHNlIHNlZW1zIHRvIGNhcmUg
YWJvdXQgdGhhdC4gOi0vKS4KCj1oZWFkMSBOQU1FCgpTcGFtaXRhcml1bSAtIGV2YWx1YXRl
cyBhbmQgcmVwYWlycyB0aGUgc2FuaXR5IG9mIGVtYWlsIGhlYWRlcnMuLi4KCj1jdXQKCm15
ICR2ZXJzaW9uID0gIjAuNS4yIjsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIwojIyMjIyMjIyMjIyMjIyMgQ29weWxlZnQgTm90aWNlICMjIyMj
IyMjIyMjIyMjIyMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCgojIENvcHlyaWdodCDCqSAyMDA0IE9yZGVyIGFtaWQgQ2hhb3MsIEluYy4KIyBB
dXRob3I6IFRvbSBBbmRlcnNvbiAKIyBuZW8rc3BhbWl0YXJpdW1Ab3JkZXJhbWlkY2hhb3Mu
Y29tCiMgCiMgVGhpcyBwcm9ncmFtIGlzIG9wZW4tc291cmNlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCAKIyBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIAojIExpY2Vuc2UsIHYyLCBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAKIyBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZiAKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIAojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCiMKIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgR2VuZXJhbCBQdWJsaWMgCiMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsg
aWYgbm90LCB3cml0ZSB0bzogCiMKIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gCiMgNTkg
VGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAKIyBCb3N0b24sIE1BIDAyMTExLTEzMDcgIFVTQQoj
CiMgaHR0cDovL3d3dy5nbnUub3JnLwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIwojIyMjIyMjIyMjIyMjIyMjIyBEb2N1bWVudGF0aW9uICMj
IyMjIyMjIyMjIyMjIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKCiMgdXNlICJwZXJsZG9jIHNwYW1pdGFyaXVtIiBvciAic3BhbWl0YXJp
dW0gLWgiIHRvIHJlYWQgdGhpcwoKPWhlYWQxIFNZTk9QU0lTCgo9aGVhZDIgQ29tbWFuZCBs
aW5lIHVzYWdlOgoKQjxzcGFtaXRhcml1bT4gW0k8b3B0aW9ucz5dIDwgW0k8cmZjODIyX2Vt
YWlsPl0KCj1oZWFkMiBQcm9jbWFpbCB1c2FnZSAocmVjb21tZW5kZWQpOgoKQWRkIHRvIHlv
dXIgLnByb2NtYWlscmMgdGhlIGZvbGxvd2luZyByZWNpcGU6CgogIDowCiAgewogICAgICAg
IDowIGZodwogICAgICAgIHwgc3BhbWl0YXJpdW0gLXNyZWFkeHRwCiAgCiAgICAgICAgIyBm
aWx0ZXIgdGhyb3VnaCBib2dvZmlsdGVyLCB0YWdnaW5nIGFzIHNwYW0gCgkjIG9yIG5vdCBh
bmQgdXBkYXRpbmcgdGhlIHdvcmQgbGlzdHMKICAgICAgICA6MCBmdwogICAgICAgIHwgYm9n
b2ZpbHRlciAtdWVwCgogICAgICAgICMgYWRkIGJhY2sgdGhlICJGcm9tIiBoZWFkZXIgZm9y
IHByb3BlciBkZWxpdmVyeQogICAgICAgIDowIGZodwogICAgICAgIHwgZm9ybWFpbCAtSSAi
RnJvbSAiIC1hICJGcm9tICIKICB9Cgo9aGVhZDIgQ29tbWFuZCBsaW5lIG9wdGlvbnM6Cgo9
b3ZlciA0Cgo9aXRlbSBCPC1oPgoKZGlzcGxheSB0aGlzIGhlbHAgZmlsZQoKPWl0ZW0gQjwt
cz4gW0k8cGVybWl0dGVkX2hlYWRlcnM+XQoKQWxsb3cgc3RhbmRhcmQgZmllbGRzIG9ubHkg
KFJGQyA4MjIvMjgyMi8xMDQ5LzEzNDEvMTUyMS8yMTgzLzE4NjQpIC4uLgphbGwgb3RoZXJz
IGFyZSBzdHJpcHBlZCBmcm9tIHRoZSBlbWFpbC4gIFRvIGV4Y2x1ZGUgc29tZSBoZWFkZXJz
IGZyb20Kc3RyaXBwaW5nLCBzcGVjaWZ5IGEgY29tbWEtc2VwYXJhdGVkIGxpc3QgYXMgYW4g
YXJndW1lbnQgdG8gdGhpcwpvcHRpb24uCgo9aXRlbSBCPC1yPgoKaW5zZXJ0IG5ldyByZWNl
aXZlZCBsaW5lIGNvbnRhaW5pbmcgdmVyaWZpZWQgcmVjZWl2ZWQtbGluZSB0b2tlbnMKCj1p
dGVtIEI8LWU+CgppbmNsdWRlIGhlbG8gc3RyaW5nIGluIHJlY2VpdmVkIGxpbmUKCj1pdGVt
IEI8LWQ+CgphbGxvdyBETlMgbG9va3VwcyAoZm9yd2FyZCBhbmQgcmV2ZXJzZSkgdG8gaGVs
cCBmaWxsIGluIGFsbCAKbmVjZXNzYXJ5IHJlY2VpdmVkIGZpZWxkcwoKPWl0ZW0gQjwtZj4K
CmZvcmNlIHJETlMgbG9va3VwcyBldmVuIHdoZW4gcHJvdmlkZWQgYWxyZWFkeSBieSB0aGUg
TVRBCgo9aXRlbSBCPC1hPgoKcGVyZm9ybSBBU04gbG9va3VwcyBhbmQgaW5jbHVkZSBpbiBy
ZWNlaXZlZCBsaW5lcwoKPWl0ZW0gQjwtcD4KCnBlcmZvcm0gU1BGIGxvb2t1cHMgYW5kIGlu
Y2x1ZGUgaW4gcmVjZWl2ZWQgbGluZXMKCj1pdGVtIEI8LXg+CgppbmNsdWRlIGN1c3RvbSB4
LWhlYWRlcnMgZm9yIGFkZGl0aW9uYWwgaGVhZGVyIHZhbGlkYXRpb25zOgoKPWl0ZW0gQjwt
dD4KCnZhbGlkYXRlIHRoYXQgdGhlIGRhdGUgaGVhZGVyIGlzIHdpdGhpbiBjbG9zZSBwcm94
aW1pdHkgdG8gdGhlIApyZWNlaXZlZCBkYXRlIChzZWUgJGRhdGVfbGltaXQgZ2xvYmFsIHZh
cmlhYmxlIHRvIGNvbmZpZ3VyZSkKCj1pdGVtIEI8LXc+CgpwYXJzZSBhbmQgZGlzcGxheSB0
aGUgYm9keSBvZiB0aGUgZW1haWwgaW4gYWRkaXRpb24gdG8gdGhlIGhlYWRlcnMKCj1pdGVt
IEI8LWI+CgpkaXNwbGF5IGJlbmNobWFya2luZyBpbmZvCgo9aXRlbSBCPC0tcmV0dXJuLXBh
dGg+IEk8YWRkcj4KClNwZWNpZnkgdGhlIHNlbmRlciBvZiB0aGUgZW1haWwgZm9yIFNQRiBs
b29rdXBzLCBvdmVycmlkaW5nIHRoZQoiUmV0dXJuLVBhdGgiIGZpZWxkLgoKPWl0ZW0gQjwt
LW5vLWxvY2FsLXJlY2VpdmVkPgoKVGVsbCBzcGFtaXRhcml1bSB0aGF0IHRoZXJlIGlzIG5v
IFJlY2VpdmVkIGxpbmUgaW4gdGhlIG1lc3NhZ2UgZnJvbQp0aGUgbG9jYWwgbWFpbGVyLCBl
LmcuLCBiZWNhdXNlIHNwYW1pdGFyaXVtIGlzIGJlaW5nIGNhbGxlZCBmcm9tCmluc2lkZSBh
IE1pbHRlci4KClRoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgb25seSB1c2VkIHdoZW4gQjwt
LW5vLWxvY2FsLXJlY2VpdmVkPiBpcwpzcGVjaWZpZWQuCgo9b3ZlciA0Cgo9aXRlbSBCPC0t
cmVtb3RlLWlwPiBJPGlwLWFkZHJlc3M+CgpTcGVjaWZ5IHRoZSBJUCBhZGRyZXNzIG9mIHRo
ZSByZW1vdGUgc2VydmVyIHNlbmRpbmcgdGhlIGVtYWlsLgoKPWl0ZW0gQjwtLXJlbW90ZS1u
YW1lPiBJPGlwLWFkZHJlc3M+CgpTcGVjaWZ5IHRoZSBob3N0IG5hbWUgb2YgdGhlIHJlbW90
ZSBzZXJ2ZXIgc2VuZGluZyB0aGUgZW1haWwsIGFzCmRldGVybWluZWQgYnkgYSByZXZlcnNl
IEROUyBsb29rdXAgb2YgaXRzIElQIGFkZHJlc3MuCgo9aXRlbSBCPC0taGVsbz4gSTxob3N0
LW5hbWU+CgpTcGVjaWZ5IHRoZSBob3N0IG5hbWUgc2VudCBieSB0aGUgcmVtb3RlIHNlcnZl
ciBpbiB0aGUgU01UUCBIRUxPIChvcgpFSExPKSBjb21tYW5kLgoKPWl0ZW0gQjwtLWxvY2Fs
LWlwPiBJPGlwLWFkZHJlc3M+CgpTcGVjaWZ5IHRoZSBJUCBhZGRyZXNzIG9mIHRoZSBzZXJ2
ZXIgcmVjZWl2aW5nIHRoZSBlbWFpbC4KCj1pdGVtIEI8LS1sb2NhbC1uYW1lPiBJPGhvc3Qt
bmFtZT4KClNwZWNpZnkgdGhlIGhvc3QgbmFtZSBvZiB0aGUgc2VydmVyIHJlY2VpdmluZyB0
aGUgZW1haWwuCgo9aXRlbSBCPC0tcmNwdD4gSTxlbWFpbC1hZGRyZXNzPgoKU3BlY2lmeSB0
aGUgZW52ZWxvcGUgYWRkcmVzcyBvZiB0aGUgcmVjaXBpZW50IG9mIHRoZSBlbWFpbC4KCj1p
dGVtIEI8LS1hZGQtbG9jYWwtcmVjZWl2ZWQ+CgpJbmRpY2F0ZSB0aGF0IHNwYW1pdGFyaXVt
IHNob3VsZCBhZGQgYW4gYXV0by1nZW5lcmF0ZWQgbG9jYWwgUmVjZWl2ZWQKbGluZS4KCj1i
YWNrCgo9aXRlbSBCPC0tdGltZW91dD4gSTxzZWNvbmRzPgoKSG93IGxvbmcgdG8gd2FpdCBm
b3IgaW5wdXQgYmVmb3JlIGdpdmluZyB1cC4gU3BlY2lmeSAwIHRvIGRpc2FibGUgdGhlIHRp
bWVvdXQKY29tcGxldGVseS4gUHJpbWFyaWx5IGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuCgo9
YmFjawoKCj1oZWFkMiBVc2VyLWRlZmluZWQgaGVhZGVyIGZpZWxkIGxpc3Q6CgpJZiB1c2lu
ZyB0aGUgQjxzPiBvcHRpb24sIHlvdSBtYXkgd2FudCB0byBhbGxvdyBjZXJ0YWluIGhlYWRl
ciBmaWVsZHMKb3RoZXIgdGhhbiB0aG9zZSBzcGVjaWZpZWQgYnkgUkZDcy4gIFRoZXNlIG1p
Z2h0IGluY2x1ZGUgZmllbGRzIHNldApieSB5b3VyIG1haWxpbmcgbGlzdCBvciBwcm94eSBv
ciBvdGhlciBjdXN0b20gYXBwbGljYXRpb24uICBZb3UgbWF5CnNwZWNpZnkgc3VjaCBhIGxp
c3Qgb2YgZmllbGRzIGJ5IGFwcGVuZGluZyB0aGVtIGNvbW1hLWRlbGltaXRlZCBhdAp0aGUg
ZW5kIG9mIHlvdXIgY29tbWFuZCBsaW5lLiAgRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50ZWQg
dGhlIApJPGxpc3QtaWQ+IGFuZCBJPGVuY3J5cHRlZD4gZmllbGRzIHBhc3NlZCB0aHJvdWdo
LCB5b3Ugd291bGQgY2hhbmdlCnlvdXIgcHJvY21haWwgcmVjaXBlIGFzIGZvbGxvd3M6Cgog
IHwgc3BhbWl0YXJpdW0gLXJlYWR4dHAgLXMgbGlzdC1pZCxlbmNyeXB0ZWQKCgo9aGVhZDEg
UkVRVUlSRVMKCj1vdmVyIDQKCj1pdGVtICoKClBlcmwgNS42LjEKTmV0OjpETlM6OlJlc29s
dmVyCk1haWw6OlNQRgpOZXQ6OkNJRFIKREJfRmlsZQpQT1NJWApHZXRvcHQ6OkxvbmcKCj1i
YWNrCgoKPWhlYWQxIERFU0NSSVBUSU9OCgpTcGFtaXRhcml1bSBoZWxwcyB0byByZW1vdmUg
dW5uZWNlc3Nhcnkgbm9pc2UgZnJvbSBlbWFpbCBoZWFkZXJzIGFuZAp0byBoaWdobGlnaHQg
anVzdCB0aGUgcG9ydGlvbnMgd2hpY2ggY29udHJpYnV0ZSBwb3NpdGl2ZWx5IHRvIHNwYW0K
ZmlsdGVyaW5nIHVzaW5nIHN0YXRpc3RpY2FsIG1ldGhvZHMuCgpUaGUgb25seSBub24tc3Bv
b2ZhYmxlLCAtZm9yZ2FibGUsIG9yIC10d2Vha2FibGUgcGFydCBvZgphbiBlbWFpbCBpcyB0
aGUgcmVjZWl2ZWQgbGluZSwgYXMgaXQgaXMgZ2VuZXJhdGVkIGJ5IHRoZSByZWNlaXZpbmcK
bWFpbCBzZXJ2ZXIgd2hpY2ggb3VnaHQgdG8gaGF2ZSBubyByZWFzb24gdG8gbXVuZ2UgaXQu
ICBFdmVyeSBvdGhlcgpwYXJ0IG9mIGFuIGVtYWlsIGNhbiBiZSBpbmZsdWVuY2VkIGRpcmVj
dGx5IGJ5IHRoZSBzZW5kZXIuICBSZWNlaXZlZApsaW5lIHRva2Vucywgd2hlbiB2ZXJpZmll
ZCBhdXRoZW50aWMsIGFyZSB0aGVyZWZvcmUgaGlnaGx5IGluZGljYXRpdmUKb2Ygd2hldGhl
ciBvciBub3QgYSBnaXZlbiBtZXNzYWdlIGlzIHNwYW0uICAKClNwYW1pdGFyaXVtIHJlYWRz
IHRoZSByZWNlaXZlZCBoZWFkZXJzLCBkZXRlcm1pbmVzIHdoaWNoIG9uZXMgYXJlCmF1dGhl
bnRpYywgYW5kIHRoZW4gcHJpbnRzIHRva2VucyBpbnRvIHRoZSBoZWFkZXIgd2hpY2ggbWF5
IGJlIGtleWVkCm9uIGJ5IHN0YXRpc3RpY2FsIGZpbHRlcnMuICBUaGlzIHdvcmtzIG11Y2gg
bGlrZSBhIGJsYWNrbGlzdC93aGl0ZWxpc3QsIApidXQgd2hlbiBjb3VwbGVkIHdpdGggYSBz
dGF0aXN0aWNhbCBmaWx0ZXIgc3VjaCBhcyBib2dvZmlsdGVyLCB0aGVzZSAKbGlzdHMgYXJl
IGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGFuZCByZXF1aXJlIG5vIG1hbnVhbCBtYWludGVu
YW5jZSAKb3RoZXIgdGhhbiBub3JtYWwgdHJhaW5pbmcuCgpNb3Jlb3ZlciwgaGVhZGVycyB3
aGljaCBkbyBub3QgZGlyZWN0bHkgaW5mbHVlbmNlIHRoZSBlbWFpbCBpbiBhbnkKZnVuY3Rp
b25hbCB3YXksIG5vciBhcmUgdmlzaWJsZSB0byB0aGUgZW5kLXVzZXIgaW4gYSBzdGFuZGFy
ZApncmFwaGljYWwgTVVBLCBhcmUgaGlnaGx5IGxpa2VseSB0byBjb250YWluIGluZm9ybWF0
aW9uIHdoaWNoIApzcGFtbWVycyB0aGluayB3aWxsIGRldHJhY3QgZnJvbSBub3JtYWwgc3Rh
dGlzdGljYWwgZmlsdGVyaW5nLiBJdAppcyB0aGVyZWZvcmUgZGVzaXJlYWJsZSB0byByZW1v
dmUgdGhlc2UgZWxlbWVudHMsIHNwZWNpZmljYWxseSAKWC1oZWFkZXJzLCBwcmlvciB0byBm
aWx0ZXJpbmcuICBTcGFtaXRhcml1bSByZW1vdmVzIGFsbCBpbnZpc2libGUsCm5vbi1mdW5j
dGlvbmFsIGhlYWRlciBsaW5lcy4KClNwYW1pdGFyaXVtIGFsc28gbG9va3MgdXAgYW55IElQ
IGFkZHJlc3NlcyBvciByRE5TIGFkZHJlc3Nlcwp3aGljaCBhcmUgbm90IHByb3ZpZGVkIGlu
IG9yZGVyIHRvIHByb3ZpZGUgdGhlIG1heGltdW0gdG9rZW5zIG9uCndoaWNoIHRvIGZpbHRl
ci4gIE1vcmVvdmVyLCBpdCBsb29rcyB1cCB0aGUgYXV0b25vbW91cyBzeXN0ZW0gbnVtYmVy
CihBU04pIGFzc29jaWF0ZWQgd2l0aCBlYWNoICJmcm9tIiBhZGRyZXNzIGluIG9yZGVyIHRv
IHByb3ZpZGUKYSBzbWFsbCBzZXQgb2YgdG9rZW5zIHJlcHJlc2VudGluZyB0aGUgdmFyaW91
cyBtYWpvciBzdWJuZXRzIG9mIHRoZQppbnRlcm5ldC4gIEFuZCBpdCBjaGVja3MgdGhlIFNl
bmRlciBQb2xpY3kgRnJhbWV3b3JrIChTUEYpIHJlY29yZHMgb2YKdGhlIHNlbmRlciB0byBl
bnN1cmUgdGhhdCB0aGUgZ2l2ZW4gTVggaGFzIHBlcm1pc3Npb24gdG8gc2VuZCBvbgp0aGVp
ciBiZWhhbGYuCgpGaW5hbGx5LCBTcGFtaXRhcml1bSBhc3Nlc3NlcyB0aGUgaGVhZGVycyBm
b3IgbWlzc2luZyByZXF1aXJlZApoZWFkZXIgbGluZXMsIGluc2VydGluZyBrZXlhYmxlIHRv
a2VucyBvciBzdXBwbHlpbmcgdGhlIG1pc3NpbmcKaW5mb3JtYXRpb24uICBBbmQgaXQgY29t
cGFyZXMgdGhlIGRhdGUgZmllbGRzIHRvIGRldGVybWluZSBpZiB0aGUKZW1haWwgaGFzIGJl
ZW4gcHJlLSBvciBwb3N0LWRhdGVkIGJ5IGEgbGFyZ2UgbWFyZ2luIGluIG9yZGVyIHRvCmlu
Zmx1ZW5jZSB3aGVyZSBpdCBhcHBlYXJzIGluIHlvdXIgbWFpbCBjbGllbnQgYW5kIGluc2Vy
dHMgYW4KeC1oZWFkZXIgd2l0aCBrZXlhYmxlIHJhbmdlIHRva2VucyB0byBjb21wZW5zYXRl
IGZvciB0aGlzLgoKVG9nZXRoZXIsIGFsbCBvZiB0aGVzZSB0ZWNobmlxdWVzIGhlbHAgdG8g
cmVtb3ZlIHRoZSBub2lzZSB3aGljaAphY2NvbXBhbmllcywgZWl0aGVyIGluY2lkZW50YWxs
eSBvciBtYWxpY2lvdXNseSwgbW9zdCBlbWFpbCBtZXNzYWdlcy4KVGhpcyByZXN1bHRzIGlu
IGEgY2xlYW5lciBoZWFkZXIgY29uc2lzdGluZyBvZiBtb3JlIGVhc2lseSBzY29yZWQKdG9r
ZW5zLiAgVGhpcyBwZXJtaXRzIGJldHRlciBhY2N1cmFjeSB3aXRoIHN0YXRpc3RpY2FsIGZp
bHRlcnMgYXMKd2VsbCBhcyBxdWlja2VyIHByb2Nlc3NpbmcgYW5kIGEgc21hbGxlciB0b2tl
biBkYXRhYmFzZS4KCgo9aGVhZDEgRkFRCgo9aGVhZDIgQXNrIGEgcXVlc3Rpb24KClllIG1h
eSByZWNlaXZlIGFuIGFuc3dlciBoZXJlIGlmIGl0IGlzIGFza2VkIGZyZXF1ZW50bHkKCgo9
aGVhZDEgQlVHUwoKPW92ZXIgNAoKPWl0ZW0gKgoKdGltZWdtKCRzZWMsJG1pbiwkaG91ciwk
ZGF5LCRtb24sJHllYXIpIGFib3J0cyBpZiBQZXJsJ3MgdGltZV90IGlzIDMyIApiaXRzIGxh
cmdlIGFuZCB0aGUgeWVhciBpcyB0b28gaGlnaCAoPjIwMzgpLgoKPWJhY2sKCj1oZWFkMSBU
T0RPCgo9b3ZlciA0Cgo9aXRlbSAqCgpTdWdnZXN0aW9ucyB3ZWxjb21lLgoKPWJhY2sKCj1o
ZWFkMSBTRUUgQUxTTwoKPW92ZXIgNAoKPWl0ZW0gKgoKTDxwcm9jbWFpbD4KCj1pdGVtICoK
Ckw8Ym9nb2ZpbHRlcj4KCj1iYWNrCgoKPWhlYWQxIEFVVEhPUgoKIFRvbSBBbmRlcnNvbiA8
bmVvK3NwYW1pdGFyaXVtQG9yZGVyYW1pZGNoYW9zLmNvbT4KIEpvbmF0aGFuIEthbWVucyA8
amlrQGthbWVucy51cz4KCj1jdXQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKIyMjIyMjIyMjIyMjIyMjIFVzZXIgVmFyaWFibGVzICAjIyMj
IyMjIyMjIyMjIyMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCgojIHBsZWFzZSBlZGl0IGFjY29yZGluZyB0byB5b3VyIHNldHVwCgojIGRl
ZmF1bHQgcGF0aApvdXIgJHBhdGggPSAiL2JpbjovdXNyL2JpbjovdXNyL2xvY2FsL2JpbiI7
CgojIGRlZmF1bHQgc2hlbGwKb3VyICRzaGVsbCA9ICIvYmluL3NoIjsKCiMgc2Vjb25kcyBi
ZWZvcmUgd2UgYmFpbCB3YWl0aW5nIG9uIGlucHV0Cm91ciAkdGltZW91dCA9IDM7CgojIHNl
cnZlciB0byB1c2UgZm9yIEFTTiBsb29rdXBzCm91ciAkYXNuX3NlcnZlciA9ICJhc24ucm91
dGV2aWV3cy5vcmciOwoKIyBXaGl0ZWxpc3QgYW55IElQIGFkZHJlc3NlcyBvciByYW5nZXMg
ZnJvbSBTUEYgbG9va3VwcwpvdXIgQHdoaXRlbGlzdCA9ICgiMTI3LjAuMC4xIiwiMTkyLjE2
OC4wLjEtMTkyLjE2OC4wLjI1NSIpOwoKIyBJZiB5b3Ugd2FudCB0byB3aGl0ZWxpc3QgYW55
IGFkZHJlc3NlcyB3aGljaCBoYXZlIGF1dGhlbnRpY2F0ZWQKIyB2aWEgcG9wcmVsYXlkIChp
LmUuIHJlbW90ZSB3b3Jrc3RhdGlvbnMgb2YgdXNlcnMgb24geW91ciBzZXJ2ZXIpCiMgc2V0
ICRkYmZpbGUgdG8geW91ciBwb3BpcC5kYiBsb2NhdGlvbiwgZWxzZSBzZXQgaXQgdG8gdW5k
ZWYKI291ciAkZGJmaWxlID0gIi9ldGMvbWFpbC9wb3BpcC5kYiI7Cm91ciAkZGJmaWxlID0g
dW5kZWY7CgojIGRpc3RhbmNlIGluIHNlY29uZHMgZnJvbSByaWdodCBub3cgdG8gY29uc2lk
ZXIgYSByZWFzb25hYmxlIChub24tc3BhbSkgcmFuZ2UgdG8gZGF0ZSBhbiBlbWFpbApvdXIg
JGRhdGVfbGltaXQgPSA2MCo2MCoyNCoyOyAgIyAyIGRheXMKCiMgRU1BSUwgSEVBREVSIEZJ
RUxEUwojCiMgU2VlIFJGQyAyMDc2IC8gIkNvbW1vbiBJbnRlcm5ldCBNZXNzYWdlIEhlYWRl
ciBGaWVsZHMiIGZvciBhIHN5bm9wc2lzIG9mIGNvbW1vbiBtYWlsIGhlYWRlcnMKCgkjIFNQ
RUNJRklFRCBGSUVMRFMgLS0gYWxsIG9mIHRoZSBmaWVsZHMgc3BlY2lmaWVkIGluIFJGQyA4
MjIvMjgyMiwgY2FzZS1pbnNlbnNpdGl2ZSwgaW4gdGhlIHN1Z2dlc3RlZCBvcmRlcgoJb3Vy
ICRzcGVjX2ZpZWxkcyA9ICJyZXR1cm4tcGF0aCxyZWNlaXZlZCxyZXNlbnQtZGF0ZSxyZXNl
bnQtZnJvbSxyZXNlbnQtc2VuZGVyLHJlc2VudC1yZXBseS10bywiLgoJIAkJICAgInJlc2Vu
dC10byxyZXNlbnQtY2MscmVzZW50LWJjYyxyZXNlbnQtbWVzc2FnZS1pZCxkYXRlLGZyb20s
c2VuZGVyLHJlcGx5LXRvLCIuCgkJCSAgICJ0byxjYyxiY2MsbWVzc2FnZS1pZCxpbi1yZXBs
eS10byxyZWZlcmVuY2VzLHN1YmplY3QsY29tbWVudHMsa2V5d29yZHMsZW5jcnlwdGVkIjsK
CgkjIE1JTUUgaGVhZGVyIGZpZWxkcyAoUkZDIDEwNDkvMTM0MS8xNTIxLzIxODMpCgkkc3Bl
Y19maWVsZHMgLj0gIixtaW1lLXZlcnNpb24sY29udGVudC10eXBlLGNvbnRlbnQtdHJhbnNm
ZXItZW5jb2RpbmcsY29udGVudC1pZCxjb250ZW50LWRlc2NyaXB0aW9uLGNvbnRlbnQtZGlz
cG9zaXRpb24iOwoKCSMgc2VjdXJpdHkvY2hlY2tzdW0gKFJGQyAxODY0KQoJJHNwZWNfZmll
bGRzIC49ICIsY29udGVudC1tZDUiOwoKCSMgbWFpbGluZyBsaXN0IGhlYWRlcnMgKFJGQyAy
MzY5LzI5MTkpIG1heSBiZSBhZGRlZCBpZiB5b3UgbGlrZSwgYnV0IGZvciBub3cgSSdtIGNo
b29zaW5nIHRvIGxlYXZlIHRoZW0gb3V0CgkjJHNwZWNfZmllbGRzIC49ICIsbGlzdC1pZCxs
aXN0LWhlbHAsbGlzdC11bnN1YnNjcmliZSxsaXN0LXN1YnNjcmliZSxsaXN0LXBvc3QsbGlz
dC1vd25lcixsaXN0LWFyY2hpdmUiOwoKCSMgTUFTS0VEIEZJRUxEUyAtLSB1bm5lY2Vzc2Fy
eSBmaWVsZHMgb2Z0ZW4gdXNlZCBmb3Igc3BhbSB3aWxsIGJlIGV4cHVuZ2VkIGZyb20gdGhl
IHNwZWMgZmllbGRzIGxpc3QKCSMgKGlmIHlvdSBrbm93IG9mIGEgdmFsaWQsIG5lY2Vzc2Fy
eSB1c2UgZm9yIHRoZXNlLCBsZXQgbWUga25vdykKCW91ciAkbWFza2VkX2ZpZWxkcyA9ICJr
ZXl3b3Jkcyxjb21tZW50cyxlbmNyeXB0ZWQsY29udGVudC1pZCxjb250ZW50LWRlc2NyaXB0
aW9uIjsKCgkjIGNvbnRyb3ZlcnNpYWwgYW5kIG5vdCBzdHJpY3RseSBuZWNlc3Nhcnk6Cgkj
JG1hc2tlZF9maWVsZHMgLj0gICIscmVwbHktdG8iOwoKCSMgbWVzc2FnZS1pZCBmaWVsZHMg
YXJlIG9ubHkgbWFjaGluZS1yZWFkYWJsZSBhbmQgbm90IHZpc2libGUgdG8gbm9yIHJlYWRh
YmxlIGJ5IHRoZSByZWNpcGllbnQKCSMgaG93ZXZlciwgdGhleSBjYW4gYmUgdXNlZnVsIGlm
IHlvdXIgY2xpZW50IHByb2R1Y2VzIGRpc2N1c3Npb24gdGhyZWFkaW5nCgkjIHVuY29tbWVu
dCB0aGlzIGxpbmUgaWYgeW91IGRvbid0IGNhcmUgYWJvdXQgdGhyZWFkaW5nOgoJIyRtYXNr
ZWRfZmllbGRzIC49ICAiLG1lc3NhZ2UtaWQscmVzZW50LW1lc3NhZ2UtaWQsaW4tcmVwbHkt
dG8scmVmZXJlbmNlcyI7CgkKCSMgcmVzZW50IGZpZWxkcyBhcmUgc3RyaWN0bHkgaW5mb3Jt
YXRpb25hbCAoYW5kIG5vdCBnZW5lcmFsbHkgdXNlci12aXNpYmxlKSwgdGhlcmVmb3JlIGFs
bG93aW5nIHRoZW0gdGhyb3VnaCBpcyBvcHRpb25hbDoKCSMgTUlNRSBzcGVjaWZpZXMgYSBk
aWZmZXJlbnQgd2F5IG9mIHJlc2VuZGluZyBtZXNzYWdlcyB3aXRoIHRoZSAiTWVzc2FnZSIg
Y29udGVudC10eXBlLCBzbyB0aGVzZSBtYXkgYmUgY29uc2lkZXJlZCBkZXByZWNhdGVkOgoJ
JG1hc2tlZF9maWVsZHMgLj0gIixyZXNlbnQtZGF0ZSxyZXNlbnQtZnJvbSxyZXNlbnQtc2Vu
ZGVyLHJlc2VudC1yZXBseS10byxyZXNlbnQtdG8scmVzZW50LWNjLHJlc2VudC1iY2MscmVz
ZW50LW1lc3NhZ2UtaWQiOwoKCSMgVVNFUiBGSUVMRFMgLS0gVXNlciBmaWVsZHMgYXJlIHRo
b3NlIHRoYXQgYXJlIG5laXRoZXIgc3BlY2lmaWVkIG5vciBtYXNrZWQgdGhhdCB5b3Ugd2Fu
dCBwZXJtaXR0ZWQuIAoJIyBUaGVzZSBtYXkgaW5jbHVkZSBzcGVjaWFsIGZpZWxkcyBmb3Ig
eW91ciBwYXJ0aWN1bGFyIG1haWwgc2VydmVyLCBmaWx0ZXIsIG9yIG1haWwgdXNlciBhZ2Vu
dC4KCW91ciAkdXNlcl9maWVsZHMgPSAiIjsKCgkjIE5FVyBGSUVMRFMgLS0gTmV3IGN1c3Rv
bSB4LWhlYWRlcnMgYWRkZWQgYnkgU3BhbWl0YXJpdW0gKGl0IGlzIHJlY29tbWVuZCB0aGF0
IHlvdSBkb24ndCBjaGFuZ2UgdGhlc2UpLiAgCgkjIFRoZXNlIGFyZSBkaXNhYmxlZCB1bmxl
c3MgeW91IHBhc3MgdGhlICd4JyBvcHRpb24uCglvdXIgJG5ld19maWVsZHMgPSAieC1kYXRl
LWNoZWNrLHgtc3BmIjsKCgkjIFJFUVVJUkVEIEZJRUxEUyAtLSBBbnkgZmllbGRzIHRoYXQg
c2hvdWxkIHNob3cgdXAgaW4gYW4gZW1haWwgZXZlbiBpZiB0aGV5IGFyZSBub3Qgc2VudCAt
LSBpLmUuIGlmIHRoZSBsYWNrIG9mCgkjIHRoZXNlIGZpZWxkcyBtYXkgYmUgdXNlZnVsIGZv
ciB0aGUgZmlsdGVyLCBhIG5vLXJlcS1maWVsZCB0YWcgd2lsbCBiZSBhZGRlZC4gIFRoZSBv
bmx5ICpyZXF1aXJlZCogZmllbGRzIGFjY29yZGluZyB0byAKCSMgUkZDIDI4MjIgYXJlICJm
cm9tIiwgInNlbmRlciIsICJyZXBseS10byIsIGFuZCAiZGF0ZSIsIG90aGVycyBhcmUganVz
dCBzdWdnZXN0ZWQuICBIb3dldmVyLCAic2VuZGVyIiBhbmQgInJlcGx5LXRvIiBhcmUgCgkj
IGNvbW1vbmx5IG5vdCBzdXBwbGllZCwgYW5kIHNvIHNob3VsZCBwcm9iYWJseSBub3QgYmUg
aW4gdGhpcyBsaXN0LiAgT24gdGhlIG90aGVyIGhhbmQsICJzdWJqZWN0IiBhbmQgYSBmZXcg
b3RoZXJzIG1heSAKCSMgYmUgZGVzaXJlZCBpbiB0aGlzIGxpc3QuCglvdXIgJHJlcV9maWVs
ZHMgPSAicmVjZWl2ZWQsZnJvbSx0byxkYXRlLHN1YmplY3QiOwoKIyBvZiBjb3Vyc2UsIG1v
ZGlmeSB0aGUgZmlyc3QgbGluZSBvZiB0aGlzIGZpbGUsCiMgdGhlIHNoZWJhbmcsIHRvIHBv
aW50IHRvIHlvdXIgcGVybCBpbnRlcnByZXRlcgoKIyBkbyBub3QgZWRpdCBiZWxvdyB0aGlz
IGxpbmUgdW5sZXNzIHlvdSByZWFsbHkKIyBrbm93IHdoYXQgeW91J3JlIGRvaW5nCgojIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyMjIyMj
IyMjIyMjIEluY2x1ZGUgTGlicmFyaWVzICMjIyMjIyMjIyMjIyMjIyMKIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKdXNlIEJlbmNobWFyazsK
dXNlIERhdGE6OkR1bXBlcjsKdXNlIEZpbGU6OkJhc2VuYW1lOwp1c2UgVGltZTo6TG9jYWw7
CnVzZSBOZXQ6OkROUzo6UmVzb2x2ZXI7CnVzZSBNYWlsOjpTUEY7CnVzZSBOZXQ6OkNJRFI7
CnVzZSBEQl9GaWxlOwp1c2UgUE9TSVg7CnVzZSBHZXRvcHQ6Okxvbmc7CnVzZSBTeXM6OlN5
c2xvZzsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKIyMjIyMjIyMjIyMjIyMgRGVmYXVsdCBHbG9iYWxzICMjIyMjIyMjIyMjIyMjIyMjIwoj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgokPiA9
ICQ8OyAjIHNldCBlZmZlY3RpdmUgdXNlciBJRCB0byByZWFsIFVJRAokKSA9ICQoOyAjIHNl
dCBlZmZlY3RpdmUgZ3JvdXAgSUQgdG8gcmVhbCBHSUQKCiMgTWFrZSAlRU5WIHNhZmVyCmRl
bGV0ZSBARU5We3F3KElGUyBDRFBBVEggRU5WIEJBU0hfRU5WIFBBVEggU0hFTEwpfTsKCiMg
U2V0IHRoZSBlbnZpcm9ubWVudCBleHBsaWNpdGx5CiRFTlZ7UEFUSH0gPSAkcGF0aDsKJEVO
VntTSEVMTH0gPSAkc2hlbGw7CgojIG9wdGlvbnMgZmxhZ3MKb3VyICRvcHRpb25zID0gIiI7
Cm91ciAkcmV0dXJuX3BhdGggPSAiIjsKb3VyICRvcHRfcmVtb3RlX2lwID0gIiI7Cm91ciAk
b3B0X3JlbW90ZV9uYW1lID0gIiI7Cm91ciAkb3B0X2xvY2FsX2lwID0gIiI7Cm91ciAkb3B0
X2xvY2FsX25hbWUgPSAiIjsKb3VyICRvcHRfaGVsbyA9ICIiOwpvdXIgJG9wdF9yY3B0ID0g
IiI7Cm91ciAkbm9fbG9jYWxfcmVjZWl2ZWQgPSB1bmRlZjsKb3VyICRhZGRfbG9jYWxfcmVj
ZWl2ZWQgPSB1bmRlZjsKCiMgZGVmaW5lIHRoZSBjb250cm9sLWxpbmVmZWVkIHN5bnRheCBm
b3IgdGhpcyBzeXN0ZW0Kb3VyICRDUkxGID0gCiJcbiI7CiMoJF5PPX4vVk1TL2kpPyAJIlxu
IjogCQkjIFZNUwojKCJcdCIgbmUgIlwwMTEiKT8gCSJcclxuIjogCSMgRUJDRElDCiMJCQki
XDAxNVwwMTIiOyAJIyBvdGhlcnMgCgojIEROUyBxdWVyeSBvcHRpb25zCm91ciAkcmVzID0g
TmV0OjpETlM6OlJlc29sdmVyLT5uZXcoCgluYW1lc2VydmVycyAgICAgPT4gW3F3KDEyNy4w
LjAuMSldLAoJdWRwX3RpbWVvdXQgICAgID0+IDIsCglyZXRyeSAgICAgICAgICAgPT4gMSwK
CSNkZWJ1ZyAgICAgICAgICA9PiAxCik7CgojIGNvbnZlcnQgd2hpdGVsaXN0IGludG8gQ0lE
UiBub3RhdGlvbgpvdXIgQGNpZHJfbGlzdCA9ICgpOwpmb3JlYWNoIG15ICRJUCAoQHdoaXRl
bGlzdCkgewogIGlmIChub3QgZXZhbCB7QGNpZHJfbGlzdCA9IE5ldDo6Q0lEUjo6Y2lkcmFk
ZCAoJElQLCBAY2lkcl9saXN0KX0pIHsKICAgIGVycm9yKCJ3YXJuIiwiRXJyb3IgcHJvY2Vz
c2luZyB3aGl0ZWxpc3Q6IFwiJElQXCIgaXMgbm90IGEgdmFsaWQgSVAgYWRkcmVzcyBvciBy
YW5nZS4iKTsKICB9Cn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMgTWFpbiAjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
CgpvcGVubG9nKGJhc2VuYW1lICQwLCAnbWFpbCcpOwoKIyBwcm9jZXNzIG9wdGlvbnMKc3Vi
IHVzYWdlIHsKICAgIG15ICRzcGFtaXRhcml1bSA9ICQxIGlmICQwID1+IC9eKFtcd1wvLlwt
fl0qKSQvOwogICAgc3lzdGVtKCJwZXJsZG9jICRzcGFtaXRhcml1bSIpOwp9CgojIEFsbG93
IGJ1bmRsaW5nIG9mIGZpcnN0IHNldCBvZiBvcHRpb25zLCBhcyB3ZWxsIGFzIG9wdGlvbmFs
IGh5cGhlbi4KaWYgKEBBUkdWIGFuZCAkQVJHVlswXSA9fiAvXi0/W2hyZGZhc2Vid3h0cF0r
JC8pIHsKICAgIGlmICgkQVJHVlswXSA9fiBzL3MvLykgewoJc3BsaWNlKEBBUkdWLCAxLCAw
LCAiLXMiKTsKICAgIH0KICAgICRBUkdWWzBdID1+IHMvXihbXi1dKS8tJDEvOwogICAgR2V0
b3B0OjpMb25nOjpDb25maWd1cmUoImJ1bmRsaW5nIik7Cn0KCmlmICghIEdldE9wdGlvbnMo
ImhlbHB8aCIgPT4gc3ViIHsgJnVzYWdlOyBleGl0KDApOyB9LAoJCSAiciIgPT4gc3ViIHsg
JG9wdGlvbnMgLj0gInIiOyB9LCAjIHByb2Nlc3MgcmVjZWl2ZWQgaGVhZGVycwoJCSAiZCIg
PT4gc3ViIHsgJG9wdGlvbnMgLj0gImQiOyB9LCAjIHBlcmZvcm0gZG9tYWluIGxvb2t1cHMg
d2hlcmUgbmVlZGVkCgkJICJmIiA9PiBzdWIgeyAkb3B0aW9ucyAuPSAiZiI7IH0sICMgZm9y
Y2UgUkROUyBsb29rdXBzIGV2ZW4gd2hlcmUgTVRBIHByb3ZpZGVkCgkJICJhIiA9PiBzdWIg
eyAkb3B0aW9ucyAuPSAiYSI7IH0sICMgcGVyZm9ybSBBU04gbG9va3VwcwoJCSAiczpzIiA9
PiBzdWIgeyAkb3B0aW9ucyAuPSAicyI7ICAjIHN0YW5kYXJkIGZpZWxkcyBvbmx5IChzdHJp
cCBvdGhlcnMpCgkJCSAkdXNlcl9maWVsZHMgPSAkX1sxXTsgfSwKCQkgImUiID0+IHN1YiB7
ICRvcHRpb25zIC49ICJlIjsgfSwgIyBpbmNsdWRlIHRoZSBoZWxvIHJlY2VpdmVkIGZpZWxk
IGluIG91dHB1dAoJCSAiYiIgPT4gc3ViIHsgJG9wdGlvbnMgLj0gImIiOyB9LCAjIG91dHB1
dCBiZW5jaG1hcmtpbmcgaW5mbwoJCSAidyIgPT4gc3ViIHsgJG9wdGlvbnMgLj0gInciOyB9
LCAjIHByb2Nlc3Mgd2hvbGUgZW1haWwgKGluY2x1ZGluZyBib2R5KQoJCSAieCIgPT4gc3Vi
IHsgJG9wdGlvbnMgLj0gIngiOyB9LCAjIGluc2VydCBjdXN0b20geC1oZWFkZXIgZmllbGRz
CgkJICJ0IiA9PiBzdWIgeyAkb3B0aW9ucyAuPSAidCI7IH0sICMgcGVyZm9ybSBkYXRlIHJh
bmdlIGNoZWNrcwoJCSAicCIgPT4gc3ViIHsgJG9wdGlvbnMgLj0gInAiOyB9LCAjIHBlcmZv
cm0gU1BGIGxvb2t1cHMKCQkgInJldHVybi1wYXRofHJldHVybnBhdGg9cyIgPT4gXCRyZXR1
cm5fcGF0aCwKCQkgInJlbW90ZS1pcHxyZW1vdGVpcD1zIiA9PiBcJG9wdF9yZW1vdGVfaXAs
CgkJICJyZW1vdGUtbmFtZXxyZW1vdGVuYW1lPXMiID0+IFwkb3B0X3JlbW90ZV9uYW1lLAoJ
CSAibG9jYWwtaXB8bG9jYWxpcD1zIiA9PiBcJG9wdF9sb2NhbF9pcCwKCQkgImxvY2FsLW5h
bWV8bG9jYWxuYW1lPXMiID0+IFwkb3B0X2xvY2FsX25hbWUsCgkJICJoZWxvPXMiID0+IFwk
b3B0X2hlbG8sCgkJICJyY3B0PXMiID0+IFwkb3B0X3JjcHQsCgkJICJuby1sb2NhbC1yZWNl
aXZlZHxub2xvY2FscmVjZWl2ZWQiID0+IFwkbm9fbG9jYWxfcmVjZWl2ZWQsCgkJICJhZGQt
bG9jYWwtcmVjZWl2ZWR8YWRkbG9jYWxyZWNlaXZlZCIgPT4gXCRhZGRfbG9jYWxfcmVjZWl2
ZWQsCiAgICAgICAgICAgICAgICAgInRpbWVvdXQ9aSIgPT4gXCR0aW1lb3V0LCAgIyAwIHRv
IGRpc2FibGUgdGltZW91dAoJCSApKSB7CiAgICAmdXNhZ2U7CiAgICBleGl0KDEpOwp9Cgoj
IG9wZW4gcG9waXAgZGF0YWJhc2UgZm9yIHJlYWRpbmcKb3VyICVkYjsKJm9wZW5kYl9yZWFk
IGlmICRkYmZpbGU7CgojIHN0YXJ0IHRpbWluZyB0aGUgcHJvY2VzcwpteSAkc3RhcnRfdGlt
ZSA9IG5ldyBCZW5jaG1hcmsgaWYgJG9wdGlvbnMgPX4gL2IvOwpteSAoJHN0YXJ0X3BhcnNl
LCAkZW5kX3BhcnNlLCAkc3RhcnRfcmN2ZCwgJGVuZF9yY3ZkLCAkc3RhcnRfc2V0LCAkZW5k
X3NldCk7CgojIGdldCBTVERJTiBhbmQgcHJvY2VzcyB0aGUgZW1haWwKZXZhbCAKewoJIyBz
ZXQgYW4gYWxhcm0gc28gdGhhdCB3ZSBkb24ndCBoYW5nIG9uIGFuIGVtcHR5IFNURElOCgls
b2NhbCAkU0lHe0FMUk19ID0gc3ViIHsgZGllICJ0aW1lb3V0IiB9OwogICAgICAgIGlmICgk
dGltZW91dCA+IDApIHsKICAgICAgICAgICAgYWxhcm0gJHRpbWVvdXQ7CiAgICAgICAgfQoK
CSMgcGFyc2UgdGhlIGhlYWRlcgoJJHN0YXJ0X3BhcnNlID0gbmV3IEJlbmNobWFyayBpZiAk
b3B0aW9ucyA9fiAvYi87CglteSAoJGhlYWRlciwkcGFyc2VfYmVuY2htYXJrKSA9IHBhcnNl
X2hlYWRlcigpOwoJJGVuZF9wYXJzZSA9IG5ldyBCZW5jaG1hcmsgaWYgJG9wdGlvbnMgPX4g
L2IvOwoKCSMgY2FuY2VsIHRpbWVvdXQgaWYgd2UgZ290IHRoaXMgZmFyCglhbGFybSAwOwoK
CSMgZGVmYXVsdCBkYXRlIGlmIG5vbmUgcHJvdmlkZWQKCXVubGVzcyAoZGVmaW5lZCAkaGVh
ZGVyLT57J2RhdGUnfSkKCXsKCQkkaGVhZGVyLT57J2RhdGUnfS0+WzBdLT57J25hbWUnfSA9
ICJEYXRlIjsKCQkkaGVhZGVyLT57J2RhdGUnfS0+WzBdLT57J3ZhbHVlJ30gPSBnbXRpbWUg
dGltZTsKCX0KCQoJIyBwcm9jZXNzIHRoZSByZWNlaXZlZCBsaW5lcwoJaWYgKCRvcHRpb25z
ID1+IC9yLykKCXsKCQkkc3RhcnRfcmN2ZCA9IG5ldyBCZW5jaG1hcmsgaWYgJG9wdGlvbnMg
PX4gL2IvOwoJCSRoZWFkZXItPnsncmVjZWl2ZWQnfSA9IHByb2Nlc3NfcmN2ZCgkaGVhZGVy
LT57J3JlY2VpdmVkJ30sJHJldHVybl9wYXRoIHx8ICgkaGVhZGVyLT57J3JldHVybi1wYXRo
J30gJiYgJGhlYWRlci0+eydyZXR1cm4tcGF0aCd9LT5bMF0tPnsndmFsdWUnfSkpOwoJCSRl
bmRfcmN2ZCA9IG5ldyBCZW5jaG1hcmsgaWYgJG9wdGlvbnMgPX4gL2IvOwoJfQoKCSMgYWRk
IG5ldyBjdXN0b20gaGVhZGVyIGZpZWxkcwoJaWYgKCRvcHRpb25zID1+IC94LykgCgl7CgkJ
aWYgKCRvcHRpb25zID1+IC90LykKCQl7CgkJCSRoZWFkZXItPnsneC1kYXRlLWNoZWNrJ30t
PlswXS0+eyduYW1lJ30gPSAiWC1EYXRlLUNoZWNrIjsgCgkJCSRoZWFkZXItPnsneC1kYXRl
LWNoZWNrJ30tPlswXS0+eyd2YWx1ZSd9ID0gZGF0ZV9jaGVjaygkaGVhZGVyLT57J2RhdGUn
fS0+WzBdLT57J3ZhbHVlJ30sJGhlYWRlci0+eydyZWNlaXZlZCd9ICYmICRoZWFkZXItPnsn
cmVjZWl2ZWQnfS0+WzBdLT57J2RhdGUnfSk7CgkJfQoKCQlpZiAoJG9wdGlvbnMgPX4gL3Av
KQoJCXsKCSAgICAgICAgICAgICAgICBmb3IgKG15ICR4ID0gMDsgJHggPCBzY2FsYXIgQHsk
aGVhZGVyLT57J3JlY2VpdmVkJ319OyAkeCsrKQoJICAgICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAgICAgICAJICAgICAgICBpZiAoZGVmaW5lZCAkaGVhZGVyLT57J3JlY2Vp
dmVkJ30tPlskeF0tPnsnc3BmJ30gJiYgJGhlYWRlci0+eydyZWNlaXZlZCd9LT5bJHhdLT57
J3NwZid9ID1+IC9cdy8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEB7JGhlYWRlci0+eyd4LXNw
Zid9fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J25hbWUn
ID0+ICJYLVNQRiIsICd2YWx1ZScgPT4gJGhlYWRlci0+eydyZWNlaXZlZCd9LT5bJHhdLT57
J3NwZid9fSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAg
ICAgICAgIH0JCQkKCQl9Cgl9CgoJIyBUaGlzIG5lZWRzIHRvIGJlIGRvbmUgYWZ0ZXIgdGhl
IHgtc3BmIGhlYWRlcnMgYXJlIGdlbmVyYXRlZAoJIyBhYm92ZSwgc28gdGhhdCBhbiB4LXNw
ZiBoZWFkZXIgaXMgZ2VuZXJhdGVkIGZvciB0aGUKCSMgYXV0by1nZW5lcmF0ZWQgbG9jYWwg
UmVjZWl2ZWQgbGluZS4KCWlmICgkbm9fbG9jYWxfcmVjZWl2ZWQgYW5kIG5vdCAkYWRkX2xv
Y2FsX3JlY2VpdmVkKSB7CgkgICAgc3BsaWNlKEB7JGhlYWRlci0+eydyZWNlaXZlZCd9fSwg
MCwgMSk7Cgl9CgoJIyBvdXRwdXQgdGhlIG5ldyBoZWFkZXIgY29udGFpbmluZyB0aGUgY2hh
bmdlcwoJJHN0YXJ0X3NldCA9IG5ldyBCZW5jaG1hcmsgaWYgJG9wdGlvbnMgPX4gL2IvOwoJ
cHJpbnQgc2V0X2hlYWRlcigkaGVhZGVyKTsKCSRlbmRfc2V0ID0gbmV3IEJlbmNobWFyayBp
ZiAkb3B0aW9ucyA9fiAvYi87CgoJIyBhZGQgdGhlIGJvZHkgaWYgZGVzaXJlZAoJcHJpbnQg
cGFyc2VfYm9keSgpIGlmICRvcHRpb25zID1+IC93LzsKfTsKCiMgcHJvcGFnYXRlIGVycm9y
cwpkaWUgaWYgJEAgJiYgJEAgIX4gL3RpbWVvdXQvaTsKCiMgcHJpbnQgdGltZW91dCBtZXNz
YWdlCmlmICgkQCA9fiAvdGltZW91dC9pKSB7IGVycm9yKCJkaWUiLCJUaW1lZCBvdXQuLi4g
bWFrZSBzdXJlIHRvIHN1cHBseSBhbiBlbWFpbCBmb3IgcHJvY2Vzc2luZy4gIFRyeSAnc3Bh
bWl0YXJpdW0gLWgnIGZvciBkZXRhaWxzLlxuIik7IH0KCiMgY2FsY3VsYXRlIHRvdGFsIHJ1
bm5pbmcgdGltZQppZiAoJG9wdGlvbnMgPX4gL2IvKQp7CglteSAkZW5kX3RpbWUgPSBuZXcg
QmVuY2htYXJrOyAgCglteSAkdGQgPSB0aW1lZGlmZigkZW5kX3RpbWUsICRzdGFydF90aW1l
KTsKCW15ICR1c3IgPSAkdGQtPlsxXSskdGQtPlszXTsgbXkgJHN5cyA9ICR0ZC0+WzJdKyR0
ZC0+WzRdOwoJbXkgJGNwdSA9ICR1c3IrJHN5czsgbXkgJHdhbGwgPSAkdGQtPlswXTsKCXBy
aW50ICJUb3RhbCBydW5uaW5nIHRpbWUgd2FzICR3YWxsIHdhbGxjbG9jayBzZWNzOyAkdXNy
IHVzciArICRzeXMgc3lzID0gJGNwdSBDUFUgc2Vjcy4kQ1JMRiI7CgoJJHRkID0gdGltZWRp
ZmYoJGVuZF9wYXJzZSwgJHN0YXJ0X3BhcnNlKTsKCSR1c3IgPSAkdGQtPlsxXSskdGQtPlsz
XTsgJHN5cyA9ICR0ZC0+WzJdKyR0ZC0+WzRdOwoJJGNwdSA9ICR1c3IrJHN5czsgJHdhbGwg
PSAkdGQtPlswXTsKCXByaW50ICJJbnB1dCBwYXJzaW5nIHRpbWUgd2FzICR3YWxsIHdhbGxj
bG9jayBzZWNzOyAkdXNyIHVzciArICRzeXMgc3lzID0gJGNwdSBDUFUgc2Vjcy4kQ1JMRiI7
CgoJaWYgKCRvcHRpb25zID1+IC9yLykKCXsKCQkkdGQgPSB0aW1lZGlmZigkZW5kX3JjdmQs
ICRzdGFydF9yY3ZkKTsKCQkkdXNyID0gJHRkLT5bMV0rJHRkLT5bM107ICRzeXMgPSAkdGQt
PlsyXSskdGQtPls0XTsKCQkkY3B1ID0gJHVzciskc3lzOyAkd2FsbCA9ICR0ZC0+WzBdOwoJ
CXByaW50ICJSZWNlaXZlZCBsaW5lIHByb2Nlc3NpbmcgdGltZSB3YXMgJHdhbGwgd2FsbGNs
b2NrIHNlY3M7ICR1c3IgdXNyICsgJHN5cyBzeXMgPSAkY3B1IENQVSBzZWNzLiRDUkxGIjsK
CX0KCgkkdGQgPSB0aW1lZGlmZigkZW5kX3NldCwgJHN0YXJ0X3NldCk7CgkkdXNyID0gJHRk
LT5bMV0rJHRkLT5bM107ICRzeXMgPSAkdGQtPlsyXSskdGQtPls0XTsKCSRjcHUgPSAkdXNy
KyRzeXM7ICR3YWxsID0gJHRkLT5bMF07CglwcmludCAiUmVidWlsZGluZyBlbWFpbCB0aW1l
IHdhcyAkd2FsbCB3YWxsY2xvY2sgc2VjczsgJHVzciB1c3IgKyAkc3lzIHN5cyA9ICRjcHUg
Q1BVIHNlY3MuJENSTEYiOwp9CgojIGNsb3NlIHBvcGlwIGRhdGFiYXNlCiZjbG9zZWRiIGlm
ICRkYmZpbGU7CgpleGl0KDApOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCiMjIyMjIyMjIyMjIyMjIyMgUGFyc2UgSGVhZGVyICAjIyMjIyMj
IyMjIyMjIyMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKCnN1YiBwYXJzZV9oZWFkZXIKewogICAgbG9jYWwoJF8pOwogICAgbXkgJGhlYWRl
cl90ZXh0ID0gIiI7CgogICAgd2hpbGUgKDxTVERJTj4pIHsKICAgICAgICBsYXN0IGlmICgv
XlxyP1xuJC8pOwogICAgICAgICRoZWFkZXJfdGV4dCAuPSAkXzsKICAgIH0KCiAgICAjIFRo
aXMgaXMgcmVhbGx5IGdyb3NzLiBUaGVyZSBpcyBhIGNlcnRhaW4gcHJvbWluZW50IGVtYWls
IG1hcmtldGluZwogICAgIyBjb21wYW55IHdob3NlIHNvZnR3YXJlIGhhcyBhIGJ1ZyBpbiBp
dCB3aGljaCBjYXVzZXMgRGF0ZTogaGVhZGVycyB0bwogICAgIyBzb21ldGltZXMgYmUgdGVy
bWluYXRlZCB3aXRoIGp1c3QgQ1IgcmF0aGVyIHRoYW4gQ1JMRi4gSWYgd2UgaW50ZXJwcmV0
CiAgICAjIFJGQyA1MzIxIHNlY3Rpb24gMi4zLjggc3RyaWN0bHksIHRoZW4gd2UncmUgcmVx
dWlyZWQgdG8gdHJlYXQgc3VjaCBhCiAgICAjIERhdGU6IGhlYWRlciBhbmQgdGhlIG9uZSBm
b2xsb3dpbmcgaXQgYXMgYSBzaW5nbGUgaGVhZGVyIGZpZWxkLCBidXQKICAgICMgc3RyaWN0
IGFkaGVyZW5jZSB0byB0aGUgUkZDIHdoZW4gdGhhdCByZXN1bHRzIGluIG9idmlvdXNseSBi
cm9rZW4KICAgICMgYmVoYXZpb3IgaXMgbm90IHRoZSBiZXN0IGFwcHJvYWNoLiBPbiB0aGUg
b3RoZXIgaGFuZCwgd2hlbiB3ZSdyZSBzdHJheWluZwogICAgIyBmcm9tIHRoZSBSRkMsIHdl
IHdhbnQgdG8gZG8gc28gYXMgbWluaW1hbGx5IGFzIHBvc3NpYmxlLiBUaGVyZWZvcmUsIHdo
YXQKICAgICMgd2UgYXJlIGRvaW5nIGhlcmUgaXMgY2hlY2tpbmcgc3BlY2lmaWNhbGx5IGZv
ciB0aGlzIGV4YWN0IHByb2JsZW0gLS0KICAgICMgRGF0ZTogaGVhZGVycyBlbmRpbmcgd2l0
aCBDUiByYXRoZXIgdGhhbiBDUkxGIC0tIGFuZCBjb3JyZWN0aW5nIGZvciBqdXN0CiAgICAj
IHRoYXQgb25lLCBsaW1pdGVkIGNhc2UuCiAgICAjIFRoaXMgaGFuZGxlcyBpbnB1dCB3aXRo
IGJvdGggQ1JMRiBhbmQgTEYgbGluZSB0ZXJtaW5hdG9ycy4KICAgICRoZWFkZXJfdGV4dCA9
fiBzL14oRGF0ZTouKilccihbXlxuXS4qKC4pXG4pLyQxJDNcbiQyL207CgogICAgbXkoQGhl
YWRlcnMpID0gc3BsaXQoL1xuXGIvLCAkaGVhZGVyX3RleHQpOwogICAgCiAgICBteSAkaGVh
ZGVyID0ge307CiAgICBteSAkbGFzdF9oZWFkZXIgPSB1bmRlZjsKCiAgICBmb3IgKEBoZWFk
ZXJzKSB7CiAgICAgICAgcy9ccyskLy87CiAgICAgICAgcy9ccysvIC9nOyAgIyBjb2xsYXBz
ZSB3aGl0ZXNwYWNlCiAgICAgICAgaWYgKHMvXihcUyspOlxzKi8vKSB7CiAgICAgICAgICAg
IG15ICRuYW1lID0gJDE7CiAgICAgICAgICAgIG15ICR0YWcgPSAkbmFtZTsKICAgICAgICAg
ICAgJHRhZyA9fiB0ci9BLVovYS16LzsgICMgaGVhZGVyIG5hbWVzIGFyZSBjYXNlLWluc2Vu
c2l0aXZlCiAgICAgICAgICAgIGlmICghICRfIGFuZCAkaGVhZGVyLT57JHRhZ30gYW5kCiAg
ICAgICAgICAgICAgICBncmVwKCEgJF8tPnsndmFsdWUnfSwgQHskaGVhZGVyLT57JHRhZ319
KSkgewogICAgICAgICAgICAgICAgIyBJZiBhbiBlbXB0eSBoZWFkZXIgZmllbGQgaXMgcmVw
ZWF0ZWQgbXVsdGlwbGUgdGltZXMsIHdlIG9ubHkKICAgICAgICAgICAgICAgICMgbmVlZCB0
byBwcmVzZXJ2ZSBvbmUgb2YgdGhlbS4KICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAg
ICAgIH0KICAgICAgICAgICAgcHVzaChAeyRoZWFkZXItPnskdGFnfX0sIHsnbmFtZScgPT4g
JG5hbWUsICd2YWx1ZScgPT4gJF99KTsKICAgICAgICAgICAgJGxhc3RfaGVhZGVyID0gJGhl
YWRlci0+eyR0YWd9LT5bLTFdOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgIyBXaGF0J3MgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvIGhlcmU/IEVpdGhlciB0aGVyZSdz
IG5vIGNvbG9uIG9yCiAgICAgICAgICAgICMgdGhlcmUncyB3aGl0ZXNwYWNlIGJlZm9yZSB0
aGUgY29sb24sIGJvdGggb2Ygd2hpY2ggYXJlIFJGQwogICAgICAgICAgICAjIHZpb2xhdGlv
bnMuIE91ciBiZXN0IGd1ZXNzIGlzIHRvIGFwcGVuZCB0aGlzIHRvIHRoZSBwcmV2aW91cwog
ICAgICAgICAgICAjIGhlYWRlci4KICAgICAgICAgICAgaWYgKCEgJGxhc3RfaGVhZGVyKSB7
CiAgICAgICAgICAgICAgICBlcnJvcigid2FybiIsICJCYWQgaW5pdGlhbCBoZWFkZXIgbGlu
ZSAnJF8nIGlnbm9yZWRcbiIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgICAgZXJyb3IoIndhcm4iLCAiQmFkIGhlYWRlciBsaW5lICckXycgYXBw
ZW5kZWQgdG8gcHJlY2VkaW5nICciIC4KICAgICAgICAgICAgICAgICAgICAgICRsYXN0X2hl
YWRlci0+eyduYW1lJ30gLiAiJyBoZWFkZXIgZmllbGQiKTsKICAgICAgICAgICAgICAgICRs
YXN0X2hlYWRlci0+eyd2YWx1ZSd9IC49ICIgIiAuICRfOwogICAgICAgICAgICB9CiAgICAg
ICAgfSAgICAgICAgICAgICAgICAgICAgICAKICAgIH0gICAKICAgICAgICAgICAgICAgIAog
ICAgcmV0dXJuICRoZWFkZXI7Cn0KCnN1YiBkYXRlX2NoZWNrCnsKCW15ICgkZGF0ZSwkcmN2
ZCkgPSBzaGlmdDsKCW15ICgkZG93LCAkZGF5LCAkbW9uLCAkeWVhciwgJGhvdXIsICRtaW4s
ICRzZWMsICRybWRyKSA9ICI/IjsKCglpZiAoJGRhdGUgPX4gL1xzKj8oXHd7MSw5fSksP1xz
Kz8oXGQrPylccys/KFx3ezN9KVxzKz8oXGR7NH0pXHMrPyhcZHsxLDJ9KTooXGR7Mn0pOihc
ZHsyfSkoLiopL2kpIAoJeyAKCQkkZG93PSQxOyAkZGF5PSQyOyAkbW9uPSQzOyAkeWVhcj0k
NDsgJGhvdXI9JDU7ICRtaW49JDY7ICRzZWM9JDc7ICRybWRyPSQ4OwoJCSRtb24gPSAkbW9u
PX4vRGVjL2k/MTE6JG1vbj1+L05vdi9pPzEwOiRtb249fi9PY3QvaT85OiRtb249fi9TZXAv
aT84OiRtb249fi9BdWcvaT83OiRtb249fi9KdWwvaT82OiRtb249fi9KdW4vaT81OiRtb249
fi9NYXkvaT80OiRtb249fi9BcHIvaT8zOiRtb249fi9NYXIvaT8yOiRtb249fi9GZWIvaT8x
OjA7CgoJCWV2YWwgewoJCSAgICAkZGF0ZSA9IHRpbWVnbSgkc2VjLCRtaW4sJGhvdXIsJGRh
eSwkbW9uLCR5ZWFyKTsKCQl9OwoJCWlmICgkQCkgewoJCSAgICByZXR1cm4gImRhdGUtb3V0
LW9mLXJhbmdlIChvdmVyZmxvdykiOwoJCX0KCgkJIyBhZGp1c3QgZm9yIGxvY2FsIHRpbWUK
CQlpZiAoJHJtZHIgPX4gL1wrXGQoXGQpXGRcZC8pIHsgJGRhdGUgLT0gJDEgKiA2MCAqIDYw
OyB9CgkJaWYgKCRybWRyID1+IC9cLVxkKFxkKVxkXGQvKSB7ICRkYXRlICs9ICQxICogNjAg
KiA2MDsgfQoJfQoJZWxzZSB7IHJldHVybiAiZGF0ZS1mb3JtYXQtdW5rbm93biI7IH0KCiAg
ICAgICAgaWYgKCRyY3ZkICYmICRyY3ZkID1+IC9ccyo/KFx3ezEsOX0pLD9ccys/KFxkKz8p
XHMrPyhcd3szfSlccys/KFxkezR9KVxzKz8oXGR7MSwyfSk6KFxkezJ9KTooXGR7Mn0pKC4q
KS9pKQogICAgICAgIHsKICAgICAgICAgICAgICAgICRkb3c9JDE7ICRkYXk9JDI7ICRtb249
JDM7ICR5ZWFyPSQ0OyAkaG91cj0kNTsgJG1pbj0kNjsgJHNlYz0kNzsgJHJtZHI9JDg7CgkJ
JG1vbiA9ICRtb249fi9EZWMvaT8xMTokbW9uPX4vTm92L2k/MTA6JG1vbj1+L09jdC9pPzk6
JG1vbj1+L1NlcC9pPzg6JG1vbj1+L0F1Zy9pPzc6JG1vbj1+L0p1bC9pPzY6JG1vbj1+L0p1
bi9pPzU6JG1vbj1+L01heS9pPzQ6JG1vbj1+L0Fwci9pPzM6JG1vbj1+L01hci9pPzI6JG1v
bj1+L0ZlYi9pPzE6MDsKCgkJZXZhbCB7CgkJICAgICRyY3ZkID0gdGltZWdtKCRzZWMsJG1p
biwkaG91ciwkZGF5LCRtb24sJHllYXIpOwoJCX07CgkJaWYgKCRAKSB7CgkJICAgIHJldHVy
biAiZGF0ZS1vdXQtb2YtcmFuZ2UgKG92ZXJmbG93KSI7CgkJfQoKICAgICAgICAgICAgICAg
ICMgYWRqdXN0IGZvciBsb2NhbCB0aW1lCiAgICAgICAgICAgICAgICBpZiAoJHJtZHIgPX4g
L1wrXGQoXGQpXGRcZC8pIHsgJHJjdmQgLT0gJDEgKiA2MCAqIDYwOyB9CiAgICAgICAgICAg
ICAgICBpZiAoJHJtZHIgPX4gL1wtXGQoXGQpXGRcZC8pIHsgJHJjdmQgKz0gJDEgKiA2MCAq
IDYwOyB9CiAgICAgICAgfQogICAgICAgIGVsc2UgeyAkcmN2ZCA9IHRpbWU7IH0KCgkjIGNo
ZWNrIGZvciByYW5nZSArLy0KCW15ICRkaWZmID0gJHJjdmQgLSAkZGF0ZTsgbXkgJGRpZmZf
ZGF5cyA9IHJvdW5kKCRkaWZmLyg2MCo2MCoyNCkpOwoJaWYgKCgkZGlmZiA8ICRkYXRlX2xp
bWl0KSBhbmQgKCRkaWZmID4gJGRhdGVfbGltaXQgKiAtMSkpIHsgcmV0dXJuICJkYXRlLWlu
LXJhbmdlICgkZGlmZl9kYXlzIGRheXMpIjsgfQoJZWxzZSB7IHJldHVybiAiZGF0ZS1vdXQt
b2YtcmFuZ2UgKCRkaWZmX2RheXMgZGF5cykiOyB9Cn0KCnN1YiByb3VuZCAKewogICAgbXkg
JG51bSA9IHNoaWZ0OwogICAgcmV0dXJuIGludCgoJG51bSoxMDApKzAuNSkvMTAwOwp9Cgoj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjIyMj
IyMjIyMjIyMjIyMgUGFyc2UgQm9keSAgIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKc3ViIHBhcnNlX2JvZHkK
ewoJIyB0aGlzIGZ1bmN0aW9uIGlzIHJlYWxseSBvbmx5IHVzZWQgZm9yCgkjIGVtYWlsLXRv
LWVtYWlsIGNvbXBhcmlzb25zLCB3aGVyZSBwcm9jZXNzaW5nCgkjIHRoZSBlbnRpcmUgZW1h
aWwgaXMgcmVxdWlyZWQuLi4gdXN1YWxseQoJIyB3ZSdsbCBqdXN0IHByb2Nlc3MgdGhlIGhl
YWRlcgoKCW15ICRib2R5ID0gIiI7CiAgICAgICAgd2hpbGUgKDxTVERJTj4pIHsgJGJvZHkg
Lj0gJF87IH0KCXJldHVybiAkYm9keTsKfQkJCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjIyMjIyMjIyMgUHJvY2VzcyBSZWNlaXZlZCBM
aW5lcyAgIyMjIyMjIyMjIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIwoKc3ViIHByb2Nlc3NfcmN2ZAp7CglteSAkcmN2ZCA9IHNoaWZ0OwoJ
bXkgJHJ0cm4gPSBzaGlmdDsKCQoJIyBoZXVyaXN0aWNzCglteSAkTFVTRVIJPSBxcn4oPzpc
d3wtfFwuKSs/fjsKCW15ICRET01BSU4JPSBxcn4oPzpcd3wtfFwuKStcLlx3ezIsNH1+OwoJ
bXkgJElQCQk9IHFyfig/OlxkezEsM31cLil7M31cZHsxLDN9fjsKCW15ICRFTUFJTCAJPSBx
cn4kTFVTRVJcQCRET01BSU5+OwoJbXkgJEhFTE8JPSBxcn5bXlxzXDBcL1xcXCNdKz9+OwoJ
bXkgJFJETlMJPSBxcn4oPzokRE9NQUlOfFxbPyRJUFxdP3x1bmtub3dufHVudmVyaWZpZWQp
fjsKCQoJbXkgJGVkZ2VfaXAgPSAiIjsKCW15ICR1bnRydXN0ZWQgPSAwOwoKCWlmICgkbm9f
bG9jYWxfcmVjZWl2ZWQpIHsKCSAgICBteSAkbG9jYWxfcmN2ZDsKCSAgICAkbG9jYWxfcmN2
ZC0+eyd2YWx1ZSd9ID0gImF1dG8tZ2VuZXJhdGVkIjsKCSAgICAkbG9jYWxfcmN2ZC0+eydu
YW1lJ30gPSAiUmVjZWl2ZWQiOwoJICAgICRsb2NhbF9yY3ZkLT57J3NhbmUnfSA9ICJ0cnVz
dGVkIjsKCSAgICAkbG9jYWxfcmN2ZC0+eydyZG5zJ30gPSAkb3B0X3JlbW90ZV9uYW1lIHx8
ICIiOwoJICAgICRsb2NhbF9yY3ZkLT57J2lwYWQnfSA9ICRvcHRfcmVtb3RlX2lwIHx8ICIi
OwoJICAgICRsb2NhbF9yY3ZkLT57J210YW4nfSA9ICRvcHRfbG9jYWxfbmFtZSB8fCAiIjsK
CSAgICAkbG9jYWxfcmN2ZC0+eydtdGFpJ30gPSAkb3B0X2xvY2FsX2lwIHx8ICIiOwoJICAg
ICRsb2NhbF9yY3ZkLT57J2hlbG8nfSA9ICRvcHRfaGVsbyB8fCAiIjsKCSAgICAkbG9jYWxf
cmN2ZC0+eydmb3JlJ30gPSAkb3B0X3JjcHQgfHwgIiI7CgkgICAgJGxvY2FsX3JjdmQtPnsn
ZnJvbSd9ID0gJHJldHVybl9wYXRoIHx8ICIiOwoKCSAgICBzcGxpY2UoQHskcmN2ZH0sIDAs
IDAsICRsb2NhbF9yY3ZkKTsKCX0KCSAgICAKCSMgY2hlY2sgaWYgd2Ugd2VyZSBwYXNzZWQg
YSB2YWxpZCBhcnJheSBvZiByZWNlaXZlZCBsaW5lcwoJdW5sZXNzICgoZGVmaW5lZCAkcmN2
ZCkgJiYgKHJlZigkcmN2ZCkgZXEgIkFSUkFZIikgJiYgJHJjdmQtPlswXS0+eyd2YWx1ZSd9
KQoJewoJCW5vIHN0cmljdCAncmVmcyc7CgkJbXkgJXJjdmRfaGFzaCA9ICgndmFsdWUnID0+
ICJmcm9tIGxvY2FsaG9zdDsgIiAuIGdtdGltZSB0aW1lLCAnbmFtZScgPT4gIlJlY2VpdmVk
Iik7CgkJbXkgQHJjdmRfYXJyYXk7ICRyY3ZkX2FycmF5WzBdID0gXCVyY3ZkX2hhc2g7ICAk
cmN2ZCA9IFxAcmN2ZF9hcnJheTsKCX0KCWVsc2UgewoKCSMgaXRlcmF0ZSB0aHJvdWdoIGVh
Y2ggcmVjZWl2ZWQgaGVhZGVyLCBwYXJzaW5nIGFuZCB2YWxpZGF0aW5nIHRoZSBpbmZvCglm
b3IgKG15ICR4ID0gMDsgJHggPCBzY2FsYXIgQCRyY3ZkOyAkeCsrKQoJewoJCSMgc2tpcCBw
cm9jZXNzaW5nIGlmIHdlIGFscmVhZHkgbG9zdCBjb25maWRlbmNlIGluIHRoaXMgdHJhaWwg
b2YgcmVjZWl2ZWQgbGluZXMKCQkjaWYgKCR1bnRydXN0ZWQpIHsgJHJjdmQtPlskeF0tPnsn
c2FuZSd9ID0gInVudHJ1c3RlZCI7IG5leHQ7IH0KCQoJCW15ICRoZWxvID0gJHJjdmQtPlsk
eF0tPnsnaGVsbyd9IHx8ICIiOwoJCW15ICRpcGFkID0gJHJjdmQtPlskeF0tPnsnaXBhZCd9
IHx8ICIiOwoJCW15ICRyZG5zID0gJHJjdmQtPlskeF0tPnsncmRucyd9IHx8ICIiOwoJCW15
ICRmcm9tID0gJHJjdmQtPlskeF0tPnsnZnJvbSd9IHx8ICIiOwoJCW15ICRtdGFuID0gJHJj
dmQtPlskeF0tPnsnbXRhbid9IHx8ICIiOwoJCW15ICRtdGFpID0gJHJjdmQtPlskeF0tPnsn
bXRhaSd9IHx8ICIiOwoJCW15ICRmb3JlID0gJHJjdmQtPlskeF0tPnsnZm9yZSd9IHx8ICIi
OwoKCQlteSAkaWRudD0iIjsgbXkgJG10YXY9IiI7IG15ICR3aXRoPSIiOyBteSAkZGF0ZT0i
IjsKCQkKCQkjIHRyeSB0byB0YWtlIGludG8gYWNjb3VudCBhbGwga25vd24gTVRBIGZvcm1h
dHMKCQkKCQlpZiAgICAoJHJjdmQtPlskeF0tPnsndmFsdWUnfSA9fiBzL1woZW52ZWxvcGUt
KD86c2VuZGVyfGZyb20pIDwoJEVNQUlMKT5cKS8vZ2lzKSAJCQl7ICRmcm9tPSQxOyAJCQkJ
CX0jIHByaW50ICJYLSR4LW1hdGNoZWQtMDE6IGZyb209JGZyb20sIHJlbWFpbmluZz0kcmN2
ZC0+WyR4XS0+eyd2YWx1ZSd9ICRDUkxGIjsgfQoJCWlmICAgICgkcmN2ZC0+WyR4XS0+eyd2
YWx1ZSd9ID1+IHMvO1xzKz8oXHd7M30sIFxkezEsMn0gXHd7M30gXGR7Miw0fS4qPykkLy9n
aXMpCQkJeyAkZGF0ZT0kMTsgCQkJCQl9IyBwcmludCAiWC0keC1tYXRjaGVkLTAyOiBkYXRl
PSRkYXRlLCByZW1haW5pbmc9JHJjdmQtPlskeF0tPnsndmFsdWUnfSAkQ1JMRiI7IH0KCQlp
ZiAgICAoJHJjdmQtPlskeF0tPnsndmFsdWUnfSA9fiBzL2ZvclxzKz88PygkRU1BSUwpPj8o
PzogXChzaW5nbGUtZHJvcFwpKT8vL2dpcykgCQkJeyAkZm9yZT0kMTsgCQkJCQl9IyBwcmlu
dCAiWC0keC1tYXRjaGVkLTAzOiBmb3JlPSRmb3JlLCByZW1haW5pbmc9JHJjdmQtPlskeF0t
PnsndmFsdWUnfSAkQ1JMRiI7IH0KCQlpZiAgICAoJHJjdmQtPlskeF0tPnsndmFsdWUnfSA9
fiBzL2J5XHMrPyhcUys/KSBcKCgkSVApXCkgXCgoLio/KVwpLy9naXMpIAkJCQl7ICRtdGFu
PSQxOyAkbXRhaT0kMjsgJG10YXY9JDM7IAkJfSMgcHJpbnQgIlgtJHgtbWF0Y2hlZC0wNDog
bXRhbj0kbXRhbiwgbXRhaT0kbXRhaSwgbXRhdj0kbXRhdiwgcmVtYWluaW5nPSRyY3ZkLT5b
JHhdLT57J3ZhbHVlJ30gJENSTEYiOyB9CgkJZWxzaWYgKCRyY3ZkLT5bJHhdLT57J3ZhbHVl
J30gPX4gcy9ieVxzKz8oXFMrPykgXFsoJElQKVxdLy9naXMpIAkJCQkJeyAkbXRhbj0kMTsg
JG10YWk9JDI7IAkJCQl9IyBwcmludCAiWC0keC1tYXRjaGVkLTA1OiBtdGFuPSRtdGFuLCBt
dGFpPSRtdGFpLCByZW1haW5pbmc9JHJjdmQtPlskeF0tPnsndmFsdWUnfSAkQ1JMRiI7IH0K
CQllbHNpZiAoJHJjdmQtPlskeF0tPnsndmFsdWUnfSA9fiBzL2J5XHMrPyhcUys/KSBcKCgu
Kz8pXCkvL2dpcykgCQkJCQl7ICRtdGFuPSQxOyAkbXRhdj0kMjsgCQkJCX0jIHByaW50ICJY
LSR4LW1hdGNoZWQtMDY6IG10YW49JG10YW4sIG10YXY9JG10YXYsIHJlbWFpbmluZz0kcmN2
ZC0+WyR4XS0+eyd2YWx1ZSd9ICRDUkxGIjsgfQoJCWVsc2lmICgkcmN2ZC0+WyR4XS0+eyd2
YWx1ZSd9ID1+IHMvYnlccys/KCRJUCkoPz1cV3w7fCQpLy9naXMpIAkJCQkJCXsgJG10YWk9
JDE7IAkJCQkJfSMgcHJpbnQgIlgtJHgtbWF0Y2hlZC0wNzogbXRhaT0kbXRhaSwgcmVtYWlu
aW5nPSRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gJENSTEYiOyB9CgkJZWxzaWYgKCRyY3ZkLT5b
JHhdLT57J3ZhbHVlJ30gPX4gcy9ieVxzKz8oJERPTUFJTikoPz1cV3w7fCQpLy9naXMpIAkJ
CQkJeyAkbXRhbj0kMTsgCQkJCQl9IyBwcmludCAiWC0keC1tYXRjaGVkLTA4OiBtdGFuPSRt
dGFuLCByZW1haW5pbmc9JHJjdmQtPlskeF0tPnsndmFsdWUnfSAkQ1JMRiI7IH0KCQllbHNp
ZiAoJHJjdmQtPlskeF0tPnsndmFsdWUnfSA9fiBzL2J5XHMrPyhcUys/KSg/PVxXfDt8JCkv
L2dpcykgCQkJCQl7ICRtdGFuPSQxOyAJCQkJCX0jIHByaW50ICJYLSR4LW1hdGNoZWQtMDk6
IG10YW49JG10YW4sIHJlbWFpbmluZz0kcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ICRDUkxGIjsg
fQoJCWlmICAgICgkcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ID1+IHMvKD86d2l0aClccys/KFxT
Kz8pIFwoKC4qPylcKS8vZ2lzKSAJCQkJCXsgJHdpdGg9JDE7ICRtdGF2PSQyIGlmICEkbXRh
djsgCQl9IyBwcmludCAiWC0keC1tYXRjaGVkLTEwOiB3aXRoPSR3aXRoLCBtdGF2PSRtdGF2
LCByZW1haW5pbmc9JHJjdmQtPlskeF0tPnsndmFsdWUnfSAkQ1JMRiI7fQoJCWVsc2lmICgk
cmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ID1+IHMvKD86d2l0aClccys/KFxTKz8pKD89XFd8O3wk
KS8vZ2lzKSAJCQkJCXsgJHdpdGg9JDE7IAkJCQkJfSMgcHJpbnQgIlgtJHgtbWF0Y2hlZC0x
MTogd2l0aD0kd2l0aCwgcmVtYWluaW5nPSRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gJENSTEYi
OyB9CgkJaWYgICAgKCRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gPX4gcy9eZnJvbVxzKz8oJFJE
TlMpIFwoSEVMTyAoJEhFTE8pXCkgXCgoJExVU0VSKVxAXFs/KCRJUClcXT8vL2dpcykgCXsg
JHJkbnM9JDE7ICRoZWxvPSQyOyAkaWRudD0kMzsgJGlwYWQ9JDQ7IAl9IyBwcmludCAiWC0k
eC1tYXRjaGVkLTEyOiByZG5zPSRyZG5zLCBoZWxvPSRoZWxvLCBpZG50PSRpZG50LCBpcGFk
PSRpcGFkLCByZW1haW5pbmc9JHJjdmQtPlskeF0tPnsndmFsdWUnfSAkQ1JMRiI7IH0KCQll
bHNpZiAoJHJjdmQtPlskeF0tPnsndmFsdWUnfSA9fiBzL15mcm9tXHMrPygkUkROUykgXChI
RUxPICgkSEVMTylcKSBcKFxbPygkSVApXF0/Ly9naXMpIAkJeyAkcmRucz0kMTsgJGhlbG89
JDI7ICRpcGFkPSQzOyAJCX0jIHByaW50ICJYLSR4LW1hdGNoZWQtMTM6IHJkbnM9JHJkbnMs
IGhlbG89JGhlbG8sIGlwYWQ9JGlwYWQsIHJlbWFpbmluZz0kcmN2ZC0+WyR4XS0+eyd2YWx1
ZSd9ICRDUkxGIjsgfQoJCWVsc2lmICgkcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ID1+IHMvXmZy
b21ccys/KCRSRE5TKSBcKFxbKCRJUClcXSBoZWxvPSgkSEVMTylcKS8vZ2lzKSAJCQl7ICRy
ZG5zPSQxOyAkaXBhZD0kMjsgJGhlbG89JDM7IAkJfSMgcHJpbnQgIlgtJHgtbWF0Y2hlZC0x
NDogcmRucz0kcmRucywgaXBhZD0kaXBhZCwgaGVsbz0kaGVsbywgcmVtYWluaW5nPSRyY3Zk
LT5bJHhdLT57J3ZhbHVlJ30gJENSTEYiOyB9CgkJZWxzaWYgKCRyY3ZkLT5bJHhdLT57J3Zh
bHVlJ30gPX4gcy9eZnJvbVxzKz8oJFJETlMpIFwoKCRMVVNFUilcQFxbPygkSVApXF0/XCkv
L2dpcykgCQkJeyAkcmRucz0kMTsgJGlkbnQ9JDI7ICRpcGFkPSQzOyAJCX0jIHByaW50ICJY
LSR4LW1hdGNoZWQtMTU6IHJkbnM9JHJkbnMsIGlkbnQ9JGlkbnQsIGlwYWQ9JGlwYWQsIHJl
bWFpbmluZz0kcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ICRDUkxGIjsgfQoJCWVsc2lmICgkcmN2
ZC0+WyR4XS0+eyd2YWx1ZSd9ID1+IHMvXmZyb21ccys/KCRSRE5TKVwoKCRJUClcKS8vZ2lz
KSAJCQkJCXsgJHJkbnM9JDE7ICRpcGFkPSQyOyAJCQkJfSMgcHJpbnQgIlgtJHgtbWF0Y2hl
ZC0xNjogcmRucz0kcmRucywgaXBhZD0kaXBhZCwgcmVtYWluaW5nPSRyY3ZkLT5bJHhdLT57
J3ZhbHVlJ30gJENSTEYiOyB9CgkJZWxzaWYgKCRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gPX4g
cy9eZnJvbVxzKz9cWygkSVApXF0gXChoZWxvPSgkSEVMTykgaWRlbnQ9KCRMVVNFUilcKS8v
Z2lzKSAJCXsgJGlwYWQ9JDE7ICRoZWxvPSQyOyAkaWRudD0kMzsgCQl9IyBwcmludCAiWC0k
eC1tYXRjaGVkLTE3OiBpcGFkPSRpcGFkLCBoZWxvPSRoZWxvLCBpZG50PSRpZG50LCByZW1h
aW5pbmc9JHJjdmQtPlskeF0tPnsndmFsdWUnfSAkQ1JMRiI7IH0KCQllbHNpZiAoJHJjdmQt
PlskeF0tPnsndmFsdWUnfSA9fiBzL15mcm9tXHMrP1xbKCRJUClcXSBcKGFjY291bnQgKCRM
VVNFUikgSEVMTyAoJEhFTE8pXCkvL2dpcykgCQl7ICRpcGFkPSQxOyAkaWRudD0kMjsgJGhl
bG89JDM7IAkJfSMgcHJpbnQgIlgtJHgtbWF0Y2hlZC0xODogaXBhZD0kaXBhZCwgaWRudD0k
aWRudCwgaGVsbz0kaGVsbywgcmVtYWluaW5nPSRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gJENS
TEYiOyB9CgkJZWxzaWYgKCRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gPX4gcy9eZnJvbVxzKz9c
WygkSVApXF0gXChoZWxvPSgkSEVMTylcKS8vZ2lzKSAJCQkJeyAkaXBhZD0kMTsgJGhlbG89
JDI7IAkJCQl9IyBwcmludCAiWC0keC1tYXRjaGVkLTE5OiBpcGFkPSRpcGFkLCBoZWxvPSRo
ZWxvLCByZW1haW5pbmc9JHJjdmQtPlskeF0tPnsndmFsdWUnfSAkQ1JMRiI7IH0KCQllbHNp
ZiAoJHJjdmQtPlskeF0tPnsndmFsdWUnfSA9fiBzL15mcm9tXHMrP1xbPygkSVApXF0/Oj9c
ZCo/IFwoSEVMTyAoJEhFTE8pXCkvL2dpcykgCQkJeyAkaXBhZD0kMTsgJGhlbG89JDI7IAkJ
CQl9IyBwcmludCAiWC0keC1tYXRjaGVkLTIwOiBpcGFkPSRpcGFkLCBoZWxvPSRoZWxvLCBy
ZW1haW5pbmc9JHJjdmQtPlskeF0tPnsndmFsdWUnfSAkQ1JMRiI7IH0KCQllbHNpZiAoJHJj
dmQtPlskeF0tPnsndmFsdWUnfSA9fiBzL15mcm9tXHMrPygkSEVMTykgXChJREVOVDooJExV
U0VSKVxAKCRSRE5TKSBcWygkSVApXF0vL2dpcykgCQl7ICRoZWxvPSQxOyAkaWRudD0kMjsg
JHJkbnM9JDM7ICRpcGFkPSQ0OyAJfSMgcHJpbnQgIlgtJHgtbWF0Y2hlZC0yMTogaGVsbz0k
aGVsbywgaWRudD0kaWRudCwgcmRucz0kcmRucywgaXBhZD0kaXBhZCwgcmVtYWluaW5nPSRy
Y3ZkLT5bJHhdLT57J3ZhbHVlJ30gJENSTEYiOyB9CgkJZWxzaWYgKCRyY3ZkLT5bJHhdLT57
J3ZhbHVlJ30gPX4gcy9eZnJvbVxzKz8oJEhFTE8pIFwoPD8oJFJETlMpPj9ccz9cWygkSVAp
XF0vL2dpcykgCQkJeyAkaGVsbz0kMTsgJHJkbnM9JDI7ICRpcGFkPSQzOyAJCX0jIHByaW50
ICJYLSR4LW1hdGNoZWQtMjI6IGhlbG89JGhlbG8sIHJkbnM9JHJkbnMsIGlwYWQ9JGlwYWQs
IHJlbWFpbmluZz0kcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ICRDUkxGIjsgfQoJCWVsc2lmICgk
cmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ID1+IHMvXmZyb21ccys/KCRIRUxPKSBcKFxbKCRJUClc
XSBpZGVudD0oJExVU0VSKVwpLy9naXMpIAkJCXsgJGhlbG89JDE7ICRpcGFkPSQyOyAkaWRu
dD0kMzsgCQl9IyBwcmludCAiWC0keC1tYXRjaGVkLTIzOiBoZWxvPSRoZWxvLCBpcGFkPSRp
cGFkLCBpZG50PSRpZG50LCByZW1haW5pbmc9JHJjdmQtPlskeF0tPnsndmFsdWUnfSAkQ1JM
RiI7IH0KCQllbHNpZiAoJHJjdmQtPlskeF0tPnsndmFsdWUnfSA9fiBzL15mcm9tXHMrPygk
SEVMTykgXChwcm94eWluZyBmb3IgKCRJUClcKSBcKC4qPyB1c2VyICgkTFVTRVIpXCkvL2dp
cykJeyAkaGVsbz0kMTsgJGlwYWQ9JDI7ICRpZG50PSQzOyAJCX0jIHByaW50ICJYLSR4LW1h
dGNoZWQtMjQ6IGhlbG89JGhlbG8sIGlwYWQ9JGlwYWQsIGlkbnQ9JGlkbnQsIHJlbWFpbmlu
Zz0kcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ICRDUkxGIjsgfQoJCWVsc2lmICgkcmN2ZC0+WyR4
XS0+eyd2YWx1ZSd9ID1+IHMvXmZyb21ccys/KCRIRUxPKSBcKGFjY291bnQgKCRMVVNFUikg
XFsoJElQKVxdIHZlcmlmaWVkXCkvL2dpcykgCXsgJGhlbG89JDE7ICRpZG50PSQyOyAkaXBh
ZD0kMzsgCQl9IyBwcmludCAiWC0keC1tYXRjaGVkLTI1OiBoZWxvPSRoZWxvLCBpZG50PSRp
ZG50LCBpcGFkPSRpcGFkLCByZW1haW5pbmc9JHJjdmQtPlskeF0tPnsndmFsdWUnfSAkQ1JM
RiI7IH0KCQllbHNpZiAoJHJjdmQtPlskeF0tPnsndmFsdWUnfSA9fiBzL15mcm9tXHMrP1wo
PygkSEVMTykgXCg/XFs/KCRJUClcXT9cKT8vL2dpcykgCQkJCXsgJGhlbG89JDE7ICRpcGFk
PSQyOyAJCQkJfSMgcHJpbnQgIlgtJHgtbWF0Y2hlZC0yNjogaGVsbz0kaGVsbywgaXBhZD0k
aXBhZCwgcmVtYWluaW5nPSRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gJENSTEYiOyB9CgkJZWxz
aWYgKCRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gPX4gcy9eZnJvbVxzKz8oJEhFTE8pIFwobG9j
YWxob3N0IFxbLio/OigkSVApXF1cKS8vZ2lzKSAJCQl7ICRoZWxvPSQxOyAkaXBhZD0kMjsg
CQkJCX0jIHByaW50ICJYLSR4LW1hdGNoZWQtMjc6IGhlbG89JGhlbG8sIGlwYWQ9JGlwYWQs
IHJlbWFpbmluZz0kcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ICRDUkxGIjsgfQoJCWVsc2lmICgk
cmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ID1+IHMvXmZyb21ccys/KCRIRUxPKSBcKCgkTFVTRVIp
XEAoJFJETlMpXCkvL2dpcykgCQkJeyAkaGVsbz0kMTsgJGlkbnQ9JDI7ICRyZG5zPSQzOyAJ
CX0jIHByaW50ICJYLSR4LW1hdGNoZWQtMjg6IGhlbG89JGhlbG8sIGlkbnQ9JGlkbnQsIHJk
bnM9JHJkbnMsIHJlbWFpbmluZz0kcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ICRDUkxGIjsgfQoJ
CWVsc2lmICgkcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ID1+IHMvXmZyb21ccys/KCRIRUxPKSBc
KCgkUkROUylcKS8vZ2lzKSAJCQkJCXsgJGhlbG89JDE7ICRyZG5zPSQyOyAJCQkJfSMgcHJp
bnQgIlgtJHgtbWF0Y2hlZC0yOTogaGVsbz0kaGVsbywgcmRucz0kcmRucywgcmVtYWluaW5n
PSRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gJENSTEYiOyB9CgkJZWxzaWYgKCRyY3ZkLT5bJHhd
LT57J3ZhbHVlJ30gPX4gcy9cKGZyb21ccys/KCRMVVNFUilcQCgkUkROUylcKS8vZ2lzKQkJ
CQkJeyAkaWRudD0kMTsgJHJkbnM9JDI7IAkJCQl9IyBwcmludCAiWC0keC1tYXRjaGVkLTMw
OiBpZG50PSRpZG50LCByZG5zPSRyZG5zLCByZW1haW5pbmc9JHJjdmQtPlskeF0tPnsndmFs
dWUnfSAkQ1JMRiI7IH0KCQllbHNpZiAoJHJjdmQtPlskeF0tPnsndmFsdWUnfSA9fiBzL1wo
ZnJvbVxzKz8oJExVU0VSKVxAKCRIRUxPKVwpLy9naXMpCQkJCQl7ICRpZG50PSQxOyAkaGVs
bz0kMjsgCQkJCX0jIHByaW50ICJYLSR4LW1hdGNoZWQtMzE6IGlkbnQ9JGlkbnQsIGhlbG89
JGhlbG8sIHJlbWFpbmluZz0kcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ICRDUkxGIjsgfQoJCWVs
c2lmICgkcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ID1+IHMvXmZyb21ccys/XCg/XFs/KCRJUClc
XT9cKT8vL2dpcykgCQkJCQl7ICRpcGFkPSQxOyAJCQkJCX0jIHByaW50ICJYLSR4LW1hdGNo
ZWQtMzI6IGlwYWQ9JGlwYWQsIHJlbWFpbmluZz0kcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ICRD
UkxGIjsgfQoJCWVsc2lmICgkcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ID1+IHMvXmZyb21ccys/
KCRIRUxPKSg/PVxXfDt8JCkvL2dpcykgCQkJCQl7ICRoZWxvPSQxOyAJCQkJCX0jIHByaW50
ICJYLSR4LW1hdGNoZWQtMzM6IGhlbG89JGhlbG8sIHJlbWFpbmluZz0kcmN2ZC0+WyR4XS0+
eyd2YWx1ZSd9ICRDUkxGIjsgfQoKCQkjIGxvb2t1cCBJUCBpZiBub3QgcHJvdmlkZWQKCQkk
aXBhZCA9IGhvc3QoJHJkbnMpIGlmICEkaXBhZCAmJiAkcmRucyAmJiAkb3B0aW9ucyA9fiAv
ZC87CgkJJGlwYWQgPSBob3N0KCRoZWxvKSBpZiAhJGlwYWQgJiYgISRyZG5zICYmICRoZWxv
ICYmICRoZWxvID1+IC8kRE9NQUlOLyAmJiAkb3B0aW9ucyA9fiAvZC87CgoJCSMgZXhjbHVk
ZSBsaW5lcyB3aXRoIG5vIElQCgkJI25leHQgaWYgISRpcGFkICYmICgoc2NhbGFyIEAkcmN2
ZCkgPiAxKTsKCgkJIyBlbnN1cmUgdGhlIGxvY2FsIHJlY2VpdmVkIGxpbmUgaGFzIGEgZGF0
ZSBzdGFtcAoJCSRkYXRlID0gZ210aW1lIHRpbWUgdW5sZXNzICRkYXRlIHx8ICR4OwoKCQkj
IHNhdmUgImZyb20iIGluZm8gZm9yIGNvbXBhcmlzb24gaW4gbmV4dCBpdGVyYXRpb24KCQkk
cmN2ZC0+WyR4XS0+eydyZG5zJ30JPSAkcmRuczsJCQoJCSRyY3ZkLT5bJHhdLT57J2lwYWQn
fQk9ICRpcGFkOwoJCSRyY3ZkLT5bJHhdLT57J2RhdGUnfQk9ICRkYXRlOwoKCQkjIGV4Y2x1
ZGUgbGluZXMgZnJvbSBsb2NhbCwgcHJpdmF0ZSAoUkZDIDE5MTgpLCBhbmQgaW52YWxpZCBJ
UCBhZGRyZXNzIHJhbmdlcwoJCW15ICRyZXNlcnZlZCA9IHFyfl4oKD86MTI3XC4pfCg/OjEw
XC4pfCg/OjE3MlwuKD86MVs2LTldfDJbMC05XXwzMSlcLil8KD86MTkyXC4xNjhcLil8KD86
MTY5XC4yNTRcLikpfjsKCQlteSAkdmFsaWQgPSBxcn5eKCg/OjA/MD9cZHxbMDFdP1xkXGR8
MlswLTRdXGR8MjVbMC01XSlcLig/OjA/MD9cZHxbMDFdP1xkXGR8MlswLTRdXGR8MjVbMC01
XSlcLig/OjA/MD9cZHxbMDFdP1xkXGR8MlswLTRdXGR8MjVbMC01XSlcLig/OjA/MD9cZHxb
MDFdP1xkXGR8MlswLTRdXGR8MjVbMC01XSkpJH47CgkJbmV4dCBpZiAoKCRyZG5zIGFuZCAk
cmRucyA9fiAvbG9jYWxob3N0L2kpIHx8ICgkaXBhZCBhbmQgKCRpcGFkID1+IC8kcmVzZXJ2
ZWQvIHx8ICRpcGFkICF+IC8kdmFsaWQvKSkpICYmICgoc2NhbGFyIEAkcmN2ZCkgPiAxKTsK
CQkKCQkjIGxvb2t1cCBNVEEgSVAvckROUyBpZiBub3QgcHJvdmlkZWQKCQkkbXRhaSA9IGhv
c3QoJG10YW4pIGlmICEkbXRhaSAmJiAkbXRhbiAmJiAkb3B0aW9ucyA9fiAvZC87CgkJJG10
YW4gPSBob3N0KCRtdGFpKSBpZiAhJG10YW4gJiYgJG10YWkgJiYgJG9wdGlvbnMgPX4gL2Qv
OwoKCQkjIGV4Y2x1ZGUgbGluZXMgZnJvbSB3aXRoaW4gb3VyIGNsYXNzIEIgKC8xNikgbmV0
d29yawoJCW5leHQgaWYgKCgkZWRnZV9pcCAmJiAkaXBhZCAmJiBpc19zYW1lX2NsYXNzX0Io
JGVkZ2VfaXAsJGlwYWQpKXx8KCEkZWRnZV9pcCAmJiAkbXRhaSAmJiAkaXBhZCAmJiBpc19z
YW1lX2NsYXNzX0IoJG10YWksJGlwYWQpKSkgJiYgKChzY2FsYXIgQCRyY3ZkKSA+IDEpOwoJ
CQoJCSMgcGVyZm9ybSByZXZlcnNlIEROUyBsb29rdXAgaWYgbm90IHByb3ZpZGVkIGJ5IE1U
QQoJCSRyZG5zID0gaG9zdCgkaXBhZCkgaWYgISRyZG5zICYmICRpcGFkICYmICRvcHRpb25z
ID1+IC9kLzsKCQkKCQkjIGZvcmNlIGEgcmV2ZXJzZSBETlMgbG9va3VwIG9uIGFsbCBJUHMs
IGV2ZW4gdGhvc2Ugd2l0aCBhbiBSRE5TIHNldCBieSB0aGUgTVRBCgkJJHJkbnMgPSBob3N0
KCRpcGFkKSBpZiAkaXBhZCAmJiAkb3B0aW9ucyA9fiAvZi87CgkJCgkJIyBwZXJmb3JtIEFT
TiBsb29rdXAgKFJGQyAxOTMwLzIyNzApCgkJbXkgJGFzbiA9ICIiOwoJCSRhc24gPSBhc24o
JGlwYWQpIGlmICRpcGFkICYmICRvcHRpb25zID1+IC9hLzsKCgkJIyBwZXJmb3JtIFNQRiBs
b29rdXAgKFJGQyA0NDA4KQoJCW15ICRyZXN1bHQgPSAiIjsgbXkgJHJlY2VpdmVkX3NwZiA9
ICIiOwoJCWlmICgkb3B0aW9ucyA9fiAvcC8pCgkJewoJCQlpZiAoc2NhbGFyIEBjaWRyX2xp
c3QgJiYgZXZhbHtOZXQ6OkNJRFI6OmNpZHJsb29rdXAoJGlwYWQsIEBjaWRyX2xpc3QpfSkK
CQkJewoJCQkJJHJlc3VsdCA9ICJwYXNzIjsKCQkJCSRyZWNlaXZlZF9zcGYgPSAicGFzcyAo
JGlwYWQgaXMgbG9jYWxseSB3aGl0ZWxpc3RlZCkiOwoJCQl9CgoJCQlpZiAoJGRiZmlsZSAm
JiAhJHJlc3VsdCkKCQkJewoJCQkJJnJldGllIHVubGVzcyB0aWVkICVkYjsKCQkJCWlmICgk
ZGJ7JGlwYWR9KQoJCQkJewoJCQkJCSRyZXN1bHQgPSAicGFzcyI7CgkJCQkJJHJlY2VpdmVk
X3NwZiA9ICJwYXNzICgkaXBhZCBpcyBhdXRoZW50aWNhdGVkIHZpYSBQT1AzKSI7CgkJCQl9
CgkJCX0KCQkJCgkJCWlmICgkcnRybiAmJiAkaXBhZCAmJiAhJHJlc3VsdCkKCQkJewoJCQkg
ICAgbXkgJHNydnIgPSAkcmRucz8kcmRuczooJGhlbG8/JGhlbG86JGlwYWQpOwoJCQkgICAg
ZXZhbCB7CgkJCQlteSAkc3BmX3NlcnZlciA9IE1haWw6OlNQRjo6U2VydmVyLT5uZXcoKTsK
CQkJCW15ICRyZXF1ZXN0ID0gTWFpbDo6U1BGOjpSZXF1ZXN0LT5uZXcoCgkJCQkgICAgaWRl
bnRpdHkgPT4gJHJ0cm4sCgkJCQkgICAgaXBfYWRkcmVzcyA9PiAkaXBhZCwKCQkJCSAgICBo
ZWxvX2lkZW50aXR5ID0+ICRzcnZyCgkJCQkgICAgKTsKCQkJCW15ICRyZXNwb25zZSA9ICRz
cGZfc2VydmVyLT5wcm9jZXNzKCRyZXF1ZXN0KTsKCQkJCSRyZXN1bHQgPSAkcmVzcG9uc2Ut
PmNvZGU7CgkJCQkkcmVjZWl2ZWRfc3BmID0gJHJlc3BvbnNlLT5yZWNlaXZlZF9zcGZfaGVh
ZGVyOwoJCQkgICAgfTsKCQkJICAgIGlmICgkQCkgewoJCQkJc3lzbG9nKCd3YXJuaW5nJywg
J1NQRiBxdWVyeSBlcnJvciAoaXA9JXMsIHNlbmRlcj0lcywgaGVsbz0lcyk6ICVzJywKCQkJ
CSAgICAgICAkaXBhZCwgJHJ0cm4sICRzcnZyLCAkQCk7CgkJCQkkQCA9IHVuZGVmOwoJCQkJ
JHJlc3VsdCA9IHVuZGVmOwoJCQkgICAgfQoJCQl9CgkJCQoJCQlpZiAoISRyZXN1bHQpCgkJ
CXsKCQkJCSRyZXN1bHQgPSAiZXJyb3IiOwoJCQkJJHJlY2VpdmVkX3NwZiA9ICJ1bmFibGUg
dG8gZGV0ZXJtaW5lIHNlbmRlciBpbmZvIjsKCQkJfQoJCX0KCgkJIyB3ZSBpbXBsaWNpdGVs
eSB0cnVzdCB0aGUgcmVjZWl2ZWQgbGluZSBzZXQgImJ5IiBvdXIgb3duIHNlcnZlciBhcyB2
YWxpZCAoZmlyc3QgdW50cnVzdGVkICJmcm9tIikKCQlpZiAoISRlZGdlX2lwKSAKCQl7IAoJ
CQkkZWRnZV9pcCA9ICRtdGFpOyAKCQkJJHJjdmQtPlskeF0tPnsnc2FuZSd9ID0gc2V0X3Jj
dmQoJGhlbG8sJGlwYWQsJGlkbnQsJHJkbnMsJGZyb20sJG10YW4sJG10YWksJG10YXYsJGZv
cmUsJHdpdGgsJGRhdGUsJGFzbiwkcmVzdWx0KTsgCgkJCSRyY3ZkLT5bJHhdLT57J3NwZid9
ID0gJHJlY2VpdmVkX3NwZiBpZiAkb3B0aW9ucyA9fiAvcC87CgkJfQoKCQkjIG5vdyB3ZSds
bCB0cnkgdG8gZXN0YWJsaXNoIHRoZSB2YWxpZGl0eSBvZiBlYWNoIHJlY2VpdmVkIGxpbmUg
YnkgY2hlY2tpbmcgCgkJIyBmb3IgY29udGludWl0eSBhbmQgcmVqZWN0aW5nIGxpbmVzIHRo
YXQgZG9uJ3QgZml0IHRoZSAiZnJvbS9ieSIgY2hhaW4KCQllbHNlCgkJewoJCQkjcHJpbnQg
IiBieSAiIC4gJG10YW4gLiAiIC8gcHJldiBmcm9tICIgLiAkcmN2ZC0+WyR4LTFdLT57J3Jk
bnMnfSAuICIkQ1JMRiI7CgkJCSNwcmludCAiIGJ5ICIgLiAkbXRhaSAuICIgLyBwcmV2IGZy
b20gIiAuICRyY3ZkLT5bJHgtMV0tPnsnaXBhZCd9IC4gIiRDUkxGIjsKCQkJaWYgKAoJCQkJ
KAoJCQkJCSgkbXRhbiAmJiAkcmN2ZC0+WyR4LTFdLT57J3JkbnMnfSAmJiAkbXRhbiA9fiAv
JHJjdmQtPlskeC0xXS0+eydyZG5zJ30vKSB8fCAKCQkJICAgICAJCSgkbXRhaSAmJiAkcmN2
ZC0+WyR4LTFdLT57J2lwYWQnfSAmJiAkbXRhaSA9fiAvJHJjdmQtPlskeC0xXS0+eydpcGFk
J30vKQoJCQkJKSAmJiAJKCEkdW50cnVzdGVkKQoJCQkgICApIAoJCQkgICAgIHsgCgkJCQkk
cmN2ZC0+WyR4XS0+eydzYW5lJ30gPSBzZXRfcmN2ZCgkaGVsbywkaXBhZCwkaWRudCwkcmRu
cywkZnJvbSwkbXRhbiwkbXRhaSwkbXRhdiwkZm9yZSwkd2l0aCwkZGF0ZSwkYXNuLCRyZXN1
bHQpOyAKCQkJCSRyY3ZkLT5bJHhdLT57J3NwZid9ID0gJHJlY2VpdmVkX3NwZiBpZiAkb3B0
aW9ucyA9fiAvcC87CgkJCSAgICAgfQoJCQllbHNlIAoJCQl7IAoJCQkJJGhlbG8gPSAidW50
cnVzdGVkLSIuJGhlbG8gaWYgJGhlbG87ICRpcGFkID0gInVudHJ1c3RlZC0iLiRpcGFkIGlm
ICRpcGFkOwoJCQkJJGlkbnQgPSAidW50cnVzdGVkLSIuJGlkbnQgaWYgJGlkbnQ7ICRyZG5z
ID0gInVudHJ1c3RlZC0iLiRyZG5zIGlmICRyZG5zOwoJCQkJJGZyb20gPSAidW50cnVzdGVk
LSIuJGZyb20gaWYgJGZyb207ICRtdGFuID0gInVudHJ1c3RlZC0iLiRtdGFuIGlmICRtdGFu
OwoJCQkJJG10YWkgPSAidW50cnVzdGVkLSIuJG10YWkgaWYgJG10YWk7ICRtdGF2ID0gInVu
dHJ1c3RlZC0iLiRtdGF2IGlmICRtdGF2OwoJCQkJJGZvcmUgPSAidW50cnVzdGVkLSIuJGZv
cmUgaWYgJGZvcmU7ICR3aXRoID0gInVudHJ1c3RlZC0iLiR3aXRoIGlmICR3aXRoOwoJCQkJ
JGRhdGUgPSAiIjsgJGFzbiA9ICIiOyAkcmVzdWx0ID0gIiI7CgkJCQkkcmN2ZC0+WyR4XS0+
eydzYW5lJ30gPSBzZXRfcmN2ZCgkaGVsbywkaXBhZCwkaWRudCwkcmRucywkZnJvbSwkbXRh
biwkbXRhaSwkbXRhdiwkZm9yZSwkd2l0aCwkZGF0ZSwkYXNuLCRyZXN1bHQpOyAKCQkJCSR1
bnRydXN0ZWQgPSAxOyAKCQkJfQoJCX0KCX19CgkKCXJldHVybiAkcmN2ZDsKfQoKc3ViIGlz
X3NhbWVfY2xhc3NfQgp7CglteSAoJGlwMSwkaXAyKSA9IEBfOwoJJGlwMSA9fiBzL14oXGR7
MSwzfVwuXGR7MSwzfVwuKS4qPyQvJDEvZ2lzOwoJJGlwMiA9fiBzL14oXGR7MSwzfVwuXGR7
MSwzfVwuKS4qPyQvJDEvZ2lzOwoJCglyZXR1cm4gKCRpcDEgZXEgJGlwMik/IDE6MDsKfQoK
c3ViIGFzbgp7CglteSAkdGFyZ2V0ID0gc2hpZnQ7CglteSAkb3V0cHV0ID0gIiI7CgogICAg
ICAgIG15ICRJUCAgICAgICAgICA9IHFyfig/OlxkezEsM31cLil7M31cZHsxLDN9fjsKICAg
ICAgICBteSAkRE9NQUlOICAgICAgPSBxcn4oPzpcd3wtfFwuKSs/XC5cd3syLDR9fjsKCglp
ZiAoICR0YXJnZXQgPX4gcy8oXGR7MSwzfSlcLihcZHsxLDN9KVwuKFxkezEsM30pXC4oXGR7
MSwzfSkvJDQuJDMuJDIuJDEuJGFzbl9zZXJ2ZXIvICkKCXsKCQkjIHVuY29tbWVudCB0aGlz
IGNvZGUgaWYgeW91IGRvIG5vdCB3YW50IHRvIHVzZSBOZXQ6OkROUzo6UmVzb2x2ZXIgYW5k
IHlvdSBoYXZlICdob3N0JyBvbiB5b3VyIHN5c3RlbQoJCSNvcGVuIChIT1NULCAiaG9zdCAt
dCB0eHQgJHRhcmdldCAyPi9kZXYvbnVsbCB8Iikgb3IgZXJyb3IoIndhcm4iLCJIb3N0IGxv
b2t1cCBmYWlsZWQ6ICQhIik7CgkJI3doaWxlICg8SE9TVD4pIHsgJG91dHB1dCA9ICQxIGlm
IC9cUSR0YXJnZXRcRSg/OiBkZXNjcmlwdGl2ZSk/IHRleHQgIihcZCo/KSIuKi87IH0KCQkj
Y2xvc2UgSE9TVDsKCiAgICAgICAgICAgICAgICAjIGZpbmQgQVNOIGluZm8gdmlhIE5ldDo6
RE5TOjpSZXNvbHZlcgoJICAgICAgICBpZiAobXkgJHF1ZXJ5ID0gJHJlcy0+c2VuZCgkdGFy
Z2V0LCJUWFQiKSkgeyBmb3JlYWNoICgkcXVlcnktPmFuc3dlcikgeyAkb3V0cHV0ID0gJDEg
aWYgJF8tPnN0cmluZyA9fiAvJERPTUFJTlwuXHMrP1xkKz9ccys/SU5ccys/VFhUXHMrPyIo
XGQrPykiXHMrPyIkSVAiXHMrPyJcZCs/Ii87IH19CiAgICAgICAgICAgICAgICAjZWxzZSB7
IGVycm9yKCJ3YXJuIiwiQVNOIGxvb2t1cCBmYWlsZWQ6ICIgLiAkcmVzLT5lcnJvcnN0cmlu
Zyk7IH0KCX0gCgoJcmV0dXJuICRvdXRwdXQ7Cn0KCnN1YiBob3N0CnsKCW15ICR0YXJnZXQg
PSBzaGlmdDsKCW15ICRvdXRwdXQgPSAiIjsKCQoJbXkgJElQCQk9IHFyfig/OlxkezEsM31c
Lil7M31cZHsxLDN9fjsJCglteSAkRE9NQUlOCT0gcXJ+KD86XHd8LXxcLikrP1wuXHd7Miw0
fX47CgoJaWYgKCR0YXJnZXQgPX4gcy8oJElQfCRET01BSU4pLyQxLykKCXsKCQkjIHVuY29t
bWVudCB0aGlzIGNvZGUgaWYgeW91IGRvIG5vdCB3YW50IHRvIHVzZSBOZXQ6OkROUzo6UmVz
b2x2ZXIgYW5kIHlvdSBoYXZlICdob3N0JyBvbiB5b3VyIHN5c3RlbQoJCSNvcGVuIChIT1NU
LCAiaG9zdCAkdGFyZ2V0IDI+L2Rldi9udWxsIHwiKSBvciBlcnJvcigid2FybiIsIkhvc3Qg
bG9va3VwIGZhaWxlZDogJCEiKTsKCQkjd2hpbGUgKDxIT1NUPikgeyAkb3V0cHV0ID0gJDEg
aWYgLyRET01BSU4gKD86ZG9tYWluIG5hbWUgcG9pbnRlcnxoYXMgYWRkcmVzcykgKCRJUHwk
RE9NQUlOKVwuPy87IH0KCQkjY2xvc2UgSE9TVDsKCgkJIyBmaW5kIEROUyBpbmZvIHZpYSBO
ZXQ6OkROUzo6UmVzb2x2ZXIKCSAgICAgICAgaWYgKG15ICRxdWVyeSA9ICRyZXMtPnNlbmQo
JHRhcmdldCkpIHsgZm9yZWFjaCAoJHF1ZXJ5LT5hbnN3ZXIpIHsgJG91dHB1dCA9ICQxIGlm
ICRfLT5zdHJpbmcgPX4gLyRET01BSU5cLlxzKz9cZCs/XHMrP0lOXHMrPyg/OlBUUnxBKVxz
Kz8oJElQfCRET01BSU4pXC4/LzsgfX0KICAgICAgICAJI2Vsc2UgeyBlcnJvcigid2FybiIs
IkROUyBsb29rdXAgZmFpbGVkOiAiIC4gJHJlcy0+ZXJyb3JzdHJpbmcpOyB9Cgl9CgkKCXJl
dHVybiAkb3V0cHV0Owp9CgpzdWIgc2V0X3JjdmQKewoJbXkgKCRoZWxvLCRpcGFkLCRpZG50
LCRyZG5zLCRmcm9tLCRtdGFuLCRtdGFpLCRtdGF2LCRmb3JlLCR3aXRoLCRkYXRlLCRhc24s
JHNwZikgPSBAXzsKCglteSAkb3V0cHV0ID0gImZyb20iOwoJaWYgKCRvcHRpb25zID1+IC9l
LykgewoJJG91dHB1dCAuPSAoJGhlbG8pPyAJCSIgaGVsby0kaGVsbyIgCTogIiBuby1oZWxv
Ijt9CQkjIHNlbmRlcidzIHNhbHV0YXRpb24KCSRvdXRwdXQgLj0gKCRyZG5zKT8gCQkiICRy
ZG5zIiAJOiAiIG5vLXJkbnMiOwkJIyBzZW5kZXIncyBuYW1lCgkkb3V0cHV0IC49ICgkaXBh
ZCk/IAkJIiAkaXBhZCIgCTogIiBuby1pcGFkIjsJCSMgc2VuZGVyJ3MgSVAKICAgICAgICBp
ZiAoJG9wdGlvbnMgPX4gL3AvKSB7Cgkkb3V0cHV0IC49ICgkc3BmKT8JCSIgc3BmLSRzcGYi
CTogIiBuby1zcGYiO30JCSMgc2VuZGVyJ3MgcG9saWN5IHJlc3VsdAoJJG91dHB1dCAuPSAo
JGFzbik/ICAJCSIgYXMkYXNuIiAJOiAiIG5vLWFzbiI7CQkjIHNlbmRlcidzIEFTTgoJJG91
dHB1dCAuPSAoJG10YW58fCRtdGFpKT8gCSIgJENSTEZcdCAgYnkiCTogIiI7Cgkkb3V0cHV0
IC49ICgkbXRhbik/IAkJIiAkbXRhbiIgCTogIiBuby1tdGEtbmFtZSI7CSMgcmVjZWl2aW5n
IE1UQSdzIG5hbWUKCSRvdXRwdXQgLj0gKCRtdGFpKT8gCQkiICRtdGFpIiAJOiAiIG5vLW10
YS1pcCI7CQkjIHJlY2VpdmluZyBNVEEncyBJUAoJJG91dHB1dCAuPSAoJGZvcmUpPyAJCSIg
JENSTEZcdCAgZm9yIiA6ICIiOwoJJG91dHB1dCAuPSAoJGZvcmUpPyAJCSIgPCRmb3JlPiIg
CTogIiBuby10by1hZGRyIjsJIyBlbnZlbG9wZSB0byBhZGRyZXNzCgkkb3V0cHV0IC49ICgk
ZGF0ZSk/IAkJIjsgJGRhdGUiIAk6ICIgbm8tZGF0ZSI7CQkjIHJlY2VpdmVkIGRhdGUvdGlt
ZQoKCSNwcmludCAib3V0cHV0dGluZyByZWNlaXZlZDogJG91dHB1dCIgLiAkQ1JMRjsKCXJl
dHVybiAkb3V0cHV0Owp9CgpzdWIgb3BlbmRiX3JlYWQgCnsKICAgIHRpZSglZGIsICJEQl9G
aWxlIiwgJGRiZmlsZSwgT19SRE9OTFksIDAsICREQl9IQVNIKSBvciBlcnJvcigid2FybiIs
IkNhbid0IG9wZW4gJGRiZmlsZTogJCEiKTsKfQoKc3ViIGNsb3NlZGIgCnsKICAgIHVudGll
ICVkYjsKICAgIHVuZGVmICVkYjsKfQoKc3ViIHJldGllIAp7CiAgICAmY2xvc2VkYjsKICAg
ICZvcGVuZGJfcmVhZDsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCiMjIyMjIyMjIyMjIyMjIyMgT3V0cHV0IEhlYWRlciAjIyMjIyMjIyMj
IyMjIyMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKCnN1YiBzZXRfaGVhZGVyCnsKCW15ICRoZWFkZXIgPSBzaGlmdDsKCW15ICRvdXRwdXQg
PSAiIjsKCW15ICRuYW1lID0gIiI7CgkKCSMgZXhjbHVkZSB0aGUgIm1hc2tlZCBmaWVsZHMi
IGZyb20gZGlzcGxheQoJZm9yZWFjaCAkbmFtZSAoc3BsaXQoLywvLCRtYXNrZWRfZmllbGRz
KSkgeyAkc3BlY19maWVsZHMgPX4gcy8oPzw9LCkkbmFtZSw/Ly87IH0KCgkjIG91dHB1dCB0
aGUgZmllbGRzIGluIHRoZSBvcmRlciBzcGVjaWZpZWQgYnkgUkZDIDI4MjIgLSBtaW51cyB0
aGUgbWFza2VkIGZpZWxkcwoJZm9yZWFjaCAkbmFtZSAoc3BsaXQoLywvLCRzcGVjX2ZpZWxk
cykpIHsgJG91dHB1dCAuPSBzZXRfZmllbGQoJGhlYWRlciwkbmFtZSk7IGRlbGV0ZSAkaGVh
ZGVyLT57JG5hbWV9OyB9CgoJIyBzZXQgYW55IHVzZXItc3BlY2lmaWVkIGZpZWxkcwoJZm9y
ZWFjaCAkbmFtZSAoc3BsaXQoLywvLCR1c2VyX2ZpZWxkcykpIHsgJG91dHB1dCAuPSBzZXRf
ZmllbGQoJGhlYWRlciwkbmFtZSk7IGRlbGV0ZSAkaGVhZGVyLT57JG5hbWV9OyB9CgoJIyBz
ZXQgbmV3IGN1c3RvbSB4LWhlYWRlciBmaWVsZHMKCWlmICgkb3B0aW9ucyA9fiAveC8pIHsg
Zm9yZWFjaCAkbmFtZSAoc3BsaXQoLywvLCRuZXdfZmllbGRzKSkgeyAkb3V0cHV0IC49IHNl
dF9maWVsZCgkaGVhZGVyLCRuYW1lKTsgZGVsZXRlICRoZWFkZXItPnskbmFtZX07IH0gfQoK
CSMgdGhlbiBzZXQgYW55IHJlbWFpbmluZyBmaWVsZHMgKGlmIGFsbG93ZWQgdG8gc2V0IG5v
bi1zdGFuZGFyZCBmaWVsZHMpCglpZiAoJG9wdGlvbnMgIX4gL3MvKSB7IGZvcmVhY2ggJG5h
bWUgKGtleXMgJXskaGVhZGVyfSkgeyAkb3V0cHV0IC49IHNldF9maWVsZCgkaGVhZGVyLCRu
YW1lKTsgfSB9CgoJJG91dHB1dCAuPSAkQ1JMRjsKCQoJcmV0dXJuICRvdXRwdXQ7Cn0KCnN1
YiBzZXRfZmllbGQgewogICAgbXkoJGhlYWRlciwgJG5hbWUpID0gQF87CiAgICBteSAkb3V0
cHV0ID0gIiI7CgogICAgaWYgKCRoZWFkZXItPnskbmFtZX0pIHsKICAgICAgICBmb3JlYWNo
IG15ICRoZWFkZXIgKEB7JGhlYWRlci0+eyRuYW1lfX0pIHsKICAgICAgICAgICAgaWYgKCRu
YW1lIGVxICJyZWNlaXZlZCIgYW5kICRvcHRpb25zID1+IC9yLykgewogICAgICAgICAgICAg
ICAgaWYgKCRoZWFkZXItPnsnc2FuZSd9IGFuZCAkaGVhZGVyLT57J3NhbmUnfSA9fiAvXHcv
KSB7CiAgICAgICAgICAgICAgICAgICAgJG91dHB1dCAuPSAkaGVhZGVyLT57J25hbWUnfSAu
ICI6ICIgLiAkaGVhZGVyLT57J3NhbmUnfSAuCiAgICAgICAgICAgICAgICAgICAgICAgICRD
UkxGOyAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICMgZWxzZSB7CiAgICAg
ICAgICAgICAgICAjICAgICAkb3V0cHV0IC49ICRoZWFkZXItPnsnbmFtZSd9IC4gIjogc2Fu
aXR5IGNoZWNrIGZhaWxlZCIgLgogICAgICAgICAgICAgICAgIyAgICAgICAgICRDUkxGOwog
ICAgICAgICAgICAgICAgIyB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCRo
ZWFkZXItPnsnbmFtZSd9IGFuZCBkZWZpbmVkKCRoZWFkZXItPnsndmFsdWUnfSkpIHsKICAg
ICAgICAgICAgICAgICRvdXRwdXQgLj0gJGhlYWRlci0+eyduYW1lJ30gLiAiOiAiIC4gJGhl
YWRlci0+eyd2YWx1ZSd9IC4KICAgICAgICAgICAgICAgICAgICAkQ1JMRjsgCiAgICAgICAg
ICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBteSAkZHVtcGVkID0g
RGF0YTo6RHVtcGVyLT5uZXcoWyRoZWFkZXJdLCBbcXcoaGVhZGVyKV0pLT4KICAgICAgICAg
ICAgICAgICAgICBJbmRlbnQoMCktPkR1bXAoKTsKICAgICAgICAgICAgICAgIGVycm9yKCJ3
YXJuIiwgIkhlYWRlciBmb3IgJG5hbWUsICRkdW1wZWQsIGlzIG1pc3NpbmcgbmFtZSAiIC4K
ICAgICAgICAgICAgICAgICAgICAgICJhbmQvb3IgdmFsdWU/Iik7CiAgICAgICAgICAgIH0K
ICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoJHJlcV9maWVsZHMgPX4gLyg/Ol58LCkkbmFt
ZSg/Oix8JCkvKSB7CiAgICAgICAgJG91dHB1dCAuPSB1Y2ZpcnN0KCRuYW1lKSAuICI6IFtu
by0kbmFtZV0gIiAuICRDUkxGOyAKICAgIH0KICAgIAogICAgcmV0dXJuICRvdXRwdXQ7Cn0K
CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMj
IyMjIyMjIyMjIyMjIEVycm9yIEhhbmRsaW5nICMjIyMjIyMjIyMjIyMjIyMKIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpzdWIgZXJyb3IKewoJ
bXkgKCRhY3Rpb24sJG1zZykgPSBAXzsKCglkaWUgJG1zZyBpZiAkYWN0aW9uIGVxICJkaWUi
OwoJd2FybiAkbXNnIHVubGVzcyAkYWN0aW9uIGVxICJkaWUiOwoJIyBhZGQgb3RoZXIgYWN0
aW9ucyBpZiB5b3UgbGlrZQp9CgpzdWIgc2lnX3RyYXAKewoJbXkgJHNpZyA9IHNoaWZ0OwoJ
bXkgKCRhY3Rpb24sJG1vcmUpID0gKCJ3YXJuIiwiIik7CgoJc2lnOiAKCXsKICAgICAgICAJ
JGFjdGlvbiA9ICJkaWUiLCAgbGFzdCBzaWcgaWYgJHNpZyA9fiAvQUxSTS87CgkgICAgICAg
ICRhY3Rpb24gPSAid2FybiIsIGxhc3Qgc2lnIGlmICRzaWcgPX4gL1BJUEUvOwoJICAgICAg
ICAkYWN0aW9uID0gIndhcm4iLCBsYXN0IHNpZyBpZiAkc2lnID1+IC9DSExELzsKICAgICAg
ICAJJGFjdGlvbiA9ICJkaWUiICwgbGFzdCBzaWcgaWYgJHNpZyA9fiAvSU5ULzsKCSAgICAg
ICAgJGFjdGlvbiA9ICJkaWUiICwgbGFzdCBzaWcgaWYgJHNpZyA9fiAvSFVQLzsKICAgICAg
ICAJJGFjdGlvbiA9ICJ3YXJuIjsKCX0KCQoJbXkgJHdhaXRlZHBpZCA9IHdhaXQ7CgkkbW9y
ZSA9ICI7IFJlYXBlZCBwaWQgJHdhaXRlZHBpZCwgZXhpdGVkIHdpdGggc3RhdHVzICIgLiAo
JD8gPj4gOCkgaWYgJHdhaXRlZHBpZDsKCgkkU0lHeyRzaWd9ID0gXCZzaWdfdHJhcDsKCgll
cnJvciAoJGFjdGlvbiwiVHJhcHBlZCBzaWduYWwgU0lHJHNpZyRtb3JlIik7Cn0KCiMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCg==
--------------1A1FB06E89434E8289702D64
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
bogofilter-dev mailing list
[email protected]
https://www.bogofilter.org/mailman/listinfo/bogofilter-dev

--------------1A1FB06E89434E8289702D64--