Re: Spamitarium changes

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

OK, I guess the mailing list doesn't allow zip attachments? Here is
again as a text file (which, alas, means that this message is going to
get blocked by mailman because it's more than 40k; it's a Catch-22!).

  jik

On 09/11/2017 08:55 PM, Jonathan Kamens wrote:
> Updated version of spamitarium.pl attached. Additional changes:
>
>   * A --timeout option has been added for specifying how long the script
>     should wait for input, or 0 to disable the timeout completely. This
>     is primarily useful for debugging the script.
>   * The header parsing code has been refactored to be cleaner and more
>     robust.
>   * In particular, empty header fields are now handled correctly
>     (previously, they were appended to the previous header field!).
>   * Empty header fields are now included in the output, for more
>     accurate bogofilter'ing.
>
> jik
>
> On 09/11/2017 05:04 PM, Matthias Andree wrote:
>> Am 11.09.2017 um 21:13 schrieb Jonathan Kamens:
>>> That's fine with me. I've attached my current version.
>>>
>> Hi Jonathan, Tom,
>>
>>
>> In the light of Tom's reply I have taken Jonathan's version and
>> committed it to SVN, so that it will become part of the next release.
>> (r7054 on the trunk).
>>
>> I have added jik to the AUTHORS section in the embedded perldoc.
>>
>> Let me know if you want something else changed.
>>
>>
>> Best regards,
>>
>> Matthias
>> _______________________________________________
>> bogofilter-dev mailing list
>> [email protected]
>> https://www.bogofilter.org/mailman/listinfo/bogofilter-dev
>>
> _______________________________________________
> bogofilter-dev mailing list
> [email protected]
> https://www.bogofilter.org/mailman/listinfo/bogofilter-dev
>


