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 1wEqTA-004TTF-3D for pgsql-hackers@arkaria.postgresql.org; Mon, 20 Apr 2026 15:23:29 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wEqT8-003cgH-1i for pgsql-hackers@arkaria.postgresql.org; Mon, 20 Apr 2026 15:23:26 +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.96) (envelope-from ) id 1wEqT7-003cfy-2X for pgsql-hackers@lists.postgresql.org; Mon, 20 Apr 2026 15:23:26 +0000 Received: from mail-dy1-x132d.google.com ([2607:f8b0:4864:20::132d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wEqT3-00000001wVC-40pX for pgsql-hackers@postgresql.org; Mon, 20 Apr 2026 15:23:24 +0000 Received: by mail-dy1-x132d.google.com with SMTP id 5a478bee46e88-2de831d2b20so6156130eec.1 for ; Mon, 20 Apr 2026 08:23:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776698601; x=1777303401; darn=postgresql.org; h=in-reply-to:references:to:from:subject:message-id:date:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=0BkL2Suz7aN79A+iF2lQ/ew4RjzeV53zRo2V05Y9aKY=; b=p8lAAPic/QgJGZDjzOIWll6Oi2GnoJhULNd6RqzZRF82OdvzNGaLCVvG4rr4Wv4ykD I9MEFgDpXmCQ1Q8C/S7vSXABs7cmm0J8lK2UrWynpxAiLmKZRzYDTZMfCLxiVeNnp33Y EwgYq31sXMLKNa3bAyFKS4BnNoqPjuR3K8R+A9ZJrYKKSXNaiI0aocR8c4TG2Fi1LBG1 OgO7kM7BvPrBBGgfK5U+Sk6aoVUJECk5Dq6ADzlc7vy9TbZ32XEtpI8bH1sbB5/zhe4p cHu38M2dktx2Yos4rDmPiPS/6OFWKfkzoIuGYG12WR9hKAYQCiai5/rWH4s8Fe5oOCcD NSyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776698601; x=1777303401; h=in-reply-to:references:to:from:subject:message-id:date:mime-version :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=0BkL2Suz7aN79A+iF2lQ/ew4RjzeV53zRo2V05Y9aKY=; b=oRtGgLJFoiLI7qf4hejBSliTCN36fAR2htAlgD9hzF9vx0HeBKWsPubkRnTe20gkiD ATbh9bDdlS95K5exeFNuryW9f8s9ClpdIEa64dD/eDv6j72DneFvnawd3bIV1GbPrpt0 MDEAvyFtkH7rTVURSwAheTu8E/RT77q1yh2iqE9Mg+J1c3DHOA9aRXm0aigPgqnAUze6 seVYDTABvoZa4PVbNl+CqnoXmXC1MjdNcNqnEDZMEfhGOhaDlQCop/2+BDyNWi5Q/PJ1 LsbxcFbbVS3ehLdOf2Q/siefnWQZTgOM+y0uRtPTwZNFTWuJEi0rI5kG1YxYxDkf1ikJ LJDQ== X-Forwarded-Encrypted: i=1; AFNElJ+QzB2n8nAI3VpvZSjxUCu4XRJwwLpGQQPzIA3tUOigOAXAvpEu9tYWxuvBC4br1Ue9ALvV69lFIlZZVxYP@postgresql.org X-Gm-Message-State: AOJu0Yxgnz3BuZGwQSxqUEBiExWH+5NsziTQ5eAOpQMG3kUNwt3w4Stv DoOq6tmkLl1TA20Of3XQ3XfZ2sUA8VKuuzzKYhB3sZG+LcSGqXR+QE+4z9j10g== X-Gm-Gg: AeBDieuV1pWUQBVdfBGBNue8R1TPUYjbU3YsOPsbC05YItOCK8uU6JX4OWGafOaIFxu B6jHKjTBERBEJfwtGxV6NAk0oueV4n483fuJquTAJ35t5hh+8OoGi4TzirodU0/hmoMkMcttR/t D3YOBSqOOK6oS9Cwg8Kq57JaIGr9QwAkw7CN9DOwqJWNU2D4JoS8SKyJdPAseQjwH/i5AVYC/7n etNbA6R6UXfX5SjBD2jWjroSBzVpzRHkzLFbw/23xauGm/ykf+17U4avCJq/zkVDhUXcfNMj6tg hREYCZk7rKMYTqqIZZ8B60OFA8And9slym8LE/zR5FxLBsUTf5ATW3Ry4wie+WANUZlWwzC/+U+ e0sOcbtpKUmVkWE2z5UpJYki8pk/hHDwNADggi1NLaf/21Q3zSuMYv/kdII/gy2wnsfOsvMp21x RooFgqkYmewoF4cj+2lUWf2BqedjwvJEc9xpPBconZsfNHaWNVOkagNwo= X-Received: by 2002:a05:7300:d50e:b0:2da:44ac:6d0d with SMTP id 5a478bee46e88-2e478a33164mr7948434eec.20.1776698600815; Mon, 20 Apr 2026 08:23:20 -0700 (PDT) Received: from localhost ([2804:14d:328a:a59c:1d2e:1a2e:40ed:c0f]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2e53ab8b89csm15062547eec.12.2026.04.20.08.23.18 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 20 Apr 2026 08:23:19 -0700 (PDT) Content-Type: multipart/mixed; boundary=160600dc93c40466392d542fc2504b45075cfc591bcee1970a5bee093bcf Mime-Version: 1.0 Date: Mon, 20 Apr 2026 12:23:15 -0300 Message-Id: Subject: Re: MERGE PARTITIONS and DEPENDS ON EXTENSION. From: "Matheus Alcantara" To: "Dmitry Koval" , "pgsql-hackers" X-Mailer: aerc 0.21.0 References: <31d04a1b-c0cb-4e6f-a344-0db048a3b673@gmail.com> <414c3430-77a9-438e-9dc0-c66033f6be63@postgrespro.ru> <4401e209-85ac-40ea-a68c-e69e07c0fc49@postgrespro.ru> In-Reply-To: <4401e209-85ac-40ea-a68c-e69e07c0fc49@postgrespro.ru> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --160600dc93c40466392d542fc2504b45075cfc591bcee1970a5bee093bcf Content-Type: multipart/alternative; boundary=79f426db694e501f3c7a07a3ec45129ecafd880a4d676f268e1cbf0b8693 --79f426db694e501f3c7a07a3ec45129ecafd880a4d676f268e1cbf0b8693 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8 On Sun Apr 19, 2026 at 9:04 PM -03, Dmitry Koval wrote: > Hi Matheus! > > >v3-0001-Preserve-extension-dependencies-on-indexes-during.patch > > I looked patch and did not find problems. But there is one point:=20 > extensions btree_gist, btree_gin, citext are not included by default. > So command > > > ./configure --enable-debug --enable-cassert --prefix `pwd`/install > > >/dev/null && make -s && make install -s && make check > > generates errors like > > ERROR: extension "btree_gist" is not available > ERROR: extension "btree_gin" is not available > ERROR: extension "citext" is not available > > Might be it would be better to use for tests extensions from the > catalog src/test/modules/test_extensions (see test > src/test/modules/test_extensions/sql/test_extdepend.sql)? > Thanks for looking at this! Yeah, some build farm animals will not be happy with these new tests. Fixed on new attached v4 to use extensions from src/test/modules/test_extensions. > >extension dependencies on parent partitioned indexes don't seem to > >prevent DROP EXTENSION, but dependencies on child partition indexes > >do. ... > > I agree, it looks strange ... > I'll start a new thread to discuss this. -- Matheus Alcantara EDB: https://www.enterprisedb.com --79f426db694e501f3c7a07a3ec45129ecafd880a4d676f268e1cbf0b8693-- --160600dc93c40466392d542fc2504b45075cfc591bcee1970a5bee093bcf Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v4-0001-Preserve-extension-dependencies-on-indexes-during.patch Content-Type: text/plain; charset=utf-8; name=v4-0001-Preserve-extension-dependencies-on-indexes-during.patch RnJvbSAyOGIyMjRmODZlMTc5MWRhNjM1ZDUxYjdjOGE0ZjhiMDRkZWQ3Y2VlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXRoZXVzIEFsY2FudGFyYSA8bXRocy5kZXZAcG0ubWU+CkRh dGU6IFdlZCwgMTEgTWFyIDIwMjYgMTE6Mzk6NTYgLTAzMDAKU3ViamVjdDogW1BBVENIIHY0XSBQ cmVzZXJ2ZSBleHRlbnNpb24gZGVwZW5kZW5jaWVzIG9uIGluZGV4ZXMgZHVyaW5nCiBwYXJ0aXRp b24gbWVyZ2Uvc3BsaXQKCldoZW4gdXNpbmcgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElP TlMgb3IgQUxURVIgVEFCTEUgLi4uIFNQTElUClBBUlRJVElPTiwgZXh0ZW5zaW9uIGRlcGVuZGVu Y2llcyBvbiBwYXJ0aXRpb24gaW5kZXhlcyAoY3JlYXRlZCB2aWEKQUxURVIgSU5ERVggLi4uIERF UEVORFMgT04gRVhURU5TSU9OKSB3ZXJlIGJlaW5nIGxvc3QuIFRoaXMgaGFwcGVuZWQKYmVjYXVz ZSB0aGUgbmV3IHBhcnRpdGlvbiBpbmRleGVzIGFyZSBjcmVhdGVkIGZyZXNoIGZyb20gdGhlIHBh cmVudApwYXJ0aXRpb25lZCB0YWJsZSdzIGluZGV4ZXMsIHdoaWxlIHRoZSBvbGQgcGFydGl0aW9u IGluZGV4ZXMgKHdpdGgKdGhlaXIgZXh0ZW5zaW9uIGRlcGVuZGVuY2llcykgYXJlIGRyb3BwZWQu CgpGaXggdGhpcyBieSBjb2xsZWN0aW5nIGV4dGVuc2lvbiBkZXBlbmRlbmNpZXMgZnJvbSBzb3Vy Y2UgcGFydGl0aW9uCmluZGV4ZXMgYmVmb3JlIGRldGFjaGluZyB0aGVtLCB0aGVuIGFwcGx5aW5n IHRob3NlIGRlcGVuZGVuY2llcyB0bwp0aGUgY29ycmVzcG9uZGluZyBuZXcgcGFydGl0aW9uIGlu ZGV4ZXMgYWZ0ZXIgdGhleSdyZSBjcmVhdGVkLiBUaGUKbWFwcGluZyBiZXR3ZWVuIG9sZCBhbmQg bmV3IGluZGV4ZXMgaXMgZG9uZSB2aWEgdGhlaXIgY29tbW9uIHBhcmVudApwYXJ0aXRpb25lZCBp bmRleC4KCkZvciBNRVJHRSBvcGVyYXRpb25zLCBvbmx5IGV4dGVuc2lvbiBkZXBlbmRlbmNpZXMg dGhhdCBleGlzdCBvbiBBTEwKc291cmNlIHBhcnRpdGlvbiBpbmRleGVzIGFyZSBwcmVzZXJ2ZWQg b24gdGhlIG1lcmdlZCBwYXJ0aXRpb24ncyBpbmRleC4KRm9yIGV4YW1wbGU6CiAgTUVSR0UoaWR4 MShleHRfYSwgZXh0X2IpLCBpZHgyKGV4dF9hKSkgLT4gaWR4MyhleHRfYSkKICBNRVJHRShpZHgx KGV4dF9hKSwgaWR4MigpKSAtPiBpZHgzKCkgIC0tIG5vIGNvbW1vbiBkZXBzCgpGb3IgU1BMSVQg b3BlcmF0aW9ucywgdGhlIG5ldyBwYXJ0aXRpb24gaW5kZXhlcyBzaW1wbHkgaW5oZXJpdCBhbGwK ZXh0ZW5zaW9uIGRlcGVuZGVuY2llcyBmcm9tIHRoZSBzb3VyY2UgcGFydGl0aW9uJ3MgaW5kZXgu CgpBbHNvIGFkZHMgbGlzdF9pbnRlcnNlY3Rpb25fb2lkKCkgdG8gc3VwcG9ydCB0aGUgaW50ZXJz ZWN0aW9uIGxvZ2ljLgoKQXV0aG9yOiBNYXRoZXVzIEFsY2FudGFyYSA8bWF0aGV1c3NzaWx2OTdA Z21haWwuY29tPgpSZXBvcnRlZC1ieTogS2lyaWxsIFJlc2hrZQpSZXZpZXdlZC1ieTogRG1pdHJ5 IEtvdmFsIDxkLmtvdmFsQHBvc3RncmVzcHJvLnJ1PgpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5w b3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL0NBTGRTU1BqWHR6R003VWs0ZldSd1JNWGNDY3pnZTV1 TmlyUFFjWUNIS1BBV1BrcDlpUSU0MG1haWwuZ21haWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL3Jl Zi9hbHRlcl90YWJsZS5zZ21sICAgICAgICAgICAgIHwgIDIwICsrCiBzcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAyNTEgKysrKysrKysrKysrKysrKysrCiBz cmMvYmFja2VuZC9ub2Rlcy9saXN0LmMgICAgICAgICAgICAgICAgICAgICAgfCAgMjYgKysKIHNy Yy9pbmNsdWRlL25vZGVzL3BnX2xpc3QuaCAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQgfCAxMDEgKysrKysrKwog c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0IHwgIDQxICsrKwog c3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX21lcmdlLnNxbCAgICAgIHwgIDkyICsrKysr KysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwgICAgICB8ICAzOSAr KysKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgMSAr CiA5IGZpbGVzIGNoYW5nZWQsIDU3MiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJs ZS5zZ21sCmluZGV4IDQ1MzM5NWM1YzczLi41ZGRlM2NlNTdmMSAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJf dGFibGUuc2dtbApAQCAtMTI1NSw2ICsxMjU1LDE4IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVN CiAgICAgICAoc2VlIDx4cmVmIGxpbmtlbmQ9ImRkbC1kZXBlbmQiLz4pLgogICAgICA8L3BhcmE+ CiAKKyAgICAgPHBhcmE+CisgICAgICBFeHRlbnNpb24gZGVwZW5kZW5jaWVzIG9uIHBhcnRpdGlv biBpbmRleGVzIChjcmVhdGVkIHZpYQorICAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWFsdGVyaW5k ZXgiPjxjb21tYW5kPkFMVEVSIElOREVYIC4uLiBERVBFTkRTIE9OCisgICAgICBFWFRFTlNJT048 L2NvbW1hbmQ+PC9saW5rPikgYXJlIHByZXNlcnZlZCBkdXJpbmcgbWVyZ2Ugb3BlcmF0aW9ucy4K KyAgICAgIFdoZW4gbWVyZ2luZyBwYXJ0aXRpb25zLCBvbmx5IGV4dGVuc2lvbiBkZXBlbmRlbmNp ZXMgdGhhdCBleGlzdCBvbgorICAgICAgPGVtcGhhc2lzPmFsbDwvZW1waGFzaXM+IHNvdXJjZSBw YXJ0aXRpb24gaW5kZXhlcyBhcmUgcHJlc2VydmVkIG9uCisgICAgICB0aGUgbWVyZ2VkIHBhcnRp dGlvbidzIGNvcnJlc3BvbmRpbmcgaW5kZXguICBGb3IgZXhhbXBsZSwgaWYgdHdvCisgICAgICBw YXJ0aXRpb25zIGFyZSBtZXJnZWQgYW5kIG9ubHkgb25lIHBhcnRpdGlvbidzIGluZGV4IGRlcGVu ZHMgb24gYW4KKyAgICAgIGV4dGVuc2lvbiwgdGhhdCBkZXBlbmRlbmN5IHdpbGwgbm90IGJlIGNh cnJpZWQgb3ZlciB0byB0aGUgbWVyZ2VkCisgICAgICBwYXJ0aXRpb24ncyBpbmRleC4KKyAgICAg PC9wYXJhPgorCiAgICAgIDxub3RlPgogICAgICAgPHBhcmE+CiAgICAgICAgTWVyZ2luZyBwYXJ0 aXRpb25zIGFjcXVpcmVzIGFuIDxsaXRlcmFsPkFDQ0VTUyBFWENMVVNJVkU8L2xpdGVyYWw+IGxv Y2sgb24KQEAgLTEzNDIsNiArMTM1NCwxNCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAg ICAgd291bGQgZmFpbCAoc2VlIDx4cmVmIGxpbmtlbmQ9ImRkbC1kZXBlbmQiLz4pLgogICAgICA8 L3BhcmE+CiAKKyAgICAgPHBhcmE+CisgICAgICBFeHRlbnNpb24gZGVwZW5kZW5jaWVzIG9uIHBh cnRpdGlvbiBpbmRleGVzIChjcmVhdGVkIHZpYQorICAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWFs dGVyaW5kZXgiPjxjb21tYW5kPkFMVEVSIElOREVYIC4uLiBERVBFTkRTIE9OCisgICAgICBFWFRF TlNJT048L2NvbW1hbmQ+PC9saW5rPikgYXJlIHByZXNlcnZlZCBkdXJpbmcgc3BsaXQgb3BlcmF0 aW9ucy4KKyAgICAgIFRoZSBuZXcgcGFydGl0aW9ucycgaW5kZXhlcyB3aWxsIGluaGVyaXQgdGhl IGV4dGVuc2lvbiBkZXBlbmRlbmNpZXMKKyAgICAgIGZyb20gdGhlIHNvdXJjZSBwYXJ0aXRpb24n cyBpbmRleGVzLgorICAgICA8L3BhcmE+CisKICAgICAgPG5vdGU+CiAgICAgICA8cGFyYT4KICAg ICAgICBTcGxpdCBwYXJ0aXRpb24gYWNxdWlyZXMgYW4gPGxpdGVyYWw+QUNDRVNTIEVYQ0xVU0lW RTwvbGl0ZXJhbD4gbG9jayBvbgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBlZWMwOWJh MWRlZC4uMTRhZGIwODlkZjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC00MCw2ICs0 MCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xsYXRpb24uaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX2NvbnN0cmFpbnQuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2RlcGVuZC5oIgorI2lu Y2x1ZGUgImNhdGFsb2cvcGdfZXh0ZW5zaW9uX2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2Zv cmVpZ25fdGFibGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2luaGVyaXRzLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19sYXJnZW9iamVjdC5oIgpAQCAtMzY1LDYgKzM2NiwxOSBAQCB0eXBlZGVm IGVudW0gYWRkRmtDb25zdHJhaW50U2lkZXMKIAlhZGRGa0JvdGhTaWRlcywKIH0gYWRkRmtDb25z dHJhaW50U2lkZXM7CiAKKy8qCisgKiBIb2xkIGV4dGVuc2lvbiBkZXBlbmRlbmNpZXMgZm9yIGEg cGFydGl0aW9uZWQgaW5kZXguIFVzZWQgYnkKKyAqIGNvbGxlY3RQYXJ0aXRpb25JbmRleEV4dERl cHMgYW5kIGFwcGx5UGFydGl0aW9uSW5kZXhFeHREZXBzLgorICoKKyAqIEV4dGVuc2lvbiBkZXBl bmRlbmNpZXMgYXJlIGNyZWF0ZWQgb24gdGhlIG5ldyBwYXJ0aXRpb24gYmFzZWQKKyAqIG9uIHRo ZSBpbmRleGVzIHRoYXQgc2hhcmUgdGhlIHNhbWUgcGFyZW50IGluZGV4IG9pZC4KKyAqLwordHlw ZWRlZiBzdHJ1Y3QgUGFydGl0aW9uSW5kZXhFeHREZXBFbnRyeQoreworCU9pZAkJCXBhcmVudElu ZGV4T2lkOyAvKiBPSUQgb2YgdGhlIHBhcmVudCBwYXJ0aXRpb25lZCBpbmRleCAqLworCUxpc3QJ ICAgKmV4dGVuc2lvbk9pZHM7CS8qIExpc3Qgb2YgZXh0ZW5zaW9uIE9JRHMgdGhpcyBpbmRleCBk ZXBlbmRzICovCit9IFBhcnRpdGlvbkluZGV4RXh0RGVwRW50cnk7CisKIC8qCiAgKiBQYXJ0aXRp b24gdGFibGVzIGFyZSBleHBlY3RlZCB0byBiZSBkcm9wcGVkIHdoZW4gdGhlIHBhcmVudCBwYXJ0 aXRpb25lZAogICogdGFibGUgZ2V0cyBkcm9wcGVkLiBIZW5jZSBmb3IgcGFydGl0aW9uaW5nIHdl IHVzZSBBVVRPIGRlcGVuZGVuY3kuCkBAIC03NjAsNiArNzc0LDkgQEAgc3RhdGljIHZvaWQgQVRF eGVjTWVyZ2VQYXJ0aXRpb25zKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwg UmVsYXRpb24KIHN0YXRpYyB2b2lkIEFURXhlY1NwbGl0UGFydGl0aW9uKExpc3QgKip3cXVldWUs IEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKIAkJCQkJCQkJIFJlbGF0aW9uIHJlbCwgUGFydGl0aW9u Q21kICpjbWQsCiAJCQkJCQkJCSBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpOwor c3RhdGljIExpc3QgKmNvbGxlY3RQYXJ0aXRpb25JbmRleEV4dERlcHMoTGlzdCAqcGFydGl0aW9u T2lkcyk7CitzdGF0aWMgdm9pZCBhcHBseVBhcnRpdGlvbkluZGV4RXh0RGVwcyhPaWQgbmV3UGFy dE9pZCwgTGlzdCAqZXh0RGVwU3RhdGUpOworc3RhdGljIHZvaWQgZnJlZVBhcnRpdGlvbkluZGV4 RXh0RGVwcyhMaXN0ICpleHREZXBTdGF0ZSk7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlEZWZpbmVSZWxh dGlvbgpAQCAtMjMwMDAsNiArMjMwMTcsMjAxIEBAIGRldGFjaFBhcnRpdGlvblRhYmxlKFJlbGF0 aW9uIHBhcmVudF9yZWwsIFJlbGF0aW9uIGNoaWxkX3JlbCwgT2lkIGRlZmF1bHRQYXJ0T2lkCiAJ UG9wQWN0aXZlU25hcHNob3QoKTsKIH0KIAorLyoKKyAqIGNvbGxlY3RQYXJ0aXRpb25JbmRleEV4 dERlcHM6IGNvbGxlY3QgZXh0ZW5zaW9uIGRlcGVuZGVuY2llcyBmcm9tIGluZGV4ZXMKKyAqIG9u IHRoZSBnaXZlbiBwYXJ0aXRpb25zLgorICoKKyAqIEZvciBlYWNoIHBhcnRpdGlvbiBpbmRleCB0 aGF0IGhhcyBhIHBhcmVudCBwYXJ0aXRpb25lZCBpbmRleCwgd2UgY29sbGVjdAorICogZXh0ZW5z aW9uIGRlcGVuZGVuY2llcy4gRGVwZW5kZW5jaWVzIGFyZSBzdG9yZWQgZ3JvdXBlZCBieSBwYXJl bnQgaW5kZXggT0lELgorICoKKyAqIFdoZW4gbXVsdGlwbGUgcGFydGl0aW9ucyBoYXZlIGluZGV4 ZXMgd2l0aCB0aGUgc2FtZSBwYXJlbnQsIG9ubHkgdGhlCisgKiBpbnRlcnNlY3Rpb24gb2YgdGhl aXIgZXh0ZW5zaW9uIGRlcGVuZGVuY2llcyBpcyBrZXB0LiBUaGlzIGVuc3VyZXMgdGhhdAorICog YWZ0ZXIgbWVyZ2UsIHRoZSBuZXcgcGFydGl0aW9uJ3MgaW5kZXggb25seSBoYXMgZGVwZW5kZW5j aWVzIHRoYXQgQUxMCisgKiBzb3VyY2UgcGFydGl0aW9uIGluZGV4ZXMgaGFkLiBGb3IgZXhhbXBs ZToKKyAqCisgKiAgIE1FUkdFKElOREVYMShFWFRfQSwgRVhUX0IpLCBJTkRFWDIoRVhUX0EpKSAt PiBJTkRFWDMoRVhUX0EpCisgKiAgIE1FUkdFKElOREVYMShFWFRfQSksIElOREVYMigpKSAtPiBJ TkRFWDMoKSAgLS0gbm8gY29tbW9uIGRlcHMKKyAqCisgKiBJbmRleGVzIHRoYXQgZG9uJ3QgaGF2 ZSBhIHBhcmVudCBwYXJ0aXRpb25lZCBpbmRleCAoaS5lLiwgaW5kZXhlcyBjcmVhdGVkCisgKiBk aXJlY3RseSBvbiBhIHBhcnRpdGlvbiB3aXRob3V0IGEgY29ycmVzcG9uZGluZyBwYXJlbnQgaW5k ZXgpIGFyZSBza2lwcGVkLgorICoKKyAqIFJldHVybnMgYSBsaXN0IG9mIFBhcnRpdGlvbkluZGV4 RXh0RGVwRW50cnkgc3RydWN0cy4KKyAqLworc3RhdGljIExpc3QgKgorY29sbGVjdFBhcnRpdGlv bkluZGV4RXh0RGVwcyhMaXN0ICpwYXJ0aXRpb25PaWRzKQoreworCUxpc3QJICAgKnJlc3VsdCA9 IE5JTDsKKworCWZvcmVhY2hfb2lkKHBhcnRPaWQsIHBhcnRpdGlvbk9pZHMpCisJeworCQlSZWxh dGlvbglwYXJ0UmVsOworCQlMaXN0CSAgICppbmRleExpc3Q7CisKKwkJLyoKKwkJICogVXNlIE5v TG9jayBzaW5jZSB0aGUgY2FsbGVyIGFscmVhZHkgaG9sZHMgQWNjZXNzRXhjbHVzaXZlTG9jayBv bgorCQkgKiB0aGVzZSBwYXJ0aXRpb25zLgorCQkgKi8KKwkJcGFydFJlbCA9IHRhYmxlX29wZW4o cGFydE9pZCwgTm9Mb2NrKTsKKwkJaW5kZXhMaXN0ID0gUmVsYXRpb25HZXRJbmRleExpc3QocGFy dFJlbCk7CisKKwkJZm9yZWFjaF9vaWQoaW5kZXhPaWQsIGluZGV4TGlzdCkKKwkJeworCQkJT2lk CQkJcGFyZW50SW5kZXhPaWQ7CisJCQlMaXN0CSAgICpleHREZXBzOworCQkJUGFydGl0aW9uSW5k ZXhFeHREZXBFbnRyeSAqZW50cnkgPSBOVUxMOworCisJCQkvKiBHZXQgdGhlIHBhcmVudCBpbmRl eCBpZiB0aGlzIGlzIGEgcGFydGl0aW9uIGluZGV4ICovCisJCQlpZiAoIWdldF9yZWxfcmVsaXNw YXJ0aXRpb24oaW5kZXhPaWQpKQorCQkJCWNvbnRpbnVlOworCisJCQlwYXJlbnRJbmRleE9pZCA9 IGdldF9wYXJ0aXRpb25fcGFyZW50KGluZGV4T2lkLCB0cnVlKTsKKwkJCWlmICghT2lkSXNWYWxp ZChwYXJlbnRJbmRleE9pZCkpCisJCQkJY29udGludWU7CisKKwkJCS8qIEdldCBleHRlbnNpb24g ZGVwZW5kZW5jaWVzIGZvciB0aGlzIGluZGV4LiAqLworCQkJZXh0RGVwcyA9IGdldEF1dG9FeHRl bnNpb25zT2ZPYmplY3QoUmVsYXRpb25SZWxhdGlvbklkLCBpbmRleE9pZCk7CisKKwkJCS8qIExv b2sgZm9yIGV4aXN0aW5nIHBhcnRpdGlvbiBlbnRyeSBmb3IgdGhpcyBwYXJlbnQgaW5kZXggKi8K KwkJCWZvcmVhY2hfcHRyKFBhcnRpdGlvbkluZGV4RXh0RGVwRW50cnksIGUsIHJlc3VsdCkKKwkJ CXsKKwkJCQlpZiAoZS0+cGFyZW50SW5kZXhPaWQgPT0gcGFyZW50SW5kZXhPaWQpCisJCQkJewor CQkJCQllbnRyeSA9IGU7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKworCQkJaWYgKGV4dERl cHMgPT0gTklMKQorCQkJeworCQkJCS8qCisJCQkJICogVGhpcyBpbmRleCBoYXMgbm8gZXh0ZW5z aW9uIGRlcGVuZGVuY2llcy4gU2luY2Ugd2Ugb25seQorCQkJCSAqIHByZXNlcnZlIGRlcGVuZGVu Y2llcyB0aGF0IGV4aXN0IG9uIEFMTCBzb3VyY2UgcGFydGl0aW9uCisJCQkJICogaW5kZXhlcywg ZmluZGluZyBvbmUgaW5kZXggd2l0aG91dCBkZXBzIG1lYW5zIHRoZSByZXN1bHQKKwkJCQkgKiBm b3IgdGhpcyBwYXJlbnQgaW5kZXggbXVzdCBiZSBlbXB0eS4KKwkJCQkgKi8KKwkJCQlpZiAoZW50 cnkgIT0gTlVMTCkKKwkJCQl7CisJCQkJCWxpc3RfZnJlZShlbnRyeS0+ZXh0ZW5zaW9uT2lkcyk7 CisJCQkJCWVudHJ5LT5leHRlbnNpb25PaWRzID0gTklMOworCQkJCX0KKwkJCQkvKiBObyBuZWVk IHRvIGNyZWF0ZSBhbiBlbnRyeSBmb3Igbm8gZGVwcyBpZiBub25lIGV4aXN0cyAqLworCQkJfQor CQkJZWxzZSBpZiAoZW50cnkgIT0gTlVMTCkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFdlIGFscmVh ZHkgaGF2ZSBhbiBlbnRyeSBmb3IgdGhpcyBwYXJlbnQgaW5kZXggZnJvbSBhCisJCQkJICogcHJl dmlvdXMgcGFydGl0aW9uLiBDb21wdXRlIHRoZSBpbnRlcnNlY3Rpb24gdG8ga2VlcCBvbmx5CisJ CQkJICogZGVwcyB0aGF0IGV4aXN0IG9uIGJvdGguCisJCQkJICovCisJCQkJTGlzdAkgICAqb2xk ID0gZW50cnktPmV4dGVuc2lvbk9pZHM7CisKKwkJCQllbnRyeS0+ZXh0ZW5zaW9uT2lkcyA9IGxp c3RfaW50ZXJzZWN0aW9uX29pZChvbGQsIGV4dERlcHMpOworCQkJCWxpc3RfZnJlZShvbGQpOwor CQkJCWxpc3RfZnJlZShleHREZXBzKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQkvKgorCQkJ CSAqIEZpcnN0IHBhcnRpdGlvbiBpbmRleCB3ZSd2ZSBzZWVuIGZvciB0aGlzIHBhcmVudC4gQ3Jl YXRlIGEKKwkJCQkgKiBuZXcgZW50cnkgd2l0aCBhbGwgaXRzIGRlcGVuZGVuY2llcyAtIHN1YnNl cXVlbnQgcGFydGl0aW9ucworCQkJCSAqIHdpbGwgbmFycm93IHRoaXMgZG93biB2aWEgaW50ZXJz ZWN0aW9uLgorCQkJCSAqLworCQkJCWVudHJ5ID0gcGFsbG9jKHNpemVvZihQYXJ0aXRpb25JbmRl eEV4dERlcEVudHJ5KSk7CisJCQkJZW50cnktPnBhcmVudEluZGV4T2lkID0gcGFyZW50SW5kZXhP aWQ7CisJCQkJZW50cnktPmV4dGVuc2lvbk9pZHMgPSBleHREZXBzOworCQkJCXJlc3VsdCA9IGxh cHBlbmQocmVzdWx0LCBlbnRyeSk7CisJCQl9CisJCX0KKworCQlsaXN0X2ZyZWUoaW5kZXhMaXN0 KTsKKwkJdGFibGVfY2xvc2UocGFydFJlbCwgTm9Mb2NrKTsKKwl9CisKKwlyZXR1cm4gcmVzdWx0 OworfQorCisvKgorICogYXBwbHlQYXJ0aXRpb25JbmRleEV4dERlcHM6IGFwcGx5IGNvbGxlY3Rl ZCBleHRlbnNpb24gZGVwZW5kZW5jaWVzIHRvCisgKiBpbmRleGVzIG9uIGEgbmV3IHBhcnRpdGlv bi4KKyAqCisgKiBGb3IgZWFjaCBpbmRleCBvbiB0aGUgbmV3IHBhcnRpdGlvbiwgbG9vayB1cCBp dHMgcGFyZW50IGluZGV4IGluIHRoZQorICogZXh0RGVwU3RhdGUgbGlzdC4gSWYgZm91bmQsIHJl Y29yZCBleHRlbnNpb24gZGVwZW5kZW5jaWVzIG9uIHRoZSBuZXcgaW5kZXguCisgKi8KK3N0YXRp YyB2b2lkCithcHBseVBhcnRpdGlvbkluZGV4RXh0RGVwcyhPaWQgbmV3UGFydE9pZCwgTGlzdCAq ZXh0RGVwU3RhdGUpCit7CisJUmVsYXRpb24JcGFydFJlbDsKKwlMaXN0CSAgICppbmRleExpc3Q7 CisKKwlpZiAoZXh0RGVwU3RhdGUgPT0gTklMKQorCQlyZXR1cm47CisKKwkvKgorCSAqIFVzZSBO b0xvY2sgc2luY2UgdGhlIGNhbGxlciBhbHJlYWR5IGhvbGRzIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sg b24gdGhlCisJICogbmV3IHBhcnRpdGlvbi4KKwkgKi8KKwlwYXJ0UmVsID0gdGFibGVfb3Blbihu ZXdQYXJ0T2lkLCBOb0xvY2spOworCWluZGV4TGlzdCA9IFJlbGF0aW9uR2V0SW5kZXhMaXN0KHBh cnRSZWwpOworCisJZm9yZWFjaF9vaWQoaW5kZXhPaWQsIGluZGV4TGlzdCkKKwl7CisJCU9pZAkJ CXBhcmVudElkeE9pZDsKKwkJTGlzdENlbGwgICAqbGM7CisKKwkJLyogU2tpcCBpZiB0aGlzIGlz IG5vdCBhIHBhcnRpdGlvbiBpbmRleCAqLworCQlpZiAoIWdldF9yZWxfcmVsaXNwYXJ0aXRpb24o aW5kZXhPaWQpKQorCQkJY29udGludWU7CisKKwkJcGFyZW50SWR4T2lkID0gZ2V0X3BhcnRpdGlv bl9wYXJlbnQoaW5kZXhPaWQsIHRydWUpOworCQlpZiAoIU9pZElzVmFsaWQocGFyZW50SWR4T2lk KSkKKwkJCWNvbnRpbnVlOworCisJCS8qIExvb2sgZm9yIGV4dGVuc2lvbiBkZXBlbmRlbmNpZXMg dG8gYXBwbHkgKi8KKwkJZm9yZWFjaChsYywgZXh0RGVwU3RhdGUpCisJCXsKKwkJCVBhcnRpdGlv bkluZGV4RXh0RGVwRW50cnkgKmVudHJ5ID0gbGZpcnN0KGxjKTsKKworCQkJaWYgKGVudHJ5LT5w YXJlbnRJbmRleE9pZCA9PSBwYXJlbnRJZHhPaWQpCisJCQl7CisJCQkJT2JqZWN0QWRkcmVzcyBp bmRleEFkZHI7CisKKwkJCQlPYmplY3RBZGRyZXNzU2V0KGluZGV4QWRkciwgUmVsYXRpb25SZWxh dGlvbklkLCBpbmRleE9pZCk7CisKKwkJCQlmb3JlYWNoX29pZChleHRPaWQsIGVudHJ5LT5leHRl bnNpb25PaWRzKQorCQkJCXsKKwkJCQkJT2JqZWN0QWRkcmVzcyBleHRBZGRyOworCisJCQkJCU9i amVjdEFkZHJlc3NTZXQoZXh0QWRkciwgRXh0ZW5zaW9uUmVsYXRpb25JZCwgZXh0T2lkKTsKKwkJ CQkJcmVjb3JkRGVwZW5kZW5jeU9uKCZpbmRleEFkZHIsICZleHRBZGRyLAorCQkJCQkJCQkJICAg REVQRU5ERU5DWV9BVVRPX0VYVEVOU0lPTik7CisJCQkJfQorCQkJCWJyZWFrOworCQkJfQorCQl9 CisJfQorCisJbGlzdF9mcmVlKGluZGV4TGlzdCk7CisJdGFibGVfY2xvc2UocGFydFJlbCwgTm9M b2NrKTsKK30KKworLyoKKyAqIGZyZWVQYXJ0aXRpb25JbmRleEV4dERlcHM6IGZyZWUgbWVtb3J5 IGFsbG9jYXRlZCBieSBjb2xsZWN0UGFydGl0aW9uSW5kZXhFeHREZXBzLgorICovCitzdGF0aWMg dm9pZAorZnJlZVBhcnRpdGlvbkluZGV4RXh0RGVwcyhMaXN0ICpleHREZXBTdGF0ZSkKK3sKKwlM aXN0Q2VsbCAgICpsYzsKKworCWZvcmVhY2gobGMsIGV4dERlcFN0YXRlKQorCXsKKwkJUGFydGl0 aW9uSW5kZXhFeHREZXBFbnRyeSAqZW50cnkgPSBsZmlyc3QobGMpOworCisJCWxpc3RfZnJlZShl bnRyeS0+ZXh0ZW5zaW9uT2lkcyk7CisJCXBmcmVlKGVudHJ5KTsKKwl9CisJbGlzdF9mcmVlKGV4 dERlcFN0YXRlKTsKK30KKwogLyoKICAqIEFMVEVSIFRBQkxFIDxuYW1lPiBNRVJHRSBQQVJUSVRJ T05TIDxwYXJ0aXRpb24tbGlzdD4gSU5UTyA8cGFydGl0aW9uLW5hbWU+CiAgKi8KQEAgLTIzMDA5 LDYgKzIzMjIxLDcgQEAgQVRFeGVjTWVyZ2VQYXJ0aXRpb25zKExpc3QgKip3cXVldWUsIEFsdGVy ZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogewogCVJlbGF0aW9uCW5ld1BhcnRSZWw7 CiAJTGlzdAkgICAqbWVyZ2luZ1BhcnRpdGlvbnMgPSBOSUw7CisJTGlzdAkgICAqZXh0RGVwU3Rh dGUgPSBOSUw7CiAJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CiAJT2lkCQkJZXhpc3RpbmdSZWxpZDsK IAlPaWQJCQlvd25lcklkID0gSW52YWxpZE9pZDsKQEAgLTIzMDk4LDYgKzIzMzExLDEzIEBAIEFU RXhlY01lcmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIs IFJlbGF0aW9uIHJlbCwKIAlkZWZhdWx0UGFydE9pZCA9CiAJCWdldF9kZWZhdWx0X29pZF9mcm9t X3BhcnRkZXNjKFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhyZWwsIHRydWUpKTsKIAorCS8qCisJ ICogQ29sbGVjdCBleHRlbnNpb24gZGVwZW5kZW5jaWVzIGZyb20gaW5kZXhlcyBvbiB0aGUgbWVy Z2luZyBwYXJ0aXRpb25zLgorCSAqIFdlIG11c3QgZG8gdGhpcyBiZWZvcmUgZGV0YWNoaW5nIHRo ZW0sIHNvIHdlIGNhbiByZXN0b3JlIHRoZQorCSAqIGRlcGVuZGVuY2llcyBvbiB0aGUgbmV3IHBh cnRpdGlvbidzIGluZGV4ZXMgbGF0ZXIuCisJICovCisJZXh0RGVwU3RhdGUgPSBjb2xsZWN0UGFy dGl0aW9uSW5kZXhFeHREZXBzKG1lcmdpbmdQYXJ0aXRpb25zKTsKKwogCS8qIERldGFjaCBhbGwg bWVyZ2luZyBwYXJ0aXRpb25zLiAqLwogCWZvcmVhY2hfb2lkKG1lcmdpbmdQYXJ0aXRpb25PaWQs IG1lcmdpbmdQYXJ0aXRpb25zKQogCXsKQEAgLTIzMTc1LDYgKzIzMzk1LDE1IEBAIEFURXhlY01l cmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0 aW9uIHJlbCwKIAkgKi8KIAlhdHRhY2hQYXJ0aXRpb25UYWJsZShOVUxMLCByZWwsIG5ld1BhcnRS ZWwsIGNtZC0+Ym91bmQpOwogCisJLyoKKwkgKiBBcHBseSBleHRlbnNpb24gZGVwZW5kZW5jaWVz IHRvIHRoZSBuZXcgcGFydGl0aW9uJ3MgaW5kZXhlcy4gVGhpcworCSAqIHByZXNlcnZlcyBhbnkg IkRFUEVORFMgT04gRVhURU5TSU9OIiBzZXR0aW5ncyBmcm9tIHRoZSBtZXJnZWQKKwkgKiBwYXJ0 aXRpb25zLgorCSAqLworCWFwcGx5UGFydGl0aW9uSW5kZXhFeHREZXBzKFJlbGF0aW9uR2V0UmVs aWQobmV3UGFydFJlbCksIGV4dERlcFN0YXRlKTsKKworCWZyZWVQYXJ0aXRpb25JbmRleEV4dERl cHMoZXh0RGVwU3RhdGUpOworCiAJLyogS2VlcCB0aGUgbG9jayB1bnRpbCBjb21taXQuICovCiAJ dGFibGVfY2xvc2UobmV3UGFydFJlbCwgTm9Mb2NrKTsKIApAQCAtMjM0NjksMTEgKzIzNjk4LDEz IEBAIEFURXhlY1NwbGl0UGFydGl0aW9uKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8g KnRhYiwgUmVsYXRpb24gcmVsLAogCWJvb2wJCWlzU2FtZU5hbWUgPSBmYWxzZTsKIAljaGFyCQl0 bXBSZWxOYW1lW05BTUVEQVRBTEVOXTsKIAlMaXN0CSAgICpuZXdQYXJ0UmVscyA9IE5JTDsKKwlM aXN0CSAgICpleHREZXBTdGF0ZSA9IE5JTDsKIAlPYmplY3RBZGRyZXNzIG9iamVjdDsKIAlPaWQJ CQlkZWZhdWx0UGFydE9pZDsKIAlPaWQJCQlzYXZlX3VzZXJpZDsKIAlpbnQJCQlzYXZlX3NlY19j b250ZXh0OwogCWludAkJCXNhdmVfbmVzdGxldmVsOworCUxpc3QJICAgKnNwbGl0UGFydExpc3Q7 CiAKIAlkZWZhdWx0UGFydE9pZCA9IGdldF9kZWZhdWx0X29pZF9mcm9tX3BhcnRkZXNjKFJlbGF0 aW9uR2V0UGFydGl0aW9uRGVzYyhyZWwsIHRydWUpKTsKIApAQCAtMjM1MDYsNiArMjM3MzcsMTYg QEAgQVRFeGVjU3BsaXRQYXJ0aXRpb24oTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAq dGFiLCBSZWxhdGlvbiByZWwsCiAJCQkJCWVycm1zZygicmVsYXRpb24gXCIlc1wiIGFscmVhZHkg ZXhpc3RzIiwgc3BzLT5uYW1lLT5yZWxuYW1lKSk7CiAJfQogCisJLyoKKwkgKiBDb2xsZWN0IGV4 dGVuc2lvbiBkZXBlbmRlbmNpZXMgZnJvbSBpbmRleGVzIG9uIHRoZSBzcGxpdCBwYXJ0aXRpb24u IFdlCisJICogbXVzdCBkbyB0aGlzIGJlZm9yZSBkZXRhY2hpbmcgaXQsIHNvIHdlIGNhbiByZXN0 b3JlIHRoZSBkZXBlbmRlbmNpZXMgb24KKwkgKiB0aGUgbmV3IHBhcnRpdGlvbnMnIGluZGV4ZXMg bGF0ZXIuCisJICovCisJc3BsaXRQYXJ0TGlzdCA9IGxpc3RfbWFrZTFfb2lkKHNwbGl0UmVsT2lk KTsKKworCWV4dERlcFN0YXRlID0gY29sbGVjdFBhcnRpdGlvbkluZGV4RXh0RGVwcyhzcGxpdFBh cnRMaXN0KTsKKwlsaXN0X2ZyZWUoc3BsaXRQYXJ0TGlzdCk7CisKIAkvKiBEZXRhY2ggdGhlIHNw bGl0IHBhcnRpdGlvbi4gKi8KIAlkZXRhY2hQYXJ0aXRpb25UYWJsZShyZWwsIHNwbGl0UmVsLCBk ZWZhdWx0UGFydE9pZCk7CiAKQEAgLTIzNTg1LDEwICsyMzgyNiwyMCBAQCBBVEV4ZWNTcGxpdFBh cnRpdGlvbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJl bCwKIAkJICogbmVlZGVkLgogCQkgKi8KIAkJYXR0YWNoUGFydGl0aW9uVGFibGUoTlVMTCwgcmVs LCBuZXdQYXJ0UmVsLCBzcHMtPmJvdW5kKTsKKworCQkvKgorCQkgKiBBcHBseSBleHRlbnNpb24g ZGVwZW5kZW5jaWVzIHRvIHRoZSBuZXcgcGFydGl0aW9uJ3MgaW5kZXhlcy4gVGhpcworCQkgKiBw cmVzZXJ2ZXMgYW55ICJERVBFTkRTIE9OIEVYVEVOU0lPTiIgc2V0dGluZ3MgZnJvbSB0aGUgc3Bs aXQKKwkJICogcGFydGl0aW9uLgorCQkgKi8KKwkJYXBwbHlQYXJ0aXRpb25JbmRleEV4dERlcHMo UmVsYXRpb25HZXRSZWxpZChuZXdQYXJ0UmVsKSwgZXh0RGVwU3RhdGUpOworCiAJCS8qIEtlZXAg dGhlIGxvY2sgdW50aWwgY29tbWl0LiAqLwogCQl0YWJsZV9jbG9zZShuZXdQYXJ0UmVsLCBOb0xv Y2spOwogCX0KIAorCWZyZWVQYXJ0aXRpb25JbmRleEV4dERlcHMoZXh0RGVwU3RhdGUpOworCiAJ LyogRHJvcCB0aGUgc3BsaXQgcGFydGl0aW9uLiAqLwogCW9iamVjdC5jbGFzc0lkID0gUmVsYXRp b25SZWxhdGlvbklkOwogCW9iamVjdC5vYmplY3RJZCA9IHNwbGl0UmVsT2lkOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvbm9kZXMvbGlzdC5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbGlzdC5jCmlu ZGV4IDk4ZmMyYjQ0YjUwLi4wYWY2MzNkZTEzMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9k ZXMvbGlzdC5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2xpc3QuYwpAQCAtMTIxOSw2ICsxMjE5 LDMyIEBAIGxpc3RfaW50ZXJzZWN0aW9uX2ludChjb25zdCBMaXN0ICpsaXN0MSwgY29uc3QgTGlz dCAqbGlzdDIpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAqIEFzIGxpc3RfaW50ZXJzZWN0 aW9uIGJ1dCBvcGVyYXRlcyBvbiBsaXN0cyBvZiBvaWRzLgorICovCitMaXN0ICoKK2xpc3RfaW50 ZXJzZWN0aW9uX29pZChjb25zdCBMaXN0ICpsaXN0MSwgY29uc3QgTGlzdCAqbGlzdDIpCit7CisJ TGlzdAkgICAqcmVzdWx0OworCWNvbnN0IExpc3RDZWxsICpjZWxsOworCisJaWYgKGxpc3QxID09 IE5JTCB8fCBsaXN0MiA9PSBOSUwpCisJCXJldHVybiBOSUw7CisKKwlBc3NlcnQoSXNPaWRMaXN0 KGxpc3QxKSk7CisJQXNzZXJ0KElzT2lkTGlzdChsaXN0MikpOworCisJcmVzdWx0ID0gTklMOwor CWZvcmVhY2goY2VsbCwgbGlzdDEpCisJeworCQlpZiAobGlzdF9tZW1iZXJfb2lkKGxpc3QyLCBs Zmlyc3Rfb2lkKGNlbGwpKSkKKwkJCXJlc3VsdCA9IGxhcHBlbmRfb2lkKHJlc3VsdCwgbGZpcnN0 X29pZChjZWxsKSk7CisJfQorCisJY2hlY2tfbGlzdF9pbnZhcmlhbnRzKHJlc3VsdCk7CisJcmV0 dXJuIHJlc3VsdDsKK30KKwogLyoKICAqIFJldHVybiBhIGxpc3QgdGhhdCBjb250YWlucyBhbGwg dGhlIGNlbGxzIGluIGxpc3QxIHRoYXQgYXJlIG5vdCBpbgogICogbGlzdDIuIFRoZSByZXR1cm5l ZCBsaXN0IGlzIGZyZXNobHkgYWxsb2NhdGVkIHZpYSBwYWxsb2MoKSwgYnV0IHRoZQpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGdfbGlzdC5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGdf bGlzdC5oCmluZGV4IGU5M2JjYmYyNjk4Li5lMGYyOWFhMTEzOSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvbm9kZXMvcGdfbGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BnX2xpc3QuaApA QCAtNjgxLDYgKzY4MSw3IEBAIGV4dGVybiBMaXN0ICpsaXN0X3VuaW9uX29pZChjb25zdCBMaXN0 ICpsaXN0MSwgY29uc3QgTGlzdCAqbGlzdDIpOwogCiBleHRlcm4gTGlzdCAqbGlzdF9pbnRlcnNl Y3Rpb24oY29uc3QgTGlzdCAqbGlzdDEsIGNvbnN0IExpc3QgKmxpc3QyKTsKIGV4dGVybiBMaXN0 ICpsaXN0X2ludGVyc2VjdGlvbl9pbnQoY29uc3QgTGlzdCAqbGlzdDEsIGNvbnN0IExpc3QgKmxp c3QyKTsKK2V4dGVybiBMaXN0ICpsaXN0X2ludGVyc2VjdGlvbl9vaWQoY29uc3QgTGlzdCAqbGlz dDEsIGNvbnN0IExpc3QgKmxpc3QyKTsKIAogLyogY3VycmVudGx5LCB0aGVyZSdzIG5vIG5lZWQg Zm9yIGxpc3RfaW50ZXJzZWN0aW9uX3B0ciBldGMgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uub3V0CmluZGV4IDg4MzExMGUyNWQ5Li41YmQ0MGMxNGE3 ZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uu b3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91dApA QCAtMTA5MSw2ICsxMDkxLDEwNyBAQCBTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAx NSBBTkQgZyBJTiAoU0VMRUNUIGcgKyAxMCBGUk9NIHQgV0hFUkUgaSA9IDUpOwogKDEgcm93KQog CiBEUk9QIFRBQkxFIHQ7CistLQorLS0gVGVzdCB0aGF0IGV4dGVuc2lvbiBkZXBlbmRlbmNpZXMg b24gcGFydGl0aW9uIGluZGV4ZXMgYXJlIHByZXNlcnZlZAorLS0gYWZ0ZXIgTUVSR0UgUEFSVElU SU9OUy4KKy0tCitDUkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMgdGVzdF9leHQzOworQ1JF QVRFIEVYVEVOU0lPTiBJRiBOT1QgRVhJU1RTIHRlc3RfZXh0NTsKK0NSRUFURSBUQUJMRSB0X21l cmdlX2V4dGRlcCAoaSBpbnQsIHggaW50LCB5IGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsK K0NSRUFURSBUQUJMRSB0X21lcmdlX2V4dGRlcF8xIFBBUlRJVElPTiBPRiB0X21lcmdlX2V4dGRl cCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0NSRUFURSBUQUJMRSB0X21lcmdlX2V4dGRl cF8yIFBBUlRJVElPTiBPRiB0X21lcmdlX2V4dGRlcCBGT1IgVkFMVUVTIEZST00gKDIpIFRPICgz KTsKK0NSRUFURSBUQUJMRSB0X21lcmdlX2V4dGRlcF8zIFBBUlRJVElPTiBPRiB0X21lcmdlX2V4 dGRlcCBGT1IgVkFMVUVTIEZST00gKDMpIFRPICg0KTsgLS0gRG9uJ3QgaGF2ZSBhIGRlcGVuZGVu Y3kKK0NSRUFURSBUQUJMRSB0X21lcmdlX2V4dGRlcF80IFBBUlRJVElPTiBPRiB0X21lcmdlX2V4 dGRlcCBGT1IgVkFMVUVTIEZST00gKDQpIFRPICg1KTsKK0NSRUFURSBUQUJMRSB0X21lcmdlX2V4 dGRlcF81IFBBUlRJVElPTiBPRiB0X21lcmdlX2V4dGRlcCBGT1IgVkFMVUVTIEZST00gKDUpIFRP ICg2KTsKK0NSRUFURSBJTkRFWCB0X21lcmdlX2V4dGRlcF9pZHggT04gdF9tZXJnZV9leHRkZXAo aSk7CitDUkVBVEUgSU5ERVggdF9tZXJnZV9leHRkZXBfeCBPTiB0X21lcmdlX2V4dGRlcCh4KTsK Ky0tIEFkZCBleHRlbnNpb24gZGVwZW5kZW5jeSBmb3Igc29tZSBwYXJ0aXRpb24gaW5kZXhlcwor QUxURVIgSU5ERVggdF9tZXJnZV9leHRkZXBfMV9pX2lkeCBERVBFTkRTIE9OIEVYVEVOU0lPTiB0 ZXN0X2V4dDM7CitBTFRFUiBJTkRFWCB0X21lcmdlX2V4dGRlcF8xX3hfaWR4IERFUEVORFMgT04g RVhURU5TSU9OIHRlc3RfZXh0NTsKK0FMVEVSIElOREVYIHRfbWVyZ2VfZXh0ZGVwXzJfaV9pZHgg REVQRU5EUyBPTiBFWFRFTlNJT04gdGVzdF9leHQzOworQUxURVIgSU5ERVggdF9tZXJnZV9leHRk ZXBfMl94X2lkeCBERVBFTkRTIE9OIEVYVEVOU0lPTiB0ZXN0X2V4dDU7CistLSBBZGQgYSBkaWZm ZXJlbnQgZXh0ZW5zaW9uIGRlcGVuZGVuY3kgdG8gZW5zdXJlIHRoYXQgb25seSBpbmRleGVzIHdp dGggdGhlCistLSBzYW1lIGRlcGVuZGVuY2llcyBoYXMgdGhlIGRlcGVuZGVuY2llcyBwcmVzZXJ2 ZWQuCitBTFRFUiBJTkRFWCB0X21lcmdlX2V4dGRlcF80X2lfaWR4IERFUEVORFMgT04gRVhURU5T SU9OIHRlc3RfZXh0NTsKK0FMVEVSIElOREVYIHRfbWVyZ2VfZXh0ZGVwXzRfeF9pZHggREVQRU5E UyBPTiBFWFRFTlNJT04gdGVzdF9leHQ1OworLS0gU2hvdWxkIGZhaWw6IGRlcGVuZGVuY2llcyBl eGlzdAorRFJPUCBFWFRFTlNJT04gdGVzdF9leHQzOworRVJST1I6ICBjYW5ub3QgZHJvcCBpbmRl eCB0X21lcmdlX2V4dGRlcF8yX2lfaWR4IGJlY2F1c2UgaW5kZXggdF9tZXJnZV9leHRkZXBfaWR4 IHJlcXVpcmVzIGl0CitISU5UOiAgWW91IGNhbiBkcm9wIGluZGV4IHRfbWVyZ2VfZXh0ZGVwX2lk eCBpbnN0ZWFkLgorLS0gTWVyZ2UgcGFydGl0aW9ucworQUxURVIgVEFCTEUgdF9tZXJnZV9leHRk ZXAgTUVSR0UgUEFSVElUSU9OUyAodF9tZXJnZV9leHRkZXBfMSwgdF9tZXJnZV9leHRkZXBfMikg SU5UTyB0X21lcmdlX2V4dGRlcF9tZXJnZWQ7CistLSBTaG91bGQgc3RpbGwgZmFpbDogZGVwZW5k ZW5jaWVzIHNob3VsZCBiZSBwcmVzZXJ2ZWQgb24gdGhlIG5ldyBwYXJ0aXRpb24ncyBpbmRleAor RFJPUCBFWFRFTlNJT04gdGVzdF9leHQzOworRVJST1I6ICBjYW5ub3QgZHJvcCBpbmRleCB0X21l cmdlX2V4dGRlcF9tZXJnZWRfaV9pZHggYmVjYXVzZSBpbmRleCB0X21lcmdlX2V4dGRlcF9pZHgg cmVxdWlyZXMgaXQKK0hJTlQ6ICBZb3UgY2FuIGRyb3AgaW5kZXggdF9tZXJnZV9leHRkZXBfaWR4 IGluc3RlYWQuCistLSBWZXJpZnkgdGhhdCBkZXBlbmRlbmNpZXMgZm9yIGFsbCBpbmRleGVzIGV4 aXN0cyBpbiBwZ19kZXBlbmQKK1NFTEVDVCByZWxuYW1lLCBleHRuYW1lCitGUk9NIHBnX2RlcGVu ZCBkCitKT0lOIHBnX2NsYXNzIGMgT04gZC5vYmppZCA9IGMub2lkCitKT0lOIHBnX2V4dGVuc2lv biBlIE9OIGQucmVmb2JqaWQgPSBlLm9pZAorV0hFUkUgYy5yZWxuYW1lIElOICgndF9tZXJnZV9l eHRkZXBfbWVyZ2VkX2lfaWR4JywgJ3RfbWVyZ2VfZXh0ZGVwX21lcmdlZF94X2lkeCcpCisgIEFO RCBlLmV4dG5hbWUgSU4gKCd0ZXN0X2V4dDMnLCAndGVzdF9leHQ1JykKKyAgQU5EIGQuZGVwdHlw ZSA9ICd4JworT1JERVIgQlkgcmVsbmFtZSwgZXh0bmFtZTsKKyAgICAgICAgICAgcmVsbmFtZSAg ICAgICAgICAgfCAgZXh0bmFtZSAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorIHRfbWVyZ2VfZXh0ZGVwX21lcmdlZF9pX2lkeCB8IHRlc3RfZXh0MworIHRfbWVy Z2VfZXh0ZGVwX21lcmdlZF94X2lkeCB8IHRlc3RfZXh0NQorKDIgcm93cykKKworLS0gTWVyZ2Ug YSBwYXJ0aXRpb24gd2l0aCBhIGRlcGVuZGVuY3kgd2l0aCBhIHBhcnRpdGlvbiB0aGF0IGRvbid0 IGhhdmUgYQorLS0gZGVwZW5kZW5jeS4gVGhlIG5ldyBtZXJnZWQgcGFydGl0aW9uIHNob3VsZCBu b3QgaGF2ZSBhIGRlcGVuZGVuY3kuCitBTFRFUiBUQUJMRSB0X21lcmdlX2V4dGRlcCBNRVJHRSBQ QVJUSVRJT05TICh0X21lcmdlX2V4dGRlcF9tZXJnZWQsIHRfbWVyZ2VfZXh0ZGVwXzMpIElOVE8g dF9tZXJnZV9leHRkZXBfbWVyZ2VkMjsKK1NFTEVDVCBleHRuYW1lCitGUk9NIHBnX2RlcGVuZCBk CitKT0lOIHBnX2NsYXNzIGMgT04gZC5vYmppZCA9IGMub2lkCitKT0lOIHBnX2V4dGVuc2lvbiBl IE9OIGQucmVmb2JqaWQgPSBlLm9pZAorV0hFUkUgYy5yZWxuYW1lIElOICgndF9tZXJnZV9leHRk ZXBfbWVyZ2VkMl9pX2lkeCcsICd0X21lcmdlX2V4dGRlcF9tZXJnZWQyX3hfaWR4JykKKyAgQU5E IGUuZXh0bmFtZSBJTiAoJ3Rlc3RfZXh0NScsICd0ZXN0X2V4dDMnKQorICBBTkQgZC5kZXB0eXBl ID0gJ3gnOworIGV4dG5hbWUgCistLS0tLS0tLS0KKygwIHJvd3MpCisKKy0tIE1lcmdlIHBhcnRp dGlvbnMgd2l0aCBkaWZmZXJlbnQgZGVwZW5kZW5jaWVzIGFuZCBjaGVjayB0aGF0IHRoZSBuZXcg bWVyZ2VkCistLSBwYXJ0aXRpb24gb25seSBoYXZlIHRoZSBkZXBlbmRlbmNpZXMgdGhhdCBpbnRl cnNlY3QuCitBTFRFUiBJTkRFWCB0X21lcmdlX2V4dGRlcF9tZXJnZWQyX2lfaWR4IERFUEVORFMg T04gRVhURU5TSU9OIHRlc3RfZXh0MzsKK0FMVEVSIElOREVYIHRfbWVyZ2VfZXh0ZGVwX21lcmdl ZDJfeF9pZHggREVQRU5EUyBPTiBFWFRFTlNJT04gdGVzdF9leHQ1OworQUxURVIgVEFCTEUgdF9t ZXJnZV9leHRkZXAgTUVSR0UgUEFSVElUSU9OUyAodF9tZXJnZV9leHRkZXBfbWVyZ2VkMiwgdF9t ZXJnZV9leHRkZXBfNCkgSU5UTyB0X21lcmdlX2V4dGRlcF9tZXJnZWQzOworU0VMRUNUIHJlbG5h bWUsIGV4dG5hbWUKK0ZST00gcGdfZGVwZW5kIGQKK0pPSU4gcGdfY2xhc3MgYyBPTiBkLm9iamlk ID0gYy5vaWQKK0pPSU4gcGdfZXh0ZW5zaW9uIGUgT04gZC5yZWZvYmppZCA9IGUub2lkCitXSEVS RSBjLnJlbG5hbWUgSU4gKCd0X21lcmdlX2V4dGRlcF9tZXJnZWQzX2lfaWR4JywgJ3RfbWVyZ2Vf ZXh0ZGVwX21lcmdlZDNfeF9pZHgnKQorICBBTkQgZS5leHRuYW1lIElOICgndGVzdF9leHQ1Jywg J3Rlc3RfZXh0MycpCisgIEFORCBkLmRlcHR5cGUgPSAneCcKK09SREVSIEJZIHJlbG5hbWUsIGV4 dG5hbWU7CisgICAgICAgICAgIHJlbG5hbWUgICAgICAgICAgICB8ICBleHRuYW1lICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIHRfbWVyZ2VfZXh0ZGVwX21l cmdlZDNfeF9pZHggfCB0ZXN0X2V4dDUKKygxIHJvdykKKworLS0gQ3JlYXRlIGFuIGluZGV4IGRp cmVjdGx5IG9uIGEgcGFydGl0aW9uICh3aXRob3V0IGEgcGFyZW50IHBhcnRpdGlvbmVkIGluZGV4 KS4KKy0tIFN1Y2ggaW5kZXhlcyBhcmUgbm90IHJlY3JlYXRlZCBvbiBtZXJnZSBiZWNhdXNlIHRo ZXkgaGF2ZSBubyBwYXJlbnQgdG8gbWFwIHRvLgorLS0gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQg cGFydGl0aW9uLW9ubHkgaW5kZXhlcyBkb24ndCBjYXVzZSBpc3N1ZXMgZHVyaW5nIG1lcmdlLgor Q1JFQVRFIElOREVYIHRfbWVyZ2VfZXh0ZGVwXzVfeV9pZHggT04gdF9tZXJnZV9leHRkZXBfNSh5 KTsKK0FMVEVSIFRBQkxFIHRfbWVyZ2VfZXh0ZGVwIE1FUkdFIFBBUlRJVElPTlMgKHRfbWVyZ2Vf ZXh0ZGVwX21lcmdlZDMsIHRfbWVyZ2VfZXh0ZGVwXzUpIElOVE8gdF9tZXJnZV9leHRkZXBfbWVy Z2VkNDsKKy0tIFRoZSBwYXJ0aXRpb24tb25seSBpbmRleCBpcyBkcm9wcGVkIHdpdGggaXRzIHBh cnRpdGlvbjsgbm8gY29ycmVzcG9uZGluZworLS0gaW5kZXggZXhpc3RzIG9uIHRoZSBtZXJnZWQg cGFydGl0aW9uIHNpbmNlIHRoZXJlJ3Mgbm8gcGFyZW50IGluZGV4LgorU0VMRUNUIHJlbG5hbWUK K0ZST00gcGdfY2xhc3MKK1dIRVJFIHJlbG5hbWUgTElLRSAndF9tZXJnZV9leHRkZXBfbWVyZ2Vk NCVpZHgnCitPUkRFUiBCWSByZWxuYW1lOworICAgICAgICAgICByZWxuYW1lICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0X21lcmdlX2V4dGRlcF9tZXJnZWQ0 X2lfaWR4CisgdF9tZXJnZV9leHRkZXBfbWVyZ2VkNF94X2lkeAorKDIgcm93cykKKworLS0gQ2xl YW4gdXAKK0RST1AgVEFCTEUgdF9tZXJnZV9leHRkZXA7CitEUk9QIEVYVEVOU0lPTiB0ZXN0X2V4 dDM7CitEUk9QIEVYVEVOU0lPTiB0ZXN0X2V4dDU7CiBSRVNFVCBzZWFyY2hfcGF0aDsKIC0tCiBE Uk9QIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dAppbmRleCA0M2NhMjk5NjQ4ZS4uNTc0MTE5YzEx YTcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0 Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQK QEAgLTE1ODksNiArMTU4OSw0NyBAQCBTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAw IEFORCB0YWJfaWQgSU4gKFNFTEVDVCB0YWJfaWQgRlJPTSB0IFdIRVJFIGkgPQogKDEgcm93KQog CiBEUk9QIFRBQkxFIHQ7CistLQorLS0gVGVzdCB0aGF0IGV4dGVuc2lvbiBkZXBlbmRlbmNpZXMg b24gcGFydGl0aW9uIGluZGV4ZXMgYXJlIHByZXNlcnZlZAorLS0gYWZ0ZXIgU1BMSVQgUEFSVElU SU9OLgorLS0KK0NSRUFURSBFWFRFTlNJT04gY2l0ZXh0OworQ1JFQVRFIFRBQkxFIHRfZXh0ZGVw IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0X2V4dGRlcF8x XzMgUEFSVElUSU9OIE9GIHRfZXh0ZGVwIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDMpOworQ1JF QVRFIElOREVYIHRfZXh0ZGVwX2lkeCBPTiB0X2V4dGRlcCAoaSk7CistLSBBZGQgZXh0ZW5zaW9u IGRlcGVuZGVuY3kgb24gcGFydGl0aW9uIGluZGV4CitBTFRFUiBJTkRFWCB0X2V4dGRlcF8xXzNf aV9pZHggREVQRU5EUyBPTiBFWFRFTlNJT04gY2l0ZXh0OworLS0gU2hvdWxkIGZhaWw6IGRlcGVu ZGVuY3kgZXhpc3RzCitEUk9QIEVYVEVOU0lPTiBjaXRleHQ7CitFUlJPUjogIGNhbm5vdCBkcm9w IGluZGV4IHRfZXh0ZGVwXzFfM19pX2lkeCBiZWNhdXNlIGluZGV4IHRfZXh0ZGVwX2lkeCByZXF1 aXJlcyBpdAorSElOVDogIFlvdSBjYW4gZHJvcCBpbmRleCB0X2V4dGRlcF9pZHggaW5zdGVhZC4K Ky0tIFNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgdF9leHRkZXAgU1BMSVQgUEFSVElUSU9O IHRfZXh0ZGVwXzFfMyBJTlRPCisgIChQQVJUSVRJT04gdF9leHRkZXBfMSBGT1IgVkFMVUVTIEZS T00gKDEpIFRPICgyKSwKKyAgIFBBUlRJVElPTiB0X2V4dGRlcF8yIEZPUiBWQUxVRVMgRlJPTSAo MikgVE8gKDMpKTsKKy0tIFNob3VsZCBzdGlsbCBmYWlsOiBkZXBlbmRlbmNpZXMgc2hvdWxkIGJl IHByZXNlcnZlZCBvbiBhbGwgbmV3IHBhcnRpdGlvbnMnIGluZGV4ZXMKK0RST1AgRVhURU5TSU9O IGNpdGV4dDsKK0VSUk9SOiAgY2Fubm90IGRyb3AgaW5kZXggdF9leHRkZXBfMl9pX2lkeCBiZWNh dXNlIGluZGV4IHRfZXh0ZGVwX2lkeCByZXF1aXJlcyBpdAorSElOVDogIFlvdSBjYW4gZHJvcCBp bmRleCB0X2V4dGRlcF9pZHggaW5zdGVhZC4KKy0tIFZlcmlmeSB0aGUgZGVwZW5kZW5jaWVzIGV4 aXN0IGluIHBnX2RlcGVuZCBmb3IgYm90aCBuZXcgcGFydGl0aW9ucworU0VMRUNUIGMucmVsbmFt ZSwgQ09VTlQoKikgPiAwIEFTIGhhc19leHRfZGVwCitGUk9NIHBnX2RlcGVuZCBkCitKT0lOIHBn X2NsYXNzIGMgT04gZC5vYmppZCA9IGMub2lkCitKT0lOIHBnX2V4dGVuc2lvbiBlIE9OIGQucmVm b2JqaWQgPSBlLm9pZAorV0hFUkUgYy5yZWxuYW1lIElOICgndF9leHRkZXBfMV9pX2lkeCcsICd0 X2V4dGRlcF8yX2lfaWR4JykKKyAgQU5EIGUuZXh0bmFtZSA9ICdjaXRleHQnCisgIEFORCBkLmRl cHR5cGUgPSAneCcKK0dST1VQIEJZIGMucmVsbmFtZQorT1JERVIgQlkgYy5yZWxuYW1lOworICAg ICByZWxuYW1lICAgICAgfCBoYXNfZXh0X2RlcCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tCisgdF9leHRkZXBfMV9pX2lkeCB8IHQKKyB0X2V4dGRlcF8yX2lfaWR4IHwgdAorKDIg cm93cykKKworLS0gQ2xlYW4gdXAKK0RST1AgVEFCTEUgdF9leHRkZXA7CitEUk9QIEVYVEVOU0lP TiBjaXRleHQ7CiBSRVNFVCBzZWFyY2hfcGF0aDsKIC0tCiBEUk9QIFNDSEVNQSBwYXJ0aXRpb25f c3BsaXRfc2NoZW1hOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9u X21lcmdlLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwKaW5k ZXggYTIxMWZlZTJhZDEuLjY2ZmM4NWJhOTUwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9wYXJ0aXRpb25fbWVyZ2Uuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRp dGlvbl9tZXJnZS5zcWwKQEAgLTc4NCw2ICs3ODQsOTggQEAgU0VMRUNUIGNvdW50KCopIEZST00g dCBXSEVSRSBpID0gMTUgQU5EIGcgSU4gKFNFTEVDVCBnICsgMTAgRlJPTSB0IFdIRVJFIGkgPSA1 KTsKIERST1AgVEFCTEUgdDsKIAogCistLQorLS0gVGVzdCB0aGF0IGV4dGVuc2lvbiBkZXBlbmRl bmNpZXMgb24gcGFydGl0aW9uIGluZGV4ZXMgYXJlIHByZXNlcnZlZAorLS0gYWZ0ZXIgTUVSR0Ug UEFSVElUSU9OUy4KKy0tCitDUkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMgdGVzdF9leHQz OworQ1JFQVRFIEVYVEVOU0lPTiBJRiBOT1QgRVhJU1RTIHRlc3RfZXh0NTsKKworQ1JFQVRFIFRB QkxFIHRfbWVyZ2VfZXh0ZGVwIChpIGludCwgeCBpbnQsIHkgaW50KSBQQVJUSVRJT04gQlkgUkFO R0UgKGkpOworQ1JFQVRFIFRBQkxFIHRfbWVyZ2VfZXh0ZGVwXzEgUEFSVElUSU9OIE9GIHRfbWVy Z2VfZXh0ZGVwIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworQ1JFQVRFIFRBQkxFIHRfbWVy Z2VfZXh0ZGVwXzIgUEFSVElUSU9OIE9GIHRfbWVyZ2VfZXh0ZGVwIEZPUiBWQUxVRVMgRlJPTSAo MikgVE8gKDMpOworQ1JFQVRFIFRBQkxFIHRfbWVyZ2VfZXh0ZGVwXzMgUEFSVElUSU9OIE9GIHRf bWVyZ2VfZXh0ZGVwIEZPUiBWQUxVRVMgRlJPTSAoMykgVE8gKDQpOyAtLSBEb24ndCBoYXZlIGEg ZGVwZW5kZW5jeQorQ1JFQVRFIFRBQkxFIHRfbWVyZ2VfZXh0ZGVwXzQgUEFSVElUSU9OIE9GIHRf bWVyZ2VfZXh0ZGVwIEZPUiBWQUxVRVMgRlJPTSAoNCkgVE8gKDUpOworQ1JFQVRFIFRBQkxFIHRf bWVyZ2VfZXh0ZGVwXzUgUEFSVElUSU9OIE9GIHRfbWVyZ2VfZXh0ZGVwIEZPUiBWQUxVRVMgRlJP TSAoNSkgVE8gKDYpOworQ1JFQVRFIElOREVYIHRfbWVyZ2VfZXh0ZGVwX2lkeCBPTiB0X21lcmdl X2V4dGRlcChpKTsKK0NSRUFURSBJTkRFWCB0X21lcmdlX2V4dGRlcF94IE9OIHRfbWVyZ2VfZXh0 ZGVwKHgpOworCistLSBBZGQgZXh0ZW5zaW9uIGRlcGVuZGVuY3kgZm9yIHNvbWUgcGFydGl0aW9u IGluZGV4ZXMKK0FMVEVSIElOREVYIHRfbWVyZ2VfZXh0ZGVwXzFfaV9pZHggREVQRU5EUyBPTiBF WFRFTlNJT04gdGVzdF9leHQzOworQUxURVIgSU5ERVggdF9tZXJnZV9leHRkZXBfMV94X2lkeCBE RVBFTkRTIE9OIEVYVEVOU0lPTiB0ZXN0X2V4dDU7CitBTFRFUiBJTkRFWCB0X21lcmdlX2V4dGRl cF8yX2lfaWR4IERFUEVORFMgT04gRVhURU5TSU9OIHRlc3RfZXh0MzsKK0FMVEVSIElOREVYIHRf bWVyZ2VfZXh0ZGVwXzJfeF9pZHggREVQRU5EUyBPTiBFWFRFTlNJT04gdGVzdF9leHQ1OworCist LSBBZGQgYSBkaWZmZXJlbnQgZXh0ZW5zaW9uIGRlcGVuZGVuY3kgdG8gZW5zdXJlIHRoYXQgb25s eSBpbmRleGVzIHdpdGggdGhlCistLSBzYW1lIGRlcGVuZGVuY2llcyBoYXMgdGhlIGRlcGVuZGVu Y2llcyBwcmVzZXJ2ZWQuCitBTFRFUiBJTkRFWCB0X21lcmdlX2V4dGRlcF80X2lfaWR4IERFUEVO RFMgT04gRVhURU5TSU9OIHRlc3RfZXh0NTsKK0FMVEVSIElOREVYIHRfbWVyZ2VfZXh0ZGVwXzRf eF9pZHggREVQRU5EUyBPTiBFWFRFTlNJT04gdGVzdF9leHQ1OworCistLSBTaG91bGQgZmFpbDog ZGVwZW5kZW5jaWVzIGV4aXN0CitEUk9QIEVYVEVOU0lPTiB0ZXN0X2V4dDM7CisKKy0tIE1lcmdl IHBhcnRpdGlvbnMKK0FMVEVSIFRBQkxFIHRfbWVyZ2VfZXh0ZGVwIE1FUkdFIFBBUlRJVElPTlMg KHRfbWVyZ2VfZXh0ZGVwXzEsIHRfbWVyZ2VfZXh0ZGVwXzIpIElOVE8gdF9tZXJnZV9leHRkZXBf bWVyZ2VkOworCistLSBTaG91bGQgc3RpbGwgZmFpbDogZGVwZW5kZW5jaWVzIHNob3VsZCBiZSBw cmVzZXJ2ZWQgb24gdGhlIG5ldyBwYXJ0aXRpb24ncyBpbmRleAorRFJPUCBFWFRFTlNJT04gdGVz dF9leHQzOworCistLSBWZXJpZnkgdGhhdCBkZXBlbmRlbmNpZXMgZm9yIGFsbCBpbmRleGVzIGV4 aXN0cyBpbiBwZ19kZXBlbmQKK1NFTEVDVCByZWxuYW1lLCBleHRuYW1lCitGUk9NIHBnX2RlcGVu ZCBkCitKT0lOIHBnX2NsYXNzIGMgT04gZC5vYmppZCA9IGMub2lkCitKT0lOIHBnX2V4dGVuc2lv biBlIE9OIGQucmVmb2JqaWQgPSBlLm9pZAorV0hFUkUgYy5yZWxuYW1lIElOICgndF9tZXJnZV9l eHRkZXBfbWVyZ2VkX2lfaWR4JywgJ3RfbWVyZ2VfZXh0ZGVwX21lcmdlZF94X2lkeCcpCisgIEFO RCBlLmV4dG5hbWUgSU4gKCd0ZXN0X2V4dDMnLCAndGVzdF9leHQ1JykKKyAgQU5EIGQuZGVwdHlw ZSA9ICd4JworT1JERVIgQlkgcmVsbmFtZSwgZXh0bmFtZTsKKworLS0gTWVyZ2UgYSBwYXJ0aXRp b24gd2l0aCBhIGRlcGVuZGVuY3kgd2l0aCBhIHBhcnRpdGlvbiB0aGF0IGRvbid0IGhhdmUgYQor LS0gZGVwZW5kZW5jeS4gVGhlIG5ldyBtZXJnZWQgcGFydGl0aW9uIHNob3VsZCBub3QgaGF2ZSBh IGRlcGVuZGVuY3kuCitBTFRFUiBUQUJMRSB0X21lcmdlX2V4dGRlcCBNRVJHRSBQQVJUSVRJT05T ICh0X21lcmdlX2V4dGRlcF9tZXJnZWQsIHRfbWVyZ2VfZXh0ZGVwXzMpIElOVE8gdF9tZXJnZV9l eHRkZXBfbWVyZ2VkMjsKKworU0VMRUNUIGV4dG5hbWUKK0ZST00gcGdfZGVwZW5kIGQKK0pPSU4g cGdfY2xhc3MgYyBPTiBkLm9iamlkID0gYy5vaWQKK0pPSU4gcGdfZXh0ZW5zaW9uIGUgT04gZC5y ZWZvYmppZCA9IGUub2lkCitXSEVSRSBjLnJlbG5hbWUgSU4gKCd0X21lcmdlX2V4dGRlcF9tZXJn ZWQyX2lfaWR4JywgJ3RfbWVyZ2VfZXh0ZGVwX21lcmdlZDJfeF9pZHgnKQorICBBTkQgZS5leHRu YW1lIElOICgndGVzdF9leHQ1JywgJ3Rlc3RfZXh0MycpCisgIEFORCBkLmRlcHR5cGUgPSAneCc7 CisKKy0tIE1lcmdlIHBhcnRpdGlvbnMgd2l0aCBkaWZmZXJlbnQgZGVwZW5kZW5jaWVzIGFuZCBj aGVjayB0aGF0IHRoZSBuZXcgbWVyZ2VkCistLSBwYXJ0aXRpb24gb25seSBoYXZlIHRoZSBkZXBl bmRlbmNpZXMgdGhhdCBpbnRlcnNlY3QuCitBTFRFUiBJTkRFWCB0X21lcmdlX2V4dGRlcF9tZXJn ZWQyX2lfaWR4IERFUEVORFMgT04gRVhURU5TSU9OIHRlc3RfZXh0MzsKK0FMVEVSIElOREVYIHRf bWVyZ2VfZXh0ZGVwX21lcmdlZDJfeF9pZHggREVQRU5EUyBPTiBFWFRFTlNJT04gdGVzdF9leHQ1 OworQUxURVIgVEFCTEUgdF9tZXJnZV9leHRkZXAgTUVSR0UgUEFSVElUSU9OUyAodF9tZXJnZV9l eHRkZXBfbWVyZ2VkMiwgdF9tZXJnZV9leHRkZXBfNCkgSU5UTyB0X21lcmdlX2V4dGRlcF9tZXJn ZWQzOworCitTRUxFQ1QgcmVsbmFtZSwgZXh0bmFtZQorRlJPTSBwZ19kZXBlbmQgZAorSk9JTiBw Z19jbGFzcyBjIE9OIGQub2JqaWQgPSBjLm9pZAorSk9JTiBwZ19leHRlbnNpb24gZSBPTiBkLnJl Zm9iamlkID0gZS5vaWQKK1dIRVJFIGMucmVsbmFtZSBJTiAoJ3RfbWVyZ2VfZXh0ZGVwX21lcmdl ZDNfaV9pZHgnLCAndF9tZXJnZV9leHRkZXBfbWVyZ2VkM194X2lkeCcpCisgIEFORCBlLmV4dG5h bWUgSU4gKCd0ZXN0X2V4dDUnLCAndGVzdF9leHQzJykKKyAgQU5EIGQuZGVwdHlwZSA9ICd4Jwor T1JERVIgQlkgcmVsbmFtZSwgZXh0bmFtZTsKKworLS0gQ3JlYXRlIGFuIGluZGV4IGRpcmVjdGx5 IG9uIGEgcGFydGl0aW9uICh3aXRob3V0IGEgcGFyZW50IHBhcnRpdGlvbmVkIGluZGV4KS4KKy0t IFN1Y2ggaW5kZXhlcyBhcmUgbm90IHJlY3JlYXRlZCBvbiBtZXJnZSBiZWNhdXNlIHRoZXkgaGF2 ZSBubyBwYXJlbnQgdG8gbWFwIHRvLgorLS0gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgcGFydGl0 aW9uLW9ubHkgaW5kZXhlcyBkb24ndCBjYXVzZSBpc3N1ZXMgZHVyaW5nIG1lcmdlLgorQ1JFQVRF IElOREVYIHRfbWVyZ2VfZXh0ZGVwXzVfeV9pZHggT04gdF9tZXJnZV9leHRkZXBfNSh5KTsKK0FM VEVSIFRBQkxFIHRfbWVyZ2VfZXh0ZGVwIE1FUkdFIFBBUlRJVElPTlMgKHRfbWVyZ2VfZXh0ZGVw X21lcmdlZDMsIHRfbWVyZ2VfZXh0ZGVwXzUpIElOVE8gdF9tZXJnZV9leHRkZXBfbWVyZ2VkNDsK KworLS0gVGhlIHBhcnRpdGlvbi1vbmx5IGluZGV4IGlzIGRyb3BwZWQgd2l0aCBpdHMgcGFydGl0 aW9uOyBubyBjb3JyZXNwb25kaW5nCistLSBpbmRleCBleGlzdHMgb24gdGhlIG1lcmdlZCBwYXJ0 aXRpb24gc2luY2UgdGhlcmUncyBubyBwYXJlbnQgaW5kZXguCitTRUxFQ1QgcmVsbmFtZQorRlJP TSBwZ19jbGFzcworV0hFUkUgcmVsbmFtZSBMSUtFICd0X21lcmdlX2V4dGRlcF9tZXJnZWQ0JWlk eCcKK09SREVSIEJZIHJlbG5hbWU7CisKKy0tIENsZWFuIHVwCitEUk9QIFRBQkxFIHRfbWVyZ2Vf ZXh0ZGVwOworRFJPUCBFWFRFTlNJT04gdGVzdF9leHQzOworRFJPUCBFWFRFTlNJT04gdGVzdF9l eHQ1OworCisKIFJFU0VUIHNlYXJjaF9wYXRoOwogCiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Bh cnRpdGlvbl9zcGxpdC5zcWwKaW5kZXggNDRmY2YyMDhhYzYuLjIyNTYzZDM4MDRjIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwKQEAgLTExMjcsNiArMTEyNyw0NSBA QCBTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAwIEFORCB0YWJfaWQgSU4gKFNFTEVD VCB0YWJfaWQgRlJPTSB0IFdIRVJFIGkgPQogRFJPUCBUQUJMRSB0OwogCiAKKy0tCistLSBUZXN0 IHRoYXQgZXh0ZW5zaW9uIGRlcGVuZGVuY2llcyBvbiBwYXJ0aXRpb24gaW5kZXhlcyBhcmUgcHJl c2VydmVkCistLSBhZnRlciBTUExJVCBQQVJUSVRJT04uCistLQorQ1JFQVRFIEVYVEVOU0lPTiBj aXRleHQ7CisKK0NSRUFURSBUQUJMRSB0X2V4dGRlcCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5H RSAoaSk7CitDUkVBVEUgVEFCTEUgdF9leHRkZXBfMV8zIFBBUlRJVElPTiBPRiB0X2V4dGRlcCBG T1IgVkFMVUVTIEZST00gKDEpIFRPICgzKTsKK0NSRUFURSBJTkRFWCB0X2V4dGRlcF9pZHggT04g dF9leHRkZXAgKGkpOworCistLSBBZGQgZXh0ZW5zaW9uIGRlcGVuZGVuY3kgb24gcGFydGl0aW9u IGluZGV4CitBTFRFUiBJTkRFWCB0X2V4dGRlcF8xXzNfaV9pZHggREVQRU5EUyBPTiBFWFRFTlNJ T04gY2l0ZXh0OworCistLSBTaG91bGQgZmFpbDogZGVwZW5kZW5jeSBleGlzdHMKK0RST1AgRVhU RU5TSU9OIGNpdGV4dDsKKworLS0gU3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSB0X2V4dGRl cCBTUExJVCBQQVJUSVRJT04gdF9leHRkZXBfMV8zIElOVE8KKyAgKFBBUlRJVElPTiB0X2V4dGRl cF8xIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpLAorICAgUEFSVElUSU9OIHRfZXh0ZGVwXzIg Rk9SIFZBTFVFUyBGUk9NICgyKSBUTyAoMykpOworCistLSBTaG91bGQgc3RpbGwgZmFpbDogZGVw ZW5kZW5jaWVzIHNob3VsZCBiZSBwcmVzZXJ2ZWQgb24gYWxsIG5ldyBwYXJ0aXRpb25zJyBpbmRl eGVzCitEUk9QIEVYVEVOU0lPTiBjaXRleHQ7CisKKy0tIFZlcmlmeSB0aGUgZGVwZW5kZW5jaWVz IGV4aXN0IGluIHBnX2RlcGVuZCBmb3IgYm90aCBuZXcgcGFydGl0aW9ucworU0VMRUNUIGMucmVs bmFtZSwgQ09VTlQoKikgPiAwIEFTIGhhc19leHRfZGVwCitGUk9NIHBnX2RlcGVuZCBkCitKT0lO IHBnX2NsYXNzIGMgT04gZC5vYmppZCA9IGMub2lkCitKT0lOIHBnX2V4dGVuc2lvbiBlIE9OIGQu cmVmb2JqaWQgPSBlLm9pZAorV0hFUkUgYy5yZWxuYW1lIElOICgndF9leHRkZXBfMV9pX2lkeCcs ICd0X2V4dGRlcF8yX2lfaWR4JykKKyAgQU5EIGUuZXh0bmFtZSA9ICdjaXRleHQnCisgIEFORCBk LmRlcHR5cGUgPSAneCcKK0dST1VQIEJZIGMucmVsbmFtZQorT1JERVIgQlkgYy5yZWxuYW1lOwor CistLSBDbGVhbiB1cAorRFJPUCBUQUJMRSB0X2V4dGRlcDsKK0RST1AgRVhURU5TSU9OIGNpdGV4 dDsKKwogUkVTRVQgc2VhcmNoX3BhdGg7CiAKIC0tCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0Cmlu ZGV4IDQ5ZGZiNjYyYWJjLi45ZjFkZDU1MjEzZCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QK QEAgLTIyMDAsNiArMjIwMCw3IEBAIFBhcnRpdGlvbkRpcmVjdG9yeUVudHJ5CiBQYXJ0aXRpb25E aXNwYXRjaAogUGFydGl0aW9uRWxlbQogUGFydGl0aW9uSGFzaEJvdW5kCitQYXJ0aXRpb25JbmRl eEV4dERlcEVudHJ5CiBQYXJ0aXRpb25LZXkKIFBhcnRpdGlvbkxpc3RWYWx1ZQogUGFydGl0aW9u TWFwCi0tIAoyLjUzLjAKCg== --160600dc93c40466392d542fc2504b45075cfc591bcee1970a5bee093bcf--