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 1uUbw0-005qIy-IO for pgsql-hackers@arkaria.postgresql.org; Thu, 26 Jun 2025 02:01: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 1uUbvy-006oi3-C5 for pgsql-hackers@arkaria.postgresql.org; Thu, 26 Jun 2025 02:01:51 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uUbvx-006oho-96 for pgsql-hackers@lists.postgresql.org; Thu, 26 Jun 2025 02:01:50 +0000 Received: from mail-yw1-x1136.google.com ([2607:f8b0:4864:20::1136]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uUbvv-0041Tn-2q for pgsql-hackers@lists.postgresql.org; Thu, 26 Jun 2025 02:01:49 +0000 Received: by mail-yw1-x1136.google.com with SMTP id 00721157ae682-70e767ce72eso5710417b3.1 for ; Wed, 25 Jun 2025 19:01:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750903307; x=1751508107; darn=lists.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=6nlm/5WQKZhnkvDuh7bJg9fzPq9FxAxRqBHr7nowvJc=; b=PdSevxwWGJKTt6L9+AZnnlQyhN7JewKKw5iOo6jPVyZPIhCOK0iHaCN/eYW3oiL5S9 SFb6164vrRsPyAdVfzv26hFdxjaM5ak888q835QKCcZufG9E5cZbQZctgxgVqk2ZDiJz Z0a0iZPFW1ru4NGjeoS/DVntivP/PRRxymL0BmgDPu1a3EHC05omUOmBvnr/0WAYwhwC 253cz6CGyKN1iRdD5UVmlusapzt7fQ4ibbDeZ+e0bj96HUiLPEcIMp3QFKr8N10LG5oE uI7pEuWVQFBHQ6CXehMyNeUtyXI5jxfV7IH2DLIcnPtjZtcpxqeyRmH3K1cCWsowhrAk R4Fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750903307; x=1751508107; 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=6nlm/5WQKZhnkvDuh7bJg9fzPq9FxAxRqBHr7nowvJc=; b=q89YwTLKzTQOF+uWT9tAl5Qg7RwNEjHjP1Nk5dbI/o/DuVt4/+kLnhWfb4J7QiTAK7 KazfuN7r58xgXwHYzqRteKprPvcctgubYp7gkcsJZOf3QGf6t9KoEsxa81C3TBH3A7En E6tjwI2cNO7zZpPEtx17T3WooXQ2Ne6iPDV8hjT+52lN+QUkQoK5fFcFHHTs/7AIZngh jEcW8xG3VD4laHiLQcoCUZdo4oN3IR9teoHtlVXIV6gklBRS0ToEbjLRPk8xgPuKRHA1 XVq5VAByy60pMGdB5n+pguwNdVn1eaXaEMS+kHEljZxb7sWtDSjz2iroqhDTmBf+Akpo p/sA== X-Forwarded-Encrypted: i=1; AJvYcCUygODCripza2fsrBQCBKb+sqDCUINwd9s/KNPvV07NY8ZGPoVtYi3mvbPsstPo/uiQePLKOmMTurshZVzm@lists.postgresql.org X-Gm-Message-State: AOJu0YxkMeQWFJZIy3PuM0VLRxxV8A/RJ2gTf0S3pWQmtr3Kb6fzWkoJ zKhRrN0zqMYXEwFBrybPsMxFoihQAxjJwkeURfC3TStzSAQOt2X/oJp5seWB15y9/WWdTyyNu6W ANy3O2ceRFSY+WTKGszJgtEP5QBAODcI= X-Gm-Gg: ASbGncttJAGSnUli2VIWwnMFE3ssFf/BMwCtTxXazuilOClGkMYHIFJYE7R493up6QG LEOL4+P1KA+xXlhbMlqp21mFgV68f8kDBUZxLExTyc6oE7j1oB22g/MolijSjM1pvFvVZXAik2d 8aOjxqLAyPY9jb/btmrvwMk+VQoK2WngI/TWwE5PTsO3swa8EQxoLSyE73nEljW8AOvTdfGwgPR E1zVQ421nObVLxi X-Google-Smtp-Source: AGHT+IGu9Tlujs9E1COlZrcpc4Zd0GyBwNlKfvFB17zrekVEK3KYepwAKvDJY90+/I+ik/TTAri8KhHzhhF1+vBjLrA= X-Received: by 2002:a05:690c:380d:b0:70f:8883:ce60 with SMTP id 00721157ae682-71406dd8d2cmr80314987b3.26.1750903306890; Wed, 25 Jun 2025 19:01:46 -0700 (PDT) MIME-Version: 1.0 References: <87il22cj51.fsf@163.com> In-Reply-To: From: Richard Guo Date: Thu, 26 Jun 2025 11:01:35 +0900 X-Gm-Features: AX0GCFtEUVN0pNhbrcbmIByzQlrzM5V4r81tJ6CE6u3byx1lvPYOpH2F9p82gvg Message-ID: Subject: Re: Eager aggregation, take 3 To: Robert Haas Cc: Tom Lane , Tender Wang , Paul George , Andy Fan , PostgreSQL-development , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000a506cf06386ff107" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a506cf06386ff107 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Jun 13, 2025 at 4:41=E2=80=AFPM Richard Guo wrote: > I've switched back to this thread and will begin by working through > the key concerns that were previously raised. > > The first concern is the lack of a proof demonstrating the correctness > of this transformation. To address this, I plan to include a detailed > proof in the README, along the lines of the following. > The second concern is that a RelOptInfo representing a grouped > relation may include paths that produce different row sets due to > partial aggregation being applied at different join levels. This > potentially violates a fundamental assumption in the planner. > > Additionally, the patch currently performs an exhaustive search by > exploring partial aggregation at every possible join level, leading to > excessive planning effort, which may not be justified by the > cost-benefit ratio. > > To address these concerns, I'm thinking that maybe we can adopt a > strategy where partial aggregation is only pushed to the lowest > possible level in the join tree that is deemed useful. In other > words, if we can build a grouped path like "AGG(B) JOIN A" -- and > AGG(B) yields a significant reduction in row count -- we skip > exploring alternatives like "AGG(A JOIN B)". Here is the patch based on the proposed ideas. It includes the proof of correctness in the README and implements the strategy of pushing partial aggregation only to the lowest applicable join level where it is deemed useful. This is done by introducing a "Relids apply_at" field to track that level and ensuring that partial aggregation is applied only at the recorded "apply_at" level. Additionally, this patch changes how grouped relations are stored. Since each grouped relation represents a partially aggregated version of a non-grouped relation, we now associate each grouped relation with the RelOptInfo of the corresponding non-grouped relation. This eliminates the need for a dedicated list of all grouped relations and avoids list searches when retrieving a grouped relation. It also addresses other previously raised concerns, such as the potential memory blowout risks with large partial-aggregation values, and includes improvements to comments and the commit message. Another change is that this feature is now enabled by default. Thanks Richard --000000000000a506cf06386ff107 Content-Type: application/octet-stream; name="v17-0001-Implement-Eager-Aggregation.patch" Content-Disposition: attachment; filename="v17-0001-Implement-Eager-Aggregation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mccqlykh0 RnJvbSBmY2RkNzVkODI0YmM5ZWU2NTA3OGFkMmRjNzMzN2NjYTIyZWNjZjUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogVHVlLCAxMSBKdW4gMjAyNCAxNTo1OToxOSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjE3 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 ICAgMTUgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL1JFQURNRSAgICAgICAgICAgICAgICAgIHwg ICA4OSArKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL2dlcW8vZ2Vxb19ldmFsLmMgICAgICAgIHwg ICAyMSArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jICAgICAgICAgfCAg NDQzICsrKysrKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvam9pbnJlbHMuYyAgICAgICAg IHwgIDE5MyArKysKIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2luaXRzcGxhbi5jICAgICAg ICB8ICAzMTMgKysrKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm1haW4uYyAgICAg ICAgIHwgICAgOSArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgICAgICAg ICAgfCAgMTI0ICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMgICAg ICAgfCAgIDU5ICsKIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMgICAgICAg ICB8ICAgMTIgKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYyAgICAgICAg ICB8ICA2MzYgKysrKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAg ICAgICAgICB8ICAgMTAgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYu c2FtcGxlIHwgICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCAgICAgICAgICAg ICAgICAgfCAgMTMwICsrCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaCAgICAgICAg ICAgICAgfCAgICA1ICsKIHNyYy9pbmNsdWRlL29wdGltaXplci9wYXRocy5oICAgICAgICAgICAg ICAgICB8ICAgIDUgKwogc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BsYW5tYWluLmggICAgICAgICAg ICAgIHwgICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VhZ2VyX2FnZ3JlZ2F0ZS5v dXQgfCAxMzM0ICsrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5 c3ZpZXdzLm91dCAgICAgICAgfCAgICAzICstCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3Nj aGVkdWxlICAgICAgICAgICAgfCAgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9lYWdlcl9h Z2dyZWdhdGUuc3FsICAgICAgfCAgMTk0ICsrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QgICAgICAgICAgICAgIHwgICAgMyArCiAyMyBmaWxlcyBjaGFuZ2VkLCAzNTg4IGluc2Vy dGlvbnMoKyksIDYzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvZWFnZXJfYWdncmVnYXRlLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2VhZ2VyX2FnZ3JlZ2F0ZS5zcWwKCmRpZmYgLS1naXQgYS9jb250 cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0IGIvY29udHJpYi9wb3N0 Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAppbmRleCAyMTg1YjQyYmI0Zi4uYjlm NzY3ZGYwNWQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3Rn cmVzX2Zkdy5vdXQKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNf ZmR3Lm91dApAQCAtMzY5MiwzMCArMzY5MiwzMyBAQCBzZWxlY3QgY291bnQodDEuYzMpIGZyb20g ZnQyIHQxIGxlZnQgam9pbiBmdDIgdDIgb24gKHQxLmMxID0gcmFuZG9tKCkgKiB0Mi5jMik7CiAt LSBTdWJxdWVyeSBpbiBGUk9NIGNsYXVzZSBoYXZpbmcgYWdncmVnYXRlCiBleHBsYWluICh2ZXJi b3NlLCBjb3N0cyBvZmYpCiBzZWxlY3QgY291bnQoKiksIHguYiBmcm9tIGZ0MSwgKHNlbGVjdCBj MiBhLCBzdW0oYzEpIGIgZnJvbSBmdDEgZ3JvdXAgYnkgYzIpIHggd2hlcmUgZnQxLmMyID0geC5h IGdyb3VwIGJ5IHguYiBvcmRlciBieSAxLCAyOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KICBTb3J0Ci0gICBPdXRwdXQ6IChjb3VudCgqKSksIHguYgotICAgU29ydCBLZXk6IChj b3VudCgqKSksIHguYgotICAgLT4gIEhhc2hBZ2dyZWdhdGUKLSAgICAgICAgIE91dHB1dDogY291 bnQoKiksIHguYgotICAgICAgICAgR3JvdXAgS2V5OiB4LmIKLSAgICAgICAgIC0+ICBIYXNoIEpv aW4KLSAgICAgICAgICAgICAgIE91dHB1dDogeC5iCi0gICAgICAgICAgICAgICBJbm5lciBVbmlx dWU6IHRydWUKLSAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKGZ0MS5jMiA9IHguYSkKLSAgICAg ICAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4gb24gcHVibGljLmZ0MQotICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiBmdDEuYzIKLSAgICAgICAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNF TEVDVCBjMiBGUk9NICJTIDEiLiJUIDEiCi0gICAgICAgICAgICAgICAtPiAgSGFzaAotICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB4LmIsIHguYQotICAgICAgICAgICAgICAgICAgICAgLT4g IFN1YnF1ZXJ5IFNjYW4gb24geAotICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB4 LmIsIHguYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEZvcmVpZ24gU2NhbgotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiBmdDFfMS5jMiwgKHN1bShmdDFf MS5jMSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGlvbnM6IEFnZ3Jl Z2F0ZSBvbiAocHVibGljLmZ0MSBmdDFfMSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBjMiwgc3VtKCJDIDEiKSBGUk9NICJTIDEiLiJUIDEiIEdS T1VQIEJZIDEKLSgyMSByb3dzKQorICAgT3V0cHV0OiAoY291bnQoKikpLCAoc3VtKGZ0MV8xLmMx KSkKKyAgIFNvcnQgS2V5OiAoY291bnQoKikpLCAoc3VtKGZ0MV8xLmMxKSkKKyAgIC0+ICBGaW5h bGl6ZSBHcm91cEFnZ3JlZ2F0ZQorICAgICAgICAgT3V0cHV0OiBjb3VudCgqKSwgKHN1bShmdDFf MS5jMSkpCisgICAgICAgICBHcm91cCBLZXk6IChzdW0oZnQxXzEuYzEpKQorICAgICAgICAgLT4g IFNvcnQKKyAgICAgICAgICAgICAgIE91dHB1dDogKHN1bShmdDFfMS5jMSkpLCAoUEFSVElBTCBj b3VudCgqKSkKKyAgICAgICAgICAgICAgIFNvcnQgS2V5OiAoc3VtKGZ0MV8xLmMxKSkKKyAgICAg ICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogKHN1 bShmdDFfMS5jMSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhh c2ggQ29uZDogKGZ0MV8xLmMyID0gZnQxLmMyKQorICAgICAgICAgICAgICAgICAgICAgLT4gIEZv cmVpZ24gU2NhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiBmdDFfMS5jMiwg KHN1bShmdDFfMS5jMSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGlvbnM6IEFn Z3JlZ2F0ZSBvbiAocHVibGljLmZ0MSBmdDFfMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IFJlbW90ZSBTUUw6IFNFTEVDVCBjMiwgc3VtKCJDIDEiKSBGUk9NICJTIDEiLiJUIDEiIEdST1VQ IEJZIDEKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IGZ0MS5jMiwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IGZ0MS5jMiwgUEFSVElBTCBjb3VudCgqKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiBmdDEuYzIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4gb24gcHVibGljLmZ0MQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiBmdDEuYzIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBjMiBG Uk9NICJTIDEiLiJUIDEiCisoMjQgcm93cykKIAogc2VsZWN0IGNvdW50KCopLCB4LmIgZnJvbSBm dDEsIChzZWxlY3QgYzIgYSwgc3VtKGMxKSBiIGZyb20gZnQxIGdyb3VwIGJ5IGMyKSB4IHdoZXJl IGZ0MS5jMiA9IHguYSBncm91cCBieSB4LmIgb3JkZXIgYnkgMSwgMjsKICBjb3VudCB8ICAgYiAg IApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Nv bmZpZy5zZ21sCmluZGV4IDU5YTA4NzQ1MjhhLi43ODBiNGE5ZmVkMSAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAt NTQ3MCw2ICs1NDcwLDIxIEBAIEFOWSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVt X3N5bmM8L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJsZSBjbGFzcz0iCiAgICAgICA8L2xpc3Rp dGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMt ZW5hYmxlLWVhZ2VyLWFnZ3JlZ2F0ZSIgeHJlZmxhYmVsPSJlbmFibGVfZWFnZXJfYWdncmVnYXRl Ij4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPmVuYWJsZV9lYWdlcl9hZ2dyZWdhdGU8L3Zhcm5hbWU+ ICg8dHlwZT5ib29sZWFuPC90eXBlPikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1h cnk+PHZhcm5hbWU+ZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZTwvdmFybmFtZT4gY29uZmlndXJhdGlv biBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVybT4K KyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgRW5hYmxlcyBvciBkaXNh YmxlcyB0aGUgcXVlcnkgcGxhbm5lcidzIGFiaWxpdHkgdG8gcGFydGlhbGx5IHB1c2gKKyAgICAg ICAgYWdncmVnYXRpb24gcGFzdCBhIGpvaW4sIGFuZCBmaW5hbGl6ZSBpdCBvbmNlIGFsbCB0aGUg cmVsYXRpb25zIGFyZQorICAgICAgICBqb2luZWQuIFRoZSBkZWZhdWx0IGlzIDxsaXRlcmFsPm9u PC9saXRlcmFsPi4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zh cmxpc3RlbnRyeT4KKwogICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtZW5hYmxlLWdhdGhlcm1l cmdlIiB4cmVmbGFiZWw9ImVuYWJsZV9nYXRoZXJtZXJnZSI+CiAgICAgICA8dGVybT48dmFybmFt ZT5lbmFibGVfZ2F0aGVybWVyZ2U8L3Zhcm5hbWU+ICg8dHlwZT5ib29sZWFuPC90eXBlPikKICAg ICAgIDxpbmRleHRlcm0+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvUkVBRE1F IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL1JFQURNRQppbmRleCA5YzcyNGNjZmFiZi4uNDhhNTc1 YzViZGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9SRUFETUUKKysrIGIvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL1JFQURNRQpAQCAtMTUwMSwzICsxNTAxLDkyIEBAIGJyZWFraW5n IGRvd24gYWdncmVnYXRpb24gb3IgZ3JvdXBpbmcgb3ZlciBhIHBhcnRpdGlvbmVkIHJlbGF0aW9u IGludG8KIGFnZ3JlZ2F0aW9uIG9yIGdyb3VwaW5nIG92ZXIgaXRzIHBhcnRpdGlvbnMgaXMgY2Fs bGVkIHBhcnRpdGlvbndpc2UKIGFnZ3JlZ2F0aW9uLiAgRXNwZWNpYWxseSB3aGVuIHRoZSBwYXJ0 aXRpb24ga2V5cyBtYXRjaCB0aGUgR1JPVVAgQlkgY2xhdXNlLAogdGhpcyBjYW4gYmUgc2lnbmlm aWNhbnRseSBmYXN0ZXIgdGhhbiB0aGUgcmVndWxhciBtZXRob2QuCisKK0VhZ2VyIGFnZ3JlZ2F0 aW9uCistLS0tLS0tLS0tLS0tLS0tLQorCitFYWdlciBhZ2dyZWdhdGlvbiBpcyBhIHF1ZXJ5IG9w dGltaXphdGlvbiB0ZWNobmlxdWUgdGhhdCBwYXJ0aWFsbHkKK3B1c2hlcyBhZ2dyZWdhdGlvbiBw YXN0IGEgam9pbiwgYW5kIGZpbmFsaXplcyBpdCBvbmNlIGFsbCB0aGUKK3JlbGF0aW9ucyBhcmUg am9pbmVkLiAgRWFnZXIgYWdncmVnYXRpb24gbWF5IHJlZHVjZSB0aGUgbnVtYmVyIG9mCitpbnB1 dCByb3dzIHRvIHRoZSBqb2luIGFuZCB0aHVzIGNvdWxkIHJlc3VsdCBpbiBhIGJldHRlciBvdmVy YWxsIHBsYW4uCisKK1RvIHByb3ZlIHRoYXQgdGhlIHRyYW5zZm9ybWF0aW9uIGlzIGNvcnJlY3Qs IHdlIHBhcnRpdGlvbiB0aGUgdGFibGVzCitpbiB0aGUgRlJPTSBjbGF1c2UgaW50byB0d28gZ3Jv dXBzOiB0aG9zZSB0aGF0IGNvbnRhaW4gYXQgbGVhc3Qgb25lCithZ2dyZWdhdGlvbiBjb2x1bW4s IGFuZCB0aG9zZSB0aGF0IGRvIG5vdCBjb250YWluIGFueSBhZ2dyZWdhdGlvbgorY29sdW1ucy4g IEVhY2ggZ3JvdXAgY2FuIGJlIHRyZWF0ZWQgYXMgYSBzaW5nbGUgcmVsYXRpb24gZm9ybWVkIGJ5 IHRoZQorQ2FydGVzaWFuIHByb2R1Y3Qgb2YgdGhlIHRhYmxlcyB3aXRoaW4gdGhhdCBncm91cC4g IFRoZXJlZm9yZSwgd2l0aG91dAorbG9zcyBvZiBnZW5lcmFsaXR5LCB3ZSBjYW4gYXNzdW1lIHRo YXQgdGhlIEZST00gY2xhdXNlIGNvbnRhaW5zCitleGFjdGx5IHR3byByZWxhdGlvbnMsIFIxIGFu ZCBSMiwgd2hlcmUgUjEgcmVwcmVzZW50cyB0aGUgcmVsYXRpb24KK2NvbnRhaW5pbmcgYWxsIGFn Z3JlZ2F0aW9uIGNvbHVtbnMsIGFuZCBSMiByZXByZXNlbnRzIHRoZSByZWxhdGlvbgord2l0aG91 dCBhbnkgYWdncmVnYXRpb24gY29sdW1ucy4KKworTGV0IHRoZSBxdWVyeSBiZSBvZiB0aGUgZm9y bToKKworU0VMRUNUIEcsIEFHRyhBKQorRlJPTSBSMSBKT0lOIFIyIE9OIEoKK0dST1VQIEJZIEc7 CisKK3doZXJlIEcgaXMgdGhlIHNldCBvZiBncm91cGluZyBrZXlzIHRoYXQgbWF5IGluY2x1ZGUg Y29sdW1ucyBmcm9tIFIxCithbmQvb3IgUjI7IEFHRyhBKSBpcyBhbiBhZ2dyZWdhdGUgZnVuY3Rp b24gb3ZlciBjb2x1bW5zIEEgZnJvbSBSMTsgSgoraXMgdGhlIGpvaW4gY29uZGl0aW9uIGJldHdl ZW4gUjEgYW5kIFIyLgorCitUaGUgdHJhbnNmb3JtYXRpb24gb2YgZWFnZXIgYWdncmVnYXRpb24g aXM6CisKKyAgICBHUk9VUCBCWSBHLCBBR0coQSkgb24gKFIxIEpPSU4gUjIgT04gSikKKyAgICA9 CisgICAgR1JPVVAgQlkgRywgQUdHKGFnZ19BKSBvbiAoKEdST1VQIEJZIEcxLCBBR0coQSkgQVMg YWdnX0Egb24gUjEpIEpPSU4gUjIgT04gSikKKworVGhpcyBlcXVpdmFsZW5jZSBob2xkcyB1bmRl ciB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKKzEpIEFHRyBpcyBkZWNvbXBvc2FibGUsIG1l YW5pbmcgdGhhdCBpdCBjYW4gYmUgY29tcHV0ZWQgaW4gdHdvIHN0YWdlczoKK2EgcGFydGlhbCBh Z2dyZWdhdGlvbiBmb2xsb3dlZCBieSBhIGZpbmFsIGFnZ3JlZ2F0aW9uOworMikgVGhlIHNldCBH MSB1c2VkIGluIHRoZSBwcmUtYWdncmVnYXRpb24gb2YgUjEgaW5jbHVkZXM6CisgICAgKiBhbGwg Y29sdW1ucyBmcm9tIFIxIHRoYXQgYXJlIHBhcnQgb2YgdGhlIGdyb3VwaW5nIGtleXMgRywgYW5k CisgICAgKiBhbGwgY29sdW1ucyBmcm9tIFIxIHRoYXQgYXBwZWFyIGluIHRoZSBqb2luIGNvbmRp dGlvbiBKLgorMykgVGhlIGdyb3VwaW5nIG9wZXJhdG9yIGZvciBhbnkgY29sdW1uIGluIEcxIG11 c3QgYmUgY29tcGF0aWJsZSB3aXRoCit0aGUgb3BlcmF0b3IgdXNlZCBmb3IgdGhhdCBjb2x1bW4g aW4gdGhlIGpvaW4gY29uZGl0aW9uIEouCisKK1NpbmNlIEcxIGluY2x1ZGVzIGFsbCBjb2x1bW5z IGZyb20gUjEgdGhhdCBhcHBlYXIgaW4gZWl0aGVyIHRoZQorZ3JvdXBpbmcga2V5cyBHIG9yIHRo ZSBqb2luIGNvbmRpdGlvbiBKLCBhbGwgcm93cyB3aXRoaW4gZWFjaCBwYXJ0aWFsCitncm91cCBo YXZlIGlkZW50aWNhbCB2YWx1ZXMgZm9yIGJvdGggdGhlIGdyb3VwaW5nIGtleXMgYW5kIHRoZQor am9pbi1yZWxldmFudCBjb2x1bW5zIGZyb20gUjEsIGFzc3VtaW5nIGNvbXBhdGlibGUgb3BlcmF0 b3JzIGFyZSB1c2VkLgorQXMgYSByZXN1bHQsIHRoZSByb3dzIHdpdGhpbiBhIHBhcnRpYWwgZ3Jv dXAgYXJlIGluZGlzdGluZ3Vpc2hhYmxlIGluCit0ZXJtcyBvZiB0aGVpciBjb250cmlidXRpb24g dG8gdGhlIGFnZ3JlZ2F0aW9uIGFuZCB0aGVpciBiZWhhdmlvciBpbgordGhlIGpvaW4uICBUaGlz IGVuc3VyZXMgdGhhdCBhbGwgcm93cyBpbiB0aGUgc2FtZSBwYXJ0aWFsIGdyb3VwIHNoYXJlCit0 aGUgc2FtZSAiZGVzdGlueSI6IHRoZXkgZWl0aGVyIGFsbCBtYXRjaCBvciBhbGwgZmFpbCB0byBt YXRjaCBhIGdpdmVuCityb3cgaW4gUjIuICBCZWNhdXNlIHRoZSBhZ2dyZWdhdGUgZnVuY3Rpb24g QUdHIGlzIGRlY29tcG9zYWJsZSwKK2FnZ3JlZ2F0aW5nIHRoZSBwYXJ0aWFsIHJlc3VsdHMgYWZ0 ZXIgdGhlIGpvaW4geWllbGRzIHRoZSBzYW1lIGZpbmFsCityZXN1bHQgYXMgYWdncmVnYXRpbmcg YWZ0ZXIgdGhlIGZ1bGwgam9pbiwgdGhlcmVieSBwcmVzZXJ2aW5nIHF1ZXJ5CitzZW1hbnRpY3Mu ICBRLkUuRC4KKworT25lIHJlc3RyaWN0aW9uIGlzIHRoYXQgd2UgY2Fubm90IHB1c2ggcGFydGlh bCBhZ2dyZWdhdGlvbiBkb3duIHRvIGEKK3JlbGF0aW9uIHRoYXQgaXMgaW4gdGhlIG51bGxhYmxl IHNpZGUgb2YgYW4gb3V0ZXIgam9pbiwgYmVjYXVzZSB0aGUKK05VTEwtZXh0ZW5kZWQgcm93cyBw cm9kdWNlZCBieSB0aGUgb3V0ZXIgam9pbiB3b3VsZCBub3QgYmUgYXZhaWxhYmxlCit3aGVuIHdl IHBlcmZvcm0gdGhlIHBhcnRpYWwgYWdncmVnYXRpb24sIHdoaWxlIHdpdGggYQorbm9uLWVhZ2Vy LWFnZ3JlZ2F0aW9uIHBsYW4gdGhlc2Ugcm93cyBhcmUgYXZhaWxhYmxlIGZvciB0aGUgdG9wLWxl dmVsCithZ2dyZWdhdGlvbi4gIFB1c2hpbmcgcGFydGlhbCBhZ2dyZWdhdGlvbiBpbiB0aGlzIGNh c2UgbWF5IHJlc3VsdCBpbgordGhlIHJvd3MgYmVpbmcgZ3JvdXBlZCBkaWZmZXJlbnRseSB0aGFu IGV4cGVjdGVkLCBvciBwcm9kdWNlIGluY29ycmVjdAordmFsdWVzIGZyb20gdGhlIGFnZ3JlZ2F0 ZSBmdW5jdGlvbnMuCisKK0R1cmluZyB0aGUgY29uc3RydWN0aW9uIG9mIHRoZSBqb2luIHRyZWUs IHdlIGV2YWx1YXRlIGVhY2ggYmFzZSBvcgoram9pbiByZWxhdGlvbiB0byBkZXRlcm1pbmUgaWYg ZWFnZXIgYWdncmVnYXRpb24gY2FuIGJlIGFwcGxpZWQuICBJZgorZmVhc2libGUsIHdlIGNyZWF0 ZSBhIHNlcGFyYXRlIFJlbE9wdEluZm8gY2FsbGVkIGEgImdyb3VwZWQgcmVsYXRpb24iCithbmQg Z2VuZXJhdGUgZ3JvdXBlZCBwYXRocyBieSBhZGRpbmcgc29ydGVkIGFuZCBoYXNoZWQgcGFydGlh bAorYWdncmVnYXRpb24gcGF0aHMgb24gdG9wIG9mIHRoZSBub24tZ3JvdXBlZCBwYXRocy4gIFRv IGxpbWl0IHBsYW5uaW5nCit0aW1lLCB3ZSBjb25zaWRlciBvbmx5IHRoZSBjaGVhcGVzdCBvciBz dWl0YWJseS1zb3J0ZWQgbm9uLWdyb3VwZWQKK3BhdGhzIGluIHRoaXMgc3RlcC4KKworQW5vdGhl ciB3YXkgdG8gZ2VuZXJhdGUgZ3JvdXBlZCBwYXRocyBpcyB0byBqb2luIGEgZ3JvdXBlZCByZWxh dGlvbgord2l0aCBhIG5vbi1ncm91cGVkIHJlbGF0aW9uLiAgSm9pbmluZyB0d28gZ3JvdXBlZCBy ZWxhdGlvbnMgaXMKK2N1cnJlbnRseSBub3Qgc3VwcG9ydGVkLgorCitUbyBmdXJ0aGVyIGxpbWl0 IHBsYW5uaW5nIHRpbWUsIHdlIGN1cnJlbnRseSBhZG9wdCBhIHN0cmF0ZWd5IHdoZXJlCitwYXJ0 aWFsIGFnZ3JlZ2F0aW9uIGlzIHB1c2hlZCBvbmx5IHRvIHRoZSBsb3dlc3QgZmVhc2libGUgbGV2 ZWwgaW4gdGhlCitqb2luIHRyZWUgd2hlcmUgaXQgcHJvdmlkZXMgYSBzaWduaWZpY2FudCByZWR1 Y3Rpb24gaW4gcm93IGNvdW50LgorVGhpcyBzdHJhdGVneSBhbHNvIGhlbHBzIGVuc3VyZSB0aGF0 IGFsbCBncm91cGVkIHBhdGhzIGZvciB0aGUgc2FtZQorZ3JvdXBlZCByZWxhdGlvbiBwcm9kdWNl IHRoZSBzYW1lIHNldCBvZiByb3dzLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8KK3N1cHBvcnQgYSBm dW5kYW1lbnRhbCBhc3N1bXB0aW9uIG9mIHRoZSBwbGFubmVyLgorCitJZiB3ZSBoYXZlIGdlbmVy YXRlZCBhIGdyb3VwZWQgcmVsYXRpb24gZm9yIHRoZSB0b3Btb3N0IGpvaW4gcmVsYXRpb24sCit3 ZSBuZWVkIHRvIGZpbmFsaXplIGl0cyBwYXRocyBhdCB0aGUgZW5kLiAgVGhlIGZpbmFsIHBhdGhz IHdpbGwKK2NvbXBldGUgaW4gdGhlIHVzdWFsIHdheSB3aXRoIHBhdGhzIGJ1aWx0IGZyb20gcmVn dWxhciBwbGFubmluZy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9nZXFvL2dl cW9fZXZhbC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL2dlcW8vZ2Vxb19ldmFsLmMKaW5kZXgg ZjA3ZDFkYzhhYzYuLjRhNjVmOTU1Y2E2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvZ2Vxby9nZXFvX2V2YWwuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvZ2Vxby9nZXFv X2V2YWwuYwpAQCAtMjc5LDYgKzI3OSwyNyBAQCBtZXJnZV9jbHVtcChQbGFubmVySW5mbyAqcm9v dCwgTGlzdCAqY2x1bXBzLCBDbHVtcCAqbmV3X2NsdW1wLCBpbnQgbnVtX2dlbmUsCiAJCQkJLyog RmluZCBhbmQgc2F2ZSB0aGUgY2hlYXBlc3QgcGF0aHMgZm9yIHRoaXMgam9pbnJlbCAqLwogCQkJ CXNldF9jaGVhcGVzdChqb2lucmVsKTsKIAorCQkJCS8qCisJCQkJICogRXhjZXB0IGZvciB0aGUg dG9wbW9zdCBzY2FuL2pvaW4gcmVsLCBjb25zaWRlciBnZW5lcmF0aW5nCisJCQkJICogcGFydGlh bCBhZ2dyZWdhdGlvbiBwYXRocyBmb3IgdGhlIGdyb3VwZWQgcmVsYXRpb24gb24gdG9wCisJCQkJ ICogb2YgdGhlIHBhdGhzIG9mIHRoaXMgcmVsLiAgQWZ0ZXIgdGhhdCwgd2UncmUgZG9uZSBjcmVh dGluZworCQkJCSAqIHBhdGhzIGZvciB0aGUgZ3JvdXBlZCByZWxhdGlvbiwgc28gcnVuIHNldF9j aGVhcGVzdCgpLgorCQkJCSAqLworCQkJCWlmICghYm1zX2VxdWFsKGpvaW5yZWwtPnJlbGlkcywg cm9vdC0+YWxsX3F1ZXJ5X3JlbHMpKQorCQkJCXsKKwkJCQkJUmVsT3B0SW5mbyAqZ3JvdXBlZF9y ZWw7CisKKwkJCQkJZ3JvdXBlZF9yZWwgPSBqb2lucmVsLT5ncm91cGVkX3JlbDsKKwkJCQkJaWYg KGdyb3VwZWRfcmVsKQorCQkJCQl7CisJCQkJCQlBc3NlcnQoSVNfR1JPVVBFRF9SRUwoZ3JvdXBl ZF9yZWwpKTsKKworCQkJCQkJZ2VuZXJhdGVfZ3JvdXBlZF9wYXRocyhyb290LCBncm91cGVkX3Jl bCwgam9pbnJlbCwKKwkJCQkJCQkJCQkJICAgZ3JvdXBlZF9yZWwtPmFnZ19pbmZvKTsKKwkJCQkJ CXNldF9jaGVhcGVzdChncm91cGVkX3JlbCk7CisJCQkJCX0KKwkJCQl9CisKIAkJCQkvKiBBYnNv cmIgbmV3IGNsdW1wIGludG8gb2xkICovCiAJCQkJb2xkX2NsdW1wLT5qb2lucmVsID0gam9pbnJl bDsKIAkJCQlvbGRfY2x1bXAtPnNpemUgKz0gbmV3X2NsdW1wLT5zaXplOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYyBiL3NyYy9iYWNrZW5kL29wdGlt aXplci9wYXRoL2FsbHBhdGhzLmMKaW5kZXggNmNjNjk2NmIwNjAuLmU3NWJiNDFiNThkIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jCisrKyBiL3NyYy9i YWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNs dWRlICJvcHRpbWl6ZXIvcGF0aHMuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGxhbmNhdC5oIgog I2luY2x1ZGUgIm9wdGltaXplci9wbGFubmVyLmgiCisjaW5jbHVkZSAib3B0aW1pemVyL3ByZXAu aCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvdGxpc3QuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2Vf Y2xhdXNlLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNldHJlZS5oIgpAQCAtNDcsNiArNDgsNyBA QAogI2luY2x1ZGUgInBvcnQvcGdfYml0dXRpbHMuaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3Jp dGVNYW5pcC5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxz L3NlbGZ1bmNzLmgiCiAKIAogLyogQml0bWFzayBmbGFncyBmb3IgcHVzaGRvd25fc2FmZXR5X2lu Zm8udW5zYWZlRmxhZ3MgKi8KQEAgLTc3LDYgKzc5LDcgQEAgdHlwZWRlZiBlbnVtIHB1c2hkb3du X3NhZmVfdHlwZQogCiAvKiBUaGVzZSBwYXJhbWV0ZXJzIGFyZSBzZXQgYnkgR1VDICovCiBib29s CQllbmFibGVfZ2VxbyA9IGZhbHNlOwkvKiBqdXN0IGluIGNhc2UgR1VDIGRvZXNuJ3Qgc2V0IGl0 ICovCitib29sCQllbmFibGVfZWFnZXJfYWdncmVnYXRlID0gdHJ1ZTsKIGludAkJCWdlcW9fdGhy ZXNob2xkOwogaW50CQkJbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZTsKIGludAkJCW1pbl9w YXJhbGxlbF9pbmRleF9zY2FuX3NpemU7CkBAIC05MCw2ICs5Myw3IEBAIGpvaW5fc2VhcmNoX2hv b2tfdHlwZSBqb2luX3NlYXJjaF9ob29rID0gTlVMTDsKIAogc3RhdGljIHZvaWQgc2V0X2Jhc2Vf cmVsX2NvbnNpZGVyX3N0YXJ0dXAoUGxhbm5lckluZm8gKnJvb3QpOwogc3RhdGljIHZvaWQgc2V0 X2Jhc2VfcmVsX3NpemVzKFBsYW5uZXJJbmZvICpyb290KTsKK3N0YXRpYyB2b2lkIHNldHVwX2Jh c2VfZ3JvdXBlZF9yZWxzKFBsYW5uZXJJbmZvICpyb290KTsKIHN0YXRpYyB2b2lkIHNldF9iYXNl X3JlbF9wYXRobGlzdHMoUGxhbm5lckluZm8gKnJvb3QpOwogc3RhdGljIHZvaWQgc2V0X3JlbF9z aXplKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJCQkJCQkgSW5kZXggcnRp LCBSYW5nZVRibEVudHJ5ICpydGUpOwpAQCAtMTE0LDYgKzExOCw3IEBAIHN0YXRpYyB2b2lkIHNl dF9hcHBlbmRfcmVsX3NpemUoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJ CQkJCQkJSW5kZXggcnRpLCBSYW5nZVRibEVudHJ5ICpydGUpOwogc3RhdGljIHZvaWQgc2V0X2Fw cGVuZF9yZWxfcGF0aGxpc3QoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJ CQkJCQkJCUluZGV4IHJ0aSwgUmFuZ2VUYmxFbnRyeSAqcnRlKTsKK3N0YXRpYyB2b2lkIHNldF9n cm91cGVkX3JlbF9wYXRobGlzdChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsKTsK IHN0YXRpYyB2b2lkIGdlbmVyYXRlX29yZGVyZWRhcHBlbmRfcGF0aHMoUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJCQkJCQkgTGlzdCAqbGl2ZV9jaGlsZHJlbHMsCiAJ CQkJCQkJCQkJIExpc3QgKmFsbF9jaGlsZF9wYXRoa2V5cyk7CkBAIC0xODIsNiArMTg3LDExIEBA IG1ha2Vfb25lX3JlbChQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAqam9pbmxpc3QpCiAJICovCiAJ c2V0X2Jhc2VfcmVsX3NpemVzKHJvb3QpOwogCisJLyoKKwkgKiBCdWlsZCBncm91cGVkIHJlbGF0 aW9ucyBmb3IgYmFzZSByZWxzIHdoZXJlIHBvc3NpYmxlLgorCSAqLworCXNldHVwX2Jhc2VfZ3Jv dXBlZF9yZWxzKHJvb3QpOworCiAJLyoKIAkgKiBXZSBzaG91bGQgbm93IGhhdmUgc2l6ZSBlc3Rp bWF0ZXMgZm9yIGV2ZXJ5IGFjdHVhbCB0YWJsZSBpbnZvbHZlZCBpbgogCSAqIHRoZSBxdWVyeSwg YW5kIHdlIGFsc28ga25vdyB3aGljaCBpZiBhbnkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUK QEAgLTMyMyw2ICszMzMsMzkgQEAgc2V0X2Jhc2VfcmVsX3NpemVzKFBsYW5uZXJJbmZvICpyb290 KQogCX0KIH0KIAorLyoKKyAqIHNldHVwX2Jhc2VfZ3JvdXBlZF9yZWxzCisgKgkgIEZvciBlYWNo IGJhc2UgcmVsYXRpb24sIGJ1aWxkIGEgZ3JvdXBlZCBiYXNlIHJlbGF0aW9uIGlmIGVhZ2VyCisg KgkgIGFnZ3JlZ2F0aW9uIGlzIHBvc3NpYmxlIGFuZCBpZiB0aGlzIHJlbGF0aW9uIGNhbiBwcm9k dWNlIGdyb3VwZWQgcGF0aHMuCisgKi8KK3N0YXRpYyB2b2lkCitzZXR1cF9iYXNlX2dyb3VwZWRf cmVscyhQbGFubmVySW5mbyAqcm9vdCkKK3sKKwlJbmRleAkJcnRpOworCisJLyoKKwkgKiBJZiB0 aGVyZSBhcmUgbm8gYWdncmVnYXRlIGV4cHJlc3Npb25zIG9yIGdyb3VwaW5nIGV4cHJlc3Npb25z LCBlYWdlcgorCSAqIGFnZ3JlZ2F0aW9uIGlzIG5vdCBwb3NzaWJsZS4KKwkgKi8KKwlpZiAocm9v dC0+YWdnX2NsYXVzZV9saXN0ID09IE5JTCB8fAorCQlyb290LT5ncm91cF9leHByX2xpc3QgPT0g TklMKQorCQlyZXR1cm47CisKKwlmb3IgKHJ0aSA9IDE7IHJ0aSA8IHJvb3QtPnNpbXBsZV9yZWxf YXJyYXlfc2l6ZTsgcnRpKyspCisJeworCQlSZWxPcHRJbmZvICpyZWwgPSByb290LT5zaW1wbGVf cmVsX2FycmF5W3J0aV07CisKKwkJLyogdGhlcmUgbWF5IGJlIGVtcHR5IHNsb3RzIGNvcnJlc3Bv bmRpbmcgdG8gbm9uLWJhc2VyZWwgUlRFcyAqLworCQlpZiAocmVsID09IE5VTEwpCisJCQljb250 aW51ZTsKKworCQlBc3NlcnQocmVsLT5yZWxpZCA9PSBydGkpOwkvKiBzYW5pdHkgY2hlY2sgb24g YXJyYXkgKi8KKwkJQXNzZXJ0KElTX1NJTVBMRV9SRUwocmVsKSk7IC8qIHNhbml0eSBjaGVjayBv biByZWwgKi8KKworCQkodm9pZCkgYnVpbGRfc2ltcGxlX2dyb3VwZWRfcmVsKHJvb3QsIHJlbCk7 CisJfQorfQorCiAvKgogICogc2V0X2Jhc2VfcmVsX3BhdGhsaXN0cwogICoJICBGaW5kcyBhbGwg cGF0aHMgYXZhaWxhYmxlIGZvciBzY2FubmluZyBlYWNoIGJhc2UtcmVsYXRpb24gZW50cnkuCkBA IC01NTksNiArNjAyLDE1IEBAIHNldF9yZWxfcGF0aGxpc3QoUGxhbm5lckluZm8gKnJvb3QsIFJl bE9wdEluZm8gKnJlbCwKIAkvKiBOb3cgZmluZCB0aGUgY2hlYXBlc3Qgb2YgdGhlIHBhdGhzIGZv ciB0aGlzIHJlbCAqLwogCXNldF9jaGVhcGVzdChyZWwpOwogCisJLyoKKwkgKiBJZiBhIGdyb3Vw ZWQgcmVsYXRpb24gZm9yIHRoaXMgcmVsIGV4aXN0cywgYnVpbGQgcGFydGlhbCBhZ2dyZWdhdGlv bgorCSAqIHBhdGhzIGZvciBpdC4KKwkgKgorCSAqIE5vdGUgdGhhdCB0aGlzIGNhbiBvbmx5IGhh cHBlbiBhZnRlciB3ZSd2ZSBjYWxsZWQgc2V0X2NoZWFwZXN0KCkgZm9yCisJICogdGhpcyBiYXNl IHJlbCwgYmVjYXVzZSB3ZSBuZWVkIGl0cyBjaGVhcGVzdCBwYXRocy4KKwkgKi8KKwlzZXRfZ3Jv dXBlZF9yZWxfcGF0aGxpc3Qocm9vdCwgcmVsKTsKKwogI2lmZGVmIE9QVElNSVpFUl9ERUJVRwog CXBwcmludChyZWwpOwogI2VuZGlmCkBAIC0xMzA1LDYgKzEzNTcsMzYgQEAgc2V0X2FwcGVuZF9y ZWxfcGF0aGxpc3QoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAlhZGRfcGF0 aHNfdG9fYXBwZW5kX3JlbChyb290LCByZWwsIGxpdmVfY2hpbGRyZWxzKTsKIH0KIAorLyoKKyAq IHNldF9ncm91cGVkX3JlbF9wYXRobGlzdAorICoJICBJZiBhIGdyb3VwZWQgcmVsYXRpb24gZm9y IHRoZSBnaXZlbiAncmVsJyBleGlzdHMsIGJ1aWxkIHBhcnRpYWwKKyAqCSAgYWdncmVnYXRpb24g cGF0aHMgZm9yIGl0LgorICovCitzdGF0aWMgdm9pZAorc2V0X2dyb3VwZWRfcmVsX3BhdGhsaXN0 KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwpCit7CisJUmVsT3B0SW5mbyAqZ3Jv dXBlZF9yZWw7CisKKwkvKgorCSAqIElmIHRoZXJlIGFyZSBubyBhZ2dyZWdhdGUgZXhwcmVzc2lv bnMgb3IgZ3JvdXBpbmcgZXhwcmVzc2lvbnMsIGVhZ2VyCisJICogYWdncmVnYXRpb24gaXMgbm90 IHBvc3NpYmxlLgorCSAqLworCWlmIChyb290LT5hZ2dfY2xhdXNlX2xpc3QgPT0gTklMIHx8CisJ CXJvb3QtPmdyb3VwX2V4cHJfbGlzdCA9PSBOSUwpCisJCXJldHVybjsKKworCS8qIEFkZCBwYXRo cyB0byB0aGUgZ3JvdXBlZCBiYXNlIHJlbGF0aW9uIGlmIG9uZSBleGlzdHMuICovCisJZ3JvdXBl ZF9yZWwgPSByZWwtPmdyb3VwZWRfcmVsOworCWlmIChncm91cGVkX3JlbCkKKwl7CisJCUFzc2Vy dChJU19HUk9VUEVEX1JFTChncm91cGVkX3JlbCkpOworCisJCWdlbmVyYXRlX2dyb3VwZWRfcGF0 aHMocm9vdCwgZ3JvdXBlZF9yZWwsIHJlbCwKKwkJCQkJCQkgICBncm91cGVkX3JlbC0+YWdnX2lu Zm8pOworCQlzZXRfY2hlYXBlc3QoZ3JvdXBlZF9yZWwpOworCX0KK30KKwogCiAvKgogICogYWRk X3BhdGhzX3RvX2FwcGVuZF9yZWwKQEAgLTMzMzUsNiArMzQxNywzMTkgQEAgZ2VuZXJhdGVfdXNl ZnVsX2dhdGhlcl9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLCBib29s IG92ZXJyaWRlX3IKIAl9CiB9CiAKKy8qCisgKiBnZW5lcmF0ZV9ncm91cGVkX3BhdGhzCisgKgkJ R2VuZXJhdGUgcGF0aHMgZm9yIGEgZ3JvdXBlZCByZWxhdGlvbiBieSBhZGRpbmcgc29ydGVkIGFu ZCBoYXNoZWQKKyAqCQlwYXJ0aWFsIGFnZ3JlZ2F0aW9uIHBhdGhzIG9uIHRvcCBvZiBwYXRocyBv ZiB0aGUgdW5ncm91cGVkIGJhc2Ugb3Igam9pbgorICoJCXJlbGF0aW9uLgorICoKKyAqIFRoZSBp bmZvcm1hdGlvbiBuZWVkZWQgYXJlIHByb3ZpZGVkIGJ5IHRoZSBSZWxBZ2dJbmZvIHN0cnVjdHVy ZS4KKyAqLwordm9pZAorZ2VuZXJhdGVfZ3JvdXBlZF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwg UmVsT3B0SW5mbyAqZ3JvdXBlZF9yZWwsCisJCQkJCSAgIFJlbE9wdEluZm8gKnJlbCwgUmVsQWdn SW5mbyAqYWdnX2luZm8pCit7CisJQWdnQ2xhdXNlQ29zdHMgYWdnX2Nvc3RzOworCWJvb2wJCWNh bl9oYXNoOworCWJvb2wJCWNhbl9zb3J0OworCVBhdGgJICAgKmNoZWFwZXN0X3RvdGFsX3BhdGgg PSBOVUxMOworCVBhdGgJICAgKmNoZWFwZXN0X3BhcnRpYWxfcGF0aCA9IE5VTEw7CisJZG91Ymxl CQlkTnVtR3JvdXBzID0gMDsKKwlkb3VibGUJCWROdW1QYXJ0aWFsR3JvdXBzID0gMDsKKworCWlm IChJU19EVU1NWV9SRUwocmVsKSkKKwl7CisJCW1hcmtfZHVtbXlfcmVsKGdyb3VwZWRfcmVsKTsK KwkJcmV0dXJuOworCX0KKworCS8qCisJICogV2UgcHVzaCBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIG9u bHkgdG8gdGhlIGxvd2VzdCBwb3NzaWJsZSBsZXZlbCBpbiB0aGUKKwkgKiBqb2luIHRyZWUgdGhh dCBpcyBkZWVtZWQgdXNlZnVsLgorCSAqLworCWlmICghYm1zX2VxdWFsKGFnZ19pbmZvLT5hcHBs eV9hdCwgcmVsLT5yZWxpZHMpIHx8CisJCSFhZ2dfaW5mby0+YWdnX3VzZWZ1bCkKKwkJcmV0dXJu OworCisJTWVtU2V0KCZhZ2dfY29zdHMsIDAsIHNpemVvZihBZ2dDbGF1c2VDb3N0cykpOworCWdl dF9hZ2dfY2xhdXNlX2Nvc3RzKHJvb3QsIEFHR1NQTElUX0lOSVRJQUxfU0VSSUFMLCAmYWdnX2Nv c3RzKTsKKworCS8qCisJICogRGV0ZXJtaW5lIHdoZXRoZXIgaXQncyBwb3NzaWJsZSB0byBwZXJm b3JtIHNvcnQtYmFzZWQgaW1wbGVtZW50YXRpb25zCisJICogb2YgZ3JvdXBpbmcuCisJICovCisJ Y2FuX3NvcnQgPSBncm91cGluZ19pc19zb3J0YWJsZShhZ2dfaW5mby0+Z3JvdXBfY2xhdXNlcyk7 CisKKwkvKgorCSAqIERldGVybWluZSB3aGV0aGVyIHdlIHNob3VsZCBjb25zaWRlciBoYXNoLWJh c2VkIGltcGxlbWVudGF0aW9ucyBvZgorCSAqIGdyb3VwaW5nLgorCSAqLworCUFzc2VydChyb290 LT5udW1PcmRlcmVkQWdncyA9PSAwKTsKKwljYW5faGFzaCA9IChhZ2dfaW5mby0+Z3JvdXBfY2xh dXNlcyAhPSBOSUwgJiYKKwkJCQlncm91cGluZ19pc19oYXNoYWJsZShhZ2dfaW5mby0+Z3JvdXBf Y2xhdXNlcykpOworCisJLyoKKwkgKiBDb25zaWRlciB3aGV0aGVyIHdlIHNob3VsZCBnZW5lcmF0 ZSBwYXJ0aWFsbHkgYWdncmVnYXRlZCBub24tcGFydGlhbAorCSAqIHBhdGhzLiAgV2UgY2FuIG9u bHkgZG8gdGhpcyBpZiB3ZSBoYXZlIGEgbm9uLXBhcnRpYWwgcGF0aC4KKwkgKi8KKwlpZiAocmVs LT5wYXRobGlzdCAhPSBOSUwpCisJeworCQljaGVhcGVzdF90b3RhbF9wYXRoID0gcmVsLT5jaGVh cGVzdF90b3RhbF9wYXRoOworCQlBc3NlcnQoY2hlYXBlc3RfdG90YWxfcGF0aCAhPSBOVUxMKTsK Kwl9CisKKwkvKgorCSAqIElmIHBhcmFsbGVsaXNtIGlzIHBvc3NpYmxlIGZvciBncm91cGVkX3Jl bCwgdGhlbiB3ZSBzaG91bGQgY29uc2lkZXIKKwkgKiBnZW5lcmF0aW5nIHBhcnRpYWxseS1ncm91 cGVkIHBhcnRpYWwgcGF0aHMuICBIb3dldmVyLCBpZiB0aGUgdW5ncm91cGVkCisJICogcmVsIGhh cyBubyBwYXJ0aWFsIHBhdGhzLCB0aGVuIHdlIGNhbid0LgorCSAqLworCWlmIChncm91cGVkX3Jl bC0+Y29uc2lkZXJfcGFyYWxsZWwgJiYgcmVsLT5wYXJ0aWFsX3BhdGhsaXN0ICE9IE5JTCkKKwl7 CisJCWNoZWFwZXN0X3BhcnRpYWxfcGF0aCA9IGxpbml0aWFsKHJlbC0+cGFydGlhbF9wYXRobGlz dCk7CisJCUFzc2VydChjaGVhcGVzdF9wYXJ0aWFsX3BhdGggIT0gTlVMTCk7CisJfQorCisJLyog RXN0aW1hdGUgbnVtYmVyIG9mIHBhcnRpYWwgZ3JvdXBzLiAqLworCWlmIChjaGVhcGVzdF90b3Rh bF9wYXRoICE9IE5VTEwpCisJCWROdW1Hcm91cHMgPSBlc3RpbWF0ZV9udW1fZ3JvdXBzKHJvb3Qs CisJCQkJCQkJCQkJIGFnZ19pbmZvLT5ncm91cF9leHBycywKKwkJCQkJCQkJCQkgY2hlYXBlc3Rf dG90YWxfcGF0aC0+cm93cywKKwkJCQkJCQkJCQkgTlVMTCwgTlVMTCk7CisJaWYgKGNoZWFwZXN0 X3BhcnRpYWxfcGF0aCAhPSBOVUxMKQorCQlkTnVtUGFydGlhbEdyb3VwcyA9IGVzdGltYXRlX251 bV9ncm91cHMocm9vdCwKKwkJCQkJCQkJCQkJCWFnZ19pbmZvLT5ncm91cF9leHBycywKKwkJCQkJ CQkJCQkJCWNoZWFwZXN0X3BhcnRpYWxfcGF0aC0+cm93cywKKwkJCQkJCQkJCQkJCU5VTEwsIE5V TEwpOworCisJaWYgKGNhbl9zb3J0ICYmIGNoZWFwZXN0X3RvdGFsX3BhdGggIT0gTlVMTCkKKwl7 CisJCUxpc3RDZWxsICAgKmxjOworCisJCS8qCisJCSAqIFVzZSBhbnkgYXZhaWxhYmxlIHN1aXRh Ymx5LXNvcnRlZCBwYXRoIGFzIGlucHV0LCBhbmQgYWxzbyBjb25zaWRlcgorCQkgKiBzb3J0aW5n IHRoZSBjaGVhcGVzdC10b3RhbCBwYXRoLgorCQkgKi8KKwkJZm9yZWFjaChsYywgcmVsLT5wYXRo bGlzdCkKKwkJeworCQkJUGF0aAkgICAqaW5wdXRfcGF0aCA9IChQYXRoICopIGxmaXJzdChsYyk7 CisJCQlQYXRoCSAgICpwYXRoOworCQkJYm9vbAkJaXNfc29ydGVkOworCQkJaW50CQkJcHJlc29y dGVkX2tleXM7CisKKwkJCS8qCisJCQkgKiBTaW5jZSB0aGUgcGF0aCBvcmlnaW5hdGVzIGZyb20g YSBub24tZ3JvdXBlZCByZWxhdGlvbiB0aGF0IGlzCisJCQkgKiBub3QgYXdhcmUgb2YgZWFnZXIg YWdncmVnYXRpb24sIHdlIG11c3QgZW5zdXJlIHRoYXQgaXQgcHJvdmlkZXMKKwkJCSAqIHRoZSBj b3JyZWN0IGlucHV0IGZvciBwYXJ0aWFsIGFnZ3JlZ2F0aW9uLgorCQkJICovCisJCQlwYXRoID0g KFBhdGggKikgY3JlYXRlX3Byb2plY3Rpb25fcGF0aChyb290LAorCQkJCQkJCQkJCQkJICAgZ3Jv dXBlZF9yZWwsCisJCQkJCQkJCQkJCQkgICBpbnB1dF9wYXRoLAorCQkJCQkJCQkJCQkJICAgYWdn X2luZm8tPmFnZ19pbnB1dCk7CisKKwkJCWlzX3NvcnRlZCA9IHBhdGhrZXlzX2NvdW50X2NvbnRh aW5lZF9pbihhZ2dfaW5mby0+Z3JvdXBfcGF0aGtleXMsCisJCQkJCQkJCQkJCQkJcGF0aC0+cGF0 aGtleXMsCisJCQkJCQkJCQkJCQkJJnByZXNvcnRlZF9rZXlzKTsKKwkJCWlmICghaXNfc29ydGVk KQorCQkJeworCQkJCS8qCisJCQkJICogVHJ5IGF0IGxlYXN0IHNvcnRpbmcgdGhlIGNoZWFwZXN0 IHBhdGggYW5kIGFsc28gdHJ5CisJCQkJICogaW5jcmVtZW50YWxseSBzb3J0aW5nIGFueSBwYXRo IHdoaWNoIGlzIHBhcnRpYWxseSBzb3J0ZWQKKwkJCQkgKiBhbHJlYWR5IChubyBuZWVkIHRvIGRl YWwgd2l0aCBwYXRocyB3aGljaCBoYXZlIHByZXNvcnRlZAorCQkJCSAqIGtleXMgd2hlbiBpbmNy ZW1lbnRhbCBzb3J0IGlzIGRpc2FibGVkIHVubGVzcyBpdCdzIHRoZQorCQkJCSAqIGNoZWFwZXN0 IGlucHV0IHBhdGgpLgorCQkJCSAqLworCQkJCWlmIChpbnB1dF9wYXRoICE9IGNoZWFwZXN0X3Rv dGFsX3BhdGggJiYKKwkJCQkJKHByZXNvcnRlZF9rZXlzID09IDAgfHwgIWVuYWJsZV9pbmNyZW1l bnRhbF9zb3J0KSkKKwkJCQkJY29udGludWU7CisKKwkJCQkvKgorCQkJCSAqIFdlJ3ZlIG5vIG5l ZWQgdG8gY29uc2lkZXIgYm90aCBhIHNvcnQgYW5kIGluY3JlbWVudGFsIHNvcnQuCisJCQkJICog V2UnbGwganVzdCBkbyBhIHNvcnQgaWYgdGhlcmUgYXJlIG5vIHByZXNvcnRlZCBrZXlzIGFuZCBh bgorCQkJCSAqIGluY3JlbWVudGFsIHNvcnQgd2hlbiB0aGVyZSBhcmUgcHJlc29ydGVkIGtleXMu CisJCQkJICovCisJCQkJaWYgKHByZXNvcnRlZF9rZXlzID09IDAgfHwgIWVuYWJsZV9pbmNyZW1l bnRhbF9zb3J0KQorCQkJCQlwYXRoID0gKFBhdGggKikgY3JlYXRlX3NvcnRfcGF0aChyb290LAor CQkJCQkJCQkJCQkJCSBncm91cGVkX3JlbCwKKwkJCQkJCQkJCQkJCQkgcGF0aCwKKwkJCQkJCQkJ CQkJCQkgYWdnX2luZm8tPmdyb3VwX3BhdGhrZXlzLAorCQkJCQkJCQkJCQkJCSAtMS4wKTsKKwkJ CQllbHNlCisJCQkJCXBhdGggPSAoUGF0aCAqKSBjcmVhdGVfaW5jcmVtZW50YWxfc29ydF9wYXRo KHJvb3QsCisJCQkJCQkJCQkJCQkJCQkJIGdyb3VwZWRfcmVsLAorCQkJCQkJCQkJCQkJCQkJCSBw YXRoLAorCQkJCQkJCQkJCQkJCQkJCSBhZ2dfaW5mby0+Z3JvdXBfcGF0aGtleXMsCisJCQkJCQkJ CQkJCQkJCQkJIHByZXNvcnRlZF9rZXlzLAorCQkJCQkJCQkJCQkJCQkJCSAtMS4wKTsKKwkJCX0K KworCQkJLyoKKwkJCSAqIHF1YWwgaXMgTklMIGJlY2F1c2UgdGhlIEhBVklORyBjbGF1c2UgY2Fu bm90IGJlIGV2YWx1YXRlZCB1bnRpbAorCQkJICogdGhlIGZpbmFsIHZhbHVlIG9mIHRoZSBhZ2dy ZWdhdGUgaXMga25vd24uCisJCQkgKi8KKwkJCXBhdGggPSAoUGF0aCAqKSBjcmVhdGVfYWdnX3Bh dGgocm9vdCwKKwkJCQkJCQkJCQkJZ3JvdXBlZF9yZWwsCisJCQkJCQkJCQkJCXBhdGgsCisJCQkJ CQkJCQkJCWFnZ19pbmZvLT50YXJnZXQsCisJCQkJCQkJCQkJCUFHR19TT1JURUQsCisJCQkJCQkJ CQkJCUFHR1NQTElUX0lOSVRJQUxfU0VSSUFMLAorCQkJCQkJCQkJCQlhZ2dfaW5mby0+Z3JvdXBf Y2xhdXNlcywKKwkJCQkJCQkJCQkJTklMLAorCQkJCQkJCQkJCQkmYWdnX2Nvc3RzLAorCQkJCQkJ CQkJCQlkTnVtR3JvdXBzKTsKKworCQkJYWRkX3BhdGgoZ3JvdXBlZF9yZWwsIHBhdGgpOworCQl9 CisJfQorCisJaWYgKGNhbl9zb3J0ICYmIGNoZWFwZXN0X3BhcnRpYWxfcGF0aCAhPSBOVUxMKQor CXsKKwkJTGlzdENlbGwgICAqbGM7CisKKwkJLyogU2ltaWxhciB0byBhYm92ZSBsb2dpYywgYnV0 IGZvciBwYXJ0aWFsIHBhdGhzLiAqLworCQlmb3JlYWNoKGxjLCByZWwtPnBhcnRpYWxfcGF0aGxp c3QpCisJCXsKKwkJCVBhdGgJICAgKmlucHV0X3BhdGggPSAoUGF0aCAqKSBsZmlyc3QobGMpOwor CQkJUGF0aAkgICAqcGF0aDsKKwkJCWJvb2wJCWlzX3NvcnRlZDsKKwkJCWludAkJCXByZXNvcnRl ZF9rZXlzOworCisJCQkvKgorCQkJICogU2luY2UgdGhlIHBhdGggb3JpZ2luYXRlcyBmcm9tIGEg bm9uLWdyb3VwZWQgcmVsYXRpb24gdGhhdCBpcworCQkJICogbm90IGF3YXJlIG9mIGVhZ2VyIGFn Z3JlZ2F0aW9uLCB3ZSBtdXN0IGVuc3VyZSB0aGF0IGl0IHByb3ZpZGVzCisJCQkgKiB0aGUgY29y cmVjdCBpbnB1dCBmb3IgcGFydGlhbCBhZ2dyZWdhdGlvbi4KKwkJCSAqLworCQkJcGF0aCA9IChQ YXRoICopIGNyZWF0ZV9wcm9qZWN0aW9uX3BhdGgocm9vdCwKKwkJCQkJCQkJCQkJCSAgIGdyb3Vw ZWRfcmVsLAorCQkJCQkJCQkJCQkJICAgaW5wdXRfcGF0aCwKKwkJCQkJCQkJCQkJCSAgIGFnZ19p bmZvLT5hZ2dfaW5wdXQpOworCisJCQlpc19zb3J0ZWQgPSBwYXRoa2V5c19jb3VudF9jb250YWlu ZWRfaW4oYWdnX2luZm8tPmdyb3VwX3BhdGhrZXlzLAorCQkJCQkJCQkJCQkJCXBhdGgtPnBhdGhr ZXlzLAorCQkJCQkJCQkJCQkJCSZwcmVzb3J0ZWRfa2V5cyk7CisKKwkJCWlmICghaXNfc29ydGVk KQorCQkJeworCQkJCS8qCisJCQkJICogVHJ5IGF0IGxlYXN0IHNvcnRpbmcgdGhlIGNoZWFwZXN0 IHBhdGggYW5kIGFsc28gdHJ5CisJCQkJICogaW5jcmVtZW50YWxseSBzb3J0aW5nIGFueSBwYXRo IHdoaWNoIGlzIHBhcnRpYWxseSBzb3J0ZWQKKwkJCQkgKiBhbHJlYWR5IChubyBuZWVkIHRvIGRl YWwgd2l0aCBwYXRocyB3aGljaCBoYXZlIHByZXNvcnRlZAorCQkJCSAqIGtleXMgd2hlbiBpbmNy ZW1lbnRhbCBzb3J0IGlzIGRpc2FibGVkIHVubGVzcyBpdCdzIHRoZQorCQkJCSAqIGNoZWFwZXN0 IGlucHV0IHBhdGgpLgorCQkJCSAqLworCQkJCWlmIChpbnB1dF9wYXRoICE9IGNoZWFwZXN0X3Bh cnRpYWxfcGF0aCAmJgorCQkJCQkocHJlc29ydGVkX2tleXMgPT0gMCB8fCAhZW5hYmxlX2luY3Jl bWVudGFsX3NvcnQpKQorCQkJCQljb250aW51ZTsKKworCQkJCS8qCisJCQkJICogV2UndmUgbm8g bmVlZCB0byBjb25zaWRlciBib3RoIGEgc29ydCBhbmQgaW5jcmVtZW50YWwgc29ydC4KKwkJCQkg KiBXZSdsbCBqdXN0IGRvIGEgc29ydCBpZiB0aGVyZSBhcmUgbm8gcHJlc29ydGVkIGtleXMgYW5k IGFuCisJCQkJICogaW5jcmVtZW50YWwgc29ydCB3aGVuIHRoZXJlIGFyZSBwcmVzb3J0ZWQga2V5 cy4KKwkJCQkgKi8KKwkJCQlpZiAocHJlc29ydGVkX2tleXMgPT0gMCB8fCAhZW5hYmxlX2luY3Jl bWVudGFsX3NvcnQpCisJCQkJCXBhdGggPSAoUGF0aCAqKSBjcmVhdGVfc29ydF9wYXRoKHJvb3Qs CisJCQkJCQkJCQkJCQkJIGdyb3VwZWRfcmVsLAorCQkJCQkJCQkJCQkJCSBwYXRoLAorCQkJCQkJ CQkJCQkJCSBhZ2dfaW5mby0+Z3JvdXBfcGF0aGtleXMsCisJCQkJCQkJCQkJCQkJIC0xLjApOwor CQkJCWVsc2UKKwkJCQkJcGF0aCA9IChQYXRoICopIGNyZWF0ZV9pbmNyZW1lbnRhbF9zb3J0X3Bh dGgocm9vdCwKKwkJCQkJCQkJCQkJCQkJCQkgZ3JvdXBlZF9yZWwsCisJCQkJCQkJCQkJCQkJCQkJ IHBhdGgsCisJCQkJCQkJCQkJCQkJCQkJIGFnZ19pbmZvLT5ncm91cF9wYXRoa2V5cywKKwkJCQkJ CQkJCQkJCQkJCQkgcHJlc29ydGVkX2tleXMsCisJCQkJCQkJCQkJCQkJCQkJIC0xLjApOworCQkJ fQorCisJCQkvKgorCQkJICogcXVhbCBpcyBOSUwgYmVjYXVzZSB0aGUgSEFWSU5HIGNsYXVzZSBj YW5ub3QgYmUgZXZhbHVhdGVkIHVudGlsCisJCQkgKiB0aGUgZmluYWwgdmFsdWUgb2YgdGhlIGFn Z3JlZ2F0ZSBpcyBrbm93bi4KKwkJCSAqLworCQkJcGF0aCA9IChQYXRoICopIGNyZWF0ZV9hZ2df cGF0aChyb290LAorCQkJCQkJCQkJCQlncm91cGVkX3JlbCwKKwkJCQkJCQkJCQkJcGF0aCwKKwkJ CQkJCQkJCQkJYWdnX2luZm8tPnRhcmdldCwKKwkJCQkJCQkJCQkJQUdHX1NPUlRFRCwKKwkJCQkJ CQkJCQkJQUdHU1BMSVRfSU5JVElBTF9TRVJJQUwsCisJCQkJCQkJCQkJCWFnZ19pbmZvLT5ncm91 cF9jbGF1c2VzLAorCQkJCQkJCQkJCQlOSUwsCisJCQkJCQkJCQkJCSZhZ2dfY29zdHMsCisJCQkJ CQkJCQkJCWROdW1QYXJ0aWFsR3JvdXBzKTsKKworCQkJYWRkX3BhcnRpYWxfcGF0aChncm91cGVk X3JlbCwgcGF0aCk7CisJCX0KKwl9CisKKwkvKgorCSAqIEFkZCBhIHBhcnRpYWxseS1ncm91cGVk IEhhc2hBZ2cgUGF0aCB3aGVyZSBwb3NzaWJsZQorCSAqLworCWlmIChjYW5faGFzaCAmJiBjaGVh cGVzdF90b3RhbF9wYXRoICE9IE5VTEwpCisJeworCQlQYXRoCSAgICpwYXRoOworCisJCS8qCisJ CSAqIFNpbmNlIHRoZSBwYXRoIG9yaWdpbmF0ZXMgZnJvbSBhIG5vbi1ncm91cGVkIHJlbGF0aW9u IHRoYXQgaXMgbm90CisJCSAqIGF3YXJlIG9mIGVhZ2VyIGFnZ3JlZ2F0aW9uLCB3ZSBtdXN0IGVu c3VyZSB0aGF0IGl0IHByb3ZpZGVzIHRoZQorCQkgKiBjb3JyZWN0IGlucHV0IGZvciBwYXJ0aWFs IGFnZ3JlZ2F0aW9uLgorCQkgKi8KKwkJcGF0aCA9IChQYXRoICopIGNyZWF0ZV9wcm9qZWN0aW9u X3BhdGgocm9vdCwKKwkJCQkJCQkJCQkJICAgZ3JvdXBlZF9yZWwsCisJCQkJCQkJCQkJCSAgIGNo ZWFwZXN0X3RvdGFsX3BhdGgsCisJCQkJCQkJCQkJCSAgIGFnZ19pbmZvLT5hZ2dfaW5wdXQpOwor CisJCS8qCisJCSAqIHF1YWwgaXMgTklMIGJlY2F1c2UgdGhlIEhBVklORyBjbGF1c2UgY2Fubm90 IGJlIGV2YWx1YXRlZCB1bnRpbCB0aGUKKwkJICogZmluYWwgdmFsdWUgb2YgdGhlIGFnZ3JlZ2F0 ZSBpcyBrbm93bi4KKwkJICovCisJCXBhdGggPSAoUGF0aCAqKSBjcmVhdGVfYWdnX3BhdGgocm9v dCwKKwkJCQkJCQkJCQlncm91cGVkX3JlbCwKKwkJCQkJCQkJCQlwYXRoLAorCQkJCQkJCQkJCWFn Z19pbmZvLT50YXJnZXQsCisJCQkJCQkJCQkJQUdHX0hBU0hFRCwKKwkJCQkJCQkJCQlBR0dTUExJ VF9JTklUSUFMX1NFUklBTCwKKwkJCQkJCQkJCQlhZ2dfaW5mby0+Z3JvdXBfY2xhdXNlcywKKwkJ CQkJCQkJCQlOSUwsCisJCQkJCQkJCQkJJmFnZ19jb3N0cywKKwkJCQkJCQkJCQlkTnVtR3JvdXBz KTsKKworCQlhZGRfcGF0aChncm91cGVkX3JlbCwgcGF0aCk7CisJfQorCisJLyoKKwkgKiBOb3cg YWRkIGEgcGFydGlhbGx5LWdyb3VwZWQgSGFzaEFnZyBwYXJ0aWFsIFBhdGggd2hlcmUgcG9zc2li bGUKKwkgKi8KKwlpZiAoY2FuX2hhc2ggJiYgY2hlYXBlc3RfcGFydGlhbF9wYXRoICE9IE5VTEwp CisJeworCQlQYXRoCSAgICpwYXRoOworCisJCS8qCisJCSAqIFNpbmNlIHRoZSBwYXRoIG9yaWdp bmF0ZXMgZnJvbSBhIG5vbi1ncm91cGVkIHJlbGF0aW9uIHRoYXQgaXMgbm90CisJCSAqIGF3YXJl IG9mIGVhZ2VyIGFnZ3JlZ2F0aW9uLCB3ZSBtdXN0IGVuc3VyZSB0aGF0IGl0IHByb3ZpZGVzIHRo ZQorCQkgKiBjb3JyZWN0IGlucHV0IGZvciBwYXJ0aWFsIGFnZ3JlZ2F0aW9uLgorCQkgKi8KKwkJ cGF0aCA9IChQYXRoICopIGNyZWF0ZV9wcm9qZWN0aW9uX3BhdGgocm9vdCwKKwkJCQkJCQkJCQkJ ICAgZ3JvdXBlZF9yZWwsCisJCQkJCQkJCQkJCSAgIGNoZWFwZXN0X3BhcnRpYWxfcGF0aCwKKwkJ CQkJCQkJCQkJICAgYWdnX2luZm8tPmFnZ19pbnB1dCk7CisKKwkJLyoKKwkJICogcXVhbCBpcyBO SUwgYmVjYXVzZSB0aGUgSEFWSU5HIGNsYXVzZSBjYW5ub3QgYmUgZXZhbHVhdGVkIHVudGlsIHRo ZQorCQkgKiBmaW5hbCB2YWx1ZSBvZiB0aGUgYWdncmVnYXRlIGlzIGtub3duLgorCQkgKi8KKwkJ cGF0aCA9IChQYXRoICopIGNyZWF0ZV9hZ2dfcGF0aChyb290LAorCQkJCQkJCQkJCWdyb3VwZWRf cmVsLAorCQkJCQkJCQkJCXBhdGgsCisJCQkJCQkJCQkJYWdnX2luZm8tPnRhcmdldCwKKwkJCQkJ CQkJCQlBR0dfSEFTSEVELAorCQkJCQkJCQkJCUFHR1NQTElUX0lOSVRJQUxfU0VSSUFMLAorCQkJ CQkJCQkJCWFnZ19pbmZvLT5ncm91cF9jbGF1c2VzLAorCQkJCQkJCQkJCU5JTCwKKwkJCQkJCQkJ CQkmYWdnX2Nvc3RzLAorCQkJCQkJCQkJCWROdW1QYXJ0aWFsR3JvdXBzKTsKKworCQlhZGRfcGFy dGlhbF9wYXRoKGdyb3VwZWRfcmVsLCBwYXRoKTsKKwl9Cit9CisKIC8qCiAgKiBtYWtlX3JlbF9m cm9tX2pvaW5saXN0CiAgKgkgIEJ1aWxkIGFjY2VzcyBwYXRocyB1c2luZyBhICJqb2lubGlzdCIg dG8gZ3VpZGUgdGhlIGpvaW4gcGF0aCBzZWFyY2guCkBAIC0zNDk0LDYgKzM4ODksMTAgQEAgc3Rh bmRhcmRfam9pbl9zZWFyY2goUGxhbm5lckluZm8gKnJvb3QsIGludCBsZXZlbHNfbmVlZGVkLCBM aXN0ICppbml0aWFsX3JlbHMpCiAJCSAqCiAJCSAqIEFmdGVyIHRoYXQsIHdlJ3JlIGRvbmUgY3Jl YXRpbmcgcGF0aHMgZm9yIHRoZSBqb2lucmVsLCBzbyBydW4KIAkJICogc2V0X2NoZWFwZXN0KCku CisJCSAqCisJCSAqIEluIGFkZGl0aW9uLCB3ZSBhbHNvIHJ1biBnZW5lcmF0ZV9ncm91cGVkX3Bh dGhzKCkgZm9yIHRoZSBncm91cGVkCisJCSAqIHJlbGF0aW9uIG9mIGVhY2gganVzdC1wcm9jZXNz ZWQgam9pbnJlbCwgYW5kIHJ1biBzZXRfY2hlYXBlc3QoKSBmb3IKKwkJICogdGhlIGdyb3VwZWQg cmVsYXRpb24gYWZ0ZXJ3YXJkcy4KIAkJICovCiAJCWZvcmVhY2gobGMsIHJvb3QtPmpvaW5fcmVs X2xldmVsW2xldl0pCiAJCXsKQEAgLTM1MTQsNiArMzkxMywyNyBAQCBzdGFuZGFyZF9qb2luX3Nl YXJjaChQbGFubmVySW5mbyAqcm9vdCwgaW50IGxldmVsc19uZWVkZWQsIExpc3QgKmluaXRpYWxf cmVscykKIAkJCS8qIEZpbmQgYW5kIHNhdmUgdGhlIGNoZWFwZXN0IHBhdGhzIGZvciB0aGlzIHJl bCAqLwogCQkJc2V0X2NoZWFwZXN0KHJlbCk7CiAKKwkJCS8qCisJCQkgKiBFeGNlcHQgZm9yIHRo ZSB0b3Btb3N0IHNjYW4vam9pbiByZWwsIGNvbnNpZGVyIGdlbmVyYXRpbmcKKwkJCSAqIHBhcnRp YWwgYWdncmVnYXRpb24gcGF0aHMgZm9yIHRoZSBncm91cGVkIHJlbGF0aW9uIG9uIHRvcCBvZgor CQkJICogdGhlIHBhdGhzIG9mIHRoaXMgcmVsLiAgQWZ0ZXIgdGhhdCwgd2UncmUgZG9uZSBjcmVh dGluZyBwYXRocworCQkJICogZm9yIHRoZSBncm91cGVkIHJlbGF0aW9uLCBzbyBydW4gc2V0X2No ZWFwZXN0KCkuCisJCQkgKi8KKwkJCWlmICghYm1zX2VxdWFsKHJlbC0+cmVsaWRzLCByb290LT5h bGxfcXVlcnlfcmVscykpCisJCQl7CisJCQkJUmVsT3B0SW5mbyAqZ3JvdXBlZF9yZWw7CisKKwkJ CQlncm91cGVkX3JlbCA9IHJlbC0+Z3JvdXBlZF9yZWw7CisJCQkJaWYgKGdyb3VwZWRfcmVsKQor CQkJCXsKKwkJCQkJQXNzZXJ0KElTX0dST1VQRURfUkVMKGdyb3VwZWRfcmVsKSk7CisKKwkJCQkJ Z2VuZXJhdGVfZ3JvdXBlZF9wYXRocyhyb290LCBncm91cGVkX3JlbCwgcmVsLAorCQkJCQkJCQkJ CSAgIGdyb3VwZWRfcmVsLT5hZ2dfaW5mbyk7CisJCQkJCXNldF9jaGVhcGVzdChncm91cGVkX3Jl bCk7CisJCQkJfQorCQkJfQorCiAjaWZkZWYgT1BUSU1JWkVSX0RFQlVHCiAJCQlwcHJpbnQocmVs KTsKICNlbmRpZgpAQCAtNDM4Myw2ICs0ODAzLDI5IEBAIGdlbmVyYXRlX3BhcnRpdGlvbndpc2Vf am9pbl9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsKQogCQlpZiAoSVNf RFVNTVlfUkVMKGNoaWxkX3JlbCkpCiAJCQljb250aW51ZTsKIAorCQkvKgorCQkgKiBFeGNlcHQg Zm9yIHRoZSB0b3Btb3N0IHNjYW4vam9pbiByZWwsIGNvbnNpZGVyIGdlbmVyYXRpbmcgcGFydGlh bAorCQkgKiBhZ2dyZWdhdGlvbiBwYXRocyBmb3IgdGhlIGdyb3VwZWQgcmVsYXRpb24gb24gdG9w IG9mIHRoZSBwYXRocyBvZgorCQkgKiB0aGlzIHBhcnRpdGlvbmVkIGNoaWxkLWpvaW4uICBBZnRl ciB0aGF0LCB3ZSdyZSBkb25lIGNyZWF0aW5nIHBhdGhzCisJCSAqIGZvciB0aGUgZ3JvdXBlZCBy ZWxhdGlvbiwgc28gcnVuIHNldF9jaGVhcGVzdCgpLgorCQkgKi8KKwkJaWYgKCFibXNfZXF1YWwo SVNfT1RIRVJfUkVMKHJlbCkgPworCQkJCQkgICByZWwtPnRvcF9wYXJlbnRfcmVsaWRzIDogcmVs LT5yZWxpZHMsCisJCQkJCSAgIHJvb3QtPmFsbF9xdWVyeV9yZWxzKSkKKwkJeworCQkJUmVsT3B0 SW5mbyAqZ3JvdXBlZF9yZWw7CisKKwkJCWdyb3VwZWRfcmVsID0gY2hpbGRfcmVsLT5ncm91cGVk X3JlbDsKKwkJCWlmIChncm91cGVkX3JlbCkKKwkJCXsKKwkJCQlBc3NlcnQoSVNfR1JPVVBFRF9S RUwoZ3JvdXBlZF9yZWwpKTsKKworCQkJCWdlbmVyYXRlX2dyb3VwZWRfcGF0aHMocm9vdCwgZ3Jv dXBlZF9yZWwsIGNoaWxkX3JlbCwKKwkJCQkJCQkJCSAgIGdyb3VwZWRfcmVsLT5hZ2dfaW5mbyk7 CisJCQkJc2V0X2NoZWFwZXN0KGdyb3VwZWRfcmVsKTsKKwkJCX0KKwkJfQorCiAjaWZkZWYgT1BU SU1JWkVSX0RFQlVHCiAJCXBwcmludChjaGlsZF9yZWwpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9qb2lucmVscy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BhdGgvam9pbnJlbHMuYwppbmRleCBhYWQ0MWI5NDAwOS4uNDc3YjBiYzNiODQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2pvaW5yZWxzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BhdGgvam9pbnJlbHMuYwpAQCAtMTYsNiArMTYsNyBAQAogCiAjaW5j bHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL2FwcGVuZGluZm8uaCIKKyNp bmNsdWRlICJvcHRpbWl6ZXIvY29zdC5oIgogI2luY2x1ZGUgIm9wdGltaXplci9qb2luaW5mby5o IgogI2luY2x1ZGUgIm9wdGltaXplci9wYXRobm9kZS5oIgogI2luY2x1ZGUgIm9wdGltaXplci9w YXRocy5oIgpAQCAtMzUsNiArMzYsOSBAQCBzdGF0aWMgYm9vbCBoYXNfbGVnYWxfam9pbmNsYXVz ZShQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsKTsKIHN0YXRpYyBib29sIHJlc3Ry aWN0aW9uX2lzX2NvbnN0YW50X2ZhbHNlKExpc3QgKnJlc3RyaWN0bGlzdCwKIAkJCQkJCQkJCQkg IFJlbE9wdEluZm8gKmpvaW5yZWwsCiAJCQkJCQkJCQkJICBib29sIG9ubHlfcHVzaGVkX2Rvd24p Oworc3RhdGljIHZvaWQgbWFrZV9ncm91cGVkX2pvaW5fcmVsKFBsYW5uZXJJbmZvICpyb290LCBS ZWxPcHRJbmZvICpyZWwxLAorCQkJCQkJCQkgIFJlbE9wdEluZm8gKnJlbDIsIFJlbE9wdEluZm8g KmpvaW5yZWwsCisJCQkJCQkJCSAgU3BlY2lhbEpvaW5JbmZvICpzamluZm8sIExpc3QgKnJlc3Ry aWN0bGlzdCk7CiBzdGF0aWMgdm9pZCBwb3B1bGF0ZV9qb2lucmVsX3dpdGhfcGF0aHMoUGxhbm5l ckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbDEsCiAJCQkJCQkJCQkJUmVsT3B0SW5mbyAqcmVs MiwgUmVsT3B0SW5mbyAqam9pbnJlbCwKIAkJCQkJCQkJCQlTcGVjaWFsSm9pbkluZm8gKnNqaW5m bywgTGlzdCAqcmVzdHJpY3RsaXN0KTsKQEAgLTc2Myw2ICs3NjcsMTAgQEAgbWFrZV9qb2luX3Jl bChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsMSwgUmVsT3B0SW5mbyAqcmVsMikK IAkJcmV0dXJuIGpvaW5yZWw7CiAJfQogCisJLyogQnVpbGQgYSBncm91cGVkIGpvaW4gcmVsYXRp b24gZm9yICdqb2lucmVsJyBpZiBwb3NzaWJsZS4gKi8KKwltYWtlX2dyb3VwZWRfam9pbl9yZWwo cm9vdCwgcmVsMSwgcmVsMiwgam9pbnJlbCwgc2ppbmZvLAorCQkJCQkJICByZXN0cmljdGxpc3Qp OworCiAJLyogQWRkIHBhdGhzIHRvIHRoZSBqb2luIHJlbGF0aW9uLiAqLwogCXBvcHVsYXRlX2pv aW5yZWxfd2l0aF9wYXRocyhyb290LCByZWwxLCByZWwyLCBqb2lucmVsLCBzamluZm8sCiAJCQkJ CQkJCXJlc3RyaWN0bGlzdCk7CkBAIC04NzQsNiArODgyLDE4NiBAQCBhZGRfb3V0ZXJfam9pbnNf dG9fcmVsaWRzKFBsYW5uZXJJbmZvICpyb290LCBSZWxpZHMgaW5wdXRfcmVsaWRzLAogCXJldHVy biBpbnB1dF9yZWxpZHM7CiB9CiAKKy8qCisgKiBtYWtlX2dyb3VwZWRfam9pbl9yZWwKKyAqCSAg QnVpbGQgYSBncm91cGVkIGpvaW4gcmVsYXRpb24gZm9yIHRoZSBnaXZlbiAiam9pbnJlbCIgaWYg ZWFnZXIKKyAqCSAgYWdncmVnYXRpb24gaXMgYXBwbGljYWJsZSBhbmQgdGhlIHJlc3VsdGluZyBn cm91cGVkIHBhdGhzIGFyZSBjb25zaWRlcmVkCisgKgkgIHVzZWZ1bC4KKyAqCisgKiBUaGVyZSBh cmUgdHdvIHN0cmF0ZWdpZXMgZm9yIGdlbmVyYXRpbmcgZ3JvdXBlZCBwYXRocyBmb3IgYSBqb2lu IHJlbGF0aW9uOgorICoKKyAqIDEuIEpvaW4gYSBncm91cGVkIChwYXJ0aWFsbHkgYWdncmVnYXRl ZCkgaW5wdXQgcmVsYXRpb24gd2l0aCBhIG5vbi1ncm91cGVkCisgKiBpbnB1dCAoZS5nLiwgQUdH KEIpIEpPSU4gQSkuCisgKgorICogMi4gQXBwbHkgcGFydGlhbCBhZ2dyZWdhdGlvbiAoc29ydGVk IG9yIGhhc2hlZCkgb24gdG9wIG9mIGV4aXN0aW5nCisgKiBub24tZ3JvdXBlZCBqb2luIHBhdGhz IChlLmcuLCBBR0coQSBKT0lOIEIpKS4KKyAqCisgKiBUbyBsaW1pdCBwbGFubmluZyBlZmZvcnQg YW5kIGF2b2lkIGFuIGV4cGxvc2lvbiBvZiBhbHRlcm5hdGl2ZXMsIHdlIGFkb3B0IGEKKyAqIHN0 cmF0ZWd5IHdoZXJlIHBhcnRpYWwgYWdncmVnYXRpb24gaXMgb25seSBwdXNoZWQgdG8gdGhlIGxv d2VzdCBwb3NzaWJsZQorICogbGV2ZWwgaW4gdGhlIGpvaW4gdHJlZSB0aGF0IGlzIGRlZW1lZCB1 c2VmdWwuICBUaGF0IGlzLCBpZiBncm91cGVkIHBhdGhzIGNhbgorICogYmUgYnVpbHQgdXNpbmcg dGhlIGZpcnN0IHN0cmF0ZWd5LCB3ZSBza2lwIGNvbnNpZGVyYXRpb24gb2YgdGhlIHNlY29uZAor ICogc3RyYXRlZ3kgZm9yIHRoZSBzYW1lIGpvaW4gbGV2ZWwuCisgKgorICogQWRkaXRpb25hbGx5 LCBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgbG93ZXN0IHVzZWZ1bCBsZXZlbHMgd2hlcmUgcGFydGlh bAorICogYWdncmVnYXRpb24gY291bGQgYmUgYXBwbGllZCwgc3VjaCBhcyBpbiBhIGpvaW4gdHJl ZSB3aXRoIHJlbGF0aW9ucyBBLCBCLAorICogYW5kIEMgd2hlcmUgYm90aCAiQUdHKEEgSk9JTiBC KSBKT0lOIEMiIGFuZCAiQSBKT0lOIEFHRyhCIEpPSU4gQykiIGFyZSB2YWxpZAorICogcGxhY2Vt ZW50cywgd2UgY2hvb3NlIG9ubHkgdGhlIGZpcnN0IG9uZSBlbmNvdW50ZXJlZCBkdXJpbmcgam9p biBzZWFyY2guCisgKiBUaGlzIGF2b2lkcyBnZW5lcmF0aW5nIG11bHRpcGxlIHZlcnNpb25zIG9m IHRoZSBzYW1lIGdyb3VwZWQgcmVsYXRpb24gYmFzZWQKKyAqIG9uIGRpZmZlcmVudCBhZ2dyZWdh dGlvbiBwbGFjZW1lbnRzLgorICoKKyAqIFRoZXNlIGhldXJpc3RpY3MgYWxzbyBlbnN1cmUgdGhh dCBhbGwgZ3JvdXBlZCBwYXRocyBmb3IgdGhlIHNhbWUgZ3JvdXBlZAorICogcmVsYXRpb24gcHJv ZHVjZSB0aGUgc2FtZSBzZXQgb2Ygcm93cywgd2hpY2ggaXMgYSBiYXNpYyBhc3N1bXB0aW9uIGlu IHRoZQorICogcGxhbm5lci4KKyAqLworc3RhdGljIHZvaWQKK21ha2VfZ3JvdXBlZF9qb2luX3Jl bChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsMSwKKwkJCQkJICBSZWxPcHRJbmZv ICpyZWwyLCBSZWxPcHRJbmZvICpqb2lucmVsLAorCQkJCQkgIFNwZWNpYWxKb2luSW5mbyAqc2pp bmZvLCBMaXN0ICpyZXN0cmljdGxpc3QpCit7CisJUmVsT3B0SW5mbyAqZ3JvdXBlZF9yZWw7CisJ UmVsT3B0SW5mbyAqZ3JvdXBlZF9yZWwxOworCVJlbE9wdEluZm8gKmdyb3VwZWRfcmVsMjsKKwli b29sCQlyZWwxX2VtcHR5OworCWJvb2wJCXJlbDJfZW1wdHk7CisJUmVsaWRzCQlhZ2dfYXBwbHlf YXQ7CisKKwkvKgorCSAqIElmIHRoZXJlIGFyZSBubyBhZ2dyZWdhdGUgZXhwcmVzc2lvbnMgb3Ig Z3JvdXBpbmcgZXhwcmVzc2lvbnMsIGVhZ2VyCisJICogYWdncmVnYXRpb24gaXMgbm90IHBvc3Np YmxlLgorCSAqLworCWlmIChyb290LT5hZ2dfY2xhdXNlX2xpc3QgPT0gTklMIHx8CisJCXJvb3Qt Pmdyb3VwX2V4cHJfbGlzdCA9PSBOSUwpCisJCXJldHVybjsKKworCS8qIFJldHJpZXZlIHRoZSBn cm91cGVkIHJlbGF0aW9ucyBmb3IgdGhlIHR3byBpbnB1dCByZWxzICovCisJZ3JvdXBlZF9yZWwx ID0gcmVsMS0+Z3JvdXBlZF9yZWw7CisJZ3JvdXBlZF9yZWwyID0gcmVsMi0+Z3JvdXBlZF9yZWw7 CisKKwlyZWwxX2VtcHR5ID0gKGdyb3VwZWRfcmVsMSA9PSBOVUxMIHx8IElTX0RVTU1ZX1JFTChn cm91cGVkX3JlbDEpKTsKKwlyZWwyX2VtcHR5ID0gKGdyb3VwZWRfcmVsMiA9PSBOVUxMIHx8IElT X0RVTU1ZX1JFTChncm91cGVkX3JlbDIpKTsKKworCS8qIEZpbmQgb3IgY29uc3RydWN0IGEgZ3Jv dXBlZCBqb2lucmVsIGZvciB0aGlzIGpvaW5yZWwgKi8KKwlncm91cGVkX3JlbCA9IGpvaW5yZWwt Pmdyb3VwZWRfcmVsOworCWlmIChncm91cGVkX3JlbCA9PSBOVUxMKQorCXsKKwkJUmVsQWdnSW5m byAqYWdnX2luZm8gPSBOVUxMOworCisJCS8qCisJCSAqIFByZXBhcmUgdGhlIGluZm9ybWF0aW9u IG5lZWRlZCB0byBjcmVhdGUgZ3JvdXBlZCBwYXRocyBmb3IgdGhpcworCQkgKiBqb2luIHJlbGF0 aW9uLgorCQkgKi8KKwkJYWdnX2luZm8gPSBjcmVhdGVfcmVsX2FnZ19pbmZvKHJvb3QsIGpvaW5y ZWwpOworCQlpZiAoYWdnX2luZm8gPT0gTlVMTCkKKwkJCXJldHVybjsKKworCQkvKgorCQkgKiBJ ZiBncm91cGVkIHBhdGhzIGZvciB0aGUgZ2l2ZW4gam9pbiByZWxhdGlvbiBhcmUgbm90IGNvbnNp ZGVyZWQKKwkJICogdXNlZnVsLCBhbmQgbm8gZ3JvdXBlZCBwYXRocyBjYW4gYmUgYnVpbHQgYnkg am9pbmluZyBncm91cGVkIGlucHV0CisJCSAqIHJlbGF0aW9ucywgc2tpcCBidWlsZGluZyB0aGUg Z3JvdXBlZCBqb2luIHJlbGF0aW9uLgorCQkgKi8KKwkJaWYgKCFhZ2dfaW5mby0+YWdnX3VzZWZ1 bCAmJgorCQkJKHJlbDFfZW1wdHkgPT0gcmVsMl9lbXB0eSkpCisJCQlyZXR1cm47CisKKwkJLyog YnVpbGQgdGhlIGdyb3VwZWQgcmVsYXRpb24gKi8KKwkJZ3JvdXBlZF9yZWwgPSBidWlsZF9ncm91 cGVkX3JlbChyb290LCBqb2lucmVsKTsKKwkJZ3JvdXBlZF9yZWwtPnJlbHRhcmdldCA9IGFnZ19p bmZvLT50YXJnZXQ7CisKKwkJaWYgKHJlbDFfZW1wdHkgIT0gcmVsMl9lbXB0eSkKKwkJeworCQkJ LyoKKwkJCSAqIElmIHRoZXJlIGlzIGV4YWN0bHkgb25lIGdyb3VwZWQgaW5wdXQgcmVsYXRpb24s IHRoZW4gd2UgY2FuCisJCQkgKiBidWlsZCBncm91cGVkIHBhdGhzIGJ5IGpvaW5pbmcgdGhlIGlu cHV0IHJlbGF0aW9ucy4gIFNldCBzaXplCisJCQkgKiBlc3RpbWF0ZXMgZm9yIHRoZSBncm91cGVk IGpvaW4gcmVsYXRpb24gYmFzZWQgb24gdGhlIGlucHV0CisJCQkgKiByZWxhdGlvbnMsIGFuZCB1 cGRhdGUgdGhlIGxvd2VzdCBqb2luIGxldmVsIHdoZXJlIHBhcnRpYWwKKwkJCSAqIGFnZ3JlZ2F0 aW9uIGlzIGFwcGxpZWQgdG8gdGhhdCBvZiB0aGUgZ3JvdXBlZCBpbnB1dCByZWxhdGlvbi4KKwkJ CSAqLworCQkJc2V0X2pvaW5yZWxfc2l6ZV9lc3RpbWF0ZXMocm9vdCwgZ3JvdXBlZF9yZWwsCisJ CQkJCQkJCQkgICByZWwxX2VtcHR5ID8gcmVsMSA6IGdyb3VwZWRfcmVsMSwKKwkJCQkJCQkJCSAg IHJlbDJfZW1wdHkgPyByZWwyIDogZ3JvdXBlZF9yZWwyLAorCQkJCQkJCQkJICAgc2ppbmZvLCBy ZXN0cmljdGxpc3QpOworCQkJYWdnX2luZm8tPmFwcGx5X2F0ID0gcmVsMV9lbXB0eSA/CisJCQkJ Z3JvdXBlZF9yZWwyLT5hZ2dfaW5mby0+YXBwbHlfYXQgOgorCQkJCWdyb3VwZWRfcmVsMS0+YWdn X2luZm8tPmFwcGx5X2F0OworCQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIE90aGVyd2lz ZSwgZ3JvdXBlZCBwYXRocyBjYW4gYmUgYnVpbHQgYnkgYXBwbHlpbmcgcGFydGlhbAorCQkJICog YWdncmVnYXRpb24gb24gdG9wIG9mIGV4aXN0aW5nIG5vbi1ncm91cGVkIGpvaW4gcGF0aHMuICBT ZXQKKwkJCSAqIHNpemUgZXN0aW1hdGVzIGZvciB0aGUgZ3JvdXBlZCBqb2luIHJlbGF0aW9uIGJh c2VkIG9uIHRoZQorCQkJICogZXN0aW1hdGVkIG51bWJlciBvZiBncm91cHMsIGFuZCB0cmFjayB0 aGUgbG93ZXN0IGpvaW4gbGV2ZWwKKwkJCSAqIHdoZXJlIHBhcnRpYWwgYWdncmVnYXRpb24gaXMg YXBwbGllZC4gIE5vdGUgdGhhdCB0aGVzZSB2YWx1ZXMKKwkJCSAqIG1heSBiZSB1cGRhdGVkIGxh dGVyIGlmIGl0IGlzIGRldGVybWluZWQgdGhhdCBncm91cGVkIHBhdGhzIGNhbgorCQkJICogYmUg Y29uc3RydWN0ZWQgYnkgam9pbmluZyBvdGhlciBpbnB1dCByZWxhdGlvbnMuCisJCQkgKi8KKwkJ CWdyb3VwZWRfcmVsLT5yb3dzID0gYWdnX2luZm8tPmdyb3VwZWRfcm93czsKKwkJCWFnZ19pbmZv LT5hcHBseV9hdCA9IGJtc19jb3B5KGpvaW5yZWwtPnJlbGlkcyk7CisJCX0KKworCQlncm91cGVk X3JlbC0+YWdnX2luZm8gPSBhZ2dfaW5mbzsKKwkJam9pbnJlbC0+Z3JvdXBlZF9yZWwgPSBncm91 cGVkX3JlbDsKKwl9CisKKwlBc3NlcnQoSVNfR1JPVVBFRF9SRUwoZ3JvdXBlZF9yZWwpKTsKKwor CS8qIFdlIG1heSBoYXZlIGFscmVhZHkgcHJvdmVuIHRoaXMgZ3JvdXBlZCBqb2luIHJlbGF0aW9u IHRvIGJlIGR1bW15LiAqLworCWlmIChJU19EVU1NWV9SRUwoZ3JvdXBlZF9yZWwpKQorCQlyZXR1 cm47CisKKwkvKgorCSAqIE5vdGhpbmcgdG8gZG8gaWYgdGhlcmUncyBubyBncm91cGVkIGlucHV0 IHJlbGF0aW9uLiAgQWxzbywgam9pbmluZyB0d28KKwkgKiBncm91cGVkIHJlbGF0aW9ucyBpcyBu b3QgY3VycmVudGx5IHN1cHBvcnRlZC4KKwkgKi8KKwlpZiAocmVsMV9lbXB0eSA9PSByZWwyX2Vt cHR5KQorCQlyZXR1cm47CisKKwkvKgorCSAqIEdldCB0aGUgbG93ZXN0IGpvaW4gbGV2ZWwgd2hl cmUgcGFydGlhbCBhZ2dyZWdhdGlvbiBpcyBhcHBsaWVkIGFtb25nCisJICogdGhlIGdpdmVuIGlu cHV0IHJlbGF0aW9ucy4KKwkgKi8KKwlhZ2dfYXBwbHlfYXQgPSByZWwxX2VtcHR5ID8KKwkJZ3Jv dXBlZF9yZWwyLT5hZ2dfaW5mby0+YXBwbHlfYXQgOgorCQlncm91cGVkX3JlbDEtPmFnZ19pbmZv LT5hcHBseV9hdDsKKworCS8qCisJICogSWYgaXQncyBub3QgdGhlIGRlc2lnbmF0ZWQgbGV2ZWws IHNraXAgYnVpbGRpbmcgZ3JvdXBlZCBwYXRocy4KKwkgKgorCSAqIE9uZSBleGNlcHRpb24gaXMg d2hlbiBpdCBpcyBhIHN1YnNldCBvZiB0aGUgcHJldmlvdXNseSByZWNvcmRlZCBsZXZlbC4KKwkg KiBJbiB0aGF0IGNhc2UsIHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBkZXNpZ25hdGVkIGxldmVsIHRv IHRoaXMgb25lLCBhbmQKKwkgKiBhZGp1c3QgdGhlIHNpemUgZXN0aW1hdGVzIGZvciB0aGUgZ3Jv dXBlZCBqb2luIHJlbGF0aW9uIGFjY29yZGluZ2x5LgorCSAqIEZvciBleGFtcGxlLCBzdXBwb3Nl IHBhcnRpYWwgYWdncmVnYXRpb24gY2FuIGJlIGFwcGxpZWQgb24gdG9wIG9mIChCCisJICogSk9J TiBDKS4gIElmIHdlIGZpcnN0IGNvbnN0cnVjdCB0aGUgam9pbiBhcyAoKEEgSk9JTiBCKSBKT0lO IEMpLCB3ZSdkCisJICogcmVjb3JkIHRoZSBkZXNpZ25hdGVkIGxldmVsIGFzIGluY2x1ZGluZyBh bGwgdGhyZWUgcmVsYXRpb25zIChBIEIgQykuCisJICogTGF0ZXIsIHdoZW4gd2UgY29uc2lkZXIg KEEgSk9JTiAoQiBKT0lOIEMpKSwgd2UgZW5jb3VudGVyIHRoZSBzbWFsbGVyCisJICogKEIgQykg am9pbiBsZXZlbCBkaXJlY3RseS4gIFNpbmNlIHRoaXMgaXMgYSBzdWJzZXQgb2YgdGhlIHByZXZp b3VzCisJICogbGV2ZWwgYW5kIHN0aWxsIHZhbGlkIGZvciBwYXJ0aWFsIGFnZ3JlZ2F0aW9uLCB3 ZSB1cGRhdGUgdGhlIGRlc2lnbmF0ZWQKKwkgKiBsZXZlbCB0byAoQiBDKSwgYW5kIGFkanVzdCB0 aGUgc2l6ZSBlc3RpbWF0ZXMgYWNjb3JkaW5nbHkuCisJICovCisJaWYgKCFibXNfZXF1YWwoYWdn X2FwcGx5X2F0LCBncm91cGVkX3JlbC0+YWdnX2luZm8tPmFwcGx5X2F0KSkKKwl7CisJCWlmIChi bXNfaXNfc3Vic2V0KGFnZ19hcHBseV9hdCwgZ3JvdXBlZF9yZWwtPmFnZ19pbmZvLT5hcHBseV9h dCkpCisJCXsKKwkJCS8qIEFkanVzdCB0aGUgc2l6ZSBlc3RpbWF0ZXMgZm9yIHRoZSBncm91cGVk IGpvaW4gcmVsYXRpb24uICovCisJCQlzZXRfam9pbnJlbF9zaXplX2VzdGltYXRlcyhyb290LCBn cm91cGVkX3JlbCwKKwkJCQkJCQkJCSAgIHJlbDFfZW1wdHkgPyByZWwxIDogZ3JvdXBlZF9yZWwx LAorCQkJCQkJCQkJICAgcmVsMl9lbXB0eSA/IHJlbDIgOiBncm91cGVkX3JlbDIsCisJCQkJCQkJ CQkgICBzamluZm8sIHJlc3RyaWN0bGlzdCk7CisJCQlncm91cGVkX3JlbC0+YWdnX2luZm8tPmFw cGx5X2F0ID0gYWdnX2FwcGx5X2F0OworCQl9CisJCWVsc2UKKwkJCXJldHVybjsKKwl9CisKKwkv KiBNYWtlIHBhdGhzIGZvciB0aGUgZ3JvdXBlZCBqb2luIHJlbGF0aW9uLiAqLworCXBvcHVsYXRl X2pvaW5yZWxfd2l0aF9wYXRocyhyb290LAorCQkJCQkJCQlyZWwxX2VtcHR5ID8gcmVsMSA6IGdy b3VwZWRfcmVsMSwKKwkJCQkJCQkJcmVsMl9lbXB0eSA/IHJlbDIgOiBncm91cGVkX3JlbDIsCisJ CQkJCQkJCWdyb3VwZWRfcmVsLAorCQkJCQkJCQlzamluZm8sCisJCQkJCQkJCXJlc3RyaWN0bGlz dCk7Cit9CisKIC8qCiAgKiBwb3B1bGF0ZV9qb2lucmVsX3dpdGhfcGF0aHMKICAqCSAgQWRkIHBh dGhzIHRvIHRoZSBnaXZlbiBqb2lucmVsIGZvciBnaXZlbiBwYWlyIG9mIGpvaW5pbmcgcmVsYXRp b25zLiBUaGUKQEAgLTE2MTUsNiArMTgwMywxMSBAQCB0cnlfcGFydGl0aW9ud2lzZV9qb2luKFBs YW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwxLCBSZWxPcHRJbmZvICpyZWwyLAogCQkJ CQkJIGFkanVzdF9jaGlsZF9yZWxpZHMoam9pbnJlbC0+cmVsaWRzLAogCQkJCQkJCQkJCQkgbmFw cGluZm9zLCBhcHBpbmZvcykpKTsKIAorCQkvKiBCdWlsZCBhIGdyb3VwZWQgam9pbiByZWxhdGlv biBmb3IgJ2NoaWxkX2pvaW5yZWwnIGlmIHBvc3NpYmxlICovCisJCW1ha2VfZ3JvdXBlZF9qb2lu X3JlbChyb290LCBjaGlsZF9yZWwxLCBjaGlsZF9yZWwyLAorCQkJCQkJCSAgY2hpbGRfam9pbnJl bCwgY2hpbGRfc2ppbmZvLAorCQkJCQkJCSAgY2hpbGRfcmVzdHJpY3RsaXN0KTsKKwogCQkvKiBB bmQgbWFrZSBwYXRocyBmb3IgdGhlIGNoaWxkIGpvaW4gKi8KIAkJcG9wdWxhdGVfam9pbnJlbF93 aXRoX3BhdGhzKHJvb3QsIGNoaWxkX3JlbDEsIGNoaWxkX3JlbDIsCiAJCQkJCQkJCQljaGlsZF9q b2lucmVsLCBjaGlsZF9zamluZm8sCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9pbml0c3BsYW4uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2luaXRzcGxhbi5j CmluZGV4IDAxODA0YjA4NWIzLi43ZmExZTUwOTliMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vaW5pdHNwbGFuLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vaW5pdHNwbGFuLmMKQEAgLTE0LDYgKzE0LDcgQEAKICAqLwogI2luY2x1ZGUgInBvc3RncmVz LmgiCiAKKyNpbmNsdWRlICJhY2Nlc3MvbmJ0cmVlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19j b25zdHJhaW50LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAibm9k ZXMvbWFrZWZ1bmNzLmgiCkBAIC04MSw2ICs4Miw5IEBAIHR5cGVkZWYgc3RydWN0IEpvaW5UcmVl SXRlbQogfSBKb2luVHJlZUl0ZW07CiAKIAorc3RhdGljIGJvb2wgaGFzX2ludGVybmFsX2FnZ3Ry YW5zdHlwZShQbGFubmVySW5mbyAqcm9vdCk7CitzdGF0aWMgdm9pZCBjcmVhdGVfYWdnX2NsYXVz ZV9pbmZvcyhQbGFubmVySW5mbyAqcm9vdCk7CitzdGF0aWMgdm9pZCBjcmVhdGVfZ3JvdXBpbmdf ZXhwcl9pbmZvcyhQbGFubmVySW5mbyAqcm9vdCk7CiBzdGF0aWMgdm9pZCBleHRyYWN0X2xhdGVy YWxfcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqYnJlbCwKIAkJCQkJ CQkJCSAgIEluZGV4IHJ0aW5kZXgpOwogc3RhdGljIExpc3QgKmRlY29uc3RydWN0X3JlY3Vyc2Uo UGxhbm5lckluZm8gKnJvb3QsIE5vZGUgKmp0bm9kZSwKQEAgLTYyOCw2ICs2MzIsMzE1IEBAIHJl bW92ZV91c2VsZXNzX2dyb3VwYnlfY29sdW1ucyhQbGFubmVySW5mbyAqcm9vdCkKIAl9CiB9CiAK Ky8qCisgKiBzZXR1cF9lYWdlcl9hZ2dyZWdhdGlvbgorICoJICBDaGVjayBpZiBlYWdlciBhZ2dy ZWdhdGlvbiBpcyBhcHBsaWNhYmxlLCBhbmQgaWYgc28gY29sbGVjdCBzdWl0YWJsZQorICoJICBh Z2dyZWdhdGUgZXhwcmVzc2lvbnMgYW5kIGdyb3VwaW5nIGV4cHJlc3Npb25zIGluIHRoZSBxdWVy eS4KKyAqLwordm9pZAorc2V0dXBfZWFnZXJfYWdncmVnYXRpb24oUGxhbm5lckluZm8gKnJvb3Qp Cit7CisJLyoKKwkgKiBEb24ndCBhcHBseSBlYWdlciBhZ2dyZWdhdGlvbiBpZiBkaXNhYmxlZCBi eSB1c2VyLgorCSAqLworCWlmICghZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZSkKKwkJcmV0dXJuOwor CisJLyoKKwkgKiBEb24ndCBhcHBseSBlYWdlciBhZ2dyZWdhdGlvbiBpZiB0aGVyZSBhcmUgbm8g YXZhaWxhYmxlIEdST1VQIEJZCisJICogY2xhdXNlcy4KKwkgKi8KKwlpZiAoIXJvb3QtPnByb2Nl c3NlZF9ncm91cENsYXVzZSkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBGb3Igbm93IHdlIGRvbid0 IHRyeSB0byBzdXBwb3J0IGdyb3VwaW5nIHNldHMuCisJICovCisJaWYgKHJvb3QtPnBhcnNlLT5n cm91cGluZ1NldHMpCisJCXJldHVybjsKKworCS8qCisJICogRm9yIG5vdyB3ZSBkb24ndCB0cnkg dG8gc3VwcG9ydCBESVNUSU5DVCBvciBPUkRFUiBCWSBhZ2dyZWdhdGVzLgorCSAqLworCWlmIChy b290LT5udW1PcmRlcmVkQWdncyA+IDApCisJCXJldHVybjsKKworCS8qCisJICogSWYgdGhlcmUg YXJlIGFueSBhZ2dyZWdhdGVzIHRoYXQgZG8gbm90IHN1cHBvcnQgcGFydGlhbCBtb2RlLCBvciBh bnkKKwkgKiBwYXJ0aWFsIGFnZ3JlZ2F0ZXMgdGhhdCBhcmUgbm9uLXNlcmlhbGl6YWJsZSwgZG8g bm90IGFwcGx5IGVhZ2VyCisJICogYWdncmVnYXRpb24uCisJICovCisJaWYgKHJvb3QtPmhhc05v blBhcnRpYWxBZ2dzIHx8IHJvb3QtPmhhc05vblNlcmlhbEFnZ3MpCisJCXJldHVybjsKKworCS8q CisJICogV2UgZG9uJ3QgdHJ5IHRvIGFwcGx5IGVhZ2VyIGFnZ3JlZ2F0aW9uIGlmIHRoZXJlIGFy ZSBzZXQtcmV0dXJuaW5nCisJICogZnVuY3Rpb25zIGluIHRhcmdldGxpc3QuCisJICovCisJaWYg KHJvb3QtPnBhcnNlLT5oYXNUYXJnZXRTUkZzKQorCQlyZXR1cm47CisKKwkvKgorCSAqIEVhZ2Vy IGFnZ3JlZ2F0aW9uIG9ubHkgbWFrZXMgc2Vuc2UgaWYgdGhlcmUgYXJlIG11bHRpcGxlIGJhc2Ug cmVscyBpbgorCSAqIHRoZSBxdWVyeS4KKwkgKi8KKwlpZiAoYm1zX21lbWJlcnNoaXAocm9vdC0+ YWxsX2Jhc2VyZWxzKSAhPSBCTVNfTVVMVElQTEUpCisJCXJldHVybjsKKworCS8qCisJICogRG9u J3QgYXBwbHkgZWFnZXIgYWdncmVnYXRpb24gaWYgYW55IGFnZ3JlZ2F0ZSB1c2VzIElOVEVSTkFM IHRyYW5zaXRpb24KKwkgKiB0eXBlLgorCSAqCisJICogQWx0aG91Z2ggSU5URVJOQUwgaXMgbWFy a2VkIGFzIHBhc3MtYnktdmFsdWUsIGl0IHVzdWFsbHkgcG9pbnRzIHRvIGEKKwkgKiBsYXJnZSBp bnRlcm5hbCBkYXRhIHN0cnVjdHVyZSAobGlrZSB0aG9zZSB1c2VkIGJ5IHN0cmluZ19hZ2cgb3IK KwkgKiBhcnJheV9hZ2cpLiAgVGhlc2UgdHJhbnNpdGlvbiBzdGF0ZXMgY2FuIGdyb3cgbGFyZ2Ug YW5kIHRoZWlyIHNpemUgaXMKKwkgKiBoYXJkIHRvIGVzdGltYXRlLiAgQXBwbHlpbmcgZWFnZXIg YWdncmVnYXRpb24gaW4gc3VjaCBjYXNlcyByaXNrcyBoaWdoCisJICogbWVtb3J5IHVzYWdlIHNp bmNlIHBhcnRpYWwgYWdncmVnYXRpb24gcmVzdWx0cyBtaWdodCBiZSBzdG9yZWQgaW4gam9pbgor CSAqIGhhc2ggdGFibGVzIG9yIG1hdGVyaWFsaXplZCBub2Rlcy4KKwkgKi8KKwlpZiAoaGFzX2lu dGVybmFsX2FnZ3RyYW5zdHlwZShyb290KSkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBDb2xsZWN0 IGFnZ3JlZ2F0ZSBleHByZXNzaW9ucyBhbmQgcGxhaW4gVmFycyB0aGF0IGFwcGVhciBpbiB0aGUK KwkgKiB0YXJnZXRsaXN0IGFuZCBoYXZpbmdRdWFsLgorCSAqLworCWNyZWF0ZV9hZ2dfY2xhdXNl X2luZm9zKHJvb3QpOworCisJLyoKKwkgKiBJZiB0aGVyZSBhcmUgbm8gc3VpdGFibGUgYWdncmVn YXRlIGV4cHJlc3Npb25zLCB3ZSBjYW5ub3QgYXBwbHkgZWFnZXIKKwkgKiBhZ2dyZWdhdGlvbi4K KwkgKi8KKwlpZiAocm9vdC0+YWdnX2NsYXVzZV9saXN0ID09IE5JTCkKKwkJcmV0dXJuOworCisJ LyoKKwkgKiBDb2xsZWN0IGdyb3VwaW5nIGV4cHJlc3Npb25zIHRoYXQgYXBwZWFyIGluIGdyb3Vw aW5nIGNsYXVzZXMuCisJICovCisJY3JlYXRlX2dyb3VwaW5nX2V4cHJfaW5mb3Mocm9vdCk7Cit9 CisKKy8qCisgKiBoYXNfaW50ZXJuYWxfYWdndHJhbnN0eXBlCisgKgkgIENoZWNrcyBpZiBhbnkg YWdncmVnYXRlIHVzZXMgSU5URVJOQUwgdHJhbnNpdGlvbiB0eXBlLgorICovCitzdGF0aWMgYm9v bAoraGFzX2ludGVybmFsX2FnZ3RyYW5zdHlwZShQbGFubmVySW5mbyAqcm9vdCkKK3sKKwlMaXN0 Q2VsbCAgICpsYzsKKworCWZvcmVhY2gobGMsIHJvb3QtPmFnZ3RyYW5zaW5mb3MpCisJeworCQlB Z2dUcmFuc0luZm8gKnRyYW5zaW5mbyA9IGxmaXJzdF9ub2RlKEFnZ1RyYW5zSW5mbywgbGMpOwor CisJCWlmICh0cmFuc2luZm8tPmFnZ3RyYW5zdHlwZSA9PSBJTlRFUk5BTE9JRCkKKwkJCXJldHVy biB0cnVlOworCX0KKworCXJldHVybiBmYWxzZTsKK30KKworLyoKKyAqIGNyZWF0ZV9hZ2dfY2xh dXNlX2luZm9zCisgKgkgIFNlYXJjaCB0aGUgdGFyZ2V0bGlzdCBhbmQgaGF2aW5nUXVhbCBmb3Ig QWdncmVmcyBhbmQgcGxhaW4gVmFycywgYW5kCisgKgkgIGNyZWF0ZSBhbiBBZ2dDbGF1c2VJbmZv IGZvciBlYWNoIEFnZ3JlZiBub2RlLgorICovCitzdGF0aWMgdm9pZAorY3JlYXRlX2FnZ19jbGF1 c2VfaW5mb3MoUGxhbm5lckluZm8gKnJvb3QpCit7CisJTGlzdAkgICAqdGxpc3RfZXhwcnM7CisJ TGlzdAkgICAqYWdnX2NsYXVzZV9saXN0ID0gTklMOworCUxpc3QJICAgKnRsaXN0X3ZhcnMgPSBO SUw7CisJUmVsaWRzCQlhZ2dyZWdhdGVfcmVsaWRzID0gTlVMTDsKKwlib29sCQllYWdlcl9hZ2df YXBwbGljYWJsZSA9IHRydWU7CisJTGlzdENlbGwgICAqbGM7CisKKwlBc3NlcnQocm9vdC0+YWdn X2NsYXVzZV9saXN0ID09IE5JTCk7CisJQXNzZXJ0KHJvb3QtPnRsaXN0X3ZhcnMgPT0gTklMKTsK KworCXRsaXN0X2V4cHJzID0gcHVsbF92YXJfY2xhdXNlKChOb2RlICopIHJvb3QtPnByb2Nlc3Nl ZF90bGlzdCwKKwkJCQkJCQkJICBQVkNfSU5DTFVERV9BR0dSRUdBVEVTIHwKKwkJCQkJCQkJICBQ VkNfUkVDVVJTRV9XSU5ET1dGVU5DUyB8CisJCQkJCQkJCSAgUFZDX1JFQ1VSU0VfUExBQ0VIT0xE RVJTKTsKKworCS8qCisJICogQWdncmVnYXRlcyB3aXRoaW4gdGhlIEhBVklORyBjbGF1c2UgbmVl ZCB0byBiZSBwcm9jZXNzZWQgaW4gdGhlIHNhbWUKKwkgKiB3YXkgYXMgdGhvc2UgaW4gdGhlIHRh cmdldGxpc3QuICBOb3RlIHRoYXQgSEFWSU5HIGNhbiBjb250YWluIEFnZ3JlZnMKKwkgKiBidXQg bm90IFdpbmRvd0Z1bmNzLgorCSAqLworCWlmIChyb290LT5wYXJzZS0+aGF2aW5nUXVhbCAhPSBO VUxMKQorCXsKKwkJTGlzdAkgICAqaGF2aW5nX2V4cHJzOworCisJCWhhdmluZ19leHBycyA9IHB1 bGxfdmFyX2NsYXVzZSgoTm9kZSAqKSByb290LT5wYXJzZS0+aGF2aW5nUXVhbCwKKwkJCQkJCQkJ CSAgIFBWQ19JTkNMVURFX0FHR1JFR0FURVMgfAorCQkJCQkJCQkJICAgUFZDX1JFQ1VSU0VfUExB Q0VIT0xERVJTKTsKKwkJaWYgKGhhdmluZ19leHBycyAhPSBOSUwpCisJCXsKKwkJCXRsaXN0X2V4 cHJzID0gbGlzdF9jb25jYXQodGxpc3RfZXhwcnMsIGhhdmluZ19leHBycyk7CisJCQlsaXN0X2Zy ZWUoaGF2aW5nX2V4cHJzKTsKKwkJfQorCX0KKworCWZvcmVhY2gobGMsIHRsaXN0X2V4cHJzKQor CXsKKwkJRXhwcgkgICAqZXhwciA9IChFeHByICopIGxmaXJzdChsYyk7CisJCUFnZ3JlZgkgICAq YWdncmVmOworCQlSZWxpZHMJCWFnZ19ldmFsX2F0OworCQlBZ2dDbGF1c2VJbmZvICphY19pbmZv OworCisJCS8qIEZvciBub3cgd2UgZG9uJ3QgdHJ5IHRvIHN1cHBvcnQgR1JPVVBJTkcoKSBleHBy ZXNzaW9ucyAqLworCQlpZiAoSXNBKGV4cHIsIEdyb3VwaW5nRnVuYykpCisJCXsKKwkJCWVhZ2Vy X2FnZ19hcHBsaWNhYmxlID0gZmFsc2U7CisJCQlicmVhazsKKwkJfQorCisJCS8qIENvbGxlY3Qg cGxhaW4gVmFycyBmb3IgZnV0dXJlIHJlZmVyZW5jZSAqLworCQlpZiAoSXNBKGV4cHIsIFZhcikp CisJCXsKKwkJCXRsaXN0X3ZhcnMgPSBsaXN0X2FwcGVuZF91bmlxdWUodGxpc3RfdmFycywgZXhw cik7CisJCQljb250aW51ZTsKKwkJfQorCisJCWFnZ3JlZiA9IGNhc3ROb2RlKEFnZ3JlZiwgZXhw cik7CisKKwkJQXNzZXJ0KGFnZ3JlZi0+YWdnb3JkZXIgPT0gTklMKTsKKwkJQXNzZXJ0KGFnZ3Jl Zi0+YWdnZGlzdGluY3QgPT0gTklMKTsKKworCQkvKgorCQkgKiBJZiB0aGVyZSBhcmUgYW55IHNl Y3VyaXR5UXVhbHMsIGRvIG5vdCB0cnkgdG8gYXBwbHkgZWFnZXIKKwkJICogYWdncmVnYXRpb24g aWYgYW55IG5vbi1sZWFrcHJvb2YgYWdncmVnYXRlIGZ1bmN0aW9ucyBhcmUgcHJlc2VudC4KKwkJ ICogVGhpcyBpcyBvdmVybHkgc3RyaWN0LCBidXQgZm9yIG5vdy4uLgorCQkgKi8KKwkJaWYgKHJv b3QtPnF1YWxfc2VjdXJpdHlfbGV2ZWwgPiAwICYmCisJCQkhZ2V0X2Z1bmNfbGVha3Byb29mKGFn Z3JlZi0+YWdnZm5vaWQpKQorCQl7CisJCQllYWdlcl9hZ2dfYXBwbGljYWJsZSA9IGZhbHNlOwor CQkJYnJlYWs7CisJCX0KKworCQlhZ2dfZXZhbF9hdCA9IHB1bGxfdmFybm9zKHJvb3QsIChOb2Rl ICopIGFnZ3JlZik7CisKKwkJLyoKKwkJICogSWYgYWxsIGJhc2UgcmVsYXRpb25zIGluIHRoZSBx dWVyeSBhcmUgcmVmZXJlbmNlZCBieSBhZ2dyZWdhdGUKKwkJICogZnVuY3Rpb25zLCB0aGVuIGVh Z2VyIGFnZ3JlZ2F0aW9uIGlzIG5vdCBhcHBsaWNhYmxlLgorCQkgKi8KKwkJYWdncmVnYXRlX3Jl bGlkcyA9IGJtc19hZGRfbWVtYmVycyhhZ2dyZWdhdGVfcmVsaWRzLCBhZ2dfZXZhbF9hdCk7CisJ CWlmIChibXNfaXNfc3Vic2V0KHJvb3QtPmFsbF9iYXNlcmVscywgYWdncmVnYXRlX3JlbGlkcykp CisJCXsKKwkJCWVhZ2VyX2FnZ19hcHBsaWNhYmxlID0gZmFsc2U7CisJCQlicmVhazsKKwkJfQor CisJCS8qIE9LLCBjcmVhdGUgdGhlIEFnZ0NsYXVzZUluZm8gbm9kZSAqLworCQlhY19pbmZvID0g bWFrZU5vZGUoQWdnQ2xhdXNlSW5mbyk7CisJCWFjX2luZm8tPmFnZ3JlZiA9IGFnZ3JlZjsKKwkJ YWNfaW5mby0+YWdnX2V2YWxfYXQgPSBhZ2dfZXZhbF9hdDsKKworCQkvKiAuLi4gYW5kIGFkZCBp dCB0byB0aGUgbGlzdCAqLworCQlhZ2dfY2xhdXNlX2xpc3QgPSBsaXN0X2FwcGVuZF91bmlxdWUo YWdnX2NsYXVzZV9saXN0LCBhY19pbmZvKTsKKwl9CisKKwlsaXN0X2ZyZWUodGxpc3RfZXhwcnMp OworCisJaWYgKGVhZ2VyX2FnZ19hcHBsaWNhYmxlKQorCXsKKwkJcm9vdC0+YWdnX2NsYXVzZV9s aXN0ID0gYWdnX2NsYXVzZV9saXN0OworCQlyb290LT50bGlzdF92YXJzID0gdGxpc3RfdmFyczsK Kwl9CisJZWxzZQorCXsKKwkJbGlzdF9mcmVlX2RlZXAoYWdnX2NsYXVzZV9saXN0KTsKKwkJbGlz dF9mcmVlKHRsaXN0X3ZhcnMpOworCX0KK30KKworLyoKKyAqIGNyZWF0ZV9ncm91cGluZ19leHBy X2luZm9zCisgKgkgIENyZWF0ZSBhIEdyb3VwaW5nRXhwckluZm8gZm9yIGVhY2ggZXhwcmVzc2lv biB1c2FibGUgYXMgZ3JvdXBpbmcga2V5LgorICoKKyAqIElmIGFueSBncm91cGluZyBleHByZXNz aW9uIGlzIG5vdCBzdWl0YWJsZSwgd2Ugd2lsbCBqdXN0IHJldHVybiB3aXRoCisgKiByb290LT5n cm91cF9leHByX2xpc3QgYmVpbmcgTklMLgorICovCitzdGF0aWMgdm9pZAorY3JlYXRlX2dyb3Vw aW5nX2V4cHJfaW5mb3MoUGxhbm5lckluZm8gKnJvb3QpCit7CisJTGlzdAkgICAqZXhwcnMgPSBO SUw7CisJTGlzdAkgICAqc29ydGdyb3VwcmVmcyA9IE5JTDsKKwlMaXN0CSAgICpidHJlZV9vcGZh bWlsaWVzID0gTklMOworCUxpc3RDZWxsICAgKmxjLAorCQkJICAgKmxjMSwKKwkJCSAgICpsYzIs CisJCQkgICAqbGMzOworCisJQXNzZXJ0KHJvb3QtPmdyb3VwX2V4cHJfbGlzdCA9PSBOSUwpOwor CisJZm9yZWFjaChsYywgcm9vdC0+cHJvY2Vzc2VkX2dyb3VwQ2xhdXNlKQorCXsKKwkJU29ydEdy b3VwQ2xhdXNlICpzZ2MgPSBsZmlyc3Rfbm9kZShTb3J0R3JvdXBDbGF1c2UsIGxjKTsKKwkJVGFy Z2V0RW50cnkgKnRsZSA9IGdldF9zb3J0Z3JvdXBjbGF1c2VfdGxlKHNnYywgcm9vdC0+cHJvY2Vz c2VkX3RsaXN0KTsKKwkJVHlwZUNhY2hlRW50cnkgKnRjZTsKKwkJT2lkCQkJZXF1YWxpbWFnZXBy b2M7CisKKwkJQXNzZXJ0KHRsZS0+cmVzc29ydGdyb3VwcmVmID4gMCk7CisKKwkJLyoKKwkJICog Rm9yIG5vdyB3ZSBvbmx5IHN1cHBvcnQgcGxhaW4gVmFycyBhcyBncm91cGluZyBleHByZXNzaW9u cy4KKwkJICovCisJCWlmICghSXNBKHRsZS0+ZXhwciwgVmFyKSkKKwkJCXJldHVybjsKKworCQkv KgorCQkgKiBFYWdlciBhZ2dyZWdhdGlvbiBpcyBvbmx5IHBvc3NpYmxlIGlmIGVxdWFsaXR5IGlt cGxpZXMgaW1hZ2UKKwkJICogZXF1YWxpdHkgZm9yIGVhY2ggZ3JvdXBpbmcga2V5LiAgT3RoZXJ3 aXNlLCBwbGFjaW5nIGtleXMgd2l0aAorCQkgKiBkaWZmZXJlbnQgYnl0ZSBpbWFnZXMgaW50byB0 aGUgc2FtZSBncm91cCBtYXkgcmVzdWx0IGluIHRoZSBsb3NzIG9mCisJCSAqIGluZm9ybWF0aW9u IHRoYXQgY291bGQgYmUgbmVjZXNzYXJ5IHRvIGV2YWx1YXRlIHVwcGVyIHF1YWwgY2xhdXNlcy4K KwkJICoKKwkJICogRm9yIGluc3RhbmNlLCB0aGUgTlVNRVJJQyBkYXRhIHR5cGUgaXMgbm90IHN1 cHBvcnRlZCwgYXMgdmFsdWVzCisJCSAqIHRoYXQgYXJlIGNvbnNpZGVyZWQgZXF1YWwgYnkgdGhl IGVxdWFsaXR5IG9wZXJhdG9yIChlLmcuLCAwIGFuZAorCQkgKiAwLjApIGNhbiBoYXZlIGRpZmZl cmVudCBzY2FsZXMuCisJCSAqLworCQl0Y2UgPSBsb29rdXBfdHlwZV9jYWNoZShleHByVHlwZSgo Tm9kZSAqKSB0bGUtPmV4cHIpLAorCQkJCQkJCQlUWVBFQ0FDSEVfQlRSRUVfT1BGQU1JTFkpOwor CQlpZiAoIU9pZElzVmFsaWQodGNlLT5idHJlZV9vcGYpIHx8CisJCQkhT2lkSXNWYWxpZCh0Y2Ut PmJ0cmVlX29waW50eXBlKSkKKwkJCXJldHVybjsKKworCQllcXVhbGltYWdlcHJvYyA9IGdldF9v cGZhbWlseV9wcm9jKHRjZS0+YnRyZWVfb3BmLAorCQkJCQkJCQkJCSAgIHRjZS0+YnRyZWVfb3Bp bnR5cGUsCisJCQkJCQkJCQkJICAgdGNlLT5idHJlZV9vcGludHlwZSwKKwkJCQkJCQkJCQkgICBC VEVRVUFMSU1BR0VfUFJPQyk7CisJCWlmICghT2lkSXNWYWxpZChlcXVhbGltYWdlcHJvYykgfHwK KwkJCSFEYXR1bUdldEJvb2woT2lkRnVuY3Rpb25DYWxsMUNvbGwoZXF1YWxpbWFnZXByb2MsCisJ CQkJCQkJCQkJCSAgIHRjZS0+dHlwY29sbGF0aW9uLAorCQkJCQkJCQkJCQkgICBPYmplY3RJZEdl dERhdHVtKHRjZS0+YnRyZWVfb3BpbnR5cGUpKSkpCisJCQlyZXR1cm47CisKKwkJZXhwcnMgPSBs YXBwZW5kKGV4cHJzLCB0bGUtPmV4cHIpOworCQlzb3J0Z3JvdXByZWZzID0gbGFwcGVuZF9pbnQo c29ydGdyb3VwcmVmcywgdGxlLT5yZXNzb3J0Z3JvdXByZWYpOworCQlidHJlZV9vcGZhbWlsaWVz ID0gbGFwcGVuZF9vaWQoYnRyZWVfb3BmYW1pbGllcywgdGNlLT5idHJlZV9vcGYpOworCX0KKwor CS8qCisJICogQ29uc3RydWN0IGEgR3JvdXBpbmdFeHBySW5mbyBmb3IgZWFjaCBleHByZXNzaW9u LgorCSAqLworCWZvcnRocmVlKGxjMSwgZXhwcnMsIGxjMiwgc29ydGdyb3VwcmVmcywgbGMzLCBi dHJlZV9vcGZhbWlsaWVzKQorCXsKKwkJRXhwcgkgICAqZXhwciA9IChFeHByICopIGxmaXJzdChs YzEpOworCQlpbnQJCQlzb3J0Z3JvdXByZWYgPSBsZmlyc3RfaW50KGxjMik7CisJCU9pZAkJCWJ0 cmVlX29wZmFtaWx5ID0gbGZpcnN0X29pZChsYzMpOworCQlHcm91cGluZ0V4cHJJbmZvICpnZV9p bmZvOworCisJCWdlX2luZm8gPSBtYWtlTm9kZShHcm91cGluZ0V4cHJJbmZvKTsKKwkJZ2VfaW5m by0+ZXhwciA9IChFeHByICopIGNvcHlPYmplY3QoZXhwcik7CisJCWdlX2luZm8tPnNvcnRncm91 cHJlZiA9IHNvcnRncm91cHJlZjsKKwkJZ2VfaW5mby0+YnRyZWVfb3BmYW1pbHkgPSBidHJlZV9v cGZhbWlseTsKKworCQlyb290LT5ncm91cF9leHByX2xpc3QgPSBsYXBwZW5kKHJvb3QtPmdyb3Vw X2V4cHJfbGlzdCwgZ2VfaW5mbyk7CisJfQorfQorCiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAq CiAgKgkgIExBVEVSQUwgUkVGRVJFTkNFUwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BsYW4vcGxhbm1haW4uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5tYWlu LmMKaW5kZXggNTQ2N2UwOTRjYTcuLmVlZmM0ODZhNTY2IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGxhbi9wbGFubWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL3BsYW5tYWluLmMKQEAgLTc2LDYgKzc2LDkgQEAgcXVlcnlfcGxhbm5lcihQbGFubmVySW5m byAqcm9vdCwKIAlyb290LT5wbGFjZWhvbGRlcl9saXN0ID0gTklMOwogCXJvb3QtPnBsYWNlaG9s ZGVyX2FycmF5ID0gTlVMTDsKIAlyb290LT5wbGFjZWhvbGRlcl9hcnJheV9zaXplID0gMDsKKwly b290LT5hZ2dfY2xhdXNlX2xpc3QgPSBOSUw7CisJcm9vdC0+Z3JvdXBfZXhwcl9saXN0ID0gTklM OworCXJvb3QtPnRsaXN0X3ZhcnMgPSBOSUw7CiAJcm9vdC0+ZmtleV9saXN0ID0gTklMOwogCXJv b3QtPmluaXRpYWxfcmVscyA9IE5JTDsKIApAQCAtMjY1LDYgKzI2OCwxMiBAQCBxdWVyeV9wbGFu bmVyKFBsYW5uZXJJbmZvICpyb290LAogCSAqLwogCWV4dHJhY3RfcmVzdHJpY3Rpb25fb3JfY2xh dXNlcyhyb290KTsKIAorCS8qCisJICogQ2hlY2sgaWYgZWFnZXIgYWdncmVnYXRpb24gaXMgYXBw bGljYWJsZSwgYW5kIGlmIHNvLCBzZXQgdXAKKwkgKiByb290LT5hZ2dfY2xhdXNlX2xpc3QgYW5k IHJvb3QtPmdyb3VwX2V4cHJfbGlzdC4KKwkgKi8KKwlzZXR1cF9lYWdlcl9hZ2dyZWdhdGlvbihy b290KTsKKwogCS8qCiAJICogTm93IGV4cGFuZCBhcHBlbmRyZWxzIGJ5IGFkZGluZyAib3RoZXJy ZWxzIiBmb3IgdGhlaXIgY2hpbGRyZW4uICBXZQogCSAqIGRlbGF5IHRoaXMgdG8gdGhlIGVuZCBz byB0aGF0IHdlIGhhdmUgYXMgbXVjaCBpbmZvcm1hdGlvbiBhcyBwb3NzaWJsZQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vcGxhbm5lci5jCmluZGV4IDU0OWFlZGNmYTk5Li42Mjg5OTAyZmM5MyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtMjMxLDcgKzIzMSw2IEBAIHN0YXRp YyB2b2lkIGFkZF9wYXRoc190b19ncm91cGluZ19yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9w dEluZm8gKmlucHV0X3JlbCwKIAkJCQkJCQkJCSAgUmVsT3B0SW5mbyAqcGFydGlhbGx5X2dyb3Vw ZWRfcmVsLAogCQkJCQkJCQkJICBjb25zdCBBZ2dDbGF1c2VDb3N0cyAqYWdnX2Nvc3RzLAogCQkJ CQkJCQkJICBncm91cGluZ19zZXRzX2RhdGEgKmdkLAotCQkJCQkJCQkJICBkb3VibGUgZE51bUdy b3VwcywKIAkJCQkJCQkJCSAgR3JvdXBQYXRoRXh0cmFEYXRhICpleHRyYSk7CiBzdGF0aWMgUmVs T3B0SW5mbyAqY3JlYXRlX3BhcnRpYWxfZ3JvdXBpbmdfcGF0aHMoUGxhbm5lckluZm8gKnJvb3Qs CiAJCQkJCQkJCQkJCQkgUmVsT3B0SW5mbyAqZ3JvdXBlZF9yZWwsCkBAIC0zOTgyLDkgKzM5ODEs NyBAQCBjcmVhdGVfb3JkaW5hcnlfZ3JvdXBpbmdfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFJl bE9wdEluZm8gKmlucHV0X3JlbCwKIAkJCQkJCQkgICBHcm91cFBhdGhFeHRyYURhdGEgKmV4dHJh LAogCQkJCQkJCSAgIFJlbE9wdEluZm8gKipwYXJ0aWFsbHlfZ3JvdXBlZF9yZWxfcCkKIHsKLQlQ YXRoCSAgICpjaGVhcGVzdF9wYXRoID0gaW5wdXRfcmVsLT5jaGVhcGVzdF90b3RhbF9wYXRoOwog CVJlbE9wdEluZm8gKnBhcnRpYWxseV9ncm91cGVkX3JlbCA9IE5VTEw7Ci0JZG91YmxlCQlkTnVt R3JvdXBzOwogCVBhcnRpdGlvbndpc2VBZ2dyZWdhdGVUeXBlIHBhdHlwZSA9IFBBUlRJVElPTldJ U0VfQUdHUkVHQVRFX05PTkU7CiAKIAkvKgpAQCAtNDA2NiwyMyArNDA2MywxNiBAQCBjcmVhdGVf b3JkaW5hcnlfZ3JvdXBpbmdfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmlu cHV0X3JlbCwKIAogCS8qIEdhdGhlciBhbnkgcGFydGlhbGx5IGdyb3VwZWQgcGFydGlhbCBwYXRo cy4gKi8KIAlpZiAocGFydGlhbGx5X2dyb3VwZWRfcmVsICYmIHBhcnRpYWxseV9ncm91cGVkX3Jl bC0+cGFydGlhbF9wYXRobGlzdCkKLQl7CiAJCWdhdGhlcl9ncm91cGluZ19wYXRocyhyb290LCBw YXJ0aWFsbHlfZ3JvdXBlZF9yZWwpOwotCQlzZXRfY2hlYXBlc3QocGFydGlhbGx5X2dyb3VwZWRf cmVsKTsKLQl9CiAKLQkvKgotCSAqIEVzdGltYXRlIG51bWJlciBvZiBncm91cHMuCi0JICovCi0J ZE51bUdyb3VwcyA9IGdldF9udW1iZXJfb2ZfZ3JvdXBzKHJvb3QsCi0JCQkJCQkJCQkgIGNoZWFw ZXN0X3BhdGgtPnJvd3MsCi0JCQkJCQkJCQkgIGdkLAotCQkJCQkJCQkJICBleHRyYS0+dGFyZ2V0 TGlzdCk7CisJLyogTm93IGNob29zZSB0aGUgYmVzdCBwYXRoKHMpIGZvciBwYXJ0aWFsbHlfZ3Jv dXBlZF9yZWwuICovCisJaWYgKHBhcnRpYWxseV9ncm91cGVkX3JlbCAmJiBwYXJ0aWFsbHlfZ3Jv dXBlZF9yZWwtPnBhdGhsaXN0KQorCQlzZXRfY2hlYXBlc3QocGFydGlhbGx5X2dyb3VwZWRfcmVs KTsKIAogCS8qIEJ1aWxkIGZpbmFsIGdyb3VwaW5nIHBhdGhzICovCiAJYWRkX3BhdGhzX3RvX2dy b3VwaW5nX3JlbChyb290LCBpbnB1dF9yZWwsIGdyb3VwZWRfcmVsLAogCQkJCQkJCSAgcGFydGlh bGx5X2dyb3VwZWRfcmVsLCBhZ2dfY29zdHMsIGdkLAotCQkJCQkJCSAgZE51bUdyb3VwcywgZXh0 cmEpOworCQkJCQkJCSAgZXh0cmEpOwogCiAJLyogR2l2ZSBhIGhlbHBmdWwgZXJyb3IgaWYgd2Ug ZmFpbGVkIHRvIGZpbmQgYW55IGltcGxlbWVudGF0aW9uICovCiAJaWYgKGdyb3VwZWRfcmVsLT5w YXRobGlzdCA9PSBOSUwpCkBAIC03MDI3LDE2ICs3MDE3LDQyIEBAIGFkZF9wYXRoc190b19ncm91 cGluZ19yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAkJCQkJ CSAgUmVsT3B0SW5mbyAqZ3JvdXBlZF9yZWwsCiAJCQkJCQkgIFJlbE9wdEluZm8gKnBhcnRpYWxs eV9ncm91cGVkX3JlbCwKIAkJCQkJCSAgY29uc3QgQWdnQ2xhdXNlQ29zdHMgKmFnZ19jb3N0cywK LQkJCQkJCSAgZ3JvdXBpbmdfc2V0c19kYXRhICpnZCwgZG91YmxlIGROdW1Hcm91cHMsCisJCQkJ CQkgIGdyb3VwaW5nX3NldHNfZGF0YSAqZ2QsCiAJCQkJCQkgIEdyb3VwUGF0aEV4dHJhRGF0YSAq ZXh0cmEpCiB7CiAJUXVlcnkJICAgKnBhcnNlID0gcm9vdC0+cGFyc2U7CiAJUGF0aAkgICAqY2hl YXBlc3RfcGF0aCA9IGlucHV0X3JlbC0+Y2hlYXBlc3RfdG90YWxfcGF0aDsKKwlQYXRoCSAgICpj aGVhcGVzdF9wYXJ0aWFsbHlfZ3JvdXBlZF9wYXRoID0gTlVMTDsKIAlMaXN0Q2VsbCAgICpsYzsK IAlib29sCQljYW5faGFzaCA9IChleHRyYS0+ZmxhZ3MgJiBHUk9VUElOR19DQU5fVVNFX0hBU0gp ICE9IDA7CiAJYm9vbAkJY2FuX3NvcnQgPSAoZXh0cmEtPmZsYWdzICYgR1JPVVBJTkdfQ0FOX1VT RV9TT1JUKSAhPSAwOwogCUxpc3QJICAgKmhhdmluZ1F1YWwgPSAoTGlzdCAqKSBleHRyYS0+aGF2 aW5nUXVhbDsKIAlBZ2dDbGF1c2VDb3N0cyAqYWdnX2ZpbmFsX2Nvc3RzID0gJmV4dHJhLT5hZ2df ZmluYWxfY29zdHM7CisJZG91YmxlCQlkTnVtR3JvdXBzID0gMDsKKwlkb3VibGUJCWROdW1GaW5h bEdyb3VwcyA9IDA7CisKKwkvKgorCSAqIEVzdGltYXRlIG51bWJlciBvZiBncm91cHMgZm9yIG5v bi1zcGxpdCBhZ2dyZWdhdGlvbi4KKwkgKi8KKwlkTnVtR3JvdXBzID0gZ2V0X251bWJlcl9vZl9n cm91cHMocm9vdCwKKwkJCQkJCQkJCSAgY2hlYXBlc3RfcGF0aC0+cm93cywKKwkJCQkJCQkJCSAg Z2QsCisJCQkJCQkJCQkgIGV4dHJhLT50YXJnZXRMaXN0KTsKKworCWlmIChwYXJ0aWFsbHlfZ3Jv dXBlZF9yZWwgJiYgcGFydGlhbGx5X2dyb3VwZWRfcmVsLT5wYXRobGlzdCkKKwl7CisJCWNoZWFw ZXN0X3BhcnRpYWxseV9ncm91cGVkX3BhdGggPQorCQkJcGFydGlhbGx5X2dyb3VwZWRfcmVsLT5j aGVhcGVzdF90b3RhbF9wYXRoOworCisJCS8qCisJCSAqIEVzdGltYXRlIG51bWJlciBvZiBncm91 cHMgZm9yIGZpbmFsIHBoYXNlIG9mIHBhcnRpYWwgYWdncmVnYXRpb24uCisJCSAqLworCQlkTnVt RmluYWxHcm91cHMgPQorCQkJZ2V0X251bWJlcl9vZl9ncm91cHMocm9vdCwKKwkJCQkJCQkJIGNo ZWFwZXN0X3BhcnRpYWxseV9ncm91cGVkX3BhdGgtPnJvd3MsCisJCQkJCQkJCSBnZCwKKwkJCQkJ CQkJIGV4dHJhLT50YXJnZXRMaXN0KTsKKwl9CiAKIAlpZiAoY2FuX3NvcnQpCiAJewpAQCAtNzE0 OSw3ICs3MTY1LDcgQEAgYWRkX3BhdGhzX3RvX2dyb3VwaW5nX3JlbChQbGFubmVySW5mbyAqcm9v dCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCQkJCQlwYXRoID0gbWFrZV9vcmRlcmVkX3BhdGgo cm9vdCwKIAkJCQkJCQkJCQkJIGdyb3VwZWRfcmVsLAogCQkJCQkJCQkJCQkgcGF0aCwKLQkJCQkJ CQkJCQkJIHBhcnRpYWxseV9ncm91cGVkX3JlbC0+Y2hlYXBlc3RfdG90YWxfcGF0aCwKKwkJCQkJ CQkJCQkJIGNoZWFwZXN0X3BhcnRpYWxseV9ncm91cGVkX3BhdGgsCiAJCQkJCQkJCQkJCSBpbmZv LT5wYXRoa2V5cywKIAkJCQkJCQkJCQkJIC0xLjApOwogCkBAIC03MTY3LDcgKzcxODMsNyBAQCBh ZGRfcGF0aHNfdG9fZ3JvdXBpbmdfcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpp bnB1dF9yZWwsCiAJCQkJCQkJCQkJCQkgaW5mby0+Y2xhdXNlcywKIAkJCQkJCQkJCQkJCSBoYXZp bmdRdWFsLAogCQkJCQkJCQkJCQkJIGFnZ19maW5hbF9jb3N0cywKLQkJCQkJCQkJCQkJCSBkTnVt R3JvdXBzKSk7CisJCQkJCQkJCQkJCQkgZE51bUZpbmFsR3JvdXBzKSk7CiAJCQkJCWVsc2UKIAkJ CQkJCWFkZF9wYXRoKGdyb3VwZWRfcmVsLCAoUGF0aCAqKQogCQkJCQkJCQkgY3JlYXRlX2dyb3Vw X3BhdGgocm9vdCwKQEAgLTcxNzUsNyArNzE5MSw3IEBAIGFkZF9wYXRoc190b19ncm91cGluZ19y ZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAkJCQkJCQkJCQkJ CSAgIHBhdGgsCiAJCQkJCQkJCQkJCQkgICBpbmZvLT5jbGF1c2VzLAogCQkJCQkJCQkJCQkJICAg aGF2aW5nUXVhbCwKLQkJCQkJCQkJCQkJCSAgIGROdW1Hcm91cHMpKTsKKwkJCQkJCQkJCQkJCSAg IGROdW1GaW5hbEdyb3VwcykpOwogCiAJCQkJfQogCQkJfQpAQCAtNzIxNywxOSArNzIzMywxNyBA QCBhZGRfcGF0aHNfdG9fZ3JvdXBpbmdfcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZv ICppbnB1dF9yZWwsCiAJCSAqLwogCQlpZiAocGFydGlhbGx5X2dyb3VwZWRfcmVsICYmIHBhcnRp YWxseV9ncm91cGVkX3JlbC0+cGF0aGxpc3QpCiAJCXsKLQkJCVBhdGgJICAgKnBhdGggPSBwYXJ0 aWFsbHlfZ3JvdXBlZF9yZWwtPmNoZWFwZXN0X3RvdGFsX3BhdGg7Ci0KIAkJCWFkZF9wYXRoKGdy b3VwZWRfcmVsLCAoUGF0aCAqKQogCQkJCQkgY3JlYXRlX2FnZ19wYXRoKHJvb3QsCiAJCQkJCQkJ CQkgZ3JvdXBlZF9yZWwsCi0JCQkJCQkJCQkgcGF0aCwKKwkJCQkJCQkJCSBjaGVhcGVzdF9wYXJ0 aWFsbHlfZ3JvdXBlZF9wYXRoLAogCQkJCQkJCQkJIGdyb3VwZWRfcmVsLT5yZWx0YXJnZXQsCiAJ CQkJCQkJCQkgQUdHX0hBU0hFRCwKIAkJCQkJCQkJCSBBR0dTUExJVF9GSU5BTF9ERVNFUklBTCwK IAkJCQkJCQkJCSByb290LT5wcm9jZXNzZWRfZ3JvdXBDbGF1c2UsCiAJCQkJCQkJCQkgaGF2aW5n UXVhbCwKIAkJCQkJCQkJCSBhZ2dfZmluYWxfY29zdHMsCi0JCQkJCQkJCQkgZE51bUdyb3Vwcykp OworCQkJCQkJCQkJIGROdW1GaW5hbEdyb3VwcykpOwogCQl9CiAJfQogCkBAIC03MjY5LDYgKzcy ODMsNyBAQCBjcmVhdGVfcGFydGlhbF9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwK IHsKIAlRdWVyeQkgICAqcGFyc2UgPSByb290LT5wYXJzZTsKIAlSZWxPcHRJbmZvICpwYXJ0aWFs bHlfZ3JvdXBlZF9yZWw7CisJUmVsT3B0SW5mbyAqZWFnZXJfYWdnX3JlbCA9IE5VTEw7CiAJQWdn Q2xhdXNlQ29zdHMgKmFnZ19wYXJ0aWFsX2Nvc3RzID0gJmV4dHJhLT5hZ2dfcGFydGlhbF9jb3N0 czsKIAlBZ2dDbGF1c2VDb3N0cyAqYWdnX2ZpbmFsX2Nvc3RzID0gJmV4dHJhLT5hZ2dfZmluYWxf Y29zdHM7CiAJUGF0aAkgICAqY2hlYXBlc3RfcGFydGlhbF9wYXRoID0gTlVMTDsKQEAgLTcyNzks NiArNzI5NCwxNSBAQCBjcmVhdGVfcGFydGlhbF9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAq cm9vdCwKIAlib29sCQljYW5faGFzaCA9IChleHRyYS0+ZmxhZ3MgJiBHUk9VUElOR19DQU5fVVNF X0hBU0gpICE9IDA7CiAJYm9vbAkJY2FuX3NvcnQgPSAoZXh0cmEtPmZsYWdzICYgR1JPVVBJTkdf Q0FOX1VTRV9TT1JUKSAhPSAwOwogCisJLyoKKwkgKiBDaGVjayB3aGV0aGVyIGFueSBwYXJ0aWFs bHkgYWdncmVnYXRlZCBwYXRocyBoYXZlIGJlZW4gZ2VuZXJhdGVkCisJICogdGhyb3VnaCBlYWdl ciBhZ2dyZWdhdGlvbi4KKwkgKi8KKwlpZiAoaW5wdXRfcmVsLT5ncm91cGVkX3JlbCAmJgorCQkh SVNfRFVNTVlfUkVMKGlucHV0X3JlbC0+Z3JvdXBlZF9yZWwpICYmCisJCWlucHV0X3JlbC0+Z3Jv dXBlZF9yZWwtPnBhdGhsaXN0ICE9IE5JTCkKKwkJZWFnZXJfYWdnX3JlbCA9IGlucHV0X3JlbC0+ Z3JvdXBlZF9yZWw7CisKIAkvKgogCSAqIENvbnNpZGVyIHdoZXRoZXIgd2Ugc2hvdWxkIGdlbmVy YXRlIHBhcnRpYWxseSBhZ2dyZWdhdGVkIG5vbi1wYXJ0aWFsCiAJICogcGF0aHMuICBXZSBjYW4g b25seSBkbyB0aGlzIGlmIHdlIGhhdmUgYSBub24tcGFydGlhbCBwYXRoLCBhbmQgb25seSBpZgpA QCAtNzMwMCwxMSArNzMyNCwxMyBAQCBjcmVhdGVfcGFydGlhbF9ncm91cGluZ19wYXRocyhQbGFu bmVySW5mbyAqcm9vdCwKIAogCS8qCiAJICogSWYgd2UgY2FuJ3QgcGFydGlhbGx5IGFnZ3JlZ2F0 ZSBwYXJ0aWFsIHBhdGhzLCBhbmQgd2UgY2FuJ3QgcGFydGlhbGx5Ci0JICogYWdncmVnYXRlIG5v bi1wYXJ0aWFsIHBhdGhzLCB0aGVuIGRvbid0IGJvdGhlciBjcmVhdGluZyB0aGUgbmV3CisJICog YWdncmVnYXRlIG5vbi1wYXJ0aWFsIHBhdGhzLCBhbmQgbm8gcGFydGlhbGx5IGFnZ3JlZ2F0ZWQg cGF0aHMgd2VyZQorCSAqIGdlbmVyYXRlZCBieSBlYWdlciBhZ2dyZWdhdGlvbiwgdGhlbiBkb24n dCBib3RoZXIgY3JlYXRpbmcgdGhlIG5ldwogCSAqIFJlbE9wdEluZm8gYXQgYWxsLCB1bmxlc3Mg dGhlIGNhbGxlciBzcGVjaWZpZWQgZm9yY2VfcmVsX2NyZWF0aW9uLgogCSAqLwogCWlmIChjaGVh cGVzdF90b3RhbF9wYXRoID09IE5VTEwgJiYKIAkJY2hlYXBlc3RfcGFydGlhbF9wYXRoID09IE5V TEwgJiYKKwkJZWFnZXJfYWdnX3JlbCA9PSBOVUxMICYmCiAJCSFmb3JjZV9yZWxfY3JlYXRpb24p CiAJCXJldHVybiBOVUxMOwogCkBAIC03NTI5LDYgKzc1NTUsNTEgQEAgY3JlYXRlX3BhcnRpYWxf Z3JvdXBpbmdfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJIGROdW1QYXJ0aWFs UGFydGlhbEdyb3VwcykpOwogCX0KIAorCS8qCisJICogQWRkIGFueSBwYXJ0aWFsbHkgYWdncmVn YXRlZCBwYXRocyBnZW5lcmF0ZWQgYnkgZWFnZXIgYWdncmVnYXRpb24gdG8KKwkgKiB0aGUgbmV3 IHVwcGVyIHJlbGF0aW9uIGFmdGVyIGFwcGx5aW5nIHByb2plY3Rpb24gc3RlcHMgYXMgbmVlZGVk LgorCSAqLworCWlmIChlYWdlcl9hZ2dfcmVsKQorCXsKKwkJLyogQWRkIHRoZSBwYXRocyAqLwor CQlmb3JlYWNoKGxjLCBlYWdlcl9hZ2dfcmVsLT5wYXRobGlzdCkKKwkJeworCQkJUGF0aAkgICAq cGF0aCA9IChQYXRoICopIGxmaXJzdChsYyk7CisKKwkJCS8qIFNob3VsZG4ndCBoYXZlIGFueSBw YXJhbWV0ZXJpemVkIHBhdGhzIGFueW1vcmUgKi8KKwkJCUFzc2VydChwYXRoLT5wYXJhbV9pbmZv ID09IE5VTEwpOworCisJCQlwYXRoID0gKFBhdGggKikgY3JlYXRlX3Byb2plY3Rpb25fcGF0aChy b290LAorCQkJCQkJCQkJCQkJICAgcGFydGlhbGx5X2dyb3VwZWRfcmVsLAorCQkJCQkJCQkJCQkJ ICAgcGF0aCwKKwkJCQkJCQkJCQkJCSAgIHBhcnRpYWxseV9ncm91cGVkX3JlbC0+cmVsdGFyZ2V0 KTsKKworCQkJYWRkX3BhdGgocGFydGlhbGx5X2dyb3VwZWRfcmVsLCBwYXRoKTsKKwkJfQorCisJ CS8qCisJCSAqIExpa2V3aXNlIGFkZCB0aGUgcGFydGlhbCBwYXRocywgYnV0IG9ubHkgaWYgcGFy YWxsZWxpc20gaXMgcG9zc2libGUKKwkJICogZm9yIHBhcnRpYWxseV9ncm91cGVkX3JlbC4KKwkJ ICovCisJCWlmIChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwtPmNvbnNpZGVyX3BhcmFsbGVsKQorCQl7 CisJCQlmb3JlYWNoKGxjLCBlYWdlcl9hZ2dfcmVsLT5wYXJ0aWFsX3BhdGhsaXN0KQorCQkJewor CQkJCVBhdGgJICAgKnBhdGggPSAoUGF0aCAqKSBsZmlyc3QobGMpOworCisJCQkJLyogU2hvdWxk bid0IGhhdmUgYW55IHBhcmFtZXRlcml6ZWQgcGF0aHMgYW55bW9yZSAqLworCQkJCUFzc2VydChw YXRoLT5wYXJhbV9pbmZvID09IE5VTEwpOworCisJCQkJcGF0aCA9IChQYXRoICopIGNyZWF0ZV9w cm9qZWN0aW9uX3BhdGgocm9vdCwKKwkJCQkJCQkJCQkJCQkgICBwYXJ0aWFsbHlfZ3JvdXBlZF9y ZWwsCisJCQkJCQkJCQkJCQkJICAgcGF0aCwKKwkJCQkJCQkJCQkJCQkgICBwYXJ0aWFsbHlfZ3Jv dXBlZF9yZWwtPnJlbHRhcmdldCk7CisKKwkJCQlhZGRfcGFydGlhbF9wYXRoKHBhcnRpYWxseV9n cm91cGVkX3JlbCwgcGF0aCk7CisJCQl9CisJCX0KKwl9CisKIAkvKgogCSAqIElmIHRoZXJlIGlz IGFuIEZEVyB0aGF0J3MgcmVzcG9uc2libGUgZm9yIGFsbCBiYXNlcmVscyBvZiB0aGUgcXVlcnks CiAJICogbGV0IGl0IGNvbnNpZGVyIGFkZGluZyBwYXJ0aWFsbHkgZ3JvdXBlZCBGb3JlaWduUGF0 aHMuCkBAIC04MDkyLDEzICs4MTYzLDYgQEAgY3JlYXRlX3BhcnRpdGlvbndpc2VfZ3JvdXBpbmdf cGF0aHMoUGxhbm5lckluZm8gKnJvb3QsCiAKIAkJYWRkX3BhdGhzX3RvX2FwcGVuZF9yZWwocm9v dCwgcGFydGlhbGx5X2dyb3VwZWRfcmVsLAogCQkJCQkJCQlwYXJ0aWFsbHlfZ3JvdXBlZF9saXZl X2NoaWxkcmVuKTsKLQotCQkvKgotCQkgKiBXZSBuZWVkIGNhbGwgc2V0X2NoZWFwZXN0LCBzaW5j ZSB0aGUgZmluYWxpemF0aW9uIHN0ZXAgd2lsbCB1c2UgdGhlCi0JCSAqIGNoZWFwZXN0IHBhdGgg ZnJvbSB0aGUgcmVsLgotCQkgKi8KLQkJaWYgKHBhcnRpYWxseV9ncm91cGVkX3JlbC0+cGF0aGxp c3QpCi0JCQlzZXRfY2hlYXBlc3QocGFydGlhbGx5X2dyb3VwZWRfcmVsKTsKIAl9CiAKIAkvKiBJ ZiBwb3NzaWJsZSwgY3JlYXRlIGFwcGVuZCBwYXRocyBmb3IgZnVsbHkgZ3JvdXBlZCBjaGlsZHJl bi4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8u YyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYwppbmRleCA1YjNkYzBk ODY1My4uMTFjMGViMGQxODAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGls L2FwcGVuZGluZm8uYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZv LmMKQEAgLTUxNiw2ICs1MTYsNjUgQEAgYWRqdXN0X2FwcGVuZHJlbF9hdHRyc19tdXRhdG9yKE5v ZGUgKm5vZGUsCiAJCXJldHVybiAoTm9kZSAqKSBuZXdpbmZvOwogCX0KIAorCS8qCisJICogV2Ug aGF2ZSB0byBwcm9jZXNzIFJlbEFnZ0luZm8gbm9kZXMgc3BlY2lhbGx5LgorCSAqLworCWlmIChJ c0Eobm9kZSwgUmVsQWdnSW5mbykpCisJeworCQlSZWxBZ2dJbmZvICpvbGRpbmZvID0gKFJlbEFn Z0luZm8gKikgbm9kZTsKKwkJUmVsQWdnSW5mbyAqbmV3aW5mbyA9IG1ha2VOb2RlKFJlbEFnZ0lu Zm8pOworCisJCS8qIENvcHkgYWxsIGZsYXQtY29waWFibGUgZmllbGRzICovCisJCW1lbWNweShu ZXdpbmZvLCBvbGRpbmZvLCBzaXplb2YoUmVsQWdnSW5mbykpOworCisJCW5ld2luZm8tPnJlbGlk cyA9IGFkanVzdF9jaGlsZF9yZWxpZHMob2xkaW5mby0+cmVsaWRzLAorCQkJCQkJCQkJCQkgIG5h cHBpbmZvcywgYXBwaW5mb3MpOworCisJCW5ld2luZm8tPnRhcmdldCA9IChQYXRoVGFyZ2V0ICop CisJCQlhZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211dGF0b3IoKE5vZGUgKikgb2xkaW5mby0+dGFy Z2V0LAorCQkJCQkJCQkJCSAgIGNvbnRleHQpOworCisJCW5ld2luZm8tPmFnZ19pbnB1dCA9IChQ YXRoVGFyZ2V0ICopCisJCQlhZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211dGF0b3IoKE5vZGUgKikg b2xkaW5mby0+YWdnX2lucHV0LAorCQkJCQkJCQkJCSAgIGNvbnRleHQpOworCisJCW5ld2luZm8t Pmdyb3VwX2NsYXVzZXMgPSAoTGlzdCAqKQorCQkJYWRqdXN0X2FwcGVuZHJlbF9hdHRyc19tdXRh dG9yKChOb2RlICopIG9sZGluZm8tPmdyb3VwX2NsYXVzZXMsCisJCQkJCQkJCQkJICAgY29udGV4 dCk7CisKKwkJbmV3aW5mby0+Z3JvdXBfZXhwcnMgPSAoTGlzdCAqKQorCQkJYWRqdXN0X2FwcGVu ZHJlbF9hdHRyc19tdXRhdG9yKChOb2RlICopIG9sZGluZm8tPmdyb3VwX2V4cHJzLAorCQkJCQkJ CQkJCSAgIGNvbnRleHQpOworCisJCXJldHVybiAoTm9kZSAqKSBuZXdpbmZvOworCX0KKworCS8q CisJICogV2UgaGF2ZSB0byBwcm9jZXNzIFBhdGhUYXJnZXQgbm9kZXMgc3BlY2lhbGx5LgorCSAq LworCWlmIChJc0Eobm9kZSwgUGF0aFRhcmdldCkpCisJeworCQlQYXRoVGFyZ2V0ICpvbGR0YXJn ZXQgPSAoUGF0aFRhcmdldCAqKSBub2RlOworCQlQYXRoVGFyZ2V0ICpuZXd0YXJnZXQgPSBtYWtl Tm9kZShQYXRoVGFyZ2V0KTsKKworCQkvKiBDb3B5IGFsbCBmbGF0LWNvcGlhYmxlIGZpZWxkcyAq LworCQltZW1jcHkobmV3dGFyZ2V0LCBvbGR0YXJnZXQsIHNpemVvZihQYXRoVGFyZ2V0KSk7CisK KwkJbmV3dGFyZ2V0LT5leHBycyA9IChMaXN0ICopCisJCQlhZGp1c3RfYXBwZW5kcmVsX2F0dHJz X211dGF0b3IoKE5vZGUgKikgb2xkdGFyZ2V0LT5leHBycywKKwkJCQkJCQkJCQkgICBjb250ZXh0 KTsKKworCQlpZiAob2xkdGFyZ2V0LT5zb3J0Z3JvdXByZWZzKQorCQl7CisJCQlTaXplCQluYnl0 ZXMgPSBsaXN0X2xlbmd0aChvbGR0YXJnZXQtPmV4cHJzKSAqIHNpemVvZihJbmRleCk7CisKKwkJ CW5ld3RhcmdldC0+c29ydGdyb3VwcmVmcyA9IChJbmRleCAqKSBwYWxsb2MobmJ5dGVzKTsKKwkJ CW1lbWNweShuZXd0YXJnZXQtPnNvcnRncm91cHJlZnMsIG9sZHRhcmdldC0+c29ydGdyb3VwcmVm cywgbmJ5dGVzKTsKKwkJfQorCisJCXJldHVybiAoTm9kZSAqKSBuZXd0YXJnZXQ7CisJfQorCiAJ LyoKIAkgKiBOT1RFOiB3ZSBkbyBub3QgbmVlZCB0byByZWN1cnNlIGludG8gc3VibGlua3MsIGJl Y2F1c2UgdGhleSBzaG91bGQKIAkgKiBhbHJlYWR5IGhhdmUgYmVlbiBjb252ZXJ0ZWQgdG8gc3Vi cGxhbnMgYmVmb3JlIHdlIHNlZSB0aGVtLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvcGF0aG5vZGUuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2Rl LmMKaW5kZXggZTAxOTJkNGE0OTEuLjI2MTI3ZWIwN2QxIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91 dGlsL3BhdGhub2RlLmMKQEAgLTI3OTAsOCArMjc5MCw3IEBAIGNyZWF0ZV9wcm9qZWN0aW9uX3Bh dGgoUGxhbm5lckluZm8gKnJvb3QsCiAJcGF0aG5vZGUtPnBhdGgucGF0aHR5cGUgPSBUX1Jlc3Vs dDsKIAlwYXRobm9kZS0+cGF0aC5wYXJlbnQgPSByZWw7CiAJcGF0aG5vZGUtPnBhdGgucGF0aHRh cmdldCA9IHRhcmdldDsKLQkvKiBGb3Igbm93LCBhc3N1bWUgd2UgYXJlIGFib3ZlIGFueSBqb2lu cywgc28gbm8gcGFyYW1ldGVyaXphdGlvbiAqLwotCXBhdGhub2RlLT5wYXRoLnBhcmFtX2luZm8g PSBOVUxMOworCXBhdGhub2RlLT5wYXRoLnBhcmFtX2luZm8gPSBzdWJwYXRoLT5wYXJhbV9pbmZv OwogCXBhdGhub2RlLT5wYXRoLnBhcmFsbGVsX2F3YXJlID0gZmFsc2U7CiAJcGF0aG5vZGUtPnBh dGgucGFyYWxsZWxfc2FmZSA9IHJlbC0+Y29uc2lkZXJfcGFyYWxsZWwgJiYKIAkJc3VicGF0aC0+ cGFyYWxsZWxfc2FmZSAmJgpAQCAtMzA0Niw4ICszMDQ1LDcgQEAgY3JlYXRlX2luY3JlbWVudGFs X3NvcnRfcGF0aChQbGFubmVySW5mbyAqcm9vdCwKIAlwYXRobm9kZS0+cGF0aC5wYXJlbnQgPSBy ZWw7CiAJLyogU29ydCBkb2Vzbid0IHByb2plY3QsIHNvIHVzZSBzb3VyY2UgcGF0aCdzIHBhdGh0 YXJnZXQgKi8KIAlwYXRobm9kZS0+cGF0aC5wYXRodGFyZ2V0ID0gc3VicGF0aC0+cGF0aHRhcmdl dDsKLQkvKiBGb3Igbm93LCBhc3N1bWUgd2UgYXJlIGFib3ZlIGFueSBqb2lucywgc28gbm8gcGFy YW1ldGVyaXphdGlvbiAqLwotCXBhdGhub2RlLT5wYXRoLnBhcmFtX2luZm8gPSBOVUxMOworCXBh dGhub2RlLT5wYXRoLnBhcmFtX2luZm8gPSBzdWJwYXRoLT5wYXJhbV9pbmZvOwogCXBhdGhub2Rl LT5wYXRoLnBhcmFsbGVsX2F3YXJlID0gZmFsc2U7CiAJcGF0aG5vZGUtPnBhdGgucGFyYWxsZWxf c2FmZSA9IHJlbC0+Y29uc2lkZXJfcGFyYWxsZWwgJiYKIAkJc3VicGF0aC0+cGFyYWxsZWxfc2Fm ZTsKQEAgLTMwOTQsOCArMzA5Miw3IEBAIGNyZWF0ZV9zb3J0X3BhdGgoUGxhbm5lckluZm8gKnJv b3QsCiAJcGF0aG5vZGUtPnBhdGgucGFyZW50ID0gcmVsOwogCS8qIFNvcnQgZG9lc24ndCBwcm9q ZWN0LCBzbyB1c2Ugc291cmNlIHBhdGgncyBwYXRodGFyZ2V0ICovCiAJcGF0aG5vZGUtPnBhdGgu cGF0aHRhcmdldCA9IHN1YnBhdGgtPnBhdGh0YXJnZXQ7Ci0JLyogRm9yIG5vdywgYXNzdW1lIHdl IGFyZSBhYm92ZSBhbnkgam9pbnMsIHNvIG5vIHBhcmFtZXRlcml6YXRpb24gKi8KLQlwYXRobm9k ZS0+cGF0aC5wYXJhbV9pbmZvID0gTlVMTDsKKwlwYXRobm9kZS0+cGF0aC5wYXJhbV9pbmZvID0g c3VicGF0aC0+cGFyYW1faW5mbzsKIAlwYXRobm9kZS0+cGF0aC5wYXJhbGxlbF9hd2FyZSA9IGZh bHNlOwogCXBhdGhub2RlLT5wYXRoLnBhcmFsbGVsX3NhZmUgPSByZWwtPmNvbnNpZGVyX3BhcmFs bGVsICYmCiAJCXN1YnBhdGgtPnBhcmFsbGVsX3NhZmU7CkBAIC0zMjU2LDggKzMyNTMsNyBAQCBj cmVhdGVfYWdnX3BhdGgoUGxhbm5lckluZm8gKnJvb3QsCiAJcGF0aG5vZGUtPnBhdGgucGF0aHR5 cGUgPSBUX0FnZzsKIAlwYXRobm9kZS0+cGF0aC5wYXJlbnQgPSByZWw7CiAJcGF0aG5vZGUtPnBh dGgucGF0aHRhcmdldCA9IHRhcmdldDsKLQkvKiBGb3Igbm93LCBhc3N1bWUgd2UgYXJlIGFib3Zl IGFueSBqb2lucywgc28gbm8gcGFyYW1ldGVyaXphdGlvbiAqLwotCXBhdGhub2RlLT5wYXRoLnBh cmFtX2luZm8gPSBOVUxMOworCXBhdGhub2RlLT5wYXRoLnBhcmFtX2luZm8gPSBzdWJwYXRoLT5w YXJhbV9pbmZvOwogCXBhdGhub2RlLT5wYXRoLnBhcmFsbGVsX2F3YXJlID0gZmFsc2U7CiAJcGF0 aG5vZGUtPnBhdGgucGFyYWxsZWxfc2FmZSA9IHJlbC0+Y29uc2lkZXJfcGFyYWxsZWwgJiYKIAkJ c3VicGF0aC0+cGFyYWxsZWxfc2FmZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci91dGlsL3JlbG5vZGUuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYwpp bmRleCBmZjUwNzMzMWEwNi4uYzQwNTRiNWQwM2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29w dGltaXplci91dGlsL3JlbG5vZGUuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9y ZWxub2RlLmMKQEAgLTE2LDYgKzE2LDggQEAKIAogI2luY2x1ZGUgPGxpbWl0cy5oPgogCisjaW5j bHVkZSAiYWNjZXNzL25idHJlZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfY29uc3RyYWludC5o IgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgog I2luY2x1ZGUgIm9wdGltaXplci9hcHBlbmRpbmZvLmgiCkBAIC0yNywxMiArMjksMTYgQEAKICNp bmNsdWRlICJvcHRpbWl6ZXIvcGF0aHMuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGxhY2Vob2xk ZXIuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGxhbmNhdC5oIgorI2luY2x1ZGUgIm9wdGltaXpl ci9wbGFubmVyLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3Jlc3RyaWN0aW5mby5oIgogI2luY2x1 ZGUgIm9wdGltaXplci90bGlzdC5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9vcGVyLmgiCiAj aW5jbHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdy aXRlTWFuaXAuaCIKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCiAjaW5jbHVkZSAidXRpbHMv bHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvc2VsZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGls cy90eXBjYWNoZS5oIgogCiAKIHR5cGVkZWYgc3RydWN0IEpvaW5IYXNoRW50cnkKQEAgLTgzLDcg Kzg5LDIyIEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2NoaWxkX2pvaW5fcmVsdGFyZ2V0KFBsYW5uZXJJ bmZvICpyb290LAogCQkJCQkJCQkJICAgUmVsT3B0SW5mbyAqY2hpbGRyZWwsCiAJCQkJCQkJCQkg ICBpbnQgbmFwcGluZm9zLAogCQkJCQkJCQkJICAgQXBwZW5kUmVsSW5mbyAqKmFwcGluZm9zKTsK K3N0YXRpYyBib29sIGVhZ2VyX2FnZ3JlZ2F0aW9uX3Bvc3NpYmxlX2Zvcl9yZWxhdGlvbihQbGFu bmVySW5mbyAqcm9vdCwKKwkJCQkJCQkJCQkJCQlSZWxPcHRJbmZvICpyZWwpOworc3RhdGljIGJv b2wgaW5pdF9ncm91cGluZ190YXJnZXRzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpy ZWwsCisJCQkJCQkJCSAgUGF0aFRhcmdldCAqdGFyZ2V0LCBQYXRoVGFyZ2V0ICphZ2dfaW5wdXQs CisJCQkJCQkJCSAgTGlzdCAqKmdyb3VwX2NsYXVzZXMsIExpc3QgKipncm91cF9leHBycyk7Citz dGF0aWMgYm9vbCBpc192YXJfaW5fYWdncmVmX29ubHkoUGxhbm5lckluZm8gKnJvb3QsIFZhciAq dmFyKTsKK3N0YXRpYyBib29sIGlzX3Zhcl9uZWVkZWRfYnlfam9pbihQbGFubmVySW5mbyAqcm9v dCwgVmFyICp2YXIsIFJlbE9wdEluZm8gKnJlbCk7CitzdGF0aWMgSW5kZXggZ2V0X2V4cHJlc3Np b25fc29ydGdyb3VwcmVmKFBsYW5uZXJJbmZvICpyb290LCBFeHByICpleHByKTsKIAorLyoKKyAq IE1pbmltdW0gYXZlcmFnZSBncm91cCBzaXplIHJlcXVpcmVkIHRvIGNvbnNpZGVyIGFwcGx5aW5n IGVhZ2VyIGFnZ3JlZ2F0aW9uLgorICoKKyAqIFRoaXMgaGVscHMgYXZvaWQgdGhlIG92ZXJoZWFk IG9mIGVhZ2VyIGFnZ3JlZ2F0aW9uIHdoZW4gaXQgZG9lcyBub3Qgb2ZmZXIKKyAqIHNpZ25pZmlj YW50IHJvdyBjb3VudCByZWR1Y3Rpb24uCisgKi8KKyNkZWZpbmUgRUFHRVJfQUdHX01JTl9HUk9V UF9TSVpFIDIwLjAKIAogLyoKICAqIHNldHVwX3NpbXBsZV9yZWxfYXJyYXlzCkBAIC0yNzYsNiAr Mjk3LDggQEAgYnVpbGRfc2ltcGxlX3JlbChQbGFubmVySW5mbyAqcm9vdCwgaW50IHJlbGlkLCBS ZWxPcHRJbmZvICpwYXJlbnQpCiAJcmVsLT5qb2luaW5mbyA9IE5JTDsKIAlyZWwtPmhhc19lY2xh c3Nfam9pbnMgPSBmYWxzZTsKIAlyZWwtPmNvbnNpZGVyX3BhcnRpdGlvbndpc2Vfam9pbiA9IGZh bHNlOwkvKiBtaWdodCBnZXQgY2hhbmdlZCBsYXRlciAqLworCXJlbC0+YWdnX2luZm8gPSBOVUxM OworCXJlbC0+Z3JvdXBlZF9yZWwgPSBOVUxMOwogCXJlbC0+cGFydF9zY2hlbWUgPSBOVUxMOwog CXJlbC0+bnBhcnRzID0gLTE7CiAJcmVsLT5ib3VuZGluZm8gPSBOVUxMOwpAQCAtNDA2LDYgKzQy OSwxMDQgQEAgYnVpbGRfc2ltcGxlX3JlbChQbGFubmVySW5mbyAqcm9vdCwgaW50IHJlbGlkLCBS ZWxPcHRJbmZvICpwYXJlbnQpCiAJcmV0dXJuIHJlbDsKIH0KIAorLyoKKyAqIGJ1aWxkX3NpbXBs ZV9ncm91cGVkX3JlbAorICoJICBDb25zdHJ1Y3QgYSBuZXcgUmVsT3B0SW5mbyByZXByZXNlbnRp bmcgYSBncm91cGVkIHZlcnNpb24gb2YgdGhlIGlucHV0CisgKgkgIGJhc2UgcmVsYXRpb24uCisg Ki8KK1JlbE9wdEluZm8gKgorYnVpbGRfc2ltcGxlX2dyb3VwZWRfcmVsKFBsYW5uZXJJbmZvICpy b290LCBSZWxPcHRJbmZvICpyZWwpCit7CisJUmVsT3B0SW5mbyAqZ3JvdXBlZF9yZWw7CisJUmVs QWdnSW5mbyAqYWdnX2luZm87CisKKwkvKgorCSAqIFdlIHNob3VsZCBoYXZlIGF2YWlsYWJsZSBh Z2dyZWdhdGUgZXhwcmVzc2lvbnMgYW5kIGdyb3VwaW5nCisJICogZXhwcmVzc2lvbnMsIG90aGVy d2lzZSB3ZSBjYW5ub3QgcmVhY2ggaGVyZS4KKwkgKi8KKwlBc3NlcnQocm9vdC0+YWdnX2NsYXVz ZV9saXN0ICE9IE5JTCk7CisJQXNzZXJ0KHJvb3QtPmdyb3VwX2V4cHJfbGlzdCAhPSBOSUwpOwor CisJLyogbm90aGluZyB0byBkbyBmb3IgZHVtbXkgcmVsICovCisJaWYgKElTX0RVTU1ZX1JFTChy ZWwpKQorCQlyZXR1cm4gTlVMTDsKKworCS8qCisJICogUHJlcGFyZSB0aGUgaW5mb3JtYXRpb24g bmVlZGVkIHRvIGNyZWF0ZSBncm91cGVkIHBhdGhzIGZvciB0aGlzIGJhc2UKKwkgKiByZWxhdGlv bi4KKwkgKi8KKwlhZ2dfaW5mbyA9IGNyZWF0ZV9yZWxfYWdnX2luZm8ocm9vdCwgcmVsKTsKKwlp ZiAoYWdnX2luZm8gPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKgorCSAqIElmIGdyb3Vw ZWQgcGF0aHMgZm9yIHRoZSBnaXZlbiBiYXNlIHJlbGF0aW9uIGFyZSBub3QgY29uc2lkZXJlZCB1 c2VmdWwsCisJICogc2tpcCBidWlsZGluZyB0aGUgZ3JvdXBlZCByZWxhdGlvbi4KKwkgKi8KKwlp ZiAoIWFnZ19pbmZvLT5hZ2dfdXNlZnVsKQorCQlyZXR1cm4gTlVMTDsKKworCS8qIFRyYWNrcyB0 aGUgbG93ZXN0IGpvaW4gbGV2ZWwgYXQgd2hpY2ggcGFydGlhbCBhZ2dyZWdhdGlvbiBpcyBhcHBs aWVkICovCisJYWdnX2luZm8tPmFwcGx5X2F0ID0gYm1zX2NvcHkocmVsLT5yZWxpZHMpOworCisJ LyogYnVpbGQgdGhlIGdyb3VwZWQgcmVsYXRpb24gKi8KKwlncm91cGVkX3JlbCA9IGJ1aWxkX2dy b3VwZWRfcmVsKHJvb3QsIHJlbCk7CisJZ3JvdXBlZF9yZWwtPnJlbHRhcmdldCA9IGFnZ19pbmZv LT50YXJnZXQ7CisJZ3JvdXBlZF9yZWwtPnJvd3MgPSBhZ2dfaW5mby0+Z3JvdXBlZF9yb3dzOwor CWdyb3VwZWRfcmVsLT5hZ2dfaW5mbyA9IGFnZ19pbmZvOworCisJcmVsLT5ncm91cGVkX3JlbCA9 IGdyb3VwZWRfcmVsOworCisJcmV0dXJuIGdyb3VwZWRfcmVsOworfQorCisvKgorICogYnVpbGRf Z3JvdXBlZF9yZWwKKyAqCSAgQnVpbGQgYSBncm91cGVkIHJlbGF0aW9uIGJ5IGZsYXQgY29weWlu ZyB0aGUgaW5wdXQgcmVsYXRpb24gYW5kIHJlc2V0dGluZworICoJICB0aGUgbmVjZXNzYXJ5IGZp ZWxkcy4KKyAqLworUmVsT3B0SW5mbyAqCitidWlsZF9ncm91cGVkX3JlbChQbGFubmVySW5mbyAq cm9vdCwgUmVsT3B0SW5mbyAqcmVsKQoreworCVJlbE9wdEluZm8gKmdyb3VwZWRfcmVsOworCisJ Z3JvdXBlZF9yZWwgPSBtYWtlTm9kZShSZWxPcHRJbmZvKTsKKwltZW1jcHkoZ3JvdXBlZF9yZWws IHJlbCwgc2l6ZW9mKFJlbE9wdEluZm8pKTsKKworCS8qCisJICogY2xlYXIgcGF0aCBpbmZvCisJ ICovCisJZ3JvdXBlZF9yZWwtPnBhdGhsaXN0ID0gTklMOworCWdyb3VwZWRfcmVsLT5wcGlsaXN0 ID0gTklMOworCWdyb3VwZWRfcmVsLT5wYXJ0aWFsX3BhdGhsaXN0ID0gTklMOworCWdyb3VwZWRf cmVsLT5jaGVhcGVzdF9zdGFydHVwX3BhdGggPSBOVUxMOworCWdyb3VwZWRfcmVsLT5jaGVhcGVz dF90b3RhbF9wYXRoID0gTlVMTDsKKwlncm91cGVkX3JlbC0+Y2hlYXBlc3RfdW5pcXVlX3BhdGgg PSBOVUxMOworCWdyb3VwZWRfcmVsLT5jaGVhcGVzdF9wYXJhbWV0ZXJpemVkX3BhdGhzID0gTklM OworCisJLyoKKwkgKiBjbGVhciBwYXJ0aXRpb24gaW5mbworCSAqLworCWdyb3VwZWRfcmVsLT5w YXJ0X3NjaGVtZSA9IE5VTEw7CisJZ3JvdXBlZF9yZWwtPm5wYXJ0cyA9IC0xOworCWdyb3VwZWRf cmVsLT5ib3VuZGluZm8gPSBOVUxMOworCWdyb3VwZWRfcmVsLT5wYXJ0Ym91bmRzX21lcmdlZCA9 IGZhbHNlOworCWdyb3VwZWRfcmVsLT5wYXJ0aXRpb25fcXVhbCA9IE5JTDsKKwlncm91cGVkX3Jl bC0+cGFydF9yZWxzID0gTlVMTDsKKwlncm91cGVkX3JlbC0+bGl2ZV9wYXJ0cyA9IE5VTEw7CisJ Z3JvdXBlZF9yZWwtPmFsbF9wYXJ0cmVscyA9IE5VTEw7CisJZ3JvdXBlZF9yZWwtPnBhcnRleHBy cyA9IE5VTEw7CisJZ3JvdXBlZF9yZWwtPm51bGxhYmxlX3BhcnRleHBycyA9IE5VTEw7CisJZ3Jv dXBlZF9yZWwtPmNvbnNpZGVyX3BhcnRpdGlvbndpc2Vfam9pbiA9IGZhbHNlOworCisJLyoKKwkg KiBjbGVhciBzaXplIGVzdGltYXRlcworCSAqLworCWdyb3VwZWRfcmVsLT5yb3dzID0gMDsKKwor CXJldHVybiBncm91cGVkX3JlbDsKK30KKwogLyoKICAqIGZpbmRfYmFzZV9yZWwKICAqCSAgRmlu ZCBhIGJhc2Ugb3Igb3RoZXJyZWwgcmVsYXRpb24gZW50cnksIHdoaWNoIG11c3QgYWxyZWFkeSBl eGlzdC4KQEAgLTc1NSw2ICs4NzYsOCBAQCBidWlsZF9qb2luX3JlbChQbGFubmVySW5mbyAqcm9v dCwKIAlqb2lucmVsLT5qb2luaW5mbyA9IE5JTDsKIAlqb2lucmVsLT5oYXNfZWNsYXNzX2pvaW5z ID0gZmFsc2U7CiAJam9pbnJlbC0+Y29uc2lkZXJfcGFydGl0aW9ud2lzZV9qb2luID0gZmFsc2U7 CS8qIG1pZ2h0IGdldCBjaGFuZ2VkIGxhdGVyICovCisJam9pbnJlbC0+YWdnX2luZm8gPSBOVUxM OworCWpvaW5yZWwtPmdyb3VwZWRfcmVsID0gTlVMTDsKIAlqb2lucmVsLT5wYXJlbnQgPSBOVUxM OwogCWpvaW5yZWwtPnRvcF9wYXJlbnQgPSBOVUxMOwogCWpvaW5yZWwtPnRvcF9wYXJlbnRfcmVs aWRzID0gTlVMTDsKQEAgLTkzOSw2ICsxMDYyLDggQEAgYnVpbGRfY2hpbGRfam9pbl9yZWwoUGxh bm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKm91dGVyX3JlbCwKIAlqb2lucmVsLT5qb2luaW5m byA9IE5JTDsKIAlqb2lucmVsLT5oYXNfZWNsYXNzX2pvaW5zID0gZmFsc2U7CiAJam9pbnJlbC0+ Y29uc2lkZXJfcGFydGl0aW9ud2lzZV9qb2luID0gZmFsc2U7CS8qIG1pZ2h0IGdldCBjaGFuZ2Vk IGxhdGVyICovCisJam9pbnJlbC0+YWdnX2luZm8gPSBOVUxMOworCWpvaW5yZWwtPmdyb3VwZWRf cmVsID0gTlVMTDsKIAlqb2lucmVsLT5wYXJlbnQgPSBwYXJlbnRfam9pbnJlbDsKIAlqb2lucmVs LT50b3BfcGFyZW50ID0gcGFyZW50X2pvaW5yZWwtPnRvcF9wYXJlbnQgPyBwYXJlbnRfam9pbnJl bC0+dG9wX3BhcmVudCA6IHBhcmVudF9qb2lucmVsOwogCWpvaW5yZWwtPnRvcF9wYXJlbnRfcmVs aWRzID0gam9pbnJlbC0+dG9wX3BhcmVudC0+cmVsaWRzOwpAQCAtMjUxOCwzICsyNjQzLDUxNCBA QCBidWlsZF9jaGlsZF9qb2luX3JlbHRhcmdldChQbGFubmVySW5mbyAqcm9vdCwKIAljaGlsZHJl bC0+cmVsdGFyZ2V0LT5jb3N0LnBlcl90dXBsZSA9IHBhcmVudHJlbC0+cmVsdGFyZ2V0LT5jb3N0 LnBlcl90dXBsZTsKIAljaGlsZHJlbC0+cmVsdGFyZ2V0LT53aWR0aCA9IHBhcmVudHJlbC0+cmVs dGFyZ2V0LT53aWR0aDsKIH0KKworLyoKKyAqIGNyZWF0ZV9yZWxfYWdnX2luZm8KKyAqCSAgQ3Jl YXRlIHRoZSBSZWxBZ2dJbmZvIHN0cnVjdHVyZSBmb3IgdGhlIGdpdmVuIHJlbGF0aW9uIGlmIGl0 IGNhbiBwcm9kdWNlCisgKgkgIGdyb3VwZWQgcGF0aHMuICBUaGUgZ2l2ZW4gcmVsYXRpb24gaXMg dGhlIG5vbi1ncm91cGVkIG9uZSB3aGljaCBoYXMgdGhlCisgKgkgIHJlbHRhcmdldCBhbHJlYWR5 IGNvbnN0cnVjdGVkLgorICovCitSZWxBZ2dJbmZvICoKK2NyZWF0ZV9yZWxfYWdnX2luZm8oUGxh bm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCkKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKwlS ZWxBZ2dJbmZvICpyZXN1bHQ7CisJUGF0aFRhcmdldCAqYWdnX2lucHV0OworCVBhdGhUYXJnZXQg KnRhcmdldDsKKwlMaXN0CSAgICpncm91cF9jbGF1c2VzID0gTklMOworCUxpc3QJICAgKmdyb3Vw X2V4cHJzID0gTklMOworCisJLyoKKwkgKiBUaGUgbGlzdHMgb2YgYWdncmVnYXRlIGV4cHJlc3Np b25zIGFuZCBncm91cGluZyBleHByZXNzaW9ucyBzaG91bGQgaGF2ZQorCSAqIGJlZW4gY29uc3Ry dWN0ZWQuCisJICovCisJQXNzZXJ0KHJvb3QtPmFnZ19jbGF1c2VfbGlzdCAhPSBOSUwpOworCUFz c2VydChyb290LT5ncm91cF9leHByX2xpc3QgIT0gTklMKTsKKworCS8qCisJICogSWYgdGhpcyBp cyBhIGNoaWxkIHJlbCwgdGhlIGdyb3VwZWQgcmVsIGZvciBpdHMgcGFyZW50IHJlbCBtdXN0IGhh dmUKKwkgKiBiZWVuIGNyZWF0ZWQgaWYgaXQgY2FuLiAgU28gd2UgY2FuIGp1c3QgdXNlIHBhcmVu dCdzIFJlbEFnZ0luZm8gaWYKKwkgKiB0aGVyZSBpcyBvbmUsIHdpdGggYXBwcm9wcmlhdGUgdmFy aWFibGUgc3Vic3RpdHV0aW9ucy4KKwkgKi8KKwlpZiAoSVNfT1RIRVJfUkVMKHJlbCkpCisJewor CQlSZWxPcHRJbmZvICpncm91cGVkX3JlbDsKKwkJUmVsQWdnSW5mbyAqYWdnX2luZm87CisKKwkJ Z3JvdXBlZF9yZWwgPSByZWwtPnRvcF9wYXJlbnQtPmdyb3VwZWRfcmVsOworCQlpZiAoZ3JvdXBl ZF9yZWwgPT0gTlVMTCkKKwkJCXJldHVybiBOVUxMOworCisJCUFzc2VydChJU19HUk9VUEVEX1JF TChncm91cGVkX3JlbCkpOworCisJCS8qIE11c3QgZG8gbXVsdGktbGV2ZWwgdHJhbnNmb3JtYXRp b24gKi8KKwkJYWdnX2luZm8gPSAoUmVsQWdnSW5mbyAqKQorCQkJYWRqdXN0X2FwcGVuZHJlbF9h dHRyc19tdWx0aWxldmVsKHJvb3QsCisJCQkJCQkJCQkJCSAgKE5vZGUgKikgZ3JvdXBlZF9yZWwt PmFnZ19pbmZvLAorCQkJCQkJCQkJCQkgIHJlbCwKKwkJCQkJCQkJCQkJICByZWwtPnRvcF9wYXJl bnQpOworCisJCWFnZ19pbmZvLT5ncm91cGVkX3Jvd3MgPQorCQkJZXN0aW1hdGVfbnVtX2dyb3Vw cyhyb290LCBhZ2dfaW5mby0+Z3JvdXBfZXhwcnMsCisJCQkJCQkJCXJlbC0+cm93cywgTlVMTCwg TlVMTCk7CisKKwkJYWdnX2luZm8tPmFwcGx5X2F0ID0gTlVMTDsJLyogY2FsbGVyIHdpbGwgY2hh bmdlIHRoaXMgbGF0ZXIgKi8KKworCQkvKgorCQkgKiBUaGUgZ3JvdXBlZCBwYXRocyBmb3IgdGhl IGdpdmVuIHJlbGF0aW9uIGFyZSBjb25zaWRlcmVkIHVzZWZ1bCBpZmYKKwkJICogdGhlIGF2ZXJh Z2UgZ3JvdXAgc2l6ZSBpcyBubyBsZXNzIHRoYW4gRUFHRVJfQUdHX01JTl9HUk9VUF9TSVpFLgor CQkgKi8KKwkJYWdnX2luZm8tPmFnZ191c2VmdWwgPQorCQkJKHJlbC0+cm93cyAvIGFnZ19pbmZv LT5ncm91cGVkX3Jvd3MpID49IEVBR0VSX0FHR19NSU5fR1JPVVBfU0laRTsKKworCQlyZXR1cm4g YWdnX2luZm87CisJfQorCisJLyogQ2hlY2sgaWYgaXQncyBwb3NzaWJsZSB0byBwcm9kdWNlIGdy b3VwZWQgcGF0aHMgZm9yIHRoaXMgcmVsYXRpb24uICovCisJaWYgKCFlYWdlcl9hZ2dyZWdhdGlv bl9wb3NzaWJsZV9mb3JfcmVsYXRpb24ocm9vdCwgcmVsKSkKKwkJcmV0dXJuIE5VTEw7CisKKwkv KgorCSAqIENyZWF0ZSB0YXJnZXRzIGZvciB0aGUgZ3JvdXBlZCBwYXRocyBhbmQgZm9yIHRoZSBp bnB1dCBwYXRocyBvZiB0aGUKKwkgKiBncm91cGVkIHBhdGhzLgorCSAqLworCXRhcmdldCA9IGNy ZWF0ZV9lbXB0eV9wYXRodGFyZ2V0KCk7CisJYWdnX2lucHV0ID0gY3JlYXRlX2VtcHR5X3BhdGh0 YXJnZXQoKTsKKworCS8qIC4uLiBhbmQgaW5pdGlhbGl6ZSB0aGVzZSB0YXJnZXRzICovCisJaWYg KCFpbml0X2dyb3VwaW5nX3RhcmdldHMocm9vdCwgcmVsLCB0YXJnZXQsIGFnZ19pbnB1dCwKKwkJ CQkJCQkgICAmZ3JvdXBfY2xhdXNlcywgJmdyb3VwX2V4cHJzKSkKKwkJcmV0dXJuIE5VTEw7CisK KwkvKgorCSAqIEVhZ2VyIGFnZ3JlZ2F0aW9uIGlzIG5vdCBhcHBsaWNhYmxlIGlmIHRoZXJlIGFy ZSBubyBhdmFpbGFibGUgZ3JvdXBpbmcKKwkgKiBleHByZXNzaW9ucy4KKwkgKi8KKwlpZiAobGlz dF9sZW5ndGgoZ3JvdXBfY2xhdXNlcykgPT0gMCkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKiBidWls ZCB0aGUgUmVsQWdnSW5mbyByZXN1bHQgKi8KKwlyZXN1bHQgPSBtYWtlTm9kZShSZWxBZ2dJbmZv KTsKKworCXJlc3VsdC0+Z3JvdXBfY2xhdXNlcyA9IGdyb3VwX2NsYXVzZXM7CisJcmVzdWx0LT5n cm91cF9leHBycyA9IGdyb3VwX2V4cHJzOworCisJLyogQ2FsY3VsYXRlIHBhdGhrZXlzIHRoYXQg cmVwcmVzZW50IHRoaXMgZ3JvdXBpbmcgcmVxdWlyZW1lbnRzICovCisJcmVzdWx0LT5ncm91cF9w YXRoa2V5cyA9CisJCW1ha2VfcGF0aGtleXNfZm9yX3NvcnRjbGF1c2VzKHJvb3QsIHJlc3VsdC0+ Z3JvdXBfY2xhdXNlcywKKwkJCQkJCQkJCSAgbWFrZV90bGlzdF9mcm9tX3BhdGh0YXJnZXQodGFy Z2V0KSk7CisKKwkvKiBBZGQgYWdncmVnYXRlcyB0byB0aGUgZ3JvdXBpbmcgdGFyZ2V0ICovCisJ Zm9yZWFjaChsYywgcm9vdC0+YWdnX2NsYXVzZV9saXN0KQorCXsKKwkJQWdnQ2xhdXNlSW5mbyAq YWNfaW5mbyA9IGxmaXJzdF9ub2RlKEFnZ0NsYXVzZUluZm8sIGxjKTsKKwkJQWdncmVmCSAgICph Z2dyZWY7CisKKwkJQXNzZXJ0KElzQShhY19pbmZvLT5hZ2dyZWYsIEFnZ3JlZikpOworCisJCWFn Z3JlZiA9IChBZ2dyZWYgKikgY29weU9iamVjdChhY19pbmZvLT5hZ2dyZWYpOworCQltYXJrX3Bh cnRpYWxfYWdncmVmKGFnZ3JlZiwgQUdHU1BMSVRfSU5JVElBTF9TRVJJQUwpOworCisJCWFkZF9j b2x1bW5fdG9fcGF0aHRhcmdldCh0YXJnZXQsIChFeHByICopIGFnZ3JlZiwgMCk7CisJfQorCisJ LyogU2V0IHRoZSBlc3RpbWF0ZWQgZXZhbCBjb3N0IGFuZCBvdXRwdXQgd2lkdGggZm9yIGJvdGgg dGFyZ2V0cyAqLworCXNldF9wYXRodGFyZ2V0X2Nvc3Rfd2lkdGgocm9vdCwgdGFyZ2V0KTsKKwlz ZXRfcGF0aHRhcmdldF9jb3N0X3dpZHRoKHJvb3QsIGFnZ19pbnB1dCk7CisKKwlyZXN1bHQtPnJl bGlkcyA9IGJtc19jb3B5KHJlbC0+cmVsaWRzKTsKKwlyZXN1bHQtPnRhcmdldCA9IHRhcmdldDsK KwlyZXN1bHQtPmFnZ19pbnB1dCA9IGFnZ19pbnB1dDsKKwlyZXN1bHQtPmdyb3VwZWRfcm93cyA9 IGVzdGltYXRlX251bV9ncm91cHMocm9vdCwgcmVzdWx0LT5ncm91cF9leHBycywKKwkJCQkJCQkJ CQkJICAgcmVsLT5yb3dzLCBOVUxMLCBOVUxMKTsKKwlyZXN1bHQtPmFwcGx5X2F0ID0gTlVMTDsJ LyogY2FsbGVyIHdpbGwgY2hhbmdlIHRoaXMgbGF0ZXIgKi8KKworCS8qCisJICogVGhlIGdyb3Vw ZWQgcGF0aHMgZm9yIHRoZSBnaXZlbiByZWxhdGlvbiBhcmUgY29uc2lkZXJlZCB1c2VmdWwgaWZm IHRoZQorCSAqIGF2ZXJhZ2UgZ3JvdXAgc2l6ZSBpcyBubyBsZXNzIHRoYW4gRUFHRVJfQUdHX01J Tl9HUk9VUF9TSVpFLgorCSAqLworCXJlc3VsdC0+YWdnX3VzZWZ1bCA9CisJCShyZWwtPnJvd3Mg LyByZXN1bHQtPmdyb3VwZWRfcm93cykgPj0gRUFHRVJfQUdHX01JTl9HUk9VUF9TSVpFOworCisJ cmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIGVhZ2VyX2FnZ3JlZ2F0aW9uX3Bvc3NpYmxlX2Zv cl9yZWxhdGlvbgorICogCSAgQ2hlY2sgaWYgaXQncyBwb3NzaWJsZSB0byBwcm9kdWNlIGdyb3Vw ZWQgcGF0aHMgZm9yIHRoZSBnaXZlbiByZWxhdGlvbi4KKyAqLworc3RhdGljIGJvb2wKK2VhZ2Vy X2FnZ3JlZ2F0aW9uX3Bvc3NpYmxlX2Zvcl9yZWxhdGlvbihQbGFubmVySW5mbyAqcm9vdCwgUmVs T3B0SW5mbyAqcmVsKQoreworCUxpc3RDZWxsICAgKmxjOworCWludAkJCWN1cl9yZWxpZDsKKwor CS8qCisJICogQ2hlY2sgdG8gc2VlIGlmIHRoZSBnaXZlbiByZWxhdGlvbiBpcyBpbiB0aGUgbnVs bGFibGUgc2lkZSBvZiBhbiBvdXRlcgorCSAqIGpvaW4uICBJbiB0aGlzIGNhc2UsIHdlIGNhbm5v dCBwdXNoIGEgcGFydGlhbCBhZ2dyZWdhdGlvbiBkb3duIHRvIHRoZQorCSAqIHJlbGF0aW9uLCBi ZWNhdXNlIHRoZSBOVUxMLWV4dGVuZGVkIHJvd3MgcHJvZHVjZWQgYnkgdGhlIG91dGVyIGpvaW4K KwkgKiB3b3VsZCBub3QgYmUgYXZhaWxhYmxlIHdoZW4gd2UgcGVyZm9ybSB0aGUgcGFydGlhbCBh Z2dyZWdhdGlvbiwgd2hpbGUKKwkgKiB3aXRoIGEgbm9uLWVhZ2VyLWFnZ3JlZ2F0aW9uIHBsYW4g dGhlc2Ugcm93cyBhcmUgYXZhaWxhYmxlIGZvciB0aGUKKwkgKiB0b3AtbGV2ZWwgYWdncmVnYXRp b24uICBEb2luZyBzbyBtYXkgcmVzdWx0IGluIHRoZSByb3dzIGJlaW5nIGdyb3VwZWQKKwkgKiBk aWZmZXJlbnRseSB0aGFuIGV4cGVjdGVkLCBvciBwcm9kdWNlIGluY29ycmVjdCB2YWx1ZXMgZnJv bSB0aGUKKwkgKiBhZ2dyZWdhdGUgZnVuY3Rpb25zLgorCSAqLworCWN1cl9yZWxpZCA9IC0xOwor CXdoaWxlICgoY3VyX3JlbGlkID0gYm1zX25leHRfbWVtYmVyKHJlbC0+cmVsaWRzLCBjdXJfcmVs aWQpKSA+PSAwKQorCXsKKwkJUmVsT3B0SW5mbyAqYmFzZXJlbCA9IGZpbmRfYmFzZV9yZWxfaWdu b3JlX2pvaW4ocm9vdCwgY3VyX3JlbGlkKTsKKworCQlpZiAoYmFzZXJlbCA9PSBOVUxMKQorCQkJ Y29udGludWU7CQkJLyogaWdub3JlIG91dGVyIGpvaW5zIGluIHJlbC0+cmVsaWRzICovCisKKwkJ aWYgKCFibXNfaXNfc3Vic2V0KGJhc2VyZWwtPm51bGxpbmdfcmVsaWRzLCByZWwtPnJlbGlkcykp CisJCQlyZXR1cm4gZmFsc2U7CisJfQorCisJLyoKKwkgKiBGb3Igbm93IHdlIGRvbid0IHRyeSB0 byBzdXBwb3J0IFBsYWNlSG9sZGVyVmFycy4KKwkgKi8KKwlmb3JlYWNoKGxjLCByZWwtPnJlbHRh cmdldC0+ZXhwcnMpCisJeworCQlFeHByCSAgICpleHByID0gbGZpcnN0KGxjKTsKKworCQlpZiAo SXNBKGV4cHIsIFBsYWNlSG9sZGVyVmFyKSkKKwkJCXJldHVybiBmYWxzZTsKKwl9CisKKwkvKiBD YWxsZXIgc2hvdWxkIG9ubHkgcGFzcyBiYXNlIHJlbGF0aW9ucyBvciBqb2lucy4gKi8KKwlBc3Nl cnQocmVsLT5yZWxvcHRraW5kID09IFJFTE9QVF9CQVNFUkVMIHx8CisJCSAgIHJlbC0+cmVsb3B0 a2luZCA9PSBSRUxPUFRfSk9JTlJFTCk7CisKKwkvKgorCSAqIENoZWNrIGlmIGFsbCBhZ2dyZWdh dGUgZXhwcmVzc2lvbnMgY2FuIGJlIGV2YWx1YXRlZCBvbiB0aGlzIHJlbGF0aW9uCisJICogbGV2 ZWwuCisJICovCisJZm9yZWFjaChsYywgcm9vdC0+YWdnX2NsYXVzZV9saXN0KQorCXsKKwkJQWdn Q2xhdXNlSW5mbyAqYWNfaW5mbyA9IGxmaXJzdF9ub2RlKEFnZ0NsYXVzZUluZm8sIGxjKTsKKwor CQlBc3NlcnQoSXNBKGFjX2luZm8tPmFnZ3JlZiwgQWdncmVmKSk7CisKKwkJLyoKKwkJICogR2l2 ZSB1cCBpZiBhbnkgYWdncmVnYXRlIHJlcXVpcmVzIHJlbGF0aW9ucyBvdGhlciB0aGFuIHRoZSBj dXJyZW50CisJCSAqIG9uZS4gIElmIHRoZSBhZ2dyZWdhdGUgcmVxdWlyZXMgdGhlIGN1cnJlbnQg cmVsYXRpb24gcGx1cworCQkgKiBhZGRpdGlvbmFsIHJlbGF0aW9ucywgZ3JvdXBpbmcgdGhlIGN1 cnJlbnQgcmVsYXRpb24gY291bGQgbWFrZSBzb21lCisJCSAqIGlucHV0IHJvd3MgdW5hdmFpbGFi bGUgZm9yIHRoZSBoaWdoZXIgYWdncmVnYXRlIGFuZCBtYXkgcmVkdWNlIHRoZQorCQkgKiBudW1i ZXIgb2YgaW5wdXQgcm93cyBpdCByZWNlaXZlcy4gIElmIHRoZSBhZ2dyZWdhdGUgZG9lcyBub3QK KwkJICogcmVxdWlyZSB0aGUgY3VycmVudCByZWxhdGlvbiBhdCBhbGwsIGl0IHNob3VsZCBub3Qg YmUgZ3JvdXBlZCwgYXMKKwkJICogd2UgZG8gbm90IHN1cHBvcnQgam9pbmluZyB0d28gZ3JvdXBl ZCByZWxhdGlvbnMuCisJCSAqLworCQlpZiAoIWJtc19pc19zdWJzZXQoYWNfaW5mby0+YWdnX2V2 YWxfYXQsIHJlbC0+cmVsaWRzKSkKKwkJCXJldHVybiBmYWxzZTsKKwl9CisKKwlyZXR1cm4gdHJ1 ZTsKK30KKworLyoKKyAqIGluaXRfZ3JvdXBpbmdfdGFyZ2V0cworICoJICBJbml0aWFsaXplIHRo ZSB0YXJnZXQgZm9yIGdyb3VwZWQgcGF0aHMgKHRhcmdldCkgYXMgd2VsbCBhcyB0aGUgdGFyZ2V0 CisgKgkgIGZvciBwYXRocyB0aGF0IGdlbmVyYXRlIGlucHV0IGZvciB0aGUgZ3JvdXBlZCBwYXRo cyAoYWdnX2lucHV0KS4KKyAqCisgKiBXZSBhbHNvIGNvbnN0cnVjdCB0aGUgbGlzdCBvZiBTb3J0 R3JvdXBDbGF1c2VzIGFuZCB0aGUgbGlzdCBvZiBncm91cGluZworICogZXhwcmVzc2lvbnMgZm9y IHRoZSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uLCBhbmQgcmV0dXJuIHRoZW0gaW4gKmdyb3VwX2NsYXVz ZQorICogYW5kICpncm91cF9leHBycy4KKyAqCisgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdGFyZ2V0 cyBjb3VsZCBiZSBpbml0aWFsaXplZCwgZmFsc2Ugb3RoZXJ3aXNlLgorICovCitzdGF0aWMgYm9v bAoraW5pdF9ncm91cGluZ190YXJnZXRzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpy ZWwsCisJCQkJCSAgUGF0aFRhcmdldCAqdGFyZ2V0LCBQYXRoVGFyZ2V0ICphZ2dfaW5wdXQsCisJ CQkJCSAgTGlzdCAqKmdyb3VwX2NsYXVzZXMsIExpc3QgKipncm91cF9leHBycykKK3sKKwlMaXN0 Q2VsbCAgICpsYzsKKwlMaXN0CSAgICpwb3NzaWJseV9kZXBlbmRlbnQgPSBOSUw7CisJSW5kZXgJ CW1heFNvcnRHcm91cFJlZjsKKworCS8qIElkZW50aWZ5IHRoZSBtYXggc29ydGdyb3VwcmVmICov CisJbWF4U29ydEdyb3VwUmVmID0gMDsKKwlmb3JlYWNoKGxjLCByb290LT5wcm9jZXNzZWRfdGxp c3QpCisJeworCQlJbmRleAkJcmVmID0gKChUYXJnZXRFbnRyeSAqKSBsZmlyc3QobGMpKS0+cmVz c29ydGdyb3VwcmVmOworCisJCWlmIChyZWYgPiBtYXhTb3J0R3JvdXBSZWYpCisJCQltYXhTb3J0 R3JvdXBSZWYgPSByZWY7CisJfQorCisJLyoKKwkgKiBBdCB0aGlzIHBvaW50LCBhbGwgVmFycyBm cm9tIHRoaXMgcmVsYXRpb24gdGhhdCBhcmUgbmVlZGVkIGJ5IHVwcGVyCisJICogam9pbnMgb3Ig YXJlIHJlcXVpcmVkIGluIHRoZSBmaW5hbCB0YXJnZXRsaXN0IHNob3VsZCBhbHJlYWR5IGJlIHBy ZXNlbnQKKwkgKiBpbiBpdHMgcmVsdGFyZ2V0LiAgVGhlcmVmb3JlLCB3ZSBjYW4gc2FmZWx5IGl0 ZXJhdGUgb3ZlciB0aGlzCisJICogcmVsYXRpb24ncyByZWx0YXJnZXQtPmV4cHJzIHRvIGNvbnN0 cnVjdCB0aGUgUGF0aFRhcmdldCBhbmQgZ3JvdXBpbmcKKwkgKiBjbGF1c2VzIGZvciB0aGUgZ3Jv dXBlZCBwYXRocy4KKwkgKi8KKwlmb3JlYWNoKGxjLCByZWwtPnJlbHRhcmdldC0+ZXhwcnMpCisJ eworCQlFeHByCSAgICpleHByID0gKEV4cHIgKikgbGZpcnN0KGxjKTsKKwkJSW5kZXgJCXNvcnRn cm91cHJlZjsKKworCQkvKgorCQkgKiBHaXZlbiB0aGF0IFBsYWNlSG9sZGVyVmFyIGN1cnJlbnRs eSBwcmV2ZW50cyB1cyBmcm9tIGRvaW5nIGVhZ2VyCisJCSAqIGFnZ3JlZ2F0aW9uLCB0aGUgc291 cmNlIHRhcmdldCBjYW5ub3QgY29udGFpbiBhbnl0aGluZyBtb3JlIGNvbXBsZXgKKwkJICogdGhh biBhIFZhci4KKwkJICovCisJCUFzc2VydChJc0EoZXhwciwgVmFyKSk7CisKKwkJLyoKKwkJICog R2V0IHRoZSBzb3J0Z3JvdXByZWYgb2YgdGhlIGV4cHIgaWYgaXQgaXMgZm91bmQgYW1vbmcsIG9y IGNhbiBiZQorCQkgKiBkZWR1Y2VkIGZyb20sIHRoZSBvcmlnaW5hbCBncm91cGluZyBleHByZXNz aW9ucy4KKwkJICovCisJCXNvcnRncm91cHJlZiA9IGdldF9leHByZXNzaW9uX3NvcnRncm91cHJl Zihyb290LCBleHByKTsKKwkJaWYgKHNvcnRncm91cHJlZiA+IDApCisJCXsKKwkJCVNvcnRHcm91 cENsYXVzZSAqc2djOworCisJCQkvKiBGaW5kIHRoZSBtYXRjaGluZyBTb3J0R3JvdXBDbGF1c2Ug Ki8KKwkJCXNnYyA9IGdldF9zb3J0Z3JvdXByZWZfY2xhdXNlKHNvcnRncm91cHJlZiwgcm9vdC0+ cHJvY2Vzc2VkX2dyb3VwQ2xhdXNlKTsKKwkJCUFzc2VydChzZ2MtPnRsZVNvcnRHcm91cFJlZiA8 PSBtYXhTb3J0R3JvdXBSZWYpOworCisJCQkvKgorCQkJICogSWYgdGhlIHRhcmdldCBleHByZXNz aW9uIGlzIHRvIGJlIHVzZWQgYXMgYSBncm91cGluZyBrZXksIGl0CisJCQkgKiBzaG91bGQgYmUg ZW1pdHRlZCBieSB0aGUgZ3JvdXBlZCBwYXRocyB0aGF0IGhhdmUgYmVlbiBwdXNoZWQKKwkJCSAq IGRvd24gdG8gdGhpcyByZWxhdGlvbiBsZXZlbC4KKwkJCSAqLworCQkJYWRkX2NvbHVtbl90b19w YXRodGFyZ2V0KHRhcmdldCwgZXhwciwgc29ydGdyb3VwcmVmKTsKKworCQkJLyoKKwkJCSAqIC4u LiBhbmQgaXQgYWxzbyBzaG91bGQgYmUgZW1pdHRlZCBieSB0aGUgaW5wdXQgcGF0aHMuCisJCQkg Ki8KKwkJCWFkZF9jb2x1bW5fdG9fcGF0aHRhcmdldChhZ2dfaW5wdXQsIGV4cHIsIHNvcnRncm91 cHJlZik7CisKKwkJCS8qCisJCQkgKiBSZWNvcmQgdGhpcyBTb3J0R3JvdXBDbGF1c2UgYW5kIGdy b3VwaW5nIGV4cHJlc3Npb24uICBOb3RlIHRoYXQKKwkJCSAqIHRoaXMgU29ydEdyb3VwQ2xhdXNl IG1pZ2h0IGhhdmUgYWxyZWFkeSBiZWVuIHJlY29yZGVkLgorCQkJICovCisJCQlpZiAoIWxpc3Rf bWVtYmVyKCpncm91cF9jbGF1c2VzLCBzZ2MpKQorCQkJeworCQkJCSpncm91cF9jbGF1c2VzID0g bGFwcGVuZCgqZ3JvdXBfY2xhdXNlcywgc2djKTsKKwkJCQkqZ3JvdXBfZXhwcnMgPSBsYXBwZW5k KCpncm91cF9leHBycywgZXhwcik7CisJCQl9CisJCX0KKwkJZWxzZSBpZiAoaXNfdmFyX25lZWRl ZF9ieV9qb2luKHJvb3QsIChWYXIgKikgZXhwciwgcmVsKSkKKwkJeworCQkJLyoKKwkJCSAqIFRo ZSBleHByZXNzaW9uIGlzIG5lZWRlZCBmb3IgYW4gdXBwZXIgam9pbiBidXQgaXMgbmVpdGhlciBp bgorCQkJICogdGhlIEdST1VQIEJZIGNsYXVzZSBub3IgZGVyaXZhYmxlIGZyb20gaXQgdXNpbmcg RUMgKG90aGVyd2lzZSwKKwkJCSAqIGl0IHdvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGluY2x1ZGVk IGluIHRoZSB0YXJnZXRzIGFib3ZlKS4gIFdlCisJCQkgKiBuZWVkIHRvIGNyZWF0ZSBhIHNwZWNp YWwgU29ydEdyb3VwQ2xhdXNlIGZvciB0aGlzIGV4cHJlc3Npb24uCisJCQkgKgorCQkJICogSXQg aXMgaW1wb3J0YW50IHRvIGluY2x1ZGUgc3VjaCBleHByZXNzaW9ucyBpbiB0aGUgZ3JvdXBpbmcK KwkJCSAqIGtleXMuICBUaGlzIGlzIGVzc2VudGlhbCB0byBlbnN1cmUgdGhhdCBhbiBhZ2dyZWdh dGVkIHJvdyBmcm9tCisJCQkgKiB0aGUgcGFydGlhbCBhZ2dyZWdhdGlvbiBtYXRjaGVzIHRoZSBv dGhlciBzaWRlIG9mIHRoZSBqb2luIGlmCisJCQkgKiBhbmQgb25seSBpZiBlYWNoIHJvdyBpbiB0 aGUgcGFydGlhbCBncm91cCBkb2VzLiAgVGhpcyBlbnN1cmVzCisJCQkgKiB0aGF0IGFsbCByb3dz IHdpdGhpbiB0aGUgc2FtZSBwYXJ0aWFsIGdyb3VwIHNoYXJlIHRoZSBzYW1lCisJCQkgKiAnZGVz dGlueScsIHdoaWNoIGlzIGNydWNpYWwgZm9yIG1haW50YWluaW5nIGNvcnJlY3RuZXNzLgorCQkJ ICovCisJCQlTb3J0R3JvdXBDbGF1c2UgKnNnYzsKKwkJCVR5cGVDYWNoZUVudHJ5ICp0Y2U7CisJ CQlPaWQJCQllcXVhbGltYWdlcHJvYzsKKworCQkJLyoKKwkJCSAqIEJ1dCBmaXJzdCwgY2hlY2sg aWYgZXF1YWxpdHkgaW1wbGllcyBpbWFnZSBlcXVhbGl0eSBmb3IgdGhpcworCQkJICogZXhwcmVz c2lvbi4gIElmIG5vdCwgd2UgY2Fubm90IHVzZSBpdCBhcyBhIGdyb3VwaW5nIGtleS4gIFNlZQor CQkJICogY29tbWVudHMgaW4gY3JlYXRlX2dyb3VwaW5nX2V4cHJfaW5mb3MoKS4KKwkJCSAqLwor CQkJdGNlID0gbG9va3VwX3R5cGVfY2FjaGUoZXhwclR5cGUoKE5vZGUgKikgZXhwciksCisJCQkJ CQkJCQlUWVBFQ0FDSEVfQlRSRUVfT1BGQU1JTFkpOworCQkJaWYgKCFPaWRJc1ZhbGlkKHRjZS0+ YnRyZWVfb3BmKSB8fAorCQkJCSFPaWRJc1ZhbGlkKHRjZS0+YnRyZWVfb3BpbnR5cGUpKQorCQkJ CXJldHVybiBmYWxzZTsKKworCQkJZXF1YWxpbWFnZXByb2MgPSBnZXRfb3BmYW1pbHlfcHJvYyh0 Y2UtPmJ0cmVlX29wZiwKKwkJCQkJCQkJCQkJICAgdGNlLT5idHJlZV9vcGludHlwZSwKKwkJCQkJ CQkJCQkJICAgdGNlLT5idHJlZV9vcGludHlwZSwKKwkJCQkJCQkJCQkJICAgQlRFUVVBTElNQUdF X1BST0MpOworCQkJaWYgKCFPaWRJc1ZhbGlkKGVxdWFsaW1hZ2Vwcm9jKSB8fAorCQkJCSFEYXR1 bUdldEJvb2woT2lkRnVuY3Rpb25DYWxsMUNvbGwoZXF1YWxpbWFnZXByb2MsCisJCQkJCQkJCQkJ CQkgICB0Y2UtPnR5cGNvbGxhdGlvbiwKKwkJCQkJCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0o dGNlLT5idHJlZV9vcGludHlwZSkpKSkKKwkJCQlyZXR1cm4gZmFsc2U7CisKKwkJCS8qIENyZWF0 ZSB0aGUgU29ydEdyb3VwQ2xhdXNlLiAqLworCQkJc2djID0gbWFrZU5vZGUoU29ydEdyb3VwQ2xh dXNlKTsKKworCQkJLyogSW5pdGlhbGl6ZSB0aGUgU29ydEdyb3VwQ2xhdXNlLiAqLworCQkJc2dj LT50bGVTb3J0R3JvdXBSZWYgPSArK21heFNvcnRHcm91cFJlZjsKKwkJCWdldF9zb3J0X2dyb3Vw X29wZXJhdG9ycyhleHByVHlwZSgoTm9kZSAqKSBleHByKSwKKwkJCQkJCQkJCSBmYWxzZSwgdHJ1 ZSwgZmFsc2UsCisJCQkJCQkJCQkgJnNnYy0+c29ydG9wLCAmc2djLT5lcW9wLCBOVUxMLAorCQkJ CQkJCQkJICZzZ2MtPmhhc2hhYmxlKTsKKworCQkJLyogVGhpcyBleHByZXNzaW9uIHNob3VsZCBi ZSBlbWl0dGVkIGJ5IHRoZSBncm91cGVkIHBhdGhzICovCisJCQlhZGRfY29sdW1uX3RvX3BhdGh0 YXJnZXQodGFyZ2V0LCBleHByLCBzZ2MtPnRsZVNvcnRHcm91cFJlZik7CisKKwkJCS8qIC4uLiBh bmQgaXQgYWxzbyBzaG91bGQgYmUgZW1pdHRlZCBieSB0aGUgaW5wdXQgcGF0aHMuICovCisJCQlh ZGRfY29sdW1uX3RvX3BhdGh0YXJnZXQoYWdnX2lucHV0LCBleHByLCBzZ2MtPnRsZVNvcnRHcm91 cFJlZik7CisKKwkJCS8qIFJlY29yZCB0aGlzIFNvcnRHcm91cENsYXVzZSBhbmQgZ3JvdXBpbmcg ZXhwcmVzc2lvbiAqLworCQkJKmdyb3VwX2NsYXVzZXMgPSBsYXBwZW5kKCpncm91cF9jbGF1c2Vz LCBzZ2MpOworCQkJKmdyb3VwX2V4cHJzID0gbGFwcGVuZCgqZ3JvdXBfZXhwcnMsIGV4cHIpOwor CQl9CisJCWVsc2UgaWYgKGlzX3Zhcl9pbl9hZ2dyZWZfb25seShyb290LCAoVmFyICopIGV4cHIp KQorCQl7CisJCQkvKgorCQkJICogVGhlIGV4cHJlc3Npb24gaXMgcmVmZXJlbmNlZCBieSBhbiBh Z2dyZWdhdGUgZnVuY3Rpb24gcHVzaGVkCisJCQkgKiBkb3duIHRvIHRoaXMgcmVsYXRpb24gYW5k IGRvZXMgbm90IGFwcGVhciBlbHNld2hlcmUgaW4gdGhlCisJCQkgKiB0YXJnZXRsaXN0IG9yIGhh dmluZ1F1YWwuICBBZGQgaXQgdG8gJ2FnZ19pbnB1dCcgYnV0IG5vdCB0bworCQkJICogJ3Rhcmdl dCcuCisJCQkgKi8KKwkJCWFkZF9uZXdfY29sdW1uX3RvX3BhdGh0YXJnZXQoYWdnX2lucHV0LCBl eHByKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBUaGUgZXhwcmVzc2lvbiBtYXkg YmUgZnVuY3Rpb25hbGx5IGRlcGVuZGVudCBvbiBvdGhlcgorCQkJICogZXhwcmVzc2lvbnMgaW4g dGhlIHRhcmdldCwgYnV0IHdlIGNhbm5vdCB2ZXJpZnkgdGhpcyB1bnRpbCBhbGwKKwkJCSAqIHRh cmdldCBleHByZXNzaW9ucyBoYXZlIGJlZW4gY29uc3RydWN0ZWQuCisJCQkgKi8KKwkJCXBvc3Np Ymx5X2RlcGVuZGVudCA9IGxhcHBlbmQocG9zc2libHlfZGVwZW5kZW50LCBleHByKTsKKwkJfQor CX0KKworCS8qCisJICogTm93IHdlIGNhbiB2ZXJpZnkgd2hldGhlciBhbiBleHByZXNzaW9uIGlz IGZ1bmN0aW9uYWxseSBkZXBlbmRlbnQgb24KKwkgKiBvdGhlcnMuCisJICovCisJZm9yZWFjaChs YywgcG9zc2libHlfZGVwZW5kZW50KQorCXsKKwkJVmFyCQkgICAqdHZhcjsKKwkJTGlzdAkgICAq ZGVwcyA9IE5JTDsKKwkJUmFuZ2VUYmxFbnRyeSAqcnRlOworCisJCXR2YXIgPSBsZmlyc3Rfbm9k ZShWYXIsIGxjKTsKKwkJcnRlID0gcm9vdC0+c2ltcGxlX3J0ZV9hcnJheVt0dmFyLT52YXJub107 CisKKwkJaWYgKGNoZWNrX2Z1bmN0aW9uYWxfZ3JvdXBpbmcocnRlLT5yZWxpZCwgdHZhci0+dmFy bm8sCisJCQkJCQkJCQkgIHR2YXItPnZhcmxldmVsc3VwLAorCQkJCQkJCQkJICB0YXJnZXQtPmV4 cHJzLCAmZGVwcykpCisJCXsKKwkJCS8qCisJCQkgKiBUaGUgZXhwcmVzc2lvbiBpcyBmdW5jdGlv bmFsbHkgZGVwZW5kZW50IG9uIG90aGVyIHRhcmdldAorCQkJICogZXhwcmVzc2lvbnMsIHNvIGl0 IGNhbiBiZSBpbmNsdWRlZCBpbiB0aGUgdGFyZ2V0cy4gIFNpbmNlIGl0CisJCQkgKiB3aWxsIG5v dCBiZSB1c2VkIGFzIGEgZ3JvdXBpbmcga2V5LCBhIHNvcnRncm91cHJlZiBpcyBub3QKKwkJCSAq IG5lZWRlZCBmb3IgaXQuCisJCQkgKi8KKwkJCWFkZF9uZXdfY29sdW1uX3RvX3BhdGh0YXJnZXQo dGFyZ2V0LCAoRXhwciAqKSB0dmFyKTsKKwkJCWFkZF9uZXdfY29sdW1uX3RvX3BhdGh0YXJnZXQo YWdnX2lucHV0LCAoRXhwciAqKSB0dmFyKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkg KiBXZSBtYXkgYXJyaXZlIGhlcmUgd2l0aCBhIGdyb3VwaW5nIGV4cHJlc3Npb24gdGhhdCBpcyBw cm92ZW4KKwkJCSAqIHJlZHVuZGFudCBieSBFcXVpdmFsZW5jZUNsYXNzIHByb2Nlc3NpbmcsIHN1 Y2ggYXMgJ3QxLmEnIGluIHRoZQorCQkJICogcXVlcnkgYmVsb3cuCisJCQkgKgorCQkJICogc2Vs ZWN0IG1heCh0MS5jKSBmcm9tIHQgdDEsIHQgdDIgd2hlcmUgdDEuYSA9IDEgZ3JvdXAgYnkgdDEu YSwKKwkJCSAqIHQxLmI7CisJCQkgKgorCQkJICogRm9yIG5vdyB3ZSBqdXN0IGdpdmUgdXAgaW4g dGhpcyBjYXNlLgorCQkJICovCisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwl9CisKKwlyZXR1cm4g dHJ1ZTsKK30KKworLyoKKyAqIGlzX3Zhcl9pbl9hZ2dyZWZfb25seQorICoJICBDaGVjayB3aGV0 aGVyIHRoZSBnaXZlbiBWYXIgYXBwZWFycyBpbiBhZ2dyZWdhdGUgZXhwcmVzc2lvbnMgYW5kIG5v dAorICoJICBlbHNld2hlcmUgaW4gdGhlIHRhcmdldGxpc3Qgb3IgaGF2aW5nUXVhbC4KKyAqLwor c3RhdGljIGJvb2wKK2lzX3Zhcl9pbl9hZ2dyZWZfb25seShQbGFubmVySW5mbyAqcm9vdCwgVmFy ICp2YXIpCit7CisJTGlzdENlbGwgICAqbGM7CisKKwkvKgorCSAqIFNlYXJjaCB0aGUgbGlzdCBv ZiBhZ2dyZWdhdGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBWYXIuCisJICovCisJZm9yZWFjaChsYywg cm9vdC0+YWdnX2NsYXVzZV9saXN0KQorCXsKKwkJQWdnQ2xhdXNlSW5mbyAqYWNfaW5mbyA9IGxm aXJzdF9ub2RlKEFnZ0NsYXVzZUluZm8sIGxjKTsKKwkJTGlzdAkgICAqdmFyczsKKworCQlBc3Nl cnQoSXNBKGFjX2luZm8tPmFnZ3JlZiwgQWdncmVmKSk7CisKKwkJaWYgKCFibXNfaXNfbWVtYmVy KHZhci0+dmFybm8sIGFjX2luZm8tPmFnZ19ldmFsX2F0KSkKKwkJCWNvbnRpbnVlOworCisJCXZh cnMgPSBwdWxsX3Zhcl9jbGF1c2UoKE5vZGUgKikgYWNfaW5mby0+YWdncmVmLAorCQkJCQkJCSAg IFBWQ19SRUNVUlNFX0FHR1JFR0FURVMgfAorCQkJCQkJCSAgIFBWQ19SRUNVUlNFX1dJTkRPV0ZV TkNTIHwKKwkJCQkJCQkgICBQVkNfUkVDVVJTRV9QTEFDRUhPTERFUlMpOworCisJCWlmIChsaXN0 X21lbWJlcih2YXJzLCB2YXIpKQorCQl7CisJCQlsaXN0X2ZyZWUodmFycyk7CisJCQlicmVhazsK KwkJfQorCisJCWxpc3RfZnJlZSh2YXJzKTsKKwl9CisKKwlyZXR1cm4gKGxjICE9IE5VTEwgJiYg IWxpc3RfbWVtYmVyKHJvb3QtPnRsaXN0X3ZhcnMsIHZhcikpOworfQorCisvKgorICogaXNfdmFy X25lZWRlZF9ieV9qb2luCisgKgkgIENoZWNrIGlmIHRoZSBnaXZlbiBWYXIgaXMgbmVlZGVkIGJ5 IGpvaW5zIGFib3ZlIHRoZSBjdXJyZW50IHJlbC4KKyAqLworc3RhdGljIGJvb2wKK2lzX3Zhcl9u ZWVkZWRfYnlfam9pbihQbGFubmVySW5mbyAqcm9vdCwgVmFyICp2YXIsIFJlbE9wdEluZm8gKnJl bCkKK3sKKwlSZWxpZHMJCXJlbGlkczsKKwlpbnQJCQlhdHRubzsKKwlSZWxPcHRJbmZvICpiYXNl cmVsOworCisJLyoKKwkgKiBOb3RlIHRoYXQgd2hlbiBjaGVja2luZyBpZiB0aGUgVmFyIGlzIG5l ZWRlZCBieSBqb2lucyBhYm92ZSwgd2Ugd2FudCB0bworCSAqIGV4Y2x1ZGUgY2FzZXMgd2hlcmUg dGhlIFZhciBpcyBvbmx5IG5lZWRlZCBpbiB0aGUgZmluYWwgdGFyZ2V0bGlzdC4gIFNvCisJICog aW5jbHVkZSAicmVsYXRpb24gMCIgaW4gdGhlIGNoZWNrLgorCSAqLworCXJlbGlkcyA9IGJtc19j b3B5KHJlbC0+cmVsaWRzKTsKKwlyZWxpZHMgPSBibXNfYWRkX21lbWJlcihyZWxpZHMsIDApOwor CisJYmFzZXJlbCA9IGZpbmRfYmFzZV9yZWwocm9vdCwgdmFyLT52YXJubyk7CisJYXR0bm8gPSB2 YXItPnZhcmF0dG5vIC0gYmFzZXJlbC0+bWluX2F0dHI7CisKKwlyZXR1cm4gYm1zX25vbmVtcHR5 X2RpZmZlcmVuY2UoYmFzZXJlbC0+YXR0cl9uZWVkZWRbYXR0bm9dLCByZWxpZHMpOworfQorCisv KgorICogZ2V0X2V4cHJlc3Npb25fc29ydGdyb3VwcmVmCisgKgkgIFJldHVybiB0aGUgc29ydGdy b3VwcmVmIG9mIHRoZSBnaXZlbiAiZXhwciIgaWYgaXQgaXMgZm91bmQgYW1vbmcgdGhlCisgKgkg IG9yaWdpbmFsIGdyb3VwaW5nIGV4cHJlc3Npb25zLCBvciBpcyBrbm93biBlcXVhbCB0byBhbnkg b2YgdGhlIG9yaWdpbmFsCisgKgkgIGdyb3VwaW5nIGV4cHJlc3Npb25zIGR1ZSB0byBlcXVpdmFs ZW5jZSByZWxhdGlvbnNoaXBzLiAgUmV0dXJuIDAgaWYgbm8KKyAqCSAgbWF0Y2ggaXMgZm91bmQu CisgKi8KK3N0YXRpYyBJbmRleAorZ2V0X2V4cHJlc3Npb25fc29ydGdyb3VwcmVmKFBsYW5uZXJJ bmZvICpyb290LCBFeHByICpleHByKQoreworCUxpc3RDZWxsICAgKmxjOworCisJZm9yZWFjaChs Yywgcm9vdC0+Z3JvdXBfZXhwcl9saXN0KQorCXsKKwkJR3JvdXBpbmdFeHBySW5mbyAqZ2VfaW5m byA9IGxmaXJzdF9ub2RlKEdyb3VwaW5nRXhwckluZm8sIGxjKTsKKworCQlBc3NlcnQoSXNBKGdl X2luZm8tPmV4cHIsIFZhcikpOworCisJCWlmIChlcXVhbChnZV9pbmZvLT5leHByLCBleHByKSB8 fAorCQkJZXhwcnNfa25vd25fZXF1YWwocm9vdCwgKE5vZGUgKikgZXhwciwgKE5vZGUgKikgZ2Vf aW5mby0+ZXhwciwKKwkJCQkJCQkgIGdlX2luZm8tPmJ0cmVlX29wZmFtaWx5KSkKKwkJeworCQkJ QXNzZXJ0KGdlX2luZm8tPnNvcnRncm91cHJlZiA+IDApOworCisJCQlyZXR1cm4gZ2VfaW5mby0+ c29ydGdyb3VwcmVmOworCQl9CisJfQorCisJLyogbm8gbWF0Y2ggaXMgZm91bmQgKi8KKwlyZXR1 cm4gMDsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggZjA0YmZlZGIyZmQu LjVhNmEzYjc0MDZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJs ZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtOTQ5LDYg Kzk0OSwxNiBAQCBzdHJ1Y3QgY29uZmlnX2Jvb2wgQ29uZmlndXJlTmFtZXNCb29sW10gPQogCQlm YWxzZSwKIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCisJeworCQl7ImVuYWJsZV9lYWdlcl9hZ2dy ZWdhdGUiLCBQR0NfVVNFUlNFVCwgUVVFUllfVFVOSU5HX01FVEhPRCwKKwkJCWdldHRleHRfbm9v cCgiRW5hYmxlcyBlYWdlciBhZ2dyZWdhdGlvbi4iKSwKKwkJCU5VTEwsCisJCQlHVUNfRVhQTEFJ TgorCQl9LAorCQkmZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZSwKKwkJdHJ1ZSwKKwkJTlVMTCwgTlVM TCwgTlVMTAorCX0sCiAJewogCQl7ImVuYWJsZV9wYXJhbGxlbF9hcHBlbmQiLCBQR0NfVVNFUlNF VCwgUVVFUllfVFVOSU5HX01FVEhPRCwKIAkJCWdldHRleHRfbm9vcCgiRW5hYmxlcyB0aGUgcGxh bm5lcidzIHVzZSBvZiBwYXJhbGxlbCBhcHBlbmQgcGxhbnMuIiksCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91 dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXggMzQxZjg4YWRjODcuLjAwZWFm NDg2OWUwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29u Zi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2Ft cGxlCkBAIC00MjgsNiArNDI4LDcgQEAKICNlbmFibGVfZ3JvdXBfYnlfcmVvcmRlcmluZyA9IG9u CiAjZW5hYmxlX2Rpc3RpbmN0X3Jlb3JkZXJpbmcgPSBvbgogI2VuYWJsZV9zZWxmX2pvaW5fZWxp bWluYXRpb24gPSBvbgorI2VuYWJsZV9lYWdlcl9hZ2dyZWdhdGUgPSBvbgogCiAjIC0gUGxhbm5l ciBDb3N0IENvbnN0YW50cyAtCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhu b2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKaW5kZXggNjU2Nzc1OTU5NWQu LjFiMDNiNWYwM2NmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAor KysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApAQCAtMzk0LDYgKzM5NCwxNSBAQCBz dHJ1Y3QgUGxhbm5lckluZm8KIAkvKiBsaXN0IG9mIFBsYWNlSG9sZGVySW5mb3MgKi8KIAlMaXN0 CSAgICpwbGFjZWhvbGRlcl9saXN0OwogCisJLyogbGlzdCBvZiBBZ2dDbGF1c2VJbmZvcyAqLwor CUxpc3QJICAgKmFnZ19jbGF1c2VfbGlzdDsKKworCS8qIGxpc3Qgb2YgR3JvdXBFeHBySW5mb3Mg Ki8KKwlMaXN0CSAgICpncm91cF9leHByX2xpc3Q7CisKKwkvKiBsaXN0IG9mIHBsYWluIFZhcnMg Y29udGFpbmVkIGluIHRhcmdldGxpc3QgYW5kIGhhdmluZ1F1YWwgKi8KKwlMaXN0CSAgICp0bGlz dF92YXJzOworCiAJLyogYXJyYXkgb2YgUGxhY2VIb2xkZXJJbmZvcyBpbmRleGVkIGJ5IHBoaWQg Ki8KIAlzdHJ1Y3QgUGxhY2VIb2xkZXJJbmZvICoqcGxhY2Vob2xkZXJfYXJyYXkgcGdfbm9kZV9h dHRyKHJlYWRfd3JpdGVfaWdub3JlLCBhcnJheV9zaXplKHBsYWNlaG9sZGVyX2FycmF5X3NpemUp KTsKIAkvKiBhbGxvY2F0ZWQgc2l6ZSBvZiBhcnJheSAqLwpAQCAtMTAyMiw2ICsxMDMxLDE0IEBA IHR5cGVkZWYgc3RydWN0IFJlbE9wdEluZm8KIAkvKiBjb25zaWRlciBwYXJ0aXRpb253aXNlIGpv aW4gcGF0aHM/IChpZiBwYXJ0aXRpb25lZCByZWwpICovCiAJYm9vbAkJY29uc2lkZXJfcGFydGl0 aW9ud2lzZV9qb2luOwogCisJLyoKKwkgKiB1c2VkIGJ5IGVhZ2VyIGFnZ3JlZ2F0aW9uOgorCSAq LworCS8qIGluZm9ybWF0aW9uIG5lZWRlZCB0byBjcmVhdGUgZ3JvdXBlZCBwYXRocyAqLworCXN0 cnVjdCBSZWxBZ2dJbmZvICphZ2dfaW5mbzsKKwkvKiB0aGUgcGFydGlhbGx5LWFnZ3JlZ2F0ZWQg dmVyc2lvbiBvZiB0aGUgcmVsYXRpb24gKi8KKwlzdHJ1Y3QgUmVsT3B0SW5mbyAqZ3JvdXBlZF9y ZWw7CisKIAkvKgogCSAqIGluaGVyaXRhbmNlIGxpbmtzLCBpZiB0aGlzIGlzIGFuIG90aGVycmVs IChvdGhlcndpc2UgTlVMTCk6CiAJICovCkBAIC0xMDk1LDYgKzExMTIsNzUgQEAgdHlwZWRlZiBz dHJ1Y3QgUmVsT3B0SW5mbwogCSgocmVsKS0+cGFydF9zY2hlbWUgJiYgKHJlbCktPmJvdW5kaW5m byAmJiAocmVsKS0+bnBhcnRzID4gMCAmJiBcCiAJIChyZWwpLT5wYXJ0X3JlbHMgJiYgKHJlbCkt PnBhcnRleHBycyAmJiAocmVsKS0+bnVsbGFibGVfcGFydGV4cHJzKQogCisvKgorICogSXMgdGhl IGdpdmVuIHJlbGF0aW9uIGEgZ3JvdXBlZCByZWxhdGlvbj8KKyAqLworI2RlZmluZSBJU19HUk9V UEVEX1JFTChyZWwpIFwKKwkoKHJlbCktPmFnZ19pbmZvICE9IE5VTEwpCisKKy8qCisgKiBSZWxB Z2dJbmZvCisgKgkJSW5mb3JtYXRpb24gbmVlZGVkIHRvIGNyZWF0ZSBncm91cGVkIHBhdGhzIGZv ciBiYXNlIGFuZCBqb2luIHJlbHMuCisgKgorICogInJlbGlkcyIgaXMgdGhlIHNldCBvZiByZWxh dGlvbiBpZGVudGlmaWVycyAoUlQgaW5kZXhlcykuCisgKgorICogInRhcmdldCIgaXMgdGhlIG91 dHB1dCB0bGlzdCBmb3IgdGhlIGdyb3VwZWQgcGF0aHMuCisgKgorICogImFnZ19pbnB1dCIgaXMg dGhlIG91dHB1dCB0bGlzdCBmb3IgdGhlIHBhdGhzIHRoYXQgcHJvdmlkZSBpbnB1dCB0byB0aGUK KyAqIGdyb3VwZWQgcGF0aHMuICBPbmUgZGlmZmVyZW5jZSBmcm9tIHRoZSByZWx0YXJnZXQgb2Yg dGhlIG5vbi1ncm91cGVkCisgKiByZWxhdGlvbiBpcyB0aGF0IGFnZ19pbnB1dCBoYXMgaXRzIHNv cnRncm91cHJlZnNbXSBpbml0aWFsaXplZC4KKyAqCisgKiAiZ3JvdXBlZF9yb3dzIiBpcyB0aGUg ZXN0aW1hdGVkIG51bWJlciBvZiByZXN1bHQgdHVwbGVzIG9mIHRoZSBncm91cGVkCisgKiByZWxh dGlvbi4KKyAqCisgKiAiZ3JvdXBfY2xhdXNlcyIsICJncm91cF9leHBycyIgYW5kICJncm91cF9w YXRoa2V5cyIgYXJlIGxpc3RzIG9mCisgKiBTb3J0R3JvdXBDbGF1c2VzLCB0aGUgY29ycmVzcG9u ZGluZyBncm91cGluZyBleHByZXNzaW9ucyBhbmQgUGF0aEtleXMKKyAqIHJlc3BlY3RpdmVseS4K KyAqCisgKiAiYXBwbHlfYXQiIHRyYWNrcyB0aGUgbG93ZXN0IGpvaW4gbGV2ZWwgYXQgd2hpY2gg cGFydGlhbCBhZ2dyZWdhdGlvbiBpcworICogYXBwbGllZC4KKyAqCisgKiAiYWdnX3VzZWZ1bCIg aXMgYSBmbGFnIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIGdyb3VwZWQgcGF0aHMgYXJlIGNvbnNp ZGVyZWQKKyAqIHVzZWZ1bC4gIEl0IGlzIHNldCB0cnVlIGlmIHRoZSBhdmVyYWdlIHBhcnRpYWwg Z3JvdXAgc2l6ZSBpcyBubyBsZXNzIHRoYW4KKyAqIEVBR0VSX0FHR19NSU5fR1JPVVBfU0laRSwg c3VnZ2VzdGluZyBhIHNpZ25pZmljYW50IHJvdyBjb3VudCByZWR1Y3Rpb24uCisgKi8KK3R5cGVk ZWYgc3RydWN0IFJlbEFnZ0luZm8KK3sKKwlwZ19ub2RlX2F0dHIobm9fY29weV9lcXVhbCwgbm9f cmVhZCwgbm9fcXVlcnlfanVtYmxlKQorCisJTm9kZVRhZwkJdHlwZTsKKworCS8qIHNldCBvZiBi YXNlICsgT0ogcmVsaWRzIChyYW5nZXRhYmxlIGluZGV4ZXMpICovCisJUmVsaWRzCQlyZWxpZHM7 CisKKwkvKgorCSAqIGRlZmF1bHQgcmVzdWx0IHRhcmdldGxpc3QgZm9yIFBhdGhzIHNjYW5uaW5n IHRoaXMgZ3JvdXBlZCByZWxhdGlvbjsKKwkgKiBsaXN0IG9mIFZhcnMvRXhwcnMsIGNvc3QsIHdp ZHRoCisJICovCisJc3RydWN0IFBhdGhUYXJnZXQgKnRhcmdldDsKKworCS8qCisJICogdGhlIHRh cmdldGxpc3QgZm9yIFBhdGhzIHRoYXQgcHJvdmlkZSBpbnB1dCB0byB0aGUgZ3JvdXBlZCBwYXRo cworCSAqLworCXN0cnVjdCBQYXRoVGFyZ2V0ICphZ2dfaW5wdXQ7CisKKwkvKiBlc3RpbWF0ZWQg bnVtYmVyIG9mIHJlc3VsdCB0dXBsZXMgKi8KKwlDYXJkaW5hbGl0eSBncm91cGVkX3Jvd3M7CisK KwkvKiBhIGxpc3Qgb2YgU29ydEdyb3VwQ2xhdXNlcyAqLworCUxpc3QJICAgKmdyb3VwX2NsYXVz ZXM7CisJLyogYSBsaXN0IG9mIGdyb3VwaW5nIGV4cHJlc3Npb25zICovCisJTGlzdAkgICAqZ3Jv dXBfZXhwcnM7CisJLyogYSBsaXN0IG9mIFBhdGhLZXlzICovCisJTGlzdAkgICAqZ3JvdXBfcGF0 aGtleXM7CisKKwkvKiBsb3dlc3QgbGV2ZWwgcGFydGlhbCBhZ2dyZWdhdGlvbiBpcyBhcHBsaWVk IGF0ICovCisJUmVsaWRzCQlhcHBseV9hdDsKKworCS8qIHRoZSBncm91cGVkIHBhdGhzIGFyZSBj b25zaWRlcmVkIHVzZWZ1bD8gKi8KKwlib29sCQlhZ2dfdXNlZnVsOworfSBSZWxBZ2dJbmZvOwor CiAvKgogICogSW5kZXhPcHRJbmZvCiAgKgkJUGVyLWluZGV4IGluZm9ybWF0aW9uIGZvciBwbGFu bmluZy9vcHRpbWl6YXRpb24KQEAgLTMyNzQsNiArMzM2MCw1MCBAQCB0eXBlZGVmIHN0cnVjdCBN aW5NYXhBZ2dJbmZvCiAJUGFyYW0JICAgKnBhcmFtOwogfSBNaW5NYXhBZ2dJbmZvOwogCisvKgor ICogRm9yIGVhY2ggZGlzdGluY3QgQWdncmVmIG5vZGUgdGhhdCBhcHBlYXJzIGluIHRoZSB0YXJn ZXRsaXN0IGFuZCBIQVZJTkcKKyAqIGNsYXVzZXMsIHdlIHN0b3JlIGFuIEFnZ0NsYXVzZUluZm8g bm9kZSBpbiB0aGUgUGxhbm5lckluZm8gbm9kZSdzCisgKiBhZ2dfY2xhdXNlX2xpc3QuICBFYWNo IEFnZ0NsYXVzZUluZm8gcmVjb3JkcyB0aGUgc2V0IG9mIHJlbGF0aW9ucyByZWZlcmVuY2VkCisg KiBieSB0aGUgYWdncmVnYXRlIGV4cHJlc3Npb24uICBUaGlzIGluZm9ybWF0aW9uIGlzIHVzZWQg dG8gZGV0ZXJtaW5lIGhvdyBmYXIKKyAqIHRoZSBhZ2dyZWdhdGUgY2FuIGJlIHNhZmVseSBwdXNo ZWQgZG93biBpbiB0aGUgam9pbiB0cmVlLgorICovCit0eXBlZGVmIHN0cnVjdCBBZ2dDbGF1c2VJ bmZvCit7CisJcGdfbm9kZV9hdHRyKG5vX3JlYWQsIG5vX3F1ZXJ5X2p1bWJsZSkKKworCU5vZGVU YWcJCXR5cGU7CisKKwkvKiB0aGUgQWdncmVmIGV4cHIgKi8KKwlBZ2dyZWYJICAgKmFnZ3JlZjsK KworCS8qIGxvd2VzdCBsZXZlbCB3ZSBjYW4gZXZhbHVhdGUgdGhpcyBhZ2dyZWdhdGUgYXQgKi8K KwlSZWxpZHMJCWFnZ19ldmFsX2F0OworfSBBZ2dDbGF1c2VJbmZvOworCisvKgorICogRm9yIGVh Y2ggZ3JvdXBpbmcgZXhwcmVzc2lvbiB0aGF0IGFwcGVhcnMgaW4gZ3JvdXBpbmcgY2xhdXNlcywg d2Ugc3RvcmUgYQorICogR3JvdXBpbmdFeHBySW5mbyBub2RlIGluIHRoZSBQbGFubmVySW5mbyBu b2RlJ3MgZ3JvdXBfZXhwcl9saXN0LiAgRWFjaAorICogR3JvdXBpbmdFeHBySW5mbyByZWNvcmRz IHRoZSBleHByZXNzaW9uIGJlaW5nIGdyb3VwZWQgb24sIGl0cyBzb3J0Z3JvdXByZWYsCisgKiBh bmQgdGhlIGJ0cmVlIG9wZmFtaWx5IHVzZWQgZm9yIGVxdWFsaXR5IGNvbXBhcmlzb24uICBUaGlz IGluZm9ybWF0aW9uIGlzCisgKiBuZWNlc3NhcnkgdG8gcmVwcm9kdWNlIGNvcnJlY3QgZ3JvdXBp bmcgc2VtYW50aWNzIGF0IGRpZmZlcmVudCBsZXZlbHMgb2YgdGhlCisgKiBqb2luIHRyZWUuCisg Ki8KK3R5cGVkZWYgc3RydWN0IEdyb3VwaW5nRXhwckluZm8KK3sKKwlwZ19ub2RlX2F0dHIobm9f cmVhZCwgbm9fcXVlcnlfanVtYmxlKQorCisJTm9kZVRhZwkJdHlwZTsKKworCS8qIHRoZSByZXBy ZXNlbnRlZCBleHByZXNzaW9uICovCisJRXhwcgkgICAqZXhwcjsKKworCS8qIHRoZSB0bGVTb3J0 R3JvdXBSZWYgb2YgdGhlIGNvcnJlc3BvbmRpbmcgU29ydEdyb3VwQ2xhdXNlICovCisJSW5kZXgJ CXNvcnRncm91cHJlZjsKKworCS8qIGJ0cmVlIG9wZmFtaWx5IGRlZmluaW5nIHRoZSBvcmRlcmlu ZyAqLworCU9pZAkJCWJ0cmVlX29wZmFtaWx5OworfSBHcm91cGluZ0V4cHJJbmZvOworCiAvKgog ICogQXQgcnVudGltZSwgUEFSQU1fRVhFQyBzbG90cyBhcmUgdXNlZCB0byBwYXNzIHZhbHVlcyBh cm91bmQgZnJvbSBvbmUgcGxhbgogICogbm9kZSB0byBhbm90aGVyLiAgVGhleSBjYW4gYmUgdXNl ZCB0byBwYXNzIHZhbHVlcyBkb3duIGludG8gc3VicXVlcmllcyAoZm9yCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9w YXRobm9kZS5oCmluZGV4IDYwZGNkYjc3ZTQxLi4wMWEzNTMyZGMyZSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVy L3BhdGhub2RlLmgKQEAgLTMxNCw2ICszMTQsMTAgQEAgZXh0ZXJuIHZvaWQgc2V0dXBfc2ltcGxl X3JlbF9hcnJheXMoUGxhbm5lckluZm8gKnJvb3QpOwogZXh0ZXJuIHZvaWQgZXhwYW5kX3BsYW5u ZXJfYXJyYXlzKFBsYW5uZXJJbmZvICpyb290LCBpbnQgYWRkX3NpemUpOwogZXh0ZXJuIFJlbE9w dEluZm8gKmJ1aWxkX3NpbXBsZV9yZWwoUGxhbm5lckluZm8gKnJvb3QsIGludCByZWxpZCwKIAkJ CQkJCQkJCVJlbE9wdEluZm8gKnBhcmVudCk7CitleHRlcm4gUmVsT3B0SW5mbyAqYnVpbGRfc2lt cGxlX2dyb3VwZWRfcmVsKFBsYW5uZXJJbmZvICpyb290LAorCQkJCQkJCQkJCQlSZWxPcHRJbmZv ICpyZWxfcGxhaW4pOworZXh0ZXJuIFJlbE9wdEluZm8gKmJ1aWxkX2dyb3VwZWRfcmVsKFBsYW5u ZXJJbmZvICpyb290LAorCQkJCQkJCQkJIFJlbE9wdEluZm8gKnJlbF9wbGFpbik7CiBleHRlcm4g UmVsT3B0SW5mbyAqZmluZF9iYXNlX3JlbChQbGFubmVySW5mbyAqcm9vdCwgaW50IHJlbGlkKTsK IGV4dGVybiBSZWxPcHRJbmZvICpmaW5kX2Jhc2VfcmVsX25vZXJyKFBsYW5uZXJJbmZvICpyb290 LCBpbnQgcmVsaWQpOwogZXh0ZXJuIFJlbE9wdEluZm8gKmZpbmRfYmFzZV9yZWxfaWdub3JlX2pv aW4oUGxhbm5lckluZm8gKnJvb3QsIGludCByZWxpZCk7CkBAIC0zNTMsNCArMzU3LDUgQEAgZXh0 ZXJuIFJlbE9wdEluZm8gKmJ1aWxkX2NoaWxkX2pvaW5fcmVsKFBsYW5uZXJJbmZvICpyb290LAog CQkJCQkJCQkJCVNwZWNpYWxKb2luSW5mbyAqc2ppbmZvLAogCQkJCQkJCQkJCWludCBuYXBwaW5m b3MsIEFwcGVuZFJlbEluZm8gKiphcHBpbmZvcyk7CiAKK2V4dGVybiBSZWxBZ2dJbmZvICpjcmVh dGVfcmVsX2FnZ19pbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwpOwogI2Vu ZGlmCQkJCQkJCS8qIFBBVEhOT0RFX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGlt aXplci9wYXRocy5oIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmgKaW5kZXggODQxMDUz MWYyZDYuLmI2MmYyMjIzN2I3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0 aHMuaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaApAQCAtMjEsNiArMjEsNyBA QAogICogYWxscGF0aHMuYwogICovCiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBlbmFibGVfZ2Vx bzsKK2V4dGVybiBQR0RMTElNUE9SVCBib29sIGVuYWJsZV9lYWdlcl9hZ2dyZWdhdGU7CiBleHRl cm4gUEdETExJTVBPUlQgaW50IGdlcW9fdGhyZXNob2xkOwogZXh0ZXJuIFBHRExMSU1QT1JUIGlu dCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBt aW5fcGFyYWxsZWxfaW5kZXhfc2Nhbl9zaXplOwpAQCAtNTcsNiArNTgsMTAgQEAgZXh0ZXJuIHZv aWQgZ2VuZXJhdGVfZ2F0aGVyX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpy ZWwsCiAJCQkJCQkJCSAgYm9vbCBvdmVycmlkZV9yb3dzKTsKIGV4dGVybiB2b2lkIGdlbmVyYXRl X3VzZWZ1bF9nYXRoZXJfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwK IAkJCQkJCQkJCQkgYm9vbCBvdmVycmlkZV9yb3dzKTsKK2V4dGVybiB2b2lkIGdlbmVyYXRlX2dy b3VwZWRfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsCisJCQkJCQkJCSAgIFJlbE9wdEluZm8gKnJl bF9ncm91cGVkLAorCQkJCQkJCQkgICBSZWxPcHRJbmZvICpyZWxfcGxhaW4sCisJCQkJCQkJCSAg IFJlbEFnZ0luZm8gKmFnZ19pbmZvKTsKIGV4dGVybiBpbnQJY29tcHV0ZV9wYXJhbGxlbF93b3Jr ZXIoUmVsT3B0SW5mbyAqcmVsLCBkb3VibGUgaGVhcF9wYWdlcywKIAkJCQkJCQkJCWRvdWJsZSBp bmRleF9wYWdlcywgaW50IG1heF93b3JrZXJzKTsKIGV4dGVybiB2b2lkIGNyZWF0ZV9wYXJ0aWFs X2JpdG1hcF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BsYW5tYWluLmggYi9zcmMvaW5jbHVkZS9vcHRp bWl6ZXIvcGxhbm1haW4uaAppbmRleCA5ZDNkZWJjYWIyOC4uMDliNDhiMjZmOGYgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wbGFubWFpbi5oCisrKyBiL3NyYy9pbmNsdWRlL29w dGltaXplci9wbGFubWFpbi5oCkBAIC03Niw2ICs3Niw3IEBAIGV4dGVybiB2b2lkIGFkZF92YXJz X3RvX3RhcmdldGxpc3QoUGxhbm5lckluZm8gKnJvb3QsIExpc3QgKnZhcnMsCiBleHRlcm4gdm9p ZCBhZGRfdmFyc190b19hdHRyX25lZWRlZChQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAqdmFycywK IAkJCQkJCQkJCVJlbGlkcyB3aGVyZV9uZWVkZWQpOwogZXh0ZXJuIHZvaWQgcmVtb3ZlX3VzZWxl c3NfZ3JvdXBieV9jb2x1bW5zKFBsYW5uZXJJbmZvICpyb290KTsKK2V4dGVybiB2b2lkIHNldHVw X2VhZ2VyX2FnZ3JlZ2F0aW9uKFBsYW5uZXJJbmZvICpyb290KTsKIGV4dGVybiB2b2lkIGZpbmRf bGF0ZXJhbF9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290KTsKIGV4dGVybiB2b2lkIHJlYnVp bGRfbGF0ZXJhbF9hdHRyX25lZWRlZChQbGFubmVySW5mbyAqcm9vdCk7CiBleHRlcm4gdm9pZCBj cmVhdGVfbGF0ZXJhbF9qb2luX2luZm8oUGxhbm5lckluZm8gKnJvb3QpOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9lYWdlcl9hZ2dyZWdhdGUub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9lYWdlcl9hZ2dyZWdhdGUub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi5mMDJmZjBiMzBhMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZWFnZXJfYWdncmVnYXRlLm91dApAQCAtMCwwICsxLDEzMzQg QEAKKy0tCistLSBFQUdFUiBBR0dSRUdBVElPTgorLS0gVGVzdCB3ZSBjYW4gcHVzaCBhZ2dyZWdh dGlvbiBkb3duIGJlbG93IGpvaW4KKy0tCistLSBFbmFibGUgZWFnZXIgYWdncmVnYXRpb24sIHdo aWNoIGJ5IGRlZmF1bHQgaXMgZGlzYWJsZWQuCitTRVQgZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZSBU TyBvbjsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdDEgKGEgaW50LCBiIGludCwgYyBkb3VibGUg cHJlY2lzaW9uKTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdDIgKGEgaW50LCBiIGludCwgYyBk b3VibGUgcHJlY2lzaW9uKTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdDMgKGEgaW50LCBiIGlu dCwgYyBkb3VibGUgcHJlY2lzaW9uKTsKK0lOU0VSVCBJTlRPIGVhZ2VyX2FnZ190MSBTRUxFQ1Qg aSwgaSwgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKWk7CitJTlNFUlQgSU5UTyBlYWdl cl9hZ2dfdDIgU0VMRUNUIGksIGklMTAsIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMClp OworSU5TRVJUIElOVE8gZWFnZXJfYWdnX3QzIFNFTEVDVCBpJTEwLCBpJTEwLCBpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDEwMDApaTsKK0FOQUxZWkUgZWFnZXJfYWdnX3QxOworQU5BTFlaRSBl YWdlcl9hZ2dfdDI7CitBTkFMWVpFIGVhZ2VyX2FnZ190MzsKKy0tCistLSBUZXN0IGVhZ2VyIGFn Z3JlZ2F0aW9uIG92ZXIgYmFzZSByZWwKKy0tCistLSBQZXJmb3JtIHNjYW4gb2YgYSB0YWJsZSwg YWdncmVnYXRlIHRoZSByZXN1bHQsIGpvaW4gaXQgdG8gdGhlIG90aGVyIHRhYmxlCistLSBhbmQg ZmluYWxpemUgdGhlIGFnZ3JlZ2F0aW9uLgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQor U0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2Fn Z190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEdyb3VwQWdncmVnYXRlCisgICBPdXRwdXQ6IHQx LmEsIGF2Zyh0Mi5jKQorICAgR3JvdXAgS2V5OiB0MS5hCisgICAtPiAgU29ydAorICAgICAgICAg T3V0cHV0OiB0MS5hLCAoUEFSVElBTCBhdmcodDIuYykpCisgICAgICAgICBTb3J0IEtleTogdDEu YQorICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCAo UEFSVElBTCBhdmcodDIuYykpCisgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MS5iID0gdDIu YikKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QxIHQx CisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIHQxLmIsIHQxLmMKKyAgICAgICAg ICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIChQQVJU SUFMIGF2Zyh0Mi5jKSkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dy ZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgUEFSVElBTCBh dmcodDIuYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDIuYgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2df dDIgdDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYSwgdDIu YiwgdDIuYworKDE4IHJvd3MpCisKK1NFTEVDVCB0MS5hLCBhdmcodDIuYykgRlJPTSBlYWdlcl9h Z2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEu YSBPUkRFUiBCWSB0MS5hOworIGEgfCBhdmcgCistLS0rLS0tLS0KKyAxIHwgNDk2CisgMiB8IDQ5 NworIDMgfCA0OTgKKyA0IHwgNDk5CisgNSB8IDUwMAorIDYgfCA1MDEKKyA3IHwgNTAyCisgOCB8 IDUwMworIDkgfCA1MDQKKyg5IHJvd3MpCisKKy0tIFByb2R1Y2UgcmVzdWx0cyB3aXRoIHNvcnRp bmcgYWdncmVnYXRpb24KK1NFVCBlbmFibGVfaGFzaGFnZyBUTyBvZmY7CitFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3Qx IHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEgT1JE RVIgQlkgdDEuYTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUg R3JvdXBBZ2dyZWdhdGUKKyAgIE91dHB1dDogdDEuYSwgYXZnKHQyLmMpCisgICBHcm91cCBLZXk6 IHQxLmEKKyAgIC0+ICBTb3J0CisgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2Zyh0 Mi5jKSkKKyAgICAgICAgIFNvcnQgS2V5OiB0MS5hCisgICAgICAgICAtPiAgSGFzaCBKb2luCisg ICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2Zyh0Mi5jKSkKKyAgICAgICAg ICAgICAgIEhhc2ggQ29uZDogKHQxLmIgPSB0Mi5iKQorICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDEgdDEKKyAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDEuYSwgdDEuYiwgdDEuYworICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDIuYiwgKFBBUlRJQUwgYXZnKHQyLmMpKQorICAgICAgICAgICAg ICAgICAgICAgLT4gIFBhcnRpYWwgR3JvdXBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDIuYiwgUEFSVElBTCBhdmcodDIuYykKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdyb3VwIEtleTogdDIuYgorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFNvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYywgdDIu YgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQyLmIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJf YWdnX3QyIHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQyLmMsIHQyLmIKKygyMSByb3dzKQorCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFn ZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZ IHQxLmEgT1JERVIgQlkgdDEuYTsKKyBhIHwgYXZnIAorLS0tKy0tLS0tCisgMSB8IDQ5NgorIDIg fCA0OTcKKyAzIHwgNDk4CisgNCB8IDQ5OQorIDUgfCA1MDAKKyA2IHwgNTAxCisgNyB8IDUwMgor IDggfCA1MDMKKyA5IHwgNTA0CisoOSByb3dzKQorCitSRVNFVCBlbmFibGVfaGFzaGFnZzsKKy0t CistLSBUZXN0IGVhZ2VyIGFnZ3JlZ2F0aW9uIG92ZXIgam9pbiByZWwKKy0tCistLSBQZXJmb3Jt IGpvaW4gb2YgdGFibGVzLCBhZ2dyZWdhdGUgdGhlIHJlc3VsdCwgam9pbiBpdCB0byB0aGUgb3Ro ZXIgdGFibGUKKy0tIGFuZCBmaW5hbGl6ZSB0aGUgYWdncmVnYXRpb24uCitFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMgKyB0My5jKSBGUk9NIGVhZ2Vy X2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBKT0lOIGVhZ2Vy X2FnZ190MyB0MyBPTiB0Mi5hID0gdDMuYSBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEdy b3VwQWdncmVnYXRlCisgICBPdXRwdXQ6IHQxLmEsIGF2ZygodDIuYyArIHQzLmMpKQorICAgR3Jv dXAgS2V5OiB0MS5hCisgICAtPiAgU29ydAorICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElB TCBhdmcoKHQyLmMgKyB0My5jKSkpCisgICAgICAgICBTb3J0IEtleTogdDEuYQorICAgICAgICAg LT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElBTCBhdmco KHQyLmMgKyB0My5jKSkpCisgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MS5iID0gdDIuYikK KyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QxIHQxCisg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIHQxLmIsIHQxLmMKKyAgICAgICAgICAg ICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIChQQVJUSUFM IGF2ZygodDIuYyArIHQzLmMpKSkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhh c2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgUEFS VElBTCBhdmcoKHQyLmMgKyB0My5jKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3Vw IEtleTogdDIuYgorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5jLCB0Mi5iLCB0My5jCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0My5hID0gdDIuYSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMu ZWFnZXJfYWdnX3QzIHQzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQzLmEsIHQzLmIsIHQzLmMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQyLmMsIHQyLmIsIHQyLmEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QyIHQyCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmMsIHQyLmIsIHQyLmEKKygy NSByb3dzKQorCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMgKyB0My5jKSBGUk9NIGVhZ2VyX2FnZ190 MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBKT0lOIGVhZ2VyX2FnZ190 MyB0MyBPTiB0Mi5hID0gdDMuYSBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisgYSB8IGF2 ZyAKKy0tLSstLS0tLQorIDEgfCA0OTcKKyAyIHwgNDk5CisgMyB8IDUwMQorIDQgfCA1MDMKKyA1 IHwgNTA1CisgNiB8IDUwNworIDcgfCA1MDkKKyA4IHwgNTExCisgOSB8IDUxMworKDkgcm93cykK KworLS0gUHJvZHVjZSByZXN1bHRzIHdpdGggc29ydGluZyBhZ2dyZWdhdGlvbgorU0VUIGVuYWJs ZV9oYXNoYWdnIFRPIG9mZjsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0 MS5hLCBhdmcodDIuYyArIHQzLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdn X3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEpPSU4gZWFnZXJfYWdnX3QzIHQzIE9OIHQyLmEgPSB0My5h IEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgR3JvdXBBZ2dyZWdhdGUK KyAgIE91dHB1dDogdDEuYSwgYXZnKCh0Mi5jICsgdDMuYykpCisgICBHcm91cCBLZXk6IHQxLmEK KyAgIC0+ICBTb3J0CisgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2ZygodDIuYyAr IHQzLmMpKSkKKyAgICAgICAgIFNvcnQgS2V5OiB0MS5hCisgICAgICAgICAtPiAgSGFzaCBKb2lu CisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2ZygodDIuYyArIHQzLmMp KSkKKyAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLmIgPSB0Mi5iKQorICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDEgdDEKKyAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDEuYSwgdDEuYiwgdDEuYworICAgICAgICAgICAgICAgLT4gIEhhc2gK KyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgKFBBUlRJQUwgYXZnKCh0Mi5jICsg dDMuYykpKQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgR3JvdXBBZ2dyZWdhdGUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgUEFSVElBTCBhdmcoKHQy LmMgKyB0My5jKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDIuYgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDIuYywgdDIuYiwgdDMuYworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgU29ydCBLZXk6IHQyLmIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDIuYywgdDIuYiwgdDMuYworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSGFzaCBDb25kOiAodDMuYSA9IHQyLmEpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MyB0 MworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 My5hLCB0My5iLCB0My5jCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Mi5jLCB0Mi5iLCB0Mi5hCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MiB0MgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5j LCB0Mi5iLCB0Mi5hCisoMjggcm93cykKKworU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jICsgdDMuYykg RlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIg Sk9JTiBlYWdlcl9hZ2dfdDMgdDMgT04gdDIuYSA9IHQzLmEgR1JPVVAgQlkgdDEuYSBPUkRFUiBC WSB0MS5hOworIGEgfCBhdmcgCistLS0rLS0tLS0KKyAxIHwgNDk3CisgMiB8IDQ5OQorIDMgfCA1 MDEKKyA0IHwgNTAzCisgNSB8IDUwNQorIDYgfCA1MDcKKyA3IHwgNTA5CisgOCB8IDUxMQorIDkg fCA1MTMKKyg5IHJvd3MpCisKK1JFU0VUIGVuYWJsZV9oYXNoYWdnOworLS0KKy0tIFRlc3QgdGhh dCBlYWdlciBhZ2dyZWdhdGlvbiB3b3JrcyBmb3Igb3V0ZXIgam9pbgorLS0KKy0tIEVuc3VyZSBh Z2dyZWdhdGlvbiBjYW4gYmUgcHVzaGVkIGRvd24gdG8gdGhlIG5vbi1udWxsYWJsZSBzaWRlCitF WFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00g ZWFnZXJfYWdnX3QxIHQxIFJJR0hUIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5i IEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmlu YWxpemUgR3JvdXBBZ2dyZWdhdGUKKyAgIE91dHB1dDogdDEuYSwgYXZnKHQyLmMpCisgICBHcm91 cCBLZXk6IHQxLmEKKyAgIC0+ICBTb3J0CisgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFM IGF2Zyh0Mi5jKSkKKyAgICAgICAgIFNvcnQgS2V5OiB0MS5hCisgICAgICAgICAtPiAgSGFzaCBS aWdodCBKb2luCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2Zyh0Mi5j KSkKKyAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLmIgPSB0Mi5iKQorICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDEgdDEKKyAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDEuYSwgdDEuYiwgdDEuYworICAgICAgICAgICAgICAgLT4gIEhhc2gK KyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgKFBBUlRJQUwgYXZnKHQyLmMpKQor ICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCBQQVJUSUFMIGF2Zyh0Mi5jKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Mi5iCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MiB0MgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5hLCB0Mi5iLCB0Mi5jCisoMTggcm93 cykKKworU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBSSUdIVCBK T0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZ IHQxLmE7CisgYSB8IGF2ZyAKKy0tLSstLS0tLQorIDEgfCA0OTYKKyAyIHwgNDk3CisgMyB8IDQ5 OAorIDQgfCA0OTkKKyA1IHwgNTAwCisgNiB8IDUwMQorIDcgfCA1MDIKKyA4IHwgNTAzCisgOSB8 IDUwNAorICAgfCA1MDUKKygxMCByb3dzKQorCistLSBFbnN1cmUgYWdncmVnYXRpb24gY2Fubm90 IGJlIHB1c2hlZCBkb3duIHRvIHRoZSBudWxsYWJsZSBzaWRlCitFWFBMQUlOIChWRVJCT1NFLCBD T1NUUyBPRkYpCitTRUxFQ1QgdDIuYiwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIExF RlQgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDIuYiBPUkRF UiBCWSB0Mi5iOworICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTb3J0CisgICBPdXRwdXQ6IHQyLmIsIChhdmcodDIuYykp CisgICBTb3J0IEtleTogdDIuYgorICAgLT4gIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgIE91dHB1 dDogdDIuYiwgYXZnKHQyLmMpCisgICAgICAgICBHcm91cCBLZXk6IHQyLmIKKyAgICAgICAgIC0+ ICBIYXNoIFJpZ2h0IEpvaW4KKyAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgdDIuYworICAg ICAgICAgICAgICAgSGFzaCBDb25kOiAodDIuYiA9IHQxLmIpCisgICAgICAgICAgICAgICAtPiAg U2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MiB0MgorICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0Mi5hLCB0Mi5iLCB0Mi5jCisgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5iCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MSB0MQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0MS5iCisoMTUgcm93cykKKworU0VMRUNUIHQyLmIsIGF2Zyh0Mi5jKSBGUk9N IGVhZ2VyX2FnZ190MSB0MSBMRUZUIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5i IEdST1VQIEJZIHQyLmIgT1JERVIgQlkgdDIuYjsKKyBiIHwgYXZnIAorLS0tKy0tLS0tCisgMSB8 IDQ5NgorIDIgfCA0OTcKKyAzIHwgNDk4CisgNCB8IDQ5OQorIDUgfCA1MDAKKyA2IHwgNTAxCisg NyB8IDUwMgorIDggfCA1MDMKKyA5IHwgNTA0CisgICB8ICAgIAorKDEwIHJvd3MpCisKKy0tCist LSBUZXN0IHRoYXQgZWFnZXIgYWdncmVnYXRpb24gd29ya3MgZm9yIHBhcmFsbGVsIHBsYW5zCist LQorU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3Q9MDsKK1NFVCBwYXJhbGxlbF90dXBsZV9jb3N0PTA7 CitTRVQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZT0wOworU0VUIG1heF9wYXJhbGxlbF93 b3JrZXJzX3Blcl9nYXRoZXI9NDsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVD VCB0MS5hLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIg dDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5hbGl6ZSBHcm91 cEFnZ3JlZ2F0ZQorICAgT3V0cHV0OiB0MS5hLCBhdmcodDIuYykKKyAgIEdyb3VwIEtleTogdDEu YQorICAgLT4gIEdhdGhlciBNZXJnZQorICAgICAgICAgT3V0cHV0OiB0MS5hLCAoUEFSVElBTCBh dmcodDIuYykpCisgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBTb3J0 CisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2Zyh0Mi5jKSkKKyAgICAg ICAgICAgICAgIFNvcnQgS2V5OiB0MS5hCisgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFz aCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2Zyh0 Mi5jKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLmIgPSB0Mi5iKQorICAg ICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9h Z2dfdDEgdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgdDEuYiwg dDEuYworICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2gKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDIuYiwgKFBBUlRJQUwgYXZnKHQyLmMpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCBQQVJUSUFMIGF2Zyh0Mi5jKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Mi5iCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gcHVibGlj LmVhZ2VyX2FnZ190MiB0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0Mi5hLCB0Mi5iLCB0Mi5jCisoMjEgcm93cykKKworU0VMRUNUIHQxLmEsIGF2Zyh0 Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0g dDIuYiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisgYSB8IGF2ZyAKKy0tLSstLS0tLQor IDEgfCA0OTYKKyAyIHwgNDk3CisgMyB8IDQ5OAorIDQgfCA0OTkKKyA1IHwgNTAwCisgNiB8IDUw MQorIDcgfCA1MDIKKyA4IHwgNTAzCisgOSB8IDUwNAorKDkgcm93cykKKworUkVTRVQgcGFyYWxs ZWxfc2V0dXBfY29zdDsKK1JFU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3Q7CitSRVNFVCBtaW5fcGFy YWxsZWxfdGFibGVfc2Nhbl9zaXplOworUkVTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dh dGhlcjsKK0RST1AgVEFCTEUgZWFnZXJfYWdnX3QxOworRFJPUCBUQUJMRSBlYWdlcl9hZ2dfdDI7 CitEUk9QIFRBQkxFIGVhZ2VyX2FnZ190MzsKKy0tCistLSBUZXN0IGVhZ2VyIGFnZ3JlZ2F0aW9u IGZvciBwYXJ0aXRpb253aXNlIGpvaW4KKy0tCistLSBFbmFibGUgcGFydGl0aW9ud2lzZSBhZ2dy ZWdhdGUsIHdoaWNoIGJ5IGRlZmF1bHQgaXMgZGlzYWJsZWQuCitTRVQgZW5hYmxlX3BhcnRpdGlv bndpc2VfYWdncmVnYXRlIFRPIHRydWU7CistLSBFbmFibGUgcGFydGl0aW9ud2lzZSBqb2luLCB3 aGljaCBieSBkZWZhdWx0IGlzIGRpc2FibGVkLgorU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2pv aW4gVE8gdHJ1ZTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMSh4IGludCwgeSBpbnQpIFBB UlRJVElPTiBCWSBSQU5HRSh4KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMV9wMSBQQVJU SVRJT04gT0YgZWFnZXJfYWdnX3RhYjEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoNSk7CitDUkVB VEUgVEFCTEUgZWFnZXJfYWdnX3RhYjFfcDIgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWIxIEZP UiBWQUxVRVMgRlJPTSAoNSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMV9w MyBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYjEgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1 KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMih4IGludCwgeSBpbnQpIFBBUlRJVElPTiBC WSBSQU5HRSh5KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMl9wMSBQQVJUSVRJT04gT0Yg ZWFnZXJfYWdnX3RhYjIgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoNSk7CitDUkVBVEUgVEFCTEUg ZWFnZXJfYWdnX3RhYjJfcDIgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWIyIEZPUiBWQUxVRVMg RlJPTSAoNSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMl9wMyBQQVJUSVRJ T04gT0YgZWFnZXJfYWdnX3RhYjIgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KTsKK0lOU0VS VCBJTlRPIGVhZ2VyX2FnZ190YWIxIFNFTEVDVCBpICUgMTUsIGkgJSAxMCBGUk9NIGdlbmVyYXRl X3NlcmllcygxLCAxMDAwKSBpOworSU5TRVJUIElOVE8gZWFnZXJfYWdnX3RhYjIgU0VMRUNUIGkg JSAxMCwgaSAlIDE1IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIGk7CitBTkFMWVpFIGVh Z2VyX2FnZ190YWIxOworQU5BTFlaRSBlYWdlcl9hZ2dfdGFiMjsKKy0tIFdoZW4gR1JPVVAgQlkg Y2xhdXNlIG1hdGNoZXM7IGZ1bGwgYWdncmVnYXRpb24gaXMgcGVyZm9ybWVkIGZvciBlYWNoIHBh cnRpdGlvbi4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS54LCBzdW0o dDEueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYjEgdDEsIGVhZ2VyX2FnZ190YWIyIHQy IFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg U29ydAorICAgT3V0cHV0OiB0MS54LCAoc3VtKHQxLnkpKSwgKGNvdW50KCopKQorICAgU29ydCBL ZXk6IHQxLngKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVn YXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIHN1bSh0MS55KSwgY291bnQoKikKKyAg ICAgICAgICAgICAgIEdyb3VwIEtleTogdDEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9p bgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCAoUEFSVElBTCBzdW0odDEueSkp LCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQy LnkgPSB0MS54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5l YWdlcl9hZ2dfdGFiMl9wMSB0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 Mi55CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0MS54LCAoUEFSVElBTCBzdW0odDEueSkpLCAoUEFSVElBTCBjb3VudCgq KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueCwgUEFSVElBTCBz dW0odDEueSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdyb3VwIEtleTogdDEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMSB0MQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCB0MS55CisgICAgICAgICAtPiAg RmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIHN1 bSh0MV8xLnkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8xLngKKyAg ICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDFfMS54LCAoUEFSVElBTCBzdW0odDFfMS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAg ICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMS55ID0gdDFfMS54KQorICAgICAgICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMl9wMiB0Ml8xCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueQorICAgICAgICAgICAgICAg ICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54 LCAoUEFSVElBTCBzdW0odDFfMS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIFBBUlRJQUwgc3VtKHQxXzEueSksIFBB UlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtl eTogdDFfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AyIHQxXzEKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54LCB0MV8xLnkKKyAgICAgICAgIC0+ICBGaW5h bGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgc3VtKHQx XzIueSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzIueAorICAgICAg ICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8y LngsIChQQVJUSUFMIHN1bSh0MV8yLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAg ICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8yLnkgPSB0MV8yLngpCisgICAgICAgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIyX3AzIHQyXzIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi55CisgICAgICAgICAgICAgICAgICAg ICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngsIChQ QVJUSUFMIHN1bSh0MV8yLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgUEFSVElBTCBzdW0odDFfMi55KSwgUEFSVElB TCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0 MV8yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw dWJsaWMuZWFnZXJfYWdnX3RhYjFfcDMgdDFfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngsIHQxXzIueQorKDQ5IHJvd3MpCisKK1NFTEVDVCB0 MS54LCBzdW0odDEueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYjEgdDEsIGVhZ2VyX2Fn Z190YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsK KyB4ICB8ICBzdW0gIHwgY291bnQgCistLS0tKy0tLS0tLS0rLS0tLS0tLQorICAwIHwgMTA4OTAg fCAgNDM1NgorICAxIHwgMTU1NDQgfCAgNDQ4OQorICAyIHwgMjAwMzMgfCAgNDQ4OQorICAzIHwg MjQ1MjIgfCAgNDQ4OQorICA0IHwgMjkwMTEgfCAgNDQ4OQorICA1IHwgMTEzOTAgfCAgNDQ4OQor ICA2IHwgMTU4NzkgfCAgNDQ4OQorICA3IHwgMjAzNjggfCAgNDQ4OQorICA4IHwgMjQ4NTcgfCAg NDQ4OQorICA5IHwgMjkzNDYgfCAgNDQ4OQorIDEwIHwgMTEwNTUgfCAgNDQ4OQorIDExIHwgMTUy NDYgfCAgNDM1NgorIDEyIHwgMTk2MDIgfCAgNDM1NgorIDEzIHwgMjM5NTggfCAgNDM1NgorIDE0 IHwgMjgzMTQgfCAgNDM1NgorKDE1IHJvd3MpCisKKy0tIEdST1VQIEJZIGhhdmluZyBvdGhlciBt YXRjaGluZyBrZXkKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0Mi55LCBz dW0odDEueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYjEgdDEsIGVhZ2VyX2FnZ190YWIy IHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQyLnkgT1JERVIgQlkgdDIueTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgU29ydAorICAgT3V0cHV0OiB0Mi55LCAoc3VtKHQxLnkpKSwgKGNvdW50KCopKQorICAgU29y dCBLZXk6IHQyLnkKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdn cmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnksIHN1bSh0MS55KSwgY291bnQoKikK KyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDIueQorICAgICAgICAgICAgICAgLT4gIEhhc2gg Sm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi55LCAoUEFSVElBTCBzdW0odDEu eSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDog KHQyLnkgPSB0MS54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1Ymxp Yy5lYWdlcl9hZ2dfdGFiMl9wMSB0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0Mi55CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0MS54LCAoUEFSVElBTCBzdW0odDEueSkpLCAoUEFSVElBTCBjb3Vu dCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdh dGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueCwgUEFSVElB TCBzdW0odDEueSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdyb3VwIEtleTogdDEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMSB0MQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS55LCB0MS54CisgICAgICAgICAt PiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLnks IHN1bSh0MV8xLnkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8xLnkK KyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDJfMS55LCAoUEFSVElBTCBzdW0odDFfMS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAg ICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMS55ID0gdDFfMS54KQorICAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMl9wMiB0Ml8x CisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueQorICAgICAgICAgICAg ICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFf MS54LCAoUEFSVElBTCBzdW0odDFfMS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIFBBUlRJQUwgc3VtKHQxXzEueSks IFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3Vw IEtleTogdDFfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AyIHQxXzEKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS55LCB0MV8xLngKKyAgICAgICAgIC0+ICBG aW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueSwgc3Vt KHQxXzIueSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzIueQorICAg ICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 Ml8yLnksIChQQVJUSUFMIHN1bSh0MV8yLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAg ICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8yLnkgPSB0MV8yLngpCisgICAgICAgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIyX3AzIHQyXzIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi55CisgICAgICAgICAgICAgICAg ICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngs IChQQVJUSUFMIHN1bSh0MV8yLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgUEFSVElBTCBzdW0odDFfMi55KSwgUEFS VElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5 OiB0MV8yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDMgdDFfMgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLnksIHQxXzIueAorKDQ5IHJvd3MpCisKK1NFTEVD VCB0Mi55LCBzdW0odDEueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYjEgdDEsIGVhZ2Vy X2FnZ190YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQyLnkgT1JERVIgQlkgdDIu eTsKKyB5ICB8ICBzdW0gIHwgY291bnQgCistLS0tKy0tLS0tLS0rLS0tLS0tLQorICAwIHwgMTA4 OTAgfCAgNDM1NgorICAxIHwgMTU1NDQgfCAgNDQ4OQorICAyIHwgMjAwMzMgfCAgNDQ4OQorICAz IHwgMjQ1MjIgfCAgNDQ4OQorICA0IHwgMjkwMTEgfCAgNDQ4OQorICA1IHwgMTEzOTAgfCAgNDQ4 OQorICA2IHwgMTU4NzkgfCAgNDQ4OQorICA3IHwgMjAzNjggfCAgNDQ4OQorICA4IHwgMjQ4NTcg fCAgNDQ4OQorICA5IHwgMjkzNDYgfCAgNDQ4OQorIDEwIHwgMTEwNTUgfCAgNDQ4OQorIDExIHwg MTUyNDYgfCAgNDM1NgorIDEyIHwgMTk2MDIgfCAgNDM1NgorIDEzIHwgMjM5NTggfCAgNDM1Ngor IDE0IHwgMjgzMTQgfCAgNDM1NgorKDE1IHJvd3MpCisKKy0tIFdoZW4gR1JPVVAgQlkgY2xhdXNl IGRvZXMgbm90IG1hdGNoOyBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGlzIHBlcmZvcm1lZCBmb3IgZWFj aCBwYXJ0aXRpb24uCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDIueCwg c3VtKHQxLngpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWIxIHQxLCBlYWdlcl9hZ2dfdGFi MiB0MiBXSEVSRSB0MS54ID0gdDIueSBHUk9VUCBCWSB0Mi54IEhBVklORyBhdmcodDEueCkgPiA1 IE9SREVSIEJZIHQyLng7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFNvcnQKKyAgIE91dHB1dDogdDIueCwgKHN1bSh0MS54KSksIChjb3VudCgqKSkK KyAgIFNvcnQgS2V5OiB0Mi54CisgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAg ICAgT3V0cHV0OiB0Mi54LCBzdW0odDEueCksIGNvdW50KCopCisgICAgICAgICBHcm91cCBLZXk6 IHQyLngKKyAgICAgICAgIEZpbHRlcjogKGF2Zyh0MS54KSA+ICc1Jzo6bnVtZXJpYykKKyAgICAg ICAgIC0+ICBBcHBlbmQKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDIueCwgKFBBUlRJQUwgc3VtKHQxLngpKSwgKFBBUlRJQUwgY291 bnQoKikpLCAoUEFSVElBTCBhdmcodDEueCkpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENv bmQ6ICh0Mi55ID0gdDEueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw dWJsaWMuZWFnZXJfYWdnX3RhYjJfcDEgdDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDIueCwgdDIueQorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueCwgKFBBUlRJQUwgc3VtKHQxLngpKSwgKFBB UlRJQUwgY291bnQoKikpLCAoUEFSVElBTCBhdmcodDEueCkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQxLngsIFBBUlRJQUwgc3VtKHQxLngpLCBQQVJUSUFMIGNvdW50 KCopLCBQQVJUSUFMIGF2Zyh0MS54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R3JvdXAgS2V5OiB0MS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AxIHQxCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNo IEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS54LCAoUEFSVElBTCBzdW0o dDFfMS54KSksIChQQVJUSUFMIGNvdW50KCopKSwgKFBBUlRJQUwgYXZnKHQxXzEueCkpCisgICAg ICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8xLnkgPSB0MV8xLngpCisgICAgICAgICAg ICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIyX3AyIHQyXzEK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS54LCB0Ml8xLnkKKyAgICAg ICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQxXzEueCwgKFBBUlRJQUwgc3VtKHQxXzEueCkpLCAoUEFSVElBTCBjb3VudCgqKSksIChQ QVJUSUFMIGF2Zyh0MV8xLngpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRp YWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0MV8xLngsIFBBUlRJQUwgc3VtKHQxXzEueCksIFBBUlRJQUwgY291bnQoKiksIFBBUlRJQUwg YXZnKHQxXzEueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTog dDFfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHVibGljLmVhZ2VyX2FnZ190YWIxX3AyIHQxXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDFfMS54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2lu CisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueCwgKFBBUlRJQUwgc3VtKHQxXzIu eCkpLCAoUEFSVElBTCBjb3VudCgqKSksIChQQVJUSUFMIGF2Zyh0MV8yLngpKQorICAgICAgICAg ICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMi55ID0gdDFfMi54KQorICAgICAgICAgICAgICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMl9wMyB0Ml8yCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueCwgdDJfMi55CisgICAgICAgICAg ICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 MV8yLngsIChQQVJUSUFMIHN1bSh0MV8yLngpKSwgKFBBUlRJQUwgY291bnQoKikpLCAoUEFSVElB TCBhdmcodDFfMi54KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhh c2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFf Mi54LCBQQVJUSUFMIHN1bSh0MV8yLngpLCBQQVJUSUFMIGNvdW50KCopLCBQQVJUSUFMIGF2Zyh0 MV8yLngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzIu eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1Ymxp Yy5lYWdlcl9hZ2dfdGFiMV9wMyB0MV8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQxXzIueAorKDQ0IHJvd3MpCisKK1NFTEVDVCB0Mi54LCBzdW0odDEu eCksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYjEgdDEsIGVhZ2VyX2FnZ190YWIyIHQyIFdI RVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQyLnggSEFWSU5HIGF2Zyh0MS54KSA+IDUgT1JERVIg QlkgdDIueDsKKyB4IHwgIHN1bSAgfCBjb3VudCAKKy0tLSstLS0tLS0tKy0tLS0tLS0KKyAwIHwg MzM4MzUgfCAgNjY2NworIDEgfCAzOTUwMiB8ICA2NjY3CisgMiB8IDQ2MTY5IHwgIDY2NjcKKyAz IHwgNTI4MzYgfCAgNjY2NworIDQgfCA1OTUwMyB8ICA2NjY3CisgNSB8IDMzNTAwIHwgIDY2NjcK KyA2IHwgMzk4MzcgfCAgNjY2NworIDcgfCA0NjUwNCB8ICA2NjY3CisgOCB8IDUzMTcxIHwgIDY2 NjcKKyA5IHwgNTk4MzggfCAgNjY2NworKDEwIHJvd3MpCisKKy0tIENoZWNrIHdpdGggZWFnZXIg YWdncmVnYXRpb24gb3ZlciBqb2luIHJlbAorLS0gZnVsbCBhZ2dyZWdhdGlvbgorRVhQTEFJTiAo VkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLngsIHN1bSh0Mi55ICsgdDMueSkgRlJPTSBl YWdlcl9hZ2dfdGFiMSB0MSBKT0lOIGVhZ2VyX2FnZ190YWIxIHQyIE9OIHQxLnggPSB0Mi54IEpP SU4gZWFnZXJfYWdnX3RhYjEgdDMgT04gdDIueCA9IHQzLnggR1JPVVAgQlkgdDEueCBPUkRFUiBC WSB0MS54OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNvcnQKKyAgIE91dHB1dDogdDEueCwgKHN1bSgodDIu eSArIHQzLnkpKSkKKyAgIFNvcnQgS2V5OiB0MS54CisgICAtPiAgQXBwZW5kCisgICAgICAgICAt PiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCBz dW0oKHQyLnkgKyB0My55KSkKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDEueAorICAgICAg ICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54 LCAoUEFSVElBTCBzdW0oKHQyLnkgKyB0My55KSkpCisgICAgICAgICAgICAgICAgICAgICBIYXNo IENvbmQ6ICh0MS54ID0gdDIueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDEgdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDEueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDIueCwgdDMueCwgKFBBUlRJQUwgc3VtKCh0Mi55ICsg dDMueSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3Jl Z2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54LCB0My54 LCBQQVJUSUFMIHN1bSgodDIueSArIHQzLnkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR3JvdXAgS2V5OiB0Mi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQyLnksIHQyLngsIHQzLnksIHQzLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEhhc2ggQ29uZDogKHQyLnggPSB0My54KQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9w MSB0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0Mi55LCB0Mi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg SGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0My55LCB0My54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AxIHQzCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzLnksIHQz LngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBP dXRwdXQ6IHQxXzEueCwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKQorICAgICAgICAgICAgICAgR3Jv dXAgS2V5OiB0MV8xLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDFfMS54LCAoUEFSVElBTCBzdW0oKHQyXzEueSArIHQzXzEueSkp KQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMS54ID0gdDJfMS54KQorICAg ICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9w MiB0MV8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueAorICAgICAg ICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDJfMS54LCB0M18xLngsIChQQVJUSUFMIHN1bSgodDJfMS55ICsgdDNfMS55KSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueCwgdDNfMS54LCBQQVJUSUFM IHN1bSgodDJfMS55ICsgdDNfMS55KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEdyb3VwIEtleTogdDJfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg SGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQyXzEueSwgdDJfMS54LCB0M18xLnksIHQzXzEueAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMS54ID0gdDNfMS54KQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9h Z2dfdGFiMV9wMiB0Ml8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQyXzEueSwgdDJfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0M18xLnksIHQzXzEueAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFi MV9wMiB0M18xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQzXzEueSwgdDNfMS54CisgICAgICAgICAtPiAgRmluYWxpemUgSGFzaEFn Z3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngsIHN1bSgodDJfMi55ICsgdDNf Mi55KSkKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMi54CisgICAgICAgICAgICAgICAt PiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgKFBBUlRJ QUwgc3VtKCh0Ml8yLnkgKyB0M18yLnkpKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29u ZDogKHQxXzIueCA9IHQyXzIueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDMgdDFfMgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0MV8yLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueCwgdDNfMi54LCAoUEFSVElBTCBzdW0o KHQyXzIueSArIHQzXzIueSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRp YWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0Ml8yLngsIHQzXzIueCwgUEFSVElBTCBzdW0oKHQyXzIueSArIHQzXzIueSkpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzIueAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLnksIHQyXzIueCwgdDNfMi55LCB0M18yLngK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzIu eCA9IHQzXzIueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDMgdDJfMgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLnksIHQyXzIueAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMi55LCB0M18yLngK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDMgdDNfMgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18yLnksIHQzXzIueAorKDcw IHJvd3MpCisKK1NFTEVDVCB0MS54LCBzdW0odDIueSArIHQzLnkpIEZST00gZWFnZXJfYWdnX3Rh YjEgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiMSB0MiBPTiB0MS54ID0gdDIueCBKT0lOIGVhZ2VyX2Fn Z190YWIxIHQzIE9OIHQyLnggPSB0My54IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKKyB4 ICB8ICAgc3VtICAgCistLS0tKy0tLS0tLS0tLQorICAwIHwgMTQzNzQ4MAorICAxIHwgMjA4Mjg5 NgorICAyIHwgMjY4NDQyMgorICAzIHwgMzI4NTk0OAorICA0IHwgMzg4NzQ3NAorICA1IHwgMTUy NjI2MAorICA2IHwgMjEyNzc4NgorICA3IHwgMjcyOTMxMgorICA4IHwgMzMzMDgzOAorICA5IHwg MzkzMjM2NAorIDEwIHwgMTQ4MTM3MAorIDExIHwgMjAxMjQ3MgorIDEyIHwgMjU4NzQ2NAorIDEz IHwgMzE2MjQ1NgorIDE0IHwgMzczNzQ0OAorKDE1IHJvd3MpCisKKy0tIHBhcnRpYWwgYWdncmVn YXRpb24KK1NFVCBlbmFibGVfaGFzaGFnZyBUTyBvZmY7CitTRVQgbWF4X3BhcmFsbGVsX3dvcmtl cnNfcGVyX2dhdGhlciBUTyAwOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNU IHQzLnksIHN1bSh0Mi55ICsgdDMueSkgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSBKT0lOIGVhZ2Vy X2FnZ190YWIxIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFnZXJfYWdnX3RhYjEgdDMgT04gdDIu eCA9IHQzLnggR1JPVVAgQlkgdDMueSBPUkRFUiBCWSB0My55OworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZp bmFsaXplIEdyb3VwQWdncmVnYXRlCisgICBPdXRwdXQ6IHQzLnksIHN1bSgodDIueSArIHQzLnkp KQorICAgR3JvdXAgS2V5OiB0My55CisgICAtPiAgU29ydAorICAgICAgICAgT3V0cHV0OiB0My55 LCAoUEFSVElBTCBzdW0oKHQyLnkgKyB0My55KSkpCisgICAgICAgICBTb3J0IEtleTogdDMueQor ICAgICAgICAgLT4gIEFwcGVuZAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0My55LCAoUEFSVElBTCBzdW0oKHQyLnkgKyB0My55KSkp CisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Mi54ID0gdDEueCkKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEdyb3VwQWdncmVnYXRlCisgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQyLngsIHQzLnksIHQzLngsIFBBUlRJQUwgc3VtKCh0Mi55ICsg dDMueSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyLngsIHQzLnks IHQzLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBJbmNyZW1lbnRhbCBTb3J0Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnksIHQyLngsIHQzLnks IHQzLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0Mi54LCB0 My55CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVzb3J0ZWQgS2V5OiB0Mi54 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgTWVyZ2UgSm9pbgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi55LCB0Mi54LCB0My55 LCB0My54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXJnZSBDb25k OiAodDIueCA9IHQzLngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgU29ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Mi55LCB0Mi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBTb3J0IEtleTogdDIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMSB0MgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 Mi55LCB0Mi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU29y dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 My55LCB0My54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT b3J0IEtleTogdDMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMSB0MworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0My55LCB0 My54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0MS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AxIHQxCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQxLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMS55LCAoUEFSVElBTCBzdW0oKHQyXzEueSAr IHQzXzEueSkpKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMS54ID0gdDFf MS54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgR3JvdXBBZ2dyZWdhdGUKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS54LCB0M18xLnksIHQzXzEueCwg UEFSVElBTCBzdW0oKHQyXzEueSArIHQzXzEueSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBHcm91cCBLZXk6IHQyXzEueCwgdDNfMS55LCB0M18xLngKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBJbmNyZW1lbnRhbCBTb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQyXzEueSwgdDJfMS54LCB0M18xLnksIHQzXzEueAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQyXzEueCwgdDNfMS55CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQcmVzb3J0ZWQgS2V5OiB0Ml8xLngKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0+ICBNZXJnZSBKb2luCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueSwgdDJfMS54LCB0M18xLnksIHQzXzEu eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVyZ2UgQ29uZDogKHQy XzEueCA9IHQzXzEueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBTb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQyXzEueSwgdDJfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBTb3J0IEtleTogdDJfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AyIHQy XzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDJfMS55LCB0Ml8xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQzXzEueSwgdDNfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTb3J0IEtleTogdDNfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIx X3AyIHQzXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDNfMS55LCB0M18xLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNo CisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMiB0 MV8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueAorICAg ICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 M18yLnksIChQQVJUSUFMIHN1bSgodDJfMi55ICsgdDNfMi55KSkpCisgICAgICAgICAgICAgICAg ICAgICBIYXNoIENvbmQ6ICh0Ml8yLnggPSB0MV8yLngpCisgICAgICAgICAgICAgICAgICAgICAt PiAgUGFydGlhbCBHcm91cEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Ml8yLngsIHQzXzIueSwgdDNfMi54LCBQQVJUSUFMIHN1bSgodDJfMi55ICsgdDNfMi55 KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfMi54LCB0M18yLnks IHQzXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEluY3JlbWVudGFsIFNvcnQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi55LCB0Ml8yLngs IHQzXzIueSwgdDNfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IEtl eTogdDJfMi54LCB0M18yLnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZXNv cnRlZCBLZXk6IHQyXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIE1l cmdlIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDJfMi55LCB0Ml8yLngsIHQzXzIueSwgdDNfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBNZXJnZSBDb25kOiAodDJfMi54ID0gdDNfMi54KQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi55LCB0Ml8yLngKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0Ml8yLngKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDMgdDJfMgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLnksIHQyXzIueAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMi55LCB0M18yLngKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0M18y LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDMgdDNfMgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18yLnksIHQzXzIueAor ICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDFfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AzIHQxXzIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDFfMi54CisoODggcm93cykKKworU0VMRUNUIHQzLnksIHN1bSh0 Mi55ICsgdDMueSkgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSBKT0lOIGVhZ2VyX2FnZ190YWIxIHQy IE9OIHQxLnggPSB0Mi54IEpPSU4gZWFnZXJfYWdnX3RhYjEgdDMgT04gdDIueCA9IHQzLnggR1JP VVAgQlkgdDMueSBPUkRFUiBCWSB0My55OworIHkgfCAgIHN1bSAgIAorLS0tKy0tLS0tLS0tLQor IDAgfCAxMTExMTEwCisgMSB8IDIwMDAxMzIKKyAyIHwgMjg4OTE1NAorIDMgfCAzNzc4MTc2Cisg NCB8IDQ2NjcxOTgKKyA1IHwgMzMzNDAwMAorIDYgfCA0MjIzMDIyCisgNyB8IDUxMTIwNDQKKyA4 IHwgNjAwMTA2NgorIDkgfCA2ODkwMDg4CisoMTAgcm93cykKKworUkVTRVQgZW5hYmxlX2hhc2hh Z2c7CitSRVNFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyOworRFJPUCBUQUJMRSBl YWdlcl9hZ2dfdGFiMTsKK0RST1AgVEFCTEUgZWFnZXJfYWdnX3RhYjI7CistLQorLS0gVGVzdCB3 aXRoIG11bHRpLWxldmVsIHBhcnRpdGlvbmluZyBzY2hlbWUKKy0tCitDUkVBVEUgVEFCTEUgZWFn ZXJfYWdnX3RhYl9tbCh4IGludCwgeSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSh4KTsKK0NSRUFU RSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sX3AxIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiX21s IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFi X21sX3AyIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiX21sIEZPUiBWQUxVRVMgRlJPTSAoMTAp IFRPICgyMCkgUEFSVElUSU9OIEJZIFJBTkdFKHgpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190 YWJfbWxfcDJfczEgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWJfbWxfcDIgRk9SIFZBTFVFUyBG Uk9NICgxMCkgVE8gKDE1KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sX3AyX3MyIFBB UlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiX21sX3AyIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgy MCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbF9wMyBQQVJUSVRJT04gT0YgZWFnZXJf YWdnX3RhYl9tbCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApIFBBUlRJVElPTiBCWSBSQU5H RSh4KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sX3AzX3MxIFBBUlRJVElPTiBPRiBl YWdlcl9hZ2dfdGFiX21sX3AzIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgyNSk7CitDUkVBVEUg VEFCTEUgZWFnZXJfYWdnX3RhYl9tbF9wM19zMiBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYl9t bF9wMyBGT1IgVkFMVUVTIEZST00gKDI1KSBUTyAoMzApOworSU5TRVJUIElOVE8gZWFnZXJfYWdn X3RhYl9tbCBTRUxFQ1QgaSAlIDMwLCBpICUgMzAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAw MCkgaTsKK0FOQUxZWkUgZWFnZXJfYWdnX3RhYl9tbDsKKy0tIFdoZW4gR1JPVVAgQlkgY2xhdXNl IG1hdGNoZXM7IGZ1bGwgYWdncmVnYXRpb24gaXMgcGVyZm9ybWVkIGZvciBlYWNoIHBhcnRpdGlv bi4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS54LCBzdW0odDIueSks IGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwg dDIgT04gdDEueCA9IHQyLnggR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBT b3J0CisgICBPdXRwdXQ6IHQxLngsIChzdW0odDIueSkpLCAoY291bnQoKikpCisgICBTb3J0IEtl eTogdDEueAorICAgLT4gIEFwcGVuZAorICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdh dGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDEueCwgc3VtKHQyLnkpLCBjb3VudCgqKQorICAg ICAgICAgICAgICAgR3JvdXAgS2V5OiB0MS54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2lu CisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIChQQVJUSUFMIHN1bSh0Mi55KSks IChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEu eCA9IHQyLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVh Z2VyX2FnZ190YWJfbWxfcDEgdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDEueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDIueCwgKFBBUlRJQUwgc3VtKHQyLnkpKSwgKFBBUlRJQUwgY291bnQo KikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRl CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLngsIFBBUlRJQUwg c3VtKHQyLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHcm91cCBLZXk6IHQyLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMSB0MgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi55LCB0Mi54CisgICAgICAgICAt PiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngs IHN1bSh0Ml8xLnkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8xLngK KyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDFfMS54LCAoUEFSVElBTCBzdW0odDJfMS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAg ICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMS54ID0gdDJfMS54KQorICAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3Mx IHQxXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54CisgICAgICAg ICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0Ml8xLngsIChQQVJUSUFMIHN1bSh0Ml8xLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueCwgUEFSVElBTCBzdW0odDJf MS55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R3JvdXAgS2V5OiB0Ml8xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMSB0Ml8xCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueSwgdDJfMS54CisgICAg ICAgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0 MV8yLngsIHN1bSh0Ml8yLnkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0 MV8yLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDFfMi54LCAoUEFSVElBTCBzdW0odDJfMi55KSksIChQQVJUSUFMIGNvdW50KCop KQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMi54ID0gdDJfMi54KQorICAg ICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21s X3AyX3MyIHQxXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54Cisg ICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0Ml8yLngsIChQQVJUSUFMIHN1bSh0Ml8yLnkpKSwgKFBBUlRJQUwgY291bnQoKikp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueCwgUEFSVElBTCBz dW0odDJfMi55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR3JvdXAgS2V5OiB0Ml8yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMiB0Ml8yCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueSwgdDJfMi54 CisgICAgICAgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0 cHV0OiB0MV8zLngsIHN1bSh0Ml8zLnkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAg S2V5OiB0MV8zLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDFfMy54LCAoUEFSVElBTCBzdW0odDJfMy55KSksIChQQVJUSUFMIGNv dW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMy54ID0gdDJfMy54 KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2df dGFiX21sX3AzX3MxIHQxXzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFf My54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0Ml8zLngsIChQQVJUSUFMIHN1bSh0Ml8zLnkpKSwgKFBBUlRJQUwgY291 bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVn YXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMueCwgUEFS VElBTCBzdW0odDJfMy55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8zLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMSB0Ml8z CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMueSwg dDJfMy54CisgICAgICAgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAg ICAgT3V0cHV0OiB0MV80LngsIHN1bSh0Ml80LnkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAg R3JvdXAgS2V5OiB0MV80LngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDFfNC54LCAoUEFSVElBTCBzdW0odDJfNC55KSksIChQQVJU SUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfNC54ID0g dDJfNC54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdl cl9hZ2dfdGFiX21sX3AzX3MyIHQxXzQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDFfNC54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0Ml80LngsIChQQVJUSUFMIHN1bSh0Ml80LnkpKSwgKFBBUlRJ QUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNo QWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzQu eCwgUEFSVElBTCBzdW0odDJfNC55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml80LngKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19z MiB0Ml80CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQy XzQueSwgdDJfNC54CisoNzkgcm93cykKKworU0VMRUNUIHQxLngsIHN1bSh0Mi55KSwgY291bnQo KikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0 MS54ID0gdDIueCBHUk9VUCBCWSB0MS54IE9SREVSIEJZIHQxLng7CisgeCAgfCAgc3VtICB8IGNv dW50IAorLS0tLSstLS0tLS0tKy0tLS0tLS0KKyAgMCB8ICAgICAwIHwgIDEwODkKKyAgMSB8ICAx MTU2IHwgIDExNTYKKyAgMiB8ICAyMzEyIHwgIDExNTYKKyAgMyB8ICAzNDY4IHwgIDExNTYKKyAg NCB8ICA0NjI0IHwgIDExNTYKKyAgNSB8ICA1NzgwIHwgIDExNTYKKyAgNiB8ICA2OTM2IHwgIDEx NTYKKyAgNyB8ICA4MDkyIHwgIDExNTYKKyAgOCB8ICA5MjQ4IHwgIDExNTYKKyAgOSB8IDEwNDA0 IHwgIDExNTYKKyAxMCB8IDExNTYwIHwgIDExNTYKKyAxMSB8IDExOTc5IHwgIDEwODkKKyAxMiB8 IDEzMDY4IHwgIDEwODkKKyAxMyB8IDE0MTU3IHwgIDEwODkKKyAxNCB8IDE1MjQ2IHwgIDEwODkK KyAxNSB8IDE2MzM1IHwgIDEwODkKKyAxNiB8IDE3NDI0IHwgIDEwODkKKyAxNyB8IDE4NTEzIHwg IDEwODkKKyAxOCB8IDE5NjAyIHwgIDEwODkKKyAxOSB8IDIwNjkxIHwgIDEwODkKKyAyMCB8IDIx NzgwIHwgIDEwODkKKyAyMSB8IDIyODY5IHwgIDEwODkKKyAyMiB8IDIzOTU4IHwgIDEwODkKKyAy MyB8IDI1MDQ3IHwgIDEwODkKKyAyNCB8IDI2MTM2IHwgIDEwODkKKyAyNSB8IDI3MjI1IHwgIDEw ODkKKyAyNiB8IDI4MzE0IHwgIDEwODkKKyAyNyB8IDI5NDAzIHwgIDEwODkKKyAyOCB8IDMwNDky IHwgIDEwODkKKyAyOSB8IDMxNTgxIHwgIDEwODkKKygzMCByb3dzKQorCistLSBXaGVuIEdST1VQ IEJZIGNsYXVzZSBkb2VzIG5vdCBtYXRjaDsgcGFydGlhbCBhZ2dyZWdhdGlvbiBpcyBwZXJmb3Jt ZWQgZm9yIGVhY2ggcGFydGl0aW9uLgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VM RUNUIHQxLnksIHN1bSh0Mi55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpP SU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0MS54ID0gdDIueCBHUk9VUCBCWSB0MS55IE9SREVS IEJZIHQxLnk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFNvcnQKKyAgIE91dHB1dDogdDEueSwgKHN1bSh0Mi55KSksIChj b3VudCgqKSkKKyAgIFNvcnQgS2V5OiB0MS55CisgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0 ZQorICAgICAgICAgT3V0cHV0OiB0MS55LCBzdW0odDIueSksIGNvdW50KCopCisgICAgICAgICBH cm91cCBLZXk6IHQxLnkKKyAgICAgICAgIC0+ICBBcHBlbmQKKyAgICAgICAgICAgICAgIC0+ICBI YXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueSwgKFBBUlRJQUwgc3Vt KHQyLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENv bmQ6ICh0MS54ID0gdDIueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw dWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMSB0MQorICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0MS55LCB0MS54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54LCAoUEFSVElBTCBzdW0odDIueSkpLCAo UEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFs IEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDIueCwgUEFSVElBTCBzdW0odDIueSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDIueAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AxIHQy CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnksIHQy LngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDFfMS55LCAoUEFSVElBTCBzdW0odDJfMS55KSksIChQQVJUSUFMIGNvdW50KCopKQor ICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMS54ID0gdDJfMS54KQorICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3Ay X3MxIHQxXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS55LCB0MV8x LngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQyXzEueCwgKFBBUlRJQUwgc3VtKHQyXzEueSkpLCAoUEFSVElBTCBjb3Vu dCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdh dGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS54LCBQQVJU SUFMIHN1bSh0Ml8xLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHcm91cCBLZXk6IHQyXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3MxIHQyXzEK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS55LCB0 Ml8xLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDFfMi55LCAoUEFSVElBTCBzdW0odDJfMi55KSksIChQQVJUSUFMIGNvdW50KCop KQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMi54ID0gdDJfMi54KQorICAg ICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21s X3AyX3MyIHQxXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi55LCB0 MV8yLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQyXzIueCwgKFBBUlRJQUwgc3VtKHQyXzIueSkpLCAoUEFSVElBTCBj b3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dy ZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi54LCBQ QVJUSUFMIHN1bSh0Ml8yLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzIueAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3MyIHQy XzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi55 LCB0Ml8yLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDFfMy55LCAoUEFSVElBTCBzdW0odDJfMy55KSksIChQQVJUSUFMIGNvdW50 KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMy54ID0gdDJfMy54KQor ICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFi X21sX3AzX3MxIHQxXzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMy55 LCB0MV8zLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQyXzMueCwgKFBBUlRJQUwgc3VtKHQyXzMueSkpLCAoUEFSVElB TCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hB Z2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMy54 LCBQQVJUSUFMIHN1bSh0Ml8zLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzMueAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AzX3Mx IHQyXzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJf My55LCB0Ml8zLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDFfNC55LCAoUEFSVElBTCBzdW0odDJfNC55KSksIChQQVJUSUFMIGNv dW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfNC54ID0gdDJfNC54 KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2df dGFiX21sX3AzX3MyIHQxXzQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFf NC55LCB0MV80LngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzQueCwgKFBBUlRJQUwgc3VtKHQyXzQueSkpLCAoUEFS VElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhh c2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJf NC54LCBQQVJUSUFMIHN1bSh0Ml80LnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzQueAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3Az X3MyIHQyXzQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDJfNC55LCB0Ml80LngKKyg2NyByb3dzKQorCitTRUxFQ1QgdDEueSwgc3VtKHQyLnkpLCBjb3Vu dCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9O IHQxLnggPSB0Mi54IEdST1VQIEJZIHQxLnkgT1JERVIgQlkgdDEueTsKKyB5ICB8ICBzdW0gIHwg Y291bnQgCistLS0tKy0tLS0tLS0rLS0tLS0tLQorICAwIHwgICAgIDAgfCAgMTA4OQorICAxIHwg IDExNTYgfCAgMTE1NgorICAyIHwgIDIzMTIgfCAgMTE1NgorICAzIHwgIDM0NjggfCAgMTE1Ngor ICA0IHwgIDQ2MjQgfCAgMTE1NgorICA1IHwgIDU3ODAgfCAgMTE1NgorICA2IHwgIDY5MzYgfCAg MTE1NgorICA3IHwgIDgwOTIgfCAgMTE1NgorICA4IHwgIDkyNDggfCAgMTE1NgorICA5IHwgMTA0 MDQgfCAgMTE1NgorIDEwIHwgMTE1NjAgfCAgMTE1NgorIDExIHwgMTE5NzkgfCAgMTA4OQorIDEy IHwgMTMwNjggfCAgMTA4OQorIDEzIHwgMTQxNTcgfCAgMTA4OQorIDE0IHwgMTUyNDYgfCAgMTA4 OQorIDE1IHwgMTYzMzUgfCAgMTA4OQorIDE2IHwgMTc0MjQgfCAgMTA4OQorIDE3IHwgMTg1MTMg fCAgMTA4OQorIDE4IHwgMTk2MDIgfCAgMTA4OQorIDE5IHwgMjA2OTEgfCAgMTA4OQorIDIwIHwg MjE3ODAgfCAgMTA4OQorIDIxIHwgMjI4NjkgfCAgMTA4OQorIDIyIHwgMjM5NTggfCAgMTA4OQor IDIzIHwgMjUwNDcgfCAgMTA4OQorIDI0IHwgMjYxMzYgfCAgMTA4OQorIDI1IHwgMjcyMjUgfCAg MTA4OQorIDI2IHwgMjgzMTQgfCAgMTA4OQorIDI3IHwgMjk0MDMgfCAgMTA4OQorIDI4IHwgMzA0 OTIgfCAgMTA4OQorIDI5IHwgMzE1ODEgfCAgMTA4OQorKDMwIHJvd3MpCisKKy0tIENoZWNrIHdp dGggZWFnZXIgYWdncmVnYXRpb24gb3ZlciBqb2luIHJlbAorLS0gZnVsbCBhZ2dyZWdhdGlvbgor RVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLngsIHN1bSh0Mi55ICsgdDMu eSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJf bWwgdDIgT04gdDEueCA9IHQyLnggSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQzIG9uIHQyLnggPSB0 My54IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTb3J0CisgICBPdXRwdXQ6IHQxLngsIChzdW0oKHQyLnkg KyB0My55KSkpLCAoY291bnQoKikpCisgICBTb3J0IEtleTogdDEueAorICAgLT4gIEFwcGVuZAor ICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1 dDogdDEueCwgc3VtKCh0Mi55ICsgdDMueSkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3Jv dXAgS2V5OiB0MS54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQxLngsIChQQVJUSUFMIHN1bSgodDIueSArIHQzLnkpKSksIChQQVJU SUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEueCA9IHQy LngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2Fn Z190YWJfbWxfcDEgdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueAor ICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDIueCwgdDMueCwgKFBBUlRJQUwgc3VtKCh0Mi55ICsgdDMueSkpKSwgKFBBUlRJ QUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNo QWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLngs IHQzLngsIFBBUlRJQUwgc3VtKCh0Mi55ICsgdDMueSkpLCBQQVJUSUFMIGNvdW50KCopCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyLngKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIueSwgdDIueCwgdDMueSwgdDMueAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDIueCA9IHQzLngp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDEgdDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIueSwgdDIueAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDMueSwgdDMueAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9h Z2dfdGFiX21sX3AxIHQzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQzLnksIHQzLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNo QWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueCwgc3VtKCh0Ml8xLnkgKyB0 M18xLnkpKSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMS54CisgICAg ICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQx XzEueCwgKFBBUlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKSksIChQQVJUSUFMIGNvdW50KCop KQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMS54ID0gdDJfMS54KQorICAg ICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21s X3AyX3MxIHQxXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54Cisg ICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0Ml8xLngsIHQzXzEueCwgKFBBUlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKSks IChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRp YWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0Ml8xLngsIHQzXzEueCwgUEFSVElBTCBzdW0oKHQyXzEueSArIHQzXzEueSkpLCBQQVJUSUFM IGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQy XzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLnksIHQyXzEu eCwgdDNfMS55LCB0M18xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEhhc2ggQ29uZDogKHQyXzEueCA9IHQzXzEueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9z MSB0Ml8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQyXzEueSwgdDJfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0M18xLnksIHQzXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3Mx IHQzXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDNfMS55LCB0M18xLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVn YXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgc3VtKCh0Ml8yLnkgKyB0M18yLnkp KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMi54CisgICAgICAgICAg ICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwg KFBBUlRJQUwgc3VtKCh0Ml8yLnkgKyB0M18yLnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAg ICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMi54ID0gdDJfMi54KQorICAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3My IHQxXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54CisgICAgICAg ICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0Ml8yLngsIHQzXzIueCwgKFBBUlRJQUwgc3VtKCh0Ml8yLnkgKyB0M18yLnkpKSksIChQQVJU SUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFz aEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8y LngsIHQzXzIueCwgUEFSVElBTCBzdW0oKHQyXzIueSArIHQzXzIueSkpLCBQQVJUSUFMIGNvdW50 KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzIueAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLnksIHQyXzIueCwgdDNf Mi55LCB0M18yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2gg Q29uZDogKHQyXzIueCA9IHQzXzIueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMiB0Ml8y CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQy XzIueSwgdDJfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg SGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0M18yLnksIHQzXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3MyIHQzXzIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDNfMi55LCB0M18yLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisg ICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzMueCwgc3VtKCh0Ml8zLnkgKyB0M18zLnkpKSwgY291 bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMy54CisgICAgICAgICAgICAgICAt PiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzMueCwgKFBBUlRJ QUwgc3VtKCh0Ml8zLnkgKyB0M18zLnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAg ICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMy54ID0gdDJfMy54KQorICAgICAgICAgICAgICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AzX3MxIHQxXzMK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMy54CisgICAgICAgICAgICAg ICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8z LngsIHQzXzMueCwgKFBBUlRJQUwgc3VtKCh0Ml8zLnkgKyB0M18zLnkpKSksIChQQVJUSUFMIGNv dW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3Jl Z2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLngsIHQz XzMueCwgUEFSVElBTCBzdW0oKHQyXzMueSArIHQzXzMueSkpLCBQQVJUSUFMIGNvdW50KCopCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzMueAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLnksIHQyXzMueCwgdDNfMy55LCB0 M18zLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDog KHQyXzMueCA9IHQzXzMueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMSB0Ml8zCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMueSwg dDJfMy54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18z LnksIHQzXzMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AzX3MxIHQzXzMKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNf My55LCB0M18zLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAg ICAgICAgICBPdXRwdXQ6IHQxXzQueCwgc3VtKCh0Ml80LnkgKyB0M180LnkpKSwgY291bnQoKikK KyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfNC54CisgICAgICAgICAgICAgICAtPiAgSGFz aCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzQueCwgKFBBUlRJQUwgc3Vt KCh0Ml80LnkgKyB0M180LnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAg ICAgICAgSGFzaCBDb25kOiAodDFfNC54ID0gdDJfNC54KQorICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AzX3MyIHQxXzQKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfNC54CisgICAgICAgICAgICAgICAgICAg ICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml80LngsIHQz XzQueCwgKFBBUlRJQUwgc3VtKCh0Ml80LnkgKyB0M180LnkpKSksIChQQVJUSUFMIGNvdW50KCop KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml80LngsIHQzXzQueCwg UEFSVElBTCBzdW0oKHQyXzQueSArIHQzXzQueSkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzQueAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml80LnksIHQyXzQueCwgdDNfNC55LCB0M180LngK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzQu eCA9IHQzXzQueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMiB0Ml80CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzQueSwgdDJfNC54 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M180LnksIHQz XzQueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AzX3MyIHQzXzQKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfNC55LCB0 M180LngKKygxMTQgcm93cykKKworU0VMRUNUIHQxLngsIHN1bSh0Mi55ICsgdDMueSksIGNvdW50 KCopIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04g dDEueCA9IHQyLnggSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQzIG9uIHQyLnggPSB0My54IEdST1VQ IEJZIHQxLnggT1JERVIgQlkgdDEueDsKKyB4ICB8ICAgc3VtICAgfCBjb3VudCAKKy0tLS0rLS0t LS0tLS0tKy0tLS0tLS0KKyAgMCB8ICAgICAgIDAgfCAzNTkzNworICAxIHwgICA3ODYwOCB8IDM5 MzA0CisgIDIgfCAgMTU3MjE2IHwgMzkzMDQKKyAgMyB8ICAyMzU4MjQgfCAzOTMwNAorICA0IHwg IDMxNDQzMiB8IDM5MzA0CisgIDUgfCAgMzkzMDQwIHwgMzkzMDQKKyAgNiB8ICA0NzE2NDggfCAz OTMwNAorICA3IHwgIDU1MDI1NiB8IDM5MzA0CisgIDggfCAgNjI4ODY0IHwgMzkzMDQKKyAgOSB8 ICA3MDc0NzIgfCAzOTMwNAorIDEwIHwgIDc4NjA4MCB8IDM5MzA0CisgMTEgfCAgNzkwNjE0IHwg MzU5MzcKKyAxMiB8ICA4NjI0ODggfCAzNTkzNworIDEzIHwgIDkzNDM2MiB8IDM1OTM3CisgMTQg fCAxMDA2MjM2IHwgMzU5MzcKKyAxNSB8IDEwNzgxMTAgfCAzNTkzNworIDE2IHwgMTE0OTk4NCB8 IDM1OTM3CisgMTcgfCAxMjIxODU4IHwgMzU5MzcKKyAxOCB8IDEyOTM3MzIgfCAzNTkzNworIDE5 IHwgMTM2NTYwNiB8IDM1OTM3CisgMjAgfCAxNDM3NDgwIHwgMzU5MzcKKyAyMSB8IDE1MDkzNTQg fCAzNTkzNworIDIyIHwgMTU4MTIyOCB8IDM1OTM3CisgMjMgfCAxNjUzMTAyIHwgMzU5MzcKKyAy NCB8IDE3MjQ5NzYgfCAzNTkzNworIDI1IHwgMTc5Njg1MCB8IDM1OTM3CisgMjYgfCAxODY4NzI0 IHwgMzU5MzcKKyAyNyB8IDE5NDA1OTggfCAzNTkzNworIDI4IHwgMjAxMjQ3MiB8IDM1OTM3Cisg MjkgfCAyMDg0MzQ2IHwgMzU5MzcKKygzMCByb3dzKQorCistLSBwYXJ0aWFsIGFnZ3JlZ2F0aW9u CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDMueSwgc3VtKHQyLnkgKyB0 My55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdnX3Rh Yl9tbCB0MiBPTiB0MS54ID0gdDIueCBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDMgb24gdDIueCA9 IHQzLnggR1JPVVAgQlkgdDMueSBPUkRFUiBCWSB0My55OworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTb3J0CisgICBPdXRwdXQ6 IHQzLnksIChzdW0oKHQyLnkgKyB0My55KSkpLCAoY291bnQoKikpCisgICBTb3J0IEtleTogdDMu eQorICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgIE91dHB1dDogdDMueSwg c3VtKCh0Mi55ICsgdDMueSkpLCBjb3VudCgqKQorICAgICAgICAgR3JvdXAgS2V5OiB0My55Cisg ICAgICAgICAtPiAgQXBwZW5kCisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQzLnksIChQQVJUSUFMIHN1bSgodDIueSArIHQzLnkpKSks IChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEu eCA9IHQyLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVh Z2VyX2FnZ190YWJfbWxfcDEgdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDEueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDIueCwgdDMueSwgdDMueCwgKFBBUlRJQUwgc3VtKCh0Mi55ICsgdDMu eSkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg UGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQyLngsIHQzLnksIHQzLngsIFBBUlRJQUwgc3VtKCh0Mi55ICsgdDMueSkpLCBQQVJU SUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6 IHQyLngsIHQzLnksIHQzLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBI YXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDIueSwgdDIueCwgdDMueSwgdDMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgSGFzaCBDb25kOiAodDIueCA9IHQzLngpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDEg dDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDIueSwgdDIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhh c2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDMueSwgdDMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AxIHQzCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzLnksIHQz LngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDNfMS55LCAoUEFSVElBTCBzdW0oKHQyXzEueSArIHQzXzEueSkpKSwgKFBBUlRJQUwg Y291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MV8xLnggPSB0Ml8x LngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2Fn Z190YWJfbWxfcDJfczEgdDFfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 MV8xLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQyXzEueCwgdDNfMS55LCB0M18xLngsIChQQVJUSUFMIHN1bSgodDJf MS55ICsgdDNfMS55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDJfMS54LCB0M18xLnksIHQzXzEueCwgUEFSVElBTCBzdW0oKHQy XzEueSArIHQzXzEueSkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHcm91cCBLZXk6IHQyXzEueCwgdDNfMS55LCB0M18xLngKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS55LCB0Ml8xLngsIHQzXzEueSwgdDNfMS54 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8x LnggPSB0M18xLngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg U2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDJfczEgdDJfMQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLnksIHQyXzEu eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMS55LCB0 M18xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMSB0M18xCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzEueSwg dDNfMS54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQzXzIueSwgKFBBUlRJQUwgc3VtKCh0Ml8yLnkgKyB0M18yLnkpKSksIChQQVJU SUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMi54ID0g dDJfMi54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdl cl9hZ2dfdGFiX21sX3AyX3MyIHQxXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDFfMi54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLngsIHQzXzIueSwgdDNfMi54LCAoUEFSVElBTCBzdW0o KHQyXzIueSArIHQzXzIueSkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueCwgdDNfMi55LCB0M18yLngsIFBBUlRJQUwgc3Vt KCh0Ml8yLnkgKyB0M18yLnkpKSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8yLngsIHQzXzIueSwgdDNfMi54CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueSwgdDJfMi54LCB0M18yLnksIHQz XzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAo dDJfMi54ID0gdDNfMi54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3MyIHQyXzIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi55LCB0 Ml8yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzIu eSwgdDNfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDJfczIgdDNfMgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18y LnksIHQzXzIueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0M18zLnksIChQQVJUSUFMIHN1bSgodDJfMy55ICsgdDNfMy55KSkpLCAo UEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzMu eCA9IHQyXzMueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMu ZWFnZXJfYWdnX3RhYl9tbF9wM19zMSB0MV8zCisgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQxXzMueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMy54LCB0M18zLnksIHQzXzMueCwgKFBBUlRJQUwg c3VtKCh0Ml8zLnkgKyB0M18zLnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLngsIHQzXzMueSwgdDNfMy54LCBQQVJUSUFM IHN1bSgodDJfMy55ICsgdDNfMy55KSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfMy54LCB0M18zLnksIHQzXzMueAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLnksIHQyXzMueCwgdDNfMy55 LCB0M18zLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29u ZDogKHQyXzMueCA9IHQzXzMueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMSB0Ml8zCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMu eSwgdDJfMy54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFz aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 M18zLnksIHQzXzMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AzX3MxIHQzXzMKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDNfMy55LCB0M18zLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDNfNC55LCAoUEFSVElBTCBzdW0oKHQyXzQueSArIHQzXzQueSkp KSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0 MV80LnggPSB0Ml80LngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVi bGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczIgdDFfNAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0MV80LngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzQueCwgdDNfNC55LCB0M180LngsIChQQVJU SUFMIHN1bSgodDJfNC55ICsgdDNfNC55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfNC54LCB0M180LnksIHQzXzQueCwgUEFS VElBTCBzdW0oKHQyXzQueSArIHQzXzQueSkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzQueCwgdDNfNC55LCB0M180LngK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfNC55LCB0Ml80LngsIHQz XzQueSwgdDNfNC54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNo IENvbmQ6ICh0Ml80LnggPSB0M180LngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczIgdDJf NAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 Ml80LnksIHQyXzQueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDNfNC55LCB0M180LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMiB0M180 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQzXzQueSwgdDNfNC54CisoMTAyIHJvd3MpCisKK1NFTEVDVCB0My55LCBzdW0odDIueSAr IHQzLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2df dGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MyBvbiB0Mi54 ID0gdDMueCBHUk9VUCBCWSB0My55IE9SREVSIEJZIHQzLnk7CisgeSAgfCAgIHN1bSAgIHwgY291 bnQgCistLS0tKy0tLS0tLS0tLSstLS0tLS0tCisgIDAgfCAgICAgICAwIHwgMzU5MzcKKyAgMSB8 ICAgNzg2MDggfCAzOTMwNAorICAyIHwgIDE1NzIxNiB8IDM5MzA0CisgIDMgfCAgMjM1ODI0IHwg MzkzMDQKKyAgNCB8ICAzMTQ0MzIgfCAzOTMwNAorICA1IHwgIDM5MzA0MCB8IDM5MzA0CisgIDYg fCAgNDcxNjQ4IHwgMzkzMDQKKyAgNyB8ICA1NTAyNTYgfCAzOTMwNAorICA4IHwgIDYyODg2NCB8 IDM5MzA0CisgIDkgfCAgNzA3NDcyIHwgMzkzMDQKKyAxMCB8ICA3ODYwODAgfCAzOTMwNAorIDEx IHwgIDc5MDYxNCB8IDM1OTM3CisgMTIgfCAgODYyNDg4IHwgMzU5MzcKKyAxMyB8ICA5MzQzNjIg fCAzNTkzNworIDE0IHwgMTAwNjIzNiB8IDM1OTM3CisgMTUgfCAxMDc4MTEwIHwgMzU5MzcKKyAx NiB8IDExNDk5ODQgfCAzNTkzNworIDE3IHwgMTIyMTg1OCB8IDM1OTM3CisgMTggfCAxMjkzNzMy IHwgMzU5MzcKKyAxOSB8IDEzNjU2MDYgfCAzNTkzNworIDIwIHwgMTQzNzQ4MCB8IDM1OTM3Cisg MjEgfCAxNTA5MzU0IHwgMzU5MzcKKyAyMiB8IDE1ODEyMjggfCAzNTkzNworIDIzIHwgMTY1MzEw MiB8IDM1OTM3CisgMjQgfCAxNzI0OTc2IHwgMzU5MzcKKyAyNSB8IDE3OTY4NTAgfCAzNTkzNwor IDI2IHwgMTg2ODcyNCB8IDM1OTM3CisgMjcgfCAxOTQwNTk4IHwgMzU5MzcKKyAyOCB8IDIwMTI0 NzIgfCAzNTkzNworIDI5IHwgMjA4NDM0NiB8IDM1OTM3CisoMzAgcm93cykKKworRFJPUCBUQUJM RSBlYWdlcl9hZ2dfdGFiX21sOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9zeXN2aWV3cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dApp bmRleCA4MzIyOGNmY2EyOS4uM2IzN2ZhZmE2NWIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv c3lzdmlld3Mub3V0CkBAIC0xNTEsNiArMTUxLDcgQEAgc2VsZWN0IG5hbWUsIHNldHRpbmcgZnJv bSBwZ19zZXR0aW5ncyB3aGVyZSBuYW1lIGxpa2UgJ2VuYWJsZSUnOwogIGVuYWJsZV9hc3luY19h cHBlbmQgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX2JpdG1hcHNjYW4gICAgICAgICAgICAgIHwg b24KICBlbmFibGVfZGlzdGluY3RfcmVvcmRlcmluZyAgICAgfCBvbgorIGVuYWJsZV9lYWdlcl9h Z2dyZWdhdGUgICAgICAgICB8IG9uCiAgZW5hYmxlX2dhdGhlcm1lcmdlICAgICAgICAgICAgIHwg b24KICBlbmFibGVfZ3JvdXBfYnlfcmVvcmRlcmluZyAgICAgfCBvbgogIGVuYWJsZV9oYXNoYWdn ICAgICAgICAgICAgICAgICB8IG9uCkBAIC0xNzIsNyArMTczLDcgQEAgc2VsZWN0IG5hbWUsIHNl dHRpbmcgZnJvbSBwZ19zZXR0aW5ncyB3aGVyZSBuYW1lIGxpa2UgJ2VuYWJsZSUnOwogIGVuYWJs ZV9zZXFzY2FuICAgICAgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX3NvcnQgICAgICAgICAgICAg ICAgICAgIHwgb24KICBlbmFibGVfdGlkc2NhbiAgICAgICAgICAgICAgICAgfCBvbgotKDI0IHJv d3MpCisoMjUgcm93cykKIAogLS0gVGhlcmUgYXJlIGFsd2F5cyB3YWl0IGV2ZW50IGRlc2NyaXB0 aW9ucyBmb3IgdmFyaW91cyB0eXBlcy4gIEluamVjdGlvblBvaW50CiAtLSBtYXkgYmUgcHJlc2Vu dCBvciBhYnNlbnQsIGRlcGVuZGluZyBvbiBoaXN0b3J5IHNpbmNlIGxhc3QgcG9zdG1hc3RlciBz dGFydC4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9z cmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4IGE0MjRiZTJhNmJmLi45Mjlj YWIxNGM0NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQor KysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC0xMjMsNyArMTIzLDcg QEAgdGVzdDogcGxhbmNhY2hlIGxpbWl0IHBscGdzcWwgY29weTIgdGVtcCBkb21haW4gcmFuZ2Vm dW5jcyBwcmVwYXJlIGNvbnZlcnNpb24gdHIKICMgVGhlIHN0YXRzIHRlc3QgcmVzZXRzIHN0YXRz LCBzbyBub3RoaW5nIGVsc2UgbmVlZGluZyBzdGF0cyBhY2Nlc3MgY2FuIGJlIGluCiAjIHRoaXMg Z3JvdXAuCiAjIC0tLS0tLS0tLS0KLXRlc3Q6IHBhcnRpdGlvbl9qb2luIHBhcnRpdGlvbl9wcnVu ZSByZWxvcHRpb25zIGhhc2hfcGFydCBpbmRleGluZyBwYXJ0aXRpb25fYWdncmVnYXRlIHBhcnRp dGlvbl9pbmZvIHR1cGxlc29ydCBleHBsYWluIGNvbXByZXNzaW9uIG1lbW9pemUgc3RhdHMgcHJl ZGljYXRlIG51bWEKK3Rlc3Q6IHBhcnRpdGlvbl9qb2luIHBhcnRpdGlvbl9wcnVuZSByZWxvcHRp b25zIGhhc2hfcGFydCBpbmRleGluZyBwYXJ0aXRpb25fYWdncmVnYXRlIHBhcnRpdGlvbl9pbmZv IHR1cGxlc29ydCBleHBsYWluIGNvbXByZXNzaW9uIG1lbW9pemUgc3RhdHMgcHJlZGljYXRlIG51 bWEgZWFnZXJfYWdncmVnYXRlCiAKICMgZXZlbnRfdHJpZ2dlciBkZXBlbmRzIG9uIGNyZWF0ZV9h bSBhbmQgY2Fubm90IHJ1biBjb25jdXJyZW50bHkgd2l0aAogIyBhbnkgdGVzdCB0aGF0IHJ1bnMg RERMCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9lYWdlcl9hZ2dyZWdhdGUuc3Fs IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZWFnZXJfYWdncmVnYXRlLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWRhODc0OWE2Y2IKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9lYWdlcl9hZ2dyZWdhdGUuc3FsCkBAIC0wLDAgKzEsMTk0 IEBACistLQorLS0gRUFHRVIgQUdHUkVHQVRJT04KKy0tIFRlc3Qgd2UgY2FuIHB1c2ggYWdncmVn YXRpb24gZG93biBiZWxvdyBqb2luCistLQorCistLSBFbmFibGUgZWFnZXIgYWdncmVnYXRpb24s IHdoaWNoIGJ5IGRlZmF1bHQgaXMgZGlzYWJsZWQuCitTRVQgZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0 ZSBUTyBvbjsKKworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190MSAoYSBpbnQsIGIgaW50LCBjIGRv dWJsZSBwcmVjaXNpb24pOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190MiAoYSBpbnQsIGIgaW50 LCBjIGRvdWJsZSBwcmVjaXNpb24pOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190MyAoYSBpbnQs IGIgaW50LCBjIGRvdWJsZSBwcmVjaXNpb24pOworCitJTlNFUlQgSU5UTyBlYWdlcl9hZ2dfdDEg U0VMRUNUIGksIGksIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMClpOworSU5TRVJUIElO VE8gZWFnZXJfYWdnX3QyIFNFTEVDVCBpLCBpJTEwLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDEwMDApaTsKK0lOU0VSVCBJTlRPIGVhZ2VyX2FnZ190MyBTRUxFQ1QgaSUxMCwgaSUxMCwgaSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKWk7CisKK0FOQUxZWkUgZWFnZXJfYWdnX3QxOwor QU5BTFlaRSBlYWdlcl9hZ2dfdDI7CitBTkFMWVpFIGVhZ2VyX2FnZ190MzsKKworCistLQorLS0g VGVzdCBlYWdlciBhZ2dyZWdhdGlvbiBvdmVyIGJhc2UgcmVsCistLQorCistLSBQZXJmb3JtIHNj YW4gb2YgYSB0YWJsZSwgYWdncmVnYXRlIHRoZSByZXN1bHQsIGpvaW4gaXQgdG8gdGhlIG90aGVy IHRhYmxlCistLSBhbmQgZmluYWxpemUgdGhlIGFnZ3JlZ2F0aW9uLgorRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0 MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0MS5hIE9SREVS IEJZIHQxLmE7CitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpP SU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEgT1JERVIgQlkg dDEuYTsKKworLS0gUHJvZHVjZSByZXN1bHRzIHdpdGggc29ydGluZyBhZ2dyZWdhdGlvbgorU0VU IGVuYWJsZV9oYXNoYWdnIFRPIG9mZjsKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQor U0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2Fn Z190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CitTRUxF Q1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3Qy IHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKworUkVTRVQg ZW5hYmxlX2hhc2hhZ2c7CisKKworLS0KKy0tIFRlc3QgZWFnZXIgYWdncmVnYXRpb24gb3ZlciBq b2luIHJlbAorLS0KKworLS0gUGVyZm9ybSBqb2luIG9mIHRhYmxlcywgYWdncmVnYXRlIHRoZSBy ZXN1bHQsIGpvaW4gaXQgdG8gdGhlIG90aGVyIHRhYmxlCistLSBhbmQgZmluYWxpemUgdGhlIGFn Z3JlZ2F0aW9uLgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLmEsIGF2 Zyh0Mi5jICsgdDMuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIg T04gdDEuYiA9IHQyLmIgSk9JTiBlYWdlcl9hZ2dfdDMgdDMgT04gdDIuYSA9IHQzLmEgR1JPVVAg QlkgdDEuYSBPUkRFUiBCWSB0MS5hOworU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jICsgdDMuYykgRlJP TSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgSk9J TiBlYWdlcl9hZ2dfdDMgdDMgT04gdDIuYSA9IHQzLmEgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0 MS5hOworCistLSBQcm9kdWNlIHJlc3VsdHMgd2l0aCBzb3J0aW5nIGFnZ3JlZ2F0aW9uCitTRVQg ZW5hYmxlX2hhc2hhZ2cgVE8gb2ZmOworCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitT RUxFQ1QgdDEuYSwgYXZnKHQyLmMgKyB0My5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVh Z2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBKT0lOIGVhZ2VyX2FnZ190MyB0MyBPTiB0Mi5h ID0gdDMuYSBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CitTRUxFQ1QgdDEuYSwgYXZnKHQy LmMgKyB0My5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0 MS5iID0gdDIuYiBKT0lOIGVhZ2VyX2FnZ190MyB0MyBPTiB0Mi5hID0gdDMuYSBHUk9VUCBCWSB0 MS5hIE9SREVSIEJZIHQxLmE7CisKK1JFU0VUIGVuYWJsZV9oYXNoYWdnOworCisKKy0tCistLSBU ZXN0IHRoYXQgZWFnZXIgYWdncmVnYXRpb24gd29ya3MgZm9yIG91dGVyIGpvaW4KKy0tCisKKy0t IEVuc3VyZSBhZ2dyZWdhdGlvbiBjYW4gYmUgcHVzaGVkIGRvd24gdG8gdGhlIG5vbi1udWxsYWJs ZSBzaWRlCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQy LmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIFJJR0hUIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQx LmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKK1NFTEVDVCB0MS5hLCBhdmco dDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgUklHSFQgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04g dDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworCistLSBFbnN1cmUgYWdn cmVnYXRpb24gY2Fubm90IGJlIHB1c2hlZCBkb3duIHRvIHRoZSBudWxsYWJsZSBzaWRlCitFWFBM QUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDIuYiwgYXZnKHQyLmMpIEZST00gZWFn ZXJfYWdnX3QxIHQxIExFRlQgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JP VVAgQlkgdDIuYiBPUkRFUiBCWSB0Mi5iOworU0VMRUNUIHQyLmIsIGF2Zyh0Mi5jKSBGUk9NIGVh Z2VyX2FnZ190MSB0MSBMRUZUIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdS T1VQIEJZIHQyLmIgT1JERVIgQlkgdDIuYjsKKworCistLQorLS0gVGVzdCB0aGF0IGVhZ2VyIGFn Z3JlZ2F0aW9uIHdvcmtzIGZvciBwYXJhbGxlbCBwbGFucworLS0KKworU0VUIHBhcmFsbGVsX3Nl dHVwX2Nvc3Q9MDsKK1NFVCBwYXJhbGxlbF90dXBsZV9jb3N0PTA7CitTRVQgbWluX3BhcmFsbGVs X3RhYmxlX3NjYW5fc2l6ZT0wOworU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXI9 NDsKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLmEsIGF2Zyh0Mi5j KSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIu YiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZS T00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdS T1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKworUkVTRVQgcGFyYWxsZWxfc2V0dXBfY29zdDsK K1JFU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3Q7CitSRVNFVCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nh bl9zaXplOworUkVTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlcjsKKworCitEUk9Q IFRBQkxFIGVhZ2VyX2FnZ190MTsKK0RST1AgVEFCTEUgZWFnZXJfYWdnX3QyOworRFJPUCBUQUJM RSBlYWdlcl9hZ2dfdDM7CisKKworLS0KKy0tIFRlc3QgZWFnZXIgYWdncmVnYXRpb24gZm9yIHBh cnRpdGlvbndpc2Ugam9pbgorLS0KKworLS0gRW5hYmxlIHBhcnRpdGlvbndpc2UgYWdncmVnYXRl LCB3aGljaCBieSBkZWZhdWx0IGlzIGRpc2FibGVkLgorU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNl X2FnZ3JlZ2F0ZSBUTyB0cnVlOworLS0gRW5hYmxlIHBhcnRpdGlvbndpc2Ugam9pbiwgd2hpY2gg YnkgZGVmYXVsdCBpcyBkaXNhYmxlZC4KK1NFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9qb2luIFRP IHRydWU7CisKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMSh4IGludCwgeSBpbnQpIFBBUlRJ VElPTiBCWSBSQU5HRSh4KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMV9wMSBQQVJUSVRJ T04gT0YgZWFnZXJfYWdnX3RhYjEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoNSk7CitDUkVBVEUg VEFCTEUgZWFnZXJfYWdnX3RhYjFfcDIgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWIxIEZPUiBW QUxVRVMgRlJPTSAoNSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMV9wMyBQ QVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYjEgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KTsK K0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMih4IGludCwgeSBpbnQpIFBBUlRJVElPTiBCWSBS QU5HRSh5KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMl9wMSBQQVJUSVRJT04gT0YgZWFn ZXJfYWdnX3RhYjIgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoNSk7CitDUkVBVEUgVEFCTEUgZWFn ZXJfYWdnX3RhYjJfcDIgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWIyIEZPUiBWQUxVRVMgRlJP TSAoNSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMl9wMyBQQVJUSVRJT04g T0YgZWFnZXJfYWdnX3RhYjIgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KTsKK0lOU0VSVCBJ TlRPIGVhZ2VyX2FnZ190YWIxIFNFTEVDVCBpICUgMTUsIGkgJSAxMCBGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCAxMDAwKSBpOworSU5TRVJUIElOVE8gZWFnZXJfYWdnX3RhYjIgU0VMRUNUIGkgJSAx MCwgaSAlIDE1IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIGk7CisKK0FOQUxZWkUgZWFn ZXJfYWdnX3RhYjE7CitBTkFMWVpFIGVhZ2VyX2FnZ190YWIyOworCistLSBXaGVuIEdST1VQIEJZ IGNsYXVzZSBtYXRjaGVzOyBmdWxsIGFnZ3JlZ2F0aW9uIGlzIHBlcmZvcm1lZCBmb3IgZWFjaCBw YXJ0aXRpb24uCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEueCwgc3Vt KHQxLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWIxIHQxLCBlYWdlcl9hZ2dfdGFiMiB0 MiBXSEVSRSB0MS54ID0gdDIueSBHUk9VUCBCWSB0MS54IE9SREVSIEJZIHQxLng7CitTRUxFQ1Qg dDEueCwgc3VtKHQxLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWIxIHQxLCBlYWdlcl9h Z2dfdGFiMiB0MiBXSEVSRSB0MS54ID0gdDIueSBHUk9VUCBCWSB0MS54IE9SREVSIEJZIHQxLng7 CisKKy0tIEdST1VQIEJZIGhhdmluZyBvdGhlciBtYXRjaGluZyBrZXkKK0VYUExBSU4gKFZFUkJP U0UsIENPU1RTIE9GRikKK1NFTEVDVCB0Mi55LCBzdW0odDEueSksIGNvdW50KCopIEZST00gZWFn ZXJfYWdnX3RhYjEgdDEsIGVhZ2VyX2FnZ190YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQ IEJZIHQyLnkgT1JERVIgQlkgdDIueTsKK1NFTEVDVCB0Mi55LCBzdW0odDEueSksIGNvdW50KCop IEZST00gZWFnZXJfYWdnX3RhYjEgdDEsIGVhZ2VyX2FnZ190YWIyIHQyIFdIRVJFIHQxLnggPSB0 Mi55IEdST1VQIEJZIHQyLnkgT1JERVIgQlkgdDIueTsKKworLS0gV2hlbiBHUk9VUCBCWSBjbGF1 c2UgZG9lcyBub3QgbWF0Y2g7IHBhcnRpYWwgYWdncmVnYXRpb24gaXMgcGVyZm9ybWVkIGZvciBl YWNoIHBhcnRpdGlvbi4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0Mi54 LCBzdW0odDEueCksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYjEgdDEsIGVhZ2VyX2FnZ190 YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQyLnggSEFWSU5HIGF2Zyh0MS54KSA+ IDUgT1JERVIgQlkgdDIueDsKK1NFTEVDVCB0Mi54LCBzdW0odDEueCksIGNvdW50KCopIEZST00g ZWFnZXJfYWdnX3RhYjEgdDEsIGVhZ2VyX2FnZ190YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdS T1VQIEJZIHQyLnggSEFWSU5HIGF2Zyh0MS54KSA+IDUgT1JERVIgQlkgdDIueDsKKworLS0gQ2hl Y2sgd2l0aCBlYWdlciBhZ2dyZWdhdGlvbiBvdmVyIGpvaW4gcmVsCistLSBmdWxsIGFnZ3JlZ2F0 aW9uCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEueCwgc3VtKHQyLnkg KyB0My55KSBGUk9NIGVhZ2VyX2FnZ190YWIxIHQxIEpPSU4gZWFnZXJfYWdnX3RhYjEgdDIgT04g dDEueCA9IHQyLnggSk9JTiBlYWdlcl9hZ2dfdGFiMSB0MyBPTiB0Mi54ID0gdDMueCBHUk9VUCBC WSB0MS54IE9SREVSIEJZIHQxLng7CitTRUxFQ1QgdDEueCwgc3VtKHQyLnkgKyB0My55KSBGUk9N IGVhZ2VyX2FnZ190YWIxIHQxIEpPSU4gZWFnZXJfYWdnX3RhYjEgdDIgT04gdDEueCA9IHQyLngg Sk9JTiBlYWdlcl9hZ2dfdGFiMSB0MyBPTiB0Mi54ID0gdDMueCBHUk9VUCBCWSB0MS54IE9SREVS IEJZIHQxLng7CisKKy0tIHBhcnRpYWwgYWdncmVnYXRpb24KK1NFVCBlbmFibGVfaGFzaGFnZyBU TyBvZmY7CitTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciBUTyAwOworRVhQTEFJ TiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQzLnksIHN1bSh0Mi55ICsgdDMueSkgRlJP TSBlYWdlcl9hZ2dfdGFiMSB0MSBKT0lOIGVhZ2VyX2FnZ190YWIxIHQyIE9OIHQxLnggPSB0Mi54 IEpPSU4gZWFnZXJfYWdnX3RhYjEgdDMgT04gdDIueCA9IHQzLnggR1JPVVAgQlkgdDMueSBPUkRF UiBCWSB0My55OworU0VMRUNUIHQzLnksIHN1bSh0Mi55ICsgdDMueSkgRlJPTSBlYWdlcl9hZ2df dGFiMSB0MSBKT0lOIGVhZ2VyX2FnZ190YWIxIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFnZXJf YWdnX3RhYjEgdDMgT04gdDIueCA9IHQzLnggR1JPVVAgQlkgdDMueSBPUkRFUiBCWSB0My55Owor UkVTRVQgZW5hYmxlX2hhc2hhZ2c7CitSRVNFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0 aGVyOworCitEUk9QIFRBQkxFIGVhZ2VyX2FnZ190YWIxOworRFJPUCBUQUJMRSBlYWdlcl9hZ2df dGFiMjsKKworCistLQorLS0gVGVzdCB3aXRoIG11bHRpLWxldmVsIHBhcnRpdGlvbmluZyBzY2hl bWUKKy0tCitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbCh4IGludCwgeSBpbnQpIFBBUlRJ VElPTiBCWSBSQU5HRSh4KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sX3AxIFBBUlRJ VElPTiBPRiBlYWdlcl9hZ2dfdGFiX21sIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwKTsKK0NS RUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sX3AyIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFi X21sIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCkgUEFSVElUSU9OIEJZIFJBTkdFKHgpOwor Q1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWJfbWxfcDJfczEgUEFSVElUSU9OIE9GIGVhZ2VyX2Fn Z190YWJfbWxfcDIgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KTsKK0NSRUFURSBUQUJMRSBl YWdlcl9hZ2dfdGFiX21sX3AyX3MyIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiX21sX3AyIEZP UiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9t bF9wMyBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYl9tbCBGT1IgVkFMVUVTIEZST00gKDIwKSBU TyAoMzApIFBBUlRJVElPTiBCWSBSQU5HRSh4KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFi X21sX3AzX3MxIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiX21sX3AzIEZPUiBWQUxVRVMgRlJP TSAoMjApIFRPICgyNSk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbF9wM19zMiBQQVJU SVRJT04gT0YgZWFnZXJfYWdnX3RhYl9tbF9wMyBGT1IgVkFMVUVTIEZST00gKDI1KSBUTyAoMzAp OworSU5TRVJUIElOVE8gZWFnZXJfYWdnX3RhYl9tbCBTRUxFQ1QgaSAlIDMwLCBpICUgMzAgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgaTsKKworQU5BTFlaRSBlYWdlcl9hZ2dfdGFiX21s OworCistLSBXaGVuIEdST1VQIEJZIGNsYXVzZSBtYXRjaGVzOyBmdWxsIGFnZ3JlZ2F0aW9uIGlz IHBlcmZvcm1lZCBmb3IgZWFjaCBwYXJ0aXRpb24uCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBP RkYpCitTRUxFQ1QgdDEueCwgc3VtKHQyLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJf bWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEdST1VQIEJZIHQx LnggT1JERVIgQlkgdDEueDsKK1NFTEVDVCB0MS54LCBzdW0odDIueSksIGNvdW50KCopIEZST00g ZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9IHQy LnggR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworCistLSBXaGVuIEdST1VQIEJZIGNsYXVz ZSBkb2VzIG5vdCBtYXRjaDsgcGFydGlhbCBhZ2dyZWdhdGlvbiBpcyBwZXJmb3JtZWQgZm9yIGVh Y2ggcGFydGl0aW9uLgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLnks IHN1bSh0Mi55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJf YWdnX3RhYl9tbCB0MiBPTiB0MS54ID0gdDIueCBHUk9VUCBCWSB0MS55IE9SREVSIEJZIHQxLnk7 CitTRUxFQ1QgdDEueSwgc3VtKHQyLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwg dDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEdST1VQIEJZIHQxLnkg T1JERVIgQlkgdDEueTsKKworLS0gQ2hlY2sgd2l0aCBlYWdlciBhZ2dyZWdhdGlvbiBvdmVyIGpv aW4gcmVsCistLSBmdWxsIGFnZ3JlZ2F0aW9uCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYp CitTRUxFQ1QgdDEueCwgc3VtKHQyLnkgKyB0My55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2df dGFiX21sIHQxIEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0MS54ID0gdDIueCBKT0lOIGVh Z2VyX2FnZ190YWJfbWwgdDMgb24gdDIueCA9IHQzLnggR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0 MS54OworU0VMRUNUIHQxLngsIHN1bSh0Mi55ICsgdDMueSksIGNvdW50KCopIEZST00gZWFnZXJf YWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9IHQyLnggSk9J TiBlYWdlcl9hZ2dfdGFiX21sIHQzIG9uIHQyLnggPSB0My54IEdST1VQIEJZIHQxLnggT1JERVIg QlkgdDEueDsKKworLS0gcGFydGlhbCBhZ2dyZWdhdGlvbgorRVhQTEFJTiAoVkVSQk9TRSwgQ09T VFMgT0ZGKQorU0VMRUNUIHQzLnksIHN1bSh0Mi55ICsgdDMueSksIGNvdW50KCopIEZST00gZWFn ZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9IHQyLngg Sk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQzIG9uIHQyLnggPSB0My54IEdST1VQIEJZIHQzLnkgT1JE RVIgQlkgdDMueTsKK1NFTEVDVCB0My55LCBzdW0odDIueSArIHQzLnkpLCBjb3VudCgqKSBGUk9N IGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0 Mi54IEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MyBvbiB0Mi54ID0gdDMueCBHUk9VUCBCWSB0My55 IE9SREVSIEJZIHQzLnk7CisKK0RST1AgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbDsKZGlmZiAtLWdp dCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKaW5kZXggMzJkNmU3MThhZGMuLjYxYjdlNmVhMDQ5IDEwMDY0NAotLS0g YS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdApAQCAtNDIsNiArNDIsNyBAQCBBZnRlclRyaWdnZXJzVGFibGVEYXRh CiBBZnRlclRyaWdnZXJzVHJhbnNEYXRhCiBBZ2cKIEFnZ0NsYXVzZUNvc3RzCitBZ2dDbGF1c2VJ bmZvCiBBZ2dJbmZvCiBBZ2dQYXRoCiBBZ2dTcGxpdApAQCAtMTExMSw2ICsxMTEyLDcgQEAgR3Jv dXBQYXRoRXh0cmFEYXRhCiBHcm91cFJlc3VsdFBhdGgKIEdyb3VwU3RhdGUKIEdyb3VwVmFySW5m bworR3JvdXBpbmdFeHBySW5mbwogR3JvdXBpbmdGdW5jCiBHcm91cGluZ1NldAogR3JvdXBpbmdT ZXREYXRhCkBAIC0yNDY0LDYgKzI0NjYsNyBAQCBSZWluZGV4T2JqZWN0VHlwZQogUmVpbmRleFBh cmFtcwogUmVpbmRleFN0bXQKIFJlaW5kZXhUeXBlCitSZWxBZ2dJbmZvCiBSZWxGaWxlTG9jYXRv cgogUmVsRmlsZUxvY2F0b3JCYWNrZW5kCiBSZWxGaWxlTnVtYmVyCi0tIAoyLjQzLjAKCg== --000000000000a506cf06386ff107--