--------------8C6E894DEEE6226004BF8962
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
ICR2ZXJzaW9uID0gIjAuNC4wIjsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
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
Ckw8Ym9nb2ZpbHRlcj4KCj1iYWNrCgoKPWhlYWQxIEFVVEhPUgoKVG9tIEFuZGVyc29uIDxu
ZW8rc3BhbWl0YXJpdW1Ab3JkZXJhbWlkY2hhb3MuY29tPgoKPWN1dAoKIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMjIyMjIyMjIyMjIyMg
VXNlciBWYXJpYWJsZXMgICMjIyMjIyMjIyMjIyMjIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgcGxlYXNlIGVkaXQgYWNjb3JkaW5n
IHRvIHlvdXIgc2V0dXAKCiMgZGVmYXVsdCBwYXRoCm91ciAkcGF0aCA9ICIvYmluOi91c3Iv
YmluOi91c3IvbG9jYWwvYmluIjsKCiMgZGVmYXVsdCBzaGVsbApvdXIgJHNoZWxsID0gIi9i
aW4vc2giOwoKIyBzZWNvbmRzIGJlZm9yZSB3ZSBiYWlsIHdhaXRpbmcgb24gaW5wdXQKb3Vy
ICR0aW1lb3V0ID0gMzsKCiMgc2VydmVyIHRvIHVzZSBmb3IgQVNOIGxvb2t1cHMKb3VyICRh
c25fc2VydmVyID0gImFzbi5yb3V0ZXZpZXdzLm9yZyI7CgojIFdoaXRlbGlzdCBhbnkgSVAg
YWRkcmVzc2VzIG9yIHJhbmdlcyBmcm9tIFNQRiBsb29rdXBzCm91ciBAd2hpdGVsaXN0ID0g
KCIxMjcuMC4wLjEiLCIxOTIuMTY4LjAuMS0xOTIuMTY4LjAuMjU1Iik7CgojIElmIHlvdSB3
YW50IHRvIHdoaXRlbGlzdCBhbnkgYWRkcmVzc2VzIHdoaWNoIGhhdmUgYXV0aGVudGljYXRl
ZAojIHZpYSBwb3ByZWxheWQgKGkuZS4gcmVtb3RlIHdvcmtzdGF0aW9ucyBvZiB1c2VycyBv
biB5b3VyIHNlcnZlcikKIyBzZXQgJGRiZmlsZSB0byB5b3VyIHBvcGlwLmRiIGxvY2F0aW9u
LCBlbHNlIHNldCBpdCB0byB1bmRlZgojb3VyICRkYmZpbGUgPSAiL2V0Yy9tYWlsL3BvcGlw
LmRiIjsKb3VyICRkYmZpbGUgPSB1bmRlZjsKCiMgZGlzdGFuY2UgaW4gc2Vjb25kcyBmcm9t
IHJpZ2h0IG5vdyB0byBjb25zaWRlciBhIHJlYXNvbmFibGUgKG5vbi1zcGFtKSByYW5nZSB0
byBkYXRlIGFuIGVtYWlsCm91ciAkZGF0ZV9saW1pdCA9IDYwKjYwKjI0KjI7ICAjIDIgZGF5
cwoKIyBFTUFJTCBIRUFERVIgRklFTERTCiMKIyBTZWUgUkZDIDIwNzYgLyAiQ29tbW9uIElu
dGVybmV0IE1lc3NhZ2UgSGVhZGVyIEZpZWxkcyIgZm9yIGEgc3lub3BzaXMgb2YgY29tbW9u
IG1haWwgaGVhZGVycwoKCSMgU1BFQ0lGSUVEIEZJRUxEUyAtLSBhbGwgb2YgdGhlIGZpZWxk
cyBzcGVjaWZpZWQgaW4gUkZDIDgyMi8yODIyLCBjYXNlLWluc2Vuc2l0aXZlLCBpbiB0aGUg
c3VnZ2VzdGVkIG9yZGVyCglvdXIgJHNwZWNfZmllbGRzID0gInJldHVybi1wYXRoLHJlY2Vp
dmVkLHJlc2VudC1kYXRlLHJlc2VudC1mcm9tLHJlc2VudC1zZW5kZXIscmVzZW50LXJlcGx5
LXRvLCIuCgkgCQkgICAicmVzZW50LXRvLHJlc2VudC1jYyxyZXNlbnQtYmNjLHJlc2VudC1t
ZXNzYWdlLWlkLGRhdGUsZnJvbSxzZW5kZXIscmVwbHktdG8sIi4KCQkJICAgInRvLGNjLGJj
YyxtZXNzYWdlLWlkLGluLXJlcGx5LXRvLHJlZmVyZW5jZXMsc3ViamVjdCxjb21tZW50cyxr
ZXl3b3JkcyxlbmNyeXB0ZWQiOwoKCSMgTUlNRSBoZWFkZXIgZmllbGRzIChSRkMgMTA0OS8x
MzQxLzE1MjEvMjE4MykKCSRzcGVjX2ZpZWxkcyAuPSAiLG1pbWUtdmVyc2lvbixjb250ZW50
LXR5cGUsY29udGVudC10cmFuc2Zlci1lbmNvZGluZyxjb250ZW50LWlkLGNvbnRlbnQtZGVz
Y3JpcHRpb24sY29udGVudC1kaXNwb3NpdGlvbiI7CgoJIyBzZWN1cml0eS9jaGVja3N1bSAo
UkZDIDE4NjQpCgkkc3BlY19maWVsZHMgLj0gIixjb250ZW50LW1kNSI7CgoJIyBtYWlsaW5n
IGxpc3QgaGVhZGVycyAoUkZDIDIzNjkvMjkxOSkgbWF5IGJlIGFkZGVkIGlmIHlvdSBsaWtl
LCBidXQgZm9yIG5vdyBJJ20gY2hvb3NpbmcgdG8gbGVhdmUgdGhlbSBvdXQKCSMkc3BlY19m
aWVsZHMgLj0gIixsaXN0LWlkLGxpc3QtaGVscCxsaXN0LXVuc3Vic2NyaWJlLGxpc3Qtc3Vi
c2NyaWJlLGxpc3QtcG9zdCxsaXN0LW93bmVyLGxpc3QtYXJjaGl2ZSI7CgoJIyBNQVNLRUQg
RklFTERTIC0tIHVubmVjZXNzYXJ5IGZpZWxkcyBvZnRlbiB1c2VkIGZvciBzcGFtIHdpbGwg
YmUgZXhwdW5nZWQgZnJvbSB0aGUgc3BlYyBmaWVsZHMgbGlzdAoJIyAoaWYgeW91IGtub3cg
b2YgYSB2YWxpZCwgbmVjZXNzYXJ5IHVzZSBmb3IgdGhlc2UsIGxldCBtZSBrbm93KQoJb3Vy
ICRtYXNrZWRfZmllbGRzID0gImtleXdvcmRzLGNvbW1lbnRzLGVuY3J5cHRlZCxjb250ZW50
LWlkLGNvbnRlbnQtZGVzY3JpcHRpb24iOwoKCSMgY29udHJvdmVyc2lhbCBhbmQgbm90IHN0
cmljdGx5IG5lY2Vzc2FyeToKCSMkbWFza2VkX2ZpZWxkcyAuPSAgIixyZXBseS10byI7CgoJ
IyBtZXNzYWdlLWlkIGZpZWxkcyBhcmUgb25seSBtYWNoaW5lLXJlYWRhYmxlIGFuZCBub3Qg
dmlzaWJsZSB0byBub3IgcmVhZGFibGUgYnkgdGhlIHJlY2lwaWVudAoJIyBob3dldmVyLCB0
aGV5IGNhbiBiZSB1c2VmdWwgaWYgeW91ciBjbGllbnQgcHJvZHVjZXMgZGlzY3Vzc2lvbiB0
aHJlYWRpbmcKCSMgdW5jb21tZW50IHRoaXMgbGluZSBpZiB5b3UgZG9uJ3QgY2FyZSBhYm91
dCB0aHJlYWRpbmc6CgkjJG1hc2tlZF9maWVsZHMgLj0gICIsbWVzc2FnZS1pZCxyZXNlbnQt
bWVzc2FnZS1pZCxpbi1yZXBseS10byxyZWZlcmVuY2VzIjsKCQoJIyByZXNlbnQgZmllbGRz
IGFyZSBzdHJpY3RseSBpbmZvcm1hdGlvbmFsIChhbmQgbm90IGdlbmVyYWxseSB1c2VyLXZp
c2libGUpLCB0aGVyZWZvcmUgYWxsb3dpbmcgdGhlbSB0aHJvdWdoIGlzIG9wdGlvbmFsOgoJ
IyBNSU1FIHNwZWNpZmllcyBhIGRpZmZlcmVudCB3YXkgb2YgcmVzZW5kaW5nIG1lc3NhZ2Vz
IHdpdGggdGhlICJNZXNzYWdlIiBjb250ZW50LXR5cGUsIHNvIHRoZXNlIG1heSBiZSBjb25z
aWRlcmVkIGRlcHJlY2F0ZWQ6CgkkbWFza2VkX2ZpZWxkcyAuPSAiLHJlc2VudC1kYXRlLHJl
c2VudC1mcm9tLHJlc2VudC1zZW5kZXIscmVzZW50LXJlcGx5LXRvLHJlc2VudC10byxyZXNl
bnQtY2MscmVzZW50LWJjYyxyZXNlbnQtbWVzc2FnZS1pZCI7CgoJIyBVU0VSIEZJRUxEUyAt
LSBVc2VyIGZpZWxkcyBhcmUgdGhvc2UgdGhhdCBhcmUgbmVpdGhlciBzcGVjaWZpZWQgbm9y
IG1hc2tlZCB0aGF0IHlvdSB3YW50IHBlcm1pdHRlZC4gCgkjIFRoZXNlIG1heSBpbmNsdWRl
IHNwZWNpYWwgZmllbGRzIGZvciB5b3VyIHBhcnRpY3VsYXIgbWFpbCBzZXJ2ZXIsIGZpbHRl
ciwgb3IgbWFpbCB1c2VyIGFnZW50LgoJb3VyICR1c2VyX2ZpZWxkcyA9ICIiOwoKCSMgTkVX
IEZJRUxEUyAtLSBOZXcgY3VzdG9tIHgtaGVhZGVycyBhZGRlZCBieSBTcGFtaXRhcml1bSAo
aXQgaXMgcmVjb21tZW5kIHRoYXQgeW91IGRvbid0IGNoYW5nZSB0aGVzZSkuICAKCSMgVGhl
c2UgYXJlIGRpc2FibGVkIHVubGVzcyB5b3UgcGFzcyB0aGUgJ3gnIG9wdGlvbi4KCW91ciAk
bmV3X2ZpZWxkcyA9ICJ4LWRhdGUtY2hlY2sseC1zcGYiOwoKCSMgUkVRVUlSRUQgRklFTERT
IC0tIEFueSBmaWVsZHMgdGhhdCBzaG91bGQgc2hvdyB1cCBpbiBhbiBlbWFpbCBldmVuIGlm
IHRoZXkgYXJlIG5vdCBzZW50IC0tIGkuZS4gaWYgdGhlIGxhY2sgb2YKCSMgdGhlc2UgZmll
bGRzIG1heSBiZSB1c2VmdWwgZm9yIHRoZSBmaWx0ZXIsIGEgbm8tcmVxLWZpZWxkIHRhZyB3
aWxsIGJlIGFkZGVkLiAgVGhlIG9ubHkgKnJlcXVpcmVkKiBmaWVsZHMgYWNjb3JkaW5nIHRv
IAoJIyBSRkMgMjgyMiBhcmUgImZyb20iLCAic2VuZGVyIiwgInJlcGx5LXRvIiwgYW5kICJk
YXRlIiwgb3RoZXJzIGFyZSBqdXN0IHN1Z2dlc3RlZC4gIEhvd2V2ZXIsICJzZW5kZXIiIGFu
ZCAicmVwbHktdG8iIGFyZSAKCSMgY29tbW9ubHkgbm90IHN1cHBsaWVkLCBhbmQgc28gc2hv
dWxkIHByb2JhYmx5IG5vdCBiZSBpbiB0aGlzIGxpc3QuICBPbiB0aGUgb3RoZXIgaGFuZCwg
InN1YmplY3QiIGFuZCBhIGZldyBvdGhlcnMgbWF5IAoJIyBiZSBkZXNpcmVkIGluIHRoaXMg
bGlzdC4KCW91ciAkcmVxX2ZpZWxkcyA9ICJyZWNlaXZlZCxmcm9tLHRvLGRhdGUsc3ViamVj
dCI7CgojIG9mIGNvdXJzZSwgbW9kaWZ5IHRoZSBmaXJzdCBsaW5lIG9mIHRoaXMgZmlsZSwK
IyB0aGUgc2hlYmFuZywgdG8gcG9pbnQgdG8geW91ciBwZXJsIGludGVycHJldGVyCgojIGRv
IG5vdCBlZGl0IGJlbG93IHRoaXMgbGluZSB1bmxlc3MgeW91IHJlYWxseQojIGtub3cgd2hh
dCB5b3UncmUgZG9pbmcKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKIyMjIyMjIyMjIyMjIyMgSW5jbHVkZSBMaWJyYXJpZXMgIyMjIyMjIyMj
IyMjIyMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCgp1c2UgQmVuY2htYXJrOwp1c2UgRmlsZTo6QmFzZW5hbWU7CnVzZSBUaW1lOjpMb2Nh
bDsKdXNlIE5ldDo6RE5TOjpSZXNvbHZlcjsKdXNlIE1haWw6OlNQRjsKdXNlIE5ldDo6Q0lE
UjsKdXNlIERCX0ZpbGU7CnVzZSBQT1NJWDsKdXNlIEdldG9wdDo6TG9uZzsKdXNlIFN5czo6
U3lzbG9nOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIwojIyMjIyMjIyMjIyMjIyBEZWZhdWx0IEdsb2JhbHMgIyMjIyMjIyMjIyMjIyMjIyMj
CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiQ+
ID0gJDw7ICMgc2V0IGVmZmVjdGl2ZSB1c2VyIElEIHRvIHJlYWwgVUlECiQpID0gJCg7ICMg
c2V0IGVmZmVjdGl2ZSBncm91cCBJRCB0byByZWFsIEdJRAoKIyBNYWtlICVFTlYgc2FmZXIK
ZGVsZXRlIEBFTlZ7cXcoSUZTIENEUEFUSCBFTlYgQkFTSF9FTlYgUEFUSCBTSEVMTCl9OwoK
IyBTZXQgdGhlIGVudmlyb25tZW50IGV4cGxpY2l0bHkKJEVOVntQQVRIfSA9ICRwYXRoOwok
RU5We1NIRUxMfSA9ICRzaGVsbDsKCiMgb3B0aW9ucyBmbGFncwpvdXIgJG9wdGlvbnMgPSAi
IjsKb3VyICRyZXR1cm5fcGF0aCA9ICIiOwpvdXIgJG9wdF9yZW1vdGVfaXAgPSAiIjsKb3Vy
ICRvcHRfcmVtb3RlX25hbWUgPSAiIjsKb3VyICRvcHRfbG9jYWxfaXAgPSAiIjsKb3VyICRv
cHRfbG9jYWxfbmFtZSA9ICIiOwpvdXIgJG9wdF9oZWxvID0gIiI7Cm91ciAkb3B0X3JjcHQg
PSAiIjsKb3VyICRub19sb2NhbF9yZWNlaXZlZCA9IHVuZGVmOwpvdXIgJGFkZF9sb2NhbF9y
ZWNlaXZlZCA9IHVuZGVmOwoKIyBkZWZpbmUgdGhlIGNvbnRyb2wtbGluZWZlZWQgc3ludGF4
IGZvciB0aGlzIHN5c3RlbQpvdXIgJENSTEYgPSAKIlxuIjsKIygkXk89fi9WTVMvaSk/IAki
XG4iOiAJCSMgVk1TCiMoIlx0IiBuZSAiXDAxMSIpPyAJIlxyXG4iOiAJIyBFQkNESUMKIwkJ
CSJcMDE1XDAxMiI7IAkjIG90aGVycyAKCiMgRE5TIHF1ZXJ5IG9wdGlvbnMKb3VyICRyZXMg
PSBOZXQ6OkROUzo6UmVzb2x2ZXItPm5ldygKCW5hbWVzZXJ2ZXJzICAgICA9PiBbcXcoMTI3
LjAuMC4xKV0sCgl1ZHBfdGltZW91dCAgICAgPT4gMiwKCXJldHJ5ICAgICAgICAgICA9PiAx
LAoJI2RlYnVnICAgICAgICAgID0+IDEKKTsKCiMgY29udmVydCB3aGl0ZWxpc3QgaW50byBD
SURSIG5vdGF0aW9uCm91ciBAY2lkcl9saXN0ID0gKCk7CmZvcmVhY2ggbXkgJElQIChAd2hp
dGVsaXN0KSB7CiAgaWYgKG5vdCBldmFsIHtAY2lkcl9saXN0ID0gTmV0OjpDSURSOjpjaWRy
YWRkICgkSVAsIEBjaWRyX2xpc3QpfSkgewogICAgZXJyb3IoIndhcm4iLCJFcnJvciBwcm9j
ZXNzaW5nIHdoaXRlbGlzdDogXCIkSVBcIiBpcyBub3QgYSB2YWxpZCBJUCBhZGRyZXNzIG9y
IHJhbmdlLiIpOwogIH0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyBNYWluICMjIyMjIyMjIyMjIyMj
IyMjIyMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKCm9wZW5sb2coYmFzZW5hbWUgJDAsICdtYWlsJyk7CgojIHByb2Nlc3Mgb3B0aW9ucwpz
dWIgdXNhZ2UgewogICAgbXkgJHNwYW1pdGFyaXVtID0gJDEgaWYgJDAgPX4gL14oW1x3XC8u
XC1+XSopJC87CiAgICBzeXN0ZW0oInBlcmxkb2MgJHNwYW1pdGFyaXVtIik7Cn0KCiMgQWxs
b3cgYnVuZGxpbmcgb2YgZmlyc3Qgc2V0IG9mIG9wdGlvbnMsIGFzIHdlbGwgYXMgb3B0aW9u
YWwgaHlwaGVuLgppZiAoQEFSR1YgYW5kICRBUkdWWzBdID1+IC9eLT9baHJkZmFzZWJ3eHRw
XSskLykgewogICAgaWYgKCRBUkdWWzBdID1+IHMvcy8vKSB7CglzcGxpY2UoQEFSR1YsIDEs
IDAsICItcyIpOwogICAgfQogICAgJEFSR1ZbMF0gPX4gcy9eKFteLV0pLy0kMS87CiAgICBH
ZXRvcHQ6Okxvbmc6OkNvbmZpZ3VyZSgiYnVuZGxpbmciKTsKfQoKaWYgKCEgR2V0T3B0aW9u
cygiaGVscHxoIiA9PiBzdWIgeyAmdXNhZ2U7IGV4aXQoMCk7IH0sCgkJICJyIiA9PiBzdWIg
eyAkb3B0aW9ucyAuPSAiciI7IH0sICMgcHJvY2VzcyByZWNlaXZlZCBoZWFkZXJzCgkJICJk
IiA9PiBzdWIgeyAkb3B0aW9ucyAuPSAiZCI7IH0sICMgcGVyZm9ybSBkb21haW4gbG9va3Vw
cyB3aGVyZSBuZWVkZWQKCQkgImYiID0+IHN1YiB7ICRvcHRpb25zIC49ICJmIjsgfSwgIyBm
b3JjZSBSRE5TIGxvb2t1cHMgZXZlbiB3aGVyZSBNVEEgcHJvdmlkZWQKCQkgImEiID0+IHN1
YiB7ICRvcHRpb25zIC49ICJhIjsgfSwgIyBwZXJmb3JtIEFTTiBsb29rdXBzCgkJICJzOnMi
ID0+IHN1YiB7ICRvcHRpb25zIC49ICJzIjsgICMgc3RhbmRhcmQgZmllbGRzIG9ubHkgKHN0
cmlwIG90aGVycykKCQkJICR1c2VyX2ZpZWxkcyA9ICRfWzFdOyB9LAoJCSAiZSIgPT4gc3Vi
IHsgJG9wdGlvbnMgLj0gImUiOyB9LCAjIGluY2x1ZGUgdGhlIGhlbG8gcmVjZWl2ZWQgZmll
bGQgaW4gb3V0cHV0CgkJICJiIiA9PiBzdWIgeyAkb3B0aW9ucyAuPSAiYiI7IH0sICMgb3V0
cHV0IGJlbmNobWFya2luZyBpbmZvCgkJICJ3IiA9PiBzdWIgeyAkb3B0aW9ucyAuPSAidyI7
IH0sICMgcHJvY2VzcyB3aG9sZSBlbWFpbCAoaW5jbHVkaW5nIGJvZHkpCgkJICJ4IiA9PiBz
dWIgeyAkb3B0aW9ucyAuPSAieCI7IH0sICMgaW5zZXJ0IGN1c3RvbSB4LWhlYWRlciBmaWVs
ZHMKCQkgInQiID0+IHN1YiB7ICRvcHRpb25zIC49ICJ0IjsgfSwgIyBwZXJmb3JtIGRhdGUg
cmFuZ2UgY2hlY2tzCgkJICJwIiA9PiBzdWIgeyAkb3B0aW9ucyAuPSAicCI7IH0sICMgcGVy
Zm9ybSBTUEYgbG9va3VwcwoJCSAicmV0dXJuLXBhdGh8cmV0dXJucGF0aD1zIiA9PiBcJHJl
dHVybl9wYXRoLAoJCSAicmVtb3RlLWlwfHJlbW90ZWlwPXMiID0+IFwkb3B0X3JlbW90ZV9p
cCwKCQkgInJlbW90ZS1uYW1lfHJlbW90ZW5hbWU9cyIgPT4gXCRvcHRfcmVtb3RlX25hbWUs
CgkJICJsb2NhbC1pcHxsb2NhbGlwPXMiID0+IFwkb3B0X2xvY2FsX2lwLAoJCSAibG9jYWwt
bmFtZXxsb2NhbG5hbWU9cyIgPT4gXCRvcHRfbG9jYWxfbmFtZSwKCQkgImhlbG89cyIgPT4g
XCRvcHRfaGVsbywKCQkgInJjcHQ9cyIgPT4gXCRvcHRfcmNwdCwKCQkgIm5vLWxvY2FsLXJl
Y2VpdmVkfG5vbG9jYWxyZWNlaXZlZCIgPT4gXCRub19sb2NhbF9yZWNlaXZlZCwKCQkgImFk
ZC1sb2NhbC1yZWNlaXZlZHxhZGRsb2NhbHJlY2VpdmVkIiA9PiBcJGFkZF9sb2NhbF9yZWNl
aXZlZCwKICAgICAgICAgICAgICAgICAidGltZW91dD1pIiA9PiBcJHRpbWVvdXQsICAjIDAg
dG8gZGlzYWJsZSB0aW1lb3V0CgkJICkpIHsKICAgICZ1c2FnZTsKICAgIGV4aXQoMSk7Cn0K
CiMgb3BlbiBwb3BpcCBkYXRhYmFzZSBmb3IgcmVhZGluZwpvdXIgJWRiOwomb3BlbmRiX3Jl
YWQgaWYgJGRiZmlsZTsKCiMgc3RhcnQgdGltaW5nIHRoZSBwcm9jZXNzCm15ICRzdGFydF90
aW1lID0gbmV3IEJlbmNobWFyayBpZiAkb3B0aW9ucyA9fiAvYi87Cm15ICgkc3RhcnRfcGFy
c2UsICRlbmRfcGFyc2UsICRzdGFydF9yY3ZkLCAkZW5kX3JjdmQsICRzdGFydF9zZXQsICRl
bmRfc2V0KTsKCiMgZ2V0IFNURElOIGFuZCBwcm9jZXNzIHRoZSBlbWFpbApldmFsIAp7Cgkj
IHNldCBhbiBhbGFybSBzbyB0aGF0IHdlIGRvbid0IGhhbmcgb24gYW4gZW1wdHkgU1RESU4K
CWxvY2FsICRTSUd7QUxSTX0gPSBzdWIgeyBkaWUgInRpbWVvdXQiIH07CiAgICAgICAgaWYg
KCR0aW1lb3V0ID4gMCkgewogICAgICAgICAgICBhbGFybSAkdGltZW91dDsKICAgICAgICB9
CgoJIyBwYXJzZSB0aGUgaGVhZGVyCgkkc3RhcnRfcGFyc2UgPSBuZXcgQmVuY2htYXJrIGlm
ICRvcHRpb25zID1+IC9iLzsKCW15ICgkaGVhZGVyLCRwYXJzZV9iZW5jaG1hcmspID0gcGFy
c2VfaGVhZGVyKCk7CgkkZW5kX3BhcnNlID0gbmV3IEJlbmNobWFyayBpZiAkb3B0aW9ucyA9
fiAvYi87CgoJIyBjYW5jZWwgdGltZW91dCBpZiB3ZSBnb3QgdGhpcyBmYXIKCWFsYXJtIDA7
CgoJIyBkZWZhdWx0IGRhdGUgaWYgbm9uZSBwcm92aWRlZAoJdW5sZXNzIChkZWZpbmVkICRo
ZWFkZXItPnsnZGF0ZSd9KQoJewoJCSRoZWFkZXItPnsnZGF0ZSd9LT5bMF0tPnsnbmFtZSd9
ID0gIkRhdGUiOwoJCSRoZWFkZXItPnsnZGF0ZSd9LT5bMF0tPnsndmFsdWUnfSA9IGdtdGlt
ZSB0aW1lOwoJfQoJCgkjIHByb2Nlc3MgdGhlIHJlY2VpdmVkIGxpbmVzCglpZiAoJG9wdGlv
bnMgPX4gL3IvKQoJewoJCSRzdGFydF9yY3ZkID0gbmV3IEJlbmNobWFyayBpZiAkb3B0aW9u
cyA9fiAvYi87CgkJJGhlYWRlci0+eydyZWNlaXZlZCd9ID0gcHJvY2Vzc19yY3ZkKCRoZWFk
ZXItPnsncmVjZWl2ZWQnfSwkcmV0dXJuX3BhdGggfHwgJGhlYWRlci0+eydyZXR1cm4tcGF0
aCd9LT5bMF0tPnsndmFsdWUnfSk7CgkJJGVuZF9yY3ZkID0gbmV3IEJlbmNobWFyayBpZiAk
b3B0aW9ucyA9fiAvYi87Cgl9CgoJIyBhZGQgbmV3IGN1c3RvbSBoZWFkZXIgZmllbGRzCglp
ZiAoJG9wdGlvbnMgPX4gL3gvKSAKCXsKCQlpZiAoJG9wdGlvbnMgPX4gL3QvKQoJCXsKCQkJ
JGhlYWRlci0+eyd4LWRhdGUtY2hlY2snfS0+WzBdLT57J25hbWUnfSA9ICJYLURhdGUtQ2hl
Y2siOyAKCQkJJGhlYWRlci0+eyd4LWRhdGUtY2hlY2snfS0+WzBdLT57J3ZhbHVlJ30gPSBk
YXRlX2NoZWNrKCRoZWFkZXItPnsnZGF0ZSd9LT5bMF0tPnsndmFsdWUnfSwkaGVhZGVyLT57
J3JlY2VpdmVkJ30tPlswXS0+eydkYXRlJ30pOwoJCX0KCgkJaWYgKCRvcHRpb25zID1+IC9w
LykKCQl7CgkgICAgICAgICAgICAgICAgZm9yIChteSAkeCA9IDA7ICR4IDwgc2NhbGFyIEB7
JGhlYWRlci0+eydyZWNlaXZlZCd9fTsgJHgrKykKCSAgICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgICAgICAgCSAgICAgICAgaWYgKGRlZmluZWQgJGhlYWRlci0+eydyZWNl
aXZlZCd9LT5bJHhdLT57J3NwZid9ICYmICRoZWFkZXItPnsncmVjZWl2ZWQnfS0+WyR4XS0+
eydzcGYnfSA9fiAvXHcvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCXsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAeyRoZWFkZXItPnsneC1z
cGYnfX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyduYW1l
JyA9PiAiWC1TUEYiLCAndmFsdWUnID0+ICRoZWFkZXItPnsncmVjZWl2ZWQnfS0+WyR4XS0+
eydzcGYnfX0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAg
ICAgICAgICB9CQkJCgkJfQoJfQoKCSMgVGhpcyBuZWVkcyB0byBiZSBkb25lIGFmdGVyIHRo
ZSB4LXNwZiBoZWFkZXJzIGFyZSBnZW5lcmF0ZWQKCSMgYWJvdmUsIHNvIHRoYXQgYW4geC1z
cGYgaGVhZGVyIGlzIGdlbmVyYXRlZCBmb3IgdGhlCgkjIGF1dG8tZ2VuZXJhdGVkIGxvY2Fs
IFJlY2VpdmVkIGxpbmUuCglpZiAoJG5vX2xvY2FsX3JlY2VpdmVkIGFuZCBub3QgJGFkZF9s
b2NhbF9yZWNlaXZlZCkgewoJICAgIHNwbGljZShAeyRoZWFkZXItPnsncmVjZWl2ZWQnfX0s
IDAsIDEpOwoJfQoKCSMgb3V0cHV0IHRoZSBuZXcgaGVhZGVyIGNvbnRhaW5pbmcgdGhlIGNo
YW5nZXMKCSRzdGFydF9zZXQgPSBuZXcgQmVuY2htYXJrIGlmICRvcHRpb25zID1+IC9iLzsK
CXByaW50IHNldF9oZWFkZXIoJGhlYWRlcik7CgkkZW5kX3NldCA9IG5ldyBCZW5jaG1hcmsg
aWYgJG9wdGlvbnMgPX4gL2IvOwoKCSMgYWRkIHRoZSBib2R5IGlmIGRlc2lyZWQKCXByaW50
IHBhcnNlX2JvZHkoKSBpZiAkb3B0aW9ucyA9fiAvdy87Cn07CgojIHByb3BhZ2F0ZSBlcnJv
cnMKZGllIGlmICRAICYmICRAICF+IC90aW1lb3V0L2k7CgojIHByaW50IHRpbWVvdXQgbWVz
c2FnZQppZiAoJEAgPX4gL3RpbWVvdXQvaSkgeyBlcnJvcigiZGllIiwiVGltZWQgb3V0Li4u
IG1ha2Ugc3VyZSB0byBzdXBwbHkgYW4gZW1haWwgZm9yIHByb2Nlc3NpbmcuICBUcnkgJ3Nw
YW1pdGFyaXVtIC1oJyBmb3IgZGV0YWlscy5cbiIpOyB9CgojIGNhbGN1bGF0ZSB0b3RhbCBy
dW5uaW5nIHRpbWUKaWYgKCRvcHRpb25zID1+IC9iLykKewoJbXkgJGVuZF90aW1lID0gbmV3
IEJlbmNobWFyazsgIAoJbXkgJHRkID0gdGltZWRpZmYoJGVuZF90aW1lLCAkc3RhcnRfdGlt
ZSk7CglteSAkdXNyID0gJHRkLT5bMV0rJHRkLT5bM107IG15ICRzeXMgPSAkdGQtPlsyXSsk
dGQtPls0XTsKCW15ICRjcHUgPSAkdXNyKyRzeXM7IG15ICR3YWxsID0gJHRkLT5bMF07Cglw
cmludCAiVG90YWwgcnVubmluZyB0aW1lIHdhcyAkd2FsbCB3YWxsY2xvY2sgc2VjczsgJHVz
ciB1c3IgKyAkc3lzIHN5cyA9ICRjcHUgQ1BVIHNlY3MuJENSTEYiOwoKCSR0ZCA9IHRpbWVk
aWZmKCRlbmRfcGFyc2UsICRzdGFydF9wYXJzZSk7CgkkdXNyID0gJHRkLT5bMV0rJHRkLT5b
M107ICRzeXMgPSAkdGQtPlsyXSskdGQtPls0XTsKCSRjcHUgPSAkdXNyKyRzeXM7ICR3YWxs
ID0gJHRkLT5bMF07CglwcmludCAiSW5wdXQgcGFyc2luZyB0aW1lIHdhcyAkd2FsbCB3YWxs
Y2xvY2sgc2VjczsgJHVzciB1c3IgKyAkc3lzIHN5cyA9ICRjcHUgQ1BVIHNlY3MuJENSTEYi
OwoKCWlmICgkb3B0aW9ucyA9fiAvci8pCgl7CgkJJHRkID0gdGltZWRpZmYoJGVuZF9yY3Zk
LCAkc3RhcnRfcmN2ZCk7CgkJJHVzciA9ICR0ZC0+WzFdKyR0ZC0+WzNdOyAkc3lzID0gJHRk
LT5bMl0rJHRkLT5bNF07CgkJJGNwdSA9ICR1c3IrJHN5czsgJHdhbGwgPSAkdGQtPlswXTsK
CQlwcmludCAiUmVjZWl2ZWQgbGluZSBwcm9jZXNzaW5nIHRpbWUgd2FzICR3YWxsIHdhbGxj
bG9jayBzZWNzOyAkdXNyIHVzciArICRzeXMgc3lzID0gJGNwdSBDUFUgc2Vjcy4kQ1JMRiI7
Cgl9CgoJJHRkID0gdGltZWRpZmYoJGVuZF9zZXQsICRzdGFydF9zZXQpOwoJJHVzciA9ICR0
ZC0+WzFdKyR0ZC0+WzNdOyAkc3lzID0gJHRkLT5bMl0rJHRkLT5bNF07CgkkY3B1ID0gJHVz
ciskc3lzOyAkd2FsbCA9ICR0ZC0+WzBdOwoJcHJpbnQgIlJlYnVpbGRpbmcgZW1haWwgdGlt
ZSB3YXMgJHdhbGwgd2FsbGNsb2NrIHNlY3M7ICR1c3IgdXNyICsgJHN5cyBzeXMgPSAkY3B1
IENQVSBzZWNzLiRDUkxGIjsKfQoKIyBjbG9zZSBwb3BpcCBkYXRhYmFzZQomY2xvc2VkYiBp
ZiAkZGJmaWxlOwoKZXhpdCgwKTsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIwojIyMjIyMjIyMjIyMjIyMjIFBhcnNlIEhlYWRlciAgIyMjIyMj
IyMjIyMjIyMjIyMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCgpzdWIgcGFyc2VfaGVhZGVyCnsKICAgIGxvY2FsKCRfKTsKICAgIG15ICRoZWFk
ZXJfdGV4dCA9ICIiOwoKICAgIHdoaWxlICg8U1RESU4+KSB7CiAgICAgICAgbGFzdCBpZiAo
L15ccj9cbiQvKTsKICAgICAgICAkaGVhZGVyX3RleHQgLj0gJF87CiAgICB9CgogICAgIyBU
aGlzIGlzIHJlYWxseSBncm9zcy4gVGhlcmUgaXMgYSBjZXJ0YWluIHByb21pbmVudCBlbWFp
bCBtYXJrZXRpbmcKICAgICMgY29tcGFueSB3aG9zZSBzb2Z0d2FyZSBoYXMgYSBidWcgaW4g
aXQgd2hpY2ggY2F1c2VzIERhdGU6IGhlYWRlcnMgdG8KICAgICMgc29tZXRpbWVzIGJlIHRl
cm1pbmF0ZWQgd2l0aCBqdXN0IENSIHJhdGhlciB0aGFuIENSTEYuIElmIHdlIGludGVycHJl
dAogICAgIyBSRkMgNTMyMSBzZWN0aW9uIDIuMy44IHN0cmljdGx5LCB0aGVuIHdlJ3JlIHJl
cXVpcmVkIHRvIHRyZWF0IHN1Y2ggYQogICAgIyBEYXRlOiBoZWFkZXIgYW5kIHRoZSBvbmUg
Zm9sbG93aW5nIGl0IGFzIGEgc2luZ2xlIGhlYWRlciBmaWVsZCwgYnV0CiAgICAjIHN0cmlj
dCBhZGhlcmVuY2UgdG8gdGhlIFJGQyB3aGVuIHRoYXQgcmVzdWx0cyBpbiBvYnZpb3VzbHkg
YnJva2VuCiAgICAjIGJlaGF2aW9yIGlzIG5vdCB0aGUgYmVzdCBhcHByb2FjaC4gT24gdGhl
IG90aGVyIGhhbmQsIHdoZW4gd2UncmUgc3RyYXlpbmcKICAgICMgZnJvbSB0aGUgUkZDLCB3
ZSB3YW50IHRvIGRvIHNvIGFzIG1pbmltYWxseSBhcyBwb3NzaWJsZS4gVGhlcmVmb3JlLCB3
aGF0CiAgICAjIHdlIGFyZSBkb2luZyBoZXJlIGlzIGNoZWNraW5nIHNwZWNpZmljYWxseSBm
b3IgdGhpcyBleGFjdCBwcm9ibGVtIC0tCiAgICAjIERhdGU6IGhlYWRlcnMgZW5kaW5nIHdp
dGggQ1IgcmF0aGVyIHRoYW4gQ1JMRiAtLSBhbmQgY29ycmVjdGluZyBmb3IganVzdAogICAg
IyB0aGF0IG9uZSwgbGltaXRlZCBjYXNlLgogICAgIyBUaGlzIGhhbmRsZXMgaW5wdXQgd2l0
aCBib3RoIENSTEYgYW5kIExGIGxpbmUgdGVybWluYXRvcnMuCiAgICAkaGVhZGVyX3RleHQg
PX4gcy9eKERhdGU6LiopXHIoW15cbl0uKiguKVxuKS8kMSQzXG4kMi9tOwoKICAgIG15KEBo
ZWFkZXJzKSA9IHNwbGl0KC9cblxiLywgJGhlYWRlcl90ZXh0KTsKICAgIAogICAgbXkgJGhl
YWRlciA9IHt9OwogICAgbXkgJGxhc3RfaGVhZGVyID0gdW5kZWY7CgogICAgZm9yIChAaGVh
ZGVycykgewogICAgICAgIHMvXHMrJC8vOwogICAgICAgIHMvXHMrLyAvZzsgICMgY29sbGFw
c2Ugd2hpdGVzcGFjZQogICAgICAgIGlmIChzL14oXFMrKTpccyovLykgewogICAgICAgICAg
ICBteSAkbmFtZSA9ICQxOwogICAgICAgICAgICBteSAkdGFnID0gJG5hbWU7CiAgICAgICAg
ICAgICR0YWcgPX4gdHIvQS1aL2Etei87ICAjIGhlYWRlciBuYW1lcyBhcmUgY2FzZS1pbnNl
bnNpdGl2ZQogICAgICAgICAgICBpZiAoISAkXyBhbmQgJGhlYWRlci0+eyR0YWd9IGFuZAog
ICAgICAgICAgICAgICAgZ3JlcCghICRfLT57J3ZhbHVlJ30sIEB7JGhlYWRlci0+eyR0YWd9
fSkpIHsKICAgICAgICAgICAgICAgICMgSWYgYW4gZW1wdHkgaGVhZGVyIGZpZWxkIGlzIHJl
cGVhdGVkIG11bHRpcGxlIHRpbWVzLCB3ZSBvbmx5CiAgICAgICAgICAgICAgICAjIG5lZWQg
dG8gcHJlc2VydmUgb25lIG9mIHRoZW0uCiAgICAgICAgICAgICAgICBuZXh0OwogICAgICAg
ICAgICB9CiAgICAgICAgICAgIHB1c2goQHskaGVhZGVyLT57JHRhZ319LCB7J25hbWUnID0+
ICRuYW1lLCAndmFsdWUnID0+ICRffSk7CiAgICAgICAgICAgICRsYXN0X2hlYWRlciA9ICRo
ZWFkZXItPnskdGFnfS0+Wy0xXTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICMgV2hhdCdzIHRoZSByaWdodCB0aGluZyB0byBkbyBoZXJlPyBFaXRoZXIgdGhlcmUn
cyBubyBjb2xvbiBvcgogICAgICAgICAgICAjIHRoZXJlJ3Mgd2hpdGVzcGFjZSBiZWZvcmUg
dGhlIGNvbG9uLCBib3RoIG9mIHdoaWNoIGFyZSBSRkMKICAgICAgICAgICAgIyB2aW9sYXRp
b25zLiBPdXIgYmVzdCBndWVzcyBpcyB0byBhcHBlbmQgdGhpcyB0byB0aGUgcHJldmlvdXMK
ICAgICAgICAgICAgIyBoZWFkZXIuCiAgICAgICAgICAgIGlmICghICRsYXN0X2hlYWRlcikg
ewogICAgICAgICAgICAgICAgZXJyb3IoIndhcm4iLCAiQmFkIGluaXRpYWwgaGVhZGVyIGxp
bmUgJyRfJyBpZ25vcmVkXG4iKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgICAgIGVycm9yKCJ3YXJuIiwgIkJhZCBoZWFkZXIgbGluZSAnJF8nIGFw
cGVuZGVkIHRvIHByZWNlZGluZyAnIiAuCiAgICAgICAgICAgICAgICAgICAgICAkbGFzdF9o
ZWFkZXItPnsnbmFtZSd9IC4gIicgaGVhZGVyIGZpZWxkIik7CiAgICAgICAgICAgICAgICAk
bGFzdF9oZWFkZXItPnsndmFsdWUnfSAuPSAiICIgLiAkXzsKICAgICAgICAgICAgfQogICAg
ICAgIH0gICAgICAgICAgICAgICAgICAgICAgCiAgICB9ICAgCiAgICAgICAgICAgICAgICAK
ICAgIHJldHVybiAkaGVhZGVyOwp9CgpzdWIgZGF0ZV9jaGVjawp7CglteSAoJGRhdGUsJHJj
dmQpID0gc2hpZnQ7CglteSAoJGRvdywgJGRheSwgJG1vbiwgJHllYXIsICRob3VyLCAkbWlu
LCAkc2VjLCAkcm1kcikgPSAiPyI7CgoJaWYgKCRkYXRlID1+IC9ccyo/KFx3ezEsOX0pLD9c
cys/KFxkKz8pXHMrPyhcd3szfSlccys/KFxkezR9KVxzKz8oXGR7MSwyfSk6KFxkezJ9KToo
XGR7Mn0pKC4qKS9pKSAKCXsgCgkJJGRvdz0kMTsgJGRheT0kMjsgJG1vbj0kMzsgJHllYXI9
JDQ7ICRob3VyPSQ1OyAkbWluPSQ2OyAkc2VjPSQ3OyAkcm1kcj0kODsKCQkkbW9uID0gJG1v
bj1+L0RlYy9pPzExOiRtb249fi9Ob3YvaT8xMDokbW9uPX4vT2N0L2k/OTokbW9uPX4vU2Vw
L2k/ODokbW9uPX4vQXVnL2k/NzokbW9uPX4vSnVsL2k/NjokbW9uPX4vSnVuL2k/NTokbW9u
PX4vTWF5L2k/NDokbW9uPX4vQXByL2k/MzokbW9uPX4vTWFyL2k/MjokbW9uPX4vRmViL2k/
MTowOwoKCQlldmFsIHsKCQkgICAgJGRhdGUgPSB0aW1lZ20oJHNlYywkbWluLCRob3VyLCRk
YXksJG1vbiwkeWVhcik7CgkJfTsKCQlpZiAoJEApIHsKCQkgICAgcmV0dXJuICJkYXRlLW91
dC1vZi1yYW5nZSAob3ZlcmZsb3cpIjsKCQl9CgoJCSMgYWRqdXN0IGZvciBsb2NhbCB0aW1l
CgkJaWYgKCRybWRyID1+IC9cK1xkKFxkKVxkXGQvKSB7ICRkYXRlIC09ICQxICogNjAgKiA2
MDsgfQoJCWlmICgkcm1kciA9fiAvXC1cZChcZClcZFxkLykgeyAkZGF0ZSArPSAkMSAqIDYw
ICogNjA7IH0KCX0KCWVsc2UgeyByZXR1cm4gImRhdGUtZm9ybWF0LXVua25vd24iOyB9Cgog
ICAgICAgIGlmICgkcmN2ZCAmJiAkcmN2ZCA9fiAvXHMqPyhcd3sxLDl9KSw/XHMrPyhcZCs/
KVxzKz8oXHd7M30pXHMrPyhcZHs0fSlccys/KFxkezEsMn0pOihcZHsyfSk6KFxkezJ9KSgu
KikvaSkKICAgICAgICB7CiAgICAgICAgICAgICAgICAkZG93PSQxOyAkZGF5PSQyOyAkbW9u
PSQzOyAkeWVhcj0kNDsgJGhvdXI9JDU7ICRtaW49JDY7ICRzZWM9JDc7ICRybWRyPSQ4OwoJ
CSRtb24gPSAkbW9uPX4vRGVjL2k/MTE6JG1vbj1+L05vdi9pPzEwOiRtb249fi9PY3QvaT85
OiRtb249fi9TZXAvaT84OiRtb249fi9BdWcvaT83OiRtb249fi9KdWwvaT82OiRtb249fi9K
dW4vaT81OiRtb249fi9NYXkvaT80OiRtb249fi9BcHIvaT8zOiRtb249fi9NYXIvaT8yOiRt
b249fi9GZWIvaT8xOjA7CgoJCWV2YWwgewoJCSAgICAkcmN2ZCA9IHRpbWVnbSgkc2VjLCRt
aW4sJGhvdXIsJGRheSwkbW9uLCR5ZWFyKTsKCQl9OwoJCWlmICgkQCkgewoJCSAgICByZXR1
cm4gImRhdGUtb3V0LW9mLXJhbmdlIChvdmVyZmxvdykiOwoJCX0KCiAgICAgICAgICAgICAg
ICAjIGFkanVzdCBmb3IgbG9jYWwgdGltZQogICAgICAgICAgICAgICAgaWYgKCRybWRyID1+
IC9cK1xkKFxkKVxkXGQvKSB7ICRyY3ZkIC09ICQxICogNjAgKiA2MDsgfQogICAgICAgICAg
ICAgICAgaWYgKCRybWRyID1+IC9cLVxkKFxkKVxkXGQvKSB7ICRyY3ZkICs9ICQxICogNjAg
KiA2MDsgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsgJHJjdmQgPSB0aW1lOyB9CgoJIyBj
aGVjayBmb3IgcmFuZ2UgKy8tCglteSAkZGlmZiA9ICRyY3ZkIC0gJGRhdGU7IG15ICRkaWZm
X2RheXMgPSByb3VuZCgkZGlmZi8oNjAqNjAqMjQpKTsKCWlmICgoJGRpZmYgPCAkZGF0ZV9s
aW1pdCkgYW5kICgkZGlmZiA+ICRkYXRlX2xpbWl0ICogLTEpKSB7IHJldHVybiAiZGF0ZS1p
bi1yYW5nZSAoJGRpZmZfZGF5cyBkYXlzKSI7IH0KCWVsc2UgeyByZXR1cm4gImRhdGUtb3V0
LW9mLXJhbmdlICgkZGlmZl9kYXlzIGRheXMpIjsgfQp9CgpzdWIgcm91bmQgCnsKICAgIG15
ICRudW0gPSBzaGlmdDsKICAgIHJldHVybiBpbnQoKCRudW0qMTAwKSswLjUpLzEwMDsKfQoK
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyMj
IyMjIyMjIyMjIyMjIFBhcnNlIEJvZHkgICMjIyMjIyMjIyMjIyMjIyMjIwojIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnN1YiBwYXJzZV9ib2R5
CnsKCSMgdGhpcyBmdW5jdGlvbiBpcyByZWFsbHkgb25seSB1c2VkIGZvcgoJIyBlbWFpbC10
by1lbWFpbCBjb21wYXJpc29ucywgd2hlcmUgcHJvY2Vzc2luZwoJIyB0aGUgZW50aXJlIGVt
YWlsIGlzIHJlcXVpcmVkLi4uIHVzdWFsbHkKCSMgd2UnbGwganVzdCBwcm9jZXNzIHRoZSBo
ZWFkZXIKCglteSAkYm9keSA9ICIiOwogICAgICAgIHdoaWxlICg8U1RESU4+KSB7ICRib2R5
IC49ICRfOyB9CglyZXR1cm4gJGJvZHk7Cn0JCQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyMjIyMjIyMjIFByb2Nlc3MgUmVjZWl2ZWQg
TGluZXMgICMjIyMjIyMjIyMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKCnN1YiBwcm9jZXNzX3JjdmQKewoJbXkgJHJjdmQgPSBzaGlmdDsK
CW15ICRydHJuID0gc2hpZnQ7CgkKCSMgaGV1cmlzdGljcwoJbXkgJExVU0VSCT0gcXJ+KD86
XHd8LXxcLikrP347CglteSAkRE9NQUlOCT0gcXJ+KD86XHd8LXxcLikrXC5cd3syLDR9fjsK
CW15ICRJUAkJPSBxcn4oPzpcZHsxLDN9XC4pezN9XGR7MSwzfX47CglteSAkRU1BSUwgCT0g
cXJ+JExVU0VSXEAkRE9NQUlOfjsKCW15ICRIRUxPCT0gcXJ+W15cc1wwXC9cXFwjXSs/fjsK
CW15ICRSRE5TCT0gcXJ+KD86JERPTUFJTnxcWz8kSVBcXT98dW5rbm93bnx1bnZlcmlmaWVk
KX47CgkKCW15ICRlZGdlX2lwID0gIiI7CglteSAkdW50cnVzdGVkID0gMDsKCglpZiAoJG5v
X2xvY2FsX3JlY2VpdmVkKSB7CgkgICAgbXkgJGxvY2FsX3JjdmQ7CgkgICAgJGxvY2FsX3Jj
dmQtPnsndmFsdWUnfSA9ICJhdXRvLWdlbmVyYXRlZCI7CgkgICAgJGxvY2FsX3JjdmQtPnsn
bmFtZSd9ID0gIlJlY2VpdmVkIjsKCSAgICAkbG9jYWxfcmN2ZC0+eydzYW5lJ30gPSAidHJ1
c3RlZCI7CgkgICAgJGxvY2FsX3JjdmQtPnsncmRucyd9ID0gJG9wdF9yZW1vdGVfbmFtZSB8
fCAiIjsKCSAgICAkbG9jYWxfcmN2ZC0+eydpcGFkJ30gPSAkb3B0X3JlbW90ZV9pcCB8fCAi
IjsKCSAgICAkbG9jYWxfcmN2ZC0+eydtdGFuJ30gPSAkb3B0X2xvY2FsX25hbWUgfHwgIiI7
CgkgICAgJGxvY2FsX3JjdmQtPnsnbXRhaSd9ID0gJG9wdF9sb2NhbF9pcCB8fCAiIjsKCSAg
ICAkbG9jYWxfcmN2ZC0+eydoZWxvJ30gPSAkb3B0X2hlbG8gfHwgIiI7CgkgICAgJGxvY2Fs
X3JjdmQtPnsnZm9yZSd9ID0gJG9wdF9yY3B0IHx8ICIiOwoJICAgICRsb2NhbF9yY3ZkLT57
J2Zyb20nfSA9ICRyZXR1cm5fcGF0aCB8fCAiIjsKCgkgICAgc3BsaWNlKEB7JHJjdmR9LCAw
LCAwLCAkbG9jYWxfcmN2ZCk7Cgl9CgkgICAgCgkjIGNoZWNrIGlmIHdlIHdlcmUgcGFzc2Vk
IGEgdmFsaWQgYXJyYXkgb2YgcmVjZWl2ZWQgbGluZXMKCXVubGVzcyAoKGRlZmluZWQgJHJj
dmQpICYmIChyZWYoJHJjdmQpIGVxICJBUlJBWSIpICYmICRyY3ZkLT5bMF0tPnsndmFsdWUn
fSkKCXsKCQlubyBzdHJpY3QgJ3JlZnMnOwoJCW15ICVyY3ZkX2hhc2ggPSAoJ3ZhbHVlJyA9
PiAiZnJvbSBsb2NhbGhvc3Q7ICIgLiBnbXRpbWUgdGltZSwgJ25hbWUnID0+ICJSZWNlaXZl
ZCIpOwoJCW15IEByY3ZkX2FycmF5OyAkcmN2ZF9hcnJheVswXSA9IFwlcmN2ZF9oYXNoOyAg
JHJjdmQgPSBcQHJjdmRfYXJyYXk7Cgl9CgllbHNlIHsKCgkjIGl0ZXJhdGUgdGhyb3VnaCBl
YWNoIHJlY2VpdmVkIGhlYWRlciwgcGFyc2luZyBhbmQgdmFsaWRhdGluZyB0aGUgaW5mbwoJ
Zm9yIChteSAkeCA9IDA7ICR4IDwgc2NhbGFyIEAkcmN2ZDsgJHgrKykKCXsKCQkjIHNraXAg
cHJvY2Vzc2luZyBpZiB3ZSBhbHJlYWR5IGxvc3QgY29uZmlkZW5jZSBpbiB0aGlzIHRyYWls
IG9mIHJlY2VpdmVkIGxpbmVzCgkJI2lmICgkdW50cnVzdGVkKSB7ICRyY3ZkLT5bJHhdLT57
J3NhbmUnfSA9ICJ1bnRydXN0ZWQiOyBuZXh0OyB9CgkKCQlteSAkaGVsbyA9ICRyY3ZkLT5b
JHhdLT57J2hlbG8nfSB8fCAiIjsKCQlteSAkaXBhZCA9ICRyY3ZkLT5bJHhdLT57J2lwYWQn
fSB8fCAiIjsKCQlteSAkcmRucyA9ICRyY3ZkLT5bJHhdLT57J3JkbnMnfSB8fCAiIjsKCQlt
eSAkZnJvbSA9ICRyY3ZkLT5bJHhdLT57J2Zyb20nfSB8fCAiIjsKCQlteSAkbXRhbiA9ICRy
Y3ZkLT5bJHhdLT57J210YW4nfSB8fCAiIjsKCQlteSAkbXRhaSA9ICRyY3ZkLT5bJHhdLT57
J210YWknfSB8fCAiIjsKCQlteSAkZm9yZSA9ICRyY3ZkLT5bJHhdLT57J2ZvcmUnfSB8fCAi
IjsKCgkJbXkgJGlkbnQ9IiI7IG15ICRtdGF2PSIiOyBteSAkd2l0aD0iIjsgbXkgJGRhdGU9
IiI7CgkJCgkJIyB0cnkgdG8gdGFrZSBpbnRvIGFjY291bnQgYWxsIGtub3duIE1UQSBmb3Jt
YXRzCgkJCgkJaWYgICAgKCRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gPX4gcy9cKGVudmVsb3Bl
LSg/OnNlbmRlcnxmcm9tKSA8KCRFTUFJTCk+XCkvL2dpcykgCQkJeyAkZnJvbT0kMTsgCQkJ
CQl9IyBwcmludCAiWC0keC1tYXRjaGVkLTAxOiBmcm9tPSRmcm9tLCByZW1haW5pbmc9JHJj
dmQtPlskeF0tPnsndmFsdWUnfSAkQ1JMRiI7IH0KCQlpZiAgICAoJHJjdmQtPlskeF0tPnsn
dmFsdWUnfSA9fiBzLztccys/KFx3ezN9LCBcZHsxLDJ9IFx3ezN9IFxkezIsNH0uKj8pJC8v
Z2lzKQkJCXsgJGRhdGU9JDE7IAkJCQkJfSMgcHJpbnQgIlgtJHgtbWF0Y2hlZC0wMjogZGF0
ZT0kZGF0ZSwgcmVtYWluaW5nPSRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gJENSTEYiOyB9CgkJ
aWYgICAgKCRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gPX4gcy9mb3Jccys/PD8oJEVNQUlMKT4/
KD86IFwoc2luZ2xlLWRyb3BcKSk/Ly9naXMpIAkJCXsgJGZvcmU9JDE7IAkJCQkJfSMgcHJp
bnQgIlgtJHgtbWF0Y2hlZC0wMzogZm9yZT0kZm9yZSwgcmVtYWluaW5nPSRyY3ZkLT5bJHhd
LT57J3ZhbHVlJ30gJENSTEYiOyB9CgkJaWYgICAgKCRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30g
PX4gcy9ieVxzKz8oXFMrPykgXCgoJElQKVwpIFwoKC4qPylcKS8vZ2lzKSAJCQkJeyAkbXRh
bj0kMTsgJG10YWk9JDI7ICRtdGF2PSQzOyAJCX0jIHByaW50ICJYLSR4LW1hdGNoZWQtMDQ6
IG10YW49JG10YW4sIG10YWk9JG10YWksIG10YXY9JG10YXYsIHJlbWFpbmluZz0kcmN2ZC0+
WyR4XS0+eyd2YWx1ZSd9ICRDUkxGIjsgfQoJCWVsc2lmICgkcmN2ZC0+WyR4XS0+eyd2YWx1
ZSd9ID1+IHMvYnlccys/KFxTKz8pIFxbKCRJUClcXS8vZ2lzKSAJCQkJCXsgJG10YW49JDE7
ICRtdGFpPSQyOyAJCQkJfSMgcHJpbnQgIlgtJHgtbWF0Y2hlZC0wNTogbXRhbj0kbXRhbiwg
bXRhaT0kbXRhaSwgcmVtYWluaW5nPSRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gJENSTEYiOyB9
CgkJZWxzaWYgKCRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gPX4gcy9ieVxzKz8oXFMrPykgXCgo
Lis/KVwpLy9naXMpIAkJCQkJeyAkbXRhbj0kMTsgJG10YXY9JDI7IAkJCQl9IyBwcmludCAi
WC0keC1tYXRjaGVkLTA2OiBtdGFuPSRtdGFuLCBtdGF2PSRtdGF2LCByZW1haW5pbmc9JHJj
dmQtPlskeF0tPnsndmFsdWUnfSAkQ1JMRiI7IH0KCQllbHNpZiAoJHJjdmQtPlskeF0tPnsn
dmFsdWUnfSA9fiBzL2J5XHMrPygkSVApKD89XFd8O3wkKS8vZ2lzKSAJCQkJCQl7ICRtdGFp
PSQxOyAJCQkJCX0jIHByaW50ICJYLSR4LW1hdGNoZWQtMDc6IG10YWk9JG10YWksIHJlbWFp
bmluZz0kcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ICRDUkxGIjsgfQoJCWVsc2lmICgkcmN2ZC0+
WyR4XS0+eyd2YWx1ZSd9ID1+IHMvYnlccys/KCRET01BSU4pKD89XFd8O3wkKS8vZ2lzKSAJ
CQkJCXsgJG10YW49JDE7IAkJCQkJfSMgcHJpbnQgIlgtJHgtbWF0Y2hlZC0wODogbXRhbj0k
bXRhbiwgcmVtYWluaW5nPSRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gJENSTEYiOyB9CgkJZWxz
aWYgKCRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gPX4gcy9ieVxzKz8oXFMrPykoPz1cV3w7fCQp
Ly9naXMpIAkJCQkJeyAkbXRhbj0kMTsgCQkJCQl9IyBwcmludCAiWC0keC1tYXRjaGVkLTA5
OiBtdGFuPSRtdGFuLCByZW1haW5pbmc9JHJjdmQtPlskeF0tPnsndmFsdWUnfSAkQ1JMRiI7
IH0KCQlpZiAgICAoJHJjdmQtPlskeF0tPnsndmFsdWUnfSA9fiBzLyg/OndpdGgpXHMrPyhc
Uys/KSBcKCguKj8pXCkvL2dpcykgCQkJCQl7ICR3aXRoPSQxOyAkbXRhdj0kMiBpZiAhJG10
YXY7IAkJfSMgcHJpbnQgIlgtJHgtbWF0Y2hlZC0xMDogd2l0aD0kd2l0aCwgbXRhdj0kbXRh
diwgcmVtYWluaW5nPSRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gJENSTEYiO30KCQllbHNpZiAo
JHJjdmQtPlskeF0tPnsndmFsdWUnfSA9fiBzLyg/OndpdGgpXHMrPyhcUys/KSg/PVxXfDt8
JCkvL2dpcykgCQkJCQl7ICR3aXRoPSQxOyAJCQkJCX0jIHByaW50ICJYLSR4LW1hdGNoZWQt
MTE6IHdpdGg9JHdpdGgsIHJlbWFpbmluZz0kcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ICRDUkxG
IjsgfQoJCWlmICAgICgkcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ID1+IHMvXmZyb21ccys/KCRS
RE5TKSBcKEhFTE8gKCRIRUxPKVwpIFwoKCRMVVNFUilcQFxbPygkSVApXF0/Ly9naXMpIAl7
ICRyZG5zPSQxOyAkaGVsbz0kMjsgJGlkbnQ9JDM7ICRpcGFkPSQ0OyAJfSMgcHJpbnQgIlgt
JHgtbWF0Y2hlZC0xMjogcmRucz0kcmRucywgaGVsbz0kaGVsbywgaWRudD0kaWRudCwgaXBh
ZD0kaXBhZCwgcmVtYWluaW5nPSRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gJENSTEYiOyB9CgkJ
ZWxzaWYgKCRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gPX4gcy9eZnJvbVxzKz8oJFJETlMpIFwo
SEVMTyAoJEhFTE8pXCkgXChcWz8oJElQKVxdPy8vZ2lzKSAJCXsgJHJkbnM9JDE7ICRoZWxv
PSQyOyAkaXBhZD0kMzsgCQl9IyBwcmludCAiWC0keC1tYXRjaGVkLTEzOiByZG5zPSRyZG5z
LCBoZWxvPSRoZWxvLCBpcGFkPSRpcGFkLCByZW1haW5pbmc9JHJjdmQtPlskeF0tPnsndmFs
dWUnfSAkQ1JMRiI7IH0KCQllbHNpZiAoJHJjdmQtPlskeF0tPnsndmFsdWUnfSA9fiBzL15m
cm9tXHMrPygkUkROUykgXChcWygkSVApXF0gaGVsbz0oJEhFTE8pXCkvL2dpcykgCQkJeyAk
cmRucz0kMTsgJGlwYWQ9JDI7ICRoZWxvPSQzOyAJCX0jIHByaW50ICJYLSR4LW1hdGNoZWQt
MTQ6IHJkbnM9JHJkbnMsIGlwYWQ9JGlwYWQsIGhlbG89JGhlbG8sIHJlbWFpbmluZz0kcmN2
ZC0+WyR4XS0+eyd2YWx1ZSd9ICRDUkxGIjsgfQoJCWVsc2lmICgkcmN2ZC0+WyR4XS0+eyd2
YWx1ZSd9ID1+IHMvXmZyb21ccys/KCRSRE5TKSBcKCgkTFVTRVIpXEBcWz8oJElQKVxdP1wp
Ly9naXMpIAkJCXsgJHJkbnM9JDE7ICRpZG50PSQyOyAkaXBhZD0kMzsgCQl9IyBwcmludCAi
WC0keC1tYXRjaGVkLTE1OiByZG5zPSRyZG5zLCBpZG50PSRpZG50LCBpcGFkPSRpcGFkLCBy
ZW1haW5pbmc9JHJjdmQtPlskeF0tPnsndmFsdWUnfSAkQ1JMRiI7IH0KCQllbHNpZiAoJHJj
dmQtPlskeF0tPnsndmFsdWUnfSA9fiBzL15mcm9tXHMrPygkUkROUylcKCgkSVApXCkvL2dp
cykgCQkJCQl7ICRyZG5zPSQxOyAkaXBhZD0kMjsgCQkJCX0jIHByaW50ICJYLSR4LW1hdGNo
ZWQtMTY6IHJkbnM9JHJkbnMsIGlwYWQ9JGlwYWQsIHJlbWFpbmluZz0kcmN2ZC0+WyR4XS0+
eyd2YWx1ZSd9ICRDUkxGIjsgfQoJCWVsc2lmICgkcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ID1+
IHMvXmZyb21ccys/XFsoJElQKVxdIFwoaGVsbz0oJEhFTE8pIGlkZW50PSgkTFVTRVIpXCkv
L2dpcykgCQl7ICRpcGFkPSQxOyAkaGVsbz0kMjsgJGlkbnQ9JDM7IAkJfSMgcHJpbnQgIlgt
JHgtbWF0Y2hlZC0xNzogaXBhZD0kaXBhZCwgaGVsbz0kaGVsbywgaWRudD0kaWRudCwgcmVt
YWluaW5nPSRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gJENSTEYiOyB9CgkJZWxzaWYgKCRyY3Zk
LT5bJHhdLT57J3ZhbHVlJ30gPX4gcy9eZnJvbVxzKz9cWygkSVApXF0gXChhY2NvdW50ICgk
TFVTRVIpIEhFTE8gKCRIRUxPKVwpLy9naXMpIAkJeyAkaXBhZD0kMTsgJGlkbnQ9JDI7ICRo
ZWxvPSQzOyAJCX0jIHByaW50ICJYLSR4LW1hdGNoZWQtMTg6IGlwYWQ9JGlwYWQsIGlkbnQ9
JGlkbnQsIGhlbG89JGhlbG8sIHJlbWFpbmluZz0kcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ICRD
UkxGIjsgfQoJCWVsc2lmICgkcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ID1+IHMvXmZyb21ccys/
XFsoJElQKVxdIFwoaGVsbz0oJEhFTE8pXCkvL2dpcykgCQkJCXsgJGlwYWQ9JDE7ICRoZWxv
PSQyOyAJCQkJfSMgcHJpbnQgIlgtJHgtbWF0Y2hlZC0xOTogaXBhZD0kaXBhZCwgaGVsbz0k
aGVsbywgcmVtYWluaW5nPSRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gJENSTEYiOyB9CgkJZWxz
aWYgKCRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gPX4gcy9eZnJvbVxzKz9cWz8oJElQKVxdPzo/
XGQqPyBcKEhFTE8gKCRIRUxPKVwpLy9naXMpIAkJCXsgJGlwYWQ9JDE7ICRoZWxvPSQyOyAJ
CQkJfSMgcHJpbnQgIlgtJHgtbWF0Y2hlZC0yMDogaXBhZD0kaXBhZCwgaGVsbz0kaGVsbywg
cmVtYWluaW5nPSRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gJENSTEYiOyB9CgkJZWxzaWYgKCRy
Y3ZkLT5bJHhdLT57J3ZhbHVlJ30gPX4gcy9eZnJvbVxzKz8oJEhFTE8pIFwoSURFTlQ6KCRM
VVNFUilcQCgkUkROUykgXFsoJElQKVxdLy9naXMpIAkJeyAkaGVsbz0kMTsgJGlkbnQ9JDI7
ICRyZG5zPSQzOyAkaXBhZD0kNDsgCX0jIHByaW50ICJYLSR4LW1hdGNoZWQtMjE6IGhlbG89
JGhlbG8sIGlkbnQ9JGlkbnQsIHJkbnM9JHJkbnMsIGlwYWQ9JGlwYWQsIHJlbWFpbmluZz0k
cmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ICRDUkxGIjsgfQoJCWVsc2lmICgkcmN2ZC0+WyR4XS0+
eyd2YWx1ZSd9ID1+IHMvXmZyb21ccys/KCRIRUxPKSBcKDw/KCRSRE5TKT4/XHM/XFsoJElQ
KVxdLy9naXMpIAkJCXsgJGhlbG89JDE7ICRyZG5zPSQyOyAkaXBhZD0kMzsgCQl9IyBwcmlu
dCAiWC0keC1tYXRjaGVkLTIyOiBoZWxvPSRoZWxvLCByZG5zPSRyZG5zLCBpcGFkPSRpcGFk
LCByZW1haW5pbmc9JHJjdmQtPlskeF0tPnsndmFsdWUnfSAkQ1JMRiI7IH0KCQllbHNpZiAo
JHJjdmQtPlskeF0tPnsndmFsdWUnfSA9fiBzL15mcm9tXHMrPygkSEVMTykgXChcWygkSVAp
XF0gaWRlbnQ9KCRMVVNFUilcKS8vZ2lzKSAJCQl7ICRoZWxvPSQxOyAkaXBhZD0kMjsgJGlk
bnQ9JDM7IAkJfSMgcHJpbnQgIlgtJHgtbWF0Y2hlZC0yMzogaGVsbz0kaGVsbywgaXBhZD0k
aXBhZCwgaWRudD0kaWRudCwgcmVtYWluaW5nPSRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gJENS
TEYiOyB9CgkJZWxzaWYgKCRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gPX4gcy9eZnJvbVxzKz8o
JEhFTE8pIFwocHJveHlpbmcgZm9yICgkSVApXCkgXCguKj8gdXNlciAoJExVU0VSKVwpLy9n
aXMpCXsgJGhlbG89JDE7ICRpcGFkPSQyOyAkaWRudD0kMzsgCQl9IyBwcmludCAiWC0keC1t
YXRjaGVkLTI0OiBoZWxvPSRoZWxvLCBpcGFkPSRpcGFkLCBpZG50PSRpZG50LCByZW1haW5p
bmc9JHJjdmQtPlskeF0tPnsndmFsdWUnfSAkQ1JMRiI7IH0KCQllbHNpZiAoJHJjdmQtPlsk
eF0tPnsndmFsdWUnfSA9fiBzL15mcm9tXHMrPygkSEVMTykgXChhY2NvdW50ICgkTFVTRVIp
IFxbKCRJUClcXSB2ZXJpZmllZFwpLy9naXMpIAl7ICRoZWxvPSQxOyAkaWRudD0kMjsgJGlw
YWQ9JDM7IAkJfSMgcHJpbnQgIlgtJHgtbWF0Y2hlZC0yNTogaGVsbz0kaGVsbywgaWRudD0k
aWRudCwgaXBhZD0kaXBhZCwgcmVtYWluaW5nPSRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gJENS
TEYiOyB9CgkJZWxzaWYgKCRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gPX4gcy9eZnJvbVxzKz9c
KD8oJEhFTE8pIFwoP1xbPygkSVApXF0/XCk/Ly9naXMpIAkJCQl7ICRoZWxvPSQxOyAkaXBh
ZD0kMjsgCQkJCX0jIHByaW50ICJYLSR4LW1hdGNoZWQtMjY6IGhlbG89JGhlbG8sIGlwYWQ9
JGlwYWQsIHJlbWFpbmluZz0kcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ICRDUkxGIjsgfQoJCWVs
c2lmICgkcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ID1+IHMvXmZyb21ccys/KCRIRUxPKSBcKGxv
Y2FsaG9zdCBcWy4qPzooJElQKVxdXCkvL2dpcykgCQkJeyAkaGVsbz0kMTsgJGlwYWQ9JDI7
IAkJCQl9IyBwcmludCAiWC0keC1tYXRjaGVkLTI3OiBoZWxvPSRoZWxvLCBpcGFkPSRpcGFk
LCByZW1haW5pbmc9JHJjdmQtPlskeF0tPnsndmFsdWUnfSAkQ1JMRiI7IH0KCQllbHNpZiAo
JHJjdmQtPlskeF0tPnsndmFsdWUnfSA9fiBzL15mcm9tXHMrPygkSEVMTykgXCgoJExVU0VS
KVxAKCRSRE5TKVwpLy9naXMpIAkJCXsgJGhlbG89JDE7ICRpZG50PSQyOyAkcmRucz0kMzsg
CQl9IyBwcmludCAiWC0keC1tYXRjaGVkLTI4OiBoZWxvPSRoZWxvLCBpZG50PSRpZG50LCBy
ZG5zPSRyZG5zLCByZW1haW5pbmc9JHJjdmQtPlskeF0tPnsndmFsdWUnfSAkQ1JMRiI7IH0K
CQllbHNpZiAoJHJjdmQtPlskeF0tPnsndmFsdWUnfSA9fiBzL15mcm9tXHMrPygkSEVMTykg
XCgoJFJETlMpXCkvL2dpcykgCQkJCQl7ICRoZWxvPSQxOyAkcmRucz0kMjsgCQkJCX0jIHBy
aW50ICJYLSR4LW1hdGNoZWQtMjk6IGhlbG89JGhlbG8sIHJkbnM9JHJkbnMsIHJlbWFpbmlu
Zz0kcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ICRDUkxGIjsgfQoJCWVsc2lmICgkcmN2ZC0+WyR4
XS0+eyd2YWx1ZSd9ID1+IHMvXChmcm9tXHMrPygkTFVTRVIpXEAoJFJETlMpXCkvL2dpcykJ
CQkJCXsgJGlkbnQ9JDE7ICRyZG5zPSQyOyAJCQkJfSMgcHJpbnQgIlgtJHgtbWF0Y2hlZC0z
MDogaWRudD0kaWRudCwgcmRucz0kcmRucywgcmVtYWluaW5nPSRyY3ZkLT5bJHhdLT57J3Zh
bHVlJ30gJENSTEYiOyB9CgkJZWxzaWYgKCRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gPX4gcy9c
KGZyb21ccys/KCRMVVNFUilcQCgkSEVMTylcKS8vZ2lzKQkJCQkJeyAkaWRudD0kMTsgJGhl
bG89JDI7IAkJCQl9IyBwcmludCAiWC0keC1tYXRjaGVkLTMxOiBpZG50PSRpZG50LCBoZWxv
PSRoZWxvLCByZW1haW5pbmc9JHJjdmQtPlskeF0tPnsndmFsdWUnfSAkQ1JMRiI7IH0KCQll
bHNpZiAoJHJjdmQtPlskeF0tPnsndmFsdWUnfSA9fiBzL15mcm9tXHMrP1woP1xbPygkSVAp
XF0/XCk/Ly9naXMpIAkJCQkJeyAkaXBhZD0kMTsgCQkJCQl9IyBwcmludCAiWC0keC1tYXRj
aGVkLTMyOiBpcGFkPSRpcGFkLCByZW1haW5pbmc9JHJjdmQtPlskeF0tPnsndmFsdWUnfSAk
Q1JMRiI7IH0KCQllbHNpZiAoJHJjdmQtPlskeF0tPnsndmFsdWUnfSA9fiBzL15mcm9tXHMr
PygkSEVMTykoPz1cV3w7fCQpLy9naXMpIAkJCQkJeyAkaGVsbz0kMTsgCQkJCQl9IyBwcmlu
dCAiWC0keC1tYXRjaGVkLTMzOiBoZWxvPSRoZWxvLCByZW1haW5pbmc9JHJjdmQtPlskeF0t
PnsndmFsdWUnfSAkQ1JMRiI7IH0KCgkJIyBsb29rdXAgSVAgaWYgbm90IHByb3ZpZGVkCgkJ
JGlwYWQgPSBob3N0KCRyZG5zKSBpZiAhJGlwYWQgJiYgJHJkbnMgJiYgJG9wdGlvbnMgPX4g
L2QvOwoJCSRpcGFkID0gaG9zdCgkaGVsbykgaWYgISRpcGFkICYmICEkcmRucyAmJiAkaGVs
byAmJiAkaGVsbyA9fiAvJERPTUFJTi8gJiYgJG9wdGlvbnMgPX4gL2QvOwoKCQkjIGV4Y2x1
ZGUgbGluZXMgd2l0aCBubyBJUAoJCSNuZXh0IGlmICEkaXBhZCAmJiAoKHNjYWxhciBAJHJj
dmQpID4gMSk7CgoJCSMgZW5zdXJlIHRoZSBsb2NhbCByZWNlaXZlZCBsaW5lIGhhcyBhIGRh
dGUgc3RhbXAKCQkkZGF0ZSA9IGdtdGltZSB0aW1lIHVubGVzcyAkZGF0ZSB8fCAkeDsKCgkJ
IyBzYXZlICJmcm9tIiBpbmZvIGZvciBjb21wYXJpc29uIGluIG5leHQgaXRlcmF0aW9uCgkJ
JHJjdmQtPlskeF0tPnsncmRucyd9CT0gJHJkbnM7CQkKCQkkcmN2ZC0+WyR4XS0+eydpcGFk
J30JPSAkaXBhZDsKCQkkcmN2ZC0+WyR4XS0+eydkYXRlJ30JPSAkZGF0ZTsKCgkJIyBleGNs
dWRlIGxpbmVzIGZyb20gbG9jYWwsIHByaXZhdGUgKFJGQyAxOTE4KSwgYW5kIGludmFsaWQg
SVAgYWRkcmVzcyByYW5nZXMKCQlteSAkcmVzZXJ2ZWQgPSBxcn5eKCg/OjEyN1wuKXwoPzox
MFwuKXwoPzoxNzJcLig/OjFbNi05XXwyWzAtOV18MzEpXC4pfCg/OjE5MlwuMTY4XC4pfCg/
OjE2OVwuMjU0XC4pKX47CgkJbXkgJHZhbGlkID0gcXJ+XigoPzowPzA/XGR8WzAxXT9cZFxk
fDJbMC00XVxkfDI1WzAtNV0pXC4oPzowPzA/XGR8WzAxXT9cZFxkfDJbMC00XVxkfDI1WzAt
NV0pXC4oPzowPzA/XGR8WzAxXT9cZFxkfDJbMC00XVxkfDI1WzAtNV0pXC4oPzowPzA/XGR8
WzAxXT9cZFxkfDJbMC00XVxkfDI1WzAtNV0pKSR+OwoJCW5leHQgaWYgKCgkcmRucyBhbmQg
JHJkbnMgPX4gL2xvY2FsaG9zdC9pKSB8fCAoJGlwYWQgYW5kICgkaXBhZCA9fiAvJHJlc2Vy
dmVkLyB8fCAkaXBhZCAhfiAvJHZhbGlkLykpKSAmJiAoKHNjYWxhciBAJHJjdmQpID4gMSk7
CgkJCgkJIyBsb29rdXAgTVRBIElQL3JETlMgaWYgbm90IHByb3ZpZGVkCgkJJG10YWkgPSBo
b3N0KCRtdGFuKSBpZiAhJG10YWkgJiYgJG10YW4gJiYgJG9wdGlvbnMgPX4gL2QvOwoJCSRt
dGFuID0gaG9zdCgkbXRhaSkgaWYgISRtdGFuICYmICRtdGFpICYmICRvcHRpb25zID1+IC9k
LzsKCgkJIyBleGNsdWRlIGxpbmVzIGZyb20gd2l0aGluIG91ciBjbGFzcyBCICgvMTYpIG5l
dHdvcmsKCQluZXh0IGlmICgoJGVkZ2VfaXAgJiYgJGlwYWQgJiYgaXNfc2FtZV9jbGFzc19C
KCRlZGdlX2lwLCRpcGFkKSl8fCghJGVkZ2VfaXAgJiYgJG10YWkgJiYgJGlwYWQgJiYgaXNf
c2FtZV9jbGFzc19CKCRtdGFpLCRpcGFkKSkpICYmICgoc2NhbGFyIEAkcmN2ZCkgPiAxKTsK
CQkKCQkjIHBlcmZvcm0gcmV2ZXJzZSBETlMgbG9va3VwIGlmIG5vdCBwcm92aWRlZCBieSBN
VEEKCQkkcmRucyA9IGhvc3QoJGlwYWQpIGlmICEkcmRucyAmJiAkaXBhZCAmJiAkb3B0aW9u
cyA9fiAvZC87CgkJCgkJIyBmb3JjZSBhIHJldmVyc2UgRE5TIGxvb2t1cCBvbiBhbGwgSVBz
LCBldmVuIHRob3NlIHdpdGggYW4gUkROUyBzZXQgYnkgdGhlIE1UQQoJCSRyZG5zID0gaG9z
dCgkaXBhZCkgaWYgJGlwYWQgJiYgJG9wdGlvbnMgPX4gL2YvOwoJCQoJCSMgcGVyZm9ybSBB
U04gbG9va3VwIChSRkMgMTkzMC8yMjcwKQoJCW15ICRhc24gPSAiIjsKCQkkYXNuID0gYXNu
KCRpcGFkKSBpZiAkaXBhZCAmJiAkb3B0aW9ucyA9fiAvYS87CgoJCSMgcGVyZm9ybSBTUEYg
bG9va3VwIChSRkMgNDQwOCkKCQlteSAkcmVzdWx0ID0gIiI7IG15ICRyZWNlaXZlZF9zcGYg
PSAiIjsKCQlpZiAoJG9wdGlvbnMgPX4gL3AvKQoJCXsKCQkJaWYgKHNjYWxhciBAY2lkcl9s
aXN0ICYmIGV2YWx7TmV0OjpDSURSOjpjaWRybG9va3VwKCRpcGFkLCBAY2lkcl9saXN0KX0p
CgkJCXsKCQkJCSRyZXN1bHQgPSAicGFzcyI7CgkJCQkkcmVjZWl2ZWRfc3BmID0gInBhc3Mg
KCRpcGFkIGlzIGxvY2FsbHkgd2hpdGVsaXN0ZWQpIjsKCQkJfQoKCQkJaWYgKCRkYmZpbGUg
JiYgISRyZXN1bHQpCgkJCXsKCQkJCSZyZXRpZSB1bmxlc3MgdGllZCAlZGI7CgkJCQlpZiAo
JGRieyRpcGFkfSkKCQkJCXsKCQkJCQkkcmVzdWx0ID0gInBhc3MiOwoJCQkJCSRyZWNlaXZl
ZF9zcGYgPSAicGFzcyAoJGlwYWQgaXMgYXV0aGVudGljYXRlZCB2aWEgUE9QMykiOwoJCQkJ
fQoJCQl9CgkJCQoJCQlpZiAoJHJ0cm4gJiYgJGlwYWQgJiYgISRyZXN1bHQpCgkJCXsKCQkJ
ICAgIG15ICRzcnZyID0gJHJkbnM/JHJkbnM6KCRoZWxvPyRoZWxvOiRpcGFkKTsKCQkJICAg
IGV2YWwgewoJCQkJbXkgJHNwZl9zZXJ2ZXIgPSBNYWlsOjpTUEY6OlNlcnZlci0+bmV3KCk7
CgkJCQlteSAkcmVxdWVzdCA9IE1haWw6OlNQRjo6UmVxdWVzdC0+bmV3KAoJCQkJICAgIGlk
ZW50aXR5ID0+ICRydHJuLAoJCQkJICAgIGlwX2FkZHJlc3MgPT4gJGlwYWQsCgkJCQkgICAg
aGVsb19pZGVudGl0eSA9PiAkc3J2cgoJCQkJICAgICk7CgkJCQlteSAkcmVzcG9uc2UgPSAk
c3BmX3NlcnZlci0+cHJvY2VzcygkcmVxdWVzdCk7CgkJCQkkcmVzdWx0ID0gJHJlc3BvbnNl
LT5jb2RlOwoJCQkJJHJlY2VpdmVkX3NwZiA9ICRyZXNwb25zZS0+cmVjZWl2ZWRfc3BmX2hl
YWRlcjsKCQkJICAgIH07CgkJCSAgICBpZiAoJEApIHsKCQkJCXN5c2xvZygnd2FybmluZycs
ICdTUEYgcXVlcnkgZXJyb3IgKGlwPSVzLCBzZW5kZXI9JXMsIGhlbG89JXMpOiAlcycsCgkJ
CQkgICAgICAgJGlwYWQsICRydHJuLCAkc3J2ciwgJEApOwoJCQkJJEAgPSB1bmRlZjsKCQkJ
CSRyZXN1bHQgPSB1bmRlZjsKCQkJICAgIH0KCQkJfQoJCQkKCQkJaWYgKCEkcmVzdWx0KQoJ
CQl7CgkJCQkkcmVzdWx0ID0gImVycm9yIjsKCQkJCSRyZWNlaXZlZF9zcGYgPSAidW5hYmxl
IHRvIGRldGVybWluZSBzZW5kZXIgaW5mbyI7CgkJCX0KCQl9CgoJCSMgd2UgaW1wbGljaXRl
bHkgdHJ1c3QgdGhlIHJlY2VpdmVkIGxpbmUgc2V0ICJieSIgb3VyIG93biBzZXJ2ZXIgYXMg
dmFsaWQgKGZpcnN0IHVudHJ1c3RlZCAiZnJvbSIpCgkJaWYgKCEkZWRnZV9pcCkgCgkJeyAK
CQkJJGVkZ2VfaXAgPSAkbXRhaTsgCgkJCSRyY3ZkLT5bJHhdLT57J3NhbmUnfSA9IHNldF9y
Y3ZkKCRoZWxvLCRpcGFkLCRpZG50LCRyZG5zLCRmcm9tLCRtdGFuLCRtdGFpLCRtdGF2LCRm
b3JlLCR3aXRoLCRkYXRlLCRhc24sJHJlc3VsdCk7IAoJCQkkcmN2ZC0+WyR4XS0+eydzcGYn
fSA9ICRyZWNlaXZlZF9zcGYgaWYgJG9wdGlvbnMgPX4gL3AvOwoJCX0KCgkJIyBub3cgd2Un
bGwgdHJ5IHRvIGVzdGFibGlzaCB0aGUgdmFsaWRpdHkgb2YgZWFjaCByZWNlaXZlZCBsaW5l
IGJ5IGNoZWNraW5nIAoJCSMgZm9yIGNvbnRpbnVpdHkgYW5kIHJlamVjdGluZyBsaW5lcyB0
aGF0IGRvbid0IGZpdCB0aGUgImZyb20vYnkiIGNoYWluCgkJZWxzZQoJCXsKCQkJI3ByaW50
ICIgYnkgIiAuICRtdGFuIC4gIiAvIHByZXYgZnJvbSAiIC4gJHJjdmQtPlskeC0xXS0+eydy
ZG5zJ30gLiAiJENSTEYiOwoJCQkjcHJpbnQgIiBieSAiIC4gJG10YWkgLiAiIC8gcHJldiBm
cm9tICIgLiAkcmN2ZC0+WyR4LTFdLT57J2lwYWQnfSAuICIkQ1JMRiI7CgkJCWlmICgKCQkJ
CSgKCQkJCQkoJG10YW4gJiYgJHJjdmQtPlskeC0xXS0+eydyZG5zJ30gJiYgJG10YW4gPX4g
LyRyY3ZkLT5bJHgtMV0tPnsncmRucyd9LykgfHwgCgkJCSAgICAgCQkoJG10YWkgJiYgJHJj
dmQtPlskeC0xXS0+eydpcGFkJ30gJiYgJG10YWkgPX4gLyRyY3ZkLT5bJHgtMV0tPnsnaXBh
ZCd9LykKCQkJCSkgJiYgCSghJHVudHJ1c3RlZCkKCQkJICAgKSAKCQkJICAgICB7IAoJCQkJ
JHJjdmQtPlskeF0tPnsnc2FuZSd9ID0gc2V0X3JjdmQoJGhlbG8sJGlwYWQsJGlkbnQsJHJk
bnMsJGZyb20sJG10YW4sJG10YWksJG10YXYsJGZvcmUsJHdpdGgsJGRhdGUsJGFzbiwkcmVz
dWx0KTsgCgkJCQkkcmN2ZC0+WyR4XS0+eydzcGYnfSA9ICRyZWNlaXZlZF9zcGYgaWYgJG9w
dGlvbnMgPX4gL3AvOwoJCQkgICAgIH0KCQkJZWxzZSAKCQkJeyAKCQkJCSRoZWxvID0gInVu
dHJ1c3RlZC0iLiRoZWxvIGlmICRoZWxvOyAkaXBhZCA9ICJ1bnRydXN0ZWQtIi4kaXBhZCBp
ZiAkaXBhZDsKCQkJCSRpZG50ID0gInVudHJ1c3RlZC0iLiRpZG50IGlmICRpZG50OyAkcmRu
cyA9ICJ1bnRydXN0ZWQtIi4kcmRucyBpZiAkcmRuczsKCQkJCSRmcm9tID0gInVudHJ1c3Rl
ZC0iLiRmcm9tIGlmICRmcm9tOyAkbXRhbiA9ICJ1bnRydXN0ZWQtIi4kbXRhbiBpZiAkbXRh
bjsKCQkJCSRtdGFpID0gInVudHJ1c3RlZC0iLiRtdGFpIGlmICRtdGFpOyAkbXRhdiA9ICJ1
bnRydXN0ZWQtIi4kbXRhdiBpZiAkbXRhdjsKCQkJCSRmb3JlID0gInVudHJ1c3RlZC0iLiRm
b3JlIGlmICRmb3JlOyAkd2l0aCA9ICJ1bnRydXN0ZWQtIi4kd2l0aCBpZiAkd2l0aDsKCQkJ
CSRkYXRlID0gIiI7ICRhc24gPSAiIjsgJHJlc3VsdCA9ICIiOwoJCQkJJHJjdmQtPlskeF0t
Pnsnc2FuZSd9ID0gc2V0X3JjdmQoJGhlbG8sJGlwYWQsJGlkbnQsJHJkbnMsJGZyb20sJG10
YW4sJG10YWksJG10YXYsJGZvcmUsJHdpdGgsJGRhdGUsJGFzbiwkcmVzdWx0KTsgCgkJCQkk
dW50cnVzdGVkID0gMTsgCgkJCX0KCQl9Cgl9fQoJCglyZXR1cm4gJHJjdmQ7Cn0KCnN1YiBp
c19zYW1lX2NsYXNzX0IKewoJbXkgKCRpcDEsJGlwMikgPSBAXzsKCSRpcDEgPX4gcy9eKFxk
ezEsM31cLlxkezEsM31cLikuKj8kLyQxL2dpczsKCSRpcDIgPX4gcy9eKFxkezEsM31cLlxk
ezEsM31cLikuKj8kLyQxL2dpczsKCQoJcmV0dXJuICgkaXAxIGVxICRpcDIpPyAxOjA7Cn0K
CnN1YiBhc24KewoJbXkgJHRhcmdldCA9IHNoaWZ0OwoJbXkgJG91dHB1dCA9ICIiOwoKICAg
ICAgICBteSAkSVAgICAgICAgICAgPSBxcn4oPzpcZHsxLDN9XC4pezN9XGR7MSwzfX47CiAg
ICAgICAgbXkgJERPTUFJTiAgICAgID0gcXJ+KD86XHd8LXxcLikrP1wuXHd7Miw0fX47CgoJ
aWYgKCAkdGFyZ2V0ID1+IHMvKFxkezEsM30pXC4oXGR7MSwzfSlcLihcZHsxLDN9KVwuKFxk
ezEsM30pLyQ0LiQzLiQyLiQxLiRhc25fc2VydmVyLyApCgl7CgkJIyB1bmNvbW1lbnQgdGhp
cyBjb2RlIGlmIHlvdSBkbyBub3Qgd2FudCB0byB1c2UgTmV0OjpETlM6OlJlc29sdmVyIGFu
ZCB5b3UgaGF2ZSAnaG9zdCcgb24geW91ciBzeXN0ZW0KCQkjb3BlbiAoSE9TVCwgImhvc3Qg
LXQgdHh0ICR0YXJnZXQgMj4vZGV2L251bGwgfCIpIG9yIGVycm9yKCJ3YXJuIiwiSG9zdCBs
b29rdXAgZmFpbGVkOiAkISIpOwoJCSN3aGlsZSAoPEhPU1Q+KSB7ICRvdXRwdXQgPSAkMSBp
ZiAvXFEkdGFyZ2V0XEUoPzogZGVzY3JpcHRpdmUpPyB0ZXh0ICIoXGQqPykiLiovOyB9CgkJ
I2Nsb3NlIEhPU1Q7CgogICAgICAgICAgICAgICAgIyBmaW5kIEFTTiBpbmZvIHZpYSBOZXQ6
OkROUzo6UmVzb2x2ZXIKCSAgICAgICAgaWYgKG15ICRxdWVyeSA9ICRyZXMtPnNlbmQoJHRh
cmdldCwiVFhUIikpIHsgZm9yZWFjaCAoJHF1ZXJ5LT5hbnN3ZXIpIHsgJG91dHB1dCA9ICQx
IGlmICRfLT5zdHJpbmcgPX4gLyRET01BSU5cLlxzKz9cZCs/XHMrP0lOXHMrP1RYVFxzKz8i
KFxkKz8pIlxzKz8iJElQIlxzKz8iXGQrPyIvOyB9fQogICAgICAgICAgICAgICAgI2Vsc2Ug
eyBlcnJvcigid2FybiIsIkFTTiBsb29rdXAgZmFpbGVkOiAiIC4gJHJlcy0+ZXJyb3JzdHJp
bmcpOyB9Cgl9IAoKCXJldHVybiAkb3V0cHV0Owp9CgpzdWIgaG9zdAp7CglteSAkdGFyZ2V0
ID0gc2hpZnQ7CglteSAkb3V0cHV0ID0gIiI7CgkKCW15ICRJUAkJPSBxcn4oPzpcZHsxLDN9
XC4pezN9XGR7MSwzfX47CQoJbXkgJERPTUFJTgk9IHFyfig/Olx3fC18XC4pKz9cLlx3ezIs
NH1+OwoKCWlmICgkdGFyZ2V0ID1+IHMvKCRJUHwkRE9NQUlOKS8kMS8pCgl7CgkJIyB1bmNv
bW1lbnQgdGhpcyBjb2RlIGlmIHlvdSBkbyBub3Qgd2FudCB0byB1c2UgTmV0OjpETlM6OlJl
c29sdmVyIGFuZCB5b3UgaGF2ZSAnaG9zdCcgb24geW91ciBzeXN0ZW0KCQkjb3BlbiAoSE9T
VCwgImhvc3QgJHRhcmdldCAyPi9kZXYvbnVsbCB8Iikgb3IgZXJyb3IoIndhcm4iLCJIb3N0
IGxvb2t1cCBmYWlsZWQ6ICQhIik7CgkJI3doaWxlICg8SE9TVD4pIHsgJG91dHB1dCA9ICQx
IGlmIC8kRE9NQUlOICg/OmRvbWFpbiBuYW1lIHBvaW50ZXJ8aGFzIGFkZHJlc3MpICgkSVB8
JERPTUFJTilcLj8vOyB9CgkJI2Nsb3NlIEhPU1Q7CgoJCSMgZmluZCBETlMgaW5mbyB2aWEg
TmV0OjpETlM6OlJlc29sdmVyCgkgICAgICAgIGlmIChteSAkcXVlcnkgPSAkcmVzLT5zZW5k
KCR0YXJnZXQpKSB7IGZvcmVhY2ggKCRxdWVyeS0+YW5zd2VyKSB7ICRvdXRwdXQgPSAkMSBp
ZiAkXy0+c3RyaW5nID1+IC8kRE9NQUlOXC5ccys/XGQrP1xzKz9JTlxzKz8oPzpQVFJ8QSlc
cys/KCRJUHwkRE9NQUlOKVwuPy87IH19CiAgICAgICAgCSNlbHNlIHsgZXJyb3IoIndhcm4i
LCJETlMgbG9va3VwIGZhaWxlZDogIiAuICRyZXMtPmVycm9yc3RyaW5nKTsgfQoJfQoJCgly
ZXR1cm4gJG91dHB1dDsKfQoKc3ViIHNldF9yY3ZkCnsKCW15ICgkaGVsbywkaXBhZCwkaWRu
dCwkcmRucywkZnJvbSwkbXRhbiwkbXRhaSwkbXRhdiwkZm9yZSwkd2l0aCwkZGF0ZSwkYXNu
LCRzcGYpID0gQF87CgoJbXkgJG91dHB1dCA9ICJmcm9tIjsKCWlmICgkb3B0aW9ucyA9fiAv
ZS8pIHsKCSRvdXRwdXQgLj0gKCRoZWxvKT8gCQkiIGhlbG8tJGhlbG8iIAk6ICIgbm8taGVs
byI7fQkJIyBzZW5kZXIncyBzYWx1dGF0aW9uCgkkb3V0cHV0IC49ICgkcmRucyk/IAkJIiAk
cmRucyIgCTogIiBuby1yZG5zIjsJCSMgc2VuZGVyJ3MgbmFtZQoJJG91dHB1dCAuPSAoJGlw
YWQpPyAJCSIgJGlwYWQiIAk6ICIgbm8taXBhZCI7CQkjIHNlbmRlcidzIElQCiAgICAgICAg
aWYgKCRvcHRpb25zID1+IC9wLykgewoJJG91dHB1dCAuPSAoJHNwZik/CQkiIHNwZi0kc3Bm
Igk6ICIgbm8tc3BmIjt9CQkjIHNlbmRlcidzIHBvbGljeSByZXN1bHQKCSRvdXRwdXQgLj0g
KCRhc24pPyAgCQkiIGFzJGFzbiIgCTogIiBuby1hc24iOwkJIyBzZW5kZXIncyBBU04KCSRv
dXRwdXQgLj0gKCRtdGFufHwkbXRhaSk/IAkiICRDUkxGXHQgIGJ5Igk6ICIiOwoJJG91dHB1
dCAuPSAoJG10YW4pPyAJCSIgJG10YW4iIAk6ICIgbm8tbXRhLW5hbWUiOwkjIHJlY2Vpdmlu
ZyBNVEEncyBuYW1lCgkkb3V0cHV0IC49ICgkbXRhaSk/IAkJIiAkbXRhaSIgCTogIiBuby1t
dGEtaXAiOwkJIyByZWNlaXZpbmcgTVRBJ3MgSVAKCSRvdXRwdXQgLj0gKCRmb3JlKT8gCQki
ICRDUkxGXHQgIGZvciIgOiAiIjsKCSRvdXRwdXQgLj0gKCRmb3JlKT8gCQkiIDwkZm9yZT4i
IAk6ICIgbm8tdG8tYWRkciI7CSMgZW52ZWxvcGUgdG8gYWRkcmVzcwoJJG91dHB1dCAuPSAo
JGRhdGUpPyAJCSI7ICRkYXRlIiAJOiAiIG5vLWRhdGUiOwkJIyByZWNlaXZlZCBkYXRlL3Rp
bWUKCgkjcHJpbnQgIm91dHB1dHRpbmcgcmVjZWl2ZWQ6ICRvdXRwdXQiIC4gJENSTEY7Cgly
ZXR1cm4gJG91dHB1dDsKfQoKc3ViIG9wZW5kYl9yZWFkIAp7CiAgICB0aWUoJWRiLCAiREJf
RmlsZSIsICRkYmZpbGUsIE9fUkRPTkxZLCAwLCAkREJfSEFTSCkgb3IgZXJyb3IoIndhcm4i
LCJDYW4ndCBvcGVuICRkYmZpbGU6ICQhIik7Cn0KCnN1YiBjbG9zZWRiIAp7CiAgICB1bnRp
ZSAlZGI7CiAgICB1bmRlZiAlZGI7Cn0KCnN1YiByZXRpZSAKewogICAgJmNsb3NlZGI7CiAg
ICAmb3BlbmRiX3JlYWQ7Cn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIwojIyMjIyMjIyMjIyMjIyMjIE91dHB1dCBIZWFkZXIgIyMjIyMjIyMj
IyMjIyMjIyMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCgpzdWIgc2V0X2hlYWRlcgp7CglteSAkaGVhZGVyID0gc2hpZnQ7CglteSAkb3V0cHV0
ID0gIiI7CglteSAkbmFtZSA9ICIiOwoJCgkjIGV4Y2x1ZGUgdGhlICJtYXNrZWQgZmllbGRz
IiBmcm9tIGRpc3BsYXkKCWZvcmVhY2ggJG5hbWUgKHNwbGl0KC8sLywkbWFza2VkX2ZpZWxk
cykpIHsgJHNwZWNfZmllbGRzID1+IHMvKD88PSwpJG5hbWUsPy8vOyB9CgoJIyBvdXRwdXQg
dGhlIGZpZWxkcyBpbiB0aGUgb3JkZXIgc3BlY2lmaWVkIGJ5IFJGQyAyODIyIC0gbWludXMg
dGhlIG1hc2tlZCBmaWVsZHMKCWZvcmVhY2ggJG5hbWUgKHNwbGl0KC8sLywkc3BlY19maWVs
ZHMpKSB7ICRvdXRwdXQgLj0gc2V0X2ZpZWxkKCRoZWFkZXIsJG5hbWUpOyBkZWxldGUgJGhl
YWRlci0+eyRuYW1lfTsgfQoKCSMgc2V0IGFueSB1c2VyLXNwZWNpZmllZCBmaWVsZHMKCWZv
cmVhY2ggJG5hbWUgKHNwbGl0KC8sLywkdXNlcl9maWVsZHMpKSB7ICRvdXRwdXQgLj0gc2V0
X2ZpZWxkKCRoZWFkZXIsJG5hbWUpOyBkZWxldGUgJGhlYWRlci0+eyRuYW1lfTsgfQoKCSMg
c2V0IG5ldyBjdXN0b20geC1oZWFkZXIgZmllbGRzCglpZiAoJG9wdGlvbnMgPX4gL3gvKSB7
IGZvcmVhY2ggJG5hbWUgKHNwbGl0KC8sLywkbmV3X2ZpZWxkcykpIHsgJG91dHB1dCAuPSBz
ZXRfZmllbGQoJGhlYWRlciwkbmFtZSk7IGRlbGV0ZSAkaGVhZGVyLT57JG5hbWV9OyB9IH0K
CgkjIHRoZW4gc2V0IGFueSByZW1haW5pbmcgZmllbGRzIChpZiBhbGxvd2VkIHRvIHNldCBu
b24tc3RhbmRhcmQgZmllbGRzKQoJaWYgKCRvcHRpb25zICF+IC9zLykgeyBmb3JlYWNoICRu
YW1lIChrZXlzICV7JGhlYWRlcn0pIHsgJG91dHB1dCAuPSBzZXRfZmllbGQoJGhlYWRlciwk
bmFtZSk7IH0gfQoKCSRvdXRwdXQgLj0gJENSTEY7CgkKCXJldHVybiAkb3V0cHV0Owp9Cgpz
dWIgc2V0X2ZpZWxkCnsKCW15ICRoZWFkZXIgPSBzaGlmdDsKCW15ICRuYW1lID0gc2hpZnQ7
CglteSAkb3V0cHV0ID0gIiI7CgoJaWYgKChkZWZpbmVkICRoZWFkZXItPnskbmFtZX0pICYm
IChyZWYoJGhlYWRlci0+eyRuYW1lfSkgZXEgIkFSUkFZIikpCgl7CgkJZm9yIChteSAkeCA9
IDA7ICR4IDwgc2NhbGFyIEB7JGhlYWRlci0+eyRuYW1lfX07ICR4KyspCgkJewoJCQlpZiAo
KCRuYW1lIGVxICJyZWNlaXZlZCIpICYmICgkb3B0aW9ucyA9fiAvci8pKQoJCQl7CgkJCQlp
ZiAoZGVmaW5lZCAkaGVhZGVyLT57JG5hbWV9LT5bJHhdLT57J3NhbmUnfSAmJiAkaGVhZGVy
LT57JG5hbWV9LT5bJHhdLT57J3NhbmUnfSA9fiAvXHcvKSAKCQkJCXsJCgkJCQkJJG91dHB1
dCAuPSAkaGVhZGVyLT57JG5hbWV9LT5bJHhdLT57J25hbWUnfSAuICI6ICIgLiAkaGVhZGVy
LT57JG5hbWV9LT5bJHhdLT57J3NhbmUnfSAuICRDUkxGOyAKCQkJCX0KCQkJCSNlbHNlIHsJ
JG91dHB1dCAuPSAkaGVhZGVyLT57JG5hbWV9LT5bJHhdLT57J25hbWUnfSAuICI6IHNhbml0
eSBjaGVjayBmYWlsZWQiIC4gJENSTEY7IH0KCQkJfQoJCQllbHNlIHsKCQkJCSRvdXRwdXQg
Lj0gJGhlYWRlci0+eyRuYW1lfS0+WyR4XS0+eyduYW1lJ30gLiAiOiAiIC4gJGhlYWRlci0+
eyRuYW1lfS0+WyR4XS0+eyd2YWx1ZSd9IC4gJENSTEY7IAoJCQl9CgkJfQoJfQoJZWxzaWYg
KGRlZmluZWQgJGhlYWRlci0+eyRuYW1lfSkKCXsKCQkkb3V0cHV0IC49IHVjZmlyc3QoJG5h
bWUpIC4gIjogIiAuICRoZWFkZXItPnskbmFtZX0gLiAkQ1JMRjsgCQoJfQoJZWxzaWYgKCRy
ZXFfZmllbGRzID1+IC8oPzpefCwpJG5hbWUoPzosfCQpLykKCXsgIAoJCSRvdXRwdXQgLj0g
dWNmaXJzdCgkbmFtZSkgLiAiOiBbbm8tJG5hbWVdICIgLiAkQ1JMRjsgCgl9CgkKCXJldHVy
biAkb3V0cHV0Owp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKIyMjIyMjIyMjIyMjIyMjIyBFcnJvciBIYW5kbGluZyAjIyMjIyMjIyMjIyMj
IyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoK
c3ViIGVycm9yCnsKCW15ICgkYWN0aW9uLCRtc2cpID0gQF87CgoJZGllICRtc2cgaWYgJGFj
dGlvbiBlcSAiZGllIjsKCXdhcm4gJG1zZyB1bmxlc3MgJGFjdGlvbiBlcSAiZGllIjsKCSMg
YWRkIG90aGVyIGFjdGlvbnMgaWYgeW91IGxpa2UKfQoKc3ViIHNpZ190cmFwCnsKCW15ICRz
aWcgPSBzaGlmdDsKCW15ICgkYWN0aW9uLCRtb3JlKSA9ICgid2FybiIsIiIpOwoKCXNpZzog
Cgl7CiAgICAgICAgCSRhY3Rpb24gPSAiZGllIiwgIGxhc3Qgc2lnIGlmICRzaWcgPX4gL0FM
Uk0vOwoJICAgICAgICAkYWN0aW9uID0gIndhcm4iLCBsYXN0IHNpZyBpZiAkc2lnID1+IC9Q
SVBFLzsKCSAgICAgICAgJGFjdGlvbiA9ICJ3YXJuIiwgbGFzdCBzaWcgaWYgJHNpZyA9fiAv
Q0hMRC87CiAgICAgICAgCSRhY3Rpb24gPSAiZGllIiAsIGxhc3Qgc2lnIGlmICRzaWcgPX4g
L0lOVC87CgkgICAgICAgICRhY3Rpb24gPSAiZGllIiAsIGxhc3Qgc2lnIGlmICRzaWcgPX4g
L0hVUC87CiAgICAgICAgCSRhY3Rpb24gPSAid2FybiI7Cgl9CgkKCW15ICR3YWl0ZWRwaWQg
PSB3YWl0OwoJJG1vcmUgPSAiOyBSZWFwZWQgcGlkICR3YWl0ZWRwaWQsIGV4aXRlZCB3aXRo
IHN0YXR1cyAiIC4gKCQ/ID4+IDgpIGlmICR3YWl0ZWRwaWQ7CgoJJFNJR3skc2lnfSA9IFwm
c2lnX3RyYXA7CgoJZXJyb3IgKCRhY3Rpb24sIlRyYXBwZWQgc2lnbmFsIFNJRyRzaWckbW9y
ZSIpOwp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo=
--------------8C6E894DEEE6226004BF8962
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

--------------8C6E894DEEE6226004BF8962--