Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vjykE-007AXK-2O for pgsql-hackers@arkaria.postgresql.org; Sun, 25 Jan 2026 11:57:31 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vjykC-004k1m-0g for pgsql-hackers@arkaria.postgresql.org; Sun, 25 Jan 2026 11:57:28 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vjykB-004k1d-23 for pgsql-hackers@lists.postgresql.org; Sun, 25 Jan 2026 11:57:28 +0000 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1vjyk7-00000000N1o-32LC for pgsql-hackers@postgresql.org; Sun, 25 Jan 2026 11:57:27 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1769342241; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=LLVyGY9d/qI1dpko7s1CXC8A37HpEgd66c7pLr2Aq2U=; b=MsDX5cZB1/YvaZk+kqPodJ1/xl7+Gr7ZzLInfpIwhWVaVmoJ4VsLkX5JrfKemoR9Ts2Ko4 FMrK3hpYgVzTP9exAY1a/AnRea+NlNRvCUjcFb2XAgRfcoyPGy+/vQwmMiCLrr+kVPU+qf 8xgIB/whqjRAlv2jYSfpdwUcE38sbFc= Received: from mail-ed1-f69.google.com (mail-ed1-f69.google.com [209.85.208.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-402-iNTzQcLrM6Gm7qBLLr2LoQ-1; Sun, 25 Jan 2026 06:57:18 -0500 X-MC-Unique: iNTzQcLrM6Gm7qBLLr2LoQ-1 X-Mimecast-MFC-AGG-ID: iNTzQcLrM6Gm7qBLLr2LoQ_1769342237 Received: by mail-ed1-f69.google.com with SMTP id 4fb4d7f45d1cf-6581b412518so6827732a12.3 for ; Sun, 25 Jan 2026 03:57:18 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769342237; x=1769947037; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=hOSs+tmlgR8xqTU4X96oNfSDQ+TB26q3E8AHM3rrAE4=; b=GSIPE85MZMkXt1EppqsAx95dsSyeXa1rzQ88QPoSbq4l/ghzJ9hHsVEazbBkbiCSWv YKQDlBy1JBfwHrpE43KviCDh8o6PxayuD9FbE4BdY2KHYRvV0gpWwkRP09ROfxMKdFdt 9fAnAjhtYVypp3QYABp4f2BFpsVCRhlLxxcN3HiqZGZtlbHpdM3Fzyi3bcIDVmcIPJe/ AK9cexKt6Mto52s6FH6bqfc/MMg4G+GsoSfJ58LY8Sfdlkk/In64CYfKcJVDmUrNr6VU bJyeB0tIEJAvf91LX/ATNb5aFRVZ4gRY9zQFKoxbh+uVMHGNJx5h+9kgMN8Er5q2DUyZ Be/w== X-Gm-Message-State: AOJu0Yy2Kq/AqiOD4R14+4dDJ6Yj3Dk260LHeJDgt0ShvM+8HPBzxWXV J3D1Y6jRjaWFVgEk9Q5pL2PH8U4hVZZUZouVUZFJhDm9xKvUCQ8osNtZCCI51mJjaGK99PhpcFN jXCPUEHJhvZovn6ExTdVGR85NQY1vZsJkhc2z8pP+FcHs53akdRMO+6hDl9fO9yK4yXf4xvOHhk WsMDndM7knKgCbG8OQxm8JKBYGXHhAiX0Eq6cYDs7DxtARaJM/ X-Gm-Gg: AZuq6aILrkXoTqX6T8PoE3zfxv4XB0oDwwKk0Uu2LXvuCAX1kOM0VauzPjnRx+CdKq0 hcM6RJuXS52zbhuw+IVp2n2t+8aNB0Bg0faiEmyeujm/xtVZIkxmAmPyyqIoBm+70axgyfGNI2j gTGGcbjsdAE7aqLmL/03aX6z+KMyIHKAzMU1Rc1APwy2lqmHT+pTRB41rJfDLa1RaLWLRixtpAc hIdS5xSU1ml35i8Ra3PcxR1vXc= X-Received: by 2002:a05:6402:2714:b0:658:1145:8931 with SMTP id 4fb4d7f45d1cf-65870698ddfmr1056759a12.6.1769342236997; Sun, 25 Jan 2026 03:57:16 -0800 (PST) X-Received: by 2002:a05:6402:2714:b0:658:1145:8931 with SMTP id 4fb4d7f45d1cf-65870698ddfmr1056747a12.6.1769342236510; Sun, 25 Jan 2026 03:57:16 -0800 (PST) MIME-Version: 1.0 References: <7bcc0420-d457-4af5-a459-a4e5d929a665@vondra.me> <7gbzkoxrpqvj2sgxof4pqirz7pf6wb5vizak3mxrz2zpvrf3pa@lvnwdsy3em56> In-Reply-To: From: Filip Janus Date: Sun, 25 Jan 2026 12:57:05 +0100 X-Gm-Features: AZwV_Qj0pzhJ12h14gFYb-D8OVjXtTrd4u5MKa9FvT0__lZGK0BioH0Eb68XxbA Message-ID: Subject: Re: Proposal: Adding compression of temporary files To: lakshmi Cc: pgsql-hackers , zsolt.parragi@percona.com X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: bidlHX7tLfSj8XfcghNjX3S09zIiv8M8ovXwm1PtP0k_1769342237 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="0000000000007f0fd20649351740" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000007f0fd20649351740 Content-Type: multipart/alternative; boundary="0000000000007f0fd0064935173e" --0000000000007f0fd0064935173e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Fixed spacing in the patch. -Filip- p=C3=A1 23. 1. 2026 v 17:40 odes=C3=ADlatel Filip Janus = napsal: > Hi all, > Thanks for the feedback and the provided patch. > I've addressed your findings and proposals. Lakshmi's documentation patch > was incorporated. > > -Filip- > > > st 21. 1. 2026 v 7:30 odes=C3=ADlatel lakshmi na= psal: > >> HI all, >> While testing the temp file compression patch,noticed that the new >> temp_file_compression GUC isn't documented yet.I put together a small do= cs >> patch to add a short description and clarify that the effect of compress= ion >> depends on the workload(for example ,hash join spills may not show visib= le >> size reduction due to fixed_size chunks). >> >> patch is attached.Happy to adjust the wording if needed. >> thanks, >> lakshmi >> >> On Tue, Jan 20, 2026 at 4:21=E2=80=AFPM lakshmi = wrote: >> >>> Hi Filip, >>> >>> I tested both patches on current master using git am -3 .They apply >>> cleanly,build fine,and the temp_file _compression GUC works as expected= . >>> Query results are unchanged. >>> >>> For hash join spill test,temp files were created as expected,but the >>> logged size were same for no,lz4,and pglz,which seems consistent with >>> fixed-size fileset chunking.It might be helpful to briefly note this in= the >>> documentation to avoid confusion. >>> >>> Thanks for working on this . >>> best regards, >>> lakshmi >>> >>> On Tue, Jan 20, 2026 at 4:10=E2=80=AFAM Zsolt Parragi >>> wrote: >>> >>>> Hello! >>>> >>>> I tried to review the code. It compiled, the test suite passed. >>>> >>>> I noticed two typos: >>>> >>>> buffile.c:77 - "Disaled" >>>> buffile.c:133 - "mathods" >>>> >>>> And a few other small findings: >>>> >>>> buffile.h:35 and buffile.c:63 - same constants defined first as an >>>> Enum and then as #defines - code builds properly without the defines. >>>> >>>> buffile.c:121 - compress_tempfile is defined, set to false at :167, >>>> but never used otherwise >>>> >>>> guc_tables.c:470 - the comment says that pglz isn't supported yet, but >>>> we have a value for it, and I see support for it in the code >>>> >>>> buffile.c:659: (and at other places) if USE_LZ4 is undefined, the >>>> codepath doesn't do anything. I think these ifdefs should follow how >>>> other compression code works, such as wal compression where there's an >>>> #else path with elog(ERROR, ...) >>>> Similarly, maybe there should be an explicit TEMP_NONE_COMPRESSION >>>> branch that does nothing, and the default branch should be an error? >>>> >>>> buffile.c:265: If seek isn't supported/limited, shouldn't there be at >>>> least an assertion about it in BufFileSeek? And tell isn't mentioned, >>>> but it seems to me that tell also doesn't work properly. >>>> >>> --0000000000007f0fd0064935173e Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Fixed spacing in the patch.

=C2=A0 =C2=A0 -Filip-=


p=C3=A1 23. 1. 2026= v=C2=A017:40 odes=C3=ADlatel Filip Janus <fjanus@redhat.com> napsal:
Hi all,=C2=A0
Tha= nks for the feedback and the provided patch.
I've addressed= =C2=A0your findings and proposals.=C2=A0Lakshmi's documentation patch w= as incorporated.=C2=A0 =C2=A0

= =C2=A0 =C2=A0 -Filip-


st 21. 1. 2026 v=C2= =A07:30 odes=C3=ADlatel lakshmi <lakshmigcdac@gmail.com> napsal:
HI all,
Whi= le testing the temp file compression patch,noticed that the new temp_file_c= ompression GUC isn't documented yet.I put together a small docs patch t= o add a short description and clarify that the effect=C2=A0of compression d= epends on the workload(for example ,hash join spills may not show visible s= ize reduction due to fixed_size chunks).

patch is attached.Happy to = adjust the wording if needed.
thanks,
lakshmi

On Tue, Jan 20, 2026 at = 4:21=E2=80=AFPM lakshmi <lakshmigcdac@gmail.com> wrote:
Hi Filip,

I test= ed both patches on current master using git am -3 .They apply cleanly,build= fine,and the temp_file _compression GUC works as expected.
Query result= s are unchanged.

For hash join spill test,temp files were created as= expected,but the logged size were same for no,lz4,and pglz,which seems con= sistent with fixed-size fileset chunking.It might be helpful to briefly not= e this in the documentation to avoid confusion.

Thanks for working o= n this .
best regards,
lakshmi

On Tue, Jan 20, 2026 at 4:10=E2=80=AFAM= Zsolt Parragi <zsolt.parragi@percona.com> wrote:
Hello!

I tried to review the code. It compiled, the test suite passed.

I noticed two typos:

buffile.c:77 - "Disaled"
buffile.c:133 - "mathods"

And a few other small findings:

buffile.h:35 and buffile.c:63 - same constants defined first as an
Enum and then as #defines - code builds properly without the defines.

buffile.c:121 - compress_tempfile is defined, set to false at :167,
but never used otherwise

guc_tables.c:470 - the comment says that pglz isn't supported yet, but<= br> we have a value for it, and I see support for it in the code

buffile.c:659: (and at other places) if USE_LZ4 is undefined, the
codepath doesn't do anything. I think these ifdefs should follow how other compression code works, such as wal compression where there's an<= br> #else path with elog(ERROR, ...)
Similarly, maybe there should be an explicit TEMP_NONE_COMPRESSION
branch that does nothing, and the default branch should be an error?

buffile.c:265: If seek isn't supported/limited, shouldn't there be = at
least an assertion about it in BufFileSeek? And tell isn't mentioned, but it seems to me that tell also doesn't work properly.
--0000000000007f0fd0064935173e-- --0000000000007f0fd20649351740 Content-Type: application/octet-stream; name="0001-Add-transparent-compression-for-temporary-files.patch" Content-Disposition: attachment; filename="0001-Add-transparent-compression-for-temporary-files.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mktoobpn0 RnJvbSA5OGJjMTk1MTdkMTg4ZWNhODQxMWM4NTk4NGE5ZTFmZmZiMzU5MWE5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBGaWxpcCBKYW51cyA8ZmphbnVzQHJlZGhhdC5jb20+CkRhdGU6 IFRodSwgMzEgSnVsIDIwMjUgMTQ6MDI6MTYgKzAyMDAKU3ViamVjdDogW1BBVENIIDEvMl0gQWRk IHRyYW5zcGFyZW50IGNvbXByZXNzaW9uIGZvciB0ZW1wb3JhcnkgZmlsZXMKClRoaXMgY29tbWl0 IGltcGxlbWVudHMgdHJhbnNwYXJlbnQgY29tcHJlc3Npb24gZm9yIHRlbXBvcmFyeSBmaWxlcyBp biBQb3N0Z3JlU1FMLApzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIGhhc2ggam9pbiBvcGVyYXRp b25zIHRoYXQgc3BpbGwgdG8gZGlzay4KCkZlYXR1cmVzOgotIFN1cHBvcnQgZm9yIExaNCBhbmQg UEdMWiBjb21wcmVzc2lvbiBhbGdvcml0aG1zCi0gR1VDIHBhcmFtZXRlciAndGVtcF9maWxlX2Nv bXByZXNzaW9uJyB0byBjb250cm9sIGNvbXByZXNzaW9uCi0gVHJhbnNwYXJlbnQgY29tcHJlc3Np b24vZGVjb21wcmVzc2lvbiBpbiBCdWZGaWxlIGxheWVyCi0gU2hhcmVkIGNvbXByZXNzaW9uIGJ1 ZmZlciB0byBtaW5pbWl6ZSBtZW1vcnkgYWxsb2NhdGlvbgotIEludGVncmF0aW9uOiBIYXNoIGpv aW4gdXNlcyBCdWZGaWxlQ3JlYXRlQ29tcHJlc3NUZW1wKCksIHR1cGxlc3RvcmUKICAgICB1c2Vz IGNvbXByZXNzaW9uIHdoZW4gRVhFQ19GTEFHX0JBQ0tXQVJEIGlzIG5vdCByZXF1aXJlZAoKVGhl IGNvbXByZXNzaW9uIGlzIGFwcGxpZWQgYXV0b21hdGljYWxseSB3aGVuIHRlbXBfZmlsZV9jb21w cmVzc2lvbiBpcyBlbmFibGVkLAp3aXRoIG5vIGNoYW5nZXMgcmVxdWlyZWQgdG8gY2FsbGluZyBj b2RlLiBPbmx5IGhhc2ggam9pbnMgdXNlIGNvbXByZXNzaW9uCmN1cnJlbnRseSwgd2l0aCBzZWVr aW5nIGxpbWl0ZWQgdG8gcmV3aW5kaW5nIHRvIHN0YXJ0LgoKQ29uZmlndXJhdGlvbiBvcHRpb25z OgotIHRlbXBfZmlsZV9jb21wcmVzc2lvbiA9ICdubycgKGRlZmF1bHQpCi0gdGVtcF9maWxlX2Nv bXByZXNzaW9uID0gJ3BnbHonCi0gdGVtcF9maWxlX2NvbXByZXNzaW9uID0gJ2x6NCcgKHJlcXVp cmVzIC0td2l0aC1sejQpCgpUaGlzIHBhdGNoIGFsc28gYWRkcyBkb2N1bWVudGF0aW9uIGZvciBn dWMtdGVtcC1maWxlLWNvbXByZXNzaW9uIChjb250cmlidXRlZCBieSBMYWtzaG1pIDxsYWtzaG1p Z2NkYWNAZ21haWwuY29tPikuCi0tLQogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAg ICAgICAgICAgICAgIHwgIDIwICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5j ICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL2J1ZmZpbGUuYyAg ICAgICAgICAgIHwgMzc0ICsrKysrKysrKysrKysrKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9ndWNfcGFyYW1ldGVycy5kYXQgICAgIHwgICA4ICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjX3RhYmxlcy5jICAgICAgICAgICB8ICAxMCArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL3Bv c3RncmVzcWwuY29uZi5zYW1wbGUgfCAgIDEgKwogc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBs ZXN0b3JlLmMgICAgICAgICAgIHwgICA4ICstCiBzcmMvaW5jbHVkZS9zdG9yYWdlL2J1ZmZpbGUu aCAgICAgICAgICAgICAgICAgfCAgMTAgKwogOCBmaWxlcyBjaGFuZ2VkLCA0MTIgaW5zZXJ0aW9u cygrKSwgMjEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5z Z21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IDU1NjBiOTVlZTYwLi4xNzllMDlh ODYwNCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9jb25maWcuc2dtbApAQCAtMTk1NSw2ICsxOTU1LDI2IEBAIGluY2x1ZGVfZGlyICdjb25m LmQnCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgIDx2YXJs aXN0ZW50cnkgaWQ9Imd1Yy10ZW1wLWZpbGUtY29tcHJlc3Npb24iPgorICAgICA8dGVybT48dmFy bmFtZT50ZW1wX2ZpbGVfY29tcHJlc3Npb248L3Zhcm5hbWU+ICg8dHlwZT5lbnVtPC90eXBlPik8 L3Rlcm0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBFbmFibGVzIHRyYW5z cGFyZW50IGNvbXByZXNzaW9uIG9mIHRlbXBvcmFyeSBmaWxlcyB1c2VkIGJ5IHF1ZXJ5IGV4ZWN1 dGlvbi4KKyAgICAgIFN1cHBvcnRlZCB2YWx1ZXMgYXJlIDxsaXRlcmFsPm5vPC9saXRlcmFsPiwg PGxpdGVyYWw+bHo0PC9saXRlcmFsPiwgYW5kCisgICAgIDxsaXRlcmFsPnBnbHo8L2xpdGVyYWw+ LgorICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgIFRoZSBlZmZlY3RpdmVuZXNzIG9m IHRlbXBvcmFyeSBmaWxlIGNvbXByZXNzaW9uIGRlcGVuZHMgb24gdGhlIHdvcmtsb2FkLgorICAg ICBGb3IgZXhhbXBsZSwgdGVtcG9yYXJ5IGZpbGVzIGNyZWF0ZWQgYnkgaGFzaCBqb2luIHNwaWxs cyB1c2UgZml4ZWQtc2l6ZQorICAgICBjaHVua3MsIHNvIG9uLWRpc2sgZmlsZSBzaXplcyBtYXkg bm90IHZpc2libHkgc2hyaW5rIGV2ZW4gd2hlbiBjb21wcmVzc2lvbgorICAgICBpcyBlbmFibGVk LiBTdGF0aXN0aWNzIHN1Y2ggYXMgPGxpdGVyYWw+dGVtcF9ieXRlczwvbGl0ZXJhbD4gcmVwb3J0 IGxvZ2ljYWwKKyAgICAgYnl0ZXMgd3JpdHRlbiBiZWZvcmUgY29tcHJlc3Npb24uCisgICAgIDwv cGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKKwogICAgICA8 dmFybGlzdGVudHJ5IGlkPSJndWMtaGFzaC1tZW0tbXVsdGlwbGllciIgeHJlZmxhYmVsPSJoYXNo X21lbV9tdWx0aXBsaWVyIj4KICAgICAgIDx0ZXJtPjx2YXJuYW1lPmhhc2hfbWVtX211bHRpcGxp ZXI8L3Zhcm5hbWU+ICg8dHlwZT5mbG9hdGluZyBwb2ludDwvdHlwZT4pCiAgICAgICA8aW5kZXh0 ZXJtPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaGpvaW4uYwppbmRleCAxMTQ2MjBhODEzNy4uYzJm MWIyNjU4ZTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jCkBAIC0xNDM0LDcgKzE0 MzQsNyBAQCBFeGVjSGFzaEpvaW5TYXZlVHVwbGUoTWluaW1hbFR1cGxlIHR1cGxlLCB1aW50MzIg aGFzaHZhbHVlLAogCXsKIAkJTWVtb3J5Q29udGV4dCBvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dp dGNoVG8oaGFzaHRhYmxlLT5zcGlsbEN4dCk7CiAKLQkJZmlsZSA9IEJ1ZkZpbGVDcmVhdGVUZW1w KGZhbHNlKTsKKwkJZmlsZSA9IEJ1ZkZpbGVDcmVhdGVDb21wcmVzc1RlbXAoZmFsc2UpOwogCQkq ZmlsZXB0ciA9IGZpbGU7CiAKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvYnVmZmlsZS5jIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9maWxlL2J1ZmZpbGUuYwppbmRleCBkZGYzYTQxMGQ2Zi4uZTZkMmFmMGY4MTUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9idWZmaWxlLmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9maWxlL2J1ZmZpbGUuYwpAQCAtNTMsNiArNTMsMTIgQEAKICNpbmNsdWRl ICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJ1 dGlscy9yZXNvd25lci5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAi Y29tbW9uL3BnX2x6Y29tcHJlc3MuaCIKKworI2lmZGVmIFVTRV9MWjQKKyNpbmNsdWRlIDxsejQu aD4KKyNlbmRpZgogCiAvKgogICogV2UgYnJlYWsgQnVmRmlsZXMgaW50byBnaWdhYnl0ZS1zaXpl ZCBzZWdtZW50cywgcmVnYXJkbGVzcyBvZiBSRUxTRUdfU0laRS4KQEAgLTYyLDYgKzY4LDExIEBA CiAjZGVmaW5lIE1BWF9QSFlTSUNBTF9GSUxFU0laRQkweDQwMDAwMDAwCiAjZGVmaW5lIEJVRkZJ TEVfU0VHX1NJWkUJCShNQVhfUEhZU0lDQUxfRklMRVNJWkUgLyBCTENLU1opCiAKKy8qCisgKiBP cHRpb25hbCB0cmFuc3BhcmVudCBjb21wcmVzc2lvbiBvZiB0ZW1wb3JhcnkgZmlsZXMuIERpc2Fi bGVkIGJ5IGRlZmF1bHQuCisgKi8KK2ludAkJCXRlbXBfZmlsZV9jb21wcmVzc2lvbiA9IFRFTVBf Tk9ORV9DT01QUkVTU0lPTjsKKwogLyoKICAqIFRoaXMgZGF0YSBzdHJ1Y3R1cmUgcmVwcmVzZW50 cyBhIGJ1ZmZlcmVkIGZpbGUgdGhhdCBjb25zaXN0cyBvZiBvbmUgb3IKICAqIG1vcmUgcGh5c2lj YWwgZmlsZXMgKGVhY2ggYWNjZXNzZWQgdGhyb3VnaCBhIHZpcnR1YWwgZmlsZSBkZXNjcmlwdG9y CkBAIC0xMDEsOCArMTEyLDI4IEBAIHN0cnVjdCBCdWZGaWxlCiAJICogd2FzdGluZyBwZXItZmls ZSBhbGlnbm1lbnQgcGFkZGluZyB3aGVuIHNvbWUgdXNlcnMgY3JlYXRlIG1hbnkgZmlsZXMuCiAJ ICovCiAJUEdBbGlnbmVkQmxvY2sgYnVmZmVyOworCisJaW50CQkJY29tcHJlc3M7CQkvKiBlbmFi bGVkIGNvbXByZXNzaW9uIGZvciB0aGUgZmlsZSAqLworCWNoYXIJICAgKmNCdWZmZXI7CQkvKiBj b21wcmVzc2lvbiBidWZmZXIgKi8KIH07CiAKKy8qCisgKiBIZWFkZXIgd3JpdHRlbiByaWdodCBi ZWZvcmUgZWFjaCBjaHVuayBvZiBkYXRhIHdpdGggY29tcHJlc3Npb24gZW5hYmxlZC4KKyAqIFRo ZSAnbGVuJyBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBkYXRhIGJ1ZmZlciB3cml0dGVuIHJpZ2h0IGFm dGVyIHRoZSBoZWFkZXIsCisgKiBhbmQgJ3Jhd19sZW4nIGlzIHRoZSBsZW5ndGggb2YgdW5jb21w cmVzc2VkIGRhdGEuIElmIHRoZSBkYXRhIGVuZHMgdXAgbm90CisgKiBiZWluZyBjb21wcmVzc2Vk IChlLmcuIHdoZW4gcGdseiBkb2VzIG5vdCByZWFjaCB0aGUgY29tcHJlc3Npb24gcmF0aW8pLAor ICogdGhlIHJhd19sZW4gaXMgc2V0IHRvIC0xIGFuZCB0aGUgbGVuIGlzIHRoZSByYXcgKHVuY29t cHJlc3NlZCkgbGVuZ3RoLgorICoKKyAqIFRvIG1ha2UgdGhpbmdzIHNpbXBsZXIsIHdlIHdyaXRl IHRoZXNlIGhlYWRlcnMgZXZlbiBmb3IgbWV0aG9kcyB0aGF0IGRvCisgKiBub3QgZmFpbCAob3Ig cmF0aGVyIHdoZW4gdGhleSBmYWlsLCBpdCdzIGEgcHJvcGVyIGVycm9yKS4gVGhlIHNwYWNlIGZv cgorICogYW4gZXh0cmEgaW50ZWdlciBzZWVtcyBuZWdsaWdpYmxlLgorICovCit0eXBlZGVmIHN0 cnVjdCBDb21wcmVzc0hlYWRlcgoreworCWludAkJCWxlbjsJCQkvKiBkYXRhIGxlbmd0aCAoY29t cHJlc3NlZCwgZXhjbHVkaW5nIGhlYWRlcikgKi8KKwlpbnQJCQlyYXdfbGVuOwkJLyogcmF3IGxl bmd0aCAoLTE6IG5vdCBjb21wcmVzc2VkKSAqLworfQkJCUNvbXByZXNzSGVhZGVyOworCiBzdGF0 aWMgQnVmRmlsZSAqbWFrZUJ1ZkZpbGVDb21tb24oaW50IG5maWxlcyk7CiBzdGF0aWMgQnVmRmls ZSAqbWFrZUJ1ZkZpbGUoRmlsZSBmaXJzdGZpbGUpOwogc3RhdGljIHZvaWQgZXh0ZW5kQnVmRmls ZShCdWZGaWxlICpmaWxlKTsKQEAgLTEyNyw2ICsxNTgsOCBAQCBtYWtlQnVmRmlsZUNvbW1vbihp bnQgbmZpbGVzKQogCWZpbGUtPmN1ck9mZnNldCA9IDA7CiAJZmlsZS0+cG9zID0gMDsKIAlmaWxl LT5uYnl0ZXMgPSAwOworCWZpbGUtPmNvbXByZXNzID0gVEVNUF9OT05FX0NPTVBSRVNTSU9OOwor CWZpbGUtPmNCdWZmZXIgPSBOVUxMOwogCiAJcmV0dXJuIGZpbGU7CiB9CkBAIC0yMTUsNiArMjQ4 LDYzIEBAIEJ1ZkZpbGVDcmVhdGVUZW1wKGJvb2wgaW50ZXJYYWN0KQogCXJldHVybiBmaWxlOwog fQogCisvKgorICogQnVmRmlsZUNyZWF0ZUNvbXByZXNzVGVtcAorICoJCUNyZWF0ZSBhIHRlbXBv cmFyeSBmaWxlIHdpdGggdHJhbnNwYXJlbnQgY29tcHJlc3Npb24uCisgKgorICogVGhlIHRlbXBv cmFyeSBmaWxlcyB3aWxsIHVzZSBjb21wcmVzc2lvbiwgZGVwZW5kaW5nIG9uIHRoZSBjdXJyZW50 IHZhbHVlIG9mCisgKiB0ZW1wX2ZpbGVfY29tcHJlc3Npb24gR1VDLgorICoKKyAqIE5vdGU6IENv bXByZXNzZWQgZmlsZXMgZG8gbm90IHN1cHBvcnQgcmFuZG9tIGFjY2Vzcy4gQSBzZWVrIG9wZXJh dGlvbiBvdGhlcgorICogdGhhbiBzZWVrIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJ1ZmZpbGUg d2lsbCBjb3JydXB0IGRhdGEuCisgKgorICogTm90ZTogVGhlIGNvbXByZXNzaW9uIGFsZ29yaXRo bSBpcyBkZXRlcm1pbmVkIGJ5IHRlbXBfZmlsZV9jb21wcmVzc2lvbiBHVUMuCisgKiBJZiBzZXQg dG8gIm5vbmUiIChURU1QX05PTkVfQ09NUFJFU1NJT04pLCB0aGUgZmlsZSBpcyBub3QgY29tcHJl c3NlZC4KKyAqCisgKi8KK0J1ZkZpbGUgKgorQnVmRmlsZUNyZWF0ZUNvbXByZXNzVGVtcChib29s IGludGVyWGFjdCkKK3sKKwlCdWZGaWxlICAgICpmaWxlID0gQnVmRmlsZUNyZWF0ZVRlbXAoaW50 ZXJYYWN0KTsKKworCWlmICh0ZW1wX2ZpbGVfY29tcHJlc3Npb24gIT0gVEVNUF9OT05FX0NPTVBS RVNTSU9OKQorCXsKKwkJaW50CQkJc2l6ZSA9IDA7CisKKwkJc3dpdGNoICh0ZW1wX2ZpbGVfY29t cHJlc3Npb24pCisJCXsKKwkJCWNhc2UgVEVNUF9MWjRfQ09NUFJFU1NJT046CisjaWZkZWYgVVNF X0xaNAorCQkJCXNpemUgPSBMWjRfY29tcHJlc3NCb3VuZChCTENLU1opICsgc2l6ZW9mKENvbXBy ZXNzSGVhZGVyKTsKKyNlbHNlCisJCQkJZWxvZyhFUlJPUiwgIkxaNCBpcyBub3Qgc3VwcG9ydGVk IGJ5IHRoaXMgYnVpbGQiKTsKKyNlbmRpZgorCQkJCWJyZWFrOworCQkJY2FzZSBURU1QX1BHTFpf Q09NUFJFU1NJT046CisJCQkJc2l6ZSA9IHBnbHpfbWF4aW11bV9jb21wcmVzc2VkX3NpemUoQkxD S1NaLCBCTENLU1opICsgc2l6ZW9mKENvbXByZXNzSGVhZGVyKTsKKwkJCQlicmVhazsKKwkJCWNh c2UgVEVNUF9OT05FX0NPTVBSRVNTSU9OOgorCQkJCS8qIG5vIGNvbXByZXNzaW9uLCBub3RoaW5n IHRvIGRvICovCisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJ1bmtu b3duIGNvbXByZXNzaW9uIG1ldGhvZDogJWQiLCB0ZW1wX2ZpbGVfY29tcHJlc3Npb24pOworCQkJ CWJyZWFrOworCQl9CisKKwkJaWYgKHNpemUgPiAwKQorCQl7CisJCQlmaWxlLT5jb21wcmVzcyA9 IHRlbXBfZmlsZV9jb21wcmVzc2lvbjsKKwkJCWZpbGUtPmNCdWZmZXIgPSBwYWxsb2Moc2l6ZSk7 CisJCX0KKwl9CisKKwkvKiBjb21wcmVzc2lvbiB3aXRoIGJ1ZmZlciwgb3Igbm8gY29tcHJlc3Np b24gYW5kIG5vIGJ1ZmZlciAqLworCUFzc2VydCgoIWZpbGUtPmNvbXByZXNzICYmIGZpbGUtPmNC dWZmZXIgPT0gTlVMTCkgfHwKKwkJICAgKGZpbGUtPmNvbXByZXNzICYmIGZpbGUtPmNCdWZmZXIg IT0gTlVMTCkpOworCisJcmV0dXJuIGZpbGU7Cit9CisKIC8qCiAgKiBCdWlsZCB0aGUgbmFtZSBm b3IgYSBnaXZlbiBzZWdtZW50IG9mIGEgZ2l2ZW4gQnVmRmlsZS4KICAqLwpAQCAtNDE1LDkgKzUw NSwxNSBAQCBCdWZGaWxlQ2xvc2UoQnVmRmlsZSAqZmlsZSkKIAogCS8qIGZsdXNoIGFueSB1bndy aXR0ZW4gZGF0YSAqLwogCUJ1ZkZpbGVGbHVzaChmaWxlKTsKKwogCS8qIGNsb3NlIGFuZCBkZWxl dGUgdGhlIHVuZGVybHlpbmcgZmlsZShzKSAqLwogCWZvciAoaSA9IDA7IGkgPCBmaWxlLT5udW1G aWxlczsgaSsrKQogCQlGaWxlQ2xvc2UoZmlsZS0+ZmlsZXNbaV0pOworCisJLyogcmVsZWFzZSBj b21wcmVzc2lvbiBidWZmZXIgaWYgYWxsb2NhdGVkICovCisJaWYgKGZpbGUtPmNCdWZmZXIpCisJ CXBmcmVlKGZpbGUtPmNCdWZmZXIpOworCiAJLyogcmVsZWFzZSB0aGUgYnVmZmVyIHNwYWNlICov CiAJcGZyZWUoZmlsZS0+ZmlsZXMpOwogCXBmcmVlKGZpbGUpOwpAQCAtNDU0LDIxICs1NTAsMTQ1 IEBAIEJ1ZkZpbGVMb2FkQnVmZmVyKEJ1ZkZpbGUgKmZpbGUpCiAJZWxzZQogCQlJTlNUUl9USU1F X1NFVF9aRVJPKGlvX3N0YXJ0KTsKIAotCS8qCi0JICogUmVhZCB3aGF0ZXZlciB3ZSBjYW4gZ2V0 LCB1cCB0byBhIGZ1bGwgYnVmZmVybG9hZC4KLQkgKi8KLQlmaWxlLT5uYnl0ZXMgPSBGaWxlUmVh ZCh0aGlzZmlsZSwKLQkJCQkJCQlmaWxlLT5idWZmZXIuZGF0YSwKLQkJCQkJCQlzaXplb2YoZmls ZS0+YnVmZmVyLmRhdGEpLAotCQkJCQkJCWZpbGUtPmN1ck9mZnNldCwKLQkJCQkJCQlXQUlUX0VW RU5UX0JVRkZJTEVfUkVBRCk7Ci0JaWYgKGZpbGUtPm5ieXRlcyA8IDApCisJaWYgKGZpbGUtPmNv bXByZXNzID09IFRFTVBfTk9ORV9DT01QUkVTU0lPTikKIAl7Ci0JCWZpbGUtPm5ieXRlcyA9IDA7 Ci0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCksCi0JCQkJ IGVycm1zZygiY291bGQgbm90IHJlYWQgZmlsZSBcIiVzXCI6ICVtIiwKLQkJCQkJCUZpbGVQYXRo TmFtZSh0aGlzZmlsZSkpKSk7CisJCS8qCisJCSAqIFJlYWQgd2hhdGV2ZXIgd2UgY2FuIGdldCwg dXAgdG8gYSBmdWxsIGJ1ZmZlcmxvYWQuCisJCSAqLworCQlmaWxlLT5uYnl0ZXMgPSBGaWxlUmVh ZCh0aGlzZmlsZSwKKwkJCQkJCQkJZmlsZS0+YnVmZmVyLmRhdGEsCisJCQkJCQkJCXNpemVvZihm aWxlLT5idWZmZXIpLAorCQkJCQkJCQlmaWxlLT5jdXJPZmZzZXQsCisJCQkJCQkJCVdBSVRfRVZF TlRfQlVGRklMRV9SRUFEKTsKKwkJaWYgKGZpbGUtPm5ieXRlcyA8IDApCisJCXsKKwkJCWZpbGUt Pm5ieXRlcyA9IDA7CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZV9mb3JfZmlsZV9h Y2Nlc3MoKSwKKwkJCQkJIGVycm1zZygiY291bGQgbm90IHJlYWQgZmlsZSBcIiVzXCI6ICVtIiwK KwkJCQkJCQlGaWxlUGF0aE5hbWUodGhpc2ZpbGUpKSkpOworCQl9CisJfQorCWVsc2UKKwl7CisJ CS8qCisJCSAqIFJlYWQgYW5kIGRlY29tcHJlc3MgZGF0YSBmcm9tIGEgdGVtcG9yYXJ5IGZpbGUu IFdlIGZpcnN0IHJlYWQgdGhlCisJCSAqIGhlYWRlciB3aXRoIGNvbXByZXNzZWQvcmF3IGxlbmd0 aHMsIGFuZCB0aGVuIHRoZSBjb21wcmVzc2VkIGRhdGEuCisJCSAqLworCQlpbnQJCQlucmVhZDsK KwkJQ29tcHJlc3NIZWFkZXIgaGVhZGVyOworCisJCW5yZWFkID0gRmlsZVJlYWQodGhpc2ZpbGUs CisJCQkJCQkgJmhlYWRlciwKKwkJCQkJCSBzaXplb2YoaGVhZGVyKSwKKwkJCQkJCSBmaWxlLT5j dXJPZmZzZXQsCisJCQkJCQkgV0FJVF9FVkVOVF9CVUZGSUxFX1JFQUQpOworCisJCS8qIGRpZCB3 ZSByZWFkIHRoZSBsZW5ndGggb2YgdGhlIG5leHQgYnVmZmVyPyAqLworCQlpZiAobnJlYWQgPT0g MCkKKwkJeworCQkJLyogZW9mLCBub3RoaW5nIHRvIGRvICovCisJCX0KKwkJZWxzZSBpZiAobnJl YWQgIT0gc2l6ZW9mKGhlYWRlcikpCisJCXsKKwkJCS8qIHVuZXhwZWN0ZWQgbnVtYmVyIG9mIGJ5 dGVzLCBhbHNvIGNvdmVycyAobnJlYWQgPCAwKSAqLworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ KGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCksCisJCQkJCSBlcnJtc2coImNvdWxkIG5vdCByZWFk IGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJCQkJRmlsZVBhdGhOYW1lKHRoaXNmaWxlKSkpKTsKKwkJ fQorCQllbHNlCisJCXsKKwkJCS8qIHJlYWQgbGVuZ3RoIG9mIGNvbXByZXNzZWQgZGF0YSwgcmVh ZCAoYW5kIGRlY29tcHJlc3MpIGRhdGEgKi8KKwkJCWNoYXIJICAgKmJ1ZmYgPSBmaWxlLT5jQnVm ZmVyOworCisJCQlBc3NlcnQoZmlsZS0+Y0J1ZmZlciAhPSBOVUxMKTsKKworCQkJLyogYWR2YW5j ZSBwYXN0IHRoZSBsZW5ndGggZmllbGQgKi8KKwkJCWZpbGUtPmN1ck9mZnNldCArPSBzaXplb2Yo aGVhZGVyKTsKKworCQkJLyoKKwkJCSAqIHJhd19sZW49PS0xIG1lYW5zIHRoZSBkYXRhIHdhcyBu b3QgY29tcHJlc3NlZCBhZnRlciBhbGwsIHdoaWNoCisJCQkgKiBjYW4gaGFwcGVuIGUuZy4gZm9y IG5vbi1jb21wcmVzc2libGUgZGF0YSB3aXRoIHBnbHouIEluIHRoYXQKKwkJCSAqIGNhc2UganVz dCBjb3B5IHRoZSBkYXRhIGluIHBsYWNlLiBPdGhlcndpc2UgZG8gdGhlCisJCQkgKiBkZWNvbXBy ZXNzaW9uLgorCQkJICoKKwkJCSAqIFhYWCBNYXliZSB3ZSBzaG91bGQganVzdCBkbyB0aGUgRmls ZVJlYWQgZmlyc3QsIGFuZCB0aGVuIGVpdGhlcgorCQkJICogZGVjb21wcmVzcyBvciBtZW1jcHko KSBmb3IgcmF3X2xlbj0tMS4gVGhhdCdkIGJlIGFuIGV4dHJhCisJCQkgKiBtZW1jcHksIGJ1dCBp dCdkIG1ha2UgdGhlIGNvZGUgc2ltcGxlciAodGhpcyB3YXlzIHdlIGRvIHRoZQorCQkJICogZXJy b3IgY2hlY2tzIHR3aWNlLCBmb3IgZWFjaCBicmFuY2gpLgorCQkJICovCisJCQlpZiAoaGVhZGVy LnJhd19sZW4gPT0gLTEpCisJCQl7CisJCQkJbnJlYWQgPSBGaWxlUmVhZCh0aGlzZmlsZSwKKwkJ CQkJCQkJIGZpbGUtPmJ1ZmZlci5kYXRhLAorCQkJCQkJCQkgaGVhZGVyLmxlbiwKKwkJCQkJCQkJ IGZpbGUtPmN1ck9mZnNldCwKKwkJCQkJCQkJIFdBSVRfRVZFTlRfQlVGRklMRV9SRUFEKTsKKwkJ CQlpZiAobnJlYWQgIT0gaGVhZGVyLmxlbikKKwkJCQl7CisJCQkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCksCisJCQkJCQkJIGVycm1zZygiY291bGQg bm90IHJlYWQgZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkJCQkJCUZpbGVQYXRoTmFtZSh0aGlzZmls ZSkpKSk7CisJCQkJfQorCisJCQkJZmlsZS0+bmJ5dGVzID0gbnJlYWQ7CisJCQkJZmlsZS0+Y3Vy T2Zmc2V0ICs9IG5yZWFkOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCS8qCisJCQkJICogUmVh ZCBjb21wcmVzc2VkIGRhdGEgaW50byB0aGUgc2VwYXJhdGUgYnVmZmVyLCBhbmQgdGhlbgorCQkJ CSAqIGRlY29tcHJlc3MgaW50byB0aGUgdGFyZ2V0IGZpbGUgYnVmZmVyLgorCQkJCSAqLworCQkJ CW5yZWFkID0gRmlsZVJlYWQodGhpc2ZpbGUsCisJCQkJCQkJCSBidWZmLAorCQkJCQkJCQkgaGVh ZGVyLmxlbiwKKwkJCQkJCQkJIGZpbGUtPmN1ck9mZnNldCwKKwkJCQkJCQkJIFdBSVRfRVZFTlRf QlVGRklMRV9SRUFEKTsKKwkJCQlpZiAobnJlYWQgIT0gaGVhZGVyLmxlbikKKwkJCQl7CisJCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCksCisJCQkJ CQkJIGVycm1zZygiY291bGQgbm90IHJlYWQgZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkJCQkJCUZp bGVQYXRoTmFtZSh0aGlzZmlsZSkpKSk7CisJCQkJfQorCisJCQkJc3dpdGNoIChmaWxlLT5jb21w cmVzcykKKwkJCQl7CisJCQkJCWNhc2UgVEVNUF9MWjRfQ09NUFJFU1NJT046CisjaWZkZWYgVVNF X0xaNAorCQkJCQkJZmlsZS0+bmJ5dGVzID0gTFo0X2RlY29tcHJlc3Nfc2FmZShidWZmLAorCQkJ CQkJCQkJCQkJCQkgICBmaWxlLT5idWZmZXIuZGF0YSwgaGVhZGVyLmxlbiwKKwkJCQkJCQkJCQkJ CQkJICAgc2l6ZW9mKGZpbGUtPmJ1ZmZlcikpOworI2Vsc2UKKwkJCQkJCWVsb2coRVJST1IsICJM WjQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJ1aWxkIik7CisjZW5kaWYKKwkJCQkJCWJyZWFr OworCisJCQkJCWNhc2UgVEVNUF9QR0xaX0NPTVBSRVNTSU9OOgorCQkJCQkJZmlsZS0+bmJ5dGVz ID0gcGdsel9kZWNvbXByZXNzKGJ1ZmYsIGhlYWRlci5sZW4sCisJCQkJCQkJCQkJCQkJICAgZmls ZS0+YnVmZmVyLmRhdGEsIGhlYWRlci5yYXdfbGVuLCBmYWxzZSk7CisJCQkJCQlicmVhazsKKwkJ CQkJY2FzZSBURU1QX05PTkVfQ09NUFJFU1NJT046CisJCQkJCQkvKiBubyBjb21wcmVzc2lvbiwg bm90aGluZyB0byBkbyAqLworCQkJCQkJYnJlYWs7CisJCQkJCWRlZmF1bHQ6CisJCQkJCQllbG9n KEVSUk9SLCAidW5rbm93biBjb21wcmVzc2lvbiBtZXRob2Q6ICVkIiwgZmlsZS0+Y29tcHJlc3Mp OworCQkJCQkJYnJlYWs7CisJCQkJfQorCQkJCWZpbGUtPmN1ck9mZnNldCArPSBucmVhZDsKKwor CQkJCWlmIChmaWxlLT5uYnl0ZXMgPCAwKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShl cnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAorCQkJCQkJCSBlcnJtc2dfaW50ZXJuYWwo ImNvbXByZXNzZWQgZGF0YSBpcyBjb3JydXB0IikpKTsKKworCQkJCS8qIHNob3VsZCBoYXZlIGdv dCB0aGUgZXhwZWN0ZWQgbGVuZ3RoICovCisJCQkJQXNzZXJ0KGZpbGUtPm5ieXRlcyA9PSBoZWFk ZXIucmF3X2xlbik7CisJCQl9CisJCX0KIAl9CiAKIAlpZiAodHJhY2tfaW9fdGltaW5nKQpAQCAt NDk0LDggKzcxNCwxMDEgQEAgc3RhdGljIHZvaWQKIEJ1ZkZpbGVEdW1wQnVmZmVyKEJ1ZkZpbGUg KmZpbGUpCiB7CiAJaW50NjQJCXdwb3MgPSAwOwotCWludDY0CQlieXRlc3Rvd3JpdGU7CisJaW50 NjQJCWJ5dGVzdG93cml0ZSA9IDA7CiAJRmlsZQkJdGhpc2ZpbGU7CisJY2hhcgkgICAqRGF0YVRv V3JpdGUgPSBmaWxlLT5idWZmZXIuZGF0YTsKKwlpbnQJCQluYnl0ZXNPcmlnaW5hbCA9IGZpbGUt Pm5ieXRlczsKKworCS8qCisJICogQ29tcHJlc3MgdGhlIGRhdGEgaWYgcmVxdWVzdGVkIGZvciB0 aGlzIHRlbXBvcmFyeSBmaWxlIChhbmQgaWYgZW5hYmxlZAorCSAqIGJ5IHRoZSB0ZW1wX2ZpbGVf Y29tcHJlc3Npb24gR1VDKS4KKwkgKgorCSAqIFRoZSBjb21wcmVzc2VkIGRhdGEgaXMgd3JpdHRl biB0byB0aGUgb25lIHNoYXJlZCBjb21wcmVzc2lvbiBidWZmZXIuCisJICogVGhlcmUncyBvbmx5 IGEgc2luZ2xlIGNvbXByZXNzaW9uIG9wZXJhdGlvbiBhdCBhbnkgZ2l2ZW4gdGltZSwgc28gb25l CisJICogYnVmZmVyIGlzIGVub3VnaC4KKwkgKgorCSAqIFRoZW4gd2Ugc2ltcGx5IHBvaW50IHRo ZSAiRGF0YVRvV3JpdGUiIGJ1ZmZlciBhdCB0aGUgY29tcHJlc3NlZCBidWZmZXIuCisJICovCisJ aWYgKGZpbGUtPmNvbXByZXNzICE9IFRFTVBfTk9ORV9DT01QUkVTU0lPTikKKwl7CisJCWNoYXIJ ICAgKmNEYXRhOworCQlpbnQJCQljU2l6ZSA9IDA7CisJCUNvbXByZXNzSGVhZGVyIGhlYWRlcjsK KworCQlBc3NlcnQoZmlsZS0+Y0J1ZmZlciAhPSBOVUxMKTsKKwkJY0RhdGEgPSBmaWxlLT5jQnVm ZmVyOworCisJCS8qIGluaXRpYWxpemUgdGhlIGhlYWRlciBmb3IgY29tcHJlc3Npb24gKi8KKwkJ aGVhZGVyLmxlbiA9IC0xOworCQloZWFkZXIucmF3X2xlbiA9IG5ieXRlc09yaWdpbmFsOworCisJ CXN3aXRjaCAoZmlsZS0+Y29tcHJlc3MpCisJCXsKKwkJY2FzZSBURU1QX0xaNF9DT01QUkVTU0lP TjoKKwkJCXsKKyNpZmRlZiBVU0VfTFo0CisJCQkJaW50CQkJY0J1ZmZlclNpemUgPSBMWjRfY29t cHJlc3NCb3VuZChmaWxlLT5uYnl0ZXMpOworCisJCQkJLyoKKwkJCQkgKiBYWFggV2UgbWlnaHQg dXNlIGx6NCBzdHJlYW0gY29tcHJlc3Npb24gaGVyZS4gRGVwZW5kaW5nCisJCQkJICogb24gdGhl IGRhdGEsIHRoYXQgbWlnaHQgaW1wcm92ZSB0aGUgY29tcHJlc3Npb24gcmF0aW8uCisJCQkJICog VGhlIGxlbmd0aCBpcyBzdG9yZWQgYXQgdGhlIGJlZ2lubmluZywgd2UnbGwgZmlsbCBpdCBpbgor CQkJCSAqIGF0IHRoZSBlbmQuCisJCQkJICovCisJCQkJY1NpemUgPSBMWjRfY29tcHJlc3NfZGVm YXVsdChmaWxlLT5idWZmZXIuZGF0YSwKKwkJCQkJCQkJCQkJIGNEYXRhICsgc2l6ZW9mKENvbXBy ZXNzSGVhZGVyKSwKKwkJCQkJCQkJCQkJIGZpbGUtPm5ieXRlcywgY0J1ZmZlclNpemUpOworCQkJ CWlmIChjU2l6ZSA9PSAwKQorCQkJCXsKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJy Y29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKKwkJCQkJCQkgZXJybXNnX2ludGVybmFsKCJj b21wcmVzc2lvbiBmYWlsZWQsIGNvbXByZXNzZWQgc2l6ZSAlZCwgb3JpZ2luYWwgc2l6ZSAlZCIs CisJCQkJCQkJCQkJCSBjU2l6ZSwgbmJ5dGVzT3JpZ2luYWwpKSk7CisJCQkJfQorI2Vsc2UKKwkJ CQllbG9nKEVSUk9SLCAiTFo0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBidWlsZCIpOworI2Vu ZGlmCisJCQkJYnJlYWs7CisJCQl9CisJCQljYXNlIFRFTVBfUEdMWl9DT01QUkVTU0lPTjoKKwkJ CQljU2l6ZSA9IHBnbHpfY29tcHJlc3MoZmlsZS0+YnVmZmVyLmRhdGEsIGZpbGUtPm5ieXRlcywK KwkJCQkJCQkJCSAgY0RhdGEgKyBzaXplb2YoQ29tcHJlc3NIZWFkZXIpLAorCQkJCQkJCQkJICBQ R0xaX3N0cmF0ZWd5X2Fsd2F5cyk7CisKKwkJCQkvKgorCQkJCSAqIHBnbHogcmV0dXJucyAtMSBm b3Igbm9uLWNvbXByZXNzaWJsZSBkYXRhLiBJbiB0aGF0IGNhc2UKKwkJCQkgKiBqdXN0IGNvcHkg dGhlIHJhdyBkYXRhIGludG8gdGhlIG91dHB1dCBidWZmZXIuCisJCQkJICovCisJCQkJaWYgKGNT aXplID09IC0xKQorCQkJCXsKKwkJCQkJbWVtY3B5KGNEYXRhICsgc2l6ZW9mKENvbXByZXNzSGVh ZGVyKSwgZmlsZS0+YnVmZmVyLmRhdGEsCisJCQkJCQkgICBoZWFkZXIucmF3X2xlbik7CisKKwkJ CQkJY1NpemUgPSBoZWFkZXIucmF3X2xlbjsKKwkJCQkJaGVhZGVyLnJhd19sZW4gPSAtMTsKKwkJ CQl9CisJCQkJYnJlYWs7CisJCQljYXNlIFRFTVBfTk9ORV9DT01QUkVTU0lPTjoKKwkJCQkvKiBu byBjb21wcmVzc2lvbiwgbm90aGluZyB0byBkbyAqLworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoK KwkJCQllbG9nKEVSUk9SLCAidW5rbm93biBjb21wcmVzc2lvbiBtZXRob2Q6ICVkIiwgZmlsZS0+ Y29tcHJlc3MpOworCQkJCWJyZWFrOworCQl9CisKKwkJQXNzZXJ0KGNTaXplICE9IC0xKTsKKwkJ aGVhZGVyLmxlbiA9IGNTaXplOworCisJCS8qCisJCSAqIFdyaXRlIHRoZSBoZWFkZXIgd2l0aCBj b21wcmVzc2VkIGxlbmd0aCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZQorCQkgKiBidWZmZXIuIFdl IHN0b3JlIGJvdGggdGhlIGNvbXByZXNzZWQgYW5kIHJhdyBsZW5ndGhzLCBhbmQgdXNlCisJCSAq IHJhd19sZW49LTEgd2hlbiB0aGUgZGF0YSB3YXMgbm90IGNvbXByZXNzZWQgYWZ0ZXIgYWxsLgor CQkgKi8KKwkJbWVtY3B5KGNEYXRhLCAmaGVhZGVyLCBzaXplb2YoQ29tcHJlc3NIZWFkZXIpKTsK KwkJZmlsZS0+bmJ5dGVzID0gaGVhZGVyLmxlbiArIHNpemVvZihDb21wcmVzc0hlYWRlcik7CisK KwkJRGF0YVRvV3JpdGUgPSBjRGF0YTsKKwl9CiAKIAkvKgogCSAqIFVubGlrZSBCdWZGaWxlTG9h ZEJ1ZmZlciwgd2UgbXVzdCBkdW1wIHRoZSB3aG9sZSBidWZmZXIgZXZlbiBpZiBpdApAQCAtNTM1 LDcgKzg0OCw3IEBAIEJ1ZkZpbGVEdW1wQnVmZmVyKEJ1ZkZpbGUgKmZpbGUpCiAJCQlJTlNUUl9U SU1FX1NFVF9aRVJPKGlvX3N0YXJ0KTsKIAogCQlieXRlc3Rvd3JpdGUgPSBGaWxlV3JpdGUodGhp c2ZpbGUsCi0JCQkJCQkJCSBmaWxlLT5idWZmZXIuZGF0YSArIHdwb3MsCisJCQkJCQkJCSBEYXRh VG9Xcml0ZSArIHdwb3MsCiAJCQkJCQkJCSBieXRlc3Rvd3JpdGUsCiAJCQkJCQkJCSBmaWxlLT5j dXJPZmZzZXQsCiAJCQkJCQkJCSBXQUlUX0VWRU5UX0JVRkZJTEVfV1JJVEUpOwpAQCAtNTY0LDcg Kzg3NywxNyBAQCBCdWZGaWxlRHVtcEJ1ZmZlcihCdWZGaWxlICpmaWxlKQogCSAqIGxvZ2ljYWwg ZmlsZSBwb3NpdGlvbiwgaWUsIG9yaWdpbmFsIHZhbHVlICsgcG9zLCBpbiBjYXNlIHRoYXQgaXMg bGVzcwogCSAqIChhcyBjb3VsZCBoYXBwZW4gZHVlIHRvIGEgc21hbGwgYmFja3dhcmRzIHNlZWsg aW4gYSBkaXJ0eSBidWZmZXIhKQogCSAqLwotCWZpbGUtPmN1ck9mZnNldCAtPSAoZmlsZS0+bmJ5 dGVzIC0gZmlsZS0+cG9zKTsKKwlpZiAoIWZpbGUtPmNvbXByZXNzKQorCQlmaWxlLT5jdXJPZmZz ZXQgLT0gKGZpbGUtPm5ieXRlcyAtIGZpbGUtPnBvcyk7CisJZWxzZSBpZiAobmJ5dGVzT3JpZ2lu YWwgLSBmaWxlLT5wb3MgIT0gMCkKKwl7CisJCS8qCisJCSAqIGN1ck9mZnNldCBtdXN0IGJlIGNv cnJlY3RlZCBhbHNvIGlmIGNvbXByZXNzaW9uIGlzIGVuYWJsZWQsIG5ieXRlcworCQkgKiB3YXMg Y2hhbmdlZCBieSBjb21wcmVzc2lvbiBidXQgd2UgaGF2ZSB0byB1c2UgdGhlIG9yaWdpbmFsIHZh bHVlIG9mCisJCSAqIG5ieXRlcworCQkgKi8KKwkJZmlsZS0+Y3VyT2Zmc2V0IC09IGJ5dGVzdG93 cml0ZTsKKwl9CiAJaWYgKGZpbGUtPmN1ck9mZnNldCA8IDApCS8qIGhhbmRsZSBwb3NzaWJsZSBz ZWdtZW50IGNyb3NzaW5nICovCiAJewogCQlmaWxlLT5jdXJGaWxlLS07CkBAIC02MDIsOCArOTI1 LDE0IEBAIEJ1ZkZpbGVSZWFkQ29tbW9uKEJ1ZkZpbGUgKmZpbGUsIHZvaWQgKnB0ciwgc2l6ZV90 IHNpemUsIGJvb2wgZXhhY3QsIGJvb2wgZW9mT0spCiAJewogCQlpZiAoZmlsZS0+cG9zID49IGZp bGUtPm5ieXRlcykKIAkJewotCQkJLyogVHJ5IHRvIGxvYWQgbW9yZSBkYXRhIGludG8gYnVmZmVy LiAqLwotCQkJZmlsZS0+Y3VyT2Zmc2V0ICs9IGZpbGUtPnBvczsKKwkJCS8qCisJCQkgKiBUcnkg dG8gbG9hZCBtb3JlIGRhdGEgaW50byBidWZmZXIuCisJCQkgKgorCQkJICogY3VyT2Zmc2V0IGlz IG1vdmVkIHdpdGhpbiBCdWZGaWxlTG9hZEJ1ZmZlciBiZWNhdXNlIHN0b3JlZCBkYXRhCisJCQkg KiBzaXplIGRpZmZlcnMgZnJvbSBsb2FkZWQvIGRlY29tcHJlc3NlZCBzaXplCisJCQkgKi8KKwkJ CWlmICghZmlsZS0+Y29tcHJlc3MpCisJCQkJZmlsZS0+Y3VyT2Zmc2V0ICs9IGZpbGUtPnBvczsK IAkJCWZpbGUtPnBvcyA9IDA7CiAJCQlmaWxlLT5uYnl0ZXMgPSAwOwogCQkJQnVmRmlsZUxvYWRC dWZmZXIoZmlsZSk7CkBAIC03NDIsNiArMTA3MSwxMCBAQCBCdWZGaWxlU2VlayhCdWZGaWxlICpm aWxlLCBpbnQgZmlsZW5vLCBwZ29mZl90IG9mZnNldCwgaW50IHdoZW5jZSkKIAlpbnQJCQluZXdG aWxlOwogCXBnb2ZmX3QJCW5ld09mZnNldDsKIAorCS8qIENvbXByZXNzZWQgZmlsZXMgb25seSBz dXBwb3J0IHNlZWsgdG8gdGhlIGJlZ2lubmluZyAqLworCUFzc2VydChmaWxlLT5jb21wcmVzcyA9 PSBURU1QX05PTkVfQ09NUFJFU1NJT04gfHwKKwkJICAgKHdoZW5jZSA9PSBTRUVLX1NFVCAmJiBm aWxlbm8gPT0gMCAmJiBvZmZzZXQgPT0gMCkpOworCiAJc3dpdGNoICh3aGVuY2UpCiAJewogCQlj YXNlIFNFRUtfU0VUOgpAQCAtODMxLDYgKzExNjQsOSBAQCBCdWZGaWxlU2VlayhCdWZGaWxlICpm aWxlLCBpbnQgZmlsZW5vLCBwZ29mZl90IG9mZnNldCwgaW50IHdoZW5jZSkKIHZvaWQKIEJ1ZkZp bGVUZWxsKEJ1ZkZpbGUgKmZpbGUsIGludCAqZmlsZW5vLCBwZ29mZl90ICpvZmZzZXQpCiB7CisJ LyogVGVsbCBkb2Vzbid0IHdvcmsgY29ycmVjdGx5IGZvciBjb21wcmVzc2VkIGZpbGVzICovCisJ QXNzZXJ0KGZpbGUtPmNvbXByZXNzID09IFRFTVBfTk9ORV9DT01QUkVTU0lPTik7CisKIAkqZmls ZW5vID0gZmlsZS0+Y3VyRmlsZTsKIAkqb2Zmc2V0ID0gZmlsZS0+Y3VyT2Zmc2V0ICsgZmlsZS0+ cG9zOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVy cy5kYXQgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdAppbmRleCBm MDI2MGU2ZTQxMi4uNTViZjIwNzYzN2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvZ3VjX3BhcmFtZXRlcnMuZGF0CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3Bh cmFtZXRlcnMuZGF0CkBAIC0yOTMxLDYgKzI5MzEsMTQgQEAKICAgY2hlY2tfaG9vayA9PiAnY2hl Y2tfdGVtcF9idWZmZXJzJywKIH0sCiAKK3sgbmFtZSA9PiAndGVtcF9maWxlX2NvbXByZXNzaW9u JywgdHlwZSA9PiAnZW51bScsIGNvbnRleHQgPT4gJ1BHQ19VU0VSU0VUJywgZ3JvdXAgPT4gJ0NM SUVOVF9DT05OX1NUQVRFTUVOVCcsCisgIHNob3J0X2Rlc2MgPT4gJ1NldHMgdGhlIGRlZmF1bHQg Y29tcHJlc3Npb24gbWV0aG9kIGZvciB0ZW1wb3JhcnkgZmlsZXMuJywKKyAgbG9uZ19kZXNjID0+ ICdDb21wcmVzc2lvbiBpcyBhcHBsaWVkIHRyYW5zcGFyZW50bHkgdG8gdGVtcG9yYXJ5IGZpbGVz IHVzZWQgYnkgaGFzaCBqb2lucy4gTm90ZSB0aGF0IHRoZSBsb2dnZWQgZmlsZSBzaXplcyBtYXkg YXBwZWFyIHRoZSBzYW1lIHJlZ2FyZGxlc3Mgb2YgY29tcHJlc3Npb24gbWV0aG9kIGR1ZSB0byBm aXhlZC1zaXplIGNodW5raW5nOyBhY3R1YWwgZGlzayBzcGFjZSBzYXZpbmdzIGRlcGVuZCBvbiBk YXRhIGNvbXByZXNzaWJpbGl0eS4nLAorICB2YXJpYWJsZSA9PiAndGVtcF9maWxlX2NvbXByZXNz aW9uJywKKyAgYm9vdF92YWwgPT4gJ1RFTVBfTk9ORV9DT01QUkVTU0lPTicsCisgIG9wdGlvbnMg PT4gJ3RlbXBfZmlsZV9jb21wcmVzc2lvbl9vcHRpb25zJywKK30sCisKIHsgbmFtZSA9PiAndGVt cF9maWxlX2xpbWl0JywgdHlwZSA9PiAnaW50JywgY29udGV4dCA9PiAnUEdDX1NVU0VUJywgZ3Jv dXAgPT4gJ1JFU09VUkNFU19ESVNLJywKICAgc2hvcnRfZGVzYyA9PiAnTGltaXRzIHRoZSB0b3Rh bCBzaXplIG9mIGFsbCB0ZW1wb3JhcnkgZmlsZXMgdXNlZCBieSBlYWNoIHByb2Nlc3MuJywKICAg bG9uZ19kZXNjID0+ICctMSBtZWFucyBubyBsaW1pdC4nLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190 YWJsZXMuYwppbmRleCAxM2M1NjlkODc5MC4uOTQ1ZTAwOTIwY2QgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvZ3VjX3RhYmxlcy5jCkBAIC03OCw2ICs3OCw3IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24v c3luY3JlcC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYWlvLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9i dWZtZ3IuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2J1ZmZpbGUuaCIKICNpbmNsdWRlICJzdG9yYWdl L2J1ZnBhZ2UuaCIKICNpbmNsdWRlICJzdG9yYWdlL2NvcHlkaXIuaCIKICNpbmNsdWRlICJzdG9y YWdlL2lvX3dvcmtlci5oIgpAQCAtNDY0LDYgKzQ2NSwxNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IGNvbmZpZ19lbnVtX2VudHJ5IGRlZmF1bHRfdG9hc3RfY29tcHJlc3Npb25fb3B0aW9uc1tdID0g ewogCXtOVUxMLCAwLCBmYWxzZX0KIH07CiAKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY29uZmlnX2Vu dW1fZW50cnkgdGVtcF9maWxlX2NvbXByZXNzaW9uX29wdGlvbnNbXSA9IHsKKwl7Im5vIiwgVEVN UF9OT05FX0NPTVBSRVNTSU9OLCBmYWxzZX0sCisJeyJwZ2x6IiwgVEVNUF9QR0xaX0NPTVBSRVNT SU9OLCBmYWxzZX0sCisjaWZkZWYgIFVTRV9MWjQKKwl7Imx6NCIsIFRFTVBfTFo0X0NPTVBSRVNT SU9OLCBmYWxzZX0sCisjZW5kaWYKKwl7TlVMTCwgMCwgZmFsc2V9Cit9OworCiBzdGF0aWMgY29u c3Qgc3RydWN0IGNvbmZpZ19lbnVtX2VudHJ5IHdhbF9jb21wcmVzc2lvbl9vcHRpb25zW10gPSB7 CiAJeyJwZ2x6IiwgV0FMX0NPTVBSRVNTSU9OX1BHTFosIGZhbHNlfSwKICNpZmRlZiBVU0VfTFo0 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1w bGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXgg YzRmOTJmY2RhYzguLmFhYjlhZjhhMDQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9t aXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9w b3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCkBAIC0xODIsNiArMTgyLDcgQEAKIAogI21heF9ub3RpZnlf cXVldWVfcGFnZXMgPSAxMDQ4NTc2ICAgICAgICMgbGltaXRzIHRoZSBudW1iZXIgb2YgU0xSVSBw YWdlcyBhbGxvY2F0ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IGZvciBOT1RJRlkgLyBMSVNURU4gcXVldWUKKyN0ZW1wX2ZpbGVfY29tcHJlc3Npb24gPSAnbm8n ICAgICAgICAgICAjIGVuYWJsZXMgdGVtcG9yYXJ5IGZpbGVzIGNvbXByZXNzaW9uCiAKICMgLSBL ZXJuZWwgUmVzb3VyY2VzIC0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90 dXBsZXN0b3JlLmMgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc3RvcmUuYwppbmRleCBl NTdmYTViY2E2NC4uNzY2OTVlNGM5ZTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL3Nv cnQvdHVwbGVzdG9yZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzdG9yZS5j CkBAIC04NjAsNyArODYwLDEzIEBAIHR1cGxlc3RvcmVfcHV0dHVwbGVfY29tbW9uKFR1cGxlc3Rv cmVzdGF0ZSAqc3RhdGUsIHZvaWQgKnR1cGxlKQogCQkJICovCiAJCQlvbGRjeHQgPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8oc3RhdGUtPmNvbnRleHQtPnBhcmVudCk7CiAKLQkJCXN0YXRlLT5teWZp bGUgPSBCdWZGaWxlQ3JlYXRlVGVtcChzdGF0ZS0+aW50ZXJYYWN0KTsKKwkJCS8qCisJCQkgKiBJ ZiByZXF1ZXN0ZWQgcmFuZG9tIGFjY2VzcywgY2FuJ3QgY29tcHJlc3MgdGhlIHRlbXAgZmlsZS4K KwkJCSAqLworCQkJaWYgKChzdGF0ZS0+ZWZsYWdzICYgRVhFQ19GTEFHX0JBQ0tXQVJEKSAhPSAw KQorCQkJCXN0YXRlLT5teWZpbGUgPSBCdWZGaWxlQ3JlYXRlVGVtcChzdGF0ZS0+aW50ZXJYYWN0 KTsKKwkJCWVsc2UKKwkJCQlzdGF0ZS0+bXlmaWxlID0gQnVmRmlsZUNyZWF0ZUNvbXByZXNzVGVt cChzdGF0ZS0+aW50ZXJYYWN0KTsKIAogCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmZmlsZS5oIGIvc3JjL2luY2x1 ZGUvc3RvcmFnZS9idWZmaWxlLmgKaW5kZXggNjc1NGYzNzgzNmMuLjJlNTJjYTc0YmRlIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1ZmZpbGUuaAorKysgYi9zcmMvaW5jbHVkZS9z dG9yYWdlL2J1ZmZpbGUuaApAQCAtMzIsMTEgKzMyLDIxIEBACiAKIHR5cGVkZWYgc3RydWN0IEJ1 ZkZpbGUgQnVmRmlsZTsKIAordHlwZWRlZiBlbnVtCit7CisJVEVNUF9OT05FX0NPTVBSRVNTSU9O LAorCVRFTVBfUEdMWl9DT01QUkVTU0lPTiwKKwlURU1QX0xaNF9DT01QUkVTU0lPTgorfSBUZW1w Q29tcHJlc3Npb247CisKK2V4dGVybiBQR0RMTElNUE9SVCBpbnQgdGVtcF9maWxlX2NvbXByZXNz aW9uOworCiAvKgogICogcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIGJ1ZmZpbGUuYwogICov CiAKIGV4dGVybiBCdWZGaWxlICpCdWZGaWxlQ3JlYXRlVGVtcChib29sIGludGVyWGFjdCk7Citl eHRlcm4gQnVmRmlsZSAqQnVmRmlsZUNyZWF0ZUNvbXByZXNzVGVtcChib29sIGludGVyWGFjdCk7 CiBleHRlcm4gdm9pZCBCdWZGaWxlQ2xvc2UoQnVmRmlsZSAqZmlsZSk7CiBwZ19ub2Rpc2NhcmQg ZXh0ZXJuIHNpemVfdCBCdWZGaWxlUmVhZChCdWZGaWxlICpmaWxlLCB2b2lkICpwdHIsIHNpemVf dCBzaXplKTsKIGV4dGVybiB2b2lkIEJ1ZkZpbGVSZWFkRXhhY3QoQnVmRmlsZSAqZmlsZSwgdm9p ZCAqcHRyLCBzaXplX3Qgc2l6ZSk7Ci0tIAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --0000000000007f0fd20649351740 Content-Type: application/octet-stream; name="0002-Add-regression-tests-for-temporary-file-compression.patch" Content-Disposition: attachment; filename="0002-Add-regression-tests-for-temporary-file-compression.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mktoobpy1 RnJvbSBiMGMyNzM3NTkxZmE0OGFiZDAxOTY1ZDYyMDRkNDdlZmI5NzcxNDM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBGaWxpcCBKYW51cyA8ZmphbnVzQHJlZGhhdC5jb20+CkRhdGU6 IFRodSwgMzEgSnVsIDIwMjUgMTQ6MDI6NDUgKzAyMDAKU3ViamVjdDogW1BBVENIIDIvMl0gQWRk IHJlZ3Jlc3Npb24gdGVzdHMgZm9yIHRlbXBvcmFyeSBmaWxlIGNvbXByZXNzaW9uCgpUaGlzIGNv bW1pdCBhZGRzIGNvbXByZWhlbnNpdmUgcmVncmVzc2lvbiB0ZXN0cyBmb3IgdGhlIHRyYW5zcGFy ZW50CnRlbXBvcmFyeSBmaWxlIGNvbXByZXNzaW9uIGZlYXR1cmUuCgpUZXN0IGNvdmVyYWdlOgot IGpvaW5faGFzaF9sejQuc3FsOiBUZXN0cyBoYXNoIGpvaW4gb3BlcmF0aW9ucyB3aXRoIExaNCBj b21wcmVzc2lvbgotIGpvaW5faGFzaF9wZ2x6LnNxbDogVGVzdHMgaGFzaCBqb2luIG9wZXJhdGlv bnMgd2l0aCBQR0xaIGNvbXByZXNzaW9uCi0gQm90aCB0ZXN0cyB2ZXJpZnkgY29tcHJlc3Npb24g d29ya3MgY29ycmVjdGx5IGZvciB2YXJpb3VzIGhhc2ggam9pbiBzY2VuYXJpb3MKLSBFeHBlY3Rl ZCBvdXRwdXQgZmlsZXMgZm9yIHZhbGlkYXRpb24KClRlc3QgaW50ZWdyYXRpb246Ci0gTFo0IHRl c3RzIGFyZSBjb25kaXRpb25hbGx5IGVuYWJsZWQgd2hlbiBQb3N0Z3JlU1FMIGlzIGJ1aWx0IHdp dGggLS13aXRoLWx6NAotIFBHTFogdGVzdHMgYXJlIGFsd2F5cyBlbmFibGVkIGFzIFBHTFogaXMg YnVpbHQtaW4KLSBUZXN0cyBhZGRlZCB0byBwYXJhbGxlbCByZWdyZXNzaW9uIHRlc3Qgc2NoZWR1 bGUKLSBHTlVtYWtlZmlsZSB1cGRhdGVkIHRvIGluY2x1ZGUgY29uZGl0aW9uYWwgTFo0IHRlc3Qg ZXhlY3V0aW9uCgpUaGUgdGVzdHMgZW5zdXJlIHRoYXQgY29tcHJlc3Npb24vZGVjb21wcmVzc2lv biB3b3JrcyB0cmFuc3BhcmVudGx5CndpdGhvdXQgYWZmZWN0aW5nIHF1ZXJ5IHJlc3VsdHMsIHdo aWxlIHByb3ZpZGluZyBjb3ZlcmFnZSBmb3IgYm90aApzdXBwb3J0ZWQgY29tcHJlc3Npb24gYWxn b3JpdGhtcy4KLS0tCiBzcmMvTWFrZWZpbGUuZ2xvYmFsLmluICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9HTlVtYWtlZmlsZSAgICAgICAgICAgICAgICAg fCAgICA0ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbl9oYXNoX2x6NC5vdXQgIHwg MTE2NyArKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbl9o YXNoX3BnbHoub3V0IHwgMTE2NyArKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mv cGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAgIHwgICAgNCArLQogc3JjL3Rlc3QvcmVncmVzcy9z cWwvam9pbl9oYXNoX2x6NC5zcWwgICAgICAgfCAgNjI3ICsrKysrKysrKysKIHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2pvaW5faGFzaF9wZ2x6LnNxbCAgICAgIHwgIDYyNyArKysrKysrKysrCiA3IGZp bGVzIGNoYW5nZWQsIDM1OTYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbl9oYXNoX2x6NC5vdXQKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW5faGFzaF9wZ2x6 Lm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW5faGFzaF9s ejQuc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvam9pbl9oYXNo X3BnbHouc3FsCgpkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmdsb2JhbC5pbiBiL3NyYy9NYWtl ZmlsZS5nbG9iYWwuaW4KaW5kZXggOTQ3YTJkNzllMjkuLjg3Yzk1MGNjYTgyIDEwMDY0NAotLS0g YS9zcmMvTWFrZWZpbGUuZ2xvYmFsLmluCisrKyBiL3NyYy9NYWtlZmlsZS5nbG9iYWwuaW4KQEAg LTIwMSw2ICsyMDEsNyBAQCB3aXRoX2xpYnVyaW5nCT0gQHdpdGhfbGlidXJpbmdACiB3aXRoX2xp YnhtbAk9IEB3aXRoX2xpYnhtbEAKIHdpdGhfbGlieHNsdAk9IEB3aXRoX2xpYnhzbHRACiB3aXRo X2xsdm0JPSBAd2l0aF9sbHZtQAord2l0aF9sejQJPSBAd2l0aF9sejRACiB3aXRoX3N5c3RlbV90 emRhdGEgPSBAd2l0aF9zeXN0ZW1fdHpkYXRhQAogd2l0aF91dWlkCT0gQHdpdGhfdXVpZEAKIHdp dGhfemxpYgk9IEB3aXRoX3psaWJACmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL0dOVW1h a2VmaWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9HTlVtYWtlZmlsZQppbmRleCBhOGJhMTllNTk3MS4u NWM0ZTI1YmMwN2MgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvR05VbWFrZWZpbGUKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9HTlVtYWtlZmlsZQpAQCAtOTQsNiArOTQsMTAgQEAgaW5zdGFs bGRpcnMtdGVzdHM6IGluc3RhbGxkaXJzCiBSRUdSRVNTX09QVFMgPSAtLWRscGF0aD0uIC0tbWF4 LWNvbmN1cnJlbnQtdGVzdHM9MjAgXAogCSQoRVhUUkFfUkVHUkVTU19PUFRTKQogCitpZmVxICgk KHdpdGhfbHo0KSx5ZXMpCitvdmVycmlkZSBFWFRSQV9URVNUUyA6PSAkKEVYVFJBX1RFU1RTKSBq b2luX2hhc2hfbHo0CitlbmRpZgorCiBjaGVjazogYWxsCiAJJChwZ19yZWdyZXNzX2NoZWNrKSAk KFJFR1JFU1NfT1BUUykgLS1zY2hlZHVsZT0kKHNyY2RpcikvcGFyYWxsZWxfc2NoZWR1bGUgJChN QVhDT05OT1BUKSAkKEVYVFJBX1RFU1RTKQogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2pvaW5faGFzaF9sejQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9q b2luX2hhc2hfbHo0Lm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u NzgzNjdiZjM3MTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2pvaW5faGFzaF9sejQub3V0CkBAIC0wLDAgKzEsMTE2NyBAQAorLS0KKy0tIGV4ZXJjaXNlcyBm b3IgdGhlIGhhc2ggam9pbiBjb2RlCistLQorYmVnaW47CitzZXQgbG9jYWwgbWluX3BhcmFsbGVs X3RhYmxlX3NjYW5fc2l6ZSA9IDA7CitzZXQgbG9jYWwgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7 CitzZXQgbG9jYWwgZW5hYmxlX2hhc2hqb2luID0gb247CitzZXQgbG9jYWwgdGVtcF9maWxlX2Nv bXByZXNzaW9uID0gJ2x6NCc7CistLSBFeHRyYWN0IGJ1Y2tldCBhbmQgYmF0Y2ggY291bnRzIGZy b20gYW4gZXhwbGFpbiBhbmFseXplIHBsYW4uICBJbgorLS0gZ2VuZXJhbCB3ZSBjYW4ndCBtYWtl IGFzc2VydGlvbnMgYWJvdXQgaG93IG1hbnkgYmF0Y2hlcyAob3IKKy0tIGJ1Y2tldHMpIHdpbGwg YmUgcmVxdWlyZWQgYmVjYXVzZSBpdCBjYW4gdmFyeSwgYnV0IHdlIGNhbiBpbiBzb21lCistLSBz cGVjaWFsIGNhc2VzIGFuZCB3ZSBjYW4gY2hlY2sgZm9yIGdyb3d0aC4KK2NyZWF0ZSBvciByZXBs YWNlIGZ1bmN0aW9uIGZpbmRfaGFzaChub2RlIGpzb24pCityZXR1cm5zIGpzb24gbGFuZ3VhZ2Ug cGxwZ3NxbAorYXMKKyQkCitkZWNsYXJlCisgIHgganNvbjsKKyAgY2hpbGQganNvbjsKK2JlZ2lu CisgIGlmIG5vZGUtPj4nTm9kZSBUeXBlJyA9ICdIYXNoJyB0aGVuCisgICAgcmV0dXJuIG5vZGU7 CisgIGVsc2UKKyAgICBmb3IgY2hpbGQgaW4gc2VsZWN0IGpzb25fYXJyYXlfZWxlbWVudHMobm9k ZS0+J1BsYW5zJykKKyAgICBsb29wCisgICAgICB4IDo9IGZpbmRfaGFzaChjaGlsZCk7CisgICAg ICBpZiB4IGlzIG5vdCBudWxsIHRoZW4KKyAgICAgICAgcmV0dXJuIHg7CisgICAgICBlbmQgaWY7 CisgICAgZW5kIGxvb3A7CisgICAgcmV0dXJuIG51bGw7CisgIGVuZCBpZjsKK2VuZDsKKyQkOwor Y3JlYXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gaGFzaF9qb2luX2JhdGNoZXMocXVlcnkgdGV4dCkK K3JldHVybnMgdGFibGUgKG9yaWdpbmFsIGludCwgZmluYWwgaW50KSBsYW5ndWFnZSBwbHBnc3Fs CithcworJCQKK2RlY2xhcmUKKyAgd2hvbGVfcGxhbiBqc29uOworICBoYXNoX25vZGUganNvbjsK K2JlZ2luCisgIGZvciB3aG9sZV9wbGFuIGluCisgICAgZXhlY3V0ZSAnZXhwbGFpbiAoYW5hbHl6 ZSwgZm9ybWF0ICcnanNvbicnKSAnIHx8IHF1ZXJ5CisgIGxvb3AKKyAgICBoYXNoX25vZGUgOj0g ZmluZF9oYXNoKGpzb25fZXh0cmFjdF9wYXRoKHdob2xlX3BsYW4sICcwJywgJ1BsYW4nKSk7Cisg ICAgb3JpZ2luYWwgOj0gaGFzaF9ub2RlLT4+J09yaWdpbmFsIEhhc2ggQmF0Y2hlcyc7CisgICAg ZmluYWwgOj0gaGFzaF9ub2RlLT4+J0hhc2ggQmF0Y2hlcyc7CisgICAgcmV0dXJuIG5leHQ7Cisg IGVuZCBsb29wOworZW5kOworJCQ7CistLSBNYWtlIGEgc2ltcGxlIHJlbGF0aW9uIHdpdGggd2Vs bCBkaXN0cmlidXRlZCBrZXlzIGFuZCBjb3JyZWN0bHkKKy0tIGVzdGltYXRlZCBzaXplLgorY3Jl YXRlIHRhYmxlIHNpbXBsZSBhcworICBzZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMDAwKSBB UyBpZCwgJ2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEnOworYWx0ZXIgdGFibGUg c2ltcGxlIHNldCAocGFyYWxsZWxfd29ya2VycyA9IDIpOworYW5hbHl6ZSBzaW1wbGU7CistLSBN YWtlIGEgcmVsYXRpb24gd2hvc2Ugc2l6ZSB3ZSB3aWxsIHVuZGVyLWVzdGltYXRlLiAgV2Ugd2Fu dCBzdGF0cworLS0gdG8gc2F5IDEwMDAgcm93cywgYnV0IGFjdHVhbGx5IHRoZXJlIGFyZSAyMCww MDAgcm93cy4KK2NyZWF0ZSB0YWJsZSBiaWdnZXJfdGhhbl9pdF9sb29rcyBhcworICBzZWxlY3Qg Z2VuZXJhdGVfc2VyaWVzKDEsIDIwMDAwKSBhcyBpZCwgJ2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWEnOworYWx0ZXIgdGFibGUgYmlnZ2VyX3RoYW5faXRfbG9va3Mgc2V0IChhdXRv dmFjdXVtX2VuYWJsZWQgPSAnZmFsc2UnKTsKK2FsdGVyIHRhYmxlIGJpZ2dlcl90aGFuX2l0X2xv b2tzIHNldCAocGFyYWxsZWxfd29ya2VycyA9IDIpOworYW5hbHl6ZSBiaWdnZXJfdGhhbl9pdF9s b29rczsKK3VwZGF0ZSBwZ19jbGFzcyBzZXQgcmVsdHVwbGVzID0gMTAwMCB3aGVyZSByZWxuYW1l ID0gJ2JpZ2dlcl90aGFuX2l0X2xvb2tzJzsKKy0tIE1ha2UgYSByZWxhdGlvbiB3aG9zZSBzaXpl IHdlIHVuZGVyZXN0aW1hdGUgYW5kIHRoYXQgYWxzbyBoYXMgYQorLS0ga2luZCBvZiBza2V3IHRo YXQgYnJlYWtzIG91ciBiYXRjaGluZyBzY2hlbWUuICBXZSB3YW50IHN0YXRzIHRvIHNheQorLS0g MiByb3dzLCBidXQgYWN0dWFsbHkgdGhlcmUgYXJlIDIwLDAwMCByb3dzIHdpdGggdGhlIHNhbWUg a2V5LgorY3JlYXRlIHRhYmxlIGV4dHJlbWVseV9za2V3ZWQgKGlkIGludCwgdCB0ZXh0KTsKK2Fs dGVyIHRhYmxlIGV4dHJlbWVseV9za2V3ZWQgc2V0IChhdXRvdmFjdXVtX2VuYWJsZWQgPSAnZmFs c2UnKTsKK2FsdGVyIHRhYmxlIGV4dHJlbWVseV9za2V3ZWQgc2V0IChwYXJhbGxlbF93b3JrZXJz ID0gMik7CithbmFseXplIGV4dHJlbWVseV9za2V3ZWQ7CitpbnNlcnQgaW50byBleHRyZW1lbHlf c2tld2VkCisgIHNlbGVjdCA0MiBhcyBpZCwgJ2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWEnCisgIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMDAwKTsKK3VwZGF0ZSBwZ19jbGFz cworICBzZXQgcmVsdHVwbGVzID0gMiwgcmVscGFnZXMgPSBwZ19yZWxhdGlvbl9zaXplKCdleHRy ZW1lbHlfc2tld2VkJykgLyA4MTkyCisgIHdoZXJlIHJlbG5hbWUgPSAnZXh0cmVtZWx5X3NrZXdl ZCc7CistLSBNYWtlIGEgcmVsYXRpb24gd2l0aCBhIGNvdXBsZSBvZiBlbm9ybW91cyB0dXBsZXMu CitjcmVhdGUgdGFibGUgd2lkZSBhcyBzZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEsIDIpIGFzIGlk LCBycGFkKCcnLCAzMjAwMDAsICd4JykgYXMgdDsKK2FsdGVyIHRhYmxlIHdpZGUgc2V0IChwYXJh bGxlbF93b3JrZXJzID0gMik7CistLSBUaGUgIm9wdGltYWwiIGNhc2U6IHRoZSBoYXNoIHRhYmxl IGZpdHMgaW4gbWVtb3J5OyB3ZSBwbGFuIGZvciAxCistLSBiYXRjaCwgd2Ugc3RpY2sgdG8gdGhh dCBudW1iZXIsIGFuZCBwZWFrIG1lbW9yeSB1c2FnZSBzdGF5cyB3aXRoaW4KKy0tIG91ciB3b3Jr X21lbSBidWRnZXQKKy0tIG5vbi1wYXJhbGxlbAorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxv Y2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworc2V0IGxvY2FsIHdvcmtf bWVtID0gJzRNQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxh aW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1w bGUgcyB1c2luZyAoaWQpOworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQor ICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAgIC0+ICBIYXNoCisgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHMKKyg2IHJvd3MpCisKK3NlbGVjdCBjb3Vu dCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0t LS0tLS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxs eV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZy b20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUg ciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CiskJCk7CisgaW5pdGlhbGx5X211bHRpYmF0Y2gg fCBpbmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLQorIGYgICAgICAgICAgICAgICAgICAgIHwgZgorKDEgcm93KQorCityb2xsYmFjayB0 byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtb2JsaXZpb3VzIGhhc2ggam9p bgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Bl cl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzRNQic7CitzZXQgbG9jYWwgaGFz aF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2NhbCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9 IG9mZjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxl IHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQorICAgLT4g IEdhdGhlcgorICAgICAgICAgV29ya2VycyBQbGFubmVkOiAyCisgICAgICAgICAtPiAgUGFydGlh bCBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAg ICAgICAgIEhhc2ggQ29uZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAgICAgICAgICAgICAgLT4g IFBhcmFsbGVsIFNlcSBTY2FuIG9uIHNpbXBsZSByCisgICAgICAgICAgICAgICAgICAgICAtPiAg SGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHNpbXBsZSBz CisoOSByb3dzKQorCitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBz IHVzaW5nIChpZCk7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykKKworc2VsZWN0 IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBh cyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2Vs ZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworJCQp OworIGluaXRpYWxseV9tdWx0aWJhdGNoIHwgaW5jcmVhc2VkX2JhdGNoZXMgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmICAgICAgICAgICAgICAgICAgICB8 IGYKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CistLSBwYXJhbGxlbCB3aXRoIHBh cmFsbGVsLWF3YXJlIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1h eF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0g JzRNQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2NhbCBl bmFibGVfcGFyYWxsZWxfaGFzaCA9IG9uOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3Qg Y291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgRmluYWxpemUgQWdncmVnYXRlCisgICAtPiAgR2F0aGVyCisgICAgICAgICBXb3JrZXJz IFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBQYXJ0aWFsIEFnZ3JlZ2F0ZQorICAgICAgICAgICAg ICAgLT4gIFBhcmFsbGVsIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25k OiAoci5pZCA9IHMuaWQpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNj YW4gb24gc2ltcGxlIHIKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxl IHMKKyg5IHJvd3MpCisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxl IHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxl Y3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFs IGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBz ZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7Cisk JCk7CisgaW5pdGlhbGx5X211bHRpYmF0Y2ggfCBpbmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIGYgICAgICAgICAgICAgICAgICAg IHwgZgorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIFRoZSAiZ29vZCIgY2Fz ZTogYmF0Y2hlcyByZXF1aXJlZCwgYnV0IHdlIHBsYW4gdGhlIHJpZ2h0IG51bWJlcjsgd2UKKy0t IHBsYW4gZm9yIHNvbWUgbnVtYmVyIG9mIGJhdGNoZXMsIGFuZCB3ZSBzdGljayB0byB0aGF0IG51 bWJlciwgYW5kCistLSBwZWFrIG1lbW9yeSB1c2FnZSBzYXlzIHdpdGhpbiBvdXIgd29ya19tZW0g YnVkZ2V0CistLSBub24tcGFyYWxsZWwKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBt YXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKK3NldCBsb2NhbCB3b3JrX21lbSA9 ICcxMjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxhaW4g KGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUg cyB1c2luZyAoaWQpOworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAg LT4gIEhhc2ggSm9pbgorICAgICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHMKKyg2IHJvd3MpCisKK3NlbGVjdCBjb3VudCgq KSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0t LS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9t dWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20g aGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBq b2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CiskJCk7CisgaW5pdGlhbGx5X211bHRpYmF0Y2ggfCBp bmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLQorIHQgICAgICAgICAgICAgICAgICAgIHwgZgorKDEgcm93KQorCityb2xsYmFjayB0byBz ZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtb2JsaXZpb3VzIGhhc2ggam9pbgor c2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9n YXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzEyOGtCJzsKK3NldCBsb2NhbCBoYXNo X21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0IGxvY2FsIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0g b2ZmOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUg ciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgQWdncmVnYXRlCisgICAtPiAg R2F0aGVyCisgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBQYXJ0aWFs IEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAg ICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAgICAgICAgICAgICAgICAtPiAg UGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBI YXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHMK Kyg5IHJvd3MpCisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMg dXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxlY3Qg b3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFsIGFz IGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxl Y3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CiskJCk7 CisgaW5pdGlhbGx5X211bHRpYmF0Y2ggfCBpbmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICAgICAgICAgICAgIHwg ZgorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFy YWxsZWwtYXdhcmUgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4 X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitzZXQgbG9jYWwgd29ya19tZW0gPSAn MTkya0InOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9jYWwg ZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0 IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQorICAgLT4gIEdhdGhlcgorICAgICAgICAgV29ya2Vy cyBQbGFubmVkOiAyCisgICAgICAgICAtPiAgUGFydGlhbCBBZ2dyZWdhdGUKKyAgICAgICAgICAg ICAgIC0+ICBQYXJhbGxlbCBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29u ZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBT Y2FuIG9uIHNpbXBsZSByCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHNpbXBs ZSBzCisoOSByb3dzKQorCitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBs ZSBzIHVzaW5nIChpZCk7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykKKworc2Vs ZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5h bCBhcyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAg c2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOwor JCQpOworIGluaXRpYWxseV9tdWx0aWJhdGNoIHwgaW5jcmVhc2VkX2JhdGNoZXMgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgICAgICAgICAg ICB8IGYKKygxIHJvdykKKworLS0gcGFyYWxsZWwgZnVsbCBtdWx0aS1iYXRjaCBoYXNoIGpvaW4K K3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1 c2luZyAoaWQpOworIGNvdW50IAorLS0tLS0tLQorIDIwMDAwCisoMSByb3cpCisKK3JvbGxiYWNr IHRvIHNldHRpbmdzOworLS0gVGhlICJiYWQiIGNhc2U6IGR1cmluZyBleGVjdXRpb24gd2UgbmVl ZCB0byBpbmNyZWFzZSBudW1iZXIgb2YKKy0tIGJhdGNoZXM7IGluIHRoaXMgY2FzZSB3ZSBwbGFu IGZvciAxIGJhdGNoLCBhbmQgaW5jcmVhc2UgYXQgbGVhc3QgYQorLS0gY291cGxlIG9mIHRpbWVz LCBhbmQgcGVhayBtZW1vcnkgdXNhZ2Ugc3RheXMgd2l0aGluIG91ciB3b3JrX21lbQorLS0gYnVk Z2V0CistLSBub24tcGFyYWxsZWwKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhf cGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKK3NldCBsb2NhbCB3b3JrX21lbSA9ICcx MjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxhaW4gKGNv c3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIEZST00gc2ltcGxlIHIgSk9JTiBiaWdnZXJfdGhh bl9pdF9sb29rcyBzIFVTSU5HIChpZCk7CisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEhhc2ggSm9pbgorICAg ICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24g c2ltcGxlIHIKKyAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gYmlnZ2VyX3RoYW5faXRfbG9va3MgcworKDYgcm93cykKKworc2VsZWN0IGNvdW50KCopIEZS T00gc2ltcGxlIHIgSk9JTiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIFVTSU5HIChpZCk7CisgY291 bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykKKworc2VsZWN0IG9yaWdpbmFsID4gMSBhcyBp bml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hl cworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIEZST00g c2ltcGxlIHIgSk9JTiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIFVTSU5HIChpZCk7CiskJCk7Cisg aW5pdGlhbGx5X211bHRpYmF0Y2ggfCBpbmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIGYgICAgICAgICAgICAgICAgICAgIHwgdAor KDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxs ZWwtb2JsaXZpb3VzIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1h eF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0g JzEyOGtCJzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0IGxvY2Fs IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxl Y3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMgdXNp bmcgKGlkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgQWdncmVnYXRlCisgICAt PiAgR2F0aGVyCisgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBQYXJ0 aWFsIEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAg ICAgICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAgICAgICAgICAgICAgICAt PiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gYmlnZ2Vy X3RoYW5faXRfbG9va3MgcworKDkgcm93cykKKworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxl IHIgam9pbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7CisgY291bnQgCistLS0t LS0tCisgMjAwMDAKKygxIHJvdykKKworc2VsZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlf bXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9t IGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIg am9pbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7CiskJCk7CisgaW5pdGlhbGx5 X211bHRpYmF0Y2ggfCBpbmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLQorIGYgICAgICAgICAgICAgICAgICAgIHwgdAorKDEgcm93KQor Cityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtYXdhcmUg aGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dv cmtlcnNfcGVyX2dhdGhlciA9IDE7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnMTkya0InOworc2V0 IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9jYWwgZW5hYmxlX3BhcmFs bGVsX2hhc2ggPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZy b20gc2ltcGxlIHIgam9pbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQor ICAgLT4gIEdhdGhlcgorICAgICAgICAgV29ya2VycyBQbGFubmVkOiAxCisgICAgICAgICAtPiAg UGFydGlhbCBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoIEpvaW4K KyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAg ICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHNpbXBsZSByCisgICAgICAgICAg ICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMKKyg5IHJvd3Mp CisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gYmlnZ2VyX3RoYW5faXRfbG9v a3MgcyB1c2luZyAoaWQpOworIGNvdW50IAorLS0tLS0tLQorIDIwMDAwCisoMSByb3cpCisKK3Nl bGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0Y2gsIGZpbmFsID4gb3JpZ2lu YWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisg IHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gYmlnZ2VyX3RoYW5faXRfbG9va3Mg cyB1c2luZyAoaWQpOworJCQpOworIGluaXRpYWxseV9tdWx0aWJhdGNoIHwgaW5jcmVhc2VkX2Jh dGNoZXMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmICAg ICAgICAgICAgICAgICAgICB8IHQKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7Cist LSBUaGUgInVnbHkiIGNhc2U6IGluY3JlYXNpbmcgdGhlIG51bWJlciBvZiBiYXRjaGVzIGR1cmlu ZyBleGVjdXRpb24KKy0tIGRvZXNuJ3QgaGVscCwgc28gc3RvcCB0cnlpbmcgdG8gZml0IGluIHdv cmtfbWVtIGFuZCBob3BlIGZvciB0aGUKKy0tIGJlc3Q7IGluIHRoaXMgY2FzZSB3ZSBwbGFuIGZv ciAxIGJhdGNoLCBpbmNyZWFzZXMganVzdCBvbmNlIGFuZAorLS0gdGhlbiBzdG9wIGluY3JlYXNp bmcgYmVjYXVzZSB0aGF0IGRpZG4ndCBoZWxwIGF0IGFsbCwgc28gd2UgYmxvdworLS0gcmlnaHQg dGhyb3VnaCB0aGUgd29ya19tZW0gYnVkZ2V0IGFuZCBob3BlIGZvciB0aGUgYmVzdC4uLgorLS0g bm9uLXBhcmFsbGVsCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVs X3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnMTI4a0InOwor c2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0cyBvZmYp CisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5X3NrZXdlZCBz IHVzaW5nIChpZCk7CisgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgIEhhc2ggQ29uZDogKHIu aWQgPSBzLmlkKQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHNpbXBsZSByCisgICAgICAgICAt PiAgSGFzaAorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGV4dHJlbWVseV9za2V3ZWQg cworKDYgcm93cykKKworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1l bHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93 KQorCitzZWxlY3QgKiBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50 KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKKyQk KTsKKyBvcmlnaW5hbCB8IGZpbmFsIAorLS0tLS0tLS0tLSstLS0tLS0tCisgICAgICAgIDEgfCAg ICAgMgorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGgg cGFyYWxsZWwtb2JsaXZpb3VzIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxv Y2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtf bWVtID0gJzEyOGtCJzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0 IGxvY2FsIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworZXhwbGFpbiAoY29zdHMgb2ZmKQor ICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4dHJlbWVseV9za2V3ZWQgcyB1 c2luZyAoaWQpOworICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgR2F0aGVyCisgICAgICAgICBXb3JrZXJz IFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgIEhhc2gg Q29uZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2Fu IG9uIHNpbXBsZSByCisgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIGV4dHJlbWVseV9za2V3ZWQgcworKDggcm93cykKKworc2VsZWN0 IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlk KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxlY3QgKiBmcm9tIGhh c2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9p biBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKKyQkKTsKKyBvcmlnaW5hbCB8IGZpbmFs IAorLS0tLS0tLS0tLSstLS0tLS0tCisgICAgICAgIDEgfCAgICAgMgorKDEgcm93KQorCityb2xs YmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtYXdhcmUgaGFzaCBq b2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNf cGVyX2dhdGhlciA9IDE7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnMTI4a0InOworc2V0IGxvY2Fs IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9jYWwgZW5hYmxlX3BhcmFsbGVsX2hh c2ggPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2lt cGxlIHIgam9pbiBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEdhdGhlcgorICAgICAgICAgV29ya2VycyBQbGFubmVk OiAxCisgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaCBKb2luCisgICAgICAgICAgICAgICBIYXNo IENvbmQ6IChyLmlkID0gcy5pZCkKKyAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2Nh biBvbiBzaW1wbGUgcgorICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2gKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBleHRyZW1lbHlfc2tld2VkIHMK Kyg4IHJvd3MpCisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5 X3NrZXdlZCBzIHVzaW5nIChpZCk7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykK Kworc2VsZWN0ICogZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgq KSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7CiskJCk7 Cisgb3JpZ2luYWwgfCBmaW5hbCAKKy0tLS0tLS0tLS0rLS0tLS0tLQorICAgICAgICAxIHwgICAg IDQKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CistLSBBIGNvdXBsZSBvZiBvdGhl ciBoYXNoIGpvaW4gdGVzdHMgdW5yZWxhdGVkIHRvIHdvcmtfbWVtIG1hbmFnZW1lbnQuCistLSBD aGVjayB0aGF0IEVYUExBSU4gQU5BTFlaRSBoYXMgZGF0YSBldmVuIGlmIHRoZSBsZWFkZXIgZG9l c24ndCBwYXJ0aWNpcGF0ZQorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJh bGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzRNQic7 CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2NhbCBwYXJhbGxl bF9sZWFkZXJfcGFydGljaXBhdGlvbiA9IG9mZjsKK3NlbGVjdCAqIGZyb20gaGFzaF9qb2luX2Jh dGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBz IHVzaW5nIChpZCk7CiskJCk7Cisgb3JpZ2luYWwgfCBmaW5hbCAKKy0tLS0tLS0tLS0rLS0tLS0t LQorICAgICAgICAxIHwgICAgIDEKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7Cist LSBFeGVyY2lzZSByZXNjYW5zLiAgV2UnbGwgdHVybiBvZmYgcGFyYWxsZWxfbGVhZGVyX3BhcnRp Y2lwYXRpb24gc28KKy0tIHRoYXQgd2UgY2FuIGNoZWNrIHRoYXQgaW5zdHJ1bWVudGF0aW9uIGNv bWVzIGJhY2sgY29ycmVjdGx5LgorY3JlYXRlIHRhYmxlIGpvaW5fZm9vIGFzIHNlbGVjdCBnZW5l cmF0ZV9zZXJpZXMoMSwgMykgYXMgaWQsICd4eHh4eCc6OnRleHQgYXMgdDsKK2FsdGVyIHRhYmxl IGpvaW5fZm9vIHNldCAocGFyYWxsZWxfd29ya2VycyA9IDApOworY3JlYXRlIHRhYmxlIGpvaW5f YmFyIGFzIHNlbGVjdCBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMDApIGFzIGlkLCAneHh4eHgnOjp0 ZXh0IGFzIHQ7CithbHRlciB0YWJsZSBqb2luX2JhciBzZXQgKHBhcmFsbGVsX3dvcmtlcnMgPSAy KTsKK2FuYWx5emUgam9pbl9mb28sIGpvaW5fYmFyOworLS0gbXVsdGktYmF0Y2ggd2l0aCByZXNj YW4sIHBhcmFsbGVsLW9ibGl2aW91cworc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGVuYWJsZV9w YXJhbGxlbF9oYXNoID0gb2ZmOworc2V0IHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uID0g b2ZmOworc2V0IG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOworc2V0IHBhcmFsbGVs X3NldHVwX2Nvc3QgPSAwOworc2V0IHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworc2V0IG1heF9w YXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGVuYWJsZV9tYXRlcmlhbCA9IG9m ZjsKK3NldCBlbmFibGVfbWVyZ2Vqb2luID0gb2ZmOworc2V0IHdvcmtfbWVtID0gJzY0a0InOwor c2V0IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNl bGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgICAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQs IGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisg ICAgb24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAx OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBOZXN0ZWQgTG9vcCBMZWZ0IEpvaW4KKyAgICAgICAgIEpv aW4gRmlsdGVyOiAoKGpvaW5fZm9vLmlkIDwgKGIxLmlkICsgMSkpIEFORCAoam9pbl9mb28uaWQg PiAoYjEuaWQgLSAxKSkpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gam9pbl9mb28KKyAgICAg ICAgIC0+ICBHYXRoZXIKKyAgICAgICAgICAgICAgIFdvcmtlcnMgUGxhbm5lZDogMgorICAgICAg ICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAo YjEuaWQgPSBiMi5pZCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2Nh biBvbiBqb2luX2JhciBiMQorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBqb2luX2JhciBiMgorKDExIHJvd3Mp CisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgIGxlZnQgam9pbiAoc2VsZWN0IGIx LmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBz cworICBvbiBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAt IDE7CisgY291bnQgCistLS0tLS0tCisgICAgIDMKKygxIHJvdykKKworc2VsZWN0IGZpbmFsID4g MSBhcyBtdWx0aWJhdGNoCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3Qg Y291bnQoKikgZnJvbSBqb2luX2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50 IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9u IGpvaW5fZm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyQk KTsKKyBtdWx0aWJhdGNoIAorLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCityb2xsYmFjayB0 byBzZXR0aW5nczsKKy0tIHNpbmdsZS1iYXRjaCB3aXRoIHJlc2NhbiwgcGFyYWxsZWwtb2JsaXZp b3VzCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7 CitzZXQgcGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRpb24gPSBvZmY7CitzZXQgbWluX3BhcmFs bGVsX3RhYmxlX3NjYW5fc2l6ZSA9IDA7CitzZXQgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7Citz ZXQgcGFyYWxsZWxfdHVwbGVfY29zdCA9IDA7CitzZXQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVy X2dhdGhlciA9IDI7CitzZXQgZW5hYmxlX21hdGVyaWFsID0gb2ZmOworc2V0IGVuYWJsZV9tZXJn ZWpvaW4gPSBvZmY7CitzZXQgd29ya19tZW0gPSAnNE1CJzsKK3NldCBoYXNoX21lbV9tdWx0aXBs aWVyID0gMS4wOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBq b2luX2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIg YjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9uIGpvaW5fZm9vLmlkIDwg c3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAt PiAgTmVzdGVkIExvb3AgTGVmdCBKb2luCisgICAgICAgICBKb2luIEZpbHRlcjogKChqb2luX2Zv by5pZCA8IChiMS5pZCArIDEpKSBBTkQgKGpvaW5fZm9vLmlkID4gKGIxLmlkIC0gMSkpKQorICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIGpvaW5fZm9vCisgICAgICAgICAtPiAgR2F0aGVyCisgICAg ICAgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IDIKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpv aW4KKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKGIxLmlkID0gYjIuaWQpCisgICAg ICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gam9pbl9iYXIgYjEKKyAg ICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gam9pbl9iYXIgYjIKKygxMSByb3dzKQorCitzZWxlY3QgY291bnQoKikg ZnJvbSBqb2luX2ZvbworICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5f YmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgb24gam9pbl9mb28uaWQg PCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworIGNvdW50IAorLS0tLS0t LQorICAgICAzCisoMSByb3cpCisKK3NlbGVjdCBmaW5hbCA+IDEgYXMgbXVsdGliYXRjaAorICBm cm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9m b28KKyAgICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIxIGpv aW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgICBvbiBqb2luX2Zvby5pZCA8IHNzLmlk ICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CiskJCk7CisgbXVsdGliYXRjaCAKKy0t LS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CistLSBtdWx0 aS1iYXRjaCB3aXRoIHJlc2NhbiwgcGFyYWxsZWwtYXdhcmUKK3NhdmVwb2ludCBzZXR0aW5nczsK K3NldCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9uOworc2V0IHBhcmFsbGVsX2xlYWRlcl9wYXJ0 aWNpcGF0aW9uID0gb2ZmOworc2V0IG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOwor c2V0IHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworc2V0IHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAw Oworc2V0IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGVuYWJsZV9t YXRlcmlhbCA9IG9mZjsKK3NldCBlbmFibGVfbWVyZ2Vqb2luID0gb2ZmOworc2V0IHdvcmtfbWVt ID0gJzY0a0InOworc2V0IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0 cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgICAgbGVmdCBqb2luIChz ZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5n IChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlk ID4gc3MuaWQgLSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBOZXN0ZWQgTG9vcCBMZWZ0IEpvaW4K KyAgICAgICAgIEpvaW4gRmlsdGVyOiAoKGpvaW5fZm9vLmlkIDwgKGIxLmlkICsgMSkpIEFORCAo am9pbl9mb28uaWQgPiAoYjEuaWQgLSAxKSkpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gam9p bl9mb28KKyAgICAgICAgIC0+ICBHYXRoZXIKKyAgICAgICAgICAgICAgIFdvcmtlcnMgUGxhbm5l ZDogMgorICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2ggSm9pbgorICAgICAgICAgICAg ICAgICAgICAgSGFzaCBDb25kOiAoYjEuaWQgPSBiMi5pZCkKKyAgICAgICAgICAgICAgICAgICAg IC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBqb2luX2JhciBiMQorICAgICAgICAgICAgICAgICAg ICAgLT4gIFBhcmFsbGVsIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJh bGxlbCBTZXEgU2NhbiBvbiBqb2luX2JhciBiMgorKDExIHJvd3MpCisKK3NlbGVjdCBjb3VudCgq KSBmcm9tIGpvaW5fZm9vCisgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9p bl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICBvbiBqb2luX2Zvby5p ZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CisgY291bnQgCistLS0t LS0tCisgICAgIDMKKygxIHJvdykKKworc2VsZWN0IGZpbmFsID4gMSBhcyBtdWx0aWJhdGNoCisg IGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBqb2lu X2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEg am9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9uIGpvaW5fZm9vLmlkIDwgc3Mu aWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyQkKTsKKyBtdWx0aWJhdGNoIAor LS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHNp bmdsZS1iYXRjaCB3aXRoIHJlc2NhbiwgcGFyYWxsZWwtYXdhcmUKK3NhdmVwb2ludCBzZXR0aW5n czsKK3NldCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9uOworc2V0IHBhcmFsbGVsX2xlYWRlcl9w YXJ0aWNpcGF0aW9uID0gb2ZmOworc2V0IG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAw Oworc2V0IHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworc2V0IHBhcmFsbGVsX3R1cGxlX2Nvc3Qg PSAwOworc2V0IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGVuYWJs ZV9tYXRlcmlhbCA9IG9mZjsKK3NldCBlbmFibGVfbWVyZ2Vqb2luID0gb2ZmOworc2V0IHdvcmtf bWVtID0gJzRNQic7CitzZXQgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxhaW4gKGNv c3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9mb28KKyAgICBsZWZ0IGpvaW4g KHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNp bmcgKGlkKSkgc3MKKyAgICBvbiBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28u aWQgPiBzcy5pZCAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIE5lc3RlZCBMb29wIExlZnQgSm9p bgorICAgICAgICAgSm9pbiBGaWx0ZXI6ICgoam9pbl9mb28uaWQgPCAoYjEuaWQgKyAxKSkgQU5E IChqb2luX2Zvby5pZCA+IChiMS5pZCAtIDEpKSkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBq b2luX2ZvbworICAgICAgICAgLT4gIEdhdGhlcgorICAgICAgICAgICAgICAgV29ya2VycyBQbGFu bmVkOiAyCisgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaCBKb2luCisgICAgICAgICAg ICAgICAgICAgICBIYXNoIENvbmQ6IChiMS5pZCA9IGIyLmlkKQorICAgICAgICAgICAgICAgICAg ICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIGpvaW5fYmFyIGIxCisgICAgICAgICAgICAgICAg ICAgICAtPiAgUGFyYWxsZWwgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBh cmFsbGVsIFNlcSBTY2FuIG9uIGpvaW5fYmFyIGIyCisoMTEgcm93cykKKworc2VsZWN0IGNvdW50 KCopIGZyb20gam9pbl9mb28KKyAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBq b2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgIG9uIGpvaW5fZm9v LmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyBjb3VudCAKKy0t LS0tLS0KKyAgICAgMworKDEgcm93KQorCitzZWxlY3QgZmluYWwgPiAxIGFzIG11bHRpYmF0Y2gK KyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpv aW5fZm9vCisgICAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBi MSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBz cy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworJCQpOworIG11bHRpYmF0Y2gg CistLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0g QSBmdWxsIG91dGVyIGpvaW4gd2hlcmUgZXZlcnkgcmVjb3JkIGlzIG1hdGNoZWQuCistLSBub24t cGFyYWxsZWwKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29y a2Vyc19wZXJfZ2F0aGVyID0gMDsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgICAgc2VsZWN0ICBj b3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQp OworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEhhc2ggRnVs bCBKb2luCisgICAgICAgICBIYXNoIENvbmQ6IChyLmlkID0gcy5pZCkKKyAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBzaW1wbGUgcgorICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBzaW1wbGUgcworKDYgcm93cykKKworc2VsZWN0ICBjb3VudCgqKSBmcm9t IHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworIGNvdW50IAor LS0tLS0tLQorIDIwMDAwCisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0gcGFy YWxsZWxpc20gbm90IHBvc3NpYmxlIHdpdGggcGFyYWxsZWwtb2JsaXZpb3VzIGZ1bGwgaGFzaCBq b2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7 CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitleHBsYWlu IChjb3N0cyBvZmYpCisgICAgIHNlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91 dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKKyAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBBZ2dyZWdhdGUKKyAgIC0+ICBIYXNoIEZ1bGwgSm9pbgorICAgICAgICAgSGFzaCBDb25kOiAo ci5pZCA9IHMuaWQpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAg IC0+ICBIYXNoCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHMKKyg2IHJv d3MpCisKK3NlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2lt cGxlIHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCity b2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsaXNtIGlzIHBvc3NpYmxlIHdpdGggcGFy YWxsZWwtYXdhcmUgZnVsbCBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2Nh bCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK2V4cGxhaW4gKGNvc3RzIG9m ZikKKyAgICAgc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBz aW1wbGUgcyB1c2luZyAoaWQpOworICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQorICAg LT4gIEdhdGhlcgorICAgICAgICAgV29ya2VycyBQbGFubmVkOiAyCisgICAgICAgICAtPiAgUGFy dGlhbCBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoIEZ1bGwgSm9p bgorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAg ICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxlIHMKKyg5IHJvd3MpCisKK3NlbGVjdCAg Y291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlk KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0 aW5nczsKKy0tIEEgZnVsbCBvdXRlciBqb2luIHdoZXJlIGV2ZXJ5IHJlY29yZCBpcyBub3QgbWF0 Y2hlZC4KKy0tIG5vbi1wYXJhbGxlbAorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1h eF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworZXhwbGFpbiAoY29zdHMgb2ZmKQor ICAgICBzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBs ZSBzIG9uIChyLmlkID0gMCAtIHMuaWQpOworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFn Z3JlZ2F0ZQorICAgLT4gIEhhc2ggRnVsbCBKb2luCisgICAgICAgICBIYXNoIENvbmQ6ICgoMCAt IHMuaWQpID0gci5pZCkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzaW1wbGUgcworICAgICAg ICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzaW1wbGUgcgorKDYg cm93cykKKworc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBz aW1wbGUgcyBvbiAoci5pZCA9IDAgLSBzLmlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyA0MDAwMAor KDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsaXNtIG5vdCBwb3Nz aWJsZSB3aXRoIHBhcmFsbGVsLW9ibGl2aW91cyBmdWxsIGhhc2ggam9pbgorc2F2ZXBvaW50IHNl dHRpbmdzOworc2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworc2V0IGxvY2FsIG1heF9w YXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICAg ICBzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBz IG9uIChyLmlkID0gMCAtIHMuaWQpOworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3Jl Z2F0ZQorICAgLT4gIEhhc2ggRnVsbCBKb2luCisgICAgICAgICBIYXNoIENvbmQ6ICgoMCAtIHMu aWQpID0gci5pZCkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzaW1wbGUgcworICAgICAgICAg LT4gIEhhc2gKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzaW1wbGUgcgorKDYgcm93 cykKKworc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1w bGUgcyBvbiAoci5pZCA9IDAgLSBzLmlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyA0MDAwMAorKDEg cm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsaXNtIGlzIHBvc3NpYmxl IHdpdGggcGFyYWxsZWwtYXdhcmUgZnVsbCBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsK K3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK2V4cGxhaW4g KGNvc3RzIG9mZikKKyAgICAgc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0 ZXIgam9pbiBzaW1wbGUgcyBvbiAoci5pZCA9IDAgLSBzLmlkKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5h bGl6ZSBBZ2dyZWdhdGUKKyAgIC0+ICBHYXRoZXIKKyAgICAgICAgIFdvcmtlcnMgUGxhbm5lZDog MgorICAgICAgICAgLT4gIFBhcnRpYWwgQWdncmVnYXRlCisgICAgICAgICAgICAgICAtPiAgUGFy YWxsZWwgSGFzaCBGdWxsIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKCgw IC0gcy5pZCkgPSByLmlkKQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBT Y2FuIG9uIHNpbXBsZSBzCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHNpbXBs ZSByCisoOSByb3dzKQorCitzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRl ciBqb2luIHNpbXBsZSBzIG9uIChyLmlkID0gMCAtIHMuaWQpOworIGNvdW50IAorLS0tLS0tLQor IDQwMDAwCisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0gZXhlcmNpc2Ugc3Bl Y2lhbCBjb2RlIHBhdGhzIGZvciBodWdlIHR1cGxlcyAobm90ZSB1c2Ugb2Ygbm9uLXN0cmljdAor LS0gZXhwcmVzc2lvbiBhbmQgbGVmdCBqb2luIHJlcXVpcmVkIHRvIGdldCB0aGUgZGV0b2FzdGVk IHR1cGxlIGludG8KKy0tIHRoZSBoYXNoIHRhYmxlKQorLS0gcGFyYWxsZWwgd2l0aCBwYXJhbGxl bC1hd2FyZSBoYXNoIGpvaW4gKGhpdHMgRXhlY1BhcmFsbGVsSGFzaExvYWRUdXBsZSBhbmQKKy0t IHN0c19wdXR0dXBsZSBvdmVyc2l6ZWQgdHVwbGUgY2FzZXMgYmVjYXVzZSBpdCdzIG11bHRpLWJh dGNoKQorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9n YXRoZXIgPSAyOworc2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb247CitzZXQgd29ya19tZW0g PSAnMTI4a0InOworc2V0IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0 cyBvZmYpCisgIHNlbGVjdCBsZW5ndGgobWF4KHMudCkpCisgIGZyb20gd2lkZSBsZWZ0IGpvaW4g KHNlbGVjdCBpZCwgY29hbGVzY2UodCwgJycpIHx8ICcnIGFzIHQgZnJvbSB3aWRlKSBzIHVzaW5n IChpZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgQWdncmVnYXRlCisgICAtPiAgR2F0 aGVyCisgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBQYXJ0aWFsIEFn Z3JlZ2F0ZQorICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2ggTGVmdCBKb2luCisgICAg ICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh3aWRlLmlkID0gd2lkZV8xLmlkKQorICAgICAg ICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHdpZGUKKyAgICAgICAgICAg ICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gd2lkZSB3aWRlXzEKKyg5IHJvd3MpCisKK3NlbGVjdCBs ZW5ndGgobWF4KHMudCkpCitmcm9tIHdpZGUgbGVmdCBqb2luIChzZWxlY3QgaWQsIGNvYWxlc2Nl KHQsICcnKSB8fCAnJyBhcyB0IGZyb20gd2lkZSkgcyB1c2luZyAoaWQpOworIGxlbmd0aCAKKy0t LS0tLS0tCisgMzIwMDAwCisoMSByb3cpCisKK3NlbGVjdCBmaW5hbCA+IDEgYXMgbXVsdGliYXRj aAorICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGxlbmd0aChtYXgocy50 KSkKKyAgZnJvbSB3aWRlIGxlZnQgam9pbiAoc2VsZWN0IGlkLCBjb2FsZXNjZSh0LCAnJykgfHwg JycgYXMgdCBmcm9tIHdpZGUpIHMgdXNpbmcgKGlkKTsKKyQkKTsKKyBtdWx0aWJhdGNoIAorLS0t LS0tLS0tLS0tCisgdAorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIEhhc2gg am9pbiByZXVzZXMgdGhlIEhPVCBzdGF0dXMgYml0IHRvIGluZGljYXRlIG1hdGNoIHN0YXR1cy4g VGhpcyBjYW4gb25seQorLS0gYmUgZ3VhcmFudGVlZCB0byBwcm9kdWNlIGNvcnJlY3QgcmVzdWx0 cyBpZiBhbGwgdGhlIGhhc2ggam9pbiB0dXBsZSBtYXRjaAorLS0gYml0cyBhcmUgcmVzZXQgYmVm b3JlIHJldXNlLiBUaGlzIGlzIGRvbmUgdXBvbiBsb2FkaW5nIHRoZW0gaW50byB0aGUKKy0tIGhh c2h0YWJsZS4KK1NBVkVQT0lOVCBzZXR0aW5nczsKK1NFVCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9 IG9uOworU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOworU0VUIHBhcmFsbGVs X3NldHVwX2Nvc3QgPSAwOworU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworQ1JFQVRFIFRB QkxFIGhqdGVzdF9tYXRjaGJpdHNfdDEoaWQgaW50KTsKK0NSRUFURSBUQUJMRSBoanRlc3RfbWF0 Y2hiaXRzX3QyKGlkIGludCk7CitJTlNFUlQgSU5UTyBoanRlc3RfbWF0Y2hiaXRzX3QxIFZBTFVF UyAoMSk7CitJTlNFUlQgSU5UTyBoanRlc3RfbWF0Y2hiaXRzX3QyIFZBTFVFUyAoMik7CistLSBV cGRhdGUgc2hvdWxkIGNyZWF0ZSBhIEhPVCB0dXBsZS4gSWYgdGhpcyBzdGF0dXMgYml0IGlzbid0 IGNsZWFyZWQsIHdlIHdvbid0CistLSBjb3JyZWN0bHkgZW1pdCB0aGUgTlVMTC1leHRlbmRlZCB1 bm1hdGNoaW5nIHR1cGxlIGluIGZ1bGwgaGFzaCBqb2luLgorVVBEQVRFIGhqdGVzdF9tYXRjaGJp dHNfdDIgc2V0IGlkID0gMjsKK1NFTEVDVCAqIEZST00gaGp0ZXN0X21hdGNoYml0c190MSB0MSBG VUxMIEpPSU4gaGp0ZXN0X21hdGNoYml0c190MiB0MiBPTiB0MS5pZCA9IHQyLmlkCisgIE9SREVS IEJZIHQxLmlkOworIGlkIHwgaWQgCistLS0tKy0tLS0KKyAgMSB8ICAgCisgICAgfCAgMgorKDIg cm93cykKKworLS0gVGVzdCBzZXJpYWwgZnVsbCBoYXNoIGpvaW4uCistLSBSZXNldHRpbmcgcGFy YWxsZWxfc2V0dXBfY29zdCBzaG91bGQgZm9yY2UgYSBzZXJpYWwgcGxhbi4KKy0tIEp1c3QgdG8g YmUgc2FmZSwgaG93ZXZlciwgc2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoIHRvIG9mZiwgYXMgcGFy YWxsZWwgZnVsbAorLS0gaGFzaCBqb2lucyBhcmUgb25seSBzdXBwb3J0ZWQgd2l0aCBzaGFyZWQg aGFzaHRhYmxlcy4KK1JFU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3Q7CitTRVQgZW5hYmxlX3BhcmFs bGVsX2hhc2ggPSBvZmY7CitTRUxFQ1QgKiBGUk9NIGhqdGVzdF9tYXRjaGJpdHNfdDEgdDEgRlVM TCBKT0lOIGhqdGVzdF9tYXRjaGJpdHNfdDIgdDIgT04gdDEuaWQgPSB0Mi5pZDsKKyBpZCB8IGlk IAorLS0tLSstLS0tCisgIDEgfCAgIAorICAgIHwgIDIKKygyIHJvd3MpCisKK1JPTExCQUNLIFRP IHNldHRpbmdzOworcm9sbGJhY2s7CistLSBWZXJpZnkgdGhhdCBoYXNoIGtleSBleHByZXNzaW9u cyByZWZlcmVuY2UgdGhlIGNvcnJlY3QKKy0tIG5vZGVzLiBIYXNoam9pbidzIGhhc2hrZXlzIG5l ZWQgdG8gcmVmZXJlbmNlIGl0cyBvdXRlciBwbGFuLCBIYXNoJ3MKKy0tIG5lZWQgdG8gcmVmZXJl bmNlIEhhc2gncyBvdXRlciBwbGFuICh3aGljaCBpcyBiZWxvdyBIYXNoSm9pbidzCistLSBpbm5l ciBwbGFuKS4gSXQncyBub3QgdHJpdmlhbCB0byB2ZXJpZnkgdGhhdCB0aGUgcmVmZXJlbmNlcyBh cmUKKy0tIGNvcnJlY3QgKHdlIGRvbid0IGRpc3BsYXkgdGhlIGhhc2hrZXlzIHRoZW1zZWx2ZXMp LCBidXQgaWYgdGhlCistLSBoYXNoa2V5cyBjb250YWluIHN1YnBsYW4gcmVmZXJlbmNlcywgdGhv c2Ugd2lsbCBiZSBkaXNwbGF5ZWQuIEZvcmNlCistLSBzdWJwbGFucyB0byBhcHBlYXIganVzdCBh Ym91dCBldmVyeXdoZXJlLgorLS0KKy0tIEJ1ZyByZXBvcnQ6CistLSBodHRwczovL3d3dy5wb3N0 Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL0NBUHBIZmR2R1ZlZ0ZfVEtLUmlCclNtYXRKTDJkUjl1d0ZD dVIlMkJ0ZVFfOHRFWFU4bXhnJTQwbWFpbC5nbWFpbC5jb20KKy0tCitCRUdJTjsKK1NFVCBMT0NB TCBlbmFibGVfc29ydCA9IE9GRjsgLS0gYXZvaWQgbWVyZ2Vqb2lucworU0VUIExPQ0FMIGZyb21f Y29sbGFwc2VfbGltaXQgPSAxOyAtLSBhbGxvd3MgZWFzeSBjaGFuZ2luZyBvZiBqb2luIG9yZGVy CitDUkVBVEUgVEFCTEUgaGp0ZXN0XzEgKGEgdGV4dCwgYiBpbnQsIGlkIGludCwgYyBib29sKTsK K0NSRUFURSBUQUJMRSBoanRlc3RfMiAoYSBib29sLCBpZCBpbnQsIGIgdGV4dCwgYyBpbnQpOwor SU5TRVJUIElOVE8gaGp0ZXN0XzEoYSwgYiwgaWQsIGMpIFZBTFVFUyAoJ3RleHQnLCAyLCAxLCBm YWxzZSk7IC0tIG1hdGNoZXMKK0lOU0VSVCBJTlRPIGhqdGVzdF8xKGEsIGIsIGlkLCBjKSBWQUxV RVMgKCd0ZXh0JywgMSwgMiwgZmFsc2UpOyAtLSBmYWlscyBpZCBqb2luIGNvbmRpdGlvbgorSU5T RVJUIElOVE8gaGp0ZXN0XzEoYSwgYiwgaWQsIGMpIFZBTFVFUyAoJ3RleHQnLCAyMCwgMSwgZmFs c2UpOyAtLSBmYWlscyA8IDUwCitJTlNFUlQgSU5UTyBoanRlc3RfMShhLCBiLCBpZCwgYykgVkFM VUVTICgndGV4dCcsIDEsIDEsIGZhbHNlKTsgLS0gZmFpbHMgKFNFTEVDVCBoanRlc3RfMS5iICog NSkgPSAoU0VMRUNUIGhqdGVzdF8yLmMqNSkKK0lOU0VSVCBJTlRPIGhqdGVzdF8yKGEsIGlkLCBi LCBjKSBWQUxVRVMgKHRydWUsIDEsICdhbm90aGVyJywgMik7IC0tIG1hdGNoZXMKK0lOU0VSVCBJ TlRPIGhqdGVzdF8yKGEsIGlkLCBiLCBjKSBWQUxVRVMgKHRydWUsIDMsICdhbm90aGVyJywgNyk7 IC0tIGZhaWxzIGlkIGpvaW4gY29uZGl0aW9uCitJTlNFUlQgSU5UTyBoanRlc3RfMihhLCBpZCwg YiwgYykgVkFMVUVTICh0cnVlLCAxLCAnYW5vdGhlcicsIDkwKTsgIC0tIGZhaWxzIDwgNTUKK0lO U0VSVCBJTlRPIGhqdGVzdF8yKGEsIGlkLCBiLCBjKSBWQUxVRVMgKHRydWUsIDEsICdhbm90aGVy JywgMyk7IC0tIGZhaWxzIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpID0gKFNFTEVDVCBoanRlc3Rf Mi5jKjUpCitJTlNFUlQgSU5UTyBoanRlc3RfMihhLCBpZCwgYiwgYykgVkFMVUVTICh0cnVlLCAx LCAndGV4dCcsIDEpOyAtLSAgZmFpbHMgaGp0ZXN0XzEuYSA8PiBoanRlc3RfMi5iOworRVhQTEFJ TiAoQ09TVFMgT0ZGLCBWRVJCT1NFKQorU0VMRUNUIGhqdGVzdF8xLmEgYTEsIGhqdGVzdF8yLmEg YTIsaGp0ZXN0XzEudGFibGVvaWQ6OnJlZ2NsYXNzIHQxLCBoanRlc3RfMi50YWJsZW9pZDo6cmVn Y2xhc3MgdDIKK0ZST00gaGp0ZXN0XzEsIGhqdGVzdF8yCitXSEVSRQorICAgIGhqdGVzdF8xLmlk ID0gKFNFTEVDVCAxIFdIRVJFIGhqdGVzdF8yLmlkID0gMSkKKyAgICBBTkQgKFNFTEVDVCBoanRl c3RfMS5iICogNSkgPSAoU0VMRUNUIGhqdGVzdF8yLmMqNSkKKyAgICBBTkQgKFNFTEVDVCBoanRl c3RfMS5iICogNSkgPCA1MAorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8yLmMgKiA1KSA8IDU1Cisg ICAgQU5EIGhqdGVzdF8xLmEgPD4gaGp0ZXN0XzIuYjsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgSGFzaCBKb2luCisgICBPdXRwdXQ6IGhqdGVzdF8xLmEsIGhqdGVzdF8yLmEsIChoanRlc3Rf MS50YWJsZW9pZCk6OnJlZ2NsYXNzLCAoaGp0ZXN0XzIudGFibGVvaWQpOjpyZWdjbGFzcworICAg SGFzaCBDb25kOiAoKGhqdGVzdF8xLmlkID0gKFN1YlBsYW4gZXhwcl8xKSkgQU5EICgoU3ViUGxh biBleHByXzIpID0gKFN1YlBsYW4gZXhwcl8zKSkpCisgICBKb2luIEZpbHRlcjogKGhqdGVzdF8x LmEgPD4gaGp0ZXN0XzIuYikKKyAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuaGp0ZXN0XzEKKyAg ICAgICAgIE91dHB1dDogaGp0ZXN0XzEuYSwgaGp0ZXN0XzEudGFibGVvaWQsIGhqdGVzdF8xLmlk LCBoanRlc3RfMS5iCisgICAgICAgICBGaWx0ZXI6ICgoU3ViUGxhbiBleHByXzQpIDwgNTApCisg ICAgICAgICBTdWJQbGFuIGV4cHJfNAorICAgICAgICAgICAtPiAgUmVzdWx0CisgICAgICAgICAg ICAgICAgIE91dHB1dDogKGhqdGVzdF8xLmIgKiA1KQorICAgLT4gIEhhc2gKKyAgICAgICAgIE91 dHB1dDogaGp0ZXN0XzIuYSwgaGp0ZXN0XzIudGFibGVvaWQsIGhqdGVzdF8yLmlkLCBoanRlc3Rf Mi5jLCBoanRlc3RfMi5iCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmhqdGVzdF8y CisgICAgICAgICAgICAgICBPdXRwdXQ6IGhqdGVzdF8yLmEsIGhqdGVzdF8yLnRhYmxlb2lkLCBo anRlc3RfMi5pZCwgaGp0ZXN0XzIuYywgaGp0ZXN0XzIuYgorICAgICAgICAgICAgICAgRmlsdGVy OiAoKFN1YlBsYW4gZXhwcl81KSA8IDU1KQorICAgICAgICAgICAgICAgU3ViUGxhbiBleHByXzUK KyAgICAgICAgICAgICAgICAgLT4gIFJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IChoanRlc3RfMi5jICogNSkKKyAgICAgICAgIFN1YlBsYW4gZXhwcl8xCisgICAgICAgICAg IC0+ICBSZXN1bHQKKyAgICAgICAgICAgICAgICAgT3V0cHV0OiAxCisgICAgICAgICAgICAgICAg IE9uZS1UaW1lIEZpbHRlcjogKGhqdGVzdF8yLmlkID0gMSkKKyAgICAgICAgIFN1YlBsYW4gZXhw cl8zCisgICAgICAgICAgIC0+ICBSZXN1bHQKKyAgICAgICAgICAgICAgICAgT3V0cHV0OiAoaGp0 ZXN0XzIuYyAqIDUpCisgICBTdWJQbGFuIGV4cHJfMgorICAgICAtPiAgUmVzdWx0CisgICAgICAg ICAgIE91dHB1dDogKGhqdGVzdF8xLmIgKiA1KQorKDI4IHJvd3MpCisKK1NFTEVDVCBoanRlc3Rf MS5hIGExLCBoanRlc3RfMi5hIGEyLGhqdGVzdF8xLnRhYmxlb2lkOjpyZWdjbGFzcyB0MSwgaGp0 ZXN0XzIudGFibGVvaWQ6OnJlZ2NsYXNzIHQyCitGUk9NIGhqdGVzdF8xLCBoanRlc3RfMgorV0hF UkUKKyAgICBoanRlc3RfMS5pZCA9IChTRUxFQ1QgMSBXSEVSRSBoanRlc3RfMi5pZCA9IDEpCisg ICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpID0gKFNFTEVDVCBoanRlc3RfMi5jKjUpCisg ICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpIDwgNTAKKyAgICBBTkQgKFNFTEVDVCBoanRl c3RfMi5jICogNSkgPCA1NQorICAgIEFORCBoanRlc3RfMS5hIDw+IGhqdGVzdF8yLmI7CisgIGEx ICB8IGEyIHwgICAgdDEgICAgfCAgICB0MiAgICAKKy0tLS0tLSstLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tLQorIHRleHQgfCB0ICB8IGhqdGVzdF8xIHwgaGp0ZXN0XzIKKygxIHJvdykKKworRVhQ TEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKQorU0VMRUNUIGhqdGVzdF8xLmEgYTEsIGhqdGVzdF8y LmEgYTIsaGp0ZXN0XzEudGFibGVvaWQ6OnJlZ2NsYXNzIHQxLCBoanRlc3RfMi50YWJsZW9pZDo6 cmVnY2xhc3MgdDIKK0ZST00gaGp0ZXN0XzIsIGhqdGVzdF8xCitXSEVSRQorICAgIGhqdGVzdF8x LmlkID0gKFNFTEVDVCAxIFdIRVJFIGhqdGVzdF8yLmlkID0gMSkKKyAgICBBTkQgKFNFTEVDVCBo anRlc3RfMS5iICogNSkgPSAoU0VMRUNUIGhqdGVzdF8yLmMqNSkKKyAgICBBTkQgKFNFTEVDVCBo anRlc3RfMS5iICogNSkgPCA1MAorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8yLmMgKiA1KSA8IDU1 CisgICAgQU5EIGhqdGVzdF8xLmEgPD4gaGp0ZXN0XzIuYjsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgSGFzaCBKb2luCisgICBPdXRwdXQ6IGhqdGVzdF8xLmEsIGhqdGVzdF8yLmEsIChoanRl c3RfMS50YWJsZW9pZCk6OnJlZ2NsYXNzLCAoaGp0ZXN0XzIudGFibGVvaWQpOjpyZWdjbGFzcwor ICAgSGFzaCBDb25kOiAoKChTdWJQbGFuIGV4cHJfMSkgPSBoanRlc3RfMS5pZCkgQU5EICgoU3Vi UGxhbiBleHByXzMpID0gKFN1YlBsYW4gZXhwcl8yKSkpCisgICBKb2luIEZpbHRlcjogKGhqdGVz dF8xLmEgPD4gaGp0ZXN0XzIuYikKKyAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuaGp0ZXN0XzIK KyAgICAgICAgIE91dHB1dDogaGp0ZXN0XzIuYSwgaGp0ZXN0XzIudGFibGVvaWQsIGhqdGVzdF8y LmlkLCBoanRlc3RfMi5jLCBoanRlc3RfMi5iCisgICAgICAgICBGaWx0ZXI6ICgoU3ViUGxhbiBl eHByXzUpIDwgNTUpCisgICAgICAgICBTdWJQbGFuIGV4cHJfNQorICAgICAgICAgICAtPiAgUmVz dWx0CisgICAgICAgICAgICAgICAgIE91dHB1dDogKGhqdGVzdF8yLmMgKiA1KQorICAgLT4gIEhh c2gKKyAgICAgICAgIE91dHB1dDogaGp0ZXN0XzEuYSwgaGp0ZXN0XzEudGFibGVvaWQsIGhqdGVz dF8xLmlkLCBoanRlc3RfMS5iCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmhqdGVz dF8xCisgICAgICAgICAgICAgICBPdXRwdXQ6IGhqdGVzdF8xLmEsIGhqdGVzdF8xLnRhYmxlb2lk LCBoanRlc3RfMS5pZCwgaGp0ZXN0XzEuYgorICAgICAgICAgICAgICAgRmlsdGVyOiAoKFN1YlBs YW4gZXhwcl80KSA8IDUwKQorICAgICAgICAgICAgICAgU3ViUGxhbiBleHByXzQKKyAgICAgICAg ICAgICAgICAgLT4gIFJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IChoanRl c3RfMS5iICogNSkKKyAgICAgICAgIFN1YlBsYW4gZXhwcl8yCisgICAgICAgICAgIC0+ICBSZXN1 bHQKKyAgICAgICAgICAgICAgICAgT3V0cHV0OiAoaGp0ZXN0XzEuYiAqIDUpCisgICBTdWJQbGFu IGV4cHJfMQorICAgICAtPiAgUmVzdWx0CisgICAgICAgICAgIE91dHB1dDogMQorICAgICAgICAg ICBPbmUtVGltZSBGaWx0ZXI6IChoanRlc3RfMi5pZCA9IDEpCisgICBTdWJQbGFuIGV4cHJfMwor ICAgICAtPiAgUmVzdWx0CisgICAgICAgICAgIE91dHB1dDogKGhqdGVzdF8yLmMgKiA1KQorKDI4 IHJvd3MpCisKK1NFTEVDVCBoanRlc3RfMS5hIGExLCBoanRlc3RfMi5hIGEyLGhqdGVzdF8xLnRh Ymxlb2lkOjpyZWdjbGFzcyB0MSwgaGp0ZXN0XzIudGFibGVvaWQ6OnJlZ2NsYXNzIHQyCitGUk9N IGhqdGVzdF8yLCBoanRlc3RfMQorV0hFUkUKKyAgICBoanRlc3RfMS5pZCA9IChTRUxFQ1QgMSBX SEVSRSBoanRlc3RfMi5pZCA9IDEpCisgICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpID0g KFNFTEVDVCBoanRlc3RfMi5jKjUpCisgICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpIDwg NTAKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMi5jICogNSkgPCA1NQorICAgIEFORCBoanRlc3Rf MS5hIDw+IGhqdGVzdF8yLmI7CisgIGExICB8IGEyIHwgICAgdDEgICAgfCAgICB0MiAgICAKKy0t LS0tLSstLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHRleHQgfCB0ICB8IGhqdGVzdF8xIHwg aGp0ZXN0XzIKKygxIHJvdykKKworUk9MTEJBQ0s7CistLSBWZXJpZnkgdGhhdCB3ZSBiZWhhdmUg c2FuZWx5IHdoZW4gdGhlIGlubmVyIGhhc2gga2V5cyBjb250YWluIHBhcmFtZXRlcnMKKy0tICh0 aGF0IGlzLCBvdXRlciBvciBsYXRlcmFsIHJlZmVyZW5jZXMpLiAgVGhpcyBzaXR1YXRpb24gaGFz IHRvIGRlZmVhdAorLS0gcmUtdXNlIG9mIHRoZSBpbm5lciBoYXNoIHRhYmxlIGFjcm9zcyByZXNj YW5zLgorYmVnaW47CitzZXQgbG9jYWwgZW5hYmxlX2hhc2hqb2luID0gb247CitleHBsYWluIChj b3N0cyBvZmYpCitzZWxlY3QgaTgucTIsIHNzLiogZnJvbQoraW50OF90YmwgaTgsCitsYXRlcmFs IChzZWxlY3QgdDEuZml2ZXRob3VzLCBpNC5mMSBmcm9tIHRlbmsxIHQxIGpvaW4gaW50NF90Ymwg aTQKKyAgICAgICAgIG9uIHQxLmZpdmV0aG91cyA9IGk0LmYxK2k4LnEyIG9yZGVyIGJ5IDEsMikg c3M7CisgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBOZXN0ZWQgTG9vcAorICAgLT4gIFNlcSBTY2FuIG9uIGludDhfdGJsIGk4 CisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IHQxLmZpdmV0aG91cywgaTQuZjEKKyAg ICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLmZpdmV0 aG91cyA9IChpNC5mMSArIGk4LnEyKSkKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0 ZW5rMSB0MQorICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBpbnQ0X3RibCBpNAorKDkgcm93cykKKworc2VsZWN0IGk4LnEyLCBzcy4q IGZyb20KK2ludDhfdGJsIGk4LAorbGF0ZXJhbCAoc2VsZWN0IHQxLmZpdmV0aG91cywgaTQuZjEg ZnJvbSB0ZW5rMSB0MSBqb2luIGludDRfdGJsIGk0CisgICAgICAgICBvbiB0MS5maXZldGhvdXMg PSBpNC5mMStpOC5xMiBvcmRlciBieSAxLDIpIHNzOworIHEyICB8IGZpdmV0aG91cyB8IGYxIAor LS0tLS0rLS0tLS0tLS0tLS0rLS0tLQorIDQ1NiB8ICAgICAgIDQ1NiB8ICAwCisgNDU2IHwgICAg ICAgNDU2IHwgIDAKKyAxMjMgfCAgICAgICAxMjMgfCAgMAorIDEyMyB8ICAgICAgIDEyMyB8ICAw CisoNCByb3dzKQorCityb2xsYmFjazsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvam9pbl9oYXNoX3BnbHoub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2lu X2hhc2hfcGdsei5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmM2 YWU1ZTI1NWQyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9q b2luX2hhc2hfcGdsei5vdXQKQEAgLTAsMCArMSwxMTY3IEBACistLQorLS0gZXhlcmNpc2VzIGZv ciB0aGUgaGFzaCBqb2luIGNvZGUKKy0tCitiZWdpbjsKK3NldCBsb2NhbCBtaW5fcGFyYWxsZWxf dGFibGVfc2Nhbl9zaXplID0gMDsKK3NldCBsb2NhbCBwYXJhbGxlbF9zZXR1cF9jb3N0ID0gMDsK K3NldCBsb2NhbCBlbmFibGVfaGFzaGpvaW4gPSBvbjsKK3NldCBsb2NhbCB0ZW1wX2ZpbGVfY29t cHJlc3Npb24gPSAncGdseic7CistLSBFeHRyYWN0IGJ1Y2tldCBhbmQgYmF0Y2ggY291bnRzIGZy b20gYW4gZXhwbGFpbiBhbmFseXplIHBsYW4uICBJbgorLS0gZ2VuZXJhbCB3ZSBjYW4ndCBtYWtl IGFzc2VydGlvbnMgYWJvdXQgaG93IG1hbnkgYmF0Y2hlcyAob3IKKy0tIGJ1Y2tldHMpIHdpbGwg YmUgcmVxdWlyZWQgYmVjYXVzZSBpdCBjYW4gdmFyeSwgYnV0IHdlIGNhbiBpbiBzb21lCistLSBz cGVjaWFsIGNhc2VzIGFuZCB3ZSBjYW4gY2hlY2sgZm9yIGdyb3d0aC4KK2NyZWF0ZSBvciByZXBs YWNlIGZ1bmN0aW9uIGZpbmRfaGFzaChub2RlIGpzb24pCityZXR1cm5zIGpzb24gbGFuZ3VhZ2Ug cGxwZ3NxbAorYXMKKyQkCitkZWNsYXJlCisgIHgganNvbjsKKyAgY2hpbGQganNvbjsKK2JlZ2lu CisgIGlmIG5vZGUtPj4nTm9kZSBUeXBlJyA9ICdIYXNoJyB0aGVuCisgICAgcmV0dXJuIG5vZGU7 CisgIGVsc2UKKyAgICBmb3IgY2hpbGQgaW4gc2VsZWN0IGpzb25fYXJyYXlfZWxlbWVudHMobm9k ZS0+J1BsYW5zJykKKyAgICBsb29wCisgICAgICB4IDo9IGZpbmRfaGFzaChjaGlsZCk7CisgICAg ICBpZiB4IGlzIG5vdCBudWxsIHRoZW4KKyAgICAgICAgcmV0dXJuIHg7CisgICAgICBlbmQgaWY7 CisgICAgZW5kIGxvb3A7CisgICAgcmV0dXJuIG51bGw7CisgIGVuZCBpZjsKK2VuZDsKKyQkOwor Y3JlYXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gaGFzaF9qb2luX2JhdGNoZXMocXVlcnkgdGV4dCkK K3JldHVybnMgdGFibGUgKG9yaWdpbmFsIGludCwgZmluYWwgaW50KSBsYW5ndWFnZSBwbHBnc3Fs CithcworJCQKK2RlY2xhcmUKKyAgd2hvbGVfcGxhbiBqc29uOworICBoYXNoX25vZGUganNvbjsK K2JlZ2luCisgIGZvciB3aG9sZV9wbGFuIGluCisgICAgZXhlY3V0ZSAnZXhwbGFpbiAoYW5hbHl6 ZSwgZm9ybWF0ICcnanNvbicnKSAnIHx8IHF1ZXJ5CisgIGxvb3AKKyAgICBoYXNoX25vZGUgOj0g ZmluZF9oYXNoKGpzb25fZXh0cmFjdF9wYXRoKHdob2xlX3BsYW4sICcwJywgJ1BsYW4nKSk7Cisg ICAgb3JpZ2luYWwgOj0gaGFzaF9ub2RlLT4+J09yaWdpbmFsIEhhc2ggQmF0Y2hlcyc7CisgICAg ZmluYWwgOj0gaGFzaF9ub2RlLT4+J0hhc2ggQmF0Y2hlcyc7CisgICAgcmV0dXJuIG5leHQ7Cisg IGVuZCBsb29wOworZW5kOworJCQ7CistLSBNYWtlIGEgc2ltcGxlIHJlbGF0aW9uIHdpdGggd2Vs bCBkaXN0cmlidXRlZCBrZXlzIGFuZCBjb3JyZWN0bHkKKy0tIGVzdGltYXRlZCBzaXplLgorY3Jl YXRlIHRhYmxlIHNpbXBsZSBhcworICBzZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMDAwKSBB UyBpZCwgJ2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEnOworYWx0ZXIgdGFibGUg c2ltcGxlIHNldCAocGFyYWxsZWxfd29ya2VycyA9IDIpOworYW5hbHl6ZSBzaW1wbGU7CistLSBN YWtlIGEgcmVsYXRpb24gd2hvc2Ugc2l6ZSB3ZSB3aWxsIHVuZGVyLWVzdGltYXRlLiAgV2Ugd2Fu dCBzdGF0cworLS0gdG8gc2F5IDEwMDAgcm93cywgYnV0IGFjdHVhbGx5IHRoZXJlIGFyZSAyMCww MDAgcm93cy4KK2NyZWF0ZSB0YWJsZSBiaWdnZXJfdGhhbl9pdF9sb29rcyBhcworICBzZWxlY3Qg Z2VuZXJhdGVfc2VyaWVzKDEsIDIwMDAwKSBhcyBpZCwgJ2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWEnOworYWx0ZXIgdGFibGUgYmlnZ2VyX3RoYW5faXRfbG9va3Mgc2V0IChhdXRv dmFjdXVtX2VuYWJsZWQgPSAnZmFsc2UnKTsKK2FsdGVyIHRhYmxlIGJpZ2dlcl90aGFuX2l0X2xv b2tzIHNldCAocGFyYWxsZWxfd29ya2VycyA9IDIpOworYW5hbHl6ZSBiaWdnZXJfdGhhbl9pdF9s b29rczsKK3VwZGF0ZSBwZ19jbGFzcyBzZXQgcmVsdHVwbGVzID0gMTAwMCB3aGVyZSByZWxuYW1l ID0gJ2JpZ2dlcl90aGFuX2l0X2xvb2tzJzsKKy0tIE1ha2UgYSByZWxhdGlvbiB3aG9zZSBzaXpl IHdlIHVuZGVyZXN0aW1hdGUgYW5kIHRoYXQgYWxzbyBoYXMgYQorLS0ga2luZCBvZiBza2V3IHRo YXQgYnJlYWtzIG91ciBiYXRjaGluZyBzY2hlbWUuICBXZSB3YW50IHN0YXRzIHRvIHNheQorLS0g MiByb3dzLCBidXQgYWN0dWFsbHkgdGhlcmUgYXJlIDIwLDAwMCByb3dzIHdpdGggdGhlIHNhbWUg a2V5LgorY3JlYXRlIHRhYmxlIGV4dHJlbWVseV9za2V3ZWQgKGlkIGludCwgdCB0ZXh0KTsKK2Fs dGVyIHRhYmxlIGV4dHJlbWVseV9za2V3ZWQgc2V0IChhdXRvdmFjdXVtX2VuYWJsZWQgPSAnZmFs c2UnKTsKK2FsdGVyIHRhYmxlIGV4dHJlbWVseV9za2V3ZWQgc2V0IChwYXJhbGxlbF93b3JrZXJz ID0gMik7CithbmFseXplIGV4dHJlbWVseV9za2V3ZWQ7CitpbnNlcnQgaW50byBleHRyZW1lbHlf c2tld2VkCisgIHNlbGVjdCA0MiBhcyBpZCwgJ2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWEnCisgIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMDAwKTsKK3VwZGF0ZSBwZ19jbGFz cworICBzZXQgcmVsdHVwbGVzID0gMiwgcmVscGFnZXMgPSBwZ19yZWxhdGlvbl9zaXplKCdleHRy ZW1lbHlfc2tld2VkJykgLyA4MTkyCisgIHdoZXJlIHJlbG5hbWUgPSAnZXh0cmVtZWx5X3NrZXdl ZCc7CistLSBNYWtlIGEgcmVsYXRpb24gd2l0aCBhIGNvdXBsZSBvZiBlbm9ybW91cyB0dXBsZXMu CitjcmVhdGUgdGFibGUgd2lkZSBhcyBzZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEsIDIpIGFzIGlk LCBycGFkKCcnLCAzMjAwMDAsICd4JykgYXMgdDsKK2FsdGVyIHRhYmxlIHdpZGUgc2V0IChwYXJh bGxlbF93b3JrZXJzID0gMik7CistLSBUaGUgIm9wdGltYWwiIGNhc2U6IHRoZSBoYXNoIHRhYmxl IGZpdHMgaW4gbWVtb3J5OyB3ZSBwbGFuIGZvciAxCistLSBiYXRjaCwgd2Ugc3RpY2sgdG8gdGhh dCBudW1iZXIsIGFuZCBwZWFrIG1lbW9yeSB1c2FnZSBzdGF5cyB3aXRoaW4KKy0tIG91ciB3b3Jr X21lbSBidWRnZXQKKy0tIG5vbi1wYXJhbGxlbAorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxv Y2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworc2V0IGxvY2FsIHdvcmtf bWVtID0gJzRNQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxh aW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1w bGUgcyB1c2luZyAoaWQpOworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQor ICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAgIC0+ICBIYXNoCisgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHMKKyg2IHJvd3MpCisKK3NlbGVjdCBjb3Vu dCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0t LS0tLS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxs eV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZy b20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUg ciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CiskJCk7CisgaW5pdGlhbGx5X211bHRpYmF0Y2gg fCBpbmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLQorIGYgICAgICAgICAgICAgICAgICAgIHwgZgorKDEgcm93KQorCityb2xsYmFjayB0 byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtb2JsaXZpb3VzIGhhc2ggam9p bgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Bl cl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzRNQic7CitzZXQgbG9jYWwgaGFz aF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2NhbCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9 IG9mZjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxl IHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQorICAgLT4g IEdhdGhlcgorICAgICAgICAgV29ya2VycyBQbGFubmVkOiAyCisgICAgICAgICAtPiAgUGFydGlh bCBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAg ICAgICAgIEhhc2ggQ29uZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAgICAgICAgICAgICAgLT4g IFBhcmFsbGVsIFNlcSBTY2FuIG9uIHNpbXBsZSByCisgICAgICAgICAgICAgICAgICAgICAtPiAg SGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHNpbXBsZSBz CisoOSByb3dzKQorCitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBz IHVzaW5nIChpZCk7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykKKworc2VsZWN0 IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBh cyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2Vs ZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworJCQp OworIGluaXRpYWxseV9tdWx0aWJhdGNoIHwgaW5jcmVhc2VkX2JhdGNoZXMgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmICAgICAgICAgICAgICAgICAgICB8 IGYKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CistLSBwYXJhbGxlbCB3aXRoIHBh cmFsbGVsLWF3YXJlIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1h eF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0g JzRNQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2NhbCBl bmFibGVfcGFyYWxsZWxfaGFzaCA9IG9uOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3Qg Y291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgRmluYWxpemUgQWdncmVnYXRlCisgICAtPiAgR2F0aGVyCisgICAgICAgICBXb3JrZXJz IFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBQYXJ0aWFsIEFnZ3JlZ2F0ZQorICAgICAgICAgICAg ICAgLT4gIFBhcmFsbGVsIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25k OiAoci5pZCA9IHMuaWQpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNj YW4gb24gc2ltcGxlIHIKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxl IHMKKyg5IHJvd3MpCisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxl IHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxl Y3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFs IGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBz ZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7Cisk JCk7CisgaW5pdGlhbGx5X211bHRpYmF0Y2ggfCBpbmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIGYgICAgICAgICAgICAgICAgICAg IHwgZgorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIFRoZSAiZ29vZCIgY2Fz ZTogYmF0Y2hlcyByZXF1aXJlZCwgYnV0IHdlIHBsYW4gdGhlIHJpZ2h0IG51bWJlcjsgd2UKKy0t IHBsYW4gZm9yIHNvbWUgbnVtYmVyIG9mIGJhdGNoZXMsIGFuZCB3ZSBzdGljayB0byB0aGF0IG51 bWJlciwgYW5kCistLSBwZWFrIG1lbW9yeSB1c2FnZSBzYXlzIHdpdGhpbiBvdXIgd29ya19tZW0g YnVkZ2V0CistLSBub24tcGFyYWxsZWwKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBt YXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKK3NldCBsb2NhbCB3b3JrX21lbSA9 ICcxMjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxhaW4g KGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUg cyB1c2luZyAoaWQpOworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAg LT4gIEhhc2ggSm9pbgorICAgICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHMKKyg2IHJvd3MpCisKK3NlbGVjdCBjb3VudCgq KSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0t LS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9t dWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20g aGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBq b2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CiskJCk7CisgaW5pdGlhbGx5X211bHRpYmF0Y2ggfCBp bmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLQorIHQgICAgICAgICAgICAgICAgICAgIHwgZgorKDEgcm93KQorCityb2xsYmFjayB0byBz ZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtb2JsaXZpb3VzIGhhc2ggam9pbgor c2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9n YXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzEyOGtCJzsKK3NldCBsb2NhbCBoYXNo X21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0IGxvY2FsIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0g b2ZmOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUg ciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgQWdncmVnYXRlCisgICAtPiAg R2F0aGVyCisgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBQYXJ0aWFs IEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAg ICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAgICAgICAgICAgICAgICAtPiAg UGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBI YXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHMK Kyg5IHJvd3MpCisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMg dXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxlY3Qg b3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFsIGFz IGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxl Y3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CiskJCk7 CisgaW5pdGlhbGx5X211bHRpYmF0Y2ggfCBpbmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICAgICAgICAgICAgIHwg ZgorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFy YWxsZWwtYXdhcmUgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4 X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitzZXQgbG9jYWwgd29ya19tZW0gPSAn MTkya0InOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9jYWwg ZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0 IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQorICAgLT4gIEdhdGhlcgorICAgICAgICAgV29ya2Vy cyBQbGFubmVkOiAyCisgICAgICAgICAtPiAgUGFydGlhbCBBZ2dyZWdhdGUKKyAgICAgICAgICAg ICAgIC0+ICBQYXJhbGxlbCBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29u ZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBT Y2FuIG9uIHNpbXBsZSByCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHNpbXBs ZSBzCisoOSByb3dzKQorCitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBs ZSBzIHVzaW5nIChpZCk7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykKKworc2Vs ZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5h bCBhcyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAg c2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOwor JCQpOworIGluaXRpYWxseV9tdWx0aWJhdGNoIHwgaW5jcmVhc2VkX2JhdGNoZXMgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgICAgICAgICAg ICB8IGYKKygxIHJvdykKKworLS0gcGFyYWxsZWwgZnVsbCBtdWx0aS1iYXRjaCBoYXNoIGpvaW4K K3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1 c2luZyAoaWQpOworIGNvdW50IAorLS0tLS0tLQorIDIwMDAwCisoMSByb3cpCisKK3JvbGxiYWNr IHRvIHNldHRpbmdzOworLS0gVGhlICJiYWQiIGNhc2U6IGR1cmluZyBleGVjdXRpb24gd2UgbmVl ZCB0byBpbmNyZWFzZSBudW1iZXIgb2YKKy0tIGJhdGNoZXM7IGluIHRoaXMgY2FzZSB3ZSBwbGFu IGZvciAxIGJhdGNoLCBhbmQgaW5jcmVhc2UgYXQgbGVhc3QgYQorLS0gY291cGxlIG9mIHRpbWVz LCBhbmQgcGVhayBtZW1vcnkgdXNhZ2Ugc3RheXMgd2l0aGluIG91ciB3b3JrX21lbQorLS0gYnVk Z2V0CistLSBub24tcGFyYWxsZWwKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhf cGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKK3NldCBsb2NhbCB3b3JrX21lbSA9ICcx MjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxhaW4gKGNv c3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIEZST00gc2ltcGxlIHIgSk9JTiBiaWdnZXJfdGhh bl9pdF9sb29rcyBzIFVTSU5HIChpZCk7CisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEhhc2ggSm9pbgorICAg ICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24g c2ltcGxlIHIKKyAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gYmlnZ2VyX3RoYW5faXRfbG9va3MgcworKDYgcm93cykKKworc2VsZWN0IGNvdW50KCopIEZS T00gc2ltcGxlIHIgSk9JTiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIFVTSU5HIChpZCk7CisgY291 bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykKKworc2VsZWN0IG9yaWdpbmFsID4gMSBhcyBp bml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hl cworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIEZST00g c2ltcGxlIHIgSk9JTiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIFVTSU5HIChpZCk7CiskJCk7Cisg aW5pdGlhbGx5X211bHRpYmF0Y2ggfCBpbmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIGYgICAgICAgICAgICAgICAgICAgIHwgdAor KDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxs ZWwtb2JsaXZpb3VzIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1h eF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0g JzEyOGtCJzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0IGxvY2Fs IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxl Y3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMgdXNp bmcgKGlkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgQWdncmVnYXRlCisgICAt PiAgR2F0aGVyCisgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBQYXJ0 aWFsIEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAg ICAgICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAgICAgICAgICAgICAgICAt PiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gYmlnZ2Vy X3RoYW5faXRfbG9va3MgcworKDkgcm93cykKKworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxl IHIgam9pbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7CisgY291bnQgCistLS0t LS0tCisgMjAwMDAKKygxIHJvdykKKworc2VsZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlf bXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9t IGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIg am9pbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7CiskJCk7CisgaW5pdGlhbGx5 X211bHRpYmF0Y2ggfCBpbmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLQorIGYgICAgICAgICAgICAgICAgICAgIHwgdAorKDEgcm93KQor Cityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtYXdhcmUg aGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dv cmtlcnNfcGVyX2dhdGhlciA9IDE7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnMTkya0InOworc2V0 IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9jYWwgZW5hYmxlX3BhcmFs bGVsX2hhc2ggPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZy b20gc2ltcGxlIHIgam9pbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQor ICAgLT4gIEdhdGhlcgorICAgICAgICAgV29ya2VycyBQbGFubmVkOiAxCisgICAgICAgICAtPiAg UGFydGlhbCBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoIEpvaW4K KyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAg ICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHNpbXBsZSByCisgICAgICAgICAg ICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMKKyg5IHJvd3Mp CisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gYmlnZ2VyX3RoYW5faXRfbG9v a3MgcyB1c2luZyAoaWQpOworIGNvdW50IAorLS0tLS0tLQorIDIwMDAwCisoMSByb3cpCisKK3Nl bGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0Y2gsIGZpbmFsID4gb3JpZ2lu YWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisg IHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gYmlnZ2VyX3RoYW5faXRfbG9va3Mg cyB1c2luZyAoaWQpOworJCQpOworIGluaXRpYWxseV9tdWx0aWJhdGNoIHwgaW5jcmVhc2VkX2Jh dGNoZXMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmICAg ICAgICAgICAgICAgICAgICB8IHQKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7Cist LSBUaGUgInVnbHkiIGNhc2U6IGluY3JlYXNpbmcgdGhlIG51bWJlciBvZiBiYXRjaGVzIGR1cmlu ZyBleGVjdXRpb24KKy0tIGRvZXNuJ3QgaGVscCwgc28gc3RvcCB0cnlpbmcgdG8gZml0IGluIHdv cmtfbWVtIGFuZCBob3BlIGZvciB0aGUKKy0tIGJlc3Q7IGluIHRoaXMgY2FzZSB3ZSBwbGFuIGZv ciAxIGJhdGNoLCBpbmNyZWFzZXMganVzdCBvbmNlIGFuZAorLS0gdGhlbiBzdG9wIGluY3JlYXNp bmcgYmVjYXVzZSB0aGF0IGRpZG4ndCBoZWxwIGF0IGFsbCwgc28gd2UgYmxvdworLS0gcmlnaHQg dGhyb3VnaCB0aGUgd29ya19tZW0gYnVkZ2V0IGFuZCBob3BlIGZvciB0aGUgYmVzdC4uLgorLS0g bm9uLXBhcmFsbGVsCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVs X3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnMTI4a0InOwor c2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0cyBvZmYp CisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5X3NrZXdlZCBz IHVzaW5nIChpZCk7CisgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgIEhhc2ggQ29uZDogKHIu aWQgPSBzLmlkKQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHNpbXBsZSByCisgICAgICAgICAt PiAgSGFzaAorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGV4dHJlbWVseV9za2V3ZWQg cworKDYgcm93cykKKworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1l bHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93 KQorCitzZWxlY3QgKiBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50 KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKKyQk KTsKKyBvcmlnaW5hbCB8IGZpbmFsIAorLS0tLS0tLS0tLSstLS0tLS0tCisgICAgICAgIDEgfCAg ICAgMgorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGgg cGFyYWxsZWwtb2JsaXZpb3VzIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxv Y2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtf bWVtID0gJzEyOGtCJzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0 IGxvY2FsIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworZXhwbGFpbiAoY29zdHMgb2ZmKQor ICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4dHJlbWVseV9za2V3ZWQgcyB1 c2luZyAoaWQpOworICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgR2F0aGVyCisgICAgICAgICBXb3JrZXJz IFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgIEhhc2gg Q29uZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2Fu IG9uIHNpbXBsZSByCisgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIGV4dHJlbWVseV9za2V3ZWQgcworKDggcm93cykKKworc2VsZWN0 IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlk KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxlY3QgKiBmcm9tIGhh c2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9p biBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKKyQkKTsKKyBvcmlnaW5hbCB8IGZpbmFs IAorLS0tLS0tLS0tLSstLS0tLS0tCisgICAgICAgIDEgfCAgICAgMgorKDEgcm93KQorCityb2xs YmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtYXdhcmUgaGFzaCBq b2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNf cGVyX2dhdGhlciA9IDE7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnMTI4a0InOworc2V0IGxvY2Fs IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9jYWwgZW5hYmxlX3BhcmFsbGVsX2hh c2ggPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2lt cGxlIHIgam9pbiBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEdhdGhlcgorICAgICAgICAgV29ya2VycyBQbGFubmVk OiAxCisgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaCBKb2luCisgICAgICAgICAgICAgICBIYXNo IENvbmQ6IChyLmlkID0gcy5pZCkKKyAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2Nh biBvbiBzaW1wbGUgcgorICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2gKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBleHRyZW1lbHlfc2tld2VkIHMK Kyg4IHJvd3MpCisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5 X3NrZXdlZCBzIHVzaW5nIChpZCk7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykK Kworc2VsZWN0ICogZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgq KSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7CiskJCk7 Cisgb3JpZ2luYWwgfCBmaW5hbCAKKy0tLS0tLS0tLS0rLS0tLS0tLQorICAgICAgICAxIHwgICAg IDQKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CistLSBBIGNvdXBsZSBvZiBvdGhl ciBoYXNoIGpvaW4gdGVzdHMgdW5yZWxhdGVkIHRvIHdvcmtfbWVtIG1hbmFnZW1lbnQuCistLSBD aGVjayB0aGF0IEVYUExBSU4gQU5BTFlaRSBoYXMgZGF0YSBldmVuIGlmIHRoZSBsZWFkZXIgZG9l c24ndCBwYXJ0aWNpcGF0ZQorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJh bGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzRNQic7 CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2NhbCBwYXJhbGxl bF9sZWFkZXJfcGFydGljaXBhdGlvbiA9IG9mZjsKK3NlbGVjdCAqIGZyb20gaGFzaF9qb2luX2Jh dGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBz IHVzaW5nIChpZCk7CiskJCk7Cisgb3JpZ2luYWwgfCBmaW5hbCAKKy0tLS0tLS0tLS0rLS0tLS0t LQorICAgICAgICAxIHwgICAgIDEKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7Cist LSBFeGVyY2lzZSByZXNjYW5zLiAgV2UnbGwgdHVybiBvZmYgcGFyYWxsZWxfbGVhZGVyX3BhcnRp Y2lwYXRpb24gc28KKy0tIHRoYXQgd2UgY2FuIGNoZWNrIHRoYXQgaW5zdHJ1bWVudGF0aW9uIGNv bWVzIGJhY2sgY29ycmVjdGx5LgorY3JlYXRlIHRhYmxlIGpvaW5fZm9vIGFzIHNlbGVjdCBnZW5l cmF0ZV9zZXJpZXMoMSwgMykgYXMgaWQsICd4eHh4eCc6OnRleHQgYXMgdDsKK2FsdGVyIHRhYmxl IGpvaW5fZm9vIHNldCAocGFyYWxsZWxfd29ya2VycyA9IDApOworY3JlYXRlIHRhYmxlIGpvaW5f YmFyIGFzIHNlbGVjdCBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMDApIGFzIGlkLCAneHh4eHgnOjp0 ZXh0IGFzIHQ7CithbHRlciB0YWJsZSBqb2luX2JhciBzZXQgKHBhcmFsbGVsX3dvcmtlcnMgPSAy KTsKK2FuYWx5emUgam9pbl9mb28sIGpvaW5fYmFyOworLS0gbXVsdGktYmF0Y2ggd2l0aCByZXNj YW4sIHBhcmFsbGVsLW9ibGl2aW91cworc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGVuYWJsZV9w YXJhbGxlbF9oYXNoID0gb2ZmOworc2V0IHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uID0g b2ZmOworc2V0IG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOworc2V0IHBhcmFsbGVs X3NldHVwX2Nvc3QgPSAwOworc2V0IHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworc2V0IG1heF9w YXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGVuYWJsZV9tYXRlcmlhbCA9IG9m ZjsKK3NldCBlbmFibGVfbWVyZ2Vqb2luID0gb2ZmOworc2V0IHdvcmtfbWVtID0gJzY0a0InOwor c2V0IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNl bGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgICAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQs IGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisg ICAgb24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAx OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBOZXN0ZWQgTG9vcCBMZWZ0IEpvaW4KKyAgICAgICAgIEpv aW4gRmlsdGVyOiAoKGpvaW5fZm9vLmlkIDwgKGIxLmlkICsgMSkpIEFORCAoam9pbl9mb28uaWQg PiAoYjEuaWQgLSAxKSkpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gam9pbl9mb28KKyAgICAg ICAgIC0+ICBHYXRoZXIKKyAgICAgICAgICAgICAgIFdvcmtlcnMgUGxhbm5lZDogMgorICAgICAg ICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAo YjEuaWQgPSBiMi5pZCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2Nh biBvbiBqb2luX2JhciBiMQorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBqb2luX2JhciBiMgorKDExIHJvd3Mp CisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgIGxlZnQgam9pbiAoc2VsZWN0IGIx LmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBz cworICBvbiBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAt IDE7CisgY291bnQgCistLS0tLS0tCisgICAgIDMKKygxIHJvdykKKworc2VsZWN0IGZpbmFsID4g MSBhcyBtdWx0aWJhdGNoCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3Qg Y291bnQoKikgZnJvbSBqb2luX2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50 IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9u IGpvaW5fZm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyQk KTsKKyBtdWx0aWJhdGNoIAorLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCityb2xsYmFjayB0 byBzZXR0aW5nczsKKy0tIHNpbmdsZS1iYXRjaCB3aXRoIHJlc2NhbiwgcGFyYWxsZWwtb2JsaXZp b3VzCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7 CitzZXQgcGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRpb24gPSBvZmY7CitzZXQgbWluX3BhcmFs bGVsX3RhYmxlX3NjYW5fc2l6ZSA9IDA7CitzZXQgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7Citz ZXQgcGFyYWxsZWxfdHVwbGVfY29zdCA9IDA7CitzZXQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVy X2dhdGhlciA9IDI7CitzZXQgZW5hYmxlX21hdGVyaWFsID0gb2ZmOworc2V0IGVuYWJsZV9tZXJn ZWpvaW4gPSBvZmY7CitzZXQgd29ya19tZW0gPSAnNE1CJzsKK3NldCBoYXNoX21lbV9tdWx0aXBs aWVyID0gMS4wOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBq b2luX2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIg YjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9uIGpvaW5fZm9vLmlkIDwg c3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAt PiAgTmVzdGVkIExvb3AgTGVmdCBKb2luCisgICAgICAgICBKb2luIEZpbHRlcjogKChqb2luX2Zv by5pZCA8IChiMS5pZCArIDEpKSBBTkQgKGpvaW5fZm9vLmlkID4gKGIxLmlkIC0gMSkpKQorICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIGpvaW5fZm9vCisgICAgICAgICAtPiAgR2F0aGVyCisgICAg ICAgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IDIKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpv aW4KKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKGIxLmlkID0gYjIuaWQpCisgICAg ICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gam9pbl9iYXIgYjEKKyAg ICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gam9pbl9iYXIgYjIKKygxMSByb3dzKQorCitzZWxlY3QgY291bnQoKikg ZnJvbSBqb2luX2ZvbworICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5f YmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgb24gam9pbl9mb28uaWQg PCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworIGNvdW50IAorLS0tLS0t LQorICAgICAzCisoMSByb3cpCisKK3NlbGVjdCBmaW5hbCA+IDEgYXMgbXVsdGliYXRjaAorICBm cm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9m b28KKyAgICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIxIGpv aW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgICBvbiBqb2luX2Zvby5pZCA8IHNzLmlk ICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CiskJCk7CisgbXVsdGliYXRjaCAKKy0t LS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CistLSBtdWx0 aS1iYXRjaCB3aXRoIHJlc2NhbiwgcGFyYWxsZWwtYXdhcmUKK3NhdmVwb2ludCBzZXR0aW5nczsK K3NldCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9uOworc2V0IHBhcmFsbGVsX2xlYWRlcl9wYXJ0 aWNpcGF0aW9uID0gb2ZmOworc2V0IG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOwor c2V0IHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworc2V0IHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAw Oworc2V0IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGVuYWJsZV9t YXRlcmlhbCA9IG9mZjsKK3NldCBlbmFibGVfbWVyZ2Vqb2luID0gb2ZmOworc2V0IHdvcmtfbWVt ID0gJzY0a0InOworc2V0IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0 cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgICAgbGVmdCBqb2luIChz ZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5n IChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlk ID4gc3MuaWQgLSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBOZXN0ZWQgTG9vcCBMZWZ0IEpvaW4K KyAgICAgICAgIEpvaW4gRmlsdGVyOiAoKGpvaW5fZm9vLmlkIDwgKGIxLmlkICsgMSkpIEFORCAo am9pbl9mb28uaWQgPiAoYjEuaWQgLSAxKSkpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gam9p bl9mb28KKyAgICAgICAgIC0+ICBHYXRoZXIKKyAgICAgICAgICAgICAgIFdvcmtlcnMgUGxhbm5l ZDogMgorICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2ggSm9pbgorICAgICAgICAgICAg ICAgICAgICAgSGFzaCBDb25kOiAoYjEuaWQgPSBiMi5pZCkKKyAgICAgICAgICAgICAgICAgICAg IC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBqb2luX2JhciBiMQorICAgICAgICAgICAgICAgICAg ICAgLT4gIFBhcmFsbGVsIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJh bGxlbCBTZXEgU2NhbiBvbiBqb2luX2JhciBiMgorKDExIHJvd3MpCisKK3NlbGVjdCBjb3VudCgq KSBmcm9tIGpvaW5fZm9vCisgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9p bl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICBvbiBqb2luX2Zvby5p ZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CisgY291bnQgCistLS0t LS0tCisgICAgIDMKKygxIHJvdykKKworc2VsZWN0IGZpbmFsID4gMSBhcyBtdWx0aWJhdGNoCisg IGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBqb2lu X2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEg am9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9uIGpvaW5fZm9vLmlkIDwgc3Mu aWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyQkKTsKKyBtdWx0aWJhdGNoIAor LS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHNp bmdsZS1iYXRjaCB3aXRoIHJlc2NhbiwgcGFyYWxsZWwtYXdhcmUKK3NhdmVwb2ludCBzZXR0aW5n czsKK3NldCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9uOworc2V0IHBhcmFsbGVsX2xlYWRlcl9w YXJ0aWNpcGF0aW9uID0gb2ZmOworc2V0IG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAw Oworc2V0IHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworc2V0IHBhcmFsbGVsX3R1cGxlX2Nvc3Qg PSAwOworc2V0IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGVuYWJs ZV9tYXRlcmlhbCA9IG9mZjsKK3NldCBlbmFibGVfbWVyZ2Vqb2luID0gb2ZmOworc2V0IHdvcmtf bWVtID0gJzRNQic7CitzZXQgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxhaW4gKGNv c3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9mb28KKyAgICBsZWZ0IGpvaW4g KHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNp bmcgKGlkKSkgc3MKKyAgICBvbiBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28u aWQgPiBzcy5pZCAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIE5lc3RlZCBMb29wIExlZnQgSm9p bgorICAgICAgICAgSm9pbiBGaWx0ZXI6ICgoam9pbl9mb28uaWQgPCAoYjEuaWQgKyAxKSkgQU5E IChqb2luX2Zvby5pZCA+IChiMS5pZCAtIDEpKSkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBq b2luX2ZvbworICAgICAgICAgLT4gIEdhdGhlcgorICAgICAgICAgICAgICAgV29ya2VycyBQbGFu bmVkOiAyCisgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaCBKb2luCisgICAgICAgICAg ICAgICAgICAgICBIYXNoIENvbmQ6IChiMS5pZCA9IGIyLmlkKQorICAgICAgICAgICAgICAgICAg ICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIGpvaW5fYmFyIGIxCisgICAgICAgICAgICAgICAg ICAgICAtPiAgUGFyYWxsZWwgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBh cmFsbGVsIFNlcSBTY2FuIG9uIGpvaW5fYmFyIGIyCisoMTEgcm93cykKKworc2VsZWN0IGNvdW50 KCopIGZyb20gam9pbl9mb28KKyAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBq b2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgIG9uIGpvaW5fZm9v LmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyBjb3VudCAKKy0t LS0tLS0KKyAgICAgMworKDEgcm93KQorCitzZWxlY3QgZmluYWwgPiAxIGFzIG11bHRpYmF0Y2gK KyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpv aW5fZm9vCisgICAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBi MSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBz cy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworJCQpOworIG11bHRpYmF0Y2gg CistLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0g QSBmdWxsIG91dGVyIGpvaW4gd2hlcmUgZXZlcnkgcmVjb3JkIGlzIG1hdGNoZWQuCistLSBub24t cGFyYWxsZWwKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29y a2Vyc19wZXJfZ2F0aGVyID0gMDsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgICAgc2VsZWN0ICBj b3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQp OworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEhhc2ggRnVs bCBKb2luCisgICAgICAgICBIYXNoIENvbmQ6IChyLmlkID0gcy5pZCkKKyAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBzaW1wbGUgcgorICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBzaW1wbGUgcworKDYgcm93cykKKworc2VsZWN0ICBjb3VudCgqKSBmcm9t IHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworIGNvdW50IAor LS0tLS0tLQorIDIwMDAwCisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0gcGFy YWxsZWxpc20gbm90IHBvc3NpYmxlIHdpdGggcGFyYWxsZWwtb2JsaXZpb3VzIGZ1bGwgaGFzaCBq b2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7 CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitleHBsYWlu IChjb3N0cyBvZmYpCisgICAgIHNlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91 dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKKyAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBBZ2dyZWdhdGUKKyAgIC0+ICBIYXNoIEZ1bGwgSm9pbgorICAgICAgICAgSGFzaCBDb25kOiAo ci5pZCA9IHMuaWQpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAg IC0+ICBIYXNoCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHMKKyg2IHJv d3MpCisKK3NlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2lt cGxlIHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCity b2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsaXNtIGlzIHBvc3NpYmxlIHdpdGggcGFy YWxsZWwtYXdhcmUgZnVsbCBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2Nh bCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK2V4cGxhaW4gKGNvc3RzIG9m ZikKKyAgICAgc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBz aW1wbGUgcyB1c2luZyAoaWQpOworICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQorICAg LT4gIEdhdGhlcgorICAgICAgICAgV29ya2VycyBQbGFubmVkOiAyCisgICAgICAgICAtPiAgUGFy dGlhbCBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoIEZ1bGwgSm9p bgorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAg ICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxlIHMKKyg5IHJvd3MpCisKK3NlbGVjdCAg Y291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlk KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0 aW5nczsKKy0tIEEgZnVsbCBvdXRlciBqb2luIHdoZXJlIGV2ZXJ5IHJlY29yZCBpcyBub3QgbWF0 Y2hlZC4KKy0tIG5vbi1wYXJhbGxlbAorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1h eF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworZXhwbGFpbiAoY29zdHMgb2ZmKQor ICAgICBzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBs ZSBzIG9uIChyLmlkID0gMCAtIHMuaWQpOworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFn Z3JlZ2F0ZQorICAgLT4gIEhhc2ggRnVsbCBKb2luCisgICAgICAgICBIYXNoIENvbmQ6ICgoMCAt IHMuaWQpID0gci5pZCkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzaW1wbGUgcworICAgICAg ICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzaW1wbGUgcgorKDYg cm93cykKKworc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBz aW1wbGUgcyBvbiAoci5pZCA9IDAgLSBzLmlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyA0MDAwMAor KDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsaXNtIG5vdCBwb3Nz aWJsZSB3aXRoIHBhcmFsbGVsLW9ibGl2aW91cyBmdWxsIGhhc2ggam9pbgorc2F2ZXBvaW50IHNl dHRpbmdzOworc2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworc2V0IGxvY2FsIG1heF9w YXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICAg ICBzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBz IG9uIChyLmlkID0gMCAtIHMuaWQpOworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3Jl Z2F0ZQorICAgLT4gIEhhc2ggRnVsbCBKb2luCisgICAgICAgICBIYXNoIENvbmQ6ICgoMCAtIHMu aWQpID0gci5pZCkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzaW1wbGUgcworICAgICAgICAg LT4gIEhhc2gKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzaW1wbGUgcgorKDYgcm93 cykKKworc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1w bGUgcyBvbiAoci5pZCA9IDAgLSBzLmlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyA0MDAwMAorKDEg cm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsaXNtIGlzIHBvc3NpYmxl IHdpdGggcGFyYWxsZWwtYXdhcmUgZnVsbCBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsK K3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK2V4cGxhaW4g KGNvc3RzIG9mZikKKyAgICAgc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0 ZXIgam9pbiBzaW1wbGUgcyBvbiAoci5pZCA9IDAgLSBzLmlkKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5h bGl6ZSBBZ2dyZWdhdGUKKyAgIC0+ICBHYXRoZXIKKyAgICAgICAgIFdvcmtlcnMgUGxhbm5lZDog MgorICAgICAgICAgLT4gIFBhcnRpYWwgQWdncmVnYXRlCisgICAgICAgICAgICAgICAtPiAgUGFy YWxsZWwgSGFzaCBGdWxsIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKCgw IC0gcy5pZCkgPSByLmlkKQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBT Y2FuIG9uIHNpbXBsZSBzCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHNpbXBs ZSByCisoOSByb3dzKQorCitzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRl ciBqb2luIHNpbXBsZSBzIG9uIChyLmlkID0gMCAtIHMuaWQpOworIGNvdW50IAorLS0tLS0tLQor IDQwMDAwCisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0gZXhlcmNpc2Ugc3Bl Y2lhbCBjb2RlIHBhdGhzIGZvciBodWdlIHR1cGxlcyAobm90ZSB1c2Ugb2Ygbm9uLXN0cmljdAor LS0gZXhwcmVzc2lvbiBhbmQgbGVmdCBqb2luIHJlcXVpcmVkIHRvIGdldCB0aGUgZGV0b2FzdGVk IHR1cGxlIGludG8KKy0tIHRoZSBoYXNoIHRhYmxlKQorLS0gcGFyYWxsZWwgd2l0aCBwYXJhbGxl bC1hd2FyZSBoYXNoIGpvaW4gKGhpdHMgRXhlY1BhcmFsbGVsSGFzaExvYWRUdXBsZSBhbmQKKy0t IHN0c19wdXR0dXBsZSBvdmVyc2l6ZWQgdHVwbGUgY2FzZXMgYmVjYXVzZSBpdCdzIG11bHRpLWJh dGNoKQorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9n YXRoZXIgPSAyOworc2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb247CitzZXQgd29ya19tZW0g PSAnMTI4a0InOworc2V0IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0 cyBvZmYpCisgIHNlbGVjdCBsZW5ndGgobWF4KHMudCkpCisgIGZyb20gd2lkZSBsZWZ0IGpvaW4g KHNlbGVjdCBpZCwgY29hbGVzY2UodCwgJycpIHx8ICcnIGFzIHQgZnJvbSB3aWRlKSBzIHVzaW5n IChpZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgQWdncmVnYXRlCisgICAtPiAgR2F0 aGVyCisgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBQYXJ0aWFsIEFn Z3JlZ2F0ZQorICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2ggTGVmdCBKb2luCisgICAg ICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh3aWRlLmlkID0gd2lkZV8xLmlkKQorICAgICAg ICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHdpZGUKKyAgICAgICAgICAg ICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gd2lkZSB3aWRlXzEKKyg5IHJvd3MpCisKK3NlbGVjdCBs ZW5ndGgobWF4KHMudCkpCitmcm9tIHdpZGUgbGVmdCBqb2luIChzZWxlY3QgaWQsIGNvYWxlc2Nl KHQsICcnKSB8fCAnJyBhcyB0IGZyb20gd2lkZSkgcyB1c2luZyAoaWQpOworIGxlbmd0aCAKKy0t LS0tLS0tCisgMzIwMDAwCisoMSByb3cpCisKK3NlbGVjdCBmaW5hbCA+IDEgYXMgbXVsdGliYXRj aAorICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGxlbmd0aChtYXgocy50 KSkKKyAgZnJvbSB3aWRlIGxlZnQgam9pbiAoc2VsZWN0IGlkLCBjb2FsZXNjZSh0LCAnJykgfHwg JycgYXMgdCBmcm9tIHdpZGUpIHMgdXNpbmcgKGlkKTsKKyQkKTsKKyBtdWx0aWJhdGNoIAorLS0t LS0tLS0tLS0tCisgdAorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIEhhc2gg am9pbiByZXVzZXMgdGhlIEhPVCBzdGF0dXMgYml0IHRvIGluZGljYXRlIG1hdGNoIHN0YXR1cy4g VGhpcyBjYW4gb25seQorLS0gYmUgZ3VhcmFudGVlZCB0byBwcm9kdWNlIGNvcnJlY3QgcmVzdWx0 cyBpZiBhbGwgdGhlIGhhc2ggam9pbiB0dXBsZSBtYXRjaAorLS0gYml0cyBhcmUgcmVzZXQgYmVm b3JlIHJldXNlLiBUaGlzIGlzIGRvbmUgdXBvbiBsb2FkaW5nIHRoZW0gaW50byB0aGUKKy0tIGhh c2h0YWJsZS4KK1NBVkVQT0lOVCBzZXR0aW5nczsKK1NFVCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9 IG9uOworU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOworU0VUIHBhcmFsbGVs X3NldHVwX2Nvc3QgPSAwOworU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworQ1JFQVRFIFRB QkxFIGhqdGVzdF9tYXRjaGJpdHNfdDEoaWQgaW50KTsKK0NSRUFURSBUQUJMRSBoanRlc3RfbWF0 Y2hiaXRzX3QyKGlkIGludCk7CitJTlNFUlQgSU5UTyBoanRlc3RfbWF0Y2hiaXRzX3QxIFZBTFVF UyAoMSk7CitJTlNFUlQgSU5UTyBoanRlc3RfbWF0Y2hiaXRzX3QyIFZBTFVFUyAoMik7CistLSBV cGRhdGUgc2hvdWxkIGNyZWF0ZSBhIEhPVCB0dXBsZS4gSWYgdGhpcyBzdGF0dXMgYml0IGlzbid0 IGNsZWFyZWQsIHdlIHdvbid0CistLSBjb3JyZWN0bHkgZW1pdCB0aGUgTlVMTC1leHRlbmRlZCB1 bm1hdGNoaW5nIHR1cGxlIGluIGZ1bGwgaGFzaCBqb2luLgorVVBEQVRFIGhqdGVzdF9tYXRjaGJp dHNfdDIgc2V0IGlkID0gMjsKK1NFTEVDVCAqIEZST00gaGp0ZXN0X21hdGNoYml0c190MSB0MSBG VUxMIEpPSU4gaGp0ZXN0X21hdGNoYml0c190MiB0MiBPTiB0MS5pZCA9IHQyLmlkCisgIE9SREVS IEJZIHQxLmlkOworIGlkIHwgaWQgCistLS0tKy0tLS0KKyAgMSB8ICAgCisgICAgfCAgMgorKDIg cm93cykKKworLS0gVGVzdCBzZXJpYWwgZnVsbCBoYXNoIGpvaW4uCistLSBSZXNldHRpbmcgcGFy YWxsZWxfc2V0dXBfY29zdCBzaG91bGQgZm9yY2UgYSBzZXJpYWwgcGxhbi4KKy0tIEp1c3QgdG8g YmUgc2FmZSwgaG93ZXZlciwgc2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoIHRvIG9mZiwgYXMgcGFy YWxsZWwgZnVsbAorLS0gaGFzaCBqb2lucyBhcmUgb25seSBzdXBwb3J0ZWQgd2l0aCBzaGFyZWQg aGFzaHRhYmxlcy4KK1JFU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3Q7CitTRVQgZW5hYmxlX3BhcmFs bGVsX2hhc2ggPSBvZmY7CitTRUxFQ1QgKiBGUk9NIGhqdGVzdF9tYXRjaGJpdHNfdDEgdDEgRlVM TCBKT0lOIGhqdGVzdF9tYXRjaGJpdHNfdDIgdDIgT04gdDEuaWQgPSB0Mi5pZDsKKyBpZCB8IGlk IAorLS0tLSstLS0tCisgIDEgfCAgIAorICAgIHwgIDIKKygyIHJvd3MpCisKK1JPTExCQUNLIFRP IHNldHRpbmdzOworcm9sbGJhY2s7CistLSBWZXJpZnkgdGhhdCBoYXNoIGtleSBleHByZXNzaW9u cyByZWZlcmVuY2UgdGhlIGNvcnJlY3QKKy0tIG5vZGVzLiBIYXNoam9pbidzIGhhc2hrZXlzIG5l ZWQgdG8gcmVmZXJlbmNlIGl0cyBvdXRlciBwbGFuLCBIYXNoJ3MKKy0tIG5lZWQgdG8gcmVmZXJl bmNlIEhhc2gncyBvdXRlciBwbGFuICh3aGljaCBpcyBiZWxvdyBIYXNoSm9pbidzCistLSBpbm5l ciBwbGFuKS4gSXQncyBub3QgdHJpdmlhbCB0byB2ZXJpZnkgdGhhdCB0aGUgcmVmZXJlbmNlcyBh cmUKKy0tIGNvcnJlY3QgKHdlIGRvbid0IGRpc3BsYXkgdGhlIGhhc2hrZXlzIHRoZW1zZWx2ZXMp LCBidXQgaWYgdGhlCistLSBoYXNoa2V5cyBjb250YWluIHN1YnBsYW4gcmVmZXJlbmNlcywgdGhv c2Ugd2lsbCBiZSBkaXNwbGF5ZWQuIEZvcmNlCistLSBzdWJwbGFucyB0byBhcHBlYXIganVzdCBh Ym91dCBldmVyeXdoZXJlLgorLS0KKy0tIEJ1ZyByZXBvcnQ6CistLSBodHRwczovL3d3dy5wb3N0 Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL0NBUHBIZmR2R1ZlZ0ZfVEtLUmlCclNtYXRKTDJkUjl1d0ZD dVIlMkJ0ZVFfOHRFWFU4bXhnJTQwbWFpbC5nbWFpbC5jb20KKy0tCitCRUdJTjsKK1NFVCBMT0NB TCBlbmFibGVfc29ydCA9IE9GRjsgLS0gYXZvaWQgbWVyZ2Vqb2lucworU0VUIExPQ0FMIGZyb21f Y29sbGFwc2VfbGltaXQgPSAxOyAtLSBhbGxvd3MgZWFzeSBjaGFuZ2luZyBvZiBqb2luIG9yZGVy CitDUkVBVEUgVEFCTEUgaGp0ZXN0XzEgKGEgdGV4dCwgYiBpbnQsIGlkIGludCwgYyBib29sKTsK K0NSRUFURSBUQUJMRSBoanRlc3RfMiAoYSBib29sLCBpZCBpbnQsIGIgdGV4dCwgYyBpbnQpOwor SU5TRVJUIElOVE8gaGp0ZXN0XzEoYSwgYiwgaWQsIGMpIFZBTFVFUyAoJ3RleHQnLCAyLCAxLCBm YWxzZSk7IC0tIG1hdGNoZXMKK0lOU0VSVCBJTlRPIGhqdGVzdF8xKGEsIGIsIGlkLCBjKSBWQUxV RVMgKCd0ZXh0JywgMSwgMiwgZmFsc2UpOyAtLSBmYWlscyBpZCBqb2luIGNvbmRpdGlvbgorSU5T RVJUIElOVE8gaGp0ZXN0XzEoYSwgYiwgaWQsIGMpIFZBTFVFUyAoJ3RleHQnLCAyMCwgMSwgZmFs c2UpOyAtLSBmYWlscyA8IDUwCitJTlNFUlQgSU5UTyBoanRlc3RfMShhLCBiLCBpZCwgYykgVkFM VUVTICgndGV4dCcsIDEsIDEsIGZhbHNlKTsgLS0gZmFpbHMgKFNFTEVDVCBoanRlc3RfMS5iICog NSkgPSAoU0VMRUNUIGhqdGVzdF8yLmMqNSkKK0lOU0VSVCBJTlRPIGhqdGVzdF8yKGEsIGlkLCBi LCBjKSBWQUxVRVMgKHRydWUsIDEsICdhbm90aGVyJywgMik7IC0tIG1hdGNoZXMKK0lOU0VSVCBJ TlRPIGhqdGVzdF8yKGEsIGlkLCBiLCBjKSBWQUxVRVMgKHRydWUsIDMsICdhbm90aGVyJywgNyk7 IC0tIGZhaWxzIGlkIGpvaW4gY29uZGl0aW9uCitJTlNFUlQgSU5UTyBoanRlc3RfMihhLCBpZCwg YiwgYykgVkFMVUVTICh0cnVlLCAxLCAnYW5vdGhlcicsIDkwKTsgIC0tIGZhaWxzIDwgNTUKK0lO U0VSVCBJTlRPIGhqdGVzdF8yKGEsIGlkLCBiLCBjKSBWQUxVRVMgKHRydWUsIDEsICdhbm90aGVy JywgMyk7IC0tIGZhaWxzIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpID0gKFNFTEVDVCBoanRlc3Rf Mi5jKjUpCitJTlNFUlQgSU5UTyBoanRlc3RfMihhLCBpZCwgYiwgYykgVkFMVUVTICh0cnVlLCAx LCAndGV4dCcsIDEpOyAtLSAgZmFpbHMgaGp0ZXN0XzEuYSA8PiBoanRlc3RfMi5iOworRVhQTEFJ TiAoQ09TVFMgT0ZGLCBWRVJCT1NFKQorU0VMRUNUIGhqdGVzdF8xLmEgYTEsIGhqdGVzdF8yLmEg YTIsaGp0ZXN0XzEudGFibGVvaWQ6OnJlZ2NsYXNzIHQxLCBoanRlc3RfMi50YWJsZW9pZDo6cmVn Y2xhc3MgdDIKK0ZST00gaGp0ZXN0XzEsIGhqdGVzdF8yCitXSEVSRQorICAgIGhqdGVzdF8xLmlk ID0gKFNFTEVDVCAxIFdIRVJFIGhqdGVzdF8yLmlkID0gMSkKKyAgICBBTkQgKFNFTEVDVCBoanRl c3RfMS5iICogNSkgPSAoU0VMRUNUIGhqdGVzdF8yLmMqNSkKKyAgICBBTkQgKFNFTEVDVCBoanRl c3RfMS5iICogNSkgPCA1MAorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8yLmMgKiA1KSA8IDU1Cisg ICAgQU5EIGhqdGVzdF8xLmEgPD4gaGp0ZXN0XzIuYjsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgSGFzaCBKb2luCisgICBPdXRwdXQ6IGhqdGVzdF8xLmEsIGhqdGVzdF8yLmEsIChoanRlc3Rf MS50YWJsZW9pZCk6OnJlZ2NsYXNzLCAoaGp0ZXN0XzIudGFibGVvaWQpOjpyZWdjbGFzcworICAg SGFzaCBDb25kOiAoKGhqdGVzdF8xLmlkID0gKFN1YlBsYW4gZXhwcl8xKSkgQU5EICgoU3ViUGxh biBleHByXzIpID0gKFN1YlBsYW4gZXhwcl8zKSkpCisgICBKb2luIEZpbHRlcjogKGhqdGVzdF8x LmEgPD4gaGp0ZXN0XzIuYikKKyAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuaGp0ZXN0XzEKKyAg ICAgICAgIE91dHB1dDogaGp0ZXN0XzEuYSwgaGp0ZXN0XzEudGFibGVvaWQsIGhqdGVzdF8xLmlk LCBoanRlc3RfMS5iCisgICAgICAgICBGaWx0ZXI6ICgoU3ViUGxhbiBleHByXzQpIDwgNTApCisg ICAgICAgICBTdWJQbGFuIGV4cHJfNAorICAgICAgICAgICAtPiAgUmVzdWx0CisgICAgICAgICAg ICAgICAgIE91dHB1dDogKGhqdGVzdF8xLmIgKiA1KQorICAgLT4gIEhhc2gKKyAgICAgICAgIE91 dHB1dDogaGp0ZXN0XzIuYSwgaGp0ZXN0XzIudGFibGVvaWQsIGhqdGVzdF8yLmlkLCBoanRlc3Rf Mi5jLCBoanRlc3RfMi5iCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmhqdGVzdF8y CisgICAgICAgICAgICAgICBPdXRwdXQ6IGhqdGVzdF8yLmEsIGhqdGVzdF8yLnRhYmxlb2lkLCBo anRlc3RfMi5pZCwgaGp0ZXN0XzIuYywgaGp0ZXN0XzIuYgorICAgICAgICAgICAgICAgRmlsdGVy OiAoKFN1YlBsYW4gZXhwcl81KSA8IDU1KQorICAgICAgICAgICAgICAgU3ViUGxhbiBleHByXzUK KyAgICAgICAgICAgICAgICAgLT4gIFJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IChoanRlc3RfMi5jICogNSkKKyAgICAgICAgIFN1YlBsYW4gZXhwcl8xCisgICAgICAgICAg IC0+ICBSZXN1bHQKKyAgICAgICAgICAgICAgICAgT3V0cHV0OiAxCisgICAgICAgICAgICAgICAg IE9uZS1UaW1lIEZpbHRlcjogKGhqdGVzdF8yLmlkID0gMSkKKyAgICAgICAgIFN1YlBsYW4gZXhw cl8zCisgICAgICAgICAgIC0+ICBSZXN1bHQKKyAgICAgICAgICAgICAgICAgT3V0cHV0OiAoaGp0 ZXN0XzIuYyAqIDUpCisgICBTdWJQbGFuIGV4cHJfMgorICAgICAtPiAgUmVzdWx0CisgICAgICAg ICAgIE91dHB1dDogKGhqdGVzdF8xLmIgKiA1KQorKDI4IHJvd3MpCisKK1NFTEVDVCBoanRlc3Rf MS5hIGExLCBoanRlc3RfMi5hIGEyLGhqdGVzdF8xLnRhYmxlb2lkOjpyZWdjbGFzcyB0MSwgaGp0 ZXN0XzIudGFibGVvaWQ6OnJlZ2NsYXNzIHQyCitGUk9NIGhqdGVzdF8xLCBoanRlc3RfMgorV0hF UkUKKyAgICBoanRlc3RfMS5pZCA9IChTRUxFQ1QgMSBXSEVSRSBoanRlc3RfMi5pZCA9IDEpCisg ICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpID0gKFNFTEVDVCBoanRlc3RfMi5jKjUpCisg ICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpIDwgNTAKKyAgICBBTkQgKFNFTEVDVCBoanRl c3RfMi5jICogNSkgPCA1NQorICAgIEFORCBoanRlc3RfMS5hIDw+IGhqdGVzdF8yLmI7CisgIGEx ICB8IGEyIHwgICAgdDEgICAgfCAgICB0MiAgICAKKy0tLS0tLSstLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tLQorIHRleHQgfCB0ICB8IGhqdGVzdF8xIHwgaGp0ZXN0XzIKKygxIHJvdykKKworRVhQ TEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKQorU0VMRUNUIGhqdGVzdF8xLmEgYTEsIGhqdGVzdF8y LmEgYTIsaGp0ZXN0XzEudGFibGVvaWQ6OnJlZ2NsYXNzIHQxLCBoanRlc3RfMi50YWJsZW9pZDo6 cmVnY2xhc3MgdDIKK0ZST00gaGp0ZXN0XzIsIGhqdGVzdF8xCitXSEVSRQorICAgIGhqdGVzdF8x LmlkID0gKFNFTEVDVCAxIFdIRVJFIGhqdGVzdF8yLmlkID0gMSkKKyAgICBBTkQgKFNFTEVDVCBo anRlc3RfMS5iICogNSkgPSAoU0VMRUNUIGhqdGVzdF8yLmMqNSkKKyAgICBBTkQgKFNFTEVDVCBo anRlc3RfMS5iICogNSkgPCA1MAorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8yLmMgKiA1KSA8IDU1 CisgICAgQU5EIGhqdGVzdF8xLmEgPD4gaGp0ZXN0XzIuYjsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgSGFzaCBKb2luCisgICBPdXRwdXQ6IGhqdGVzdF8xLmEsIGhqdGVzdF8yLmEsIChoanRl c3RfMS50YWJsZW9pZCk6OnJlZ2NsYXNzLCAoaGp0ZXN0XzIudGFibGVvaWQpOjpyZWdjbGFzcwor ICAgSGFzaCBDb25kOiAoKChTdWJQbGFuIGV4cHJfMSkgPSBoanRlc3RfMS5pZCkgQU5EICgoU3Vi UGxhbiBleHByXzMpID0gKFN1YlBsYW4gZXhwcl8yKSkpCisgICBKb2luIEZpbHRlcjogKGhqdGVz dF8xLmEgPD4gaGp0ZXN0XzIuYikKKyAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuaGp0ZXN0XzIK KyAgICAgICAgIE91dHB1dDogaGp0ZXN0XzIuYSwgaGp0ZXN0XzIudGFibGVvaWQsIGhqdGVzdF8y LmlkLCBoanRlc3RfMi5jLCBoanRlc3RfMi5iCisgICAgICAgICBGaWx0ZXI6ICgoU3ViUGxhbiBl eHByXzUpIDwgNTUpCisgICAgICAgICBTdWJQbGFuIGV4cHJfNQorICAgICAgICAgICAtPiAgUmVz dWx0CisgICAgICAgICAgICAgICAgIE91dHB1dDogKGhqdGVzdF8yLmMgKiA1KQorICAgLT4gIEhh c2gKKyAgICAgICAgIE91dHB1dDogaGp0ZXN0XzEuYSwgaGp0ZXN0XzEudGFibGVvaWQsIGhqdGVz dF8xLmlkLCBoanRlc3RfMS5iCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmhqdGVz dF8xCisgICAgICAgICAgICAgICBPdXRwdXQ6IGhqdGVzdF8xLmEsIGhqdGVzdF8xLnRhYmxlb2lk LCBoanRlc3RfMS5pZCwgaGp0ZXN0XzEuYgorICAgICAgICAgICAgICAgRmlsdGVyOiAoKFN1YlBs YW4gZXhwcl80KSA8IDUwKQorICAgICAgICAgICAgICAgU3ViUGxhbiBleHByXzQKKyAgICAgICAg ICAgICAgICAgLT4gIFJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IChoanRl c3RfMS5iICogNSkKKyAgICAgICAgIFN1YlBsYW4gZXhwcl8yCisgICAgICAgICAgIC0+ICBSZXN1 bHQKKyAgICAgICAgICAgICAgICAgT3V0cHV0OiAoaGp0ZXN0XzEuYiAqIDUpCisgICBTdWJQbGFu IGV4cHJfMQorICAgICAtPiAgUmVzdWx0CisgICAgICAgICAgIE91dHB1dDogMQorICAgICAgICAg ICBPbmUtVGltZSBGaWx0ZXI6IChoanRlc3RfMi5pZCA9IDEpCisgICBTdWJQbGFuIGV4cHJfMwor ICAgICAtPiAgUmVzdWx0CisgICAgICAgICAgIE91dHB1dDogKGhqdGVzdF8yLmMgKiA1KQorKDI4 IHJvd3MpCisKK1NFTEVDVCBoanRlc3RfMS5hIGExLCBoanRlc3RfMi5hIGEyLGhqdGVzdF8xLnRh Ymxlb2lkOjpyZWdjbGFzcyB0MSwgaGp0ZXN0XzIudGFibGVvaWQ6OnJlZ2NsYXNzIHQyCitGUk9N IGhqdGVzdF8yLCBoanRlc3RfMQorV0hFUkUKKyAgICBoanRlc3RfMS5pZCA9IChTRUxFQ1QgMSBX SEVSRSBoanRlc3RfMi5pZCA9IDEpCisgICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpID0g KFNFTEVDVCBoanRlc3RfMi5jKjUpCisgICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpIDwg NTAKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMi5jICogNSkgPCA1NQorICAgIEFORCBoanRlc3Rf MS5hIDw+IGhqdGVzdF8yLmI7CisgIGExICB8IGEyIHwgICAgdDEgICAgfCAgICB0MiAgICAKKy0t LS0tLSstLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHRleHQgfCB0ICB8IGhqdGVzdF8xIHwg aGp0ZXN0XzIKKygxIHJvdykKKworUk9MTEJBQ0s7CistLSBWZXJpZnkgdGhhdCB3ZSBiZWhhdmUg c2FuZWx5IHdoZW4gdGhlIGlubmVyIGhhc2gga2V5cyBjb250YWluIHBhcmFtZXRlcnMKKy0tICh0 aGF0IGlzLCBvdXRlciBvciBsYXRlcmFsIHJlZmVyZW5jZXMpLiAgVGhpcyBzaXR1YXRpb24gaGFz IHRvIGRlZmVhdAorLS0gcmUtdXNlIG9mIHRoZSBpbm5lciBoYXNoIHRhYmxlIGFjcm9zcyByZXNj YW5zLgorYmVnaW47CitzZXQgbG9jYWwgZW5hYmxlX2hhc2hqb2luID0gb247CitleHBsYWluIChj b3N0cyBvZmYpCitzZWxlY3QgaTgucTIsIHNzLiogZnJvbQoraW50OF90YmwgaTgsCitsYXRlcmFs IChzZWxlY3QgdDEuZml2ZXRob3VzLCBpNC5mMSBmcm9tIHRlbmsxIHQxIGpvaW4gaW50NF90Ymwg aTQKKyAgICAgICAgIG9uIHQxLmZpdmV0aG91cyA9IGk0LmYxK2k4LnEyIG9yZGVyIGJ5IDEsMikg c3M7CisgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBOZXN0ZWQgTG9vcAorICAgLT4gIFNlcSBTY2FuIG9uIGludDhfdGJsIGk4 CisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IHQxLmZpdmV0aG91cywgaTQuZjEKKyAg ICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLmZpdmV0 aG91cyA9IChpNC5mMSArIGk4LnEyKSkKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0 ZW5rMSB0MQorICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBpbnQ0X3RibCBpNAorKDkgcm93cykKKworc2VsZWN0IGk4LnEyLCBzcy4q IGZyb20KK2ludDhfdGJsIGk4LAorbGF0ZXJhbCAoc2VsZWN0IHQxLmZpdmV0aG91cywgaTQuZjEg ZnJvbSB0ZW5rMSB0MSBqb2luIGludDRfdGJsIGk0CisgICAgICAgICBvbiB0MS5maXZldGhvdXMg PSBpNC5mMStpOC5xMiBvcmRlciBieSAxLDIpIHNzOworIHEyICB8IGZpdmV0aG91cyB8IGYxIAor LS0tLS0rLS0tLS0tLS0tLS0rLS0tLQorIDQ1NiB8ICAgICAgIDQ1NiB8ICAwCisgNDU2IHwgICAg ICAgNDU2IHwgIDAKKyAxMjMgfCAgICAgICAxMjMgfCAgMAorIDEyMyB8ICAgICAgIDEyMyB8ICAw CisoNCByb3dzKQorCityb2xsYmFjazsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFy YWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4 IDAyMWQ1N2Y2NmJiLi5lZWIwNjQwN2QxMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9w YXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxl CkBAIC0xNSw3ICsxNSw2IEBAIHRlc3Q6IHRlc3Rfc2V0dXAKICMgVGhlIGZpcnN0IGdyb3VwIG9m IHBhcmFsbGVsIHRlc3RzCiAjIC0tLS0tLS0tLS0KIHRlc3Q6IGJvb2xlYW4gY2hhciBuYW1lIHZh cmNoYXIgdGV4dCBpbnQyIGludDQgaW50OCBvaWQgZmxvYXQ0IGZsb2F0OCBiaXQgbnVtZXJpYyB0 eGlkIHV1aWQgZW51bSBtb25leSByYW5nZXR5cGVzIHBnX2xzbiByZWdwcm9jCi0KICMgLS0tLS0t LS0tLQogIyBUaGUgc2Vjb25kIGdyb3VwIG9mIHBhcmFsbGVsIHRlc3RzCiAjIG11bHRpcmFuZ2V0 eXBlcyBkZXBlbmRzIG9uIHJhbmdldHlwZXMKQEAgLTE0MCwzICsxMzksNiBAQCB0ZXN0OiBmYXN0 X2RlZmF1bHQKICMgcnVuIHRhYmxlc3BhY2UgdGVzdCBhdCB0aGUgZW5kIGJlY2F1c2UgaXQgZHJv cHMgdGhlIHRhYmxlc3BhY2UgY3JlYXRlZCBkdXJpbmcKICMgc2V0dXAgdGhhdCBvdGhlciB0ZXN0 cyBtYXkgdXNlLgogdGVzdDogdGFibGVzcGFjZQorCisjIHRoaXMgdGVzdCBpcyBlcXVpdmFsZW50 IHRvIGpvaW5faGFzaCB0ZXN0IGp1c3QgdGhlIGNvbXByZXNzaW9uIGlzIGVuYWJsZWQKK3Rlc3Q6 IGpvaW5faGFzaF9wZ2x6CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qb2luX2hh c2hfbHo0LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW5faGFzaF9sejQuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43Zjc5MjQyYzMwNgotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW5faGFzaF9sejQuc3FsCkBAIC0wLDAg KzEsNjI3IEBACistLQorLS0gZXhlcmNpc2VzIGZvciB0aGUgaGFzaCBqb2luIGNvZGUKKy0tCisK K2JlZ2luOworCitzZXQgbG9jYWwgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZSA9IDA7Citz ZXQgbG9jYWwgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CitzZXQgbG9jYWwgZW5hYmxlX2hhc2hq b2luID0gb247CitzZXQgbG9jYWwgdGVtcF9maWxlX2NvbXByZXNzaW9uID0gJ2x6NCc7CisKKy0t IEV4dHJhY3QgYnVja2V0IGFuZCBiYXRjaCBjb3VudHMgZnJvbSBhbiBleHBsYWluIGFuYWx5emUg cGxhbi4gIEluCistLSBnZW5lcmFsIHdlIGNhbid0IG1ha2UgYXNzZXJ0aW9ucyBhYm91dCBob3cg bWFueSBiYXRjaGVzIChvcgorLS0gYnVja2V0cykgd2lsbCBiZSByZXF1aXJlZCBiZWNhdXNlIGl0 IGNhbiB2YXJ5LCBidXQgd2UgY2FuIGluIHNvbWUKKy0tIHNwZWNpYWwgY2FzZXMgYW5kIHdlIGNh biBjaGVjayBmb3IgZ3Jvd3RoLgorY3JlYXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gZmluZF9oYXNo KG5vZGUganNvbikKK3JldHVybnMganNvbiBsYW5ndWFnZSBwbHBnc3FsCithcworJCQKK2RlY2xh cmUKKyAgeCBqc29uOworICBjaGlsZCBqc29uOworYmVnaW4KKyAgaWYgbm9kZS0+PidOb2RlIFR5 cGUnID0gJ0hhc2gnIHRoZW4KKyAgICByZXR1cm4gbm9kZTsKKyAgZWxzZQorICAgIGZvciBjaGls ZCBpbiBzZWxlY3QganNvbl9hcnJheV9lbGVtZW50cyhub2RlLT4nUGxhbnMnKQorICAgIGxvb3AK KyAgICAgIHggOj0gZmluZF9oYXNoKGNoaWxkKTsKKyAgICAgIGlmIHggaXMgbm90IG51bGwgdGhl bgorICAgICAgICByZXR1cm4geDsKKyAgICAgIGVuZCBpZjsKKyAgICBlbmQgbG9vcDsKKyAgICBy ZXR1cm4gbnVsbDsKKyAgZW5kIGlmOworZW5kOworJCQ7CitjcmVhdGUgb3IgcmVwbGFjZSBmdW5j dGlvbiBoYXNoX2pvaW5fYmF0Y2hlcyhxdWVyeSB0ZXh0KQorcmV0dXJucyB0YWJsZSAob3JpZ2lu YWwgaW50LCBmaW5hbCBpbnQpIGxhbmd1YWdlIHBscGdzcWwKK2FzCiskJAorZGVjbGFyZQorICB3 aG9sZV9wbGFuIGpzb247CisgIGhhc2hfbm9kZSBqc29uOworYmVnaW4KKyAgZm9yIHdob2xlX3Bs YW4gaW4KKyAgICBleGVjdXRlICdleHBsYWluIChhbmFseXplLCBmb3JtYXQgJydqc29uJycpICcg fHwgcXVlcnkKKyAgbG9vcAorICAgIGhhc2hfbm9kZSA6PSBmaW5kX2hhc2goanNvbl9leHRyYWN0 X3BhdGgod2hvbGVfcGxhbiwgJzAnLCAnUGxhbicpKTsKKyAgICBvcmlnaW5hbCA6PSBoYXNoX25v ZGUtPj4nT3JpZ2luYWwgSGFzaCBCYXRjaGVzJzsKKyAgICBmaW5hbCA6PSBoYXNoX25vZGUtPj4n SGFzaCBCYXRjaGVzJzsKKyAgICByZXR1cm4gbmV4dDsKKyAgZW5kIGxvb3A7CitlbmQ7CiskJDsK KworLS0gTWFrZSBhIHNpbXBsZSByZWxhdGlvbiB3aXRoIHdlbGwgZGlzdHJpYnV0ZWQga2V5cyBh bmQgY29ycmVjdGx5CistLSBlc3RpbWF0ZWQgc2l6ZS4KK2NyZWF0ZSB0YWJsZSBzaW1wbGUgYXMK KyAgc2VsZWN0IGdlbmVyYXRlX3NlcmllcygxLCAyMDAwMCkgQVMgaWQsICdhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhJzsKK2FsdGVyIHRhYmxlIHNpbXBsZSBzZXQgKHBhcmFsbGVs X3dvcmtlcnMgPSAyKTsKK2FuYWx5emUgc2ltcGxlOworCistLSBNYWtlIGEgcmVsYXRpb24gd2hv c2Ugc2l6ZSB3ZSB3aWxsIHVuZGVyLWVzdGltYXRlLiAgV2Ugd2FudCBzdGF0cworLS0gdG8gc2F5 IDEwMDAgcm93cywgYnV0IGFjdHVhbGx5IHRoZXJlIGFyZSAyMCwwMDAgcm93cy4KK2NyZWF0ZSB0 YWJsZSBiaWdnZXJfdGhhbl9pdF9sb29rcyBhcworICBzZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEs IDIwMDAwKSBhcyBpZCwgJ2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEnOworYWx0 ZXIgdGFibGUgYmlnZ2VyX3RoYW5faXRfbG9va3Mgc2V0IChhdXRvdmFjdXVtX2VuYWJsZWQgPSAn ZmFsc2UnKTsKK2FsdGVyIHRhYmxlIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHNldCAocGFyYWxsZWxf d29ya2VycyA9IDIpOworYW5hbHl6ZSBiaWdnZXJfdGhhbl9pdF9sb29rczsKK3VwZGF0ZSBwZ19j bGFzcyBzZXQgcmVsdHVwbGVzID0gMTAwMCB3aGVyZSByZWxuYW1lID0gJ2JpZ2dlcl90aGFuX2l0 X2xvb2tzJzsKKworLS0gTWFrZSBhIHJlbGF0aW9uIHdob3NlIHNpemUgd2UgdW5kZXJlc3RpbWF0 ZSBhbmQgdGhhdCBhbHNvIGhhcyBhCistLSBraW5kIG9mIHNrZXcgdGhhdCBicmVha3Mgb3VyIGJh dGNoaW5nIHNjaGVtZS4gIFdlIHdhbnQgc3RhdHMgdG8gc2F5CistLSAyIHJvd3MsIGJ1dCBhY3R1 YWxseSB0aGVyZSBhcmUgMjAsMDAwIHJvd3Mgd2l0aCB0aGUgc2FtZSBrZXkuCitjcmVhdGUgdGFi bGUgZXh0cmVtZWx5X3NrZXdlZCAoaWQgaW50LCB0IHRleHQpOworYWx0ZXIgdGFibGUgZXh0cmVt ZWx5X3NrZXdlZCBzZXQgKGF1dG92YWN1dW1fZW5hYmxlZCA9ICdmYWxzZScpOworYWx0ZXIgdGFi bGUgZXh0cmVtZWx5X3NrZXdlZCBzZXQgKHBhcmFsbGVsX3dvcmtlcnMgPSAyKTsKK2FuYWx5emUg ZXh0cmVtZWx5X3NrZXdlZDsKK2luc2VydCBpbnRvIGV4dHJlbWVseV9za2V3ZWQKKyAgc2VsZWN0 IDQyIGFzIGlkLCAnYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYScKKyAgZnJvbSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMjAwMDApOwordXBkYXRlIHBnX2NsYXNzCisgIHNldCByZWx0dXBs ZXMgPSAyLCByZWxwYWdlcyA9IHBnX3JlbGF0aW9uX3NpemUoJ2V4dHJlbWVseV9za2V3ZWQnKSAv IDgxOTIKKyAgd2hlcmUgcmVsbmFtZSA9ICdleHRyZW1lbHlfc2tld2VkJzsKKworLS0gTWFrZSBh IHJlbGF0aW9uIHdpdGggYSBjb3VwbGUgb2YgZW5vcm1vdXMgdHVwbGVzLgorY3JlYXRlIHRhYmxl IHdpZGUgYXMgc2VsZWN0IGdlbmVyYXRlX3NlcmllcygxLCAyKSBhcyBpZCwgcnBhZCgnJywgMzIw MDAwLCAneCcpIGFzIHQ7CithbHRlciB0YWJsZSB3aWRlIHNldCAocGFyYWxsZWxfd29ya2VycyA9 IDIpOworCistLSBUaGUgIm9wdGltYWwiIGNhc2U6IHRoZSBoYXNoIHRhYmxlIGZpdHMgaW4gbWVt b3J5OyB3ZSBwbGFuIGZvciAxCistLSBiYXRjaCwgd2Ugc3RpY2sgdG8gdGhhdCBudW1iZXIsIGFu ZCBwZWFrIG1lbW9yeSB1c2FnZSBzdGF5cyB3aXRoaW4KKy0tIG91ciB3b3JrX21lbSBidWRnZXQK KworLS0gbm9uLXBhcmFsbGVsCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3Bh cmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnNE1C JzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworZXhwbGFpbiAoY29zdHMg b2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5n IChpZCk7CitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5n IChpZCk7CitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5h bCA+IG9yaWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNo ZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVz aW5nIChpZCk7CiskJCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsKKworLS0gcGFyYWxsZWwgd2l0 aCBwYXJhbGxlbC1vYmxpdmlvdXMgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQg bG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitzZXQgbG9jYWwgd29y a19tZW0gPSAnNE1CJzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0 IGxvY2FsIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworZXhwbGFpbiAoY29zdHMgb2ZmKQor ICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7 CitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7 CitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9y aWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCisk JAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChp ZCk7CiskJCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsKKworLS0gcGFyYWxsZWwgd2l0aCBwYXJh bGxlbC1hd2FyZSBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhf cGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK3NldCBsb2NhbCB3b3JrX21lbSA9ICc0 TUInOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9jYWwgZW5h YmxlX3BhcmFsbGVsX2hhc2ggPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNv dW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworc2VsZWN0IGNv dW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworc2VsZWN0IG9y aWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBhcyBp bmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0 IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworJCQpOwor cm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIFRoZSAiZ29vZCIgY2FzZTogYmF0Y2hlcyByZXF1 aXJlZCwgYnV0IHdlIHBsYW4gdGhlIHJpZ2h0IG51bWJlcjsgd2UKKy0tIHBsYW4gZm9yIHNvbWUg bnVtYmVyIG9mIGJhdGNoZXMsIGFuZCB3ZSBzdGljayB0byB0aGF0IG51bWJlciwgYW5kCistLSBw ZWFrIG1lbW9yeSB1c2FnZSBzYXlzIHdpdGhpbiBvdXIgd29ya19tZW0gYnVkZ2V0CisKKy0tIG5v bi1wYXJhbGxlbAorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93 b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzEyOGtCJzsKK3Nl dCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworZXhwbGFpbiAoY29zdHMgb2ZmKQor ICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7 CitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7 CitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9y aWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCisk JAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChp ZCk7CiskJCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsKKworLS0gcGFyYWxsZWwgd2l0aCBwYXJh bGxlbC1vYmxpdmlvdXMgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwg bWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitzZXQgbG9jYWwgd29ya19tZW0g PSAnMTI4a0InOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9j YWwgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNl bGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKK3Nl bGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKK3Nl bGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0Y2gsIGZpbmFsID4gb3JpZ2lu YWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisg IHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsK KyQkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBwYXJhbGxlbCB3aXRoIHBhcmFsbGVs LWF3YXJlIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJh bGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzE5MmtC JzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0IGxvY2FsIGVuYWJs ZV9wYXJhbGxlbF9oYXNoID0gb247CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3Vu dCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBjb3Vu dCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBvcmln aW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0Y2gsIGZpbmFsID4gb3JpZ2luYWwgYXMgaW5j cmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBj b3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKKyQkKTsKKy0t IHBhcmFsbGVsIGZ1bGwgbXVsdGktYmF0Y2ggaGFzaCBqb2luCitzZWxlY3QgY291bnQoKikgZnJv bSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKK3JvbGxiYWNr IHRvIHNldHRpbmdzOworCistLSBUaGUgImJhZCIgY2FzZTogZHVyaW5nIGV4ZWN1dGlvbiB3ZSBu ZWVkIHRvIGluY3JlYXNlIG51bWJlciBvZgorLS0gYmF0Y2hlczsgaW4gdGhpcyBjYXNlIHdlIHBs YW4gZm9yIDEgYmF0Y2gsIGFuZCBpbmNyZWFzZSBhdCBsZWFzdCBhCistLSBjb3VwbGUgb2YgdGlt ZXMsIGFuZCBwZWFrIG1lbW9yeSB1c2FnZSBzdGF5cyB3aXRoaW4gb3VyIHdvcmtfbWVtCistLSBi dWRnZXQKKworLS0gbm9uLXBhcmFsbGVsCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwg bWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CitzZXQgbG9jYWwgd29ya19tZW0g PSAnMTI4a0InOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWlu IChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBGUk9NIHNpbXBsZSByIEpPSU4gYmlnZ2Vy X3RoYW5faXRfbG9va3MgcyBVU0lORyAoaWQpOworc2VsZWN0IGNvdW50KCopIEZST00gc2ltcGxl IHIgSk9JTiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIFVTSU5HIChpZCk7CitzZWxlY3Qgb3JpZ2lu YWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFsIGFzIGluY3Jl YXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291 bnQoKikgRlJPTSBzaW1wbGUgciBKT0lOIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMgVVNJTkcgKGlk KTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBwYXJhbGxlbCB3aXRoIHBhcmFs bGVsLW9ibGl2aW91cyBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBt YXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK3NldCBsb2NhbCB3b3JrX21lbSA9 ICcxMjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2Nh bCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2Vs ZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIHVz aW5nIChpZCk7CitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGJpZ2dlcl90aGFu X2l0X2xvb2tzIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5 X211bHRpYmF0Y2gsIGZpbmFsID4gb3JpZ2luYWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJv bSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSBy IGpvaW4gYmlnZ2VyX3RoYW5faXRfbG9va3MgcyB1c2luZyAoaWQpOworJCQpOworcm9sbGJhY2sg dG8gc2V0dGluZ3M7CisKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtYXdhcmUgaGFzaCBqb2lu CitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVy X2dhdGhlciA9IDE7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnMTkya0InOworc2V0IGxvY2FsIGhh c2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9jYWwgZW5hYmxlX3BhcmFsbGVsX2hhc2gg PSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxl IHIgam9pbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7CitzZWxlY3QgY291bnQo KikgZnJvbSBzaW1wbGUgciBqb2luIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMgdXNpbmcgKGlkKTsK K3NlbGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0Y2gsIGZpbmFsID4gb3Jp Z2luYWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQk CisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gYmlnZ2VyX3RoYW5faXRfbG9v a3MgcyB1c2luZyAoaWQpOworJCQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIFRoZSAi dWdseSIgY2FzZTogaW5jcmVhc2luZyB0aGUgbnVtYmVyIG9mIGJhdGNoZXMgZHVyaW5nIGV4ZWN1 dGlvbgorLS0gZG9lc24ndCBoZWxwLCBzbyBzdG9wIHRyeWluZyB0byBmaXQgaW4gd29ya19tZW0g YW5kIGhvcGUgZm9yIHRoZQorLS0gYmVzdDsgaW4gdGhpcyBjYXNlIHdlIHBsYW4gZm9yIDEgYmF0 Y2gsIGluY3JlYXNlcyBqdXN0IG9uY2UgYW5kCistLSB0aGVuIHN0b3AgaW5jcmVhc2luZyBiZWNh dXNlIHRoYXQgZGlkbid0IGhlbHAgYXQgYWxsLCBzbyB3ZSBibG93CistLSByaWdodCB0aHJvdWdo IHRoZSB3b3JrX21lbSBidWRnZXQgYW5kIGhvcGUgZm9yIHRoZSBiZXN0Li4uCisKKy0tIG5vbi1w YXJhbGxlbAorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3Jr ZXJzX3Blcl9nYXRoZXIgPSAwOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzEyOGtCJzsKK3NldCBs b2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBz ZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4dHJlbWVseV9za2V3ZWQgcyB1c2lu ZyAoaWQpOworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1lbHlfc2tl d2VkIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCAqIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAor ICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4dHJlbWVseV9za2V3ZWQgcyB1 c2luZyAoaWQpOworJCQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIHBhcmFsbGVsIHdp dGggcGFyYWxsZWwtb2JsaXZpb3VzIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0 IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdv cmtfbWVtID0gJzEyOGtCJzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOwor c2V0IGxvY2FsIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworZXhwbGFpbiAoY29zdHMgb2Zm KQorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4dHJlbWVseV9za2V3ZWQg cyB1c2luZyAoaWQpOworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1l bHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCAqIGZyb20gaGFzaF9qb2luX2JhdGNoZXMo CiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4dHJlbWVseV9za2V3 ZWQgcyB1c2luZyAoaWQpOworJCQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIHBhcmFs bGVsIHdpdGggcGFyYWxsZWwtYXdhcmUgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7Citz ZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDE7CitzZXQgbG9jYWwg d29ya19tZW0gPSAnMTI4a0InOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7 CitzZXQgbG9jYWwgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9m ZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1lbHlfc2tld2Vk IHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVt ZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7CitzZWxlY3QgKiBmcm9tIGhhc2hfam9pbl9iYXRjaGVz KAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1lbHlfc2tl d2VkIHMgdXNpbmcgKGlkKTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBBIGNv dXBsZSBvZiBvdGhlciBoYXNoIGpvaW4gdGVzdHMgdW5yZWxhdGVkIHRvIHdvcmtfbWVtIG1hbmFn ZW1lbnQuCisKKy0tIENoZWNrIHRoYXQgRVhQTEFJTiBBTkFMWVpFIGhhcyBkYXRhIGV2ZW4gaWYg dGhlIGxlYWRlciBkb2Vzbid0IHBhcnRpY2lwYXRlCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQg bG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitzZXQgbG9jYWwgd29y a19tZW0gPSAnNE1CJzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0 IGxvY2FsIHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uID0gb2ZmOworc2VsZWN0ICogZnJv bSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSBy IGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOwor CistLSBFeGVyY2lzZSByZXNjYW5zLiAgV2UnbGwgdHVybiBvZmYgcGFyYWxsZWxfbGVhZGVyX3Bh cnRpY2lwYXRpb24gc28KKy0tIHRoYXQgd2UgY2FuIGNoZWNrIHRoYXQgaW5zdHJ1bWVudGF0aW9u IGNvbWVzIGJhY2sgY29ycmVjdGx5LgorCitjcmVhdGUgdGFibGUgam9pbl9mb28gYXMgc2VsZWN0 IGdlbmVyYXRlX3NlcmllcygxLCAzKSBhcyBpZCwgJ3h4eHh4Jzo6dGV4dCBhcyB0OworYWx0ZXIg dGFibGUgam9pbl9mb28gc2V0IChwYXJhbGxlbF93b3JrZXJzID0gMCk7CitjcmVhdGUgdGFibGUg am9pbl9iYXIgYXMgc2VsZWN0IGdlbmVyYXRlX3NlcmllcygxLCAxMDAwMCkgYXMgaWQsICd4eHh4 eCc6OnRleHQgYXMgdDsKK2FsdGVyIHRhYmxlIGpvaW5fYmFyIHNldCAocGFyYWxsZWxfd29ya2Vy cyA9IDIpOworYW5hbHl6ZSBqb2luX2Zvbywgam9pbl9iYXI7CisKKy0tIG11bHRpLWJhdGNoIHdp dGggcmVzY2FuLCBwYXJhbGxlbC1vYmxpdmlvdXMKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBl bmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK3NldCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBh dGlvbiA9IG9mZjsKK3NldCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplID0gMDsKK3NldCBw YXJhbGxlbF9zZXR1cF9jb3N0ID0gMDsKK3NldCBwYXJhbGxlbF90dXBsZV9jb3N0ID0gMDsKK3Nl dCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK3NldCBlbmFibGVfbWF0ZXJp YWwgPSBvZmY7CitzZXQgZW5hYmxlX21lcmdlam9pbiA9IG9mZjsKK3NldCB3b3JrX21lbSA9ICc2 NGtCJzsKK3NldCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworZXhwbGFpbiAoY29zdHMgb2Zm KQorICBzZWxlY3QgY291bnQoKikgZnJvbSBqb2luX2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0 IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQp KSBzcworICAgIG9uIGpvaW5fZm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNz LmlkIC0gMTsKK3NlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgIGxlZnQgam9pbiAoc2Vs ZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAo aWQpKSBzcworICBvbiBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBz cy5pZCAtIDE7CitzZWxlY3QgZmluYWwgPiAxIGFzIG11bHRpYmF0Y2gKKyAgZnJvbSBoYXNoX2pv aW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgICAgbGVm dCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFy IGIyIHVzaW5nIChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpv aW5fZm9vLmlkID4gc3MuaWQgLSAxOworJCQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0t IHNpbmdsZS1iYXRjaCB3aXRoIHJlc2NhbiwgcGFyYWxsZWwtb2JsaXZpb3VzCitzYXZlcG9pbnQg c2V0dGluZ3M7CitzZXQgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7CitzZXQgcGFyYWxsZWxf bGVhZGVyX3BhcnRpY2lwYXRpb24gPSBvZmY7CitzZXQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5f c2l6ZSA9IDA7CitzZXQgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CitzZXQgcGFyYWxsZWxfdHVw bGVfY29zdCA9IDA7CitzZXQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7Citz ZXQgZW5hYmxlX21hdGVyaWFsID0gb2ZmOworc2V0IGVuYWJsZV9tZXJnZWpvaW4gPSBvZmY7Citz ZXQgd29ya19tZW0gPSAnNE1CJzsKK3NldCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworZXhw bGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBqb2luX2ZvbworICAgIGxl ZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2luX2Jh ciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9uIGpvaW5fZm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBq b2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKK3NlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisg IGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2lu X2JhciBiMiB1c2luZyAoaWQpKSBzcworICBvbiBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQg am9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CitzZWxlY3QgZmluYWwgPiAxIGFzIG11bHRpYmF0Y2gK KyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpv aW5fZm9vCisgICAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBi MSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBz cy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworJCQpOworcm9sbGJhY2sgdG8g c2V0dGluZ3M7CisKKy0tIG11bHRpLWJhdGNoIHdpdGggcmVzY2FuLCBwYXJhbGxlbC1hd2FyZQor c2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb247CitzZXQg cGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRpb24gPSBvZmY7CitzZXQgbWluX3BhcmFsbGVsX3Rh YmxlX3NjYW5fc2l6ZSA9IDA7CitzZXQgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CitzZXQgcGFy YWxsZWxfdHVwbGVfY29zdCA9IDA7CitzZXQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhl ciA9IDI7CitzZXQgZW5hYmxlX21hdGVyaWFsID0gb2ZmOworc2V0IGVuYWJsZV9tZXJnZWpvaW4g PSBvZmY7CitzZXQgd29ya19tZW0gPSAnNjRrQic7CitzZXQgaGFzaF9tZW1fbXVsdGlwbGllciA9 IDEuMDsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9m b28KKyAgICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIxIGpv aW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgICBvbiBqb2luX2Zvby5pZCA8IHNzLmlk ICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CitzZWxlY3QgY291bnQoKikgZnJvbSBq b2luX2ZvbworICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIx IGpvaW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgb24gam9pbl9mb28uaWQgPCBzcy5p ZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworc2VsZWN0IGZpbmFsID4gMSBhcyBt dWx0aWJhdGNoCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQo KikgZnJvbSBqb2luX2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20g am9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9uIGpvaW5f Zm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyQkKTsKK3Jv bGxiYWNrIHRvIHNldHRpbmdzOworCistLSBzaW5nbGUtYmF0Y2ggd2l0aCByZXNjYW4sIHBhcmFs bGVsLWF3YXJlCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgZW5hYmxlX3BhcmFsbGVsX2hhc2gg PSBvbjsKK3NldCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBhdGlvbiA9IG9mZjsKK3NldCBtaW5f cGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplID0gMDsKK3NldCBwYXJhbGxlbF9zZXR1cF9jb3N0ID0g MDsKK3NldCBwYXJhbGxlbF90dXBsZV9jb3N0ID0gMDsKK3NldCBtYXhfcGFyYWxsZWxfd29ya2Vy c19wZXJfZ2F0aGVyID0gMjsKK3NldCBlbmFibGVfbWF0ZXJpYWwgPSBvZmY7CitzZXQgZW5hYmxl X21lcmdlam9pbiA9IG9mZjsKK3NldCB3b3JrX21lbSA9ICc0TUInOworc2V0IGhhc2hfbWVtX211 bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBm cm9tIGpvaW5fZm9vCisgICAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2lu X2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgICAgb24gam9pbl9mb28u aWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworc2VsZWN0IGNvdW50 KCopIGZyb20gam9pbl9mb28KKyAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBq b2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgIG9uIGpvaW5fZm9v LmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKK3NlbGVjdCBmaW5h bCA+IDEgYXMgbXVsdGliYXRjaAorICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2Vs ZWN0IGNvdW50KCopIGZyb20gam9pbl9mb28KKyAgICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwg YjEudCBmcm9tIGpvaW5fYmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAg ICBvbiBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7 CiskJCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsKKworLS0gQSBmdWxsIG91dGVyIGpvaW4gd2hl cmUgZXZlcnkgcmVjb3JkIGlzIG1hdGNoZWQuCisKKy0tIG5vbi1wYXJhbGxlbAorc2F2ZXBvaW50 IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAw OworZXhwbGFpbiAoY29zdHMgb2ZmKQorICAgICBzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxl IHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CitzZWxlY3QgIGNvdW50KCop IGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7Cityb2xs YmFjayB0byBzZXR0aW5nczsKKworLS0gcGFyYWxsZWxpc20gbm90IHBvc3NpYmxlIHdpdGggcGFy YWxsZWwtb2JsaXZpb3VzIGZ1bGwgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQg ZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtl cnNfcGVyX2dhdGhlciA9IDI7CitleHBsYWluIChjb3N0cyBvZmYpCisgICAgIHNlbGVjdCAgY291 bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsK K3NlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMg dXNpbmcgKGlkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBwYXJhbGxlbGlzbSBpcyBw b3NzaWJsZSB3aXRoIHBhcmFsbGVsLWF3YXJlIGZ1bGwgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0 dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7Citl eHBsYWluIChjb3N0cyBvZmYpCisgICAgIHNlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBm dWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCAgY291bnQoKikgZnJv bSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKK3JvbGxiYWNr IHRvIHNldHRpbmdzOworCistLSBBIGZ1bGwgb3V0ZXIgam9pbiB3aGVyZSBldmVyeSByZWNvcmQg aXMgbm90IG1hdGNoZWQuCisKKy0tIG5vbi1wYXJhbGxlbAorc2F2ZXBvaW50IHNldHRpbmdzOwor c2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworZXhwbGFpbiAo Y29zdHMgb2ZmKQorICAgICBzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRl ciBqb2luIHNpbXBsZSBzIG9uIChyLmlkID0gMCAtIHMuaWQpOworc2VsZWN0ICBjb3VudCgqKSBm cm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyBvbiAoci5pZCA9IDAgLSBzLmlk KTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBwYXJhbGxlbGlzbSBub3QgcG9zc2libGUg d2l0aCBwYXJhbGxlbC1vYmxpdmlvdXMgZnVsbCBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5n czsKK3NldCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK3NldCBsb2NhbCBtYXhfcGFyYWxs ZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgICAgc2Vs ZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyBvbiAo ci5pZCA9IDAgLSBzLmlkKTsKK3NlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91 dGVyIGpvaW4gc2ltcGxlIHMgb24gKHIuaWQgPSAwIC0gcy5pZCk7Cityb2xsYmFjayB0byBzZXR0 aW5nczsKKworLS0gcGFyYWxsZWxpc20gaXMgcG9zc2libGUgd2l0aCBwYXJhbGxlbC1hd2FyZSBm dWxsIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxl bF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICAgICBzZWxl Y3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBzIG9uIChy LmlkID0gMCAtIHMuaWQpOworc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0 ZXIgam9pbiBzaW1wbGUgcyBvbiAoci5pZCA9IDAgLSBzLmlkKTsKK3JvbGxiYWNrIHRvIHNldHRp bmdzOworCisKKy0tIGV4ZXJjaXNlIHNwZWNpYWwgY29kZSBwYXRocyBmb3IgaHVnZSB0dXBsZXMg KG5vdGUgdXNlIG9mIG5vbi1zdHJpY3QKKy0tIGV4cHJlc3Npb24gYW5kIGxlZnQgam9pbiByZXF1 aXJlZCB0byBnZXQgdGhlIGRldG9hc3RlZCB0dXBsZSBpbnRvCistLSB0aGUgaGFzaCB0YWJsZSkK KworLS0gcGFyYWxsZWwgd2l0aCBwYXJhbGxlbC1hd2FyZSBoYXNoIGpvaW4gKGhpdHMgRXhlY1Bh cmFsbGVsSGFzaExvYWRUdXBsZSBhbmQKKy0tIHN0c19wdXR0dXBsZSBvdmVyc2l6ZWQgdHVwbGUg Y2FzZXMgYmVjYXVzZSBpdCdzIG11bHRpLWJhdGNoKQorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0 IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGVuYWJsZV9wYXJhbGxl bF9oYXNoID0gb247CitzZXQgd29ya19tZW0gPSAnMTI4a0InOworc2V0IGhhc2hfbWVtX211bHRp cGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBsZW5ndGgobWF4KHMu dCkpCisgIGZyb20gd2lkZSBsZWZ0IGpvaW4gKHNlbGVjdCBpZCwgY29hbGVzY2UodCwgJycpIHx8 ICcnIGFzIHQgZnJvbSB3aWRlKSBzIHVzaW5nIChpZCk7CitzZWxlY3QgbGVuZ3RoKG1heChzLnQp KQorZnJvbSB3aWRlIGxlZnQgam9pbiAoc2VsZWN0IGlkLCBjb2FsZXNjZSh0LCAnJykgfHwgJycg YXMgdCBmcm9tIHdpZGUpIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBmaW5hbCA+IDEgYXMgbXVsdGli YXRjaAorICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGxlbmd0aChtYXgo cy50KSkKKyAgZnJvbSB3aWRlIGxlZnQgam9pbiAoc2VsZWN0IGlkLCBjb2FsZXNjZSh0LCAnJykg fHwgJycgYXMgdCBmcm9tIHdpZGUpIHMgdXNpbmcgKGlkKTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNl dHRpbmdzOworCisKKy0tIEhhc2ggam9pbiByZXVzZXMgdGhlIEhPVCBzdGF0dXMgYml0IHRvIGlu ZGljYXRlIG1hdGNoIHN0YXR1cy4gVGhpcyBjYW4gb25seQorLS0gYmUgZ3VhcmFudGVlZCB0byBw cm9kdWNlIGNvcnJlY3QgcmVzdWx0cyBpZiBhbGwgdGhlIGhhc2ggam9pbiB0dXBsZSBtYXRjaAor LS0gYml0cyBhcmUgcmVzZXQgYmVmb3JlIHJldXNlLiBUaGlzIGlzIGRvbmUgdXBvbiBsb2FkaW5n IHRoZW0gaW50byB0aGUKKy0tIGhhc2h0YWJsZS4KK1NBVkVQT0lOVCBzZXR0aW5nczsKK1NFVCBl bmFibGVfcGFyYWxsZWxfaGFzaCA9IG9uOworU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3Np emUgPSAwOworU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworU0VUIHBhcmFsbGVsX3R1cGxl X2Nvc3QgPSAwOworQ1JFQVRFIFRBQkxFIGhqdGVzdF9tYXRjaGJpdHNfdDEoaWQgaW50KTsKK0NS RUFURSBUQUJMRSBoanRlc3RfbWF0Y2hiaXRzX3QyKGlkIGludCk7CitJTlNFUlQgSU5UTyBoanRl c3RfbWF0Y2hiaXRzX3QxIFZBTFVFUyAoMSk7CitJTlNFUlQgSU5UTyBoanRlc3RfbWF0Y2hiaXRz X3QyIFZBTFVFUyAoMik7CistLSBVcGRhdGUgc2hvdWxkIGNyZWF0ZSBhIEhPVCB0dXBsZS4gSWYg dGhpcyBzdGF0dXMgYml0IGlzbid0IGNsZWFyZWQsIHdlIHdvbid0CistLSBjb3JyZWN0bHkgZW1p dCB0aGUgTlVMTC1leHRlbmRlZCB1bm1hdGNoaW5nIHR1cGxlIGluIGZ1bGwgaGFzaCBqb2luLgor VVBEQVRFIGhqdGVzdF9tYXRjaGJpdHNfdDIgc2V0IGlkID0gMjsKK1NFTEVDVCAqIEZST00gaGp0 ZXN0X21hdGNoYml0c190MSB0MSBGVUxMIEpPSU4gaGp0ZXN0X21hdGNoYml0c190MiB0MiBPTiB0 MS5pZCA9IHQyLmlkCisgIE9SREVSIEJZIHQxLmlkOworLS0gVGVzdCBzZXJpYWwgZnVsbCBoYXNo IGpvaW4uCistLSBSZXNldHRpbmcgcGFyYWxsZWxfc2V0dXBfY29zdCBzaG91bGQgZm9yY2UgYSBz ZXJpYWwgcGxhbi4KKy0tIEp1c3QgdG8gYmUgc2FmZSwgaG93ZXZlciwgc2V0IGVuYWJsZV9wYXJh bGxlbF9oYXNoIHRvIG9mZiwgYXMgcGFyYWxsZWwgZnVsbAorLS0gaGFzaCBqb2lucyBhcmUgb25s eSBzdXBwb3J0ZWQgd2l0aCBzaGFyZWQgaGFzaHRhYmxlcy4KK1JFU0VUIHBhcmFsbGVsX3NldHVw X2Nvc3Q7CitTRVQgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7CitTRUxFQ1QgKiBGUk9NIGhq dGVzdF9tYXRjaGJpdHNfdDEgdDEgRlVMTCBKT0lOIGhqdGVzdF9tYXRjaGJpdHNfdDIgdDIgT04g dDEuaWQgPSB0Mi5pZDsKK1JPTExCQUNLIFRPIHNldHRpbmdzOworCityb2xsYmFjazsKKworLS0g VmVyaWZ5IHRoYXQgaGFzaCBrZXkgZXhwcmVzc2lvbnMgcmVmZXJlbmNlIHRoZSBjb3JyZWN0Cist LSBub2Rlcy4gSGFzaGpvaW4ncyBoYXNoa2V5cyBuZWVkIHRvIHJlZmVyZW5jZSBpdHMgb3V0ZXIg cGxhbiwgSGFzaCdzCistLSBuZWVkIHRvIHJlZmVyZW5jZSBIYXNoJ3Mgb3V0ZXIgcGxhbiAod2hp Y2ggaXMgYmVsb3cgSGFzaEpvaW4ncworLS0gaW5uZXIgcGxhbikuIEl0J3Mgbm90IHRyaXZpYWwg dG8gdmVyaWZ5IHRoYXQgdGhlIHJlZmVyZW5jZXMgYXJlCistLSBjb3JyZWN0ICh3ZSBkb24ndCBk aXNwbGF5IHRoZSBoYXNoa2V5cyB0aGVtc2VsdmVzKSwgYnV0IGlmIHRoZQorLS0gaGFzaGtleXMg Y29udGFpbiBzdWJwbGFuIHJlZmVyZW5jZXMsIHRob3NlIHdpbGwgYmUgZGlzcGxheWVkLiBGb3Jj ZQorLS0gc3VicGxhbnMgdG8gYXBwZWFyIGp1c3QgYWJvdXQgZXZlcnl3aGVyZS4KKy0tCistLSBC dWcgcmVwb3J0OgorLS0gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9DQVBw SGZkdkdWZWdGX1RLS1JpQnJTbWF0SkwyZFI5dXdGQ3VSJTJCdGVRXzh0RVhVOG14ZyU0MG1haWwu Z21haWwuY29tCistLQorQkVHSU47CitTRVQgTE9DQUwgZW5hYmxlX3NvcnQgPSBPRkY7IC0tIGF2 b2lkIG1lcmdlam9pbnMKK1NFVCBMT0NBTCBmcm9tX2NvbGxhcHNlX2xpbWl0ID0gMTsgLS0gYWxs b3dzIGVhc3kgY2hhbmdpbmcgb2Ygam9pbiBvcmRlcgorCitDUkVBVEUgVEFCTEUgaGp0ZXN0XzEg KGEgdGV4dCwgYiBpbnQsIGlkIGludCwgYyBib29sKTsKK0NSRUFURSBUQUJMRSBoanRlc3RfMiAo YSBib29sLCBpZCBpbnQsIGIgdGV4dCwgYyBpbnQpOworCitJTlNFUlQgSU5UTyBoanRlc3RfMShh LCBiLCBpZCwgYykgVkFMVUVTICgndGV4dCcsIDIsIDEsIGZhbHNlKTsgLS0gbWF0Y2hlcworSU5T RVJUIElOVE8gaGp0ZXN0XzEoYSwgYiwgaWQsIGMpIFZBTFVFUyAoJ3RleHQnLCAxLCAyLCBmYWxz ZSk7IC0tIGZhaWxzIGlkIGpvaW4gY29uZGl0aW9uCitJTlNFUlQgSU5UTyBoanRlc3RfMShhLCBi LCBpZCwgYykgVkFMVUVTICgndGV4dCcsIDIwLCAxLCBmYWxzZSk7IC0tIGZhaWxzIDwgNTAKK0lO U0VSVCBJTlRPIGhqdGVzdF8xKGEsIGIsIGlkLCBjKSBWQUxVRVMgKCd0ZXh0JywgMSwgMSwgZmFs c2UpOyAtLSBmYWlscyAoU0VMRUNUIGhqdGVzdF8xLmIgKiA1KSA9IChTRUxFQ1QgaGp0ZXN0XzIu Yyo1KQorCitJTlNFUlQgSU5UTyBoanRlc3RfMihhLCBpZCwgYiwgYykgVkFMVUVTICh0cnVlLCAx LCAnYW5vdGhlcicsIDIpOyAtLSBtYXRjaGVzCitJTlNFUlQgSU5UTyBoanRlc3RfMihhLCBpZCwg YiwgYykgVkFMVUVTICh0cnVlLCAzLCAnYW5vdGhlcicsIDcpOyAtLSBmYWlscyBpZCBqb2luIGNv bmRpdGlvbgorSU5TRVJUIElOVE8gaGp0ZXN0XzIoYSwgaWQsIGIsIGMpIFZBTFVFUyAodHJ1ZSwg MSwgJ2Fub3RoZXInLCA5MCk7ICAtLSBmYWlscyA8IDU1CitJTlNFUlQgSU5UTyBoanRlc3RfMihh LCBpZCwgYiwgYykgVkFMVUVTICh0cnVlLCAxLCAnYW5vdGhlcicsIDMpOyAtLSBmYWlscyAoU0VM RUNUIGhqdGVzdF8xLmIgKiA1KSA9IChTRUxFQ1QgaGp0ZXN0XzIuYyo1KQorSU5TRVJUIElOVE8g aGp0ZXN0XzIoYSwgaWQsIGIsIGMpIFZBTFVFUyAodHJ1ZSwgMSwgJ3RleHQnLCAxKTsgLS0gIGZh aWxzIGhqdGVzdF8xLmEgPD4gaGp0ZXN0XzIuYjsKKworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJC T1NFKQorU0VMRUNUIGhqdGVzdF8xLmEgYTEsIGhqdGVzdF8yLmEgYTIsaGp0ZXN0XzEudGFibGVv aWQ6OnJlZ2NsYXNzIHQxLCBoanRlc3RfMi50YWJsZW9pZDo6cmVnY2xhc3MgdDIKK0ZST00gaGp0 ZXN0XzEsIGhqdGVzdF8yCitXSEVSRQorICAgIGhqdGVzdF8xLmlkID0gKFNFTEVDVCAxIFdIRVJF IGhqdGVzdF8yLmlkID0gMSkKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMS5iICogNSkgPSAoU0VM RUNUIGhqdGVzdF8yLmMqNSkKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMS5iICogNSkgPCA1MAor ICAgIEFORCAoU0VMRUNUIGhqdGVzdF8yLmMgKiA1KSA8IDU1CisgICAgQU5EIGhqdGVzdF8xLmEg PD4gaGp0ZXN0XzIuYjsKKworU0VMRUNUIGhqdGVzdF8xLmEgYTEsIGhqdGVzdF8yLmEgYTIsaGp0 ZXN0XzEudGFibGVvaWQ6OnJlZ2NsYXNzIHQxLCBoanRlc3RfMi50YWJsZW9pZDo6cmVnY2xhc3Mg dDIKK0ZST00gaGp0ZXN0XzEsIGhqdGVzdF8yCitXSEVSRQorICAgIGhqdGVzdF8xLmlkID0gKFNF TEVDVCAxIFdIRVJFIGhqdGVzdF8yLmlkID0gMSkKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMS5i ICogNSkgPSAoU0VMRUNUIGhqdGVzdF8yLmMqNSkKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMS5i ICogNSkgPCA1MAorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8yLmMgKiA1KSA8IDU1CisgICAgQU5E IGhqdGVzdF8xLmEgPD4gaGp0ZXN0XzIuYjsKKworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NF KQorU0VMRUNUIGhqdGVzdF8xLmEgYTEsIGhqdGVzdF8yLmEgYTIsaGp0ZXN0XzEudGFibGVvaWQ6 OnJlZ2NsYXNzIHQxLCBoanRlc3RfMi50YWJsZW9pZDo6cmVnY2xhc3MgdDIKK0ZST00gaGp0ZXN0 XzIsIGhqdGVzdF8xCitXSEVSRQorICAgIGhqdGVzdF8xLmlkID0gKFNFTEVDVCAxIFdIRVJFIGhq dGVzdF8yLmlkID0gMSkKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMS5iICogNSkgPSAoU0VMRUNU IGhqdGVzdF8yLmMqNSkKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMS5iICogNSkgPCA1MAorICAg IEFORCAoU0VMRUNUIGhqdGVzdF8yLmMgKiA1KSA8IDU1CisgICAgQU5EIGhqdGVzdF8xLmEgPD4g aGp0ZXN0XzIuYjsKKworU0VMRUNUIGhqdGVzdF8xLmEgYTEsIGhqdGVzdF8yLmEgYTIsaGp0ZXN0 XzEudGFibGVvaWQ6OnJlZ2NsYXNzIHQxLCBoanRlc3RfMi50YWJsZW9pZDo6cmVnY2xhc3MgdDIK K0ZST00gaGp0ZXN0XzIsIGhqdGVzdF8xCitXSEVSRQorICAgIGhqdGVzdF8xLmlkID0gKFNFTEVD VCAxIFdIRVJFIGhqdGVzdF8yLmlkID0gMSkKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMS5iICog NSkgPSAoU0VMRUNUIGhqdGVzdF8yLmMqNSkKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMS5iICog NSkgPCA1MAorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8yLmMgKiA1KSA8IDU1CisgICAgQU5EIGhq dGVzdF8xLmEgPD4gaGp0ZXN0XzIuYjsKKworUk9MTEJBQ0s7CisKKy0tIFZlcmlmeSB0aGF0IHdl IGJlaGF2ZSBzYW5lbHkgd2hlbiB0aGUgaW5uZXIgaGFzaCBrZXlzIGNvbnRhaW4gcGFyYW1ldGVy cworLS0gKHRoYXQgaXMsIG91dGVyIG9yIGxhdGVyYWwgcmVmZXJlbmNlcykuICBUaGlzIHNpdHVh dGlvbiBoYXMgdG8gZGVmZWF0CistLSByZS11c2Ugb2YgdGhlIGlubmVyIGhhc2ggdGFibGUgYWNy b3NzIHJlc2NhbnMuCitiZWdpbjsKK3NldCBsb2NhbCBlbmFibGVfaGFzaGpvaW4gPSBvbjsKKwor ZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0IGk4LnEyLCBzcy4qIGZyb20KK2ludDhfdGJsIGk4 LAorbGF0ZXJhbCAoc2VsZWN0IHQxLmZpdmV0aG91cywgaTQuZjEgZnJvbSB0ZW5rMSB0MSBqb2lu IGludDRfdGJsIGk0CisgICAgICAgICBvbiB0MS5maXZldGhvdXMgPSBpNC5mMStpOC5xMiBvcmRl ciBieSAxLDIpIHNzOworCitzZWxlY3QgaTgucTIsIHNzLiogZnJvbQoraW50OF90YmwgaTgsCits YXRlcmFsIChzZWxlY3QgdDEuZml2ZXRob3VzLCBpNC5mMSBmcm9tIHRlbmsxIHQxIGpvaW4gaW50 NF90YmwgaTQKKyAgICAgICAgIG9uIHQxLmZpdmV0aG91cyA9IGk0LmYxK2k4LnEyIG9yZGVyIGJ5 IDEsMikgc3M7CisKK3JvbGxiYWNrOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv am9pbl9oYXNoX3BnbHouc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvam9pbl9oYXNoX3BnbHou c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hNzUyOWVjMzQwMAot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW5faGFzaF9wZ2x6LnNx bApAQCAtMCwwICsxLDYyNyBAQAorLS0KKy0tIGV4ZXJjaXNlcyBmb3IgdGhlIGhhc2ggam9pbiBj b2RlCistLQorCitiZWdpbjsKKworc2V0IGxvY2FsIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3Np emUgPSAwOworc2V0IGxvY2FsIHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworc2V0IGxvY2FsIGVu YWJsZV9oYXNoam9pbiA9IG9uOworc2V0IGxvY2FsIHRlbXBfZmlsZV9jb21wcmVzc2lvbiA9ICdw Z2x6JzsKKworLS0gRXh0cmFjdCBidWNrZXQgYW5kIGJhdGNoIGNvdW50cyBmcm9tIGFuIGV4cGxh aW4gYW5hbHl6ZSBwbGFuLiAgSW4KKy0tIGdlbmVyYWwgd2UgY2FuJ3QgbWFrZSBhc3NlcnRpb25z IGFib3V0IGhvdyBtYW55IGJhdGNoZXMgKG9yCistLSBidWNrZXRzKSB3aWxsIGJlIHJlcXVpcmVk IGJlY2F1c2UgaXQgY2FuIHZhcnksIGJ1dCB3ZSBjYW4gaW4gc29tZQorLS0gc3BlY2lhbCBjYXNl cyBhbmQgd2UgY2FuIGNoZWNrIGZvciBncm93dGguCitjcmVhdGUgb3IgcmVwbGFjZSBmdW5jdGlv biBmaW5kX2hhc2gobm9kZSBqc29uKQorcmV0dXJucyBqc29uIGxhbmd1YWdlIHBscGdzcWwKK2Fz CiskJAorZGVjbGFyZQorICB4IGpzb247CisgIGNoaWxkIGpzb247CitiZWdpbgorICBpZiBub2Rl LT4+J05vZGUgVHlwZScgPSAnSGFzaCcgdGhlbgorICAgIHJldHVybiBub2RlOworICBlbHNlCisg ICAgZm9yIGNoaWxkIGluIHNlbGVjdCBqc29uX2FycmF5X2VsZW1lbnRzKG5vZGUtPidQbGFucycp CisgICAgbG9vcAorICAgICAgeCA6PSBmaW5kX2hhc2goY2hpbGQpOworICAgICAgaWYgeCBpcyBu b3QgbnVsbCB0aGVuCisgICAgICAgIHJldHVybiB4OworICAgICAgZW5kIGlmOworICAgIGVuZCBs b29wOworICAgIHJldHVybiBudWxsOworICBlbmQgaWY7CitlbmQ7CiskJDsKK2NyZWF0ZSBvciBy ZXBsYWNlIGZ1bmN0aW9uIGhhc2hfam9pbl9iYXRjaGVzKHF1ZXJ5IHRleHQpCityZXR1cm5zIHRh YmxlIChvcmlnaW5hbCBpbnQsIGZpbmFsIGludCkgbGFuZ3VhZ2UgcGxwZ3NxbAorYXMKKyQkCitk ZWNsYXJlCisgIHdob2xlX3BsYW4ganNvbjsKKyAgaGFzaF9ub2RlIGpzb247CitiZWdpbgorICBm b3Igd2hvbGVfcGxhbiBpbgorICAgIGV4ZWN1dGUgJ2V4cGxhaW4gKGFuYWx5emUsIGZvcm1hdCAn J2pzb24nJykgJyB8fCBxdWVyeQorICBsb29wCisgICAgaGFzaF9ub2RlIDo9IGZpbmRfaGFzaChq c29uX2V4dHJhY3RfcGF0aCh3aG9sZV9wbGFuLCAnMCcsICdQbGFuJykpOworICAgIG9yaWdpbmFs IDo9IGhhc2hfbm9kZS0+PidPcmlnaW5hbCBIYXNoIEJhdGNoZXMnOworICAgIGZpbmFsIDo9IGhh c2hfbm9kZS0+PidIYXNoIEJhdGNoZXMnOworICAgIHJldHVybiBuZXh0OworICBlbmQgbG9vcDsK K2VuZDsKKyQkOworCistLSBNYWtlIGEgc2ltcGxlIHJlbGF0aW9uIHdpdGggd2VsbCBkaXN0cmli dXRlZCBrZXlzIGFuZCBjb3JyZWN0bHkKKy0tIGVzdGltYXRlZCBzaXplLgorY3JlYXRlIHRhYmxl IHNpbXBsZSBhcworICBzZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMDAwKSBBUyBpZCwgJ2Fh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEnOworYWx0ZXIgdGFibGUgc2ltcGxlIHNl dCAocGFyYWxsZWxfd29ya2VycyA9IDIpOworYW5hbHl6ZSBzaW1wbGU7CisKKy0tIE1ha2UgYSBy ZWxhdGlvbiB3aG9zZSBzaXplIHdlIHdpbGwgdW5kZXItZXN0aW1hdGUuICBXZSB3YW50IHN0YXRz CistLSB0byBzYXkgMTAwMCByb3dzLCBidXQgYWN0dWFsbHkgdGhlcmUgYXJlIDIwLDAwMCByb3dz LgorY3JlYXRlIHRhYmxlIGJpZ2dlcl90aGFuX2l0X2xvb2tzIGFzCisgIHNlbGVjdCBnZW5lcmF0 ZV9zZXJpZXMoMSwgMjAwMDApIGFzIGlkLCAnYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYSc7CithbHRlciB0YWJsZSBiaWdnZXJfdGhhbl9pdF9sb29rcyBzZXQgKGF1dG92YWN1dW1f ZW5hYmxlZCA9ICdmYWxzZScpOworYWx0ZXIgdGFibGUgYmlnZ2VyX3RoYW5faXRfbG9va3Mgc2V0 IChwYXJhbGxlbF93b3JrZXJzID0gMik7CithbmFseXplIGJpZ2dlcl90aGFuX2l0X2xvb2tzOwor dXBkYXRlIHBnX2NsYXNzIHNldCByZWx0dXBsZXMgPSAxMDAwIHdoZXJlIHJlbG5hbWUgPSAnYmln Z2VyX3RoYW5faXRfbG9va3MnOworCistLSBNYWtlIGEgcmVsYXRpb24gd2hvc2Ugc2l6ZSB3ZSB1 bmRlcmVzdGltYXRlIGFuZCB0aGF0IGFsc28gaGFzIGEKKy0tIGtpbmQgb2Ygc2tldyB0aGF0IGJy ZWFrcyBvdXIgYmF0Y2hpbmcgc2NoZW1lLiAgV2Ugd2FudCBzdGF0cyB0byBzYXkKKy0tIDIgcm93 cywgYnV0IGFjdHVhbGx5IHRoZXJlIGFyZSAyMCwwMDAgcm93cyB3aXRoIHRoZSBzYW1lIGtleS4K K2NyZWF0ZSB0YWJsZSBleHRyZW1lbHlfc2tld2VkIChpZCBpbnQsIHQgdGV4dCk7CithbHRlciB0 YWJsZSBleHRyZW1lbHlfc2tld2VkIHNldCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gJ2ZhbHNlJyk7 CithbHRlciB0YWJsZSBleHRyZW1lbHlfc2tld2VkIHNldCAocGFyYWxsZWxfd29ya2VycyA9IDIp OworYW5hbHl6ZSBleHRyZW1lbHlfc2tld2VkOworaW5zZXJ0IGludG8gZXh0cmVtZWx5X3NrZXdl ZAorICBzZWxlY3QgNDIgYXMgaWQsICdhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh JworICBmcm9tIGdlbmVyYXRlX3NlcmllcygxLCAyMDAwMCk7Cit1cGRhdGUgcGdfY2xhc3MKKyAg c2V0IHJlbHR1cGxlcyA9IDIsIHJlbHBhZ2VzID0gcGdfcmVsYXRpb25fc2l6ZSgnZXh0cmVtZWx5 X3NrZXdlZCcpIC8gODE5MgorICB3aGVyZSByZWxuYW1lID0gJ2V4dHJlbWVseV9za2V3ZWQnOwor CistLSBNYWtlIGEgcmVsYXRpb24gd2l0aCBhIGNvdXBsZSBvZiBlbm9ybW91cyB0dXBsZXMuCitj cmVhdGUgdGFibGUgd2lkZSBhcyBzZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEsIDIpIGFzIGlkLCBy cGFkKCcnLCAzMjAwMDAsICd4JykgYXMgdDsKK2FsdGVyIHRhYmxlIHdpZGUgc2V0IChwYXJhbGxl bF93b3JrZXJzID0gMik7CisKKy0tIFRoZSAib3B0aW1hbCIgY2FzZTogdGhlIGhhc2ggdGFibGUg Zml0cyBpbiBtZW1vcnk7IHdlIHBsYW4gZm9yIDEKKy0tIGJhdGNoLCB3ZSBzdGljayB0byB0aGF0 IG51bWJlciwgYW5kIHBlYWsgbWVtb3J5IHVzYWdlIHN0YXlzIHdpdGhpbgorLS0gb3VyIHdvcmtf bWVtIGJ1ZGdldAorCistLSBub24tcGFyYWxsZWwKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBs b2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKK3NldCBsb2NhbCB3b3Jr X21lbSA9ICc0TUInOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBs YWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2lt cGxlIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2lt cGxlIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRp YmF0Y2gsIGZpbmFsID4gb3JpZ2luYWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNo X2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4g c2ltcGxlIHMgdXNpbmcgKGlkKTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBw YXJhbGxlbCB3aXRoIHBhcmFsbGVsLW9ibGl2aW91cyBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0 aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK3Nl dCBsb2NhbCB3b3JrX21lbSA9ICc0TUInOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIg PSAxLjA7CitzZXQgbG9jYWwgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7CitleHBsYWluIChj b3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMg dXNpbmcgKGlkKTsKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMg dXNpbmcgKGlkKTsKK3NlbGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0Y2gs IGZpbmFsID4gb3JpZ2luYWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pvaW5f YmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxl IHMgdXNpbmcgKGlkKTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBwYXJhbGxl bCB3aXRoIHBhcmFsbGVsLWF3YXJlIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0 IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdv cmtfbWVtID0gJzRNQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3Nl dCBsb2NhbCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9uOworZXhwbGFpbiAoY29zdHMgb2ZmKQor ICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7 CitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7 CitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9y aWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCisk JAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChp ZCk7CiskJCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsKKworLS0gVGhlICJnb29kIiBjYXNlOiBi YXRjaGVzIHJlcXVpcmVkLCBidXQgd2UgcGxhbiB0aGUgcmlnaHQgbnVtYmVyOyB3ZQorLS0gcGxh biBmb3Igc29tZSBudW1iZXIgb2YgYmF0Y2hlcywgYW5kIHdlIHN0aWNrIHRvIHRoYXQgbnVtYmVy LCBhbmQKKy0tIHBlYWsgbWVtb3J5IHVzYWdlIHNheXMgd2l0aGluIG91ciB3b3JrX21lbSBidWRn ZXQKKworLS0gbm9uLXBhcmFsbGVsCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4 X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CitzZXQgbG9jYWwgd29ya19tZW0gPSAn MTI4a0InOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChj b3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMg dXNpbmcgKGlkKTsKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMg dXNpbmcgKGlkKTsKK3NlbGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0Y2gs IGZpbmFsID4gb3JpZ2luYWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pvaW5f YmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxl IHMgdXNpbmcgKGlkKTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBwYXJhbGxl bCB3aXRoIHBhcmFsbGVsLW9ibGl2aW91cyBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsK K3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK3NldCBsb2Nh bCB3b3JrX21lbSA9ICcxMjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEu MDsKK3NldCBsb2NhbCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK2V4cGxhaW4gKGNvc3Rz IG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2lu ZyAoaWQpOworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2lu ZyAoaWQpOworc2VsZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmlu YWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRj aGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1 c2luZyAoaWQpOworJCQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIHBhcmFsbGVsIHdp dGggcGFyYWxsZWwtYXdhcmUgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9j YWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitzZXQgbG9jYWwgd29ya19t ZW0gPSAnMTkya0InOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQg bG9jYWwgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAg c2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOwor c2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOwor c2VsZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmln aW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQK KyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQp OworJCQpOworLS0gcGFyYWxsZWwgZnVsbCBtdWx0aS1iYXRjaCBoYXNoIGpvaW4KK3NlbGVjdCBj b3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQp Oworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIFRoZSAiYmFkIiBjYXNlOiBkdXJpbmcgZXhl Y3V0aW9uIHdlIG5lZWQgdG8gaW5jcmVhc2UgbnVtYmVyIG9mCistLSBiYXRjaGVzOyBpbiB0aGlz IGNhc2Ugd2UgcGxhbiBmb3IgMSBiYXRjaCwgYW5kIGluY3JlYXNlIGF0IGxlYXN0IGEKKy0tIGNv dXBsZSBvZiB0aW1lcywgYW5kIHBlYWsgbWVtb3J5IHVzYWdlIHN0YXlzIHdpdGhpbiBvdXIgd29y a19tZW0KKy0tIGJ1ZGdldAorCistLSBub24tcGFyYWxsZWwKK3NhdmVwb2ludCBzZXR0aW5nczsK K3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKK3NldCBsb2Nh bCB3b3JrX21lbSA9ICcxMjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEu MDsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIEZST00gc2ltcGxlIHIg Sk9JTiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIFVTSU5HIChpZCk7CitzZWxlY3QgY291bnQoKikg RlJPTSBzaW1wbGUgciBKT0lOIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMgVVNJTkcgKGlkKTsKK3Nl bGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0Y2gsIGZpbmFsID4gb3JpZ2lu YWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisg IHNlbGVjdCBjb3VudCgqKSBGUk9NIHNpbXBsZSByIEpPSU4gYmlnZ2VyX3RoYW5faXRfbG9va3Mg cyBVU0lORyAoaWQpOworJCQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIHBhcmFsbGVs IHdpdGggcGFyYWxsZWwtb2JsaXZpb3VzIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOwor c2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2Fs IHdvcmtfbWVtID0gJzEyOGtCJzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4w Oworc2V0IGxvY2FsIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworZXhwbGFpbiAoY29zdHMg b2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGJpZ2dlcl90aGFuX2l0 X2xvb2tzIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4g YmlnZ2VyX3RoYW5faXRfbG9va3MgcyB1c2luZyAoaWQpOworc2VsZWN0IG9yaWdpbmFsID4gMSBh cyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0 Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZy b20gc2ltcGxlIHIgam9pbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7CiskJCk7 Cityb2xsYmFjayB0byBzZXR0aW5nczsKKworLS0gcGFyYWxsZWwgd2l0aCBwYXJhbGxlbC1hd2Fy ZSBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxf d29ya2Vyc19wZXJfZ2F0aGVyID0gMTsKK3NldCBsb2NhbCB3b3JrX21lbSA9ICcxOTJrQic7Citz ZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2NhbCBlbmFibGVfcGFy YWxsZWxfaGFzaCA9IG9uOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikg ZnJvbSBzaW1wbGUgciBqb2luIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMgdXNpbmcgKGlkKTsKK3Nl bGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gYmlnZ2VyX3RoYW5faXRfbG9va3MgcyB1 c2luZyAoaWQpOworc2VsZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRjaCwg ZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9pbl9i YXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBiaWdnZXJf dGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7CiskJCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsK KworLS0gVGhlICJ1Z2x5IiBjYXNlOiBpbmNyZWFzaW5nIHRoZSBudW1iZXIgb2YgYmF0Y2hlcyBk dXJpbmcgZXhlY3V0aW9uCistLSBkb2Vzbid0IGhlbHAsIHNvIHN0b3AgdHJ5aW5nIHRvIGZpdCBp biB3b3JrX21lbSBhbmQgaG9wZSBmb3IgdGhlCistLSBiZXN0OyBpbiB0aGlzIGNhc2Ugd2UgcGxh biBmb3IgMSBiYXRjaCwgaW5jcmVhc2VzIGp1c3Qgb25jZSBhbmQKKy0tIHRoZW4gc3RvcCBpbmNy ZWFzaW5nIGJlY2F1c2UgdGhhdCBkaWRuJ3QgaGVscCBhdCBhbGwsIHNvIHdlIGJsb3cKKy0tIHJp Z2h0IHRocm91Z2ggdGhlIHdvcmtfbWVtIGJ1ZGdldCBhbmQgaG9wZSBmb3IgdGhlIGJlc3QuLi4K KworLS0gbm9uLXBhcmFsbGVsCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3Bh cmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnMTI4 a0InOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0 cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5X3Nr ZXdlZCBzIHVzaW5nIChpZCk7CitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4 dHJlbWVseV9za2V3ZWQgcyB1c2luZyAoaWQpOworc2VsZWN0ICogZnJvbSBoYXNoX2pvaW5fYmF0 Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5 X3NrZXdlZCBzIHVzaW5nIChpZCk7CiskJCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsKKworLS0g cGFyYWxsZWwgd2l0aCBwYXJhbGxlbC1vYmxpdmlvdXMgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0 dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7Citz ZXQgbG9jYWwgd29ya19tZW0gPSAnMTI4a0InOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxp ZXIgPSAxLjA7CitzZXQgbG9jYWwgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7CitleHBsYWlu IChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVt ZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7CitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBq b2luIGV4dHJlbWVseV9za2V3ZWQgcyB1c2luZyAoaWQpOworc2VsZWN0ICogZnJvbSBoYXNoX2pv aW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0 cmVtZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7CiskJCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsK KworLS0gcGFyYWxsZWwgd2l0aCBwYXJhbGxlbC1hd2FyZSBoYXNoIGpvaW4KK3NhdmVwb2ludCBz ZXR0aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMTsK K3NldCBsb2NhbCB3b3JrX21lbSA9ICcxMjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlw bGllciA9IDEuMDsKK3NldCBsb2NhbCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9uOworZXhwbGFp biAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4dHJl bWVseV9za2V3ZWQgcyB1c2luZyAoaWQpOworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIg am9pbiBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCAqIGZyb20gaGFzaF9q b2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4 dHJlbWVseV9za2V3ZWQgcyB1c2luZyAoaWQpOworJCQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7 CisKKy0tIEEgY291cGxlIG9mIG90aGVyIGhhc2ggam9pbiB0ZXN0cyB1bnJlbGF0ZWQgdG8gd29y a19tZW0gbWFuYWdlbWVudC4KKworLS0gQ2hlY2sgdGhhdCBFWFBMQUlOIEFOQUxZWkUgaGFzIGRh dGEgZXZlbiBpZiB0aGUgbGVhZGVyIGRvZXNuJ3QgcGFydGljaXBhdGUKK3NhdmVwb2ludCBzZXR0 aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK3Nl dCBsb2NhbCB3b3JrX21lbSA9ICc0TUInOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIg PSAxLjA7CitzZXQgbG9jYWwgcGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRpb24gPSBvZmY7Citz ZWxlY3QgKiBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZy b20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworJCQpOworcm9sbGJhY2sgdG8g c2V0dGluZ3M7CisKKy0tIEV4ZXJjaXNlIHJlc2NhbnMuICBXZSdsbCB0dXJuIG9mZiBwYXJhbGxl bF9sZWFkZXJfcGFydGljaXBhdGlvbiBzbworLS0gdGhhdCB3ZSBjYW4gY2hlY2sgdGhhdCBpbnN0 cnVtZW50YXRpb24gY29tZXMgYmFjayBjb3JyZWN0bHkuCisKK2NyZWF0ZSB0YWJsZSBqb2luX2Zv byBhcyBzZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEsIDMpIGFzIGlkLCAneHh4eHgnOjp0ZXh0IGFz IHQ7CithbHRlciB0YWJsZSBqb2luX2ZvbyBzZXQgKHBhcmFsbGVsX3dvcmtlcnMgPSAwKTsKK2Ny ZWF0ZSB0YWJsZSBqb2luX2JhciBhcyBzZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDAwKSBh cyBpZCwgJ3h4eHh4Jzo6dGV4dCBhcyB0OworYWx0ZXIgdGFibGUgam9pbl9iYXIgc2V0IChwYXJh bGxlbF93b3JrZXJzID0gMik7CithbmFseXplIGpvaW5fZm9vLCBqb2luX2JhcjsKKworLS0gbXVs dGktYmF0Y2ggd2l0aCByZXNjYW4sIHBhcmFsbGVsLW9ibGl2aW91cworc2F2ZXBvaW50IHNldHRp bmdzOworc2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworc2V0IHBhcmFsbGVsX2xlYWRl cl9wYXJ0aWNpcGF0aW9uID0gb2ZmOworc2V0IG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUg PSAwOworc2V0IHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworc2V0IHBhcmFsbGVsX3R1cGxlX2Nv c3QgPSAwOworc2V0IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGVu YWJsZV9tYXRlcmlhbCA9IG9mZjsKK3NldCBlbmFibGVfbWVyZ2Vqb2luID0gb2ZmOworc2V0IHdv cmtfbWVtID0gJzY0a0InOworc2V0IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWlu IChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgICAgbGVmdCBq b2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIy IHVzaW5nIChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5f Zm9vLmlkID4gc3MuaWQgLSAxOworc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9mb28KKyAgbGVm dCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFy IGIyIHVzaW5nIChpZCkpIHNzCisgIG9uIGpvaW5fZm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBqb2lu X2Zvby5pZCA+IHNzLmlkIC0gMTsKK3NlbGVjdCBmaW5hbCA+IDEgYXMgbXVsdGliYXRjaAorICBm cm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9m b28KKyAgICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIxIGpv aW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgICBvbiBqb2luX2Zvby5pZCA8IHNzLmlk ICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CiskJCk7Cityb2xsYmFjayB0byBzZXR0 aW5nczsKKworLS0gc2luZ2xlLWJhdGNoIHdpdGggcmVzY2FuLCBwYXJhbGxlbC1vYmxpdmlvdXMK K3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK3Nl dCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBhdGlvbiA9IG9mZjsKK3NldCBtaW5fcGFyYWxsZWxf dGFibGVfc2Nhbl9zaXplID0gMDsKK3NldCBwYXJhbGxlbF9zZXR1cF9jb3N0ID0gMDsKK3NldCBw YXJhbGxlbF90dXBsZV9jb3N0ID0gMDsKK3NldCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0 aGVyID0gMjsKK3NldCBlbmFibGVfbWF0ZXJpYWwgPSBvZmY7CitzZXQgZW5hYmxlX21lcmdlam9p biA9IG9mZjsKK3NldCB3b3JrX21lbSA9ICc0TUInOworc2V0IGhhc2hfbWVtX211bHRpcGxpZXIg PSAxLjA7CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5f Zm9vCisgICAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBq b2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBzcy5p ZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworc2VsZWN0IGNvdW50KCopIGZyb20g am9pbl9mb28KKyAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBi MSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgIG9uIGpvaW5fZm9vLmlkIDwgc3Mu aWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKK3NlbGVjdCBmaW5hbCA+IDEgYXMg bXVsdGliYXRjaAorICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50 KCopIGZyb20gam9pbl9mb28KKyAgICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9t IGpvaW5fYmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgICBvbiBqb2lu X2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CiskJCk7City b2xsYmFjayB0byBzZXR0aW5nczsKKworLS0gbXVsdGktYmF0Y2ggd2l0aCByZXNjYW4sIHBhcmFs bGVsLWF3YXJlCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgZW5hYmxlX3BhcmFsbGVsX2hhc2gg PSBvbjsKK3NldCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBhdGlvbiA9IG9mZjsKK3NldCBtaW5f cGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplID0gMDsKK3NldCBwYXJhbGxlbF9zZXR1cF9jb3N0ID0g MDsKK3NldCBwYXJhbGxlbF90dXBsZV9jb3N0ID0gMDsKK3NldCBtYXhfcGFyYWxsZWxfd29ya2Vy c19wZXJfZ2F0aGVyID0gMjsKK3NldCBlbmFibGVfbWF0ZXJpYWwgPSBvZmY7CitzZXQgZW5hYmxl X21lcmdlam9pbiA9IG9mZjsKK3NldCB3b3JrX21lbSA9ICc2NGtCJzsKK3NldCBoYXNoX21lbV9t dWx0aXBsaWVyID0gMS4wOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikg ZnJvbSBqb2luX2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9p bl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9uIGpvaW5fZm9v LmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKK3NlbGVjdCBjb3Vu dCgqKSBmcm9tIGpvaW5fZm9vCisgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20g am9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICBvbiBqb2luX2Zv by5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CitzZWxlY3QgZmlu YWwgPiAxIGFzIG11bHRpYmF0Y2gKKyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNl bGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgICAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQs IGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisg ICAgb24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAx OworJCQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIHNpbmdsZS1iYXRjaCB3aXRoIHJl c2NhbiwgcGFyYWxsZWwtYXdhcmUKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBlbmFibGVfcGFy YWxsZWxfaGFzaCA9IG9uOworc2V0IHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uID0gb2Zm Oworc2V0IG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOworc2V0IHBhcmFsbGVsX3Nl dHVwX2Nvc3QgPSAwOworc2V0IHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworc2V0IG1heF9wYXJh bGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGVuYWJsZV9tYXRlcmlhbCA9IG9mZjsK K3NldCBlbmFibGVfbWVyZ2Vqb2luID0gb2ZmOworc2V0IHdvcmtfbWVtID0gJzRNQic7CitzZXQg aGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0 IGNvdW50KCopIGZyb20gam9pbl9mb28KKyAgICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEu dCBmcm9tIGpvaW5fYmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgICBv biBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7Citz ZWxlY3QgY291bnQoKikgZnJvbSBqb2luX2ZvbworICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwg YjEudCBmcm9tIGpvaW5fYmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAg b24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOwor c2VsZWN0IGZpbmFsID4gMSBhcyBtdWx0aWJhdGNoCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMo CiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBqb2luX2ZvbworICAgIGxlZnQgam9pbiAoc2Vs ZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAo aWQpKSBzcworICAgIG9uIGpvaW5fZm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+ IHNzLmlkIC0gMTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBBIGZ1bGwgb3V0 ZXIgam9pbiB3aGVyZSBldmVyeSByZWNvcmQgaXMgbWF0Y2hlZC4KKworLS0gbm9uLXBhcmFsbGVs CitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVy X2dhdGhlciA9IDA7CitleHBsYWluIChjb3N0cyBvZmYpCisgICAgIHNlbGVjdCAgY291bnQoKikg ZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKK3NlbGVj dCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcg KGlkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBwYXJhbGxlbGlzbSBub3QgcG9zc2li bGUgd2l0aCBwYXJhbGxlbC1vYmxpdmlvdXMgZnVsbCBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0 aW5nczsKK3NldCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK3NldCBsb2NhbCBtYXhfcGFy YWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgICAg c2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1 c2luZyAoaWQpOworc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9p biBzaW1wbGUgcyB1c2luZyAoaWQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIHBhcmFs bGVsaXNtIGlzIHBvc3NpYmxlIHdpdGggcGFyYWxsZWwtYXdhcmUgZnVsbCBoYXNoIGpvaW4KK3Nh dmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0 aGVyID0gMjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgICAgc2VsZWN0ICBjb3VudCgqKSBmcm9t IHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworc2VsZWN0ICBj b3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQp Oworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIEEgZnVsbCBvdXRlciBqb2luIHdoZXJlIGV2 ZXJ5IHJlY29yZCBpcyBub3QgbWF0Y2hlZC4KKworLS0gbm9uLXBhcmFsbGVsCitzYXZlcG9pbnQg c2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7 CitleHBsYWluIChjb3N0cyBvZmYpCisgICAgIHNlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUg ciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgb24gKHIuaWQgPSAwIC0gcy5pZCk7CitzZWxlY3Qg IGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBzIG9uIChyLmlk ID0gMCAtIHMuaWQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIHBhcmFsbGVsaXNtIG5v dCBwb3NzaWJsZSB3aXRoIHBhcmFsbGVsLW9ibGl2aW91cyBmdWxsIGhhc2ggam9pbgorc2F2ZXBv aW50IHNldHRpbmdzOworc2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworc2V0IGxvY2Fs IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworZXhwbGFpbiAoY29zdHMgb2Zm KQorICAgICBzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNp bXBsZSBzIG9uIChyLmlkID0gMCAtIHMuaWQpOworc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBs ZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyBvbiAoci5pZCA9IDAgLSBzLmlkKTsKK3JvbGxi YWNrIHRvIHNldHRpbmdzOworCistLSBwYXJhbGxlbGlzbSBpcyBwb3NzaWJsZSB3aXRoIHBhcmFs bGVsLWF3YXJlIGZ1bGwgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwg bWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitleHBsYWluIChjb3N0cyBvZmYp CisgICAgIHNlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2lt cGxlIHMgb24gKHIuaWQgPSAwIC0gcy5pZCk7CitzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxl IHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBzIG9uIChyLmlkID0gMCAtIHMuaWQpOworcm9sbGJh Y2sgdG8gc2V0dGluZ3M7CisKKworLS0gZXhlcmNpc2Ugc3BlY2lhbCBjb2RlIHBhdGhzIGZvciBo dWdlIHR1cGxlcyAobm90ZSB1c2Ugb2Ygbm9uLXN0cmljdAorLS0gZXhwcmVzc2lvbiBhbmQgbGVm dCBqb2luIHJlcXVpcmVkIHRvIGdldCB0aGUgZGV0b2FzdGVkIHR1cGxlIGludG8KKy0tIHRoZSBo YXNoIHRhYmxlKQorCistLSBwYXJhbGxlbCB3aXRoIHBhcmFsbGVsLWF3YXJlIGhhc2ggam9pbiAo aGl0cyBFeGVjUGFyYWxsZWxIYXNoTG9hZFR1cGxlIGFuZAorLS0gc3RzX3B1dHR1cGxlIG92ZXJz aXplZCB0dXBsZSBjYXNlcyBiZWNhdXNlIGl0J3MgbXVsdGktYmF0Y2gpCitzYXZlcG9pbnQgc2V0 dGluZ3M7CitzZXQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitzZXQgZW5h YmxlX3BhcmFsbGVsX2hhc2ggPSBvbjsKK3NldCB3b3JrX21lbSA9ICcxMjhrQic7CitzZXQgaGFz aF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGxl bmd0aChtYXgocy50KSkKKyAgZnJvbSB3aWRlIGxlZnQgam9pbiAoc2VsZWN0IGlkLCBjb2FsZXNj ZSh0LCAnJykgfHwgJycgYXMgdCBmcm9tIHdpZGUpIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBsZW5n dGgobWF4KHMudCkpCitmcm9tIHdpZGUgbGVmdCBqb2luIChzZWxlY3QgaWQsIGNvYWxlc2NlKHQs ICcnKSB8fCAnJyBhcyB0IGZyb20gd2lkZSkgcyB1c2luZyAoaWQpOworc2VsZWN0IGZpbmFsID4g MSBhcyBtdWx0aWJhdGNoCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3Qg bGVuZ3RoKG1heChzLnQpKQorICBmcm9tIHdpZGUgbGVmdCBqb2luIChzZWxlY3QgaWQsIGNvYWxl c2NlKHQsICcnKSB8fCAnJyBhcyB0IGZyb20gd2lkZSkgcyB1c2luZyAoaWQpOworJCQpOworcm9s bGJhY2sgdG8gc2V0dGluZ3M7CisKKworLS0gSGFzaCBqb2luIHJldXNlcyB0aGUgSE9UIHN0YXR1 cyBiaXQgdG8gaW5kaWNhdGUgbWF0Y2ggc3RhdHVzLiBUaGlzIGNhbiBvbmx5CistLSBiZSBndWFy YW50ZWVkIHRvIHByb2R1Y2UgY29ycmVjdCByZXN1bHRzIGlmIGFsbCB0aGUgaGFzaCBqb2luIHR1 cGxlIG1hdGNoCistLSBiaXRzIGFyZSByZXNldCBiZWZvcmUgcmV1c2UuIFRoaXMgaXMgZG9uZSB1 cG9uIGxvYWRpbmcgdGhlbSBpbnRvIHRoZQorLS0gaGFzaHRhYmxlLgorU0FWRVBPSU5UIHNldHRp bmdzOworU0VUIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb247CitTRVQgbWluX3BhcmFsbGVsX3Rh YmxlX3NjYW5fc2l6ZSA9IDA7CitTRVQgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CitTRVQgcGFy YWxsZWxfdHVwbGVfY29zdCA9IDA7CitDUkVBVEUgVEFCTEUgaGp0ZXN0X21hdGNoYml0c190MShp ZCBpbnQpOworQ1JFQVRFIFRBQkxFIGhqdGVzdF9tYXRjaGJpdHNfdDIoaWQgaW50KTsKK0lOU0VS VCBJTlRPIGhqdGVzdF9tYXRjaGJpdHNfdDEgVkFMVUVTICgxKTsKK0lOU0VSVCBJTlRPIGhqdGVz dF9tYXRjaGJpdHNfdDIgVkFMVUVTICgyKTsKKy0tIFVwZGF0ZSBzaG91bGQgY3JlYXRlIGEgSE9U IHR1cGxlLiBJZiB0aGlzIHN0YXR1cyBiaXQgaXNuJ3QgY2xlYXJlZCwgd2Ugd29uJ3QKKy0tIGNv cnJlY3RseSBlbWl0IHRoZSBOVUxMLWV4dGVuZGVkIHVubWF0Y2hpbmcgdHVwbGUgaW4gZnVsbCBo YXNoIGpvaW4uCitVUERBVEUgaGp0ZXN0X21hdGNoYml0c190MiBzZXQgaWQgPSAyOworU0VMRUNU ICogRlJPTSBoanRlc3RfbWF0Y2hiaXRzX3QxIHQxIEZVTEwgSk9JTiBoanRlc3RfbWF0Y2hiaXRz X3QyIHQyIE9OIHQxLmlkID0gdDIuaWQKKyAgT1JERVIgQlkgdDEuaWQ7CistLSBUZXN0IHNlcmlh bCBmdWxsIGhhc2ggam9pbi4KKy0tIFJlc2V0dGluZyBwYXJhbGxlbF9zZXR1cF9jb3N0IHNob3Vs ZCBmb3JjZSBhIHNlcmlhbCBwbGFuLgorLS0gSnVzdCB0byBiZSBzYWZlLCBob3dldmVyLCBzZXQg ZW5hYmxlX3BhcmFsbGVsX2hhc2ggdG8gb2ZmLCBhcyBwYXJhbGxlbCBmdWxsCistLSBoYXNoIGpv aW5zIGFyZSBvbmx5IHN1cHBvcnRlZCB3aXRoIHNoYXJlZCBoYXNodGFibGVzLgorUkVTRVQgcGFy YWxsZWxfc2V0dXBfY29zdDsKK1NFVCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK1NFTEVD VCAqIEZST00gaGp0ZXN0X21hdGNoYml0c190MSB0MSBGVUxMIEpPSU4gaGp0ZXN0X21hdGNoYml0 c190MiB0MiBPTiB0MS5pZCA9IHQyLmlkOworUk9MTEJBQ0sgVE8gc2V0dGluZ3M7CisKK3JvbGxi YWNrOworCistLSBWZXJpZnkgdGhhdCBoYXNoIGtleSBleHByZXNzaW9ucyByZWZlcmVuY2UgdGhl IGNvcnJlY3QKKy0tIG5vZGVzLiBIYXNoam9pbidzIGhhc2hrZXlzIG5lZWQgdG8gcmVmZXJlbmNl IGl0cyBvdXRlciBwbGFuLCBIYXNoJ3MKKy0tIG5lZWQgdG8gcmVmZXJlbmNlIEhhc2gncyBvdXRl ciBwbGFuICh3aGljaCBpcyBiZWxvdyBIYXNoSm9pbidzCistLSBpbm5lciBwbGFuKS4gSXQncyBu b3QgdHJpdmlhbCB0byB2ZXJpZnkgdGhhdCB0aGUgcmVmZXJlbmNlcyBhcmUKKy0tIGNvcnJlY3Qg KHdlIGRvbid0IGRpc3BsYXkgdGhlIGhhc2hrZXlzIHRoZW1zZWx2ZXMpLCBidXQgaWYgdGhlCist LSBoYXNoa2V5cyBjb250YWluIHN1YnBsYW4gcmVmZXJlbmNlcywgdGhvc2Ugd2lsbCBiZSBkaXNw bGF5ZWQuIEZvcmNlCistLSBzdWJwbGFucyB0byBhcHBlYXIganVzdCBhYm91dCBldmVyeXdoZXJl LgorLS0KKy0tIEJ1ZyByZXBvcnQ6CistLSBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNz YWdlLWlkL0NBUHBIZmR2R1ZlZ0ZfVEtLUmlCclNtYXRKTDJkUjl1d0ZDdVIlMkJ0ZVFfOHRFWFU4 bXhnJTQwbWFpbC5nbWFpbC5jb20KKy0tCitCRUdJTjsKK1NFVCBMT0NBTCBlbmFibGVfc29ydCA9 IE9GRjsgLS0gYXZvaWQgbWVyZ2Vqb2lucworU0VUIExPQ0FMIGZyb21fY29sbGFwc2VfbGltaXQg PSAxOyAtLSBhbGxvd3MgZWFzeSBjaGFuZ2luZyBvZiBqb2luIG9yZGVyCisKK0NSRUFURSBUQUJM RSBoanRlc3RfMSAoYSB0ZXh0LCBiIGludCwgaWQgaW50LCBjIGJvb2wpOworQ1JFQVRFIFRBQkxF IGhqdGVzdF8yIChhIGJvb2wsIGlkIGludCwgYiB0ZXh0LCBjIGludCk7CisKK0lOU0VSVCBJTlRP IGhqdGVzdF8xKGEsIGIsIGlkLCBjKSBWQUxVRVMgKCd0ZXh0JywgMiwgMSwgZmFsc2UpOyAtLSBt YXRjaGVzCitJTlNFUlQgSU5UTyBoanRlc3RfMShhLCBiLCBpZCwgYykgVkFMVUVTICgndGV4dCcs IDEsIDIsIGZhbHNlKTsgLS0gZmFpbHMgaWQgam9pbiBjb25kaXRpb24KK0lOU0VSVCBJTlRPIGhq dGVzdF8xKGEsIGIsIGlkLCBjKSBWQUxVRVMgKCd0ZXh0JywgMjAsIDEsIGZhbHNlKTsgLS0gZmFp bHMgPCA1MAorSU5TRVJUIElOVE8gaGp0ZXN0XzEoYSwgYiwgaWQsIGMpIFZBTFVFUyAoJ3RleHQn LCAxLCAxLCBmYWxzZSk7IC0tIGZhaWxzIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpID0gKFNFTEVD VCBoanRlc3RfMi5jKjUpCisKK0lOU0VSVCBJTlRPIGhqdGVzdF8yKGEsIGlkLCBiLCBjKSBWQUxV RVMgKHRydWUsIDEsICdhbm90aGVyJywgMik7IC0tIG1hdGNoZXMKK0lOU0VSVCBJTlRPIGhqdGVz dF8yKGEsIGlkLCBiLCBjKSBWQUxVRVMgKHRydWUsIDMsICdhbm90aGVyJywgNyk7IC0tIGZhaWxz IGlkIGpvaW4gY29uZGl0aW9uCitJTlNFUlQgSU5UTyBoanRlc3RfMihhLCBpZCwgYiwgYykgVkFM VUVTICh0cnVlLCAxLCAnYW5vdGhlcicsIDkwKTsgIC0tIGZhaWxzIDwgNTUKK0lOU0VSVCBJTlRP IGhqdGVzdF8yKGEsIGlkLCBiLCBjKSBWQUxVRVMgKHRydWUsIDEsICdhbm90aGVyJywgMyk7IC0t IGZhaWxzIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpID0gKFNFTEVDVCBoanRlc3RfMi5jKjUpCitJ TlNFUlQgSU5UTyBoanRlc3RfMihhLCBpZCwgYiwgYykgVkFMVUVTICh0cnVlLCAxLCAndGV4dCcs IDEpOyAtLSAgZmFpbHMgaGp0ZXN0XzEuYSA8PiBoanRlc3RfMi5iOworCitFWFBMQUlOIChDT1NU UyBPRkYsIFZFUkJPU0UpCitTRUxFQ1QgaGp0ZXN0XzEuYSBhMSwgaGp0ZXN0XzIuYSBhMixoanRl c3RfMS50YWJsZW9pZDo6cmVnY2xhc3MgdDEsIGhqdGVzdF8yLnRhYmxlb2lkOjpyZWdjbGFzcyB0 MgorRlJPTSBoanRlc3RfMSwgaGp0ZXN0XzIKK1dIRVJFCisgICAgaGp0ZXN0XzEuaWQgPSAoU0VM RUNUIDEgV0hFUkUgaGp0ZXN0XzIuaWQgPSAxKQorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIg KiA1KSA9IChTRUxFQ1QgaGp0ZXN0XzIuYyo1KQorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIg KiA1KSA8IDUwCisgICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzIuYyAqIDUpIDwgNTUKKyAgICBBTkQg aGp0ZXN0XzEuYSA8PiBoanRlc3RfMi5iOworCitTRUxFQ1QgaGp0ZXN0XzEuYSBhMSwgaGp0ZXN0 XzIuYSBhMixoanRlc3RfMS50YWJsZW9pZDo6cmVnY2xhc3MgdDEsIGhqdGVzdF8yLnRhYmxlb2lk OjpyZWdjbGFzcyB0MgorRlJPTSBoanRlc3RfMSwgaGp0ZXN0XzIKK1dIRVJFCisgICAgaGp0ZXN0 XzEuaWQgPSAoU0VMRUNUIDEgV0hFUkUgaGp0ZXN0XzIuaWQgPSAxKQorICAgIEFORCAoU0VMRUNU IGhqdGVzdF8xLmIgKiA1KSA9IChTRUxFQ1QgaGp0ZXN0XzIuYyo1KQorICAgIEFORCAoU0VMRUNU IGhqdGVzdF8xLmIgKiA1KSA8IDUwCisgICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzIuYyAqIDUpIDwg NTUKKyAgICBBTkQgaGp0ZXN0XzEuYSA8PiBoanRlc3RfMi5iOworCitFWFBMQUlOIChDT1NUUyBP RkYsIFZFUkJPU0UpCitTRUxFQ1QgaGp0ZXN0XzEuYSBhMSwgaGp0ZXN0XzIuYSBhMixoanRlc3Rf MS50YWJsZW9pZDo6cmVnY2xhc3MgdDEsIGhqdGVzdF8yLnRhYmxlb2lkOjpyZWdjbGFzcyB0Mgor RlJPTSBoanRlc3RfMiwgaGp0ZXN0XzEKK1dIRVJFCisgICAgaGp0ZXN0XzEuaWQgPSAoU0VMRUNU IDEgV0hFUkUgaGp0ZXN0XzIuaWQgPSAxKQorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIgKiA1 KSA9IChTRUxFQ1QgaGp0ZXN0XzIuYyo1KQorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIgKiA1 KSA8IDUwCisgICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzIuYyAqIDUpIDwgNTUKKyAgICBBTkQgaGp0 ZXN0XzEuYSA8PiBoanRlc3RfMi5iOworCitTRUxFQ1QgaGp0ZXN0XzEuYSBhMSwgaGp0ZXN0XzIu YSBhMixoanRlc3RfMS50YWJsZW9pZDo6cmVnY2xhc3MgdDEsIGhqdGVzdF8yLnRhYmxlb2lkOjpy ZWdjbGFzcyB0MgorRlJPTSBoanRlc3RfMiwgaGp0ZXN0XzEKK1dIRVJFCisgICAgaGp0ZXN0XzEu aWQgPSAoU0VMRUNUIDEgV0hFUkUgaGp0ZXN0XzIuaWQgPSAxKQorICAgIEFORCAoU0VMRUNUIGhq dGVzdF8xLmIgKiA1KSA9IChTRUxFQ1QgaGp0ZXN0XzIuYyo1KQorICAgIEFORCAoU0VMRUNUIGhq dGVzdF8xLmIgKiA1KSA8IDUwCisgICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzIuYyAqIDUpIDwgNTUK KyAgICBBTkQgaGp0ZXN0XzEuYSA8PiBoanRlc3RfMi5iOworCitST0xMQkFDSzsKKworLS0gVmVy aWZ5IHRoYXQgd2UgYmVoYXZlIHNhbmVseSB3aGVuIHRoZSBpbm5lciBoYXNoIGtleXMgY29udGFp biBwYXJhbWV0ZXJzCistLSAodGhhdCBpcywgb3V0ZXIgb3IgbGF0ZXJhbCByZWZlcmVuY2VzKS4g IFRoaXMgc2l0dWF0aW9uIGhhcyB0byBkZWZlYXQKKy0tIHJlLXVzZSBvZiB0aGUgaW5uZXIgaGFz aCB0YWJsZSBhY3Jvc3MgcmVzY2Fucy4KK2JlZ2luOworc2V0IGxvY2FsIGVuYWJsZV9oYXNoam9p biA9IG9uOworCitleHBsYWluIChjb3N0cyBvZmYpCitzZWxlY3QgaTgucTIsIHNzLiogZnJvbQor aW50OF90YmwgaTgsCitsYXRlcmFsIChzZWxlY3QgdDEuZml2ZXRob3VzLCBpNC5mMSBmcm9tIHRl bmsxIHQxIGpvaW4gaW50NF90YmwgaTQKKyAgICAgICAgIG9uIHQxLmZpdmV0aG91cyA9IGk0LmYx K2k4LnEyIG9yZGVyIGJ5IDEsMikgc3M7CisKK3NlbGVjdCBpOC5xMiwgc3MuKiBmcm9tCitpbnQ4 X3RibCBpOCwKK2xhdGVyYWwgKHNlbGVjdCB0MS5maXZldGhvdXMsIGk0LmYxIGZyb20gdGVuazEg dDEgam9pbiBpbnQ0X3RibCBpNAorICAgICAgICAgb24gdDEuZml2ZXRob3VzID0gaTQuZjEraTgu cTIgb3JkZXIgYnkgMSwyKSBzczsKKworcm9sbGJhY2s7Ci0tIAoyLjM5LjUgKEFwcGxlIEdpdC0x NTQpCgo= --0000000000007f0fd20649351740--