Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vwmfC-00CqGE-0a for pgsql-hackers@arkaria.postgresql.org; Sun, 01 Mar 2026 19:41:14 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vwmf8-00E1sE-2L for pgsql-hackers@arkaria.postgresql.org; Sun, 01 Mar 2026 19:41:10 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vwmf8-00E1s6-0x for pgsql-hackers@lists.postgresql.org; Sun, 01 Mar 2026 19:41:10 +0000 Received: from mail-yx1-xb12d.google.com ([2607:f8b0:4864:20::b12d]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vwmf1-00000001uhs-0aTR for pgsql-hackers@lists.postgresql.org; Sun, 01 Mar 2026 19:41:08 +0000 Received: by mail-yx1-xb12d.google.com with SMTP id 956f58d0204a3-64ca09f2170so3725358d50.1 for ; Sun, 01 Mar 2026 11:41:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1772394062; cv=none; d=google.com; s=arc-20240605; b=OUz8nnpZnwU89ZRmYPn3zEoZowiAuPro213QW+sofkCQvBHHMae+edUoMWqgMwPkpo bc7k8W/+sBRJhPuA4Bczw3S5VCMbK/rJX6nO3KztxUU+7kil70gJsgjudWERUl0JiIvy /gQmBwtDQhUh/yZGMoDn+rNDHsn6QmJgXRwHFKiLZWRqHe0HCP4dE1RBVpNXpnq/FHiu SsS+59maLYYZN6lvHzhxKB+iqG6XcrlLxoKUg68TdFqByNZWNtmBkK1n/DeFNMxEyWGF l5xEZ1w2K/pRUbfq8rpJt1IT6yhPpnO8usdEM3QouuDbqY4ToxCEx1ZG8rwcglnEtlDA ieVg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=5AiM5mYIkIgTw/L7TSooCdB3LUyvOGerGCObCLWX/Io=; fh=dxJXJbLzq9Nah1LUdsj4QTuQ3JoDScd0wp1YHY64NXM=; b=aFPmZ/NgSjndwaf5t10MFSqLM1ClSVGO+4zeuVhzydKHZv2zNJtdW4H0rVKQO2NDeq 1DC48neLLQno/5UpRMwUPSnW+bAIHS80sNA/s7cydGkA7Zyf6w8GWe/nL26NpgCMDthh orZ9qVemJesIAvhxWMC9bd02q6pOvTK1JCfGsNb2hiUdUQ1eBafZIOc72BpaRjeaxOL9 0phe+UgGZsPVka3KQbbLF8aVEPnn+dzIqmJ/JBTH0ITKqZ37o2n2xhQgmU7j3s6ux/Bb Hhwdz2tqJTOvfFSHPvTrO7e81jJQpv+bMGeNBt5cZoSJqGnW4qP6v8AMKsGZEM6qncGf MTaw==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772394062; x=1772998862; darn=lists.postgresql.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=5AiM5mYIkIgTw/L7TSooCdB3LUyvOGerGCObCLWX/Io=; b=bS2naiTCPr2ukqHqwvFGtGVxIgfrHjecoE7Ve5ux1rmQxTmTssrCPJxpdcT4E3ZZLn tjaGToW6mNjvzCjoUtcrGcJMl/gZG04kB12jZW4l5r6+RqPZzauHeoJXHVXSfUIfzGNC CGvRKpyDY+sP26ZEvm4vO/kAQNHaBxLR9Qzxl3HuIqyp2tgP1aAODW2hW6BlXtUjLMYP k3Mu6EPBBwnzdczDu9uHA419Hu/Lu07aZ3obOfAPIU+oPmXK/PBJPXPlRg64oi9Dyx9e v7fiN53ulV0une6Rxypj6kWVxo/TCnGFGArlYrEesuqCSznkXUGRClTey+1abGRmC+SO IAZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772394062; x=1772998862; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=5AiM5mYIkIgTw/L7TSooCdB3LUyvOGerGCObCLWX/Io=; b=TtGIlh5pGFb1GYsEjrvadbHVbrDm4g1CtX068xLL13h5QzKhsA6S1OrKa7YUvxT3aR ZmtF0UEgdamZS3p+rD0EWOI0Lf8kOgfIxG2bE2OnuzPWK/lfWuByD58aTi+3AtAbqQuM LZWOrExTviZL+3NIb8CP+84W+DqPwPXmCZD2wWrAmruyWIu9lLQZ0NjLbLOMjMGBonP3 wA2qQs/lM+DPEX/+uzl5R6Z7crxHyl5XCmVdkVhoo1i0xLHsQlcfR+DwU8nAbxv+AgrT lFXO7m/gHeKGGwv0CpuF57Y8dDW/Q+mFbQmj5UHkLAF7SQ48SKVcV0zK4H1eB3ubefWs A9TQ== X-Gm-Message-State: AOJu0YwLotELhx479sJzpH+PPCca1Ce5cFWRkm7+W2lu80SOyCJLH7RH NCFm7dkd6dLycai8LFbXF4P3k5bbuD+LARe2lJE/wgAHcqkZUlgODK302zdsnkB4mgbEUCokmBw bpe7Ca59JDgYAuVnlpQjAx1djYYGhIZGxd6Hk X-Gm-Gg: ATEYQzxy9y9psYct2m74+NrpiqlaGXtxUAGhG7TSYDHIilKbsBQp7wVbYFU8YICX/Vp L1lhMfDgtft3KkKkjSOlyCxVurbbdyPtTWDJKicH8X/6tOsunA9FHmu5SXX1CxNXMFBU658ikVs qbAuLi4g9QD1YSBdEcC42HNH64tqmUxFe/LRE1g/oHFIfziM7xGpI8LUT8ZuSnEs5t9gV1X7JTf DHRE/9ZbhhwOt/iX566dJe2sP9FOLTVX6ZTfbTOhJxhSCPNANEYpfiwUp80RBLVjV7TCWCh/abs LM6Ij2ES7UzBhZYOC+Ewzc0NeledxMUY86zsmZpoZjPmBQ1oHtSRG5P8epnJsBxXtLoLfZqSSaV 6Yq9a7cixABNviQPeRPLn9sqB+DYMZcXmH2Tc5m+G1NIe0DolPh1QjLyvNg== X-Received: by 2002:a05:690e:2514:20b0:64a:cff3:8f4c with SMTP id 956f58d0204a3-64cc22fd00dmr6419212d50.65.1772394061516; Sun, 01 Mar 2026 11:41:01 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Pavel Stehule Date: Sun, 1 Mar 2026 20:40:24 +0100 X-Gm-Features: AaiRm507yhMrg7q9Gi2zaff4loA6HSerl-exrcw7bMcRLKvK57bTcyCnl6gKmjw Message-ID: Subject: Re: POC: PLpgSQL FOREACH IN JSON ARRAY To: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000070d8a8064bfba6e8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000070d8a8064bfba6e8 Content-Type: multipart/alternative; boundary="00000000000070d8a8064bfba6e6" --00000000000070d8a8064bfba6e6 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable ne 1. 3. 2026 v 6:44 odes=C3=ADlatel Pavel Stehule napsal: > Hi > > small update > > Now assignment to plpgsql array variable and json array works. Some minor > code cleaning + more regress tests. > fix uninitialized argument of json_populate_type function regards Pavel > Regards > > Pavel > > --00000000000070d8a8064bfba6e6 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


ne 1. 3. 2026 v= =C2=A06:44 odes=C3=ADlatel Pavel Stehule <pavel.stehule@gmail.com> napsal:
Hi
small update

Now assignment to plpgsql= array variable and json array works. Some minor code cleaning=C2=A0+ more = regress tests.

fix uninitialize= d argument of=C2=A0=C2=A0json_populate_type function

regards

Pavel


R= egards

Pavel

--00000000000070d8a8064bfba6e6-- --00000000000070d8a8064bfba6e8 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260301-3-0001-FOREACH-scalar-IN-JSON-ARRAY.patch" Content-Disposition: attachment; filename="v20260301-3-0001-FOREACH-scalar-IN-JSON-ARRAY.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm85mrm40 RnJvbSAwMDI2N2YyNmZlMjEzZDI0NTk2NzJmZDE2YWNiZWE3M2NjOTE2NDFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAib2tib2JAZ2l0aHViLmNvbSIgPHBhdmVsLnN0ZWh1bGVAZ21h aWwuY29tPgpEYXRlOiBNb24sIDIzIEZlYiAyMDI2IDEyOjUzOjQ0ICswMTAwClN1YmplY3Q6IFtQ QVRDSF0gRk9SRUFDSCBzY2FsYXIgSU4gSlNPTiBBUlJBWQoKdGhpcyBwYXRjaCBpbnRyb2R1Y2Ug Rk9SRUFDSCBzY2FsYXJfdmFyIElOIEpTT04gQVJSQVkuIFRoZSBkZXNpZ24gaXMgYmFzZWQKb24g YmVoYXZlIG9mIGpzb25iX2FycmF5X2VsZW1lbnRzIGZ1bmN0aW9ucy4gSW4gdGhpcyBjYXNlLCBG T1JFQUNIIGVuZm9yY2UKY2FzdGluZyB0byB0YXJnZXQgdHlwZSAoYmVjYXVzZSB3ZSBrbm93IHRh cmdldCB0eXBlKSBhbmQgdHJ5IHRvIHJlZHVjZQpJTyBjYXN0aW5nLiBBdHRlbnRpb246IElPIGNh c3RpbmcgY2FuIGJlIG1vcmUgc3RyaWN0LCB0aGVuIGNhc3RpbmcgYmFzZWQKb24gY2FzdCBmdW5j dGlvbnMuCgpERUNMQVJFIHQgaW50OwpCRUdJTgogIC0tIHRoaXMgY2FuIHdvcmsgYmVjYXVzZSB3 ZSB1c2UgY2FzdCBudW1lcmljIC0+IGludAogIEZPUkVBQ0ggdCBJTiBKU09OIEFSUkFZICdbMSwy LDMuMTRdJwogIExPT1AKCiAgLS0gdGhpcyBmYWlscywgYmVjYXVzZSBJTyBjYXN0IGlzIHVzZWQs IGFuZCBpbnRlZ2VyIGlucHV0IGZ1bmN0aW9uCiAgLS0gYWxsb3dzIG9ubHkgZGlnaXRzCiAgRk9S RUFDIHQgSU4gSlNPTiBBUlJBWSAnWzEsMiwzLCIzLjE0Il0nCiAgTE9PUAoKQ29uY2VwdHVhbCBx dWVzdGlvbiBpcyBpZiBjYXN0aW5nIHNob3VsZCBiZSBzdHJpY3QgbGlrZSAib2xkIiBQb3N0Z3Jl U1FMCmpzb24gZnVuY3Rpb24gb3IgbGF4IGFzICJuZXciIFNRTC9KU09OIGZ1bmN0aW9ucz8gSSBj YW4gaW1hZ2luZSBsYXggbW9kZQphcyBkZWZhdWx0IHdpdGggcG9zc2liaWxpdHkgdG8gc3dpdGNo IHRvIHN0cmljdCBtb2RlICh0aGlzIGlzIG5vdCBpbXBsZW1lbnRlZApub3cpOgoKICBGT1JFQUNI IHQgSU4gSlNPTiBBUlJBWSAnWzEsMiwzXScgRVJST1IgT04gRU1QVFkgRVJST1IgT04gRVJST1IK ICBMT09QCiAgICAuLi4KClRoZSBwZXJmb3JtYW5jZSAoYmVzdCBjYXNlIGZvciBpdGVyYXRpb24g b3ZlciAxMDAwIGZpZWxkcyBhcnJheSkgaXMgYWJvdXQKNHggYmV0dGVyIHRoYW4gd2hlbiBGT1Ig SU4gU0VMRUNUIGpzb25iX2FycmF5X2VsZW1lbnRzIGlzIHVzZWQuCi0tLQogZG9jL3NyYy9zZ21s L3BscGdzcWwuc2dtbCAgICAgICAgICAgICAgICAgICAgIHwgIDU5ICsrKysKIHNyYy9wbC9wbHBn c3FsL3NyYy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogLi4uL3BscGdzcWwv c3JjL2V4cGVjdGVkL3BscGdzcWxfZm9yZWFjaC5vdXQgIHwgMTkyICsrKysrKysrKysrKwogc3Jj L3BsL3BscGdzcWwvc3JjL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9w bC9wbHBnc3FsL3NyYy9wbF9leGVjLmMgICAgICAgICAgICAgICAgICB8IDI5MCArKysrKysrKysr KysrKysrKysKIHNyYy9wbC9wbHBnc3FsL3NyYy9wbF9mdW5jcy5jICAgICAgICAgICAgICAgICB8 ICAyOSArKwogc3JjL3BsL3BscGdzcWwvc3JjL3BsX2dyYW0ueSAgICAgICAgICAgICAgICAgIHwg IDM5ICsrLQogc3JjL3BsL3BscGdzcWwvc3JjL3BsX3VucmVzZXJ2ZWRfa3dsaXN0LmggICAgIHwg ICAxICsKIHNyYy9wbC9wbHBnc3FsL3NyYy9wbHBnc3FsLmggICAgICAgICAgICAgICAgICB8ICAz NiArKy0KIHNyYy9wbC9wbHBnc3FsL3NyYy9zcWwvcGxwZ3NxbF9mb3JlYWNoLnNxbCAgICB8IDE1 OSArKysrKysrKysrCiAxMCBmaWxlcyBjaGFuZ2VkLCA4MDAgaW5zZXJ0aW9ucygrKSwgOCBkZWxl dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvcGwvcGxwZ3NxbC9zcmMvZXhwZWN0ZWQv cGxwZ3NxbF9mb3JlYWNoLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9wbC9wbHBnc3FsL3Ny Yy9zcWwvcGxwZ3NxbF9mb3JlYWNoLnNxbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9wbHBn c3FsLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcGxwZ3NxbC5zZ21sCmluZGV4IDU2MWY2ZTUwZDYzLi4w MzRmYmQ4YmQ0NSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3BscGdzcWwuc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvcGxwZ3NxbC5zZ21sCkBAIC0yNzgwLDYgKzI3ODAsNjUgQEAgTk9USUNFOiAg cm93ID0gezEwLDExLDEyfQogICAgIDwvcGFyYT4KICAgIDwvc2VjdDI+CiAKKyAgIDxzZWN0MiBp ZD0icGxwZ3NxbC1mb3JlYWNoLWpzb24tYXJyYXkiPgorICAgIDx0aXRsZT5Mb29waW5nIHRocm91 Z2ggSlNPTiBhcnJheXM8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgIFRoZSA8bGl0ZXJhbD5G T1JFQUNIPC9saXRlcmFsPiBsb29wIGlzIG11Y2ggbGlrZSBhIDxsaXRlcmFsPkZPUkVBQ0g8L2xp dGVyYWw+IGxvb3AsCisgICAgIGJ1dCBpbnN0ZWFkIG9mIGl0ZXJhdGluZyB0aHJvdWdoIGVsZW1l bnRzIG9mIHRoZSBhcnJheSwKKyAgICAgaXQgaXRlcmF0ZXMgdGhyb3VnaCB0aGUgZWxlbWVudHMg b2YgYW4gSlNPTiBhcnJheSB2YWx1ZQorICAgICAoZXhwcmVzc2lvbiBpcyBpbnRlcm5hbHkgY2Fz dGVkIHRvIGpzb25iIHR5cGUpLgorCis8c3lub3BzaXM+Cis8b3B0aW9uYWw+ICZsdDsmbHQ7PHJl cGxhY2VhYmxlPmxhYmVsPC9yZXBsYWNlYWJsZT4mZ3Q7Jmd0OyA8L29wdGlvbmFsPgorRk9SRUFD SCA8cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT4gSU4gSlNPTiBBUlJBWSA8cmVwbGFj ZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IExPT1AKKyAgICA8cmVwbGFjZWFibGU+c3Rh dGVtZW50czwvcmVwbGFjZWFibGU+CitFTkQgTE9PUCA8b3B0aW9uYWw+IDxyZXBsYWNlYWJsZT5s YWJlbDwvcmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+OworPC9zeW5vcHNpcz4KKyAgICA8L3BhcmE+ CisKKyAgICA8cGFyYT4KKyAgICAgVGFyZ2V0IGNhbiBiZSBzY2FsYXIgdmFyaWFibGUsIGNvbXBv c2l0ZSB2YXJpYWJsZSBvciBsaXN0IG9mCisgICAgIHNjYWxhciB2YXJpYWJsZXMuIFdoZW4gdmFy aWFibGUgaXMgbm90IHNjYWxhciwgdGhlbiBhc3NpZ25lZCB2YWx1ZQorICAgICBzaG91bGQgYmUg YSBKU09OIG9iamVjdCBhbmQgdGhlIEpTT04gYXR0cmlidXRlcyBhcmUgYXNzaWduZWQgYnkgbmFt ZXMuCisKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBGVU5DVElPTiBzY2FuX3Jvd3MoanNvbmIp IFJFVFVSTlMgdm9pZCBBUyAkJAorREVDTEFSRQorICB4IGludDsKK0JFR0lOCisgIEZPUkVBQ0gg eCBJTiBKU09OIEFSUkFZICQxCisgIExPT1AKKyAgICBSQUlTRSBOT1RJQ0UgJ3JvdyA9ICUnLCB4 OworICBFTkQgTE9PUDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CisKK1NFTEVDVCBzY2Fu X3Jvd3MoJ1sxLDIsM10nKTsKK05PVElDRTogIHJvdyA9IDEKK05PVElDRTogIHJvdyA9IDIKK05P VElDRTogIHJvdyA9IDMKKworQ1JFQVRFIEZVTkNUSU9OIHNjYW5fcm93cyhqc29uYikgUkVUVVJO UyB2b2lkIEFTICQkCitERUNMQVJFCisgIHggaW50OyB5IHZhcmNoYXI7CitCRUdJTgorICBGT1JF QUNIIHgsIHkgSU4gSlNPTiBBUlJBWSAkMQorICBMT09QCisgICAgUkFJU0UgTk9USUNFICd4OiAl LCB5OiAlJywgeCwgeTsKKyAgRU5EIExPT1A7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOwor CitTRUxFQ1Qgc2Nhbl9yb3dzKCdbe30seyJ4IjoxMH0seyJ5IjoiSGkifSx7InkiOiJIaSIsICJ4 IjoxMDAwfV0nKTsKK05PVElDRTogIHg6ICZsdDtOVUxMJmd0OywgeTogJmx0O05VTEwmZ3Q7CitO T1RJQ0U6ICB4OiAxMCwgeTogJmx0O05VTEwmZ3Q7CitOT1RJQ0U6ICB4OiAmbHQ7TlVMTCZndDss IHk6IEhpCitOT1RJQ0U6ICB4OiAxMDAwLCB5OiBIaQorPC9wcm9ncmFtbGlzdGluZz4KKyAgICA8 L3BhcmE+CisgICA8L3NlY3QyPgorCiAgICA8c2VjdDIgaWQ9InBscGdzcWwtZXJyb3ItdHJhcHBp bmciPgogICAgIDx0aXRsZT5UcmFwcGluZyBFcnJvcnM8L3RpdGxlPgogCmRpZmYgLS1naXQgYS9z cmMvcGwvcGxwZ3NxbC9zcmMvTWFrZWZpbGUgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvTWFrZWZpbGUK aW5kZXggNjNjYjk2ZmFlM2UuLjViZDBjZjMxZGZjIDEwMDY0NAotLS0gYS9zcmMvcGwvcGxwZ3Nx bC9zcmMvTWFrZWZpbGUKKysrIGIvc3JjL3BsL3BscGdzcWwvc3JjL01ha2VmaWxlCkBAIC0zNSw3 ICszNSw3IEBAIFJFR1JFU1NfT1BUUyA9IC0tZGJuYW1lPSQoUExfVEVTVERCKQogUkVHUkVTUyA9 IHBscGdzcWxfYXJyYXkgcGxwZ3NxbF9jYWNoZSBwbHBnc3FsX2NhbGwgcGxwZ3NxbF9jb250cm9s IFwKIAlwbHBnc3FsX2NvcHkgcGxwZ3NxbF9kb21haW4gcGxwZ3NxbF9taXNjIFwKIAlwbHBnc3Fs X3JlY29yZCBwbHBnc3FsX3NpbXBsZSBwbHBnc3FsX3RyYW5zYWN0aW9uIFwKLQlwbHBnc3FsX3Ry YXAgcGxwZ3NxbF90cmlnZ2VyIHBscGdzcWxfdmFycHJvcHMKKwlwbHBnc3FsX3RyYXAgcGxwZ3Nx bF90cmlnZ2VyIHBscGdzcWxfdmFycHJvcHMgcGxwZ3NxbF9mb3JlYWNoCiAKICMgd2hlcmUgdG8g ZmluZCBnZW5fa2V5d29yZGxpc3QucGwgYW5kIHN1YnNpZGlhcnkgZmlsZXMKIFRPT0xTRElSID0g JCh0b3Bfc3JjZGlyKS9zcmMvdG9vbHMKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHBnc3FsL3NyYy9l eHBlY3RlZC9wbHBnc3FsX2ZvcmVhY2gub3V0IGIvc3JjL3BsL3BscGdzcWwvc3JjL2V4cGVjdGVk L3BscGdzcWxfZm9yZWFjaC5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLmJjMzY2ZTc4ZGYzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3BsL3BscGdzcWwvc3JjL2V4 cGVjdGVkL3BscGdzcWxfZm9yZWFjaC5vdXQKQEAgLTAsMCArMSwxOTIgQEAKKy0tIG51bWVyaWMg dG8gbnVtZXJpYworZG8gJCQKK2RlY2xhcmUgeCBudW1lcmljOworYmVnaW4KKyAgZm9yZWFjaCB4 IGluIGpzb24gYXJyYXkgJ1sxMCwyMCwzMCwzLjE0LCBudWxsXScKKyAgbG9vcAorICAgIHJhaXNl IG5vdGljZSAnJScsIHg7CisgIGVuZCBsb29wOworZW5kOworJCQ7CitOT1RJQ0U6ICAxMAorTk9U SUNFOiAgMjAKK05PVElDRTogIDMwCitOT1RJQ0U6ICAzLjE0CitOT1RJQ0U6ICA8TlVMTD4KKy0t IG51bWVyaWMgdG8gaW50IGJ5IGNhc3QKK2RvICQkCitkZWNsYXJlIHggaW50OworYmVnaW4KKyAg Zm9yZWFjaCB4IGluIGpzb24gYXJyYXkgJ1sxMCwyMCwzMCwzLjE0LCBudWxsXScKKyAgbG9vcAor ICAgIHJhaXNlIG5vdGljZSAnJScsIHg7CisgIGVuZCBsb29wOworZW5kOworJCQ7CitOT1RJQ0U6 ICAxMAorTk9USUNFOiAgMjAKK05PVElDRTogIDMwCitOT1RJQ0U6ICAzCitOT1RJQ0U6ICA8TlVM TD4KKy0tIGNvbnZlcnNpb24gIjMuMTQiIHRvIGludCBzaG91bGQgdG8gZmFpbCBkdWUgSU8gY2Fz dAorZG8gJCQKK2RlY2xhcmUgeCBpbnQ7CitiZWdpbgorICBmb3JlYWNoIHggaW4ganNvbiBhcnJh eSAnWyIxMCIsMjAsMzAsIjMuMTQiXScKKyAgbG9vcAorICAgIHJhaXNlIG5vdGljZSAnJScsIHg7 CisgIGVuZCBsb29wOworZW5kOworJCQ7CitOT1RJQ0U6ICAxMAorTk9USUNFOiAgMjAKK05PVElD RTogIDMwCitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGludGVnZXI6ICIz LjE0IgorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGlubGluZV9jb2RlX2Jsb2NrIGxpbmUg NCBhdCBGT1JFQUNIIG92ZXIganNvbiBhcnJheQorZG8gJCQKK2RlY2xhcmUgeCBib29sZWFuOwor YmVnaW4KKyAgZm9yZWFjaCB4IGluIGpzb24gYXJyYXkgJ1t0cnVlLCBmYWxzZV0nCisgIGxvb3AK KyAgaWYgeCB0aGVuCisgICAgcmFpc2Ugbm90aWNlICd0cnVlJzsKKyAgZWxzZQorICAgIHJhaXNl IG5vdGljZSAnZmFsc2UnOworICBlbmQgaWY7CisgIGVuZCBsb29wOworZW5kOworJCQ7CitOT1RJ Q0U6ICB0cnVlCitOT1RJQ0U6ICBmYWxzZQorLS0ganNvbmIgdG8ganNvbmIKK2RvICQkCitkZWNs YXJlIHgganNvbmI7CitiZWdpbgorICBmb3JlYWNoIHggaW4ganNvbiBhcnJheSAnWzEwLDIwLDMw LDMuMTQsIG51bGwsICJIaSJdJworICBsb29wCisgICAgcmFpc2Ugbm90aWNlICclJywgeDsKKyAg ZW5kIGxvb3A7CitlbmQ7CiskJDsKK05PVElDRTogIDEwCitOT1RJQ0U6ICAyMAorTk9USUNFOiAg MzAKK05PVElDRTogIDMuMTQKK05PVElDRTogIG51bGwKK05PVElDRTogICJIaSIKKy0tIGpzb25i IHRvIGpzb24KK2RvICQkCitkZWNsYXJlIHgganNvbjsKK2JlZ2luCisgIGZvcmVhY2ggeCBpbiBq c29uIGFycmF5ICdbMTAsMjAsMzAsMy4xNCwgbnVsbCwgIkhpIl0nCisgIGxvb3AKKyAgICByYWlz ZSBub3RpY2UgJyUnLCB4OworICBlbmQgbG9vcDsKK2VuZDsKKyQkOworTk9USUNFOiAgMTAKK05P VElDRTogIDIwCitOT1RJQ0U6ICAzMAorTk9USUNFOiAgMy4xNAorTk9USUNFOiAgbnVsbAorTk9U SUNFOiAgIkhpIgorLS0gaXRlcmF0aW9uIG92ZXIgY29tcG9zaXRlcworZG8gJCQKK2RlY2xhcmUg eCBpbnQ7IHkgbnVtZXJpYzsgeiB2YXJjaGFyOworYmVnaW4KKyAgZm9yZWFjaCB4LCB5LCB6IGlu IGpzb24gYXJyYXkgJ1t7fSwgeyJ6IjoiSGkifSwgeyJ5IjogMy4xNH0sIHsieiI6IkhpIiwgIngi OjEwLCAieSI6My4xNH1dJworICBsb29wCisgICAgcmFpc2Ugbm90aWNlICd4OiAlLCB5OiAlLCB6 OiAlJywgeCwgeSwgejsKKyAgZW5kIGxvb3A7CitlbmQ7CiskJDsKK05PVElDRTogIHg6IDxOVUxM PiwgeTogPE5VTEw+LCB6OiA8TlVMTD4KK05PVElDRTogIHg6IDxOVUxMPiwgeTogPE5VTEw+LCB6 OiBIaQorTk9USUNFOiAgeDogPE5VTEw+LCB5OiAzLjE0LCB6OiA8TlVMTD4KK05PVElDRTogIHg6 IDEwLCB5OiAzLjE0LCB6OiBIaQorY3JlYXRlIHR5cGUgdDMgYXMgKHggaW50LCB5IG51bWVyaWMs IHogdmFyY2hhcik7CitkbyAkJAorZGVjbGFyZSBjIHQzOworYmVnaW4KKyAgZm9yZWFjaCBjIGlu IGpzb24gYXJyYXkgJ1t7fSwgeyJ6IjoiSGkifSwgeyJ5IjogMy4xNH0sIHsieiI6IkhpIiwgIngi OjEwLCAieSI6My4xNH1dJworICBsb29wCisgICAgcmFpc2Ugbm90aWNlICd4OiAlLCB5OiAlLCB6 OiAlJywgYy54LCBjLnksIGMuejsKKyAgZW5kIGxvb3A7CitlbmQ7CiskJDsKK05PVElDRTogIHg6 IDxOVUxMPiwgeTogPE5VTEw+LCB6OiA8TlVMTD4KK05PVElDRTogIHg6IDxOVUxMPiwgeTogPE5V TEw+LCB6OiBIaQorTk9USUNFOiAgeDogPE5VTEw+LCB5OiAzLjE0LCB6OiA8TlVMTD4KK05PVElD RTogIHg6IDEwLCB5OiAzLjE0LCB6OiBIaQorZG8gJCQKK2RlY2xhcmUgYyB0MzsKK2JlZ2luCisg IGZvcmVhY2ggYy54LCBjLnksIGMueiBpbiBqc29uIGFycmF5ICdbe30sIHsieiI6IkhpIn0sIHsi eSI6IDMuMTR9LCB7InoiOiJIaSIsICJ4IjoxMCwgInkiOjMuMTR9XScKKyAgbG9vcAorICAgIHJh aXNlIG5vdGljZSAneDogJSwgeTogJSwgejogJScsIGMueCwgYy55LCBjLno7CisgIGVuZCBsb29w OworZW5kOworJCQ7CitOT1RJQ0U6ICB4OiA8TlVMTD4sIHk6IDxOVUxMPiwgejogPE5VTEw+CitO T1RJQ0U6ICB4OiA8TlVMTD4sIHk6IDxOVUxMPiwgejogSGkKK05PVElDRTogIHg6IDxOVUxMPiwg eTogMy4xNCwgejogPE5VTEw+CitOT1RJQ0U6ICB4OiAxMCwgeTogMy4xNCwgejogSGkKK2Ryb3Ag dHlwZSB0MzsKKy0tIHRhcmdldCBjYW4gYmUgYSBhcnJheQorZG8gJCQKK2RlY2xhcmUgeCBpbnRb XTsKK2JlZ2luCisgIGZvcmVhY2ggeCBpbiBqc29uIGFycmF5ICdbWzEsMiwzXSxbNCw1LDZdXScK KyAgbG9vcAorICAgIHJhaXNlIG5vdGljZSAnJSAlICUnLCB4WzFdLCB4WzJdLCB4WzNdOworICBl bmQgbG9vcDsKK2VuZDsKKyQkOworTk9USUNFOiAgMSAyIDMKK05PVElDRTogIDQgNSA2CitkbyAk JAorZGVjbGFyZSB4IHZhcmNoYXJbXTsKK2JlZ2luCisgIGZvcmVhY2ggeCBpbiBqc29uIGFycmF5 ICdbWyJIaSIsIkhlbGxvIl0sWyJIZWxsbyIsIkhpIl1dJworICBsb29wCisgICAgcmFpc2Ugbm90 aWNlICclICUnLCB4WzFdLCB4WzJdOworICBlbmQgbG9vcDsKK2VuZDsKKyQkOworTk9USUNFOiAg SGkgSGVsbG8KK05PVElDRTogIEhlbGxvIEhpCitkbyAkJAorZGVjbGFyZSB4IHZhcmNoYXJbXTsK K2JlZ2luCisgIGZvcmVhY2ggeCBpbiBqc29uIGFycmF5ICdbWyJIaSIsIkhlbGxvIl0sWyJIZWxs byIsIkhpIl1dJworICBsb29wCisgICAgcmFpc2Ugbm90aWNlICclICUnLCB4WzFdLCB4WzJdOwor ICBlbmQgbG9vcDsKK2VuZDsKKyQkOworTk9USUNFOiAgSGkgSGVsbG8KK05PVElDRTogIEhlbGxv IEhpCitkbyAkJAorZGVjbGFyZSB4IGludFtdOyB5IHZhcmNoYXI7CitiZWdpbgorICBmb3JlYWNo IHgsIHkgaW4ganNvbiBhcnJheSAnW3sieCI6WzEsMiwzXSwgInkiOiJIaSJ9LCB7IngiOls0LDUs Nl0sICJ5IjoiSGkifV0nCisgIGxvb3AKKyAgICByYWlzZSBub3RpY2UgJyUgJSAlLCB5OiAlJywg eFsxXSwgeFsyXSwgeFszXSwgeTsKKyAgZW5kIGxvb3A7CitlbmQ7CiskJDsKK05PVElDRTogIDEg MiAzLCB5OiBIaQorTk9USUNFOiAgNCA1IDYsIHk6IEhpCitjcmVhdGUgdHlwZSB0MiBhcyAoeCBp bnRbXSwgeSB2YXJjaGFyKTsKK2RvICQkCitkZWNsYXJlIGMgdDI7CitiZWdpbgorICBmb3JlYWNo IGMgaW4ganNvbiBhcnJheSAnW3sieCI6WzEsMiwzXSwgInkiOiJIaSJ9LCB7IngiOls0LDUsNl0s ICJ5IjoiSGkifV0nCisgIGxvb3AKKyAgICByYWlzZSBub3RpY2UgJyUgJSAlLCB5OiAlJywgYy54 WzFdLCBjLnhbMl0sIGMueFszXSwgYy55OworICBlbmQgbG9vcDsKK2VuZDsKKyQkOworTk9USUNF OiAgMSAyIDMsIHk6IEhpCitOT1RJQ0U6ICA0IDUgNiwgeTogSGkKK2Ryb3AgdHlwZSB0MjsKZGlm ZiAtLWdpdCBhL3NyYy9wbC9wbHBnc3FsL3NyYy9tZXNvbi5idWlsZCBiL3NyYy9wbC9wbHBnc3Fs L3NyYy9tZXNvbi5idWlsZAppbmRleCA2ZmYyNzAwNmNmYy4uNjA5ZWVkN2EyOGQgMTAwNjQ0Ci0t LSBhL3NyYy9wbC9wbHBnc3FsL3NyYy9tZXNvbi5idWlsZAorKysgYi9zcmMvcGwvcGxwZ3NxbC9z cmMvbWVzb24uYnVpbGQKQEAgLTg4LDYgKzg4LDcgQEAgdGVzdHMgKz0gewogICAgICAgJ3BscGdz cWxfdHJhcCcsCiAgICAgICAncGxwZ3NxbF90cmlnZ2VyJywKICAgICAgICdwbHBnc3FsX3ZhcnBy b3BzJywKKyAgICAgICdwbHBnc3FsX2ZvcmVhY2gnLAogICAgIF0sCiAgIH0sCiB9CmRpZmYgLS1n aXQgYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jIGIvc3JjL3BsL3BscGdzcWwvc3JjL3Bs X2V4ZWMuYwppbmRleCA4NDU1MmUzMmM4Ny4uMjY3YmJhYmVlNmEgMTAwNjQ0Ci0tLSBhL3NyYy9w bC9wbHBnc3FsL3NyYy9wbF9leGVjLmMKKysrIGIvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMu YwpAQCAtNDEsNiArNDEsOCBAQAogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVk ZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgorI2luY2x1ZGUg InV0aWxzL2pzb25iLmgiCisjaW5jbHVkZSAidXRpbHMvanNvbmZ1bmNzLmgiCiAjaW5jbHVkZSAi dXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRl ICJ1dGlscy9yZWwuaCIKQEAgLTMwNSw2ICszMDcsOCBAQCBzdGF0aWMgaW50CWV4ZWNfc3RtdF9m b3JjKFBMcGdTUUxfZXhlY3N0YXRlICplc3RhdGUsCiAJCQkJCQkgICBQTHBnU1FMX3N0bXRfZm9y YyAqc3RtdCk7CiBzdGF0aWMgaW50CWV4ZWNfc3RtdF9mb3JlYWNoX2EoUExwZ1NRTF9leGVjc3Rh dGUgKmVzdGF0ZSwKIAkJCQkJCQkJUExwZ1NRTF9zdG10X2ZvcmVhY2hfYSAqc3RtdCk7CitzdGF0 aWMgaW50CWV4ZWNfc3RtdF9mb3JlYWNoX2pzb25fYShQTHBnU1FMX2V4ZWNzdGF0ZSAqZXN0YXRl LAorCQkJCQkJCQkJIFBMcGdTUUxfc3RtdF9mb3JlYWNoX2pzb25fYSAqc3RtdCk7CiBzdGF0aWMg aW50CWV4ZWNfc3RtdF9vcGVuKFBMcGdTUUxfZXhlY3N0YXRlICplc3RhdGUsCiAJCQkJCQkgICBQ THBnU1FMX3N0bXRfb3BlbiAqc3RtdCk7CiBzdGF0aWMgaW50CWV4ZWNfc3RtdF9mZXRjaChQTHBn U1FMX2V4ZWNzdGF0ZSAqZXN0YXRlLApAQCAtMjA3NSw2ICsyMDc5LDEwIEBAIGV4ZWNfc3RtdHMo UExwZ1NRTF9leGVjc3RhdGUgKmVzdGF0ZSwgTGlzdCAqc3RtdHMpCiAJCQkJcmMgPSBleGVjX3N0 bXRfZm9yZWFjaF9hKGVzdGF0ZSwgKFBMcGdTUUxfc3RtdF9mb3JlYWNoX2EgKikgc3RtdCk7CiAJ CQkJYnJlYWs7CiAKKwkJCWNhc2UgUExQR1NRTF9TVE1UX0ZPUkVBQ0hfSlNPTl9BOgorCQkJCXJj ID0gZXhlY19zdG10X2ZvcmVhY2hfanNvbl9hKGVzdGF0ZSwgKFBMcGdTUUxfc3RtdF9mb3JlYWNo X2pzb25fYSAqKSBzdG10KTsKKwkJCQlicmVhazsKKwogCQkJY2FzZSBQTFBHU1FMX1NUTVRfRVhJ VDoKIAkJCQlyYyA9IGV4ZWNfc3RtdF9leGl0KGVzdGF0ZSwgKFBMcGdTUUxfc3RtdF9leGl0ICop IHN0bXQpOwogCQkJCWJyZWFrOwpAQCAtMjk5NSw2ICszMDAzLDI0MyBAQCBleGVjX3N0bXRfZm9y YyhQTHBnU1FMX2V4ZWNzdGF0ZSAqZXN0YXRlLCBQTHBnU1FMX3N0bXRfZm9yYyAqc3RtdCkKIH0K IAogCisvKgorICogQ29udmVydCBKc29uYlZhbHVlIHRvIERhdHVtIHRoYXQgY2FuIGJlIGFzc2ln bmVkIHRvIFBMcGdTUUxfdmFyLgorICovCitzdGF0aWMgRGF0dW0KK0pzb25iVmFsdWVUb0RhdHVt KEpzb25iVmFsdWUgKmpidiwKKwkJCQkgIE9pZCAqdHlwaWQsIGludDMyICp0eXBtb2QsIGJvb2wg KmlzbnVsbCwKKwkJCQkgIE9pZCBleHBlY3RlZF90eXBpZCwgaW50MzIgZXhwZWN0ZWRfdHlwbW9k LAorCQkJCSAgdm9pZCAqKmNhY2hlLCBNZW1vcnlDb250ZXh0IG1jeHQpCit7CisJaWYgKGV4cGVj dGVkX3R5cGlkID09IEpTT05CT0lEKQorCXsKKwkJKnR5cGlkID0gSlNPTkJPSUQ7CisJCSp0eXBt b2QgPSAtMTsKKwkJKmlzbnVsbCA9IGZhbHNlOworCisJCXJldHVybiBQb2ludGVyR2V0RGF0dW0o SnNvbmJWYWx1ZVRvSnNvbmIoamJ2KSk7CisJfQorCWVsc2UgaWYgKGV4cGVjdGVkX3R5cGlkID09 IEpTT05PSUQpCisJeworCQlKc29uYgkgICAqanNvbmI7CisJCWNoYXIJICAgKnN0cjsKKworCQkv KiBzZXJpYWxpemUgSnNvblZhbHVlIHRvIEpTT04gdGV4dCAqLworCQlqc29uYiA9IEpzb25iVmFs dWVUb0pzb25iKGpidik7CisJCXN0ciA9IEpzb25iVG9DU3RyaW5nKE5VTEwsICZqc29uYi0+cm9v dCwgVkFSU0laRShqc29uYikpOworCisJCSp0eXBpZCA9IFRFWFRPSUQ7CisJCSp0eXBtb2QgPSAt MTsKKwkJKmlzbnVsbCA9IGZhbHNlOworCisJCXJldHVybiBQb2ludGVyR2V0RGF0dW0oY3N0cmlu Z190b190ZXh0KHN0cikpOworCX0KKwllbHNlIGlmIChqYnYtPnR5cGUgPT0gamJ2TnVsbCkKKwl7 CisJCSp0eXBpZCA9IGV4cGVjdGVkX3R5cGlkOworCQkqdHlwbW9kID0gLTE7CisJCSppc251bGwg PSB0cnVlOworCisJCXJldHVybiAoRGF0dW0pIDA7CisJfQorCWVsc2UgaWYgKGpidi0+dHlwZSA9 PSBqYnZTdHJpbmcpCisJeworCQkqdHlwaWQgPSBURVhUT0lEOworCQkqdHlwbW9kID0gLTE7CisJ CSppc251bGwgPSBmYWxzZTsKKworCQlyZXR1cm4gUG9pbnRlckdldERhdHVtKGNzdHJpbmdfdG9f dGV4dF93aXRoX2xlbihqYnYtPnZhbC5zdHJpbmcudmFsLAorCQkJCQkJCQkJCQkJCQlqYnYtPnZh bC5zdHJpbmcubGVuKSk7CisJfQorCWVsc2UgaWYgKGpidi0+dHlwZSA9PSBqYnZOdW1lcmljKQor CXsKKwkJKnR5cGlkID0gTlVNRVJJQ09JRDsKKwkJKnR5cG1vZCA9IC0xOworCQkqaXNudWxsID0g ZmFsc2U7CisKKwkJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShqYnYtPnZhbC5udW1lcmljKTsKKwl9 CisJZWxzZSBpZiAoamJ2LT50eXBlID09IGpidkJvb2wpCisJeworCQkqdHlwaWQgPSBCT09MT0lE OworCQkqdHlwbW9kID0gLTE7CisJCSppc251bGwgPSBmYWxzZTsKKworCQlyZXR1cm4gQm9vbEdl dERhdHVtKGpidi0+dmFsLmJvb2xlYW4pOworCX0KKwllbHNlCisJeworCQlKc29uYgkqanNvbmI7 CisJCURhdHVtCXJlc3VsdDsKKworCQkvKiBpc251bGwgaW4ganNvbl9wb3B1bGF0ZV90eXBlIGlz IGlub3V0IGFyZ3VtZW50ICovCisJCSppc251bGwgPSBmYWxzZTsKKworCQlqc29uYiA9IEpzb25i VmFsdWVUb0pzb25iKGpidik7CisJCXJlc3VsdCA9IGpzb25fcG9wdWxhdGVfdHlwZShQb2ludGVy R2V0RGF0dW0oanNvbmIpLCBKU09OQk9JRCwKKwkJCQkJCQkJCWV4cGVjdGVkX3R5cGlkLCBleHBl Y3RlZF90eXBtb2QsCisJCQkJCQkJCQljYWNoZSwgbWN4dCwKKwkJCQkJCQkJCWlzbnVsbCwgZmFs c2UsIE5VTEwpOworCisJCSp0eXBpZCA9IGV4cGVjdGVkX3R5cGlkOworCQkqdHlwbW9kID0gZXhw ZWN0ZWRfdHlwbW9kOworCisJCXJldHVybiByZXN1bHQ7CisJfQorfQorCisvKiAtLS0tLS0tLS0t CisgKiBleGVjX3N0bXRfZm9yZWFjaF9qc29uX2EJCQlMb29wIG92ZXIgZWxlbWVudHMgaW4ganNv biBhcnJheQorICoKKyAqIFdoZW4gdGFyZ2V0IGlzIGEgY29tcG9zaXRlLCB0aGVuIHRhcmdldCBp cyBwb3B1bGF0ZWQgbGlrZSBqc29uX3RvX3BvcHVsYXRlX3JlY29yZC4KKyAqIGpzb25iIGRvZXNu J3QgcHJlc2VydmUgYXR0cmlidXRlIG9yZGVyLCBzbyBwb3NpdGlvbiBiYXNlZCBtYXBwaW5nIGJl dHdlZW4KKyAqIHRhcmdldCBhbmQgc291cmNlIGNhbiBiZSBwb3NzaWJseSBkYW5nZXJvdXMgKHdp dGggdW5leHBlY3RlZCBiZWhhdmUpLgorICogLS0tLS0tLS0tLQorICovCitzdGF0aWMgaW50Citl eGVjX3N0bXRfZm9yZWFjaF9qc29uX2EoUExwZ1NRTF9leGVjc3RhdGUgKmVzdGF0ZSwKKwkJCQkJ CSBQTHBnU1FMX3N0bXRfZm9yZWFjaF9qc29uX2EgKnN0bXQpCit7CisJT2lkCQkJZXhwcnR5cGVp ZDsKKwlpbnQzMgkJZXhwcnR5cG1vZDsKKwlEYXR1bQkJZXhwcmRhdHVtOworCVBMcGdTUUxfZGF0 dW0gKmxvb3BfdmFyOworCU9pZAkJCWxvb3BfdmFyX3R5cGlkOworCWludDMyCQlsb29wX3Zhcl90 eXBtb2Q7CisJT2lkCQkJbG9vcF92YXJfY29sbGF0aW9uOworCUpzb25iCSAgICpqYjsKKwlKc29u Ykl0ZXJhdG9yICppdDsKKwlKc29uYlZhbHVlCWpidjsKKwlKc29uYkl0ZXJhdG9yVG9rZW4gcjsK KwlNZW1vcnlDb250ZXh0IHN0bXRfbWNvbnRleHQ7CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0 OworCU1lbW9yeUNvbnRleHQgdG1wX2N4dDsKKwlib29sCQlmb3VuZCA9IGZhbHNlOworCWJvb2wJ CWlzbnVsbDsKKwlib29sCQlza2lwTmVzdGVkID0gZmFsc2U7CisJaW50CQkJcmMgPSBQTFBHU1FM X1JDX09LOworCXZvaWQJICAgKmNhY2hlID0gTlVMTDsKKworCS8qIGdldCB0aGUgdmFsdWUgb2Yg dGhlIGV4cHJlc3Npb24gKi8KKwlleHByZGF0dW0gPSBleGVjX2V2YWxfZXhwcihlc3RhdGUsIHN0 bXQtPmV4cHIsICZpc251bGwsCisJCQkJCQkJICAgJmV4cHJ0eXBlaWQsICZleHBydHlwbW9kKTsK KwlpZiAoaXNudWxsKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfTlVM TF9WQUxVRV9OT1RfQUxMT1dFRCksCisJCQkJIGVycm1zZygiRk9SRUFDSCBleHByZXNzaW9uIG11 c3Qgbm90IGJlIG51bGwiKSkpOworCisJLyoKKwkgKiBEbyBhcyBtdWNoIGFzIHBvc3NpYmxlIG9m IHRoZSBjb2RlIGJlbG93IGluIHN0bXRfbWNvbnRleHQsIHRvIGF2b2lkIGFueQorCSAqIGxlYWtz IGZyb20gY2FsbGVkIHN1YnJvdXRpbmVzLiAgV2UgbmVlZCBhIHByaXZhdGUgc3RtdF9tY29udGV4 dCBzaW5jZQorCSAqIHdlJ2xsIGJlIGNhbGxpbmcgYXJiaXRyYXJ5IHN0YXRlbWVudCBjb2RlLgor CSAqLworCXN0bXRfbWNvbnRleHQgPSBnZXRfc3RtdF9tY29udGV4dChlc3RhdGUpOworCXB1c2hf c3RtdF9tY29udGV4dChlc3RhdGUpOworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNo VG8oc3RtdF9tY29udGV4dCk7CisKKwl0bXBfY3h0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKEN1 cnJlbnRNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJIkZPUkVBQ0ggSU4gSlNPTiBBUlJBWSB0ZW1w b3JhcnkgY3h0IiwKKwkJCQkJCQkJCUFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCisJLyogY2Fz dCB0byBqc29uYiAqLworCWV4cHJkYXR1bSA9IGV4ZWNfY2FzdF92YWx1ZShlc3RhdGUsIGV4cHJk YXR1bSwgJmlzbnVsbCwKKwkJCQkJCQkJZXhwcnR5cGVpZCwgZXhwcnR5cG1vZCwKKwkJCQkJCQkJ SlNPTkJPSUQsIC0xKTsKKworCUFzc2VydCghaXNudWxsKTsKKworCS8qCisJICogV2UgbXVzdCBj b3B5IHRoZSBhcnJheSBpbnRvIHN0bXRfbWNvbnRleHQsIGVsc2UgaXQgd2lsbCBkaXNhcHBlYXIg aW4KKwkgKiBleGVjX2V2YWxfY2xlYW51cC4gIFRoaXMgaXMgYW5ub3lpbmcsIGJ1dCBjbGVhbnVw IHdpbGwgY2VydGFpbmx5IGhhcHBlbgorCSAqIHdoaWxlIHJ1bm5pbmcgdGhlIGxvb3AgYm9keSwg c28gd2UgaGF2ZSBsaXR0bGUgY2hvaWNlLgorCSAqLworCWpiID0gRGF0dW1HZXRKc29uYlBDb3B5 KGV4cHJkYXR1bSk7CisKKwkvKiBDbGVhbiB1cCBhbnkgbGVmdG92ZXIgdGVtcG9yYXJ5IG1lbW9y eSAqLworCWV4ZWNfZXZhbF9jbGVhbnVwKGVzdGF0ZSk7CisKKwkvKgorCSAqIFRoaXMgaXMgY29t cGF0aWJsZSB3aXRoIGpzb25iX2FycmF5X2VsZW1lbnQuIFNRTC9KU09OIGZ1bmN0aW9ucyBhcmUg bm90CisJICogdG9vIHN0cmljdCBsaWtlIFBvc3RncmVTUUwgcHJvcHJpZXRhcnkgKG9sZCBqc29u KSBmdW5jdGlvbnMuIEluIFNRTC9KU09OCisJICogYSBzY2FsYXIgaXMgZXF1YWwgdG8gb25lIGVs ZW1lbnQgYXJyYXkuIFRoZSBiYXNpYyBxdWVzdGlvbiBpcyBpZiBGT1JFQUNICisJICogc2hvdWxk IGJlIG1vcmUgcmVzdHJpY3RpdmUgbGlrZSBvbGQgSlNPTiBmdW5jdGlvbiwgb3IgbGVzcyByZXN0 cmljdGl2ZQorCSAqIGxpa2UgU1FML0pTT04gZnVuY3Rpb25zLgorCSAqLworCWlmIChKQl9ST09U X0lTX1NDQUxBUihqYikpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9J TlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJIGVycm1zZygiY2Fubm90IGV4dHJhY3QgZWxl bWVudHMgZnJvbSBhIHNjYWxhciIpKSk7CisJZWxzZSBpZiAoIUpCX1JPT1RfSVNfQVJSQVkoamIp KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVU RVJfVkFMVUUpLAorCQkJCSBlcnJtc2coImNhbm5vdCBleHRyYWN0IGVsZW1lbnRzIGZyb20gYW4g b2JqZWN0IikpKTsKKworCS8qIFNldCB1cCB0aGUgbG9vcCB2YXJpYWJsZSBhbmQgc2VlIGlmIGl0 IGlzIG9mIGFuIGFycmF5IHR5cGUgKi8KKwlsb29wX3ZhciA9IGVzdGF0ZS0+ZGF0dW1zW3N0bXQt PnZhcm5vXTsKKworCXBscGdzcWxfZXhlY19nZXRfZGF0dW1fdHlwZV9pbmZvKGVzdGF0ZSwgbG9v cF92YXIsCisJCQkJCQkJCQkgJmxvb3BfdmFyX3R5cGlkLCAmbG9vcF92YXJfdHlwbW9kLAorCQkJ CQkJCQkJICZsb29wX3Zhcl9jb2xsYXRpb24pOworCisJaXQgPSBKc29uYkl0ZXJhdG9ySW5pdCgm amItPnJvb3QpOworCisJd2hpbGUgKChyID0gSnNvbmJJdGVyYXRvck5leHQoJml0LCAmamJ2LCBz a2lwTmVzdGVkKSkgIT0gV0pCX0RPTkUpCisJeworCQlza2lwTmVzdGVkID0gdHJ1ZTsKKworCQlp ZiAociA9PSBXSkJfRUxFTSkKKwkJeworCQkJRGF0dW0JCXZhbDsKKwkJCU9pZAkJCXZhbHR5cGlk OworCQkJaW50MzIJCXZhbHR5cG1vZDsKKwkJCWJvb2wJCXZhbGlzbnVsbDsKKworCQkJTWVtb3J5 Q29udGV4dFN3aXRjaFRvKHRtcF9jeHQpOworCisJCQl2YWwgPSBKc29uYlZhbHVlVG9EYXR1bSgm amJ2LAorCQkJCQkJCQkJJnZhbHR5cGlkLCAmdmFsdHlwbW9kLCAmdmFsaXNudWxsLAorCQkJCQkJ CQkJbG9vcF92YXJfdHlwaWQsIGxvb3BfdmFyX3R5cG1vZCwKKwkJCQkJCQkJCSZjYWNoZSwgc3Rt dF9tY29udGV4dCk7CisKKwkJCS8qIGV4ZWNfYXNzaWduX3ZhbHVlIGFuZCBleGVjX3N0bXRzIG11 c3QgcnVuIGluIHRoZSBtYWluIGNvbnRleHQgKi8KKwkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhv bGRjb250ZXh0KTsKKworCQkJLyogQXNzaWduIGN1cnJlbnQgZWxlbWVudC9zbGljZSB0byB0aGUg bG9vcCB2YXJpYWJsZSAqLworCQkJZXhlY19hc3NpZ25fdmFsdWUoZXN0YXRlLCBsb29wX3Zhciwg dmFsLAorCQkJCQkJCSAgdmFsaXNudWxsLCB2YWx0eXBpZCwgdmFsdHlwbW9kKTsKKworCQkJTWVt b3J5Q29udGV4dFJlc2V0KHRtcF9jeHQpOworCisJCQkvKgorCQkJICogRXhlY3V0ZSB0aGUgc3Rh dGVtZW50cworCQkJICovCisJCQlyYyA9IGV4ZWNfc3RtdHMoZXN0YXRlLCBzdG10LT5ib2R5KTsK KworCQkJTE9PUF9SQ19QUk9DRVNTSU5HKHN0bXQtPmxhYmVsLCBicmVhayk7CisKKwkJCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhzdG10X21jb250ZXh0KTsKKwkJfQorCX0KKworCS8qIFJlc3RvcmUg bWVtb3J5IGNvbnRleHQgc3RhdGUgKi8KKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4 dCk7CisJcG9wX3N0bXRfbWNvbnRleHQoZXN0YXRlKTsKKworCS8qIFJlbGVhc2UgdGVtcG9yYXJ5 IG1lbW9yeSwgaW5jbHVkaW5nIHRoZSBhcnJheSB2YWx1ZSAqLworCU1lbW9yeUNvbnRleHRSZXNl dChzdG10X21jb250ZXh0KTsKKworCS8qCisJICogU2V0IHRoZSBGT1VORCB2YXJpYWJsZSB0byBp bmRpY2F0ZSB0aGUgcmVzdWx0IG9mIGV4ZWN1dGluZyB0aGUgbG9vcAorCSAqIChuYW1lbHksIHdo ZXRoZXIgd2UgbG9vcGVkIG9uZSBvciBtb3JlIHRpbWVzKS4gVGhpcyBtdXN0IGJlIHNldCBoZXJl IHNvCisJICogdGhhdCBpdCBkb2VzIG5vdCBpbnRlcmZlcmUgd2l0aCB0aGUgdmFsdWUgb2YgdGhl IEZPVU5EIHZhcmlhYmxlIGluc2lkZQorCSAqIHRoZSBsb29wIHByb2Nlc3NpbmcgaXRzZWxmLgor CSAqLworCWV4ZWNfc2V0X2ZvdW5kKGVzdGF0ZSwgZm91bmQpOworCisJcmV0dXJuIHJjOworfQor CiAvKiAtLS0tLS0tLS0tCiAgKiBleGVjX3N0bXRfZm9yZWFjaF9hCQkJTG9vcCBvdmVyIGVsZW1l bnRzIG9yIHNsaWNlcyBvZiBhbiBhcnJheQogICoKQEAgLTU1MzcsNiArNTc4Miw1MSBAQCBwbHBn c3FsX2V4ZWNfZ2V0X2RhdHVtX3R5cGVfaW5mbyhQTHBnU1FMX2V4ZWNzdGF0ZSAqZXN0YXRlLAog CQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgUExQR1NRTF9EVFlQRV9ST1c6CisJCQl7CisJCQkJ UExwZ1NRTF9yb3cgKnJvdyA9IChQTHBnU1FMX3JvdyAqKSBkYXR1bTsKKworCQkJCWlmICghcm93 LT5yb3d0dXBkZXNjKQorCQkJCXsKKwkJCQkJaW50CQkJaTsKKworCQkJCQlyb3ctPnJvd3R1cGRl c2MgPSBDcmVhdGVUZW1wbGF0ZVR1cGxlRGVzYyhyb3ctPm5maWVsZHMpOworCisJCQkJCWZvciAo aSA9IDA7IGkgPCByb3ctPm5maWVsZHM7IGkrKykKKwkJCQkJeworCQkJCQkJUExwZ1NRTF9kYXR1 bSAqdmFyID0gZXN0YXRlLT5kYXR1bXNbcm93LT52YXJub3NbaV1dOworCQkJCQkJT2lkCQkJdmFy dHlwaWQ7CisJCQkJCQlpbnQzMgkJdmFydHlwbW9kOworCQkJCQkJT2lkCQkJdmFyY29sbGF0aW9u OworCisJCQkJCQkvKgorCQkJCQkJICogV2UgY2Fubm90IHRvIHVzZSBmaWVsZG5hbWVzIGZvciB0 dXBkZXNjZW50cnksIGJlY2F1c2UKKwkJCQkJCSAqIHRoZXNlIG5hbWVzIGNhbiBiZSBzdWZmaXhl ZCBieSBuYW1lIG9mIHJvdyB2YXJpYWJsZS4KKwkJCQkJCSAqIFVuZm9ydHVuYXRlbHksIHRoZSBQ THBnU1FMX3JlY2ZpZWxkIGlzIG5vdCBjYXN0ZWQgdG8KKwkJCQkJCSAqIFBMcGdTUUxfdmFyaWFi bGUuCisJCQkJCQkgKi8KKwkJCQkJCXBscGdzcWxfZXhlY19nZXRfZGF0dW1fdHlwZV9pbmZvKGVz dGF0ZSwgdmFyLAorCQkJCQkJCQkJCQkJCQkgJnZhcnR5cGlkLCAmdmFydHlwbW9kLAorCQkJCQkJ CQkJCQkJCQkgJnZhcmNvbGxhdGlvbik7CisKKwkJCQkJCVR1cGxlRGVzY0luaXRFbnRyeShyb3ct PnJvd3R1cGRlc2MsIGkgKyAxLAorCQkJCQkJCQkJCSAgIHZhci0+cmVmbmFtZSwgdmFydHlwaWQs IHZhcnR5cG1vZCwKKwkJCQkJCQkJCQkgICAwKTsKKwkJCQkJCVR1cGxlRGVzY0luaXRFbnRyeUNv bGxhdGlvbihyb3ctPnJvd3R1cGRlc2MsIGkgKyAxLAorCQkJCQkJCQkJCQkJCXZhcmNvbGxhdGlv bik7CisJCQkJCX0KKworCQkJCQkvKiBNYWtlIHN1cmUgd2UgaGF2ZSBhIHZhbGlkIHR5cGUvdHlw bW9kIHNldHRpbmcgKi8KKwkJCQkJQmxlc3NUdXBsZURlc2Mocm93LT5yb3d0dXBkZXNjKTsKKwkJ CQl9CisKKwkJCQkqdHlwZUlkID0gcm93LT5yb3d0dXBkZXNjLT50ZHR5cGVpZDsKKwkJCQkqdHlw TW9kID0gcm93LT5yb3d0dXBkZXNjLT50ZHR5cG1vZDsKKwkJCQkvKiBjb21wb3NpdGUgdHlwZXMg YXJlIG5ldmVyIGNvbGxhdGFibGUgKi8KKwkJCQkqY29sbGF0aW9uID0gSW52YWxpZE9pZDsKKwkJ CQlicmVhazsKKwkJCX0KKwogCQljYXNlIFBMUEdTUUxfRFRZUEVfUkVDOgogCQkJewogCQkJCVBM cGdTUUxfcmVjICpyZWMgPSAoUExwZ1NRTF9yZWMgKikgZGF0dW07CmRpZmYgLS1naXQgYS9zcmMv cGwvcGxwZ3NxbC9zcmMvcGxfZnVuY3MuYyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9mdW5jcy5j CmluZGV4IDkyY2Q5MTE2YzBlLi43NTExZmFiN2U2OCAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscGdz cWwvc3JjL3BsX2Z1bmNzLmMKKysrIGIvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2Z1bmNzLmMKQEAg LTI1Myw2ICsyNTMsOCBAQCBwbHBnc3FsX3N0bXRfdHlwZW5hbWUoUExwZ1NRTF9zdG10ICpzdG10 KQogCQkJcmV0dXJuIF8oIkZPUiBvdmVyIGN1cnNvciIpOwogCQljYXNlIFBMUEdTUUxfU1RNVF9G T1JFQUNIX0E6CiAJCQlyZXR1cm4gXygiRk9SRUFDSCBvdmVyIGFycmF5Iik7CisJCWNhc2UgUExQ R1NRTF9TVE1UX0ZPUkVBQ0hfSlNPTl9BOgorCQkJcmV0dXJuIF8oIkZPUkVBQ0ggb3ZlciBqc29u IGFycmF5Iik7CiAJCWNhc2UgUExQR1NRTF9TVE1UX0VYSVQ6CiAJCQlyZXR1cm4gKChQTHBnU1FM X3N0bXRfZXhpdCAqKSBzdG10KS0+aXNfZXhpdCA/ICJFWElUIiA6ICJDT05USU5VRSI7CiAJCWNh c2UgUExQR1NRTF9TVE1UX1JFVFVSTjoKQEAgLTQ2Nyw2ICs0NjksMTQgQEAgcGxwZ3NxbF9zdGF0 ZW1lbnRfdHJlZV93YWxrZXJfaW1wbChQTHBnU1FMX3N0bXQgKnN0bXQsCiAJCQl7CiAJCQkJUExw Z1NRTF9zdG10X2ZvcmVhY2hfYSAqZnN0bXQgPSAoUExwZ1NRTF9zdG10X2ZvcmVhY2hfYSAqKSBz dG10OwogCisJCQkJRV9XQUxLKGZzdG10LT5leHByKTsKKwkJCQlTX0xJU1RfV0FMSyhmc3RtdC0+ Ym9keSk7CisJCQkJYnJlYWs7CisJCQl9CisJCWNhc2UgUExQR1NRTF9TVE1UX0ZPUkVBQ0hfSlNP Tl9BOgorCQkJeworCQkJCVBMcGdTUUxfc3RtdF9mb3JlYWNoX2pzb25fYSAqZnN0bXQgPSAoUExw Z1NRTF9zdG10X2ZvcmVhY2hfanNvbl9hICopIHN0bXQ7CisKIAkJCQlFX1dBTEsoZnN0bXQtPmV4 cHIpOwogCQkJCVNfTElTVF9XQUxLKGZzdG10LT5ib2R5KTsKIAkJCQlicmVhazsKQEAgLTc5NSw2 ICs4MDUsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2ZvcmkoUExwZ1NRTF9zdG10X2ZvcmkgKnN0bXQp Owogc3RhdGljIHZvaWQgZHVtcF9mb3JzKFBMcGdTUUxfc3RtdF9mb3JzICpzdG10KTsKIHN0YXRp YyB2b2lkIGR1bXBfZm9yYyhQTHBnU1FMX3N0bXRfZm9yYyAqc3RtdCk7CiBzdGF0aWMgdm9pZCBk dW1wX2ZvcmVhY2hfYShQTHBnU1FMX3N0bXRfZm9yZWFjaF9hICpzdG10KTsKK3N0YXRpYyB2b2lk IGR1bXBfZm9yZWFjaF9qc29uX2EoUExwZ1NRTF9zdG10X2ZvcmVhY2hfanNvbl9hICpzdG10KTsK IHN0YXRpYyB2b2lkIGR1bXBfZXhpdChQTHBnU1FMX3N0bXRfZXhpdCAqc3RtdCk7CiBzdGF0aWMg dm9pZCBkdW1wX3JldHVybihQTHBnU1FMX3N0bXRfcmV0dXJuICpzdG10KTsKIHN0YXRpYyB2b2lk IGR1bXBfcmV0dXJuX25leHQoUExwZ1NRTF9zdG10X3JldHVybl9uZXh0ICpzdG10KTsKQEAgLTg2 MSw2ICs4NzIsOSBAQCBkdW1wX3N0bXQoUExwZ1NRTF9zdG10ICpzdG10KQogCQljYXNlIFBMUEdT UUxfU1RNVF9GT1JFQUNIX0E6CiAJCQlkdW1wX2ZvcmVhY2hfYSgoUExwZ1NRTF9zdG10X2ZvcmVh Y2hfYSAqKSBzdG10KTsKIAkJCWJyZWFrOworCQljYXNlIFBMUEdTUUxfU1RNVF9GT1JFQUNIX0pT T05fQToKKwkJCWR1bXBfZm9yZWFjaF9qc29uX2EoKFBMcGdTUUxfc3RtdF9mb3JlYWNoX2pzb25f YSAqKSBzdG10KTsKKwkJCWJyZWFrOwogCQljYXNlIFBMUEdTUUxfU1RNVF9FWElUOgogCQkJZHVt cF9leGl0KChQTHBnU1FMX3N0bXRfZXhpdCAqKSBzdG10KTsKIAkJCWJyZWFrOwpAQCAtMTE1Nyw2 ICsxMTcxLDIxIEBAIGR1bXBfZm9yZWFjaF9hKFBMcGdTUUxfc3RtdF9mb3JlYWNoX2EgKnN0bXQp CiAJcHJpbnRmKCIgICAgRU5ERk9SRUFDSEEiKTsKIH0KIAorc3RhdGljIHZvaWQKK2R1bXBfZm9y ZWFjaF9qc29uX2EoUExwZ1NRTF9zdG10X2ZvcmVhY2hfanNvbl9hICpzdG10KQoreworCWR1bXBf aW5kKCk7CisJcHJpbnRmKCJGT1JFQUNIQSB2YXIgJWQgIiwgc3RtdC0+dmFybm8pOworCXByaW50 ZigiSU4gSlNPTiBBUlJBWSAiKTsKKwlkdW1wX2V4cHIoc3RtdC0+ZXhwcik7CisJcHJpbnRmKCJc biIpOworCisJZHVtcF9zdG10cyhzdG10LT5ib2R5KTsKKworCWR1bXBfaW5kKCk7CisJcHJpbnRm KCIgICAgRU5ERk9SRUFDSEEiKTsKK30KKwogc3RhdGljIHZvaWQKIGR1bXBfb3BlbihQTHBnU1FM X3N0bXRfb3BlbiAqc3RtdCkKIHsKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9n cmFtLnkgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZ3JhbS55CmluZGV4IDUwMDllNTlhNzhmLi4y M2I0NjViMTBkNSAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2dyYW0ueQorKysg Yi9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZ3JhbS55CkBAIC0xNzgsNiArMTc4LDcgQEAgc3RhdGlj CXZvaWQJCQljaGVja19yYWlzZV9wYXJhbWV0ZXJzKFBMcGdTUUxfc3RtdF9yYWlzZSAqc3RtdCk7 CiAJUExwZ1NRTF9kaWFnX2l0ZW0gKmRpYWdpdGVtOwogCVBMcGdTUUxfc3RtdF9mZXRjaCAqZmV0 Y2g7CiAJUExwZ1NRTF9jYXNlX3doZW4gKmNhc2V3aGVuOworCVBMcGdTUUxfc3RtdF9mb3JlYWNo ICpmb3JlYWNoOwogfQogCiAldHlwZSA8ZGVjbGhkcj4gZGVjbF9zZWN0CkBAIC0yMjAsNiArMjIx LDcgQEAgc3RhdGljCXZvaWQJCQljaGVja19yYWlzZV9wYXJhbWV0ZXJzKFBMcGdTUUxfc3RtdF9y YWlzZSAqc3RtdCk7CiAKICV0eXBlIDxjYXNld2hlbj4JY2FzZV93aGVuCiAldHlwZSA8bGlzdD4J Y2FzZV93aGVuX2xpc3Qgb3B0X2Nhc2VfZWxzZQorJXR5cGUgPGZvcmVhY2g+CWZvcmVhY2hfdHlw ZQogCiAldHlwZSA8Ym9vbGVhbj4JZ2V0ZGlhZ19hcmVhX29wdAogJXR5cGUgPGxpc3Q+CWdldGRp YWdfbGlzdApAQCAtMzQxLDYgKzM0Myw3IEBAIHN0YXRpYwl2b2lkCQkJY2hlY2tfcmFpc2VfcGFy YW1ldGVycyhQTHBnU1FMX3N0bXRfcmFpc2UgKnN0bXQpOwogJXRva2VuIDxrZXl3b3JkPglLX1BS SU5UX1NUUklDVF9QQVJBTVMKICV0b2tlbiA8a2V5d29yZD4JS19QUklPUgogJXRva2VuIDxrZXl3 b3JkPglLX1FVRVJZCisldG9rZW4gPGtleXdvcmQ+CUtfSlNPTgogJXRva2VuIDxrZXl3b3JkPglL X1JBSVNFCiAldG9rZW4gPGtleXdvcmQ+CUtfUkVMQVRJVkUKICV0b2tlbiA8a2V5d29yZD4JS19S RVRVUk4KQEAgLTE2NzEsMTYgKzE2NzQsMjkgQEAgZm9yX3ZhcmlhYmxlCTogVF9EQVRVTQogCQkJ CQl9CiAJCQkJOwogCi1zdG10X2ZvcmVhY2hfYQk6IG9wdF9sb29wX2xhYmVsIEtfRk9SRUFDSCBm b3JfdmFyaWFibGUgZm9yZWFjaF9zbGljZSBLX0lOIEtfQVJSQVkgZXhwcl91bnRpbF9sb29wIGxv b3BfYm9keQorc3RtdF9mb3JlYWNoX2EJOiBvcHRfbG9vcF9sYWJlbCBLX0ZPUkVBQ0ggZm9yX3Zh cmlhYmxlIGZvcmVhY2hfc2xpY2UgS19JTiBmb3JlYWNoX3R5cGUgZXhwcl91bnRpbF9sb29wIGxv b3BfYm9keQogCQkJCQl7Ci0JCQkJCQlQTHBnU1FMX3N0bXRfZm9yZWFjaF9hICpuZXc7CisJCQkJ CQlQTHBnU1FMX3N0bXRfZm9yZWFjaCAqbmV3OwogCi0JCQkJCQluZXcgPSBwYWxsb2MwX29iamVj dChQTHBnU1FMX3N0bXRfZm9yZWFjaF9hKTsKLQkJCQkJCW5ldy0+Y21kX3R5cGUgPSBQTFBHU1FM X1NUTVRfRk9SRUFDSF9BOworCQkJCQkJbmV3ID0gJDY7CiAJCQkJCQluZXctPmxpbmVubyA9IHBs cGdzcWxfbG9jYXRpb25fdG9fbGluZW5vKEAyLCB5eXNjYW5uZXIpOwogCQkJCQkJbmV3LT5zdG10 aWQgPSArK3BscGdzcWxfY3Vycl9jb21waWxlLT5uc3RhdGVtZW50czsKIAkJCQkJCW5ldy0+bGFi ZWwgPSAkMTsKLQkJCQkJCW5ldy0+c2xpY2UgPSAkNDsKKworCQkJCQkJaWYgKCQ0ID4gMCkKKwkJ CQkJCXsKKwkJCQkJCQkvKiBzbGljaW5nIGlzIHN1cHBvcnRlZCBvbmx5IGJ5IEZPUkVBQ0ggSU4g QVJSQVkgKi8KKwkJCQkJCQlpZiAobmV3LT5jbWRfdHlwZSA9PSBQTFBHU1FMX1NUTVRfRk9SRUFD SF9BKQorCQkJCQkJCXsKKwkJCQkJCQkJKChQTHBnU1FMX3N0bXRfZm9yZWFjaF9hICopIG5ldykt PnNsaWNlID0gJDQ7CisJCQkJCQkJfQorCQkJCQkJCWVsc2UKKwkJCQkJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCQkJ IGVycm1zZygibm90IHplcm8gc2xpY2UgaXMgYWxsb3dlZCBvbmx5IGZvciBhcnJheXMiKSwKKwkJ CQkJCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oQDQpKSk7CisJCQkJCQl9CisKIAkJCQkJCW5l dy0+ZXhwciA9ICQ3OwogCQkJCQkJbmV3LT5ib2R5ID0gJDguc3RtdHM7CiAKQEAgLTE3MTksNiAr MTczNSwxOSBAQCBmb3JlYWNoX3NsaWNlCToKIAkJCQkJfQogCQkJCTsKIAorZm9yZWFjaF90eXBl CToKKwkJCQkgIEtfQVJSQVkKKwkJCQkJeworCQkJCQkJJCQgPSAoUExwZ1NRTF9zdG10X2ZvcmVh Y2ggKikgcGFsbG9jMF9vYmplY3QoUExwZ1NRTF9zdG10X2ZvcmVhY2hfYSk7CisJCQkJCQkkJC0+ Y21kX3R5cGUgPSBQTFBHU1FMX1NUTVRfRk9SRUFDSF9BOworCQkJCQl9CisJCQkJfCBLX0pTT04g S19BUlJBWQorCQkJCQl7CisJCQkJCQkkJCA9IChQTHBnU1FMX3N0bXRfZm9yZWFjaCAqKSBwYWxs b2MwX29iamVjdChQTHBnU1FMX3N0bXRfZm9yZWFjaF9qc29uX2EpOworCQkJCQkJJCQtPmNtZF90 eXBlID0gUExQR1NRTF9TVE1UX0ZPUkVBQ0hfSlNPTl9BOworCQkJCQl9CisJCQkJOworCiBzdG10 X2V4aXQJCTogZXhpdF90eXBlIG9wdF9sYWJlbCBvcHRfZXhpdGNvbmQKIAkJCQkJewogCQkJCQkJ UExwZ1NRTF9zdG10X2V4aXQgKm5ldzsKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHBnc3FsL3NyYy9w bF91bnJlc2VydmVkX2t3bGlzdC5oIGIvc3JjL3BsL3BscGdzcWwvc3JjL3BsX3VucmVzZXJ2ZWRf a3dsaXN0LmgKaW5kZXggNjM3OWU4NmM4Y2IuLmQ3NTg4ZDNiNGFkIDEwMDY0NAotLS0gYS9zcmMv cGwvcGxwZ3NxbC9zcmMvcGxfdW5yZXNlcnZlZF9rd2xpc3QuaAorKysgYi9zcmMvcGwvcGxwZ3Nx bC9zcmMvcGxfdW5yZXNlcnZlZF9rd2xpc3QuaApAQCAtNjksNiArNjksNyBAQCBQR19LRVlXT1JE KCJpbXBvcnQiLCBLX0lNUE9SVCkKIFBHX0tFWVdPUkQoImluZm8iLCBLX0lORk8pCiBQR19LRVlX T1JEKCJpbnNlcnQiLCBLX0lOU0VSVCkKIFBHX0tFWVdPUkQoImlzIiwgS19JUykKK1BHX0tFWVdP UkQoImpzb24iLCBLX0pTT04pCiBQR19LRVlXT1JEKCJsYXN0IiwgS19MQVNUKQogUEdfS0VZV09S RCgibG9nIiwgS19MT0cpCiBQR19LRVlXT1JEKCJtZXJnZSIsIEtfTUVSR0UpCmRpZmYgLS1naXQg YS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxwZ3NxbC5oIGIvc3JjL3BsL3BscGdzcWwvc3JjL3BscGdz cWwuaAppbmRleCBhZGRiMTRhOTk1OS4uYzU3YjFkYTliOTUgMTAwNjQ0Ci0tLSBhL3NyYy9wbC9w bHBnc3FsL3NyYy9wbHBnc3FsLmgKKysrIGIvc3JjL3BsL3BscGdzcWwvc3JjL3BscGdzcWwuaApA QCAtMTEyLDYgKzExMiw3IEBAIHR5cGVkZWYgZW51bSBQTHBnU1FMX3N0bXRfdHlwZQogCVBMUEdT UUxfU1RNVF9GT1JTLAogCVBMUEdTUUxfU1RNVF9GT1JDLAogCVBMUEdTUUxfU1RNVF9GT1JFQUNI X0EsCisJUExQR1NRTF9TVE1UX0ZPUkVBQ0hfSlNPTl9BLAogCVBMUEdTUUxfU1RNVF9FWElULAog CVBMUEdTUUxfU1RNVF9SRVRVUk4sCiAJUExQR1NRTF9TVE1UX1JFVFVSTl9ORVhULApAQCAtMjk5 LDYgKzMwMCw3IEBAIHR5cGVkZWYgc3RydWN0IFBMcGdTUUxfZGF0dW0KIHsKIAlQTHBnU1FMX2Rh dHVtX3R5cGUgZHR5cGU7CiAJaW50CQkJZG5vOworCWNoYXIJICAgKnJlZm5hbWU7CiB9IFBMcGdT UUxfZGF0dW07CiAKIC8qCkBAIC00NDQsOSArNDQ2LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUExwZ1NR TF9yZWNmaWVsZAogewogCVBMcGdTUUxfZGF0dW1fdHlwZSBkdHlwZTsKIAlpbnQJCQlkbm87CisJ Y2hhcgkgICAqZmllbGRuYW1lOwkJLyogbmFtZSBvZiBmaWVsZCAqLwogCS8qIGVuZCBvZiBQTHBn U1FMX2RhdHVtIGZpZWxkcyAqLwogCi0JY2hhcgkgICAqZmllbGRuYW1lOwkJLyogbmFtZSBvZiBm aWVsZCAqLwogCWludAkJCXJlY3BhcmVudG5vOwkvKiBkbm8gb2YgcGFyZW50IHJlY29yZCAqLwog CWludAkJCW5leHRmaWVsZDsJCS8qIGRubyBvZiBuZXh0IGNoaWxkLCBvciAtMSBpZiBub25lICov CiAJdWludDY0CQlyZWN0dXBsZWRlc2NpZDsgLyogcmVjb3JkJ3MgdHVwbGVkZXNjIElEIGFzIG9m IGxhc3QgbG9va3VwICovCkBAIC03NjYsNiArNzY4LDIwIEBAIHR5cGVkZWYgc3RydWN0IFBMcGdT UUxfc3RtdF9keW5mb3JzCiAJTGlzdAkgICAqcGFyYW1zOwkJCS8qIFVTSU5HIGV4cHJlc3Npb25z ICovCiB9IFBMcGdTUUxfc3RtdF9keW5mb3JzOwogCisvKgorICogRk9SRUFDSCBsb29wIChhbmNl c3RvciBJTiBBUlJBWSBhbmQgSU4gSlNPTiBBUlJBWSBsb29wKQorICovCit0eXBlZGVmIHN0cnVj dCBQTHBnU1FMX3N0bXRfZm9yZWFjaAoreworCVBMcGdTUUxfc3RtdF90eXBlIGNtZF90eXBlOwor CWludAkJCWxpbmVubzsKKwl1bnNpZ25lZCBpbnQgc3RtdGlkOworCWNoYXIJICAgKmxhYmVsOwor CWludAkJCXZhcm5vOwkJCS8qIGxvb3AgdGFyZ2V0IHZhcmlhYmxlICovCisJUExwZ1NRTF9leHBy ICpleHByOwkJCS8qIHNldCBleHByZXNzaW9uICovCisJTGlzdAkgICAqYm9keTsJCQkvKiBMaXN0 IG9mIHN0YXRlbWVudHMgKi8KK30gUExwZ1NRTF9zdG10X2ZvcmVhY2g7CisKIC8qCiAgKiBGT1JF QUNIIGl0ZW0gaW4gYXJyYXkgbG9vcAogICovCkBAIC03NzYsMTEgKzc5MiwyNyBAQCB0eXBlZGVm IHN0cnVjdCBQTHBnU1FMX3N0bXRfZm9yZWFjaF9hCiAJdW5zaWduZWQgaW50IHN0bXRpZDsKIAlj aGFyCSAgICpsYWJlbDsKIAlpbnQJCQl2YXJubzsJCQkvKiBsb29wIHRhcmdldCB2YXJpYWJsZSAq LwotCWludAkJCXNsaWNlOwkJCS8qIHNsaWNlIGRpbWVuc2lvbiwgb3IgMCAqLwogCVBMcGdTUUxf ZXhwciAqZXhwcjsJCQkvKiBhcnJheSBleHByZXNzaW9uICovCiAJTGlzdAkgICAqYm9keTsJCQkv KiBMaXN0IG9mIHN0YXRlbWVudHMgKi8KKwkvKiBlbmQgb2YgZmllbGRzIHRoYXQgbXVzdCBtYXRj aCBQTHBnU1FMX3N0bXRfZm9yZWFjaCAqLworCWludAkJCXNsaWNlOwkJCS8qIHNsaWNlIGRpbWVu c2lvbiwgb3IgMCAqLwogfSBQTHBnU1FMX3N0bXRfZm9yZWFjaF9hOwogCisvKgorICogRk9SRUFD SCBpdGVtIGluIGFycmF5IGxvb3AKKyAqLwordHlwZWRlZiBzdHJ1Y3QgUExwZ1NRTF9zdG10X2Zv cmVhY2hfanNvbl9hCit7CisJUExwZ1NRTF9zdG10X3R5cGUgY21kX3R5cGU7CisJaW50CQkJbGlu ZW5vOworCXVuc2lnbmVkIGludCBzdG10aWQ7CisJY2hhcgkgICAqbGFiZWw7CisJaW50CQkJdmFy bm87CQkJLyogbG9vcCB0YXJnZXQgdmFyaWFibGUgKi8KKwlQTHBnU1FMX2V4cHIgKmV4cHI7CQkJ LyogYXJyYXkgZXhwcmVzc2lvbiAqLworCUxpc3QJICAgKmJvZHk7CQkJLyogTGlzdCBvZiBzdGF0 ZW1lbnRzICovCisJLyogZW5kIG9mIGZpZWxkcyB0aGF0IG11c3QgbWF0Y2ggUExwZ1NRTF9zdG10 X2ZvcmVhY2ggKi8KK30gUExwZ1NRTF9zdG10X2ZvcmVhY2hfanNvbl9hOworCiAvKgogICogT1BF TiBhIGN1cnZhcgogICovCmRpZmYgLS1naXQgYS9zcmMvcGwvcGxwZ3NxbC9zcmMvc3FsL3BscGdz cWxfZm9yZWFjaC5zcWwgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvc3FsL3BscGdzcWxfZm9yZWFjaC5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjMzYWNiOGY5MjRjCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL3BsL3BscGdzcWwvc3JjL3NxbC9wbHBnc3FsX2ZvcmVhY2gu c3FsCkBAIC0wLDAgKzEsMTU5IEBACistLSBudW1lcmljIHRvIG51bWVyaWMKK2RvICQkCitkZWNs YXJlIHggbnVtZXJpYzsKK2JlZ2luCisgIGZvcmVhY2ggeCBpbiBqc29uIGFycmF5ICdbMTAsMjAs MzAsMy4xNCwgbnVsbF0nCisgIGxvb3AKKyAgICByYWlzZSBub3RpY2UgJyUnLCB4OworICBlbmQg bG9vcDsKK2VuZDsKKyQkOworCistLSBudW1lcmljIHRvIGludCBieSBjYXN0CitkbyAkJAorZGVj bGFyZSB4IGludDsKK2JlZ2luCisgIGZvcmVhY2ggeCBpbiBqc29uIGFycmF5ICdbMTAsMjAsMzAs My4xNCwgbnVsbF0nCisgIGxvb3AKKyAgICByYWlzZSBub3RpY2UgJyUnLCB4OworICBlbmQgbG9v cDsKK2VuZDsKKyQkOworCistLSBjb252ZXJzaW9uICIzLjE0IiB0byBpbnQgc2hvdWxkIHRvIGZh aWwgZHVlIElPIGNhc3QKK2RvICQkCitkZWNsYXJlIHggaW50OworYmVnaW4KKyAgZm9yZWFjaCB4 IGluIGpzb24gYXJyYXkgJ1siMTAiLDIwLDMwLCIzLjE0Il0nCisgIGxvb3AKKyAgICByYWlzZSBu b3RpY2UgJyUnLCB4OworICBlbmQgbG9vcDsKK2VuZDsKKyQkOworCitkbyAkJAorZGVjbGFyZSB4 IGJvb2xlYW47CitiZWdpbgorICBmb3JlYWNoIHggaW4ganNvbiBhcnJheSAnW3RydWUsIGZhbHNl XScKKyAgbG9vcAorICBpZiB4IHRoZW4KKyAgICByYWlzZSBub3RpY2UgJ3RydWUnOworICBlbHNl CisgICAgcmFpc2Ugbm90aWNlICdmYWxzZSc7CisgIGVuZCBpZjsKKyAgZW5kIGxvb3A7CitlbmQ7 CiskJDsKKworLS0ganNvbmIgdG8ganNvbmIKK2RvICQkCitkZWNsYXJlIHgganNvbmI7CitiZWdp bgorICBmb3JlYWNoIHggaW4ganNvbiBhcnJheSAnWzEwLDIwLDMwLDMuMTQsIG51bGwsICJIaSJd JworICBsb29wCisgICAgcmFpc2Ugbm90aWNlICclJywgeDsKKyAgZW5kIGxvb3A7CitlbmQ7Cisk JDsKKworLS0ganNvbmIgdG8ganNvbgorZG8gJCQKK2RlY2xhcmUgeCBqc29uOworYmVnaW4KKyAg Zm9yZWFjaCB4IGluIGpzb24gYXJyYXkgJ1sxMCwyMCwzMCwzLjE0LCBudWxsLCAiSGkiXScKKyAg bG9vcAorICAgIHJhaXNlIG5vdGljZSAnJScsIHg7CisgIGVuZCBsb29wOworZW5kOworJCQ7CisK Ky0tIGl0ZXJhdGlvbiBvdmVyIGNvbXBvc2l0ZXMKK2RvICQkCitkZWNsYXJlIHggaW50OyB5IG51 bWVyaWM7IHogdmFyY2hhcjsKK2JlZ2luCisgIGZvcmVhY2ggeCwgeSwgeiBpbiBqc29uIGFycmF5 ICdbe30sIHsieiI6IkhpIn0sIHsieSI6IDMuMTR9LCB7InoiOiJIaSIsICJ4IjoxMCwgInkiOjMu MTR9XScKKyAgbG9vcAorICAgIHJhaXNlIG5vdGljZSAneDogJSwgeTogJSwgejogJScsIHgsIHks IHo7CisgIGVuZCBsb29wOworZW5kOworJCQ7CisKK2NyZWF0ZSB0eXBlIHQzIGFzICh4IGludCwg eSBudW1lcmljLCB6IHZhcmNoYXIpOworCitkbyAkJAorZGVjbGFyZSBjIHQzOworYmVnaW4KKyAg Zm9yZWFjaCBjIGluIGpzb24gYXJyYXkgJ1t7fSwgeyJ6IjoiSGkifSwgeyJ5IjogMy4xNH0sIHsi eiI6IkhpIiwgIngiOjEwLCAieSI6My4xNH1dJworICBsb29wCisgICAgcmFpc2Ugbm90aWNlICd4 OiAlLCB5OiAlLCB6OiAlJywgYy54LCBjLnksIGMuejsKKyAgZW5kIGxvb3A7CitlbmQ7CiskJDsK KworZG8gJCQKK2RlY2xhcmUgYyB0MzsKK2JlZ2luCisgIGZvcmVhY2ggYy54LCBjLnksIGMueiBp biBqc29uIGFycmF5ICdbe30sIHsieiI6IkhpIn0sIHsieSI6IDMuMTR9LCB7InoiOiJIaSIsICJ4 IjoxMCwgInkiOjMuMTR9XScKKyAgbG9vcAorICAgIHJhaXNlIG5vdGljZSAneDogJSwgeTogJSwg ejogJScsIGMueCwgYy55LCBjLno7CisgIGVuZCBsb29wOworZW5kOworJCQ7CisKK2Ryb3AgdHlw ZSB0MzsKKworLS0gdGFyZ2V0IGNhbiBiZSBhIGFycmF5CitkbyAkJAorZGVjbGFyZSB4IGludFtd OworYmVnaW4KKyAgZm9yZWFjaCB4IGluIGpzb24gYXJyYXkgJ1tbMSwyLDNdLFs0LDUsNl1dJwor ICBsb29wCisgICAgcmFpc2Ugbm90aWNlICclICUgJScsIHhbMV0sIHhbMl0sIHhbM107CisgIGVu ZCBsb29wOworZW5kOworJCQ7CisKK2RvICQkCitkZWNsYXJlIHggdmFyY2hhcltdOworYmVnaW4K KyAgZm9yZWFjaCB4IGluIGpzb24gYXJyYXkgJ1tbIkhpIiwiSGVsbG8iXSxbIkhlbGxvIiwiSGki XV0nCisgIGxvb3AKKyAgICByYWlzZSBub3RpY2UgJyUgJScsIHhbMV0sIHhbMl07CisgIGVuZCBs b29wOworZW5kOworJCQ7CisKK2RvICQkCitkZWNsYXJlIHggdmFyY2hhcltdOworYmVnaW4KKyAg Zm9yZWFjaCB4IGluIGpzb24gYXJyYXkgJ1tbIkhpIiwiSGVsbG8iXSxbIkhlbGxvIiwiSGkiXV0n CisgIGxvb3AKKyAgICByYWlzZSBub3RpY2UgJyUgJScsIHhbMV0sIHhbMl07CisgIGVuZCBsb29w OworZW5kOworJCQ7CisKKworZG8gJCQKK2RlY2xhcmUgeCBpbnRbXTsgeSB2YXJjaGFyOworYmVn aW4KKyAgZm9yZWFjaCB4LCB5IGluIGpzb24gYXJyYXkgJ1t7IngiOlsxLDIsM10sICJ5IjoiSGki fSwgeyJ4IjpbNCw1LDZdLCAieSI6IkhpIn1dJworICBsb29wCisgICAgcmFpc2Ugbm90aWNlICcl ICUgJSwgeTogJScsIHhbMV0sIHhbMl0sIHhbM10sIHk7CisgIGVuZCBsb29wOworZW5kOworJCQ7 CisKK2NyZWF0ZSB0eXBlIHQyIGFzICh4IGludFtdLCB5IHZhcmNoYXIpOworCitkbyAkJAorZGVj bGFyZSBjIHQyOworYmVnaW4KKyAgZm9yZWFjaCBjIGluIGpzb24gYXJyYXkgJ1t7IngiOlsxLDIs M10sICJ5IjoiSGkifSwgeyJ4IjpbNCw1LDZdLCAieSI6IkhpIn1dJworICBsb29wCisgICAgcmFp c2Ugbm90aWNlICclICUgJSwgeTogJScsIGMueFsxXSwgYy54WzJdLCBjLnhbM10sIGMueTsKKyAg ZW5kIGxvb3A7CitlbmQ7CiskJDsKKworZHJvcCB0eXBlIHQyOwotLSAKMi41My4wCgo= --00000000000070d8a8064bfba6e8--