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.94.2) (envelope-from ) id 1ustPf-00CbmL-BK for pgsql-hackers@arkaria.postgresql.org; Mon, 01 Sep 2025 01:32:53 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1ustPe-003SS8-Qr for pgsql-hackers@arkaria.postgresql.org; Mon, 01 Sep 2025 01:32:51 +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.94.2) (envelope-from ) id 1ustPe-003SRt-9E for pgsql-hackers@lists.postgresql.org; Mon, 01 Sep 2025 01:32:51 +0000 Received: from mail-yw1-x112d.google.com ([2607:f8b0:4864:20::112d]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1ustPb-002ugo-1l for pgsql-hackers@postgresql.org; Mon, 01 Sep 2025 01:32:50 +0000 Received: by mail-yw1-x112d.google.com with SMTP id 00721157ae682-71ff2b20039so34985237b3.3 for ; Sun, 31 Aug 2025 18:32:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756690365; x=1757295165; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=BXWb6P93qqmvyblwpuEMAvhaJfVtOzOttG1jOZs6YJw=; b=l9dLWIXy9690GomflgMgCtElXCx5WBgFzYNGvUOLZr60BZl3hLham5VOrjHre2vSWq +mCi4OLZMRwZnUJQgQah3m8VR+49db0IV3+IO1yTNBkwsPpDrYLQFdKPqQF5n1Y3pNv4 W5ebmkEU/EmP0icMTi7JQo6mVszqUw/bAbGz9XO0Gy6RrDRX7G47fB2ahY2Afzibo5Dc HsyGeDJwgqDoCKIncnY0ut0+82bz4D94n1Ns1K6NsZuAAEvhfJ+G8mlQwHhIz7qwUtMW UBNyGihFY2F5NKGhRJqD+7qj+rrEcncpMVnwTDhd1djVTEZl20g1YHMCqOEm4uhdD+8q m8EA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756690365; x=1757295165; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=BXWb6P93qqmvyblwpuEMAvhaJfVtOzOttG1jOZs6YJw=; b=L0aDb+Q4NAlui4DJaEqpdt89DwpMiCytftZfULWt4xvn+tO4YH1H11q95BsXFr7Ji7 l6kl2zW4hLu5er0UL5UZLtxPzyA47B8xJuk5BsDmGxra2dyBR+42TTmxToYtEZ4OP0Pp fzsOKT4PXmD520hE2NXoF96EWu9pyx8s/vRRrB8ohr964VsXT13/vUXBbtCFW9m9azoy I0NLOmLbBzruuhY1Ossk8nfk7v2BFK5B8F+mlcoJZew2Hco6KROjLxtpg5/Ik4Jco4Ry hj3s4AZANPhNRJ5IOWBwyhFpY1RuSASmBQKAAbKzycvL2rr8oYBOF9GcbrjR/9pv7PCs lu6g== X-Forwarded-Encrypted: i=1; AJvYcCXYEHVTzD1MOpRrBe14pBRAWqXXDPh5UiG1fa7fCMUKYOQ35jcNeM2PLGOYPSbyU7sNtkOFBsxg9xV+rq/f@postgresql.org X-Gm-Message-State: AOJu0YxAj00+TeMFWB4dFUG1r3Z6z1eLra8MEK4sPy+zTYYqHbdHRXDN JdjWr80C/HaZhBnmWADmeksoXsEmriL12S28EWs1KYZ4JWu1KNJYJQJQe10ZrwLciiO5GmpE2bp x/d7S2p/7pyo6lEYCm/rqC9sC29TIQ3mlQrat X-Gm-Gg: ASbGnctFwbj24SURZBt0b4VRQy1pP9q1TX6DyNEVzsFWTDrXRkEwQDWXk/FTgbFRDvq dx+R9OoAbqIyIGVecZVArJ/lA2dxTpUle5OUJM48duJzD+JxI7nkNVcQr1fsaD4cAma9yFS+E5/ u9tgV7AOEESmQJyy3X8YUwbZYVx15VTqvO9nw9wJ1EV6ZH+ihzRXkOXiM9yU2SfK9AyNbkPtdxG gz/3q7Q5R1gBG+j82N1 X-Google-Smtp-Source: AGHT+IEnJfdfkFI0Ybhu+m+EFNi0YP7RmUusj9Qc0Gpb3Df99mmBm/M51QWxJJAlhUjVLrBVFMuu2w//+KsunVPhU1c= X-Received: by 2002:a05:690c:9985:b0:71f:b624:322e with SMTP id 00721157ae682-722764af341mr75635407b3.26.1756690365382; Sun, 31 Aug 2025 18:32:45 -0700 (PDT) MIME-Version: 1.0 References: <87il22cj51.fsf@163.com> In-Reply-To: From: Richard Guo Date: Mon, 1 Sep 2025 10:32:33 +0900 X-Gm-Features: Ac12FXxn1xejwxEraaBKGHfQcXqhYqsaok1KP83nQ6UDccvU4_cduaiGQHE1JU4 Message-ID: Subject: Re: Eager aggregation, take 3 To: Matheus Alcantara Cc: Robert Haas , Tom Lane , Tender Wang , Paul George , Andy Fan , PostgreSQL-development , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="00000000000035db2d063db359a0" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000035db2d063db359a0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, Aug 9, 2025 at 10:32=E2=80=AFAM Richard Guo wrote: > OK. Here it is. This patch needs a rebase; here it is. No changes were made. - Richard --00000000000035db2d063db359a0 Content-Type: application/octet-stream; name="v20-0001-Implement-Eager-Aggregation.patch" Content-Disposition: attachment; filename="v20-0001-Implement-Eager-Aggregation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mf0g2pc70 RnJvbSA2MzM3OGNkYTE5MTJmOGJjYTM0NTVlMzc0NjM4YmEwMmNlMWFkNjUxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogVHVlLCAxMSBKdW4gMjAyNCAxNTo1OToxOSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjIw XSBJbXBsZW1lbnQgRWFnZXIgQWdncmVnYXRpb24KCkVhZ2VyIGFnZ3JlZ2F0aW9uIGlzIGEgcXVl cnkgb3B0aW1pemF0aW9uIHRlY2huaXF1ZSB0aGF0IHBhcnRpYWxseQpwdXNoZXMgYWdncmVnYXRp b24gcGFzdCBhIGpvaW4sIGFuZCBmaW5hbGl6ZXMgaXQgb25jZSBhbGwgdGhlCnJlbGF0aW9ucyBh cmUgam9pbmVkLiAgRWFnZXIgYWdncmVnYXRpb24gbWF5IHJlZHVjZSB0aGUgbnVtYmVyIG9mCmlu cHV0IHJvd3MgdG8gdGhlIGpvaW4gYW5kIHRodXMgY291bGQgcmVzdWx0IGluIGEgYmV0dGVyIG92 ZXJhbGwgcGxhbi4KCkluIHRoZSBjdXJyZW50IHBsYW5uZXIgYXJjaGl0ZWN0dXJlLCB0aGUgc2Vw YXJhdGlvbiBiZXR3ZWVuIHRoZQpzY2FuL2pvaW4gcGxhbm5pbmcgcGhhc2UgYW5kIHRoZSBwb3N0 LXNjYW4vam9pbiBwaGFzZSBtZWFucyB0aGF0CmFnZ3JlZ2F0aW9uIHN0ZXBzIGFyZSBub3Qgdmlz aWJsZSB3aGVuIGNvbnN0cnVjdGluZyB0aGUgam9pbiB0cmVlLApsaW1pdGluZyB0aGUgcGxhbm5l cidzIGFiaWxpdHkgdG8gZXhwbG9pdCBhZ2dyZWdhdGlvbi1hd2FyZQpvcHRpbWl6YXRpb25zLiAg VG8gaW1wbGVtZW50IGVhZ2VyIGFnZ3JlZ2F0aW9uLCB3ZSBjb2xsZWN0IGluZm9ybWF0aW9uCmFi b3V0IGFnZ3JlZ2F0ZSBmdW5jdGlvbnMgaW4gdGhlIHRhcmdldGxpc3QgYW5kIEhBVklORyBjbGF1 c2UsIGFsb25nCndpdGggZ3JvdXBpbmcgZXhwcmVzc2lvbnMgZnJvbSB0aGUgR1JPVVAgQlkgY2xh dXNlLCBhbmQgc3RvcmUgaXQgaW4KdGhlIFBsYW5uZXJJbmZvIG5vZGUuICBEdXJpbmcgdGhlIHNj YW4vam9pbiBwbGFubmluZyBwaGFzZSwgdGhpcwppbmZvcm1hdGlvbiBpcyB1c2VkIHRvIGV2YWx1 YXRlIGVhY2ggYmFzZSBvciBqb2luIHJlbGF0aW9uIHRvCmRldGVybWluZSB3aGV0aGVyIGVhZ2Vy IGFnZ3JlZ2F0aW9uIGNhbiBiZSBhcHBsaWVkLiAgSWYgYXBwbGljYWJsZSwgd2UKY3JlYXRlIGEg c2VwYXJhdGUgUmVsT3B0SW5mbywgcmVmZXJyZWQgdG8gYXMgYSBncm91cGVkIHJlbGF0aW9uLCB0 bwpyZXByZXNlbnQgdGhlIHBhcnRpYWxseS1hZ2dyZWdhdGVkIHZlcnNpb24gb2YgdGhlIHJlbGF0 aW9uIGFuZApnZW5lcmF0ZSBncm91cGVkIHBhdGhzIGZvciBpdC4KCkdyb3VwZWQgcmVsYXRpb24g cGF0aHMgY2FuIGJlIGdlbmVyYXRlZCBpbiB0d28gd2F5cy4gIFRoZSBmaXJzdCBtZXRob2QKaW52 b2x2ZXMgYWRkaW5nIHNvcnRlZCBhbmQgaGFzaGVkIHBhcnRpYWwgYWdncmVnYXRpb24gcGF0aHMg b24gdG9wIG9mCnRoZSBub24tZ3JvdXBlZCBwYXRocy4gIFRvIGxpbWl0IHBsYW5uaW5nIHRpbWUs IHdlIG9ubHkgY29uc2lkZXIgdGhlCmNoZWFwZXN0IG9yIHN1aXRhYmx5LXNvcnRlZCBub24tZ3Jv dXBlZCBwYXRocyBpbiB0aGlzIHN0ZXAuCkFsdGVybmF0aXZlbHksIGdyb3VwZWQgcGF0aHMgY2Fu IGJlIGdlbmVyYXRlZCBieSBqb2luaW5nIGEgZ3JvdXBlZApyZWxhdGlvbiB3aXRoIGEgbm9uLWdy b3VwZWQgcmVsYXRpb24uICBKb2luaW5nIHR3byBncm91cGVkIHJlbGF0aW9ucwppcyBjdXJyZW50 bHkgbm90IHN1cHBvcnRlZC4KClRvIGZ1cnRoZXIgbGltaXQgcGxhbm5pbmcgdGltZSwgd2UgY3Vy cmVudGx5IGFkb3B0IGEgc3RyYXRlZ3kgd2hlcmUKcGFydGlhbCBhZ2dyZWdhdGlvbiBpcyBwdXNo ZWQgb25seSB0byB0aGUgbG93ZXN0IGZlYXNpYmxlIGxldmVsIGluIHRoZQpqb2luIHRyZWUgd2hl cmUgaXQgcHJvdmlkZXMgYSBzaWduaWZpY2FudCByZWR1Y3Rpb24gaW4gcm93IGNvdW50LgpUaGlz IHN0cmF0ZWd5IGFsc28gaGVscHMgZW5zdXJlIHRoYXQgYWxsIGdyb3VwZWQgcGF0aHMgZm9yIHRo ZSBzYW1lCmdyb3VwZWQgcmVsYXRpb24gcHJvZHVjZSB0aGUgc2FtZSBzZXQgb2Ygcm93cywgd2hp Y2ggaXMgaW1wb3J0YW50IHRvCnN1cHBvcnQgYSBmdW5kYW1lbnRhbCBhc3N1bXB0aW9uIG9mIHRo ZSBwbGFubmVyLgoKRm9yIHRoZSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIHRoYXQgaXMgcHVzaGVkIGRv d24gdG8gYSBub24tYWdncmVnYXRlZApyZWxhdGlvbiwgd2UgbmVlZCB0byBjb25zaWRlciBhbGwg ZXhwcmVzc2lvbnMgZnJvbSB0aGlzIHJlbGF0aW9uIHRoYXQKYXJlIGludm9sdmVkIGluIHVwcGVy IGpvaW4gY2xhdXNlcyBhbmQgaW5jbHVkZSB0aGVtIGluIHRoZSBncm91cGluZwprZXlzLCB1c2lu ZyBjb21wYXRpYmxlIG9wZXJhdG9ycy4gIFRoaXMgaXMgZXNzZW50aWFsIHRvIGVuc3VyZSB0aGF0 IGFuCmFnZ3JlZ2F0ZWQgcm93IGZyb20gdGhlIHBhcnRpYWwgYWdncmVnYXRpb24gbWF0Y2hlcyB0 aGUgb3RoZXIgc2lkZSBvZgp0aGUgam9pbiBpZiBhbmQgb25seSBpZiBlYWNoIHJvdyBpbiB0aGUg cGFydGlhbCBncm91cCBkb2VzLiAgVGhpcwplbnN1cmVzIHRoYXQgYWxsIHJvd3Mgd2l0aGluIHRo ZSBzYW1lIHBhcnRpYWwgZ3JvdXAgc2hhcmUgdGhlIHNhbWUKImRlc3RpbnkiLCB3aGljaCBpcyBj cnVjaWFsIGZvciBtYWludGFpbmluZyBjb3JyZWN0bmVzcy4KCk9uZSByZXN0cmljdGlvbiBpcyB0 aGF0IHdlIGNhbm5vdCBwdXNoIHBhcnRpYWwgYWdncmVnYXRpb24gZG93biB0byBhCnJlbGF0aW9u IHRoYXQgaXMgaW4gdGhlIG51bGxhYmxlIHNpZGUgb2YgYW4gb3V0ZXIgam9pbiwgYmVjYXVzZSB0 aGUKTlVMTC1leHRlbmRlZCByb3dzIHByb2R1Y2VkIGJ5IHRoZSBvdXRlciBqb2luIHdvdWxkIG5v dCBiZSBhdmFpbGFibGUKd2hlbiB3ZSBwZXJmb3JtIHRoZSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uLCB3 aGlsZSB3aXRoIGEKbm9uLWVhZ2VyLWFnZ3JlZ2F0aW9uIHBsYW4gdGhlc2Ugcm93cyBhcmUgYXZh aWxhYmxlIGZvciB0aGUgdG9wLWxldmVsCmFnZ3JlZ2F0aW9uLiAgUHVzaGluZyBwYXJ0aWFsIGFn Z3JlZ2F0aW9uIGluIHRoaXMgY2FzZSBtYXkgcmVzdWx0IGluCnRoZSByb3dzIGJlaW5nIGdyb3Vw ZWQgZGlmZmVyZW50bHkgdGhhbiBleHBlY3RlZCwgb3IgcHJvZHVjZSBpbmNvcnJlY3QKdmFsdWVz IGZyb20gdGhlIGFnZ3JlZ2F0ZSBmdW5jdGlvbnMuCgpJZiB3ZSBoYXZlIGdlbmVyYXRlZCBhIGdy b3VwZWQgcmVsYXRpb24gZm9yIHRoZSB0b3Btb3N0IGpvaW4gcmVsYXRpb24sCndlIGZpbmFsaXpl IGl0cyBwYXRocyBhdCB0aGUgZW5kLiAgVGhlIGZpbmFsIHBhdGhzIHdpbGwgY29tcGV0ZSBpbiB0 aGUKdXN1YWwgd2F5IHdpdGggcGF0aHMgYnVpbHQgZnJvbSByZWd1bGFyIHBsYW5uaW5nLgoKVGhl IHBhdGNoIHdhcyBvcmlnaW5hbGx5IHByb3Bvc2VkIGJ5IEFudG9uaW4gSG91c2thIGluIDIwMTcu ICBUaGlzCmNvbW1pdCByZXdvcmtzIHZhcmlvdXMgaW1wb3J0YW50IGFzcGVjdHMgYW5kIHJld3Jp dGVzIG1vc3Qgb2YgdGhlCmN1cnJlbnQgY29kZS4gIEhvd2V2ZXIsIHRoZSBvcmlnaW5hbCBwYXRj aCBhbmQgcmV2aWV3cyB3ZXJlIHZlcnkKdXNlZnVsLgoKQXV0aG9yOiBSaWNoYXJkIEd1bywgQW50 b25pbiBIb3Vza2EKUmV2aWV3ZWQtYnk6IFJvYmVydCBIYWFzLCBKaWFuIEhlLCBUZW5kZXIgV2Fu ZywgUGF1bCBHZW9yZ2UsIFRvbSBMYW5lClJldmlld2VkLWJ5OiBUb21hcyBWb25kcmEsIEFuZHkg RmFuLCBBc2h1dG9zaCBCYXBhdApEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBTWJX czQ4anpMclB0MUpfMDBaY1BaWFdVUUthd1FPRkU4Uk9jLUFEaVlxc3FycEJOd0BtYWlsLmdtYWls LmNvbQotLS0KIC4uLi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCAgICB8 ICAgNDkgKy0KIGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgICAgICAgICAgICB8 ICAgMzEgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL1JFQURNRSAgICAgICAgICAgICAgICAgIHwg ICA4OSArKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL2dlcW8vZ2Vxb19ldmFsLmMgICAgICAgIHwg ICAyMSArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jICAgICAgICAgfCAg NDUzICsrKysrKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvam9pbnJlbHMuYyAgICAgICAg IHwgIDE5MyArKysKIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2luaXRzcGxhbi5jICAgICAg ICB8ICAzMjIgKysrKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm1haW4uYyAgICAg ICAgIHwgICAgOSArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgICAgICAg ICAgfCAgMTI0ICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMgICAg ICAgfCAgIDU5ICsKIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYyAgICAgICAg ICB8ICA2MjggKysrKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAg ICAgICAgICB8ICAgMjEgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYu c2FtcGxlIHwgICAgMiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCAgICAgICAgICAg ICAgICAgfCAgMTMwICsrCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaCAgICAgICAg ICAgICAgfCAgICA1ICsKIHNyYy9pbmNsdWRlL29wdGltaXplci9wYXRocy5oICAgICAgICAgICAg ICAgICB8ICAgIDYgKwogc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BsYW5tYWluLmggICAgICAgICAg ICAgIHwgICAgMSArCiAuLi4vcmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dCAg ICAgfCAgIDMyICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VhZ2VyX2FnZ3JlZ2F0ZS5v dXQgfCAxMzM0ICsrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pv aW4ub3V0ICAgICAgICAgICAgfCAgIDEyICstCiAuLi4vcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRp b25fYWdncmVnYXRlLm91dCAgfCAgICAyICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lz dmlld3Mub3V0ICAgICAgICB8ICAgIDMgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2No ZWR1bGUgICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2VhZ2VyX2Fn Z3JlZ2F0ZS5zcWwgICAgICB8ICAxOTQgKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRp b25fYWdncmVnYXRlLnNxbCAgfCAgICAyICsKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0ICAgICAgICAgICAgICB8ICAgIDMgKwogMjYgZmlsZXMgY2hhbmdlZCwgMzY1MyBpbnNlcnRp b25zKCspLCA3NCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2VhZ2VyX2FnZ3JlZ2F0ZS5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9yZWdyZXNzL3NxbC9lYWdlcl9hZ2dyZWdhdGUuc3FsCgpkaWZmIC0tZ2l0IGEvY29udHJp Yi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCBiL2NvbnRyaWIvcG9zdGdy ZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKaW5kZXggNzhiODM2N2QyODkuLmI2Yzg5 MmJkYjUxIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jl c19mZHcub3V0CisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zk dy5vdXQKQEAgLTM3MDEsMzAgKzM3MDEsMzMgQEAgc2VsZWN0IGNvdW50KHQxLmMzKSBmcm9tIGZ0 MiB0MSBsZWZ0IGpvaW4gZnQyIHQyIG9uICh0MS5jMSA9IHJhbmRvbSgpICogdDIuYzIpOwogLS0g U3VicXVlcnkgaW4gRlJPTSBjbGF1c2UgaGF2aW5nIGFnZ3JlZ2F0ZQogZXhwbGFpbiAodmVyYm9z ZSwgY29zdHMgb2ZmKQogc2VsZWN0IGNvdW50KCopLCB4LmIgZnJvbSBmdDEsIChzZWxlY3QgYzIg YSwgc3VtKGMxKSBiIGZyb20gZnQxIGdyb3VwIGJ5IGMyKSB4IHdoZXJlIGZ0MS5jMiA9IHguYSBn cm91cCBieSB4LmIgb3JkZXIgYnkgMSwgMjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgU29ydAotICAgT3V0cHV0OiAoY291bnQoKikpLCB4LmIKLSAgIFNvcnQgS2V5OiAoY291 bnQoKikpLCB4LmIKLSAgIC0+ICBIYXNoQWdncmVnYXRlCi0gICAgICAgICBPdXRwdXQ6IGNvdW50 KCopLCB4LmIKLSAgICAgICAgIEdyb3VwIEtleTogeC5iCi0gICAgICAgICAtPiAgSGFzaCBKb2lu Ci0gICAgICAgICAgICAgICBPdXRwdXQ6IHguYgotICAgICAgICAgICAgICAgSW5uZXIgVW5pcXVl OiB0cnVlCi0gICAgICAgICAgICAgICBIYXNoIENvbmQ6IChmdDEuYzIgPSB4LmEpCi0gICAgICAg ICAgICAgICAtPiAgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5mdDEKLSAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogZnQxLmMyCi0gICAgICAgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxF Q1QgYzIgRlJPTSAiUyAxIi4iVCAxIgotICAgICAgICAgICAgICAgLT4gIEhhc2gKLSAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogeC5iLCB4LmEKLSAgICAgICAgICAgICAgICAgICAgIC0+ICBT dWJxdWVyeSBTY2FuIG9uIHgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogeC5i LCB4LmEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4KLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogZnQxXzEuYzIsIChzdW0oZnQxXzEu YzEpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpb25zOiBBZ2dyZWdh dGUgb24gKHB1YmxpYy5mdDEgZnQxXzEpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBSZW1vdGUgU1FMOiBTRUxFQ1QgYzIsIHN1bSgiQyAxIikgRlJPTSAiUyAxIi4iVCAxIiBHUk9V UCBCWSAxCi0oMjEgcm93cykKKyAgIE91dHB1dDogKGNvdW50KCopKSwgKHN1bShmdDFfMS5jMSkp CisgICBTb3J0IEtleTogKGNvdW50KCopKSwgKHN1bShmdDFfMS5jMSkpCisgICAtPiAgRmluYWxp emUgR3JvdXBBZ2dyZWdhdGUKKyAgICAgICAgIE91dHB1dDogY291bnQoKiksIChzdW0oZnQxXzEu YzEpKQorICAgICAgICAgR3JvdXAgS2V5OiAoc3VtKGZ0MV8xLmMxKSkKKyAgICAgICAgIC0+ICBT b3J0CisgICAgICAgICAgICAgICBPdXRwdXQ6IChzdW0oZnQxXzEuYzEpKSwgKFBBUlRJQUwgY291 bnQoKikpCisgICAgICAgICAgICAgICBTb3J0IEtleTogKHN1bShmdDFfMS5jMSkpCisgICAgICAg ICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IChzdW0o ZnQxXzEuYzEpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNo IENvbmQ6IChmdDFfMS5jMiA9IGZ0MS5jMikKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBGb3Jl aWduIFNjYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogZnQxXzEuYzIsIChz dW0oZnQxXzEuYzEpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpb25zOiBBZ2dy ZWdhdGUgb24gKHB1YmxpYy5mdDEgZnQxXzEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBS ZW1vdGUgU1FMOiBTRUxFQ1QgYzIsIHN1bSgiQyAxIikgRlJPTSAiUyAxIi4iVCAxIiBHUk9VUCBC WSAxCisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiBmdDEuYzIsIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiBmdDEuYzIsIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogZnQxLmMyCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5mdDEKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogZnQxLmMyCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYzIgRlJP TSAiUyAxIi4iVCAxIgorKDI0IHJvd3MpCiAKIHNlbGVjdCBjb3VudCgqKSwgeC5iIGZyb20gZnQx LCAoc2VsZWN0IGMyIGEsIHN1bShjMSkgYiBmcm9tIGZ0MSBncm91cCBieSBjMikgeCB3aGVyZSBm dDEuYzIgPSB4LmEgZ3JvdXAgYnkgeC5iIG9yZGVyIGJ5IDEsIDI7CiAgY291bnQgfCAgIGIgICAK ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb25m aWcuc2dtbAppbmRleCAwYTRiM2U1NWJhNS4uYWFiOTE2MjVkYWYgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTU0 NzUsNiArNTQ3NSwyMSBAQCBBTlkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9z eW5jPC9yZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFibGUgY2xhc3M9IgogICAgICAgPC9saXN0aXRl bT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWVu YWJsZS1lYWdlci1hZ2dyZWdhdGUiIHhyZWZsYWJlbD0iZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZSI+ CisgICAgICA8dGVybT48dmFybmFtZT5lbmFibGVfZWFnZXJfYWdncmVnYXRlPC92YXJuYW1lPiAo PHR5cGU+Ym9vbGVhbjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5 Pjx2YXJuYW1lPmVuYWJsZV9lYWdlcl9hZ2dyZWdhdGU8L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24g cGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+Cisg ICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIEVuYWJsZXMgb3IgZGlzYWJs ZXMgdGhlIHF1ZXJ5IHBsYW5uZXIncyBhYmlsaXR5IHRvIHBhcnRpYWxseSBwdXNoCisgICAgICAg IGFnZ3JlZ2F0aW9uIHBhc3QgYSBqb2luLCBhbmQgZmluYWxpemUgaXQgb25jZSBhbGwgdGhlIHJl bGF0aW9ucyBhcmUKKyAgICAgICAgam9pbmVkLiBUaGUgZGVmYXVsdCBpcyA8bGl0ZXJhbD5vbjwv bGl0ZXJhbD4uCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJs aXN0ZW50cnk+CisKICAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWVuYWJsZS1nYXRoZXJtZXJn ZSIgeHJlZmxhYmVsPSJlbmFibGVfZ2F0aGVybWVyZ2UiPgogICAgICAgPHRlcm0+PHZhcm5hbWU+ ZW5hYmxlX2dhdGhlcm1lcmdlPC92YXJuYW1lPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4pCiAgICAg ICA8aW5kZXh0ZXJtPgpAQCAtNjA5NSw2ICs2MTEwLDIyIEBAIEFOWSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+bnVtX3N5bmM8L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJsZSBjbGFz cz0iCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFy bGlzdGVudHJ5IGlkPSJndWMtbWluLWVhZ2VyLWFnZy1ncm91cC1zaXplIiB4cmVmbGFiZWw9Im1p bl9lYWdlcl9hZ2dfZ3JvdXBfc2l6ZSI+CisgICAgICA8dGVybT48dmFybmFtZT5taW5fZWFnZXJf YWdnX2dyb3VwX3NpemU8L3Zhcm5hbWU+ICg8dHlwZT5mbG9hdGluZyBwb2ludDwvdHlwZT4pCisg ICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPm1pbl9lYWdlcl9hZ2df Z3JvdXBfc2l6ZTwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+Cisg ICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAg ICA8cGFyYT4KKyAgICAgICAgU2V0cyB0aGUgbWluaW11bSBhdmVyYWdlIGdyb3VwIHNpemUgcmVx dWlyZWQgdG8gY29uc2lkZXIgYXBwbHlpbmcKKyAgICAgICAgZWFnZXIgYWdncmVnYXRpb24uIFRo aXMgaGVscHMgYXZvaWQgdGhlIG92ZXJoZWFkIG9mIGVhZ2VyCisgICAgICAgIGFnZ3JlZ2F0aW9u IHdoZW4gaXQgZG9lcyBub3Qgb2ZmZXIgc2lnbmlmaWNhbnQgcm93IGNvdW50IHJlZHVjdGlvbi4K KyAgICAgICAgVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+ODwvbGl0ZXJhbD4uCisgICAgICAgPC9w YXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPHZh cmxpc3RlbnRyeSBpZD0iZ3VjLWppdC1hYm92ZS1jb3N0IiB4cmVmbGFiZWw9ImppdF9hYm92ZV9j b3N0Ij4KICAgICAgIDx0ZXJtPjx2YXJuYW1lPmppdF9hYm92ZV9jb3N0PC92YXJuYW1lPiAoPHR5 cGU+ZmxvYXRpbmcgcG9pbnQ8L3R5cGU+KQogICAgICAgPGluZGV4dGVybT4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL29wdGltaXplci9SRUFETUUgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvUkVB RE1FCmluZGV4IDg0MzM2ODA5NmZkLi41YWYzY2VkNTc1MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL1JFQURNRQorKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvUkVBRE1FCkBA IC0xNTAwLDMgKzE1MDAsOTIgQEAgYnJlYWtpbmcgZG93biBhZ2dyZWdhdGlvbiBvciBncm91cGlu ZyBvdmVyIGEgcGFydGl0aW9uZWQgcmVsYXRpb24gaW50bwogYWdncmVnYXRpb24gb3IgZ3JvdXBp bmcgb3ZlciBpdHMgcGFydGl0aW9ucyBpcyBjYWxsZWQgcGFydGl0aW9ud2lzZQogYWdncmVnYXRp b24uICBFc3BlY2lhbGx5IHdoZW4gdGhlIHBhcnRpdGlvbiBrZXlzIG1hdGNoIHRoZSBHUk9VUCBC WSBjbGF1c2UsCiB0aGlzIGNhbiBiZSBzaWduaWZpY2FudGx5IGZhc3RlciB0aGFuIHRoZSByZWd1 bGFyIG1ldGhvZC4KKworRWFnZXIgYWdncmVnYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tCisKK0Vh Z2VyIGFnZ3JlZ2F0aW9uIGlzIGEgcXVlcnkgb3B0aW1pemF0aW9uIHRlY2huaXF1ZSB0aGF0IHBh cnRpYWxseQorcHVzaGVzIGFnZ3JlZ2F0aW9uIHBhc3QgYSBqb2luLCBhbmQgZmluYWxpemVzIGl0 IG9uY2UgYWxsIHRoZQorcmVsYXRpb25zIGFyZSBqb2luZWQuICBFYWdlciBhZ2dyZWdhdGlvbiBt YXkgcmVkdWNlIHRoZSBudW1iZXIgb2YKK2lucHV0IHJvd3MgdG8gdGhlIGpvaW4gYW5kIHRodXMg Y291bGQgcmVzdWx0IGluIGEgYmV0dGVyIG92ZXJhbGwgcGxhbi4KKworVG8gcHJvdmUgdGhhdCB0 aGUgdHJhbnNmb3JtYXRpb24gaXMgY29ycmVjdCwgd2UgcGFydGl0aW9uIHRoZSB0YWJsZXMKK2lu IHRoZSBGUk9NIGNsYXVzZSBpbnRvIHR3byBncm91cHM6IHRob3NlIHRoYXQgY29udGFpbiBhdCBs ZWFzdCBvbmUKK2FnZ3JlZ2F0aW9uIGNvbHVtbiwgYW5kIHRob3NlIHRoYXQgZG8gbm90IGNvbnRh aW4gYW55IGFnZ3JlZ2F0aW9uCitjb2x1bW5zLiAgRWFjaCBncm91cCBjYW4gYmUgdHJlYXRlZCBh cyBhIHNpbmdsZSByZWxhdGlvbiBmb3JtZWQgYnkgdGhlCitDYXJ0ZXNpYW4gcHJvZHVjdCBvZiB0 aGUgdGFibGVzIHdpdGhpbiB0aGF0IGdyb3VwLiAgVGhlcmVmb3JlLCB3aXRob3V0Citsb3NzIG9m IGdlbmVyYWxpdHksIHdlIGNhbiBhc3N1bWUgdGhhdCB0aGUgRlJPTSBjbGF1c2UgY29udGFpbnMK K2V4YWN0bHkgdHdvIHJlbGF0aW9ucywgUjEgYW5kIFIyLCB3aGVyZSBSMSByZXByZXNlbnRzIHRo ZSByZWxhdGlvbgorY29udGFpbmluZyBhbGwgYWdncmVnYXRpb24gY29sdW1ucywgYW5kIFIyIHJl cHJlc2VudHMgdGhlIHJlbGF0aW9uCit3aXRob3V0IGFueSBhZ2dyZWdhdGlvbiBjb2x1bW5zLgor CitMZXQgdGhlIHF1ZXJ5IGJlIG9mIHRoZSBmb3JtOgorCitTRUxFQ1QgRywgQUdHKEEpCitGUk9N IFIxIEpPSU4gUjIgT04gSgorR1JPVVAgQlkgRzsKKword2hlcmUgRyBpcyB0aGUgc2V0IG9mIGdy b3VwaW5nIGtleXMgdGhhdCBtYXkgaW5jbHVkZSBjb2x1bW5zIGZyb20gUjEKK2FuZC9vciBSMjsg QUdHKEEpIGlzIGFuIGFnZ3JlZ2F0ZSBmdW5jdGlvbiBvdmVyIGNvbHVtbnMgQSBmcm9tIFIxOyBK CitpcyB0aGUgam9pbiBjb25kaXRpb24gYmV0d2VlbiBSMSBhbmQgUjIuCisKK1RoZSB0cmFuc2Zv cm1hdGlvbiBvZiBlYWdlciBhZ2dyZWdhdGlvbiBpczoKKworICAgIEdST1VQIEJZIEcsIEFHRyhB KSBvbiAoUjEgSk9JTiBSMiBPTiBKKQorICAgID0KKyAgICBHUk9VUCBCWSBHLCBBR0coYWdnX0Ep IG9uICgoR1JPVVAgQlkgRzEsIEFHRyhBKSBBUyBhZ2dfQSBvbiBSMSkgSk9JTiBSMiBPTiBKKQor CitUaGlzIGVxdWl2YWxlbmNlIGhvbGRzIHVuZGVyIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoK KworMSkgQUdHIGlzIGRlY29tcG9zYWJsZSwgbWVhbmluZyB0aGF0IGl0IGNhbiBiZSBjb21wdXRl ZCBpbiB0d28gc3RhZ2VzOgorYSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGZvbGxvd2VkIGJ5IGEgZmlu YWwgYWdncmVnYXRpb247CisyKSBUaGUgc2V0IEcxIHVzZWQgaW4gdGhlIHByZS1hZ2dyZWdhdGlv biBvZiBSMSBpbmNsdWRlczoKKyAgICAqIGFsbCBjb2x1bW5zIGZyb20gUjEgdGhhdCBhcmUgcGFy dCBvZiB0aGUgZ3JvdXBpbmcga2V5cyBHLCBhbmQKKyAgICAqIGFsbCBjb2x1bW5zIGZyb20gUjEg dGhhdCBhcHBlYXIgaW4gdGhlIGpvaW4gY29uZGl0aW9uIEouCiszKSBUaGUgZ3JvdXBpbmcgb3Bl cmF0b3IgZm9yIGFueSBjb2x1bW4gaW4gRzEgbXVzdCBiZSBjb21wYXRpYmxlIHdpdGgKK3RoZSBv cGVyYXRvciB1c2VkIGZvciB0aGF0IGNvbHVtbiBpbiB0aGUgam9pbiBjb25kaXRpb24gSi4KKwor U2luY2UgRzEgaW5jbHVkZXMgYWxsIGNvbHVtbnMgZnJvbSBSMSB0aGF0IGFwcGVhciBpbiBlaXRo ZXIgdGhlCitncm91cGluZyBrZXlzIEcgb3IgdGhlIGpvaW4gY29uZGl0aW9uIEosIGFsbCByb3dz IHdpdGhpbiBlYWNoIHBhcnRpYWwKK2dyb3VwIGhhdmUgaWRlbnRpY2FsIHZhbHVlcyBmb3IgYm90 aCB0aGUgZ3JvdXBpbmcga2V5cyBhbmQgdGhlCitqb2luLXJlbGV2YW50IGNvbHVtbnMgZnJvbSBS MSwgYXNzdW1pbmcgY29tcGF0aWJsZSBvcGVyYXRvcnMgYXJlIHVzZWQuCitBcyBhIHJlc3VsdCwg dGhlIHJvd3Mgd2l0aGluIGEgcGFydGlhbCBncm91cCBhcmUgaW5kaXN0aW5ndWlzaGFibGUgaW4K K3Rlcm1zIG9mIHRoZWlyIGNvbnRyaWJ1dGlvbiB0byB0aGUgYWdncmVnYXRpb24gYW5kIHRoZWly IGJlaGF2aW9yIGluCit0aGUgam9pbi4gIFRoaXMgZW5zdXJlcyB0aGF0IGFsbCByb3dzIGluIHRo ZSBzYW1lIHBhcnRpYWwgZ3JvdXAgc2hhcmUKK3RoZSBzYW1lICJkZXN0aW55IjogdGhleSBlaXRo ZXIgYWxsIG1hdGNoIG9yIGFsbCBmYWlsIHRvIG1hdGNoIGEgZ2l2ZW4KK3JvdyBpbiBSMi4gIEJl Y2F1c2UgdGhlIGFnZ3JlZ2F0ZSBmdW5jdGlvbiBBR0cgaXMgZGVjb21wb3NhYmxlLAorYWdncmVn YXRpbmcgdGhlIHBhcnRpYWwgcmVzdWx0cyBhZnRlciB0aGUgam9pbiB5aWVsZHMgdGhlIHNhbWUg ZmluYWwKK3Jlc3VsdCBhcyBhZ2dyZWdhdGluZyBhZnRlciB0aGUgZnVsbCBqb2luLCB0aGVyZWJ5 IHByZXNlcnZpbmcgcXVlcnkKK3NlbWFudGljcy4gIFEuRS5ELgorCitPbmUgcmVzdHJpY3Rpb24g aXMgdGhhdCB3ZSBjYW5ub3QgcHVzaCBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGRvd24gdG8gYQorcmVs YXRpb24gdGhhdCBpcyBpbiB0aGUgbnVsbGFibGUgc2lkZSBvZiBhbiBvdXRlciBqb2luLCBiZWNh dXNlIHRoZQorTlVMTC1leHRlbmRlZCByb3dzIHByb2R1Y2VkIGJ5IHRoZSBvdXRlciBqb2luIHdv dWxkIG5vdCBiZSBhdmFpbGFibGUKK3doZW4gd2UgcGVyZm9ybSB0aGUgcGFydGlhbCBhZ2dyZWdh dGlvbiwgd2hpbGUgd2l0aCBhCitub24tZWFnZXItYWdncmVnYXRpb24gcGxhbiB0aGVzZSByb3dz IGFyZSBhdmFpbGFibGUgZm9yIHRoZSB0b3AtbGV2ZWwKK2FnZ3JlZ2F0aW9uLiAgUHVzaGluZyBw YXJ0aWFsIGFnZ3JlZ2F0aW9uIGluIHRoaXMgY2FzZSBtYXkgcmVzdWx0IGluCit0aGUgcm93cyBi ZWluZyBncm91cGVkIGRpZmZlcmVudGx5IHRoYW4gZXhwZWN0ZWQsIG9yIHByb2R1Y2UgaW5jb3Jy ZWN0Cit2YWx1ZXMgZnJvbSB0aGUgYWdncmVnYXRlIGZ1bmN0aW9ucy4KKworRHVyaW5nIHRoZSBj b25zdHJ1Y3Rpb24gb2YgdGhlIGpvaW4gdHJlZSwgd2UgZXZhbHVhdGUgZWFjaCBiYXNlIG9yCitq b2luIHJlbGF0aW9uIHRvIGRldGVybWluZSBpZiBlYWdlciBhZ2dyZWdhdGlvbiBjYW4gYmUgYXBw bGllZC4gIElmCitmZWFzaWJsZSwgd2UgY3JlYXRlIGEgc2VwYXJhdGUgUmVsT3B0SW5mbyBjYWxs ZWQgYSAiZ3JvdXBlZCByZWxhdGlvbiIKK2FuZCBnZW5lcmF0ZSBncm91cGVkIHBhdGhzIGJ5IGFk ZGluZyBzb3J0ZWQgYW5kIGhhc2hlZCBwYXJ0aWFsCithZ2dyZWdhdGlvbiBwYXRocyBvbiB0b3Ag b2YgdGhlIG5vbi1ncm91cGVkIHBhdGhzLiAgVG8gbGltaXQgcGxhbm5pbmcKK3RpbWUsIHdlIGNv bnNpZGVyIG9ubHkgdGhlIGNoZWFwZXN0IG9yIHN1aXRhYmx5LXNvcnRlZCBub24tZ3JvdXBlZAor cGF0aHMgaW4gdGhpcyBzdGVwLgorCitBbm90aGVyIHdheSB0byBnZW5lcmF0ZSBncm91cGVkIHBh dGhzIGlzIHRvIGpvaW4gYSBncm91cGVkIHJlbGF0aW9uCit3aXRoIGEgbm9uLWdyb3VwZWQgcmVs YXRpb24uICBKb2luaW5nIHR3byBncm91cGVkIHJlbGF0aW9ucyBpcworY3VycmVudGx5IG5vdCBz dXBwb3J0ZWQuCisKK1RvIGZ1cnRoZXIgbGltaXQgcGxhbm5pbmcgdGltZSwgd2UgY3VycmVudGx5 IGFkb3B0IGEgc3RyYXRlZ3kgd2hlcmUKK3BhcnRpYWwgYWdncmVnYXRpb24gaXMgcHVzaGVkIG9u bHkgdG8gdGhlIGxvd2VzdCBmZWFzaWJsZSBsZXZlbCBpbiB0aGUKK2pvaW4gdHJlZSB3aGVyZSBp dCBwcm92aWRlcyBhIHNpZ25pZmljYW50IHJlZHVjdGlvbiBpbiByb3cgY291bnQuCitUaGlzIHN0 cmF0ZWd5IGFsc28gaGVscHMgZW5zdXJlIHRoYXQgYWxsIGdyb3VwZWQgcGF0aHMgZm9yIHRoZSBz YW1lCitncm91cGVkIHJlbGF0aW9uIHByb2R1Y2UgdGhlIHNhbWUgc2V0IG9mIHJvd3MsIHdoaWNo IGlzIGltcG9ydGFudCB0bworc3VwcG9ydCBhIGZ1bmRhbWVudGFsIGFzc3VtcHRpb24gb2YgdGhl IHBsYW5uZXIuCisKK0lmIHdlIGhhdmUgZ2VuZXJhdGVkIGEgZ3JvdXBlZCByZWxhdGlvbiBmb3Ig dGhlIHRvcG1vc3Qgam9pbiByZWxhdGlvbiwKK3dlIG5lZWQgdG8gZmluYWxpemUgaXRzIHBhdGhz IGF0IHRoZSBlbmQuICBUaGUgZmluYWwgcGF0aHMgd2lsbAorY29tcGV0ZSBpbiB0aGUgdXN1YWwg d2F5IHdpdGggcGF0aHMgYnVpbHQgZnJvbSByZWd1bGFyIHBsYW5uaW5nLgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvb3B0aW1pemVyL2dlcW8vZ2Vxb19ldmFsLmMgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvZ2Vxby9nZXFvX2V2YWwuYwppbmRleCBmMDdkMWRjOGFjNi4uNGE2NWY5NTVjYTYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9nZXFvL2dlcW9fZXZhbC5jCisrKyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci9nZXFvL2dlcW9fZXZhbC5jCkBAIC0yNzksNiArMjc5LDI3IEBA IG1lcmdlX2NsdW1wKFBsYW5uZXJJbmZvICpyb290LCBMaXN0ICpjbHVtcHMsIENsdW1wICpuZXdf Y2x1bXAsIGludCBudW1fZ2VuZSwKIAkJCQkvKiBGaW5kIGFuZCBzYXZlIHRoZSBjaGVhcGVzdCBw YXRocyBmb3IgdGhpcyBqb2lucmVsICovCiAJCQkJc2V0X2NoZWFwZXN0KGpvaW5yZWwpOwogCisJ CQkJLyoKKwkJCQkgKiBFeGNlcHQgZm9yIHRoZSB0b3Btb3N0IHNjYW4vam9pbiByZWwsIGNvbnNp ZGVyIGdlbmVyYXRpbmcKKwkJCQkgKiBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIHBhdGhzIGZvciB0aGUg Z3JvdXBlZCByZWxhdGlvbiBvbiB0b3AKKwkJCQkgKiBvZiB0aGUgcGF0aHMgb2YgdGhpcyByZWwu ICBBZnRlciB0aGF0LCB3ZSdyZSBkb25lIGNyZWF0aW5nCisJCQkJICogcGF0aHMgZm9yIHRoZSBn cm91cGVkIHJlbGF0aW9uLCBzbyBydW4gc2V0X2NoZWFwZXN0KCkuCisJCQkJICovCisJCQkJaWYg KCFibXNfZXF1YWwoam9pbnJlbC0+cmVsaWRzLCByb290LT5hbGxfcXVlcnlfcmVscykpCisJCQkJ eworCQkJCQlSZWxPcHRJbmZvICpncm91cGVkX3JlbDsKKworCQkJCQlncm91cGVkX3JlbCA9IGpv aW5yZWwtPmdyb3VwZWRfcmVsOworCQkJCQlpZiAoZ3JvdXBlZF9yZWwpCisJCQkJCXsKKwkJCQkJ CUFzc2VydChJU19HUk9VUEVEX1JFTChncm91cGVkX3JlbCkpOworCisJCQkJCQlnZW5lcmF0ZV9n cm91cGVkX3BhdGhzKHJvb3QsIGdyb3VwZWRfcmVsLCBqb2lucmVsLAorCQkJCQkJCQkJCQkgICBn cm91cGVkX3JlbC0+YWdnX2luZm8pOworCQkJCQkJc2V0X2NoZWFwZXN0KGdyb3VwZWRfcmVsKTsK KwkJCQkJfQorCQkJCX0KKwogCQkJCS8qIEFic29yYiBuZXcgY2x1bXAgaW50byBvbGQgKi8KIAkJ CQlvbGRfY2x1bXAtPmpvaW5yZWwgPSBqb2lucmVsOwogCQkJCW9sZF9jbHVtcC0+c2l6ZSArPSBu ZXdfY2x1bXAtPnNpemU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9h bGxwYXRocy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYwppbmRleCA2 Y2M2OTY2YjA2MC4uN2IzNDlhNDU3MGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wYXRoL2FsbHBhdGhzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0 aHMuYwpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIm9wdGltaXplci9wYXRocy5oIgogI2lu Y2x1ZGUgIm9wdGltaXplci9wbGFuY2F0LmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5uZXIu aCIKKyNpbmNsdWRlICJvcHRpbWl6ZXIvcHJlcC5oIgogI2luY2x1ZGUgIm9wdGltaXplci90bGlz dC5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9jbGF1c2UuaCIKICNpbmNsdWRlICJwYXJzZXIv cGFyc2V0cmVlLmgiCkBAIC00Nyw2ICs0OCw3IEBACiAjaW5jbHVkZSAicG9ydC9wZ19iaXR1dGls cy5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZU1hbmlwLmgiCiAjaW5jbHVkZSAidXRpbHMv bHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvc2VsZnVuY3MuaCIKIAogCiAvKiBCaXRtYXNr IGZsYWdzIGZvciBwdXNoZG93bl9zYWZldHlfaW5mby51bnNhZmVGbGFncyAqLwpAQCAtNzcsNyAr NzksOSBAQCB0eXBlZGVmIGVudW0gcHVzaGRvd25fc2FmZV90eXBlCiAKIC8qIFRoZXNlIHBhcmFt ZXRlcnMgYXJlIHNldCBieSBHVUMgKi8KIGJvb2wJCWVuYWJsZV9nZXFvID0gZmFsc2U7CS8qIGp1 c3QgaW4gY2FzZSBHVUMgZG9lc24ndCBzZXQgaXQgKi8KK2Jvb2wJCWVuYWJsZV9lYWdlcl9hZ2dy ZWdhdGUgPSB0cnVlOwogaW50CQkJZ2Vxb190aHJlc2hvbGQ7Citkb3VibGUJCW1pbl9lYWdlcl9h Z2dfZ3JvdXBfc2l6ZTsKIGludAkJCW1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemU7CiBpbnQJ CQltaW5fcGFyYWxsZWxfaW5kZXhfc2Nhbl9zaXplOwogCkBAIC05MCw2ICs5NCw3IEBAIGpvaW5f c2VhcmNoX2hvb2tfdHlwZSBqb2luX3NlYXJjaF9ob29rID0gTlVMTDsKIAogc3RhdGljIHZvaWQg c2V0X2Jhc2VfcmVsX2NvbnNpZGVyX3N0YXJ0dXAoUGxhbm5lckluZm8gKnJvb3QpOwogc3RhdGlj IHZvaWQgc2V0X2Jhc2VfcmVsX3NpemVzKFBsYW5uZXJJbmZvICpyb290KTsKK3N0YXRpYyB2b2lk IHNldHVwX2Jhc2VfZ3JvdXBlZF9yZWxzKFBsYW5uZXJJbmZvICpyb290KTsKIHN0YXRpYyB2b2lk IHNldF9iYXNlX3JlbF9wYXRobGlzdHMoUGxhbm5lckluZm8gKnJvb3QpOwogc3RhdGljIHZvaWQg c2V0X3JlbF9zaXplKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJCQkJCQkg SW5kZXggcnRpLCBSYW5nZVRibEVudHJ5ICpydGUpOwpAQCAtMTE0LDYgKzExOSw3IEBAIHN0YXRp YyB2b2lkIHNldF9hcHBlbmRfcmVsX3NpemUoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8g KnJlbCwKIAkJCQkJCQkJSW5kZXggcnRpLCBSYW5nZVRibEVudHJ5ICpydGUpOwogc3RhdGljIHZv aWQgc2V0X2FwcGVuZF9yZWxfcGF0aGxpc3QoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8g KnJlbCwKIAkJCQkJCQkJCUluZGV4IHJ0aSwgUmFuZ2VUYmxFbnRyeSAqcnRlKTsKK3N0YXRpYyB2 b2lkIHNldF9ncm91cGVkX3JlbF9wYXRobGlzdChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5m byAqcmVsKTsKIHN0YXRpYyB2b2lkIGdlbmVyYXRlX29yZGVyZWRhcHBlbmRfcGF0aHMoUGxhbm5l ckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJCQkJCQkgTGlzdCAqbGl2ZV9jaGls ZHJlbHMsCiAJCQkJCQkJCQkJIExpc3QgKmFsbF9jaGlsZF9wYXRoa2V5cyk7CkBAIC0xODIsNiAr MTg4LDExIEBAIG1ha2Vfb25lX3JlbChQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAqam9pbmxpc3Qp CiAJICovCiAJc2V0X2Jhc2VfcmVsX3NpemVzKHJvb3QpOwogCisJLyoKKwkgKiBCdWlsZCBncm91 cGVkIHJlbGF0aW9ucyBmb3IgYmFzZSByZWxzIHdoZXJlIHBvc3NpYmxlLgorCSAqLworCXNldHVw X2Jhc2VfZ3JvdXBlZF9yZWxzKHJvb3QpOworCiAJLyoKIAkgKiBXZSBzaG91bGQgbm93IGhhdmUg c2l6ZSBlc3RpbWF0ZXMgZm9yIGV2ZXJ5IGFjdHVhbCB0YWJsZSBpbnZvbHZlZCBpbgogCSAqIHRo ZSBxdWVyeSwgYW5kIHdlIGFsc28ga25vdyB3aGljaCBpZiBhbnkgaGF2ZSBiZWVuIGRlbGV0ZWQg ZnJvbSB0aGUKQEAgLTMyMyw2ICszMzQsMzkgQEAgc2V0X2Jhc2VfcmVsX3NpemVzKFBsYW5uZXJJ bmZvICpyb290KQogCX0KIH0KIAorLyoKKyAqIHNldHVwX2Jhc2VfZ3JvdXBlZF9yZWxzCisgKgkg IEZvciBlYWNoIGJhc2UgcmVsYXRpb24sIGJ1aWxkIGEgZ3JvdXBlZCBiYXNlIHJlbGF0aW9uIGlm IGVhZ2VyCisgKgkgIGFnZ3JlZ2F0aW9uIGlzIHBvc3NpYmxlIGFuZCBpZiB0aGlzIHJlbGF0aW9u IGNhbiBwcm9kdWNlIGdyb3VwZWQgcGF0aHMuCisgKi8KK3N0YXRpYyB2b2lkCitzZXR1cF9iYXNl X2dyb3VwZWRfcmVscyhQbGFubmVySW5mbyAqcm9vdCkKK3sKKwlJbmRleAkJcnRpOworCisJLyoK KwkgKiBJZiB0aGVyZSBhcmUgbm8gYWdncmVnYXRlIGV4cHJlc3Npb25zIG9yIGdyb3VwaW5nIGV4 cHJlc3Npb25zLCBlYWdlcgorCSAqIGFnZ3JlZ2F0aW9uIGlzIG5vdCBwb3NzaWJsZS4KKwkgKi8K KwlpZiAocm9vdC0+YWdnX2NsYXVzZV9saXN0ID09IE5JTCB8fAorCQlyb290LT5ncm91cF9leHBy X2xpc3QgPT0gTklMKQorCQlyZXR1cm47CisKKwlmb3IgKHJ0aSA9IDE7IHJ0aSA8IHJvb3QtPnNp bXBsZV9yZWxfYXJyYXlfc2l6ZTsgcnRpKyspCisJeworCQlSZWxPcHRJbmZvICpyZWwgPSByb290 LT5zaW1wbGVfcmVsX2FycmF5W3J0aV07CisKKwkJLyogdGhlcmUgbWF5IGJlIGVtcHR5IHNsb3Rz IGNvcnJlc3BvbmRpbmcgdG8gbm9uLWJhc2VyZWwgUlRFcyAqLworCQlpZiAocmVsID09IE5VTEwp CisJCQljb250aW51ZTsKKworCQlBc3NlcnQocmVsLT5yZWxpZCA9PSBydGkpOwkvKiBzYW5pdHkg Y2hlY2sgb24gYXJyYXkgKi8KKwkJQXNzZXJ0KElTX1NJTVBMRV9SRUwocmVsKSk7IC8qIHNhbml0 eSBjaGVjayBvbiByZWwgKi8KKworCQkodm9pZCkgYnVpbGRfc2ltcGxlX2dyb3VwZWRfcmVsKHJv b3QsIHJlbCk7CisJfQorfQorCiAvKgogICogc2V0X2Jhc2VfcmVsX3BhdGhsaXN0cwogICoJICBG aW5kcyBhbGwgcGF0aHMgYXZhaWxhYmxlIGZvciBzY2FubmluZyBlYWNoIGJhc2UtcmVsYXRpb24g ZW50cnkuCkBAIC01NTksNiArNjAzLDE1IEBAIHNldF9yZWxfcGF0aGxpc3QoUGxhbm5lckluZm8g KnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkvKiBOb3cgZmluZCB0aGUgY2hlYXBlc3Qgb2YgdGhl IHBhdGhzIGZvciB0aGlzIHJlbCAqLwogCXNldF9jaGVhcGVzdChyZWwpOwogCisJLyoKKwkgKiBJ ZiBhIGdyb3VwZWQgcmVsYXRpb24gZm9yIHRoaXMgcmVsIGV4aXN0cywgYnVpbGQgcGFydGlhbCBh Z2dyZWdhdGlvbgorCSAqIHBhdGhzIGZvciBpdC4KKwkgKgorCSAqIE5vdGUgdGhhdCB0aGlzIGNh biBvbmx5IGhhcHBlbiBhZnRlciB3ZSd2ZSBjYWxsZWQgc2V0X2NoZWFwZXN0KCkgZm9yCisJICog dGhpcyBiYXNlIHJlbCwgYmVjYXVzZSB3ZSBuZWVkIGl0cyBjaGVhcGVzdCBwYXRocy4KKwkgKi8K KwlzZXRfZ3JvdXBlZF9yZWxfcGF0aGxpc3Qocm9vdCwgcmVsKTsKKwogI2lmZGVmIE9QVElNSVpF Ul9ERUJVRwogCXBwcmludChyZWwpOwogI2VuZGlmCkBAIC0xMzA1LDYgKzEzNTgsMzYgQEAgc2V0 X2FwcGVuZF9yZWxfcGF0aGxpc3QoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwK IAlhZGRfcGF0aHNfdG9fYXBwZW5kX3JlbChyb290LCByZWwsIGxpdmVfY2hpbGRyZWxzKTsKIH0K IAorLyoKKyAqIHNldF9ncm91cGVkX3JlbF9wYXRobGlzdAorICoJICBJZiBhIGdyb3VwZWQgcmVs YXRpb24gZm9yIHRoZSBnaXZlbiAncmVsJyBleGlzdHMsIGJ1aWxkIHBhcnRpYWwKKyAqCSAgYWdn cmVnYXRpb24gcGF0aHMgZm9yIGl0LgorICovCitzdGF0aWMgdm9pZAorc2V0X2dyb3VwZWRfcmVs X3BhdGhsaXN0KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwpCit7CisJUmVsT3B0 SW5mbyAqZ3JvdXBlZF9yZWw7CisKKwkvKgorCSAqIElmIHRoZXJlIGFyZSBubyBhZ2dyZWdhdGUg ZXhwcmVzc2lvbnMgb3IgZ3JvdXBpbmcgZXhwcmVzc2lvbnMsIGVhZ2VyCisJICogYWdncmVnYXRp b24gaXMgbm90IHBvc3NpYmxlLgorCSAqLworCWlmIChyb290LT5hZ2dfY2xhdXNlX2xpc3QgPT0g TklMIHx8CisJCXJvb3QtPmdyb3VwX2V4cHJfbGlzdCA9PSBOSUwpCisJCXJldHVybjsKKworCS8q IEFkZCBwYXRocyB0byB0aGUgZ3JvdXBlZCBiYXNlIHJlbGF0aW9uIGlmIG9uZSBleGlzdHMuICov CisJZ3JvdXBlZF9yZWwgPSByZWwtPmdyb3VwZWRfcmVsOworCWlmIChncm91cGVkX3JlbCkKKwl7 CisJCUFzc2VydChJU19HUk9VUEVEX1JFTChncm91cGVkX3JlbCkpOworCisJCWdlbmVyYXRlX2dy b3VwZWRfcGF0aHMocm9vdCwgZ3JvdXBlZF9yZWwsIHJlbCwKKwkJCQkJCQkgICBncm91cGVkX3Jl bC0+YWdnX2luZm8pOworCQlzZXRfY2hlYXBlc3QoZ3JvdXBlZF9yZWwpOworCX0KK30KKwogCiAv KgogICogYWRkX3BhdGhzX3RvX2FwcGVuZF9yZWwKQEAgLTMzMzUsNiArMzQxOCwzMjggQEAgZ2Vu ZXJhdGVfdXNlZnVsX2dhdGhlcl9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAq cmVsLCBib29sIG92ZXJyaWRlX3IKIAl9CiB9CiAKKy8qCisgKiBnZW5lcmF0ZV9ncm91cGVkX3Bh dGhzCisgKgkJR2VuZXJhdGUgcGF0aHMgZm9yIGEgZ3JvdXBlZCByZWxhdGlvbiBieSBhZGRpbmcg c29ydGVkIGFuZCBoYXNoZWQKKyAqCQlwYXJ0aWFsIGFnZ3JlZ2F0aW9uIHBhdGhzIG9uIHRvcCBv ZiBwYXRocyBvZiB0aGUgdW5ncm91cGVkIGJhc2Ugb3Igam9pbgorICoJCXJlbGF0aW9uLgorICoK KyAqIFRoZSBpbmZvcm1hdGlvbiBuZWVkZWQgYXJlIHByb3ZpZGVkIGJ5IHRoZSBSZWxBZ2dJbmZv IHN0cnVjdHVyZS4KKyAqLwordm9pZAorZ2VuZXJhdGVfZ3JvdXBlZF9wYXRocyhQbGFubmVySW5m byAqcm9vdCwgUmVsT3B0SW5mbyAqZ3JvdXBlZF9yZWwsCisJCQkJCSAgIFJlbE9wdEluZm8gKnJl bCwgUmVsQWdnSW5mbyAqYWdnX2luZm8pCit7CisJQWdnQ2xhdXNlQ29zdHMgYWdnX2Nvc3RzOwor CWJvb2wJCWNhbl9oYXNoOworCWJvb2wJCWNhbl9zb3J0OworCVBhdGgJICAgKmNoZWFwZXN0X3Rv dGFsX3BhdGggPSBOVUxMOworCVBhdGgJICAgKmNoZWFwZXN0X3BhcnRpYWxfcGF0aCA9IE5VTEw7 CisJZG91YmxlCQlkTnVtR3JvdXBzID0gMDsKKwlkb3VibGUJCWROdW1QYXJ0aWFsR3JvdXBzID0g MDsKKworCWlmIChJU19EVU1NWV9SRUwocmVsKSkKKwl7CisJCW1hcmtfZHVtbXlfcmVsKGdyb3Vw ZWRfcmVsKTsKKwkJcmV0dXJuOworCX0KKworCS8qCisJICogV2UgcHVzaCBwYXJ0aWFsIGFnZ3Jl Z2F0aW9uIG9ubHkgdG8gdGhlIGxvd2VzdCBwb3NzaWJsZSBsZXZlbCBpbiB0aGUKKwkgKiBqb2lu IHRyZWUgdGhhdCBpcyBkZWVtZWQgdXNlZnVsLgorCSAqLworCWlmICghYm1zX2VxdWFsKGFnZ19p bmZvLT5hcHBseV9hdCwgcmVsLT5yZWxpZHMpIHx8CisJCSFhZ2dfaW5mby0+YWdnX3VzZWZ1bCkK KwkJcmV0dXJuOworCisJTWVtU2V0KCZhZ2dfY29zdHMsIDAsIHNpemVvZihBZ2dDbGF1c2VDb3N0 cykpOworCWdldF9hZ2dfY2xhdXNlX2Nvc3RzKHJvb3QsIEFHR1NQTElUX0lOSVRJQUxfU0VSSUFM LCAmYWdnX2Nvc3RzKTsKKworCS8qCisJICogRGV0ZXJtaW5lIHdoZXRoZXIgaXQncyBwb3NzaWJs ZSB0byBwZXJmb3JtIHNvcnQtYmFzZWQgaW1wbGVtZW50YXRpb25zCisJICogb2YgZ3JvdXBpbmcu CisJICovCisJY2FuX3NvcnQgPSBncm91cGluZ19pc19zb3J0YWJsZShhZ2dfaW5mby0+Z3JvdXBf Y2xhdXNlcyk7CisKKwkvKgorCSAqIERldGVybWluZSB3aGV0aGVyIHdlIHNob3VsZCBjb25zaWRl ciBoYXNoLWJhc2VkIGltcGxlbWVudGF0aW9ucyBvZgorCSAqIGdyb3VwaW5nLgorCSAqLworCUFz c2VydChyb290LT5udW1PcmRlcmVkQWdncyA9PSAwKTsKKwljYW5faGFzaCA9IChhZ2dfaW5mby0+ Z3JvdXBfY2xhdXNlcyAhPSBOSUwgJiYKKwkJCQlncm91cGluZ19pc19oYXNoYWJsZShhZ2dfaW5m by0+Z3JvdXBfY2xhdXNlcykpOworCisJLyoKKwkgKiBDb25zaWRlciB3aGV0aGVyIHdlIHNob3Vs ZCBnZW5lcmF0ZSBwYXJ0aWFsbHkgYWdncmVnYXRlZCBub24tcGFydGlhbAorCSAqIHBhdGhzLiAg V2UgY2FuIG9ubHkgZG8gdGhpcyBpZiB3ZSBoYXZlIGEgbm9uLXBhcnRpYWwgcGF0aC4KKwkgKi8K KwlpZiAocmVsLT5wYXRobGlzdCAhPSBOSUwpCisJeworCQljaGVhcGVzdF90b3RhbF9wYXRoID0g cmVsLT5jaGVhcGVzdF90b3RhbF9wYXRoOworCQlBc3NlcnQoY2hlYXBlc3RfdG90YWxfcGF0aCAh PSBOVUxMKTsKKwl9CisKKwkvKgorCSAqIElmIHBhcmFsbGVsaXNtIGlzIHBvc3NpYmxlIGZvciBn cm91cGVkX3JlbCwgdGhlbiB3ZSBzaG91bGQgY29uc2lkZXIKKwkgKiBnZW5lcmF0aW5nIHBhcnRp YWxseS1ncm91cGVkIHBhcnRpYWwgcGF0aHMuICBIb3dldmVyLCBpZiB0aGUgdW5ncm91cGVkCisJ ICogcmVsIGhhcyBubyBwYXJ0aWFsIHBhdGhzLCB0aGVuIHdlIGNhbid0LgorCSAqLworCWlmIChn cm91cGVkX3JlbC0+Y29uc2lkZXJfcGFyYWxsZWwgJiYgcmVsLT5wYXJ0aWFsX3BhdGhsaXN0ICE9 IE5JTCkKKwl7CisJCWNoZWFwZXN0X3BhcnRpYWxfcGF0aCA9IGxpbml0aWFsKHJlbC0+cGFydGlh bF9wYXRobGlzdCk7CisJCUFzc2VydChjaGVhcGVzdF9wYXJ0aWFsX3BhdGggIT0gTlVMTCk7CisJ fQorCisJLyogRXN0aW1hdGUgbnVtYmVyIG9mIHBhcnRpYWwgZ3JvdXBzLiAqLworCWlmIChjaGVh cGVzdF90b3RhbF9wYXRoICE9IE5VTEwpCisJCWROdW1Hcm91cHMgPSBlc3RpbWF0ZV9udW1fZ3Jv dXBzKHJvb3QsCisJCQkJCQkJCQkJIGFnZ19pbmZvLT5ncm91cF9leHBycywKKwkJCQkJCQkJCQkg Y2hlYXBlc3RfdG90YWxfcGF0aC0+cm93cywKKwkJCQkJCQkJCQkgTlVMTCwgTlVMTCk7CisJaWYg KGNoZWFwZXN0X3BhcnRpYWxfcGF0aCAhPSBOVUxMKQorCQlkTnVtUGFydGlhbEdyb3VwcyA9IGVz dGltYXRlX251bV9ncm91cHMocm9vdCwKKwkJCQkJCQkJCQkJCWFnZ19pbmZvLT5ncm91cF9leHBy cywKKwkJCQkJCQkJCQkJCWNoZWFwZXN0X3BhcnRpYWxfcGF0aC0+cm93cywKKwkJCQkJCQkJCQkJ CU5VTEwsIE5VTEwpOworCisJaWYgKGNhbl9zb3J0ICYmIGNoZWFwZXN0X3RvdGFsX3BhdGggIT0g TlVMTCkKKwl7CisJCUxpc3RDZWxsICAgKmxjOworCisJCS8qCisJCSAqIFVzZSBhbnkgYXZhaWxh YmxlIHN1aXRhYmx5LXNvcnRlZCBwYXRoIGFzIGlucHV0LCBhbmQgYWxzbyBjb25zaWRlcgorCQkg KiBzb3J0aW5nIHRoZSBjaGVhcGVzdC10b3RhbCBwYXRoIGFuZCBpbmNyZW1lbnRhbCBzb3J0IG9u IGFueSBwYXRocworCQkgKiB3aXRoIHByZXNvcnRlZCBrZXlzLgorCQkgKgorCQkgKiBUbyBzYXZl IHBsYW5uaW5nIHRpbWUsIHdlIGlnbm9yZSBwYXJhbWV0ZXJpemVkIGlucHV0IHBhdGhzIHVubGVz cworCQkgKiB0aGV5IGFyZSB0aGUgY2hlYXBlc3QtdG90YWwgcGF0aC4KKwkJICovCisJCWZvcmVh Y2gobGMsIHJlbC0+cGF0aGxpc3QpCisJCXsKKwkJCVBhdGgJICAgKmlucHV0X3BhdGggPSAoUGF0 aCAqKSBsZmlyc3QobGMpOworCQkJUGF0aAkgICAqcGF0aDsKKwkJCWJvb2wJCWlzX3NvcnRlZDsK KwkJCWludAkJCXByZXNvcnRlZF9rZXlzOworCisJCQkvKgorCQkJICogSWdub3JlIHBhcmFtZXRl cml6ZWQgcGF0aHMgdGhhdCBhcmUgbm90IHRoZSBjaGVhcGVzdC10b3RhbAorCQkJICogcGF0aC4K KwkJCSAqLworCQkJaWYgKGlucHV0X3BhdGgtPnBhcmFtX2luZm8gJiYKKwkJCQlpbnB1dF9wYXRo ICE9IGNoZWFwZXN0X3RvdGFsX3BhdGgpCisJCQkJY29udGludWU7CisKKwkJCWlzX3NvcnRlZCA9 IHBhdGhrZXlzX2NvdW50X2NvbnRhaW5lZF9pbihhZ2dfaW5mby0+Z3JvdXBfcGF0aGtleXMsCisJ CQkJCQkJCQkJCQkJaW5wdXRfcGF0aC0+cGF0aGtleXMsCisJCQkJCQkJCQkJCQkJJnByZXNvcnRl ZF9rZXlzKTsKKworCQkJLyoKKwkJCSAqIElnbm9yZSBwYXRocyB0aGF0IGFyZSBub3Qgc3VpdGFi bHkgb3IgcGFydGlhbGx5IHNvcnRlZCwgdW5sZXNzCisJCQkgKiB0aGV5IGFyZSB0aGUgY2hlYXBl c3QgdG90YWwgcGF0aCAobm8gbmVlZCB0byBkZWFsIHdpdGggcGF0aHMKKwkJCSAqIHdoaWNoIGhh dmUgcHJlc29ydGVkIGtleXMgd2hlbiBpbmNyZW1lbnRhbCBzb3J0IGlzIGRpc2FibGVkKS4KKwkJ CSAqLworCQkJaWYgKCFpc19zb3J0ZWQgJiYgaW5wdXRfcGF0aCAhPSBjaGVhcGVzdF90b3RhbF9w YXRoICYmCisJCQkJKHByZXNvcnRlZF9rZXlzID09IDAgfHwgIWVuYWJsZV9pbmNyZW1lbnRhbF9z b3J0KSkKKwkJCQljb250aW51ZTsKKworCQkJLyoKKwkJCSAqIFNpbmNlIHRoZSBwYXRoIG9yaWdp bmF0ZXMgZnJvbSBhIG5vbi1ncm91cGVkIHJlbGF0aW9uIHRoYXQgaXMKKwkJCSAqIG5vdCBhd2Fy ZSBvZiBlYWdlciBhZ2dyZWdhdGlvbiwgd2UgbXVzdCBlbnN1cmUgdGhhdCBpdCBwcm92aWRlcwor CQkJICogdGhlIGNvcnJlY3QgaW5wdXQgZm9yIHBhcnRpYWwgYWdncmVnYXRpb24uCisJCQkgKi8K KwkJCXBhdGggPSAoUGF0aCAqKSBjcmVhdGVfcHJvamVjdGlvbl9wYXRoKHJvb3QsCisJCQkJCQkJ CQkJCQkgICBncm91cGVkX3JlbCwKKwkJCQkJCQkJCQkJCSAgIGlucHV0X3BhdGgsCisJCQkJCQkJ CQkJCQkgICBhZ2dfaW5mby0+YWdnX2lucHV0KTsKKworCQkJaWYgKCFpc19zb3J0ZWQpCisJCQl7 CisJCQkJLyoKKwkJCQkgKiBXZSd2ZSBubyBuZWVkIHRvIGNvbnNpZGVyIGJvdGggYSBzb3J0IGFu ZCBpbmNyZW1lbnRhbCBzb3J0LgorCQkJCSAqIFdlJ2xsIGp1c3QgZG8gYSBzb3J0IGlmIHRoZXJl IGFyZSBubyBwcmVzb3J0ZWQga2V5cyBhbmQgYW4KKwkJCQkgKiBpbmNyZW1lbnRhbCBzb3J0IHdo ZW4gdGhlcmUgYXJlIHByZXNvcnRlZCBrZXlzLgorCQkJCSAqLworCQkJCWlmIChwcmVzb3J0ZWRf a2V5cyA9PSAwIHx8ICFlbmFibGVfaW5jcmVtZW50YWxfc29ydCkKKwkJCQkJcGF0aCA9IChQYXRo ICopIGNyZWF0ZV9zb3J0X3BhdGgocm9vdCwKKwkJCQkJCQkJCQkJCQkgZ3JvdXBlZF9yZWwsCisJ CQkJCQkJCQkJCQkJIHBhdGgsCisJCQkJCQkJCQkJCQkJIGFnZ19pbmZvLT5ncm91cF9wYXRoa2V5 cywKKwkJCQkJCQkJCQkJCQkgLTEuMCk7CisJCQkJZWxzZQorCQkJCQlwYXRoID0gKFBhdGggKikg Y3JlYXRlX2luY3JlbWVudGFsX3NvcnRfcGF0aChyb290LAorCQkJCQkJCQkJCQkJCQkJCSBncm91 cGVkX3JlbCwKKwkJCQkJCQkJCQkJCQkJCQkgcGF0aCwKKwkJCQkJCQkJCQkJCQkJCQkgYWdnX2lu Zm8tPmdyb3VwX3BhdGhrZXlzLAorCQkJCQkJCQkJCQkJCQkJCSBwcmVzb3J0ZWRfa2V5cywKKwkJ CQkJCQkJCQkJCQkJCQkgLTEuMCk7CisJCQl9CisKKwkJCS8qCisJCQkgKiBxdWFsIGlzIE5JTCBi ZWNhdXNlIHRoZSBIQVZJTkcgY2xhdXNlIGNhbm5vdCBiZSBldmFsdWF0ZWQgdW50aWwKKwkJCSAq IHRoZSBmaW5hbCB2YWx1ZSBvZiB0aGUgYWdncmVnYXRlIGlzIGtub3duLgorCQkJICovCisJCQlw YXRoID0gKFBhdGggKikgY3JlYXRlX2FnZ19wYXRoKHJvb3QsCisJCQkJCQkJCQkJCWdyb3VwZWRf cmVsLAorCQkJCQkJCQkJCQlwYXRoLAorCQkJCQkJCQkJCQlhZ2dfaW5mby0+dGFyZ2V0LAorCQkJ CQkJCQkJCQlBR0dfU09SVEVELAorCQkJCQkJCQkJCQlBR0dTUExJVF9JTklUSUFMX1NFUklBTCwK KwkJCQkJCQkJCQkJYWdnX2luZm8tPmdyb3VwX2NsYXVzZXMsCisJCQkJCQkJCQkJCU5JTCwKKwkJ CQkJCQkJCQkJJmFnZ19jb3N0cywKKwkJCQkJCQkJCQkJZE51bUdyb3Vwcyk7CisKKwkJCWFkZF9w YXRoKGdyb3VwZWRfcmVsLCBwYXRoKTsKKwkJfQorCX0KKworCWlmIChjYW5fc29ydCAmJiBjaGVh cGVzdF9wYXJ0aWFsX3BhdGggIT0gTlVMTCkKKwl7CisJCUxpc3RDZWxsICAgKmxjOworCisJCS8q IFNpbWlsYXIgdG8gYWJvdmUgbG9naWMsIGJ1dCBmb3IgcGFydGlhbCBwYXRocy4gKi8KKwkJZm9y ZWFjaChsYywgcmVsLT5wYXJ0aWFsX3BhdGhsaXN0KQorCQl7CisJCQlQYXRoCSAgICppbnB1dF9w YXRoID0gKFBhdGggKikgbGZpcnN0KGxjKTsKKwkJCVBhdGgJICAgKnBhdGg7CisJCQlib29sCQlp c19zb3J0ZWQ7CisJCQlpbnQJCQlwcmVzb3J0ZWRfa2V5czsKKworCQkJaXNfc29ydGVkID0gcGF0 aGtleXNfY291bnRfY29udGFpbmVkX2luKGFnZ19pbmZvLT5ncm91cF9wYXRoa2V5cywKKwkJCQkJ CQkJCQkJCQlpbnB1dF9wYXRoLT5wYXRoa2V5cywKKwkJCQkJCQkJCQkJCQkmcHJlc29ydGVkX2tl eXMpOworCisJCQkvKgorCQkJICogSWdub3JlIHBhdGhzIHRoYXQgYXJlIG5vdCBzdWl0YWJseSBv ciBwYXJ0aWFsbHkgc29ydGVkLCB1bmxlc3MKKwkJCSAqIHRoZXkgYXJlIHRoZSBjaGVhcGVzdCBw YXJ0aWFsIHBhdGggKG5vIG5lZWQgdG8gZGVhbCB3aXRoIHBhdGhzCisJCQkgKiB3aGljaCBoYXZl IHByZXNvcnRlZCBrZXlzIHdoZW4gaW5jcmVtZW50YWwgc29ydCBpcyBkaXNhYmxlZCkuCisJCQkg Ki8KKwkJCWlmICghaXNfc29ydGVkICYmIGlucHV0X3BhdGggIT0gY2hlYXBlc3RfcGFydGlhbF9w YXRoICYmCisJCQkJKHByZXNvcnRlZF9rZXlzID09IDAgfHwgIWVuYWJsZV9pbmNyZW1lbnRhbF9z b3J0KSkKKwkJCQljb250aW51ZTsKKworCQkJLyoKKwkJCSAqIFNpbmNlIHRoZSBwYXRoIG9yaWdp bmF0ZXMgZnJvbSBhIG5vbi1ncm91cGVkIHJlbGF0aW9uIHRoYXQgaXMKKwkJCSAqIG5vdCBhd2Fy ZSBvZiBlYWdlciBhZ2dyZWdhdGlvbiwgd2UgbXVzdCBlbnN1cmUgdGhhdCBpdCBwcm92aWRlcwor CQkJICogdGhlIGNvcnJlY3QgaW5wdXQgZm9yIHBhcnRpYWwgYWdncmVnYXRpb24uCisJCQkgKi8K KwkJCXBhdGggPSAoUGF0aCAqKSBjcmVhdGVfcHJvamVjdGlvbl9wYXRoKHJvb3QsCisJCQkJCQkJ CQkJCQkgICBncm91cGVkX3JlbCwKKwkJCQkJCQkJCQkJCSAgIGlucHV0X3BhdGgsCisJCQkJCQkJ CQkJCQkgICBhZ2dfaW5mby0+YWdnX2lucHV0KTsKKworCQkJaWYgKCFpc19zb3J0ZWQpCisJCQl7 CisJCQkJLyoKKwkJCQkgKiBXZSd2ZSBubyBuZWVkIHRvIGNvbnNpZGVyIGJvdGggYSBzb3J0IGFu ZCBpbmNyZW1lbnRhbCBzb3J0LgorCQkJCSAqIFdlJ2xsIGp1c3QgZG8gYSBzb3J0IGlmIHRoZXJl IGFyZSBubyBwcmVzb3J0ZWQga2V5cyBhbmQgYW4KKwkJCQkgKiBpbmNyZW1lbnRhbCBzb3J0IHdo ZW4gdGhlcmUgYXJlIHByZXNvcnRlZCBrZXlzLgorCQkJCSAqLworCQkJCWlmIChwcmVzb3J0ZWRf a2V5cyA9PSAwIHx8ICFlbmFibGVfaW5jcmVtZW50YWxfc29ydCkKKwkJCQkJcGF0aCA9IChQYXRo ICopIGNyZWF0ZV9zb3J0X3BhdGgocm9vdCwKKwkJCQkJCQkJCQkJCQkgZ3JvdXBlZF9yZWwsCisJ CQkJCQkJCQkJCQkJIHBhdGgsCisJCQkJCQkJCQkJCQkJIGFnZ19pbmZvLT5ncm91cF9wYXRoa2V5 cywKKwkJCQkJCQkJCQkJCQkgLTEuMCk7CisJCQkJZWxzZQorCQkJCQlwYXRoID0gKFBhdGggKikg Y3JlYXRlX2luY3JlbWVudGFsX3NvcnRfcGF0aChyb290LAorCQkJCQkJCQkJCQkJCQkJCSBncm91 cGVkX3JlbCwKKwkJCQkJCQkJCQkJCQkJCQkgcGF0aCwKKwkJCQkJCQkJCQkJCQkJCQkgYWdnX2lu Zm8tPmdyb3VwX3BhdGhrZXlzLAorCQkJCQkJCQkJCQkJCQkJCSBwcmVzb3J0ZWRfa2V5cywKKwkJ CQkJCQkJCQkJCQkJCQkgLTEuMCk7CisJCQl9CisKKwkJCS8qCisJCQkgKiBxdWFsIGlzIE5JTCBi ZWNhdXNlIHRoZSBIQVZJTkcgY2xhdXNlIGNhbm5vdCBiZSBldmFsdWF0ZWQgdW50aWwKKwkJCSAq IHRoZSBmaW5hbCB2YWx1ZSBvZiB0aGUgYWdncmVnYXRlIGlzIGtub3duLgorCQkJICovCisJCQlw YXRoID0gKFBhdGggKikgY3JlYXRlX2FnZ19wYXRoKHJvb3QsCisJCQkJCQkJCQkJCWdyb3VwZWRf cmVsLAorCQkJCQkJCQkJCQlwYXRoLAorCQkJCQkJCQkJCQlhZ2dfaW5mby0+dGFyZ2V0LAorCQkJ CQkJCQkJCQlBR0dfU09SVEVELAorCQkJCQkJCQkJCQlBR0dTUExJVF9JTklUSUFMX1NFUklBTCwK KwkJCQkJCQkJCQkJYWdnX2luZm8tPmdyb3VwX2NsYXVzZXMsCisJCQkJCQkJCQkJCU5JTCwKKwkJ CQkJCQkJCQkJJmFnZ19jb3N0cywKKwkJCQkJCQkJCQkJZE51bVBhcnRpYWxHcm91cHMpOworCisJ CQlhZGRfcGFydGlhbF9wYXRoKGdyb3VwZWRfcmVsLCBwYXRoKTsKKwkJfQorCX0KKworCS8qCisJ ICogQWRkIGEgcGFydGlhbGx5LWdyb3VwZWQgSGFzaEFnZyBQYXRoIHdoZXJlIHBvc3NpYmxlCisJ ICovCisJaWYgKGNhbl9oYXNoICYmIGNoZWFwZXN0X3RvdGFsX3BhdGggIT0gTlVMTCkKKwl7CisJ CVBhdGgJICAgKnBhdGg7CisKKwkJLyoKKwkJICogU2luY2UgdGhlIHBhdGggb3JpZ2luYXRlcyBm cm9tIGEgbm9uLWdyb3VwZWQgcmVsYXRpb24gdGhhdCBpcyBub3QKKwkJICogYXdhcmUgb2YgZWFn ZXIgYWdncmVnYXRpb24sIHdlIG11c3QgZW5zdXJlIHRoYXQgaXQgcHJvdmlkZXMgdGhlCisJCSAq IGNvcnJlY3QgaW5wdXQgZm9yIHBhcnRpYWwgYWdncmVnYXRpb24uCisJCSAqLworCQlwYXRoID0g KFBhdGggKikgY3JlYXRlX3Byb2plY3Rpb25fcGF0aChyb290LAorCQkJCQkJCQkJCQkgICBncm91 cGVkX3JlbCwKKwkJCQkJCQkJCQkJICAgY2hlYXBlc3RfdG90YWxfcGF0aCwKKwkJCQkJCQkJCQkJ ICAgYWdnX2luZm8tPmFnZ19pbnB1dCk7CisKKwkJLyoKKwkJICogcXVhbCBpcyBOSUwgYmVjYXVz ZSB0aGUgSEFWSU5HIGNsYXVzZSBjYW5ub3QgYmUgZXZhbHVhdGVkIHVudGlsIHRoZQorCQkgKiBm aW5hbCB2YWx1ZSBvZiB0aGUgYWdncmVnYXRlIGlzIGtub3duLgorCQkgKi8KKwkJcGF0aCA9IChQ YXRoICopIGNyZWF0ZV9hZ2dfcGF0aChyb290LAorCQkJCQkJCQkJCWdyb3VwZWRfcmVsLAorCQkJ CQkJCQkJCXBhdGgsCisJCQkJCQkJCQkJYWdnX2luZm8tPnRhcmdldCwKKwkJCQkJCQkJCQlBR0df SEFTSEVELAorCQkJCQkJCQkJCUFHR1NQTElUX0lOSVRJQUxfU0VSSUFMLAorCQkJCQkJCQkJCWFn Z19pbmZvLT5ncm91cF9jbGF1c2VzLAorCQkJCQkJCQkJCU5JTCwKKwkJCQkJCQkJCQkmYWdnX2Nv c3RzLAorCQkJCQkJCQkJCWROdW1Hcm91cHMpOworCisJCWFkZF9wYXRoKGdyb3VwZWRfcmVsLCBw YXRoKTsKKwl9CisKKwkvKgorCSAqIE5vdyBhZGQgYSBwYXJ0aWFsbHktZ3JvdXBlZCBIYXNoQWdn IHBhcnRpYWwgUGF0aCB3aGVyZSBwb3NzaWJsZQorCSAqLworCWlmIChjYW5faGFzaCAmJiBjaGVh cGVzdF9wYXJ0aWFsX3BhdGggIT0gTlVMTCkKKwl7CisJCVBhdGgJICAgKnBhdGg7CisKKwkJLyoK KwkJICogU2luY2UgdGhlIHBhdGggb3JpZ2luYXRlcyBmcm9tIGEgbm9uLWdyb3VwZWQgcmVsYXRp b24gdGhhdCBpcyBub3QKKwkJICogYXdhcmUgb2YgZWFnZXIgYWdncmVnYXRpb24sIHdlIG11c3Qg ZW5zdXJlIHRoYXQgaXQgcHJvdmlkZXMgdGhlCisJCSAqIGNvcnJlY3QgaW5wdXQgZm9yIHBhcnRp YWwgYWdncmVnYXRpb24uCisJCSAqLworCQlwYXRoID0gKFBhdGggKikgY3JlYXRlX3Byb2plY3Rp b25fcGF0aChyb290LAorCQkJCQkJCQkJCQkgICBncm91cGVkX3JlbCwKKwkJCQkJCQkJCQkJICAg Y2hlYXBlc3RfcGFydGlhbF9wYXRoLAorCQkJCQkJCQkJCQkgICBhZ2dfaW5mby0+YWdnX2lucHV0 KTsKKworCQkvKgorCQkgKiBxdWFsIGlzIE5JTCBiZWNhdXNlIHRoZSBIQVZJTkcgY2xhdXNlIGNh bm5vdCBiZSBldmFsdWF0ZWQgdW50aWwgdGhlCisJCSAqIGZpbmFsIHZhbHVlIG9mIHRoZSBhZ2dy ZWdhdGUgaXMga25vd24uCisJCSAqLworCQlwYXRoID0gKFBhdGggKikgY3JlYXRlX2FnZ19wYXRo KHJvb3QsCisJCQkJCQkJCQkJZ3JvdXBlZF9yZWwsCisJCQkJCQkJCQkJcGF0aCwKKwkJCQkJCQkJ CQlhZ2dfaW5mby0+dGFyZ2V0LAorCQkJCQkJCQkJCUFHR19IQVNIRUQsCisJCQkJCQkJCQkJQUdH U1BMSVRfSU5JVElBTF9TRVJJQUwsCisJCQkJCQkJCQkJYWdnX2luZm8tPmdyb3VwX2NsYXVzZXMs CisJCQkJCQkJCQkJTklMLAorCQkJCQkJCQkJCSZhZ2dfY29zdHMsCisJCQkJCQkJCQkJZE51bVBh cnRpYWxHcm91cHMpOworCisJCWFkZF9wYXJ0aWFsX3BhdGgoZ3JvdXBlZF9yZWwsIHBhdGgpOwor CX0KK30KKwogLyoKICAqIG1ha2VfcmVsX2Zyb21fam9pbmxpc3QKICAqCSAgQnVpbGQgYWNjZXNz IHBhdGhzIHVzaW5nIGEgImpvaW5saXN0IiB0byBndWlkZSB0aGUgam9pbiBwYXRoIHNlYXJjaC4K QEAgLTM0OTQsNiArMzg5OSwxMCBAQCBzdGFuZGFyZF9qb2luX3NlYXJjaChQbGFubmVySW5mbyAq cm9vdCwgaW50IGxldmVsc19uZWVkZWQsIExpc3QgKmluaXRpYWxfcmVscykKIAkJICoKIAkJICog QWZ0ZXIgdGhhdCwgd2UncmUgZG9uZSBjcmVhdGluZyBwYXRocyBmb3IgdGhlIGpvaW5yZWwsIHNv IHJ1bgogCQkgKiBzZXRfY2hlYXBlc3QoKS4KKwkJICoKKwkJICogSW4gYWRkaXRpb24sIHdlIGFs c28gcnVuIGdlbmVyYXRlX2dyb3VwZWRfcGF0aHMoKSBmb3IgdGhlIGdyb3VwZWQKKwkJICogcmVs YXRpb24gb2YgZWFjaCBqdXN0LXByb2Nlc3NlZCBqb2lucmVsLCBhbmQgcnVuIHNldF9jaGVhcGVz dCgpIGZvcgorCQkgKiB0aGUgZ3JvdXBlZCByZWxhdGlvbiBhZnRlcndhcmRzLgogCQkgKi8KIAkJ Zm9yZWFjaChsYywgcm9vdC0+am9pbl9yZWxfbGV2ZWxbbGV2XSkKIAkJewpAQCAtMzUxNCw2ICsz OTIzLDI3IEBAIHN0YW5kYXJkX2pvaW5fc2VhcmNoKFBsYW5uZXJJbmZvICpyb290LCBpbnQgbGV2 ZWxzX25lZWRlZCwgTGlzdCAqaW5pdGlhbF9yZWxzKQogCQkJLyogRmluZCBhbmQgc2F2ZSB0aGUg Y2hlYXBlc3QgcGF0aHMgZm9yIHRoaXMgcmVsICovCiAJCQlzZXRfY2hlYXBlc3QocmVsKTsKIAor CQkJLyoKKwkJCSAqIEV4Y2VwdCBmb3IgdGhlIHRvcG1vc3Qgc2Nhbi9qb2luIHJlbCwgY29uc2lk ZXIgZ2VuZXJhdGluZworCQkJICogcGFydGlhbCBhZ2dyZWdhdGlvbiBwYXRocyBmb3IgdGhlIGdy b3VwZWQgcmVsYXRpb24gb24gdG9wIG9mCisJCQkgKiB0aGUgcGF0aHMgb2YgdGhpcyByZWwuICBB ZnRlciB0aGF0LCB3ZSdyZSBkb25lIGNyZWF0aW5nIHBhdGhzCisJCQkgKiBmb3IgdGhlIGdyb3Vw ZWQgcmVsYXRpb24sIHNvIHJ1biBzZXRfY2hlYXBlc3QoKS4KKwkJCSAqLworCQkJaWYgKCFibXNf ZXF1YWwocmVsLT5yZWxpZHMsIHJvb3QtPmFsbF9xdWVyeV9yZWxzKSkKKwkJCXsKKwkJCQlSZWxP cHRJbmZvICpncm91cGVkX3JlbDsKKworCQkJCWdyb3VwZWRfcmVsID0gcmVsLT5ncm91cGVkX3Jl bDsKKwkJCQlpZiAoZ3JvdXBlZF9yZWwpCisJCQkJeworCQkJCQlBc3NlcnQoSVNfR1JPVVBFRF9S RUwoZ3JvdXBlZF9yZWwpKTsKKworCQkJCQlnZW5lcmF0ZV9ncm91cGVkX3BhdGhzKHJvb3QsIGdy b3VwZWRfcmVsLCByZWwsCisJCQkJCQkJCQkJICAgZ3JvdXBlZF9yZWwtPmFnZ19pbmZvKTsKKwkJ CQkJc2V0X2NoZWFwZXN0KGdyb3VwZWRfcmVsKTsKKwkJCQl9CisJCQl9CisKICNpZmRlZiBPUFRJ TUlaRVJfREVCVUcKIAkJCXBwcmludChyZWwpOwogI2VuZGlmCkBAIC00MzgzLDYgKzQ4MTMsMjkg QEAgZ2VuZXJhdGVfcGFydGl0aW9ud2lzZV9qb2luX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBS ZWxPcHRJbmZvICpyZWwpCiAJCWlmIChJU19EVU1NWV9SRUwoY2hpbGRfcmVsKSkKIAkJCWNvbnRp bnVlOwogCisJCS8qCisJCSAqIEV4Y2VwdCBmb3IgdGhlIHRvcG1vc3Qgc2Nhbi9qb2luIHJlbCwg Y29uc2lkZXIgZ2VuZXJhdGluZyBwYXJ0aWFsCisJCSAqIGFnZ3JlZ2F0aW9uIHBhdGhzIGZvciB0 aGUgZ3JvdXBlZCByZWxhdGlvbiBvbiB0b3Agb2YgdGhlIHBhdGhzIG9mCisJCSAqIHRoaXMgcGFy dGl0aW9uZWQgY2hpbGQtam9pbi4gIEFmdGVyIHRoYXQsIHdlJ3JlIGRvbmUgY3JlYXRpbmcgcGF0 aHMKKwkJICogZm9yIHRoZSBncm91cGVkIHJlbGF0aW9uLCBzbyBydW4gc2V0X2NoZWFwZXN0KCku CisJCSAqLworCQlpZiAoIWJtc19lcXVhbChJU19PVEhFUl9SRUwocmVsKSA/CisJCQkJCSAgIHJl bC0+dG9wX3BhcmVudF9yZWxpZHMgOiByZWwtPnJlbGlkcywKKwkJCQkJICAgcm9vdC0+YWxsX3F1 ZXJ5X3JlbHMpKQorCQl7CisJCQlSZWxPcHRJbmZvICpncm91cGVkX3JlbDsKKworCQkJZ3JvdXBl ZF9yZWwgPSBjaGlsZF9yZWwtPmdyb3VwZWRfcmVsOworCQkJaWYgKGdyb3VwZWRfcmVsKQorCQkJ eworCQkJCUFzc2VydChJU19HUk9VUEVEX1JFTChncm91cGVkX3JlbCkpOworCisJCQkJZ2VuZXJh dGVfZ3JvdXBlZF9wYXRocyhyb290LCBncm91cGVkX3JlbCwgY2hpbGRfcmVsLAorCQkJCQkJCQkJ ICAgZ3JvdXBlZF9yZWwtPmFnZ19pbmZvKTsKKwkJCQlzZXRfY2hlYXBlc3QoZ3JvdXBlZF9yZWwp OworCQkJfQorCQl9CisKICNpZmRlZiBPUFRJTUlaRVJfREVCVUcKIAkJcHByaW50KGNoaWxkX3Jl bCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2pvaW5y ZWxzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9qb2lucmVscy5jCmluZGV4IDUzNTI0 OGFhNTI1Li4wNGNiYmNlYTJhNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bh dGgvam9pbnJlbHMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9qb2lucmVscy5j CkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJv cHRpbWl6ZXIvYXBwZW5kaW5mby5oIgorI2luY2x1ZGUgIm9wdGltaXplci9jb3N0LmgiCiAjaW5j bHVkZSAib3B0aW1pemVyL2pvaW5pbmZvLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3BhdGhub2Rl LmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3BhdGhzLmgiCkBAIC0zNiw2ICszNyw5IEBAIHN0YXRp YyBib29sIGhhc19sZWdhbF9qb2luY2xhdXNlKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZv ICpyZWwpOwogc3RhdGljIGJvb2wgcmVzdHJpY3Rpb25faXNfY29uc3RhbnRfZmFsc2UoTGlzdCAq cmVzdHJpY3RsaXN0LAogCQkJCQkJCQkJCSAgUmVsT3B0SW5mbyAqam9pbnJlbCwKIAkJCQkJCQkJ CQkgIGJvb2wgb25seV9wdXNoZWRfZG93bik7CitzdGF0aWMgdm9pZCBtYWtlX2dyb3VwZWRfam9p bl9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbDEsCisJCQkJCQkJCSAgUmVs T3B0SW5mbyAqcmVsMiwgUmVsT3B0SW5mbyAqam9pbnJlbCwKKwkJCQkJCQkJICBTcGVjaWFsSm9p bkluZm8gKnNqaW5mbywgTGlzdCAqcmVzdHJpY3RsaXN0KTsKIHN0YXRpYyB2b2lkIHBvcHVsYXRl X2pvaW5yZWxfd2l0aF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsMSwK IAkJCQkJCQkJCQlSZWxPcHRJbmZvICpyZWwyLCBSZWxPcHRJbmZvICpqb2lucmVsLAogCQkJCQkJ CQkJCVNwZWNpYWxKb2luSW5mbyAqc2ppbmZvLCBMaXN0ICpyZXN0cmljdGxpc3QpOwpAQCAtNzYy LDYgKzc2NiwxMCBAQCBtYWtlX2pvaW5fcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZv ICpyZWwxLCBSZWxPcHRJbmZvICpyZWwyKQogCQlyZXR1cm4gam9pbnJlbDsKIAl9CiAKKwkvKiBC dWlsZCBhIGdyb3VwZWQgam9pbiByZWxhdGlvbiBmb3IgJ2pvaW5yZWwnIGlmIHBvc3NpYmxlLiAq LworCW1ha2VfZ3JvdXBlZF9qb2luX3JlbChyb290LCByZWwxLCByZWwyLCBqb2lucmVsLCBzamlu Zm8sCisJCQkJCQkgIHJlc3RyaWN0bGlzdCk7CisKIAkvKiBBZGQgcGF0aHMgdG8gdGhlIGpvaW4g cmVsYXRpb24uICovCiAJcG9wdWxhdGVfam9pbnJlbF93aXRoX3BhdGhzKHJvb3QsIHJlbDEsIHJl bDIsIGpvaW5yZWwsIHNqaW5mbywKIAkJCQkJCQkJcmVzdHJpY3RsaXN0KTsKQEAgLTg3Myw2ICs4 ODEsMTg2IEBAIGFkZF9vdXRlcl9qb2luc190b19yZWxpZHMoUGxhbm5lckluZm8gKnJvb3QsIFJl bGlkcyBpbnB1dF9yZWxpZHMsCiAJcmV0dXJuIGlucHV0X3JlbGlkczsKIH0KIAorLyoKKyAqIG1h a2VfZ3JvdXBlZF9qb2luX3JlbAorICoJICBCdWlsZCBhIGdyb3VwZWQgam9pbiByZWxhdGlvbiBm b3IgdGhlIGdpdmVuICJqb2lucmVsIiBpZiBlYWdlcgorICoJICBhZ2dyZWdhdGlvbiBpcyBhcHBs aWNhYmxlIGFuZCB0aGUgcmVzdWx0aW5nIGdyb3VwZWQgcGF0aHMgYXJlIGNvbnNpZGVyZWQKKyAq CSAgdXNlZnVsLgorICoKKyAqIFRoZXJlIGFyZSB0d28gc3RyYXRlZ2llcyBmb3IgZ2VuZXJhdGlu ZyBncm91cGVkIHBhdGhzIGZvciBhIGpvaW4gcmVsYXRpb246CisgKgorICogMS4gSm9pbiBhIGdy b3VwZWQgKHBhcnRpYWxseSBhZ2dyZWdhdGVkKSBpbnB1dCByZWxhdGlvbiB3aXRoIGEgbm9uLWdy b3VwZWQKKyAqIGlucHV0IChlLmcuLCBBR0coQikgSk9JTiBBKS4KKyAqCisgKiAyLiBBcHBseSBw YXJ0aWFsIGFnZ3JlZ2F0aW9uIChzb3J0ZWQgb3IgaGFzaGVkKSBvbiB0b3Agb2YgZXhpc3RpbmcK KyAqIG5vbi1ncm91cGVkIGpvaW4gcGF0aHMgKGUuZy4sIEFHRyhBIEpPSU4gQikpLgorICoKKyAq IFRvIGxpbWl0IHBsYW5uaW5nIGVmZm9ydCBhbmQgYXZvaWQgYW4gZXhwbG9zaW9uIG9mIGFsdGVy bmF0aXZlcywgd2UgYWRvcHQgYQorICogc3RyYXRlZ3kgd2hlcmUgcGFydGlhbCBhZ2dyZWdhdGlv biBpcyBvbmx5IHB1c2hlZCB0byB0aGUgbG93ZXN0IHBvc3NpYmxlCisgKiBsZXZlbCBpbiB0aGUg am9pbiB0cmVlIHRoYXQgaXMgZGVlbWVkIHVzZWZ1bC4gIFRoYXQgaXMsIGlmIGdyb3VwZWQgcGF0 aHMgY2FuCisgKiBiZSBidWlsdCB1c2luZyB0aGUgZmlyc3Qgc3RyYXRlZ3ksIHdlIHNraXAgY29u c2lkZXJhdGlvbiBvZiB0aGUgc2Vjb25kCisgKiBzdHJhdGVneSBmb3IgdGhlIHNhbWUgam9pbiBs ZXZlbC4KKyAqCisgKiBBZGRpdGlvbmFsbHksIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBsb3dlc3Qg dXNlZnVsIGxldmVscyB3aGVyZSBwYXJ0aWFsCisgKiBhZ2dyZWdhdGlvbiBjb3VsZCBiZSBhcHBs aWVkLCBzdWNoIGFzIGluIGEgam9pbiB0cmVlIHdpdGggcmVsYXRpb25zIEEsIEIsCisgKiBhbmQg QyB3aGVyZSBib3RoICJBR0coQSBKT0lOIEIpIEpPSU4gQyIgYW5kICJBIEpPSU4gQUdHKEIgSk9J TiBDKSIgYXJlIHZhbGlkCisgKiBwbGFjZW1lbnRzLCB3ZSBjaG9vc2Ugb25seSB0aGUgZmlyc3Qg b25lIGVuY291bnRlcmVkIGR1cmluZyBqb2luIHNlYXJjaC4KKyAqIFRoaXMgYXZvaWRzIGdlbmVy YXRpbmcgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIHNhbWUgZ3JvdXBlZCByZWxhdGlvbiBiYXNl ZAorICogb24gZGlmZmVyZW50IGFnZ3JlZ2F0aW9uIHBsYWNlbWVudHMuCisgKgorICogVGhlc2Ug aGV1cmlzdGljcyBhbHNvIGVuc3VyZSB0aGF0IGFsbCBncm91cGVkIHBhdGhzIGZvciB0aGUgc2Ft ZSBncm91cGVkCisgKiByZWxhdGlvbiBwcm9kdWNlIHRoZSBzYW1lIHNldCBvZiByb3dzLCB3aGlj aCBpcyBhIGJhc2ljIGFzc3VtcHRpb24gaW4gdGhlCisgKiBwbGFubmVyLgorICovCitzdGF0aWMg dm9pZAorbWFrZV9ncm91cGVkX2pvaW5fcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZv ICpyZWwxLAorCQkJCQkgIFJlbE9wdEluZm8gKnJlbDIsIFJlbE9wdEluZm8gKmpvaW5yZWwsCisJ CQkJCSAgU3BlY2lhbEpvaW5JbmZvICpzamluZm8sIExpc3QgKnJlc3RyaWN0bGlzdCkKK3sKKwlS ZWxPcHRJbmZvICpncm91cGVkX3JlbDsKKwlSZWxPcHRJbmZvICpncm91cGVkX3JlbDE7CisJUmVs T3B0SW5mbyAqZ3JvdXBlZF9yZWwyOworCWJvb2wJCXJlbDFfZW1wdHk7CisJYm9vbAkJcmVsMl9l bXB0eTsKKwlSZWxpZHMJCWFnZ19hcHBseV9hdDsKKworCS8qCisJICogSWYgdGhlcmUgYXJlIG5v IGFnZ3JlZ2F0ZSBleHByZXNzaW9ucyBvciBncm91cGluZyBleHByZXNzaW9ucywgZWFnZXIKKwkg KiBhZ2dyZWdhdGlvbiBpcyBub3QgcG9zc2libGUuCisJICovCisJaWYgKHJvb3QtPmFnZ19jbGF1 c2VfbGlzdCA9PSBOSUwgfHwKKwkJcm9vdC0+Z3JvdXBfZXhwcl9saXN0ID09IE5JTCkKKwkJcmV0 dXJuOworCisJLyogUmV0cmlldmUgdGhlIGdyb3VwZWQgcmVsYXRpb25zIGZvciB0aGUgdHdvIGlu cHV0IHJlbHMgKi8KKwlncm91cGVkX3JlbDEgPSByZWwxLT5ncm91cGVkX3JlbDsKKwlncm91cGVk X3JlbDIgPSByZWwyLT5ncm91cGVkX3JlbDsKKworCXJlbDFfZW1wdHkgPSAoZ3JvdXBlZF9yZWwx ID09IE5VTEwgfHwgSVNfRFVNTVlfUkVMKGdyb3VwZWRfcmVsMSkpOworCXJlbDJfZW1wdHkgPSAo Z3JvdXBlZF9yZWwyID09IE5VTEwgfHwgSVNfRFVNTVlfUkVMKGdyb3VwZWRfcmVsMikpOworCisJ LyogRmluZCBvciBjb25zdHJ1Y3QgYSBncm91cGVkIGpvaW5yZWwgZm9yIHRoaXMgam9pbnJlbCAq LworCWdyb3VwZWRfcmVsID0gam9pbnJlbC0+Z3JvdXBlZF9yZWw7CisJaWYgKGdyb3VwZWRfcmVs ID09IE5VTEwpCisJeworCQlSZWxBZ2dJbmZvICphZ2dfaW5mbyA9IE5VTEw7CisKKwkJLyoKKwkJ ICogUHJlcGFyZSB0aGUgaW5mb3JtYXRpb24gbmVlZGVkIHRvIGNyZWF0ZSBncm91cGVkIHBhdGhz IGZvciB0aGlzCisJCSAqIGpvaW4gcmVsYXRpb24uCisJCSAqLworCQlhZ2dfaW5mbyA9IGNyZWF0 ZV9yZWxfYWdnX2luZm8ocm9vdCwgam9pbnJlbCk7CisJCWlmIChhZ2dfaW5mbyA9PSBOVUxMKQor CQkJcmV0dXJuOworCisJCS8qCisJCSAqIElmIGdyb3VwZWQgcGF0aHMgZm9yIHRoZSBnaXZlbiBq b2luIHJlbGF0aW9uIGFyZSBub3QgY29uc2lkZXJlZAorCQkgKiB1c2VmdWwsIGFuZCBubyBncm91 cGVkIHBhdGhzIGNhbiBiZSBidWlsdCBieSBqb2luaW5nIGdyb3VwZWQgaW5wdXQKKwkJICogcmVs YXRpb25zLCBza2lwIGJ1aWxkaW5nIHRoZSBncm91cGVkIGpvaW4gcmVsYXRpb24uCisJCSAqLwor CQlpZiAoIWFnZ19pbmZvLT5hZ2dfdXNlZnVsICYmCisJCQkocmVsMV9lbXB0eSA9PSByZWwyX2Vt cHR5KSkKKwkJCXJldHVybjsKKworCQkvKiBidWlsZCB0aGUgZ3JvdXBlZCByZWxhdGlvbiAqLwor CQlncm91cGVkX3JlbCA9IGJ1aWxkX2dyb3VwZWRfcmVsKHJvb3QsIGpvaW5yZWwpOworCQlncm91 cGVkX3JlbC0+cmVsdGFyZ2V0ID0gYWdnX2luZm8tPnRhcmdldDsKKworCQlpZiAocmVsMV9lbXB0 eSAhPSByZWwyX2VtcHR5KQorCQl7CisJCQkvKgorCQkJICogSWYgdGhlcmUgaXMgZXhhY3RseSBv bmUgZ3JvdXBlZCBpbnB1dCByZWxhdGlvbiwgdGhlbiB3ZSBjYW4KKwkJCSAqIGJ1aWxkIGdyb3Vw ZWQgcGF0aHMgYnkgam9pbmluZyB0aGUgaW5wdXQgcmVsYXRpb25zLiAgU2V0IHNpemUKKwkJCSAq IGVzdGltYXRlcyBmb3IgdGhlIGdyb3VwZWQgam9pbiByZWxhdGlvbiBiYXNlZCBvbiB0aGUgaW5w dXQKKwkJCSAqIHJlbGF0aW9ucywgYW5kIHVwZGF0ZSB0aGUgbG93ZXN0IGpvaW4gbGV2ZWwgd2hl cmUgcGFydGlhbAorCQkJICogYWdncmVnYXRpb24gaXMgYXBwbGllZCB0byB0aGF0IG9mIHRoZSBn cm91cGVkIGlucHV0IHJlbGF0aW9uLgorCQkJICovCisJCQlzZXRfam9pbnJlbF9zaXplX2VzdGlt YXRlcyhyb290LCBncm91cGVkX3JlbCwKKwkJCQkJCQkJCSAgIHJlbDFfZW1wdHkgPyByZWwxIDog Z3JvdXBlZF9yZWwxLAorCQkJCQkJCQkJICAgcmVsMl9lbXB0eSA/IHJlbDIgOiBncm91cGVkX3Jl bDIsCisJCQkJCQkJCQkgICBzamluZm8sIHJlc3RyaWN0bGlzdCk7CisJCQlhZ2dfaW5mby0+YXBw bHlfYXQgPSByZWwxX2VtcHR5ID8KKwkJCQlncm91cGVkX3JlbDItPmFnZ19pbmZvLT5hcHBseV9h dCA6CisJCQkJZ3JvdXBlZF9yZWwxLT5hZ2dfaW5mby0+YXBwbHlfYXQ7CisJCX0KKwkJZWxzZQor CQl7CisJCQkvKgorCQkJICogT3RoZXJ3aXNlLCBncm91cGVkIHBhdGhzIGNhbiBiZSBidWlsdCBi eSBhcHBseWluZyBwYXJ0aWFsCisJCQkgKiBhZ2dyZWdhdGlvbiBvbiB0b3Agb2YgZXhpc3Rpbmcg bm9uLWdyb3VwZWQgam9pbiBwYXRocy4gIFNldAorCQkJICogc2l6ZSBlc3RpbWF0ZXMgZm9yIHRo ZSBncm91cGVkIGpvaW4gcmVsYXRpb24gYmFzZWQgb24gdGhlCisJCQkgKiBlc3RpbWF0ZWQgbnVt YmVyIG9mIGdyb3VwcywgYW5kIHRyYWNrIHRoZSBsb3dlc3Qgam9pbiBsZXZlbAorCQkJICogd2hl cmUgcGFydGlhbCBhZ2dyZWdhdGlvbiBpcyBhcHBsaWVkLiAgTm90ZSB0aGF0IHRoZXNlIHZhbHVl cworCQkJICogbWF5IGJlIHVwZGF0ZWQgbGF0ZXIgaWYgaXQgaXMgZGV0ZXJtaW5lZCB0aGF0IGdy b3VwZWQgcGF0aHMgY2FuCisJCQkgKiBiZSBjb25zdHJ1Y3RlZCBieSBqb2luaW5nIG90aGVyIGlu cHV0IHJlbGF0aW9ucy4KKwkJCSAqLworCQkJZ3JvdXBlZF9yZWwtPnJvd3MgPSBhZ2dfaW5mby0+ Z3JvdXBlZF9yb3dzOworCQkJYWdnX2luZm8tPmFwcGx5X2F0ID0gYm1zX2NvcHkoam9pbnJlbC0+ cmVsaWRzKTsKKwkJfQorCisJCWdyb3VwZWRfcmVsLT5hZ2dfaW5mbyA9IGFnZ19pbmZvOworCQlq b2lucmVsLT5ncm91cGVkX3JlbCA9IGdyb3VwZWRfcmVsOworCX0KKworCUFzc2VydChJU19HUk9V UEVEX1JFTChncm91cGVkX3JlbCkpOworCisJLyogV2UgbWF5IGhhdmUgYWxyZWFkeSBwcm92ZW4g dGhpcyBncm91cGVkIGpvaW4gcmVsYXRpb24gdG8gYmUgZHVtbXkuICovCisJaWYgKElTX0RVTU1Z X1JFTChncm91cGVkX3JlbCkpCisJCXJldHVybjsKKworCS8qCisJICogTm90aGluZyB0byBkbyBp ZiB0aGVyZSdzIG5vIGdyb3VwZWQgaW5wdXQgcmVsYXRpb24uICBBbHNvLCBqb2luaW5nIHR3bwor CSAqIGdyb3VwZWQgcmVsYXRpb25zIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLgorCSAqLwor CWlmIChyZWwxX2VtcHR5ID09IHJlbDJfZW1wdHkpCisJCXJldHVybjsKKworCS8qCisJICogR2V0 IHRoZSBsb3dlc3Qgam9pbiBsZXZlbCB3aGVyZSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGlzIGFwcGxp ZWQgYW1vbmcKKwkgKiB0aGUgZ2l2ZW4gaW5wdXQgcmVsYXRpb25zLgorCSAqLworCWFnZ19hcHBs eV9hdCA9IHJlbDFfZW1wdHkgPworCQlncm91cGVkX3JlbDItPmFnZ19pbmZvLT5hcHBseV9hdCA6 CisJCWdyb3VwZWRfcmVsMS0+YWdnX2luZm8tPmFwcGx5X2F0OworCisJLyoKKwkgKiBJZiBpdCdz IG5vdCB0aGUgZGVzaWduYXRlZCBsZXZlbCwgc2tpcCBidWlsZGluZyBncm91cGVkIHBhdGhzLgor CSAqCisJICogT25lIGV4Y2VwdGlvbiBpcyB3aGVuIGl0IGlzIGEgc3Vic2V0IG9mIHRoZSBwcmV2 aW91c2x5IHJlY29yZGVkIGxldmVsLgorCSAqIEluIHRoYXQgY2FzZSwgd2UgbmVlZCB0byB1cGRh dGUgdGhlIGRlc2lnbmF0ZWQgbGV2ZWwgdG8gdGhpcyBvbmUsIGFuZAorCSAqIGFkanVzdCB0aGUg c2l6ZSBlc3RpbWF0ZXMgZm9yIHRoZSBncm91cGVkIGpvaW4gcmVsYXRpb24gYWNjb3JkaW5nbHku CisJICogRm9yIGV4YW1wbGUsIHN1cHBvc2UgcGFydGlhbCBhZ2dyZWdhdGlvbiBjYW4gYmUgYXBw bGllZCBvbiB0b3Agb2YgKEIKKwkgKiBKT0lOIEMpLiAgSWYgd2UgZmlyc3QgY29uc3RydWN0IHRo ZSBqb2luIGFzICgoQSBKT0lOIEIpIEpPSU4gQyksIHdlJ2QKKwkgKiByZWNvcmQgdGhlIGRlc2ln bmF0ZWQgbGV2ZWwgYXMgaW5jbHVkaW5nIGFsbCB0aHJlZSByZWxhdGlvbnMgKEEgQiBDKS4KKwkg KiBMYXRlciwgd2hlbiB3ZSBjb25zaWRlciAoQSBKT0lOIChCIEpPSU4gQykpLCB3ZSBlbmNvdW50 ZXIgdGhlIHNtYWxsZXIKKwkgKiAoQiBDKSBqb2luIGxldmVsIGRpcmVjdGx5LiAgU2luY2UgdGhp cyBpcyBhIHN1YnNldCBvZiB0aGUgcHJldmlvdXMKKwkgKiBsZXZlbCBhbmQgc3RpbGwgdmFsaWQg Zm9yIHBhcnRpYWwgYWdncmVnYXRpb24sIHdlIHVwZGF0ZSB0aGUgZGVzaWduYXRlZAorCSAqIGxl dmVsIHRvIChCIEMpLCBhbmQgYWRqdXN0IHRoZSBzaXplIGVzdGltYXRlcyBhY2NvcmRpbmdseS4K KwkgKi8KKwlpZiAoIWJtc19lcXVhbChhZ2dfYXBwbHlfYXQsIGdyb3VwZWRfcmVsLT5hZ2dfaW5m by0+YXBwbHlfYXQpKQorCXsKKwkJaWYgKGJtc19pc19zdWJzZXQoYWdnX2FwcGx5X2F0LCBncm91 cGVkX3JlbC0+YWdnX2luZm8tPmFwcGx5X2F0KSkKKwkJeworCQkJLyogQWRqdXN0IHRoZSBzaXpl IGVzdGltYXRlcyBmb3IgdGhlIGdyb3VwZWQgam9pbiByZWxhdGlvbi4gKi8KKwkJCXNldF9qb2lu cmVsX3NpemVfZXN0aW1hdGVzKHJvb3QsIGdyb3VwZWRfcmVsLAorCQkJCQkJCQkJICAgcmVsMV9l bXB0eSA/IHJlbDEgOiBncm91cGVkX3JlbDEsCisJCQkJCQkJCQkgICByZWwyX2VtcHR5ID8gcmVs MiA6IGdyb3VwZWRfcmVsMiwKKwkJCQkJCQkJCSAgIHNqaW5mbywgcmVzdHJpY3RsaXN0KTsKKwkJ CWdyb3VwZWRfcmVsLT5hZ2dfaW5mby0+YXBwbHlfYXQgPSBhZ2dfYXBwbHlfYXQ7CisJCX0KKwkJ ZWxzZQorCQkJcmV0dXJuOworCX0KKworCS8qIE1ha2UgcGF0aHMgZm9yIHRoZSBncm91cGVkIGpv aW4gcmVsYXRpb24uICovCisJcG9wdWxhdGVfam9pbnJlbF93aXRoX3BhdGhzKHJvb3QsCisJCQkJ CQkJCXJlbDFfZW1wdHkgPyByZWwxIDogZ3JvdXBlZF9yZWwxLAorCQkJCQkJCQlyZWwyX2VtcHR5 ID8gcmVsMiA6IGdyb3VwZWRfcmVsMiwKKwkJCQkJCQkJZ3JvdXBlZF9yZWwsCisJCQkJCQkJCXNq aW5mbywKKwkJCQkJCQkJcmVzdHJpY3RsaXN0KTsKK30KKwogLyoKICAqIHBvcHVsYXRlX2pvaW5y ZWxfd2l0aF9wYXRocwogICoJICBBZGQgcGF0aHMgdG8gdGhlIGdpdmVuIGpvaW5yZWwgZm9yIGdp dmVuIHBhaXIgb2Ygam9pbmluZyByZWxhdGlvbnMuIFRoZQpAQCAtMTYxNSw2ICsxODAzLDExIEBA IHRyeV9wYXJ0aXRpb253aXNlX2pvaW4oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJl bDEsIFJlbE9wdEluZm8gKnJlbDIsCiAJCQkJCQkgYWRqdXN0X2NoaWxkX3JlbGlkcyhqb2lucmVs LT5yZWxpZHMsCiAJCQkJCQkJCQkJCSBuYXBwaW5mb3MsIGFwcGluZm9zKSkpOwogCisJCS8qIEJ1 aWxkIGEgZ3JvdXBlZCBqb2luIHJlbGF0aW9uIGZvciAnY2hpbGRfam9pbnJlbCcgaWYgcG9zc2li bGUgKi8KKwkJbWFrZV9ncm91cGVkX2pvaW5fcmVsKHJvb3QsIGNoaWxkX3JlbDEsIGNoaWxkX3Jl bDIsCisJCQkJCQkJICBjaGlsZF9qb2lucmVsLCBjaGlsZF9zamluZm8sCisJCQkJCQkJICBjaGls ZF9yZXN0cmljdGxpc3QpOworCiAJCS8qIEFuZCBtYWtlIHBhdGhzIGZvciB0aGUgY2hpbGQgam9p biAqLwogCQlwb3B1bGF0ZV9qb2lucmVsX3dpdGhfcGF0aHMocm9vdCwgY2hpbGRfcmVsMSwgY2hp bGRfcmVsMiwKIAkJCQkJCQkJCWNoaWxkX2pvaW5yZWwsIGNoaWxkX3NqaW5mbywKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2luaXRzcGxhbi5jIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vaW5pdHNwbGFuLmMKaW5kZXggM2UzZmVjODkyNTIuLjljYzhjNTU4Y2Nm IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9pbml0c3BsYW4uYworKysg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9pbml0c3BsYW4uYwpAQCAtMTQsNiArMTQsNyBA QAogICovCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgImFjY2Vzcy9uYnRyZWUu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX3R5cGUuaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKQEAgLTMxLDYgKzMyLDcg QEAKICNpbmNsdWRlICJvcHRpbWl6ZXIvcmVzdHJpY3RpbmZvLmgiCiAjaW5jbHVkZSAicGFyc2Vy L2FuYWx5emUuaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVNYW5pcC5oIgorI2luY2x1ZGUg InV0aWxzL2ZtZ3JvaWRzLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVk ZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIKQEAgLTgxLDYgKzgz LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgSm9pblRyZWVJdGVtCiB9IEpvaW5UcmVlSXRlbTsKIAogCitz dGF0aWMgYm9vbCBpc19wYXJ0aWFsX2FnZ19tZW1vcnlfcmlza3koUGxhbm5lckluZm8gKnJvb3Qp Oworc3RhdGljIHZvaWQgY3JlYXRlX2FnZ19jbGF1c2VfaW5mb3MoUGxhbm5lckluZm8gKnJvb3Qp Oworc3RhdGljIHZvaWQgY3JlYXRlX2dyb3VwaW5nX2V4cHJfaW5mb3MoUGxhbm5lckluZm8gKnJv b3QpOwogc3RhdGljIHZvaWQgZXh0cmFjdF9sYXRlcmFsX3JlZmVyZW5jZXMoUGxhbm5lckluZm8g KnJvb3QsIFJlbE9wdEluZm8gKmJyZWwsCiAJCQkJCQkJCQkgICBJbmRleCBydGluZGV4KTsKIHN0 YXRpYyBMaXN0ICpkZWNvbnN0cnVjdF9yZWN1cnNlKFBsYW5uZXJJbmZvICpyb290LCBOb2RlICpq dG5vZGUsCkBAIC02MjgsNiArNjMzLDMyMyBAQCByZW1vdmVfdXNlbGVzc19ncm91cGJ5X2NvbHVt bnMoUGxhbm5lckluZm8gKnJvb3QpCiAJfQogfQogCisvKgorICogc2V0dXBfZWFnZXJfYWdncmVn YXRpb24KKyAqCSAgQ2hlY2sgaWYgZWFnZXIgYWdncmVnYXRpb24gaXMgYXBwbGljYWJsZSwgYW5k IGlmIHNvIGNvbGxlY3Qgc3VpdGFibGUKKyAqCSAgYWdncmVnYXRlIGV4cHJlc3Npb25zIGFuZCBn cm91cGluZyBleHByZXNzaW9ucyBpbiB0aGUgcXVlcnkuCisgKi8KK3ZvaWQKK3NldHVwX2VhZ2Vy X2FnZ3JlZ2F0aW9uKFBsYW5uZXJJbmZvICpyb290KQoreworCS8qCisJICogRG9uJ3QgYXBwbHkg ZWFnZXIgYWdncmVnYXRpb24gaWYgZGlzYWJsZWQgYnkgdXNlci4KKwkgKi8KKwlpZiAoIWVuYWJs ZV9lYWdlcl9hZ2dyZWdhdGUpCisJCXJldHVybjsKKworCS8qCisJICogRG9uJ3QgYXBwbHkgZWFn ZXIgYWdncmVnYXRpb24gaWYgdGhlcmUgYXJlIG5vIGF2YWlsYWJsZSBHUk9VUCBCWQorCSAqIGNs YXVzZXMuCisJICovCisJaWYgKCFyb290LT5wcm9jZXNzZWRfZ3JvdXBDbGF1c2UpCisJCXJldHVy bjsKKworCS8qCisJICogRm9yIG5vdyB3ZSBkb24ndCB0cnkgdG8gc3VwcG9ydCBncm91cGluZyBz ZXRzLgorCSAqLworCWlmIChyb290LT5wYXJzZS0+Z3JvdXBpbmdTZXRzKQorCQlyZXR1cm47CisK KwkvKgorCSAqIEZvciBub3cgd2UgZG9uJ3QgdHJ5IHRvIHN1cHBvcnQgRElTVElOQ1Qgb3IgT1JE RVIgQlkgYWdncmVnYXRlcy4KKwkgKi8KKwlpZiAocm9vdC0+bnVtT3JkZXJlZEFnZ3MgPiAwKQor CQlyZXR1cm47CisKKwkvKgorCSAqIElmIHRoZXJlIGFyZSBhbnkgYWdncmVnYXRlcyB0aGF0IGRv IG5vdCBzdXBwb3J0IHBhcnRpYWwgbW9kZSwgb3IgYW55CisJICogcGFydGlhbCBhZ2dyZWdhdGVz IHRoYXQgYXJlIG5vbi1zZXJpYWxpemFibGUsIGRvIG5vdCBhcHBseSBlYWdlcgorCSAqIGFnZ3Jl Z2F0aW9uLgorCSAqLworCWlmIChyb290LT5oYXNOb25QYXJ0aWFsQWdncyB8fCByb290LT5oYXNO b25TZXJpYWxBZ2dzKQorCQlyZXR1cm47CisKKwkvKgorCSAqIFdlIGRvbid0IHRyeSB0byBhcHBs eSBlYWdlciBhZ2dyZWdhdGlvbiBpZiB0aGVyZSBhcmUgc2V0LXJldHVybmluZworCSAqIGZ1bmN0 aW9ucyBpbiB0YXJnZXRsaXN0LgorCSAqLworCWlmIChyb290LT5wYXJzZS0+aGFzVGFyZ2V0U1JG cykKKwkJcmV0dXJuOworCisJLyoKKwkgKiBFYWdlciBhZ2dyZWdhdGlvbiBvbmx5IG1ha2VzIHNl bnNlIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBiYXNlIHJlbHMgaW4KKwkgKiB0aGUgcXVlcnkuCisJ ICovCisJaWYgKGJtc19tZW1iZXJzaGlwKHJvb3QtPmFsbF9iYXNlcmVscykgIT0gQk1TX01VTFRJ UExFKQorCQlyZXR1cm47CisKKwkvKgorCSAqIERvbid0IGFwcGx5IGVhZ2VyIGFnZ3JlZ2F0aW9u IGlmIGFueSBhZ2dyZWdhdGUgcG9zZXMgYSByaXNrIG9mCisJICogZXhjZXNzaXZlIG1lbW9yeSB1 c2FnZSBkdXJpbmcgcGFydGlhbCBhZ2dyZWdhdGlvbi4KKwkgKi8KKwlpZiAoaXNfcGFydGlhbF9h Z2dfbWVtb3J5X3Jpc2t5KHJvb3QpKQorCQlyZXR1cm47CisKKwkvKgorCSAqIENvbGxlY3QgYWdn cmVnYXRlIGV4cHJlc3Npb25zIGFuZCBwbGFpbiBWYXJzIHRoYXQgYXBwZWFyIGluIHRoZQorCSAq IHRhcmdldGxpc3QgYW5kIGhhdmluZ1F1YWwuCisJICovCisJY3JlYXRlX2FnZ19jbGF1c2VfaW5m b3Mocm9vdCk7CisKKwkvKgorCSAqIElmIHRoZXJlIGFyZSBubyBzdWl0YWJsZSBhZ2dyZWdhdGUg ZXhwcmVzc2lvbnMsIHdlIGNhbm5vdCBhcHBseSBlYWdlcgorCSAqIGFnZ3JlZ2F0aW9uLgorCSAq LworCWlmIChyb290LT5hZ2dfY2xhdXNlX2xpc3QgPT0gTklMKQorCQlyZXR1cm47CisKKwkvKgor CSAqIENvbGxlY3QgZ3JvdXBpbmcgZXhwcmVzc2lvbnMgdGhhdCBhcHBlYXIgaW4gZ3JvdXBpbmcg Y2xhdXNlcy4KKwkgKi8KKwljcmVhdGVfZ3JvdXBpbmdfZXhwcl9pbmZvcyhyb290KTsKK30KKwor LyoKKyAqIGlzX3BhcnRpYWxfYWdnX21lbW9yeV9yaXNreQorICoJICBDaGVja3MgaWYgYW55IGFn Z3JlZ2F0ZSBwb3NlcyBhIHJpc2sgb2YgZXhjZXNzaXZlIG1lbW9yeSB1c2FnZSBkdXJpbmcKKyAq CSAgcGFydGlhbCBhZ2dyZWdhdGlvbi4KKyAqCisgKiBXZSBjaGVjayBpZiBhbnkgYWdncmVnYXRl IHVzZXMgSU5URVJOQUwgdHJhbnNpdGlvbiB0eXBlLiAgQWx0aG91Z2ggSU5URVJOQUwKKyAqIGlz IG1hcmtlZCBhcyBwYXNzLWJ5LXZhbHVlLCBpdCB1c3VhbGx5IHBvaW50cyB0byBhIGxhcmdlIGlu dGVybmFsIGRhdGEKKyAqIHN0cnVjdHVyZSAobGlrZSB0aG9zZSB1c2VkIGJ5IHN0cmluZ19hZ2cg b3IgYXJyYXlfYWdnKS4gIFRoZXNlIHRyYW5zaXRpb24KKyAqIHN0YXRlcyBjYW4gZ3JvdyBsYXJn ZSBhbmQgdGhlaXIgc2l6ZSBpcyBoYXJkIHRvIGVzdGltYXRlLiAgQXBwbHlpbmcgZWFnZXIKKyAq IGFnZ3JlZ2F0aW9uIGluIHN1Y2ggY2FzZXMgcmlza3MgaGlnaCBtZW1vcnkgdXNhZ2Ugc2luY2Ug cGFydGlhbCBhZ2dyZWdhdGlvbgorICogcmVzdWx0cyBtaWdodCBiZSBzdG9yZWQgaW4gam9pbiBo YXNoIHRhYmxlcyBvciBtYXRlcmlhbGl6ZWQgbm9kZXMuCisgKgorICogV2UgZXhwbGljaXRseSBl eGNsdWRlIGFnZ3JlZ2F0ZXMgd2l0aCBGX05VTUVSSUNfQVZHX0FDQ1VNIHRyYW5zaXRpb24KKyAq IGZ1bmN0aW9uIGZyb20gdGhpcyBjaGVjaywgYmFzZWQgb24gdGhlIGFzc3VtcHRpb24gdGhhdCBh dmcobnVtZXJpYykgYW5kCisgKiBzdW0obnVtZXJpYykgYXJlIHNhZmUgaW4gdGhpcyBjb250ZXh0 LgorICovCitzdGF0aWMgYm9vbAoraXNfcGFydGlhbF9hZ2dfbWVtb3J5X3Jpc2t5KFBsYW5uZXJJ bmZvICpyb290KQoreworCUxpc3RDZWxsICAgKmxjOworCisJZm9yZWFjaChsYywgcm9vdC0+YWdn dHJhbnNpbmZvcykKKwl7CisJCUFnZ1RyYW5zSW5mbyAqdHJhbnNpbmZvID0gbGZpcnN0X25vZGUo QWdnVHJhbnNJbmZvLCBsYyk7CisKKwkJaWYgKHRyYW5zaW5mby0+dHJhbnNmbl9vaWQgPT0gRl9O VU1FUklDX0FWR19BQ0NVTSkKKwkJCWNvbnRpbnVlOworCisJCWlmICh0cmFuc2luZm8tPmFnZ3Ry YW5zdHlwZSA9PSBJTlRFUk5BTE9JRCkKKwkJCXJldHVybiB0cnVlOworCX0KKworCXJldHVybiBm YWxzZTsKK30KKworLyoKKyAqIGNyZWF0ZV9hZ2dfY2xhdXNlX2luZm9zCisgKgkgIFNlYXJjaCB0 aGUgdGFyZ2V0bGlzdCBhbmQgaGF2aW5nUXVhbCBmb3IgQWdncmVmcyBhbmQgcGxhaW4gVmFycywg YW5kCisgKgkgIGNyZWF0ZSBhbiBBZ2dDbGF1c2VJbmZvIGZvciBlYWNoIEFnZ3JlZiBub2RlLgor ICovCitzdGF0aWMgdm9pZAorY3JlYXRlX2FnZ19jbGF1c2VfaW5mb3MoUGxhbm5lckluZm8gKnJv b3QpCit7CisJTGlzdAkgICAqdGxpc3RfZXhwcnM7CisJTGlzdAkgICAqYWdnX2NsYXVzZV9saXN0 ID0gTklMOworCUxpc3QJICAgKnRsaXN0X3ZhcnMgPSBOSUw7CisJUmVsaWRzCQlhZ2dyZWdhdGVf cmVsaWRzID0gTlVMTDsKKwlib29sCQllYWdlcl9hZ2dfYXBwbGljYWJsZSA9IHRydWU7CisJTGlz dENlbGwgICAqbGM7CisKKwlBc3NlcnQocm9vdC0+YWdnX2NsYXVzZV9saXN0ID09IE5JTCk7CisJ QXNzZXJ0KHJvb3QtPnRsaXN0X3ZhcnMgPT0gTklMKTsKKworCXRsaXN0X2V4cHJzID0gcHVsbF92 YXJfY2xhdXNlKChOb2RlICopIHJvb3QtPnByb2Nlc3NlZF90bGlzdCwKKwkJCQkJCQkJICBQVkNf SU5DTFVERV9BR0dSRUdBVEVTIHwKKwkJCQkJCQkJICBQVkNfUkVDVVJTRV9XSU5ET1dGVU5DUyB8 CisJCQkJCQkJCSAgUFZDX1JFQ1VSU0VfUExBQ0VIT0xERVJTKTsKKworCS8qCisJICogQWdncmVn YXRlcyB3aXRoaW4gdGhlIEhBVklORyBjbGF1c2UgbmVlZCB0byBiZSBwcm9jZXNzZWQgaW4gdGhl IHNhbWUKKwkgKiB3YXkgYXMgdGhvc2UgaW4gdGhlIHRhcmdldGxpc3QuICBOb3RlIHRoYXQgSEFW SU5HIGNhbiBjb250YWluIEFnZ3JlZnMKKwkgKiBidXQgbm90IFdpbmRvd0Z1bmNzLgorCSAqLwor CWlmIChyb290LT5wYXJzZS0+aGF2aW5nUXVhbCAhPSBOVUxMKQorCXsKKwkJTGlzdAkgICAqaGF2 aW5nX2V4cHJzOworCisJCWhhdmluZ19leHBycyA9IHB1bGxfdmFyX2NsYXVzZSgoTm9kZSAqKSBy b290LT5wYXJzZS0+aGF2aW5nUXVhbCwKKwkJCQkJCQkJCSAgIFBWQ19JTkNMVURFX0FHR1JFR0FU RVMgfAorCQkJCQkJCQkJICAgUFZDX1JFQ1VSU0VfUExBQ0VIT0xERVJTKTsKKwkJaWYgKGhhdmlu Z19leHBycyAhPSBOSUwpCisJCXsKKwkJCXRsaXN0X2V4cHJzID0gbGlzdF9jb25jYXQodGxpc3Rf ZXhwcnMsIGhhdmluZ19leHBycyk7CisJCQlsaXN0X2ZyZWUoaGF2aW5nX2V4cHJzKTsKKwkJfQor CX0KKworCWZvcmVhY2gobGMsIHRsaXN0X2V4cHJzKQorCXsKKwkJRXhwcgkgICAqZXhwciA9IChF eHByICopIGxmaXJzdChsYyk7CisJCUFnZ3JlZgkgICAqYWdncmVmOworCQlSZWxpZHMJCWFnZ19l dmFsX2F0OworCQlBZ2dDbGF1c2VJbmZvICphY19pbmZvOworCisJCS8qIEZvciBub3cgd2UgZG9u J3QgdHJ5IHRvIHN1cHBvcnQgR1JPVVBJTkcoKSBleHByZXNzaW9ucyAqLworCQlpZiAoSXNBKGV4 cHIsIEdyb3VwaW5nRnVuYykpCisJCXsKKwkJCWVhZ2VyX2FnZ19hcHBsaWNhYmxlID0gZmFsc2U7 CisJCQlicmVhazsKKwkJfQorCisJCS8qIENvbGxlY3QgcGxhaW4gVmFycyBmb3IgZnV0dXJlIHJl ZmVyZW5jZSAqLworCQlpZiAoSXNBKGV4cHIsIFZhcikpCisJCXsKKwkJCXRsaXN0X3ZhcnMgPSBs aXN0X2FwcGVuZF91bmlxdWUodGxpc3RfdmFycywgZXhwcik7CisJCQljb250aW51ZTsKKwkJfQor CisJCWFnZ3JlZiA9IGNhc3ROb2RlKEFnZ3JlZiwgZXhwcik7CisKKwkJQXNzZXJ0KGFnZ3JlZi0+ YWdnb3JkZXIgPT0gTklMKTsKKwkJQXNzZXJ0KGFnZ3JlZi0+YWdnZGlzdGluY3QgPT0gTklMKTsK KworCQkvKgorCQkgKiBJZiB0aGVyZSBhcmUgYW55IHNlY3VyaXR5UXVhbHMsIGRvIG5vdCB0cnkg dG8gYXBwbHkgZWFnZXIKKwkJICogYWdncmVnYXRpb24gaWYgYW55IG5vbi1sZWFrcHJvb2YgYWdn cmVnYXRlIGZ1bmN0aW9ucyBhcmUgcHJlc2VudC4KKwkJICogVGhpcyBpcyBvdmVybHkgc3RyaWN0 LCBidXQgZm9yIG5vdy4uLgorCQkgKi8KKwkJaWYgKHJvb3QtPnF1YWxfc2VjdXJpdHlfbGV2ZWwg PiAwICYmCisJCQkhZ2V0X2Z1bmNfbGVha3Byb29mKGFnZ3JlZi0+YWdnZm5vaWQpKQorCQl7CisJ CQllYWdlcl9hZ2dfYXBwbGljYWJsZSA9IGZhbHNlOworCQkJYnJlYWs7CisJCX0KKworCQlhZ2df ZXZhbF9hdCA9IHB1bGxfdmFybm9zKHJvb3QsIChOb2RlICopIGFnZ3JlZik7CisKKwkJLyoKKwkJ ICogSWYgYWxsIGJhc2UgcmVsYXRpb25zIGluIHRoZSBxdWVyeSBhcmUgcmVmZXJlbmNlZCBieSBh Z2dyZWdhdGUKKwkJICogZnVuY3Rpb25zLCB0aGVuIGVhZ2VyIGFnZ3JlZ2F0aW9uIGlzIG5vdCBh cHBsaWNhYmxlLgorCQkgKi8KKwkJYWdncmVnYXRlX3JlbGlkcyA9IGJtc19hZGRfbWVtYmVycyhh Z2dyZWdhdGVfcmVsaWRzLCBhZ2dfZXZhbF9hdCk7CisJCWlmIChibXNfaXNfc3Vic2V0KHJvb3Qt PmFsbF9iYXNlcmVscywgYWdncmVnYXRlX3JlbGlkcykpCisJCXsKKwkJCWVhZ2VyX2FnZ19hcHBs aWNhYmxlID0gZmFsc2U7CisJCQlicmVhazsKKwkJfQorCisJCS8qIE9LLCBjcmVhdGUgdGhlIEFn Z0NsYXVzZUluZm8gbm9kZSAqLworCQlhY19pbmZvID0gbWFrZU5vZGUoQWdnQ2xhdXNlSW5mbyk7 CisJCWFjX2luZm8tPmFnZ3JlZiA9IGFnZ3JlZjsKKwkJYWNfaW5mby0+YWdnX2V2YWxfYXQgPSBh Z2dfZXZhbF9hdDsKKworCQkvKiAuLi4gYW5kIGFkZCBpdCB0byB0aGUgbGlzdCAqLworCQlhZ2df Y2xhdXNlX2xpc3QgPSBsaXN0X2FwcGVuZF91bmlxdWUoYWdnX2NsYXVzZV9saXN0LCBhY19pbmZv KTsKKwl9CisKKwlsaXN0X2ZyZWUodGxpc3RfZXhwcnMpOworCisJaWYgKGVhZ2VyX2FnZ19hcHBs aWNhYmxlKQorCXsKKwkJcm9vdC0+YWdnX2NsYXVzZV9saXN0ID0gYWdnX2NsYXVzZV9saXN0Owor CQlyb290LT50bGlzdF92YXJzID0gdGxpc3RfdmFyczsKKwl9CisJZWxzZQorCXsKKwkJbGlzdF9m cmVlX2RlZXAoYWdnX2NsYXVzZV9saXN0KTsKKwkJbGlzdF9mcmVlKHRsaXN0X3ZhcnMpOworCX0K K30KKworLyoKKyAqIGNyZWF0ZV9ncm91cGluZ19leHByX2luZm9zCisgKgkgIENyZWF0ZSBhIEdy b3VwaW5nRXhwckluZm8gZm9yIGVhY2ggZXhwcmVzc2lvbiB1c2FibGUgYXMgZ3JvdXBpbmcga2V5 LgorICoKKyAqIElmIGFueSBncm91cGluZyBleHByZXNzaW9uIGlzIG5vdCBzdWl0YWJsZSwgd2Ug d2lsbCBqdXN0IHJldHVybiB3aXRoCisgKiByb290LT5ncm91cF9leHByX2xpc3QgYmVpbmcgTklM LgorICovCitzdGF0aWMgdm9pZAorY3JlYXRlX2dyb3VwaW5nX2V4cHJfaW5mb3MoUGxhbm5lcklu Zm8gKnJvb3QpCit7CisJTGlzdAkgICAqZXhwcnMgPSBOSUw7CisJTGlzdAkgICAqc29ydGdyb3Vw cmVmcyA9IE5JTDsKKwlMaXN0CSAgICpidHJlZV9vcGZhbWlsaWVzID0gTklMOworCUxpc3RDZWxs ICAgKmxjLAorCQkJICAgKmxjMSwKKwkJCSAgICpsYzIsCisJCQkgICAqbGMzOworCisJQXNzZXJ0 KHJvb3QtPmdyb3VwX2V4cHJfbGlzdCA9PSBOSUwpOworCisJZm9yZWFjaChsYywgcm9vdC0+cHJv Y2Vzc2VkX2dyb3VwQ2xhdXNlKQorCXsKKwkJU29ydEdyb3VwQ2xhdXNlICpzZ2MgPSBsZmlyc3Rf bm9kZShTb3J0R3JvdXBDbGF1c2UsIGxjKTsKKwkJVGFyZ2V0RW50cnkgKnRsZSA9IGdldF9zb3J0 Z3JvdXBjbGF1c2VfdGxlKHNnYywgcm9vdC0+cHJvY2Vzc2VkX3RsaXN0KTsKKwkJVHlwZUNhY2hl RW50cnkgKnRjZTsKKwkJT2lkCQkJZXF1YWxpbWFnZXByb2M7CisKKwkJQXNzZXJ0KHRsZS0+cmVz c29ydGdyb3VwcmVmID4gMCk7CisKKwkJLyoKKwkJICogRm9yIG5vdyB3ZSBvbmx5IHN1cHBvcnQg cGxhaW4gVmFycyBhcyBncm91cGluZyBleHByZXNzaW9ucy4KKwkJICovCisJCWlmICghSXNBKHRs ZS0+ZXhwciwgVmFyKSkKKwkJCXJldHVybjsKKworCQkvKgorCQkgKiBFYWdlciBhZ2dyZWdhdGlv biBpcyBvbmx5IHBvc3NpYmxlIGlmIGVxdWFsaXR5IGltcGxpZXMgaW1hZ2UKKwkJICogZXF1YWxp dHkgZm9yIGVhY2ggZ3JvdXBpbmcga2V5LiAgT3RoZXJ3aXNlLCBwbGFjaW5nIGtleXMgd2l0aAor CQkgKiBkaWZmZXJlbnQgYnl0ZSBpbWFnZXMgaW50byB0aGUgc2FtZSBncm91cCBtYXkgcmVzdWx0 IGluIHRoZSBsb3NzIG9mCisJCSAqIGluZm9ybWF0aW9uIHRoYXQgY291bGQgYmUgbmVjZXNzYXJ5 IHRvIGV2YWx1YXRlIHVwcGVyIHF1YWwgY2xhdXNlcy4KKwkJICoKKwkJICogRm9yIGluc3RhbmNl LCB0aGUgTlVNRVJJQyBkYXRhIHR5cGUgaXMgbm90IHN1cHBvcnRlZCwgYXMgdmFsdWVzCisJCSAq IHRoYXQgYXJlIGNvbnNpZGVyZWQgZXF1YWwgYnkgdGhlIGVxdWFsaXR5IG9wZXJhdG9yIChlLmcu LCAwIGFuZAorCQkgKiAwLjApIGNhbiBoYXZlIGRpZmZlcmVudCBzY2FsZXMuCisJCSAqLworCQl0 Y2UgPSBsb29rdXBfdHlwZV9jYWNoZShleHByVHlwZSgoTm9kZSAqKSB0bGUtPmV4cHIpLAorCQkJ CQkJCQlUWVBFQ0FDSEVfQlRSRUVfT1BGQU1JTFkpOworCQlpZiAoIU9pZElzVmFsaWQodGNlLT5i dHJlZV9vcGYpIHx8CisJCQkhT2lkSXNWYWxpZCh0Y2UtPmJ0cmVlX29waW50eXBlKSkKKwkJCXJl dHVybjsKKworCQllcXVhbGltYWdlcHJvYyA9IGdldF9vcGZhbWlseV9wcm9jKHRjZS0+YnRyZWVf b3BmLAorCQkJCQkJCQkJCSAgIHRjZS0+YnRyZWVfb3BpbnR5cGUsCisJCQkJCQkJCQkJICAgdGNl LT5idHJlZV9vcGludHlwZSwKKwkJCQkJCQkJCQkgICBCVEVRVUFMSU1BR0VfUFJPQyk7CisJCWlm ICghT2lkSXNWYWxpZChlcXVhbGltYWdlcHJvYykgfHwKKwkJCSFEYXR1bUdldEJvb2woT2lkRnVu Y3Rpb25DYWxsMUNvbGwoZXF1YWxpbWFnZXByb2MsCisJCQkJCQkJCQkJCSAgIHRjZS0+dHlwY29s bGF0aW9uLAorCQkJCQkJCQkJCQkgICBPYmplY3RJZEdldERhdHVtKHRjZS0+YnRyZWVfb3BpbnR5 cGUpKSkpCisJCQlyZXR1cm47CisKKwkJZXhwcnMgPSBsYXBwZW5kKGV4cHJzLCB0bGUtPmV4cHIp OworCQlzb3J0Z3JvdXByZWZzID0gbGFwcGVuZF9pbnQoc29ydGdyb3VwcmVmcywgdGxlLT5yZXNz b3J0Z3JvdXByZWYpOworCQlidHJlZV9vcGZhbWlsaWVzID0gbGFwcGVuZF9vaWQoYnRyZWVfb3Bm YW1pbGllcywgdGNlLT5idHJlZV9vcGYpOworCX0KKworCS8qCisJICogQ29uc3RydWN0IGEgR3Jv dXBpbmdFeHBySW5mbyBmb3IgZWFjaCBleHByZXNzaW9uLgorCSAqLworCWZvcnRocmVlKGxjMSwg ZXhwcnMsIGxjMiwgc29ydGdyb3VwcmVmcywgbGMzLCBidHJlZV9vcGZhbWlsaWVzKQorCXsKKwkJ RXhwcgkgICAqZXhwciA9IChFeHByICopIGxmaXJzdChsYzEpOworCQlpbnQJCQlzb3J0Z3JvdXBy ZWYgPSBsZmlyc3RfaW50KGxjMik7CisJCU9pZAkJCWJ0cmVlX29wZmFtaWx5ID0gbGZpcnN0X29p ZChsYzMpOworCQlHcm91cGluZ0V4cHJJbmZvICpnZV9pbmZvOworCisJCWdlX2luZm8gPSBtYWtl Tm9kZShHcm91cGluZ0V4cHJJbmZvKTsKKwkJZ2VfaW5mby0+ZXhwciA9IChFeHByICopIGNvcHlP YmplY3QoZXhwcik7CisJCWdlX2luZm8tPnNvcnRncm91cHJlZiA9IHNvcnRncm91cHJlZjsKKwkJ Z2VfaW5mby0+YnRyZWVfb3BmYW1pbHkgPSBidHJlZV9vcGZhbWlseTsKKworCQlyb290LT5ncm91 cF9leHByX2xpc3QgPSBsYXBwZW5kKHJvb3QtPmdyb3VwX2V4cHJfbGlzdCwgZ2VfaW5mbyk7CisJ fQorfQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKgkgIExBVEVSQUwgUkVGRVJFTkNF UwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm1haW4uYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5tYWluLmMKaW5kZXggNTQ2N2UwOTRjYTcuLmVl ZmM0ODZhNTY2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubWFp bi5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5tYWluLmMKQEAgLTc2LDYg Kzc2LDkgQEAgcXVlcnlfcGxhbm5lcihQbGFubmVySW5mbyAqcm9vdCwKIAlyb290LT5wbGFjZWhv bGRlcl9saXN0ID0gTklMOwogCXJvb3QtPnBsYWNlaG9sZGVyX2FycmF5ID0gTlVMTDsKIAlyb290 LT5wbGFjZWhvbGRlcl9hcnJheV9zaXplID0gMDsKKwlyb290LT5hZ2dfY2xhdXNlX2xpc3QgPSBO SUw7CisJcm9vdC0+Z3JvdXBfZXhwcl9saXN0ID0gTklMOworCXJvb3QtPnRsaXN0X3ZhcnMgPSBO SUw7CiAJcm9vdC0+ZmtleV9saXN0ID0gTklMOwogCXJvb3QtPmluaXRpYWxfcmVscyA9IE5JTDsK IApAQCAtMjY1LDYgKzI2OCwxMiBAQCBxdWVyeV9wbGFubmVyKFBsYW5uZXJJbmZvICpyb290LAog CSAqLwogCWV4dHJhY3RfcmVzdHJpY3Rpb25fb3JfY2xhdXNlcyhyb290KTsKIAorCS8qCisJICog Q2hlY2sgaWYgZWFnZXIgYWdncmVnYXRpb24gaXMgYXBwbGljYWJsZSwgYW5kIGlmIHNvLCBzZXQg dXAKKwkgKiByb290LT5hZ2dfY2xhdXNlX2xpc3QgYW5kIHJvb3QtPmdyb3VwX2V4cHJfbGlzdC4K KwkgKi8KKwlzZXR1cF9lYWdlcl9hZ2dyZWdhdGlvbihyb290KTsKKwogCS8qCiAJICogTm93IGV4 cGFuZCBhcHBlbmRyZWxzIGJ5IGFkZGluZyAib3RoZXJyZWxzIiBmb3IgdGhlaXIgY2hpbGRyZW4u ICBXZQogCSAqIGRlbGF5IHRoaXMgdG8gdGhlIGVuZCBzbyB0aGF0IHdlIGhhdmUgYXMgbXVjaCBp bmZvcm1hdGlvbiBhcyBwb3NzaWJsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCmlu ZGV4IDQxYmQ4MzUzNDMwLi40NjJjNTMzNTU4OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Bs YW5uZXIuYwpAQCAtMjMyLDcgKzIzMiw2IEBAIHN0YXRpYyB2b2lkIGFkZF9wYXRoc190b19ncm91 cGluZ19yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAkJCQkJ CQkJCSAgUmVsT3B0SW5mbyAqcGFydGlhbGx5X2dyb3VwZWRfcmVsLAogCQkJCQkJCQkJICBjb25z dCBBZ2dDbGF1c2VDb3N0cyAqYWdnX2Nvc3RzLAogCQkJCQkJCQkJICBncm91cGluZ19zZXRzX2Rh dGEgKmdkLAotCQkJCQkJCQkJICBkb3VibGUgZE51bUdyb3VwcywKIAkJCQkJCQkJCSAgR3JvdXBQ YXRoRXh0cmFEYXRhICpleHRyYSk7CiBzdGF0aWMgUmVsT3B0SW5mbyAqY3JlYXRlX3BhcnRpYWxf Z3JvdXBpbmdfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJCQkgUmVsT3B0SW5m byAqZ3JvdXBlZF9yZWwsCkBAIC00MDEwLDkgKzQwMDksNyBAQCBjcmVhdGVfb3JkaW5hcnlfZ3Jv dXBpbmdfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAkJ CQkJCQkgICBHcm91cFBhdGhFeHRyYURhdGEgKmV4dHJhLAogCQkJCQkJCSAgIFJlbE9wdEluZm8g KipwYXJ0aWFsbHlfZ3JvdXBlZF9yZWxfcCkKIHsKLQlQYXRoCSAgICpjaGVhcGVzdF9wYXRoID0g aW5wdXRfcmVsLT5jaGVhcGVzdF90b3RhbF9wYXRoOwogCVJlbE9wdEluZm8gKnBhcnRpYWxseV9n cm91cGVkX3JlbCA9IE5VTEw7Ci0JZG91YmxlCQlkTnVtR3JvdXBzOwogCVBhcnRpdGlvbndpc2VB Z2dyZWdhdGVUeXBlIHBhdHlwZSA9IFBBUlRJVElPTldJU0VfQUdHUkVHQVRFX05PTkU7CiAKIAkv KgpAQCAtNDA5NCwyMyArNDA5MSwxNiBAQCBjcmVhdGVfb3JkaW5hcnlfZ3JvdXBpbmdfcGF0aHMo UGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAogCS8qIEdhdGhlciBh bnkgcGFydGlhbGx5IGdyb3VwZWQgcGFydGlhbCBwYXRocy4gKi8KIAlpZiAocGFydGlhbGx5X2dy b3VwZWRfcmVsICYmIHBhcnRpYWxseV9ncm91cGVkX3JlbC0+cGFydGlhbF9wYXRobGlzdCkKLQl7 CiAJCWdhdGhlcl9ncm91cGluZ19wYXRocyhyb290LCBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwpOwot CQlzZXRfY2hlYXBlc3QocGFydGlhbGx5X2dyb3VwZWRfcmVsKTsKLQl9CiAKLQkvKgotCSAqIEVz dGltYXRlIG51bWJlciBvZiBncm91cHMuCi0JICovCi0JZE51bUdyb3VwcyA9IGdldF9udW1iZXJf b2ZfZ3JvdXBzKHJvb3QsCi0JCQkJCQkJCQkgIGNoZWFwZXN0X3BhdGgtPnJvd3MsCi0JCQkJCQkJ CQkgIGdkLAotCQkJCQkJCQkJICBleHRyYS0+dGFyZ2V0TGlzdCk7CisJLyogTm93IGNob29zZSB0 aGUgYmVzdCBwYXRoKHMpIGZvciBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwuICovCisJaWYgKHBhcnRp YWxseV9ncm91cGVkX3JlbCAmJiBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwtPnBhdGhsaXN0KQorCQlz ZXRfY2hlYXBlc3QocGFydGlhbGx5X2dyb3VwZWRfcmVsKTsKIAogCS8qIEJ1aWxkIGZpbmFsIGdy b3VwaW5nIHBhdGhzICovCiAJYWRkX3BhdGhzX3RvX2dyb3VwaW5nX3JlbChyb290LCBpbnB1dF9y ZWwsIGdyb3VwZWRfcmVsLAogCQkJCQkJCSAgcGFydGlhbGx5X2dyb3VwZWRfcmVsLCBhZ2dfY29z dHMsIGdkLAotCQkJCQkJCSAgZE51bUdyb3VwcywgZXh0cmEpOworCQkJCQkJCSAgZXh0cmEpOwog CiAJLyogR2l2ZSBhIGhlbHBmdWwgZXJyb3IgaWYgd2UgZmFpbGVkIHRvIGZpbmQgYW55IGltcGxl bWVudGF0aW9uICovCiAJaWYgKGdyb3VwZWRfcmVsLT5wYXRobGlzdCA9PSBOSUwpCkBAIC03MDU1 LDE2ICs3MDQ1LDQyIEBAIGFkZF9wYXRoc190b19ncm91cGluZ19yZWwoUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAkJCQkJCSAgUmVsT3B0SW5mbyAqZ3JvdXBlZF9y ZWwsCiAJCQkJCQkgIFJlbE9wdEluZm8gKnBhcnRpYWxseV9ncm91cGVkX3JlbCwKIAkJCQkJCSAg Y29uc3QgQWdnQ2xhdXNlQ29zdHMgKmFnZ19jb3N0cywKLQkJCQkJCSAgZ3JvdXBpbmdfc2V0c19k YXRhICpnZCwgZG91YmxlIGROdW1Hcm91cHMsCisJCQkJCQkgIGdyb3VwaW5nX3NldHNfZGF0YSAq Z2QsCiAJCQkJCQkgIEdyb3VwUGF0aEV4dHJhRGF0YSAqZXh0cmEpCiB7CiAJUXVlcnkJICAgKnBh cnNlID0gcm9vdC0+cGFyc2U7CiAJUGF0aAkgICAqY2hlYXBlc3RfcGF0aCA9IGlucHV0X3JlbC0+ Y2hlYXBlc3RfdG90YWxfcGF0aDsKKwlQYXRoCSAgICpjaGVhcGVzdF9wYXJ0aWFsbHlfZ3JvdXBl ZF9wYXRoID0gTlVMTDsKIAlMaXN0Q2VsbCAgICpsYzsKIAlib29sCQljYW5faGFzaCA9IChleHRy YS0+ZmxhZ3MgJiBHUk9VUElOR19DQU5fVVNFX0hBU0gpICE9IDA7CiAJYm9vbAkJY2FuX3NvcnQg PSAoZXh0cmEtPmZsYWdzICYgR1JPVVBJTkdfQ0FOX1VTRV9TT1JUKSAhPSAwOwogCUxpc3QJICAg KmhhdmluZ1F1YWwgPSAoTGlzdCAqKSBleHRyYS0+aGF2aW5nUXVhbDsKIAlBZ2dDbGF1c2VDb3N0 cyAqYWdnX2ZpbmFsX2Nvc3RzID0gJmV4dHJhLT5hZ2dfZmluYWxfY29zdHM7CisJZG91YmxlCQlk TnVtR3JvdXBzID0gMDsKKwlkb3VibGUJCWROdW1GaW5hbEdyb3VwcyA9IDA7CisKKwkvKgorCSAq IEVzdGltYXRlIG51bWJlciBvZiBncm91cHMgZm9yIG5vbi1zcGxpdCBhZ2dyZWdhdGlvbi4KKwkg Ki8KKwlkTnVtR3JvdXBzID0gZ2V0X251bWJlcl9vZl9ncm91cHMocm9vdCwKKwkJCQkJCQkJCSAg Y2hlYXBlc3RfcGF0aC0+cm93cywKKwkJCQkJCQkJCSAgZ2QsCisJCQkJCQkJCQkgIGV4dHJhLT50 YXJnZXRMaXN0KTsKKworCWlmIChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwgJiYgcGFydGlhbGx5X2dy b3VwZWRfcmVsLT5wYXRobGlzdCkKKwl7CisJCWNoZWFwZXN0X3BhcnRpYWxseV9ncm91cGVkX3Bh dGggPQorCQkJcGFydGlhbGx5X2dyb3VwZWRfcmVsLT5jaGVhcGVzdF90b3RhbF9wYXRoOworCisJ CS8qCisJCSAqIEVzdGltYXRlIG51bWJlciBvZiBncm91cHMgZm9yIGZpbmFsIHBoYXNlIG9mIHBh cnRpYWwgYWdncmVnYXRpb24uCisJCSAqLworCQlkTnVtRmluYWxHcm91cHMgPQorCQkJZ2V0X251 bWJlcl9vZl9ncm91cHMocm9vdCwKKwkJCQkJCQkJIGNoZWFwZXN0X3BhcnRpYWxseV9ncm91cGVk X3BhdGgtPnJvd3MsCisJCQkJCQkJCSBnZCwKKwkJCQkJCQkJIGV4dHJhLT50YXJnZXRMaXN0KTsK Kwl9CiAKIAlpZiAoY2FuX3NvcnQpCiAJewpAQCAtNzE3Nyw3ICs3MTkzLDcgQEAgYWRkX3BhdGhz X3RvX2dyb3VwaW5nX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVs LAogCQkJCQlwYXRoID0gbWFrZV9vcmRlcmVkX3BhdGgocm9vdCwKIAkJCQkJCQkJCQkJIGdyb3Vw ZWRfcmVsLAogCQkJCQkJCQkJCQkgcGF0aCwKLQkJCQkJCQkJCQkJIHBhcnRpYWxseV9ncm91cGVk X3JlbC0+Y2hlYXBlc3RfdG90YWxfcGF0aCwKKwkJCQkJCQkJCQkJIGNoZWFwZXN0X3BhcnRpYWxs eV9ncm91cGVkX3BhdGgsCiAJCQkJCQkJCQkJCSBpbmZvLT5wYXRoa2V5cywKIAkJCQkJCQkJCQkJ IC0xLjApOwogCkBAIC03MTk1LDcgKzcyMTEsNyBAQCBhZGRfcGF0aHNfdG9fZ3JvdXBpbmdfcmVs KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICppbnB1dF9yZWwsCiAJCQkJCQkJCQkJCQkg aW5mby0+Y2xhdXNlcywKIAkJCQkJCQkJCQkJCSBoYXZpbmdRdWFsLAogCQkJCQkJCQkJCQkJIGFn Z19maW5hbF9jb3N0cywKLQkJCQkJCQkJCQkJCSBkTnVtR3JvdXBzKSk7CisJCQkJCQkJCQkJCQkg ZE51bUZpbmFsR3JvdXBzKSk7CiAJCQkJCWVsc2UKIAkJCQkJCWFkZF9wYXRoKGdyb3VwZWRfcmVs LCAoUGF0aCAqKQogCQkJCQkJCQkgY3JlYXRlX2dyb3VwX3BhdGgocm9vdCwKQEAgLTcyMDMsNyAr NzIxOSw3IEBAIGFkZF9wYXRoc190b19ncm91cGluZ19yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJl bE9wdEluZm8gKmlucHV0X3JlbCwKIAkJCQkJCQkJCQkJCSAgIHBhdGgsCiAJCQkJCQkJCQkJCQkg ICBpbmZvLT5jbGF1c2VzLAogCQkJCQkJCQkJCQkJICAgaGF2aW5nUXVhbCwKLQkJCQkJCQkJCQkJ CSAgIGROdW1Hcm91cHMpKTsKKwkJCQkJCQkJCQkJCSAgIGROdW1GaW5hbEdyb3VwcykpOwogCiAJ CQkJfQogCQkJfQpAQCAtNzI0NSwxOSArNzI2MSwxNyBAQCBhZGRfcGF0aHNfdG9fZ3JvdXBpbmdf cmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICppbnB1dF9yZWwsCiAJCSAqLwogCQlp ZiAocGFydGlhbGx5X2dyb3VwZWRfcmVsICYmIHBhcnRpYWxseV9ncm91cGVkX3JlbC0+cGF0aGxp c3QpCiAJCXsKLQkJCVBhdGgJICAgKnBhdGggPSBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwtPmNoZWFw ZXN0X3RvdGFsX3BhdGg7Ci0KIAkJCWFkZF9wYXRoKGdyb3VwZWRfcmVsLCAoUGF0aCAqKQogCQkJ CQkgY3JlYXRlX2FnZ19wYXRoKHJvb3QsCiAJCQkJCQkJCQkgZ3JvdXBlZF9yZWwsCi0JCQkJCQkJ CQkgcGF0aCwKKwkJCQkJCQkJCSBjaGVhcGVzdF9wYXJ0aWFsbHlfZ3JvdXBlZF9wYXRoLAogCQkJ CQkJCQkJIGdyb3VwZWRfcmVsLT5yZWx0YXJnZXQsCiAJCQkJCQkJCQkgQUdHX0hBU0hFRCwKIAkJ CQkJCQkJCSBBR0dTUExJVF9GSU5BTF9ERVNFUklBTCwKIAkJCQkJCQkJCSByb290LT5wcm9jZXNz ZWRfZ3JvdXBDbGF1c2UsCiAJCQkJCQkJCQkgaGF2aW5nUXVhbCwKIAkJCQkJCQkJCSBhZ2dfZmlu YWxfY29zdHMsCi0JCQkJCQkJCQkgZE51bUdyb3VwcykpOworCQkJCQkJCQkJIGROdW1GaW5hbEdy b3VwcykpOwogCQl9CiAJfQogCkBAIC03Mjk3LDYgKzczMTEsNyBAQCBjcmVhdGVfcGFydGlhbF9n cm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKIHsKIAlRdWVyeQkgICAqcGFyc2UgPSBy b290LT5wYXJzZTsKIAlSZWxPcHRJbmZvICpwYXJ0aWFsbHlfZ3JvdXBlZF9yZWw7CisJUmVsT3B0 SW5mbyAqZWFnZXJfYWdnX3JlbCA9IE5VTEw7CiAJQWdnQ2xhdXNlQ29zdHMgKmFnZ19wYXJ0aWFs X2Nvc3RzID0gJmV4dHJhLT5hZ2dfcGFydGlhbF9jb3N0czsKIAlBZ2dDbGF1c2VDb3N0cyAqYWdn X2ZpbmFsX2Nvc3RzID0gJmV4dHJhLT5hZ2dfZmluYWxfY29zdHM7CiAJUGF0aAkgICAqY2hlYXBl c3RfcGFydGlhbF9wYXRoID0gTlVMTDsKQEAgLTczMDcsNiArNzMyMiwxNSBAQCBjcmVhdGVfcGFy dGlhbF9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKIAlib29sCQljYW5faGFzaCA9 IChleHRyYS0+ZmxhZ3MgJiBHUk9VUElOR19DQU5fVVNFX0hBU0gpICE9IDA7CiAJYm9vbAkJY2Fu X3NvcnQgPSAoZXh0cmEtPmZsYWdzICYgR1JPVVBJTkdfQ0FOX1VTRV9TT1JUKSAhPSAwOwogCisJ LyoKKwkgKiBDaGVjayB3aGV0aGVyIGFueSBwYXJ0aWFsbHkgYWdncmVnYXRlZCBwYXRocyBoYXZl IGJlZW4gZ2VuZXJhdGVkCisJICogdGhyb3VnaCBlYWdlciBhZ2dyZWdhdGlvbi4KKwkgKi8KKwlp ZiAoaW5wdXRfcmVsLT5ncm91cGVkX3JlbCAmJgorCQkhSVNfRFVNTVlfUkVMKGlucHV0X3JlbC0+ Z3JvdXBlZF9yZWwpICYmCisJCWlucHV0X3JlbC0+Z3JvdXBlZF9yZWwtPnBhdGhsaXN0ICE9IE5J TCkKKwkJZWFnZXJfYWdnX3JlbCA9IGlucHV0X3JlbC0+Z3JvdXBlZF9yZWw7CisKIAkvKgogCSAq IENvbnNpZGVyIHdoZXRoZXIgd2Ugc2hvdWxkIGdlbmVyYXRlIHBhcnRpYWxseSBhZ2dyZWdhdGVk IG5vbi1wYXJ0aWFsCiAJICogcGF0aHMuICBXZSBjYW4gb25seSBkbyB0aGlzIGlmIHdlIGhhdmUg YSBub24tcGFydGlhbCBwYXRoLCBhbmQgb25seSBpZgpAQCAtNzMyOCwxMSArNzM1MiwxMyBAQCBj cmVhdGVfcGFydGlhbF9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKIAogCS8qCiAJ ICogSWYgd2UgY2FuJ3QgcGFydGlhbGx5IGFnZ3JlZ2F0ZSBwYXJ0aWFsIHBhdGhzLCBhbmQgd2Ug Y2FuJ3QgcGFydGlhbGx5Ci0JICogYWdncmVnYXRlIG5vbi1wYXJ0aWFsIHBhdGhzLCB0aGVuIGRv bid0IGJvdGhlciBjcmVhdGluZyB0aGUgbmV3CisJICogYWdncmVnYXRlIG5vbi1wYXJ0aWFsIHBh dGhzLCBhbmQgbm8gcGFydGlhbGx5IGFnZ3JlZ2F0ZWQgcGF0aHMgd2VyZQorCSAqIGdlbmVyYXRl ZCBieSBlYWdlciBhZ2dyZWdhdGlvbiwgdGhlbiBkb24ndCBib3RoZXIgY3JlYXRpbmcgdGhlIG5l dwogCSAqIFJlbE9wdEluZm8gYXQgYWxsLCB1bmxlc3MgdGhlIGNhbGxlciBzcGVjaWZpZWQgZm9y Y2VfcmVsX2NyZWF0aW9uLgogCSAqLwogCWlmIChjaGVhcGVzdF90b3RhbF9wYXRoID09IE5VTEwg JiYKIAkJY2hlYXBlc3RfcGFydGlhbF9wYXRoID09IE5VTEwgJiYKKwkJZWFnZXJfYWdnX3JlbCA9 PSBOVUxMICYmCiAJCSFmb3JjZV9yZWxfY3JlYXRpb24pCiAJCXJldHVybiBOVUxMOwogCkBAIC03 NTU3LDYgKzc1ODMsNTEgQEAgY3JlYXRlX3BhcnRpYWxfZ3JvdXBpbmdfcGF0aHMoUGxhbm5lcklu Zm8gKnJvb3QsCiAJCQkJCQkJCQkJIGROdW1QYXJ0aWFsUGFydGlhbEdyb3VwcykpOwogCX0KIAor CS8qCisJICogQWRkIGFueSBwYXJ0aWFsbHkgYWdncmVnYXRlZCBwYXRocyBnZW5lcmF0ZWQgYnkg ZWFnZXIgYWdncmVnYXRpb24gdG8KKwkgKiB0aGUgbmV3IHVwcGVyIHJlbGF0aW9uIGFmdGVyIGFw cGx5aW5nIHByb2plY3Rpb24gc3RlcHMgYXMgbmVlZGVkLgorCSAqLworCWlmIChlYWdlcl9hZ2df cmVsKQorCXsKKwkJLyogQWRkIHRoZSBwYXRocyAqLworCQlmb3JlYWNoKGxjLCBlYWdlcl9hZ2df cmVsLT5wYXRobGlzdCkKKwkJeworCQkJUGF0aAkgICAqcGF0aCA9IChQYXRoICopIGxmaXJzdChs Yyk7CisKKwkJCS8qIFNob3VsZG4ndCBoYXZlIGFueSBwYXJhbWV0ZXJpemVkIHBhdGhzIGFueW1v cmUgKi8KKwkJCUFzc2VydChwYXRoLT5wYXJhbV9pbmZvID09IE5VTEwpOworCisJCQlwYXRoID0g KFBhdGggKikgY3JlYXRlX3Byb2plY3Rpb25fcGF0aChyb290LAorCQkJCQkJCQkJCQkJICAgcGFy dGlhbGx5X2dyb3VwZWRfcmVsLAorCQkJCQkJCQkJCQkJICAgcGF0aCwKKwkJCQkJCQkJCQkJCSAg IHBhcnRpYWxseV9ncm91cGVkX3JlbC0+cmVsdGFyZ2V0KTsKKworCQkJYWRkX3BhdGgocGFydGlh bGx5X2dyb3VwZWRfcmVsLCBwYXRoKTsKKwkJfQorCisJCS8qCisJCSAqIExpa2V3aXNlIGFkZCB0 aGUgcGFydGlhbCBwYXRocywgYnV0IG9ubHkgaWYgcGFyYWxsZWxpc20gaXMgcG9zc2libGUKKwkJ ICogZm9yIHBhcnRpYWxseV9ncm91cGVkX3JlbC4KKwkJICovCisJCWlmIChwYXJ0aWFsbHlfZ3Jv dXBlZF9yZWwtPmNvbnNpZGVyX3BhcmFsbGVsKQorCQl7CisJCQlmb3JlYWNoKGxjLCBlYWdlcl9h Z2dfcmVsLT5wYXJ0aWFsX3BhdGhsaXN0KQorCQkJeworCQkJCVBhdGgJICAgKnBhdGggPSAoUGF0 aCAqKSBsZmlyc3QobGMpOworCisJCQkJLyogU2hvdWxkbid0IGhhdmUgYW55IHBhcmFtZXRlcml6 ZWQgcGF0aHMgYW55bW9yZSAqLworCQkJCUFzc2VydChwYXRoLT5wYXJhbV9pbmZvID09IE5VTEwp OworCisJCQkJcGF0aCA9IChQYXRoICopIGNyZWF0ZV9wcm9qZWN0aW9uX3BhdGgocm9vdCwKKwkJ CQkJCQkJCQkJCQkgICBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsCisJCQkJCQkJCQkJCQkJICAgcGF0 aCwKKwkJCQkJCQkJCQkJCQkgICBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwtPnJlbHRhcmdldCk7CisK KwkJCQlhZGRfcGFydGlhbF9wYXRoKHBhcnRpYWxseV9ncm91cGVkX3JlbCwgcGF0aCk7CisJCQl9 CisJCX0KKwl9CisKIAkvKgogCSAqIElmIHRoZXJlIGlzIGFuIEZEVyB0aGF0J3MgcmVzcG9uc2li bGUgZm9yIGFsbCBiYXNlcmVscyBvZiB0aGUgcXVlcnksCiAJICogbGV0IGl0IGNvbnNpZGVyIGFk ZGluZyBwYXJ0aWFsbHkgZ3JvdXBlZCBGb3JlaWduUGF0aHMuCkBAIC04MTIwLDEzICs4MTkxLDYg QEAgY3JlYXRlX3BhcnRpdGlvbndpc2VfZ3JvdXBpbmdfcGF0aHMoUGxhbm5lckluZm8gKnJvb3Qs CiAKIAkJYWRkX3BhdGhzX3RvX2FwcGVuZF9yZWwocm9vdCwgcGFydGlhbGx5X2dyb3VwZWRfcmVs LAogCQkJCQkJCQlwYXJ0aWFsbHlfZ3JvdXBlZF9saXZlX2NoaWxkcmVuKTsKLQotCQkvKgotCQkg KiBXZSBuZWVkIGNhbGwgc2V0X2NoZWFwZXN0LCBzaW5jZSB0aGUgZmluYWxpemF0aW9uIHN0ZXAg d2lsbCB1c2UgdGhlCi0JCSAqIGNoZWFwZXN0IHBhdGggZnJvbSB0aGUgcmVsLgotCQkgKi8KLQkJ aWYgKHBhcnRpYWxseV9ncm91cGVkX3JlbC0+cGF0aGxpc3QpCi0JCQlzZXRfY2hlYXBlc3QocGFy dGlhbGx5X2dyb3VwZWRfcmVsKTsKIAl9CiAKIAkvKiBJZiBwb3NzaWJsZSwgY3JlYXRlIGFwcGVu ZCBwYXRocyBmb3IgZnVsbHkgZ3JvdXBlZCBjaGlsZHJlbi4gKi8KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci91dGlsL2FwcGVuZGluZm8uYwppbmRleCA1YjNkYzBkODY1My4uMTFjMGViMGQxODAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYworKysgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMKQEAgLTUxNiw2ICs1MTYsNjUgQEAg YWRqdXN0X2FwcGVuZHJlbF9hdHRyc19tdXRhdG9yKE5vZGUgKm5vZGUsCiAJCXJldHVybiAoTm9k ZSAqKSBuZXdpbmZvOwogCX0KIAorCS8qCisJICogV2UgaGF2ZSB0byBwcm9jZXNzIFJlbEFnZ0lu Zm8gbm9kZXMgc3BlY2lhbGx5LgorCSAqLworCWlmIChJc0Eobm9kZSwgUmVsQWdnSW5mbykpCisJ eworCQlSZWxBZ2dJbmZvICpvbGRpbmZvID0gKFJlbEFnZ0luZm8gKikgbm9kZTsKKwkJUmVsQWdn SW5mbyAqbmV3aW5mbyA9IG1ha2VOb2RlKFJlbEFnZ0luZm8pOworCisJCS8qIENvcHkgYWxsIGZs YXQtY29waWFibGUgZmllbGRzICovCisJCW1lbWNweShuZXdpbmZvLCBvbGRpbmZvLCBzaXplb2Yo UmVsQWdnSW5mbykpOworCisJCW5ld2luZm8tPnJlbGlkcyA9IGFkanVzdF9jaGlsZF9yZWxpZHMo b2xkaW5mby0+cmVsaWRzLAorCQkJCQkJCQkJCQkgIG5hcHBpbmZvcywgYXBwaW5mb3MpOworCisJ CW5ld2luZm8tPnRhcmdldCA9IChQYXRoVGFyZ2V0ICopCisJCQlhZGp1c3RfYXBwZW5kcmVsX2F0 dHJzX211dGF0b3IoKE5vZGUgKikgb2xkaW5mby0+dGFyZ2V0LAorCQkJCQkJCQkJCSAgIGNvbnRl eHQpOworCisJCW5ld2luZm8tPmFnZ19pbnB1dCA9IChQYXRoVGFyZ2V0ICopCisJCQlhZGp1c3Rf YXBwZW5kcmVsX2F0dHJzX211dGF0b3IoKE5vZGUgKikgb2xkaW5mby0+YWdnX2lucHV0LAorCQkJ CQkJCQkJCSAgIGNvbnRleHQpOworCisJCW5ld2luZm8tPmdyb3VwX2NsYXVzZXMgPSAoTGlzdCAq KQorCQkJYWRqdXN0X2FwcGVuZHJlbF9hdHRyc19tdXRhdG9yKChOb2RlICopIG9sZGluZm8tPmdy b3VwX2NsYXVzZXMsCisJCQkJCQkJCQkJICAgY29udGV4dCk7CisKKwkJbmV3aW5mby0+Z3JvdXBf ZXhwcnMgPSAoTGlzdCAqKQorCQkJYWRqdXN0X2FwcGVuZHJlbF9hdHRyc19tdXRhdG9yKChOb2Rl ICopIG9sZGluZm8tPmdyb3VwX2V4cHJzLAorCQkJCQkJCQkJCSAgIGNvbnRleHQpOworCisJCXJl dHVybiAoTm9kZSAqKSBuZXdpbmZvOworCX0KKworCS8qCisJICogV2UgaGF2ZSB0byBwcm9jZXNz IFBhdGhUYXJnZXQgbm9kZXMgc3BlY2lhbGx5LgorCSAqLworCWlmIChJc0Eobm9kZSwgUGF0aFRh cmdldCkpCisJeworCQlQYXRoVGFyZ2V0ICpvbGR0YXJnZXQgPSAoUGF0aFRhcmdldCAqKSBub2Rl OworCQlQYXRoVGFyZ2V0ICpuZXd0YXJnZXQgPSBtYWtlTm9kZShQYXRoVGFyZ2V0KTsKKworCQkv KiBDb3B5IGFsbCBmbGF0LWNvcGlhYmxlIGZpZWxkcyAqLworCQltZW1jcHkobmV3dGFyZ2V0LCBv bGR0YXJnZXQsIHNpemVvZihQYXRoVGFyZ2V0KSk7CisKKwkJbmV3dGFyZ2V0LT5leHBycyA9IChM aXN0ICopCisJCQlhZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211dGF0b3IoKE5vZGUgKikgb2xkdGFy Z2V0LT5leHBycywKKwkJCQkJCQkJCQkgICBjb250ZXh0KTsKKworCQlpZiAob2xkdGFyZ2V0LT5z b3J0Z3JvdXByZWZzKQorCQl7CisJCQlTaXplCQluYnl0ZXMgPSBsaXN0X2xlbmd0aChvbGR0YXJn ZXQtPmV4cHJzKSAqIHNpemVvZihJbmRleCk7CisKKwkJCW5ld3RhcmdldC0+c29ydGdyb3VwcmVm cyA9IChJbmRleCAqKSBwYWxsb2MobmJ5dGVzKTsKKwkJCW1lbWNweShuZXd0YXJnZXQtPnNvcnRn cm91cHJlZnMsIG9sZHRhcmdldC0+c29ydGdyb3VwcmVmcywgbmJ5dGVzKTsKKwkJfQorCisJCXJl dHVybiAoTm9kZSAqKSBuZXd0YXJnZXQ7CisJfQorCiAJLyoKIAkgKiBOT1RFOiB3ZSBkbyBub3Qg bmVlZCB0byByZWN1cnNlIGludG8gc3VibGlua3MsIGJlY2F1c2UgdGhleSBzaG91bGQKIAkgKiBh bHJlYWR5IGhhdmUgYmVlbiBjb252ZXJ0ZWQgdG8gc3VicGxhbnMgYmVmb3JlIHdlIHNlZSB0aGVt LgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jIGIvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jCmluZGV4IDBlNTIzZDJlYjViLi5mYWE0 NGU0NjU5NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5j CisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYwpAQCAtMTYsNiArMTYs OCBAQAogCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAKKyNpbmNsdWRlICJhY2Nlc3MvbmJ0cmVlLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb25zdHJhaW50LmgiCiAjaW5jbHVkZSAibWlzY2FkbWlu LmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL2Fw cGVuZGluZm8uaCIKQEAgLTI3LDEyICsyOSwxNiBAQAogI2luY2x1ZGUgIm9wdGltaXplci9wYXRo cy5oIgogI2luY2x1ZGUgIm9wdGltaXplci9wbGFjZWhvbGRlci5oIgogI2luY2x1ZGUgIm9wdGlt aXplci9wbGFuY2F0LmgiCisjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5uZXIuaCIKICNpbmNsdWRl ICJvcHRpbWl6ZXIvcmVzdHJpY3RpbmZvLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3RsaXN0Lmgi CisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX29wZXIuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2Vf cmVsYXRpb24uaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVNYW5pcC5oIgogI2luY2x1ZGUg InV0aWxzL2hzZWFyY2guaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRl ICJ1dGlscy9zZWxmdW5jcy5oIgorI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCiAKIAogdHlw ZWRlZiBzdHJ1Y3QgSm9pbkhhc2hFbnRyeQpAQCAtODMsNiArODksMTQgQEAgc3RhdGljIHZvaWQg YnVpbGRfY2hpbGRfam9pbl9yZWx0YXJnZXQoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkg ICBSZWxPcHRJbmZvICpjaGlsZHJlbCwKIAkJCQkJCQkJCSAgIGludCBuYXBwaW5mb3MsCiAJCQkJ CQkJCQkgICBBcHBlbmRSZWxJbmZvICoqYXBwaW5mb3MpOworc3RhdGljIGJvb2wgZWFnZXJfYWdn cmVnYXRpb25fcG9zc2libGVfZm9yX3JlbGF0aW9uKFBsYW5uZXJJbmZvICpyb290LAorCQkJCQkJ CQkJCQkJCVJlbE9wdEluZm8gKnJlbCk7CitzdGF0aWMgYm9vbCBpbml0X2dyb3VwaW5nX3Rhcmdl dHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKKwkJCQkJCQkJICBQYXRoVGFy Z2V0ICp0YXJnZXQsIFBhdGhUYXJnZXQgKmFnZ19pbnB1dCwKKwkJCQkJCQkJICBMaXN0ICoqZ3Jv dXBfY2xhdXNlcywgTGlzdCAqKmdyb3VwX2V4cHJzKTsKK3N0YXRpYyBib29sIGlzX3Zhcl9pbl9h Z2dyZWZfb25seShQbGFubmVySW5mbyAqcm9vdCwgVmFyICp2YXIpOworc3RhdGljIGJvb2wgaXNf dmFyX25lZWRlZF9ieV9qb2luKFBsYW5uZXJJbmZvICpyb290LCBWYXIgKnZhciwgUmVsT3B0SW5m byAqcmVsKTsKK3N0YXRpYyBJbmRleCBnZXRfZXhwcmVzc2lvbl9zb3J0Z3JvdXByZWYoUGxhbm5l ckluZm8gKnJvb3QsIEV4cHIgKmV4cHIpOwogCiAKIC8qCkBAIC0yNzgsNiArMjkyLDggQEAgYnVp bGRfc2ltcGxlX3JlbChQbGFubmVySW5mbyAqcm9vdCwgaW50IHJlbGlkLCBSZWxPcHRJbmZvICpw YXJlbnQpCiAJcmVsLT5qb2luaW5mbyA9IE5JTDsKIAlyZWwtPmhhc19lY2xhc3Nfam9pbnMgPSBm YWxzZTsKIAlyZWwtPmNvbnNpZGVyX3BhcnRpdGlvbndpc2Vfam9pbiA9IGZhbHNlOwkvKiBtaWdo dCBnZXQgY2hhbmdlZCBsYXRlciAqLworCXJlbC0+YWdnX2luZm8gPSBOVUxMOworCXJlbC0+Z3Jv dXBlZF9yZWwgPSBOVUxMOwogCXJlbC0+cGFydF9zY2hlbWUgPSBOVUxMOwogCXJlbC0+bnBhcnRz ID0gLTE7CiAJcmVsLT5ib3VuZGluZm8gPSBOVUxMOwpAQCAtNDA4LDYgKzQyNCwxMDMgQEAgYnVp bGRfc2ltcGxlX3JlbChQbGFubmVySW5mbyAqcm9vdCwgaW50IHJlbGlkLCBSZWxPcHRJbmZvICpw YXJlbnQpCiAJcmV0dXJuIHJlbDsKIH0KIAorLyoKKyAqIGJ1aWxkX3NpbXBsZV9ncm91cGVkX3Jl bAorICoJICBDb25zdHJ1Y3QgYSBuZXcgUmVsT3B0SW5mbyByZXByZXNlbnRpbmcgYSBncm91cGVk IHZlcnNpb24gb2YgdGhlIGlucHV0CisgKgkgIGJhc2UgcmVsYXRpb24uCisgKi8KK1JlbE9wdElu Zm8gKgorYnVpbGRfc2ltcGxlX2dyb3VwZWRfcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJ bmZvICpyZWwpCit7CisJUmVsT3B0SW5mbyAqZ3JvdXBlZF9yZWw7CisJUmVsQWdnSW5mbyAqYWdn X2luZm87CisKKwkvKgorCSAqIFdlIHNob3VsZCBoYXZlIGF2YWlsYWJsZSBhZ2dyZWdhdGUgZXhw cmVzc2lvbnMgYW5kIGdyb3VwaW5nCisJICogZXhwcmVzc2lvbnMsIG90aGVyd2lzZSB3ZSBjYW5u b3QgcmVhY2ggaGVyZS4KKwkgKi8KKwlBc3NlcnQocm9vdC0+YWdnX2NsYXVzZV9saXN0ICE9IE5J TCk7CisJQXNzZXJ0KHJvb3QtPmdyb3VwX2V4cHJfbGlzdCAhPSBOSUwpOworCisJLyogbm90aGlu ZyB0byBkbyBmb3IgZHVtbXkgcmVsICovCisJaWYgKElTX0RVTU1ZX1JFTChyZWwpKQorCQlyZXR1 cm4gTlVMTDsKKworCS8qCisJICogUHJlcGFyZSB0aGUgaW5mb3JtYXRpb24gbmVlZGVkIHRvIGNy ZWF0ZSBncm91cGVkIHBhdGhzIGZvciB0aGlzIGJhc2UKKwkgKiByZWxhdGlvbi4KKwkgKi8KKwlh Z2dfaW5mbyA9IGNyZWF0ZV9yZWxfYWdnX2luZm8ocm9vdCwgcmVsKTsKKwlpZiAoYWdnX2luZm8g PT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKgorCSAqIElmIGdyb3VwZWQgcGF0aHMgZm9y IHRoZSBnaXZlbiBiYXNlIHJlbGF0aW9uIGFyZSBub3QgY29uc2lkZXJlZCB1c2VmdWwsCisJICog c2tpcCBidWlsZGluZyB0aGUgZ3JvdXBlZCByZWxhdGlvbi4KKwkgKi8KKwlpZiAoIWFnZ19pbmZv LT5hZ2dfdXNlZnVsKQorCQlyZXR1cm4gTlVMTDsKKworCS8qIFRyYWNrcyB0aGUgbG93ZXN0IGpv aW4gbGV2ZWwgYXQgd2hpY2ggcGFydGlhbCBhZ2dyZWdhdGlvbiBpcyBhcHBsaWVkICovCisJYWdn X2luZm8tPmFwcGx5X2F0ID0gYm1zX2NvcHkocmVsLT5yZWxpZHMpOworCisJLyogYnVpbGQgdGhl IGdyb3VwZWQgcmVsYXRpb24gKi8KKwlncm91cGVkX3JlbCA9IGJ1aWxkX2dyb3VwZWRfcmVsKHJv b3QsIHJlbCk7CisJZ3JvdXBlZF9yZWwtPnJlbHRhcmdldCA9IGFnZ19pbmZvLT50YXJnZXQ7CisJ Z3JvdXBlZF9yZWwtPnJvd3MgPSBhZ2dfaW5mby0+Z3JvdXBlZF9yb3dzOworCWdyb3VwZWRfcmVs LT5hZ2dfaW5mbyA9IGFnZ19pbmZvOworCisJcmVsLT5ncm91cGVkX3JlbCA9IGdyb3VwZWRfcmVs OworCisJcmV0dXJuIGdyb3VwZWRfcmVsOworfQorCisvKgorICogYnVpbGRfZ3JvdXBlZF9yZWwK KyAqCSAgQnVpbGQgYSBncm91cGVkIHJlbGF0aW9uIGJ5IGZsYXQgY29weWluZyB0aGUgaW5wdXQg cmVsYXRpb24gYW5kIHJlc2V0dGluZworICoJICB0aGUgbmVjZXNzYXJ5IGZpZWxkcy4KKyAqLwor UmVsT3B0SW5mbyAqCitidWlsZF9ncm91cGVkX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0 SW5mbyAqcmVsKQoreworCVJlbE9wdEluZm8gKmdyb3VwZWRfcmVsOworCisJZ3JvdXBlZF9yZWwg PSBtYWtlTm9kZShSZWxPcHRJbmZvKTsKKwltZW1jcHkoZ3JvdXBlZF9yZWwsIHJlbCwgc2l6ZW9m KFJlbE9wdEluZm8pKTsKKworCS8qCisJICogY2xlYXIgcGF0aCBpbmZvCisJICovCisJZ3JvdXBl ZF9yZWwtPnBhdGhsaXN0ID0gTklMOworCWdyb3VwZWRfcmVsLT5wcGlsaXN0ID0gTklMOworCWdy b3VwZWRfcmVsLT5wYXJ0aWFsX3BhdGhsaXN0ID0gTklMOworCWdyb3VwZWRfcmVsLT5jaGVhcGVz dF9zdGFydHVwX3BhdGggPSBOVUxMOworCWdyb3VwZWRfcmVsLT5jaGVhcGVzdF90b3RhbF9wYXRo ID0gTlVMTDsKKwlncm91cGVkX3JlbC0+Y2hlYXBlc3RfcGFyYW1ldGVyaXplZF9wYXRocyA9IE5J TDsKKworCS8qCisJICogY2xlYXIgcGFydGl0aW9uIGluZm8KKwkgKi8KKwlncm91cGVkX3JlbC0+ cGFydF9zY2hlbWUgPSBOVUxMOworCWdyb3VwZWRfcmVsLT5ucGFydHMgPSAtMTsKKwlncm91cGVk X3JlbC0+Ym91bmRpbmZvID0gTlVMTDsKKwlncm91cGVkX3JlbC0+cGFydGJvdW5kc19tZXJnZWQg PSBmYWxzZTsKKwlncm91cGVkX3JlbC0+cGFydGl0aW9uX3F1YWwgPSBOSUw7CisJZ3JvdXBlZF9y ZWwtPnBhcnRfcmVscyA9IE5VTEw7CisJZ3JvdXBlZF9yZWwtPmxpdmVfcGFydHMgPSBOVUxMOwor CWdyb3VwZWRfcmVsLT5hbGxfcGFydHJlbHMgPSBOVUxMOworCWdyb3VwZWRfcmVsLT5wYXJ0ZXhw cnMgPSBOVUxMOworCWdyb3VwZWRfcmVsLT5udWxsYWJsZV9wYXJ0ZXhwcnMgPSBOVUxMOworCWdy b3VwZWRfcmVsLT5jb25zaWRlcl9wYXJ0aXRpb253aXNlX2pvaW4gPSBmYWxzZTsKKworCS8qCisJ ICogY2xlYXIgc2l6ZSBlc3RpbWF0ZXMKKwkgKi8KKwlncm91cGVkX3JlbC0+cm93cyA9IDA7CisK KwlyZXR1cm4gZ3JvdXBlZF9yZWw7Cit9CisKIC8qCiAgKiBmaW5kX2Jhc2VfcmVsCiAgKgkgIEZp bmQgYSBiYXNlIG9yIG90aGVycmVsIHJlbGF0aW9uIGVudHJ5LCB3aGljaCBtdXN0IGFscmVhZHkg ZXhpc3QuCkBAIC03NTksNiArODcyLDggQEAgYnVpbGRfam9pbl9yZWwoUGxhbm5lckluZm8gKnJv b3QsCiAJam9pbnJlbC0+am9pbmluZm8gPSBOSUw7CiAJam9pbnJlbC0+aGFzX2VjbGFzc19qb2lu cyA9IGZhbHNlOwogCWpvaW5yZWwtPmNvbnNpZGVyX3BhcnRpdGlvbndpc2Vfam9pbiA9IGZhbHNl OwkvKiBtaWdodCBnZXQgY2hhbmdlZCBsYXRlciAqLworCWpvaW5yZWwtPmFnZ19pbmZvID0gTlVM TDsKKwlqb2lucmVsLT5ncm91cGVkX3JlbCA9IE5VTEw7CiAJam9pbnJlbC0+cGFyZW50ID0gTlVM TDsKIAlqb2lucmVsLT50b3BfcGFyZW50ID0gTlVMTDsKIAlqb2lucmVsLT50b3BfcGFyZW50X3Jl bGlkcyA9IE5VTEw7CkBAIC05NDUsNiArMTA2MCw4IEBAIGJ1aWxkX2NoaWxkX2pvaW5fcmVsKFBs YW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpvdXRlcl9yZWwsCiAJam9pbnJlbC0+am9pbmlu Zm8gPSBOSUw7CiAJam9pbnJlbC0+aGFzX2VjbGFzc19qb2lucyA9IGZhbHNlOwogCWpvaW5yZWwt PmNvbnNpZGVyX3BhcnRpdGlvbndpc2Vfam9pbiA9IGZhbHNlOwkvKiBtaWdodCBnZXQgY2hhbmdl ZCBsYXRlciAqLworCWpvaW5yZWwtPmFnZ19pbmZvID0gTlVMTDsKKwlqb2lucmVsLT5ncm91cGVk X3JlbCA9IE5VTEw7CiAJam9pbnJlbC0+cGFyZW50ID0gcGFyZW50X2pvaW5yZWw7CiAJam9pbnJl bC0+dG9wX3BhcmVudCA9IHBhcmVudF9qb2lucmVsLT50b3BfcGFyZW50ID8gcGFyZW50X2pvaW5y ZWwtPnRvcF9wYXJlbnQgOiBwYXJlbnRfam9pbnJlbDsKIAlqb2lucmVsLT50b3BfcGFyZW50X3Jl bGlkcyA9IGpvaW5yZWwtPnRvcF9wYXJlbnQtPnJlbGlkczsKQEAgLTI1MjMsMyArMjY0MCw1MTQg QEAgYnVpbGRfY2hpbGRfam9pbl9yZWx0YXJnZXQoUGxhbm5lckluZm8gKnJvb3QsCiAJY2hpbGRy ZWwtPnJlbHRhcmdldC0+Y29zdC5wZXJfdHVwbGUgPSBwYXJlbnRyZWwtPnJlbHRhcmdldC0+Y29z dC5wZXJfdHVwbGU7CiAJY2hpbGRyZWwtPnJlbHRhcmdldC0+d2lkdGggPSBwYXJlbnRyZWwtPnJl bHRhcmdldC0+d2lkdGg7CiB9CisKKy8qCisgKiBjcmVhdGVfcmVsX2FnZ19pbmZvCisgKgkgIENy ZWF0ZSB0aGUgUmVsQWdnSW5mbyBzdHJ1Y3R1cmUgZm9yIHRoZSBnaXZlbiByZWxhdGlvbiBpZiBp dCBjYW4gcHJvZHVjZQorICoJICBncm91cGVkIHBhdGhzLiAgVGhlIGdpdmVuIHJlbGF0aW9uIGlz IHRoZSBub24tZ3JvdXBlZCBvbmUgd2hpY2ggaGFzIHRoZQorICoJICByZWx0YXJnZXQgYWxyZWFk eSBjb25zdHJ1Y3RlZC4KKyAqLworUmVsQWdnSW5mbyAqCitjcmVhdGVfcmVsX2FnZ19pbmZvKFBs YW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwpCit7CisJTGlzdENlbGwgICAqbGM7CisJ UmVsQWdnSW5mbyAqcmVzdWx0OworCVBhdGhUYXJnZXQgKmFnZ19pbnB1dDsKKwlQYXRoVGFyZ2V0 ICp0YXJnZXQ7CisJTGlzdAkgICAqZ3JvdXBfY2xhdXNlcyA9IE5JTDsKKwlMaXN0CSAgICpncm91 cF9leHBycyA9IE5JTDsKKworCS8qCisJICogVGhlIGxpc3RzIG9mIGFnZ3JlZ2F0ZSBleHByZXNz aW9ucyBhbmQgZ3JvdXBpbmcgZXhwcmVzc2lvbnMgc2hvdWxkIGhhdmUKKwkgKiBiZWVuIGNvbnN0 cnVjdGVkLgorCSAqLworCUFzc2VydChyb290LT5hZ2dfY2xhdXNlX2xpc3QgIT0gTklMKTsKKwlB c3NlcnQocm9vdC0+Z3JvdXBfZXhwcl9saXN0ICE9IE5JTCk7CisKKwkvKgorCSAqIElmIHRoaXMg aXMgYSBjaGlsZCByZWwsIHRoZSBncm91cGVkIHJlbCBmb3IgaXRzIHBhcmVudCByZWwgbXVzdCBo YXZlCisJICogYmVlbiBjcmVhdGVkIGlmIGl0IGNhbi4gIFNvIHdlIGNhbiBqdXN0IHVzZSBwYXJl bnQncyBSZWxBZ2dJbmZvIGlmCisJICogdGhlcmUgaXMgb25lLCB3aXRoIGFwcHJvcHJpYXRlIHZh cmlhYmxlIHN1YnN0aXR1dGlvbnMuCisJICovCisJaWYgKElTX09USEVSX1JFTChyZWwpKQorCXsK KwkJUmVsT3B0SW5mbyAqZ3JvdXBlZF9yZWw7CisJCVJlbEFnZ0luZm8gKmFnZ19pbmZvOworCisJ CWdyb3VwZWRfcmVsID0gcmVsLT50b3BfcGFyZW50LT5ncm91cGVkX3JlbDsKKwkJaWYgKGdyb3Vw ZWRfcmVsID09IE5VTEwpCisJCQlyZXR1cm4gTlVMTDsKKworCQlBc3NlcnQoSVNfR1JPVVBFRF9S RUwoZ3JvdXBlZF9yZWwpKTsKKworCQkvKiBNdXN0IGRvIG11bHRpLWxldmVsIHRyYW5zZm9ybWF0 aW9uICovCisJCWFnZ19pbmZvID0gKFJlbEFnZ0luZm8gKikKKwkJCWFkanVzdF9hcHBlbmRyZWxf YXR0cnNfbXVsdGlsZXZlbChyb290LAorCQkJCQkJCQkJCQkgIChOb2RlICopIGdyb3VwZWRfcmVs LT5hZ2dfaW5mbywKKwkJCQkJCQkJCQkJICByZWwsCisJCQkJCQkJCQkJCSAgcmVsLT50b3BfcGFy ZW50KTsKKworCQlhZ2dfaW5mby0+Z3JvdXBlZF9yb3dzID0KKwkJCWVzdGltYXRlX251bV9ncm91 cHMocm9vdCwgYWdnX2luZm8tPmdyb3VwX2V4cHJzLAorCQkJCQkJCQlyZWwtPnJvd3MsIE5VTEws IE5VTEwpOworCisJCWFnZ19pbmZvLT5hcHBseV9hdCA9IE5VTEw7CS8qIGNhbGxlciB3aWxsIGNo YW5nZSB0aGlzIGxhdGVyICovCisKKwkJLyoKKwkJICogVGhlIGdyb3VwZWQgcGF0aHMgZm9yIHRo ZSBnaXZlbiByZWxhdGlvbiBhcmUgY29uc2lkZXJlZCB1c2VmdWwgaWZmCisJCSAqIHRoZSBhdmVy YWdlIGdyb3VwIHNpemUgaXMgbm8gbGVzcyB0aGFuIG1pbl9lYWdlcl9hZ2dfZ3JvdXBfc2l6ZS4K KwkJICovCisJCWFnZ19pbmZvLT5hZ2dfdXNlZnVsID0KKwkJCShyZWwtPnJvd3MgLyBhZ2dfaW5m by0+Z3JvdXBlZF9yb3dzKSA+PSBtaW5fZWFnZXJfYWdnX2dyb3VwX3NpemU7CisKKwkJcmV0dXJu IGFnZ19pbmZvOworCX0KKworCS8qIENoZWNrIGlmIGl0J3MgcG9zc2libGUgdG8gcHJvZHVjZSBn cm91cGVkIHBhdGhzIGZvciB0aGlzIHJlbGF0aW9uLiAqLworCWlmICghZWFnZXJfYWdncmVnYXRp b25fcG9zc2libGVfZm9yX3JlbGF0aW9uKHJvb3QsIHJlbCkpCisJCXJldHVybiBOVUxMOworCisJ LyoKKwkgKiBDcmVhdGUgdGFyZ2V0cyBmb3IgdGhlIGdyb3VwZWQgcGF0aHMgYW5kIGZvciB0aGUg aW5wdXQgcGF0aHMgb2YgdGhlCisJICogZ3JvdXBlZCBwYXRocy4KKwkgKi8KKwl0YXJnZXQgPSBj cmVhdGVfZW1wdHlfcGF0aHRhcmdldCgpOworCWFnZ19pbnB1dCA9IGNyZWF0ZV9lbXB0eV9wYXRo dGFyZ2V0KCk7CisKKwkvKiAuLi4gYW5kIGluaXRpYWxpemUgdGhlc2UgdGFyZ2V0cyAqLworCWlm ICghaW5pdF9ncm91cGluZ190YXJnZXRzKHJvb3QsIHJlbCwgdGFyZ2V0LCBhZ2dfaW5wdXQsCisJ CQkJCQkJICAgJmdyb3VwX2NsYXVzZXMsICZncm91cF9leHBycykpCisJCXJldHVybiBOVUxMOwor CisJLyoKKwkgKiBFYWdlciBhZ2dyZWdhdGlvbiBpcyBub3QgYXBwbGljYWJsZSBpZiB0aGVyZSBh cmUgbm8gYXZhaWxhYmxlIGdyb3VwaW5nCisJICogZXhwcmVzc2lvbnMuCisJICovCisJaWYgKGxp c3RfbGVuZ3RoKGdyb3VwX2NsYXVzZXMpID09IDApCisJCXJldHVybiBOVUxMOworCisJLyogYnVp bGQgdGhlIFJlbEFnZ0luZm8gcmVzdWx0ICovCisJcmVzdWx0ID0gbWFrZU5vZGUoUmVsQWdnSW5m byk7CisKKwlyZXN1bHQtPmdyb3VwX2NsYXVzZXMgPSBncm91cF9jbGF1c2VzOworCXJlc3VsdC0+ Z3JvdXBfZXhwcnMgPSBncm91cF9leHByczsKKworCS8qIENhbGN1bGF0ZSBwYXRoa2V5cyB0aGF0 IHJlcHJlc2VudCB0aGlzIGdyb3VwaW5nIHJlcXVpcmVtZW50cyAqLworCXJlc3VsdC0+Z3JvdXBf cGF0aGtleXMgPQorCQltYWtlX3BhdGhrZXlzX2Zvcl9zb3J0Y2xhdXNlcyhyb290LCByZXN1bHQt Pmdyb3VwX2NsYXVzZXMsCisJCQkJCQkJCQkgIG1ha2VfdGxpc3RfZnJvbV9wYXRodGFyZ2V0KHRh cmdldCkpOworCisJLyogQWRkIGFnZ3JlZ2F0ZXMgdG8gdGhlIGdyb3VwaW5nIHRhcmdldCAqLwor CWZvcmVhY2gobGMsIHJvb3QtPmFnZ19jbGF1c2VfbGlzdCkKKwl7CisJCUFnZ0NsYXVzZUluZm8g KmFjX2luZm8gPSBsZmlyc3Rfbm9kZShBZ2dDbGF1c2VJbmZvLCBsYyk7CisJCUFnZ3JlZgkgICAq YWdncmVmOworCisJCUFzc2VydChJc0EoYWNfaW5mby0+YWdncmVmLCBBZ2dyZWYpKTsKKworCQlh Z2dyZWYgPSAoQWdncmVmICopIGNvcHlPYmplY3QoYWNfaW5mby0+YWdncmVmKTsKKwkJbWFya19w YXJ0aWFsX2FnZ3JlZihhZ2dyZWYsIEFHR1NQTElUX0lOSVRJQUxfU0VSSUFMKTsKKworCQlhZGRf Y29sdW1uX3RvX3BhdGh0YXJnZXQodGFyZ2V0LCAoRXhwciAqKSBhZ2dyZWYsIDApOworCX0KKwor CS8qIFNldCB0aGUgZXN0aW1hdGVkIGV2YWwgY29zdCBhbmQgb3V0cHV0IHdpZHRoIGZvciBib3Ro IHRhcmdldHMgKi8KKwlzZXRfcGF0aHRhcmdldF9jb3N0X3dpZHRoKHJvb3QsIHRhcmdldCk7CisJ c2V0X3BhdGh0YXJnZXRfY29zdF93aWR0aChyb290LCBhZ2dfaW5wdXQpOworCisJcmVzdWx0LT5y ZWxpZHMgPSBibXNfY29weShyZWwtPnJlbGlkcyk7CisJcmVzdWx0LT50YXJnZXQgPSB0YXJnZXQ7 CisJcmVzdWx0LT5hZ2dfaW5wdXQgPSBhZ2dfaW5wdXQ7CisJcmVzdWx0LT5ncm91cGVkX3Jvd3Mg PSBlc3RpbWF0ZV9udW1fZ3JvdXBzKHJvb3QsIHJlc3VsdC0+Z3JvdXBfZXhwcnMsCisJCQkJCQkJ CQkJCSAgIHJlbC0+cm93cywgTlVMTCwgTlVMTCk7CisJcmVzdWx0LT5hcHBseV9hdCA9IE5VTEw7 CS8qIGNhbGxlciB3aWxsIGNoYW5nZSB0aGlzIGxhdGVyICovCisKKwkvKgorCSAqIFRoZSBncm91 cGVkIHBhdGhzIGZvciB0aGUgZ2l2ZW4gcmVsYXRpb24gYXJlIGNvbnNpZGVyZWQgdXNlZnVsIGlm ZiB0aGUKKwkgKiBhdmVyYWdlIGdyb3VwIHNpemUgaXMgbm8gbGVzcyB0aGFuIG1pbl9lYWdlcl9h Z2dfZ3JvdXBfc2l6ZS4KKwkgKi8KKwlyZXN1bHQtPmFnZ191c2VmdWwgPQorCQkocmVsLT5yb3dz IC8gcmVzdWx0LT5ncm91cGVkX3Jvd3MpID49IG1pbl9lYWdlcl9hZ2dfZ3JvdXBfc2l6ZTsKKwor CXJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBlYWdlcl9hZ2dyZWdhdGlvbl9wb3NzaWJsZV9m b3JfcmVsYXRpb24KKyAqIAkgIENoZWNrIGlmIGl0J3MgcG9zc2libGUgdG8gcHJvZHVjZSBncm91 cGVkIHBhdGhzIGZvciB0aGUgZ2l2ZW4gcmVsYXRpb24uCisgKi8KK3N0YXRpYyBib29sCitlYWdl cl9hZ2dyZWdhdGlvbl9wb3NzaWJsZV9mb3JfcmVsYXRpb24oUGxhbm5lckluZm8gKnJvb3QsIFJl bE9wdEluZm8gKnJlbCkKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKwlpbnQJCQljdXJfcmVsaWQ7CisK KwkvKgorCSAqIENoZWNrIHRvIHNlZSBpZiB0aGUgZ2l2ZW4gcmVsYXRpb24gaXMgaW4gdGhlIG51 bGxhYmxlIHNpZGUgb2YgYW4gb3V0ZXIKKwkgKiBqb2luLiAgSW4gdGhpcyBjYXNlLCB3ZSBjYW5u b3QgcHVzaCBhIHBhcnRpYWwgYWdncmVnYXRpb24gZG93biB0byB0aGUKKwkgKiByZWxhdGlvbiwg YmVjYXVzZSB0aGUgTlVMTC1leHRlbmRlZCByb3dzIHByb2R1Y2VkIGJ5IHRoZSBvdXRlciBqb2lu CisJICogd291bGQgbm90IGJlIGF2YWlsYWJsZSB3aGVuIHdlIHBlcmZvcm0gdGhlIHBhcnRpYWwg YWdncmVnYXRpb24sIHdoaWxlCisJICogd2l0aCBhIG5vbi1lYWdlci1hZ2dyZWdhdGlvbiBwbGFu IHRoZXNlIHJvd3MgYXJlIGF2YWlsYWJsZSBmb3IgdGhlCisJICogdG9wLWxldmVsIGFnZ3JlZ2F0 aW9uLiAgRG9pbmcgc28gbWF5IHJlc3VsdCBpbiB0aGUgcm93cyBiZWluZyBncm91cGVkCisJICog ZGlmZmVyZW50bHkgdGhhbiBleHBlY3RlZCwgb3IgcHJvZHVjZSBpbmNvcnJlY3QgdmFsdWVzIGZy b20gdGhlCisJICogYWdncmVnYXRlIGZ1bmN0aW9ucy4KKwkgKi8KKwljdXJfcmVsaWQgPSAtMTsK Kwl3aGlsZSAoKGN1cl9yZWxpZCA9IGJtc19uZXh0X21lbWJlcihyZWwtPnJlbGlkcywgY3VyX3Jl bGlkKSkgPj0gMCkKKwl7CisJCVJlbE9wdEluZm8gKmJhc2VyZWwgPSBmaW5kX2Jhc2VfcmVsX2ln bm9yZV9qb2luKHJvb3QsIGN1cl9yZWxpZCk7CisKKwkJaWYgKGJhc2VyZWwgPT0gTlVMTCkKKwkJ CWNvbnRpbnVlOwkJCS8qIGlnbm9yZSBvdXRlciBqb2lucyBpbiByZWwtPnJlbGlkcyAqLworCisJ CWlmICghYm1zX2lzX3N1YnNldChiYXNlcmVsLT5udWxsaW5nX3JlbGlkcywgcmVsLT5yZWxpZHMp KQorCQkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qCisJICogRm9yIG5vdyB3ZSBkb24ndCB0cnkg dG8gc3VwcG9ydCBQbGFjZUhvbGRlclZhcnMuCisJICovCisJZm9yZWFjaChsYywgcmVsLT5yZWx0 YXJnZXQtPmV4cHJzKQorCXsKKwkJRXhwcgkgICAqZXhwciA9IGxmaXJzdChsYyk7CisKKwkJaWYg KElzQShleHByLCBQbGFjZUhvbGRlclZhcikpCisJCQlyZXR1cm4gZmFsc2U7CisJfQorCisJLyog Q2FsbGVyIHNob3VsZCBvbmx5IHBhc3MgYmFzZSByZWxhdGlvbnMgb3Igam9pbnMuICovCisJQXNz ZXJ0KHJlbC0+cmVsb3B0a2luZCA9PSBSRUxPUFRfQkFTRVJFTCB8fAorCQkgICByZWwtPnJlbG9w dGtpbmQgPT0gUkVMT1BUX0pPSU5SRUwpOworCisJLyoKKwkgKiBDaGVjayBpZiBhbGwgYWdncmVn YXRlIGV4cHJlc3Npb25zIGNhbiBiZSBldmFsdWF0ZWQgb24gdGhpcyByZWxhdGlvbgorCSAqIGxl dmVsLgorCSAqLworCWZvcmVhY2gobGMsIHJvb3QtPmFnZ19jbGF1c2VfbGlzdCkKKwl7CisJCUFn Z0NsYXVzZUluZm8gKmFjX2luZm8gPSBsZmlyc3Rfbm9kZShBZ2dDbGF1c2VJbmZvLCBsYyk7CisK KwkJQXNzZXJ0KElzQShhY19pbmZvLT5hZ2dyZWYsIEFnZ3JlZikpOworCisJCS8qCisJCSAqIEdp dmUgdXAgaWYgYW55IGFnZ3JlZ2F0ZSByZXF1aXJlcyByZWxhdGlvbnMgb3RoZXIgdGhhbiB0aGUg Y3VycmVudAorCQkgKiBvbmUuICBJZiB0aGUgYWdncmVnYXRlIHJlcXVpcmVzIHRoZSBjdXJyZW50 IHJlbGF0aW9uIHBsdXMKKwkJICogYWRkaXRpb25hbCByZWxhdGlvbnMsIGdyb3VwaW5nIHRoZSBj dXJyZW50IHJlbGF0aW9uIGNvdWxkIG1ha2Ugc29tZQorCQkgKiBpbnB1dCByb3dzIHVuYXZhaWxh YmxlIGZvciB0aGUgaGlnaGVyIGFnZ3JlZ2F0ZSBhbmQgbWF5IHJlZHVjZSB0aGUKKwkJICogbnVt YmVyIG9mIGlucHV0IHJvd3MgaXQgcmVjZWl2ZXMuICBJZiB0aGUgYWdncmVnYXRlIGRvZXMgbm90 CisJCSAqIHJlcXVpcmUgdGhlIGN1cnJlbnQgcmVsYXRpb24gYXQgYWxsLCBpdCBzaG91bGQgbm90 IGJlIGdyb3VwZWQsIGFzCisJCSAqIHdlIGRvIG5vdCBzdXBwb3J0IGpvaW5pbmcgdHdvIGdyb3Vw ZWQgcmVsYXRpb25zLgorCQkgKi8KKwkJaWYgKCFibXNfaXNfc3Vic2V0KGFjX2luZm8tPmFnZ19l dmFsX2F0LCByZWwtPnJlbGlkcykpCisJCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcmV0dXJuIHRy dWU7Cit9CisKKy8qCisgKiBpbml0X2dyb3VwaW5nX3RhcmdldHMKKyAqCSAgSW5pdGlhbGl6ZSB0 aGUgdGFyZ2V0IGZvciBncm91cGVkIHBhdGhzICh0YXJnZXQpIGFzIHdlbGwgYXMgdGhlIHRhcmdl dAorICoJICBmb3IgcGF0aHMgdGhhdCBnZW5lcmF0ZSBpbnB1dCBmb3IgdGhlIGdyb3VwZWQgcGF0 aHMgKGFnZ19pbnB1dCkuCisgKgorICogV2UgYWxzbyBjb25zdHJ1Y3QgdGhlIGxpc3Qgb2YgU29y dEdyb3VwQ2xhdXNlcyBhbmQgdGhlIGxpc3Qgb2YgZ3JvdXBpbmcKKyAqIGV4cHJlc3Npb25zIGZv ciB0aGUgcGFydGlhbCBhZ2dyZWdhdGlvbiwgYW5kIHJldHVybiB0aGVtIGluICpncm91cF9jbGF1 c2UKKyAqIGFuZCAqZ3JvdXBfZXhwcnMuCisgKgorICogUmV0dXJuIHRydWUgaWYgdGhlIHRhcmdl dHMgY291bGQgYmUgaW5pdGlhbGl6ZWQsIGZhbHNlIG90aGVyd2lzZS4KKyAqLworc3RhdGljIGJv b2wKK2luaXRfZ3JvdXBpbmdfdGFyZ2V0cyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAq cmVsLAorCQkJCQkgIFBhdGhUYXJnZXQgKnRhcmdldCwgUGF0aFRhcmdldCAqYWdnX2lucHV0LAor CQkJCQkgIExpc3QgKipncm91cF9jbGF1c2VzLCBMaXN0ICoqZ3JvdXBfZXhwcnMpCit7CisJTGlz dENlbGwgICAqbGM7CisJTGlzdAkgICAqcG9zc2libHlfZGVwZW5kZW50ID0gTklMOworCUluZGV4 CQltYXhTb3J0R3JvdXBSZWY7CisKKwkvKiBJZGVudGlmeSB0aGUgbWF4IHNvcnRncm91cHJlZiAq LworCW1heFNvcnRHcm91cFJlZiA9IDA7CisJZm9yZWFjaChsYywgcm9vdC0+cHJvY2Vzc2VkX3Rs aXN0KQorCXsKKwkJSW5kZXgJCXJlZiA9ICgoVGFyZ2V0RW50cnkgKikgbGZpcnN0KGxjKSktPnJl c3NvcnRncm91cHJlZjsKKworCQlpZiAocmVmID4gbWF4U29ydEdyb3VwUmVmKQorCQkJbWF4U29y dEdyb3VwUmVmID0gcmVmOworCX0KKworCS8qCisJICogQXQgdGhpcyBwb2ludCwgYWxsIFZhcnMg ZnJvbSB0aGlzIHJlbGF0aW9uIHRoYXQgYXJlIG5lZWRlZCBieSB1cHBlcgorCSAqIGpvaW5zIG9y IGFyZSByZXF1aXJlZCBpbiB0aGUgZmluYWwgdGFyZ2V0bGlzdCBzaG91bGQgYWxyZWFkeSBiZSBw cmVzZW50CisJICogaW4gaXRzIHJlbHRhcmdldC4gIFRoZXJlZm9yZSwgd2UgY2FuIHNhZmVseSBp dGVyYXRlIG92ZXIgdGhpcworCSAqIHJlbGF0aW9uJ3MgcmVsdGFyZ2V0LT5leHBycyB0byBjb25z dHJ1Y3QgdGhlIFBhdGhUYXJnZXQgYW5kIGdyb3VwaW5nCisJICogY2xhdXNlcyBmb3IgdGhlIGdy b3VwZWQgcGF0aHMuCisJICovCisJZm9yZWFjaChsYywgcmVsLT5yZWx0YXJnZXQtPmV4cHJzKQor CXsKKwkJRXhwcgkgICAqZXhwciA9IChFeHByICopIGxmaXJzdChsYyk7CisJCUluZGV4CQlzb3J0 Z3JvdXByZWY7CisKKwkJLyoKKwkJICogR2l2ZW4gdGhhdCBQbGFjZUhvbGRlclZhciBjdXJyZW50 bHkgcHJldmVudHMgdXMgZnJvbSBkb2luZyBlYWdlcgorCQkgKiBhZ2dyZWdhdGlvbiwgdGhlIHNv dXJjZSB0YXJnZXQgY2Fubm90IGNvbnRhaW4gYW55dGhpbmcgbW9yZSBjb21wbGV4CisJCSAqIHRo YW4gYSBWYXIuCisJCSAqLworCQlBc3NlcnQoSXNBKGV4cHIsIFZhcikpOworCisJCS8qCisJCSAq IEdldCB0aGUgc29ydGdyb3VwcmVmIG9mIHRoZSBleHByIGlmIGl0IGlzIGZvdW5kIGFtb25nLCBv ciBjYW4gYmUKKwkJICogZGVkdWNlZCBmcm9tLCB0aGUgb3JpZ2luYWwgZ3JvdXBpbmcgZXhwcmVz c2lvbnMuCisJCSAqLworCQlzb3J0Z3JvdXByZWYgPSBnZXRfZXhwcmVzc2lvbl9zb3J0Z3JvdXBy ZWYocm9vdCwgZXhwcik7CisJCWlmIChzb3J0Z3JvdXByZWYgPiAwKQorCQl7CisJCQlTb3J0R3Jv dXBDbGF1c2UgKnNnYzsKKworCQkJLyogRmluZCB0aGUgbWF0Y2hpbmcgU29ydEdyb3VwQ2xhdXNl ICovCisJCQlzZ2MgPSBnZXRfc29ydGdyb3VwcmVmX2NsYXVzZShzb3J0Z3JvdXByZWYsIHJvb3Qt PnByb2Nlc3NlZF9ncm91cENsYXVzZSk7CisJCQlBc3NlcnQoc2djLT50bGVTb3J0R3JvdXBSZWYg PD0gbWF4U29ydEdyb3VwUmVmKTsKKworCQkJLyoKKwkJCSAqIElmIHRoZSB0YXJnZXQgZXhwcmVz c2lvbiBpcyB0byBiZSB1c2VkIGFzIGEgZ3JvdXBpbmcga2V5LCBpdAorCQkJICogc2hvdWxkIGJl IGVtaXR0ZWQgYnkgdGhlIGdyb3VwZWQgcGF0aHMgdGhhdCBoYXZlIGJlZW4gcHVzaGVkCisJCQkg KiBkb3duIHRvIHRoaXMgcmVsYXRpb24gbGV2ZWwuCisJCQkgKi8KKwkJCWFkZF9jb2x1bW5fdG9f cGF0aHRhcmdldCh0YXJnZXQsIGV4cHIsIHNvcnRncm91cHJlZik7CisKKwkJCS8qCisJCQkgKiAu Li4gYW5kIGl0IGFsc28gc2hvdWxkIGJlIGVtaXR0ZWQgYnkgdGhlIGlucHV0IHBhdGhzLgorCQkJ ICovCisJCQlhZGRfY29sdW1uX3RvX3BhdGh0YXJnZXQoYWdnX2lucHV0LCBleHByLCBzb3J0Z3Jv dXByZWYpOworCisJCQkvKgorCQkJICogUmVjb3JkIHRoaXMgU29ydEdyb3VwQ2xhdXNlIGFuZCBn cm91cGluZyBleHByZXNzaW9uLiAgTm90ZSB0aGF0CisJCQkgKiB0aGlzIFNvcnRHcm91cENsYXVz ZSBtaWdodCBoYXZlIGFscmVhZHkgYmVlbiByZWNvcmRlZC4KKwkJCSAqLworCQkJaWYgKCFsaXN0 X21lbWJlcigqZ3JvdXBfY2xhdXNlcywgc2djKSkKKwkJCXsKKwkJCQkqZ3JvdXBfY2xhdXNlcyA9 IGxhcHBlbmQoKmdyb3VwX2NsYXVzZXMsIHNnYyk7CisJCQkJKmdyb3VwX2V4cHJzID0gbGFwcGVu ZCgqZ3JvdXBfZXhwcnMsIGV4cHIpOworCQkJfQorCQl9CisJCWVsc2UgaWYgKGlzX3Zhcl9uZWVk ZWRfYnlfam9pbihyb290LCAoVmFyICopIGV4cHIsIHJlbCkpCisJCXsKKwkJCS8qCisJCQkgKiBU aGUgZXhwcmVzc2lvbiBpcyBuZWVkZWQgZm9yIGFuIHVwcGVyIGpvaW4gYnV0IGlzIG5laXRoZXIg aW4KKwkJCSAqIHRoZSBHUk9VUCBCWSBjbGF1c2Ugbm9yIGRlcml2YWJsZSBmcm9tIGl0IHVzaW5n IEVDIChvdGhlcndpc2UsCisJCQkgKiBpdCB3b3VsZCBoYXZlIGFscmVhZHkgYmVlbiBpbmNsdWRl ZCBpbiB0aGUgdGFyZ2V0cyBhYm92ZSkuICBXZQorCQkJICogbmVlZCB0byBjcmVhdGUgYSBzcGVj aWFsIFNvcnRHcm91cENsYXVzZSBmb3IgdGhpcyBleHByZXNzaW9uLgorCQkJICoKKwkJCSAqIEl0 IGlzIGltcG9ydGFudCB0byBpbmNsdWRlIHN1Y2ggZXhwcmVzc2lvbnMgaW4gdGhlIGdyb3VwaW5n CisJCQkgKiBrZXlzLiAgVGhpcyBpcyBlc3NlbnRpYWwgdG8gZW5zdXJlIHRoYXQgYW4gYWdncmVn YXRlZCByb3cgZnJvbQorCQkJICogdGhlIHBhcnRpYWwgYWdncmVnYXRpb24gbWF0Y2hlcyB0aGUg b3RoZXIgc2lkZSBvZiB0aGUgam9pbiBpZgorCQkJICogYW5kIG9ubHkgaWYgZWFjaCByb3cgaW4g dGhlIHBhcnRpYWwgZ3JvdXAgZG9lcy4gIFRoaXMgZW5zdXJlcworCQkJICogdGhhdCBhbGwgcm93 cyB3aXRoaW4gdGhlIHNhbWUgcGFydGlhbCBncm91cCBzaGFyZSB0aGUgc2FtZQorCQkJICogJ2Rl c3RpbnknLCB3aGljaCBpcyBjcnVjaWFsIGZvciBtYWludGFpbmluZyBjb3JyZWN0bmVzcy4KKwkJ CSAqLworCQkJU29ydEdyb3VwQ2xhdXNlICpzZ2M7CisJCQlUeXBlQ2FjaGVFbnRyeSAqdGNlOwor CQkJT2lkCQkJZXF1YWxpbWFnZXByb2M7CisKKwkJCS8qCisJCQkgKiBCdXQgZmlyc3QsIGNoZWNr IGlmIGVxdWFsaXR5IGltcGxpZXMgaW1hZ2UgZXF1YWxpdHkgZm9yIHRoaXMKKwkJCSAqIGV4cHJl c3Npb24uICBJZiBub3QsIHdlIGNhbm5vdCB1c2UgaXQgYXMgYSBncm91cGluZyBrZXkuICBTZWUK KwkJCSAqIGNvbW1lbnRzIGluIGNyZWF0ZV9ncm91cGluZ19leHByX2luZm9zKCkuCisJCQkgKi8K KwkJCXRjZSA9IGxvb2t1cF90eXBlX2NhY2hlKGV4cHJUeXBlKChOb2RlICopIGV4cHIpLAorCQkJ CQkJCQkJVFlQRUNBQ0hFX0JUUkVFX09QRkFNSUxZKTsKKwkJCWlmICghT2lkSXNWYWxpZCh0Y2Ut PmJ0cmVlX29wZikgfHwKKwkJCQkhT2lkSXNWYWxpZCh0Y2UtPmJ0cmVlX29waW50eXBlKSkKKwkJ CQlyZXR1cm4gZmFsc2U7CisKKwkJCWVxdWFsaW1hZ2Vwcm9jID0gZ2V0X29wZmFtaWx5X3Byb2Mo dGNlLT5idHJlZV9vcGYsCisJCQkJCQkJCQkJCSAgIHRjZS0+YnRyZWVfb3BpbnR5cGUsCisJCQkJ CQkJCQkJCSAgIHRjZS0+YnRyZWVfb3BpbnR5cGUsCisJCQkJCQkJCQkJCSAgIEJURVFVQUxJTUFH RV9QUk9DKTsKKwkJCWlmICghT2lkSXNWYWxpZChlcXVhbGltYWdlcHJvYykgfHwKKwkJCQkhRGF0 dW1HZXRCb29sKE9pZEZ1bmN0aW9uQ2FsbDFDb2xsKGVxdWFsaW1hZ2Vwcm9jLAorCQkJCQkJCQkJ CQkJICAgdGNlLT50eXBjb2xsYXRpb24sCisJCQkJCQkJCQkJCQkgICBPYmplY3RJZEdldERhdHVt KHRjZS0+YnRyZWVfb3BpbnR5cGUpKSkpCisJCQkJcmV0dXJuIGZhbHNlOworCisJCQkvKiBDcmVh dGUgdGhlIFNvcnRHcm91cENsYXVzZS4gKi8KKwkJCXNnYyA9IG1ha2VOb2RlKFNvcnRHcm91cENs YXVzZSk7CisKKwkJCS8qIEluaXRpYWxpemUgdGhlIFNvcnRHcm91cENsYXVzZS4gKi8KKwkJCXNn Yy0+dGxlU29ydEdyb3VwUmVmID0gKyttYXhTb3J0R3JvdXBSZWY7CisJCQlnZXRfc29ydF9ncm91 cF9vcGVyYXRvcnMoZXhwclR5cGUoKE5vZGUgKikgZXhwciksCisJCQkJCQkJCQkgZmFsc2UsIHRy dWUsIGZhbHNlLAorCQkJCQkJCQkJICZzZ2MtPnNvcnRvcCwgJnNnYy0+ZXFvcCwgTlVMTCwKKwkJ CQkJCQkJCSAmc2djLT5oYXNoYWJsZSk7CisKKwkJCS8qIFRoaXMgZXhwcmVzc2lvbiBzaG91bGQg YmUgZW1pdHRlZCBieSB0aGUgZ3JvdXBlZCBwYXRocyAqLworCQkJYWRkX2NvbHVtbl90b19wYXRo dGFyZ2V0KHRhcmdldCwgZXhwciwgc2djLT50bGVTb3J0R3JvdXBSZWYpOworCisJCQkvKiAuLi4g YW5kIGl0IGFsc28gc2hvdWxkIGJlIGVtaXR0ZWQgYnkgdGhlIGlucHV0IHBhdGhzLiAqLworCQkJ YWRkX2NvbHVtbl90b19wYXRodGFyZ2V0KGFnZ19pbnB1dCwgZXhwciwgc2djLT50bGVTb3J0R3Jv dXBSZWYpOworCisJCQkvKiBSZWNvcmQgdGhpcyBTb3J0R3JvdXBDbGF1c2UgYW5kIGdyb3VwaW5n IGV4cHJlc3Npb24gKi8KKwkJCSpncm91cF9jbGF1c2VzID0gbGFwcGVuZCgqZ3JvdXBfY2xhdXNl cywgc2djKTsKKwkJCSpncm91cF9leHBycyA9IGxhcHBlbmQoKmdyb3VwX2V4cHJzLCBleHByKTsK KwkJfQorCQllbHNlIGlmIChpc192YXJfaW5fYWdncmVmX29ubHkocm9vdCwgKFZhciAqKSBleHBy KSkKKwkJeworCQkJLyoKKwkJCSAqIFRoZSBleHByZXNzaW9uIGlzIHJlZmVyZW5jZWQgYnkgYW4g YWdncmVnYXRlIGZ1bmN0aW9uIHB1c2hlZAorCQkJICogZG93biB0byB0aGlzIHJlbGF0aW9uIGFu ZCBkb2VzIG5vdCBhcHBlYXIgZWxzZXdoZXJlIGluIHRoZQorCQkJICogdGFyZ2V0bGlzdCBvciBo YXZpbmdRdWFsLiAgQWRkIGl0IHRvICdhZ2dfaW5wdXQnIGJ1dCBub3QgdG8KKwkJCSAqICd0YXJn ZXQnLgorCQkJICovCisJCQlhZGRfbmV3X2NvbHVtbl90b19wYXRodGFyZ2V0KGFnZ19pbnB1dCwg ZXhwcik7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogVGhlIGV4cHJlc3Npb24gbWF5 IGJlIGZ1bmN0aW9uYWxseSBkZXBlbmRlbnQgb24gb3RoZXIKKwkJCSAqIGV4cHJlc3Npb25zIGlu IHRoZSB0YXJnZXQsIGJ1dCB3ZSBjYW5ub3QgdmVyaWZ5IHRoaXMgdW50aWwgYWxsCisJCQkgKiB0 YXJnZXQgZXhwcmVzc2lvbnMgaGF2ZSBiZWVuIGNvbnN0cnVjdGVkLgorCQkJICovCisJCQlwb3Nz aWJseV9kZXBlbmRlbnQgPSBsYXBwZW5kKHBvc3NpYmx5X2RlcGVuZGVudCwgZXhwcik7CisJCX0K Kwl9CisKKwkvKgorCSAqIE5vdyB3ZSBjYW4gdmVyaWZ5IHdoZXRoZXIgYW4gZXhwcmVzc2lvbiBp cyBmdW5jdGlvbmFsbHkgZGVwZW5kZW50IG9uCisJICogb3RoZXJzLgorCSAqLworCWZvcmVhY2go bGMsIHBvc3NpYmx5X2RlcGVuZGVudCkKKwl7CisJCVZhcgkJICAgKnR2YXI7CisJCUxpc3QJICAg KmRlcHMgPSBOSUw7CisJCVJhbmdlVGJsRW50cnkgKnJ0ZTsKKworCQl0dmFyID0gbGZpcnN0X25v ZGUoVmFyLCBsYyk7CisJCXJ0ZSA9IHJvb3QtPnNpbXBsZV9ydGVfYXJyYXlbdHZhci0+dmFybm9d OworCisJCWlmIChjaGVja19mdW5jdGlvbmFsX2dyb3VwaW5nKHJ0ZS0+cmVsaWQsIHR2YXItPnZh cm5vLAorCQkJCQkJCQkJICB0dmFyLT52YXJsZXZlbHN1cCwKKwkJCQkJCQkJCSAgdGFyZ2V0LT5l eHBycywgJmRlcHMpKQorCQl7CisJCQkvKgorCQkJICogVGhlIGV4cHJlc3Npb24gaXMgZnVuY3Rp b25hbGx5IGRlcGVuZGVudCBvbiBvdGhlciB0YXJnZXQKKwkJCSAqIGV4cHJlc3Npb25zLCBzbyBp dCBjYW4gYmUgaW5jbHVkZWQgaW4gdGhlIHRhcmdldHMuICBTaW5jZSBpdAorCQkJICogd2lsbCBu b3QgYmUgdXNlZCBhcyBhIGdyb3VwaW5nIGtleSwgYSBzb3J0Z3JvdXByZWYgaXMgbm90CisJCQkg KiBuZWVkZWQgZm9yIGl0LgorCQkJICovCisJCQlhZGRfbmV3X2NvbHVtbl90b19wYXRodGFyZ2V0 KHRhcmdldCwgKEV4cHIgKikgdHZhcik7CisJCQlhZGRfbmV3X2NvbHVtbl90b19wYXRodGFyZ2V0 KGFnZ19pbnB1dCwgKEV4cHIgKikgdHZhcik7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJ ICogV2UgbWF5IGFycml2ZSBoZXJlIHdpdGggYSBncm91cGluZyBleHByZXNzaW9uIHRoYXQgaXMg cHJvdmVuCisJCQkgKiByZWR1bmRhbnQgYnkgRXF1aXZhbGVuY2VDbGFzcyBwcm9jZXNzaW5nLCBz dWNoIGFzICd0MS5hJyBpbiB0aGUKKwkJCSAqIHF1ZXJ5IGJlbG93LgorCQkJICoKKwkJCSAqIHNl bGVjdCBtYXgodDEuYykgZnJvbSB0IHQxLCB0IHQyIHdoZXJlIHQxLmEgPSAxIGdyb3VwIGJ5IHQx LmEsCisJCQkgKiB0MS5iOworCQkJICoKKwkJCSAqIEZvciBub3cgd2UganVzdCBnaXZlIHVwIGlu IHRoaXMgY2FzZS4KKwkJCSAqLworCQkJcmV0dXJuIGZhbHNlOworCQl9CisJfQorCisJcmV0dXJu IHRydWU7Cit9CisKKy8qCisgKiBpc192YXJfaW5fYWdncmVmX29ubHkKKyAqCSAgQ2hlY2sgd2hl dGhlciB0aGUgZ2l2ZW4gVmFyIGFwcGVhcnMgaW4gYWdncmVnYXRlIGV4cHJlc3Npb25zIGFuZCBu b3QKKyAqCSAgZWxzZXdoZXJlIGluIHRoZSB0YXJnZXRsaXN0IG9yIGhhdmluZ1F1YWwuCisgKi8K K3N0YXRpYyBib29sCitpc192YXJfaW5fYWdncmVmX29ubHkoUGxhbm5lckluZm8gKnJvb3QsIFZh ciAqdmFyKQoreworCUxpc3RDZWxsICAgKmxjOworCisJLyoKKwkgKiBTZWFyY2ggdGhlIGxpc3Qg b2YgYWdncmVnYXRlIGV4cHJlc3Npb25zIGZvciB0aGUgVmFyLgorCSAqLworCWZvcmVhY2gobGMs IHJvb3QtPmFnZ19jbGF1c2VfbGlzdCkKKwl7CisJCUFnZ0NsYXVzZUluZm8gKmFjX2luZm8gPSBs Zmlyc3Rfbm9kZShBZ2dDbGF1c2VJbmZvLCBsYyk7CisJCUxpc3QJICAgKnZhcnM7CisKKwkJQXNz ZXJ0KElzQShhY19pbmZvLT5hZ2dyZWYsIEFnZ3JlZikpOworCisJCWlmICghYm1zX2lzX21lbWJl cih2YXItPnZhcm5vLCBhY19pbmZvLT5hZ2dfZXZhbF9hdCkpCisJCQljb250aW51ZTsKKworCQl2 YXJzID0gcHVsbF92YXJfY2xhdXNlKChOb2RlICopIGFjX2luZm8tPmFnZ3JlZiwKKwkJCQkJCQkg ICBQVkNfUkVDVVJTRV9BR0dSRUdBVEVTIHwKKwkJCQkJCQkgICBQVkNfUkVDVVJTRV9XSU5ET1dG VU5DUyB8CisJCQkJCQkJICAgUFZDX1JFQ1VSU0VfUExBQ0VIT0xERVJTKTsKKworCQlpZiAobGlz dF9tZW1iZXIodmFycywgdmFyKSkKKwkJeworCQkJbGlzdF9mcmVlKHZhcnMpOworCQkJYnJlYWs7 CisJCX0KKworCQlsaXN0X2ZyZWUodmFycyk7CisJfQorCisJcmV0dXJuIChsYyAhPSBOVUxMICYm ICFsaXN0X21lbWJlcihyb290LT50bGlzdF92YXJzLCB2YXIpKTsKK30KKworLyoKKyAqIGlzX3Zh cl9uZWVkZWRfYnlfam9pbgorICoJICBDaGVjayBpZiB0aGUgZ2l2ZW4gVmFyIGlzIG5lZWRlZCBi eSBqb2lucyBhYm92ZSB0aGUgY3VycmVudCByZWwuCisgKi8KK3N0YXRpYyBib29sCitpc192YXJf bmVlZGVkX2J5X2pvaW4oUGxhbm5lckluZm8gKnJvb3QsIFZhciAqdmFyLCBSZWxPcHRJbmZvICpy ZWwpCit7CisJUmVsaWRzCQlyZWxpZHM7CisJaW50CQkJYXR0bm87CisJUmVsT3B0SW5mbyAqYmFz ZXJlbDsKKworCS8qCisJICogTm90ZSB0aGF0IHdoZW4gY2hlY2tpbmcgaWYgdGhlIFZhciBpcyBu ZWVkZWQgYnkgam9pbnMgYWJvdmUsIHdlIHdhbnQgdG8KKwkgKiBleGNsdWRlIGNhc2VzIHdoZXJl IHRoZSBWYXIgaXMgb25seSBuZWVkZWQgaW4gdGhlIGZpbmFsIHRhcmdldGxpc3QuICBTbworCSAq IGluY2x1ZGUgInJlbGF0aW9uIDAiIGluIHRoZSBjaGVjay4KKwkgKi8KKwlyZWxpZHMgPSBibXNf Y29weShyZWwtPnJlbGlkcyk7CisJcmVsaWRzID0gYm1zX2FkZF9tZW1iZXIocmVsaWRzLCAwKTsK KworCWJhc2VyZWwgPSBmaW5kX2Jhc2VfcmVsKHJvb3QsIHZhci0+dmFybm8pOworCWF0dG5vID0g dmFyLT52YXJhdHRubyAtIGJhc2VyZWwtPm1pbl9hdHRyOworCisJcmV0dXJuIGJtc19ub25lbXB0 eV9kaWZmZXJlbmNlKGJhc2VyZWwtPmF0dHJfbmVlZGVkW2F0dG5vXSwgcmVsaWRzKTsKK30KKwor LyoKKyAqIGdldF9leHByZXNzaW9uX3NvcnRncm91cHJlZgorICoJICBSZXR1cm4gdGhlIHNvcnRn cm91cHJlZiBvZiB0aGUgZ2l2ZW4gImV4cHIiIGlmIGl0IGlzIGZvdW5kIGFtb25nIHRoZQorICoJ ICBvcmlnaW5hbCBncm91cGluZyBleHByZXNzaW9ucywgb3IgaXMga25vd24gZXF1YWwgdG8gYW55 IG9mIHRoZSBvcmlnaW5hbAorICoJICBncm91cGluZyBleHByZXNzaW9ucyBkdWUgdG8gZXF1aXZh bGVuY2UgcmVsYXRpb25zaGlwcy4gIFJldHVybiAwIGlmIG5vCisgKgkgIG1hdGNoIGlzIGZvdW5k LgorICovCitzdGF0aWMgSW5kZXgKK2dldF9leHByZXNzaW9uX3NvcnRncm91cHJlZihQbGFubmVy SW5mbyAqcm9vdCwgRXhwciAqZXhwcikKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCWZvcmVhY2go bGMsIHJvb3QtPmdyb3VwX2V4cHJfbGlzdCkKKwl7CisJCUdyb3VwaW5nRXhwckluZm8gKmdlX2lu Zm8gPSBsZmlyc3Rfbm9kZShHcm91cGluZ0V4cHJJbmZvLCBsYyk7CisKKwkJQXNzZXJ0KElzQShn ZV9pbmZvLT5leHByLCBWYXIpKTsKKworCQlpZiAoZXF1YWwoZ2VfaW5mby0+ZXhwciwgZXhwcikg fHwKKwkJCWV4cHJzX2tub3duX2VxdWFsKHJvb3QsIChOb2RlICopIGV4cHIsIChOb2RlICopIGdl X2luZm8tPmV4cHIsCisJCQkJCQkJICBnZV9pbmZvLT5idHJlZV9vcGZhbWlseSkpCisJCXsKKwkJ CUFzc2VydChnZV9pbmZvLT5zb3J0Z3JvdXByZWYgPiAwKTsKKworCQkJcmV0dXJuIGdlX2luZm8t PnNvcnRncm91cHJlZjsKKwkJfQorCX0KKworCS8qIG5vIG1hdGNoIGlzIGZvdW5kICovCisJcmV0 dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCmluZGV4IGYxMzcxMjkyMDlm Li5kM2JmY2FmMDc4NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFi bGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTk2NSw2 ICs5NjUsMTYgQEAgc3RydWN0IGNvbmZpZ19ib29sIENvbmZpZ3VyZU5hbWVzQm9vbFtdID0KIAkJ TlVMTCwgTlVMTCwgTlVMTAogCX0sCiAKKwl7CisJCXsiZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZSIs IFBHQ19VU0VSU0VULCBRVUVSWV9UVU5JTkdfTUVUSE9ELAorCQkJZ2V0dGV4dF9ub29wKCJFbmFi bGVzIGVhZ2VyIGFnZ3JlZ2F0aW9uLiIpLAorCQkJTlVMTCwKKwkJCUdVQ19FWFBMQUlOCisJCX0s CisJCSZlbmFibGVfZWFnZXJfYWdncmVnYXRlLAorCQl0cnVlLAorCQlOVUxMLCBOVUxMLCBOVUxM CisJfSwKIAl7CiAJCXsiZW5hYmxlX3BhcmFsbGVsX2FwcGVuZCIsIFBHQ19VU0VSU0VULCBRVUVS WV9UVU5JTkdfTUVUSE9ELAogCQkJZ2V0dGV4dF9ub29wKCJFbmFibGVzIHRoZSBwbGFubmVyJ3Mg dXNlIG9mIHBhcmFsbGVsIGFwcGVuZCBwbGFucy4iKSwKQEAgLTQwNTAsNiArNDA2MCwxNyBAQCBz dHJ1Y3QgY29uZmlnX3JlYWwgQ29uZmlndXJlTmFtZXNSZWFsW10gPQogCQlOVUxMLCBOVUxMLCBO VUxMCiAJfSwKIAorCXsKKwkJeyJtaW5fZWFnZXJfYWdnX2dyb3VwX3NpemUiLCBQR0NfVVNFUlNF VCwgUVVFUllfVFVOSU5HX0NPU1QsCisJCQlnZXR0ZXh0X25vb3AoIlNldHMgdGhlIG1pbmltdW0g YXZlcmFnZSBncm91cCBzaXplIHJlcXVpcmVkIHRvIGNvbnNpZGVyIGFwcGx5aW5nIGVhZ2VyIGFn Z3JlZ2F0aW9uLiIpLAorCQkJTlVMTCwKKwkJCUdVQ19FWFBMQUlOCisJCX0sCisJCSZtaW5fZWFn ZXJfYWdnX2dyb3VwX3NpemUsCisJCTguMCwgMC4wLCBEQkxfTUFYLAorCQlOVUxMLCBOVUxMLCBO VUxMCisJfSwKKwogCXsKIAkJeyJjdXJzb3JfdHVwbGVfZnJhY3Rpb24iLCBQR0NfVVNFUlNFVCwg UVVFUllfVFVOSU5HX09USEVSLAogCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRoZSBwbGFubmVyJ3Mg ZXN0aW1hdGUgb2YgdGhlIGZyYWN0aW9uIG9mICIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv cG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCBhOWQ4MjkzNDc0YS4uZTNjZGZlMTE5OTIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQor KysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTQy OCw2ICs0MjgsNyBAQAogI2VuYWJsZV9ncm91cF9ieV9yZW9yZGVyaW5nID0gb24KICNlbmFibGVf ZGlzdGluY3RfcmVvcmRlcmluZyA9IG9uCiAjZW5hYmxlX3NlbGZfam9pbl9lbGltaW5hdGlvbiA9 IG9uCisjZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZSA9IG9uCiAKICMgLSBQbGFubmVyIENvc3QgQ29u c3RhbnRzIC0KIApAQCAtNDQxLDYgKzQ0Miw3IEBACiAjbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5f c2l6ZSA9IDhNQgogI21pbl9wYXJhbGxlbF9pbmRleF9zY2FuX3NpemUgPSA1MTJrQgogI2VmZmVj dGl2ZV9jYWNoZV9zaXplID0gNEdCCisjbWluX2VhZ2VyX2FnZ19ncm91cF9zaXplID0gOC4wCiAK ICNqaXRfYWJvdmVfY29zdCA9IDEwMDAwMAkJIyBwZXJmb3JtIEpJVCBjb21waWxhdGlvbiBpZiBh dmFpbGFibGUKIAkJCQkJIyBhbmQgcXVlcnkgbW9yZSBleHBlbnNpdmUgdGhhbiB0aGlzOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rl cy9wYXRobm9kZXMuaAppbmRleCA0YTkwM2QxZWMxOC4uYWQyMTEyMDczNDMgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3Bh dGhub2Rlcy5oCkBAIC0zOTcsNiArMzk3LDE1IEBAIHN0cnVjdCBQbGFubmVySW5mbwogCS8qIGxp c3Qgb2YgUGxhY2VIb2xkZXJJbmZvcyAqLwogCUxpc3QJICAgKnBsYWNlaG9sZGVyX2xpc3Q7CiAK KwkvKiBsaXN0IG9mIEFnZ0NsYXVzZUluZm9zICovCisJTGlzdAkgICAqYWdnX2NsYXVzZV9saXN0 OworCisJLyogbGlzdCBvZiBHcm91cEV4cHJJbmZvcyAqLworCUxpc3QJICAgKmdyb3VwX2V4cHJf bGlzdDsKKworCS8qIGxpc3Qgb2YgcGxhaW4gVmFycyBjb250YWluZWQgaW4gdGFyZ2V0bGlzdCBh bmQgaGF2aW5nUXVhbCAqLworCUxpc3QJICAgKnRsaXN0X3ZhcnM7CisKIAkvKiBhcnJheSBvZiBQ bGFjZUhvbGRlckluZm9zIGluZGV4ZWQgYnkgcGhpZCAqLwogCXN0cnVjdCBQbGFjZUhvbGRlcklu Zm8gKipwbGFjZWhvbGRlcl9hcnJheSBwZ19ub2RlX2F0dHIocmVhZF93cml0ZV9pZ25vcmUsIGFy cmF5X3NpemUocGxhY2Vob2xkZXJfYXJyYXlfc2l6ZSkpOwogCS8qIGFsbG9jYXRlZCBzaXplIG9m IGFycmF5ICovCkBAIC0xMDQ2LDYgKzEwNTUsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVsT3B0SW5m bwogCS8qIGNvbnNpZGVyIHBhcnRpdGlvbndpc2Ugam9pbiBwYXRocz8gKGlmIHBhcnRpdGlvbmVk IHJlbCkgKi8KIAlib29sCQljb25zaWRlcl9wYXJ0aXRpb253aXNlX2pvaW47CiAKKwkvKgorCSAq IHVzZWQgYnkgZWFnZXIgYWdncmVnYXRpb246CisJICovCisJLyogaW5mb3JtYXRpb24gbmVlZGVk IHRvIGNyZWF0ZSBncm91cGVkIHBhdGhzICovCisJc3RydWN0IFJlbEFnZ0luZm8gKmFnZ19pbmZv OworCS8qIHRoZSBwYXJ0aWFsbHktYWdncmVnYXRlZCB2ZXJzaW9uIG9mIHRoZSByZWxhdGlvbiAq LworCXN0cnVjdCBSZWxPcHRJbmZvICpncm91cGVkX3JlbDsKKwogCS8qCiAJICogaW5oZXJpdGFu Y2UgbGlua3MsIGlmIHRoaXMgaXMgYW4gb3RoZXJyZWwgKG90aGVyd2lzZSBOVUxMKToKIAkgKi8K QEAgLTExMzAsNiArMTE0Nyw3NSBAQCB0eXBlZGVmIHN0cnVjdCBSZWxPcHRJbmZvCiAJKChub21p bmFsX2pvaW50eXBlKSA9PSBKT0lOX0lOTkVSICYmIChzamluZm8pLT5qb2ludHlwZSA9PSBKT0lO X1NFTUkgJiYgXAogCSBibXNfZXF1YWwoKHNqaW5mbyktPnN5bl9yaWdodGhhbmQsIChyZWwpLT5y ZWxpZHMpKQogCisvKgorICogSXMgdGhlIGdpdmVuIHJlbGF0aW9uIGEgZ3JvdXBlZCByZWxhdGlv bj8KKyAqLworI2RlZmluZSBJU19HUk9VUEVEX1JFTChyZWwpIFwKKwkoKHJlbCktPmFnZ19pbmZv ICE9IE5VTEwpCisKKy8qCisgKiBSZWxBZ2dJbmZvCisgKgkJSW5mb3JtYXRpb24gbmVlZGVkIHRv IGNyZWF0ZSBncm91cGVkIHBhdGhzIGZvciBiYXNlIGFuZCBqb2luIHJlbHMuCisgKgorICogInJl bGlkcyIgaXMgdGhlIHNldCBvZiByZWxhdGlvbiBpZGVudGlmaWVycyAoUlQgaW5kZXhlcykuCisg KgorICogInRhcmdldCIgaXMgdGhlIG91dHB1dCB0bGlzdCBmb3IgdGhlIGdyb3VwZWQgcGF0aHMu CisgKgorICogImFnZ19pbnB1dCIgaXMgdGhlIG91dHB1dCB0bGlzdCBmb3IgdGhlIHBhdGhzIHRo YXQgcHJvdmlkZSBpbnB1dCB0byB0aGUKKyAqIGdyb3VwZWQgcGF0aHMuICBPbmUgZGlmZmVyZW5j ZSBmcm9tIHRoZSByZWx0YXJnZXQgb2YgdGhlIG5vbi1ncm91cGVkCisgKiByZWxhdGlvbiBpcyB0 aGF0IGFnZ19pbnB1dCBoYXMgaXRzIHNvcnRncm91cHJlZnNbXSBpbml0aWFsaXplZC4KKyAqCisg KiAiZ3JvdXBlZF9yb3dzIiBpcyB0aGUgZXN0aW1hdGVkIG51bWJlciBvZiByZXN1bHQgdHVwbGVz IG9mIHRoZSBncm91cGVkCisgKiByZWxhdGlvbi4KKyAqCisgKiAiZ3JvdXBfY2xhdXNlcyIsICJn cm91cF9leHBycyIgYW5kICJncm91cF9wYXRoa2V5cyIgYXJlIGxpc3RzIG9mCisgKiBTb3J0R3Jv dXBDbGF1c2VzLCB0aGUgY29ycmVzcG9uZGluZyBncm91cGluZyBleHByZXNzaW9ucyBhbmQgUGF0 aEtleXMKKyAqIHJlc3BlY3RpdmVseS4KKyAqCisgKiAiYXBwbHlfYXQiIHRyYWNrcyB0aGUgbG93 ZXN0IGpvaW4gbGV2ZWwgYXQgd2hpY2ggcGFydGlhbCBhZ2dyZWdhdGlvbiBpcworICogYXBwbGll ZC4KKyAqCisgKiAiYWdnX3VzZWZ1bCIgaXMgYSBmbGFnIHRvIGluZGljYXRlIHdoZXRoZXIgdGhl IGdyb3VwZWQgcGF0aHMgYXJlIGNvbnNpZGVyZWQKKyAqIHVzZWZ1bC4gIEl0IGlzIHNldCB0cnVl IGlmIHRoZSBhdmVyYWdlIHBhcnRpYWwgZ3JvdXAgc2l6ZSBpcyBubyBsZXNzIHRoYW4KKyAqIG1p bl9lYWdlcl9hZ2dfZ3JvdXBfc2l6ZSwgc3VnZ2VzdGluZyBhIHNpZ25pZmljYW50IHJvdyBjb3Vu dCByZWR1Y3Rpb24uCisgKi8KK3R5cGVkZWYgc3RydWN0IFJlbEFnZ0luZm8KK3sKKwlwZ19ub2Rl X2F0dHIobm9fY29weV9lcXVhbCwgbm9fcmVhZCwgbm9fcXVlcnlfanVtYmxlKQorCisJTm9kZVRh ZwkJdHlwZTsKKworCS8qIHNldCBvZiBiYXNlICsgT0ogcmVsaWRzIChyYW5nZXRhYmxlIGluZGV4 ZXMpICovCisJUmVsaWRzCQlyZWxpZHM7CisKKwkvKgorCSAqIGRlZmF1bHQgcmVzdWx0IHRhcmdl dGxpc3QgZm9yIFBhdGhzIHNjYW5uaW5nIHRoaXMgZ3JvdXBlZCByZWxhdGlvbjsKKwkgKiBsaXN0 IG9mIFZhcnMvRXhwcnMsIGNvc3QsIHdpZHRoCisJICovCisJc3RydWN0IFBhdGhUYXJnZXQgKnRh cmdldDsKKworCS8qCisJICogdGhlIHRhcmdldGxpc3QgZm9yIFBhdGhzIHRoYXQgcHJvdmlkZSBp bnB1dCB0byB0aGUgZ3JvdXBlZCBwYXRocworCSAqLworCXN0cnVjdCBQYXRoVGFyZ2V0ICphZ2df aW5wdXQ7CisKKwkvKiBlc3RpbWF0ZWQgbnVtYmVyIG9mIHJlc3VsdCB0dXBsZXMgKi8KKwlDYXJk aW5hbGl0eSBncm91cGVkX3Jvd3M7CisKKwkvKiBhIGxpc3Qgb2YgU29ydEdyb3VwQ2xhdXNlcyAq LworCUxpc3QJICAgKmdyb3VwX2NsYXVzZXM7CisJLyogYSBsaXN0IG9mIGdyb3VwaW5nIGV4cHJl c3Npb25zICovCisJTGlzdAkgICAqZ3JvdXBfZXhwcnM7CisJLyogYSBsaXN0IG9mIFBhdGhLZXlz ICovCisJTGlzdAkgICAqZ3JvdXBfcGF0aGtleXM7CisKKwkvKiBsb3dlc3QgbGV2ZWwgcGFydGlh bCBhZ2dyZWdhdGlvbiBpcyBhcHBsaWVkIGF0ICovCisJUmVsaWRzCQlhcHBseV9hdDsKKworCS8q IHRoZSBncm91cGVkIHBhdGhzIGFyZSBjb25zaWRlcmVkIHVzZWZ1bD8gKi8KKwlib29sCQlhZ2df dXNlZnVsOworfSBSZWxBZ2dJbmZvOworCiAvKgogICogSW5kZXhPcHRJbmZvCiAgKgkJUGVyLWlu ZGV4IGluZm9ybWF0aW9uIGZvciBwbGFubmluZy9vcHRpbWl6YXRpb24KQEAgLTMyODMsNiArMzM2 OSw1MCBAQCB0eXBlZGVmIHN0cnVjdCBNaW5NYXhBZ2dJbmZvCiAJUGFyYW0JICAgKnBhcmFtOwog fSBNaW5NYXhBZ2dJbmZvOwogCisvKgorICogRm9yIGVhY2ggZGlzdGluY3QgQWdncmVmIG5vZGUg dGhhdCBhcHBlYXJzIGluIHRoZSB0YXJnZXRsaXN0IGFuZCBIQVZJTkcKKyAqIGNsYXVzZXMsIHdl IHN0b3JlIGFuIEFnZ0NsYXVzZUluZm8gbm9kZSBpbiB0aGUgUGxhbm5lckluZm8gbm9kZSdzCisg KiBhZ2dfY2xhdXNlX2xpc3QuICBFYWNoIEFnZ0NsYXVzZUluZm8gcmVjb3JkcyB0aGUgc2V0IG9m IHJlbGF0aW9ucyByZWZlcmVuY2VkCisgKiBieSB0aGUgYWdncmVnYXRlIGV4cHJlc3Npb24uICBU aGlzIGluZm9ybWF0aW9uIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGhvdyBmYXIKKyAqIHRoZSBhZ2dy ZWdhdGUgY2FuIGJlIHNhZmVseSBwdXNoZWQgZG93biBpbiB0aGUgam9pbiB0cmVlLgorICovCit0 eXBlZGVmIHN0cnVjdCBBZ2dDbGF1c2VJbmZvCit7CisJcGdfbm9kZV9hdHRyKG5vX3JlYWQsIG5v X3F1ZXJ5X2p1bWJsZSkKKworCU5vZGVUYWcJCXR5cGU7CisKKwkvKiB0aGUgQWdncmVmIGV4cHIg Ki8KKwlBZ2dyZWYJICAgKmFnZ3JlZjsKKworCS8qIGxvd2VzdCBsZXZlbCB3ZSBjYW4gZXZhbHVh dGUgdGhpcyBhZ2dyZWdhdGUgYXQgKi8KKwlSZWxpZHMJCWFnZ19ldmFsX2F0OworfSBBZ2dDbGF1 c2VJbmZvOworCisvKgorICogRm9yIGVhY2ggZ3JvdXBpbmcgZXhwcmVzc2lvbiB0aGF0IGFwcGVh cnMgaW4gZ3JvdXBpbmcgY2xhdXNlcywgd2Ugc3RvcmUgYQorICogR3JvdXBpbmdFeHBySW5mbyBu b2RlIGluIHRoZSBQbGFubmVySW5mbyBub2RlJ3MgZ3JvdXBfZXhwcl9saXN0LiAgRWFjaAorICog R3JvdXBpbmdFeHBySW5mbyByZWNvcmRzIHRoZSBleHByZXNzaW9uIGJlaW5nIGdyb3VwZWQgb24s IGl0cyBzb3J0Z3JvdXByZWYsCisgKiBhbmQgdGhlIGJ0cmVlIG9wZmFtaWx5IHVzZWQgZm9yIGVx dWFsaXR5IGNvbXBhcmlzb24uICBUaGlzIGluZm9ybWF0aW9uIGlzCisgKiBuZWNlc3NhcnkgdG8g cmVwcm9kdWNlIGNvcnJlY3QgZ3JvdXBpbmcgc2VtYW50aWNzIGF0IGRpZmZlcmVudCBsZXZlbHMg b2YgdGhlCisgKiBqb2luIHRyZWUuCisgKi8KK3R5cGVkZWYgc3RydWN0IEdyb3VwaW5nRXhwcklu Zm8KK3sKKwlwZ19ub2RlX2F0dHIobm9fcmVhZCwgbm9fcXVlcnlfanVtYmxlKQorCisJTm9kZVRh ZwkJdHlwZTsKKworCS8qIHRoZSByZXByZXNlbnRlZCBleHByZXNzaW9uICovCisJRXhwcgkgICAq ZXhwcjsKKworCS8qIHRoZSB0bGVTb3J0R3JvdXBSZWYgb2YgdGhlIGNvcnJlc3BvbmRpbmcgU29y dEdyb3VwQ2xhdXNlICovCisJSW5kZXgJCXNvcnRncm91cHJlZjsKKworCS8qIGJ0cmVlIG9wZmFt aWx5IGRlZmluaW5nIHRoZSBvcmRlcmluZyAqLworCU9pZAkJCWJ0cmVlX29wZmFtaWx5OworfSBH cm91cGluZ0V4cHJJbmZvOworCiAvKgogICogQXQgcnVudGltZSwgUEFSQU1fRVhFQyBzbG90cyBh cmUgdXNlZCB0byBwYXNzIHZhbHVlcyBhcm91bmQgZnJvbSBvbmUgcGxhbgogICogbm9kZSB0byBh bm90aGVyLiAgVGhleSBjYW4gYmUgdXNlZCB0byBwYXNzIHZhbHVlcyBkb3duIGludG8gc3VicXVl cmllcyAoZm9yCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaCBi L3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oCmluZGV4IDc2M2NkMjViYjNjLi41Yjlj MWRhZjE0YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmgKKysr IGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmgKQEAgLTMxMiw2ICszMTIsMTAgQEAg ZXh0ZXJuIHZvaWQgc2V0dXBfc2ltcGxlX3JlbF9hcnJheXMoUGxhbm5lckluZm8gKnJvb3QpOwog ZXh0ZXJuIHZvaWQgZXhwYW5kX3BsYW5uZXJfYXJyYXlzKFBsYW5uZXJJbmZvICpyb290LCBpbnQg YWRkX3NpemUpOwogZXh0ZXJuIFJlbE9wdEluZm8gKmJ1aWxkX3NpbXBsZV9yZWwoUGxhbm5lcklu Zm8gKnJvb3QsIGludCByZWxpZCwKIAkJCQkJCQkJCVJlbE9wdEluZm8gKnBhcmVudCk7CitleHRl cm4gUmVsT3B0SW5mbyAqYnVpbGRfc2ltcGxlX2dyb3VwZWRfcmVsKFBsYW5uZXJJbmZvICpyb290 LAorCQkJCQkJCQkJCQlSZWxPcHRJbmZvICpyZWxfcGxhaW4pOworZXh0ZXJuIFJlbE9wdEluZm8g KmJ1aWxkX2dyb3VwZWRfcmVsKFBsYW5uZXJJbmZvICpyb290LAorCQkJCQkJCQkJIFJlbE9wdElu Zm8gKnJlbF9wbGFpbik7CiBleHRlcm4gUmVsT3B0SW5mbyAqZmluZF9iYXNlX3JlbChQbGFubmVy SW5mbyAqcm9vdCwgaW50IHJlbGlkKTsKIGV4dGVybiBSZWxPcHRJbmZvICpmaW5kX2Jhc2VfcmVs X25vZXJyKFBsYW5uZXJJbmZvICpyb290LCBpbnQgcmVsaWQpOwogZXh0ZXJuIFJlbE9wdEluZm8g KmZpbmRfYmFzZV9yZWxfaWdub3JlX2pvaW4oUGxhbm5lckluZm8gKnJvb3QsIGludCByZWxpZCk7 CkBAIC0zNTEsNCArMzU1LDUgQEAgZXh0ZXJuIFJlbE9wdEluZm8gKmJ1aWxkX2NoaWxkX2pvaW5f cmVsKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJCVNwZWNpYWxKb2luSW5mbyAqc2ppbmZv LAogCQkJCQkJCQkJCWludCBuYXBwaW5mb3MsIEFwcGVuZFJlbEluZm8gKiphcHBpbmZvcyk7CiAK K2V4dGVybiBSZWxBZ2dJbmZvICpjcmVhdGVfcmVsX2FnZ19pbmZvKFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICpyZWwpOwogI2VuZGlmCQkJCQkJCS8qIFBBVEhOT0RFX0ggKi8KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRocy5oIGIvc3JjL2luY2x1ZGUvb3B0aW1p emVyL3BhdGhzLmgKaW5kZXggY2JhZGU3N2I3MTcuLjhkMDNkNjYyYTA0IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIv cGF0aHMuaApAQCAtMjEsNyArMjEsOSBAQAogICogYWxscGF0aHMuYwogICovCiBleHRlcm4gUEdE TExJTVBPUlQgYm9vbCBlbmFibGVfZ2VxbzsKK2V4dGVybiBQR0RMTElNUE9SVCBib29sIGVuYWJs ZV9lYWdlcl9hZ2dyZWdhdGU7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IGdlcW9fdGhyZXNob2xk OworZXh0ZXJuIFBHRExMSU1QT1JUIGRvdWJsZSBtaW5fZWFnZXJfYWdnX2dyb3VwX3NpemU7CiBl eHRlcm4gUEdETExJTVBPUlQgaW50IG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemU7CiBleHRl cm4gUEdETExJTVBPUlQgaW50IG1pbl9wYXJhbGxlbF9pbmRleF9zY2FuX3NpemU7CiBleHRlcm4g UEdETExJTVBPUlQgYm9vbCBlbmFibGVfZ3JvdXBfYnlfcmVvcmRlcmluZzsKQEAgLTU3LDYgKzU5 LDEwIEBAIGV4dGVybiB2b2lkIGdlbmVyYXRlX2dhdGhlcl9wYXRocyhQbGFubmVySW5mbyAqcm9v dCwgUmVsT3B0SW5mbyAqcmVsLAogCQkJCQkJCQkgIGJvb2wgb3ZlcnJpZGVfcm93cyk7CiBleHRl cm4gdm9pZCBnZW5lcmF0ZV91c2VmdWxfZ2F0aGVyX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBS ZWxPcHRJbmZvICpyZWwsCiAJCQkJCQkJCQkJIGJvb2wgb3ZlcnJpZGVfcm93cyk7CitleHRlcm4g dm9pZCBnZW5lcmF0ZV9ncm91cGVkX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LAorCQkJCQkJCQkg ICBSZWxPcHRJbmZvICpyZWxfZ3JvdXBlZCwKKwkJCQkJCQkJICAgUmVsT3B0SW5mbyAqcmVsX3Bs YWluLAorCQkJCQkJCQkgICBSZWxBZ2dJbmZvICphZ2dfaW5mbyk7CiBleHRlcm4gaW50CWNvbXB1 dGVfcGFyYWxsZWxfd29ya2VyKFJlbE9wdEluZm8gKnJlbCwgZG91YmxlIGhlYXBfcGFnZXMsCiAJ CQkJCQkJCQlkb3VibGUgaW5kZXhfcGFnZXMsIGludCBtYXhfd29ya2Vycyk7CiBleHRlcm4gdm9p ZCBjcmVhdGVfcGFydGlhbF9iaXRtYXBfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdElu Zm8gKnJlbCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wbGFubWFpbi5oIGIv c3JjL2luY2x1ZGUvb3B0aW1pemVyL3BsYW5tYWluLmgKaW5kZXggOWQzZGViY2FiMjguLjA5YjQ4 YjI2ZjhmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGxhbm1haW4uaAorKysg Yi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGxhbm1haW4uaApAQCAtNzYsNiArNzYsNyBAQCBleHRl cm4gdm9pZCBhZGRfdmFyc190b190YXJnZXRsaXN0KFBsYW5uZXJJbmZvICpyb290LCBMaXN0ICp2 YXJzLAogZXh0ZXJuIHZvaWQgYWRkX3ZhcnNfdG9fYXR0cl9uZWVkZWQoUGxhbm5lckluZm8gKnJv b3QsIExpc3QgKnZhcnMsCiAJCQkJCQkJCQlSZWxpZHMgd2hlcmVfbmVlZGVkKTsKIGV4dGVybiB2 b2lkIHJlbW92ZV91c2VsZXNzX2dyb3VwYnlfY29sdW1ucyhQbGFubmVySW5mbyAqcm9vdCk7Citl eHRlcm4gdm9pZCBzZXR1cF9lYWdlcl9hZ2dyZWdhdGlvbihQbGFubmVySW5mbyAqcm9vdCk7CiBl eHRlcm4gdm9pZCBmaW5kX2xhdGVyYWxfcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCk7CiBl eHRlcm4gdm9pZCByZWJ1aWxkX2xhdGVyYWxfYXR0cl9uZWVkZWQoUGxhbm5lckluZm8gKnJvb3Qp OwogZXh0ZXJuIHZvaWQgY3JlYXRlX2xhdGVyYWxfam9pbl9pbmZvKFBsYW5uZXJJbmZvICpyb290 KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRm OC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0Zjgub3V0Cmlu ZGV4IDY5ODA1ZDRiOWVjLi5lZjc5ZDZmMWRlZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2NvbGxhdGUuaWN1LnV0Zjgub3V0CkBAIC0yNDM3LDExICsyNDM3LDExIEBAIFNFTEVD VCBjIGNvbGxhdGUgIkMiLCBjb3VudChjKSBGUk9NIHBhZ2dfdGFiMyBHUk9VUCBCWSBjIGNvbGxh dGUgIkMiIE9SREVSIEJZIDE7CiBTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2Vfam9pbiBUTyBmYWxz ZTsKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCB0MS5jLCBjb3VudCh0Mi5jKSBGUk9NIHBh Z2dfdGFiMyB0MSBKT0lOIHBhZ2dfdGFiMyB0MiBPTiB0MS5jID0gdDIuYyBHUk9VUCBCWSAxIE9S REVSIEJZIHQxLmMgQ09MTEFURSAiQyI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgU29ydAogICAgU29ydCBLZXk6IHQxLmMgQ09MTEFURSAiQyIKLSAgIC0+ICBIYXNoQWdn cmVnYXRlCisgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQogICAgICAgICAgR3JvdXAgS2V5 OiB0MS5jCiAgICAgICAgICAtPiAgSGFzaCBKb2luCiAgICAgICAgICAgICAgICBIYXNoIENvbmQ6 ICh0MS5jID0gdDIuYykKQEAgLTI0NDksMTAgKzI0NDksMTIgQEAgU0VMRUNUIHQxLmMsIGNvdW50 KHQyLmMpIEZST00gcGFnZ190YWIzIHQxIEpPSU4gcGFnZ190YWIzIHQyIE9OIHQxLmMgPSB0Mi5j IEdST1UKICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYjNfcDIg dDFfMQogICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBhZ2dfdGFiM19wMSB0 MV8yCiAgICAgICAgICAgICAgICAtPiAgSGFzaAotICAgICAgICAgICAgICAgICAgICAgLT4gIEFw cGVuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBhZ2dfdGFi M19wMiB0Ml8xCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFn Z190YWIzX3AxIHQyXzIKLSgxMyByb3dzKQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRp YWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0 Mi5jCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgQXBwZW5kCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3AyIHQyXzEKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYjNf cDEgdDJfMgorKDE1IHJvd3MpCiAKIFNFTEVDVCB0MS5jLCBjb3VudCh0Mi5jKSBGUk9NIHBhZ2df dGFiMyB0MSBKT0lOIHBhZ2dfdGFiMyB0MiBPTiB0MS5jID0gdDIuYyBHUk9VUCBCWSAxIE9SREVS IEJZIHQxLmMgQ09MTEFURSAiQyI7CiAgYyB8IGNvdW50IApAQCAtMjQ2NCwxMSArMjQ2NiwxMSBA QCBTRUxFQ1QgdDEuYywgY291bnQodDIuYykgRlJPTSBwYWdnX3RhYjMgdDEgSk9JTiBwYWdnX3Rh YjMgdDIgT04gdDEuYyA9IHQyLmMgR1JPVQogU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2pvaW4g VE8gdHJ1ZTsKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCB0MS5jLCBjb3VudCh0Mi5jKSBG Uk9NIHBhZ2dfdGFiMyB0MSBKT0lOIHBhZ2dfdGFiMyB0MiBPTiB0MS5jID0gdDIuYyBHUk9VUCBC WSAxIE9SREVSIEJZIHQxLmMgQ09MTEFURSAiQyI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAgU29ydAogICAgU29ydCBLZXk6IHQxLmMgQ09MTEFURSAiQyIKLSAgIC0+ICBI YXNoQWdncmVnYXRlCisgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQogICAgICAgICAgR3Jv dXAgS2V5OiB0MS5jCiAgICAgICAgICAtPiAgSGFzaCBKb2luCiAgICAgICAgICAgICAgICBIYXNo IENvbmQ6ICh0MS5jID0gdDIuYykKQEAgLTI0NzYsMTAgKzI0NzgsMTIgQEAgU0VMRUNUIHQxLmMs IGNvdW50KHQyLmMpIEZST00gcGFnZ190YWIzIHQxIEpPSU4gcGFnZ190YWIzIHQyIE9OIHQxLmMg PSB0Mi5jIEdST1UKICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3Rh YjNfcDIgdDFfMQogICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBhZ2dfdGFi M19wMSB0MV8yCiAgICAgICAgICAgICAgICAtPiAgSGFzaAotICAgICAgICAgICAgICAgICAgICAg LT4gIEFwcGVuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBh Z2dfdGFiM19wMiB0Ml8xCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gcGFnZ190YWIzX3AxIHQyXzIKLSgxMyByb3dzKQorICAgICAgICAgICAgICAgICAgICAgLT4g IFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAg S2V5OiB0Mi5jCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgQXBwZW5kCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3AyIHQy XzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdn X3RhYjNfcDEgdDJfMgorKDE1IHJvd3MpCiAKIFNFTEVDVCB0MS5jLCBjb3VudCh0Mi5jKSBGUk9N IHBhZ2dfdGFiMyB0MSBKT0lOIHBhZ2dfdGFiMyB0MiBPTiB0MS5jID0gdDIuYyBHUk9VUCBCWSAx IE9SREVSIEJZIHQxLmMgQ09MTEFURSAiQyI7CiAgYyB8IGNvdW50IApkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9lYWdlcl9hZ2dyZWdhdGUub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9lYWdlcl9hZ2dyZWdhdGUub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi5mMDJmZjBiMzBhMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvZWFnZXJfYWdncmVnYXRlLm91dApAQCAtMCwwICsxLDEzMzQgQEAK Ky0tCistLSBFQUdFUiBBR0dSRUdBVElPTgorLS0gVGVzdCB3ZSBjYW4gcHVzaCBhZ2dyZWdhdGlv biBkb3duIGJlbG93IGpvaW4KKy0tCistLSBFbmFibGUgZWFnZXIgYWdncmVnYXRpb24sIHdoaWNo IGJ5IGRlZmF1bHQgaXMgZGlzYWJsZWQuCitTRVQgZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZSBUTyBv bjsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdDEgKGEgaW50LCBiIGludCwgYyBkb3VibGUgcHJl Y2lzaW9uKTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdDIgKGEgaW50LCBiIGludCwgYyBkb3Vi bGUgcHJlY2lzaW9uKTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdDMgKGEgaW50LCBiIGludCwg YyBkb3VibGUgcHJlY2lzaW9uKTsKK0lOU0VSVCBJTlRPIGVhZ2VyX2FnZ190MSBTRUxFQ1QgaSwg aSwgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKWk7CitJTlNFUlQgSU5UTyBlYWdlcl9h Z2dfdDIgU0VMRUNUIGksIGklMTAsIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMClpOwor SU5TRVJUIElOVE8gZWFnZXJfYWdnX3QzIFNFTEVDVCBpJTEwLCBpJTEwLCBpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDEwMDApaTsKK0FOQUxZWkUgZWFnZXJfYWdnX3QxOworQU5BTFlaRSBlYWdl cl9hZ2dfdDI7CitBTkFMWVpFIGVhZ2VyX2FnZ190MzsKKy0tCistLSBUZXN0IGVhZ2VyIGFnZ3Jl Z2F0aW9uIG92ZXIgYmFzZSByZWwKKy0tCistLSBQZXJmb3JtIHNjYW4gb2YgYSB0YWJsZSwgYWdn cmVnYXRlIHRoZSByZXN1bHQsIGpvaW4gaXQgdG8gdGhlIG90aGVyIHRhYmxlCistLSBhbmQgZmlu YWxpemUgdGhlIGFnZ3JlZ2F0aW9uLgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VM RUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190 MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEdyb3VwQWdncmVnYXRlCisgICBPdXRwdXQ6IHQxLmEs IGF2Zyh0Mi5jKQorICAgR3JvdXAgS2V5OiB0MS5hCisgICAtPiAgU29ydAorICAgICAgICAgT3V0 cHV0OiB0MS5hLCAoUEFSVElBTCBhdmcodDIuYykpCisgICAgICAgICBTb3J0IEtleTogdDEuYQor ICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFS VElBTCBhdmcodDIuYykpCisgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MS5iID0gdDIuYikK KyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QxIHQxCisg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIHQxLmIsIHQxLmMKKyAgICAgICAgICAg ICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIChQQVJUSUFM IGF2Zyh0Mi5jKSkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdh dGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgUEFSVElBTCBhdmco dDIuYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDIuYgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDIg dDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYSwgdDIuYiwg dDIuYworKDE4IHJvd3MpCisKK1NFTEVDVCB0MS5hLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2df dDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBP UkRFUiBCWSB0MS5hOworIGEgfCBhdmcgCistLS0rLS0tLS0KKyAxIHwgNDk2CisgMiB8IDQ5Nwor IDMgfCA0OTgKKyA0IHwgNDk5CisgNSB8IDUwMAorIDYgfCA1MDEKKyA3IHwgNTAyCisgOCB8IDUw MworIDkgfCA1MDQKKyg5IHJvd3MpCisKKy0tIFByb2R1Y2UgcmVzdWx0cyB3aXRoIHNvcnRpbmcg YWdncmVnYXRpb24KK1NFVCBlbmFibGVfaGFzaGFnZyBUTyBvZmY7CitFWFBMQUlOIChWRVJCT1NF LCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQx IEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEgT1JERVIg QlkgdDEuYTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgR3Jv dXBBZ2dyZWdhdGUKKyAgIE91dHB1dDogdDEuYSwgYXZnKHQyLmMpCisgICBHcm91cCBLZXk6IHQx LmEKKyAgIC0+ICBTb3J0CisgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2Zyh0Mi5j KSkKKyAgICAgICAgIFNvcnQgS2V5OiB0MS5hCisgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAg ICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2Zyh0Mi5jKSkKKyAgICAgICAgICAg ICAgIEhhc2ggQ29uZDogKHQxLmIgPSB0Mi5iKQorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDEgdDEKKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDEuYSwgdDEuYiwgdDEuYworICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDIuYiwgKFBBUlRJQUwgYXZnKHQyLmMpKQorICAgICAgICAgICAgICAg ICAgICAgLT4gIFBhcnRpYWwgR3JvdXBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDIuYiwgUEFSVElBTCBhdmcodDIuYykKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdyb3VwIEtleTogdDIuYgorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNv cnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYywgdDIuYgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQyLmIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdn X3QyIHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQy LmMsIHQyLmIKKygyMSByb3dzKQorCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJf YWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQx LmEgT1JERVIgQlkgdDEuYTsKKyBhIHwgYXZnIAorLS0tKy0tLS0tCisgMSB8IDQ5NgorIDIgfCA0 OTcKKyAzIHwgNDk4CisgNCB8IDQ5OQorIDUgfCA1MDAKKyA2IHwgNTAxCisgNyB8IDUwMgorIDgg fCA1MDMKKyA5IHwgNTA0CisoOSByb3dzKQorCitSRVNFVCBlbmFibGVfaGFzaGFnZzsKKy0tCist LSBUZXN0IGVhZ2VyIGFnZ3JlZ2F0aW9uIG92ZXIgam9pbiByZWwKKy0tCistLSBQZXJmb3JtIGpv aW4gb2YgdGFibGVzLCBhZ2dyZWdhdGUgdGhlIHJlc3VsdCwgam9pbiBpdCB0byB0aGUgb3RoZXIg dGFibGUKKy0tIGFuZCBmaW5hbGl6ZSB0aGUgYWdncmVnYXRpb24uCitFWFBMQUlOIChWRVJCT1NF LCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMgKyB0My5jKSBGUk9NIGVhZ2VyX2Fn Z190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBKT0lOIGVhZ2VyX2Fn Z190MyB0MyBPTiB0Mi5hID0gdDMuYSBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEdyb3Vw QWdncmVnYXRlCisgICBPdXRwdXQ6IHQxLmEsIGF2ZygodDIuYyArIHQzLmMpKQorICAgR3JvdXAg S2V5OiB0MS5hCisgICAtPiAgU29ydAorICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElBTCBh dmcoKHQyLmMgKyB0My5jKSkpCisgICAgICAgICBTb3J0IEtleTogdDEuYQorICAgICAgICAgLT4g IEhhc2ggSm9pbgorICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElBTCBhdmcoKHQy LmMgKyB0My5jKSkpCisgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MS5iID0gdDIuYikKKyAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QxIHQxCisgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIHQxLmIsIHQxLmMKKyAgICAgICAgICAgICAg IC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIChQQVJUSUFMIGF2 ZygodDIuYyArIHQzLmMpKSkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hB Z2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgUEFSVElB TCBhdmcoKHQyLmMgKyB0My5jKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtl eTogdDIuYgorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5jLCB0Mi5iLCB0My5jCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0My5hID0gdDIuYSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFn ZXJfYWdnX3QzIHQzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQzLmEsIHQzLmIsIHQzLmMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQy LmMsIHQyLmIsIHQyLmEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QyIHQyCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmMsIHQyLmIsIHQyLmEKKygyNSBy b3dzKQorCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMgKyB0My5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0 MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBKT0lOIGVhZ2VyX2FnZ190MyB0 MyBPTiB0Mi5hID0gdDMuYSBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisgYSB8IGF2ZyAK Ky0tLSstLS0tLQorIDEgfCA0OTcKKyAyIHwgNDk5CisgMyB8IDUwMQorIDQgfCA1MDMKKyA1IHwg NTA1CisgNiB8IDUwNworIDcgfCA1MDkKKyA4IHwgNTExCisgOSB8IDUxMworKDkgcm93cykKKwor LS0gUHJvZHVjZSByZXN1bHRzIHdpdGggc29ydGluZyBhZ2dyZWdhdGlvbgorU0VUIGVuYWJsZV9o YXNoYWdnIFRPIG9mZjsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS5h LCBhdmcodDIuYyArIHQzLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3Qy IHQyIE9OIHQxLmIgPSB0Mi5iIEpPSU4gZWFnZXJfYWdnX3QzIHQzIE9OIHQyLmEgPSB0My5hIEdS T1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgR3JvdXBBZ2dyZWdhdGUKKyAg IE91dHB1dDogdDEuYSwgYXZnKCh0Mi5jICsgdDMuYykpCisgICBHcm91cCBLZXk6IHQxLmEKKyAg IC0+ICBTb3J0CisgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2ZygodDIuYyArIHQz LmMpKSkKKyAgICAgICAgIFNvcnQgS2V5OiB0MS5hCisgICAgICAgICAtPiAgSGFzaCBKb2luCisg ICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2ZygodDIuYyArIHQzLmMpKSkK KyAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLmIgPSB0Mi5iKQorICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDEgdDEKKyAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDEuYSwgdDEuYiwgdDEuYworICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgKFBBUlRJQUwgYXZnKCh0Mi5jICsgdDMu YykpKQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgR3JvdXBBZ2dyZWdhdGUKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgUEFSVElBTCBhdmcoKHQyLmMg KyB0My5jKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDIuYgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDIuYywgdDIuYiwgdDMuYworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgU29ydCBLZXk6IHQyLmIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDIuYywgdDIuYiwgdDMuYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSGFzaCBDb25kOiAodDMuYSA9IHQyLmEpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MyB0Mwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0My5h LCB0My5iLCB0My5jCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg SGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0Mi5jLCB0Mi5iLCB0Mi5hCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MiB0MgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5jLCB0 Mi5iLCB0Mi5hCisoMjggcm93cykKKworU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jICsgdDMuYykgRlJP TSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgSk9J TiBlYWdlcl9hZ2dfdDMgdDMgT04gdDIuYSA9IHQzLmEgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0 MS5hOworIGEgfCBhdmcgCistLS0rLS0tLS0KKyAxIHwgNDk3CisgMiB8IDQ5OQorIDMgfCA1MDEK KyA0IHwgNTAzCisgNSB8IDUwNQorIDYgfCA1MDcKKyA3IHwgNTA5CisgOCB8IDUxMQorIDkgfCA1 MTMKKyg5IHJvd3MpCisKK1JFU0VUIGVuYWJsZV9oYXNoYWdnOworLS0KKy0tIFRlc3QgdGhhdCBl YWdlciBhZ2dyZWdhdGlvbiB3b3JrcyBmb3Igb3V0ZXIgam9pbgorLS0KKy0tIEVuc3VyZSBhZ2dy ZWdhdGlvbiBjYW4gYmUgcHVzaGVkIGRvd24gdG8gdGhlIG5vbi1udWxsYWJsZSBzaWRlCitFWFBM QUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFn ZXJfYWdnX3QxIHQxIFJJR0hUIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdS T1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxp emUgR3JvdXBBZ2dyZWdhdGUKKyAgIE91dHB1dDogdDEuYSwgYXZnKHQyLmMpCisgICBHcm91cCBL ZXk6IHQxLmEKKyAgIC0+ICBTb3J0CisgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2 Zyh0Mi5jKSkKKyAgICAgICAgIFNvcnQgS2V5OiB0MS5hCisgICAgICAgICAtPiAgSGFzaCBSaWdo dCBKb2luCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2Zyh0Mi5jKSkK KyAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLmIgPSB0Mi5iKQorICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDEgdDEKKyAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDEuYSwgdDEuYiwgdDEuYworICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgKFBBUlRJQUwgYXZnKHQyLmMpKQorICAg ICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCBQQVJUSUFMIGF2Zyh0Mi5jKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Mi5iCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MiB0MgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5hLCB0Mi5iLCB0Mi5jCisoMTggcm93cykK KworU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBSSUdIVCBKT0lO IGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQx LmE7CisgYSB8IGF2ZyAKKy0tLSstLS0tLQorIDEgfCA0OTYKKyAyIHwgNDk3CisgMyB8IDQ5OAor IDQgfCA0OTkKKyA1IHwgNTAwCisgNiB8IDUwMQorIDcgfCA1MDIKKyA4IHwgNTAzCisgOSB8IDUw NAorICAgfCA1MDUKKygxMCByb3dzKQorCistLSBFbnN1cmUgYWdncmVnYXRpb24gY2Fubm90IGJl IHB1c2hlZCBkb3duIHRvIHRoZSBudWxsYWJsZSBzaWRlCitFWFBMQUlOIChWRVJCT1NFLCBDT1NU UyBPRkYpCitTRUxFQ1QgdDIuYiwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIExFRlQg Sk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDIuYiBPUkRFUiBC WSB0Mi5iOworICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBTb3J0CisgICBPdXRwdXQ6IHQyLmIsIChhdmcodDIuYykpCisg ICBTb3J0IEtleTogdDIuYgorICAgLT4gIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgIE91dHB1dDog dDIuYiwgYXZnKHQyLmMpCisgICAgICAgICBHcm91cCBLZXk6IHQyLmIKKyAgICAgICAgIC0+ICBI YXNoIFJpZ2h0IEpvaW4KKyAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgdDIuYworICAgICAg ICAgICAgICAgSGFzaCBDb25kOiAodDIuYiA9IHQxLmIpCisgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MiB0MgorICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Mi5hLCB0Mi5iLCB0Mi5jCisgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0MS5iCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gcHVibGljLmVhZ2VyX2FnZ190MSB0MQorICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0MS5iCisoMTUgcm93cykKKworU0VMRUNUIHQyLmIsIGF2Zyh0Mi5jKSBGUk9NIGVh Z2VyX2FnZ190MSB0MSBMRUZUIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdS T1VQIEJZIHQyLmIgT1JERVIgQlkgdDIuYjsKKyBiIHwgYXZnIAorLS0tKy0tLS0tCisgMSB8IDQ5 NgorIDIgfCA0OTcKKyAzIHwgNDk4CisgNCB8IDQ5OQorIDUgfCA1MDAKKyA2IHwgNTAxCisgNyB8 IDUwMgorIDggfCA1MDMKKyA5IHwgNTA0CisgICB8ICAgIAorKDEwIHJvd3MpCisKKy0tCistLSBU ZXN0IHRoYXQgZWFnZXIgYWdncmVnYXRpb24gd29ya3MgZm9yIHBhcmFsbGVsIHBsYW5zCistLQor U0VUIHBhcmFsbGVsX3NldHVwX2Nvc3Q9MDsKK1NFVCBwYXJhbGxlbF90dXBsZV9jb3N0PTA7CitT RVQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZT0wOworU0VUIG1heF9wYXJhbGxlbF93b3Jr ZXJzX3Blcl9nYXRoZXI9NDsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0 MS5hLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIg T04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5hbGl6ZSBHcm91cEFn Z3JlZ2F0ZQorICAgT3V0cHV0OiB0MS5hLCBhdmcodDIuYykKKyAgIEdyb3VwIEtleTogdDEuYQor ICAgLT4gIEdhdGhlciBNZXJnZQorICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElBTCBhdmco dDIuYykpCisgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBTb3J0Cisg ICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2Zyh0Mi5jKSkKKyAgICAgICAg ICAgICAgIFNvcnQgS2V5OiB0MS5hCisgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaCBK b2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2Zyh0Mi5j KSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLmIgPSB0Mi5iKQorICAgICAg ICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2df dDEgdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgdDEuYiwgdDEu YworICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2gKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgKFBBUlRJQUwgYXZnKHQyLmMpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCBQQVJUSUFMIGF2Zyh0Mi5jKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Mi5iCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gcHVibGljLmVh Z2VyX2FnZ190MiB0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Mi5hLCB0Mi5iLCB0Mi5jCisoMjEgcm93cykKKworU0VMRUNUIHQxLmEsIGF2Zyh0Mi5j KSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIu YiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisgYSB8IGF2ZyAKKy0tLSstLS0tLQorIDEg fCA0OTYKKyAyIHwgNDk3CisgMyB8IDQ5OAorIDQgfCA0OTkKKyA1IHwgNTAwCisgNiB8IDUwMQor IDcgfCA1MDIKKyA4IHwgNTAzCisgOSB8IDUwNAorKDkgcm93cykKKworUkVTRVQgcGFyYWxsZWxf c2V0dXBfY29zdDsKK1JFU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3Q7CitSRVNFVCBtaW5fcGFyYWxs ZWxfdGFibGVfc2Nhbl9zaXplOworUkVTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhl cjsKK0RST1AgVEFCTEUgZWFnZXJfYWdnX3QxOworRFJPUCBUQUJMRSBlYWdlcl9hZ2dfdDI7CitE Uk9QIFRBQkxFIGVhZ2VyX2FnZ190MzsKKy0tCistLSBUZXN0IGVhZ2VyIGFnZ3JlZ2F0aW9uIGZv ciBwYXJ0aXRpb253aXNlIGpvaW4KKy0tCistLSBFbmFibGUgcGFydGl0aW9ud2lzZSBhZ2dyZWdh dGUsIHdoaWNoIGJ5IGRlZmF1bHQgaXMgZGlzYWJsZWQuCitTRVQgZW5hYmxlX3BhcnRpdGlvbndp c2VfYWdncmVnYXRlIFRPIHRydWU7CistLSBFbmFibGUgcGFydGl0aW9ud2lzZSBqb2luLCB3aGlj aCBieSBkZWZhdWx0IGlzIGRpc2FibGVkLgorU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2pvaW4g VE8gdHJ1ZTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMSh4IGludCwgeSBpbnQpIFBBUlRJ VElPTiBCWSBSQU5HRSh4KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMV9wMSBQQVJUSVRJ T04gT0YgZWFnZXJfYWdnX3RhYjEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoNSk7CitDUkVBVEUg VEFCTEUgZWFnZXJfYWdnX3RhYjFfcDIgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWIxIEZPUiBW QUxVRVMgRlJPTSAoNSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMV9wMyBQ QVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYjEgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KTsK K0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMih4IGludCwgeSBpbnQpIFBBUlRJVElPTiBCWSBS QU5HRSh5KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMl9wMSBQQVJUSVRJT04gT0YgZWFn ZXJfYWdnX3RhYjIgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoNSk7CitDUkVBVEUgVEFCTEUgZWFn ZXJfYWdnX3RhYjJfcDIgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWIyIEZPUiBWQUxVRVMgRlJP TSAoNSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMl9wMyBQQVJUSVRJT04g T0YgZWFnZXJfYWdnX3RhYjIgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KTsKK0lOU0VSVCBJ TlRPIGVhZ2VyX2FnZ190YWIxIFNFTEVDVCBpICUgMTUsIGkgJSAxMCBGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCAxMDAwKSBpOworSU5TRVJUIElOVE8gZWFnZXJfYWdnX3RhYjIgU0VMRUNUIGkgJSAx MCwgaSAlIDE1IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIGk7CitBTkFMWVpFIGVhZ2Vy X2FnZ190YWIxOworQU5BTFlaRSBlYWdlcl9hZ2dfdGFiMjsKKy0tIFdoZW4gR1JPVVAgQlkgY2xh dXNlIG1hdGNoZXM7IGZ1bGwgYWdncmVnYXRpb24gaXMgcGVyZm9ybWVkIGZvciBlYWNoIHBhcnRp dGlvbi4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS54LCBzdW0odDEu eSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYjEgdDEsIGVhZ2VyX2FnZ190YWIyIHQyIFdI RVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29y dAorICAgT3V0cHV0OiB0MS54LCAoc3VtKHQxLnkpKSwgKGNvdW50KCopKQorICAgU29ydCBLZXk6 IHQxLngKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRl CisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIHN1bSh0MS55KSwgY291bnQoKikKKyAgICAg ICAgICAgICAgIEdyb3VwIEtleTogdDEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgor ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCAoUEFSVElBTCBzdW0odDEueSkpLCAo UEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyLnkg PSB0MS54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdl cl9hZ2dfdGFiMl9wMSB0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi55 CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0MS54LCAoUEFSVElBTCBzdW0odDEueSkpLCAoUEFSVElBTCBjb3VudCgqKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueCwgUEFSVElBTCBzdW0o dDEueSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEdyb3VwIEtleTogdDEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMSB0MQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCB0MS55CisgICAgICAgICAtPiAgRmlu YWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIHN1bSh0 MV8xLnkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8xLngKKyAgICAg ICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFf MS54LCAoUEFSVElBTCBzdW0odDFfMS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAg ICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMS55ID0gdDFfMS54KQorICAgICAgICAgICAgICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMl9wMiB0Ml8xCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueQorICAgICAgICAgICAgICAgICAg ICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54LCAo UEFSVElBTCBzdW0odDFfMS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIFBBUlRJQUwgc3VtKHQxXzEueSksIFBBUlRJ QUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTog dDFfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHVibGljLmVhZ2VyX2FnZ190YWIxX3AyIHQxXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDFfMS54LCB0MV8xLnkKKyAgICAgICAgIC0+ICBGaW5hbGl6 ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgc3VtKHQxXzIu eSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzIueAorICAgICAgICAg ICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngs IChQQVJUSUFMIHN1bSh0MV8yLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAg ICAgICAgICBIYXNoIENvbmQ6ICh0Ml8yLnkgPSB0MV8yLngpCisgICAgICAgICAgICAgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIyX3AzIHQyXzIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi55CisgICAgICAgICAgICAgICAgICAgICAt PiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngsIChQQVJU SUFMIHN1bSh0MV8yLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgUEFSVElBTCBzdW0odDFfMi55KSwgUEFSVElBTCBj b3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8y LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJs aWMuZWFnZXJfYWdnX3RhYjFfcDMgdDFfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0MV8yLngsIHQxXzIueQorKDQ5IHJvd3MpCisKK1NFTEVDVCB0MS54 LCBzdW0odDEueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYjEgdDEsIGVhZ2VyX2FnZ190 YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKKyB4 ICB8ICBzdW0gIHwgY291bnQgCistLS0tKy0tLS0tLS0rLS0tLS0tLQorICAwIHwgMTA4OTAgfCAg NDM1NgorICAxIHwgMTU1NDQgfCAgNDQ4OQorICAyIHwgMjAwMzMgfCAgNDQ4OQorICAzIHwgMjQ1 MjIgfCAgNDQ4OQorICA0IHwgMjkwMTEgfCAgNDQ4OQorICA1IHwgMTEzOTAgfCAgNDQ4OQorICA2 IHwgMTU4NzkgfCAgNDQ4OQorICA3IHwgMjAzNjggfCAgNDQ4OQorICA4IHwgMjQ4NTcgfCAgNDQ4 OQorICA5IHwgMjkzNDYgfCAgNDQ4OQorIDEwIHwgMTEwNTUgfCAgNDQ4OQorIDExIHwgMTUyNDYg fCAgNDM1NgorIDEyIHwgMTk2MDIgfCAgNDM1NgorIDEzIHwgMjM5NTggfCAgNDM1NgorIDE0IHwg MjgzMTQgfCAgNDM1NgorKDE1IHJvd3MpCisKKy0tIEdST1VQIEJZIGhhdmluZyBvdGhlciBtYXRj aGluZyBrZXkKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0Mi55LCBzdW0o dDEueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYjEgdDEsIGVhZ2VyX2FnZ190YWIyIHQy IFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQyLnkgT1JERVIgQlkgdDIueTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg U29ydAorICAgT3V0cHV0OiB0Mi55LCAoc3VtKHQxLnkpKSwgKGNvdW50KCopKQorICAgU29ydCBL ZXk6IHQyLnkKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVn YXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnksIHN1bSh0MS55KSwgY291bnQoKikKKyAg ICAgICAgICAgICAgIEdyb3VwIEtleTogdDIueQorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9p bgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi55LCAoUEFSVElBTCBzdW0odDEueSkp LCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQy LnkgPSB0MS54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5l YWdlcl9hZ2dfdGFiMl9wMSB0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 Mi55CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0MS54LCAoUEFSVElBTCBzdW0odDEueSkpLCAoUEFSVElBTCBjb3VudCgq KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueCwgUEFSVElBTCBz dW0odDEueSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdyb3VwIEtleTogdDEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMSB0MQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS55LCB0MS54CisgICAgICAgICAtPiAg RmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLnksIHN1 bSh0MV8xLnkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8xLnkKKyAg ICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDJfMS55LCAoUEFSVElBTCBzdW0odDFfMS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAg ICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMS55ID0gdDFfMS54KQorICAgICAgICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMl9wMiB0Ml8xCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueQorICAgICAgICAgICAgICAg ICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54 LCAoUEFSVElBTCBzdW0odDFfMS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIFBBUlRJQUwgc3VtKHQxXzEueSksIFBB UlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtl eTogdDFfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AyIHQxXzEKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS55LCB0MV8xLngKKyAgICAgICAgIC0+ICBGaW5h bGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueSwgc3VtKHQx XzIueSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzIueQorICAgICAg ICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8y LnksIChQQVJUSUFMIHN1bSh0MV8yLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAg ICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8yLnkgPSB0MV8yLngpCisgICAgICAgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIyX3AzIHQyXzIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi55CisgICAgICAgICAgICAgICAgICAg ICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngsIChQ QVJUSUFMIHN1bSh0MV8yLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgUEFSVElBTCBzdW0odDFfMi55KSwgUEFSVElB TCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0 MV8yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw dWJsaWMuZWFnZXJfYWdnX3RhYjFfcDMgdDFfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0MV8yLnksIHQxXzIueAorKDQ5IHJvd3MpCisKK1NFTEVDVCB0 Mi55LCBzdW0odDEueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYjEgdDEsIGVhZ2VyX2Fn Z190YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQyLnkgT1JERVIgQlkgdDIueTsK KyB5ICB8ICBzdW0gIHwgY291bnQgCistLS0tKy0tLS0tLS0rLS0tLS0tLQorICAwIHwgMTA4OTAg fCAgNDM1NgorICAxIHwgMTU1NDQgfCAgNDQ4OQorICAyIHwgMjAwMzMgfCAgNDQ4OQorICAzIHwg MjQ1MjIgfCAgNDQ4OQorICA0IHwgMjkwMTEgfCAgNDQ4OQorICA1IHwgMTEzOTAgfCAgNDQ4OQor ICA2IHwgMTU4NzkgfCAgNDQ4OQorICA3IHwgMjAzNjggfCAgNDQ4OQorICA4IHwgMjQ4NTcgfCAg NDQ4OQorICA5IHwgMjkzNDYgfCAgNDQ4OQorIDEwIHwgMTEwNTUgfCAgNDQ4OQorIDExIHwgMTUy NDYgfCAgNDM1NgorIDEyIHwgMTk2MDIgfCAgNDM1NgorIDEzIHwgMjM5NTggfCAgNDM1NgorIDE0 IHwgMjgzMTQgfCAgNDM1NgorKDE1IHJvd3MpCisKKy0tIFdoZW4gR1JPVVAgQlkgY2xhdXNlIGRv ZXMgbm90IG1hdGNoOyBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGlzIHBlcmZvcm1lZCBmb3IgZWFjaCBw YXJ0aXRpb24uCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDIueCwgc3Vt KHQxLngpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWIxIHQxLCBlYWdlcl9hZ2dfdGFiMiB0 MiBXSEVSRSB0MS54ID0gdDIueSBHUk9VUCBCWSB0Mi54IEhBVklORyBhdmcodDEueCkgPiA1IE9S REVSIEJZIHQyLng7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIFNvcnQKKyAgIE91dHB1dDogdDIueCwgKHN1bSh0MS54KSksIChjb3VudCgqKSkKKyAg IFNvcnQgS2V5OiB0Mi54CisgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAg T3V0cHV0OiB0Mi54LCBzdW0odDEueCksIGNvdW50KCopCisgICAgICAgICBHcm91cCBLZXk6IHQy LngKKyAgICAgICAgIEZpbHRlcjogKGF2Zyh0MS54KSA+ICc1Jzo6bnVtZXJpYykKKyAgICAgICAg IC0+ICBBcHBlbmQKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDIueCwgKFBBUlRJQUwgc3VtKHQxLngpKSwgKFBBUlRJQUwgY291bnQo KikpLCAoUEFSVElBTCBhdmcodDEueCkpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6 ICh0Mi55ID0gdDEueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJs aWMuZWFnZXJfYWdnX3RhYjJfcDEgdDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDIueCwgdDIueQorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDEueCwgKFBBUlRJQUwgc3VtKHQxLngpKSwgKFBBUlRJ QUwgY291bnQoKikpLCAoUEFSVElBTCBhdmcodDEueCkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQxLngsIFBBUlRJQUwgc3VtKHQxLngpLCBQQVJUSUFMIGNvdW50KCop LCBQQVJUSUFMIGF2Zyh0MS54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3Jv dXAgS2V5OiB0MS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AxIHQxCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpv aW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS54LCAoUEFSVElBTCBzdW0odDFf MS54KSksIChQQVJUSUFMIGNvdW50KCopKSwgKFBBUlRJQUwgYXZnKHQxXzEueCkpCisgICAgICAg ICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8xLnkgPSB0MV8xLngpCisgICAgICAgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIyX3AyIHQyXzEKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS54LCB0Ml8xLnkKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQxXzEueCwgKFBBUlRJQUwgc3VtKHQxXzEueCkpLCAoUEFSVElBTCBjb3VudCgqKSksIChQQVJU SUFMIGF2Zyh0MV8xLngpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwg SGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 MV8xLngsIFBBUlRJQUwgc3VtKHQxXzEueCksIFBBUlRJQUwgY291bnQoKiksIFBBUlRJQUwgYXZn KHQxXzEueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFf MS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVi bGljLmVhZ2VyX2FnZ190YWIxX3AyIHQxXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDFfMS54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueCwgKFBBUlRJQUwgc3VtKHQxXzIueCkp LCAoUEFSVElBTCBjb3VudCgqKSksIChQQVJUSUFMIGF2Zyh0MV8yLngpKQorICAgICAgICAgICAg ICAgICAgICAgSGFzaCBDb25kOiAodDJfMi55ID0gdDFfMi54KQorICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMl9wMyB0Ml8yCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueCwgdDJfMi55CisgICAgICAgICAgICAg ICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8y LngsIChQQVJUSUFMIHN1bSh0MV8yLngpKSwgKFBBUlRJQUwgY291bnQoKikpLCAoUEFSVElBTCBh dmcodDFfMi54KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hB Z2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54 LCBQQVJUSUFMIHN1bSh0MV8yLngpLCBQQVJUSUFMIGNvdW50KCopLCBQQVJUSUFMIGF2Zyh0MV8y LngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzIueAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5l YWdlcl9hZ2dfdGFiMV9wMyB0MV8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQxXzIueAorKDQ0IHJvd3MpCisKK1NFTEVDVCB0Mi54LCBzdW0odDEueCks IGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYjEgdDEsIGVhZ2VyX2FnZ190YWIyIHQyIFdIRVJF IHQxLnggPSB0Mi55IEdST1VQIEJZIHQyLnggSEFWSU5HIGF2Zyh0MS54KSA+IDUgT1JERVIgQlkg dDIueDsKKyB4IHwgIHN1bSAgfCBjb3VudCAKKy0tLSstLS0tLS0tKy0tLS0tLS0KKyAwIHwgMzM4 MzUgfCAgNjY2NworIDEgfCAzOTUwMiB8ICA2NjY3CisgMiB8IDQ2MTY5IHwgIDY2NjcKKyAzIHwg NTI4MzYgfCAgNjY2NworIDQgfCA1OTUwMyB8ICA2NjY3CisgNSB8IDMzNTAwIHwgIDY2NjcKKyA2 IHwgMzk4MzcgfCAgNjY2NworIDcgfCA0NjUwNCB8ICA2NjY3CisgOCB8IDUzMTcxIHwgIDY2NjcK KyA5IHwgNTk4MzggfCAgNjY2NworKDEwIHJvd3MpCisKKy0tIENoZWNrIHdpdGggZWFnZXIgYWdn cmVnYXRpb24gb3ZlciBqb2luIHJlbAorLS0gZnVsbCBhZ2dyZWdhdGlvbgorRVhQTEFJTiAoVkVS Qk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLngsIHN1bSh0Mi55ICsgdDMueSkgRlJPTSBlYWdl cl9hZ2dfdGFiMSB0MSBKT0lOIGVhZ2VyX2FnZ190YWIxIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4g ZWFnZXJfYWdnX3RhYjEgdDMgT04gdDIueCA9IHQzLnggR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0 MS54OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFNvcnQKKyAgIE91dHB1dDogdDEueCwgKHN1bSgodDIueSAr IHQzLnkpKSkKKyAgIFNvcnQgS2V5OiB0MS54CisgICAtPiAgQXBwZW5kCisgICAgICAgICAtPiAg RmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCBzdW0o KHQyLnkgKyB0My55KSkKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDEueAorICAgICAgICAg ICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCAo UEFSVElBTCBzdW0oKHQyLnkgKyB0My55KSkpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENv bmQ6ICh0MS54ID0gdDIueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw dWJsaWMuZWFnZXJfYWdnX3RhYjFfcDEgdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDEueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDIueCwgdDMueCwgKFBBUlRJQUwgc3VtKCh0Mi55ICsgdDMu eSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0 ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54LCB0My54LCBQ QVJUSUFMIHN1bSgodDIueSArIHQzLnkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgR3JvdXAgS2V5OiB0Mi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg SGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQyLnksIHQyLngsIHQzLnksIHQzLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEhhc2ggQ29uZDogKHQyLnggPSB0My54KQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMSB0 MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 Mi55LCB0Mi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFz aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 My55LCB0My54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AxIHQzCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzLnksIHQzLngK KyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRw dXQ6IHQxXzEueCwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKQorICAgICAgICAgICAgICAgR3JvdXAg S2V5OiB0MV8xLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDFfMS54LCAoUEFSVElBTCBzdW0oKHQyXzEueSArIHQzXzEueSkpKQor ICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMS54ID0gdDJfMS54KQorICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMiB0 MV8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueAorICAgICAgICAg ICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDJfMS54LCB0M18xLngsIChQQVJUSUFMIHN1bSgodDJfMS55ICsgdDNfMS55KSkpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueCwgdDNfMS54LCBQQVJUSUFMIHN1 bSgodDJfMS55ICsgdDNfMS55KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdy b3VwIEtleTogdDJfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFz aCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQy XzEueSwgdDJfMS54LCB0M18xLnksIHQzXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMS54ID0gdDNfMS54KQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2df dGFiMV9wMiB0Ml8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQyXzEueSwgdDJfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0M18xLnksIHQzXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9w MiB0M18xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQzXzEueSwgdDNfMS54CisgICAgICAgICAtPiAgRmluYWxpemUgSGFzaEFnZ3Jl Z2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngsIHN1bSgodDJfMi55ICsgdDNfMi55 KSkKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMi54CisgICAgICAgICAgICAgICAtPiAg SGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgKFBBUlRJQUwg c3VtKCh0Ml8yLnkgKyB0M18yLnkpKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDog KHQxXzIueCA9IHQyXzIueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw dWJsaWMuZWFnZXJfYWdnX3RhYjFfcDMgdDFfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0MV8yLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueCwgdDNfMi54LCAoUEFSVElBTCBzdW0oKHQy XzIueSArIHQzXzIueSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwg SGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 Ml8yLngsIHQzXzIueCwgUEFSVElBTCBzdW0oKHQyXzIueSArIHQzXzIueSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzIueAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLnksIHQyXzIueCwgdDNfMi55LCB0M18yLngKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzIueCA9 IHQzXzIueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDMgdDJfMgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLnksIHQyXzIueAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMi55LCB0M18yLngKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDMgdDNfMgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18yLnksIHQzXzIueAorKDcwIHJv d3MpCisKK1NFTEVDVCB0MS54LCBzdW0odDIueSArIHQzLnkpIEZST00gZWFnZXJfYWdnX3RhYjEg dDEgSk9JTiBlYWdlcl9hZ2dfdGFiMSB0MiBPTiB0MS54ID0gdDIueCBKT0lOIGVhZ2VyX2FnZ190 YWIxIHQzIE9OIHQyLnggPSB0My54IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKKyB4ICB8 ICAgc3VtICAgCistLS0tKy0tLS0tLS0tLQorICAwIHwgMTQzNzQ4MAorICAxIHwgMjA4Mjg5Ngor ICAyIHwgMjY4NDQyMgorICAzIHwgMzI4NTk0OAorICA0IHwgMzg4NzQ3NAorICA1IHwgMTUyNjI2 MAorICA2IHwgMjEyNzc4NgorICA3IHwgMjcyOTMxMgorICA4IHwgMzMzMDgzOAorICA5IHwgMzkz MjM2NAorIDEwIHwgMTQ4MTM3MAorIDExIHwgMjAxMjQ3MgorIDEyIHwgMjU4NzQ2NAorIDEzIHwg MzE2MjQ1NgorIDE0IHwgMzczNzQ0OAorKDE1IHJvd3MpCisKKy0tIHBhcnRpYWwgYWdncmVnYXRp b24KK1NFVCBlbmFibGVfaGFzaGFnZyBUTyBvZmY7CitTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNf cGVyX2dhdGhlciBUTyAwOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQz LnksIHN1bSh0Mi55ICsgdDMueSkgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSBKT0lOIGVhZ2VyX2Fn Z190YWIxIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFnZXJfYWdnX3RhYjEgdDMgT04gdDIueCA9 IHQzLnggR1JPVVAgQlkgdDMueSBPUkRFUiBCWSB0My55OworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFs aXplIEdyb3VwQWdncmVnYXRlCisgICBPdXRwdXQ6IHQzLnksIHN1bSgodDIueSArIHQzLnkpKQor ICAgR3JvdXAgS2V5OiB0My55CisgICAtPiAgU29ydAorICAgICAgICAgT3V0cHV0OiB0My55LCAo UEFSVElBTCBzdW0oKHQyLnkgKyB0My55KSkpCisgICAgICAgICBTb3J0IEtleTogdDMueQorICAg ICAgICAgLT4gIEFwcGVuZAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0My55LCAoUEFSVElBTCBzdW0oKHQyLnkgKyB0My55KSkpCisg ICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Mi54ID0gdDEueCkKKyAgICAgICAgICAg ICAgICAgICAgIC0+ICBQYXJ0aWFsIEdyb3VwQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQyLngsIHQzLnksIHQzLngsIFBBUlRJQUwgc3VtKCh0Mi55ICsgdDMu eSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyLngsIHQzLnksIHQz LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBJbmNyZW1lbnRhbCBTb3J0CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnksIHQyLngsIHQzLnksIHQz LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0Mi54LCB0My55 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVzb3J0ZWQgS2V5OiB0Mi54Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgTWVyZ2UgSm9pbgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi55LCB0Mi54LCB0My55LCB0 My54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXJnZSBDb25kOiAo dDIueCA9IHQzLngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg U29ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0Mi55LCB0Mi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBTb3J0IEtleTogdDIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMSB0MgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi55 LCB0Mi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU29ydAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0My55 LCB0My54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0 IEtleTogdDMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMSB0MworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0My55LCB0My54 CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0MS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AxIHQxCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQxLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMS55LCAoUEFSVElBTCBzdW0oKHQyXzEueSArIHQz XzEueSkpKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMS54ID0gdDFfMS54 KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgR3JvdXBBZ2dyZWdhdGUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS54LCB0M18xLnksIHQzXzEueCwgUEFS VElBTCBzdW0oKHQyXzEueSArIHQzXzEueSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBH cm91cCBLZXk6IHQyXzEueCwgdDNfMS55LCB0M18xLngKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBJbmNyZW1lbnRhbCBTb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQyXzEueSwgdDJfMS54LCB0M18xLnksIHQzXzEueAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQyXzEueCwgdDNfMS55CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQcmVzb3J0ZWQgS2V5OiB0Ml8xLngKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBNZXJnZSBKb2luCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueSwgdDJfMS54LCB0M18xLnksIHQzXzEueAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVyZ2UgQ29uZDogKHQyXzEu eCA9IHQzXzEueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBT b3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQyXzEueSwgdDJfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBTb3J0IEtleTogdDJfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AyIHQyXzEK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDJfMS55LCB0Ml8xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBTb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQzXzEueSwgdDNfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBTb3J0IEtleTogdDNfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3Ay IHQzXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDNfMS55LCB0M18xLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMiB0MV8x CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueAorICAgICAg ICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18y LnksIChQQVJUSUFMIHN1bSgodDJfMi55ICsgdDNfMi55KSkpCisgICAgICAgICAgICAgICAgICAg ICBIYXNoIENvbmQ6ICh0Ml8yLnggPSB0MV8yLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAg UGFydGlhbCBHcm91cEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0Ml8yLngsIHQzXzIueSwgdDNfMi54LCBQQVJUSUFMIHN1bSgodDJfMi55ICsgdDNfMi55KSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfMi54LCB0M18yLnksIHQz XzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEluY3JlbWVudGFsIFNvcnQKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi55LCB0Ml8yLngsIHQz XzIueSwgdDNfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTog dDJfMi54LCB0M18yLnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZXNvcnRl ZCBLZXk6IHQyXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIE1lcmdl IEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJf Mi55LCB0Ml8yLngsIHQzXzIueSwgdDNfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBNZXJnZSBDb25kOiAodDJfMi54ID0gdDNfMi54KQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi55LCB0Ml8yLngKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0Ml8yLngKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw dWJsaWMuZWFnZXJfYWdnX3RhYjFfcDMgdDJfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLnksIHQyXzIueAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMi55LCB0M18yLngKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0M18yLngK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDMgdDNfMgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18yLnksIHQzXzIueAorICAg ICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDFfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHVibGljLmVhZ2VyX2FnZ190YWIxX3AzIHQxXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDFfMi54CisoODggcm93cykKKworU0VMRUNUIHQzLnksIHN1bSh0Mi55 ICsgdDMueSkgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSBKT0lOIGVhZ2VyX2FnZ190YWIxIHQyIE9O IHQxLnggPSB0Mi54IEpPSU4gZWFnZXJfYWdnX3RhYjEgdDMgT04gdDIueCA9IHQzLnggR1JPVVAg QlkgdDMueSBPUkRFUiBCWSB0My55OworIHkgfCAgIHN1bSAgIAorLS0tKy0tLS0tLS0tLQorIDAg fCAxMTExMTEwCisgMSB8IDIwMDAxMzIKKyAyIHwgMjg4OTE1NAorIDMgfCAzNzc4MTc2CisgNCB8 IDQ2NjcxOTgKKyA1IHwgMzMzNDAwMAorIDYgfCA0MjIzMDIyCisgNyB8IDUxMTIwNDQKKyA4IHwg NjAwMTA2NgorIDkgfCA2ODkwMDg4CisoMTAgcm93cykKKworUkVTRVQgZW5hYmxlX2hhc2hhZ2c7 CitSRVNFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyOworRFJPUCBUQUJMRSBlYWdl cl9hZ2dfdGFiMTsKK0RST1AgVEFCTEUgZWFnZXJfYWdnX3RhYjI7CistLQorLS0gVGVzdCB3aXRo IG11bHRpLWxldmVsIHBhcnRpdGlvbmluZyBzY2hlbWUKKy0tCitDUkVBVEUgVEFCTEUgZWFnZXJf YWdnX3RhYl9tbCh4IGludCwgeSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSh4KTsKK0NSRUFURSBU QUJMRSBlYWdlcl9hZ2dfdGFiX21sX3AxIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiX21sIEZP UiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21s X3AyIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiX21sIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRP ICgyMCkgUEFSVElUSU9OIEJZIFJBTkdFKHgpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWJf bWxfcDJfczEgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWJfbWxfcDIgRk9SIFZBTFVFUyBGUk9N ICgxMCkgVE8gKDE1KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sX3AyX3MyIFBBUlRJ VElPTiBPRiBlYWdlcl9hZ2dfdGFiX21sX3AyIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCk7 CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbF9wMyBQQVJUSVRJT04gT0YgZWFnZXJfYWdn X3RhYl9tbCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApIFBBUlRJVElPTiBCWSBSQU5HRSh4 KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sX3AzX3MxIFBBUlRJVElPTiBPRiBlYWdl cl9hZ2dfdGFiX21sX3AzIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgyNSk7CitDUkVBVEUgVEFC TEUgZWFnZXJfYWdnX3RhYl9tbF9wM19zMiBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYl9tbF9w MyBGT1IgVkFMVUVTIEZST00gKDI1KSBUTyAoMzApOworSU5TRVJUIElOVE8gZWFnZXJfYWdnX3Rh Yl9tbCBTRUxFQ1QgaSAlIDMwLCBpICUgMzAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkg aTsKK0FOQUxZWkUgZWFnZXJfYWdnX3RhYl9tbDsKKy0tIFdoZW4gR1JPVVAgQlkgY2xhdXNlIG1h dGNoZXM7IGZ1bGwgYWdncmVnYXRpb24gaXMgcGVyZm9ybWVkIGZvciBlYWNoIHBhcnRpdGlvbi4K K0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS54LCBzdW0odDIueSksIGNv dW50KCopIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIg T04gdDEueCA9IHQyLnggR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTb3J0 CisgICBPdXRwdXQ6IHQxLngsIChzdW0odDIueSkpLCAoY291bnQoKikpCisgICBTb3J0IEtleTog dDEueAorICAgLT4gIEFwcGVuZAorICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUK KyAgICAgICAgICAgICAgIE91dHB1dDogdDEueCwgc3VtKHQyLnkpLCBjb3VudCgqKQorICAgICAg ICAgICAgICAgR3JvdXAgS2V5OiB0MS54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIChQQVJUSUFMIHN1bSh0Mi55KSksIChQ QVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEueCA9 IHQyLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2Vy X2FnZ190YWJfbWxfcDEgdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEu eAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDIueCwgKFBBUlRJQUwgc3VtKHQyLnkpKSwgKFBBUlRJQUwgY291bnQoKikp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLngsIFBBUlRJQUwgc3Vt KHQyLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBHcm91cCBLZXk6IHQyLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMSB0MgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi55LCB0Mi54CisgICAgICAgICAtPiAg RmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIHN1 bSh0Ml8xLnkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8xLngKKyAg ICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDFfMS54LCAoUEFSVElBTCBzdW0odDJfMS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAg ICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMS54ID0gdDJfMS54KQorICAgICAgICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3MxIHQx XzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54CisgICAgICAgICAg ICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 Ml8xLngsIChQQVJUSUFMIHN1bSh0Ml8xLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueCwgUEFSVElBTCBzdW0odDJfMS55 KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3Jv dXAgS2V5OiB0Ml8xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMSB0Ml8xCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueSwgdDJfMS54CisgICAgICAg ICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8y LngsIHN1bSh0Ml8yLnkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8y LngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDFfMi54LCAoUEFSVElBTCBzdW0odDJfMi55KSksIChQQVJUSUFMIGNvdW50KCopKQor ICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMi54ID0gdDJfMi54KQorICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3Ay X3MyIHQxXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54CisgICAg ICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Ml8yLngsIChQQVJUSUFMIHN1bSh0Ml8yLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueCwgUEFSVElBTCBzdW0o dDJfMi55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgR3JvdXAgS2V5OiB0Ml8yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMiB0Ml8yCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueSwgdDJfMi54Cisg ICAgICAgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0 OiB0MV8zLngsIHN1bSh0Ml8zLnkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5 OiB0MV8zLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDFfMy54LCAoUEFSVElBTCBzdW0odDJfMy55KSksIChQQVJUSUFMIGNvdW50 KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMy54ID0gdDJfMy54KQor ICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFi X21sX3AzX3MxIHQxXzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMy54 CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0Ml8zLngsIChQQVJUSUFMIHN1bSh0Ml8zLnkpKSwgKFBBUlRJQUwgY291bnQo KikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRl CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMueCwgUEFSVElB TCBzdW0odDJfMy55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR3JvdXAgS2V5OiB0Ml8zLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMSB0Ml8zCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMueSwgdDJf My54CisgICAgICAgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAg T3V0cHV0OiB0MV80LngsIHN1bSh0Ml80LnkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3Jv dXAgS2V5OiB0MV80LngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDFfNC54LCAoUEFSVElBTCBzdW0odDJfNC55KSksIChQQVJUSUFM IGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfNC54ID0gdDJf NC54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9h Z2dfdGFiX21sX3AzX3MyIHQxXzQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDFfNC54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0Ml80LngsIChQQVJUSUFMIHN1bSh0Ml80LnkpKSwgKFBBUlRJQUwg Y291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdn cmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzQueCwg UEFSVElBTCBzdW0odDJfNC55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml80LngKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMiB0 Ml80CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzQu eSwgdDJfNC54CisoNzkgcm93cykKKworU0VMRUNUIHQxLngsIHN1bSh0Mi55KSwgY291bnQoKikg RlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0MS54 ID0gdDIueCBHUk9VUCBCWSB0MS54IE9SREVSIEJZIHQxLng7CisgeCAgfCAgc3VtICB8IGNvdW50 IAorLS0tLSstLS0tLS0tKy0tLS0tLS0KKyAgMCB8ICAgICAwIHwgIDEwODkKKyAgMSB8ICAxMTU2 IHwgIDExNTYKKyAgMiB8ICAyMzEyIHwgIDExNTYKKyAgMyB8ICAzNDY4IHwgIDExNTYKKyAgNCB8 ICA0NjI0IHwgIDExNTYKKyAgNSB8ICA1NzgwIHwgIDExNTYKKyAgNiB8ICA2OTM2IHwgIDExNTYK KyAgNyB8ICA4MDkyIHwgIDExNTYKKyAgOCB8ICA5MjQ4IHwgIDExNTYKKyAgOSB8IDEwNDA0IHwg IDExNTYKKyAxMCB8IDExNTYwIHwgIDExNTYKKyAxMSB8IDExOTc5IHwgIDEwODkKKyAxMiB8IDEz MDY4IHwgIDEwODkKKyAxMyB8IDE0MTU3IHwgIDEwODkKKyAxNCB8IDE1MjQ2IHwgIDEwODkKKyAx NSB8IDE2MzM1IHwgIDEwODkKKyAxNiB8IDE3NDI0IHwgIDEwODkKKyAxNyB8IDE4NTEzIHwgIDEw ODkKKyAxOCB8IDE5NjAyIHwgIDEwODkKKyAxOSB8IDIwNjkxIHwgIDEwODkKKyAyMCB8IDIxNzgw IHwgIDEwODkKKyAyMSB8IDIyODY5IHwgIDEwODkKKyAyMiB8IDIzOTU4IHwgIDEwODkKKyAyMyB8 IDI1MDQ3IHwgIDEwODkKKyAyNCB8IDI2MTM2IHwgIDEwODkKKyAyNSB8IDI3MjI1IHwgIDEwODkK KyAyNiB8IDI4MzE0IHwgIDEwODkKKyAyNyB8IDI5NDAzIHwgIDEwODkKKyAyOCB8IDMwNDkyIHwg IDEwODkKKyAyOSB8IDMxNTgxIHwgIDEwODkKKygzMCByb3dzKQorCistLSBXaGVuIEdST1VQIEJZ IGNsYXVzZSBkb2VzIG5vdCBtYXRjaDsgcGFydGlhbCBhZ2dyZWdhdGlvbiBpcyBwZXJmb3JtZWQg Zm9yIGVhY2ggcGFydGl0aW9uLgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNU IHQxLnksIHN1bSh0Mi55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4g ZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0MS54ID0gdDIueCBHUk9VUCBCWSB0MS55IE9SREVSIEJZ IHQxLnk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFNvcnQKKyAgIE91dHB1dDogdDEueSwgKHN1bSh0Mi55KSksIChjb3Vu dCgqKSkKKyAgIFNvcnQgS2V5OiB0MS55CisgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQor ICAgICAgICAgT3V0cHV0OiB0MS55LCBzdW0odDIueSksIGNvdW50KCopCisgICAgICAgICBHcm91 cCBLZXk6IHQxLnkKKyAgICAgICAgIC0+ICBBcHBlbmQKKyAgICAgICAgICAgICAgIC0+ICBIYXNo IEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueSwgKFBBUlRJQUwgc3VtKHQy LnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6 ICh0MS54ID0gdDIueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJs aWMuZWFnZXJfYWdnX3RhYl9tbF9wMSB0MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0MS55LCB0MS54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54LCAoUEFSVElBTCBzdW0odDIueSkpLCAoUEFS VElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhh c2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIu eCwgUEFSVElBTCBzdW0odDIueSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDIueAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AxIHQyCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnksIHQyLngK KyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDFfMS55LCAoUEFSVElBTCBzdW0odDJfMS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAg ICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMS54ID0gdDJfMS54KQorICAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3Mx IHQxXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS55LCB0MV8xLngK KyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQyXzEueCwgKFBBUlRJQUwgc3VtKHQyXzEueSkpLCAoUEFSVElBTCBjb3VudCgq KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS54LCBQQVJUSUFM IHN1bSh0Ml8xLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBHcm91cCBLZXk6IHQyXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3MxIHQyXzEKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS55LCB0Ml8x LngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDFfMi55LCAoUEFSVElBTCBzdW0odDJfMi55KSksIChQQVJUSUFMIGNvdW50KCopKQor ICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMi54ID0gdDJfMi54KQorICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3Ay X3MyIHQxXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi55LCB0MV8y LngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQyXzIueCwgKFBBUlRJQUwgc3VtKHQyXzIueSkpLCAoUEFSVElBTCBjb3Vu dCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdh dGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi54LCBQQVJU SUFMIHN1bSh0Ml8yLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHcm91cCBLZXk6IHQyXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3MyIHQyXzIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi55LCB0 Ml8yLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDFfMy55LCAoUEFSVElBTCBzdW0odDJfMy55KSksIChQQVJUSUFMIGNvdW50KCop KQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMy54ID0gdDJfMy54KQorICAg ICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21s X3AzX3MxIHQxXzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMy55LCB0 MV8zLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQyXzMueCwgKFBBUlRJQUwgc3VtKHQyXzMueSkpLCAoUEFSVElBTCBj b3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dy ZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMy54LCBQ QVJUSUFMIHN1bSh0Ml8zLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzMueAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AzX3MxIHQy XzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMy55 LCB0Ml8zLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDFfNC55LCAoUEFSVElBTCBzdW0odDJfNC55KSksIChQQVJUSUFMIGNvdW50 KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfNC54ID0gdDJfNC54KQor ICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFi X21sX3AzX3MyIHQxXzQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfNC55 LCB0MV80LngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQyXzQueCwgKFBBUlRJQUwgc3VtKHQyXzQueSkpLCAoUEFSVElB TCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hB Z2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfNC54 LCBQQVJUSUFMIHN1bSh0Ml80LnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzQueAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AzX3My IHQyXzQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJf NC55LCB0Ml80LngKKyg2NyByb3dzKQorCitTRUxFQ1QgdDEueSwgc3VtKHQyLnkpLCBjb3VudCgq KSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQx LnggPSB0Mi54IEdST1VQIEJZIHQxLnkgT1JERVIgQlkgdDEueTsKKyB5ICB8ICBzdW0gIHwgY291 bnQgCistLS0tKy0tLS0tLS0rLS0tLS0tLQorICAwIHwgICAgIDAgfCAgMTA4OQorICAxIHwgIDEx NTYgfCAgMTE1NgorICAyIHwgIDIzMTIgfCAgMTE1NgorICAzIHwgIDM0NjggfCAgMTE1NgorICA0 IHwgIDQ2MjQgfCAgMTE1NgorICA1IHwgIDU3ODAgfCAgMTE1NgorICA2IHwgIDY5MzYgfCAgMTE1 NgorICA3IHwgIDgwOTIgfCAgMTE1NgorICA4IHwgIDkyNDggfCAgMTE1NgorICA5IHwgMTA0MDQg fCAgMTE1NgorIDEwIHwgMTE1NjAgfCAgMTE1NgorIDExIHwgMTE5NzkgfCAgMTA4OQorIDEyIHwg MTMwNjggfCAgMTA4OQorIDEzIHwgMTQxNTcgfCAgMTA4OQorIDE0IHwgMTUyNDYgfCAgMTA4OQor IDE1IHwgMTYzMzUgfCAgMTA4OQorIDE2IHwgMTc0MjQgfCAgMTA4OQorIDE3IHwgMTg1MTMgfCAg MTA4OQorIDE4IHwgMTk2MDIgfCAgMTA4OQorIDE5IHwgMjA2OTEgfCAgMTA4OQorIDIwIHwgMjE3 ODAgfCAgMTA4OQorIDIxIHwgMjI4NjkgfCAgMTA4OQorIDIyIHwgMjM5NTggfCAgMTA4OQorIDIz IHwgMjUwNDcgfCAgMTA4OQorIDI0IHwgMjYxMzYgfCAgMTA4OQorIDI1IHwgMjcyMjUgfCAgMTA4 OQorIDI2IHwgMjgzMTQgfCAgMTA4OQorIDI3IHwgMjk0MDMgfCAgMTA4OQorIDI4IHwgMzA0OTIg fCAgMTA4OQorIDI5IHwgMzE1ODEgfCAgMTA4OQorKDMwIHJvd3MpCisKKy0tIENoZWNrIHdpdGgg ZWFnZXIgYWdncmVnYXRpb24gb3ZlciBqb2luIHJlbAorLS0gZnVsbCBhZ2dyZWdhdGlvbgorRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLngsIHN1bSh0Mi55ICsgdDMueSks IGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwg dDIgT04gdDEueCA9IHQyLnggSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQzIG9uIHQyLnggPSB0My54 IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBTb3J0CisgICBPdXRwdXQ6IHQxLngsIChzdW0oKHQyLnkgKyB0 My55KSkpLCAoY291bnQoKikpCisgICBTb3J0IEtleTogdDEueAorICAgLT4gIEFwcGVuZAorICAg ICAgICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDog dDEueCwgc3VtKCh0Mi55ICsgdDMueSkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAg S2V5OiB0MS54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQxLngsIChQQVJUSUFMIHN1bSgodDIueSArIHQzLnkpKSksIChQQVJUSUFM IGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEueCA9IHQyLngp CisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190 YWJfbWxfcDEgdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueAorICAg ICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDIueCwgdDMueCwgKFBBUlRJQUwgc3VtKCh0Mi55ICsgdDMueSkpKSwgKFBBUlRJQUwg Y291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdn cmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLngsIHQz LngsIFBBUlRJQUwgc3VtKCh0Mi55ICsgdDMueSkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyLngKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDIueSwgdDIueCwgdDMueSwgdDMueAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDIueCA9IHQzLngpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVi bGljLmVhZ2VyX2FnZ190YWJfbWxfcDEgdDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDIueSwgdDIueAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDMueSwgdDMueAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2df dGFiX21sX3AxIHQzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQzLnksIHQzLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdn cmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueCwgc3VtKCh0Ml8xLnkgKyB0M18x LnkpKSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMS54CisgICAgICAg ICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEu eCwgKFBBUlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKSksIChQQVJUSUFMIGNvdW50KCopKQor ICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMS54ID0gdDJfMS54KQorICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3Ay X3MxIHQxXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54CisgICAg ICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Ml8xLngsIHQzXzEueCwgKFBBUlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKSksIChQ QVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwg SGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 Ml8xLngsIHQzXzEueCwgUEFSVElBTCBzdW0oKHQyXzEueSArIHQzXzEueSkpLCBQQVJUSUFMIGNv dW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzEu eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLnksIHQyXzEueCwg dDNfMS55LCB0M18xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhh c2ggQ29uZDogKHQyXzEueCA9IHQzXzEueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMSB0 Ml8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQyXzEueSwgdDJfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0M18xLnksIHQzXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3MxIHQz XzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDNfMS55LCB0M18xLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRl CisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgc3VtKCh0Ml8yLnkgKyB0M18yLnkpKSwg Y291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMi54CisgICAgICAgICAgICAg ICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgKFBB UlRJQUwgc3VtKCh0Ml8yLnkgKyB0M18yLnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAg ICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMi54ID0gdDJfMi54KQorICAgICAgICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3MyIHQx XzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54CisgICAgICAgICAg ICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 Ml8yLngsIHQzXzIueCwgKFBBUlRJQUwgc3VtKCh0Ml8yLnkgKyB0M18yLnkpKSksIChQQVJUSUFM IGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFn Z3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLngs IHQzXzIueCwgUEFSVElBTCBzdW0oKHQyXzIueSArIHQzXzIueSkpLCBQQVJUSUFMIGNvdW50KCop CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzIueAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLnksIHQyXzIueCwgdDNfMi55 LCB0M18yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29u ZDogKHQyXzIueCA9IHQzXzIueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMiB0Ml8yCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIu eSwgdDJfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFz aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 M18yLnksIHQzXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3MyIHQzXzIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDNfMi55LCB0M18yLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAg ICAgICAgICAgICBPdXRwdXQ6IHQxXzMueCwgc3VtKCh0Ml8zLnkgKyB0M18zLnkpKSwgY291bnQo KikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMy54CisgICAgICAgICAgICAgICAtPiAg SGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzMueCwgKFBBUlRJQUwg c3VtKCh0Ml8zLnkgKyB0M18zLnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAg ICAgICAgICAgSGFzaCBDb25kOiAodDFfMy54ID0gdDJfMy54KQorICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AzX3MxIHQxXzMKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMy54CisgICAgICAgICAgICAgICAg ICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLngs IHQzXzMueCwgKFBBUlRJQUwgc3VtKCh0Ml8zLnkgKyB0M18zLnkpKSksIChQQVJUSUFMIGNvdW50 KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0 ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLngsIHQzXzMu eCwgUEFSVElBTCBzdW0oKHQyXzMueSArIHQzXzMueSkpLCBQQVJUSUFMIGNvdW50KCopCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzMueAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLnksIHQyXzMueCwgdDNfMy55LCB0M18z LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQy XzMueCA9IHQzXzMueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMSB0Ml8zCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMueSwgdDJf My54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18zLnks IHQzXzMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AzX3MxIHQzXzMKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMy55 LCB0M18zLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAg ICAgICBPdXRwdXQ6IHQxXzQueCwgc3VtKCh0Ml80LnkgKyB0M180LnkpKSwgY291bnQoKikKKyAg ICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfNC54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBK b2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzQueCwgKFBBUlRJQUwgc3VtKCh0 Ml80LnkgKyB0M180LnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAg ICAgSGFzaCBDb25kOiAodDFfNC54ID0gdDJfNC54KQorICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AzX3MyIHQxXzQKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfNC54CisgICAgICAgICAgICAgICAgICAgICAt PiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml80LngsIHQzXzQu eCwgKFBBUlRJQUwgc3VtKCh0Ml80LnkgKyB0M180LnkpKSksIChQQVJUSUFMIGNvdW50KCopKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml80LngsIHQzXzQueCwgUEFS VElBTCBzdW0oKHQyXzQueSArIHQzXzQueSkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzQueAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml80LnksIHQyXzQueCwgdDNfNC55LCB0M180LngKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzQueCA9 IHQzXzQueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMiB0Ml80CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzQueSwgdDJfNC54Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M180LnksIHQzXzQu eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AzX3MyIHQzXzQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfNC55LCB0M180 LngKKygxMTQgcm93cykKKworU0VMRUNUIHQxLngsIHN1bSh0Mi55ICsgdDMueSksIGNvdW50KCop IEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEu eCA9IHQyLnggSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQzIG9uIHQyLnggPSB0My54IEdST1VQIEJZ IHQxLnggT1JERVIgQlkgdDEueDsKKyB4ICB8ICAgc3VtICAgfCBjb3VudCAKKy0tLS0rLS0tLS0t LS0tKy0tLS0tLS0KKyAgMCB8ICAgICAgIDAgfCAzNTkzNworICAxIHwgICA3ODYwOCB8IDM5MzA0 CisgIDIgfCAgMTU3MjE2IHwgMzkzMDQKKyAgMyB8ICAyMzU4MjQgfCAzOTMwNAorICA0IHwgIDMx NDQzMiB8IDM5MzA0CisgIDUgfCAgMzkzMDQwIHwgMzkzMDQKKyAgNiB8ICA0NzE2NDggfCAzOTMw NAorICA3IHwgIDU1MDI1NiB8IDM5MzA0CisgIDggfCAgNjI4ODY0IHwgMzkzMDQKKyAgOSB8ICA3 MDc0NzIgfCAzOTMwNAorIDEwIHwgIDc4NjA4MCB8IDM5MzA0CisgMTEgfCAgNzkwNjE0IHwgMzU5 MzcKKyAxMiB8ICA4NjI0ODggfCAzNTkzNworIDEzIHwgIDkzNDM2MiB8IDM1OTM3CisgMTQgfCAx MDA2MjM2IHwgMzU5MzcKKyAxNSB8IDEwNzgxMTAgfCAzNTkzNworIDE2IHwgMTE0OTk4NCB8IDM1 OTM3CisgMTcgfCAxMjIxODU4IHwgMzU5MzcKKyAxOCB8IDEyOTM3MzIgfCAzNTkzNworIDE5IHwg MTM2NTYwNiB8IDM1OTM3CisgMjAgfCAxNDM3NDgwIHwgMzU5MzcKKyAyMSB8IDE1MDkzNTQgfCAz NTkzNworIDIyIHwgMTU4MTIyOCB8IDM1OTM3CisgMjMgfCAxNjUzMTAyIHwgMzU5MzcKKyAyNCB8 IDE3MjQ5NzYgfCAzNTkzNworIDI1IHwgMTc5Njg1MCB8IDM1OTM3CisgMjYgfCAxODY4NzI0IHwg MzU5MzcKKyAyNyB8IDE5NDA1OTggfCAzNTkzNworIDI4IHwgMjAxMjQ3MiB8IDM1OTM3CisgMjkg fCAyMDg0MzQ2IHwgMzU5MzcKKygzMCByb3dzKQorCistLSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uCitF WFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDMueSwgc3VtKHQyLnkgKyB0My55 KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdnX3RhYl9t bCB0MiBPTiB0MS54ID0gdDIueCBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDMgb24gdDIueCA9IHQz LnggR1JPVVAgQlkgdDMueSBPUkRFUiBCWSB0My55OworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTb3J0CisgICBPdXRwdXQ6IHQz LnksIChzdW0oKHQyLnkgKyB0My55KSkpLCAoY291bnQoKikpCisgICBTb3J0IEtleTogdDMueQor ICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgIE91dHB1dDogdDMueSwgc3Vt KCh0Mi55ICsgdDMueSkpLCBjb3VudCgqKQorICAgICAgICAgR3JvdXAgS2V5OiB0My55CisgICAg ICAgICAtPiAgQXBwZW5kCisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQzLnksIChQQVJUSUFMIHN1bSgodDIueSArIHQzLnkpKSksIChQ QVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEueCA9 IHQyLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2Vy X2FnZ190YWJfbWxfcDEgdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEu eAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDIueCwgdDMueSwgdDMueCwgKFBBUlRJQUwgc3VtKCh0Mi55ICsgdDMueSkp KSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFy dGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQyLngsIHQzLnksIHQzLngsIFBBUlRJQUwgc3VtKCh0Mi55ICsgdDMueSkpLCBQQVJUSUFM IGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQy LngsIHQzLnksIHQzLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNo IEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIu eSwgdDIueCwgdDMueSwgdDMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgSGFzaCBDb25kOiAodDIueCA9IHQzLngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDEgdDIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIu eSwgdDIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDMu eSwgdDMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AxIHQzCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzLnksIHQzLngK KyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDNfMS55LCAoUEFSVElBTCBzdW0oKHQyXzEueSArIHQzXzEueSkpKSwgKFBBUlRJQUwgY291 bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MV8xLnggPSB0Ml8xLngp CisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190 YWJfbWxfcDJfczEgdDFfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8x LngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQyXzEueCwgdDNfMS55LCB0M18xLngsIChQQVJUSUFMIHN1bSgodDJfMS55 ICsgdDNfMS55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDJfMS54LCB0M18xLnksIHQzXzEueCwgUEFSVElBTCBzdW0oKHQyXzEu eSArIHQzXzEueSkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBHcm91cCBLZXk6IHQyXzEueCwgdDNfMS55LCB0M18xLngKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS55LCB0Ml8xLngsIHQzXzEueSwgdDNfMS54Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8xLngg PSB0M18xLngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDJfczEgdDJfMQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLnksIHQyXzEueAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMS55LCB0M18x LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMSB0M18xCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzEueSwgdDNf MS54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQzXzIueSwgKFBBUlRJQUwgc3VtKCh0Ml8yLnkgKyB0M18yLnkpKSksIChQQVJUSUFM IGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMi54ID0gdDJf Mi54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9h Z2dfdGFiX21sX3AyX3MyIHQxXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDFfMi54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0Ml8yLngsIHQzXzIueSwgdDNfMi54LCAoUEFSVElBTCBzdW0oKHQy XzIueSArIHQzXzIueSkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQyXzIueCwgdDNfMi55LCB0M18yLngsIFBBUlRJQUwgc3VtKCh0 Ml8yLnkgKyB0M18yLnkpKSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8yLngsIHQzXzIueSwgdDNfMi54CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueSwgdDJfMi54LCB0M18yLnksIHQzXzIu eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJf Mi54ID0gdDNfMi54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3MyIHQyXzIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi55LCB0Ml8y LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzIueSwg dDNfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg U2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDJfczIgdDNfMgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18yLnks IHQzXzIueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0M18zLnksIChQQVJUSUFMIHN1bSgodDJfMy55ICsgdDNfMy55KSkpLCAoUEFS VElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzMueCA9 IHQyXzMueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFn ZXJfYWdnX3RhYl9tbF9wM19zMSB0MV8zCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQxXzMueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDJfMy54LCB0M18zLnksIHQzXzMueCwgKFBBUlRJQUwgc3Vt KCh0Ml8zLnkgKyB0M18zLnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLngsIHQzXzMueSwgdDNfMy54LCBQQVJUSUFMIHN1 bSgodDJfMy55ICsgdDNfMy55KSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfMy54LCB0M18zLnksIHQzXzMueAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLnksIHQyXzMueCwgdDNfMy55LCB0 M18zLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDog KHQyXzMueCA9IHQzXzMueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMSB0Ml8zCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMueSwg dDJfMy54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18z LnksIHQzXzMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AzX3MxIHQzXzMKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNf My55LCB0M18zLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDNfNC55LCAoUEFSVElBTCBzdW0oKHQyXzQueSArIHQzXzQueSkpKSwg KFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MV80 LnggPSB0Ml80LngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGlj LmVhZ2VyX2FnZ190YWJfbWxfcDNfczIgdDFfNAorICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0MV80LngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzQueCwgdDNfNC55LCB0M180LngsIChQQVJUSUFM IHN1bSgodDJfNC55ICsgdDNfNC55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfNC54LCB0M180LnksIHQzXzQueCwgUEFSVElB TCBzdW0oKHQyXzQueSArIHQzXzQueSkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzQueCwgdDNfNC55LCB0M180LngKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfNC55LCB0Ml80LngsIHQzXzQu eSwgdDNfNC54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENv bmQ6ICh0Ml80LnggPSB0M180LngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczIgdDJfNAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml80 LnksIHQyXzQueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhh c2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDNfNC55LCB0M180LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMiB0M180Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQzXzQueSwgdDNfNC54CisoMTAyIHJvd3MpCisKK1NFTEVDVCB0My55LCBzdW0odDIueSArIHQz LnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFi X21sIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MyBvbiB0Mi54ID0g dDMueCBHUk9VUCBCWSB0My55IE9SREVSIEJZIHQzLnk7CisgeSAgfCAgIHN1bSAgIHwgY291bnQg CistLS0tKy0tLS0tLS0tLSstLS0tLS0tCisgIDAgfCAgICAgICAwIHwgMzU5MzcKKyAgMSB8ICAg Nzg2MDggfCAzOTMwNAorICAyIHwgIDE1NzIxNiB8IDM5MzA0CisgIDMgfCAgMjM1ODI0IHwgMzkz MDQKKyAgNCB8ICAzMTQ0MzIgfCAzOTMwNAorICA1IHwgIDM5MzA0MCB8IDM5MzA0CisgIDYgfCAg NDcxNjQ4IHwgMzkzMDQKKyAgNyB8ICA1NTAyNTYgfCAzOTMwNAorICA4IHwgIDYyODg2NCB8IDM5 MzA0CisgIDkgfCAgNzA3NDcyIHwgMzkzMDQKKyAxMCB8ICA3ODYwODAgfCAzOTMwNAorIDExIHwg IDc5MDYxNCB8IDM1OTM3CisgMTIgfCAgODYyNDg4IHwgMzU5MzcKKyAxMyB8ICA5MzQzNjIgfCAz NTkzNworIDE0IHwgMTAwNjIzNiB8IDM1OTM3CisgMTUgfCAxMDc4MTEwIHwgMzU5MzcKKyAxNiB8 IDExNDk5ODQgfCAzNTkzNworIDE3IHwgMTIyMTg1OCB8IDM1OTM3CisgMTggfCAxMjkzNzMyIHwg MzU5MzcKKyAxOSB8IDEzNjU2MDYgfCAzNTkzNworIDIwIHwgMTQzNzQ4MCB8IDM1OTM3CisgMjEg fCAxNTA5MzU0IHwgMzU5MzcKKyAyMiB8IDE1ODEyMjggfCAzNTkzNworIDIzIHwgMTY1MzEwMiB8 IDM1OTM3CisgMjQgfCAxNzI0OTc2IHwgMzU5MzcKKyAyNSB8IDE3OTY4NTAgfCAzNTkzNworIDI2 IHwgMTg2ODcyNCB8IDM1OTM3CisgMjcgfCAxOTQwNTk4IHwgMzU5MzcKKyAyOCB8IDIwMTI0NzIg fCAzNTkzNworIDI5IHwgMjA4NDM0NiB8IDM1OTM3CisoMzAgcm93cykKKworRFJPUCBUQUJMRSBl YWdlcl9hZ2dfdGFiX21sOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9q b2luLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQKaW5kZXggMDQwNzky NjhiOTguLmQwYmI2NmY0M2RhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2pvaW4ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQKQEAgLTI4 MzcsMjAgKzI4MzcsMjIgQEAgc2VsZWN0IHgudGhvdXNhbmQsIHgudHdvdGhvdXNhbmQsIGNvdW50 KCopCiBmcm9tIHRlbmsxIHggaW5uZXIgam9pbiB0ZW5rMSB5IG9uIHgudGhvdXNhbmQgPSB5LnRo b3VzYW5kCiBncm91cCBieSB4LnRob3VzYW5kLCB4LnR3b3Rob3VzYW5kCiBvcmRlciBieSB4LnRo b3VzYW5kIGRlc2MsIHgudHdvdGhvdXNhbmQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gR3JvdXBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5h bGl6ZSBHcm91cEFnZ3JlZ2F0ZQogICAgR3JvdXAgS2V5OiB4LnRob3VzYW5kLCB4LnR3b3Rob3Vz YW5kCiAgICAtPiAgSW5jcmVtZW50YWwgU29ydAogICAgICAgICAgU29ydCBLZXk6IHgudGhvdXNh bmQgREVTQywgeC50d290aG91c2FuZAogICAgICAgICAgUHJlc29ydGVkIEtleTogeC50aG91c2Fu ZAogICAgICAgICAgLT4gIE1lcmdlIEpvaW4KICAgICAgICAgICAgICAgIE1lcmdlIENvbmQ6ICh5 LnRob3VzYW5kID0geC50aG91c2FuZCkKLSAgICAgICAgICAgICAgIC0+ICBJbmRleCBPbmx5IFNj YW4gQmFja3dhcmQgdXNpbmcgdGVuazFfdGhvdXNfdGVudGhvdXMgb24gdGVuazEgeQorICAgICAg ICAgICAgICAgLT4gIFBhcnRpYWwgR3JvdXBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAg IEdyb3VwIEtleTogeS50aG91c2FuZAorICAgICAgICAgICAgICAgICAgICAgLT4gIEluZGV4IE9u bHkgU2NhbiBCYWNrd2FyZCB1c2luZyB0ZW5rMV90aG91c190ZW50aG91cyBvbiB0ZW5rMSB5CiAg ICAgICAgICAgICAgICAtPiAgU29ydAogICAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHgu dGhvdXNhbmQgREVTQwogICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHRlbmsx IHgKLSgxMSByb3dzKQorKDEzIHJvd3MpCiAKIHJlc2V0IGVuYWJsZV9oYXNoYWdnOwogcmVzZXQg ZW5hYmxlX25lc3Rsb29wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w YXJ0aXRpb25fYWdncmVnYXRlLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0 aW9uX2FnZ3JlZ2F0ZS5vdXQKaW5kZXggNWYyYzBjZjU3ODYuLjFmNTZmNTUxNTViIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9hZ2dyZWdhdGUub3V0Cisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX2FnZ3JlZ2F0ZS5vdXQKQEAg LTEzLDYgKzEzLDggQEAgU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2pvaW4gVE8gdHJ1ZTsKIFNF VCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyIFRPIDA7CiAtLSBEaXNhYmxlIGluY3Jl bWVudGFsIHNvcnQsIHdoaWNoIGNhbiBpbmZsdWVuY2Ugc2VsZWN0ZWQgcGxhbnMgZHVlIHRvIGZ1 enogZmFjdG9yLgogU0VUIGVuYWJsZV9pbmNyZW1lbnRhbF9zb3J0IFRPIG9mZjsKKy0tIERpc2Fi bGUgZWFnZXIgYWdncmVnYXRpb24sIHdoaWNoIGNhbiBpbnRlcmZlcmUgd2l0aCB0aGUgZ2VuZXJh dGlvbiBvZiBwYXJ0aXRpb253aXNlIGFnZ3JlZ2F0aW9uLgorU0VUIGVuYWJsZV9lYWdlcl9hZ2dy ZWdhdGUgVE8gb2ZmOwogLS0KIC0tIFRlc3RzIGZvciBsaXN0IHBhcnRpdGlvbmVkIHRhYmxlcy4K IC0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CmluZGV4IDgzMjI4Y2ZjYTI5 Li4zYjM3ZmFmYTY1YiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2 aWV3cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQKQEAg LTE1MSw2ICsxNTEsNyBAQCBzZWxlY3QgbmFtZSwgc2V0dGluZyBmcm9tIHBnX3NldHRpbmdzIHdo ZXJlIG5hbWUgbGlrZSAnZW5hYmxlJSc7CiAgZW5hYmxlX2FzeW5jX2FwcGVuZCAgICAgICAgICAg IHwgb24KICBlbmFibGVfYml0bWFwc2NhbiAgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9kaXN0 aW5jdF9yZW9yZGVyaW5nICAgICB8IG9uCisgZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZSAgICAgICAg IHwgb24KICBlbmFibGVfZ2F0aGVybWVyZ2UgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9ncm91 cF9ieV9yZW9yZGVyaW5nICAgICB8IG9uCiAgZW5hYmxlX2hhc2hhZ2cgICAgICAgICAgICAgICAg IHwgb24KQEAgLTE3Miw3ICsxNzMsNyBAQCBzZWxlY3QgbmFtZSwgc2V0dGluZyBmcm9tIHBnX3Nl dHRpbmdzIHdoZXJlIG5hbWUgbGlrZSAnZW5hYmxlJSc7CiAgZW5hYmxlX3NlcXNjYW4gICAgICAg ICAgICAgICAgIHwgb24KICBlbmFibGVfc29ydCAgICAgICAgICAgICAgICAgICAgfCBvbgogIGVu YWJsZV90aWRzY2FuICAgICAgICAgICAgICAgICB8IG9uCi0oMjQgcm93cykKKygyNSByb3dzKQog CiAtLSBUaGVyZSBhcmUgYWx3YXlzIHdhaXQgZXZlbnQgZGVzY3JpcHRpb25zIGZvciB2YXJpb3Vz IHR5cGVzLiAgSW5qZWN0aW9uUG9pbnQKIC0tIG1heSBiZSBwcmVzZW50IG9yIGFic2VudCwgZGVw ZW5kaW5nIG9uIGhpc3Rvcnkgc2luY2UgbGFzdCBwb3N0bWFzdGVyIHN0YXJ0LgpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3Mv cGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggZmJmZmM2N2FlNjAuLmY5NDUwY2RjNDc3IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTEyMyw3ICsxMjMsNyBAQCB0ZXN0OiBwbGFuY2Fj aGUgbGltaXQgcGxwZ3NxbCBjb3B5MiB0ZW1wIGRvbWFpbiByYW5nZWZ1bmNzIHByZXBhcmUgY29u dmVyc2lvbiB0cgogIyBUaGUgc3RhdHMgdGVzdCByZXNldHMgc3RhdHMsIHNvIG5vdGhpbmcgZWxz ZSBuZWVkaW5nIHN0YXRzIGFjY2VzcyBjYW4gYmUgaW4KICMgdGhpcyBncm91cC4KICMgLS0tLS0t LS0tLQotdGVzdDogcGFydGl0aW9uX2pvaW4gcGFydGl0aW9uX3BydW5lIHJlbG9wdGlvbnMgaGFz aF9wYXJ0IGluZGV4aW5nIHBhcnRpdGlvbl9hZ2dyZWdhdGUgcGFydGl0aW9uX2luZm8gdHVwbGVz b3J0IGV4cGxhaW4gY29tcHJlc3Npb24gY29tcHJlc3Npb25fbHo0IG1lbW9pemUgc3RhdHMgcHJl ZGljYXRlIG51bWEKK3Rlc3Q6IHBhcnRpdGlvbl9qb2luIHBhcnRpdGlvbl9wcnVuZSByZWxvcHRp b25zIGhhc2hfcGFydCBpbmRleGluZyBwYXJ0aXRpb25fYWdncmVnYXRlIHBhcnRpdGlvbl9pbmZv IHR1cGxlc29ydCBleHBsYWluIGNvbXByZXNzaW9uIGNvbXByZXNzaW9uX2x6NCBtZW1vaXplIHN0 YXRzIHByZWRpY2F0ZSBudW1hIGVhZ2VyX2FnZ3JlZ2F0ZQogCiAjIGV2ZW50X3RyaWdnZXIgZGVw ZW5kcyBvbiBjcmVhdGVfYW0gYW5kIGNhbm5vdCBydW4gY29uY3VycmVudGx5IHdpdGgKICMgYW55 IHRlc3QgdGhhdCBydW5zIERETApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZWFn ZXJfYWdncmVnYXRlLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2VhZ2VyX2FnZ3JlZ2F0ZS5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjVkYTg3NDlhNmNiCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZWFnZXJfYWdncmVnYXRlLnNx bApAQCAtMCwwICsxLDE5NCBAQAorLS0KKy0tIEVBR0VSIEFHR1JFR0FUSU9OCistLSBUZXN0IHdl IGNhbiBwdXNoIGFnZ3JlZ2F0aW9uIGRvd24gYmVsb3cgam9pbgorLS0KKworLS0gRW5hYmxlIGVh Z2VyIGFnZ3JlZ2F0aW9uLCB3aGljaCBieSBkZWZhdWx0IGlzIGRpc2FibGVkLgorU0VUIGVuYWJs ZV9lYWdlcl9hZ2dyZWdhdGUgVE8gb247CisKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdDEgKGEg aW50LCBiIGludCwgYyBkb3VibGUgcHJlY2lzaW9uKTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2df dDIgKGEgaW50LCBiIGludCwgYyBkb3VibGUgcHJlY2lzaW9uKTsKK0NSRUFURSBUQUJMRSBlYWdl cl9hZ2dfdDMgKGEgaW50LCBiIGludCwgYyBkb3VibGUgcHJlY2lzaW9uKTsKKworSU5TRVJUIElO VE8gZWFnZXJfYWdnX3QxIFNFTEVDVCBpLCBpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEw MDApaTsKK0lOU0VSVCBJTlRPIGVhZ2VyX2FnZ190MiBTRUxFQ1QgaSwgaSUxMCwgaSBGUk9NIGdl bmVyYXRlX3NlcmllcygxLCAxMDAwKWk7CitJTlNFUlQgSU5UTyBlYWdlcl9hZ2dfdDMgU0VMRUNU IGklMTAsIGklMTAsIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMClpOworCitBTkFMWVpF IGVhZ2VyX2FnZ190MTsKK0FOQUxZWkUgZWFnZXJfYWdnX3QyOworQU5BTFlaRSBlYWdlcl9hZ2df dDM7CisKKworLS0KKy0tIFRlc3QgZWFnZXIgYWdncmVnYXRpb24gb3ZlciBiYXNlIHJlbAorLS0K KworLS0gUGVyZm9ybSBzY2FuIG9mIGEgdGFibGUsIGFnZ3JlZ2F0ZSB0aGUgcmVzdWx0LCBqb2lu IGl0IHRvIHRoZSBvdGhlciB0YWJsZQorLS0gYW5kIGZpbmFsaXplIHRoZSBhZ2dyZWdhdGlvbi4K K0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS5hLCBhdmcodDIuYykgRlJP TSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JP VVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVh Z2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBC WSB0MS5hIE9SREVSIEJZIHQxLmE7CisKKy0tIFByb2R1Y2UgcmVzdWx0cyB3aXRoIHNvcnRpbmcg YWdncmVnYXRpb24KK1NFVCBlbmFibGVfaGFzaGFnZyBUTyBvZmY7CisKK0VYUExBSU4gKFZFUkJP U0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS5hLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEg dDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRF UiBCWSB0MS5hOworU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBK T0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZ IHQxLmE7CisKK1JFU0VUIGVuYWJsZV9oYXNoYWdnOworCisKKy0tCistLSBUZXN0IGVhZ2VyIGFn Z3JlZ2F0aW9uIG92ZXIgam9pbiByZWwKKy0tCisKKy0tIFBlcmZvcm0gam9pbiBvZiB0YWJsZXMs IGFnZ3JlZ2F0ZSB0aGUgcmVzdWx0LCBqb2luIGl0IHRvIHRoZSBvdGhlciB0YWJsZQorLS0gYW5k IGZpbmFsaXplIHRoZSBhZ2dyZWdhdGlvbi4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikK K1NFTEVDVCB0MS5hLCBhdmcodDIuYyArIHQzLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4g ZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEpPSU4gZWFnZXJfYWdnX3QzIHQzIE9OIHQy LmEgPSB0My5hIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKK1NFTEVDVCB0MS5hLCBhdmco dDIuYyArIHQzLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9O IHQxLmIgPSB0Mi5iIEpPSU4gZWFnZXJfYWdnX3QzIHQzIE9OIHQyLmEgPSB0My5hIEdST1VQIEJZ IHQxLmEgT1JERVIgQlkgdDEuYTsKKworLS0gUHJvZHVjZSByZXN1bHRzIHdpdGggc29ydGluZyBh Z2dyZWdhdGlvbgorU0VUIGVuYWJsZV9oYXNoYWdnIFRPIG9mZjsKKworRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jICsgdDMuYykgRlJPTSBlYWdlcl9h Z2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgSk9JTiBlYWdlcl9h Z2dfdDMgdDMgT04gdDIuYSA9IHQzLmEgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworU0VM RUNUIHQxLmEsIGF2Zyh0Mi5jICsgdDMuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdl cl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgSk9JTiBlYWdlcl9hZ2dfdDMgdDMgT04gdDIuYSA9 IHQzLmEgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworCitSRVNFVCBlbmFibGVfaGFzaGFn ZzsKKworCistLQorLS0gVGVzdCB0aGF0IGVhZ2VyIGFnZ3JlZ2F0aW9uIHdvcmtzIGZvciBvdXRl ciBqb2luCistLQorCistLSBFbnN1cmUgYWdncmVnYXRpb24gY2FuIGJlIHB1c2hlZCBkb3duIHRv IHRoZSBub24tbnVsbGFibGUgc2lkZQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VM RUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBSSUdIVCBKT0lOIGVhZ2Vy X2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CitT RUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIFJJR0hUIEpPSU4gZWFn ZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsK KworLS0gRW5zdXJlIGFnZ3JlZ2F0aW9uIGNhbm5vdCBiZSBwdXNoZWQgZG93biB0byB0aGUgbnVs bGFibGUgc2lkZQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQyLmIsIGF2 Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBMRUZUIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9O IHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQyLmIgT1JERVIgQlkgdDIuYjsKK1NFTEVDVCB0Mi5iLCBh dmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgTEVGVCBKT0lOIGVhZ2VyX2FnZ190MiB0MiBP TiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0Mi5iIE9SREVSIEJZIHQyLmI7CisKKworLS0KKy0tIFRl c3QgdGhhdCBlYWdlciBhZ2dyZWdhdGlvbiB3b3JrcyBmb3IgcGFyYWxsZWwgcGxhbnMKKy0tCisK K1NFVCBwYXJhbGxlbF9zZXR1cF9jb3N0PTA7CitTRVQgcGFyYWxsZWxfdHVwbGVfY29zdD0wOwor U0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemU9MDsKK1NFVCBtYXhfcGFyYWxsZWxfd29y a2Vyc19wZXJfZ2F0aGVyPTQ7CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVD VCB0MS5hLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIg dDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworU0VMRUNUIHQx LmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBP TiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisKK1JFU0VUIHBhcmFs bGVsX3NldHVwX2Nvc3Q7CitSRVNFVCBwYXJhbGxlbF90dXBsZV9jb3N0OworUkVTRVQgbWluX3Bh cmFsbGVsX3RhYmxlX3NjYW5fc2l6ZTsKK1JFU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9n YXRoZXI7CisKKworRFJPUCBUQUJMRSBlYWdlcl9hZ2dfdDE7CitEUk9QIFRBQkxFIGVhZ2VyX2Fn Z190MjsKK0RST1AgVEFCTEUgZWFnZXJfYWdnX3QzOworCisKKy0tCistLSBUZXN0IGVhZ2VyIGFn Z3JlZ2F0aW9uIGZvciBwYXJ0aXRpb253aXNlIGpvaW4KKy0tCisKKy0tIEVuYWJsZSBwYXJ0aXRp b253aXNlIGFnZ3JlZ2F0ZSwgd2hpY2ggYnkgZGVmYXVsdCBpcyBkaXNhYmxlZC4KK1NFVCBlbmFi bGVfcGFydGl0aW9ud2lzZV9hZ2dyZWdhdGUgVE8gdHJ1ZTsKKy0tIEVuYWJsZSBwYXJ0aXRpb253 aXNlIGpvaW4sIHdoaWNoIGJ5IGRlZmF1bHQgaXMgZGlzYWJsZWQuCitTRVQgZW5hYmxlX3BhcnRp dGlvbndpc2Vfam9pbiBUTyB0cnVlOworCitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYjEoeCBp bnQsIHkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoeCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdn X3RhYjFfcDEgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWIxIEZPUiBWQUxVRVMgRlJPTSAoMCkg VE8gKDUpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIxX3AyIFBBUlRJVElPTiBPRiBlYWdl cl9hZ2dfdGFiMSBGT1IgVkFMVUVTIEZST00gKDUpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgZWFn ZXJfYWdnX3RhYjFfcDMgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWIxIEZPUiBWQUxVRVMgRlJP TSAoMTApIFRPICgxNSk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYjIoeCBpbnQsIHkgaW50 KSBQQVJUSVRJT04gQlkgUkFOR0UoeSk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYjJfcDEg UEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWIyIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDUpOwor Q1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIyX3AyIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFi MiBGT1IgVkFMVUVTIEZST00gKDUpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3Rh YjJfcDMgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWIyIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRP ICgxNSk7CitJTlNFUlQgSU5UTyBlYWdlcl9hZ2dfdGFiMSBTRUxFQ1QgaSAlIDE1LCBpICUgMTAg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgaTsKK0lOU0VSVCBJTlRPIGVhZ2VyX2FnZ190 YWIyIFNFTEVDVCBpICUgMTAsIGkgJSAxNSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBp OworCitBTkFMWVpFIGVhZ2VyX2FnZ190YWIxOworQU5BTFlaRSBlYWdlcl9hZ2dfdGFiMjsKKwor LS0gV2hlbiBHUk9VUCBCWSBjbGF1c2UgbWF0Y2hlczsgZnVsbCBhZ2dyZWdhdGlvbiBpcyBwZXJm b3JtZWQgZm9yIGVhY2ggcGFydGl0aW9uLgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQor U0VMRUNUIHQxLngsIHN1bSh0MS55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSwg ZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDEueCBPUkRFUiBC WSB0MS54OworU0VMRUNUIHQxLngsIHN1bSh0MS55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2df dGFiMSB0MSwgZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDEu eCBPUkRFUiBCWSB0MS54OworCistLSBHUk9VUCBCWSBoYXZpbmcgb3RoZXIgbWF0Y2hpbmcga2V5 CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDIueSwgc3VtKHQxLnkpLCBj b3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWIxIHQxLCBlYWdlcl9hZ2dfdGFiMiB0MiBXSEVSRSB0 MS54ID0gdDIueSBHUk9VUCBCWSB0Mi55IE9SREVSIEJZIHQyLnk7CitTRUxFQ1QgdDIueSwgc3Vt KHQxLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWIxIHQxLCBlYWdlcl9hZ2dfdGFiMiB0 MiBXSEVSRSB0MS54ID0gdDIueSBHUk9VUCBCWSB0Mi55IE9SREVSIEJZIHQyLnk7CisKKy0tIFdo ZW4gR1JPVVAgQlkgY2xhdXNlIGRvZXMgbm90IG1hdGNoOyBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGlz IHBlcmZvcm1lZCBmb3IgZWFjaCBwYXJ0aXRpb24uCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBP RkYpCitTRUxFQ1QgdDIueCwgc3VtKHQxLngpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWIx IHQxLCBlYWdlcl9hZ2dfdGFiMiB0MiBXSEVSRSB0MS54ID0gdDIueSBHUk9VUCBCWSB0Mi54IEhB VklORyBhdmcodDEueCkgPiA1IE9SREVSIEJZIHQyLng7CitTRUxFQ1QgdDIueCwgc3VtKHQxLngp LCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWIxIHQxLCBlYWdlcl9hZ2dfdGFiMiB0MiBXSEVS RSB0MS54ID0gdDIueSBHUk9VUCBCWSB0Mi54IEhBVklORyBhdmcodDEueCkgPiA1IE9SREVSIEJZ IHQyLng7CisKKy0tIENoZWNrIHdpdGggZWFnZXIgYWdncmVnYXRpb24gb3ZlciBqb2luIHJlbAor LS0gZnVsbCBhZ2dyZWdhdGlvbgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNU IHQxLngsIHN1bSh0Mi55ICsgdDMueSkgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSBKT0lOIGVhZ2Vy X2FnZ190YWIxIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFnZXJfYWdnX3RhYjEgdDMgT04gdDIu eCA9IHQzLnggR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworU0VMRUNUIHQxLngsIHN1bSh0 Mi55ICsgdDMueSkgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSBKT0lOIGVhZ2VyX2FnZ190YWIxIHQy IE9OIHQxLnggPSB0Mi54IEpPSU4gZWFnZXJfYWdnX3RhYjEgdDMgT04gdDIueCA9IHQzLnggR1JP VVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworCistLSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uCitTRVQg ZW5hYmxlX2hhc2hhZ2cgVE8gb2ZmOworU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRo ZXIgVE8gMDsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0My55LCBzdW0o dDIueSArIHQzLnkpIEZST00gZWFnZXJfYWdnX3RhYjEgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiMSB0 MiBPTiB0MS54ID0gdDIueCBKT0lOIGVhZ2VyX2FnZ190YWIxIHQzIE9OIHQyLnggPSB0My54IEdS T1VQIEJZIHQzLnkgT1JERVIgQlkgdDMueTsKK1NFTEVDVCB0My55LCBzdW0odDIueSArIHQzLnkp IEZST00gZWFnZXJfYWdnX3RhYjEgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiMSB0MiBPTiB0MS54ID0g dDIueCBKT0lOIGVhZ2VyX2FnZ190YWIxIHQzIE9OIHQyLnggPSB0My54IEdST1VQIEJZIHQzLnkg T1JERVIgQlkgdDMueTsKK1JFU0VUIGVuYWJsZV9oYXNoYWdnOworUkVTRVQgbWF4X3BhcmFsbGVs X3dvcmtlcnNfcGVyX2dhdGhlcjsKKworRFJPUCBUQUJMRSBlYWdlcl9hZ2dfdGFiMTsKK0RST1Ag VEFCTEUgZWFnZXJfYWdnX3RhYjI7CisKKworLS0KKy0tIFRlc3Qgd2l0aCBtdWx0aS1sZXZlbCBw YXJ0aXRpb25pbmcgc2NoZW1lCistLQorQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWJfbWwoeCBp bnQsIHkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoeCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdn X3RhYl9tbF9wMSBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYl9tbCBGT1IgVkFMVUVTIEZST00g KDApIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbF9wMiBQQVJUSVRJT04g T0YgZWFnZXJfYWdnX3RhYl9tbCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApIFBBUlRJVElP TiBCWSBSQU5HRSh4KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sX3AyX3MxIFBBUlRJ VElPTiBPRiBlYWdlcl9hZ2dfdGFiX21sX3AyIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSk7 CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbF9wMl9zMiBQQVJUSVRJT04gT0YgZWFnZXJf YWdnX3RhYl9tbF9wMiBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApOworQ1JFQVRFIFRBQkxF IGVhZ2VyX2FnZ190YWJfbWxfcDMgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWJfbWwgRk9SIFZB TFVFUyBGUk9NICgyMCkgVE8gKDMwKSBQQVJUSVRJT04gQlkgUkFOR0UoeCk7CitDUkVBVEUgVEFC TEUgZWFnZXJfYWdnX3RhYl9tbF9wM19zMSBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYl9tbF9w MyBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMjUpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190 YWJfbWxfcDNfczIgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWJfbWxfcDMgRk9SIFZBTFVFUyBG Uk9NICgyNSkgVE8gKDMwKTsKK0lOU0VSVCBJTlRPIGVhZ2VyX2FnZ190YWJfbWwgU0VMRUNUIGkg JSAzMCwgaSAlIDMwIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIGk7CisKK0FOQUxZWkUg ZWFnZXJfYWdnX3RhYl9tbDsKKworLS0gV2hlbiBHUk9VUCBCWSBjbGF1c2UgbWF0Y2hlczsgZnVs bCBhZ2dyZWdhdGlvbiBpcyBwZXJmb3JtZWQgZm9yIGVhY2ggcGFydGl0aW9uLgorRVhQTEFJTiAo VkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLngsIHN1bSh0Mi55KSwgY291bnQoKikgRlJP TSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0MS54ID0g dDIueCBHUk9VUCBCWSB0MS54IE9SREVSIEJZIHQxLng7CitTRUxFQ1QgdDEueCwgc3VtKHQyLnkp LCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21s IHQyIE9OIHQxLnggPSB0Mi54IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKKworLS0gV2hl biBHUk9VUCBCWSBjbGF1c2UgZG9lcyBub3QgbWF0Y2g7IHBhcnRpYWwgYWdncmVnYXRpb24gaXMg cGVyZm9ybWVkIGZvciBlYWNoIHBhcnRpdGlvbi4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9G RikKK1NFTEVDVCB0MS55LCBzdW0odDIueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYl9t bCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9IHQyLnggR1JPVVAgQlkgdDEu eSBPUkRFUiBCWSB0MS55OworU0VMRUNUIHQxLnksIHN1bSh0Mi55KSwgY291bnQoKikgRlJPTSBl YWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0MS54ID0gdDIu eCBHUk9VUCBCWSB0MS55IE9SREVSIEJZIHQxLnk7CisKKy0tIENoZWNrIHdpdGggZWFnZXIgYWdn cmVnYXRpb24gb3ZlciBqb2luIHJlbAorLS0gZnVsbCBhZ2dyZWdhdGlvbgorRVhQTEFJTiAoVkVS Qk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLngsIHN1bSh0Mi55ICsgdDMueSksIGNvdW50KCop IEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEu eCA9IHQyLnggSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQzIG9uIHQyLnggPSB0My54IEdST1VQIEJZ IHQxLnggT1JERVIgQlkgdDEueDsKK1NFTEVDVCB0MS54LCBzdW0odDIueSArIHQzLnkpLCBjb3Vu dCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9O IHQxLnggPSB0Mi54IEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MyBvbiB0Mi54ID0gdDMueCBHUk9V UCBCWSB0MS54IE9SREVSIEJZIHQxLng7CisKKy0tIHBhcnRpYWwgYWdncmVnYXRpb24KK0VYUExB SU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0My55LCBzdW0odDIueSArIHQzLnkpLCBj b3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQy IE9OIHQxLnggPSB0Mi54IEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MyBvbiB0Mi54ID0gdDMueCBH Uk9VUCBCWSB0My55IE9SREVSIEJZIHQzLnk7CitTRUxFQ1QgdDMueSwgc3VtKHQyLnkgKyB0My55 KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdnX3RhYl9t bCB0MiBPTiB0MS54ID0gdDIueCBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDMgb24gdDIueCA9IHQz LnggR1JPVVAgQlkgdDMueSBPUkRFUiBCWSB0My55OworCitEUk9QIFRBQkxFIGVhZ2VyX2FnZ190 YWJfbWw7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fYWdncmVn YXRlLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9hZ2dyZWdhdGUuc3FsCmlu ZGV4IGFiMDcwZmVlMjQ0Li4xMjRjYzI2MDQ2MSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcGFydGl0aW9uX2FnZ3JlZ2F0ZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv cGFydGl0aW9uX2FnZ3JlZ2F0ZS5zcWwKQEAgLTE0LDYgKzE0LDggQEAgU0VUIGVuYWJsZV9wYXJ0 aXRpb253aXNlX2pvaW4gVE8gdHJ1ZTsKIFNFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0 aGVyIFRPIDA7CiAtLSBEaXNhYmxlIGluY3JlbWVudGFsIHNvcnQsIHdoaWNoIGNhbiBpbmZsdWVu Y2Ugc2VsZWN0ZWQgcGxhbnMgZHVlIHRvIGZ1enogZmFjdG9yLgogU0VUIGVuYWJsZV9pbmNyZW1l bnRhbF9zb3J0IFRPIG9mZjsKKy0tIERpc2FibGUgZWFnZXIgYWdncmVnYXRpb24sIHdoaWNoIGNh biBpbnRlcmZlcmUgd2l0aCB0aGUgZ2VuZXJhdGlvbiBvZiBwYXJ0aXRpb253aXNlIGFnZ3JlZ2F0 aW9uLgorU0VUIGVuYWJsZV9lYWdlcl9hZ2dyZWdhdGUgVE8gb2ZmOwogCiAtLQogLS0gVGVzdHMg Zm9yIGxpc3QgcGFydGl0aW9uZWQgdGFibGVzLgpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRl eCBhMTNlODE2Mjg5MC4uOWE0NTY3ZGIwMWEgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBA IC00Miw2ICs0Miw3IEBAIEFmdGVyVHJpZ2dlcnNUYWJsZURhdGEKIEFmdGVyVHJpZ2dlcnNUcmFu c0RhdGEKIEFnZwogQWdnQ2xhdXNlQ29zdHMKK0FnZ0NsYXVzZUluZm8KIEFnZ0luZm8KIEFnZ1Bh dGgKIEFnZ1NwbGl0CkBAIC0xMTEwLDYgKzExMTEsNyBAQCBHcm91cFBhdGhFeHRyYURhdGEKIEdy b3VwUmVzdWx0UGF0aAogR3JvdXBTdGF0ZQogR3JvdXBWYXJJbmZvCitHcm91cGluZ0V4cHJJbmZv CiBHcm91cGluZ0Z1bmMKIEdyb3VwaW5nU2V0CiBHcm91cGluZ1NldERhdGEKQEAgLTI0NzMsNiAr MjQ3NSw3IEBAIFJlaW5kZXhPYmplY3RUeXBlCiBSZWluZGV4UGFyYW1zCiBSZWluZGV4U3RtdAog UmVpbmRleFR5cGUKK1JlbEFnZ0luZm8KIFJlbEZpbGVMb2NhdG9yCiBSZWxGaWxlTG9jYXRvckJh Y2tlbmQKIFJlbEZpbGVOdW1iZXIKLS0gCjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --00000000000035db2d063db359a0--