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 1uemWh-00EHwV-Us for pgsql-hackers@arkaria.postgresql.org; Thu, 24 Jul 2025 03:21:49 +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 1uemWf-005rRP-Sb for pgsql-hackers@arkaria.postgresql.org; Thu, 24 Jul 2025 03:21:46 +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 1uemWe-005rRH-T3 for pgsql-hackers@lists.postgresql.org; Thu, 24 Jul 2025 03:21:45 +0000 Received: from mail-yb1-xb30.google.com ([2607:f8b0:4864:20::b30]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uemWc-000UFA-2o for pgsql-hackers@lists.postgresql.org; Thu, 24 Jul 2025 03:21:43 +0000 Received: by mail-yb1-xb30.google.com with SMTP id 3f1490d57ef6-e75668006b9so455895276.3 for ; Wed, 23 Jul 2025 20:21:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1753327302; x=1753932102; 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=WgT6Y3ZD77Oc5HNJxXFFV0/8Xa1oXs2TyDXx1dZSxxg=; b=ZRrR3/WaD4GcFQ61DTQoGFlFxWpAlROKdKUqZL+JI7QvBBSfyqRrvJn+lFYoq2ehLI 6Z/nnnEKwGWEJ0dI2WWvPR/QcVeDPwPld7i/1uM5hBSLDHQj7v/5Z4/os5cE5uiSsAZ2 sO3i3dcG0KYBtFUlmUc3dE7l3zohD9qSJZOQWWgpmxen3VgKJWJtfATZzw9lIwPkaNr6 fPjXoxBd1dimn2Esw940nPcPz9b5/nctIGDRoYTxRhPAayy5bNEI2vXlFgwwjwTQ8smn a7rtqudHti+lAJ5OSuXG1MN6drPK2kWs1J8DHJJwqRH7mGukiwZUVQjYYP39f0waaY4d 6zTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753327302; x=1753932102; 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=WgT6Y3ZD77Oc5HNJxXFFV0/8Xa1oXs2TyDXx1dZSxxg=; b=gqvHzSIIYuAHx/Lz1z5SdvJyLYbPPXQUfOWgFvGiKKDf4GTWfFgDKQKDAyqV5z8hOJ 9RGLMeFTkzYxO6UpMvj7EtKV1V/oX9VThvhT5BIeD5o2pOHpnBsiWncJodWLl2nLkf59 0s6Wk2RHjLU0PbbDLg19sXy+2eCBWUMvlXT4q1L+Gzm1fr3yaAGXKyT2aDEEISWZtcch Z7tKs6/YuphaAEoOv84p+U6NGCHjYMeeC5T9VZJDqZlJXyqrvZBnfjWQlXuFoLn4Tjg5 NX7pHf10QEw9f6KG8yaQS7IWGgCy6NDimhGyP6B1JCc3HhN6iXBCj3lbL7t2nUaE3m58 jNBg== X-Forwarded-Encrypted: i=1; AJvYcCUEgA80zFPC8R9riR5unzUfNF3RrvH3lHTLoJa41HM0oYWttzVEZ4dGiP6mXswdeZ6VUH2SDMAx73gN/xJJ@lists.postgresql.org X-Gm-Message-State: AOJu0YwEDAuQw09deWnXGfTFTp9bBI1EVKvb5QPj989x2WvldqqRxxly CIugFys/gOmB0KBlyCneEp5nBBKFUuw024d9+Sh0Fan3A5RA/xtgoEhN+guftKKtOlF6+wfs3OP txaaRhBhqoH5AdukeEJ2V7zVo7VSjWcE= X-Gm-Gg: ASbGncuTCPHvJSicJ9s4yE30WGhsv1Z4ZI6KzxS+W7hl649Rxpc+pE2j2B3E+KWjPdk Q+A0dJlcQ3lMiJV3QqERGBvexZT2c8JbfeusNdPDVK4JSf6QqcjPEOA8t30Cls3TkFYZjg1wwbD /XAe/Z2O2y+XDcFB46tXHLcfxPBnTNXZPEU1wxocP4TkKjIiPHGWJUgsCi1KlSbRiQzIXcqtjlZ bBjneAXZF47RVPoACIgOtF9YtdTySjUI7T/4tcBfA== X-Google-Smtp-Source: AGHT+IGzAhHlL1oBDIeOJKDpiujTauC8pC4hpWGDWlN3IySjyrc0ZMj46xISJj09oG9g0UIprXc0/tvXVPgIX8iSBio= X-Received: by 2002:a05:6902:2113:b0:e8b:4c49:725e with SMTP id 3f1490d57ef6-e8dc5897771mr7277206276.6.1753327301944; Wed, 23 Jul 2025 20:21:41 -0700 (PDT) MIME-Version: 1.0 References: <87il22cj51.fsf@163.com> In-Reply-To: From: Richard Guo Date: Thu, 24 Jul 2025 12:21:30 +0900 X-Gm-Features: Ac12FXxtTU_Q-3MrtWSjoAIhIcYXJW9v7DUKIF0nsob1q1avgYb0oaZCUYJH1-g 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="000000000000022149063aa4539e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000022149063aa4539e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Jun 26, 2025 at 11:01=E2=80=AFAM Richard Guo wrote: > 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. This patch no longer applies; here's a rebased version. Nothing essential has changed. Thanks Richard --000000000000022149063aa4539e Content-Type: application/octet-stream; name="v18-0001-Implement-Eager-Aggregation.patch" Content-Disposition: attachment; filename="v18-0001-Implement-Eager-Aggregation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mdgtskrr0 RnJvbSAyM2FiM2E4YzQ3NmUxMzBhOTNiODQzYzZhZmNiYTE0OTY0MTE2OWZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogVHVlLCAxMSBKdW4gMjAyNCAxNTo1OToxOSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjE4 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 NDUyICsrKysrKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvam9pbnJlbHMuYyAgICAgICAg IHwgIDE5MyArKysKIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2luaXRzcGxhbi5jICAgICAg ICB8ICAzMTMgKysrKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm1haW4uYyAgICAg ICAgIHwgICAgOSArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgICAgICAg ICAgfCAgMTI0ICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMgICAg ICAgfCAgIDU5ICsKIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMgICAgICAg ICB8ICAgMTIgKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYyAgICAgICAg ICB8ICA2MzYgKysrKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAg ICAgICAgICB8ICAgMTAgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYu c2FtcGxlIHwgICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCAgICAgICAgICAg ICAgICAgfCAgMTMwICsrCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaCAgICAgICAg ICAgICAgfCAgICA1ICsKIHNyYy9pbmNsdWRlL29wdGltaXplci9wYXRocy5oICAgICAgICAgICAg ICAgICB8ICAgIDUgKwogc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BsYW5tYWluLmggICAgICAgICAg ICAgIHwgICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VhZ2VyX2FnZ3JlZ2F0ZS5v dXQgfCAxMzM0ICsrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5 c3ZpZXdzLm91dCAgICAgICAgfCAgICAzICstCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3Nj aGVkdWxlICAgICAgICAgICAgfCAgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9lYWdlcl9h Z2dyZWdhdGUuc3FsICAgICAgfCAgMTk0ICsrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QgICAgICAgICAgICAgIHwgICAgMyArCiAyMyBmaWxlcyBjaGFuZ2VkLCAzNTk3IGluc2Vy dGlvbnMoKyksIDYzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvZWFnZXJfYWdncmVnYXRlLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2VhZ2VyX2FnZ3JlZ2F0ZS5zcWwKCmRpZmYgLS1naXQgYS9jb250 cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0IGIvY29udHJpYi9wb3N0 Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAppbmRleCA0YjZlNDlhNWQ5NS4uOGRl YTNkZWU2NjcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3Rn cmVzX2Zkdy5vdXQKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNf ZmR3Lm91dApAQCAtMzcxMywzMCArMzcxMywzMyBAQCBzZWxlY3QgY291bnQodDEuYzMpIGZyb20g 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 bmZpZy5zZ21sCmluZGV4IDIwY2NiMmQ2YjU0Li4zOTViY2E2Y2Y5NSAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAt NTQ3NCw2ICs1NDc0LDIxIEBAIEFOWSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+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 aXplci9wYXRoL2FsbHBhdGhzLmMKaW5kZXggNmNjNjk2NmIwNjAuLmFjOTIyZGJmNTZhIDEwMDY0 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 X3BhdGhzX3RvX2FwcGVuZF9yZWwKQEAgLTMzMzUsNiArMzQxNywzMjggQEAgZ2VuZXJhdGVfdXNl 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 IHRoZSBjaGVhcGVzdC10b3RhbCBwYXRoIGFuZCBpbmNyZW1lbnRhbCBzb3J0IG9uIGFueSBwYXRo cworCQkgKiB3aXRoIHByZXNvcnRlZCBrZXlzLgorCQkgKgorCQkgKiBUbyBzYXZlIHBsYW5uaW5n IHRpbWUsIHdlIGlnbm9yZSBwYXJhbWV0ZXJpemVkIGlucHV0IHBhdGhzIHVubGVzcworCQkgKiB0 aGV5IGFyZSB0aGUgY2hlYXBlc3QtdG90YWwgcGF0aC4KKwkJICovCisJCWZvcmVhY2gobGMsIHJl bC0+cGF0aGxpc3QpCisJCXsKKwkJCVBhdGgJICAgKmlucHV0X3BhdGggPSAoUGF0aCAqKSBsZmly c3QobGMpOworCQkJUGF0aAkgICAqcGF0aDsKKwkJCWJvb2wJCWlzX3NvcnRlZDsKKwkJCWludAkJ CXByZXNvcnRlZF9rZXlzOworCisJCQkvKgorCQkJICogSWdub3JlIHBhcmFtZXRlcml6ZWQgcGF0 aHMgdGhhdCBhcmUgbm90IHRoZSBjaGVhcGVzdC10b3RhbAorCQkJICogcGF0aC4KKwkJCSAqLwor CQkJaWYgKGlucHV0X3BhdGgtPnBhcmFtX2luZm8gJiYKKwkJCQlpbnB1dF9wYXRoICE9IGNoZWFw ZXN0X3RvdGFsX3BhdGgpCisJCQkJY29udGludWU7CisKKwkJCWlzX3NvcnRlZCA9IHBhdGhrZXlz X2NvdW50X2NvbnRhaW5lZF9pbihhZ2dfaW5mby0+Z3JvdXBfcGF0aGtleXMsCisJCQkJCQkJCQkJ CQkJaW5wdXRfcGF0aC0+cGF0aGtleXMsCisJCQkJCQkJCQkJCQkJJnByZXNvcnRlZF9rZXlzKTsK KworCQkJLyoKKwkJCSAqIElnbm9yZSBwYXRocyB0aGF0IGFyZSBub3Qgc3VpdGFibHkgb3IgcGFy dGlhbGx5IHNvcnRlZCwgdW5sZXNzCisJCQkgKiB0aGV5IGFyZSB0aGUgY2hlYXBlc3QgdG90YWwg cGF0aCAobm8gbmVlZCB0byBkZWFsIHdpdGggcGF0aHMKKwkJCSAqIHdoaWNoIGhhdmUgcHJlc29y dGVkIGtleXMgd2hlbiBpbmNyZW1lbnRhbCBzb3J0IGlzIGRpc2FibGVkKS4KKwkJCSAqLworCQkJ aWYgKCFpc19zb3J0ZWQgJiYgaW5wdXRfcGF0aCAhPSBjaGVhcGVzdF90b3RhbF9wYXRoICYmCisJ CQkJKHByZXNvcnRlZF9rZXlzID09IDAgfHwgIWVuYWJsZV9pbmNyZW1lbnRhbF9zb3J0KSkKKwkJ CQljb250aW51ZTsKKworCQkJLyoKKwkJCSAqIFNpbmNlIHRoZSBwYXRoIG9yaWdpbmF0ZXMgZnJv bSBhIG5vbi1ncm91cGVkIHJlbGF0aW9uIHRoYXQgaXMKKwkJCSAqIG5vdCBhd2FyZSBvZiBlYWdl ciBhZ2dyZWdhdGlvbiwgd2UgbXVzdCBlbnN1cmUgdGhhdCBpdCBwcm92aWRlcworCQkJICogdGhl IGNvcnJlY3QgaW5wdXQgZm9yIHBhcnRpYWwgYWdncmVnYXRpb24uCisJCQkgKi8KKwkJCXBhdGgg PSAoUGF0aCAqKSBjcmVhdGVfcHJvamVjdGlvbl9wYXRoKHJvb3QsCisJCQkJCQkJCQkJCQkgICBn cm91cGVkX3JlbCwKKwkJCQkJCQkJCQkJCSAgIGlucHV0X3BhdGgsCisJCQkJCQkJCQkJCQkgICBh Z2dfaW5mby0+YWdnX2lucHV0KTsKKworCQkJaWYgKCFpc19zb3J0ZWQpCisJCQl7CisJCQkJLyoK KwkJCQkgKiBXZSd2ZSBubyBuZWVkIHRvIGNvbnNpZGVyIGJvdGggYSBzb3J0IGFuZCBpbmNyZW1l bnRhbCBzb3J0LgorCQkJCSAqIFdlJ2xsIGp1c3QgZG8gYSBzb3J0IGlmIHRoZXJlIGFyZSBubyBw cmVzb3J0ZWQga2V5cyBhbmQgYW4KKwkJCQkgKiBpbmNyZW1lbnRhbCBzb3J0IHdoZW4gdGhlcmUg YXJlIHByZXNvcnRlZCBrZXlzLgorCQkJCSAqLworCQkJCWlmIChwcmVzb3J0ZWRfa2V5cyA9PSAw IHx8ICFlbmFibGVfaW5jcmVtZW50YWxfc29ydCkKKwkJCQkJcGF0aCA9IChQYXRoICopIGNyZWF0 ZV9zb3J0X3BhdGgocm9vdCwKKwkJCQkJCQkJCQkJCQkgZ3JvdXBlZF9yZWwsCisJCQkJCQkJCQkJ CQkJIHBhdGgsCisJCQkJCQkJCQkJCQkJIGFnZ19pbmZvLT5ncm91cF9wYXRoa2V5cywKKwkJCQkJ CQkJCQkJCQkgLTEuMCk7CisJCQkJZWxzZQorCQkJCQlwYXRoID0gKFBhdGggKikgY3JlYXRlX2lu Y3JlbWVudGFsX3NvcnRfcGF0aChyb290LAorCQkJCQkJCQkJCQkJCQkJCSBncm91cGVkX3JlbCwK KwkJCQkJCQkJCQkJCQkJCQkgcGF0aCwKKwkJCQkJCQkJCQkJCQkJCQkgYWdnX2luZm8tPmdyb3Vw X3BhdGhrZXlzLAorCQkJCQkJCQkJCQkJCQkJCSBwcmVzb3J0ZWRfa2V5cywKKwkJCQkJCQkJCQkJ CQkJCQkgLTEuMCk7CisJCQl9CisKKwkJCS8qCisJCQkgKiBxdWFsIGlzIE5JTCBiZWNhdXNlIHRo ZSBIQVZJTkcgY2xhdXNlIGNhbm5vdCBiZSBldmFsdWF0ZWQgdW50aWwKKwkJCSAqIHRoZSBmaW5h bCB2YWx1ZSBvZiB0aGUgYWdncmVnYXRlIGlzIGtub3duLgorCQkJICovCisJCQlwYXRoID0gKFBh dGggKikgY3JlYXRlX2FnZ19wYXRoKHJvb3QsCisJCQkJCQkJCQkJCWdyb3VwZWRfcmVsLAorCQkJ CQkJCQkJCQlwYXRoLAorCQkJCQkJCQkJCQlhZ2dfaW5mby0+dGFyZ2V0LAorCQkJCQkJCQkJCQlB R0dfU09SVEVELAorCQkJCQkJCQkJCQlBR0dTUExJVF9JTklUSUFMX1NFUklBTCwKKwkJCQkJCQkJ CQkJYWdnX2luZm8tPmdyb3VwX2NsYXVzZXMsCisJCQkJCQkJCQkJCU5JTCwKKwkJCQkJCQkJCQkJ JmFnZ19jb3N0cywKKwkJCQkJCQkJCQkJZE51bUdyb3Vwcyk7CisKKwkJCWFkZF9wYXRoKGdyb3Vw ZWRfcmVsLCBwYXRoKTsKKwkJfQorCX0KKworCWlmIChjYW5fc29ydCAmJiBjaGVhcGVzdF9wYXJ0 aWFsX3BhdGggIT0gTlVMTCkKKwl7CisJCUxpc3RDZWxsICAgKmxjOworCisJCS8qIFNpbWlsYXIg dG8gYWJvdmUgbG9naWMsIGJ1dCBmb3IgcGFydGlhbCBwYXRocy4gKi8KKwkJZm9yZWFjaChsYywg cmVsLT5wYXJ0aWFsX3BhdGhsaXN0KQorCQl7CisJCQlQYXRoCSAgICppbnB1dF9wYXRoID0gKFBh dGggKikgbGZpcnN0KGxjKTsKKwkJCVBhdGgJICAgKnBhdGg7CisJCQlib29sCQlpc19zb3J0ZWQ7 CisJCQlpbnQJCQlwcmVzb3J0ZWRfa2V5czsKKworCQkJaXNfc29ydGVkID0gcGF0aGtleXNfY291 bnRfY29udGFpbmVkX2luKGFnZ19pbmZvLT5ncm91cF9wYXRoa2V5cywKKwkJCQkJCQkJCQkJCQlp bnB1dF9wYXRoLT5wYXRoa2V5cywKKwkJCQkJCQkJCQkJCQkmcHJlc29ydGVkX2tleXMpOworCisJ CQkvKgorCQkJICogSWdub3JlIHBhdGhzIHRoYXQgYXJlIG5vdCBzdWl0YWJseSBvciBwYXJ0aWFs bHkgc29ydGVkLCB1bmxlc3MKKwkJCSAqIHRoZXkgYXJlIHRoZSBjaGVhcGVzdCBwYXJ0aWFsIHBh dGggKG5vIG5lZWQgdG8gZGVhbCB3aXRoIHBhdGhzCisJCQkgKiB3aGljaCBoYXZlIHByZXNvcnRl ZCBrZXlzIHdoZW4gaW5jcmVtZW50YWwgc29ydCBpcyBkaXNhYmxlZCkuCisJCQkgKi8KKwkJCWlm ICghaXNfc29ydGVkICYmIGlucHV0X3BhdGggIT0gY2hlYXBlc3RfcGFydGlhbF9wYXRoICYmCisJ CQkJKHByZXNvcnRlZF9rZXlzID09IDAgfHwgIWVuYWJsZV9pbmNyZW1lbnRhbF9zb3J0KSkKKwkJ CQljb250aW51ZTsKKworCQkJLyoKKwkJCSAqIFNpbmNlIHRoZSBwYXRoIG9yaWdpbmF0ZXMgZnJv bSBhIG5vbi1ncm91cGVkIHJlbGF0aW9uIHRoYXQgaXMKKwkJCSAqIG5vdCBhd2FyZSBvZiBlYWdl ciBhZ2dyZWdhdGlvbiwgd2UgbXVzdCBlbnN1cmUgdGhhdCBpdCBwcm92aWRlcworCQkJICogdGhl IGNvcnJlY3QgaW5wdXQgZm9yIHBhcnRpYWwgYWdncmVnYXRpb24uCisJCQkgKi8KKwkJCXBhdGgg PSAoUGF0aCAqKSBjcmVhdGVfcHJvamVjdGlvbl9wYXRoKHJvb3QsCisJCQkJCQkJCQkJCQkgICBn cm91cGVkX3JlbCwKKwkJCQkJCQkJCQkJCSAgIGlucHV0X3BhdGgsCisJCQkJCQkJCQkJCQkgICBh Z2dfaW5mby0+YWdnX2lucHV0KTsKKworCQkJaWYgKCFpc19zb3J0ZWQpCisJCQl7CisJCQkJLyoK KwkJCQkgKiBXZSd2ZSBubyBuZWVkIHRvIGNvbnNpZGVyIGJvdGggYSBzb3J0IGFuZCBpbmNyZW1l bnRhbCBzb3J0LgorCQkJCSAqIFdlJ2xsIGp1c3QgZG8gYSBzb3J0IGlmIHRoZXJlIGFyZSBubyBw cmVzb3J0ZWQga2V5cyBhbmQgYW4KKwkJCQkgKiBpbmNyZW1lbnRhbCBzb3J0IHdoZW4gdGhlcmUg YXJlIHByZXNvcnRlZCBrZXlzLgorCQkJCSAqLworCQkJCWlmIChwcmVzb3J0ZWRfa2V5cyA9PSAw IHx8ICFlbmFibGVfaW5jcmVtZW50YWxfc29ydCkKKwkJCQkJcGF0aCA9IChQYXRoICopIGNyZWF0 ZV9zb3J0X3BhdGgocm9vdCwKKwkJCQkJCQkJCQkJCQkgZ3JvdXBlZF9yZWwsCisJCQkJCQkJCQkJ CQkJIHBhdGgsCisJCQkJCQkJCQkJCQkJIGFnZ19pbmZvLT5ncm91cF9wYXRoa2V5cywKKwkJCQkJ CQkJCQkJCQkgLTEuMCk7CisJCQkJZWxzZQorCQkJCQlwYXRoID0gKFBhdGggKikgY3JlYXRlX2lu Y3JlbWVudGFsX3NvcnRfcGF0aChyb290LAorCQkJCQkJCQkJCQkJCQkJCSBncm91cGVkX3JlbCwK KwkJCQkJCQkJCQkJCQkJCQkgcGF0aCwKKwkJCQkJCQkJCQkJCQkJCQkgYWdnX2luZm8tPmdyb3Vw X3BhdGhrZXlzLAorCQkJCQkJCQkJCQkJCQkJCSBwcmVzb3J0ZWRfa2V5cywKKwkJCQkJCQkJCQkJ CQkJCQkgLTEuMCk7CisJCQl9CisKKwkJCS8qCisJCQkgKiBxdWFsIGlzIE5JTCBiZWNhdXNlIHRo ZSBIQVZJTkcgY2xhdXNlIGNhbm5vdCBiZSBldmFsdWF0ZWQgdW50aWwKKwkJCSAqIHRoZSBmaW5h bCB2YWx1ZSBvZiB0aGUgYWdncmVnYXRlIGlzIGtub3duLgorCQkJICovCisJCQlwYXRoID0gKFBh dGggKikgY3JlYXRlX2FnZ19wYXRoKHJvb3QsCisJCQkJCQkJCQkJCWdyb3VwZWRfcmVsLAorCQkJ CQkJCQkJCQlwYXRoLAorCQkJCQkJCQkJCQlhZ2dfaW5mby0+dGFyZ2V0LAorCQkJCQkJCQkJCQlB R0dfU09SVEVELAorCQkJCQkJCQkJCQlBR0dTUExJVF9JTklUSUFMX1NFUklBTCwKKwkJCQkJCQkJ CQkJYWdnX2luZm8tPmdyb3VwX2NsYXVzZXMsCisJCQkJCQkJCQkJCU5JTCwKKwkJCQkJCQkJCQkJ JmFnZ19jb3N0cywKKwkJCQkJCQkJCQkJZE51bVBhcnRpYWxHcm91cHMpOworCisJCQlhZGRfcGFy dGlhbF9wYXRoKGdyb3VwZWRfcmVsLCBwYXRoKTsKKwkJfQorCX0KKworCS8qCisJICogQWRkIGEg cGFydGlhbGx5LWdyb3VwZWQgSGFzaEFnZyBQYXRoIHdoZXJlIHBvc3NpYmxlCisJICovCisJaWYg KGNhbl9oYXNoICYmIGNoZWFwZXN0X3RvdGFsX3BhdGggIT0gTlVMTCkKKwl7CisJCVBhdGgJICAg KnBhdGg7CisKKwkJLyoKKwkJICogU2luY2UgdGhlIHBhdGggb3JpZ2luYXRlcyBmcm9tIGEgbm9u LWdyb3VwZWQgcmVsYXRpb24gdGhhdCBpcyBub3QKKwkJICogYXdhcmUgb2YgZWFnZXIgYWdncmVn YXRpb24sIHdlIG11c3QgZW5zdXJlIHRoYXQgaXQgcHJvdmlkZXMgdGhlCisJCSAqIGNvcnJlY3Qg aW5wdXQgZm9yIHBhcnRpYWwgYWdncmVnYXRpb24uCisJCSAqLworCQlwYXRoID0gKFBhdGggKikg Y3JlYXRlX3Byb2plY3Rpb25fcGF0aChyb290LAorCQkJCQkJCQkJCQkgICBncm91cGVkX3JlbCwK KwkJCQkJCQkJCQkJICAgY2hlYXBlc3RfdG90YWxfcGF0aCwKKwkJCQkJCQkJCQkJICAgYWdnX2lu Zm8tPmFnZ19pbnB1dCk7CisKKwkJLyoKKwkJICogcXVhbCBpcyBOSUwgYmVjYXVzZSB0aGUgSEFW SU5HIGNsYXVzZSBjYW5ub3QgYmUgZXZhbHVhdGVkIHVudGlsIHRoZQorCQkgKiBmaW5hbCB2YWx1 ZSBvZiB0aGUgYWdncmVnYXRlIGlzIGtub3duLgorCQkgKi8KKwkJcGF0aCA9IChQYXRoICopIGNy ZWF0ZV9hZ2dfcGF0aChyb290LAorCQkJCQkJCQkJCWdyb3VwZWRfcmVsLAorCQkJCQkJCQkJCXBh dGgsCisJCQkJCQkJCQkJYWdnX2luZm8tPnRhcmdldCwKKwkJCQkJCQkJCQlBR0dfSEFTSEVELAor CQkJCQkJCQkJCUFHR1NQTElUX0lOSVRJQUxfU0VSSUFMLAorCQkJCQkJCQkJCWFnZ19pbmZvLT5n cm91cF9jbGF1c2VzLAorCQkJCQkJCQkJCU5JTCwKKwkJCQkJCQkJCQkmYWdnX2Nvc3RzLAorCQkJ CQkJCQkJCWROdW1Hcm91cHMpOworCisJCWFkZF9wYXRoKGdyb3VwZWRfcmVsLCBwYXRoKTsKKwl9 CisKKwkvKgorCSAqIE5vdyBhZGQgYSBwYXJ0aWFsbHktZ3JvdXBlZCBIYXNoQWdnIHBhcnRpYWwg UGF0aCB3aGVyZSBwb3NzaWJsZQorCSAqLworCWlmIChjYW5faGFzaCAmJiBjaGVhcGVzdF9wYXJ0 aWFsX3BhdGggIT0gTlVMTCkKKwl7CisJCVBhdGgJICAgKnBhdGg7CisKKwkJLyoKKwkJICogU2lu Y2UgdGhlIHBhdGggb3JpZ2luYXRlcyBmcm9tIGEgbm9uLWdyb3VwZWQgcmVsYXRpb24gdGhhdCBp cyBub3QKKwkJICogYXdhcmUgb2YgZWFnZXIgYWdncmVnYXRpb24sIHdlIG11c3QgZW5zdXJlIHRo YXQgaXQgcHJvdmlkZXMgdGhlCisJCSAqIGNvcnJlY3QgaW5wdXQgZm9yIHBhcnRpYWwgYWdncmVn YXRpb24uCisJCSAqLworCQlwYXRoID0gKFBhdGggKikgY3JlYXRlX3Byb2plY3Rpb25fcGF0aChy b290LAorCQkJCQkJCQkJCQkgICBncm91cGVkX3JlbCwKKwkJCQkJCQkJCQkJICAgY2hlYXBlc3Rf cGFydGlhbF9wYXRoLAorCQkJCQkJCQkJCQkgICBhZ2dfaW5mby0+YWdnX2lucHV0KTsKKworCQkv KgorCQkgKiBxdWFsIGlzIE5JTCBiZWNhdXNlIHRoZSBIQVZJTkcgY2xhdXNlIGNhbm5vdCBiZSBl dmFsdWF0ZWQgdW50aWwgdGhlCisJCSAqIGZpbmFsIHZhbHVlIG9mIHRoZSBhZ2dyZWdhdGUgaXMg a25vd24uCisJCSAqLworCQlwYXRoID0gKFBhdGggKikgY3JlYXRlX2FnZ19wYXRoKHJvb3QsCisJ CQkJCQkJCQkJZ3JvdXBlZF9yZWwsCisJCQkJCQkJCQkJcGF0aCwKKwkJCQkJCQkJCQlhZ2dfaW5m by0+dGFyZ2V0LAorCQkJCQkJCQkJCUFHR19IQVNIRUQsCisJCQkJCQkJCQkJQUdHU1BMSVRfSU5J VElBTF9TRVJJQUwsCisJCQkJCQkJCQkJYWdnX2luZm8tPmdyb3VwX2NsYXVzZXMsCisJCQkJCQkJ CQkJTklMLAorCQkJCQkJCQkJCSZhZ2dfY29zdHMsCisJCQkJCQkJCQkJZE51bVBhcnRpYWxHcm91 cHMpOworCisJCWFkZF9wYXJ0aWFsX3BhdGgoZ3JvdXBlZF9yZWwsIHBhdGgpOworCX0KK30KKwog LyoKICAqIG1ha2VfcmVsX2Zyb21fam9pbmxpc3QKICAqCSAgQnVpbGQgYWNjZXNzIHBhdGhzIHVz aW5nIGEgImpvaW5saXN0IiB0byBndWlkZSB0aGUgam9pbiBwYXRoIHNlYXJjaC4KQEAgLTM0OTQs NiArMzg5OCwxMCBAQCBzdGFuZGFyZF9qb2luX3NlYXJjaChQbGFubmVySW5mbyAqcm9vdCwgaW50 IGxldmVsc19uZWVkZWQsIExpc3QgKmluaXRpYWxfcmVscykKIAkJICoKIAkJICogQWZ0ZXIgdGhh dCwgd2UncmUgZG9uZSBjcmVhdGluZyBwYXRocyBmb3IgdGhlIGpvaW5yZWwsIHNvIHJ1bgogCQkg KiBzZXRfY2hlYXBlc3QoKS4KKwkJICoKKwkJICogSW4gYWRkaXRpb24sIHdlIGFsc28gcnVuIGdl bmVyYXRlX2dyb3VwZWRfcGF0aHMoKSBmb3IgdGhlIGdyb3VwZWQKKwkJICogcmVsYXRpb24gb2Yg ZWFjaCBqdXN0LXByb2Nlc3NlZCBqb2lucmVsLCBhbmQgcnVuIHNldF9jaGVhcGVzdCgpIGZvcgor CQkgKiB0aGUgZ3JvdXBlZCByZWxhdGlvbiBhZnRlcndhcmRzLgogCQkgKi8KIAkJZm9yZWFjaChs Yywgcm9vdC0+am9pbl9yZWxfbGV2ZWxbbGV2XSkKIAkJewpAQCAtMzUxNCw2ICszOTIyLDI3IEBA IHN0YW5kYXJkX2pvaW5fc2VhcmNoKFBsYW5uZXJJbmZvICpyb290LCBpbnQgbGV2ZWxzX25lZWRl ZCwgTGlzdCAqaW5pdGlhbF9yZWxzKQogCQkJLyogRmluZCBhbmQgc2F2ZSB0aGUgY2hlYXBlc3Qg cGF0aHMgZm9yIHRoaXMgcmVsICovCiAJCQlzZXRfY2hlYXBlc3QocmVsKTsKIAorCQkJLyoKKwkJ CSAqIEV4Y2VwdCBmb3IgdGhlIHRvcG1vc3Qgc2Nhbi9qb2luIHJlbCwgY29uc2lkZXIgZ2VuZXJh dGluZworCQkJICogcGFydGlhbCBhZ2dyZWdhdGlvbiBwYXRocyBmb3IgdGhlIGdyb3VwZWQgcmVs YXRpb24gb24gdG9wIG9mCisJCQkgKiB0aGUgcGF0aHMgb2YgdGhpcyByZWwuICBBZnRlciB0aGF0 LCB3ZSdyZSBkb25lIGNyZWF0aW5nIHBhdGhzCisJCQkgKiBmb3IgdGhlIGdyb3VwZWQgcmVsYXRp b24sIHNvIHJ1biBzZXRfY2hlYXBlc3QoKS4KKwkJCSAqLworCQkJaWYgKCFibXNfZXF1YWwocmVs LT5yZWxpZHMsIHJvb3QtPmFsbF9xdWVyeV9yZWxzKSkKKwkJCXsKKwkJCQlSZWxPcHRJbmZvICpn cm91cGVkX3JlbDsKKworCQkJCWdyb3VwZWRfcmVsID0gcmVsLT5ncm91cGVkX3JlbDsKKwkJCQlp ZiAoZ3JvdXBlZF9yZWwpCisJCQkJeworCQkJCQlBc3NlcnQoSVNfR1JPVVBFRF9SRUwoZ3JvdXBl ZF9yZWwpKTsKKworCQkJCQlnZW5lcmF0ZV9ncm91cGVkX3BhdGhzKHJvb3QsIGdyb3VwZWRfcmVs LCByZWwsCisJCQkJCQkJCQkJICAgZ3JvdXBlZF9yZWwtPmFnZ19pbmZvKTsKKwkJCQkJc2V0X2No ZWFwZXN0KGdyb3VwZWRfcmVsKTsKKwkJCQl9CisJCQl9CisKICNpZmRlZiBPUFRJTUlaRVJfREVC VUcKIAkJCXBwcmludChyZWwpOwogI2VuZGlmCkBAIC00MzgzLDYgKzQ4MTIsMjkgQEAgZ2VuZXJh dGVfcGFydGl0aW9ud2lzZV9qb2luX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZv ICpyZWwpCiAJCWlmIChJU19EVU1NWV9SRUwoY2hpbGRfcmVsKSkKIAkJCWNvbnRpbnVlOwogCisJ CS8qCisJCSAqIEV4Y2VwdCBmb3IgdGhlIHRvcG1vc3Qgc2Nhbi9qb2luIHJlbCwgY29uc2lkZXIg Z2VuZXJhdGluZyBwYXJ0aWFsCisJCSAqIGFnZ3JlZ2F0aW9uIHBhdGhzIGZvciB0aGUgZ3JvdXBl ZCByZWxhdGlvbiBvbiB0b3Agb2YgdGhlIHBhdGhzIG9mCisJCSAqIHRoaXMgcGFydGl0aW9uZWQg Y2hpbGQtam9pbi4gIEFmdGVyIHRoYXQsIHdlJ3JlIGRvbmUgY3JlYXRpbmcgcGF0aHMKKwkJICog Zm9yIHRoZSBncm91cGVkIHJlbGF0aW9uLCBzbyBydW4gc2V0X2NoZWFwZXN0KCkuCisJCSAqLwor CQlpZiAoIWJtc19lcXVhbChJU19PVEhFUl9SRUwocmVsKSA/CisJCQkJCSAgIHJlbC0+dG9wX3Bh cmVudF9yZWxpZHMgOiByZWwtPnJlbGlkcywKKwkJCQkJICAgcm9vdC0+YWxsX3F1ZXJ5X3JlbHMp KQorCQl7CisJCQlSZWxPcHRJbmZvICpncm91cGVkX3JlbDsKKworCQkJZ3JvdXBlZF9yZWwgPSBj aGlsZF9yZWwtPmdyb3VwZWRfcmVsOworCQkJaWYgKGdyb3VwZWRfcmVsKQorCQkJeworCQkJCUFz c2VydChJU19HUk9VUEVEX1JFTChncm91cGVkX3JlbCkpOworCisJCQkJZ2VuZXJhdGVfZ3JvdXBl ZF9wYXRocyhyb290LCBncm91cGVkX3JlbCwgY2hpbGRfcmVsLAorCQkJCQkJCQkJICAgZ3JvdXBl ZF9yZWwtPmFnZ19pbmZvKTsKKwkJCQlzZXRfY2hlYXBlc3QoZ3JvdXBlZF9yZWwpOworCQkJfQor CQl9CisKICNpZmRlZiBPUFRJTUlaRVJfREVCVUcKIAkJcHByaW50KGNoaWxkX3JlbCk7CiAjZW5k aWYKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2pvaW5yZWxzLmMgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9qb2lucmVscy5jCmluZGV4IGFhZDQxYjk0MDA5Li40 NzdiMGJjM2I4NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvam9pbnJl bHMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9qb2lucmVscy5jCkBAIC0xNiw2 ICsxNiw3IEBACiAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIv YXBwZW5kaW5mby5oIgorI2luY2x1ZGUgIm9wdGltaXplci9jb3N0LmgiCiAjaW5jbHVkZSAib3B0 aW1pemVyL2pvaW5pbmZvLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3BhdGhub2RlLmgiCiAjaW5j bHVkZSAib3B0aW1pemVyL3BhdGhzLmgiCkBAIC0zNSw2ICszNiw5IEBAIHN0YXRpYyBib29sIGhh c19sZWdhbF9qb2luY2xhdXNlKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwpOwog c3RhdGljIGJvb2wgcmVzdHJpY3Rpb25faXNfY29uc3RhbnRfZmFsc2UoTGlzdCAqcmVzdHJpY3Rs aXN0LAogCQkJCQkJCQkJCSAgUmVsT3B0SW5mbyAqam9pbnJlbCwKIAkJCQkJCQkJCQkgIGJvb2wg b25seV9wdXNoZWRfZG93bik7CitzdGF0aWMgdm9pZCBtYWtlX2dyb3VwZWRfam9pbl9yZWwoUGxh bm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbDEsCisJCQkJCQkJCSAgUmVsT3B0SW5mbyAq cmVsMiwgUmVsT3B0SW5mbyAqam9pbnJlbCwKKwkJCQkJCQkJICBTcGVjaWFsSm9pbkluZm8gKnNq aW5mbywgTGlzdCAqcmVzdHJpY3RsaXN0KTsKIHN0YXRpYyB2b2lkIHBvcHVsYXRlX2pvaW5yZWxf d2l0aF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsMSwKIAkJCQkJCQkJ CQlSZWxPcHRJbmZvICpyZWwyLCBSZWxPcHRJbmZvICpqb2lucmVsLAogCQkJCQkJCQkJCVNwZWNp YWxKb2luSW5mbyAqc2ppbmZvLCBMaXN0ICpyZXN0cmljdGxpc3QpOwpAQCAtNzYzLDYgKzc2Nywx MCBAQCBtYWtlX2pvaW5fcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwxLCBS ZWxPcHRJbmZvICpyZWwyKQogCQlyZXR1cm4gam9pbnJlbDsKIAl9CiAKKwkvKiBCdWlsZCBhIGdy b3VwZWQgam9pbiByZWxhdGlvbiBmb3IgJ2pvaW5yZWwnIGlmIHBvc3NpYmxlLiAqLworCW1ha2Vf Z3JvdXBlZF9qb2luX3JlbChyb290LCByZWwxLCByZWwyLCBqb2lucmVsLCBzamluZm8sCisJCQkJ CQkgIHJlc3RyaWN0bGlzdCk7CisKIAkvKiBBZGQgcGF0aHMgdG8gdGhlIGpvaW4gcmVsYXRpb24u ICovCiAJcG9wdWxhdGVfam9pbnJlbF93aXRoX3BhdGhzKHJvb3QsIHJlbDEsIHJlbDIsIGpvaW5y ZWwsIHNqaW5mbywKIAkJCQkJCQkJcmVzdHJpY3RsaXN0KTsKQEAgLTg3NCw2ICs4ODIsMTg2IEBA IGFkZF9vdXRlcl9qb2luc190b19yZWxpZHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbGlkcyBpbnB1 dF9yZWxpZHMsCiAJcmV0dXJuIGlucHV0X3JlbGlkczsKIH0KIAorLyoKKyAqIG1ha2VfZ3JvdXBl ZF9qb2luX3JlbAorICoJICBCdWlsZCBhIGdyb3VwZWQgam9pbiByZWxhdGlvbiBmb3IgdGhlIGdp dmVuICJqb2lucmVsIiBpZiBlYWdlcgorICoJICBhZ2dyZWdhdGlvbiBpcyBhcHBsaWNhYmxlIGFu ZCB0aGUgcmVzdWx0aW5nIGdyb3VwZWQgcGF0aHMgYXJlIGNvbnNpZGVyZWQKKyAqCSAgdXNlZnVs LgorICoKKyAqIFRoZXJlIGFyZSB0d28gc3RyYXRlZ2llcyBmb3IgZ2VuZXJhdGluZyBncm91cGVk IHBhdGhzIGZvciBhIGpvaW4gcmVsYXRpb246CisgKgorICogMS4gSm9pbiBhIGdyb3VwZWQgKHBh cnRpYWxseSBhZ2dyZWdhdGVkKSBpbnB1dCByZWxhdGlvbiB3aXRoIGEgbm9uLWdyb3VwZWQKKyAq IGlucHV0IChlLmcuLCBBR0coQikgSk9JTiBBKS4KKyAqCisgKiAyLiBBcHBseSBwYXJ0aWFsIGFn Z3JlZ2F0aW9uIChzb3J0ZWQgb3IgaGFzaGVkKSBvbiB0b3Agb2YgZXhpc3RpbmcKKyAqIG5vbi1n cm91cGVkIGpvaW4gcGF0aHMgKGUuZy4sIEFHRyhBIEpPSU4gQikpLgorICoKKyAqIFRvIGxpbWl0 IHBsYW5uaW5nIGVmZm9ydCBhbmQgYXZvaWQgYW4gZXhwbG9zaW9uIG9mIGFsdGVybmF0aXZlcywg d2UgYWRvcHQgYQorICogc3RyYXRlZ3kgd2hlcmUgcGFydGlhbCBhZ2dyZWdhdGlvbiBpcyBvbmx5 IHB1c2hlZCB0byB0aGUgbG93ZXN0IHBvc3NpYmxlCisgKiBsZXZlbCBpbiB0aGUgam9pbiB0cmVl IHRoYXQgaXMgZGVlbWVkIHVzZWZ1bC4gIFRoYXQgaXMsIGlmIGdyb3VwZWQgcGF0aHMgY2FuCisg KiBiZSBidWlsdCB1c2luZyB0aGUgZmlyc3Qgc3RyYXRlZ3ksIHdlIHNraXAgY29uc2lkZXJhdGlv biBvZiB0aGUgc2Vjb25kCisgKiBzdHJhdGVneSBmb3IgdGhlIHNhbWUgam9pbiBsZXZlbC4KKyAq CisgKiBBZGRpdGlvbmFsbHksIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBsb3dlc3QgdXNlZnVsIGxl dmVscyB3aGVyZSBwYXJ0aWFsCisgKiBhZ2dyZWdhdGlvbiBjb3VsZCBiZSBhcHBsaWVkLCBzdWNo IGFzIGluIGEgam9pbiB0cmVlIHdpdGggcmVsYXRpb25zIEEsIEIsCisgKiBhbmQgQyB3aGVyZSBi b3RoICJBR0coQSBKT0lOIEIpIEpPSU4gQyIgYW5kICJBIEpPSU4gQUdHKEIgSk9JTiBDKSIgYXJl IHZhbGlkCisgKiBwbGFjZW1lbnRzLCB3ZSBjaG9vc2Ugb25seSB0aGUgZmlyc3Qgb25lIGVuY291 bnRlcmVkIGR1cmluZyBqb2luIHNlYXJjaC4KKyAqIFRoaXMgYXZvaWRzIGdlbmVyYXRpbmcgbXVs dGlwbGUgdmVyc2lvbnMgb2YgdGhlIHNhbWUgZ3JvdXBlZCByZWxhdGlvbiBiYXNlZAorICogb24g ZGlmZmVyZW50IGFnZ3JlZ2F0aW9uIHBsYWNlbWVudHMuCisgKgorICogVGhlc2UgaGV1cmlzdGlj cyBhbHNvIGVuc3VyZSB0aGF0IGFsbCBncm91cGVkIHBhdGhzIGZvciB0aGUgc2FtZSBncm91cGVk CisgKiByZWxhdGlvbiBwcm9kdWNlIHRoZSBzYW1lIHNldCBvZiByb3dzLCB3aGljaCBpcyBhIGJh c2ljIGFzc3VtcHRpb24gaW4gdGhlCisgKiBwbGFubmVyLgorICovCitzdGF0aWMgdm9pZAorbWFr ZV9ncm91cGVkX2pvaW5fcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwxLAor CQkJCQkgIFJlbE9wdEluZm8gKnJlbDIsIFJlbE9wdEluZm8gKmpvaW5yZWwsCisJCQkJCSAgU3Bl Y2lhbEpvaW5JbmZvICpzamluZm8sIExpc3QgKnJlc3RyaWN0bGlzdCkKK3sKKwlSZWxPcHRJbmZv ICpncm91cGVkX3JlbDsKKwlSZWxPcHRJbmZvICpncm91cGVkX3JlbDE7CisJUmVsT3B0SW5mbyAq Z3JvdXBlZF9yZWwyOworCWJvb2wJCXJlbDFfZW1wdHk7CisJYm9vbAkJcmVsMl9lbXB0eTsKKwlS ZWxpZHMJCWFnZ19hcHBseV9hdDsKKworCS8qCisJICogSWYgdGhlcmUgYXJlIG5vIGFnZ3JlZ2F0 ZSBleHByZXNzaW9ucyBvciBncm91cGluZyBleHByZXNzaW9ucywgZWFnZXIKKwkgKiBhZ2dyZWdh dGlvbiBpcyBub3QgcG9zc2libGUuCisJICovCisJaWYgKHJvb3QtPmFnZ19jbGF1c2VfbGlzdCA9 PSBOSUwgfHwKKwkJcm9vdC0+Z3JvdXBfZXhwcl9saXN0ID09IE5JTCkKKwkJcmV0dXJuOworCisJ LyogUmV0cmlldmUgdGhlIGdyb3VwZWQgcmVsYXRpb25zIGZvciB0aGUgdHdvIGlucHV0IHJlbHMg Ki8KKwlncm91cGVkX3JlbDEgPSByZWwxLT5ncm91cGVkX3JlbDsKKwlncm91cGVkX3JlbDIgPSBy ZWwyLT5ncm91cGVkX3JlbDsKKworCXJlbDFfZW1wdHkgPSAoZ3JvdXBlZF9yZWwxID09IE5VTEwg fHwgSVNfRFVNTVlfUkVMKGdyb3VwZWRfcmVsMSkpOworCXJlbDJfZW1wdHkgPSAoZ3JvdXBlZF9y ZWwyID09IE5VTEwgfHwgSVNfRFVNTVlfUkVMKGdyb3VwZWRfcmVsMikpOworCisJLyogRmluZCBv ciBjb25zdHJ1Y3QgYSBncm91cGVkIGpvaW5yZWwgZm9yIHRoaXMgam9pbnJlbCAqLworCWdyb3Vw ZWRfcmVsID0gam9pbnJlbC0+Z3JvdXBlZF9yZWw7CisJaWYgKGdyb3VwZWRfcmVsID09IE5VTEwp CisJeworCQlSZWxBZ2dJbmZvICphZ2dfaW5mbyA9IE5VTEw7CisKKwkJLyoKKwkJICogUHJlcGFy ZSB0aGUgaW5mb3JtYXRpb24gbmVlZGVkIHRvIGNyZWF0ZSBncm91cGVkIHBhdGhzIGZvciB0aGlz CisJCSAqIGpvaW4gcmVsYXRpb24uCisJCSAqLworCQlhZ2dfaW5mbyA9IGNyZWF0ZV9yZWxfYWdn X2luZm8ocm9vdCwgam9pbnJlbCk7CisJCWlmIChhZ2dfaW5mbyA9PSBOVUxMKQorCQkJcmV0dXJu OworCisJCS8qCisJCSAqIElmIGdyb3VwZWQgcGF0aHMgZm9yIHRoZSBnaXZlbiBqb2luIHJlbGF0 aW9uIGFyZSBub3QgY29uc2lkZXJlZAorCQkgKiB1c2VmdWwsIGFuZCBubyBncm91cGVkIHBhdGhz IGNhbiBiZSBidWlsdCBieSBqb2luaW5nIGdyb3VwZWQgaW5wdXQKKwkJICogcmVsYXRpb25zLCBz a2lwIGJ1aWxkaW5nIHRoZSBncm91cGVkIGpvaW4gcmVsYXRpb24uCisJCSAqLworCQlpZiAoIWFn Z19pbmZvLT5hZ2dfdXNlZnVsICYmCisJCQkocmVsMV9lbXB0eSA9PSByZWwyX2VtcHR5KSkKKwkJ CXJldHVybjsKKworCQkvKiBidWlsZCB0aGUgZ3JvdXBlZCByZWxhdGlvbiAqLworCQlncm91cGVk X3JlbCA9IGJ1aWxkX2dyb3VwZWRfcmVsKHJvb3QsIGpvaW5yZWwpOworCQlncm91cGVkX3JlbC0+ cmVsdGFyZ2V0ID0gYWdnX2luZm8tPnRhcmdldDsKKworCQlpZiAocmVsMV9lbXB0eSAhPSByZWwy X2VtcHR5KQorCQl7CisJCQkvKgorCQkJICogSWYgdGhlcmUgaXMgZXhhY3RseSBvbmUgZ3JvdXBl ZCBpbnB1dCByZWxhdGlvbiwgdGhlbiB3ZSBjYW4KKwkJCSAqIGJ1aWxkIGdyb3VwZWQgcGF0aHMg Ynkgam9pbmluZyB0aGUgaW5wdXQgcmVsYXRpb25zLiAgU2V0IHNpemUKKwkJCSAqIGVzdGltYXRl cyBmb3IgdGhlIGdyb3VwZWQgam9pbiByZWxhdGlvbiBiYXNlZCBvbiB0aGUgaW5wdXQKKwkJCSAq IHJlbGF0aW9ucywgYW5kIHVwZGF0ZSB0aGUgbG93ZXN0IGpvaW4gbGV2ZWwgd2hlcmUgcGFydGlh bAorCQkJICogYWdncmVnYXRpb24gaXMgYXBwbGllZCB0byB0aGF0IG9mIHRoZSBncm91cGVkIGlu cHV0IHJlbGF0aW9uLgorCQkJICovCisJCQlzZXRfam9pbnJlbF9zaXplX2VzdGltYXRlcyhyb290 LCBncm91cGVkX3JlbCwKKwkJCQkJCQkJCSAgIHJlbDFfZW1wdHkgPyByZWwxIDogZ3JvdXBlZF9y ZWwxLAorCQkJCQkJCQkJICAgcmVsMl9lbXB0eSA/IHJlbDIgOiBncm91cGVkX3JlbDIsCisJCQkJ CQkJCQkgICBzamluZm8sIHJlc3RyaWN0bGlzdCk7CisJCQlhZ2dfaW5mby0+YXBwbHlfYXQgPSBy ZWwxX2VtcHR5ID8KKwkJCQlncm91cGVkX3JlbDItPmFnZ19pbmZvLT5hcHBseV9hdCA6CisJCQkJ Z3JvdXBlZF9yZWwxLT5hZ2dfaW5mby0+YXBwbHlfYXQ7CisJCX0KKwkJZWxzZQorCQl7CisJCQkv KgorCQkJICogT3RoZXJ3aXNlLCBncm91cGVkIHBhdGhzIGNhbiBiZSBidWlsdCBieSBhcHBseWlu ZyBwYXJ0aWFsCisJCQkgKiBhZ2dyZWdhdGlvbiBvbiB0b3Agb2YgZXhpc3Rpbmcgbm9uLWdyb3Vw ZWQgam9pbiBwYXRocy4gIFNldAorCQkJICogc2l6ZSBlc3RpbWF0ZXMgZm9yIHRoZSBncm91cGVk IGpvaW4gcmVsYXRpb24gYmFzZWQgb24gdGhlCisJCQkgKiBlc3RpbWF0ZWQgbnVtYmVyIG9mIGdy b3VwcywgYW5kIHRyYWNrIHRoZSBsb3dlc3Qgam9pbiBsZXZlbAorCQkJICogd2hlcmUgcGFydGlh bCBhZ2dyZWdhdGlvbiBpcyBhcHBsaWVkLiAgTm90ZSB0aGF0IHRoZXNlIHZhbHVlcworCQkJICog bWF5IGJlIHVwZGF0ZWQgbGF0ZXIgaWYgaXQgaXMgZGV0ZXJtaW5lZCB0aGF0IGdyb3VwZWQgcGF0 aHMgY2FuCisJCQkgKiBiZSBjb25zdHJ1Y3RlZCBieSBqb2luaW5nIG90aGVyIGlucHV0IHJlbGF0 aW9ucy4KKwkJCSAqLworCQkJZ3JvdXBlZF9yZWwtPnJvd3MgPSBhZ2dfaW5mby0+Z3JvdXBlZF9y b3dzOworCQkJYWdnX2luZm8tPmFwcGx5X2F0ID0gYm1zX2NvcHkoam9pbnJlbC0+cmVsaWRzKTsK KwkJfQorCisJCWdyb3VwZWRfcmVsLT5hZ2dfaW5mbyA9IGFnZ19pbmZvOworCQlqb2lucmVsLT5n cm91cGVkX3JlbCA9IGdyb3VwZWRfcmVsOworCX0KKworCUFzc2VydChJU19HUk9VUEVEX1JFTChn cm91cGVkX3JlbCkpOworCisJLyogV2UgbWF5IGhhdmUgYWxyZWFkeSBwcm92ZW4gdGhpcyBncm91 cGVkIGpvaW4gcmVsYXRpb24gdG8gYmUgZHVtbXkuICovCisJaWYgKElTX0RVTU1ZX1JFTChncm91 cGVkX3JlbCkpCisJCXJldHVybjsKKworCS8qCisJICogTm90aGluZyB0byBkbyBpZiB0aGVyZSdz IG5vIGdyb3VwZWQgaW5wdXQgcmVsYXRpb24uICBBbHNvLCBqb2luaW5nIHR3bworCSAqIGdyb3Vw ZWQgcmVsYXRpb25zIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLgorCSAqLworCWlmIChyZWwx X2VtcHR5ID09IHJlbDJfZW1wdHkpCisJCXJldHVybjsKKworCS8qCisJICogR2V0IHRoZSBsb3dl c3Qgam9pbiBsZXZlbCB3aGVyZSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGlzIGFwcGxpZWQgYW1vbmcK KwkgKiB0aGUgZ2l2ZW4gaW5wdXQgcmVsYXRpb25zLgorCSAqLworCWFnZ19hcHBseV9hdCA9IHJl bDFfZW1wdHkgPworCQlncm91cGVkX3JlbDItPmFnZ19pbmZvLT5hcHBseV9hdCA6CisJCWdyb3Vw ZWRfcmVsMS0+YWdnX2luZm8tPmFwcGx5X2F0OworCisJLyoKKwkgKiBJZiBpdCdzIG5vdCB0aGUg ZGVzaWduYXRlZCBsZXZlbCwgc2tpcCBidWlsZGluZyBncm91cGVkIHBhdGhzLgorCSAqCisJICog T25lIGV4Y2VwdGlvbiBpcyB3aGVuIGl0IGlzIGEgc3Vic2V0IG9mIHRoZSBwcmV2aW91c2x5IHJl Y29yZGVkIGxldmVsLgorCSAqIEluIHRoYXQgY2FzZSwgd2UgbmVlZCB0byB1cGRhdGUgdGhlIGRl c2lnbmF0ZWQgbGV2ZWwgdG8gdGhpcyBvbmUsIGFuZAorCSAqIGFkanVzdCB0aGUgc2l6ZSBlc3Rp bWF0ZXMgZm9yIHRoZSBncm91cGVkIGpvaW4gcmVsYXRpb24gYWNjb3JkaW5nbHkuCisJICogRm9y IGV4YW1wbGUsIHN1cHBvc2UgcGFydGlhbCBhZ2dyZWdhdGlvbiBjYW4gYmUgYXBwbGllZCBvbiB0 b3Agb2YgKEIKKwkgKiBKT0lOIEMpLiAgSWYgd2UgZmlyc3QgY29uc3RydWN0IHRoZSBqb2luIGFz ICgoQSBKT0lOIEIpIEpPSU4gQyksIHdlJ2QKKwkgKiByZWNvcmQgdGhlIGRlc2lnbmF0ZWQgbGV2 ZWwgYXMgaW5jbHVkaW5nIGFsbCB0aHJlZSByZWxhdGlvbnMgKEEgQiBDKS4KKwkgKiBMYXRlciwg d2hlbiB3ZSBjb25zaWRlciAoQSBKT0lOIChCIEpPSU4gQykpLCB3ZSBlbmNvdW50ZXIgdGhlIHNt YWxsZXIKKwkgKiAoQiBDKSBqb2luIGxldmVsIGRpcmVjdGx5LiAgU2luY2UgdGhpcyBpcyBhIHN1 YnNldCBvZiB0aGUgcHJldmlvdXMKKwkgKiBsZXZlbCBhbmQgc3RpbGwgdmFsaWQgZm9yIHBhcnRp YWwgYWdncmVnYXRpb24sIHdlIHVwZGF0ZSB0aGUgZGVzaWduYXRlZAorCSAqIGxldmVsIHRvIChC IEMpLCBhbmQgYWRqdXN0IHRoZSBzaXplIGVzdGltYXRlcyBhY2NvcmRpbmdseS4KKwkgKi8KKwlp ZiAoIWJtc19lcXVhbChhZ2dfYXBwbHlfYXQsIGdyb3VwZWRfcmVsLT5hZ2dfaW5mby0+YXBwbHlf YXQpKQorCXsKKwkJaWYgKGJtc19pc19zdWJzZXQoYWdnX2FwcGx5X2F0LCBncm91cGVkX3JlbC0+ YWdnX2luZm8tPmFwcGx5X2F0KSkKKwkJeworCQkJLyogQWRqdXN0IHRoZSBzaXplIGVzdGltYXRl cyBmb3IgdGhlIGdyb3VwZWQgam9pbiByZWxhdGlvbi4gKi8KKwkJCXNldF9qb2lucmVsX3NpemVf ZXN0aW1hdGVzKHJvb3QsIGdyb3VwZWRfcmVsLAorCQkJCQkJCQkJICAgcmVsMV9lbXB0eSA/IHJl bDEgOiBncm91cGVkX3JlbDEsCisJCQkJCQkJCQkgICByZWwyX2VtcHR5ID8gcmVsMiA6IGdyb3Vw ZWRfcmVsMiwKKwkJCQkJCQkJCSAgIHNqaW5mbywgcmVzdHJpY3RsaXN0KTsKKwkJCWdyb3VwZWRf cmVsLT5hZ2dfaW5mby0+YXBwbHlfYXQgPSBhZ2dfYXBwbHlfYXQ7CisJCX0KKwkJZWxzZQorCQkJ cmV0dXJuOworCX0KKworCS8qIE1ha2UgcGF0aHMgZm9yIHRoZSBncm91cGVkIGpvaW4gcmVsYXRp b24uICovCisJcG9wdWxhdGVfam9pbnJlbF93aXRoX3BhdGhzKHJvb3QsCisJCQkJCQkJCXJlbDFf ZW1wdHkgPyByZWwxIDogZ3JvdXBlZF9yZWwxLAorCQkJCQkJCQlyZWwyX2VtcHR5ID8gcmVsMiA6 IGdyb3VwZWRfcmVsMiwKKwkJCQkJCQkJZ3JvdXBlZF9yZWwsCisJCQkJCQkJCXNqaW5mbywKKwkJ CQkJCQkJcmVzdHJpY3RsaXN0KTsKK30KKwogLyoKICAqIHBvcHVsYXRlX2pvaW5yZWxfd2l0aF9w YXRocwogICoJICBBZGQgcGF0aHMgdG8gdGhlIGdpdmVuIGpvaW5yZWwgZm9yIGdpdmVuIHBhaXIg b2Ygam9pbmluZyByZWxhdGlvbnMuIFRoZQpAQCAtMTYxNSw2ICsxODAzLDExIEBAIHRyeV9wYXJ0 aXRpb253aXNlX2pvaW4oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbDEsIFJlbE9w dEluZm8gKnJlbDIsCiAJCQkJCQkgYWRqdXN0X2NoaWxkX3JlbGlkcyhqb2lucmVsLT5yZWxpZHMs CiAJCQkJCQkJCQkJCSBuYXBwaW5mb3MsIGFwcGluZm9zKSkpOwogCisJCS8qIEJ1aWxkIGEgZ3Jv dXBlZCBqb2luIHJlbGF0aW9uIGZvciAnY2hpbGRfam9pbnJlbCcgaWYgcG9zc2libGUgKi8KKwkJ bWFrZV9ncm91cGVkX2pvaW5fcmVsKHJvb3QsIGNoaWxkX3JlbDEsIGNoaWxkX3JlbDIsCisJCQkJ CQkJICBjaGlsZF9qb2lucmVsLCBjaGlsZF9zamluZm8sCisJCQkJCQkJICBjaGlsZF9yZXN0cmlj dGxpc3QpOworCiAJCS8qIEFuZCBtYWtlIHBhdGhzIGZvciB0aGUgY2hpbGQgam9pbiAqLwogCQlw b3B1bGF0ZV9qb2lucmVsX3dpdGhfcGF0aHMocm9vdCwgY2hpbGRfcmVsMSwgY2hpbGRfcmVsMiwK IAkJCQkJCQkJCWNoaWxkX2pvaW5yZWwsIGNoaWxkX3NqaW5mbywKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL2luaXRzcGxhbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vaW5pdHNwbGFuLmMKaW5kZXggM2UzZmVjODkyNTIuLjNmYmNjYzY3MTkwIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9pbml0c3BsYW4uYworKysgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9pbml0c3BsYW4uYwpAQCAtMTQsNiArMTQsNyBAQAogICovCiAj aW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgImFjY2Vzcy9uYnRyZWUuaCIKICNpbmNs dWRlICJjYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUu aCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKQEAgLTgxLDYgKzgyLDkgQEAgdHlwZWRl ZiBzdHJ1Y3QgSm9pblRyZWVJdGVtCiB9IEpvaW5UcmVlSXRlbTsKIAogCitzdGF0aWMgYm9vbCBo YXNfaW50ZXJuYWxfYWdndHJhbnN0eXBlKFBsYW5uZXJJbmZvICpyb290KTsKK3N0YXRpYyB2b2lk IGNyZWF0ZV9hZ2dfY2xhdXNlX2luZm9zKFBsYW5uZXJJbmZvICpyb290KTsKK3N0YXRpYyB2b2lk IGNyZWF0ZV9ncm91cGluZ19leHByX2luZm9zKFBsYW5uZXJJbmZvICpyb290KTsKIHN0YXRpYyB2 b2lkIGV4dHJhY3RfbGF0ZXJhbF9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJ bmZvICpicmVsLAogCQkJCQkJCQkJICAgSW5kZXggcnRpbmRleCk7CiBzdGF0aWMgTGlzdCAqZGVj b25zdHJ1Y3RfcmVjdXJzZShQbGFubmVySW5mbyAqcm9vdCwgTm9kZSAqanRub2RlLApAQCAtNjI4 LDYgKzYzMiwzMTUgQEAgcmVtb3ZlX3VzZWxlc3NfZ3JvdXBieV9jb2x1bW5zKFBsYW5uZXJJbmZv ICpyb290KQogCX0KIH0KIAorLyoKKyAqIHNldHVwX2VhZ2VyX2FnZ3JlZ2F0aW9uCisgKgkgIENo ZWNrIGlmIGVhZ2VyIGFnZ3JlZ2F0aW9uIGlzIGFwcGxpY2FibGUsIGFuZCBpZiBzbyBjb2xsZWN0 IHN1aXRhYmxlCisgKgkgIGFnZ3JlZ2F0ZSBleHByZXNzaW9ucyBhbmQgZ3JvdXBpbmcgZXhwcmVz c2lvbnMgaW4gdGhlIHF1ZXJ5LgorICovCit2b2lkCitzZXR1cF9lYWdlcl9hZ2dyZWdhdGlvbihQ bGFubmVySW5mbyAqcm9vdCkKK3sKKwkvKgorCSAqIERvbid0IGFwcGx5IGVhZ2VyIGFnZ3JlZ2F0 aW9uIGlmIGRpc2FibGVkIGJ5IHVzZXIuCisJICovCisJaWYgKCFlbmFibGVfZWFnZXJfYWdncmVn YXRlKQorCQlyZXR1cm47CisKKwkvKgorCSAqIERvbid0IGFwcGx5IGVhZ2VyIGFnZ3JlZ2F0aW9u IGlmIHRoZXJlIGFyZSBubyBhdmFpbGFibGUgR1JPVVAgQlkKKwkgKiBjbGF1c2VzLgorCSAqLwor CWlmICghcm9vdC0+cHJvY2Vzc2VkX2dyb3VwQ2xhdXNlKQorCQlyZXR1cm47CisKKwkvKgorCSAq IEZvciBub3cgd2UgZG9uJ3QgdHJ5IHRvIHN1cHBvcnQgZ3JvdXBpbmcgc2V0cy4KKwkgKi8KKwlp ZiAocm9vdC0+cGFyc2UtPmdyb3VwaW5nU2V0cykKKwkJcmV0dXJuOworCisJLyoKKwkgKiBGb3Ig bm93IHdlIGRvbid0IHRyeSB0byBzdXBwb3J0IERJU1RJTkNUIG9yIE9SREVSIEJZIGFnZ3JlZ2F0 ZXMuCisJICovCisJaWYgKHJvb3QtPm51bU9yZGVyZWRBZ2dzID4gMCkKKwkJcmV0dXJuOworCisJ LyoKKwkgKiBJZiB0aGVyZSBhcmUgYW55IGFnZ3JlZ2F0ZXMgdGhhdCBkbyBub3Qgc3VwcG9ydCBw YXJ0aWFsIG1vZGUsIG9yIGFueQorCSAqIHBhcnRpYWwgYWdncmVnYXRlcyB0aGF0IGFyZSBub24t c2VyaWFsaXphYmxlLCBkbyBub3QgYXBwbHkgZWFnZXIKKwkgKiBhZ2dyZWdhdGlvbi4KKwkgKi8K KwlpZiAocm9vdC0+aGFzTm9uUGFydGlhbEFnZ3MgfHwgcm9vdC0+aGFzTm9uU2VyaWFsQWdncykK KwkJcmV0dXJuOworCisJLyoKKwkgKiBXZSBkb24ndCB0cnkgdG8gYXBwbHkgZWFnZXIgYWdncmVn YXRpb24gaWYgdGhlcmUgYXJlIHNldC1yZXR1cm5pbmcKKwkgKiBmdW5jdGlvbnMgaW4gdGFyZ2V0 bGlzdC4KKwkgKi8KKwlpZiAocm9vdC0+cGFyc2UtPmhhc1RhcmdldFNSRnMpCisJCXJldHVybjsK KworCS8qCisJICogRWFnZXIgYWdncmVnYXRpb24gb25seSBtYWtlcyBzZW5zZSBpZiB0aGVyZSBh cmUgbXVsdGlwbGUgYmFzZSByZWxzIGluCisJICogdGhlIHF1ZXJ5LgorCSAqLworCWlmIChibXNf bWVtYmVyc2hpcChyb290LT5hbGxfYmFzZXJlbHMpICE9IEJNU19NVUxUSVBMRSkKKwkJcmV0dXJu OworCisJLyoKKwkgKiBEb24ndCBhcHBseSBlYWdlciBhZ2dyZWdhdGlvbiBpZiBhbnkgYWdncmVn YXRlIHVzZXMgSU5URVJOQUwgdHJhbnNpdGlvbgorCSAqIHR5cGUuCisJICoKKwkgKiBBbHRob3Vn aCBJTlRFUk5BTCBpcyBtYXJrZWQgYXMgcGFzcy1ieS12YWx1ZSwgaXQgdXN1YWxseSBwb2ludHMg dG8gYQorCSAqIGxhcmdlIGludGVybmFsIGRhdGEgc3RydWN0dXJlIChsaWtlIHRob3NlIHVzZWQg Ynkgc3RyaW5nX2FnZyBvcgorCSAqIGFycmF5X2FnZykuICBUaGVzZSB0cmFuc2l0aW9uIHN0YXRl cyBjYW4gZ3JvdyBsYXJnZSBhbmQgdGhlaXIgc2l6ZSBpcworCSAqIGhhcmQgdG8gZXN0aW1hdGUu ICBBcHBseWluZyBlYWdlciBhZ2dyZWdhdGlvbiBpbiBzdWNoIGNhc2VzIHJpc2tzIGhpZ2gKKwkg KiBtZW1vcnkgdXNhZ2Ugc2luY2UgcGFydGlhbCBhZ2dyZWdhdGlvbiByZXN1bHRzIG1pZ2h0IGJl IHN0b3JlZCBpbiBqb2luCisJICogaGFzaCB0YWJsZXMgb3IgbWF0ZXJpYWxpemVkIG5vZGVzLgor CSAqLworCWlmIChoYXNfaW50ZXJuYWxfYWdndHJhbnN0eXBlKHJvb3QpKQorCQlyZXR1cm47CisK KwkvKgorCSAqIENvbGxlY3QgYWdncmVnYXRlIGV4cHJlc3Npb25zIGFuZCBwbGFpbiBWYXJzIHRo YXQgYXBwZWFyIGluIHRoZQorCSAqIHRhcmdldGxpc3QgYW5kIGhhdmluZ1F1YWwuCisJICovCisJ Y3JlYXRlX2FnZ19jbGF1c2VfaW5mb3Mocm9vdCk7CisKKwkvKgorCSAqIElmIHRoZXJlIGFyZSBu byBzdWl0YWJsZSBhZ2dyZWdhdGUgZXhwcmVzc2lvbnMsIHdlIGNhbm5vdCBhcHBseSBlYWdlcgor CSAqIGFnZ3JlZ2F0aW9uLgorCSAqLworCWlmIChyb290LT5hZ2dfY2xhdXNlX2xpc3QgPT0gTklM KQorCQlyZXR1cm47CisKKwkvKgorCSAqIENvbGxlY3QgZ3JvdXBpbmcgZXhwcmVzc2lvbnMgdGhh dCBhcHBlYXIgaW4gZ3JvdXBpbmcgY2xhdXNlcy4KKwkgKi8KKwljcmVhdGVfZ3JvdXBpbmdfZXhw cl9pbmZvcyhyb290KTsKK30KKworLyoKKyAqIGhhc19pbnRlcm5hbF9hZ2d0cmFuc3R5cGUKKyAq CSAgQ2hlY2tzIGlmIGFueSBhZ2dyZWdhdGUgdXNlcyBJTlRFUk5BTCB0cmFuc2l0aW9uIHR5cGUu CisgKi8KK3N0YXRpYyBib29sCitoYXNfaW50ZXJuYWxfYWdndHJhbnN0eXBlKFBsYW5uZXJJbmZv ICpyb290KQoreworCUxpc3RDZWxsICAgKmxjOworCisJZm9yZWFjaChsYywgcm9vdC0+YWdndHJh bnNpbmZvcykKKwl7CisJCUFnZ1RyYW5zSW5mbyAqdHJhbnNpbmZvID0gbGZpcnN0X25vZGUoQWdn VHJhbnNJbmZvLCBsYyk7CisKKwkJaWYgKHRyYW5zaW5mby0+YWdndHJhbnN0eXBlID09IElOVEVS TkFMT0lEKQorCQkJcmV0dXJuIHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNlOworfQorCisvKgor ICogY3JlYXRlX2FnZ19jbGF1c2VfaW5mb3MKKyAqCSAgU2VhcmNoIHRoZSB0YXJnZXRsaXN0IGFu ZCBoYXZpbmdRdWFsIGZvciBBZ2dyZWZzIGFuZCBwbGFpbiBWYXJzLCBhbmQKKyAqCSAgY3JlYXRl IGFuIEFnZ0NsYXVzZUluZm8gZm9yIGVhY2ggQWdncmVmIG5vZGUuCisgKi8KK3N0YXRpYyB2b2lk CitjcmVhdGVfYWdnX2NsYXVzZV9pbmZvcyhQbGFubmVySW5mbyAqcm9vdCkKK3sKKwlMaXN0CSAg ICp0bGlzdF9leHByczsKKwlMaXN0CSAgICphZ2dfY2xhdXNlX2xpc3QgPSBOSUw7CisJTGlzdAkg ICAqdGxpc3RfdmFycyA9IE5JTDsKKwlSZWxpZHMJCWFnZ3JlZ2F0ZV9yZWxpZHMgPSBOVUxMOwor CWJvb2wJCWVhZ2VyX2FnZ19hcHBsaWNhYmxlID0gdHJ1ZTsKKwlMaXN0Q2VsbCAgICpsYzsKKwor CUFzc2VydChyb290LT5hZ2dfY2xhdXNlX2xpc3QgPT0gTklMKTsKKwlBc3NlcnQocm9vdC0+dGxp c3RfdmFycyA9PSBOSUwpOworCisJdGxpc3RfZXhwcnMgPSBwdWxsX3Zhcl9jbGF1c2UoKE5vZGUg Kikgcm9vdC0+cHJvY2Vzc2VkX3RsaXN0LAorCQkJCQkJCQkgIFBWQ19JTkNMVURFX0FHR1JFR0FU RVMgfAorCQkJCQkJCQkgIFBWQ19SRUNVUlNFX1dJTkRPV0ZVTkNTIHwKKwkJCQkJCQkJICBQVkNf UkVDVVJTRV9QTEFDRUhPTERFUlMpOworCisJLyoKKwkgKiBBZ2dyZWdhdGVzIHdpdGhpbiB0aGUg SEFWSU5HIGNsYXVzZSBuZWVkIHRvIGJlIHByb2Nlc3NlZCBpbiB0aGUgc2FtZQorCSAqIHdheSBh cyB0aG9zZSBpbiB0aGUgdGFyZ2V0bGlzdC4gIE5vdGUgdGhhdCBIQVZJTkcgY2FuIGNvbnRhaW4g QWdncmVmcworCSAqIGJ1dCBub3QgV2luZG93RnVuY3MuCisJICovCisJaWYgKHJvb3QtPnBhcnNl LT5oYXZpbmdRdWFsICE9IE5VTEwpCisJeworCQlMaXN0CSAgICpoYXZpbmdfZXhwcnM7CisKKwkJ aGF2aW5nX2V4cHJzID0gcHVsbF92YXJfY2xhdXNlKChOb2RlICopIHJvb3QtPnBhcnNlLT5oYXZp bmdRdWFsLAorCQkJCQkJCQkJICAgUFZDX0lOQ0xVREVfQUdHUkVHQVRFUyB8CisJCQkJCQkJCQkg ICBQVkNfUkVDVVJTRV9QTEFDRUhPTERFUlMpOworCQlpZiAoaGF2aW5nX2V4cHJzICE9IE5JTCkK KwkJeworCQkJdGxpc3RfZXhwcnMgPSBsaXN0X2NvbmNhdCh0bGlzdF9leHBycywgaGF2aW5nX2V4 cHJzKTsKKwkJCWxpc3RfZnJlZShoYXZpbmdfZXhwcnMpOworCQl9CisJfQorCisJZm9yZWFjaChs YywgdGxpc3RfZXhwcnMpCisJeworCQlFeHByCSAgICpleHByID0gKEV4cHIgKikgbGZpcnN0KGxj KTsKKwkJQWdncmVmCSAgICphZ2dyZWY7CisJCVJlbGlkcwkJYWdnX2V2YWxfYXQ7CisJCUFnZ0Ns YXVzZUluZm8gKmFjX2luZm87CisKKwkJLyogRm9yIG5vdyB3ZSBkb24ndCB0cnkgdG8gc3VwcG9y dCBHUk9VUElORygpIGV4cHJlc3Npb25zICovCisJCWlmIChJc0EoZXhwciwgR3JvdXBpbmdGdW5j KSkKKwkJeworCQkJZWFnZXJfYWdnX2FwcGxpY2FibGUgPSBmYWxzZTsKKwkJCWJyZWFrOworCQl9 CisKKwkJLyogQ29sbGVjdCBwbGFpbiBWYXJzIGZvciBmdXR1cmUgcmVmZXJlbmNlICovCisJCWlm IChJc0EoZXhwciwgVmFyKSkKKwkJeworCQkJdGxpc3RfdmFycyA9IGxpc3RfYXBwZW5kX3VuaXF1 ZSh0bGlzdF92YXJzLCBleHByKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJYWdncmVmID0gY2Fz dE5vZGUoQWdncmVmLCBleHByKTsKKworCQlBc3NlcnQoYWdncmVmLT5hZ2dvcmRlciA9PSBOSUwp OworCQlBc3NlcnQoYWdncmVmLT5hZ2dkaXN0aW5jdCA9PSBOSUwpOworCisJCS8qCisJCSAqIElm IHRoZXJlIGFyZSBhbnkgc2VjdXJpdHlRdWFscywgZG8gbm90IHRyeSB0byBhcHBseSBlYWdlcgor CQkgKiBhZ2dyZWdhdGlvbiBpZiBhbnkgbm9uLWxlYWtwcm9vZiBhZ2dyZWdhdGUgZnVuY3Rpb25z IGFyZSBwcmVzZW50LgorCQkgKiBUaGlzIGlzIG92ZXJseSBzdHJpY3QsIGJ1dCBmb3Igbm93Li4u CisJCSAqLworCQlpZiAocm9vdC0+cXVhbF9zZWN1cml0eV9sZXZlbCA+IDAgJiYKKwkJCSFnZXRf ZnVuY19sZWFrcHJvb2YoYWdncmVmLT5hZ2dmbm9pZCkpCisJCXsKKwkJCWVhZ2VyX2FnZ19hcHBs aWNhYmxlID0gZmFsc2U7CisJCQlicmVhazsKKwkJfQorCisJCWFnZ19ldmFsX2F0ID0gcHVsbF92 YXJub3Mocm9vdCwgKE5vZGUgKikgYWdncmVmKTsKKworCQkvKgorCQkgKiBJZiBhbGwgYmFzZSBy ZWxhdGlvbnMgaW4gdGhlIHF1ZXJ5IGFyZSByZWZlcmVuY2VkIGJ5IGFnZ3JlZ2F0ZQorCQkgKiBm dW5jdGlvbnMsIHRoZW4gZWFnZXIgYWdncmVnYXRpb24gaXMgbm90IGFwcGxpY2FibGUuCisJCSAq LworCQlhZ2dyZWdhdGVfcmVsaWRzID0gYm1zX2FkZF9tZW1iZXJzKGFnZ3JlZ2F0ZV9yZWxpZHMs IGFnZ19ldmFsX2F0KTsKKwkJaWYgKGJtc19pc19zdWJzZXQocm9vdC0+YWxsX2Jhc2VyZWxzLCBh Z2dyZWdhdGVfcmVsaWRzKSkKKwkJeworCQkJZWFnZXJfYWdnX2FwcGxpY2FibGUgPSBmYWxzZTsK KwkJCWJyZWFrOworCQl9CisKKwkJLyogT0ssIGNyZWF0ZSB0aGUgQWdnQ2xhdXNlSW5mbyBub2Rl ICovCisJCWFjX2luZm8gPSBtYWtlTm9kZShBZ2dDbGF1c2VJbmZvKTsKKwkJYWNfaW5mby0+YWdn cmVmID0gYWdncmVmOworCQlhY19pbmZvLT5hZ2dfZXZhbF9hdCA9IGFnZ19ldmFsX2F0OworCisJ CS8qIC4uLiBhbmQgYWRkIGl0IHRvIHRoZSBsaXN0ICovCisJCWFnZ19jbGF1c2VfbGlzdCA9IGxp c3RfYXBwZW5kX3VuaXF1ZShhZ2dfY2xhdXNlX2xpc3QsIGFjX2luZm8pOworCX0KKworCWxpc3Rf ZnJlZSh0bGlzdF9leHBycyk7CisKKwlpZiAoZWFnZXJfYWdnX2FwcGxpY2FibGUpCisJeworCQly b290LT5hZ2dfY2xhdXNlX2xpc3QgPSBhZ2dfY2xhdXNlX2xpc3Q7CisJCXJvb3QtPnRsaXN0X3Zh cnMgPSB0bGlzdF92YXJzOworCX0KKwllbHNlCisJeworCQlsaXN0X2ZyZWVfZGVlcChhZ2dfY2xh dXNlX2xpc3QpOworCQlsaXN0X2ZyZWUodGxpc3RfdmFycyk7CisJfQorfQorCisvKgorICogY3Jl YXRlX2dyb3VwaW5nX2V4cHJfaW5mb3MKKyAqCSAgQ3JlYXRlIGEgR3JvdXBpbmdFeHBySW5mbyBm b3IgZWFjaCBleHByZXNzaW9uIHVzYWJsZSBhcyBncm91cGluZyBrZXkuCisgKgorICogSWYgYW55 IGdyb3VwaW5nIGV4cHJlc3Npb24gaXMgbm90IHN1aXRhYmxlLCB3ZSB3aWxsIGp1c3QgcmV0dXJu IHdpdGgKKyAqIHJvb3QtPmdyb3VwX2V4cHJfbGlzdCBiZWluZyBOSUwuCisgKi8KK3N0YXRpYyB2 b2lkCitjcmVhdGVfZ3JvdXBpbmdfZXhwcl9pbmZvcyhQbGFubmVySW5mbyAqcm9vdCkKK3sKKwlM aXN0CSAgICpleHBycyA9IE5JTDsKKwlMaXN0CSAgICpzb3J0Z3JvdXByZWZzID0gTklMOworCUxp c3QJICAgKmJ0cmVlX29wZmFtaWxpZXMgPSBOSUw7CisJTGlzdENlbGwgICAqbGMsCisJCQkgICAq bGMxLAorCQkJICAgKmxjMiwKKwkJCSAgICpsYzM7CisKKwlBc3NlcnQocm9vdC0+Z3JvdXBfZXhw cl9saXN0ID09IE5JTCk7CisKKwlmb3JlYWNoKGxjLCByb290LT5wcm9jZXNzZWRfZ3JvdXBDbGF1 c2UpCisJeworCQlTb3J0R3JvdXBDbGF1c2UgKnNnYyA9IGxmaXJzdF9ub2RlKFNvcnRHcm91cENs YXVzZSwgbGMpOworCQlUYXJnZXRFbnRyeSAqdGxlID0gZ2V0X3NvcnRncm91cGNsYXVzZV90bGUo c2djLCByb290LT5wcm9jZXNzZWRfdGxpc3QpOworCQlUeXBlQ2FjaGVFbnRyeSAqdGNlOworCQlP aWQJCQllcXVhbGltYWdlcHJvYzsKKworCQlBc3NlcnQodGxlLT5yZXNzb3J0Z3JvdXByZWYgPiAw KTsKKworCQkvKgorCQkgKiBGb3Igbm93IHdlIG9ubHkgc3VwcG9ydCBwbGFpbiBWYXJzIGFzIGdy b3VwaW5nIGV4cHJlc3Npb25zLgorCQkgKi8KKwkJaWYgKCFJc0EodGxlLT5leHByLCBWYXIpKQor CQkJcmV0dXJuOworCisJCS8qCisJCSAqIEVhZ2VyIGFnZ3JlZ2F0aW9uIGlzIG9ubHkgcG9zc2li bGUgaWYgZXF1YWxpdHkgaW1wbGllcyBpbWFnZQorCQkgKiBlcXVhbGl0eSBmb3IgZWFjaCBncm91 cGluZyBrZXkuICBPdGhlcndpc2UsIHBsYWNpbmcga2V5cyB3aXRoCisJCSAqIGRpZmZlcmVudCBi eXRlIGltYWdlcyBpbnRvIHRoZSBzYW1lIGdyb3VwIG1heSByZXN1bHQgaW4gdGhlIGxvc3Mgb2YK KwkJICogaW5mb3JtYXRpb24gdGhhdCBjb3VsZCBiZSBuZWNlc3NhcnkgdG8gZXZhbHVhdGUgdXBw ZXIgcXVhbCBjbGF1c2VzLgorCQkgKgorCQkgKiBGb3IgaW5zdGFuY2UsIHRoZSBOVU1FUklDIGRh dGEgdHlwZSBpcyBub3Qgc3VwcG9ydGVkLCBhcyB2YWx1ZXMKKwkJICogdGhhdCBhcmUgY29uc2lk ZXJlZCBlcXVhbCBieSB0aGUgZXF1YWxpdHkgb3BlcmF0b3IgKGUuZy4sIDAgYW5kCisJCSAqIDAu MCkgY2FuIGhhdmUgZGlmZmVyZW50IHNjYWxlcy4KKwkJICovCisJCXRjZSA9IGxvb2t1cF90eXBl X2NhY2hlKGV4cHJUeXBlKChOb2RlICopIHRsZS0+ZXhwciksCisJCQkJCQkJCVRZUEVDQUNIRV9C VFJFRV9PUEZBTUlMWSk7CisJCWlmICghT2lkSXNWYWxpZCh0Y2UtPmJ0cmVlX29wZikgfHwKKwkJ CSFPaWRJc1ZhbGlkKHRjZS0+YnRyZWVfb3BpbnR5cGUpKQorCQkJcmV0dXJuOworCisJCWVxdWFs aW1hZ2Vwcm9jID0gZ2V0X29wZmFtaWx5X3Byb2ModGNlLT5idHJlZV9vcGYsCisJCQkJCQkJCQkJ ICAgdGNlLT5idHJlZV9vcGludHlwZSwKKwkJCQkJCQkJCQkgICB0Y2UtPmJ0cmVlX29waW50eXBl LAorCQkJCQkJCQkJCSAgIEJURVFVQUxJTUFHRV9QUk9DKTsKKwkJaWYgKCFPaWRJc1ZhbGlkKGVx dWFsaW1hZ2Vwcm9jKSB8fAorCQkJIURhdHVtR2V0Qm9vbChPaWRGdW5jdGlvbkNhbGwxQ29sbChl cXVhbGltYWdlcHJvYywKKwkJCQkJCQkJCQkJICAgdGNlLT50eXBjb2xsYXRpb24sCisJCQkJCQkJ CQkJCSAgIE9iamVjdElkR2V0RGF0dW0odGNlLT5idHJlZV9vcGludHlwZSkpKSkKKwkJCXJldHVy bjsKKworCQlleHBycyA9IGxhcHBlbmQoZXhwcnMsIHRsZS0+ZXhwcik7CisJCXNvcnRncm91cHJl ZnMgPSBsYXBwZW5kX2ludChzb3J0Z3JvdXByZWZzLCB0bGUtPnJlc3NvcnRncm91cHJlZik7CisJ CWJ0cmVlX29wZmFtaWxpZXMgPSBsYXBwZW5kX29pZChidHJlZV9vcGZhbWlsaWVzLCB0Y2UtPmJ0 cmVlX29wZik7CisJfQorCisJLyoKKwkgKiBDb25zdHJ1Y3QgYSBHcm91cGluZ0V4cHJJbmZvIGZv ciBlYWNoIGV4cHJlc3Npb24uCisJICovCisJZm9ydGhyZWUobGMxLCBleHBycywgbGMyLCBzb3J0 Z3JvdXByZWZzLCBsYzMsIGJ0cmVlX29wZmFtaWxpZXMpCisJeworCQlFeHByCSAgICpleHByID0g KEV4cHIgKikgbGZpcnN0KGxjMSk7CisJCWludAkJCXNvcnRncm91cHJlZiA9IGxmaXJzdF9pbnQo bGMyKTsKKwkJT2lkCQkJYnRyZWVfb3BmYW1pbHkgPSBsZmlyc3Rfb2lkKGxjMyk7CisJCUdyb3Vw aW5nRXhwckluZm8gKmdlX2luZm87CisKKwkJZ2VfaW5mbyA9IG1ha2VOb2RlKEdyb3VwaW5nRXhw ckluZm8pOworCQlnZV9pbmZvLT5leHByID0gKEV4cHIgKikgY29weU9iamVjdChleHByKTsKKwkJ Z2VfaW5mby0+c29ydGdyb3VwcmVmID0gc29ydGdyb3VwcmVmOworCQlnZV9pbmZvLT5idHJlZV9v cGZhbWlseSA9IGJ0cmVlX29wZmFtaWx5OworCisJCXJvb3QtPmdyb3VwX2V4cHJfbGlzdCA9IGxh cHBlbmQocm9vdC0+Z3JvdXBfZXhwcl9saXN0LCBnZV9pbmZvKTsKKwl9Cit9CisKIC8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgogICoKICAqCSAgTEFURVJBTCBSRUZFUkVOQ0VTCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubWFpbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BsYW4vcGxhbm1haW4uYwppbmRleCA1NDY3ZTA5NGNhNy4uZWVmYzQ4NmE1NjYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5tYWluLmMKKysrIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm1haW4uYwpAQCAtNzYsNiArNzYsOSBAQCBxdWVyeV9w bGFubmVyKFBsYW5uZXJJbmZvICpyb290LAogCXJvb3QtPnBsYWNlaG9sZGVyX2xpc3QgPSBOSUw7 CiAJcm9vdC0+cGxhY2Vob2xkZXJfYXJyYXkgPSBOVUxMOwogCXJvb3QtPnBsYWNlaG9sZGVyX2Fy cmF5X3NpemUgPSAwOworCXJvb3QtPmFnZ19jbGF1c2VfbGlzdCA9IE5JTDsKKwlyb290LT5ncm91 cF9leHByX2xpc3QgPSBOSUw7CisJcm9vdC0+dGxpc3RfdmFycyA9IE5JTDsKIAlyb290LT5ma2V5 X2xpc3QgPSBOSUw7CiAJcm9vdC0+aW5pdGlhbF9yZWxzID0gTklMOwogCkBAIC0yNjUsNiArMjY4 LDEyIEBAIHF1ZXJ5X3BsYW5uZXIoUGxhbm5lckluZm8gKnJvb3QsCiAJICovCiAJZXh0cmFjdF9y ZXN0cmljdGlvbl9vcl9jbGF1c2VzKHJvb3QpOwogCisJLyoKKwkgKiBDaGVjayBpZiBlYWdlciBh Z2dyZWdhdGlvbiBpcyBhcHBsaWNhYmxlLCBhbmQgaWYgc28sIHNldCB1cAorCSAqIHJvb3QtPmFn Z19jbGF1c2VfbGlzdCBhbmQgcm9vdC0+Z3JvdXBfZXhwcl9saXN0LgorCSAqLworCXNldHVwX2Vh Z2VyX2FnZ3JlZ2F0aW9uKHJvb3QpOworCiAJLyoKIAkgKiBOb3cgZXhwYW5kIGFwcGVuZHJlbHMg YnkgYWRkaW5nICJvdGhlcnJlbHMiIGZvciB0aGVpciBjaGlsZHJlbi4gIFdlCiAJICogZGVsYXkg dGhpcyB0byB0aGUgZW5kIHNvIHRoYXQgd2UgaGF2ZSBhcyBtdWNoIGluZm9ybWF0aW9uIGFzIHBv c3NpYmxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggYzk4OWU3MmNhYzUu LjZlMWQwMWFkYmZhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFu bmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC0yMzEs NyArMjMxLDYgQEAgc3RhdGljIHZvaWQgYWRkX3BhdGhzX3RvX2dyb3VwaW5nX3JlbChQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCQkJCQkJCQkJICBSZWxPcHRJbmZv ICpwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsCiAJCQkJCQkJCQkgIGNvbnN0IEFnZ0NsYXVzZUNvc3Rz ICphZ2dfY29zdHMsCiAJCQkJCQkJCQkgIGdyb3VwaW5nX3NldHNfZGF0YSAqZ2QsCi0JCQkJCQkJ CQkgIGRvdWJsZSBkTnVtR3JvdXBzLAogCQkJCQkJCQkJICBHcm91cFBhdGhFeHRyYURhdGEgKmV4 dHJhKTsKIHN0YXRpYyBSZWxPcHRJbmZvICpjcmVhdGVfcGFydGlhbF9ncm91cGluZ19wYXRocyhQ bGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCQkJCSBSZWxPcHRJbmZvICpncm91cGVkX3JlbCwK QEAgLTM5NzAsOSArMzk2OSw3IEBAIGNyZWF0ZV9vcmRpbmFyeV9ncm91cGluZ19wYXRocyhQbGFu bmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCQkJCQkJCSAgIEdyb3VwUGF0 aEV4dHJhRGF0YSAqZXh0cmEsCiAJCQkJCQkJICAgUmVsT3B0SW5mbyAqKnBhcnRpYWxseV9ncm91 cGVkX3JlbF9wKQogewotCVBhdGgJICAgKmNoZWFwZXN0X3BhdGggPSBpbnB1dF9yZWwtPmNoZWFw ZXN0X3RvdGFsX3BhdGg7CiAJUmVsT3B0SW5mbyAqcGFydGlhbGx5X2dyb3VwZWRfcmVsID0gTlVM TDsKLQlkb3VibGUJCWROdW1Hcm91cHM7CiAJUGFydGl0aW9ud2lzZUFnZ3JlZ2F0ZVR5cGUgcGF0 eXBlID0gUEFSVElUSU9OV0lTRV9BR0dSRUdBVEVfTk9ORTsKIAogCS8qCkBAIC00MDU0LDIzICs0 MDUxLDE2IEBAIGNyZWF0ZV9vcmRpbmFyeV9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9v dCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCiAJLyogR2F0aGVyIGFueSBwYXJ0aWFsbHkgZ3Jv dXBlZCBwYXJ0aWFsIHBhdGhzLiAqLwogCWlmIChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwgJiYgcGFy dGlhbGx5X2dyb3VwZWRfcmVsLT5wYXJ0aWFsX3BhdGhsaXN0KQotCXsKIAkJZ2F0aGVyX2dyb3Vw aW5nX3BhdGhzKHJvb3QsIHBhcnRpYWxseV9ncm91cGVkX3JlbCk7Ci0JCXNldF9jaGVhcGVzdChw YXJ0aWFsbHlfZ3JvdXBlZF9yZWwpOwotCX0KIAotCS8qCi0JICogRXN0aW1hdGUgbnVtYmVyIG9m IGdyb3Vwcy4KLQkgKi8KLQlkTnVtR3JvdXBzID0gZ2V0X251bWJlcl9vZl9ncm91cHMocm9vdCwK LQkJCQkJCQkJCSAgY2hlYXBlc3RfcGF0aC0+cm93cywKLQkJCQkJCQkJCSAgZ2QsCi0JCQkJCQkJ CQkgIGV4dHJhLT50YXJnZXRMaXN0KTsKKwkvKiBOb3cgY2hvb3NlIHRoZSBiZXN0IHBhdGgocykg Zm9yIHBhcnRpYWxseV9ncm91cGVkX3JlbC4gKi8KKwlpZiAocGFydGlhbGx5X2dyb3VwZWRfcmVs ICYmIHBhcnRpYWxseV9ncm91cGVkX3JlbC0+cGF0aGxpc3QpCisJCXNldF9jaGVhcGVzdChwYXJ0 aWFsbHlfZ3JvdXBlZF9yZWwpOwogCiAJLyogQnVpbGQgZmluYWwgZ3JvdXBpbmcgcGF0aHMgKi8K IAlhZGRfcGF0aHNfdG9fZ3JvdXBpbmdfcmVsKHJvb3QsIGlucHV0X3JlbCwgZ3JvdXBlZF9yZWws CiAJCQkJCQkJICBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsIGFnZ19jb3N0cywgZ2QsCi0JCQkJCQkJ ICBkTnVtR3JvdXBzLCBleHRyYSk7CisJCQkJCQkJICBleHRyYSk7CiAKIAkvKiBHaXZlIGEgaGVs cGZ1bCBlcnJvciBpZiB3ZSBmYWlsZWQgdG8gZmluZCBhbnkgaW1wbGVtZW50YXRpb24gKi8KIAlp ZiAoZ3JvdXBlZF9yZWwtPnBhdGhsaXN0ID09IE5JTCkKQEAgLTcwMTUsMTYgKzcwMDUsNDIgQEAg YWRkX3BhdGhzX3RvX2dyb3VwaW5nX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAq aW5wdXRfcmVsLAogCQkJCQkJICBSZWxPcHRJbmZvICpncm91cGVkX3JlbCwKIAkJCQkJCSAgUmVs T3B0SW5mbyAqcGFydGlhbGx5X2dyb3VwZWRfcmVsLAogCQkJCQkJICBjb25zdCBBZ2dDbGF1c2VD b3N0cyAqYWdnX2Nvc3RzLAotCQkJCQkJICBncm91cGluZ19zZXRzX2RhdGEgKmdkLCBkb3VibGUg ZE51bUdyb3VwcywKKwkJCQkJCSAgZ3JvdXBpbmdfc2V0c19kYXRhICpnZCwKIAkJCQkJCSAgR3Jv dXBQYXRoRXh0cmFEYXRhICpleHRyYSkKIHsKIAlRdWVyeQkgICAqcGFyc2UgPSByb290LT5wYXJz ZTsKIAlQYXRoCSAgICpjaGVhcGVzdF9wYXRoID0gaW5wdXRfcmVsLT5jaGVhcGVzdF90b3RhbF9w YXRoOworCVBhdGgJICAgKmNoZWFwZXN0X3BhcnRpYWxseV9ncm91cGVkX3BhdGggPSBOVUxMOwog CUxpc3RDZWxsICAgKmxjOwogCWJvb2wJCWNhbl9oYXNoID0gKGV4dHJhLT5mbGFncyAmIEdST1VQ SU5HX0NBTl9VU0VfSEFTSCkgIT0gMDsKIAlib29sCQljYW5fc29ydCA9IChleHRyYS0+ZmxhZ3Mg JiBHUk9VUElOR19DQU5fVVNFX1NPUlQpICE9IDA7CiAJTGlzdAkgICAqaGF2aW5nUXVhbCA9IChM aXN0ICopIGV4dHJhLT5oYXZpbmdRdWFsOwogCUFnZ0NsYXVzZUNvc3RzICphZ2dfZmluYWxfY29z dHMgPSAmZXh0cmEtPmFnZ19maW5hbF9jb3N0czsKKwlkb3VibGUJCWROdW1Hcm91cHMgPSAwOwor CWRvdWJsZQkJZE51bUZpbmFsR3JvdXBzID0gMDsKKworCS8qCisJICogRXN0aW1hdGUgbnVtYmVy IG9mIGdyb3VwcyBmb3Igbm9uLXNwbGl0IGFnZ3JlZ2F0aW9uLgorCSAqLworCWROdW1Hcm91cHMg PSBnZXRfbnVtYmVyX29mX2dyb3Vwcyhyb290LAorCQkJCQkJCQkJICBjaGVhcGVzdF9wYXRoLT5y b3dzLAorCQkJCQkJCQkJICBnZCwKKwkJCQkJCQkJCSAgZXh0cmEtPnRhcmdldExpc3QpOworCisJ aWYgKHBhcnRpYWxseV9ncm91cGVkX3JlbCAmJiBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwtPnBhdGhs aXN0KQorCXsKKwkJY2hlYXBlc3RfcGFydGlhbGx5X2dyb3VwZWRfcGF0aCA9CisJCQlwYXJ0aWFs bHlfZ3JvdXBlZF9yZWwtPmNoZWFwZXN0X3RvdGFsX3BhdGg7CisKKwkJLyoKKwkJICogRXN0aW1h dGUgbnVtYmVyIG9mIGdyb3VwcyBmb3IgZmluYWwgcGhhc2Ugb2YgcGFydGlhbCBhZ2dyZWdhdGlv bi4KKwkJICovCisJCWROdW1GaW5hbEdyb3VwcyA9CisJCQlnZXRfbnVtYmVyX29mX2dyb3Vwcyhy b290LAorCQkJCQkJCQkgY2hlYXBlc3RfcGFydGlhbGx5X2dyb3VwZWRfcGF0aC0+cm93cywKKwkJ CQkJCQkJIGdkLAorCQkJCQkJCQkgZXh0cmEtPnRhcmdldExpc3QpOworCX0KIAogCWlmIChjYW5f c29ydCkKIAl7CkBAIC03MTM3LDcgKzcxNTMsNyBAQCBhZGRfcGF0aHNfdG9fZ3JvdXBpbmdfcmVs KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICppbnB1dF9yZWwsCiAJCQkJCXBhdGggPSBt YWtlX29yZGVyZWRfcGF0aChyb290LAogCQkJCQkJCQkJCQkgZ3JvdXBlZF9yZWwsCiAJCQkJCQkJ CQkJCSBwYXRoLAotCQkJCQkJCQkJCQkgcGFydGlhbGx5X2dyb3VwZWRfcmVsLT5jaGVhcGVzdF90 b3RhbF9wYXRoLAorCQkJCQkJCQkJCQkgY2hlYXBlc3RfcGFydGlhbGx5X2dyb3VwZWRfcGF0aCwK IAkJCQkJCQkJCQkJIGluZm8tPnBhdGhrZXlzLAogCQkJCQkJCQkJCQkgLTEuMCk7CiAKQEAgLTcx NTUsNyArNzE3MSw3IEBAIGFkZF9wYXRoc190b19ncm91cGluZ19yZWwoUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAkJCQkJCQkJCQkJCSBpbmZvLT5jbGF1c2VzLAog CQkJCQkJCQkJCQkJIGhhdmluZ1F1YWwsCiAJCQkJCQkJCQkJCQkgYWdnX2ZpbmFsX2Nvc3RzLAot CQkJCQkJCQkJCQkJIGROdW1Hcm91cHMpKTsKKwkJCQkJCQkJCQkJCSBkTnVtRmluYWxHcm91cHMp KTsKIAkJCQkJZWxzZQogCQkJCQkJYWRkX3BhdGgoZ3JvdXBlZF9yZWwsIChQYXRoICopCiAJCQkJ CQkJCSBjcmVhdGVfZ3JvdXBfcGF0aChyb290LApAQCAtNzE2Myw3ICs3MTc5LDcgQEAgYWRkX3Bh dGhzX3RvX2dyb3VwaW5nX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRf cmVsLAogCQkJCQkJCQkJCQkJICAgcGF0aCwKIAkJCQkJCQkJCQkJCSAgIGluZm8tPmNsYXVzZXMs CiAJCQkJCQkJCQkJCQkgICBoYXZpbmdRdWFsLAotCQkJCQkJCQkJCQkJICAgZE51bUdyb3Vwcykp OworCQkJCQkJCQkJCQkJICAgZE51bUZpbmFsR3JvdXBzKSk7CiAKIAkJCQl9CiAJCQl9CkBAIC03 MjA1LDE5ICs3MjIxLDE3IEBAIGFkZF9wYXRoc190b19ncm91cGluZ19yZWwoUGxhbm5lckluZm8g KnJvb3QsIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAkJICovCiAJCWlmIChwYXJ0aWFsbHlfZ3Jv dXBlZF9yZWwgJiYgcGFydGlhbGx5X2dyb3VwZWRfcmVsLT5wYXRobGlzdCkKIAkJewotCQkJUGF0 aAkgICAqcGF0aCA9IHBhcnRpYWxseV9ncm91cGVkX3JlbC0+Y2hlYXBlc3RfdG90YWxfcGF0aDsK LQogCQkJYWRkX3BhdGgoZ3JvdXBlZF9yZWwsIChQYXRoICopCiAJCQkJCSBjcmVhdGVfYWdnX3Bh dGgocm9vdCwKIAkJCQkJCQkJCSBncm91cGVkX3JlbCwKLQkJCQkJCQkJCSBwYXRoLAorCQkJCQkJ CQkJIGNoZWFwZXN0X3BhcnRpYWxseV9ncm91cGVkX3BhdGgsCiAJCQkJCQkJCQkgZ3JvdXBlZF9y ZWwtPnJlbHRhcmdldCwKIAkJCQkJCQkJCSBBR0dfSEFTSEVELAogCQkJCQkJCQkJIEFHR1NQTElU X0ZJTkFMX0RFU0VSSUFMLAogCQkJCQkJCQkJIHJvb3QtPnByb2Nlc3NlZF9ncm91cENsYXVzZSwK IAkJCQkJCQkJCSBoYXZpbmdRdWFsLAogCQkJCQkJCQkJIGFnZ19maW5hbF9jb3N0cywKLQkJCQkJ CQkJCSBkTnVtR3JvdXBzKSk7CisJCQkJCQkJCQkgZE51bUZpbmFsR3JvdXBzKSk7CiAJCX0KIAl9 CiAKQEAgLTcyNTcsNiArNzI3MSw3IEBAIGNyZWF0ZV9wYXJ0aWFsX2dyb3VwaW5nX3BhdGhzKFBs YW5uZXJJbmZvICpyb290LAogewogCVF1ZXJ5CSAgICpwYXJzZSA9IHJvb3QtPnBhcnNlOwogCVJl bE9wdEluZm8gKnBhcnRpYWxseV9ncm91cGVkX3JlbDsKKwlSZWxPcHRJbmZvICplYWdlcl9hZ2df cmVsID0gTlVMTDsKIAlBZ2dDbGF1c2VDb3N0cyAqYWdnX3BhcnRpYWxfY29zdHMgPSAmZXh0cmEt PmFnZ19wYXJ0aWFsX2Nvc3RzOwogCUFnZ0NsYXVzZUNvc3RzICphZ2dfZmluYWxfY29zdHMgPSAm ZXh0cmEtPmFnZ19maW5hbF9jb3N0czsKIAlQYXRoCSAgICpjaGVhcGVzdF9wYXJ0aWFsX3BhdGgg PSBOVUxMOwpAQCAtNzI2Nyw2ICs3MjgyLDE1IEBAIGNyZWF0ZV9wYXJ0aWFsX2dyb3VwaW5nX3Bh dGhzKFBsYW5uZXJJbmZvICpyb290LAogCWJvb2wJCWNhbl9oYXNoID0gKGV4dHJhLT5mbGFncyAm IEdST1VQSU5HX0NBTl9VU0VfSEFTSCkgIT0gMDsKIAlib29sCQljYW5fc29ydCA9IChleHRyYS0+ ZmxhZ3MgJiBHUk9VUElOR19DQU5fVVNFX1NPUlQpICE9IDA7CiAKKwkvKgorCSAqIENoZWNrIHdo ZXRoZXIgYW55IHBhcnRpYWxseSBhZ2dyZWdhdGVkIHBhdGhzIGhhdmUgYmVlbiBnZW5lcmF0ZWQK KwkgKiB0aHJvdWdoIGVhZ2VyIGFnZ3JlZ2F0aW9uLgorCSAqLworCWlmIChpbnB1dF9yZWwtPmdy b3VwZWRfcmVsICYmCisJCSFJU19EVU1NWV9SRUwoaW5wdXRfcmVsLT5ncm91cGVkX3JlbCkgJiYK KwkJaW5wdXRfcmVsLT5ncm91cGVkX3JlbC0+cGF0aGxpc3QgIT0gTklMKQorCQllYWdlcl9hZ2df cmVsID0gaW5wdXRfcmVsLT5ncm91cGVkX3JlbDsKKwogCS8qCiAJICogQ29uc2lkZXIgd2hldGhl ciB3ZSBzaG91bGQgZ2VuZXJhdGUgcGFydGlhbGx5IGFnZ3JlZ2F0ZWQgbm9uLXBhcnRpYWwKIAkg KiBwYXRocy4gIFdlIGNhbiBvbmx5IGRvIHRoaXMgaWYgd2UgaGF2ZSBhIG5vbi1wYXJ0aWFsIHBh dGgsIGFuZCBvbmx5IGlmCkBAIC03Mjg4LDExICs3MzEyLDEzIEBAIGNyZWF0ZV9wYXJ0aWFsX2dy b3VwaW5nX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LAogCiAJLyoKIAkgKiBJZiB3ZSBjYW4ndCBw YXJ0aWFsbHkgYWdncmVnYXRlIHBhcnRpYWwgcGF0aHMsIGFuZCB3ZSBjYW4ndCBwYXJ0aWFsbHkK LQkgKiBhZ2dyZWdhdGUgbm9uLXBhcnRpYWwgcGF0aHMsIHRoZW4gZG9uJ3QgYm90aGVyIGNyZWF0 aW5nIHRoZSBuZXcKKwkgKiBhZ2dyZWdhdGUgbm9uLXBhcnRpYWwgcGF0aHMsIGFuZCBubyBwYXJ0 aWFsbHkgYWdncmVnYXRlZCBwYXRocyB3ZXJlCisJICogZ2VuZXJhdGVkIGJ5IGVhZ2VyIGFnZ3Jl Z2F0aW9uLCB0aGVuIGRvbid0IGJvdGhlciBjcmVhdGluZyB0aGUgbmV3CiAJICogUmVsT3B0SW5m byBhdCBhbGwsIHVubGVzcyB0aGUgY2FsbGVyIHNwZWNpZmllZCBmb3JjZV9yZWxfY3JlYXRpb24u CiAJICovCiAJaWYgKGNoZWFwZXN0X3RvdGFsX3BhdGggPT0gTlVMTCAmJgogCQljaGVhcGVzdF9w YXJ0aWFsX3BhdGggPT0gTlVMTCAmJgorCQllYWdlcl9hZ2dfcmVsID09IE5VTEwgJiYKIAkJIWZv cmNlX3JlbF9jcmVhdGlvbikKIAkJcmV0dXJuIE5VTEw7CiAKQEAgLTc1MTcsNiArNzU0Myw1MSBA QCBjcmVhdGVfcGFydGlhbF9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJ CQkJCQkgZE51bVBhcnRpYWxQYXJ0aWFsR3JvdXBzKSk7CiAJfQogCisJLyoKKwkgKiBBZGQgYW55 IHBhcnRpYWxseSBhZ2dyZWdhdGVkIHBhdGhzIGdlbmVyYXRlZCBieSBlYWdlciBhZ2dyZWdhdGlv biB0bworCSAqIHRoZSBuZXcgdXBwZXIgcmVsYXRpb24gYWZ0ZXIgYXBwbHlpbmcgcHJvamVjdGlv biBzdGVwcyBhcyBuZWVkZWQuCisJICovCisJaWYgKGVhZ2VyX2FnZ19yZWwpCisJeworCQkvKiBB ZGQgdGhlIHBhdGhzICovCisJCWZvcmVhY2gobGMsIGVhZ2VyX2FnZ19yZWwtPnBhdGhsaXN0KQor CQl7CisJCQlQYXRoCSAgICpwYXRoID0gKFBhdGggKikgbGZpcnN0KGxjKTsKKworCQkJLyogU2hv dWxkbid0IGhhdmUgYW55IHBhcmFtZXRlcml6ZWQgcGF0aHMgYW55bW9yZSAqLworCQkJQXNzZXJ0 KHBhdGgtPnBhcmFtX2luZm8gPT0gTlVMTCk7CisKKwkJCXBhdGggPSAoUGF0aCAqKSBjcmVhdGVf cHJvamVjdGlvbl9wYXRoKHJvb3QsCisJCQkJCQkJCQkJCQkgICBwYXJ0aWFsbHlfZ3JvdXBlZF9y ZWwsCisJCQkJCQkJCQkJCQkgICBwYXRoLAorCQkJCQkJCQkJCQkJICAgcGFydGlhbGx5X2dyb3Vw ZWRfcmVsLT5yZWx0YXJnZXQpOworCisJCQlhZGRfcGF0aChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWws IHBhdGgpOworCQl9CisKKwkJLyoKKwkJICogTGlrZXdpc2UgYWRkIHRoZSBwYXJ0aWFsIHBhdGhz LCBidXQgb25seSBpZiBwYXJhbGxlbGlzbSBpcyBwb3NzaWJsZQorCQkgKiBmb3IgcGFydGlhbGx5 X2dyb3VwZWRfcmVsLgorCQkgKi8KKwkJaWYgKHBhcnRpYWxseV9ncm91cGVkX3JlbC0+Y29uc2lk ZXJfcGFyYWxsZWwpCisJCXsKKwkJCWZvcmVhY2gobGMsIGVhZ2VyX2FnZ19yZWwtPnBhcnRpYWxf cGF0aGxpc3QpCisJCQl7CisJCQkJUGF0aAkgICAqcGF0aCA9IChQYXRoICopIGxmaXJzdChsYyk7 CisKKwkJCQkvKiBTaG91bGRuJ3QgaGF2ZSBhbnkgcGFyYW1ldGVyaXplZCBwYXRocyBhbnltb3Jl ICovCisJCQkJQXNzZXJ0KHBhdGgtPnBhcmFtX2luZm8gPT0gTlVMTCk7CisKKwkJCQlwYXRoID0g KFBhdGggKikgY3JlYXRlX3Byb2plY3Rpb25fcGF0aChyb290LAorCQkJCQkJCQkJCQkJCSAgIHBh cnRpYWxseV9ncm91cGVkX3JlbCwKKwkJCQkJCQkJCQkJCQkgICBwYXRoLAorCQkJCQkJCQkJCQkJ CSAgIHBhcnRpYWxseV9ncm91cGVkX3JlbC0+cmVsdGFyZ2V0KTsKKworCQkJCWFkZF9wYXJ0aWFs X3BhdGgocGFydGlhbGx5X2dyb3VwZWRfcmVsLCBwYXRoKTsKKwkJCX0KKwkJfQorCX0KKwogCS8q CiAJICogSWYgdGhlcmUgaXMgYW4gRkRXIHRoYXQncyByZXNwb25zaWJsZSBmb3IgYWxsIGJhc2Vy ZWxzIG9mIHRoZSBxdWVyeSwKIAkgKiBsZXQgaXQgY29uc2lkZXIgYWRkaW5nIHBhcnRpYWxseSBn cm91cGVkIEZvcmVpZ25QYXRocy4KQEAgLTgwODAsMTMgKzgxNTEsNiBAQCBjcmVhdGVfcGFydGl0 aW9ud2lzZV9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKIAogCQlhZGRfcGF0aHNf dG9fYXBwZW5kX3JlbChyb290LCBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsCiAJCQkJCQkJCXBhcnRp YWxseV9ncm91cGVkX2xpdmVfY2hpbGRyZW4pOwotCi0JCS8qCi0JCSAqIFdlIG5lZWQgY2FsbCBz ZXRfY2hlYXBlc3QsIHNpbmNlIHRoZSBmaW5hbGl6YXRpb24gc3RlcCB3aWxsIHVzZSB0aGUKLQkJ ICogY2hlYXBlc3QgcGF0aCBmcm9tIHRoZSByZWwuCi0JCSAqLwotCQlpZiAocGFydGlhbGx5X2dy b3VwZWRfcmVsLT5wYXRobGlzdCkKLQkJCXNldF9jaGVhcGVzdChwYXJ0aWFsbHlfZ3JvdXBlZF9y ZWwpOwogCX0KIAogCS8qIElmIHBvc3NpYmxlLCBjcmVhdGUgYXBwZW5kIHBhdGhzIGZvciBmdWxs eSBncm91cGVkIGNoaWxkcmVuLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3V0aWwvYXBwZW5kaW5mby5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5kaW5m by5jCmluZGV4IDViM2RjMGQ4NjUzLi4xMWMwZWIwZDE4MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3V0aWwvYXBwZW5kaW5mby5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci91dGlsL2FwcGVuZGluZm8uYwpAQCAtNTE2LDYgKzUxNiw2NSBAQCBhZGp1c3RfYXBwZW5kcmVs X2F0dHJzX211dGF0b3IoTm9kZSAqbm9kZSwKIAkJcmV0dXJuIChOb2RlICopIG5ld2luZm87CiAJ fQogCisJLyoKKwkgKiBXZSBoYXZlIHRvIHByb2Nlc3MgUmVsQWdnSW5mbyBub2RlcyBzcGVjaWFs bHkuCisJICovCisJaWYgKElzQShub2RlLCBSZWxBZ2dJbmZvKSkKKwl7CisJCVJlbEFnZ0luZm8g Km9sZGluZm8gPSAoUmVsQWdnSW5mbyAqKSBub2RlOworCQlSZWxBZ2dJbmZvICpuZXdpbmZvID0g bWFrZU5vZGUoUmVsQWdnSW5mbyk7CisKKwkJLyogQ29weSBhbGwgZmxhdC1jb3BpYWJsZSBmaWVs ZHMgKi8KKwkJbWVtY3B5KG5ld2luZm8sIG9sZGluZm8sIHNpemVvZihSZWxBZ2dJbmZvKSk7CisK KwkJbmV3aW5mby0+cmVsaWRzID0gYWRqdXN0X2NoaWxkX3JlbGlkcyhvbGRpbmZvLT5yZWxpZHMs CisJCQkJCQkJCQkJCSAgbmFwcGluZm9zLCBhcHBpbmZvcyk7CisKKwkJbmV3aW5mby0+dGFyZ2V0 ID0gKFBhdGhUYXJnZXQgKikKKwkJCWFkanVzdF9hcHBlbmRyZWxfYXR0cnNfbXV0YXRvcigoTm9k ZSAqKSBvbGRpbmZvLT50YXJnZXQsCisJCQkJCQkJCQkJICAgY29udGV4dCk7CisKKwkJbmV3aW5m by0+YWdnX2lucHV0ID0gKFBhdGhUYXJnZXQgKikKKwkJCWFkanVzdF9hcHBlbmRyZWxfYXR0cnNf bXV0YXRvcigoTm9kZSAqKSBvbGRpbmZvLT5hZ2dfaW5wdXQsCisJCQkJCQkJCQkJICAgY29udGV4 dCk7CisKKwkJbmV3aW5mby0+Z3JvdXBfY2xhdXNlcyA9IChMaXN0ICopCisJCQlhZGp1c3RfYXBw ZW5kcmVsX2F0dHJzX211dGF0b3IoKE5vZGUgKikgb2xkaW5mby0+Z3JvdXBfY2xhdXNlcywKKwkJ CQkJCQkJCQkgICBjb250ZXh0KTsKKworCQluZXdpbmZvLT5ncm91cF9leHBycyA9IChMaXN0ICop CisJCQlhZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211dGF0b3IoKE5vZGUgKikgb2xkaW5mby0+Z3Jv dXBfZXhwcnMsCisJCQkJCQkJCQkJICAgY29udGV4dCk7CisKKwkJcmV0dXJuIChOb2RlICopIG5l d2luZm87CisJfQorCisJLyoKKwkgKiBXZSBoYXZlIHRvIHByb2Nlc3MgUGF0aFRhcmdldCBub2Rl cyBzcGVjaWFsbHkuCisJICovCisJaWYgKElzQShub2RlLCBQYXRoVGFyZ2V0KSkKKwl7CisJCVBh dGhUYXJnZXQgKm9sZHRhcmdldCA9IChQYXRoVGFyZ2V0ICopIG5vZGU7CisJCVBhdGhUYXJnZXQg Km5ld3RhcmdldCA9IG1ha2VOb2RlKFBhdGhUYXJnZXQpOworCisJCS8qIENvcHkgYWxsIGZsYXQt Y29waWFibGUgZmllbGRzICovCisJCW1lbWNweShuZXd0YXJnZXQsIG9sZHRhcmdldCwgc2l6ZW9m KFBhdGhUYXJnZXQpKTsKKworCQluZXd0YXJnZXQtPmV4cHJzID0gKExpc3QgKikKKwkJCWFkanVz dF9hcHBlbmRyZWxfYXR0cnNfbXV0YXRvcigoTm9kZSAqKSBvbGR0YXJnZXQtPmV4cHJzLAorCQkJ CQkJCQkJCSAgIGNvbnRleHQpOworCisJCWlmIChvbGR0YXJnZXQtPnNvcnRncm91cHJlZnMpCisJ CXsKKwkJCVNpemUJCW5ieXRlcyA9IGxpc3RfbGVuZ3RoKG9sZHRhcmdldC0+ZXhwcnMpICogc2l6 ZW9mKEluZGV4KTsKKworCQkJbmV3dGFyZ2V0LT5zb3J0Z3JvdXByZWZzID0gKEluZGV4ICopIHBh bGxvYyhuYnl0ZXMpOworCQkJbWVtY3B5KG5ld3RhcmdldC0+c29ydGdyb3VwcmVmcywgb2xkdGFy Z2V0LT5zb3J0Z3JvdXByZWZzLCBuYnl0ZXMpOworCQl9CisKKwkJcmV0dXJuIChOb2RlICopIG5l d3RhcmdldDsKKwl9CisKIAkvKgogCSAqIE5PVEU6IHdlIGRvIG5vdCBuZWVkIHRvIHJlY3Vyc2Ug aW50byBzdWJsaW5rcywgYmVjYXVzZSB0aGV5IHNob3VsZAogCSAqIGFscmVhZHkgaGF2ZSBiZWVu IGNvbnZlcnRlZCB0byBzdWJwbGFucyBiZWZvcmUgd2Ugc2VlIHRoZW0uCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvcGF0aG5vZGUuYwppbmRleCA5Y2M2MDI3ODhlYS4uNzFkMTA5NjAxMmMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMKKysrIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYwpAQCAtMjgxMyw4ICsyODEzLDcgQEAgY3Jl YXRlX3Byb2plY3Rpb25fcGF0aChQbGFubmVySW5mbyAqcm9vdCwKIAlwYXRobm9kZS0+cGF0aC5w YXRodHlwZSA9IFRfUmVzdWx0OwogCXBhdGhub2RlLT5wYXRoLnBhcmVudCA9IHJlbDsKIAlwYXRo bm9kZS0+cGF0aC5wYXRodGFyZ2V0ID0gdGFyZ2V0OwotCS8qIEZvciBub3csIGFzc3VtZSB3ZSBh cmUgYWJvdmUgYW55IGpvaW5zLCBzbyBubyBwYXJhbWV0ZXJpemF0aW9uICovCi0JcGF0aG5vZGUt PnBhdGgucGFyYW1faW5mbyA9IE5VTEw7CisJcGF0aG5vZGUtPnBhdGgucGFyYW1faW5mbyA9IHN1 YnBhdGgtPnBhcmFtX2luZm87CiAJcGF0aG5vZGUtPnBhdGgucGFyYWxsZWxfYXdhcmUgPSBmYWxz ZTsKIAlwYXRobm9kZS0+cGF0aC5wYXJhbGxlbF9zYWZlID0gcmVsLT5jb25zaWRlcl9wYXJhbGxl bCAmJgogCQlzdWJwYXRoLT5wYXJhbGxlbF9zYWZlICYmCkBAIC0zMDY5LDggKzMwNjgsNyBAQCBj cmVhdGVfaW5jcmVtZW50YWxfc29ydF9wYXRoKFBsYW5uZXJJbmZvICpyb290LAogCXBhdGhub2Rl LT5wYXRoLnBhcmVudCA9IHJlbDsKIAkvKiBTb3J0IGRvZXNuJ3QgcHJvamVjdCwgc28gdXNlIHNv dXJjZSBwYXRoJ3MgcGF0aHRhcmdldCAqLwogCXBhdGhub2RlLT5wYXRoLnBhdGh0YXJnZXQgPSBz dWJwYXRoLT5wYXRodGFyZ2V0OwotCS8qIEZvciBub3csIGFzc3VtZSB3ZSBhcmUgYWJvdmUgYW55 IGpvaW5zLCBzbyBubyBwYXJhbWV0ZXJpemF0aW9uICovCi0JcGF0aG5vZGUtPnBhdGgucGFyYW1f aW5mbyA9IE5VTEw7CisJcGF0aG5vZGUtPnBhdGgucGFyYW1faW5mbyA9IHN1YnBhdGgtPnBhcmFt X2luZm87CiAJcGF0aG5vZGUtPnBhdGgucGFyYWxsZWxfYXdhcmUgPSBmYWxzZTsKIAlwYXRobm9k ZS0+cGF0aC5wYXJhbGxlbF9zYWZlID0gcmVsLT5jb25zaWRlcl9wYXJhbGxlbCAmJgogCQlzdWJw YXRoLT5wYXJhbGxlbF9zYWZlOwpAQCAtMzExNyw4ICszMTE1LDcgQEAgY3JlYXRlX3NvcnRfcGF0 aChQbGFubmVySW5mbyAqcm9vdCwKIAlwYXRobm9kZS0+cGF0aC5wYXJlbnQgPSByZWw7CiAJLyog U29ydCBkb2Vzbid0IHByb2plY3QsIHNvIHVzZSBzb3VyY2UgcGF0aCdzIHBhdGh0YXJnZXQgKi8K IAlwYXRobm9kZS0+cGF0aC5wYXRodGFyZ2V0ID0gc3VicGF0aC0+cGF0aHRhcmdldDsKLQkvKiBG b3Igbm93LCBhc3N1bWUgd2UgYXJlIGFib3ZlIGFueSBqb2lucywgc28gbm8gcGFyYW1ldGVyaXph dGlvbiAqLwotCXBhdGhub2RlLT5wYXRoLnBhcmFtX2luZm8gPSBOVUxMOworCXBhdGhub2RlLT5w YXRoLnBhcmFtX2luZm8gPSBzdWJwYXRoLT5wYXJhbV9pbmZvOwogCXBhdGhub2RlLT5wYXRoLnBh cmFsbGVsX2F3YXJlID0gZmFsc2U7CiAJcGF0aG5vZGUtPnBhdGgucGFyYWxsZWxfc2FmZSA9IHJl bC0+Y29uc2lkZXJfcGFyYWxsZWwgJiYKIAkJc3VicGF0aC0+cGFyYWxsZWxfc2FmZTsKQEAgLTMy NzksOCArMzI3Niw3IEBAIGNyZWF0ZV9hZ2dfcGF0aChQbGFubmVySW5mbyAqcm9vdCwKIAlwYXRo bm9kZS0+cGF0aC5wYXRodHlwZSA9IFRfQWdnOwogCXBhdGhub2RlLT5wYXRoLnBhcmVudCA9IHJl bDsKIAlwYXRobm9kZS0+cGF0aC5wYXRodGFyZ2V0ID0gdGFyZ2V0OwotCS8qIEZvciBub3csIGFz c3VtZSB3ZSBhcmUgYWJvdmUgYW55IGpvaW5zLCBzbyBubyBwYXJhbWV0ZXJpemF0aW9uICovCi0J cGF0aG5vZGUtPnBhdGgucGFyYW1faW5mbyA9IE5VTEw7CisJcGF0aG5vZGUtPnBhdGgucGFyYW1f aW5mbyA9IHN1YnBhdGgtPnBhcmFtX2luZm87CiAJcGF0aG5vZGUtPnBhdGgucGFyYWxsZWxfYXdh cmUgPSBmYWxzZTsKIAlwYXRobm9kZS0+cGF0aC5wYXJhbGxlbF9zYWZlID0gcmVsLT5jb25zaWRl cl9wYXJhbGxlbCAmJgogCQlzdWJwYXRoLT5wYXJhbGxlbF9zYWZlOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3V0aWwvcmVsbm9kZS5jCmluZGV4IGZmNTA3MzMxYTA2Li5jNDA1NGI1ZDAzZiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5k L29wdGltaXplci91dGlsL3JlbG5vZGUuYwpAQCAtMTYsNiArMTYsOCBAQAogCiAjaW5jbHVkZSA8 bGltaXRzLmg+CiAKKyNpbmNsdWRlICJhY2Nlc3MvbmJ0cmVlLmgiCisjaW5jbHVkZSAiY2F0YWxv Zy9wZ19jb25zdHJhaW50LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9k ZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL2FwcGVuZGluZm8uaCIKQEAgLTI3 LDEyICsyOSwxNiBAQAogI2luY2x1ZGUgIm9wdGltaXplci9wYXRocy5oIgogI2luY2x1ZGUgIm9w dGltaXplci9wbGFjZWhvbGRlci5oIgogI2luY2x1ZGUgIm9wdGltaXplci9wbGFuY2F0LmgiCisj aW5jbHVkZSAib3B0aW1pemVyL3BsYW5uZXIuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcmVzdHJp Y3RpbmZvLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3RsaXN0LmgiCisjaW5jbHVkZSAicGFyc2Vy L3BhcnNlX29wZXIuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24uaCIKICNpbmNs dWRlICJyZXdyaXRlL3Jld3JpdGVNYW5pcC5oIgogI2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIK ICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9zZWxmdW5jcy5o IgorI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCiAKIAogdHlwZWRlZiBzdHJ1Y3QgSm9pbkhh c2hFbnRyeQpAQCAtODMsNyArODksMjIgQEAgc3RhdGljIHZvaWQgYnVpbGRfY2hpbGRfam9pbl9y ZWx0YXJnZXQoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkgICBSZWxPcHRJbmZvICpjaGls ZHJlbCwKIAkJCQkJCQkJCSAgIGludCBuYXBwaW5mb3MsCiAJCQkJCQkJCQkgICBBcHBlbmRSZWxJ bmZvICoqYXBwaW5mb3MpOworc3RhdGljIGJvb2wgZWFnZXJfYWdncmVnYXRpb25fcG9zc2libGVf Zm9yX3JlbGF0aW9uKFBsYW5uZXJJbmZvICpyb290LAorCQkJCQkJCQkJCQkJCVJlbE9wdEluZm8g KnJlbCk7CitzdGF0aWMgYm9vbCBpbml0X2dyb3VwaW5nX3RhcmdldHMoUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKnJlbCwKKwkJCQkJCQkJICBQYXRoVGFyZ2V0ICp0YXJnZXQsIFBhdGhU YXJnZXQgKmFnZ19pbnB1dCwKKwkJCQkJCQkJICBMaXN0ICoqZ3JvdXBfY2xhdXNlcywgTGlzdCAq Kmdyb3VwX2V4cHJzKTsKK3N0YXRpYyBib29sIGlzX3Zhcl9pbl9hZ2dyZWZfb25seShQbGFubmVy SW5mbyAqcm9vdCwgVmFyICp2YXIpOworc3RhdGljIGJvb2wgaXNfdmFyX25lZWRlZF9ieV9qb2lu KFBsYW5uZXJJbmZvICpyb290LCBWYXIgKnZhciwgUmVsT3B0SW5mbyAqcmVsKTsKK3N0YXRpYyBJ bmRleCBnZXRfZXhwcmVzc2lvbl9zb3J0Z3JvdXByZWYoUGxhbm5lckluZm8gKnJvb3QsIEV4cHIg KmV4cHIpOwogCisvKgorICogTWluaW11bSBhdmVyYWdlIGdyb3VwIHNpemUgcmVxdWlyZWQgdG8g Y29uc2lkZXIgYXBwbHlpbmcgZWFnZXIgYWdncmVnYXRpb24uCisgKgorICogVGhpcyBoZWxwcyBh dm9pZCB0aGUgb3ZlcmhlYWQgb2YgZWFnZXIgYWdncmVnYXRpb24gd2hlbiBpdCBkb2VzIG5vdCBv ZmZlcgorICogc2lnbmlmaWNhbnQgcm93IGNvdW50IHJlZHVjdGlvbi4KKyAqLworI2RlZmluZSBF QUdFUl9BR0dfTUlOX0dST1VQX1NJWkUgMjAuMAogCiAvKgogICogc2V0dXBfc2ltcGxlX3JlbF9h cnJheXMKQEAgLTI3Niw2ICsyOTcsOCBAQCBidWlsZF9zaW1wbGVfcmVsKFBsYW5uZXJJbmZvICpy b290LCBpbnQgcmVsaWQsIFJlbE9wdEluZm8gKnBhcmVudCkKIAlyZWwtPmpvaW5pbmZvID0gTklM OwogCXJlbC0+aGFzX2VjbGFzc19qb2lucyA9IGZhbHNlOwogCXJlbC0+Y29uc2lkZXJfcGFydGl0 aW9ud2lzZV9qb2luID0gZmFsc2U7CS8qIG1pZ2h0IGdldCBjaGFuZ2VkIGxhdGVyICovCisJcmVs LT5hZ2dfaW5mbyA9IE5VTEw7CisJcmVsLT5ncm91cGVkX3JlbCA9IE5VTEw7CiAJcmVsLT5wYXJ0 X3NjaGVtZSA9IE5VTEw7CiAJcmVsLT5ucGFydHMgPSAtMTsKIAlyZWwtPmJvdW5kaW5mbyA9IE5V TEw7CkBAIC00MDYsNiArNDI5LDEwNCBAQCBidWlsZF9zaW1wbGVfcmVsKFBsYW5uZXJJbmZvICpy b290LCBpbnQgcmVsaWQsIFJlbE9wdEluZm8gKnBhcmVudCkKIAlyZXR1cm4gcmVsOwogfQogCisv KgorICogYnVpbGRfc2ltcGxlX2dyb3VwZWRfcmVsCisgKgkgIENvbnN0cnVjdCBhIG5ldyBSZWxP cHRJbmZvIHJlcHJlc2VudGluZyBhIGdyb3VwZWQgdmVyc2lvbiBvZiB0aGUgaW5wdXQKKyAqCSAg YmFzZSByZWxhdGlvbi4KKyAqLworUmVsT3B0SW5mbyAqCitidWlsZF9zaW1wbGVfZ3JvdXBlZF9y ZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCkKK3sKKwlSZWxPcHRJbmZvICpn cm91cGVkX3JlbDsKKwlSZWxBZ2dJbmZvICphZ2dfaW5mbzsKKworCS8qCisJICogV2Ugc2hvdWxk IGhhdmUgYXZhaWxhYmxlIGFnZ3JlZ2F0ZSBleHByZXNzaW9ucyBhbmQgZ3JvdXBpbmcKKwkgKiBl eHByZXNzaW9ucywgb3RoZXJ3aXNlIHdlIGNhbm5vdCByZWFjaCBoZXJlLgorCSAqLworCUFzc2Vy dChyb290LT5hZ2dfY2xhdXNlX2xpc3QgIT0gTklMKTsKKwlBc3NlcnQocm9vdC0+Z3JvdXBfZXhw cl9saXN0ICE9IE5JTCk7CisKKwkvKiBub3RoaW5nIHRvIGRvIGZvciBkdW1teSByZWwgKi8KKwlp ZiAoSVNfRFVNTVlfUkVMKHJlbCkpCisJCXJldHVybiBOVUxMOworCisJLyoKKwkgKiBQcmVwYXJl IHRoZSBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gY3JlYXRlIGdyb3VwZWQgcGF0aHMgZm9yIHRoaXMg YmFzZQorCSAqIHJlbGF0aW9uLgorCSAqLworCWFnZ19pbmZvID0gY3JlYXRlX3JlbF9hZ2dfaW5m byhyb290LCByZWwpOworCWlmIChhZ2dfaW5mbyA9PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKKwor CS8qCisJICogSWYgZ3JvdXBlZCBwYXRocyBmb3IgdGhlIGdpdmVuIGJhc2UgcmVsYXRpb24gYXJl IG5vdCBjb25zaWRlcmVkIHVzZWZ1bCwKKwkgKiBza2lwIGJ1aWxkaW5nIHRoZSBncm91cGVkIHJl bGF0aW9uLgorCSAqLworCWlmICghYWdnX2luZm8tPmFnZ191c2VmdWwpCisJCXJldHVybiBOVUxM OworCisJLyogVHJhY2tzIHRoZSBsb3dlc3Qgam9pbiBsZXZlbCBhdCB3aGljaCBwYXJ0aWFsIGFn Z3JlZ2F0aW9uIGlzIGFwcGxpZWQgKi8KKwlhZ2dfaW5mby0+YXBwbHlfYXQgPSBibXNfY29weShy ZWwtPnJlbGlkcyk7CisKKwkvKiBidWlsZCB0aGUgZ3JvdXBlZCByZWxhdGlvbiAqLworCWdyb3Vw ZWRfcmVsID0gYnVpbGRfZ3JvdXBlZF9yZWwocm9vdCwgcmVsKTsKKwlncm91cGVkX3JlbC0+cmVs dGFyZ2V0ID0gYWdnX2luZm8tPnRhcmdldDsKKwlncm91cGVkX3JlbC0+cm93cyA9IGFnZ19pbmZv LT5ncm91cGVkX3Jvd3M7CisJZ3JvdXBlZF9yZWwtPmFnZ19pbmZvID0gYWdnX2luZm87CisKKwly ZWwtPmdyb3VwZWRfcmVsID0gZ3JvdXBlZF9yZWw7CisKKwlyZXR1cm4gZ3JvdXBlZF9yZWw7Cit9 CisKKy8qCisgKiBidWlsZF9ncm91cGVkX3JlbAorICoJICBCdWlsZCBhIGdyb3VwZWQgcmVsYXRp b24gYnkgZmxhdCBjb3B5aW5nIHRoZSBpbnB1dCByZWxhdGlvbiBhbmQgcmVzZXR0aW5nCisgKgkg IHRoZSBuZWNlc3NhcnkgZmllbGRzLgorICovCitSZWxPcHRJbmZvICoKK2J1aWxkX2dyb3VwZWRf cmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwpCit7CisJUmVsT3B0SW5mbyAq Z3JvdXBlZF9yZWw7CisKKwlncm91cGVkX3JlbCA9IG1ha2VOb2RlKFJlbE9wdEluZm8pOworCW1l bWNweShncm91cGVkX3JlbCwgcmVsLCBzaXplb2YoUmVsT3B0SW5mbykpOworCisJLyoKKwkgKiBj bGVhciBwYXRoIGluZm8KKwkgKi8KKwlncm91cGVkX3JlbC0+cGF0aGxpc3QgPSBOSUw7CisJZ3Jv dXBlZF9yZWwtPnBwaWxpc3QgPSBOSUw7CisJZ3JvdXBlZF9yZWwtPnBhcnRpYWxfcGF0aGxpc3Qg PSBOSUw7CisJZ3JvdXBlZF9yZWwtPmNoZWFwZXN0X3N0YXJ0dXBfcGF0aCA9IE5VTEw7CisJZ3Jv dXBlZF9yZWwtPmNoZWFwZXN0X3RvdGFsX3BhdGggPSBOVUxMOworCWdyb3VwZWRfcmVsLT5jaGVh cGVzdF91bmlxdWVfcGF0aCA9IE5VTEw7CisJZ3JvdXBlZF9yZWwtPmNoZWFwZXN0X3BhcmFtZXRl cml6ZWRfcGF0aHMgPSBOSUw7CisKKwkvKgorCSAqIGNsZWFyIHBhcnRpdGlvbiBpbmZvCisJICov CisJZ3JvdXBlZF9yZWwtPnBhcnRfc2NoZW1lID0gTlVMTDsKKwlncm91cGVkX3JlbC0+bnBhcnRz ID0gLTE7CisJZ3JvdXBlZF9yZWwtPmJvdW5kaW5mbyA9IE5VTEw7CisJZ3JvdXBlZF9yZWwtPnBh cnRib3VuZHNfbWVyZ2VkID0gZmFsc2U7CisJZ3JvdXBlZF9yZWwtPnBhcnRpdGlvbl9xdWFsID0g TklMOworCWdyb3VwZWRfcmVsLT5wYXJ0X3JlbHMgPSBOVUxMOworCWdyb3VwZWRfcmVsLT5saXZl X3BhcnRzID0gTlVMTDsKKwlncm91cGVkX3JlbC0+YWxsX3BhcnRyZWxzID0gTlVMTDsKKwlncm91 cGVkX3JlbC0+cGFydGV4cHJzID0gTlVMTDsKKwlncm91cGVkX3JlbC0+bnVsbGFibGVfcGFydGV4 cHJzID0gTlVMTDsKKwlncm91cGVkX3JlbC0+Y29uc2lkZXJfcGFydGl0aW9ud2lzZV9qb2luID0g ZmFsc2U7CisKKwkvKgorCSAqIGNsZWFyIHNpemUgZXN0aW1hdGVzCisJICovCisJZ3JvdXBlZF9y ZWwtPnJvd3MgPSAwOworCisJcmV0dXJuIGdyb3VwZWRfcmVsOworfQorCiAvKgogICogZmluZF9i YXNlX3JlbAogICoJICBGaW5kIGEgYmFzZSBvciBvdGhlcnJlbCByZWxhdGlvbiBlbnRyeSwgd2hp Y2ggbXVzdCBhbHJlYWR5IGV4aXN0LgpAQCAtNzU1LDYgKzg3Niw4IEBAIGJ1aWxkX2pvaW5fcmVs KFBsYW5uZXJJbmZvICpyb290LAogCWpvaW5yZWwtPmpvaW5pbmZvID0gTklMOwogCWpvaW5yZWwt Pmhhc19lY2xhc3Nfam9pbnMgPSBmYWxzZTsKIAlqb2lucmVsLT5jb25zaWRlcl9wYXJ0aXRpb253 aXNlX2pvaW4gPSBmYWxzZTsJLyogbWlnaHQgZ2V0IGNoYW5nZWQgbGF0ZXIgKi8KKwlqb2lucmVs LT5hZ2dfaW5mbyA9IE5VTEw7CisJam9pbnJlbC0+Z3JvdXBlZF9yZWwgPSBOVUxMOwogCWpvaW5y ZWwtPnBhcmVudCA9IE5VTEw7CiAJam9pbnJlbC0+dG9wX3BhcmVudCA9IE5VTEw7CiAJam9pbnJl bC0+dG9wX3BhcmVudF9yZWxpZHMgPSBOVUxMOwpAQCAtOTM5LDYgKzEwNjIsOCBAQCBidWlsZF9j aGlsZF9qb2luX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqb3V0ZXJfcmVsLAog CWpvaW5yZWwtPmpvaW5pbmZvID0gTklMOwogCWpvaW5yZWwtPmhhc19lY2xhc3Nfam9pbnMgPSBm YWxzZTsKIAlqb2lucmVsLT5jb25zaWRlcl9wYXJ0aXRpb253aXNlX2pvaW4gPSBmYWxzZTsJLyog bWlnaHQgZ2V0IGNoYW5nZWQgbGF0ZXIgKi8KKwlqb2lucmVsLT5hZ2dfaW5mbyA9IE5VTEw7CisJ am9pbnJlbC0+Z3JvdXBlZF9yZWwgPSBOVUxMOwogCWpvaW5yZWwtPnBhcmVudCA9IHBhcmVudF9q b2lucmVsOwogCWpvaW5yZWwtPnRvcF9wYXJlbnQgPSBwYXJlbnRfam9pbnJlbC0+dG9wX3BhcmVu dCA/IHBhcmVudF9qb2lucmVsLT50b3BfcGFyZW50IDogcGFyZW50X2pvaW5yZWw7CiAJam9pbnJl bC0+dG9wX3BhcmVudF9yZWxpZHMgPSBqb2lucmVsLT50b3BfcGFyZW50LT5yZWxpZHM7CkBAIC0y NTE4LDMgKzI2NDMsNTE0IEBAIGJ1aWxkX2NoaWxkX2pvaW5fcmVsdGFyZ2V0KFBsYW5uZXJJbmZv ICpyb290LAogCWNoaWxkcmVsLT5yZWx0YXJnZXQtPmNvc3QucGVyX3R1cGxlID0gcGFyZW50cmVs LT5yZWx0YXJnZXQtPmNvc3QucGVyX3R1cGxlOwogCWNoaWxkcmVsLT5yZWx0YXJnZXQtPndpZHRo ID0gcGFyZW50cmVsLT5yZWx0YXJnZXQtPndpZHRoOwogfQorCisvKgorICogY3JlYXRlX3JlbF9h Z2dfaW5mbworICoJICBDcmVhdGUgdGhlIFJlbEFnZ0luZm8gc3RydWN0dXJlIGZvciB0aGUgZ2l2 ZW4gcmVsYXRpb24gaWYgaXQgY2FuIHByb2R1Y2UKKyAqCSAgZ3JvdXBlZCBwYXRocy4gIFRoZSBn aXZlbiByZWxhdGlvbiBpcyB0aGUgbm9uLWdyb3VwZWQgb25lIHdoaWNoIGhhcyB0aGUKKyAqCSAg cmVsdGFyZ2V0IGFscmVhZHkgY29uc3RydWN0ZWQuCisgKi8KK1JlbEFnZ0luZm8gKgorY3JlYXRl X3JlbF9hZ2dfaW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsKQoreworCUxp c3RDZWxsICAgKmxjOworCVJlbEFnZ0luZm8gKnJlc3VsdDsKKwlQYXRoVGFyZ2V0ICphZ2dfaW5w dXQ7CisJUGF0aFRhcmdldCAqdGFyZ2V0OworCUxpc3QJICAgKmdyb3VwX2NsYXVzZXMgPSBOSUw7 CisJTGlzdAkgICAqZ3JvdXBfZXhwcnMgPSBOSUw7CisKKwkvKgorCSAqIFRoZSBsaXN0cyBvZiBh Z2dyZWdhdGUgZXhwcmVzc2lvbnMgYW5kIGdyb3VwaW5nIGV4cHJlc3Npb25zIHNob3VsZCBoYXZl CisJICogYmVlbiBjb25zdHJ1Y3RlZC4KKwkgKi8KKwlBc3NlcnQocm9vdC0+YWdnX2NsYXVzZV9s aXN0ICE9IE5JTCk7CisJQXNzZXJ0KHJvb3QtPmdyb3VwX2V4cHJfbGlzdCAhPSBOSUwpOworCisJ LyoKKwkgKiBJZiB0aGlzIGlzIGEgY2hpbGQgcmVsLCB0aGUgZ3JvdXBlZCByZWwgZm9yIGl0cyBw YXJlbnQgcmVsIG11c3QgaGF2ZQorCSAqIGJlZW4gY3JlYXRlZCBpZiBpdCBjYW4uICBTbyB3ZSBj YW4ganVzdCB1c2UgcGFyZW50J3MgUmVsQWdnSW5mbyBpZgorCSAqIHRoZXJlIGlzIG9uZSwgd2l0 aCBhcHByb3ByaWF0ZSB2YXJpYWJsZSBzdWJzdGl0dXRpb25zLgorCSAqLworCWlmIChJU19PVEhF Ul9SRUwocmVsKSkKKwl7CisJCVJlbE9wdEluZm8gKmdyb3VwZWRfcmVsOworCQlSZWxBZ2dJbmZv ICphZ2dfaW5mbzsKKworCQlncm91cGVkX3JlbCA9IHJlbC0+dG9wX3BhcmVudC0+Z3JvdXBlZF9y ZWw7CisJCWlmIChncm91cGVkX3JlbCA9PSBOVUxMKQorCQkJcmV0dXJuIE5VTEw7CisKKwkJQXNz ZXJ0KElTX0dST1VQRURfUkVMKGdyb3VwZWRfcmVsKSk7CisKKwkJLyogTXVzdCBkbyBtdWx0aS1s ZXZlbCB0cmFuc2Zvcm1hdGlvbiAqLworCQlhZ2dfaW5mbyA9IChSZWxBZ2dJbmZvICopCisJCQlh ZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211bHRpbGV2ZWwocm9vdCwKKwkJCQkJCQkJCQkJICAoTm9k ZSAqKSBncm91cGVkX3JlbC0+YWdnX2luZm8sCisJCQkJCQkJCQkJCSAgcmVsLAorCQkJCQkJCQkJ CQkgIHJlbC0+dG9wX3BhcmVudCk7CisKKwkJYWdnX2luZm8tPmdyb3VwZWRfcm93cyA9CisJCQll c3RpbWF0ZV9udW1fZ3JvdXBzKHJvb3QsIGFnZ19pbmZvLT5ncm91cF9leHBycywKKwkJCQkJCQkJ cmVsLT5yb3dzLCBOVUxMLCBOVUxMKTsKKworCQlhZ2dfaW5mby0+YXBwbHlfYXQgPSBOVUxMOwkv KiBjYWxsZXIgd2lsbCBjaGFuZ2UgdGhpcyBsYXRlciAqLworCisJCS8qCisJCSAqIFRoZSBncm91 cGVkIHBhdGhzIGZvciB0aGUgZ2l2ZW4gcmVsYXRpb24gYXJlIGNvbnNpZGVyZWQgdXNlZnVsIGlm ZgorCQkgKiB0aGUgYXZlcmFnZSBncm91cCBzaXplIGlzIG5vIGxlc3MgdGhhbiBFQUdFUl9BR0df TUlOX0dST1VQX1NJWkUuCisJCSAqLworCQlhZ2dfaW5mby0+YWdnX3VzZWZ1bCA9CisJCQkocmVs LT5yb3dzIC8gYWdnX2luZm8tPmdyb3VwZWRfcm93cykgPj0gRUFHRVJfQUdHX01JTl9HUk9VUF9T SVpFOworCisJCXJldHVybiBhZ2dfaW5mbzsKKwl9CisKKwkvKiBDaGVjayBpZiBpdCdzIHBvc3Np YmxlIHRvIHByb2R1Y2UgZ3JvdXBlZCBwYXRocyBmb3IgdGhpcyByZWxhdGlvbi4gKi8KKwlpZiAo IWVhZ2VyX2FnZ3JlZ2F0aW9uX3Bvc3NpYmxlX2Zvcl9yZWxhdGlvbihyb290LCByZWwpKQorCQly ZXR1cm4gTlVMTDsKKworCS8qCisJICogQ3JlYXRlIHRhcmdldHMgZm9yIHRoZSBncm91cGVkIHBh dGhzIGFuZCBmb3IgdGhlIGlucHV0IHBhdGhzIG9mIHRoZQorCSAqIGdyb3VwZWQgcGF0aHMuCisJ ICovCisJdGFyZ2V0ID0gY3JlYXRlX2VtcHR5X3BhdGh0YXJnZXQoKTsKKwlhZ2dfaW5wdXQgPSBj cmVhdGVfZW1wdHlfcGF0aHRhcmdldCgpOworCisJLyogLi4uIGFuZCBpbml0aWFsaXplIHRoZXNl IHRhcmdldHMgKi8KKwlpZiAoIWluaXRfZ3JvdXBpbmdfdGFyZ2V0cyhyb290LCByZWwsIHRhcmdl dCwgYWdnX2lucHV0LAorCQkJCQkJCSAgICZncm91cF9jbGF1c2VzLCAmZ3JvdXBfZXhwcnMpKQor CQlyZXR1cm4gTlVMTDsKKworCS8qCisJICogRWFnZXIgYWdncmVnYXRpb24gaXMgbm90IGFwcGxp Y2FibGUgaWYgdGhlcmUgYXJlIG5vIGF2YWlsYWJsZSBncm91cGluZworCSAqIGV4cHJlc3Npb25z LgorCSAqLworCWlmIChsaXN0X2xlbmd0aChncm91cF9jbGF1c2VzKSA9PSAwKQorCQlyZXR1cm4g TlVMTDsKKworCS8qIGJ1aWxkIHRoZSBSZWxBZ2dJbmZvIHJlc3VsdCAqLworCXJlc3VsdCA9IG1h a2VOb2RlKFJlbEFnZ0luZm8pOworCisJcmVzdWx0LT5ncm91cF9jbGF1c2VzID0gZ3JvdXBfY2xh dXNlczsKKwlyZXN1bHQtPmdyb3VwX2V4cHJzID0gZ3JvdXBfZXhwcnM7CisKKwkvKiBDYWxjdWxh dGUgcGF0aGtleXMgdGhhdCByZXByZXNlbnQgdGhpcyBncm91cGluZyByZXF1aXJlbWVudHMgKi8K KwlyZXN1bHQtPmdyb3VwX3BhdGhrZXlzID0KKwkJbWFrZV9wYXRoa2V5c19mb3Jfc29ydGNsYXVz ZXMocm9vdCwgcmVzdWx0LT5ncm91cF9jbGF1c2VzLAorCQkJCQkJCQkJICBtYWtlX3RsaXN0X2Zy b21fcGF0aHRhcmdldCh0YXJnZXQpKTsKKworCS8qIEFkZCBhZ2dyZWdhdGVzIHRvIHRoZSBncm91 cGluZyB0YXJnZXQgKi8KKwlmb3JlYWNoKGxjLCByb290LT5hZ2dfY2xhdXNlX2xpc3QpCisJewor CQlBZ2dDbGF1c2VJbmZvICphY19pbmZvID0gbGZpcnN0X25vZGUoQWdnQ2xhdXNlSW5mbywgbGMp OworCQlBZ2dyZWYJICAgKmFnZ3JlZjsKKworCQlBc3NlcnQoSXNBKGFjX2luZm8tPmFnZ3JlZiwg QWdncmVmKSk7CisKKwkJYWdncmVmID0gKEFnZ3JlZiAqKSBjb3B5T2JqZWN0KGFjX2luZm8tPmFn Z3JlZik7CisJCW1hcmtfcGFydGlhbF9hZ2dyZWYoYWdncmVmLCBBR0dTUExJVF9JTklUSUFMX1NF UklBTCk7CisKKwkJYWRkX2NvbHVtbl90b19wYXRodGFyZ2V0KHRhcmdldCwgKEV4cHIgKikgYWdn cmVmLCAwKTsKKwl9CisKKwkvKiBTZXQgdGhlIGVzdGltYXRlZCBldmFsIGNvc3QgYW5kIG91dHB1 dCB3aWR0aCBmb3IgYm90aCB0YXJnZXRzICovCisJc2V0X3BhdGh0YXJnZXRfY29zdF93aWR0aChy b290LCB0YXJnZXQpOworCXNldF9wYXRodGFyZ2V0X2Nvc3Rfd2lkdGgocm9vdCwgYWdnX2lucHV0 KTsKKworCXJlc3VsdC0+cmVsaWRzID0gYm1zX2NvcHkocmVsLT5yZWxpZHMpOworCXJlc3VsdC0+ dGFyZ2V0ID0gdGFyZ2V0OworCXJlc3VsdC0+YWdnX2lucHV0ID0gYWdnX2lucHV0OworCXJlc3Vs dC0+Z3JvdXBlZF9yb3dzID0gZXN0aW1hdGVfbnVtX2dyb3Vwcyhyb290LCByZXN1bHQtPmdyb3Vw X2V4cHJzLAorCQkJCQkJCQkJCQkgICByZWwtPnJvd3MsIE5VTEwsIE5VTEwpOworCXJlc3VsdC0+ YXBwbHlfYXQgPSBOVUxMOwkvKiBjYWxsZXIgd2lsbCBjaGFuZ2UgdGhpcyBsYXRlciAqLworCisJ LyoKKwkgKiBUaGUgZ3JvdXBlZCBwYXRocyBmb3IgdGhlIGdpdmVuIHJlbGF0aW9uIGFyZSBjb25z aWRlcmVkIHVzZWZ1bCBpZmYgdGhlCisJICogYXZlcmFnZSBncm91cCBzaXplIGlzIG5vIGxlc3Mg dGhhbiBFQUdFUl9BR0dfTUlOX0dST1VQX1NJWkUuCisJICovCisJcmVzdWx0LT5hZ2dfdXNlZnVs ID0KKwkJKHJlbC0+cm93cyAvIHJlc3VsdC0+Z3JvdXBlZF9yb3dzKSA+PSBFQUdFUl9BR0dfTUlO X0dST1VQX1NJWkU7CisKKwlyZXR1cm4gcmVzdWx0OworfQorCisvKgorICogZWFnZXJfYWdncmVn YXRpb25fcG9zc2libGVfZm9yX3JlbGF0aW9uCisgKiAJICBDaGVjayBpZiBpdCdzIHBvc3NpYmxl IHRvIHByb2R1Y2UgZ3JvdXBlZCBwYXRocyBmb3IgdGhlIGdpdmVuIHJlbGF0aW9uLgorICovCitz dGF0aWMgYm9vbAorZWFnZXJfYWdncmVnYXRpb25fcG9zc2libGVfZm9yX3JlbGF0aW9uKFBsYW5u ZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwpCit7CisJTGlzdENlbGwgICAqbGM7CisJaW50 CQkJY3VyX3JlbGlkOworCisJLyoKKwkgKiBDaGVjayB0byBzZWUgaWYgdGhlIGdpdmVuIHJlbGF0 aW9uIGlzIGluIHRoZSBudWxsYWJsZSBzaWRlIG9mIGFuIG91dGVyCisJICogam9pbi4gIEluIHRo aXMgY2FzZSwgd2UgY2Fubm90IHB1c2ggYSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGRvd24gdG8gdGhl CisJICogcmVsYXRpb24sIGJlY2F1c2UgdGhlIE5VTEwtZXh0ZW5kZWQgcm93cyBwcm9kdWNlZCBi eSB0aGUgb3V0ZXIgam9pbgorCSAqIHdvdWxkIG5vdCBiZSBhdmFpbGFibGUgd2hlbiB3ZSBwZXJm b3JtIHRoZSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uLCB3aGlsZQorCSAqIHdpdGggYSBub24tZWFnZXIt YWdncmVnYXRpb24gcGxhbiB0aGVzZSByb3dzIGFyZSBhdmFpbGFibGUgZm9yIHRoZQorCSAqIHRv cC1sZXZlbCBhZ2dyZWdhdGlvbi4gIERvaW5nIHNvIG1heSByZXN1bHQgaW4gdGhlIHJvd3MgYmVp bmcgZ3JvdXBlZAorCSAqIGRpZmZlcmVudGx5IHRoYW4gZXhwZWN0ZWQsIG9yIHByb2R1Y2UgaW5j b3JyZWN0IHZhbHVlcyBmcm9tIHRoZQorCSAqIGFnZ3JlZ2F0ZSBmdW5jdGlvbnMuCisJICovCisJ Y3VyX3JlbGlkID0gLTE7CisJd2hpbGUgKChjdXJfcmVsaWQgPSBibXNfbmV4dF9tZW1iZXIocmVs LT5yZWxpZHMsIGN1cl9yZWxpZCkpID49IDApCisJeworCQlSZWxPcHRJbmZvICpiYXNlcmVsID0g ZmluZF9iYXNlX3JlbF9pZ25vcmVfam9pbihyb290LCBjdXJfcmVsaWQpOworCisJCWlmIChiYXNl cmVsID09IE5VTEwpCisJCQljb250aW51ZTsJCQkvKiBpZ25vcmUgb3V0ZXIgam9pbnMgaW4gcmVs LT5yZWxpZHMgKi8KKworCQlpZiAoIWJtc19pc19zdWJzZXQoYmFzZXJlbC0+bnVsbGluZ19yZWxp ZHMsIHJlbC0+cmVsaWRzKSkKKwkJCXJldHVybiBmYWxzZTsKKwl9CisKKwkvKgorCSAqIEZvciBu b3cgd2UgZG9uJ3QgdHJ5IHRvIHN1cHBvcnQgUGxhY2VIb2xkZXJWYXJzLgorCSAqLworCWZvcmVh Y2gobGMsIHJlbC0+cmVsdGFyZ2V0LT5leHBycykKKwl7CisJCUV4cHIJICAgKmV4cHIgPSBsZmly c3QobGMpOworCisJCWlmIChJc0EoZXhwciwgUGxhY2VIb2xkZXJWYXIpKQorCQkJcmV0dXJuIGZh bHNlOworCX0KKworCS8qIENhbGxlciBzaG91bGQgb25seSBwYXNzIGJhc2UgcmVsYXRpb25zIG9y IGpvaW5zLiAqLworCUFzc2VydChyZWwtPnJlbG9wdGtpbmQgPT0gUkVMT1BUX0JBU0VSRUwgfHwK KwkJICAgcmVsLT5yZWxvcHRraW5kID09IFJFTE9QVF9KT0lOUkVMKTsKKworCS8qCisJICogQ2hl Y2sgaWYgYWxsIGFnZ3JlZ2F0ZSBleHByZXNzaW9ucyBjYW4gYmUgZXZhbHVhdGVkIG9uIHRoaXMg cmVsYXRpb24KKwkgKiBsZXZlbC4KKwkgKi8KKwlmb3JlYWNoKGxjLCByb290LT5hZ2dfY2xhdXNl X2xpc3QpCisJeworCQlBZ2dDbGF1c2VJbmZvICphY19pbmZvID0gbGZpcnN0X25vZGUoQWdnQ2xh dXNlSW5mbywgbGMpOworCisJCUFzc2VydChJc0EoYWNfaW5mby0+YWdncmVmLCBBZ2dyZWYpKTsK KworCQkvKgorCQkgKiBHaXZlIHVwIGlmIGFueSBhZ2dyZWdhdGUgcmVxdWlyZXMgcmVsYXRpb25z IG90aGVyIHRoYW4gdGhlIGN1cnJlbnQKKwkJICogb25lLiAgSWYgdGhlIGFnZ3JlZ2F0ZSByZXF1 aXJlcyB0aGUgY3VycmVudCByZWxhdGlvbiBwbHVzCisJCSAqIGFkZGl0aW9uYWwgcmVsYXRpb25z LCBncm91cGluZyB0aGUgY3VycmVudCByZWxhdGlvbiBjb3VsZCBtYWtlIHNvbWUKKwkJICogaW5w dXQgcm93cyB1bmF2YWlsYWJsZSBmb3IgdGhlIGhpZ2hlciBhZ2dyZWdhdGUgYW5kIG1heSByZWR1 Y2UgdGhlCisJCSAqIG51bWJlciBvZiBpbnB1dCByb3dzIGl0IHJlY2VpdmVzLiAgSWYgdGhlIGFn Z3JlZ2F0ZSBkb2VzIG5vdAorCQkgKiByZXF1aXJlIHRoZSBjdXJyZW50IHJlbGF0aW9uIGF0IGFs bCwgaXQgc2hvdWxkIG5vdCBiZSBncm91cGVkLCBhcworCQkgKiB3ZSBkbyBub3Qgc3VwcG9ydCBq b2luaW5nIHR3byBncm91cGVkIHJlbGF0aW9ucy4KKwkJICovCisJCWlmICghYm1zX2lzX3N1YnNl dChhY19pbmZvLT5hZ2dfZXZhbF9hdCwgcmVsLT5yZWxpZHMpKQorCQkJcmV0dXJuIGZhbHNlOwor CX0KKworCXJldHVybiB0cnVlOworfQorCisvKgorICogaW5pdF9ncm91cGluZ190YXJnZXRzCisg KgkgIEluaXRpYWxpemUgdGhlIHRhcmdldCBmb3IgZ3JvdXBlZCBwYXRocyAodGFyZ2V0KSBhcyB3 ZWxsIGFzIHRoZSB0YXJnZXQKKyAqCSAgZm9yIHBhdGhzIHRoYXQgZ2VuZXJhdGUgaW5wdXQgZm9y IHRoZSBncm91cGVkIHBhdGhzIChhZ2dfaW5wdXQpLgorICoKKyAqIFdlIGFsc28gY29uc3RydWN0 IHRoZSBsaXN0IG9mIFNvcnRHcm91cENsYXVzZXMgYW5kIHRoZSBsaXN0IG9mIGdyb3VwaW5nCisg KiBleHByZXNzaW9ucyBmb3IgdGhlIHBhcnRpYWwgYWdncmVnYXRpb24sIGFuZCByZXR1cm4gdGhl bSBpbiAqZ3JvdXBfY2xhdXNlCisgKiBhbmQgKmdyb3VwX2V4cHJzLgorICoKKyAqIFJldHVybiB0 cnVlIGlmIHRoZSB0YXJnZXRzIGNvdWxkIGJlIGluaXRpYWxpemVkLCBmYWxzZSBvdGhlcndpc2Uu CisgKi8KK3N0YXRpYyBib29sCitpbml0X2dyb3VwaW5nX3RhcmdldHMoUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKnJlbCwKKwkJCQkJICBQYXRoVGFyZ2V0ICp0YXJnZXQsIFBhdGhUYXJn ZXQgKmFnZ19pbnB1dCwKKwkJCQkJICBMaXN0ICoqZ3JvdXBfY2xhdXNlcywgTGlzdCAqKmdyb3Vw X2V4cHJzKQoreworCUxpc3RDZWxsICAgKmxjOworCUxpc3QJICAgKnBvc3NpYmx5X2RlcGVuZGVu dCA9IE5JTDsKKwlJbmRleAkJbWF4U29ydEdyb3VwUmVmOworCisJLyogSWRlbnRpZnkgdGhlIG1h eCBzb3J0Z3JvdXByZWYgKi8KKwltYXhTb3J0R3JvdXBSZWYgPSAwOworCWZvcmVhY2gobGMsIHJv b3QtPnByb2Nlc3NlZF90bGlzdCkKKwl7CisJCUluZGV4CQlyZWYgPSAoKFRhcmdldEVudHJ5ICop IGxmaXJzdChsYykpLT5yZXNzb3J0Z3JvdXByZWY7CisKKwkJaWYgKHJlZiA+IG1heFNvcnRHcm91 cFJlZikKKwkJCW1heFNvcnRHcm91cFJlZiA9IHJlZjsKKwl9CisKKwkvKgorCSAqIEF0IHRoaXMg cG9pbnQsIGFsbCBWYXJzIGZyb20gdGhpcyByZWxhdGlvbiB0aGF0IGFyZSBuZWVkZWQgYnkgdXBw ZXIKKwkgKiBqb2lucyBvciBhcmUgcmVxdWlyZWQgaW4gdGhlIGZpbmFsIHRhcmdldGxpc3Qgc2hv dWxkIGFscmVhZHkgYmUgcHJlc2VudAorCSAqIGluIGl0cyByZWx0YXJnZXQuICBUaGVyZWZvcmUs IHdlIGNhbiBzYWZlbHkgaXRlcmF0ZSBvdmVyIHRoaXMKKwkgKiByZWxhdGlvbidzIHJlbHRhcmdl dC0+ZXhwcnMgdG8gY29uc3RydWN0IHRoZSBQYXRoVGFyZ2V0IGFuZCBncm91cGluZworCSAqIGNs YXVzZXMgZm9yIHRoZSBncm91cGVkIHBhdGhzLgorCSAqLworCWZvcmVhY2gobGMsIHJlbC0+cmVs dGFyZ2V0LT5leHBycykKKwl7CisJCUV4cHIJICAgKmV4cHIgPSAoRXhwciAqKSBsZmlyc3QobGMp OworCQlJbmRleAkJc29ydGdyb3VwcmVmOworCisJCS8qCisJCSAqIEdpdmVuIHRoYXQgUGxhY2VI b2xkZXJWYXIgY3VycmVudGx5IHByZXZlbnRzIHVzIGZyb20gZG9pbmcgZWFnZXIKKwkJICogYWdn cmVnYXRpb24sIHRoZSBzb3VyY2UgdGFyZ2V0IGNhbm5vdCBjb250YWluIGFueXRoaW5nIG1vcmUg Y29tcGxleAorCQkgKiB0aGFuIGEgVmFyLgorCQkgKi8KKwkJQXNzZXJ0KElzQShleHByLCBWYXIp KTsKKworCQkvKgorCQkgKiBHZXQgdGhlIHNvcnRncm91cHJlZiBvZiB0aGUgZXhwciBpZiBpdCBp cyBmb3VuZCBhbW9uZywgb3IgY2FuIGJlCisJCSAqIGRlZHVjZWQgZnJvbSwgdGhlIG9yaWdpbmFs IGdyb3VwaW5nIGV4cHJlc3Npb25zLgorCQkgKi8KKwkJc29ydGdyb3VwcmVmID0gZ2V0X2V4cHJl c3Npb25fc29ydGdyb3VwcmVmKHJvb3QsIGV4cHIpOworCQlpZiAoc29ydGdyb3VwcmVmID4gMCkK KwkJeworCQkJU29ydEdyb3VwQ2xhdXNlICpzZ2M7CisKKwkJCS8qIEZpbmQgdGhlIG1hdGNoaW5n IFNvcnRHcm91cENsYXVzZSAqLworCQkJc2djID0gZ2V0X3NvcnRncm91cHJlZl9jbGF1c2Uoc29y dGdyb3VwcmVmLCByb290LT5wcm9jZXNzZWRfZ3JvdXBDbGF1c2UpOworCQkJQXNzZXJ0KHNnYy0+ dGxlU29ydEdyb3VwUmVmIDw9IG1heFNvcnRHcm91cFJlZik7CisKKwkJCS8qCisJCQkgKiBJZiB0 aGUgdGFyZ2V0IGV4cHJlc3Npb24gaXMgdG8gYmUgdXNlZCBhcyBhIGdyb3VwaW5nIGtleSwgaXQK KwkJCSAqIHNob3VsZCBiZSBlbWl0dGVkIGJ5IHRoZSBncm91cGVkIHBhdGhzIHRoYXQgaGF2ZSBi ZWVuIHB1c2hlZAorCQkJICogZG93biB0byB0aGlzIHJlbGF0aW9uIGxldmVsLgorCQkJICovCisJ CQlhZGRfY29sdW1uX3RvX3BhdGh0YXJnZXQodGFyZ2V0LCBleHByLCBzb3J0Z3JvdXByZWYpOwor CisJCQkvKgorCQkJICogLi4uIGFuZCBpdCBhbHNvIHNob3VsZCBiZSBlbWl0dGVkIGJ5IHRoZSBp bnB1dCBwYXRocy4KKwkJCSAqLworCQkJYWRkX2NvbHVtbl90b19wYXRodGFyZ2V0KGFnZ19pbnB1 dCwgZXhwciwgc29ydGdyb3VwcmVmKTsKKworCQkJLyoKKwkJCSAqIFJlY29yZCB0aGlzIFNvcnRH cm91cENsYXVzZSBhbmQgZ3JvdXBpbmcgZXhwcmVzc2lvbi4gIE5vdGUgdGhhdAorCQkJICogdGhp cyBTb3J0R3JvdXBDbGF1c2UgbWlnaHQgaGF2ZSBhbHJlYWR5IGJlZW4gcmVjb3JkZWQuCisJCQkg Ki8KKwkJCWlmICghbGlzdF9tZW1iZXIoKmdyb3VwX2NsYXVzZXMsIHNnYykpCisJCQl7CisJCQkJ Kmdyb3VwX2NsYXVzZXMgPSBsYXBwZW5kKCpncm91cF9jbGF1c2VzLCBzZ2MpOworCQkJCSpncm91 cF9leHBycyA9IGxhcHBlbmQoKmdyb3VwX2V4cHJzLCBleHByKTsKKwkJCX0KKwkJfQorCQllbHNl IGlmIChpc192YXJfbmVlZGVkX2J5X2pvaW4ocm9vdCwgKFZhciAqKSBleHByLCByZWwpKQorCQl7 CisJCQkvKgorCQkJICogVGhlIGV4cHJlc3Npb24gaXMgbmVlZGVkIGZvciBhbiB1cHBlciBqb2lu IGJ1dCBpcyBuZWl0aGVyIGluCisJCQkgKiB0aGUgR1JPVVAgQlkgY2xhdXNlIG5vciBkZXJpdmFi bGUgZnJvbSBpdCB1c2luZyBFQyAob3RoZXJ3aXNlLAorCQkJICogaXQgd291bGQgaGF2ZSBhbHJl YWR5IGJlZW4gaW5jbHVkZWQgaW4gdGhlIHRhcmdldHMgYWJvdmUpLiAgV2UKKwkJCSAqIG5lZWQg dG8gY3JlYXRlIGEgc3BlY2lhbCBTb3J0R3JvdXBDbGF1c2UgZm9yIHRoaXMgZXhwcmVzc2lvbi4K KwkJCSAqCisJCQkgKiBJdCBpcyBpbXBvcnRhbnQgdG8gaW5jbHVkZSBzdWNoIGV4cHJlc3Npb25z IGluIHRoZSBncm91cGluZworCQkJICoga2V5cy4gIFRoaXMgaXMgZXNzZW50aWFsIHRvIGVuc3Vy ZSB0aGF0IGFuIGFnZ3JlZ2F0ZWQgcm93IGZyb20KKwkJCSAqIHRoZSBwYXJ0aWFsIGFnZ3JlZ2F0 aW9uIG1hdGNoZXMgdGhlIG90aGVyIHNpZGUgb2YgdGhlIGpvaW4gaWYKKwkJCSAqIGFuZCBvbmx5 IGlmIGVhY2ggcm93IGluIHRoZSBwYXJ0aWFsIGdyb3VwIGRvZXMuICBUaGlzIGVuc3VyZXMKKwkJ CSAqIHRoYXQgYWxsIHJvd3Mgd2l0aGluIHRoZSBzYW1lIHBhcnRpYWwgZ3JvdXAgc2hhcmUgdGhl IHNhbWUKKwkJCSAqICdkZXN0aW55Jywgd2hpY2ggaXMgY3J1Y2lhbCBmb3IgbWFpbnRhaW5pbmcg Y29ycmVjdG5lc3MuCisJCQkgKi8KKwkJCVNvcnRHcm91cENsYXVzZSAqc2djOworCQkJVHlwZUNh Y2hlRW50cnkgKnRjZTsKKwkJCU9pZAkJCWVxdWFsaW1hZ2Vwcm9jOworCisJCQkvKgorCQkJICog QnV0IGZpcnN0LCBjaGVjayBpZiBlcXVhbGl0eSBpbXBsaWVzIGltYWdlIGVxdWFsaXR5IGZvciB0 aGlzCisJCQkgKiBleHByZXNzaW9uLiAgSWYgbm90LCB3ZSBjYW5ub3QgdXNlIGl0IGFzIGEgZ3Jv dXBpbmcga2V5LiAgU2VlCisJCQkgKiBjb21tZW50cyBpbiBjcmVhdGVfZ3JvdXBpbmdfZXhwcl9p bmZvcygpLgorCQkJICovCisJCQl0Y2UgPSBsb29rdXBfdHlwZV9jYWNoZShleHByVHlwZSgoTm9k ZSAqKSBleHByKSwKKwkJCQkJCQkJCVRZUEVDQUNIRV9CVFJFRV9PUEZBTUlMWSk7CisJCQlpZiAo IU9pZElzVmFsaWQodGNlLT5idHJlZV9vcGYpIHx8CisJCQkJIU9pZElzVmFsaWQodGNlLT5idHJl ZV9vcGludHlwZSkpCisJCQkJcmV0dXJuIGZhbHNlOworCisJCQllcXVhbGltYWdlcHJvYyA9IGdl dF9vcGZhbWlseV9wcm9jKHRjZS0+YnRyZWVfb3BmLAorCQkJCQkJCQkJCQkgICB0Y2UtPmJ0cmVl X29waW50eXBlLAorCQkJCQkJCQkJCQkgICB0Y2UtPmJ0cmVlX29waW50eXBlLAorCQkJCQkJCQkJ CQkgICBCVEVRVUFMSU1BR0VfUFJPQyk7CisJCQlpZiAoIU9pZElzVmFsaWQoZXF1YWxpbWFnZXBy b2MpIHx8CisJCQkJIURhdHVtR2V0Qm9vbChPaWRGdW5jdGlvbkNhbGwxQ29sbChlcXVhbGltYWdl cHJvYywKKwkJCQkJCQkJCQkJCSAgIHRjZS0+dHlwY29sbGF0aW9uLAorCQkJCQkJCQkJCQkJICAg T2JqZWN0SWRHZXREYXR1bSh0Y2UtPmJ0cmVlX29waW50eXBlKSkpKQorCQkJCXJldHVybiBmYWxz ZTsKKworCQkJLyogQ3JlYXRlIHRoZSBTb3J0R3JvdXBDbGF1c2UuICovCisJCQlzZ2MgPSBtYWtl Tm9kZShTb3J0R3JvdXBDbGF1c2UpOworCisJCQkvKiBJbml0aWFsaXplIHRoZSBTb3J0R3JvdXBD bGF1c2UuICovCisJCQlzZ2MtPnRsZVNvcnRHcm91cFJlZiA9ICsrbWF4U29ydEdyb3VwUmVmOwor CQkJZ2V0X3NvcnRfZ3JvdXBfb3BlcmF0b3JzKGV4cHJUeXBlKChOb2RlICopIGV4cHIpLAorCQkJ CQkJCQkJIGZhbHNlLCB0cnVlLCBmYWxzZSwKKwkJCQkJCQkJCSAmc2djLT5zb3J0b3AsICZzZ2Mt PmVxb3AsIE5VTEwsCisJCQkJCQkJCQkgJnNnYy0+aGFzaGFibGUpOworCisJCQkvKiBUaGlzIGV4 cHJlc3Npb24gc2hvdWxkIGJlIGVtaXR0ZWQgYnkgdGhlIGdyb3VwZWQgcGF0aHMgKi8KKwkJCWFk ZF9jb2x1bW5fdG9fcGF0aHRhcmdldCh0YXJnZXQsIGV4cHIsIHNnYy0+dGxlU29ydEdyb3VwUmVm KTsKKworCQkJLyogLi4uIGFuZCBpdCBhbHNvIHNob3VsZCBiZSBlbWl0dGVkIGJ5IHRoZSBpbnB1 dCBwYXRocy4gKi8KKwkJCWFkZF9jb2x1bW5fdG9fcGF0aHRhcmdldChhZ2dfaW5wdXQsIGV4cHIs IHNnYy0+dGxlU29ydEdyb3VwUmVmKTsKKworCQkJLyogUmVjb3JkIHRoaXMgU29ydEdyb3VwQ2xh dXNlIGFuZCBncm91cGluZyBleHByZXNzaW9uICovCisJCQkqZ3JvdXBfY2xhdXNlcyA9IGxhcHBl bmQoKmdyb3VwX2NsYXVzZXMsIHNnYyk7CisJCQkqZ3JvdXBfZXhwcnMgPSBsYXBwZW5kKCpncm91 cF9leHBycywgZXhwcik7CisJCX0KKwkJZWxzZSBpZiAoaXNfdmFyX2luX2FnZ3JlZl9vbmx5KHJv b3QsIChWYXIgKikgZXhwcikpCisJCXsKKwkJCS8qCisJCQkgKiBUaGUgZXhwcmVzc2lvbiBpcyBy ZWZlcmVuY2VkIGJ5IGFuIGFnZ3JlZ2F0ZSBmdW5jdGlvbiBwdXNoZWQKKwkJCSAqIGRvd24gdG8g dGhpcyByZWxhdGlvbiBhbmQgZG9lcyBub3QgYXBwZWFyIGVsc2V3aGVyZSBpbiB0aGUKKwkJCSAq IHRhcmdldGxpc3Qgb3IgaGF2aW5nUXVhbC4gIEFkZCBpdCB0byAnYWdnX2lucHV0JyBidXQgbm90 IHRvCisJCQkgKiAndGFyZ2V0Jy4KKwkJCSAqLworCQkJYWRkX25ld19jb2x1bW5fdG9fcGF0aHRh cmdldChhZ2dfaW5wdXQsIGV4cHIpOworCQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIFRo ZSBleHByZXNzaW9uIG1heSBiZSBmdW5jdGlvbmFsbHkgZGVwZW5kZW50IG9uIG90aGVyCisJCQkg KiBleHByZXNzaW9ucyBpbiB0aGUgdGFyZ2V0LCBidXQgd2UgY2Fubm90IHZlcmlmeSB0aGlzIHVu dGlsIGFsbAorCQkJICogdGFyZ2V0IGV4cHJlc3Npb25zIGhhdmUgYmVlbiBjb25zdHJ1Y3RlZC4K KwkJCSAqLworCQkJcG9zc2libHlfZGVwZW5kZW50ID0gbGFwcGVuZChwb3NzaWJseV9kZXBlbmRl bnQsIGV4cHIpOworCQl9CisJfQorCisJLyoKKwkgKiBOb3cgd2UgY2FuIHZlcmlmeSB3aGV0aGVy IGFuIGV4cHJlc3Npb24gaXMgZnVuY3Rpb25hbGx5IGRlcGVuZGVudCBvbgorCSAqIG90aGVycy4K KwkgKi8KKwlmb3JlYWNoKGxjLCBwb3NzaWJseV9kZXBlbmRlbnQpCisJeworCQlWYXIJCSAgICp0 dmFyOworCQlMaXN0CSAgICpkZXBzID0gTklMOworCQlSYW5nZVRibEVudHJ5ICpydGU7CisKKwkJ dHZhciA9IGxmaXJzdF9ub2RlKFZhciwgbGMpOworCQlydGUgPSByb290LT5zaW1wbGVfcnRlX2Fy cmF5W3R2YXItPnZhcm5vXTsKKworCQlpZiAoY2hlY2tfZnVuY3Rpb25hbF9ncm91cGluZyhydGUt PnJlbGlkLCB0dmFyLT52YXJubywKKwkJCQkJCQkJCSAgdHZhci0+dmFybGV2ZWxzdXAsCisJCQkJ CQkJCQkgIHRhcmdldC0+ZXhwcnMsICZkZXBzKSkKKwkJeworCQkJLyoKKwkJCSAqIFRoZSBleHBy ZXNzaW9uIGlzIGZ1bmN0aW9uYWxseSBkZXBlbmRlbnQgb24gb3RoZXIgdGFyZ2V0CisJCQkgKiBl eHByZXNzaW9ucywgc28gaXQgY2FuIGJlIGluY2x1ZGVkIGluIHRoZSB0YXJnZXRzLiAgU2luY2Ug aXQKKwkJCSAqIHdpbGwgbm90IGJlIHVzZWQgYXMgYSBncm91cGluZyBrZXksIGEgc29ydGdyb3Vw cmVmIGlzIG5vdAorCQkJICogbmVlZGVkIGZvciBpdC4KKwkJCSAqLworCQkJYWRkX25ld19jb2x1 bW5fdG9fcGF0aHRhcmdldCh0YXJnZXQsIChFeHByICopIHR2YXIpOworCQkJYWRkX25ld19jb2x1 bW5fdG9fcGF0aHRhcmdldChhZ2dfaW5wdXQsIChFeHByICopIHR2YXIpOworCQl9CisJCWVsc2UK KwkJeworCQkJLyoKKwkJCSAqIFdlIG1heSBhcnJpdmUgaGVyZSB3aXRoIGEgZ3JvdXBpbmcgZXhw cmVzc2lvbiB0aGF0IGlzIHByb3ZlbgorCQkJICogcmVkdW5kYW50IGJ5IEVxdWl2YWxlbmNlQ2xh c3MgcHJvY2Vzc2luZywgc3VjaCBhcyAndDEuYScgaW4gdGhlCisJCQkgKiBxdWVyeSBiZWxvdy4K KwkJCSAqCisJCQkgKiBzZWxlY3QgbWF4KHQxLmMpIGZyb20gdCB0MSwgdCB0MiB3aGVyZSB0MS5h ID0gMSBncm91cCBieSB0MS5hLAorCQkJICogdDEuYjsKKwkJCSAqCisJCQkgKiBGb3Igbm93IHdl IGp1c3QgZ2l2ZSB1cCBpbiB0aGlzIGNhc2UuCisJCQkgKi8KKwkJCXJldHVybiBmYWxzZTsKKwkJ fQorCX0KKworCXJldHVybiB0cnVlOworfQorCisvKgorICogaXNfdmFyX2luX2FnZ3JlZl9vbmx5 CisgKgkgIENoZWNrIHdoZXRoZXIgdGhlIGdpdmVuIFZhciBhcHBlYXJzIGluIGFnZ3JlZ2F0ZSBl eHByZXNzaW9ucyBhbmQgbm90CisgKgkgIGVsc2V3aGVyZSBpbiB0aGUgdGFyZ2V0bGlzdCBvciBo YXZpbmdRdWFsLgorICovCitzdGF0aWMgYm9vbAoraXNfdmFyX2luX2FnZ3JlZl9vbmx5KFBsYW5u ZXJJbmZvICpyb290LCBWYXIgKnZhcikKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCS8qCisJICog U2VhcmNoIHRoZSBsaXN0IG9mIGFnZ3JlZ2F0ZSBleHByZXNzaW9ucyBmb3IgdGhlIFZhci4KKwkg Ki8KKwlmb3JlYWNoKGxjLCByb290LT5hZ2dfY2xhdXNlX2xpc3QpCisJeworCQlBZ2dDbGF1c2VJ bmZvICphY19pbmZvID0gbGZpcnN0X25vZGUoQWdnQ2xhdXNlSW5mbywgbGMpOworCQlMaXN0CSAg ICp2YXJzOworCisJCUFzc2VydChJc0EoYWNfaW5mby0+YWdncmVmLCBBZ2dyZWYpKTsKKworCQlp ZiAoIWJtc19pc19tZW1iZXIodmFyLT52YXJubywgYWNfaW5mby0+YWdnX2V2YWxfYXQpKQorCQkJ Y29udGludWU7CisKKwkJdmFycyA9IHB1bGxfdmFyX2NsYXVzZSgoTm9kZSAqKSBhY19pbmZvLT5h Z2dyZWYsCisJCQkJCQkJICAgUFZDX1JFQ1VSU0VfQUdHUkVHQVRFUyB8CisJCQkJCQkJICAgUFZD X1JFQ1VSU0VfV0lORE9XRlVOQ1MgfAorCQkJCQkJCSAgIFBWQ19SRUNVUlNFX1BMQUNFSE9MREVS Uyk7CisKKwkJaWYgKGxpc3RfbWVtYmVyKHZhcnMsIHZhcikpCisJCXsKKwkJCWxpc3RfZnJlZSh2 YXJzKTsKKwkJCWJyZWFrOworCQl9CisKKwkJbGlzdF9mcmVlKHZhcnMpOworCX0KKworCXJldHVy biAobGMgIT0gTlVMTCAmJiAhbGlzdF9tZW1iZXIocm9vdC0+dGxpc3RfdmFycywgdmFyKSk7Cit9 CisKKy8qCisgKiBpc192YXJfbmVlZGVkX2J5X2pvaW4KKyAqCSAgQ2hlY2sgaWYgdGhlIGdpdmVu IFZhciBpcyBuZWVkZWQgYnkgam9pbnMgYWJvdmUgdGhlIGN1cnJlbnQgcmVsLgorICovCitzdGF0 aWMgYm9vbAoraXNfdmFyX25lZWRlZF9ieV9qb2luKFBsYW5uZXJJbmZvICpyb290LCBWYXIgKnZh ciwgUmVsT3B0SW5mbyAqcmVsKQoreworCVJlbGlkcwkJcmVsaWRzOworCWludAkJCWF0dG5vOwor CVJlbE9wdEluZm8gKmJhc2VyZWw7CisKKwkvKgorCSAqIE5vdGUgdGhhdCB3aGVuIGNoZWNraW5n IGlmIHRoZSBWYXIgaXMgbmVlZGVkIGJ5IGpvaW5zIGFib3ZlLCB3ZSB3YW50IHRvCisJICogZXhj bHVkZSBjYXNlcyB3aGVyZSB0aGUgVmFyIGlzIG9ubHkgbmVlZGVkIGluIHRoZSBmaW5hbCB0YXJn ZXRsaXN0LiAgU28KKwkgKiBpbmNsdWRlICJyZWxhdGlvbiAwIiBpbiB0aGUgY2hlY2suCisJICov CisJcmVsaWRzID0gYm1zX2NvcHkocmVsLT5yZWxpZHMpOworCXJlbGlkcyA9IGJtc19hZGRfbWVt YmVyKHJlbGlkcywgMCk7CisKKwliYXNlcmVsID0gZmluZF9iYXNlX3JlbChyb290LCB2YXItPnZh cm5vKTsKKwlhdHRubyA9IHZhci0+dmFyYXR0bm8gLSBiYXNlcmVsLT5taW5fYXR0cjsKKworCXJl dHVybiBibXNfbm9uZW1wdHlfZGlmZmVyZW5jZShiYXNlcmVsLT5hdHRyX25lZWRlZFthdHRub10s IHJlbGlkcyk7Cit9CisKKy8qCisgKiBnZXRfZXhwcmVzc2lvbl9zb3J0Z3JvdXByZWYKKyAqCSAg UmV0dXJuIHRoZSBzb3J0Z3JvdXByZWYgb2YgdGhlIGdpdmVuICJleHByIiBpZiBpdCBpcyBmb3Vu ZCBhbW9uZyB0aGUKKyAqCSAgb3JpZ2luYWwgZ3JvdXBpbmcgZXhwcmVzc2lvbnMsIG9yIGlzIGtu b3duIGVxdWFsIHRvIGFueSBvZiB0aGUgb3JpZ2luYWwKKyAqCSAgZ3JvdXBpbmcgZXhwcmVzc2lv bnMgZHVlIHRvIGVxdWl2YWxlbmNlIHJlbGF0aW9uc2hpcHMuICBSZXR1cm4gMCBpZiBubworICoJ ICBtYXRjaCBpcyBmb3VuZC4KKyAqLworc3RhdGljIEluZGV4CitnZXRfZXhwcmVzc2lvbl9zb3J0 Z3JvdXByZWYoUGxhbm5lckluZm8gKnJvb3QsIEV4cHIgKmV4cHIpCit7CisJTGlzdENlbGwgICAq bGM7CisKKwlmb3JlYWNoKGxjLCByb290LT5ncm91cF9leHByX2xpc3QpCisJeworCQlHcm91cGlu Z0V4cHJJbmZvICpnZV9pbmZvID0gbGZpcnN0X25vZGUoR3JvdXBpbmdFeHBySW5mbywgbGMpOwor CisJCUFzc2VydChJc0EoZ2VfaW5mby0+ZXhwciwgVmFyKSk7CisKKwkJaWYgKGVxdWFsKGdlX2lu Zm8tPmV4cHIsIGV4cHIpIHx8CisJCQlleHByc19rbm93bl9lcXVhbChyb290LCAoTm9kZSAqKSBl eHByLCAoTm9kZSAqKSBnZV9pbmZvLT5leHByLAorCQkJCQkJCSAgZ2VfaW5mby0+YnRyZWVfb3Bm YW1pbHkpKQorCQl7CisJCQlBc3NlcnQoZ2VfaW5mby0+c29ydGdyb3VwcmVmID4gMCk7CisKKwkJ CXJldHVybiBnZV9pbmZvLT5zb3J0Z3JvdXByZWY7CisJCX0KKwl9CisKKwkvKiBubyBtYXRjaCBp cyBmb3VuZCAqLworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpp bmRleCBkMTRiMTY3OGU3Zi4uNWVmOGI4MjRhN2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjX3RhYmxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3Rh Ymxlcy5jCkBAIC05NDksNiArOTQ5LDE2IEBAIHN0cnVjdCBjb25maWdfYm9vbCBDb25maWd1cmVO YW1lc0Jvb2xbXSA9CiAJCWZhbHNlLAogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKKwl7CisJCXsi ZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZSIsIFBHQ19VU0VSU0VULCBRVUVSWV9UVU5JTkdfTUVUSE9E LAorCQkJZ2V0dGV4dF9ub29wKCJFbmFibGVzIGVhZ2VyIGFnZ3JlZ2F0aW9uLiIpLAorCQkJTlVM TCwKKwkJCUdVQ19FWFBMQUlOCisJCX0sCisJCSZlbmFibGVfZWFnZXJfYWdncmVnYXRlLAorCQl0 cnVlLAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKIAl7CiAJCXsiZW5hYmxlX3BhcmFsbGVsX2Fw cGVuZCIsIFBHQ19VU0VSU0VULCBRVUVSWV9UVU5JTkdfTUVUSE9ELAogCQkJZ2V0dGV4dF9ub29w KCJFbmFibGVzIHRoZSBwbGFubmVyJ3MgdXNlIG9mIHBhcmFsbGVsIGFwcGVuZCBwbGFucy4iKSwK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBs ZSBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCBh OWQ4MjkzNDc0YS4uMGViNzU1ZDYxZGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bv c3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTQyOCw2ICs0MjgsNyBAQAogI2VuYWJsZV9ncm91cF9i eV9yZW9yZGVyaW5nID0gb24KICNlbmFibGVfZGlzdGluY3RfcmVvcmRlcmluZyA9IG9uCiAjZW5h YmxlX3NlbGZfam9pbl9lbGltaW5hdGlvbiA9IG9uCisjZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZSA9 IG9uCiAKICMgLSBQbGFubmVyIENvc3QgQ29uc3RhbnRzIC0KIApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApp bmRleCBlNWRkMTUwOThmNi4uYzlkZjEyYWEzOGUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25v ZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCkBAIC0z OTcsNiArMzk3LDE1IEBAIHN0cnVjdCBQbGFubmVySW5mbwogCS8qIGxpc3Qgb2YgUGxhY2VIb2xk ZXJJbmZvcyAqLwogCUxpc3QJICAgKnBsYWNlaG9sZGVyX2xpc3Q7CiAKKwkvKiBsaXN0IG9mIEFn Z0NsYXVzZUluZm9zICovCisJTGlzdAkgICAqYWdnX2NsYXVzZV9saXN0OworCisJLyogbGlzdCBv ZiBHcm91cEV4cHJJbmZvcyAqLworCUxpc3QJICAgKmdyb3VwX2V4cHJfbGlzdDsKKworCS8qIGxp c3Qgb2YgcGxhaW4gVmFycyBjb250YWluZWQgaW4gdGFyZ2V0bGlzdCBhbmQgaGF2aW5nUXVhbCAq LworCUxpc3QJICAgKnRsaXN0X3ZhcnM7CisKIAkvKiBhcnJheSBvZiBQbGFjZUhvbGRlckluZm9z IGluZGV4ZWQgYnkgcGhpZCAqLwogCXN0cnVjdCBQbGFjZUhvbGRlckluZm8gKipwbGFjZWhvbGRl cl9hcnJheSBwZ19ub2RlX2F0dHIocmVhZF93cml0ZV9pZ25vcmUsIGFycmF5X3NpemUocGxhY2Vo b2xkZXJfYXJyYXlfc2l6ZSkpOwogCS8qIGFsbG9jYXRlZCBzaXplIG9mIGFycmF5ICovCkBAIC0x MDI0LDYgKzEwMzMsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVsT3B0SW5mbwogCS8qIGNvbnNpZGVy IHBhcnRpdGlvbndpc2Ugam9pbiBwYXRocz8gKGlmIHBhcnRpdGlvbmVkIHJlbCkgKi8KIAlib29s CQljb25zaWRlcl9wYXJ0aXRpb253aXNlX2pvaW47CiAKKwkvKgorCSAqIHVzZWQgYnkgZWFnZXIg YWdncmVnYXRpb246CisJICovCisJLyogaW5mb3JtYXRpb24gbmVlZGVkIHRvIGNyZWF0ZSBncm91 cGVkIHBhdGhzICovCisJc3RydWN0IFJlbEFnZ0luZm8gKmFnZ19pbmZvOworCS8qIHRoZSBwYXJ0 aWFsbHktYWdncmVnYXRlZCB2ZXJzaW9uIG9mIHRoZSByZWxhdGlvbiAqLworCXN0cnVjdCBSZWxP cHRJbmZvICpncm91cGVkX3JlbDsKKwogCS8qCiAJICogaW5oZXJpdGFuY2UgbGlua3MsIGlmIHRo aXMgaXMgYW4gb3RoZXJyZWwgKG90aGVyd2lzZSBOVUxMKToKIAkgKi8KQEAgLTEwOTcsNiArMTEx NCw3NSBAQCB0eXBlZGVmIHN0cnVjdCBSZWxPcHRJbmZvCiAJKChyZWwpLT5wYXJ0X3NjaGVtZSAm JiAocmVsKS0+Ym91bmRpbmZvICYmIChyZWwpLT5ucGFydHMgPiAwICYmIFwKIAkgKHJlbCktPnBh cnRfcmVscyAmJiAocmVsKS0+cGFydGV4cHJzICYmIChyZWwpLT5udWxsYWJsZV9wYXJ0ZXhwcnMp CiAKKy8qCisgKiBJcyB0aGUgZ2l2ZW4gcmVsYXRpb24gYSBncm91cGVkIHJlbGF0aW9uPworICov CisjZGVmaW5lIElTX0dST1VQRURfUkVMKHJlbCkgXAorCSgocmVsKS0+YWdnX2luZm8gIT0gTlVM TCkKKworLyoKKyAqIFJlbEFnZ0luZm8KKyAqCQlJbmZvcm1hdGlvbiBuZWVkZWQgdG8gY3JlYXRl IGdyb3VwZWQgcGF0aHMgZm9yIGJhc2UgYW5kIGpvaW4gcmVscy4KKyAqCisgKiAicmVsaWRzIiBp cyB0aGUgc2V0IG9mIHJlbGF0aW9uIGlkZW50aWZpZXJzIChSVCBpbmRleGVzKS4KKyAqCisgKiAi dGFyZ2V0IiBpcyB0aGUgb3V0cHV0IHRsaXN0IGZvciB0aGUgZ3JvdXBlZCBwYXRocy4KKyAqCisg KiAiYWdnX2lucHV0IiBpcyB0aGUgb3V0cHV0IHRsaXN0IGZvciB0aGUgcGF0aHMgdGhhdCBwcm92 aWRlIGlucHV0IHRvIHRoZQorICogZ3JvdXBlZCBwYXRocy4gIE9uZSBkaWZmZXJlbmNlIGZyb20g dGhlIHJlbHRhcmdldCBvZiB0aGUgbm9uLWdyb3VwZWQKKyAqIHJlbGF0aW9uIGlzIHRoYXQgYWdn X2lucHV0IGhhcyBpdHMgc29ydGdyb3VwcmVmc1tdIGluaXRpYWxpemVkLgorICoKKyAqICJncm91 cGVkX3Jvd3MiIGlzIHRoZSBlc3RpbWF0ZWQgbnVtYmVyIG9mIHJlc3VsdCB0dXBsZXMgb2YgdGhl IGdyb3VwZWQKKyAqIHJlbGF0aW9uLgorICoKKyAqICJncm91cF9jbGF1c2VzIiwgImdyb3VwX2V4 cHJzIiBhbmQgImdyb3VwX3BhdGhrZXlzIiBhcmUgbGlzdHMgb2YKKyAqIFNvcnRHcm91cENsYXVz ZXMsIHRoZSBjb3JyZXNwb25kaW5nIGdyb3VwaW5nIGV4cHJlc3Npb25zIGFuZCBQYXRoS2V5cwor ICogcmVzcGVjdGl2ZWx5LgorICoKKyAqICJhcHBseV9hdCIgdHJhY2tzIHRoZSBsb3dlc3Qgam9p biBsZXZlbCBhdCB3aGljaCBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGlzCisgKiBhcHBsaWVkLgorICoK KyAqICJhZ2dfdXNlZnVsIiBpcyBhIGZsYWcgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUgZ3JvdXBl ZCBwYXRocyBhcmUgY29uc2lkZXJlZAorICogdXNlZnVsLiAgSXQgaXMgc2V0IHRydWUgaWYgdGhl IGF2ZXJhZ2UgcGFydGlhbCBncm91cCBzaXplIGlzIG5vIGxlc3MgdGhhbgorICogRUFHRVJfQUdH X01JTl9HUk9VUF9TSVpFLCBzdWdnZXN0aW5nIGEgc2lnbmlmaWNhbnQgcm93IGNvdW50IHJlZHVj dGlvbi4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgUmVsQWdnSW5mbworeworCXBnX25vZGVfYXR0cihu b19jb3B5X2VxdWFsLCBub19yZWFkLCBub19xdWVyeV9qdW1ibGUpCisKKwlOb2RlVGFnCQl0eXBl OworCisJLyogc2V0IG9mIGJhc2UgKyBPSiByZWxpZHMgKHJhbmdldGFibGUgaW5kZXhlcykgKi8K KwlSZWxpZHMJCXJlbGlkczsKKworCS8qCisJICogZGVmYXVsdCByZXN1bHQgdGFyZ2V0bGlzdCBm b3IgUGF0aHMgc2Nhbm5pbmcgdGhpcyBncm91cGVkIHJlbGF0aW9uOworCSAqIGxpc3Qgb2YgVmFy cy9FeHBycywgY29zdCwgd2lkdGgKKwkgKi8KKwlzdHJ1Y3QgUGF0aFRhcmdldCAqdGFyZ2V0Owor CisJLyoKKwkgKiB0aGUgdGFyZ2V0bGlzdCBmb3IgUGF0aHMgdGhhdCBwcm92aWRlIGlucHV0IHRv IHRoZSBncm91cGVkIHBhdGhzCisJICovCisJc3RydWN0IFBhdGhUYXJnZXQgKmFnZ19pbnB1dDsK KworCS8qIGVzdGltYXRlZCBudW1iZXIgb2YgcmVzdWx0IHR1cGxlcyAqLworCUNhcmRpbmFsaXR5 IGdyb3VwZWRfcm93czsKKworCS8qIGEgbGlzdCBvZiBTb3J0R3JvdXBDbGF1c2VzICovCisJTGlz dAkgICAqZ3JvdXBfY2xhdXNlczsKKwkvKiBhIGxpc3Qgb2YgZ3JvdXBpbmcgZXhwcmVzc2lvbnMg Ki8KKwlMaXN0CSAgICpncm91cF9leHByczsKKwkvKiBhIGxpc3Qgb2YgUGF0aEtleXMgKi8KKwlM aXN0CSAgICpncm91cF9wYXRoa2V5czsKKworCS8qIGxvd2VzdCBsZXZlbCBwYXJ0aWFsIGFnZ3Jl Z2F0aW9uIGlzIGFwcGxpZWQgYXQgKi8KKwlSZWxpZHMJCWFwcGx5X2F0OworCisJLyogdGhlIGdy b3VwZWQgcGF0aHMgYXJlIGNvbnNpZGVyZWQgdXNlZnVsPyAqLworCWJvb2wJCWFnZ191c2VmdWw7 Cit9IFJlbEFnZ0luZm87CisKIC8qCiAgKiBJbmRleE9wdEluZm8KICAqCQlQZXItaW5kZXggaW5m b3JtYXRpb24gZm9yIHBsYW5uaW5nL29wdGltaXphdGlvbgpAQCAtMzI3Niw2ICszMzYyLDUwIEBA IHR5cGVkZWYgc3RydWN0IE1pbk1heEFnZ0luZm8KIAlQYXJhbQkgICAqcGFyYW07CiB9IE1pbk1h eEFnZ0luZm87CiAKKy8qCisgKiBGb3IgZWFjaCBkaXN0aW5jdCBBZ2dyZWYgbm9kZSB0aGF0IGFw cGVhcnMgaW4gdGhlIHRhcmdldGxpc3QgYW5kIEhBVklORworICogY2xhdXNlcywgd2Ugc3RvcmUg YW4gQWdnQ2xhdXNlSW5mbyBub2RlIGluIHRoZSBQbGFubmVySW5mbyBub2RlJ3MKKyAqIGFnZ19j bGF1c2VfbGlzdC4gIEVhY2ggQWdnQ2xhdXNlSW5mbyByZWNvcmRzIHRoZSBzZXQgb2YgcmVsYXRp b25zIHJlZmVyZW5jZWQKKyAqIGJ5IHRoZSBhZ2dyZWdhdGUgZXhwcmVzc2lvbi4gIFRoaXMgaW5m b3JtYXRpb24gaXMgdXNlZCB0byBkZXRlcm1pbmUgaG93IGZhcgorICogdGhlIGFnZ3JlZ2F0ZSBj YW4gYmUgc2FmZWx5IHB1c2hlZCBkb3duIGluIHRoZSBqb2luIHRyZWUuCisgKi8KK3R5cGVkZWYg c3RydWN0IEFnZ0NsYXVzZUluZm8KK3sKKwlwZ19ub2RlX2F0dHIobm9fcmVhZCwgbm9fcXVlcnlf anVtYmxlKQorCisJTm9kZVRhZwkJdHlwZTsKKworCS8qIHRoZSBBZ2dyZWYgZXhwciAqLworCUFn Z3JlZgkgICAqYWdncmVmOworCisJLyogbG93ZXN0IGxldmVsIHdlIGNhbiBldmFsdWF0ZSB0aGlz IGFnZ3JlZ2F0ZSBhdCAqLworCVJlbGlkcwkJYWdnX2V2YWxfYXQ7Cit9IEFnZ0NsYXVzZUluZm87 CisKKy8qCisgKiBGb3IgZWFjaCBncm91cGluZyBleHByZXNzaW9uIHRoYXQgYXBwZWFycyBpbiBn cm91cGluZyBjbGF1c2VzLCB3ZSBzdG9yZSBhCisgKiBHcm91cGluZ0V4cHJJbmZvIG5vZGUgaW4g dGhlIFBsYW5uZXJJbmZvIG5vZGUncyBncm91cF9leHByX2xpc3QuICBFYWNoCisgKiBHcm91cGlu Z0V4cHJJbmZvIHJlY29yZHMgdGhlIGV4cHJlc3Npb24gYmVpbmcgZ3JvdXBlZCBvbiwgaXRzIHNv cnRncm91cHJlZiwKKyAqIGFuZCB0aGUgYnRyZWUgb3BmYW1pbHkgdXNlZCBmb3IgZXF1YWxpdHkg Y29tcGFyaXNvbi4gIFRoaXMgaW5mb3JtYXRpb24gaXMKKyAqIG5lY2Vzc2FyeSB0byByZXByb2R1 Y2UgY29ycmVjdCBncm91cGluZyBzZW1hbnRpY3MgYXQgZGlmZmVyZW50IGxldmVscyBvZiB0aGUK KyAqIGpvaW4gdHJlZS4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgR3JvdXBpbmdFeHBySW5mbworewor CXBnX25vZGVfYXR0cihub19yZWFkLCBub19xdWVyeV9qdW1ibGUpCisKKwlOb2RlVGFnCQl0eXBl OworCisJLyogdGhlIHJlcHJlc2VudGVkIGV4cHJlc3Npb24gKi8KKwlFeHByCSAgICpleHByOwor CisJLyogdGhlIHRsZVNvcnRHcm91cFJlZiBvZiB0aGUgY29ycmVzcG9uZGluZyBTb3J0R3JvdXBD bGF1c2UgKi8KKwlJbmRleAkJc29ydGdyb3VwcmVmOworCisJLyogYnRyZWUgb3BmYW1pbHkgZGVm aW5pbmcgdGhlIG9yZGVyaW5nICovCisJT2lkCQkJYnRyZWVfb3BmYW1pbHk7Cit9IEdyb3VwaW5n RXhwckluZm87CisKIC8qCiAgKiBBdCBydW50aW1lLCBQQVJBTV9FWEVDIHNsb3RzIGFyZSB1c2Vk IHRvIHBhc3MgdmFsdWVzIGFyb3VuZCBmcm9tIG9uZSBwbGFuCiAgKiBub2RlIHRvIGFub3RoZXIu ICBUaGV5IGNhbiBiZSB1c2VkIHRvIHBhc3MgdmFsdWVzIGRvd24gaW50byBzdWJxdWVyaWVzIChm b3IKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oIGIvc3JjL2lu Y2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmgKaW5kZXggNjBkY2RiNzdlNDEuLjAxYTM1MzJkYzJl IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaAorKysgYi9zcmMv aW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaApAQCAtMzE0LDYgKzMxNCwxMCBAQCBleHRlcm4g dm9pZCBzZXR1cF9zaW1wbGVfcmVsX2FycmF5cyhQbGFubmVySW5mbyAqcm9vdCk7CiBleHRlcm4g dm9pZCBleHBhbmRfcGxhbm5lcl9hcnJheXMoUGxhbm5lckluZm8gKnJvb3QsIGludCBhZGRfc2l6 ZSk7CiBleHRlcm4gUmVsT3B0SW5mbyAqYnVpbGRfc2ltcGxlX3JlbChQbGFubmVySW5mbyAqcm9v dCwgaW50IHJlbGlkLAogCQkJCQkJCQkJUmVsT3B0SW5mbyAqcGFyZW50KTsKK2V4dGVybiBSZWxP cHRJbmZvICpidWlsZF9zaW1wbGVfZ3JvdXBlZF9yZWwoUGxhbm5lckluZm8gKnJvb3QsCisJCQkJ CQkJCQkJCVJlbE9wdEluZm8gKnJlbF9wbGFpbik7CitleHRlcm4gUmVsT3B0SW5mbyAqYnVpbGRf Z3JvdXBlZF9yZWwoUGxhbm5lckluZm8gKnJvb3QsCisJCQkJCQkJCQkgUmVsT3B0SW5mbyAqcmVs X3BsYWluKTsKIGV4dGVybiBSZWxPcHRJbmZvICpmaW5kX2Jhc2VfcmVsKFBsYW5uZXJJbmZvICpy b290LCBpbnQgcmVsaWQpOwogZXh0ZXJuIFJlbE9wdEluZm8gKmZpbmRfYmFzZV9yZWxfbm9lcnIo UGxhbm5lckluZm8gKnJvb3QsIGludCByZWxpZCk7CiBleHRlcm4gUmVsT3B0SW5mbyAqZmluZF9i YXNlX3JlbF9pZ25vcmVfam9pbihQbGFubmVySW5mbyAqcm9vdCwgaW50IHJlbGlkKTsKQEAgLTM1 Myw0ICszNTcsNSBAQCBleHRlcm4gUmVsT3B0SW5mbyAqYnVpbGRfY2hpbGRfam9pbl9yZWwoUGxh bm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJU3BlY2lhbEpvaW5JbmZvICpzamluZm8sCiAJCQkJ CQkJCQkJaW50IG5hcHBpbmZvcywgQXBwZW5kUmVsSW5mbyAqKmFwcGluZm9zKTsKIAorZXh0ZXJu IFJlbEFnZ0luZm8gKmNyZWF0ZV9yZWxfYWdnX2luZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9w dEluZm8gKnJlbCk7CiAjZW5kaWYJCQkJCQkJLyogUEFUSE5PREVfSCAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0 aHMuaAppbmRleCA4NDEwNTMxZjJkNi4uYjYyZjIyMjM3YjcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL29wdGltaXplci9wYXRocy5oCisrKyBiL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRocy5o CkBAIC0yMSw2ICsyMSw3IEBACiAgKiBhbGxwYXRocy5jCiAgKi8KIGV4dGVybiBQR0RMTElNUE9S VCBib29sIGVuYWJsZV9nZXFvOworZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgZW5hYmxlX2VhZ2Vy X2FnZ3JlZ2F0ZTsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgZ2Vxb190aHJlc2hvbGQ7CiBleHRl cm4gUEdETExJTVBPUlQgaW50IG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemU7CiBleHRlcm4g UEdETExJTVBPUlQgaW50IG1pbl9wYXJhbGxlbF9pbmRleF9zY2FuX3NpemU7CkBAIC01Nyw2ICs1 OCwxMCBAQCBleHRlcm4gdm9pZCBnZW5lcmF0ZV9nYXRoZXJfcGF0aHMoUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJCQkJICBib29sIG92ZXJyaWRlX3Jvd3MpOwogZXh0 ZXJuIHZvaWQgZ2VuZXJhdGVfdXNlZnVsX2dhdGhlcl9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwg UmVsT3B0SW5mbyAqcmVsLAogCQkJCQkJCQkJCSBib29sIG92ZXJyaWRlX3Jvd3MpOworZXh0ZXJu IHZvaWQgZ2VuZXJhdGVfZ3JvdXBlZF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKKwkJCQkJCQkJ ICAgUmVsT3B0SW5mbyAqcmVsX2dyb3VwZWQsCisJCQkJCQkJCSAgIFJlbE9wdEluZm8gKnJlbF9w bGFpbiwKKwkJCQkJCQkJICAgUmVsQWdnSW5mbyAqYWdnX2luZm8pOwogZXh0ZXJuIGludAljb21w dXRlX3BhcmFsbGVsX3dvcmtlcihSZWxPcHRJbmZvICpyZWwsIGRvdWJsZSBoZWFwX3BhZ2VzLAog CQkJCQkJCQkJZG91YmxlIGluZGV4X3BhZ2VzLCBpbnQgbWF4X3dvcmtlcnMpOwogZXh0ZXJuIHZv aWQgY3JlYXRlX3BhcnRpYWxfYml0bWFwX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJ bmZvICpyZWwsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGxhbm1haW4uaCBi L3NyYy9pbmNsdWRlL29wdGltaXplci9wbGFubWFpbi5oCmluZGV4IDlkM2RlYmNhYjI4Li4wOWI0 OGIyNmY4ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BsYW5tYWluLmgKKysr IGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BsYW5tYWluLmgKQEAgLTc2LDYgKzc2LDcgQEAgZXh0 ZXJuIHZvaWQgYWRkX3ZhcnNfdG9fdGFyZ2V0bGlzdChQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAq dmFycywKIGV4dGVybiB2b2lkIGFkZF92YXJzX3RvX2F0dHJfbmVlZGVkKFBsYW5uZXJJbmZvICpy b290LCBMaXN0ICp2YXJzLAogCQkJCQkJCQkJUmVsaWRzIHdoZXJlX25lZWRlZCk7CiBleHRlcm4g dm9pZCByZW1vdmVfdXNlbGVzc19ncm91cGJ5X2NvbHVtbnMoUGxhbm5lckluZm8gKnJvb3QpOwor ZXh0ZXJuIHZvaWQgc2V0dXBfZWFnZXJfYWdncmVnYXRpb24oUGxhbm5lckluZm8gKnJvb3QpOwog ZXh0ZXJuIHZvaWQgZmluZF9sYXRlcmFsX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QpOwog ZXh0ZXJuIHZvaWQgcmVidWlsZF9sYXRlcmFsX2F0dHJfbmVlZGVkKFBsYW5uZXJJbmZvICpyb290 KTsKIGV4dGVybiB2b2lkIGNyZWF0ZV9sYXRlcmFsX2pvaW5faW5mbyhQbGFubmVySW5mbyAqcm9v dCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VhZ2VyX2FnZ3JlZ2F0 ZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VhZ2VyX2FnZ3JlZ2F0ZS5vdXQKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmYwMmZmMGIzMGEzCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9lYWdlcl9hZ2dyZWdhdGUub3V0 CkBAIC0wLDAgKzEsMTMzNCBAQAorLS0KKy0tIEVBR0VSIEFHR1JFR0FUSU9OCistLSBUZXN0IHdl IGNhbiBwdXNoIGFnZ3JlZ2F0aW9uIGRvd24gYmVsb3cgam9pbgorLS0KKy0tIEVuYWJsZSBlYWdl ciBhZ2dyZWdhdGlvbiwgd2hpY2ggYnkgZGVmYXVsdCBpcyBkaXNhYmxlZC4KK1NFVCBlbmFibGVf ZWFnZXJfYWdncmVnYXRlIFRPIG9uOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190MSAoYSBpbnQs IGIgaW50LCBjIGRvdWJsZSBwcmVjaXNpb24pOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190MiAo YSBpbnQsIGIgaW50LCBjIGRvdWJsZSBwcmVjaXNpb24pOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2Fn Z190MyAoYSBpbnQsIGIgaW50LCBjIGRvdWJsZSBwcmVjaXNpb24pOworSU5TRVJUIElOVE8gZWFn ZXJfYWdnX3QxIFNFTEVDVCBpLCBpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApaTsK K0lOU0VSVCBJTlRPIGVhZ2VyX2FnZ190MiBTRUxFQ1QgaSwgaSUxMCwgaSBGUk9NIGdlbmVyYXRl X3NlcmllcygxLCAxMDAwKWk7CitJTlNFUlQgSU5UTyBlYWdlcl9hZ2dfdDMgU0VMRUNUIGklMTAs IGklMTAsIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMClpOworQU5BTFlaRSBlYWdlcl9h Z2dfdDE7CitBTkFMWVpFIGVhZ2VyX2FnZ190MjsKK0FOQUxZWkUgZWFnZXJfYWdnX3QzOworLS0K Ky0tIFRlc3QgZWFnZXIgYWdncmVnYXRpb24gb3ZlciBiYXNlIHJlbAorLS0KKy0tIFBlcmZvcm0g c2NhbiBvZiBhIHRhYmxlLCBhZ2dyZWdhdGUgdGhlIHJlc3VsdCwgam9pbiBpdCB0byB0aGUgb3Ro ZXIgdGFibGUKKy0tIGFuZCBmaW5hbGl6ZSB0aGUgYWdncmVnYXRpb24uCitFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3Qx IHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEgT1JE RVIgQlkgdDEuYTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgR3JvdXBBZ2dyZWdh dGUKKyAgIE91dHB1dDogdDEuYSwgYXZnKHQyLmMpCisgICBHcm91cCBLZXk6IHQxLmEKKyAgIC0+ ICBTb3J0CisgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2Zyh0Mi5jKSkKKyAgICAg ICAgIFNvcnQgS2V5OiB0MS5hCisgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAg ICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2Zyh0Mi5jKSkKKyAgICAgICAgICAgICAgIEhhc2gg Q29uZDogKHQxLmIgPSB0Mi5iKQorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1Ymxp Yy5lYWdlcl9hZ2dfdDEgdDEKKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgdDEu YiwgdDEuYworICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDIuYiwgKFBBUlRJQUwgYXZnKHQyLmMpKQorICAgICAgICAgICAgICAgICAgICAgLT4g IFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0Mi5iLCBQQVJUSUFMIGF2Zyh0Mi5jKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgR3Jv dXAgS2V5OiB0Mi5iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHVibGljLmVhZ2VyX2FnZ190MiB0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0Mi5hLCB0Mi5iLCB0Mi5jCisoMTggcm93cykKKworU0VMRUNUIHQxLmEsIGF2Zyh0 Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0g dDIuYiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisgYSB8IGF2ZyAKKy0tLSstLS0tLQor IDEgfCA0OTYKKyAyIHwgNDk3CisgMyB8IDQ5OAorIDQgfCA0OTkKKyA1IHwgNTAwCisgNiB8IDUw MQorIDcgfCA1MDIKKyA4IHwgNTAzCisgOSB8IDUwNAorKDkgcm93cykKKworLS0gUHJvZHVjZSBy ZXN1bHRzIHdpdGggc29ydGluZyBhZ2dyZWdhdGlvbgorU0VUIGVuYWJsZV9oYXNoYWdnIFRPIG9m ZjsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS5hLCBhdmcodDIuYykg RlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIg R1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBGaW5hbGl6ZSBHcm91cEFnZ3JlZ2F0ZQorICAgT3V0cHV0OiB0MS5hLCBhdmcodDIu YykKKyAgIEdyb3VwIEtleTogdDEuYQorICAgLT4gIFNvcnQKKyAgICAgICAgIE91dHB1dDogdDEu YSwgKFBBUlRJQUwgYXZnKHQyLmMpKQorICAgICAgICAgU29ydCBLZXk6IHQxLmEKKyAgICAgICAg IC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgKFBBUlRJQUwgYXZn KHQyLmMpKQorICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEuYiA9IHQyLmIpCisgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MSB0MQorICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCB0MS5iLCB0MS5jCisgICAgICAgICAgICAgICAtPiAg SGFzaAorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCAoUEFSVElBTCBhdmcodDIu YykpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBHcm91cEFnZ3JlZ2F0ZQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCBQQVJUSUFMIGF2Zyh0Mi5jKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Mi5iCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0Mi5jLCB0Mi5iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0 IEtleTogdDIuYgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDIgdDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDIuYywgdDIuYgorKDIxIHJvd3MpCisKK1NFTEVDVCB0MS5hLCBh dmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEu YiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworIGEgfCBhdmcgCistLS0rLS0t LS0KKyAxIHwgNDk2CisgMiB8IDQ5NworIDMgfCA0OTgKKyA0IHwgNDk5CisgNSB8IDUwMAorIDYg fCA1MDEKKyA3IHwgNTAyCisgOCB8IDUwMworIDkgfCA1MDQKKyg5IHJvd3MpCisKK1JFU0VUIGVu YWJsZV9oYXNoYWdnOworLS0KKy0tIFRlc3QgZWFnZXIgYWdncmVnYXRpb24gb3ZlciBqb2luIHJl bAorLS0KKy0tIFBlcmZvcm0gam9pbiBvZiB0YWJsZXMsIGFnZ3JlZ2F0ZSB0aGUgcmVzdWx0LCBq b2luIGl0IHRvIHRoZSBvdGhlciB0YWJsZQorLS0gYW5kIGZpbmFsaXplIHRoZSBhZ2dyZWdhdGlv bi4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS5hLCBhdmcodDIuYyAr IHQzLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIg PSB0Mi5iIEpPSU4gZWFnZXJfYWdnX3QzIHQzIE9OIHQyLmEgPSB0My5hIEdST1VQIEJZIHQxLmEg T1JERVIgQlkgdDEuYTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgRmluYWxpemUgR3JvdXBBZ2dyZWdhdGUKKyAgIE91dHB1dDogdDEuYSwgYXZnKCh0Mi5j ICsgdDMuYykpCisgICBHcm91cCBLZXk6IHQxLmEKKyAgIC0+ICBTb3J0CisgICAgICAgICBPdXRw dXQ6IHQxLmEsIChQQVJUSUFMIGF2ZygodDIuYyArIHQzLmMpKSkKKyAgICAgICAgIFNvcnQgS2V5 OiB0MS5hCisgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQx LmEsIChQQVJUSUFMIGF2ZygodDIuYyArIHQzLmMpKSkKKyAgICAgICAgICAgICAgIEhhc2ggQ29u ZDogKHQxLmIgPSB0Mi5iKQorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5l YWdlcl9hZ2dfdDEgdDEKKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgdDEuYiwg dDEuYworICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDIuYiwgKFBBUlRJQUwgYXZnKCh0Mi5jICsgdDMuYykpKQorICAgICAgICAgICAgICAgICAg ICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0Mi5iLCBQQVJUSUFMIGF2ZygodDIuYyArIHQzLmMpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgR3JvdXAgS2V5OiB0Mi5iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQy LmMsIHQyLmIsIHQzLmMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29u ZDogKHQzLmEgPSB0Mi5hKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDMgdDMKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDMuYSwgdDMuYiwgdDMuYworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDIuYywgdDIuYiwgdDIuYQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDIgdDIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIu YywgdDIuYiwgdDIuYQorKDI1IHJvd3MpCisKK1NFTEVDVCB0MS5hLCBhdmcodDIuYyArIHQzLmMp IEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5i IEpPSU4gZWFnZXJfYWdnX3QzIHQzIE9OIHQyLmEgPSB0My5hIEdST1VQIEJZIHQxLmEgT1JERVIg QlkgdDEuYTsKKyBhIHwgYXZnIAorLS0tKy0tLS0tCisgMSB8IDQ5NworIDIgfCA0OTkKKyAzIHwg NTAxCisgNCB8IDUwMworIDUgfCA1MDUKKyA2IHwgNTA3CisgNyB8IDUwOQorIDggfCA1MTEKKyA5 IHwgNTEzCisoOSByb3dzKQorCistLSBQcm9kdWNlIHJlc3VsdHMgd2l0aCBzb3J0aW5nIGFnZ3Jl Z2F0aW9uCitTRVQgZW5hYmxlX2hhc2hhZ2cgVE8gb2ZmOworRVhQTEFJTiAoVkVSQk9TRSwgQ09T VFMgT0ZGKQorU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jICsgdDMuYykgRlJPTSBlYWdlcl9hZ2dfdDEg dDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgSk9JTiBlYWdlcl9hZ2dfdDMg dDMgT04gdDIuYSA9IHQzLmEgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5hbGl6 ZSBHcm91cEFnZ3JlZ2F0ZQorICAgT3V0cHV0OiB0MS5hLCBhdmcoKHQyLmMgKyB0My5jKSkKKyAg IEdyb3VwIEtleTogdDEuYQorICAgLT4gIFNvcnQKKyAgICAgICAgIE91dHB1dDogdDEuYSwgKFBB UlRJQUwgYXZnKCh0Mi5jICsgdDMuYykpKQorICAgICAgICAgU29ydCBLZXk6IHQxLmEKKyAgICAg ICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgKFBBUlRJQUwg YXZnKCh0Mi5jICsgdDMuYykpKQorICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEuYiA9IHQy LmIpCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MSB0 MQorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCB0MS5iLCB0MS5jCisgICAgICAg ICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCAoUEFS VElBTCBhdmcoKHQyLmMgKyB0My5jKSkpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlh bCBHcm91cEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5i LCBQQVJUSUFMIGF2ZygodDIuYyArIHQzLmMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg R3JvdXAgS2V5OiB0Mi5iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU29ydAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5jLCB0Mi5iLCB0My5jCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogdDIuYgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5jLCB0Mi5iLCB0My5jCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0My5hID0gdDIuYSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJs aWMuZWFnZXJfYWdnX3QzIHQzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQzLmEsIHQzLmIsIHQzLmMKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmMsIHQyLmIsIHQyLmEKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJf YWdnX3QyIHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQyLmMsIHQyLmIsIHQyLmEKKygyOCByb3dzKQorCitTRUxFQ1QgdDEuYSwg YXZnKHQyLmMgKyB0My5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0 MiBPTiB0MS5iID0gdDIuYiBKT0lOIGVhZ2VyX2FnZ190MyB0MyBPTiB0Mi5hID0gdDMuYSBHUk9V UCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisgYSB8IGF2ZyAKKy0tLSstLS0tLQorIDEgfCA0OTcK KyAyIHwgNDk5CisgMyB8IDUwMQorIDQgfCA1MDMKKyA1IHwgNTA1CisgNiB8IDUwNworIDcgfCA1 MDkKKyA4IHwgNTExCisgOSB8IDUxMworKDkgcm93cykKKworUkVTRVQgZW5hYmxlX2hhc2hhZ2c7 CistLQorLS0gVGVzdCB0aGF0IGVhZ2VyIGFnZ3JlZ2F0aW9uIHdvcmtzIGZvciBvdXRlciBqb2lu CistLQorLS0gRW5zdXJlIGFnZ3JlZ2F0aW9uIGNhbiBiZSBwdXNoZWQgZG93biB0byB0aGUgbm9u LW51bGxhYmxlIHNpZGUKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS5h LCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgUklHSFQgSk9JTiBlYWdlcl9hZ2dfdDIg dDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBGaW5hbGl6ZSBHcm91cEFnZ3JlZ2F0ZQorICAgT3V0cHV0OiB0MS5hLCBh dmcodDIuYykKKyAgIEdyb3VwIEtleTogdDEuYQorICAgLT4gIFNvcnQKKyAgICAgICAgIE91dHB1 dDogdDEuYSwgKFBBUlRJQUwgYXZnKHQyLmMpKQorICAgICAgICAgU29ydCBLZXk6IHQxLmEKKyAg ICAgICAgIC0+ICBIYXNoIFJpZ2h0IEpvaW4KKyAgICAgICAgICAgICAgIE91dHB1dDogdDEuYSwg KFBBUlRJQUwgYXZnKHQyLmMpKQorICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEuYiA9IHQy LmIpCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MSB0 MQorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCB0MS5iLCB0MS5jCisgICAgICAg ICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCAoUEFS VElBTCBhdmcodDIuYykpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdn cmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIFBBUlRJQUwg YXZnKHQyLmMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyLmIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdn X3QyIHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmEsIHQy LmIsIHQyLmMKKygxOCByb3dzKQorCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJf YWdnX3QxIHQxIFJJR0hUIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQ IEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKyBhIHwgYXZnIAorLS0tKy0tLS0tCisgMSB8IDQ5Ngor IDIgfCA0OTcKKyAzIHwgNDk4CisgNCB8IDQ5OQorIDUgfCA1MDAKKyA2IHwgNTAxCisgNyB8IDUw MgorIDggfCA1MDMKKyA5IHwgNTA0CisgICB8IDUwNQorKDEwIHJvd3MpCisKKy0tIEVuc3VyZSBh Z2dyZWdhdGlvbiBjYW5ub3QgYmUgcHVzaGVkIGRvd24gdG8gdGhlIG51bGxhYmxlIHNpZGUKK0VY UExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0Mi5iLCBhdmcodDIuYykgRlJPTSBl YWdlcl9hZ2dfdDEgdDEgTEVGVCBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBH Uk9VUCBCWSB0Mi5iIE9SREVSIEJZIHQyLmI7CisgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNvcnQKKyAgIE91dHB1dDog dDIuYiwgKGF2Zyh0Mi5jKSkKKyAgIFNvcnQgS2V5OiB0Mi5iCisgICAtPiAgSGFzaEFnZ3JlZ2F0 ZQorICAgICAgICAgT3V0cHV0OiB0Mi5iLCBhdmcodDIuYykKKyAgICAgICAgIEdyb3VwIEtleTog dDIuYgorICAgICAgICAgLT4gIEhhc2ggUmlnaHQgSm9pbgorICAgICAgICAgICAgICAgT3V0cHV0 OiB0Mi5iLCB0Mi5jCisgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Mi5iID0gdDEuYikKKyAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QyIHQyCisgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmEsIHQyLmIsIHQyLmMKKyAgICAgICAgICAgICAg IC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmIKKyAgICAgICAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QxIHQxCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmIKKygxNSByb3dzKQorCitTRUxFQ1QgdDIu YiwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIExFRlQgSk9JTiBlYWdlcl9hZ2dfdDIg dDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDIuYiBPUkRFUiBCWSB0Mi5iOworIGIgfCBhdmcg CistLS0rLS0tLS0KKyAxIHwgNDk2CisgMiB8IDQ5NworIDMgfCA0OTgKKyA0IHwgNDk5CisgNSB8 IDUwMAorIDYgfCA1MDEKKyA3IHwgNTAyCisgOCB8IDUwMworIDkgfCA1MDQKKyAgIHwgICAgCiso MTAgcm93cykKKworLS0KKy0tIFRlc3QgdGhhdCBlYWdlciBhZ2dyZWdhdGlvbiB3b3JrcyBmb3Ig cGFyYWxsZWwgcGxhbnMKKy0tCitTRVQgcGFyYWxsZWxfc2V0dXBfY29zdD0wOworU0VUIHBhcmFs bGVsX3R1cGxlX2Nvc3Q9MDsKK1NFVCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplPTA7CitT RVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlcj00OworRVhQTEFJTiAoVkVSQk9TRSwg Q09TVFMgT0ZGKQorU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBK T0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZ IHQxLmE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIEZpbmFsaXplIEdyb3VwQWdncmVnYXRlCisgICBPdXRwdXQ6IHQxLmEsIGF2Zyh0Mi5jKQor ICAgR3JvdXAgS2V5OiB0MS5hCisgICAtPiAgR2F0aGVyIE1lcmdlCisgICAgICAgICBPdXRwdXQ6 IHQxLmEsIChQQVJUSUFMIGF2Zyh0Mi5jKSkKKyAgICAgICAgIFdvcmtlcnMgUGxhbm5lZDogMgor ICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgKFBBUlRJQUwg YXZnKHQyLmMpKQorICAgICAgICAgICAgICAgU29ydCBLZXk6IHQxLmEKKyAgICAgICAgICAgICAg IC0+ICBQYXJhbGxlbCBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEu YSwgKFBBUlRJQUwgYXZnKHQyLmMpKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAo dDEuYiA9IHQyLmIpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4g b24gcHVibGljLmVhZ2VyX2FnZ190MSB0MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0MS5hLCB0MS5iLCB0MS5jCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwg SGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCAoUEFSVElBTCBh dmcodDIuYykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdn cmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIFBB UlRJQUwgYXZnKHQyLmMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBL ZXk6IHQyLmIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBT ZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QyIHQyCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmEsIHQyLmIsIHQyLmMKKygyMSByb3dzKQorCitT RUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdn X3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKyBhIHwg YXZnIAorLS0tKy0tLS0tCisgMSB8IDQ5NgorIDIgfCA0OTcKKyAzIHwgNDk4CisgNCB8IDQ5OQor IDUgfCA1MDAKKyA2IHwgNTAxCisgNyB8IDUwMgorIDggfCA1MDMKKyA5IHwgNTA0CisoOSByb3dz KQorCitSRVNFVCBwYXJhbGxlbF9zZXR1cF9jb3N0OworUkVTRVQgcGFyYWxsZWxfdHVwbGVfY29z dDsKK1JFU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemU7CitSRVNFVCBtYXhfcGFyYWxs ZWxfd29ya2Vyc19wZXJfZ2F0aGVyOworRFJPUCBUQUJMRSBlYWdlcl9hZ2dfdDE7CitEUk9QIFRB QkxFIGVhZ2VyX2FnZ190MjsKK0RST1AgVEFCTEUgZWFnZXJfYWdnX3QzOworLS0KKy0tIFRlc3Qg ZWFnZXIgYWdncmVnYXRpb24gZm9yIHBhcnRpdGlvbndpc2Ugam9pbgorLS0KKy0tIEVuYWJsZSBw YXJ0aXRpb253aXNlIGFnZ3JlZ2F0ZSwgd2hpY2ggYnkgZGVmYXVsdCBpcyBkaXNhYmxlZC4KK1NF VCBlbmFibGVfcGFydGl0aW9ud2lzZV9hZ2dyZWdhdGUgVE8gdHJ1ZTsKKy0tIEVuYWJsZSBwYXJ0 aXRpb253aXNlIGpvaW4sIHdoaWNoIGJ5IGRlZmF1bHQgaXMgZGlzYWJsZWQuCitTRVQgZW5hYmxl X3BhcnRpdGlvbndpc2Vfam9pbiBUTyB0cnVlOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIx KHggaW50LCB5IGludCkgUEFSVElUSU9OIEJZIFJBTkdFKHgpOworQ1JFQVRFIFRBQkxFIGVhZ2Vy X2FnZ190YWIxX3AxIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMSBGT1IgVkFMVUVTIEZST00g KDApIFRPICg1KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMV9wMiBQQVJUSVRJT04gT0Yg ZWFnZXJfYWdnX3RhYjEgRk9SIFZBTFVFUyBGUk9NICg1KSBUTyAoMTApOworQ1JFQVRFIFRBQkxF IGVhZ2VyX2FnZ190YWIxX3AzIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMSBGT1IgVkFMVUVT IEZST00gKDEwKSBUTyAoMTUpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIyKHggaW50LCB5 IGludCkgUEFSVElUSU9OIEJZIFJBTkdFKHkpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIy X3AxIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMiBGT1IgVkFMVUVTIEZST00gKDApIFRPICg1 KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMl9wMiBQQVJUSVRJT04gT0YgZWFnZXJfYWdn X3RhYjIgRk9SIFZBTFVFUyBGUk9NICg1KSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2Fn Z190YWIyX3AzIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMiBGT1IgVkFMVUVTIEZST00gKDEw KSBUTyAoMTUpOworSU5TRVJUIElOVE8gZWFnZXJfYWdnX3RhYjEgU0VMRUNUIGkgJSAxNSwgaSAl IDEwIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIGk7CitJTlNFUlQgSU5UTyBlYWdlcl9h Z2dfdGFiMiBTRUxFQ1QgaSAlIDEwLCBpICUgMTUgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAw MCkgaTsKK0FOQUxZWkUgZWFnZXJfYWdnX3RhYjE7CitBTkFMWVpFIGVhZ2VyX2FnZ190YWIyOwor LS0gV2hlbiBHUk9VUCBCWSBjbGF1c2UgbWF0Y2hlczsgZnVsbCBhZ2dyZWdhdGlvbiBpcyBwZXJm b3JtZWQgZm9yIGVhY2ggcGFydGl0aW9uLgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQor U0VMRUNUIHQxLngsIHN1bSh0MS55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSwg ZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDEueCBPUkRFUiBC WSB0MS54OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBTb3J0CisgICBPdXRwdXQ6IHQxLngsIChzdW0odDEueSkpLCAoY291 bnQoKikpCisgICBTb3J0IEtleTogdDEueAorICAgLT4gIEFwcGVuZAorICAgICAgICAgLT4gIEZp bmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDEueCwgc3VtKHQx LnkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MS54CisgICAgICAgICAg ICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIChQ QVJUSUFMIHN1bSh0MS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAg ICAgSGFzaCBDb25kOiAodDIueSA9IHQxLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIyX3AxIHQyCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQyLnkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIChQQVJUSUFMIHN1bSh0MS55KSks IChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRp YWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0MS54LCBQQVJUSUFMIHN1bSh0MS55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MS54CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AxIHQx CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIHQx LnkKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBP dXRwdXQ6IHQxXzEueCwgc3VtKHQxXzEueSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91 cCBLZXk6IHQxXzEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0MV8xLngsIChQQVJUSUFMIHN1bSh0MV8xLnkpKSwgKFBBUlRJQUwg Y291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8xLnkgPSB0MV8x LngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2Fn Z190YWIyX3AyIHQyXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS55 CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0MV8xLngsIChQQVJUSUFMIHN1bSh0MV8xLnkpKSwgKFBBUlRJQUwgY291bnQo KikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRl CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueCwgUEFSVElB TCBzdW0odDFfMS55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR3JvdXAgS2V5OiB0MV8xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDIgdDFfMQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIHQxXzEueQor ICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1 dDogdDFfMi54LCBzdW0odDFfMi55KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtl eTogdDFfMi54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQxXzIueCwgKFBBUlRJQUwgc3VtKHQxXzIueSkpLCAoUEFSVElBTCBjb3Vu dCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzIueSA9IHQxXzIueCkK KyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3Rh YjJfcDMgdDJfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLnkKKyAg ICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQxXzIueCwgKFBBUlRJQUwgc3VtKHQxXzIueSkpLCAoUEFSVElBTCBjb3VudCgqKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54LCBQQVJUSUFMIHN1 bSh0MV8yLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHcm91cCBLZXk6IHQxXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMyB0MV8yCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgdDFfMi55CisoNDkg cm93cykKKworU0VMRUNUIHQxLngsIHN1bSh0MS55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2df dGFiMSB0MSwgZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDEu eCBPUkRFUiBCWSB0MS54OworIHggIHwgIHN1bSAgfCBjb3VudCAKKy0tLS0rLS0tLS0tLSstLS0t LS0tCisgIDAgfCAxMDg5MCB8ICA0MzU2CisgIDEgfCAxNTU0NCB8ICA0NDg5CisgIDIgfCAyMDAz MyB8ICA0NDg5CisgIDMgfCAyNDUyMiB8ICA0NDg5CisgIDQgfCAyOTAxMSB8ICA0NDg5CisgIDUg fCAxMTM5MCB8ICA0NDg5CisgIDYgfCAxNTg3OSB8ICA0NDg5CisgIDcgfCAyMDM2OCB8ICA0NDg5 CisgIDggfCAyNDg1NyB8ICA0NDg5CisgIDkgfCAyOTM0NiB8ICA0NDg5CisgMTAgfCAxMTA1NSB8 ICA0NDg5CisgMTEgfCAxNTI0NiB8ICA0MzU2CisgMTIgfCAxOTYwMiB8ICA0MzU2CisgMTMgfCAy Mzk1OCB8ICA0MzU2CisgMTQgfCAyODMxNCB8ICA0MzU2CisoMTUgcm93cykKKworLS0gR1JPVVAg QlkgaGF2aW5nIG90aGVyIG1hdGNoaW5nIGtleQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZG KQorU0VMRUNUIHQyLnksIHN1bSh0MS55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0 MSwgZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDIueSBPUkRF UiBCWSB0Mi55OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBTb3J0CisgICBPdXRwdXQ6IHQyLnksIChzdW0odDEueSkpLCAo Y291bnQoKikpCisgICBTb3J0IEtleTogdDIueQorICAgLT4gIEFwcGVuZAorICAgICAgICAgLT4g IEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDIueSwgc3Vt KHQxLnkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Mi55CisgICAgICAg ICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnks IChQQVJUSUFMIHN1bSh0MS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAg ICAgICAgSGFzaCBDb25kOiAodDIueSA9IHQxLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAg U2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIyX3AxIHQyCisgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQyLnkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIChQQVJUSUFMIHN1bSh0MS55 KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBh cnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0MS54LCBQQVJUSUFMIHN1bSh0MS55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MS54CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3Ax IHQxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLnks IHQxLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAg ICBPdXRwdXQ6IHQyXzEueSwgc3VtKHQxXzEueSksIGNvdW50KCopCisgICAgICAgICAgICAgICBH cm91cCBLZXk6IHQyXzEueQorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLnksIChQQVJUSUFMIHN1bSh0MV8xLnkpKSwgKFBBUlRJ QUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8xLnkgPSB0 MV8xLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2Vy X2FnZ190YWIyX3AyIHQyXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJf MS55CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0MV8xLngsIChQQVJUSUFMIHN1bSh0MV8xLnkpKSwgKFBBUlRJQUwgY291 bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVn YXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueCwgUEFS VElBTCBzdW0odDFfMS55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDIgdDFfMQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLnksIHQxXzEu eAorICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91 dHB1dDogdDJfMi55LCBzdW0odDFfMi55KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3Vw IEtleTogdDJfMi55CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQyXzIueSwgKFBBUlRJQUwgc3VtKHQxXzIueSkpLCAoUEFSVElBTCBj b3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzIueSA9IHQxXzIu eCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdn X3RhYjJfcDMgdDJfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLnkK KyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQxXzIueCwgKFBBUlRJQUwgc3VtKHQxXzIueSkpLCAoUEFSVElBTCBjb3VudCgq KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54LCBQQVJUSUFM IHN1bSh0MV8yLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBHcm91cCBLZXk6IHQxXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMyB0MV8yCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueSwgdDFfMi54Ciso NDkgcm93cykKKworU0VMRUNUIHQyLnksIHN1bSh0MS55KSwgY291bnQoKikgRlJPTSBlYWdlcl9h Z2dfdGFiMSB0MSwgZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkg dDIueSBPUkRFUiBCWSB0Mi55OworIHkgIHwgIHN1bSAgfCBjb3VudCAKKy0tLS0rLS0tLS0tLSst LS0tLS0tCisgIDAgfCAxMDg5MCB8ICA0MzU2CisgIDEgfCAxNTU0NCB8ICA0NDg5CisgIDIgfCAy MDAzMyB8ICA0NDg5CisgIDMgfCAyNDUyMiB8ICA0NDg5CisgIDQgfCAyOTAxMSB8ICA0NDg5Cisg IDUgfCAxMTM5MCB8ICA0NDg5CisgIDYgfCAxNTg3OSB8ICA0NDg5CisgIDcgfCAyMDM2OCB8ICA0 NDg5CisgIDggfCAyNDg1NyB8ICA0NDg5CisgIDkgfCAyOTM0NiB8ICA0NDg5CisgMTAgfCAxMTA1 NSB8ICA0NDg5CisgMTEgfCAxNTI0NiB8ICA0MzU2CisgMTIgfCAxOTYwMiB8ICA0MzU2CisgMTMg fCAyMzk1OCB8ICA0MzU2CisgMTQgfCAyODMxNCB8ICA0MzU2CisoMTUgcm93cykKKworLS0gV2hl biBHUk9VUCBCWSBjbGF1c2UgZG9lcyBub3QgbWF0Y2g7IHBhcnRpYWwgYWdncmVnYXRpb24gaXMg cGVyZm9ybWVkIGZvciBlYWNoIHBhcnRpdGlvbi4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9G RikKK1NFTEVDVCB0Mi54LCBzdW0odDEueCksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYjEg dDEsIGVhZ2VyX2FnZ190YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQyLnggSEFW SU5HIGF2Zyh0MS54KSA+IDUgT1JERVIgQlkgdDIueDsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29ydAorICAgT3V0cHV0OiB0Mi54LCAoc3VtKHQx LngpKSwgKGNvdW50KCopKQorICAgU29ydCBLZXk6IHQyLngKKyAgIC0+ICBGaW5hbGl6ZSBIYXNo QWdncmVnYXRlCisgICAgICAgICBPdXRwdXQ6IHQyLngsIHN1bSh0MS54KSwgY291bnQoKikKKyAg ICAgICAgIEdyb3VwIEtleTogdDIueAorICAgICAgICAgRmlsdGVyOiAoYXZnKHQxLngpID4gJzUn OjpudW1lcmljKQorICAgICAgICAgLT4gIEFwcGVuZAorICAgICAgICAgICAgICAgLT4gIEhhc2gg Sm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54LCAoUEFSVElBTCBzdW0odDEu eCkpLCAoUEFSVElBTCBjb3VudCgqKSksIChQQVJUSUFMIGF2Zyh0MS54KSkKKyAgICAgICAgICAg ICAgICAgICAgIEhhc2ggQ29uZDogKHQyLnkgPSB0MS54KQorICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMl9wMSB0MgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54LCB0Mi55CisgICAgICAgICAgICAgICAgICAgICAt PiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCAoUEFSVElB TCBzdW0odDEueCkpLCAoUEFSVElBTCBjb3VudCgqKSksIChQQVJUSUFMIGF2Zyh0MS54KSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueCwgUEFSVElBTCBzdW0odDEu eCksIFBBUlRJQUwgY291bnQoKiksIFBBUlRJQUwgYXZnKHQxLngpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxLngKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDEgdDEKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueAorICAgICAg ICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8x LngsIChQQVJUSUFMIHN1bSh0MV8xLngpKSwgKFBBUlRJQUwgY291bnQoKikpLCAoUEFSVElBTCBh dmcodDFfMS54KSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzEueSA9IHQx XzEueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJf YWdnX3RhYjJfcDIgdDJfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8x LngsIHQyXzEueQorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDFfMS54LCAoUEFSVElBTCBzdW0odDFfMS54KSksIChQQVJU SUFMIGNvdW50KCopKSwgKFBBUlRJQUwgYXZnKHQxXzEueCkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQxXzEueCwgUEFSVElBTCBzdW0odDFfMS54KSwgUEFSVElBTCBj b3VudCgqKSwgUEFSVElBTCBhdmcodDFfMS54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR3JvdXAgS2V5OiB0MV8xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDIgdDFfMQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngKKyAgICAgICAgICAg ICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi54LCAo UEFSVElBTCBzdW0odDFfMi54KSksIChQQVJUSUFMIGNvdW50KCopKSwgKFBBUlRJQUwgYXZnKHQx XzIueCkpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8yLnkgPSB0MV8yLngp CisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190 YWIyX3AzIHQyXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi54LCB0 Ml8yLnkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQxXzIueCwgKFBBUlRJQUwgc3VtKHQxXzIueCkpLCAoUEFSVElBTCBj b3VudCgqKSksIChQQVJUSUFMIGF2Zyh0MV8yLngpKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0MV8yLngsIFBBUlRJQUwgc3VtKHQxXzIueCksIFBBUlRJQUwgY291bnQo KiksIFBBUlRJQUwgYXZnKHQxXzIueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEdyb3VwIEtleTogdDFfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg U2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AzIHQxXzIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54CisoNDQgcm93cykKKworU0VM RUNUIHQyLngsIHN1bSh0MS54KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSwgZWFn ZXJfYWdnX3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDIueCBIQVZJTkcgYXZn KHQxLngpID4gNSBPUkRFUiBCWSB0Mi54OworIHggfCAgc3VtICB8IGNvdW50IAorLS0tKy0tLS0t LS0rLS0tLS0tLQorIDAgfCAzMzgzNSB8ICA2NjY3CisgMSB8IDM5NTAyIHwgIDY2NjcKKyAyIHwg NDYxNjkgfCAgNjY2NworIDMgfCA1MjgzNiB8ICA2NjY3CisgNCB8IDU5NTAzIHwgIDY2NjcKKyA1 IHwgMzM1MDAgfCAgNjY2NworIDYgfCAzOTgzNyB8ICA2NjY3CisgNyB8IDQ2NTA0IHwgIDY2NjcK KyA4IHwgNTMxNzEgfCAgNjY2NworIDkgfCA1OTgzOCB8ICA2NjY3CisoMTAgcm93cykKKworLS0g Q2hlY2sgd2l0aCBlYWdlciBhZ2dyZWdhdGlvbiBvdmVyIGpvaW4gcmVsCistLSBmdWxsIGFnZ3Jl Z2F0aW9uCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEueCwgc3VtKHQy LnkgKyB0My55KSBGUk9NIGVhZ2VyX2FnZ190YWIxIHQxIEpPSU4gZWFnZXJfYWdnX3RhYjEgdDIg T04gdDEueCA9IHQyLnggSk9JTiBlYWdlcl9hZ2dfdGFiMSB0MyBPTiB0Mi54ID0gdDMueCBHUk9V UCBCWSB0MS54IE9SREVSIEJZIHQxLng7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29ydAorICAgT3V0cHV0 OiB0MS54LCAoc3VtKCh0Mi55ICsgdDMueSkpKQorICAgU29ydCBLZXk6IHQxLngKKyAgIC0+ICBB cHBlbmQKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAg ICBPdXRwdXQ6IHQxLngsIHN1bSgodDIueSArIHQzLnkpKQorICAgICAgICAgICAgICAgR3JvdXAg S2V5OiB0MS54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQxLngsIChQQVJUSUFMIHN1bSgodDIueSArIHQzLnkpKSkKKyAgICAgICAg ICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLnggPSB0Mi54KQorICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMSB0MQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54CisgICAgICAgICAgICAgICAgICAgICAtPiAg SGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54LCB0My54LCAoUEFS VElBTCBzdW0oKHQyLnkgKyB0My55KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg UGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQyLngsIHQzLngsIFBBUlRJQUwgc3VtKCh0Mi55ICsgdDMueSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyLngKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDIueSwgdDIueCwgdDMueSwgdDMueAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDIueCA9IHQzLngpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGlj LmVhZ2VyX2FnZ190YWIxX3AxIHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQyLnksIHQyLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQzLnksIHQzLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFf cDEgdDMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDMueSwgdDMueAorICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUK KyAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54LCBzdW0oKHQyXzEueSArIHQzXzEueSkpCisg ICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzEueAorICAgICAgICAgICAgICAgLT4gIEhhc2gg Sm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIChQQVJUSUFMIHN1bSgo dDJfMS55ICsgdDNfMS55KSkpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MV8x LnggPSB0Ml8xLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGlj LmVhZ2VyX2FnZ190YWIxX3AyIHQxXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDFfMS54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLngsIHQzXzEueCwgKFBBUlRJQUwgc3VtKCh0Ml8xLnkg KyB0M18xLnkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hB Z2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS54 LCB0M18xLngsIFBBUlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8xLngKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDJfMS55LCB0Ml8xLngsIHQzXzEueSwgdDNfMS54CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8xLnggPSB0M18x LngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AyIHQyXzEKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS55LCB0Ml8xLngKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzEueSwgdDNfMS54CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVi bGljLmVhZ2VyX2FnZ190YWIxX3AyIHQzXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMS55LCB0M18xLngKKyAgICAgICAgIC0+ ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwg c3VtKCh0Ml8yLnkgKyB0M18yLnkpKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8yLngK KyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDFfMi54LCAoUEFSVElBTCBzdW0oKHQyXzIueSArIHQzXzIueSkpKQorICAgICAgICAgICAg ICAgICAgICAgSGFzaCBDb25kOiAodDFfMi54ID0gdDJfMi54KQorICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMyB0MV8yCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueAorICAgICAgICAgICAgICAgICAgICAg LT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi54LCB0M18y LngsIChQQVJUSUFMIHN1bSgodDJfMi55ICsgdDNfMi55KSkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQyXzIueCwgdDNfMi54LCBQQVJUSUFMIHN1bSgodDJfMi55ICsg dDNfMi55KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJf Mi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueSwgdDJfMi54 LCB0M18yLnksIHQzXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg SGFzaCBDb25kOiAodDJfMi54ID0gdDNfMi54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMyB0Ml8y CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQy XzIueSwgdDJfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg SGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0M18yLnksIHQzXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMyB0M18yCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQz XzIueSwgdDNfMi54CisoNzAgcm93cykKKworU0VMRUNUIHQxLngsIHN1bSh0Mi55ICsgdDMueSkg RlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSBKT0lOIGVhZ2VyX2FnZ190YWIxIHQyIE9OIHQxLnggPSB0 Mi54IEpPSU4gZWFnZXJfYWdnX3RhYjEgdDMgT04gdDIueCA9IHQzLnggR1JPVVAgQlkgdDEueCBP UkRFUiBCWSB0MS54OworIHggIHwgICBzdW0gICAKKy0tLS0rLS0tLS0tLS0tCisgIDAgfCAxNDM3 NDgwCisgIDEgfCAyMDgyODk2CisgIDIgfCAyNjg0NDIyCisgIDMgfCAzMjg1OTQ4CisgIDQgfCAz ODg3NDc0CisgIDUgfCAxNTI2MjYwCisgIDYgfCAyMTI3Nzg2CisgIDcgfCAyNzI5MzEyCisgIDgg fCAzMzMwODM4CisgIDkgfCAzOTMyMzY0CisgMTAgfCAxNDgxMzcwCisgMTEgfCAyMDEyNDcyCisg MTIgfCAyNTg3NDY0CisgMTMgfCAzMTYyNDU2CisgMTQgfCAzNzM3NDQ4CisoMTUgcm93cykKKwor LS0gcGFydGlhbCBhZ2dyZWdhdGlvbgorU0VUIGVuYWJsZV9oYXNoYWdnIFRPIG9mZjsKK1NFVCBt YXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyIFRPIDA7CitFWFBMQUlOIChWRVJCT1NFLCBD T1NUUyBPRkYpCitTRUxFQ1QgdDMueSwgc3VtKHQyLnkgKyB0My55KSBGUk9NIGVhZ2VyX2FnZ190 YWIxIHQxIEpPSU4gZWFnZXJfYWdnX3RhYjEgdDIgT04gdDEueCA9IHQyLnggSk9JTiBlYWdlcl9h Z2dfdGFiMSB0MyBPTiB0Mi54ID0gdDMueCBHUk9VUCBCWSB0My55IE9SREVSIEJZIHQzLnk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgRmluYWxpemUgR3JvdXBBZ2dyZWdhdGUKKyAgIE91dHB1dDogdDMueSwg c3VtKCh0Mi55ICsgdDMueSkpCisgICBHcm91cCBLZXk6IHQzLnkKKyAgIC0+ICBTb3J0CisgICAg ICAgICBPdXRwdXQ6IHQzLnksIChQQVJUSUFMIHN1bSgodDIueSArIHQzLnkpKSkKKyAgICAgICAg IFNvcnQgS2V5OiB0My55CisgICAgICAgICAtPiAgQXBwZW5kCisgICAgICAgICAgICAgICAtPiAg SGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzLnksIChQQVJUSUFMIHN1 bSgodDIueSArIHQzLnkpKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyLngg PSB0MS54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgR3JvdXBBZ2dyZWdhdGUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIueCwgdDMueSwgdDMueCwgUEFS VElBTCBzdW0oKHQyLnkgKyB0My55KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3Vw IEtleTogdDIueCwgdDMueSwgdDMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIElu Y3JlbWVudGFsIFNvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDIueSwgdDIueCwgdDMueSwgdDMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg U29ydCBLZXk6IHQyLngsIHQzLnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBy ZXNvcnRlZCBLZXk6IHQyLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBN ZXJnZSBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQyLnksIHQyLngsIHQzLnksIHQzLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE1lcmdlIENvbmQ6ICh0Mi54ID0gdDMueCkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnksIHQyLngKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0Mi54CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2Fn Z190YWIxX3AxIHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQyLnksIHQyLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQzLnksIHQzLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0My54CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIx X3AxIHQzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQzLnksIHQzLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDEgdDEKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueAorICAgICAgICAgICAgICAg LT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18xLnksIChQQVJU SUFMIHN1bSgodDJfMS55ICsgdDNfMS55KSkpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENv bmQ6ICh0Ml8xLnggPSB0MV8xLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBH cm91cEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLngs IHQzXzEueSwgdDNfMS54LCBQQVJUSUFMIHN1bSgodDJfMS55ICsgdDNfMS55KSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfMS54LCB0M18xLnksIHQzXzEueAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEluY3JlbWVudGFsIFNvcnQKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS55LCB0Ml8xLngsIHQzXzEueSwgdDNf MS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogdDJfMS54LCB0 M18xLnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZXNvcnRlZCBLZXk6IHQy XzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIE1lcmdlIEpvaW4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS55LCB0Ml8x LngsIHQzXzEueSwgdDNfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBNZXJnZSBDb25kOiAodDJfMS54ID0gdDNfMS54KQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDJfMS55LCB0Ml8xLngKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0Ml8xLngKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFn ZXJfYWdnX3RhYjFfcDIgdDJfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLnksIHQyXzEueAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMS55LCB0M18xLngKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0M18xLngKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJs aWMuZWFnZXJfYWdnX3RhYjFfcDIgdDNfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18xLnksIHQzXzEueAorICAgICAgICAgICAg ICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFf MS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVh Z2VyX2FnZ190YWIxX3AyIHQxXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDFfMS54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQzXzIueSwgKFBBUlRJQUwgc3VtKCh0Ml8yLnkgKyB0M18yLnkpKSkK KyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzIueCA9IHQxXzIueCkKKyAgICAg ICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEdyb3VwQWdncmVnYXRlCisgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueCwgdDNfMi55LCB0M18yLngsIFBBUlRJQUwgc3Vt KCh0Ml8yLnkgKyB0M18yLnkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5 OiB0Ml8yLngsIHQzXzIueSwgdDNfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg SW5jcmVtZW50YWwgU29ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0Ml8yLnksIHQyXzIueCwgdDNfMi55LCB0M18yLngKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFNvcnQgS2V5OiB0Ml8yLngsIHQzXzIueQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHJlc29ydGVkIEtleTogdDJfMi54CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgTWVyZ2UgSm9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0Ml8yLnksIHQyXzIueCwgdDNfMi55LCB0M18yLngKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lcmdlIENvbmQ6ICh0Ml8yLnggPSB0M18y LngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU29ydAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLnks IHQyXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29y dCBLZXk6IHQyXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMyB0Ml8yCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIu eSwgdDJfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU29y dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 M18yLnksIHQzXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgU29ydCBLZXk6IHQzXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMyB0M18yCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQzXzIueSwgdDNfMi54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDMgdDFfMgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngKKyg4OCByb3dzKQorCitT RUxFQ1QgdDMueSwgc3VtKHQyLnkgKyB0My55KSBGUk9NIGVhZ2VyX2FnZ190YWIxIHQxIEpPSU4g ZWFnZXJfYWdnX3RhYjEgdDIgT04gdDEueCA9IHQyLnggSk9JTiBlYWdlcl9hZ2dfdGFiMSB0MyBP TiB0Mi54ID0gdDMueCBHUk9VUCBCWSB0My55IE9SREVSIEJZIHQzLnk7CisgeSB8ICAgc3VtICAg CistLS0rLS0tLS0tLS0tCisgMCB8IDExMTExMTAKKyAxIHwgMjAwMDEzMgorIDIgfCAyODg5MTU0 CisgMyB8IDM3NzgxNzYKKyA0IHwgNDY2NzE5OAorIDUgfCAzMzM0MDAwCisgNiB8IDQyMjMwMjIK KyA3IHwgNTExMjA0NAorIDggfCA2MDAxMDY2CisgOSB8IDY4OTAwODgKKygxMCByb3dzKQorCitS RVNFVCBlbmFibGVfaGFzaGFnZzsKK1JFU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRo ZXI7CitEUk9QIFRBQkxFIGVhZ2VyX2FnZ190YWIxOworRFJPUCBUQUJMRSBlYWdlcl9hZ2dfdGFi MjsKKy0tCistLSBUZXN0IHdpdGggbXVsdGktbGV2ZWwgcGFydGl0aW9uaW5nIHNjaGVtZQorLS0K K0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sKHggaW50LCB5IGludCkgUEFSVElUSU9OIEJZ IFJBTkdFKHgpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWJfbWxfcDEgUEFSVElUSU9OIE9G IGVhZ2VyX2FnZ190YWJfbWwgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTApOworQ1JFQVRFIFRB QkxFIGVhZ2VyX2FnZ190YWJfbWxfcDIgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWJfbWwgRk9S IFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKSBQQVJUSVRJT04gQlkgUkFOR0UoeCk7CitDUkVBVEUg VEFCTEUgZWFnZXJfYWdnX3RhYl9tbF9wMl9zMSBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYl9t bF9wMiBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2Fn Z190YWJfbWxfcDJfczIgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWJfbWxfcDIgRk9SIFZBTFVF UyBGUk9NICgxNSkgVE8gKDIwKTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sX3AzIFBB UlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiX21sIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCkg UEFSVElUSU9OIEJZIFJBTkdFKHgpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWJfbWxfcDNf czEgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWJfbWxfcDMgRk9SIFZBTFVFUyBGUk9NICgyMCkg VE8gKDI1KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sX3AzX3MyIFBBUlRJVElPTiBP RiBlYWdlcl9hZ2dfdGFiX21sX3AzIEZPUiBWQUxVRVMgRlJPTSAoMjUpIFRPICgzMCk7CitJTlNF UlQgSU5UTyBlYWdlcl9hZ2dfdGFiX21sIFNFTEVDVCBpICUgMzAsIGkgJSAzMCBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCAxMDAwKSBpOworQU5BTFlaRSBlYWdlcl9hZ2dfdGFiX21sOworLS0gV2hl biBHUk9VUCBCWSBjbGF1c2UgbWF0Y2hlczsgZnVsbCBhZ2dyZWdhdGlvbiBpcyBwZXJmb3JtZWQg Zm9yIGVhY2ggcGFydGl0aW9uLgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNU IHQxLngsIHN1bSh0Mi55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4g ZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0MS54ID0gdDIueCBHUk9VUCBCWSB0MS54IE9SREVSIEJZ IHQxLng7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFNvcnQKKyAgIE91dHB1dDogdDEueCwgKHN1bSh0Mi55KSksIChjb3Vu dCgqKSkKKyAgIFNvcnQgS2V5OiB0MS54CisgICAtPiAgQXBwZW5kCisgICAgICAgICAtPiAgRmlu YWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCBzdW0odDIu eSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxLngKKyAgICAgICAgICAg ICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueCwgKFBB UlRJQUwgc3VtKHQyLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAg ICBIYXNoIENvbmQ6ICh0MS54ID0gdDIueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMSB0MQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0MS54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54LCAoUEFSVElBTCBzdW0odDIueSkp LCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0 aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDIueCwgUEFSVElBTCBzdW0odDIueSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDIueAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3Ax IHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnks IHQyLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAg ICBPdXRwdXQ6IHQxXzEueCwgc3VtKHQyXzEueSksIGNvdW50KCopCisgICAgICAgICAgICAgICBH cm91cCBLZXk6IHQxXzEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIChQQVJUSUFMIHN1bSh0Ml8xLnkpKSwgKFBBUlRJ QUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MV8xLnggPSB0 Ml8xLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2Vy X2FnZ190YWJfbWxfcDJfczEgdDFfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0MV8xLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQyXzEueCwgKFBBUlRJQUwgc3VtKHQyXzEueSkpLCAoUEFSVElB TCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hB Z2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS54 LCBQQVJUSUFMIHN1bSh0Ml8xLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzEueAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3Mx IHQyXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJf MS55LCB0Ml8xLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAg ICAgICAgICBPdXRwdXQ6IHQxXzIueCwgc3VtKHQyXzIueSksIGNvdW50KCopCisgICAgICAgICAg ICAgICBHcm91cCBLZXk6IHQxXzIueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngsIChQQVJUSUFMIHN1bSh0Ml8yLnkpKSwg KFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MV8y LnggPSB0Ml8yLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGlj LmVhZ2VyX2FnZ190YWJfbWxfcDJfczIgdDFfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0MV8yLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueCwgKFBBUlRJQUwgc3VtKHQyXzIueSkpLCAo UEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFs IEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDJfMi54LCBQQVJUSUFMIHN1bSh0Ml8yLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzIueAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21s X3AyX3MyIHQyXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDJfMi55LCB0Ml8yLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisg ICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzMueCwgc3VtKHQyXzMueSksIGNvdW50KCopCisgICAg ICAgICAgICAgICBHcm91cCBLZXk6IHQxXzMueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9p bgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8zLngsIChQQVJUSUFMIHN1bSh0Ml8z LnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6 ICh0MV8zLnggPSB0Ml8zLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczEgdDFfMworICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0MV8zLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMueCwgKFBBUlRJQUwgc3VtKHQyXzMu eSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQ YXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDJfMy54LCBQQVJUSUFMIHN1bSh0Ml8zLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzMueAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2df dGFiX21sX3AzX3MxIHQyXzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDJfMy55LCB0Ml8zLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVn YXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzQueCwgc3VtKHQyXzQueSksIGNvdW50KCop CisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzQueAorICAgICAgICAgICAgICAgLT4gIEhh c2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV80LngsIChQQVJUSUFMIHN1 bSh0Ml80LnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNo IENvbmQ6ICh0MV80LnggPSB0Ml80LngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczIgdDFfNAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0MV80LngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNo CisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzQueCwgKFBBUlRJQUwgc3Vt KHQyXzQueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDJfNC54LCBQQVJUSUFMIHN1bSh0Ml80LnkpLCBQQVJUSUFMIGNvdW50KCop CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzQueAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdl cl9hZ2dfdGFiX21sX3AzX3MyIHQyXzQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDJfNC55LCB0Ml80LngKKyg3OSByb3dzKQorCitTRUxFQ1QgdDEueCwg c3VtKHQyLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9h Z2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsK KyB4ICB8ICBzdW0gIHwgY291bnQgCistLS0tKy0tLS0tLS0rLS0tLS0tLQorICAwIHwgICAgIDAg fCAgMTA4OQorICAxIHwgIDExNTYgfCAgMTE1NgorICAyIHwgIDIzMTIgfCAgMTE1NgorICAzIHwg IDM0NjggfCAgMTE1NgorICA0IHwgIDQ2MjQgfCAgMTE1NgorICA1IHwgIDU3ODAgfCAgMTE1Ngor ICA2IHwgIDY5MzYgfCAgMTE1NgorICA3IHwgIDgwOTIgfCAgMTE1NgorICA4IHwgIDkyNDggfCAg MTE1NgorICA5IHwgMTA0MDQgfCAgMTE1NgorIDEwIHwgMTE1NjAgfCAgMTE1NgorIDExIHwgMTE5 NzkgfCAgMTA4OQorIDEyIHwgMTMwNjggfCAgMTA4OQorIDEzIHwgMTQxNTcgfCAgMTA4OQorIDE0 IHwgMTUyNDYgfCAgMTA4OQorIDE1IHwgMTYzMzUgfCAgMTA4OQorIDE2IHwgMTc0MjQgfCAgMTA4 OQorIDE3IHwgMTg1MTMgfCAgMTA4OQorIDE4IHwgMTk2MDIgfCAgMTA4OQorIDE5IHwgMjA2OTEg fCAgMTA4OQorIDIwIHwgMjE3ODAgfCAgMTA4OQorIDIxIHwgMjI4NjkgfCAgMTA4OQorIDIyIHwg MjM5NTggfCAgMTA4OQorIDIzIHwgMjUwNDcgfCAgMTA4OQorIDI0IHwgMjYxMzYgfCAgMTA4OQor IDI1IHwgMjcyMjUgfCAgMTA4OQorIDI2IHwgMjgzMTQgfCAgMTA4OQorIDI3IHwgMjk0MDMgfCAg MTA4OQorIDI4IHwgMzA0OTIgfCAgMTA4OQorIDI5IHwgMzE1ODEgfCAgMTA4OQorKDMwIHJvd3Mp CisKKy0tIFdoZW4gR1JPVVAgQlkgY2xhdXNlIGRvZXMgbm90IG1hdGNoOyBwYXJ0aWFsIGFnZ3Jl Z2F0aW9uIGlzIHBlcmZvcm1lZCBmb3IgZWFjaCBwYXJ0aXRpb24uCitFWFBMQUlOIChWRVJCT1NF LCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEueSwgc3VtKHQyLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2Vy X2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEdS T1VQIEJZIHQxLnkgT1JERVIgQlkgdDEueTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29ydAorICAgT3V0cHV0OiB0MS55 LCAoc3VtKHQyLnkpKSwgKGNvdW50KCopKQorICAgU29ydCBLZXk6IHQxLnkKKyAgIC0+ICBGaW5h bGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICBPdXRwdXQ6IHQxLnksIHN1bSh0Mi55KSwgY291 bnQoKikKKyAgICAgICAgIEdyb3VwIEtleTogdDEueQorICAgICAgICAgLT4gIEFwcGVuZAorICAg ICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 MS55LCAoUEFSVElBTCBzdW0odDIueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAg ICAgICAgICAgIEhhc2ggQ29uZDogKHQxLnggPSB0Mi54KQorICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AxIHQxCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLnksIHQxLngKKyAgICAgICAgICAgICAgICAgICAg IC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLngsIChQQVJU SUFMIHN1bSh0Mi55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0Mi54LCBQQVJUSUFMIHN1bSh0Mi55KSwgUEFSVElBTCBjb3VudCgq KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Mi54CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2Vy X2FnZ190YWJfbWxfcDEgdDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDIueSwgdDIueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLnksIChQQVJUSUFMIHN1bSh0Ml8xLnkpKSwgKFBB UlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MV8xLngg PSB0Ml8xLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVh Z2VyX2FnZ190YWJfbWxfcDJfczEgdDFfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0MV8xLnksIHQxXzEueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS54LCAoUEFSVElBTCBzdW0odDJfMS55 KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBh cnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Ml8xLngsIFBBUlRJQUwgc3VtKHQyXzEueSksIFBBUlRJQUwgY291bnQoKikKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfMS54CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190 YWJfbWxfcDJfczEgdDJfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0Ml8xLnksIHQyXzEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLnksIChQQVJUSUFMIHN1bSh0Ml8yLnkpKSwg KFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MV8y LnggPSB0Ml8yLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGlj LmVhZ2VyX2FnZ190YWJfbWxfcDJfczIgdDFfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0MV8yLnksIHQxXzIueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi54LCAoUEFSVElBTCBzdW0odDJf Mi55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0Ml8yLngsIFBBUlRJQUwgc3VtKHQyXzIueSksIFBBUlRJQUwgY291bnQoKikKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfMi54CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2Fn Z190YWJfbWxfcDJfczIgdDJfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0Ml8yLnksIHQyXzIueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgor ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8zLnksIChQQVJUSUFMIHN1bSh0Ml8zLnkp KSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0 MV8zLnggPSB0Ml8zLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVi bGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczEgdDFfMworICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0MV8zLnksIHQxXzMueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMy54LCAoUEFSVElBTCBzdW0o dDJfMy55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0Ml8zLngsIFBBUlRJQUwgc3VtKHQyXzMueSksIFBBUlRJQUwgY291bnQoKikK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfMy54CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2Vy X2FnZ190YWJfbWxfcDNfczEgdDJfMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0Ml8zLnksIHQyXzMueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9p bgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV80LnksIChQQVJUSUFMIHN1bSh0Ml80 LnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6 ICh0MV80LnggPSB0Ml80LngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczIgdDFfNAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0MV80LnksIHQxXzQueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhh c2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfNC54LCAoUEFSVElBTCBz dW0odDJfNC55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0Ml80LngsIFBBUlRJQUwgc3VtKHQyXzQueSksIFBBUlRJQUwgY291bnQo KikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfNC54Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVh Z2VyX2FnZ190YWJfbWxfcDNfczIgdDJfNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0Ml80LnksIHQyXzQueAorKDY3IHJvd3MpCisKK1NFTEVDVCB0MS55 LCBzdW0odDIueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2Vy X2FnZ190YWJfbWwgdDIgT04gdDEueCA9IHQyLnggR1JPVVAgQlkgdDEueSBPUkRFUiBCWSB0MS55 OworIHkgIHwgIHN1bSAgfCBjb3VudCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tCisgIDAgfCAgICAg MCB8ICAxMDg5CisgIDEgfCAgMTE1NiB8ICAxMTU2CisgIDIgfCAgMjMxMiB8ICAxMTU2CisgIDMg fCAgMzQ2OCB8ICAxMTU2CisgIDQgfCAgNDYyNCB8ICAxMTU2CisgIDUgfCAgNTc4MCB8ICAxMTU2 CisgIDYgfCAgNjkzNiB8ICAxMTU2CisgIDcgfCAgODA5MiB8ICAxMTU2CisgIDggfCAgOTI0OCB8 ICAxMTU2CisgIDkgfCAxMDQwNCB8ICAxMTU2CisgMTAgfCAxMTU2MCB8ICAxMTU2CisgMTEgfCAx MTk3OSB8ICAxMDg5CisgMTIgfCAxMzA2OCB8ICAxMDg5CisgMTMgfCAxNDE1NyB8ICAxMDg5Cisg MTQgfCAxNTI0NiB8ICAxMDg5CisgMTUgfCAxNjMzNSB8ICAxMDg5CisgMTYgfCAxNzQyNCB8ICAx MDg5CisgMTcgfCAxODUxMyB8ICAxMDg5CisgMTggfCAxOTYwMiB8ICAxMDg5CisgMTkgfCAyMDY5 MSB8ICAxMDg5CisgMjAgfCAyMTc4MCB8ICAxMDg5CisgMjEgfCAyMjg2OSB8ICAxMDg5CisgMjIg fCAyMzk1OCB8ICAxMDg5CisgMjMgfCAyNTA0NyB8ICAxMDg5CisgMjQgfCAyNjEzNiB8ICAxMDg5 CisgMjUgfCAyNzIyNSB8ICAxMDg5CisgMjYgfCAyODMxNCB8ICAxMDg5CisgMjcgfCAyOTQwMyB8 ICAxMDg5CisgMjggfCAzMDQ5MiB8ICAxMDg5CisgMjkgfCAzMTU4MSB8ICAxMDg5CisoMzAgcm93 cykKKworLS0gQ2hlY2sgd2l0aCBlYWdlciBhZ2dyZWdhdGlvbiBvdmVyIGpvaW4gcmVsCistLSBm dWxsIGFnZ3JlZ2F0aW9uCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEu eCwgc3VtKHQyLnkgKyB0My55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpP SU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0MS54ID0gdDIueCBKT0lOIGVhZ2VyX2FnZ190YWJf bWwgdDMgb24gdDIueCA9IHQzLnggR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNvcnQKKyAgIE91dHB1dDog dDEueCwgKHN1bSgodDIueSArIHQzLnkpKSksIChjb3VudCgqKSkKKyAgIFNvcnQgS2V5OiB0MS54 CisgICAtPiAgQXBwZW5kCisgICAgICAgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAg ICAgICAgICAgICAgT3V0cHV0OiB0MS54LCBzdW0oKHQyLnkgKyB0My55KSksIGNvdW50KCopCisg ICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpv aW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueCwgKFBBUlRJQUwgc3VtKCh0Mi55 ICsgdDMueSkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNo IENvbmQ6ICh0MS54ID0gdDIueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMSB0MQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0MS54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54LCB0My54LCAoUEFSVElBTCBzdW0oKHQyLnkg KyB0My55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDIueCwgdDMueCwgUEFSVElBTCBzdW0oKHQyLnkgKyB0My55KSksIFBBUlRJ QUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTog dDIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi55LCB0Mi54LCB0 My55LCB0My54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENv bmQ6ICh0Mi54ID0gdDMueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMSB0MgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi55LCB0Mi54Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0My55LCB0My54Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDEgdDMKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDMueSwgdDMueAorICAgICAgICAg LT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54 LCBzdW0oKHQyXzEueSArIHQzXzEueSkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAg S2V5OiB0MV8xLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDFfMS54LCAoUEFSVElBTCBzdW0oKHQyXzEueSArIHQzXzEueSkpKSwg KFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MV8x LnggPSB0Ml8xLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGlj LmVhZ2VyX2FnZ190YWJfbWxfcDJfczEgdDFfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0MV8xLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueCwgdDNfMS54LCAoUEFSVElBTCBzdW0oKHQy XzEueSArIHQzXzEueSkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQyXzEueCwgdDNfMS54LCBQQVJUSUFMIHN1bSgodDJfMS55ICsg dDNfMS55KSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdyb3VwIEtleTogdDJfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQyXzEueSwgdDJfMS54LCB0M18xLnksIHQzXzEueAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMS54ID0gdDNfMS54KQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdl cl9hZ2dfdGFiX21sX3AyX3MxIHQyXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDJfMS55LCB0Ml8xLngKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzEueSwgdDNfMS54CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2Vy X2FnZ190YWJfbWxfcDJfczEgdDNfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18xLnksIHQzXzEueAorICAgICAgICAgLT4gIEZp bmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54LCBzdW0o KHQyXzIueSArIHQzXzIueSkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0 MV8yLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDFfMi54LCAoUEFSVElBTCBzdW0oKHQyXzIueSArIHQzXzIueSkpKSwgKFBBUlRJ QUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MV8yLnggPSB0 Ml8yLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2Vy X2FnZ190YWJfbWxfcDJfczIgdDFfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0MV8yLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQyXzIueCwgdDNfMi54LCAoUEFSVElBTCBzdW0oKHQyXzIueSAr IHQzXzIueSkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQyXzIueCwgdDNfMi54LCBQQVJUSUFMIHN1bSgodDJfMi55ICsgdDNfMi55 KSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdy b3VwIEtleTogdDJfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFz aCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQy XzIueSwgdDJfMi54LCB0M18yLnksIHQzXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMi54ID0gdDNfMi54KQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2df dGFiX21sX3AyX3MyIHQyXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDJfMi55LCB0Ml8yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQzXzIueSwgdDNfMi54CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190 YWJfbWxfcDJfczIgdDNfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0M18yLnksIHQzXzIueAorICAgICAgICAgLT4gIEZpbmFsaXpl IEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDFfMy54LCBzdW0oKHQyXzMu eSArIHQzXzMueSkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8zLngK KyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDFfMy54LCAoUEFSVElBTCBzdW0oKHQyXzMueSArIHQzXzMueSkpKSwgKFBBUlRJQUwgY291 bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MV8zLnggPSB0Ml8zLngp CisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190 YWJfbWxfcDNfczEgdDFfMworICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8z LngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQyXzMueCwgdDNfMy54LCAoUEFSVElBTCBzdW0oKHQyXzMueSArIHQzXzMu eSkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg UGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQyXzMueCwgdDNfMy54LCBQQVJUSUFMIHN1bSgodDJfMy55ICsgdDNfMy55KSksIFBB UlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtl eTogdDJfMy54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2lu CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMueSwg dDJfMy54LCB0M18zLnksIHQzXzMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgSGFzaCBDb25kOiAodDJfMy54ID0gdDNfMy54KQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21s X3AzX3MxIHQyXzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDJfMy55LCB0Ml8zLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQzXzMueSwgdDNfMy54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxf cDNfczEgdDNfMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0M18zLnksIHQzXzMueAorICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hB Z2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDFfNC54LCBzdW0oKHQyXzQueSArIHQz XzQueSkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV80LngKKyAgICAg ICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFf NC54LCAoUEFSVElBTCBzdW0oKHQyXzQueSArIHQzXzQueSkpKSwgKFBBUlRJQUwgY291bnQoKikp CisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MV80LnggPSB0Ml80LngpCisgICAg ICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxf cDNfczIgdDFfNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV80LngKKyAg ICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQyXzQueCwgdDNfNC54LCAoUEFSVElBTCBzdW0oKHQyXzQueSArIHQzXzQueSkpKSwg KFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlh bCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQyXzQueCwgdDNfNC54LCBQQVJUSUFMIHN1bSgodDJfNC55ICsgdDNfNC55KSksIFBBUlRJQUwg Y291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJf NC54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzQueSwgdDJfNC54 LCB0M180LnksIHQzXzQueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg SGFzaCBDb25kOiAodDJfNC54ID0gdDNfNC54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AzX3My IHQyXzQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDJfNC55LCB0Ml80LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQzXzQueSwgdDNfNC54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczIg dDNfNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0M180LnksIHQzXzQueAorKDExNCByb3dzKQorCitTRUxFQ1QgdDEueCwgc3VtKHQy LnkgKyB0My55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJf YWdnX3RhYl9tbCB0MiBPTiB0MS54ID0gdDIueCBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDMgb24g dDIueCA9IHQzLnggR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworIHggIHwgICBzdW0gICB8 IGNvdW50IAorLS0tLSstLS0tLS0tLS0rLS0tLS0tLQorICAwIHwgICAgICAgMCB8IDM1OTM3Cisg IDEgfCAgIDc4NjA4IHwgMzkzMDQKKyAgMiB8ICAxNTcyMTYgfCAzOTMwNAorICAzIHwgIDIzNTgy NCB8IDM5MzA0CisgIDQgfCAgMzE0NDMyIHwgMzkzMDQKKyAgNSB8ICAzOTMwNDAgfCAzOTMwNAor ICA2IHwgIDQ3MTY0OCB8IDM5MzA0CisgIDcgfCAgNTUwMjU2IHwgMzkzMDQKKyAgOCB8ICA2Mjg4 NjQgfCAzOTMwNAorICA5IHwgIDcwNzQ3MiB8IDM5MzA0CisgMTAgfCAgNzg2MDgwIHwgMzkzMDQK KyAxMSB8ICA3OTA2MTQgfCAzNTkzNworIDEyIHwgIDg2MjQ4OCB8IDM1OTM3CisgMTMgfCAgOTM0 MzYyIHwgMzU5MzcKKyAxNCB8IDEwMDYyMzYgfCAzNTkzNworIDE1IHwgMTA3ODExMCB8IDM1OTM3 CisgMTYgfCAxMTQ5OTg0IHwgMzU5MzcKKyAxNyB8IDEyMjE4NTggfCAzNTkzNworIDE4IHwgMTI5 MzczMiB8IDM1OTM3CisgMTkgfCAxMzY1NjA2IHwgMzU5MzcKKyAyMCB8IDE0Mzc0ODAgfCAzNTkz NworIDIxIHwgMTUwOTM1NCB8IDM1OTM3CisgMjIgfCAxNTgxMjI4IHwgMzU5MzcKKyAyMyB8IDE2 NTMxMDIgfCAzNTkzNworIDI0IHwgMTcyNDk3NiB8IDM1OTM3CisgMjUgfCAxNzk2ODUwIHwgMzU5 MzcKKyAyNiB8IDE4Njg3MjQgfCAzNTkzNworIDI3IHwgMTk0MDU5OCB8IDM1OTM3CisgMjggfCAy MDEyNDcyIHwgMzU5MzcKKyAyOSB8IDIwODQzNDYgfCAzNTkzNworKDMwIHJvd3MpCisKKy0tIHBh cnRpYWwgYWdncmVnYXRpb24KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0 My55LCBzdW0odDIueSArIHQzLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEg Sk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFnZXJfYWdnX3Rh Yl9tbCB0MyBvbiB0Mi54ID0gdDMueCBHUk9VUCBCWSB0My55IE9SREVSIEJZIHQzLnk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFNvcnQKKyAgIE91dHB1dDogdDMueSwgKHN1bSgodDIueSArIHQzLnkpKSksIChjb3VudCgqKSkK KyAgIFNvcnQgS2V5OiB0My55CisgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAg ICAgT3V0cHV0OiB0My55LCBzdW0oKHQyLnkgKyB0My55KSksIGNvdW50KCopCisgICAgICAgICBH cm91cCBLZXk6IHQzLnkKKyAgICAgICAgIC0+ICBBcHBlbmQKKyAgICAgICAgICAgICAgIC0+ICBI YXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDMueSwgKFBBUlRJQUwgc3Vt KCh0Mi55ICsgdDMueSkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAg ICBIYXNoIENvbmQ6ICh0MS54ID0gdDIueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMSB0MQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0MS54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54LCB0My55LCB0My54LCAoUEFSVElB TCBzdW0oKHQyLnkgKyB0My55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDIueCwgdDMueSwgdDMueCwgUEFSVElBTCBzdW0oKHQy LnkgKyB0My55KSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdyb3VwIEtleTogdDIueCwgdDMueSwgdDMueAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0Mi55LCB0Mi54LCB0My55LCB0My54CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Mi54ID0gdDMueCkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFn ZXJfYWdnX3RhYl9tbF9wMSB0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0Mi55LCB0Mi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0My55LCB0My54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxf cDEgdDMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDMueSwgdDMueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0M18xLnksIChQQVJUSUFMIHN1bSgodDJfMS55ICsgdDNf MS55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29u ZDogKHQxXzEueCA9IHQyXzEueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMSB0MV8xCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQxXzEueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS54LCB0M18xLnksIHQzXzEueCwg KFBBUlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLngsIHQzXzEueSwgdDNfMS54 LCBQQVJUSUFMIHN1bSgodDJfMS55ICsgdDNfMS55KSksIFBBUlRJQUwgY291bnQoKikKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfMS54LCB0M18xLnksIHQz XzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLnksIHQyXzEu eCwgdDNfMS55LCB0M18xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEhhc2ggQ29uZDogKHQyXzEueCA9IHQzXzEueCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9z MSB0Ml8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQyXzEueSwgdDJfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0M18xLnksIHQzXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3Mx IHQzXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDNfMS55LCB0M18xLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMi55LCAoUEFSVElBTCBzdW0oKHQyXzIueSAr IHQzXzIueSkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNo IENvbmQ6ICh0MV8yLnggPSB0Ml8yLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDJfczIgdDFfMgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNo CisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueCwgdDNfMi55LCB0M18y LngsIChQQVJUSUFMIHN1bSgodDJfMi55ICsgdDNfMi55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi54LCB0M18yLnksIHQz XzIueCwgUEFSVElBTCBzdW0oKHQyXzIueSArIHQzXzIueSkpLCBQQVJUSUFMIGNvdW50KCopCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzIueCwgdDNfMi55 LCB0M18yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi55LCB0 Ml8yLngsIHQzXzIueSwgdDNfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBIYXNoIENvbmQ6ICh0Ml8yLnggPSB0M18yLngpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxf cDJfczIgdDJfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0Ml8yLnksIHQyXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDNfMi55LCB0M18yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9w Ml9zMiB0M18yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQzXzIueSwgdDNfMi54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2lu CisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzMueSwgKFBBUlRJQUwgc3VtKCh0Ml8z LnkgKyB0M18zLnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAg SGFzaCBDb25kOiAodDFfMy54ID0gdDJfMy54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AzX3MxIHQxXzMKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMy54CisgICAgICAgICAgICAgICAgICAgICAtPiAg SGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLngsIHQzXzMueSwg dDNfMy54LCAoUEFSVElBTCBzdW0oKHQyXzMueSArIHQzXzMueSkpKSwgKFBBUlRJQUwgY291bnQo KikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRl CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMueCwgdDNfMy55 LCB0M18zLngsIFBBUlRJQUwgc3VtKCh0Ml8zLnkgKyB0M18zLnkpKSwgUEFSVElBTCBjb3VudCgq KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8zLngsIHQz XzMueSwgdDNfMy54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaCBK b2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMu eSwgdDJfMy54LCB0M18zLnksIHQzXzMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSGFzaCBDb25kOiAodDJfMy54ID0gdDNfMy54KQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFi X21sX3AzX3MxIHQyXzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDJfMy55LCB0Ml8zLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQzXzMueSwgdDNfMy54CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJf bWxfcDNfczEgdDNfMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0M18zLnksIHQzXzMueAorICAgICAgICAgICAgICAgLT4gIEhhc2gg Sm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M180LnksIChQQVJUSUFMIHN1bSgo dDJfNC55ICsgdDNfNC55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAg ICAgIEhhc2ggQ29uZDogKHQxXzQueCA9IHQyXzQueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMiB0MV80CisgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzQueAorICAgICAgICAgICAgICAgICAgICAg LT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfNC54LCB0M180 LnksIHQzXzQueCwgKFBBUlRJQUwgc3VtKCh0Ml80LnkgKyB0M180LnkpKSksIChQQVJUSUFMIGNv dW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3Jl Z2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml80LngsIHQz XzQueSwgdDNfNC54LCBQQVJUSUFMIHN1bSgodDJfNC55ICsgdDNfNC55KSksIFBBUlRJQUwgY291 bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfNC54 LCB0M180LnksIHQzXzQueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhh c2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 Ml80LnksIHQyXzQueCwgdDNfNC55LCB0M180LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzQueCA9IHQzXzQueCkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdn X3RhYl9tbF9wM19zMiB0Ml80CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQyXzQueSwgdDJfNC54CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0M180LnksIHQzXzQueAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2df dGFiX21sX3AzX3MyIHQzXzQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDNfNC55LCB0M180LngKKygxMDIgcm93cykKKworU0VMRUNU IHQzLnksIHN1bSh0Mi55ICsgdDMueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0 MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9IHQyLnggSk9JTiBlYWdlcl9hZ2df dGFiX21sIHQzIG9uIHQyLnggPSB0My54IEdST1VQIEJZIHQzLnkgT1JERVIgQlkgdDMueTsKKyB5 ICB8ICAgc3VtICAgfCBjb3VudCAKKy0tLS0rLS0tLS0tLS0tKy0tLS0tLS0KKyAgMCB8ICAgICAg IDAgfCAzNTkzNworICAxIHwgICA3ODYwOCB8IDM5MzA0CisgIDIgfCAgMTU3MjE2IHwgMzkzMDQK KyAgMyB8ICAyMzU4MjQgfCAzOTMwNAorICA0IHwgIDMxNDQzMiB8IDM5MzA0CisgIDUgfCAgMzkz MDQwIHwgMzkzMDQKKyAgNiB8ICA0NzE2NDggfCAzOTMwNAorICA3IHwgIDU1MDI1NiB8IDM5MzA0 CisgIDggfCAgNjI4ODY0IHwgMzkzMDQKKyAgOSB8ICA3MDc0NzIgfCAzOTMwNAorIDEwIHwgIDc4 NjA4MCB8IDM5MzA0CisgMTEgfCAgNzkwNjE0IHwgMzU5MzcKKyAxMiB8ICA4NjI0ODggfCAzNTkz NworIDEzIHwgIDkzNDM2MiB8IDM1OTM3CisgMTQgfCAxMDA2MjM2IHwgMzU5MzcKKyAxNSB8IDEw NzgxMTAgfCAzNTkzNworIDE2IHwgMTE0OTk4NCB8IDM1OTM3CisgMTcgfCAxMjIxODU4IHwgMzU5 MzcKKyAxOCB8IDEyOTM3MzIgfCAzNTkzNworIDE5IHwgMTM2NTYwNiB8IDM1OTM3CisgMjAgfCAx NDM3NDgwIHwgMzU5MzcKKyAyMSB8IDE1MDkzNTQgfCAzNTkzNworIDIyIHwgMTU4MTIyOCB8IDM1 OTM3CisgMjMgfCAxNjUzMTAyIHwgMzU5MzcKKyAyNCB8IDE3MjQ5NzYgfCAzNTkzNworIDI1IHwg MTc5Njg1MCB8IDM1OTM3CisgMjYgfCAxODY4NzI0IHwgMzU5MzcKKyAyNyB8IDE5NDA1OTggfCAz NTkzNworIDI4IHwgMjAxMjQ3MiB8IDM1OTM3CisgMjkgfCAyMDg0MzQ2IHwgMzU5MzcKKygzMCBy b3dzKQorCitEUk9QIFRBQkxFIGVhZ2VyX2FnZ190YWJfbWw7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvc3lzdmlld3Mub3V0CmluZGV4IDgzMjI4Y2ZjYTI5Li4zYjM3ZmFmYTY1YiAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQKQEAgLTE1MSw2ICsxNTEsNyBAQCBzZWxlY3Qg bmFtZSwgc2V0dGluZyBmcm9tIHBnX3NldHRpbmdzIHdoZXJlIG5hbWUgbGlrZSAnZW5hYmxlJSc7 CiAgZW5hYmxlX2FzeW5jX2FwcGVuZCAgICAgICAgICAgIHwgb24KICBlbmFibGVfYml0bWFwc2Nh biAgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9kaXN0aW5jdF9yZW9yZGVyaW5nICAgICB8IG9u CisgZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZSAgICAgICAgIHwgb24KICBlbmFibGVfZ2F0aGVybWVy Z2UgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9ncm91cF9ieV9yZW9yZGVyaW5nICAgICB8IG9u CiAgZW5hYmxlX2hhc2hhZ2cgICAgICAgICAgICAgICAgIHwgb24KQEAgLTE3Miw3ICsxNzMsNyBA QCBzZWxlY3QgbmFtZSwgc2V0dGluZyBmcm9tIHBnX3NldHRpbmdzIHdoZXJlIG5hbWUgbGlrZSAn ZW5hYmxlJSc7CiAgZW5hYmxlX3NlcXNjYW4gICAgICAgICAgICAgICAgIHwgb24KICBlbmFibGVf c29ydCAgICAgICAgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV90aWRzY2FuICAgICAgICAgICAg ICAgICB8IG9uCi0oMjQgcm93cykKKygyNSByb3dzKQogCiAtLSBUaGVyZSBhcmUgYWx3YXlzIHdh aXQgZXZlbnQgZGVzY3JpcHRpb25zIGZvciB2YXJpb3VzIHR5cGVzLiAgSW5qZWN0aW9uUG9pbnQK IC0tIG1heSBiZSBwcmVzZW50IG9yIGFic2VudCwgZGVwZW5kaW5nIG9uIGhpc3Rvcnkgc2luY2Ug bGFzdCBwb3N0bWFzdGVyIHN0YXJ0LgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJh bGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXgg ZmJmZmM2N2FlNjAuLmY5NDUwY2RjNDc3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3Bh cmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUK QEAgLTEyMyw3ICsxMjMsNyBAQCB0ZXN0OiBwbGFuY2FjaGUgbGltaXQgcGxwZ3NxbCBjb3B5MiB0 ZW1wIGRvbWFpbiByYW5nZWZ1bmNzIHByZXBhcmUgY29udmVyc2lvbiB0cgogIyBUaGUgc3RhdHMg dGVzdCByZXNldHMgc3RhdHMsIHNvIG5vdGhpbmcgZWxzZSBuZWVkaW5nIHN0YXRzIGFjY2VzcyBj YW4gYmUgaW4KICMgdGhpcyBncm91cC4KICMgLS0tLS0tLS0tLQotdGVzdDogcGFydGl0aW9uX2pv aW4gcGFydGl0aW9uX3BydW5lIHJlbG9wdGlvbnMgaGFzaF9wYXJ0IGluZGV4aW5nIHBhcnRpdGlv bl9hZ2dyZWdhdGUgcGFydGl0aW9uX2luZm8gdHVwbGVzb3J0IGV4cGxhaW4gY29tcHJlc3Npb24g Y29tcHJlc3Npb25fbHo0IG1lbW9pemUgc3RhdHMgcHJlZGljYXRlIG51bWEKK3Rlc3Q6IHBhcnRp dGlvbl9qb2luIHBhcnRpdGlvbl9wcnVuZSByZWxvcHRpb25zIGhhc2hfcGFydCBpbmRleGluZyBw YXJ0aXRpb25fYWdncmVnYXRlIHBhcnRpdGlvbl9pbmZvIHR1cGxlc29ydCBleHBsYWluIGNvbXBy ZXNzaW9uIGNvbXByZXNzaW9uX2x6NCBtZW1vaXplIHN0YXRzIHByZWRpY2F0ZSBudW1hIGVhZ2Vy X2FnZ3JlZ2F0ZQogCiAjIGV2ZW50X3RyaWdnZXIgZGVwZW5kcyBvbiBjcmVhdGVfYW0gYW5kIGNh bm5vdCBydW4gY29uY3VycmVudGx5IHdpdGgKICMgYW55IHRlc3QgdGhhdCBydW5zIERETApkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZWFnZXJfYWdncmVnYXRlLnNxbCBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2VhZ2VyX2FnZ3JlZ2F0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjVkYTg3NDlhNmNiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvZWFnZXJfYWdncmVnYXRlLnNxbApAQCAtMCwwICsxLDE5NCBAQAorLS0K Ky0tIEVBR0VSIEFHR1JFR0FUSU9OCistLSBUZXN0IHdlIGNhbiBwdXNoIGFnZ3JlZ2F0aW9uIGRv d24gYmVsb3cgam9pbgorLS0KKworLS0gRW5hYmxlIGVhZ2VyIGFnZ3JlZ2F0aW9uLCB3aGljaCBi eSBkZWZhdWx0IGlzIGRpc2FibGVkLgorU0VUIGVuYWJsZV9lYWdlcl9hZ2dyZWdhdGUgVE8gb247 CisKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdDEgKGEgaW50LCBiIGludCwgYyBkb3VibGUgcHJl Y2lzaW9uKTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdDIgKGEgaW50LCBiIGludCwgYyBkb3Vi bGUgcHJlY2lzaW9uKTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdDMgKGEgaW50LCBiIGludCwg YyBkb3VibGUgcHJlY2lzaW9uKTsKKworSU5TRVJUIElOVE8gZWFnZXJfYWdnX3QxIFNFTEVDVCBp LCBpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApaTsKK0lOU0VSVCBJTlRPIGVhZ2Vy X2FnZ190MiBTRUxFQ1QgaSwgaSUxMCwgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKWk7 CitJTlNFUlQgSU5UTyBlYWdlcl9hZ2dfdDMgU0VMRUNUIGklMTAsIGklMTAsIGkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMTAwMClpOworCitBTkFMWVpFIGVhZ2VyX2FnZ190MTsKK0FOQUxZWkUg ZWFnZXJfYWdnX3QyOworQU5BTFlaRSBlYWdlcl9hZ2dfdDM7CisKKworLS0KKy0tIFRlc3QgZWFn ZXIgYWdncmVnYXRpb24gb3ZlciBiYXNlIHJlbAorLS0KKworLS0gUGVyZm9ybSBzY2FuIG9mIGEg dGFibGUsIGFnZ3JlZ2F0ZSB0aGUgcmVzdWx0LCBqb2luIGl0IHRvIHRoZSBvdGhlciB0YWJsZQor LS0gYW5kIGZpbmFsaXplIHRoZSBhZ2dyZWdhdGlvbi4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RT IE9GRikKK1NFTEVDVCB0MS5hLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBl YWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5h OworU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2Vy X2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisK Ky0tIFByb2R1Y2UgcmVzdWx0cyB3aXRoIHNvcnRpbmcgYWdncmVnYXRpb24KK1NFVCBlbmFibGVf aGFzaGFnZyBUTyBvZmY7CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0 MS5hLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIg T04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworU0VMRUNUIHQxLmEs IGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0 MS5iID0gdDIuYiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisKK1JFU0VUIGVuYWJsZV9o YXNoYWdnOworCisKKy0tCistLSBUZXN0IGVhZ2VyIGFnZ3JlZ2F0aW9uIG92ZXIgam9pbiByZWwK Ky0tCisKKy0tIFBlcmZvcm0gam9pbiBvZiB0YWJsZXMsIGFnZ3JlZ2F0ZSB0aGUgcmVzdWx0LCBq b2luIGl0IHRvIHRoZSBvdGhlciB0YWJsZQorLS0gYW5kIGZpbmFsaXplIHRoZSBhZ2dyZWdhdGlv bi4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS5hLCBhdmcodDIuYyAr IHQzLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIg PSB0Mi5iIEpPSU4gZWFnZXJfYWdnX3QzIHQzIE9OIHQyLmEgPSB0My5hIEdST1VQIEJZIHQxLmEg T1JERVIgQlkgdDEuYTsKK1NFTEVDVCB0MS5hLCBhdmcodDIuYyArIHQzLmMpIEZST00gZWFnZXJf YWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEpPSU4gZWFnZXJf YWdnX3QzIHQzIE9OIHQyLmEgPSB0My5hIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKwor LS0gUHJvZHVjZSByZXN1bHRzIHdpdGggc29ydGluZyBhZ2dyZWdhdGlvbgorU0VUIGVuYWJsZV9o YXNoYWdnIFRPIG9mZjsKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQx LmEsIGF2Zyh0Mi5jICsgdDMuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2df dDIgdDIgT04gdDEuYiA9IHQyLmIgSk9JTiBlYWdlcl9hZ2dfdDMgdDMgT04gdDIuYSA9IHQzLmEg R1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jICsgdDMu YykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQy LmIgSk9JTiBlYWdlcl9hZ2dfdDMgdDMgT04gdDIuYSA9IHQzLmEgR1JPVVAgQlkgdDEuYSBPUkRF UiBCWSB0MS5hOworCitSRVNFVCBlbmFibGVfaGFzaGFnZzsKKworCistLQorLS0gVGVzdCB0aGF0 IGVhZ2VyIGFnZ3JlZ2F0aW9uIHdvcmtzIGZvciBvdXRlciBqb2luCistLQorCistLSBFbnN1cmUg YWdncmVnYXRpb24gY2FuIGJlIHB1c2hlZCBkb3duIHRvIHRoZSBub24tbnVsbGFibGUgc2lkZQor RVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9N IGVhZ2VyX2FnZ190MSB0MSBSSUdIVCBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIu YiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZS T00gZWFnZXJfYWdnX3QxIHQxIFJJR0hUIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0 Mi5iIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKworLS0gRW5zdXJlIGFnZ3JlZ2F0aW9u IGNhbm5vdCBiZSBwdXNoZWQgZG93biB0byB0aGUgbnVsbGFibGUgc2lkZQorRVhQTEFJTiAoVkVS Qk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQyLmIsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190 MSB0MSBMRUZUIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQy LmIgT1JERVIgQlkgdDIuYjsKK1NFTEVDVCB0Mi5iLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2df dDEgdDEgTEVGVCBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0 Mi5iIE9SREVSIEJZIHQyLmI7CisKKworLS0KKy0tIFRlc3QgdGhhdCBlYWdlciBhZ2dyZWdhdGlv biB3b3JrcyBmb3IgcGFyYWxsZWwgcGxhbnMKKy0tCisKK1NFVCBwYXJhbGxlbF9zZXR1cF9jb3N0 PTA7CitTRVQgcGFyYWxsZWxfdHVwbGVfY29zdD0wOworU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9z Y2FuX3NpemU9MDsKK1NFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyPTQ7CisKK0VY UExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS5hLCBhdmcodDIuYykgRlJPTSBl YWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAg QlkgdDEuYSBPUkRFUiBCWSB0MS5hOworU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2Vy X2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0 MS5hIE9SREVSIEJZIHQxLmE7CisKK1JFU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3Q7CitSRVNFVCBw YXJhbGxlbF90dXBsZV9jb3N0OworUkVTRVQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZTsK K1JFU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXI7CisKKworRFJPUCBUQUJMRSBl YWdlcl9hZ2dfdDE7CitEUk9QIFRBQkxFIGVhZ2VyX2FnZ190MjsKK0RST1AgVEFCTEUgZWFnZXJf YWdnX3QzOworCisKKy0tCistLSBUZXN0IGVhZ2VyIGFnZ3JlZ2F0aW9uIGZvciBwYXJ0aXRpb253 aXNlIGpvaW4KKy0tCisKKy0tIEVuYWJsZSBwYXJ0aXRpb253aXNlIGFnZ3JlZ2F0ZSwgd2hpY2gg YnkgZGVmYXVsdCBpcyBkaXNhYmxlZC4KK1NFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9hZ2dyZWdh dGUgVE8gdHJ1ZTsKKy0tIEVuYWJsZSBwYXJ0aXRpb253aXNlIGpvaW4sIHdoaWNoIGJ5IGRlZmF1 bHQgaXMgZGlzYWJsZWQuCitTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2Vfam9pbiBUTyB0cnVlOwor CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYjEoeCBpbnQsIHkgaW50KSBQQVJUSVRJT04gQlkg UkFOR0UoeCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYjFfcDEgUEFSVElUSU9OIE9GIGVh Z2VyX2FnZ190YWIxIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDUpOworQ1JFQVRFIFRBQkxFIGVh Z2VyX2FnZ190YWIxX3AyIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMSBGT1IgVkFMVUVTIEZS T00gKDUpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYjFfcDMgUEFSVElUSU9O IE9GIGVhZ2VyX2FnZ190YWIxIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSk7CitDUkVBVEUg VEFCTEUgZWFnZXJfYWdnX3RhYjIoeCBpbnQsIHkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoeSk7 CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYjJfcDEgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190 YWIyIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDUpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190 YWIyX3AyIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMiBGT1IgVkFMVUVTIEZST00gKDUpIFRP ICgxMCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYjJfcDMgUEFSVElUSU9OIE9GIGVhZ2Vy X2FnZ190YWIyIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSk7CitJTlNFUlQgSU5UTyBlYWdl cl9hZ2dfdGFiMSBTRUxFQ1QgaSAlIDE1LCBpICUgMTAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg MTAwMCkgaTsKK0lOU0VSVCBJTlRPIGVhZ2VyX2FnZ190YWIyIFNFTEVDVCBpICUgMTAsIGkgJSAx NSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBpOworCitBTkFMWVpFIGVhZ2VyX2FnZ190 YWIxOworQU5BTFlaRSBlYWdlcl9hZ2dfdGFiMjsKKworLS0gV2hlbiBHUk9VUCBCWSBjbGF1c2Ug bWF0Y2hlczsgZnVsbCBhZ2dyZWdhdGlvbiBpcyBwZXJmb3JtZWQgZm9yIGVhY2ggcGFydGl0aW9u LgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLngsIHN1bSh0MS55KSwg Y291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSwgZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUg dDEueCA9IHQyLnkgR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworU0VMRUNUIHQxLngsIHN1 bSh0MS55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSwgZWFnZXJfYWdnX3RhYjIg dDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworCistLSBH Uk9VUCBCWSBoYXZpbmcgb3RoZXIgbWF0Y2hpbmcga2V5CitFWFBMQUlOIChWRVJCT1NFLCBDT1NU UyBPRkYpCitTRUxFQ1QgdDIueSwgc3VtKHQxLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190 YWIxIHQxLCBlYWdlcl9hZ2dfdGFiMiB0MiBXSEVSRSB0MS54ID0gdDIueSBHUk9VUCBCWSB0Mi55 IE9SREVSIEJZIHQyLnk7CitTRUxFQ1QgdDIueSwgc3VtKHQxLnkpLCBjb3VudCgqKSBGUk9NIGVh Z2VyX2FnZ190YWIxIHQxLCBlYWdlcl9hZ2dfdGFiMiB0MiBXSEVSRSB0MS54ID0gdDIueSBHUk9V UCBCWSB0Mi55IE9SREVSIEJZIHQyLnk7CisKKy0tIFdoZW4gR1JPVVAgQlkgY2xhdXNlIGRvZXMg bm90IG1hdGNoOyBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGlzIHBlcmZvcm1lZCBmb3IgZWFjaCBwYXJ0 aXRpb24uCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDIueCwgc3VtKHQx LngpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWIxIHQxLCBlYWdlcl9hZ2dfdGFiMiB0MiBX SEVSRSB0MS54ID0gdDIueSBHUk9VUCBCWSB0Mi54IEhBVklORyBhdmcodDEueCkgPiA1IE9SREVS IEJZIHQyLng7CitTRUxFQ1QgdDIueCwgc3VtKHQxLngpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2Fn Z190YWIxIHQxLCBlYWdlcl9hZ2dfdGFiMiB0MiBXSEVSRSB0MS54ID0gdDIueSBHUk9VUCBCWSB0 Mi54IEhBVklORyBhdmcodDEueCkgPiA1IE9SREVSIEJZIHQyLng7CisKKy0tIENoZWNrIHdpdGgg ZWFnZXIgYWdncmVnYXRpb24gb3ZlciBqb2luIHJlbAorLS0gZnVsbCBhZ2dyZWdhdGlvbgorRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLngsIHN1bSh0Mi55ICsgdDMueSkg RlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSBKT0lOIGVhZ2VyX2FnZ190YWIxIHQyIE9OIHQxLnggPSB0 Mi54IEpPSU4gZWFnZXJfYWdnX3RhYjEgdDMgT04gdDIueCA9IHQzLnggR1JPVVAgQlkgdDEueCBP UkRFUiBCWSB0MS54OworU0VMRUNUIHQxLngsIHN1bSh0Mi55ICsgdDMueSkgRlJPTSBlYWdlcl9h Z2dfdGFiMSB0MSBKT0lOIGVhZ2VyX2FnZ190YWIxIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFn ZXJfYWdnX3RhYjEgdDMgT04gdDIueCA9IHQzLnggR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54 OworCistLSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uCitTRVQgZW5hYmxlX2hhc2hhZ2cgVE8gb2ZmOwor U0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgVE8gMDsKK0VYUExBSU4gKFZFUkJP U0UsIENPU1RTIE9GRikKK1NFTEVDVCB0My55LCBzdW0odDIueSArIHQzLnkpIEZST00gZWFnZXJf YWdnX3RhYjEgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiMSB0MiBPTiB0MS54ID0gdDIueCBKT0lOIGVh Z2VyX2FnZ190YWIxIHQzIE9OIHQyLnggPSB0My54IEdST1VQIEJZIHQzLnkgT1JERVIgQlkgdDMu eTsKK1NFTEVDVCB0My55LCBzdW0odDIueSArIHQzLnkpIEZST00gZWFnZXJfYWdnX3RhYjEgdDEg Sk9JTiBlYWdlcl9hZ2dfdGFiMSB0MiBPTiB0MS54ID0gdDIueCBKT0lOIGVhZ2VyX2FnZ190YWIx IHQzIE9OIHQyLnggPSB0My54IEdST1VQIEJZIHQzLnkgT1JERVIgQlkgdDMueTsKK1JFU0VUIGVu YWJsZV9oYXNoYWdnOworUkVTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlcjsKKwor RFJPUCBUQUJMRSBlYWdlcl9hZ2dfdGFiMTsKK0RST1AgVEFCTEUgZWFnZXJfYWdnX3RhYjI7CisK KworLS0KKy0tIFRlc3Qgd2l0aCBtdWx0aS1sZXZlbCBwYXJ0aXRpb25pbmcgc2NoZW1lCistLQor Q1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWJfbWwoeCBpbnQsIHkgaW50KSBQQVJUSVRJT04gQlkg UkFOR0UoeCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbF9wMSBQQVJUSVRJT04gT0Yg ZWFnZXJfYWdnX3RhYl9tbCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxMCk7CitDUkVBVEUgVEFC TEUgZWFnZXJfYWdnX3RhYl9tbF9wMiBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYl9tbCBGT1Ig VkFMVUVTIEZST00gKDEwKSBUTyAoMjApIFBBUlRJVElPTiBCWSBSQU5HRSh4KTsKK0NSRUFURSBU QUJMRSBlYWdlcl9hZ2dfdGFiX21sX3AyX3MxIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiX21s X3AyIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdn X3RhYl9tbF9wMl9zMiBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYl9tbF9wMiBGT1IgVkFMVUVT IEZST00gKDE1KSBUTyAoMjApOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWJfbWxfcDMgUEFS VElUSU9OIE9GIGVhZ2VyX2FnZ190YWJfbWwgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKSBQ QVJUSVRJT04gQlkgUkFOR0UoeCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbF9wM19z MSBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYl9tbF9wMyBGT1IgVkFMVUVTIEZST00gKDIwKSBU TyAoMjUpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWJfbWxfcDNfczIgUEFSVElUSU9OIE9G IGVhZ2VyX2FnZ190YWJfbWxfcDMgRk9SIFZBTFVFUyBGUk9NICgyNSkgVE8gKDMwKTsKK0lOU0VS VCBJTlRPIGVhZ2VyX2FnZ190YWJfbWwgU0VMRUNUIGkgJSAzMCwgaSAlIDMwIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDEwMDApIGk7CisKK0FOQUxZWkUgZWFnZXJfYWdnX3RhYl9tbDsKKworLS0g V2hlbiBHUk9VUCBCWSBjbGF1c2UgbWF0Y2hlczsgZnVsbCBhZ2dyZWdhdGlvbiBpcyBwZXJmb3Jt ZWQgZm9yIGVhY2ggcGFydGl0aW9uLgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VM RUNUIHQxLngsIHN1bSh0Mi55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpP SU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0MS54ID0gdDIueCBHUk9VUCBCWSB0MS54IE9SREVS IEJZIHQxLng7CitTRUxFQ1QgdDEueCwgc3VtKHQyLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2Fn Z190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEdST1VQ IEJZIHQxLnggT1JERVIgQlkgdDEueDsKKworLS0gV2hlbiBHUk9VUCBCWSBjbGF1c2UgZG9lcyBu b3QgbWF0Y2g7IHBhcnRpYWwgYWdncmVnYXRpb24gaXMgcGVyZm9ybWVkIGZvciBlYWNoIHBhcnRp dGlvbi4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS55LCBzdW0odDIu eSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJf bWwgdDIgT04gdDEueCA9IHQyLnggR1JPVVAgQlkgdDEueSBPUkRFUiBCWSB0MS55OworU0VMRUNU IHQxLnksIHN1bSh0Mi55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4g ZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0MS54ID0gdDIueCBHUk9VUCBCWSB0MS55IE9SREVSIEJZ IHQxLnk7CisKKy0tIENoZWNrIHdpdGggZWFnZXIgYWdncmVnYXRpb24gb3ZlciBqb2luIHJlbAor LS0gZnVsbCBhZ2dyZWdhdGlvbgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNU IHQxLngsIHN1bSh0Mi55ICsgdDMueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0 MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9IHQyLnggSk9JTiBlYWdlcl9hZ2df dGFiX21sIHQzIG9uIHQyLnggPSB0My54IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKK1NF TEVDVCB0MS54LCBzdW0odDIueSArIHQzLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJf bWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFnZXJf YWdnX3RhYl9tbCB0MyBvbiB0Mi54ID0gdDMueCBHUk9VUCBCWSB0MS54IE9SREVSIEJZIHQxLng7 CisKKy0tIHBhcnRpYWwgYWdncmVnYXRpb24KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikK K1NFTEVDVCB0My55LCBzdW0odDIueSArIHQzLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190 YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4gZWFn ZXJfYWdnX3RhYl9tbCB0MyBvbiB0Mi54ID0gdDMueCBHUk9VUCBCWSB0My55IE9SREVSIEJZIHQz Lnk7CitTRUxFQ1QgdDMueSwgc3VtKHQyLnkgKyB0My55KSwgY291bnQoKikgRlJPTSBlYWdlcl9h Z2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0MS54ID0gdDIueCBKT0lO IGVhZ2VyX2FnZ190YWJfbWwgdDMgb24gdDIueCA9IHQzLnggR1JPVVAgQlkgdDMueSBPUkRFUiBC WSB0My55OworCitEUk9QIFRBQkxFIGVhZ2VyX2FnZ190YWJfbWw7CmRpZmYgLS1naXQgYS9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0CmluZGV4IGE4NjU2NDE5Y2I2Li4zNzA1M2Q5ZDc2OSAxMDA2NDQKLS0tIGEvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKQEAgLTQyLDYgKzQyLDcgQEAgQWZ0ZXJUcmlnZ2Vyc1RhYmxlRGF0YQogQWZ0ZXJU cmlnZ2Vyc1RyYW5zRGF0YQogQWdnCiBBZ2dDbGF1c2VDb3N0cworQWdnQ2xhdXNlSW5mbwogQWdn SW5mbwogQWdnUGF0aAogQWdnU3BsaXQKQEAgLTExMTAsNiArMTExMSw3IEBAIEdyb3VwUGF0aEV4 dHJhRGF0YQogR3JvdXBSZXN1bHRQYXRoCiBHcm91cFN0YXRlCiBHcm91cFZhckluZm8KK0dyb3Vw aW5nRXhwckluZm8KIEdyb3VwaW5nRnVuYwogR3JvdXBpbmdTZXQKIEdyb3VwaW5nU2V0RGF0YQpA QCAtMjQ3MSw2ICsyNDczLDcgQEAgUmVpbmRleE9iamVjdFR5cGUKIFJlaW5kZXhQYXJhbXMKIFJl aW5kZXhTdG10CiBSZWluZGV4VHlwZQorUmVsQWdnSW5mbwogUmVsRmlsZUxvY2F0b3IKIFJlbEZp bGVMb2NhdG9yQmFja2VuZAogUmVsRmlsZU51bWJlcgotLSAKMi40My4wCgo= --000000000000022149063aa4539e--