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 1w8KtH-000R0p-1H for pgsql-hackers@arkaria.postgresql.org; Thu, 02 Apr 2026 16:27:32 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w8KtG-006utz-0e for pgsql-hackers@arkaria.postgresql.org; Thu, 02 Apr 2026 16:27:30 +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 1w8KtF-006utV-28 for pgsql-hackers@lists.postgresql.org; Thu, 02 Apr 2026 16:27:30 +0000 Received: from mail-vk1-xa43.google.com ([2607:f8b0:4864:20::a43]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w8KtC-00000000ECO-1apb for pgsql-hackers@lists.postgresql.org; Thu, 02 Apr 2026 16:27:29 +0000 Received: by mail-vk1-xa43.google.com with SMTP id 71dfb90a1353d-56d93355337so797946e0c.0 for ; Thu, 02 Apr 2026 09:27:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dunslane-net.20230601.gappssmtp.com; s=20230601; t=1775147244; x=1775752044; darn=lists.postgresql.org; h=in-reply-to:autocrypt:content-language:from:references:cc:to :subject:user-agent:mime-version:date:message-id:from:to:cc:subject :date:message-id:reply-to; bh=CsdI9EVLlrpsECRviNZ92UDdxDeORvU7yYIlMni8YOM=; b=kShimooejB6Uavx1/4PGVOji3KFOgqQZfMPn6olfErC20M+HIdHkPxY4e57zcFnR/j RsRGz+9piPhGn1tO+xH1jb+JJAZVSc/l41ZdWlVU9K9mVl/XjXNhoB4/F/qe6kyzbpap C02Vx0J1eyRdUBkyWHnOY4ekvMq6dg0lkf1sIvdnl1PpXJhS4PXYXrxWZBUifa90E3Lh 6srwSQDtDeYIxW0W4zBE9HgQZ5gYM4h7srhjrTL6WR/L+i/vjW+XDOvOQ1qnmApIXvFd LR9OeTj6MvMekKfebqEH8BxcdUM81Bo7DcmJ3k8O+9PQaxR244QUepAQwJCEmc+nXp5M RgXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775147244; x=1775752044; h=in-reply-to:autocrypt:content-language:from:references:cc:to :subject:user-agent:mime-version:date:message-id:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=CsdI9EVLlrpsECRviNZ92UDdxDeORvU7yYIlMni8YOM=; b=lIAEMjbxc1YnoUz1kH7IHQNYQsrog5Up9wys0W/hFP/hpuDw5XUMp+Z2IxnJ3v7Jwo hRCS1wGqX8zRcdprHIwO9CwDCnfB3HbyG7QMpJbxf60W7C4Lzs0B+43KGGaAxMktsUKW uNUf+2VmiVGTatKKbRsVwEcDqDxE+CSIyBWv1FVP3BI+xAIODkloVcOklLIoDlfjc2V8 1E4Il5TL4AqLKC+m2f9TfM3ezGF6x6t29ELYXX0j2p5Cxfq6WPtZeqAlFtrORAfa2Ge+ P0c5JNCeteB2g8A/rFvHT8ht56s+c3VEtsgVKEUIt3p7DL42qIwqzmKcbx/Ep0H9pUoS 6Lzw== X-Forwarded-Encrypted: i=1; AJvYcCXj0Gd73wpsEJyO9IlRs+i86lAxmRG8DB2QKE4I9C0Itczo9yilyCvtHk1B18pBTcfSH3/8T93sHvln2Miv@lists.postgresql.org X-Gm-Message-State: AOJu0YwDlTcdpZFcE6kYTwTFivu9dhkWxKAG/5ibee8gGYKp9xrjX1GM zXjl9BXLXVypJ9FrFlIQgswOO9FPaAzVCwGJY88siJ0OeFmUL1G7wWFE35NxOUmbOyI= X-Gm-Gg: ATEYQzzX6IxlJ9YRPLMzrB/IJL/Nr4lP/U/39KiGXMnY2JZypJPvbqAzSVloRi52S4j BjdnNlsmMlv3ZWER7enoAs7qA7NtrZ22KCOQfVCci9de0j7JcJYepK01qtPzAYfdiJQJfR0BlwN Hi/O5oanQnCzGG5F7Vgzaei4G/M7VS8UNRXfxHbf4K3lB8gnFlA30derMaUH3bI5xCYklh0jXfd cRpVD+mNpX221iGAuWmQVXH+6g0WyF3LdoCNPLmURua2h8e3dcvWREGd8j0jR7w+pBkfA9rpjLA vqzsxT5rwmfGA64atiZ32WdBmbPgm6SKMjSoXcDjCb0u2VCx21eY6OTTtaao+OzT6BUlO2IeWA0 2C4R9QyH3buEqT/mel+xteA2On6fFCC2J2ur0p7ItHnjPHOzVDplOEVEq2z6AN2GY7ow8aTPvyq 4KmyK3FCBKLMZe8uw6sCT2MBAAi1WgoA== X-Received: by 2002:a05:6122:4d8a:b0:56d:451b:e4da with SMTP id 71dfb90a1353d-56d8a7f3c49mr3864867e0c.1.1775147244239; Thu, 02 Apr 2026 09:27:24 -0700 (PDT) Received: from ?IPV6:2605:a601:a6b0:500::1cb? ([2605:a601:a6b0:500::1cb]) by smtp.googlemail.com with ESMTPSA id 71dfb90a1353d-56d9bc9cbbasm4046017e0c.9.2026.04.02.09.27.23 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 02 Apr 2026 09:27:23 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------0aiYBQ0Vz1MQXyFMtlfveiSt" Message-ID: Date: Thu, 2 Apr 2026 12:27:21 -0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: pg_get__*_ddl consolidation To: "David G. Johnston" , Japin Li Cc: Zsolt Parragi , Euler Taveira , =?UTF-8?Q?=C3=81lvaro_Herrera?= , PostgreSQL Hackers References: <202603201311.yhtqmvektawm@alvherre.pgsql> <8ec9b67d-939e-4b22-8d56-a5129f92d32d@app.fastmail.com> <555cdee4-c024-4872-9d96-82ef4216239c@dunslane.net> From: Andrew Dunstan Content-Language: en-US Autocrypt: addr=andrew@dunslane.net; keydata= xsBNBE7KWFkBCAClridxur2AIc7eW2AR7izbfp3EnNefie2HbLF0izW5Ik5UjX2HBXBx4syI gY6b0ugohXrr274+baoAlvSbq6cAoQuEVrk5IZFzt20b1Xkx65FwGSEj526yiKLocqkJceSq Xr9xcA5SGY+FZv441chh5SU92v4q6z+6LPpoHOh97ptAVXZYNTtU0LevyvD5lja0TzbvJm6C eFXitJfnm1pLEr0DGJCR/iUOl/N62Kh4855zZC7NHIjQHPOvV5Stz/l5ilDhvGVk+xkXFPys SjZoUr1rXhYLpiyi5sR0X9FHXT0KnGuz1F5ERO7ZTLSSQ6fJwPj6gOk9K+vvoKvoeql5ABEB AAHNJEFuZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PsLAlwQTAQgAQQIbAwIX gAIZAQULCQgHAwUVCgkICwUWAgMBAAIeBRYhBOQ+WEYd/Hy/RGkVpZn6f8tZ/DuBBQJoGNGd BQkdEO8nAAoJEJn6f8tZ/DuBq74H/jkTR4Zi3stbw+xC7v2u3QozssK7MYPL2AsVfh7OealS h182fiWXpfvmmAB7WUHbhk9GC2RAOnHI/2d2jgKaMLAHsGYOT0YopTVIwRY43fCw/mK67yxc wmDcX+zyKfLaivNbf5A7QPLNwda98bEAMSJ8Sn652Uc6cA8t3uKGsVzbRBQOoYzjgvBCfSrE 9ql3PDNg0l4BfAqabd2f70ZUm9VAMEPrgv/v2xI7M2XiL4g5BVmqLCOwxLM8RMCotCuoweUr VO43DeBCIDwLxotMJKvGWDjBzQYlU1NPUAtNcz/gN9ITUe1VUGjyvGj4u1lxBOcQQUw7l1+T 5moZ4iZxXzvOwE0ETspYWQEIANGc4zQULOxhbqO2dyD51YhqCNRmm9oKWaqf+wmW4tpDe/VV cxAnNizd4LWCHfzpb5cHAtGkOPePMfzWVf6nvdF7d3eglbtf59+zG7O7llV0xSSoFiieQBsr GvqDInXYX/4mRRXMtyhM353/tixC9RWLs1oofyYmCPPXXY7h9R7en3B8BoVrRFcdzlIY/NFN hFGW/9dkEiGjgna2Rk6e15kln4ZvFBWUg23p93w/pqXcxY6+k/8TEk+C4R+M6w7o2PLGOjdZ +kPiUcw5H85zf/yZJwQXzisXaNduwWB6Vads9YC9dj6kPR1c4VGRqAaYL++LAEOqrlvm2Tvq QqZRtnEAEQEAAcLAfAQYAQgAJgIbDBYhBOQ+WEYd/Hy/RGkVpZn6f8tZ/DuBBQJoGNI2BQkd EODdAAoJEJn6f8tZ/DuBfw0IAKTsfD40teP/pp+bsLLMSxPXUYrrprTj7WFB5v61p6dkpSr/ qXmMlyahdxQFaPmfVgVirB1Vk/kHiWNnnGjfUV9nB2Zg9LI0Xb9/ts3LsUiRWXzG3tkMY6XL vsVOxW4XFRND9l2q+WW93aZ1DZl+fqWfYgMvsusFRhmGFOKTRfKPta2Pkv+AhA24N4+PrR5p bU4k2MO8PAGiK8eaYKGFG1bHKuAvoDoF7WXJ3FHxuWqLnKEt4dfOLm5pAe3zq1Lt6q8azT9i QWGpSAK5vQUWQHBHpiDjdPeqKZ6HiAXIIKfSmb+jrvXBqoP+D6/K7rUjG2aXiRtTIAXms9sm VRu7cmw= In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------0aiYBQ0Vz1MQXyFMtlfveiSt Content-Type: multipart/alternative; boundary="------------UoNh8TVGyNov41EK4f3rdZJH" --------------UoNh8TVGyNov41EK4f3rdZJH Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 2026-04-02 Th 9:35 AM, David G. Johnston wrote: > On Thursday, April 2, 2026, Japin Li wrote: > > > v3-0004 > ======== > > 1. > +       append_ddl_option(&buf, pretty, 4, "WITH TEMPLATE = > template0"); > > I'm curious why WITH TEMPLATE = template0 is hardcoded. For example: > >   [local]:1374846 postgres=# create database db01 IS_TEMPLATE true; >   CREATE DATABASE >   [local]:1374846 postgres=# create database db02 template db01; >   CREATE DATABASE >   [local]:1374846 postgres=# select pg_get_database_ddl('db02'); >  pg_get_database_ddl >   > ----------------------------------------------------------------------------------------------------------------- >    CREATE DATABASE db02 WITH TEMPLATE = template0 ENCODING = > 'UTF8' LOCALE_PROVIDER = libc LOCALE = 'en_US.UTF-8'; >    ALTER DATABASE db02 OWNER TO japin; >   (2 rows) > > Is this working as expected? > > It seems there's no way to reconstruct the WITH TEMPLATE clause, > right? > A comment here would help. > > > There is no way or use in constructing the original template clause, > though I agree it’s worth a comment.  At the end of the day the > catalog data that was found in the db01 database already exists in the > db02 database when executing these DLL reconstruction functions > against the existing db02 database. Taking nothing from the template > is the correct behavior - hence template0. > > OK, here's a v4. cheers andrew -- Andrew Dunstan EDB:https://www.enterprisedb.com --------------UoNh8TVGyNov41EK4f3rdZJH Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit


On 2026-04-02 Th 9:35 AM, David G. Johnston wrote:
On Thursday, April 2, 2026, Japin Li <japinli@hotmail.com> wrote:

v3-0004
========

1.
+       append_ddl_option(&buf, pretty, 4, "WITH TEMPLATE = template0");

I'm curious why WITH TEMPLATE = template0 is hardcoded. For example:

  [local]:1374846 postgres=# create database db01 IS_TEMPLATE true;
  CREATE DATABASE
  [local]:1374846 postgres=# create database db02 template db01;
  CREATE DATABASE
  [local]:1374846 postgres=# select pg_get_database_ddl('db02');
                                                 pg_get_database_ddl
  -----------------------------------------------------------------------------------------------------------------
   CREATE DATABASE db02 WITH TEMPLATE = template0 ENCODING = 'UTF8' LOCALE_PROVIDER = libc LOCALE = 'en_US.UTF-8';
   ALTER DATABASE db02 OWNER TO japin;
  (2 rows)

Is this working as expected?

It seems there's no way to reconstruct the WITH TEMPLATE clause, right?
A comment here would help.

There is no way or use in constructing the original template clause, though I agree it’s worth a comment.  At the end of the day the catalog data that was found in the db01 database already exists in the db02 database when executing these DLL reconstruction functions against the existing db02 database.  Taking nothing from the template is the correct behavior - hence template0.




OK, here's a v4.


cheers


andrew


--
Andrew Dunstan
EDB: https://www.enterprisedb.com
--------------UoNh8TVGyNov41EK4f3rdZJH-- --------------0aiYBQ0Vz1MQXyFMtlfveiSt Content-Type: text/x-patch; charset=UTF-8; name="v4-0001-Add-infrastructure-for-pg_get_-_ddl-functions.patch" Content-Disposition: attachment; filename*0="v4-0001-Add-infrastructure-for-pg_get_-_ddl-functions.patch" Content-Transfer-Encoding: base64 RnJvbSAwOTUwOGZmYTNhNjI3ZjNmZTkyZWZlZWUxYWU0YjkzMmJiZjM0Y2ZlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogVGh1LCAxOSBNYXIgMjAyNiAwOTo1MDo0MSAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggdjQgMS80XSBBZGQgaW5mcmFzdHJ1Y3R1cmUgZm9yIHBnX2dldF8qX2RkbCBmdW5j dGlvbnMKCkFkZCBwYXJzZV9kZGxfb3B0aW9ucygpLCBhcHBlbmRfZGRsX29wdGlvbigpLCBh bmQgYXBwZW5kX2d1Y192YWx1ZSgpCmhlbHBlciBmdW5jdGlvbnMgaW4gYSBuZXcgZGRsdXRp bHMuYyBmaWxlIHRoYXQgcHJvdmlkZSBjb21tb24gb3B0aW9uCnBhcnNpbmcgYW5kIG91dHB1 dCBmb3JtYXR0aW5nIGZvciB0aGUgcGdfZ2V0XypfZGRsIGZhbWlseSBvZiBmdW5jdGlvbnMK d2hpY2ggd2lsbCBmb2xsb3cgaW4gbGF0ZXIgcGF0Y2hlcy4gIFRoZXNlIGFjY2VwdCBWQVJJ QURJQyB0ZXh0CmFyZ3VtZW50cyBhcyBhbHRlcm5hdGluZyBuYW1lL3ZhbHVlIHBhaXJzLgoK Q2FsbGVycyBkZWNsYXJlIGFuIGFycmF5IG9mIERkbE9wdGlvbiBkZXNjcmlwdG9ycyBzcGVj aWZ5aW5nIHRoZQphY2NlcHRlZCBvcHRpb24gbmFtZXMgYW5kIHRoZWlyIHR5cGVzIChib29s ZWFuLCB0ZXh0LCBvciBpbnRlZ2VyKS4KcGFyc2VfZGRsX29wdGlvbnMoKSBtYXRjaGVzIGVh Y2ggc3VwcGxpZWQgcGFpciBhZ2FpbnN0IHRoZSBhcnJheSwKdmFsaWRhdGVzIHRoZSB2YWx1 ZSwgYW5kIGZpbGxzIGluIHRoZSByZXN1bHQgZmllbGRzLiAgVGhpcwpkZXNjcmlwdG9yLWJh c2VkIHNjaGVtZSBpcyBiYXNlZCBvbiBhbiBpZGVhIGZyb20gRXVsZXIgVGF2ZWlyYS4KClRo aXMgaXMgcGxhY2VkIGluIGEgbmV3IGRkbHV0aWxzLmMgZmlsZSB3aGljaCB3aWxsIGNvbnRh aW4gdGhlCnBnX2dldF8qX2RkbCBmdW5jdGlvbnMuCgpBdXRob3I6IEFrc2hheSBKb3NoaSA8 YWtzaGF5Lmpvc2hpQGVudGVycHJpc2VkYi5jb20+CkNvLWF1dGhvcmVkLWJ5OiBBbmRyZXcg RHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5lLm5ldD4KQ28tYXV0aG9yZWQtYnk6IEV1bGVyIFRh dmVpcmEgPGV1bGVyQGV1bGVydG8uY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5l cy9tL0NBS1dFQjZybW5tR0tVQTg3Wm1xLXM9YjNTY3NuajAyQzBrT2JRam5iTDJhamZQV0dF d0BtYWlsLmdtYWlsLmNvbQpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzRjNWY4 OTVlLTMyODEtNDhmOC1iOTQzLTkyMjhiN2RhNjQ3MUBnbWFpbC5jb20KRGlzY3Vzc2lvbjog aHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQU54b0xEYzZGSEJZSnZjZ09uWnlTK2pGME5VbzNMcV84 My1ydHRCdUpnczlpZF9VRGdAbWFpbC5nbWFpbC5jb20KRGlzY3Vzc2lvbjogaHR0cHM6Ly9w b3N0Z3IuZXMvbS9lMjQ3YzI2MS1lM2ZiLTQ4MTAtODFlMC1hNjU4OTMxNzBlOTRAZHVuc2xh bmUubmV0Ci0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L01ha2VmaWxlICAgIHwgICAxICsK IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9kZGx1dGlscy5jICB8IDI3NSArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9tZXNvbi5idWlsZCB8 ICAgMSArCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgfCAgIDIgKwogNCBm aWxlcyBjaGFuZ2VkLCAyNzkgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy9iYWNrZW5kL3V0aWxzL2FkdC9kZGx1dGlscy5jCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L01ha2VmaWxl CmluZGV4IGE4ZmQ2ODA1ODlmLi4wYzc2MjE5NTdjMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9NYWtl ZmlsZQpAQCAtMzEsNiArMzEsNyBAQCBPQkpTID0gXAogCWRhdGV0aW1lLm8gXAogCWRhdHVt Lm8gXAogCWRic2l6ZS5vIFwKKwlkZGx1dGlscy5vIFwKIAlkb21haW5zLm8gXAogCWVuY29k ZS5vIFwKIAllbnVtLm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Rk bHV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZGRsdXRpbHMuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNGJmN2Q5YzM4YWUKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZGRsdXRpbHMuYwpAQCAtMCwwICsxLDI3 NSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogZGRsdXRpbHMuYworICoJCVV0 aWxpdHkgZnVuY3Rpb25zIGZvciBnZW5lcmF0aW5nIERETCBzdGF0ZW1lbnRzCisgKgorICog VGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBwZ19nZXRfKl9kZGwgZmFtaWx5IG9mIGZ1bmN0aW9u cyB0aGF0IGdlbmVyYXRlCisgKiBEREwgc3RhdGVtZW50cyB0byByZWNyZWF0ZSBkYXRhYmFz ZSBvYmplY3RzIHN1Y2ggYXMgcm9sZXMsIHRhYmxlc3BhY2VzLAorICogYW5kIGRhdGFiYXNl cywgYWxvbmcgd2l0aCBjb21tb24gaW5mcmFzdHJ1Y3R1cmUgZm9yIG9wdGlvbiBwYXJzaW5n IGFuZAorICogcHJldHR5LXByaW50aW5nLgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAo YykgMTk5Ni0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICog UG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5 IG9mIENhbGlmb3JuaWEKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2Vu ZC91dGlscy9hZHQvZGRsdXRpbHMuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICov CisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgi CisjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCisjaW5jbHVkZSAidXRpbHMvdmFybGVuYS5oIgor CisvKiBPcHRpb24gdmFsdWUgdHlwZXMgZm9yIERETCBvcHRpb24gcGFyc2luZyAqLwordHlw ZWRlZiBlbnVtCit7CisJRERMX09QVF9CT09MLAorCURETF9PUFRfVEVYVCwKKwlERExfT1BU X0lOVCwKK30gRGRsT3B0VHlwZTsKKworLyoKKyAqIEEgc2luZ2xlIERETCBvcHRpb24gZGVz Y3JpcHRvcjogY2FsbGVyIGZpbGxzIGluIG5hbWUgYW5kIHR5cGUsCisgKiBwYXJzZV9kZGxf b3B0aW9ucyBmaWxscyBpbiBpc3NldCArIHRoZSBhcHByb3ByaWF0ZSB2YWx1ZSBmaWVsZC4K KyAqLwordHlwZWRlZiBzdHJ1Y3QgRGRsT3B0aW9uCit7CisJY29uc3QgY2hhciAqbmFtZTsJ CQkvKiBvcHRpb24gbmFtZSAoY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaCkgKi8KKwlEZGxPcHRU eXBlCXR5cGU7CQkJLyogZXhwZWN0ZWQgdmFsdWUgdHlwZSAqLworCWJvb2wJCWlzc2V0OwkJ CS8qIHRydWUgaWYgY2FsbGVyIHN1cHBsaWVkIHRoaXMgb3B0aW9uICovCisJLyogZmllbGRz IGZvciBzcGVjaWZpYyBvcHRpb24gdHlwZXMgKi8KKwl1bmlvbgorCXsKKwkJYm9vbAkJYm9v bHZhbDsJLyogZmlsbGVkIGluIGZvciBERExfT1BUX0JPT0wgKi8KKwkJY2hhcgkgICAqdGV4 dHZhbDsJLyogZmlsbGVkIGluIGZvciBERExfT1BUX1RFWFQgKHBhbGxvYydkKSAqLworCQlp bnQJCQlpbnR2YWw7CQkvKiBmaWxsZWQgaW4gZm9yIERETF9PUFRfSU5UICovCisJfTsKK30g RGRsT3B0aW9uOworCisKK3N0YXRpYyB2b2lkIHBhcnNlX2RkbF9vcHRpb25zKEZ1bmN0aW9u Q2FsbEluZm8gZmNpbmZvLCBpbnQgdmFyaWFkaWNfc3RhcnQsCisJCQkJCQkJICBEZGxPcHRp b24gKm9wdHMsIGludCBub3B0cyk7CitzdGF0aWMgdm9pZCBhcHBlbmRfZGRsX29wdGlvbihT dHJpbmdJbmZvIGJ1ZiwgYm9vbCBwcmV0dHksIGludCBpbmRlbnQsCisJCQkJCQkJICBjb25z dCBjaGFyICpmbXQsLi4uKQorCQkJcGdfYXR0cmlidXRlX3ByaW50Zig0LCA1KTsKK3N0YXRp YyB2b2lkIGFwcGVuZF9ndWNfdmFsdWUoU3RyaW5nSW5mbyBidWYsIGNvbnN0IGNoYXIgKm5h bWUsCisJCQkJCQkJIGNvbnN0IGNoYXIgKnZhbHVlKTsKKworCisvKgorICogcGFyc2VfZGRs X29wdGlvbnMKKyAqIAkJUGFyc2UgdmFyaWFkaWMgbmFtZS92YWx1ZSBvcHRpb24gcGFpcnMK KyAqCisgKiBPcHRpb25zIGFyZSBwYXNzZWQgYXMgYWx0ZXJuYXRpbmcga2V5L3ZhbHVlIHRl eHQgcGFpcnMuICBUaGUgY2FsbGVyCisgKiBwcm92aWRlcyBhbiBhcnJheSBvZiBEZGxPcHRp b24gZGVzY3JpcHRvcnMgc3BlY2lmeWluZyB0aGUgYWNjZXB0ZWQKKyAqIG9wdGlvbiBuYW1l cyBhbmQgdGhlaXIgdHlwZXM7IHRoaXMgZnVuY3Rpb24gbWF0Y2hlcyBlYWNoIHN1cHBsaWVk CisgKiBwYWlyIGFnYWluc3QgdGhlIGFycmF5LCB2YWxpZGF0ZXMgdGhlIHZhbHVlLCBhbmQg ZmlsbHMgaW4gdGhlCisgKiByZXN1bHQgZmllbGRzLgorICovCitzdGF0aWMgdm9pZAorcGFy c2VfZGRsX29wdGlvbnMoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGludCB2YXJpYWRpY19z dGFydCwKKwkJCQkgIERkbE9wdGlvbiAqb3B0cywgaW50IG5vcHRzKQoreworCURhdHVtCSAg ICphcmdzOworCWJvb2wJICAgKm51bGxzOworCU9pZAkJICAgKnR5cGVzOworCWludAkJCW5h cmdzOworCisJLyogQ2xlYXIgYWxsIG91dHB1dCBmaWVsZHMgKi8KKwlmb3IgKGludCBpID0g MDsgaSA8IG5vcHRzOyBpKyspCisJeworCQlvcHRzW2ldLmlzc2V0ID0gZmFsc2U7CisJCXN3 aXRjaCAob3B0c1tpXS50eXBlKQorCQl7CisJCQljYXNlIERETF9PUFRfQk9PTDoKKwkJCQlv cHRzW2ldLmJvb2x2YWwgPSBmYWxzZTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRERMX09QVF9U RVhUOgorCQkJCW9wdHNbaV0udGV4dHZhbCA9IE5VTEw7CisJCQkJYnJlYWs7CisJCQljYXNl IERETF9PUFRfSU5UOgorCQkJCW9wdHNbaV0uaW50dmFsID0gMDsKKwkJCQlicmVhazsKKwkJ fQorCX0KKworCW5hcmdzID0gZXh0cmFjdF92YXJpYWRpY19hcmdzKGZjaW5mbywgdmFyaWFk aWNfc3RhcnQsIHRydWUsCisJCQkJCQkJCSAgJmFyZ3MsICZ0eXBlcywgJm51bGxzKTsKKwor CWlmIChuYXJncyA8PSAwKQorCQlyZXR1cm47CisKKwkvKiBIYW5kbGUgREVGQVVMVCBOVUxM IGNhc2UgKi8KKwlpZiAobmFyZ3MgPT0gMSAmJiBudWxsc1swXSkKKwkJcmV0dXJuOworCisJ aWYgKG5hcmdzICUgMiAhPSAwKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCSBlcnJtc2coInZhcmlhZGlj IGFyZ3VtZW50cyBtdXN0IGJlIG5hbWUvdmFsdWUgcGFpcnMiKSwKKwkJCQkgZXJyaGludCgi UHJvdmlkZSBhbiBldmVuIG51bWJlciBvZiB2YXJpYWRpYyBhcmd1bWVudHMgdGhhdCBjYW4g YmUgZGl2aWRlZCBpbnRvIHBhaXJzLiIpKSk7CisKKwkvKgorCSAqIEZvciBlYWNoIG9wdGlv biBuYW1lL3ZhbHVlIHBhaXIsIGZpbmQgY29ycmVzcG9uZGluZyBwb3NpdGlvbmFsIG9wdGlv bgorCSAqIGZvciB0aGUgb3B0aW9uIG5hbWUsIGFuZCBhc3NpZ24gdGhlIG9wdGlvbiB2YWx1 ZS4KKwkgKi8KKwlmb3IgKGludCBpID0gMDsgaSA8IG5hcmdzOyBpICs9IDIpCisJeworCQlj aGFyCSAgICpuYW1lOworCQljaGFyCSAgICp2YWxzdHI7CisJCURkbE9wdGlvbiAgKm9wdCA9 IE5VTEw7CisKKwkJaWYgKG51bGxzW2ldKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCSBlcnJtc2co Im9wdGlvbiBuYW1lIGF0IHZhcmlhZGljIHBvc2l0aW9uICVkIGlzIG51bGwiLCBpICsgMSkp KTsKKworCQluYW1lID0gVGV4dERhdHVtR2V0Q1N0cmluZyhhcmdzW2ldKTsKKworCQlpZiAo bnVsbHNbaSArIDFdKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09E RV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCSBlcnJtc2coInZhbHVlIGZvciBv cHRpb24gXCIlc1wiIG11c3Qgbm90IGJlIG51bGwiLCBuYW1lKSkpOworCisJCS8qIEZpbmQg bWF0Y2hpbmcgb3B0aW9uIGRlc2NyaXB0b3IgKi8KKwkJZm9yIChpbnQgaiA9IDA7IGogPCBu b3B0czsgaisrKQorCQl7CisJCQlpZiAocGdfc3RyY2FzZWNtcChuYW1lLCBvcHRzW2pdLm5h bWUpID09IDApCisJCQl7CisJCQkJb3B0ID0gJm9wdHNbal07CisJCQkJYnJlYWs7CisJCQl9 CisJCX0KKworCQlpZiAob3B0ID09IE5VTEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQko ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJIGVycm1z ZygidW5yZWNvZ25pemVkIG9wdGlvbjogXCIlc1wiIiwgbmFtZSkpKTsKKworCQlpZiAob3B0 LT5pc3NldCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkgZXJybXNnKCJvcHRpb24gXCIlc1wiIGlz IHNwZWNpZmllZCBtb3JlIHRoYW4gb25jZSIsCisJCQkJCQkJbmFtZSkpKTsKKworCQl2YWxz dHIgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGFyZ3NbaSArIDFdKTsKKworCQlzd2l0Y2ggKG9w dC0+dHlwZSkKKwkJeworCQkJY2FzZSBERExfT1BUX0JPT0w6CisJCQkJaWYgKCFwYXJzZV9i b29sKHZhbHN0ciwgJm9wdC0+Ym9vbHZhbCkpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQkJ IGVycm1zZygiaW52YWxpZCB2YWx1ZSBmb3IgYm9vbGVhbiBvcHRpb24gXCIlc1wiOiAlcyIs CisJCQkJCQkJCQluYW1lLCB2YWxzdHIpKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgRERM X09QVF9URVhUOgorCQkJCW9wdC0+dGV4dHZhbCA9IHZhbHN0cjsKKwkJCQl2YWxzdHIgPSBO VUxMOwkvKiBkb24ndCBwZnJlZSBiZWxvdyAqLworCQkJCWJyZWFrOworCisJCQljYXNlIERE TF9PUFRfSU5UOgorCQkJCXsKKwkJCQkJY2hhcgkgICAqZW5kcDsKKwkJCQkJbG9uZwkJdmFs OworCisJCQkJCWVycm5vID0gMDsKKwkJCQkJdmFsID0gc3RydG9sKHZhbHN0ciwgJmVuZHAs IDEwKTsKKwkJCQkJaWYgKCplbmRwICE9ICdcMCcgfHwgZXJybm8gPT0gRVJBTkdFIHx8CisJ CQkJCQl2YWwgPCBQR19JTlQzMl9NSU4gfHwgdmFsID4gUEdfSU5UMzJfTUFYKQorCQkJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFN RVRFUl9WQUxVRSksCisJCQkJCQkJCSBlcnJtc2coImludmFsaWQgdmFsdWUgZm9yIGludGVn ZXIgb3B0aW9uIFwiJXNcIjogJXMiLAorCQkJCQkJCQkJCW5hbWUsIHZhbHN0cikpKTsKKwkJ CQkJb3B0LT5pbnR2YWwgPSAoaW50KSB2YWw7CisJCQkJfQorCQkJCWJyZWFrOworCQl9CisK KwkJb3B0LT5pc3NldCA9IHRydWU7CisKKwkJaWYgKHZhbHN0cikKKwkJCXBmcmVlKHZhbHN0 cik7CisJCXBmcmVlKG5hbWUpOworCX0KK30KKworLyoKKyAqIEhlbHBlciB0byBhcHBlbmQg YSBmb3JtYXR0ZWQgc3RyaW5nIHdpdGggb3B0aW9uYWwgcHJldHR5LXByaW50aW5nLgorICov CitzdGF0aWMgdm9pZAorYXBwZW5kX2RkbF9vcHRpb24oU3RyaW5nSW5mbyBidWYsIGJvb2wg cHJldHR5LCBpbnQgaW5kZW50LAorCQkJCSAgY29uc3QgY2hhciAqZm10LC4uLikKK3sKKwlp ZiAocHJldHR5KQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnXG4nKTsKKwkJ YXBwZW5kU3RyaW5nSW5mb1NwYWNlcyhidWYsIGluZGVudCk7CisJfQorCWVsc2UKKwkJYXBw ZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnICcpOworCisJZm9yICg7OykKKwl7CisJCXZhX2xp c3QJCWFyZ3M7CisJCWludAkJCW5lZWRlZDsKKworCQl2YV9zdGFydChhcmdzLCBmbXQpOwor CQluZWVkZWQgPSBhcHBlbmRTdHJpbmdJbmZvVkEoYnVmLCBmbXQsIGFyZ3MpOworCQl2YV9l bmQoYXJncyk7CisJCWlmIChuZWVkZWQgPT0gMCkKKwkJCWJyZWFrOworCQllbmxhcmdlU3Ry aW5nSW5mbyhidWYsIG5lZWRlZCk7CisJfQorfQorCisvKgorICogYXBwZW5kX2d1Y192YWx1 ZQorICoJCUFwcGVuZCBhIEdVQyBzZXR0aW5nIHZhbHVlIHRvIGJ1ZiwgaGFuZGxpbmcgR1VD X0xJU1RfUVVPVEUgcHJvcGVybHkuCisgKgorICogVmFyaWFibGVzIG1hcmtlZCBHVUNfTElT VF9RVU9URSB3ZXJlIGFscmVhZHkgZnVsbHkgcXVvdGVkIGJlZm9yZSB0aGV5CisgKiB3ZXJl IHN0b3JlZCBpbiB0aGUgc2V0Y29uZmlnIGFycmF5LiAgV2UgYnJlYWsgdGhlIGxpc3QgdmFs dWUgYXBhcnQKKyAqIGFuZCByZS1xdW90ZSB0aGUgZWxlbWVudHMgYXMgc3RyaW5nIGxpdGVy YWxzLiAgRm9yIGFsbCBvdGhlciB2YXJpYWJsZXMKKyAqIHdlIHNpbXBseSBxdW90ZSB0aGUg dmFsdWUgYXMgYSBzaW5nbGUgc3RyaW5nIGxpdGVyYWwuCisgKgorICogVGhlIGNhbGxlciBo YXMgYWxyZWFkeSBhcHBlbmRlZCAiU0VUIDxuYW1lPiBUTyAiIHRvIGJ1Zi4KKyAqLworc3Rh dGljIHZvaWQKK2FwcGVuZF9ndWNfdmFsdWUoU3RyaW5nSW5mbyBidWYsIGNvbnN0IGNoYXIg Km5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQoreworCWNoYXIJICAgKnJhd3ZhbDsKKworCXJh d3ZhbCA9IHBzdHJkdXAodmFsdWUpOworCisJaWYgKEdldENvbmZpZ09wdGlvbkZsYWdzKG5h bWUsIHRydWUpICYgR1VDX0xJU1RfUVVPVEUpCisJeworCQlMaXN0CSAgICpuYW1lbGlzdDsK KwkJYm9vbAkJZmlyc3QgPSB0cnVlOworCisJCS8qIFBhcnNlIHN0cmluZyBpbnRvIGxpc3Qg b2YgaWRlbnRpZmllcnMgKi8KKwkJaWYgKCFTcGxpdEdVQ0xpc3QocmF3dmFsLCAnLCcsICZu YW1lbGlzdCkpCisJCXsKKwkJCS8qIHRoaXMgc2hvdWxkbid0IGZhaWwgcmVhbGx5ICovCisJ CQllbG9nKEVSUk9SLCAiaW52YWxpZCBsaXN0IHN5bnRheCBpbiBzZXRjb25maWcgaXRlbSIp OworCQl9CisJCS8qIFNwZWNpYWwgY2FzZTogcmVwcmVzZW50IGFuIGVtcHR5IGxpc3QgYXMg TlVMTCAqLworCQlpZiAobmFtZWxpc3QgPT0gTklMKQorCQkJYXBwZW5kU3RyaW5nSW5mb1N0 cmluZyhidWYsICJOVUxMIik7CisJCWZvcmVhY2hfcHRyKGNoYXIsIGN1cm5hbWUsIG5hbWVs aXN0KQorCQl7CisJCQlpZiAoZmlyc3QpCisJCQkJZmlyc3QgPSBmYWxzZTsKKwkJCWVsc2UK KwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiwgIik7CisJCQlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKGJ1ZiwgcXVvdGVfbGl0ZXJhbF9jc3RyKGN1cm5hbWUpKTsKKwkJfQor CQlsaXN0X2ZyZWUobmFtZWxpc3QpOworCX0KKwllbHNlCisJCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoYnVmLCBxdW90ZV9saXRlcmFsX2NzdHIocmF3dmFsKSk7CisKKwlwZnJlZShyYXd2 YWwpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21lc29uLmJ1aWxk IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21lc29uLmJ1aWxkCmluZGV4IGZiODI5NGQ3ZTRh Li5kNzkzZjgxNDVmNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21lc29u LmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tZXNvbi5idWlsZApAQCAtMzAs NiArMzAsNyBAQCBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCiAgICdkYXRldGltZS5jJywK ICAgJ2RhdHVtLmMnLAogICAnZGJzaXplLmMnLAorICAnZGRsdXRpbHMuYycsCiAgICdkb21h aW5zLmMnLAogICAnZW5jb2RlLmMnLAogICAnZW51bS5jJywKZGlmZiAtLWdpdCBhL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKaW5kZXggNWJjNTE3NjAyYjEuLmMxYTU5NDhiMTkxIDEwMDY0NAotLS0gYS9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdApAQCAtNjI2LDYgKzYyNiw4IEBAIERTTVJFbnRyeVR5cGUKIERT TVJlZ2lzdHJ5Q3R4U3RydWN0CiBEU01SZWdpc3RyeUVudHJ5CiBEV09SRAorRGRsT3B0VHlw ZQorRGRsT3B0aW9uCiBEYXRhRGlyU3luY01ldGhvZAogRGF0YUR1bXBlclB0cgogRGF0YVBh Z2VEZWxldGVTdGFjawotLSAKMi40My4wCgo= --------------0aiYBQ0Vz1MQXyFMtlfveiSt Content-Type: text/x-patch; charset=UTF-8; name="v4-0002-Add-pg_get_role_ddl-function.patch" Content-Disposition: attachment; filename="v4-0002-Add-pg_get_role_ddl-function.patch" Content-Transfer-Encoding: base64 RnJvbSBlYWI1NmUwYmEyZTA2NDkwY2FjNGU2NTRkYzQ0MmQ5NjhkZWI5NmFjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogVGh1LCAxOSBNYXIgMjAyNiAwOTo1MjoyNSAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggdjQgMi80XSBBZGQgcGdfZ2V0X3JvbGVfZGRsKCkgZnVuY3Rpb24KCkFkZCBhIG5l dyBTUUwtY2FsbGFibGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBEREwgc3RhdGVtZW50 cyBuZWVkZWQKdG8gcmVjcmVhdGUgYSByb2xlLiBJdCB0YWtlcyBhIHJlZ3JvbGUgYXJndW1l bnQgYW5kIGFuIG9wdGlvbmFsIFZBUklBRElDCnRleHQgYXJndW1lbnQgZm9yIG9wdGlvbnMg dGhhdCBhcmUgc3BlY2lmaWVkIGFzIGFsdGVybmF0aW5nIG5hbWUvdmFsdWUKcGFpcnMuIFRo ZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgc3VwcG9ydGVkOiBwcmV0dHkgKGJvb2xlYW4pIGZv cgpmb3JtYXR0ZWQgb3V0cHV0IGFuZCBtZW1iZXJzaGlwcyAoYm9vbGVhbikgdG8gaW5jbHVk ZSBHUkFOVCBzdGF0ZW1lbnRzCmZvciByb2xlIG1lbWJlcnNoaXBzIGFuZCBtZW1iZXJzaGlw IG9wdGlvbnMuIFRoZSByZXR1cm4gaXMgb25lIG9yCm11bHRpcGxlIHJvd3Mgd2hlcmUgdGhl IGZpcnN0IHJvdyBpcyBhIENSRUFURSBST0xFIHN0YXRlbWVudCBhbmQKc3Vic2VxdWVudCBy b3dzIGFyZSBBTFRFUiBST0xFIHN0YXRlbWVudHMgdG8gc2V0IHNvbWUgcm9sZSBwcm9wZXJ0 aWVzLgpQYXNzd29yZCBpbmZvcm1hdGlvbiBpcyBuZXZlciBpbmNsdWRlZCBpbiB0aGUgb3V0 cHV0LgoKVGhlIGNhbGxlciBtdXN0IGhhdmUgU0VMRUNUIHByaXZpbGVnZSBvbiBwZ19hdXRo aWQuCgpBdXRob3I6IE1hcmlvIEdvbnphbGV6IDxnb256YWxlbWFyaW9AZ21haWwuY29tPgpB dXRob3I6IEJyeWFuIEdyZWVuIDxkYnJ5YW4uZ3JlZW5AZ21haWwuY29tPgpDby1hdXRob3Jl ZC1ieTogQW5kcmV3IER1bnN0YW4gPGFuZHJld0BkdW5zbGFuZS5uZXQ+CkNvLWF1dGhvcmVk LWJ5OiBFdWxlciBUYXZlaXJhIDxldWxlckBldWxlcnRvLmNvbT4KUmV2aWV3ZWQtYnk6IEph cGluIExpIDxqYXBpbmxpQGhvdG1haWwuY29tPgpSZXZpZXdlZC1ieTogUXVhbiBab25nbGlh bmcgPHF1YW56b25nbGlhbmdAeWVhaC5uZXQ+ClJldmlld2VkLWJ5OiBqaWFuIGhlIDxqaWFu LnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vNGM1Zjg5NWUtMzI4MS00OGY4LWI5NDMtOTIyOGI3ZGE2NDcxQGdtYWlsLmNvbQpEaXNj dXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL2UyNDdjMjYxLWUzZmItNDgxMC04MWUwLWE2 NTg5MzE3MGU5NEBkdW5zbGFuZS5uZXQKLS0tCiBkb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWlu Zm8uc2dtbCAgICAgICB8ICA1NiArKysrCiBzcmMvYmFja2VuZC91dGlscy9hZHQvZGRsdXRp bHMuYyAgICAgICB8IDM2MSArKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICB8ICAgOCArCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3JvbGVfZGRsLm91dCB8IDE0MyArKysrKysrKysrCiBzcmMvdGVzdC9yZWdy ZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICB8ICAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL3Nx bC9yb2xlX2RkbC5zcWwgICAgICB8ICA5NiArKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDY2 NiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9yb2xlX2RkbC5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9yb2xlX2RkbC5zcWwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZnVuYy9m dW5jLWluZm8uc2dtbCBiL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtaW5mby5zZ21sCmluZGV4 IDViNWYxZjNjNWRmLi43Y2IwMjBiNmZkMyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Z1 bmMvZnVuYy1pbmZvLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1pbmZvLnNn bWwKQEAgLTM4NjAsNCArMzg2MCw2MCBAQCBhY2wgICAgICB8IHtwb3N0Z3Jlcz1hcndkRHh0 bS9wb3N0Z3Jlcyxmb289ci9wb3N0Z3Jlc30KIAogICA8L3NlY3QyPgogCisgIDxzZWN0MiBp ZD0iZnVuY3Rpb25zLWdldC1vYmplY3QtZGRsIj4KKyAgIDx0aXRsZT5HZXQgT2JqZWN0IERE TCBGdW5jdGlvbnM8L3RpdGxlPgorCisgICA8cGFyYT4KKyAgICBUaGUgZnVuY3Rpb25zIHNo b3duIGluIDx4cmVmIGxpbmtlbmQ9ImZ1bmN0aW9ucy1nZXQtb2JqZWN0LWRkbC10YWJsZSIv PgorICAgIHJlY29uc3RydWN0IERETCBzdGF0ZW1lbnRzIGZvciB2YXJpb3VzIGdsb2JhbCBk YXRhYmFzZSBvYmplY3RzLgorICAgIEVhY2ggZnVuY3Rpb24gcmV0dXJucyBhIHNldCBvZiB0 ZXh0IHJvd3MsIG9uZSBTUUwgc3RhdGVtZW50IHBlciByb3cuCisgICAgKFRoaXMgaXMgYSBk ZWNvbXBpbGVkIHJlY29uc3RydWN0aW9uLCBub3QgdGhlIG9yaWdpbmFsIHRleHQgb2YgdGhl CisgICAgY29tbWFuZC4pICBGdW5jdGlvbnMgdGhhdCBhY2NlcHQgPGxpdGVyYWw+VkFSSUFE SUM8L2xpdGVyYWw+IG9wdGlvbnMKKyAgICB0YWtlIGFsdGVybmF0aW5nIG5hbWUvdmFsdWUg dGV4dCBwYWlyczsgdmFsdWVzIGFyZSBwYXJzZWQgYXMgYm9vbGVhbiwKKyAgICBpbnRlZ2Vy IG9yIHRleHQuCisgICA8L3BhcmE+CisKKyAgIDx0YWJsZSBpZD0iZnVuY3Rpb25zLWdldC1v YmplY3QtZGRsLXRhYmxlIj4KKyAgICA8dGl0bGU+R2V0IE9iamVjdCBEREwgRnVuY3Rpb25z PC90aXRsZT4KKyAgICA8dGdyb3VwIGNvbHM9IjEiPgorICAgICA8dGhlYWQ+CisgICAgICA8 cm93PgorICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xl PSJmdW5jX3NpZ25hdHVyZSI+CisgICAgICAgIEZ1bmN0aW9uCisgICAgICAgPC9wYXJhPgor ICAgICAgIDxwYXJhPgorICAgICAgICBEZXNjcmlwdGlvbgorICAgICAgIDwvcGFyYT48L2Vu dHJ5PgorICAgICAgPC9yb3c+CisgICAgIDwvdGhlYWQ+CisKKyAgICAgPHRib2R5PgorICAg ICAgPHJvdz4KKyAgICAgICA8ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEg cm9sZT0iZnVuY19zaWduYXR1cmUiPgorICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAg PHByaW1hcnk+cGdfZ2V0X3JvbGVfZGRsPC9wcmltYXJ5PgorICAgICAgICA8L2luZGV4dGVy bT4KKyAgICAgICAgPGZ1bmN0aW9uPnBnX2dldF9yb2xlX2RkbDwvZnVuY3Rpb24+CisgICAg ICAgICggPHBhcmFtZXRlcj5yb2xlPC9wYXJhbWV0ZXI+IDx0eXBlPnJlZ3JvbGU8L3R5cGU+ CisgICAgICAgIDxvcHRpb25hbD4sIDxsaXRlcmFsPlZBUklBRElDPC9saXRlcmFsPiA8cGFy YW1ldGVyPm9wdGlvbnM8L3BhcmFtZXRlcj4KKyAgICAgICAgPHR5cGU+dGV4dDwvdHlwZT4g PC9vcHRpb25hbD4gKQorICAgICAgICA8cmV0dXJudmFsdWU+c2V0b2YgdGV4dDwvcmV0dXJu dmFsdWU+CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBSZWNvbnN0 cnVjdHMgdGhlIDxjb21tYW5kPkNSRUFURSBST0xFPC9jb21tYW5kPiBzdGF0ZW1lbnQgYW5k IGFueQorICAgICAgICA8Y29tbWFuZD5BTFRFUiBST0xFIC4uLiBTRVQ8L2NvbW1hbmQ+IHN0 YXRlbWVudHMgZm9yIHRoZSBnaXZlbiByb2xlLgorICAgICAgICBFYWNoIHN0YXRlbWVudCBp cyByZXR1cm5lZCBhcyBhIHNlcGFyYXRlIHJvdy4KKyAgICAgICAgUGFzc3dvcmQgaW5mb3Jt YXRpb24gaXMgbmV2ZXIgaW5jbHVkZWQgaW4gdGhlIG91dHB1dC4KKyAgICAgICAgVGhlIGZv bGxvd2luZyBvcHRpb25zIGFyZSBzdXBwb3J0ZWQ6IDxsaXRlcmFsPnByZXR0eTwvbGl0ZXJh bD4gKGJvb2xlYW4pCisgICAgICAgIGZvciBwcmV0dHktcHJpbnRlZCBvdXRwdXQgYW5kIDxs aXRlcmFsPm1lbWJlcnNoaXBzPC9saXRlcmFsPiAoYm9vbGVhbiwKKyAgICAgICAgZGVmYXVs dCB0cnVlKSB0byBpbmNsdWRlIDxjb21tYW5kPkdSQU5UPC9jb21tYW5kPiBzdGF0ZW1lbnRz IGZvcgorICAgICAgICByb2xlIG1lbWJlcnNoaXBzIGFuZCB0aGVpciBvcHRpb25zLgorICAg ICAgIDwvcGFyYT48L2VudHJ5PgorICAgICAgPC9yb3c+CisgICAgIDwvdGJvZHk+CisgICAg PC90Z3JvdXA+CisgICA8L3RhYmxlPgorCisgIDwvc2VjdDI+CisKICAgPC9zZWN0MT4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kZGx1dGlscy5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2RkbHV0aWxzLmMKaW5kZXggNGJmN2Q5YzM4YWUuLmJjZWExZWM1OTgx IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZGRsdXRpbHMuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvZGRsdXRpbHMuYwpAQCAtMTgsOCArMTgsMjUgQEAKICAq LwogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKKyNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIK KyNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCisjaW5jbHVkZSAiYWNjZXNzL3Jl bGF0aW9uLmgiCisjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCisjaW5jbHVkZSAiY2F0YWxv Zy9wZ19hdXRoX21lbWJlcnMuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2F1dGhpZC5oIgor I2luY2x1ZGUgImNhdGFsb2cvcGdfZGJfcm9sZV9zZXR0aW5nLmgiCisjaW5jbHVkZSAiZnVu Y2FwaS5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInV0aWxzL2FjbC5o IgorI2luY2x1ZGUgInV0aWxzL2FycmF5LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMu aCIKKyNpbmNsdWRlICJ1dGlscy9kYXRldGltZS5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3Jv aWRzLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2Nh Y2hlLmgiCisjaW5jbHVkZSAidXRpbHMvcmVsLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2Fj aGUuaCIKKyNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKICNpbmNsdWRlICJ1dGlscy92 YXJsZW5hLmgiCiAKIC8qIE9wdGlvbiB2YWx1ZSB0eXBlcyBmb3IgRERMIG9wdGlvbiBwYXJz aW5nICovCkBAIC01Niw2ICs3Myw4IEBAIHN0YXRpYyB2b2lkIGFwcGVuZF9kZGxfb3B0aW9u KFN0cmluZ0luZm8gYnVmLCBib29sIHByZXR0eSwgaW50IGluZGVudCwKIAkJCXBnX2F0dHJp YnV0ZV9wcmludGYoNCwgNSk7CiBzdGF0aWMgdm9pZCBhcHBlbmRfZ3VjX3ZhbHVlKFN0cmlu Z0luZm8gYnVmLCBjb25zdCBjaGFyICpuYW1lLAogCQkJCQkJCSBjb25zdCBjaGFyICp2YWx1 ZSk7CitzdGF0aWMgTGlzdCAqcGdfZ2V0X3JvbGVfZGRsX2ludGVybmFsKE9pZCByb2xlaWQs IGJvb2wgcHJldHR5LAorCQkJCQkJCQkJICBib29sIG1lbWJlcnNoaXBzKTsKIAogCiAvKgpA QCAtMjczLDMgKzI5MiwzNDUgQEAgYXBwZW5kX2d1Y192YWx1ZShTdHJpbmdJbmZvIGJ1Ziwg Y29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCiAKIAlwZnJlZShyYXd2YWwp OwogfQorCisvKgorICogcGdfZ2V0X3JvbGVfZGRsX2ludGVybmFsCisgKgkJR2VuZXJhdGUg RERMIHN0YXRlbWVudHMgdG8gcmVjcmVhdGUgYSByb2xlCisgKgorICogUmV0dXJucyBhIExp c3Qgb2YgcGFsbG9jJ2Qgc3RyaW5ncywgZWFjaCBiZWluZyBhIGNvbXBsZXRlIFNRTCBzdGF0 ZW1lbnQuCisgKiBUaGUgZmlyc3QgbGlzdCBlbGVtZW50IGlzIGFsd2F5cyB0aGUgQ1JFQVRF IFJPTEUgc3RhdGVtZW50OyBzdWJzZXF1ZW50CisgKiBlbGVtZW50cyBhcmUgQUxURVIgUk9M RSBTRVQgc3RhdGVtZW50cyBmb3IgYW55IHJvbGUtc3BlY2lmaWMgb3IKKyAqIHJvbGUtaW4t ZGF0YWJhc2UgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4gIElmIG1lbWJlcnNoaXBzIGlzIHRy dWUsCisgKiBHUkFOVCBzdGF0ZW1lbnRzIGZvciByb2xlIG1lbWJlcnNoaXBzIGFyZSBhcHBl bmRlZC4KKyAqLworc3RhdGljIExpc3QgKgorcGdfZ2V0X3JvbGVfZGRsX2ludGVybmFsKE9p ZCByb2xlaWQsIGJvb2wgcHJldHR5LCBib29sIG1lbWJlcnNoaXBzKQoreworCUhlYXBUdXBs ZQl0dXBsZTsKKwlGb3JtX3BnX2F1dGhpZCByb2xlZm9ybTsKKwlTdHJpbmdJbmZvRGF0YSBi dWY7CisJY2hhcgkgICAqcm9sbmFtZTsKKwlEYXR1bQkJcm9sZXZhbGlkdW50aWw7CisJYm9v bAkJaXNudWxsOworCVJlbGF0aW9uCXJlbDsKKwlTY2FuS2V5RGF0YSBzY2Fua2V5OworCVN5 c1NjYW5EZXNjIHNjYW47CisJTGlzdAkgICAqc3RhdGVtZW50cyA9IE5JTDsKKworCXR1cGxl ID0gU2VhcmNoU3lzQ2FjaGUxKEFVVEhPSUQsIE9iamVjdElkR2V0RGF0dW0ocm9sZWlkKSk7 CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCSBlcnJtc2coInJv bGUgd2l0aCBPSUQgJXUgZG9lcyBub3QgZXhpc3QiLCByb2xlaWQpKSk7CisKKwlyb2xlZm9y bSA9IChGb3JtX3BnX2F1dGhpZCkgR0VUU1RSVUNUKHR1cGxlKTsKKwlyb2xuYW1lID0gcHN0 cmR1cChOYW1lU3RyKHJvbGVmb3JtLT5yb2xuYW1lKSk7CisKKwkvKiBVc2VyIG11c3QgaGF2 ZSBTRUxFQ1QgcHJpdmlsZWdlIG9uIHBnX2F1dGhpZC4gKi8KKwlpZiAocGdfY2xhc3NfYWNs Y2hlY2soQXV0aElkUmVsYXRpb25JZCwgR2V0VXNlcklkKCksIEFDTF9TRUxFQ1QpICE9IEFD TENIRUNLX09LKQorCXsKKwkJUmVsZWFzZVN5c0NhY2hlKHR1cGxlKTsKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAor CQkJCSBlcnJtc2coInBlcm1pc3Npb24gZGVuaWVkIGZvciByb2xlICVzIiwgcm9sbmFtZSkp KTsKKwl9CisKKwkvKgorCSAqIFdlIGRvbid0IHN1cHBvcnQgZ2VuZXJhdGluZyBEREwgZm9y IHN5c3RlbSByb2xlcy4gIFRoZSBwcmltYXJ5IHJlYXNvbgorCSAqIGZvciB0aGlzIGlzIHRo YXQgdXNlcnMgc2hvdWxkbid0IGJlIHJlY3JlYXRpbmcgdGhlbS4KKwkgKi8KKwlpZiAoSXNS ZXNlcnZlZE5hbWUocm9sbmFtZSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9SRVNFUlZFRF9OQU1FKSwKKwkJCQkgZXJybXNnKCJyb2xlIG5hbWUgXCIlc1wi IGlzIHJlc2VydmVkIiwgcm9sbmFtZSksCisJCQkJIGVycmRldGFpbCgiUm9sZSBuYW1lcyBz dGFydGluZyB3aXRoIFwicGdfXCIgYXJlIHJlc2VydmVkIGZvciBzeXN0ZW0gcm9sZXMuIikp KTsKKworCWluaXRTdHJpbmdJbmZvKCZidWYpOworCWFwcGVuZFN0cmluZ0luZm8oJmJ1Ziwg IkNSRUFURSBST0xFICVzIiwgcXVvdGVfaWRlbnRpZmllcihyb2xuYW1lKSk7CisKKwkvKgor CSAqIEFwcGVuZCByb2xlIGF0dHJpYnV0ZXMuICBUaGUgb3JkZXIgaGVyZSBmb2xsb3dzIHRo ZSBzYW1lIHNlcXVlbmNlIGFzCisJICogeW91J2QgdHlwaWNhbGx5IHdyaXRlIHRoZW0gaW4g YSBDUkVBVEUgUk9MRSBjb21tYW5kLCB0aG91Z2ggYW55IG9yZGVyCisJICogaXMgYWN0dWFs bHkgYWNjZXB0YWJsZSB0byB0aGUgcGFyc2VyLgorCSAqLworCWFwcGVuZF9kZGxfb3B0aW9u KCZidWYsIHByZXR0eSwgNCwgIiVzIiwKKwkJCQkJICByb2xlZm9ybS0+cm9sc3VwZXIgPyAi U1VQRVJVU0VSIiA6ICJOT1NVUEVSVVNFUiIpOworCisJYXBwZW5kX2RkbF9vcHRpb24oJmJ1 ZiwgcHJldHR5LCA0LCAiJXMiLAorCQkJCQkgIHJvbGVmb3JtLT5yb2xpbmhlcml0ID8gIklO SEVSSVQiIDogIk5PSU5IRVJJVCIpOworCisJYXBwZW5kX2RkbF9vcHRpb24oJmJ1ZiwgcHJl dHR5LCA0LCAiJXMiLAorCQkJCQkgIHJvbGVmb3JtLT5yb2xjcmVhdGVyb2xlID8gIkNSRUFU RVJPTEUiIDogIk5PQ1JFQVRFUk9MRSIpOworCisJYXBwZW5kX2RkbF9vcHRpb24oJmJ1Ziwg cHJldHR5LCA0LCAiJXMiLAorCQkJCQkgIHJvbGVmb3JtLT5yb2xjcmVhdGVkYiA/ICJDUkVB VEVEQiIgOiAiTk9DUkVBVEVEQiIpOworCisJYXBwZW5kX2RkbF9vcHRpb24oJmJ1ZiwgcHJl dHR5LCA0LCAiJXMiLAorCQkJCQkgIHJvbGVmb3JtLT5yb2xjYW5sb2dpbiA/ICJMT0dJTiIg OiAiTk9MT0dJTiIpOworCisJYXBwZW5kX2RkbF9vcHRpb24oJmJ1ZiwgcHJldHR5LCA0LCAi JXMiLAorCQkJCQkgIHJvbGVmb3JtLT5yb2xyZXBsaWNhdGlvbiA/ICJSRVBMSUNBVElPTiIg OiAiTk9SRVBMSUNBVElPTiIpOworCisJYXBwZW5kX2RkbF9vcHRpb24oJmJ1ZiwgcHJldHR5 LCA0LCAiJXMiLAorCQkJCQkgIHJvbGVmb3JtLT5yb2xieXBhc3NybHMgPyAiQllQQVNTUkxT IiA6ICJOT0JZUEFTU1JMUyIpOworCisJLyoKKwkgKiBDT05ORUNUSU9OIExJTUlUIGlzIG9u bHkgaW50ZXJlc3RpbmcgaWYgaXQncyBub3QgLTEgKHRoZSBkZWZhdWx0LAorCSAqIG1lYW5p bmcgbm8gbGltaXQpLgorCSAqLworCWlmIChyb2xlZm9ybS0+cm9sY29ubmxpbWl0ID49IDAp CisJCWFwcGVuZF9kZGxfb3B0aW9uKCZidWYsIHByZXR0eSwgNCwgIkNPTk5FQ1RJT04gTElN SVQgJWQiLAorCQkJCQkJICByb2xlZm9ybS0+cm9sY29ubmxpbWl0KTsKKworCXJvbGV2YWxp ZHVudGlsID0gU3lzQ2FjaGVHZXRBdHRyKEFVVEhPSUQsIHR1cGxlLAorCQkJCQkJCQkJIEFu dW1fcGdfYXV0aGlkX3JvbHZhbGlkdW50aWwsCisJCQkJCQkJCQkgJmlzbnVsbCk7CisJaWYg KCFpc251bGwpCisJeworCQlUaW1lc3RhbXBUeiB0czsKKwkJaW50CQkJdHo7CisJCXN0cnVj dCBwZ190bSB0bTsKKwkJZnNlY190CQlmc2VjOworCQljb25zdCBjaGFyICp0em47CisJCWNo YXIJCXRzX3N0cltNQVhEQVRFTEVOICsgMV07CisKKwkJdHMgPSBEYXR1bUdldFRpbWVzdGFt cFR6KHJvbGV2YWxpZHVudGlsKTsKKwkJaWYgKFRJTUVTVEFNUF9OT1RfRklOSVRFKHRzKSkK KwkJCUVuY29kZVNwZWNpYWxUaW1lc3RhbXAodHMsIHRzX3N0cik7CisJCWVsc2UgaWYgKHRp bWVzdGFtcDJ0bSh0cywgJnR6LCAmdG0sICZmc2VjLCAmdHpuLCBOVUxMKSA9PSAwKQorCQkJ RW5jb2RlRGF0ZVRpbWUoJnRtLCBmc2VjLCB0cnVlLCB0eiwgdHpuLCBVU0VfSVNPX0RBVEVT LCB0c19zdHIpOworCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShF UlJDT0RFX0RBVEVUSU1FX1ZBTFVFX09VVF9PRl9SQU5HRSksCisJCQkJCSBlcnJtc2coInRp bWVzdGFtcCBvdXQgb2YgcmFuZ2UiKSkpOworCisJCWFwcGVuZF9kZGxfb3B0aW9uKCZidWYs IHByZXR0eSwgNCwgIlZBTElEIFVOVElMICVzIiwKKwkJCQkJCSAgcXVvdGVfbGl0ZXJhbF9j c3RyKHRzX3N0cikpOworCX0KKworCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CisKKwkvKgor CSAqIFdlIGludGVudGlvbmFsbHkgb21pdCBQQVNTV09SRC4gIFRoZXJlJ3Mgbm8gd2F5IHRv IHJldHJpZXZlIHRoZQorCSAqIG9yaWdpbmFsIHBhc3N3b3JkIHRleHQgZnJvbSB0aGUgc3Rv cmVkIGhhc2gsIGFuZCBldmVuIGlmIHdlIGNvdWxkLAorCSAqIGV4cG9zaW5nIHBhc3N3b3Jk cyB0aHJvdWdoIGEgU1FMIGZ1bmN0aW9uIHdvdWxkIGJlIGEgc2VjdXJpdHkgaXNzdWUuCisJ ICogVXNlcnMgbXVzdCBzZXQgcGFzc3dvcmRzIHNlcGFyYXRlbHkgYWZ0ZXIgcmVjcmVhdGlu ZyByb2xlcy4KKwkgKi8KKworCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICc7Jyk7CisK KwlzdGF0ZW1lbnRzID0gbGFwcGVuZChzdGF0ZW1lbnRzLCBwc3RyZHVwKGJ1Zi5kYXRhKSk7 CisKKwkvKgorCSAqIE5vdyBzY2FuIHBnX2RiX3JvbGVfc2V0dGluZyBmb3IgQUxURVIgUk9M RSBTRVQgY29uZmlndXJhdGlvbnMuCisJICoKKwkgKiBUaGVzZSBjYW4gYmUgcm9sZS13aWRl IChzZXRkYXRhYmFzZSA9IDApIG9yIHNwZWNpZmljIHRvIGEgcGFydGljdWxhcgorCSAqIGRh dGFiYXNlIChzZXRkYXRhYmFzZSA9IGEgdmFsaWQgREIgT0lEKS4gIEl0IGdlbmVyYXRlcyBv bmUgQUxURVIKKwkgKiBzdGF0ZW1lbnQgcGVyIHNldHRpbmcuCisJICovCisJcmVsID0gdGFi bGVfb3BlbihEYlJvbGVTZXR0aW5nUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlT Y2FuS2V5SW5pdCgmc2NhbmtleSwKKwkJCQlBbnVtX3BnX2RiX3JvbGVfc2V0dGluZ19zZXRy b2xlLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJ ZEdldERhdHVtKHJvbGVpZCkpOworCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocmVsLCBE YlJvbGVTZXR0aW5nRGF0aWRSb2xpZEluZGV4SWQsIHRydWUsCisJCQkJCQkJICBOVUxMLCAx LCAmc2NhbmtleSk7CisKKwl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSA9IHN5c3Rh YmxlX2dldG5leHQoc2NhbikpKQorCXsKKwkJRm9ybV9wZ19kYl9yb2xlX3NldHRpbmcgc2V0 dGluZyA9IChGb3JtX3BnX2RiX3JvbGVfc2V0dGluZykgR0VUU1RSVUNUKHR1cGxlKTsKKwkJ T2lkCQkJZGF0aWQgPSBzZXR0aW5nLT5zZXRkYXRhYmFzZTsKKwkJRGF0dW0JCWRhdHVtOwor CQlBcnJheVR5cGUgICpyb2xlX3NldHRpbmdzOworCQlEYXR1bQkgICAqc2V0dGluZ3M7CisJ CWJvb2wJICAgKm51bGxzOworCQlpbnQJCQluc2V0dGluZ3M7CisJCWNoYXIJICAgKmRhdG5h bWUgPSBOVUxMOworCisJCS8qCisJCSAqIElmIHNldGRhdGFiYXNlIGlzIHZhbGlkLCB0aGlz IGlzIGEgcm9sZS1pbi1kYXRhYmFzZSBzZXR0aW5nOworCQkgKiBvdGhlcndpc2UgaXQncyBh IHJvbGUtd2lkZSBzZXR0aW5nLiAgTG9vayB1cCB0aGUgZGF0YWJhc2UgbmFtZSBvbmNlCisJ CSAqIGZvciBhbGwgc2V0dGluZ3MgaW4gdGhpcyByb3cuCisJCSAqLworCQlpZiAoT2lkSXNW YWxpZChkYXRpZCkpCisJCXsKKwkJCWRhdG5hbWUgPSBnZXRfZGF0YWJhc2VfbmFtZShkYXRp ZCk7CisJCQkvKiBEYXRhYmFzZSBoYXMgYmVlbiBkcm9wcGVkOyBza2lwIGFsbCBzZXR0aW5n cyBpbiB0aGlzIHJvdy4gKi8KKwkJCWlmIChkYXRuYW1lID09IE5VTEwpCisJCQkJY29udGlu dWU7CisJCX0KKworCQkvKgorCQkgKiBUaGUgc2V0Y29uZmlnIGNvbHVtbiBpcyBhIHRleHQg YXJyYXkgaW4gIm5hbWU9dmFsdWUiIGZvcm1hdC4gSXQKKwkJICogc2hvdWxkIG5ldmVyIGJl IG51bGwgZm9yIGEgdmFsaWQgcm93LCBidXQgYmUgZGVmZW5zaXZlLgorCQkgKi8KKwkJZGF0 dW0gPSBoZWFwX2dldGF0dHIodHVwbGUsIEFudW1fcGdfZGJfcm9sZV9zZXR0aW5nX3NldGNv bmZpZywKKwkJCQkJCQkgUmVsYXRpb25HZXREZXNjcihyZWwpLCAmaXNudWxsKTsKKwkJaWYg KGlzbnVsbCkKKwkJCWNvbnRpbnVlOworCisJCXJvbGVfc2V0dGluZ3MgPSBEYXR1bUdldEFy cmF5VHlwZVAoZGF0dW0pOworCisJCWRlY29uc3RydWN0X2FycmF5X2J1aWx0aW4ocm9sZV9z ZXR0aW5ncywgVEVYVE9JRCwgJnNldHRpbmdzLCAmbnVsbHMsICZuc2V0dGluZ3MpOworCisJ CWZvciAoaW50IGkgPSAwOyBpIDwgbnNldHRpbmdzOyBpKyspCisJCXsKKwkJCWNoYXIJICAg KnMsCisJCQkJCSAgICpwOworCisJCQlpZiAobnVsbHNbaV0pCisJCQkJY29udGludWU7CisK KwkJCXMgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKHNldHRpbmdzW2ldKTsKKwkJCXAgPSBzdHJj aHIocywgJz0nKTsKKwkJCWlmIChwID09IE5VTEwpCisJCQl7CisJCQkJcGZyZWUocyk7CisJ CQkJY29udGludWU7CisJCQl9CisJCQkqcCsrID0gJ1wwJzsKKworCQkJLyogQnVpbGQgYSBm cmVzaCBBTFRFUiBST0xFIHN0YXRlbWVudCBmb3IgdGhpcyBzZXR0aW5nICovCisJCQlyZXNl dFN0cmluZ0luZm8oJmJ1Zik7CisJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWYsICJBTFRFUiBS T0xFICVzIiwgcXVvdGVfaWRlbnRpZmllcihyb2xuYW1lKSk7CisKKwkJCWlmIChkYXRuYW1l ICE9IE5VTEwpCisJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmLCAiIElOIERBVEFCQVNFICVz IiwKKwkJCQkJCQkJIHF1b3RlX2lkZW50aWZpZXIoZGF0bmFtZSkpOworCisJCQlhcHBlbmRT dHJpbmdJbmZvKCZidWYsICIgU0VUICVzIFRPICIsCisJCQkJCQkJIHF1b3RlX2lkZW50aWZp ZXIocykpOworCisJCQlhcHBlbmRfZ3VjX3ZhbHVlKCZidWYsIHMsIHApOworCisJCQlhcHBl bmRTdHJpbmdJbmZvQ2hhcigmYnVmLCAnOycpOworCisJCQlzdGF0ZW1lbnRzID0gbGFwcGVu ZChzdGF0ZW1lbnRzLCBwc3RyZHVwKGJ1Zi5kYXRhKSk7CisKKwkJCXBmcmVlKHMpOworCQl9 CisKKwkJcGZyZWUoc2V0dGluZ3MpOworCQlwZnJlZShudWxscyk7CisJCXBmcmVlKHJvbGVf c2V0dGluZ3MpOworCisJCWlmIChkYXRuYW1lICE9IE5VTEwpCisJCQlwZnJlZShkYXRuYW1l KTsKKwl9CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCXRhYmxlX2Nsb3NlKHJlbCwg QWNjZXNzU2hhcmVMb2NrKTsKKworCS8qCisJICogU2NhbiBwZ19hdXRoX21lbWJlcnMgZm9y IHJvbGUgbWVtYmVyc2hpcHMuICBXZSBsb29rIGZvciByb3dzIHdoZXJlCisJICogbWVtYmVy ID0gcm9sZWlkLCBtZWFuaW5nIHRoaXMgcm9sZSBoYXMgYmVlbiBncmFudGVkIG1lbWJlcnNo aXAgaW4gb3RoZXIKKwkgKiByb2xlcy4KKwkgKi8KKwlpZiAobWVtYmVyc2hpcHMpCisJewor CQlyZWwgPSB0YWJsZV9vcGVuKEF1dGhNZW1SZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2sp OworCQlTY2FuS2V5SW5pdCgmc2NhbmtleSwKKwkJCQkJQW51bV9wZ19hdXRoX21lbWJlcnNf bWVtYmVyLAorCQkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJCU9i amVjdElkR2V0RGF0dW0ocm9sZWlkKSk7CisJCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4o cmVsLCBBdXRoTWVtTWVtUm9sZUluZGV4SWQsIHRydWUsCisJCQkJCQkJCSAgTlVMTCwgMSwg JnNjYW5rZXkpOworCisJCXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlID0gc3lzdGFi bGVfZ2V0bmV4dChzY2FuKSkpCisJCXsKKwkJCUZvcm1fcGdfYXV0aF9tZW1iZXJzIG1lbWZv cm0gPSAoRm9ybV9wZ19hdXRoX21lbWJlcnMpIEdFVFNUUlVDVCh0dXBsZSk7CisJCQljaGFy CSAgICpncmFudGVkX3JvbGU7CisJCQljaGFyCSAgICpncmFudG9yOworCisJCQlncmFudGVk X3JvbGUgPSBHZXRVc2VyTmFtZUZyb21JZChtZW1mb3JtLT5yb2xlaWQsIGZhbHNlKTsKKwkJ CWdyYW50b3IgPSBHZXRVc2VyTmFtZUZyb21JZChtZW1mb3JtLT5ncmFudG9yLCBmYWxzZSk7 CisKKwkJCXJlc2V0U3RyaW5nSW5mbygmYnVmKTsKKwkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1 ZiwgIkdSQU5UICVzIFRPICVzIiwKKwkJCQkJCQkgcXVvdGVfaWRlbnRpZmllcihncmFudGVk X3JvbGUpLAorCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKHJvbG5hbWUpKTsKKwkJCWFwcGVu ZFN0cmluZ0luZm8oJmJ1ZiwgIiBXSVRIIEFETUlOICVzLCBJTkhFUklUICVzLCBTRVQgJXMi LAorCQkJCQkJCSBtZW1mb3JtLT5hZG1pbl9vcHRpb24gPyAiVFJVRSIgOiAiRkFMU0UiLAor CQkJCQkJCSBtZW1mb3JtLT5pbmhlcml0X29wdGlvbiA/ICJUUlVFIiA6ICJGQUxTRSIsCisJ CQkJCQkJIG1lbWZvcm0tPnNldF9vcHRpb24gPyAiVFJVRSIgOiAiRkFMU0UiKTsKKwkJCWFw cGVuZFN0cmluZ0luZm8oJmJ1ZiwgIiBHUkFOVEVEIEJZICVzOyIsCisJCQkJCQkJIHF1b3Rl X2lkZW50aWZpZXIoZ3JhbnRvcikpOworCisJCQlzdGF0ZW1lbnRzID0gbGFwcGVuZChzdGF0 ZW1lbnRzLCBwc3RyZHVwKGJ1Zi5kYXRhKSk7CisKKwkJCXBmcmVlKGdyYW50ZWRfcm9sZSk7 CisJCQlwZnJlZShncmFudG9yKTsKKwkJfQorCisJCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7 CisJCXRhYmxlX2Nsb3NlKHJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKwl9CisKKwlwZnJlZShi dWYuZGF0YSk7CisJcGZyZWUocm9sbmFtZSk7CisKKwlyZXR1cm4gc3RhdGVtZW50czsKK30K KworLyoKKyAqIHBnX2dldF9yb2xlX2RkbAorICoJCVJldHVybiBEREwgdG8gcmVjcmVhdGUg YSByb2xlIGFzIGEgc2V0IG9mIHRleHQgcm93cy4KKyAqCisgKiBFYWNoIHJvdyBpcyBhIGNv bXBsZXRlIFNRTCBzdGF0ZW1lbnQuICBUaGUgZmlyc3Qgcm93IGlzIGFsd2F5cyB0aGUKKyAq IENSRUFURSBST0xFIHN0YXRlbWVudDsgc3Vic2VxdWVudCByb3dzIGFyZSBBTFRFUiBST0xF IFNFVCBzdGF0ZW1lbnRzCisgKiBhbmQgb3B0aW9uYWxseSBHUkFOVCBzdGF0ZW1lbnRzIGZv ciByb2xlIG1lbWJlcnNoaXBzLgorICogUmV0dXJucyBubyByb3dzIGlmIHRoZSByb2xlIGFy Z3VtZW50IGlzIE5VTEwuCisgKi8KK0RhdHVtCitwZ19nZXRfcm9sZV9kZGwoUEdfRlVOQ1RJ T05fQVJHUykKK3sKKwlGdW5jQ2FsbENvbnRleHQgKmZ1bmNjdHg7CisJTGlzdAkgICAqc3Rh dGVtZW50czsKKworCWlmIChTUkZfSVNfRklSU1RDQUxMKCkpCisJeworCQlNZW1vcnlDb250 ZXh0IG9sZGNvbnRleHQ7CisJCU9pZAkJCXJvbGVpZDsKKwkJRGRsT3B0aW9uCW9wdHNbXSA9 IHsKKwkJCXsicHJldHR5IiwgRERMX09QVF9CT09MfSwKKwkJCXsibWVtYmVyc2hpcHMiLCBE RExfT1BUX0JPT0x9LAorCQl9OworCisJCWZ1bmNjdHggPSBTUkZfRklSU1RDQUxMX0lOSVQo KTsKKwkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhmdW5jY3R4LT5tdWx0 aV9jYWxsX21lbW9yeV9jdHgpOworCisJCWlmIChQR19BUkdJU05VTEwoMCkpCisJCXsKKwkJ CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKwkJCVNSRl9SRVRVUk5fRE9O RShmdW5jY3R4KTsKKwkJfQorCisJCXJvbGVpZCA9IFBHX0dFVEFSR19PSUQoMCk7CisJCXBh cnNlX2RkbF9vcHRpb25zKGZjaW5mbywgMSwgb3B0cywgbGVuZ3Rob2Yob3B0cykpOworCisJ CXN0YXRlbWVudHMgPSBwZ19nZXRfcm9sZV9kZGxfaW50ZXJuYWwocm9sZWlkLAorCQkJCQkJ CQkJCQkgIG9wdHNbMF0uaXNzZXQgJiYgb3B0c1swXS5ib29sdmFsLAorCQkJCQkJCQkJCQkg ICFvcHRzWzFdLmlzc2V0IHx8IG9wdHNbMV0uYm9vbHZhbCk7CisJCWZ1bmNjdHgtPnVzZXJf ZmN0eCA9IHN0YXRlbWVudHM7CisJCWZ1bmNjdHgtPm1heF9jYWxscyA9IGxpc3RfbGVuZ3Ro KHN0YXRlbWVudHMpOworCisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsK Kwl9CisKKwlmdW5jY3R4ID0gU1JGX1BFUkNBTExfU0VUVVAoKTsKKwlzdGF0ZW1lbnRzID0g KExpc3QgKikgZnVuY2N0eC0+dXNlcl9mY3R4OworCisJaWYgKGZ1bmNjdHgtPmNhbGxfY250 ciA8IGZ1bmNjdHgtPm1heF9jYWxscykKKwl7CisJCWNoYXIJICAgKnN0bXQ7CisKKwkJc3Rt dCA9IGxpc3RfbnRoKHN0YXRlbWVudHMsIGZ1bmNjdHgtPmNhbGxfY250cik7CisKKwkJU1JG X1JFVFVSTl9ORVhUKGZ1bmNjdHgsIENTdHJpbmdHZXRUZXh0RGF0dW0oc3RtdCkpOworCX0K KwllbHNlCisJeworCQlsaXN0X2ZyZWVfZGVlcChzdGF0ZW1lbnRzKTsKKwkJU1JGX1JFVFVS Tl9ET05FKGZ1bmNjdHgpOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4 IDM1NzljZWM1NzQ0Li5kMTk4NTgyNjI2MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 CkBAIC04NjAzLDYgKzg2MDMsMTQgQEAKIHsgb2lkID0+ICcyNTA4JywgZGVzY3IgPT4gJ2Nv bnN0cmFpbnQgZGVzY3JpcHRpb24gd2l0aCBwcmV0dHktcHJpbnQgb3B0aW9uJywKICAgcHJv bmFtZSA9PiAncGdfZ2V0X2NvbnN0cmFpbnRkZWYnLCBwcm92b2xhdGlsZSA9PiAncycsIHBy b3JldHR5cGUgPT4gJ3RleHQnLAogICBwcm9hcmd0eXBlcyA9PiAnb2lkIGJvb2wnLCBwcm9z cmMgPT4gJ3BnX2dldF9jb25zdHJhaW50ZGVmX2V4dCcgfSwKK3sgb2lkID0+ICc4NzYwJywg ZGVzY3IgPT4gJ2dldCBEREwgdG8gcmVjcmVhdGUgYSByb2xlJywKKyAgcHJvbmFtZSA9PiAn cGdfZ2V0X3JvbGVfZGRsJywgcHJvdmFyaWFkaWMgPT4gJ3RleHQnLCBwcm9pc3N0cmljdCA9 PiAnZicsCisgIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcmV0c2V0ID0+ICd0JywgcHJvcm93 cyA9PiAnMTAnLCBwcm9yZXR0eXBlID0+ICd0ZXh0JywKKyAgcHJvYXJndHlwZXMgPT4gJ3Jl Z3JvbGUgdGV4dCcsCisgIHByb2FyZ21vZGVzID0+ICd7aSx2fScsCisgIHByb2FsbGFyZ3R5 cGVzID0+ICd7cmVncm9sZSx0ZXh0fScsCisgIHByb25hcmdkZWZhdWx0cyA9PiAnMScsIHBy b2FyZ2RlZmF1bHRzID0+ICd7TlVMTH0nLAorICBwcm9zcmMgPT4gJ3BnX2dldF9yb2xlX2Rk bCcgfSwKIHsgb2lkID0+ICcyNTA5JywKICAgZGVzY3IgPT4gJ2RlcGFyc2UgYW4gZW5jb2Rl ZCBleHByZXNzaW9uIHdpdGggcHJldHR5LXByaW50IG9wdGlvbicsCiAgIHByb25hbWUgPT4g J3BnX2dldF9leHByJywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9yZXR0eXBlID0+ICd0ZXh0 JywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcm9sZV9kZGwub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9yb2xlX2RkbC5vdXQKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjU3NTExMWRhNTVjCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9yb2xlX2RkbC5vdXQKQEAgLTAsMCAr MSwxNDMgQEAKKy0tIENvbnNpc3RlbnQgdGVzdCByZXN1bHRzCitTRVQgdGltZXpvbmUgVE8g J1VUQyc7CitTRVQgRGF0ZVN0eWxlIFRPICdJU08sIFlNRCc7CistLSBDcmVhdGUgdGVzdCBk YXRhYmFzZQorQ1JFQVRFIERBVEFCQVNFIHJlZ3Jlc3Npb25fcm9sZV9kZGxfdGVzdDsKKy0t IEJhc2ljIHJvbGUKK0NSRUFURSBST0xFIHJlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDE7CitTRUxF Q1QgKiBGUk9NIHBnX2dldF9yb2xlX2RkbCgncmVncmVzc19yb2xlX2RkbF90ZXN0MScpOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19n ZXRfcm9sZV9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBST0xFIHJlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDEg Tk9TVVBFUlVTRVIgSU5IRVJJVCBOT0NSRUFURVJPTEUgTk9DUkVBVEVEQiBOT0xPR0lOIE5P UkVQTElDQVRJT04gTk9CWVBBU1NSTFM7CisoMSByb3cpCisKKy0tIFJvbGUgd2l0aCBMT0dJ TgorQ1JFQVRFIFJPTEUgcmVncmVzc19yb2xlX2RkbF90ZXN0MiBMT0dJTjsKK1NFTEVDVCAq IEZST00gcGdfZ2V0X3JvbGVfZGRsKCdyZWdyZXNzX3JvbGVfZGRsX3Rlc3QyJyk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3Jv bGVfZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBDUkVBVEUgUk9MRSByZWdyZXNzX3JvbGVfZGRsX3Rlc3QyIE5PU1VQRVJV U0VSIElOSEVSSVQgTk9DUkVBVEVST0xFIE5PQ1JFQVRFREIgTE9HSU4gTk9SRVBMSUNBVElP TiBOT0JZUEFTU1JMUzsKKygxIHJvdykKKworLS0gUm9sZSB3aXRoIG11bHRpcGxlIHByaXZp bGVnZXMKK0NSRUFURSBST0xFIHJlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDMKKyAgTE9HSU4KKyAg U1VQRVJVU0VSCisgIENSRUFURURCCisgIENSRUFURVJPTEUKKyAgQ09OTkVDVElPTiBMSU1J VCA1CisgIFZBTElEIFVOVElMICcyMDMwLTEyLTMxIDIzOjU5OjU5KzAwJzsKK1NFTEVDVCAq IEZST00gcGdfZ2V0X3JvbGVfZGRsKCdyZWdyZXNzX3JvbGVfZGRsX3Rlc3QzJyk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBnX2dldF9yb2xlX2RkbCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgQ1JFQVRFIFJPTEUgcmVncmVzc19yb2xlX2RkbF90ZXN0MyBTVVBFUlVTRVIgSU5IRVJJ VCBDUkVBVEVST0xFIENSRUFURURCIExPR0lOIE5PUkVQTElDQVRJT04gTk9CWVBBU1NSTFMg Q09OTkVDVElPTiBMSU1JVCA1IFZBTElEIFVOVElMICcyMDMwLTEyLTMxIDIzOjU5OjU5KzAw JzsKKygxIHJvdykKKworLS0gUm9sZSB3aXRoIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycwor Q1JFQVRFIFJPTEUgcmVncmVzc19yb2xlX2RkbF90ZXN0NDsKK0FMVEVSIFJPTEUgcmVncmVz c19yb2xlX2RkbF90ZXN0NCBTRVQgd29ya19tZW0gVE8gJzI1Nk1CJzsKK0FMVEVSIFJPTEUg cmVncmVzc19yb2xlX2RkbF90ZXN0NCBTRVQgc2VhcmNoX3BhdGggVE8gbXlzY2hlbWEsIHB1 YmxpYzsKK1NFTEVDVCAqIEZST00gcGdfZ2V0X3JvbGVfZGRsKCdyZWdyZXNzX3JvbGVfZGRs X3Rlc3Q0Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBnX2dldF9yb2xlX2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIFJPTEUgcmVncmVzc19yb2xl X2RkbF90ZXN0NCBOT1NVUEVSVVNFUiBJTkhFUklUIE5PQ1JFQVRFUk9MRSBOT0NSRUFURURC IE5PTE9HSU4gTk9SRVBMSUNBVElPTiBOT0JZUEFTU1JMUzsKKyBBTFRFUiBST0xFIHJlZ3Jl c3Nfcm9sZV9kZGxfdGVzdDQgU0VUIHdvcmtfbWVtIFRPICcyNTZNQic7CisgQUxURVIgUk9M RSByZWdyZXNzX3JvbGVfZGRsX3Rlc3Q0IFNFVCBzZWFyY2hfcGF0aCBUTyAnbXlzY2hlbWEn LCAncHVibGljJzsKKygzIHJvd3MpCisKKy0tIFJvbGUgd2l0aCBkYXRhYmFzZS1zcGVjaWZp YyBjb25maWd1cmF0aW9uCitDUkVBVEUgUk9MRSByZWdyZXNzX3JvbGVfZGRsX3Rlc3Q1Owor QUxURVIgUk9MRSByZWdyZXNzX3JvbGVfZGRsX3Rlc3Q1IElOIERBVEFCQVNFIHJlZ3Jlc3Np b25fcm9sZV9kZGxfdGVzdCBTRVQgd29ya19tZW0gVE8gJzEyOE1CJzsKK1NFTEVDVCAqIEZS T00gcGdfZ2V0X3JvbGVfZGRsKCdyZWdyZXNzX3JvbGVfZGRsX3Rlc3Q1Jyk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9yb2xl X2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgQ1JFQVRFIFJPTEUgcmVncmVzc19yb2xlX2RkbF90ZXN0NSBOT1NVUEVS VVNFUiBJTkhFUklUIE5PQ1JFQVRFUk9MRSBOT0NSRUFURURCIE5PTE9HSU4gTk9SRVBMSUNB VElPTiBOT0JZUEFTU1JMUzsKKyBBTFRFUiBST0xFIHJlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDUg SU4gREFUQUJBU0UgcmVncmVzc2lvbl9yb2xlX2RkbF90ZXN0IFNFVCB3b3JrX21lbSBUTyAn MTI4TUInOworKDIgcm93cykKKworLS0gUm9sZSB3aXRoIHNwZWNpYWwgY2hhcmFjdGVycyAo cmVxdWlyZXMgcXVvdGluZykKK0NSRUFURSBST0xFICJyZWdyZXNzX3JvbGUtd2l0aC1kYXNo IjsKK1NFTEVDVCAqIEZST00gcGdfZ2V0X3JvbGVfZGRsKCdyZWdyZXNzX3JvbGUtd2l0aC1k YXNoJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwZ19nZXRfcm9sZV9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBST0xFICJyZWdyZXNzX3Jv bGUtd2l0aC1kYXNoIiBOT1NVUEVSVVNFUiBJTkhFUklUIE5PQ1JFQVRFUk9MRSBOT0NSRUFU RURCIE5PTE9HSU4gTk9SRVBMSUNBVElPTiBOT0JZUEFTU1JMUzsKKygxIHJvdykKKworLS0g UHJldHR5LXByaW50ZWQgb3V0cHV0CitccHNldCBmb3JtYXQgdW5hbGlnbmVkCitTRUxFQ1Qg KiBGUk9NIHBnX2dldF9yb2xlX2RkbCgncmVncmVzc19yb2xlX2RkbF90ZXN0MycsICdwcmV0 dHknLCAndHJ1ZScpOworcGdfZ2V0X3JvbGVfZGRsCitDUkVBVEUgUk9MRSByZWdyZXNzX3Jv bGVfZGRsX3Rlc3QzCisgICAgU1VQRVJVU0VSCisgICAgSU5IRVJJVAorICAgIENSRUFURVJP TEUKKyAgICBDUkVBVEVEQgorICAgIExPR0lOCisgICAgTk9SRVBMSUNBVElPTgorICAgIE5P QllQQVNTUkxTCisgICAgQ09OTkVDVElPTiBMSU1JVCA1CisgICAgVkFMSUQgVU5USUwgJzIw MzAtMTItMzEgMjM6NTk6NTkrMDAnOworKDEgcm93KQorXHBzZXQgZm9ybWF0IGFsaWduZWQK Ky0tIFJvbGUgd2l0aCBtZW1iZXJzaGlwcworQ1JFQVRFIFJPTEUgcmVncmVzc19yb2xlX2Rk bF9ncmFudG9yIENSRUFURVJPTEU7CitDUkVBVEUgUk9MRSByZWdyZXNzX3JvbGVfZGRsX2dy b3VwMTsKK0NSRUFURSBST0xFIHJlZ3Jlc3Nfcm9sZV9kZGxfZ3JvdXAyOworQ1JFQVRFIFJP TEUgcmVncmVzc19yb2xlX2RkbF9tZW1iZXI7CitHUkFOVCByZWdyZXNzX3JvbGVfZGRsX2dy b3VwMSBUTyByZWdyZXNzX3JvbGVfZGRsX2dyYW50b3IgV0lUSCBBRE1JTiBUUlVFOworR1JB TlQgcmVncmVzc19yb2xlX2RkbF9ncm91cDIgVE8gcmVncmVzc19yb2xlX2RkbF9ncmFudG9y IFdJVEggQURNSU4gVFJVRTsKK1NFVCBST0xFIHJlZ3Jlc3Nfcm9sZV9kZGxfZ3JhbnRvcjsK K0dSQU5UIHJlZ3Jlc3Nfcm9sZV9kZGxfZ3JvdXAxIFRPIHJlZ3Jlc3Nfcm9sZV9kZGxfbWVt YmVyIFdJVEggSU5IRVJJVCBUUlVFLCBTRVQgRkFMU0U7CitHUkFOVCByZWdyZXNzX3JvbGVf ZGRsX2dyb3VwMiBUTyByZWdyZXNzX3JvbGVfZGRsX21lbWJlciBXSVRIIEFETUlOIFRSVUU7 CitSRVNFVCBST0xFOworU0VMRUNUICogRlJPTSBwZ19nZXRfcm9sZV9kZGwoJ3JlZ3Jlc3Nf cm9sZV9kZGxfbWVtYmVyJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3JvbGVfZGRsICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgUk9MRSByZWdyZXNzX3JvbGVf ZGRsX21lbWJlciBOT1NVUEVSVVNFUiBJTkhFUklUIE5PQ1JFQVRFUk9MRSBOT0NSRUFURURC IE5PTE9HSU4gTk9SRVBMSUNBVElPTiBOT0JZUEFTU1JMUzsKKyBHUkFOVCByZWdyZXNzX3Jv bGVfZGRsX2dyb3VwMSBUTyByZWdyZXNzX3JvbGVfZGRsX21lbWJlciBXSVRIIEFETUlOIEZB TFNFLCBJTkhFUklUIFRSVUUsIFNFVCBGQUxTRSBHUkFOVEVEIEJZIHJlZ3Jlc3Nfcm9sZV9k ZGxfZ3JhbnRvcjsKKyBHUkFOVCByZWdyZXNzX3JvbGVfZGRsX2dyb3VwMiBUTyByZWdyZXNz X3JvbGVfZGRsX21lbWJlciBXSVRIIEFETUlOIFRSVUUsIElOSEVSSVQgVFJVRSwgU0VUIFRS VUUgR1JBTlRFRCBCWSByZWdyZXNzX3JvbGVfZGRsX2dyYW50b3I7CisoMyByb3dzKQorCist LSBSb2xlIHdpdGggbWVtYmVyc2hpcHMgc3VwcHJlc3NlZAorU0VMRUNUICogRlJPTSBwZ19n ZXRfcm9sZV9kZGwoJ3JlZ3Jlc3Nfcm9sZV9kZGxfbWVtYmVyJywgJ21lbWJlcnNoaXBzJywg J2ZhbHNlJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBnX2dldF9yb2xlX2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgUk9MRSByZWdyZXNzX3Jv bGVfZGRsX21lbWJlciBOT1NVUEVSVVNFUiBJTkhFUklUIE5PQ1JFQVRFUk9MRSBOT0NSRUFU RURCIE5PTE9HSU4gTk9SRVBMSUNBVElPTiBOT0JZUEFTU1JMUzsKKygxIHJvdykKKworLS0g Tm9uLWV4aXN0ZW50IHJvbGUgKHNob3VsZCBlcnJvcikKK1NFTEVDVCAqIEZST00gcGdfZ2V0 X3JvbGVfZGRsKDk5OTk5OTk6Om9pZCk7CitFUlJPUjogIHJvbGUgd2l0aCBPSUQgOTk5OTk5 OSBkb2VzIG5vdCBleGlzdAorLS0gTlVMTCBpbnB1dCAoc2hvdWxkIHJldHVybiBubyByb3dz KQorU0VMRUNUICogRlJPTSBwZ19nZXRfcm9sZV9kZGwoTlVMTCk7CisgcGdfZ2V0X3JvbGVf ZGRsIAorLS0tLS0tLS0tLS0tLS0tLS0KKygwIHJvd3MpCisKKy0tIFBlcm1pc3Npb24gY2hl Y2s6IHJldm9rZSBTRUxFQ1Qgb24gcGdfYXV0aGlkCitDUkVBVEUgUk9MRSByZWdyZXNzX3Jv bGVfZGRsX25vYWNjZXNzOworUkVWT0tFIFNFTEVDVCBPTiBwZ19hdXRoaWQgRlJPTSBQVUJM SUM7CitTRVQgUk9MRSByZWdyZXNzX3JvbGVfZGRsX25vYWNjZXNzOworU0VMRUNUICogRlJP TSBwZ19nZXRfcm9sZV9kZGwoJ3JlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDEnKTsgIC0tIHNob3Vs ZCBmYWlsCitFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciByb2xlIHJlZ3Jlc3Nfcm9s ZV9kZGxfdGVzdDEKK1JFU0VUIFJPTEU7CitHUkFOVCBTRUxFQ1QgT04gcGdfYXV0aGlkIFRP IFBVQkxJQzsKK0RST1AgUk9MRSByZWdyZXNzX3JvbGVfZGRsX25vYWNjZXNzOworLS0gQ2xl YW51cAorRFJPUCBST0xFIHJlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDE7CitEUk9QIFJPTEUgcmVn cmVzc19yb2xlX2RkbF90ZXN0MjsKK0RST1AgUk9MRSByZWdyZXNzX3JvbGVfZGRsX3Rlc3Qz OworRFJPUCBST0xFIHJlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDQ7CitEUk9QIFJPTEUgcmVncmVz c19yb2xlX2RkbF90ZXN0NTsKK0RST1AgUk9MRSAicmVncmVzc19yb2xlLXdpdGgtZGFzaCI7 CitTRVQgUk9MRSByZWdyZXNzX3JvbGVfZGRsX2dyYW50b3I7CitSRVZPS0UgcmVncmVzc19y b2xlX2RkbF9ncm91cDEgRlJPTSByZWdyZXNzX3JvbGVfZGRsX21lbWJlcjsKK1JFVk9LRSBy ZWdyZXNzX3JvbGVfZGRsX2dyb3VwMiBGUk9NIHJlZ3Jlc3Nfcm9sZV9kZGxfbWVtYmVyOwor UkVTRVQgUk9MRTsKK0RST1AgUk9MRSByZWdyZXNzX3JvbGVfZGRsX21lbWJlcjsKK0RST1Ag Uk9MRSByZWdyZXNzX3JvbGVfZGRsX2dyb3VwMTsKK0RST1AgUk9MRSByZWdyZXNzX3JvbGVf ZGRsX2dyb3VwMjsKK0RST1AgUk9MRSByZWdyZXNzX3JvbGVfZGRsX2dyYW50b3I7CitEUk9Q IERBVEFCQVNFIHJlZ3Jlc3Npb25fcm9sZV9kZGxfdGVzdDsKKy0tIFJlc2V0IHRpbWV6b25l IHRvIGRlZmF1bHQKK1JFU0VUIHRpbWV6b25lOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2No ZWR1bGUKaW5kZXggM2EwNDRmZmQ4YmYuLjg0ZWZiZjhjMTA0IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv cGFyYWxsZWxfc2NoZWR1bGUKQEAgLTEzMCw2ICsxMzAsOCBAQCB0ZXN0OiBwYXJ0aXRpb25f bWVyZ2UgcGFydGl0aW9uX3NwbGl0IHBhcnRpdGlvbl9qb2luIHBhcnRpdGlvbl9wcnVuZSBy ZWxvcHRpb25zCiAjIG9pZGpvaW5zIGlzIHJlYWQtb25seSwgdGhvdWdoLCBhbmQgc2hvdWxk IHJ1biBsYXRlIGZvciBiZXN0IGNvdmVyYWdlCiB0ZXN0OiBvaWRqb2lucyBldmVudF90cmln Z2VyCiAKK3Rlc3Q6IHJvbGVfZGRsCisKICMgZXZlbnRfdHJpZ2dlcl9sb2dpbiBjYW5ub3Qg cnVuIGNvbmN1cnJlbnRseSB3aXRoIGFueSBvdGhlciB0ZXN0cyBiZWNhdXNlCiAjIG9uLWxv Z2luIGV2ZW50IGhhbmRsaW5nIGNvdWxkIGNhdGNoIGNvbm5lY3Rpb24gb2YgYSBjb25jdXJy ZW50IHRlc3QuCiB0ZXN0OiBldmVudF90cmlnZ2VyX2xvZ2luCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9yb2xlX2RkbC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9y b2xlX2RkbC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjNk MDE0MjI0MmVjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcm9s ZV9kZGwuc3FsCkBAIC0wLDAgKzEsOTYgQEAKKy0tIENvbnNpc3RlbnQgdGVzdCByZXN1bHRz CitTRVQgdGltZXpvbmUgVE8gJ1VUQyc7CitTRVQgRGF0ZVN0eWxlIFRPICdJU08sIFlNRCc7 CisKKy0tIENyZWF0ZSB0ZXN0IGRhdGFiYXNlCitDUkVBVEUgREFUQUJBU0UgcmVncmVzc2lv bl9yb2xlX2RkbF90ZXN0OworCistLSBCYXNpYyByb2xlCitDUkVBVEUgUk9MRSByZWdyZXNz X3JvbGVfZGRsX3Rlc3QxOworU0VMRUNUICogRlJPTSBwZ19nZXRfcm9sZV9kZGwoJ3JlZ3Jl c3Nfcm9sZV9kZGxfdGVzdDEnKTsKKworLS0gUm9sZSB3aXRoIExPR0lOCitDUkVBVEUgUk9M RSByZWdyZXNzX3JvbGVfZGRsX3Rlc3QyIExPR0lOOworU0VMRUNUICogRlJPTSBwZ19nZXRf cm9sZV9kZGwoJ3JlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDInKTsKKworLS0gUm9sZSB3aXRoIG11 bHRpcGxlIHByaXZpbGVnZXMKK0NSRUFURSBST0xFIHJlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDMK KyAgTE9HSU4KKyAgU1VQRVJVU0VSCisgIENSRUFURURCCisgIENSRUFURVJPTEUKKyAgQ09O TkVDVElPTiBMSU1JVCA1CisgIFZBTElEIFVOVElMICcyMDMwLTEyLTMxIDIzOjU5OjU5KzAw JzsKK1NFTEVDVCAqIEZST00gcGdfZ2V0X3JvbGVfZGRsKCdyZWdyZXNzX3JvbGVfZGRsX3Rl c3QzJyk7CisKKy0tIFJvbGUgd2l0aCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMKK0NSRUFU RSBST0xFIHJlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDQ7CitBTFRFUiBST0xFIHJlZ3Jlc3Nfcm9s ZV9kZGxfdGVzdDQgU0VUIHdvcmtfbWVtIFRPICcyNTZNQic7CitBTFRFUiBST0xFIHJlZ3Jl c3Nfcm9sZV9kZGxfdGVzdDQgU0VUIHNlYXJjaF9wYXRoIFRPIG15c2NoZW1hLCBwdWJsaWM7 CitTRUxFQ1QgKiBGUk9NIHBnX2dldF9yb2xlX2RkbCgncmVncmVzc19yb2xlX2RkbF90ZXN0 NCcpOworCistLSBSb2xlIHdpdGggZGF0YWJhc2Utc3BlY2lmaWMgY29uZmlndXJhdGlvbgor Q1JFQVRFIFJPTEUgcmVncmVzc19yb2xlX2RkbF90ZXN0NTsKK0FMVEVSIFJPTEUgcmVncmVz c19yb2xlX2RkbF90ZXN0NSBJTiBEQVRBQkFTRSByZWdyZXNzaW9uX3JvbGVfZGRsX3Rlc3Qg U0VUIHdvcmtfbWVtIFRPICcxMjhNQic7CitTRUxFQ1QgKiBGUk9NIHBnX2dldF9yb2xlX2Rk bCgncmVncmVzc19yb2xlX2RkbF90ZXN0NScpOworCistLSBSb2xlIHdpdGggc3BlY2lhbCBj aGFyYWN0ZXJzIChyZXF1aXJlcyBxdW90aW5nKQorQ1JFQVRFIFJPTEUgInJlZ3Jlc3Nfcm9s ZS13aXRoLWRhc2giOworU0VMRUNUICogRlJPTSBwZ19nZXRfcm9sZV9kZGwoJ3JlZ3Jlc3Nf cm9sZS13aXRoLWRhc2gnKTsKKworLS0gUHJldHR5LXByaW50ZWQgb3V0cHV0CitccHNldCBm b3JtYXQgdW5hbGlnbmVkCitTRUxFQ1QgKiBGUk9NIHBnX2dldF9yb2xlX2RkbCgncmVncmVz c19yb2xlX2RkbF90ZXN0MycsICdwcmV0dHknLCAndHJ1ZScpOworXHBzZXQgZm9ybWF0IGFs aWduZWQKKworLS0gUm9sZSB3aXRoIG1lbWJlcnNoaXBzCitDUkVBVEUgUk9MRSByZWdyZXNz X3JvbGVfZGRsX2dyYW50b3IgQ1JFQVRFUk9MRTsKK0NSRUFURSBST0xFIHJlZ3Jlc3Nfcm9s ZV9kZGxfZ3JvdXAxOworQ1JFQVRFIFJPTEUgcmVncmVzc19yb2xlX2RkbF9ncm91cDI7CitD UkVBVEUgUk9MRSByZWdyZXNzX3JvbGVfZGRsX21lbWJlcjsKK0dSQU5UIHJlZ3Jlc3Nfcm9s ZV9kZGxfZ3JvdXAxIFRPIHJlZ3Jlc3Nfcm9sZV9kZGxfZ3JhbnRvciBXSVRIIEFETUlOIFRS VUU7CitHUkFOVCByZWdyZXNzX3JvbGVfZGRsX2dyb3VwMiBUTyByZWdyZXNzX3JvbGVfZGRs X2dyYW50b3IgV0lUSCBBRE1JTiBUUlVFOworU0VUIFJPTEUgcmVncmVzc19yb2xlX2RkbF9n cmFudG9yOworR1JBTlQgcmVncmVzc19yb2xlX2RkbF9ncm91cDEgVE8gcmVncmVzc19yb2xl X2RkbF9tZW1iZXIgV0lUSCBJTkhFUklUIFRSVUUsIFNFVCBGQUxTRTsKK0dSQU5UIHJlZ3Jl c3Nfcm9sZV9kZGxfZ3JvdXAyIFRPIHJlZ3Jlc3Nfcm9sZV9kZGxfbWVtYmVyIFdJVEggQURN SU4gVFJVRTsKK1JFU0VUIFJPTEU7CitTRUxFQ1QgKiBGUk9NIHBnX2dldF9yb2xlX2RkbCgn cmVncmVzc19yb2xlX2RkbF9tZW1iZXInKTsKKworLS0gUm9sZSB3aXRoIG1lbWJlcnNoaXBz IHN1cHByZXNzZWQKK1NFTEVDVCAqIEZST00gcGdfZ2V0X3JvbGVfZGRsKCdyZWdyZXNzX3Jv bGVfZGRsX21lbWJlcicsICdtZW1iZXJzaGlwcycsICdmYWxzZScpOworCistLSBOb24tZXhp c3RlbnQgcm9sZSAoc2hvdWxkIGVycm9yKQorU0VMRUNUICogRlJPTSBwZ19nZXRfcm9sZV9k ZGwoOTk5OTk5OTo6b2lkKTsKKworLS0gTlVMTCBpbnB1dCAoc2hvdWxkIHJldHVybiBubyBy b3dzKQorU0VMRUNUICogRlJPTSBwZ19nZXRfcm9sZV9kZGwoTlVMTCk7CisKKy0tIFBlcm1p c3Npb24gY2hlY2s6IHJldm9rZSBTRUxFQ1Qgb24gcGdfYXV0aGlkCitDUkVBVEUgUk9MRSBy ZWdyZXNzX3JvbGVfZGRsX25vYWNjZXNzOworUkVWT0tFIFNFTEVDVCBPTiBwZ19hdXRoaWQg RlJPTSBQVUJMSUM7CitTRVQgUk9MRSByZWdyZXNzX3JvbGVfZGRsX25vYWNjZXNzOworU0VM RUNUICogRlJPTSBwZ19nZXRfcm9sZV9kZGwoJ3JlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDEnKTsg IC0tIHNob3VsZCBmYWlsCitSRVNFVCBST0xFOworR1JBTlQgU0VMRUNUIE9OIHBnX2F1dGhp ZCBUTyBQVUJMSUM7CitEUk9QIFJPTEUgcmVncmVzc19yb2xlX2RkbF9ub2FjY2VzczsKKwor LS0gQ2xlYW51cAorRFJPUCBST0xFIHJlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDE7CitEUk9QIFJP TEUgcmVncmVzc19yb2xlX2RkbF90ZXN0MjsKK0RST1AgUk9MRSByZWdyZXNzX3JvbGVfZGRs X3Rlc3QzOworRFJPUCBST0xFIHJlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDQ7CitEUk9QIFJPTEUg cmVncmVzc19yb2xlX2RkbF90ZXN0NTsKK0RST1AgUk9MRSAicmVncmVzc19yb2xlLXdpdGgt ZGFzaCI7CitTRVQgUk9MRSByZWdyZXNzX3JvbGVfZGRsX2dyYW50b3I7CitSRVZPS0UgcmVn cmVzc19yb2xlX2RkbF9ncm91cDEgRlJPTSByZWdyZXNzX3JvbGVfZGRsX21lbWJlcjsKK1JF Vk9LRSByZWdyZXNzX3JvbGVfZGRsX2dyb3VwMiBGUk9NIHJlZ3Jlc3Nfcm9sZV9kZGxfbWVt YmVyOworUkVTRVQgUk9MRTsKK0RST1AgUk9MRSByZWdyZXNzX3JvbGVfZGRsX21lbWJlcjsK K0RST1AgUk9MRSByZWdyZXNzX3JvbGVfZGRsX2dyb3VwMTsKK0RST1AgUk9MRSByZWdyZXNz X3JvbGVfZGRsX2dyb3VwMjsKK0RST1AgUk9MRSByZWdyZXNzX3JvbGVfZGRsX2dyYW50b3I7 CisKK0RST1AgREFUQUJBU0UgcmVncmVzc2lvbl9yb2xlX2RkbF90ZXN0OworCistLSBSZXNl dCB0aW1lem9uZSB0byBkZWZhdWx0CitSRVNFVCB0aW1lem9uZTsKLS0gCjIuNDMuMAoK --------------0aiYBQ0Vz1MQXyFMtlfveiSt Content-Type: text/x-patch; charset=UTF-8; name="v4-0003-Add-pg_get_tablespace_ddl-function.patch" Content-Disposition: attachment; filename="v4-0003-Add-pg_get_tablespace_ddl-function.patch" Content-Transfer-Encoding: base64 RnJvbSBiM2FjMjBlM2MwOTFhM2MzZjIxZWNjZjczY2RlMDQyMWFkYWFlYjM2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogVGh1LCAxOSBNYXIgMjAyNiAwOTo1NToxNiAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggdjQgMy80XSBBZGQgcGdfZ2V0X3RhYmxlc3BhY2VfZGRsKCkgZnVuY3Rpb24KTUlN RS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04 CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCkFkZCBhIG5ldyBTUUwtY2FsbGFi bGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBEREwgc3RhdGVtZW50cyBuZWVkZWQKdG8g cmVjcmVhdGUgYSB0YWJsZXNwYWNlLiBJdCB0YWtlcyBhIHRhYmxlc3BhY2UgbmFtZSBvciBP SUQgYW5kIGFuCm9wdGlvbmFsIFZBUklBRElDIHRleHQgYXJndW1lbnQgZm9yIG9wdGlvbnMg dGhhdCBhcmUgc3BlY2lmaWVkIGFzCmFsdGVybmF0aW5nIG5hbWUvdmFsdWUgcGFpcnMuIFRo ZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgc3VwcG9ydGVkOiBwcmV0dHkKKGJvb2xlYW4pIGZv ciBmb3JtYXR0ZWQgb3V0cHV0IGFuZCBvd25lciAoYm9vbGVhbikgdG8gaW5jbHVkZSBPV05F Ui4KKEl0IGluY2x1ZGVzIHR3byB2YXJpYW50cyBiZWNhdXNlIHRoZXJlIGlzIG5vIHJlZ3Rh Ymxlc3BhY2UgcHNldWRvdHlwZS4pClRoZSByZXR1cm4gaXMgb25lIG9yIG11bHRpcGxlIHJv d3Mgd2hlcmUgdGhlIGZpcnN0IHJvdyBpcyBhIENSRUFURQpUQUJMRVNQQUNFIHN0YXRlbWVu dCBhbmQgc3Vic2VxdWVudCByb3dzIGFyZSBBTFRFUiBUQUJMRVNQQUNFIHN0YXRlbWVudHMK dG8gc2V0IHNvbWUgdGFibGVzcGFjZSBwcm9wZXJ0aWVzLgoKVGhlIGNhbGxlciBtdXN0IGhh dmUgU0VMRUNUIHByaXZpbGVnZSBvbiBwZ190YWJsZXNwYWNlLgoKZ2V0X3JlbG9wdGlvbnMo KSBpbiBydWxldXRpbHMuYyBpcyBtYWRlIG5vbi1zdGF0aWMgc28gaXQgY2FuIGJlIGNhbGxl ZApmcm9tIHRoZSBuZXcgZGRsdXRpbHMuYyBmaWxlLgoKQXV0aG9yOiBOaXNoYW50IFNoYXJt YSA8bmlzaGFudC5zaGFybWFAZW50ZXJwcmlzZWRiLmNvbT4KQXV0aG9yOiBNYW5uaSBXb29k IDxtYW5uaS53b29kQGVudGVycHJpc2VkYi5jb20+CkNvLWF1dGhvcmVkLWJ5OiBBbmRyZXcg RHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5lLm5ldD4KQ28tYXV0aG9yZWQtYnk6IEV1bGVyIFRh dmVpcmEgPGV1bGVyQGV1bGVydG8uY29tPgpSZXZpZXdlZC1ieTogSmltIEpvbmVzIDxqaW0u am9uZXNAdW5pLW11ZW5zdGVyLmRlPgpSZXZpZXdlZC1ieTogw4FsdmFybyBIZXJyZXJhIDxh bHZoZXJyZUBrdXJpbGVtdS5kZT4KUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2YW4uY2hh b0BnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FLV0VCNnJt bm1HS1VBODdabXEtcz1iM1Njc25qMDJDMGtPYlFqbmJMMmFqZlBXR0V3QG1haWwuZ21haWwu Y29tCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vZTI0N2MyNjEtZTNmYi00ODEw LTgxZTAtYTY1ODkzMTcwZTk0QGR1bnNsYW5lLm5ldAotLS0KIGRvYy9zcmMvc2dtbC9mdW5j L2Z1bmMtaW5mby5zZ21sICAgICAgICAgICAgIHwgIDI4ICsrKwogc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2RkbHV0aWxzLmMgICAgICAgICAgICAgfCAyMDYgKysrKysrKysrKysrKysrKysr LQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICAgICAgICAgfCAgIDQg Ky0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgIHwgIDE2 ICsrCiBzcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMuaCAgICAgICAgICAgICAgICB8ICAg MSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RhYmxlc3BhY2VfZGRsLm91dCB8ICA4 NCArKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAg ICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RhYmxlc3BhY2VfZGRsLnNxbCAg ICAgIHwgIDU4ICsrKysrKwogOCBmaWxlcyBjaGFuZ2VkLCAzOTUgaW5zZXJ0aW9ucygrKSwg NCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3RhYmxlc3BhY2VfZGRsLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3RhYmxlc3BhY2VfZGRsLnNxbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9mdW5jL2Z1bmMtaW5mby5zZ21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1pbmZv LnNnbWwKaW5kZXggN2NiMDIwYjZmZDMuLmUxNGMyMDliZjE0IDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvZnVuYy9mdW5jLWluZm8uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZnVuYy9m dW5jLWluZm8uc2dtbApAQCAtMzkxMCw2ICszOTEwLDM0IEBAIGFjbCAgICAgIHwge3Bvc3Rn cmVzPWFyd2REeHRtL3Bvc3RncmVzLGZvbz1yL3Bvc3RncmVzfQogICAgICAgICByb2xlIG1l bWJlcnNoaXBzIGFuZCB0aGVpciBvcHRpb25zLgogICAgICAgIDwvcGFyYT48L2VudHJ5Pgog ICAgICAgPC9yb3c+CisgICAgICA8cm93PgorICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3Rh YmxlX2VudHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CisgICAgICAgIDxpbmRl eHRlcm0+CisgICAgICAgICA8cHJpbWFyeT5wZ19nZXRfdGFibGVzcGFjZV9kZGw8L3ByaW1h cnk+CisgICAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgICA8ZnVuY3Rpb24+cGdfZ2V0X3Rh Ymxlc3BhY2VfZGRsPC9mdW5jdGlvbj4KKyAgICAgICAgKCA8cGFyYW1ldGVyPnRhYmxlc3Bh Y2U8L3BhcmFtZXRlcj4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgICA8b3B0aW9uYWw+LCA8 bGl0ZXJhbD5WQVJJQURJQzwvbGl0ZXJhbD4gPHBhcmFtZXRlcj5vcHRpb25zPC9wYXJhbWV0 ZXI+CisgICAgICAgIDx0eXBlPnRleHQ8L3R5cGU+IDwvb3B0aW9uYWw+ICkKKyAgICAgICAg PHJldHVybnZhbHVlPnNldG9mIHRleHQ8L3JldHVybnZhbHVlPgorICAgICAgIDwvcGFyYT4K KyAgICAgICA8cGFyYT4KKyAgICAgICAgPGZ1bmN0aW9uPnBnX2dldF90YWJsZXNwYWNlX2Rk bDwvZnVuY3Rpb24+CisgICAgICAgICggPHBhcmFtZXRlcj50YWJsZXNwYWNlPC9wYXJhbWV0 ZXI+IDx0eXBlPm5hbWU8L3R5cGU+CisgICAgICAgIDxvcHRpb25hbD4sIDxsaXRlcmFsPlZB UklBRElDPC9saXRlcmFsPiA8cGFyYW1ldGVyPm9wdGlvbnM8L3BhcmFtZXRlcj4KKyAgICAg ICAgPHR5cGU+dGV4dDwvdHlwZT4gPC9vcHRpb25hbD4gKQorICAgICAgICA8cmV0dXJudmFs dWU+c2V0b2YgdGV4dDwvcmV0dXJudmFsdWU+CisgICAgICAgPC9wYXJhPgorICAgICAgIDxw YXJhPgorICAgICAgICBSZWNvbnN0cnVjdHMgdGhlIDxjb21tYW5kPkNSRUFURSBUQUJMRVNQ QUNFPC9jb21tYW5kPiBzdGF0ZW1lbnQgZm9yCisgICAgICAgIHRoZSBzcGVjaWZpZWQgdGFi bGVzcGFjZSAoYnkgT0lEIG9yIG5hbWUpLiAgSWYgdGhlIHRhYmxlc3BhY2UgaGFzCisgICAg ICAgIG9wdGlvbnMgc2V0LCBhbiA8Y29tbWFuZD5BTFRFUiBUQUJMRVNQQUNFIC4uLiBTRVQ8 L2NvbW1hbmQ+IHN0YXRlbWVudAorICAgICAgICBpcyBhbHNvIHJldHVybmVkLiAgRWFjaCBz dGF0ZW1lbnQgaXMgcmV0dXJuZWQgYXMgYSBzZXBhcmF0ZSByb3cuCisgICAgICAgIFRoZSBm b2xsb3dpbmcgb3B0aW9ucyBhcmUgc3VwcG9ydGVkOiA8bGl0ZXJhbD5wcmV0dHk8L2xpdGVy YWw+IChib29sZWFuKQorICAgICAgICBmb3IgZm9ybWF0dGVkIG91dHB1dCBhbmQgPGxpdGVy YWw+b3duZXI8L2xpdGVyYWw+IChib29sZWFuKSB0byBpbmNsdWRlCisgICAgICAgIDxsaXRl cmFsPk9XTkVSPC9saXRlcmFsPi4KKyAgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgIDwv cm93PgogICAgICA8L3Rib2R5PgogICAgIDwvdGdyb3VwPgogICAgPC90YWJsZT4KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kZGx1dGlscy5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2RkbHV0aWxzLmMKaW5kZXggYmNlYTFlYzU5ODEuLmQ5NTM5NjNhNzEyIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZGRsdXRpbHMuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvZGRsdXRpbHMuYwpAQCAtMjAsMTEgKzIwLDEzIEBACiAKICNp bmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxz LmgiCi0jaW5jbHVkZSAiYWNjZXNzL3JlbGF0aW9uLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3Rh YmxlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hdXRoX21lbWJlcnMuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX2F1dGhpZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfZGJfcm9sZV9z ZXR0aW5nLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ190YWJsZXNwYWNlLmgiCisjaW5jbHVk ZSAiY29tbWFuZHMvdGFibGVzcGFjZS5oIgorI2luY2x1ZGUgImNvbW1vbi9yZWxwYXRoLmgi CiAjaW5jbHVkZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1 ZGUgInV0aWxzL2FjbC5oIgpAQCAtMzUsNiArMzcsNyBAQAogI2luY2x1ZGUgInV0aWxzL2d1 Yy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3Jl bC5oIgorI2luY2x1ZGUgInV0aWxzL3J1bGV1dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3N5 c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCiAjaW5jbHVkZSAidXRp bHMvdmFybGVuYS5oIgpAQCAtNzUsNiArNzgsOCBAQCBzdGF0aWMgdm9pZCBhcHBlbmRfZ3Vj X3ZhbHVlKFN0cmluZ0luZm8gYnVmLCBjb25zdCBjaGFyICpuYW1lLAogCQkJCQkJCSBjb25z dCBjaGFyICp2YWx1ZSk7CiBzdGF0aWMgTGlzdCAqcGdfZ2V0X3JvbGVfZGRsX2ludGVybmFs KE9pZCByb2xlaWQsIGJvb2wgcHJldHR5LAogCQkJCQkJCQkJICBib29sIG1lbWJlcnNoaXBz KTsKK3N0YXRpYyBMaXN0ICpwZ19nZXRfdGFibGVzcGFjZV9kZGxfaW50ZXJuYWwoT2lkIHRz aWQsIGJvb2wgcHJldHR5LCBib29sIG5vX293bmVyKTsKK3N0YXRpYyBEYXR1bSBwZ19nZXRf dGFibGVzcGFjZV9kZGxfc3JmKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBPaWQgdHNpZCwg Ym9vbCBpc251bGwpOwogCiAKIC8qCkBAIC02MzQsMyArNjM5LDIwMiBAQCBwZ19nZXRfcm9s ZV9kZGwoUEdfRlVOQ1RJT05fQVJHUykKIAkJU1JGX1JFVFVSTl9ET05FKGZ1bmNjdHgpOwog CX0KIH0KKworLyoKKyAqIHBnX2dldF90YWJsZXNwYWNlX2RkbF9pbnRlcm5hbAorICoJCUdl bmVyYXRlIERETCBzdGF0ZW1lbnRzIHRvIHJlY3JlYXRlIGEgdGFibGVzcGFjZS4KKyAqCisg KiBSZXR1cm5zIGEgTGlzdCBvZiBwYWxsb2MnZCBzdHJpbmdzLiAgVGhlIGZpcnN0IGVsZW1l bnQgaXMgdGhlCisgKiBDUkVBVEUgVEFCTEVTUEFDRSBzdGF0ZW1lbnQ7IGlmIHRoZSB0YWJs ZXNwYWNlIGhhcyByZWxvcHRpb25zLAorICogYSBzZWNvbmQgZWxlbWVudCB3aXRoIEFMVEVS IFRBQkxFU1BBQ0UgU0VUICguLi4pIGlzIGFwcGVuZGVkLgorICovCitzdGF0aWMgTGlzdCAq CitwZ19nZXRfdGFibGVzcGFjZV9kZGxfaW50ZXJuYWwoT2lkIHRzaWQsIGJvb2wgcHJldHR5 LCBib29sIG5vX293bmVyKQoreworCUhlYXBUdXBsZQl0dXBsZTsKKwlGb3JtX3BnX3RhYmxl c3BhY2UgdHNwRm9ybTsKKwlTdHJpbmdJbmZvRGF0YSBidWY7CisJY2hhcgkgICAqc3BjbmFt ZTsKKwljaGFyCSAgICpzcGNvd25lcjsKKwljaGFyCSAgICpwYXRoOworCWJvb2wJCWlzTnVs bDsKKwlEYXR1bQkJZGF0dW07CisJTGlzdAkgICAqc3RhdGVtZW50cyA9IE5JTDsKKworCXR1 cGxlID0gU2VhcmNoU3lzQ2FjaGUxKFRBQkxFU1BBQ0VPSUQsIE9iamVjdElkR2V0RGF0dW0o dHNpZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkgZXJy bXNnKCJ0YWJsZXNwYWNlIHdpdGggT0lEICV1IGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCXRz aWQpKSk7CisKKwl0c3BGb3JtID0gKEZvcm1fcGdfdGFibGVzcGFjZSkgR0VUU1RSVUNUKHR1 cGxlKTsKKwlzcGNuYW1lID0gcHN0cmR1cChOYW1lU3RyKHRzcEZvcm0tPnNwY25hbWUpKTsK KworCS8qIFVzZXIgbXVzdCBoYXZlIFNFTEVDVCBwcml2aWxlZ2Ugb24gcGdfdGFibGVzcGFj ZS4gKi8KKwlpZiAocGdfY2xhc3NfYWNsY2hlY2soVGFibGVTcGFjZVJlbGF0aW9uSWQsIEdl dFVzZXJJZCgpLCBBQ0xfU0VMRUNUKSAhPSBBQ0xDSEVDS19PSykKKwl7CisJCVJlbGVhc2VT eXNDYWNoZSh0dXBsZSk7CisJCWFjbGNoZWNrX2Vycm9yKEFDTENIRUNLX05PX1BSSVYsIE9C SkVDVF9UQUJMRVNQQUNFLCBzcGNuYW1lKTsKKwl9CisKKwkvKgorCSAqIFdlIGRvbid0IHN1 cHBvcnQgZ2VuZXJhdGluZyBEREwgZm9yIHN5c3RlbSB0YWJsZXNwYWNlcy4gIFRoZSBwcmlt YXJ5CisJICogcmVhc29uIGZvciB0aGlzIGlzIHRoYXQgdXNlcnMgc2hvdWxkbid0IGJlIHJl Y3JlYXRpbmcgdGhlbS4KKwkgKi8KKwlpZiAoSXNSZXNlcnZlZE5hbWUoc3BjbmFtZSkpCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9SRVNFUlZFRF9OQU1FKSwK KwkJCQkgZXJybXNnKCJ0YWJsZXNwYWNlIG5hbWUgXCIlc1wiIGlzIHJlc2VydmVkIiwgc3Bj bmFtZSksCisJCQkJIGVycmRldGFpbCgiVGFibGVzcGFjZSBuYW1lcyBzdGFydGluZyB3aXRo IFwicGdfXCIgYXJlIHJlc2VydmVkIGZvciBzeXN0ZW0gdGFibGVzcGFjZXMuIikpKTsKKwor CWluaXRTdHJpbmdJbmZvKCZidWYpOworCisJLyogU3RhcnQgYnVpbGRpbmcgdGhlIENSRUFU RSBUQUJMRVNQQUNFIHN0YXRlbWVudCAqLworCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIkNS RUFURSBUQUJMRVNQQUNFICVzIiwgcXVvdGVfaWRlbnRpZmllcihzcGNuYW1lKSk7CisKKwkv KiBBZGQgT1dORVIgY2xhdXNlICovCisJaWYgKCFub19vd25lcikKKwl7CisJCXNwY293bmVy ID0gR2V0VXNlck5hbWVGcm9tSWQodHNwRm9ybS0+c3Bjb3duZXIsIGZhbHNlKTsKKwkJYXBw ZW5kX2RkbF9vcHRpb24oJmJ1ZiwgcHJldHR5LCA0LCAiT1dORVIgJXMiLAorCQkJCQkJICBx dW90ZV9pZGVudGlmaWVyKHNwY293bmVyKSk7CisJCXBmcmVlKHNwY293bmVyKTsKKwl9CisK KwkvKiBGaW5kIHRhYmxlc3BhY2UgZGlyZWN0b3J5IHBhdGggKi8KKwlwYXRoID0gZ2V0X3Rh Ymxlc3BhY2VfbG9jYXRpb24odHNpZCk7CisKKwkvKiBBZGQgZGlyZWN0b3J5IExPQ0FUSU9O IChwYXRoKSwgaWYgaXQgZXhpc3RzICovCisJaWYgKHBhdGhbMF0gIT0gJ1wwJykKKwl7CisJ CS8qCisJCSAqIFNwZWNpYWwgY2FzZTogaWYgdGhlIHRhYmxlc3BhY2Ugd2FzIGNyZWF0ZWQg d2l0aCBHVUMKKwkJICogImFsbG93X2luX3BsYWNlX3RhYmxlc3BhY2VzID0gdHJ1ZSIgYW5k ICJMT0NBVElPTiAnJyIsIHBhdGggd2lsbAorCQkgKiBiZWdpbiB3aXRoICJwZ190YmxzcGMv Ii4gSW4gdGhhdCBjYXNlLCBzaG93ICJMT0NBVElPTiAnJyIgYXMgdGhlCisJCSAqIHVzZXIg b3JpZ2luYWxseSBzcGVjaWZpZWQuCisJCSAqLworCQlpZiAoc3RybmNtcChQR19UQkxTUENf RElSX1NMQVNILCBwYXRoLCBzdHJsZW4oUEdfVEJMU1BDX0RJUl9TTEFTSCkpID09IDApCisJ CQlhcHBlbmRfZGRsX29wdGlvbigmYnVmLCBwcmV0dHksIDQsICJMT0NBVElPTiAnJyIpOwor CQllbHNlCisJCQlhcHBlbmRfZGRsX29wdGlvbigmYnVmLCBwcmV0dHksIDQsICJMT0NBVElP TiAlcyIsCisJCQkJCQkJICBxdW90ZV9saXRlcmFsX2NzdHIocGF0aCkpOworCX0KKwlwZnJl ZShwYXRoKTsKKworCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICc7Jyk7CisJc3RhdGVt ZW50cyA9IGxhcHBlbmQoc3RhdGVtZW50cywgcHN0cmR1cChidWYuZGF0YSkpOworCisJLyog Q2hlY2sgZm9yIHRhYmxlc3BhY2Ugb3B0aW9ucyAqLworCWRhdHVtID0gU3lzQ2FjaGVHZXRB dHRyKFRBQkxFU1BBQ0VPSUQsIHR1cGxlLAorCQkJCQkJCUFudW1fcGdfdGFibGVzcGFjZV9z cGNvcHRpb25zLCAmaXNOdWxsKTsKKwlpZiAoIWlzTnVsbCkKKwl7CisJCXJlc2V0U3RyaW5n SW5mbygmYnVmKTsKKwkJYXBwZW5kU3RyaW5nSW5mbygmYnVmLCAiQUxURVIgVEFCTEVTUEFD RSAlcyBTRVQgKCIsCisJCQkJCQkgcXVvdGVfaWRlbnRpZmllcihzcGNuYW1lKSk7CisJCWdl dF9yZWxvcHRpb25zKCZidWYsIGRhdHVtKTsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygm YnVmLCAiKTsiKTsKKwkJc3RhdGVtZW50cyA9IGxhcHBlbmQoc3RhdGVtZW50cywgcHN0cmR1 cChidWYuZGF0YSkpOworCX0KKworCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CisJcGZyZWUo c3BjbmFtZSk7CisJcGZyZWUoYnVmLmRhdGEpOworCisJcmV0dXJuIHN0YXRlbWVudHM7Cit9 CisKKy8qCisgKiBwZ19nZXRfdGFibGVzcGFjZV9kZGxfc3JmIC0gY29tbW9uIFNSRiBsb2dp YyBmb3IgdGFibGVzcGFjZSBEREwKKyAqLworc3RhdGljIERhdHVtCitwZ19nZXRfdGFibGVz cGFjZV9kZGxfc3JmKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBPaWQgdHNpZCwgYm9vbCBp c251bGwpCit7CisJRnVuY0NhbGxDb250ZXh0ICpmdW5jY3R4OworCUxpc3QJICAgKnN0YXRl bWVudHM7CisKKwlpZiAoU1JGX0lTX0ZJUlNUQ0FMTCgpKQorCXsKKwkJTWVtb3J5Q29udGV4 dCBvbGRjb250ZXh0OworCQlEZGxPcHRpb24Jb3B0c1tdID0geworCQkJeyJwcmV0dHkiLCBE RExfT1BUX0JPT0x9LAorCQkJeyJvd25lciIsIERETF9PUFRfQk9PTH0sCisJCX07CisKKwkJ ZnVuY2N0eCA9IFNSRl9GSVJTVENBTExfSU5JVCgpOworCQlvbGRjb250ZXh0ID0gTWVtb3J5 Q29udGV4dFN3aXRjaFRvKGZ1bmNjdHgtPm11bHRpX2NhbGxfbWVtb3J5X2N0eCk7CisKKwkJ aWYgKGlzbnVsbCkKKwkJeworCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQp OworCQkJU1JGX1JFVFVSTl9ET05FKGZ1bmNjdHgpOworCQl9CisKKwkJcGFyc2VfZGRsX29w dGlvbnMoZmNpbmZvLCAxLCBvcHRzLCBsZW5ndGhvZihvcHRzKSk7CisKKwkJc3RhdGVtZW50 cyA9IHBnX2dldF90YWJsZXNwYWNlX2RkbF9pbnRlcm5hbCh0c2lkLAorCQkJCQkJCQkJCQkJ CW9wdHNbMF0uaXNzZXQgJiYgb3B0c1swXS5ib29sdmFsLAorCQkJCQkJCQkJCQkJCW9wdHNb MV0uaXNzZXQgJiYgIW9wdHNbMV0uYm9vbHZhbCk7CisJCWZ1bmNjdHgtPnVzZXJfZmN0eCA9 IHN0YXRlbWVudHM7CisJCWZ1bmNjdHgtPm1heF9jYWxscyA9IGxpc3RfbGVuZ3RoKHN0YXRl bWVudHMpOworCisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKwl9CisK KwlmdW5jY3R4ID0gU1JGX1BFUkNBTExfU0VUVVAoKTsKKwlzdGF0ZW1lbnRzID0gKExpc3Qg KikgZnVuY2N0eC0+dXNlcl9mY3R4OworCisJaWYgKGZ1bmNjdHgtPmNhbGxfY250ciA8IGZ1 bmNjdHgtPm1heF9jYWxscykKKwl7CisJCWNoYXIJICAgKnN0bXQ7CisKKwkJc3RtdCA9IChj aGFyICopIGxpc3RfbnRoKHN0YXRlbWVudHMsIGZ1bmNjdHgtPmNhbGxfY250cik7CisKKwkJ U1JGX1JFVFVSTl9ORVhUKGZ1bmNjdHgsIENTdHJpbmdHZXRUZXh0RGF0dW0oc3RtdCkpOwor CX0KKwllbHNlCisJeworCQlsaXN0X2ZyZWVfZGVlcChzdGF0ZW1lbnRzKTsKKwkJU1JGX1JF VFVSTl9ET05FKGZ1bmNjdHgpOworCX0KK30KKworLyoKKyAqIHBnX2dldF90YWJsZXNwYWNl X2RkbF9vaWQKKyAqCQlSZXR1cm4gRERMIHRvIHJlY3JlYXRlIGEgdGFibGVzcGFjZSwgdGFr aW5nIE9JRC4KKyAqLworRGF0dW0KK3BnX2dldF90YWJsZXNwYWNlX2RkbF9vaWQoUEdfRlVO Q1RJT05fQVJHUykKK3sKKwlPaWQJCQl0c2lkID0gSW52YWxpZE9pZDsKKwlib29sCQlpc251 bGw7CisKKwlpc251bGwgPSBQR19BUkdJU05VTEwoMCk7CisJaWYgKCFpc251bGwpCisJCXRz aWQgPSBQR19HRVRBUkdfT0lEKDApOworCisJcmV0dXJuIHBnX2dldF90YWJsZXNwYWNlX2Rk bF9zcmYoZmNpbmZvLCB0c2lkLCBpc251bGwpOworfQorCisvKgorICogcGdfZ2V0X3RhYmxl c3BhY2VfZGRsX25hbWUKKyAqCQlSZXR1cm4gRERMIHRvIHJlY3JlYXRlIGEgdGFibGVzcGFj ZSwgdGFraW5nIG5hbWUuCisgKi8KK0RhdHVtCitwZ19nZXRfdGFibGVzcGFjZV9kZGxfbmFt ZShQR19GVU5DVElPTl9BUkdTKQoreworCU9pZAkJCXRzaWQgPSBJbnZhbGlkT2lkOworCU5h bWUJCXRzcG5hbWU7CisJYm9vbAkJaXNudWxsOworCisJaXNudWxsID0gUEdfQVJHSVNOVUxM KDApOworCisJaWYgKCFpc251bGwpCisJeworCQl0c3BuYW1lID0gUEdfR0VUQVJHX05BTUUo MCk7CisJCXRzaWQgPSBnZXRfdGFibGVzcGFjZV9vaWQoTmFtZVN0cigqdHNwbmFtZSksIGZh bHNlKTsKKwl9CisKKwlyZXR1cm4gcGdfZ2V0X3RhYmxlc3BhY2VfZGRsX3NyZihmY2luZm8s IHRzaWQsIGlzbnVsbCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv cnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXgg YWVjNTU1NmIwMDguLjM1MDgzZmNjNzMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGls cy5jCkBAIC01NDcsNyArNTQ3LDcgQEAgc3RhdGljIHZvaWQgYWRkX2Nhc3RfdG8oU3RyaW5n SW5mbyBidWYsIE9pZCB0eXBpZCk7CiBzdGF0aWMgY2hhciAqZ2VuZXJhdGVfcXVhbGlmaWVk X3R5cGVfbmFtZShPaWQgdHlwaWQpOwogc3RhdGljIHRleHQgKnN0cmluZ190b190ZXh0KGNo YXIgKnN0cik7CiBzdGF0aWMgY2hhciAqZmxhdHRlbl9yZWxvcHRpb25zKE9pZCByZWxpZCk7 Ci1zdGF0aWMgdm9pZCBnZXRfcmVsb3B0aW9ucyhTdHJpbmdJbmZvIGJ1ZiwgRGF0dW0gcmVs b3B0aW9ucyk7Cit2b2lkCQlnZXRfcmVsb3B0aW9ucyhTdHJpbmdJbmZvIGJ1ZiwgRGF0dW0g cmVsb3B0aW9ucyk7CiBzdGF0aWMgdm9pZCBnZXRfanNvbl9wYXRoX3NwZWMoTm9kZSAqcGF0 aF9zcGVjLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJCQkJCQkJICAgYm9vbCBzaG93 aW1wbGljaXQpOwogc3RhdGljIHZvaWQgZ2V0X2pzb25fdGFibGVfY29sdW1ucyhUYWJsZUZ1 bmMgKnRmLCBKc29uVGFibGVQYXRoU2NhbiAqc2NhbiwKQEAgLTE0MjQwLDcgKzE0MjQwLDcg QEAgc3RyaW5nX3RvX3RleHQoY2hhciAqc3RyKQogLyoKICAqIEdlbmVyYXRlIGEgQyBzdHJp bmcgcmVwcmVzZW50aW5nIGEgcmVsYXRpb24gb3B0aW9ucyBmcm9tIHRleHRbXSBkYXR1bS4K ICAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIGdldF9yZWxvcHRpb25zKFN0cmluZ0luZm8gYnVm LCBEYXR1bSByZWxvcHRpb25zKQogewogCURhdHVtCSAgICpvcHRpb25zOwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5kYXQKaW5kZXggZDE5ODU4MjYyNjMuLjk4NGNmNjIwYmM4IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTg2MTEsNiArODYxMSwyMiBAQAogICBwcm9hbGxh cmd0eXBlcyA9PiAne3JlZ3JvbGUsdGV4dH0nLAogICBwcm9uYXJnZGVmYXVsdHMgPT4gJzEn LCBwcm9hcmdkZWZhdWx0cyA9PiAne05VTEx9JywKICAgcHJvc3JjID0+ICdwZ19nZXRfcm9s ZV9kZGwnIH0sCit7IG9pZCA9PiAnODc1OCcsIGRlc2NyID0+ICdnZXQgRERMIHRvIHJlY3Jl YXRlIGEgdGFibGVzcGFjZScsCisgIHByb25hbWUgPT4gJ3BnX2dldF90YWJsZXNwYWNlX2Rk bCcsIHByb3ZhcmlhZGljID0+ICd0ZXh0JywgcHJvaXNzdHJpY3QgPT4gJ2YnLAorICBwcm92 b2xhdGlsZSA9PiAncycsIHByb3JldHNldCA9PiAndCcsIHByb3Jvd3MgPT4gJzEwJywgcHJv cmV0dHlwZSA9PiAndGV4dCcsCisgIHByb2FyZ3R5cGVzID0+ICdvaWQgdGV4dCcsCisgIHBy b2FyZ21vZGVzID0+ICd7aSx2fScsCisgIHByb2FsbGFyZ3R5cGVzID0+ICd7b2lkLHRleHR9 JywKKyAgcHJvbmFyZ2RlZmF1bHRzID0+ICcxJywgcHJvYXJnZGVmYXVsdHMgPT4gJ3tOVUxM fScsCisgIHByb3NyYyA9PiAncGdfZ2V0X3RhYmxlc3BhY2VfZGRsX29pZCcgfSwKK3sgb2lk ID0+ICc4NzU5JywgZGVzY3IgPT4gJ2dldCBEREwgdG8gcmVjcmVhdGUgYSB0YWJsZXNwYWNl JywKKyAgcHJvbmFtZSA9PiAncGdfZ2V0X3RhYmxlc3BhY2VfZGRsJywgcHJvdmFyaWFkaWMg PT4gJ3RleHQnLCBwcm9pc3N0cmljdCA9PiAnZicsCisgIHByb3ZvbGF0aWxlID0+ICdzJywg cHJvcmV0c2V0ID0+ICd0JywgcHJvcm93cyA9PiAnMTAnLCBwcm9yZXR0eXBlID0+ICd0ZXh0 JywKKyAgcHJvYXJndHlwZXMgPT4gJ25hbWUgdGV4dCcsCisgIHByb2FyZ21vZGVzID0+ICd7 aSx2fScsCisgIHByb2FsbGFyZ3R5cGVzID0+ICd7bmFtZSx0ZXh0fScsCisgIHByb25hcmdk ZWZhdWx0cyA9PiAnMScsIHByb2FyZ2RlZmF1bHRzID0+ICd7TlVMTH0nLAorICBwcm9zcmMg PT4gJ3BnX2dldF90YWJsZXNwYWNlX2RkbF9uYW1lJyB9LAogeyBvaWQgPT4gJzI1MDknLAog ICBkZXNjciA9PiAnZGVwYXJzZSBhbiBlbmNvZGVkIGV4cHJlc3Npb24gd2l0aCBwcmV0dHkt cHJpbnQgb3B0aW9uJywKICAgcHJvbmFtZSA9PiAncGdfZ2V0X2V4cHInLCBwcm92b2xhdGls ZSA9PiAncycsIHByb3JldHR5cGUgPT4gJ3RleHQnLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvdXRpbHMvcnVsZXV0aWxzLmggYi9zcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMuaApp bmRleCAwNTllNjQ3NGYzYi4uMjVjMDVlMmY2NDkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3V0aWxzL3J1bGV1dGlscy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5o CkBAIC01MSw2ICs1MSw3IEBAIGV4dGVybiBjaGFyICpnZXRfd2luZG93X2ZyYW1lX29wdGlv bnNfZm9yX2V4cGxhaW4oaW50IGZyYW1lT3B0aW9ucywKIGV4dGVybiBjaGFyICpnZW5lcmF0 ZV9jb2xsYXRpb25fbmFtZShPaWQgY29sbGlkKTsKIGV4dGVybiBjaGFyICpnZW5lcmF0ZV9v cGNsYXNzX25hbWUoT2lkIG9wY2xhc3MpOwogZXh0ZXJuIGNoYXIgKmdldF9yYW5nZV9wYXJ0 Ym91bmRfc3RyaW5nKExpc3QgKmJvdW5kX2RhdHVtcyk7CitleHRlcm4gdm9pZCBnZXRfcmVs b3B0aW9ucyhTdHJpbmdJbmZvIGJ1ZiwgRGF0dW0gcmVsb3B0aW9ucyk7CiAKIGV4dGVybiBj aGFyICpwZ19nZXRfc3RhdGlzdGljc29iamRlZl9zdHJpbmcoT2lkIHN0YXRleHRpZCk7CiAK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGFibGVzcGFjZV9kZGwu b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90YWJsZXNwYWNlX2RkbC5vdXQKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU1MjA0MzI3M2E5Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90YWJsZXNwYWNlX2Rk bC5vdXQKQEAgLTAsMCArMSw4NCBAQAorLS0KKy0tIFRlc3RzIGZvciBwZ19nZXRfdGFibGVz cGFjZV9kZGwoKQorLS0KK1NFVCBhbGxvd19pbl9wbGFjZV90YWJsZXNwYWNlcyA9IHRydWU7 CitDUkVBVEUgUk9MRSByZWdyZXNzX3RibHNwY19kZGxfdXNlcjsKKy0tIGVycm9yOiBub24t ZXhpc3RlbnQgdGFibGVzcGFjZSBieSBuYW1lCitTRUxFQ1QgKiBGUk9NIHBnX2dldF90YWJs ZXNwYWNlX2RkbCgncmVncmVzc19ub25leGlzdGVudF90YmxzcCcpOworRVJST1I6ICB0YWJs ZXNwYWNlICJyZWdyZXNzX25vbmV4aXN0ZW50X3RibHNwIiBkb2VzIG5vdCBleGlzdAorLS0g ZXJyb3I6IG5vbi1leGlzdGVudCB0YWJsZXNwYWNlIGJ5IE9JRAorU0VMRUNUICogRlJPTSBw Z19nZXRfdGFibGVzcGFjZV9kZGwoMDo6b2lkKTsKK0VSUk9SOiAgdGFibGVzcGFjZSB3aXRo IE9JRCAwIGRvZXMgbm90IGV4aXN0CistLSBOVUxMIGlucHV0IHJldHVybnMgbm8gcm93cyAo bmFtZSB2YXJpYW50KQorU0VMRUNUICogRlJPTSBwZ19nZXRfdGFibGVzcGFjZV9kZGwoTlVM TDo6bmFtZSk7CisgcGdfZ2V0X3RhYmxlc3BhY2VfZGRsIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKygwIHJvd3MpCisKKy0tIE5VTEwgaW5wdXQgcmV0dXJucyBubyByb3dzIChPSUQg dmFyaWFudCkKK1NFTEVDVCAqIEZST00gcGdfZ2V0X3RhYmxlc3BhY2VfZGRsKE5VTEw6Om9p ZCk7CisgcGdfZ2V0X3RhYmxlc3BhY2VfZGRsIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KygwIHJvd3MpCisKKy0tIHRhYmxlc3BhY2UgbmFtZSByZXF1aXJpbmcgcXVvdGluZworQ1JF QVRFIFRBQkxFU1BBQ0UgInJlZ3Jlc3NfIHRibHNwIiBPV05FUiByZWdyZXNzX3RibHNwY19k ZGxfdXNlciBMT0NBVElPTiAnJzsKK1NFTEVDVCAqIEZST00gcGdfZ2V0X3RhYmxlc3BhY2Vf ZGRsKCdyZWdyZXNzXyB0YmxzcCcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw Z19nZXRfdGFibGVzcGFjZV9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBUQUJMRVNQQUNFICJyZWdyZXNzXyB0 YmxzcCIgT1dORVIgcmVncmVzc190YmxzcGNfZGRsX3VzZXIgTE9DQVRJT04gJyc7CisoMSBy b3cpCisKK0RST1AgVEFCTEVTUEFDRSAicmVncmVzc18gdGJsc3AiOworLS0gdGFibGVzcGFj ZSB3aXRoIG11bHRpcGxlIG9wdGlvbnMKK0NSRUFURSBUQUJMRVNQQUNFIHJlZ3Jlc3NfYWxs b3B0X3RibHNwIE9XTkVSIHJlZ3Jlc3NfdGJsc3BjX2RkbF91c2VyIExPQ0FUSU9OICcnCisg IFdJVEggKHNlcV9wYWdlX2Nvc3QgPSAnMS41JywgcmFuZG9tX3BhZ2VfY29zdCA9ICcxLjEy MzQ1Njc4OTAnLAorICAgICAgICBlZmZlY3RpdmVfaW9fY29uY3VycmVuY3kgPSAnMTcnLCBt YWludGVuYW5jZV9pb19jb25jdXJyZW5jeSA9ICcxOCcpOworU0VMRUNUICogRlJPTSBwZ19n ZXRfdGFibGVzcGFjZV9kZGwoJ3JlZ3Jlc3NfYWxsb3B0X3RibHNwJyk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBnX2dldF90YWJsZXNwYWNlX2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JF QVRFIFRBQkxFU1BBQ0UgcmVncmVzc19hbGxvcHRfdGJsc3AgT1dORVIgcmVncmVzc190Ymxz cGNfZGRsX3VzZXIgTE9DQVRJT04gJyc7CisgQUxURVIgVEFCTEVTUEFDRSByZWdyZXNzX2Fs bG9wdF90YmxzcCBTRVQgKHNlcV9wYWdlX2Nvc3Q9JzEuNScsIHJhbmRvbV9wYWdlX2Nvc3Q9 JzEuMTIzNDU2Nzg5MCcsIGVmZmVjdGl2ZV9pb19jb25jdXJyZW5jeT0nMTcnLCBtYWludGVu YW5jZV9pb19jb25jdXJyZW5jeT0nMTgnKTsKKygyIHJvd3MpCisKKy0tIHByZXR0eS1wcmlu dGVkIG91dHB1dAorXHBzZXQgZm9ybWF0IHVuYWxpZ25lZAorU0VMRUNUICogRlJPTSBwZ19n ZXRfdGFibGVzcGFjZV9kZGwoJ3JlZ3Jlc3NfYWxsb3B0X3RibHNwJywgJ3ByZXR0eScsICd0 cnVlJyk7CitwZ19nZXRfdGFibGVzcGFjZV9kZGwKK0NSRUFURSBUQUJMRVNQQUNFIHJlZ3Jl c3NfYWxsb3B0X3RibHNwCisgICAgT1dORVIgcmVncmVzc190YmxzcGNfZGRsX3VzZXIKKyAg ICBMT0NBVElPTiAnJzsKK0FMVEVSIFRBQkxFU1BBQ0UgcmVncmVzc19hbGxvcHRfdGJsc3Ag U0VUIChzZXFfcGFnZV9jb3N0PScxLjUnLCByYW5kb21fcGFnZV9jb3N0PScxLjEyMzQ1Njc4 OTAnLCBlZmZlY3RpdmVfaW9fY29uY3VycmVuY3k9JzE3JywgbWFpbnRlbmFuY2VfaW9fY29u Y3VycmVuY3k9JzE4Jyk7CisoMiByb3dzKQorXHBzZXQgZm9ybWF0IGFsaWduZWQKKy0tIHRh Ymxlc3BhY2Ugd2l0aCBvd25lciBzdXBwcmVzc2VkCitTRUxFQ1QgKiBGUk9NIHBnX2dldF90 YWJsZXNwYWNlX2RkbCgncmVncmVzc19hbGxvcHRfdGJsc3AnLCAnb3duZXInLCAnZmFsc2Un KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3RhYmxlc3BhY2VfZGRsICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBDUkVBVEUgVEFCTEVTUEFDRSByZWdyZXNzX2FsbG9wdF90YmxzcCBMT0NB VElPTiAnJzsKKyBBTFRFUiBUQUJMRVNQQUNFIHJlZ3Jlc3NfYWxsb3B0X3RibHNwIFNFVCAo c2VxX3BhZ2VfY29zdD0nMS41JywgcmFuZG9tX3BhZ2VfY29zdD0nMS4xMjM0NTY3ODkwJywg ZWZmZWN0aXZlX2lvX2NvbmN1cnJlbmN5PScxNycsIG1haW50ZW5hbmNlX2lvX2NvbmN1cnJl bmN5PScxOCcpOworKDIgcm93cykKKworRFJPUCBUQUJMRVNQQUNFIHJlZ3Jlc3NfYWxsb3B0 X3RibHNwOworLS0gdGVzdCBieSBPSUQKK0NSRUFURSBUQUJMRVNQQUNFIHJlZ3Jlc3Nfb2lk X3RibHNwIE9XTkVSIHJlZ3Jlc3NfdGJsc3BjX2RkbF91c2VyIExPQ0FUSU9OICcnOworU0VM RUNUIG9pZCBBUyB0c2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lID0gJ3Jl Z3Jlc3Nfb2lkX3RibHNwJyBcZ3NldAorU0VMRUNUICogRlJPTSBwZ19nZXRfdGFibGVzcGFj ZV9kZGwoOnRzaWQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfdGFi bGVzcGFjZV9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIFRBQkxFU1BBQ0UgcmVncmVzc19vaWRfdGJsc3Ag T1dORVIgcmVncmVzc190YmxzcGNfZGRsX3VzZXIgTE9DQVRJT04gJyc7CisoMSByb3cpCisK K0RST1AgVEFCTEVTUEFDRSByZWdyZXNzX29pZF90YmxzcDsKKy0tIFBlcm1pc3Npb24gY2hl Y2s6IHJldm9rZSBTRUxFQ1Qgb24gcGdfdGFibGVzcGFjZQorQ1JFQVRFIFRBQkxFU1BBQ0Ug cmVncmVzc19hY2xfdGJsc3AgT1dORVIgcmVncmVzc190YmxzcGNfZGRsX3VzZXIgTE9DQVRJ T04gJyc7CitDUkVBVEUgUk9MRSByZWdyZXNzX3RibHNwY19kZGxfbm9hY2Nlc3M7CitSRVZP S0UgU0VMRUNUIE9OIHBnX3RhYmxlc3BhY2UgRlJPTSBQVUJMSUM7CitTRVQgUk9MRSByZWdy ZXNzX3RibHNwY19kZGxfbm9hY2Nlc3M7CitTRUxFQ1QgKiBGUk9NIHBnX2dldF90YWJsZXNw YWNlX2RkbCgncmVncmVzc19hY2xfdGJsc3AnKTsgIC0tIHNob3VsZCBmYWlsCitFUlJPUjog IHBlcm1pc3Npb24gZGVuaWVkIGZvciB0YWJsZXNwYWNlIHJlZ3Jlc3NfYWNsX3RibHNwCitS RVNFVCBST0xFOworR1JBTlQgU0VMRUNUIE9OIHBnX3RhYmxlc3BhY2UgVE8gUFVCTElDOwor RFJPUCBUQUJMRVNQQUNFIHJlZ3Jlc3NfYWNsX3RibHNwOworRFJPUCBST0xFIHJlZ3Jlc3Nf dGJsc3BjX2RkbF9ub2FjY2VzczsKK0RST1AgUk9MRSByZWdyZXNzX3RibHNwY19kZGxfdXNl cjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9z cmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4IDg0ZWZiZjhjMTA0Li5m YWJhZWJmMmM3OCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hl ZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC0xMzAs NyArMTMwLDcgQEAgdGVzdDogcGFydGl0aW9uX21lcmdlIHBhcnRpdGlvbl9zcGxpdCBwYXJ0 aXRpb25fam9pbiBwYXJ0aXRpb25fcHJ1bmUgcmVsb3B0aW9ucwogIyBvaWRqb2lucyBpcyBy ZWFkLW9ubHksIHRob3VnaCwgYW5kIHNob3VsZCBydW4gbGF0ZSBmb3IgYmVzdCBjb3ZlcmFn ZQogdGVzdDogb2lkam9pbnMgZXZlbnRfdHJpZ2dlcgogCi10ZXN0OiByb2xlX2RkbAordGVz dDogcm9sZV9kZGwgdGFibGVzcGFjZV9kZGwKIAogIyBldmVudF90cmlnZ2VyX2xvZ2luIGNh bm5vdCBydW4gY29uY3VycmVudGx5IHdpdGggYW55IG90aGVyIHRlc3RzIGJlY2F1c2UKICMg b24tbG9naW4gZXZlbnQgaGFuZGxpbmcgY291bGQgY2F0Y2ggY29ubmVjdGlvbiBvZiBhIGNv bmN1cnJlbnQgdGVzdC4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RhYmxl c3BhY2VfZGRsLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RhYmxlc3BhY2VfZGRsLnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZWUzY2M2ZTJlMWUK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC90YWJsZXNwYWNlX2Rk bC5zcWwKQEAgLTAsMCArMSw1OCBAQAorLS0KKy0tIFRlc3RzIGZvciBwZ19nZXRfdGFibGVz cGFjZV9kZGwoKQorLS0KKworU0VUIGFsbG93X2luX3BsYWNlX3RhYmxlc3BhY2VzID0gdHJ1 ZTsKK0NSRUFURSBST0xFIHJlZ3Jlc3NfdGJsc3BjX2RkbF91c2VyOworCistLSBlcnJvcjog bm9uLWV4aXN0ZW50IHRhYmxlc3BhY2UgYnkgbmFtZQorU0VMRUNUICogRlJPTSBwZ19nZXRf dGFibGVzcGFjZV9kZGwoJ3JlZ3Jlc3Nfbm9uZXhpc3RlbnRfdGJsc3AnKTsKKworLS0gZXJy b3I6IG5vbi1leGlzdGVudCB0YWJsZXNwYWNlIGJ5IE9JRAorU0VMRUNUICogRlJPTSBwZ19n ZXRfdGFibGVzcGFjZV9kZGwoMDo6b2lkKTsKKworLS0gTlVMTCBpbnB1dCByZXR1cm5zIG5v IHJvd3MgKG5hbWUgdmFyaWFudCkKK1NFTEVDVCAqIEZST00gcGdfZ2V0X3RhYmxlc3BhY2Vf ZGRsKE5VTEw6Om5hbWUpOworCistLSBOVUxMIGlucHV0IHJldHVybnMgbm8gcm93cyAoT0lE IHZhcmlhbnQpCitTRUxFQ1QgKiBGUk9NIHBnX2dldF90YWJsZXNwYWNlX2RkbChOVUxMOjpv aWQpOworCistLSB0YWJsZXNwYWNlIG5hbWUgcmVxdWlyaW5nIHF1b3RpbmcKK0NSRUFURSBU QUJMRVNQQUNFICJyZWdyZXNzXyB0YmxzcCIgT1dORVIgcmVncmVzc190YmxzcGNfZGRsX3Vz ZXIgTE9DQVRJT04gJyc7CitTRUxFQ1QgKiBGUk9NIHBnX2dldF90YWJsZXNwYWNlX2RkbCgn cmVncmVzc18gdGJsc3AnKTsKK0RST1AgVEFCTEVTUEFDRSAicmVncmVzc18gdGJsc3AiOwor CistLSB0YWJsZXNwYWNlIHdpdGggbXVsdGlwbGUgb3B0aW9ucworQ1JFQVRFIFRBQkxFU1BB Q0UgcmVncmVzc19hbGxvcHRfdGJsc3AgT1dORVIgcmVncmVzc190YmxzcGNfZGRsX3VzZXIg TE9DQVRJT04gJycKKyAgV0lUSCAoc2VxX3BhZ2VfY29zdCA9ICcxLjUnLCByYW5kb21fcGFn ZV9jb3N0ID0gJzEuMTIzNDU2Nzg5MCcsCisgICAgICAgIGVmZmVjdGl2ZV9pb19jb25jdXJy ZW5jeSA9ICcxNycsIG1haW50ZW5hbmNlX2lvX2NvbmN1cnJlbmN5ID0gJzE4Jyk7CitTRUxF Q1QgKiBGUk9NIHBnX2dldF90YWJsZXNwYWNlX2RkbCgncmVncmVzc19hbGxvcHRfdGJsc3An KTsKKworLS0gcHJldHR5LXByaW50ZWQgb3V0cHV0CitccHNldCBmb3JtYXQgdW5hbGlnbmVk CitTRUxFQ1QgKiBGUk9NIHBnX2dldF90YWJsZXNwYWNlX2RkbCgncmVncmVzc19hbGxvcHRf dGJsc3AnLCAncHJldHR5JywgJ3RydWUnKTsKK1xwc2V0IGZvcm1hdCBhbGlnbmVkCisKKy0t IHRhYmxlc3BhY2Ugd2l0aCBvd25lciBzdXBwcmVzc2VkCitTRUxFQ1QgKiBGUk9NIHBnX2dl dF90YWJsZXNwYWNlX2RkbCgncmVncmVzc19hbGxvcHRfdGJsc3AnLCAnb3duZXInLCAnZmFs c2UnKTsKKworRFJPUCBUQUJMRVNQQUNFIHJlZ3Jlc3NfYWxsb3B0X3RibHNwOworCistLSB0 ZXN0IGJ5IE9JRAorQ1JFQVRFIFRBQkxFU1BBQ0UgcmVncmVzc19vaWRfdGJsc3AgT1dORVIg cmVncmVzc190YmxzcGNfZGRsX3VzZXIgTE9DQVRJT04gJyc7CitTRUxFQ1Qgb2lkIEFTIHRz aWQgRlJPTSBwZ190YWJsZXNwYWNlIFdIRVJFIHNwY25hbWUgPSAncmVncmVzc19vaWRfdGJs c3AnIFxnc2V0CitTRUxFQ1QgKiBGUk9NIHBnX2dldF90YWJsZXNwYWNlX2RkbCg6dHNpZCk7 CitEUk9QIFRBQkxFU1BBQ0UgcmVncmVzc19vaWRfdGJsc3A7CisKKy0tIFBlcm1pc3Npb24g Y2hlY2s6IHJldm9rZSBTRUxFQ1Qgb24gcGdfdGFibGVzcGFjZQorQ1JFQVRFIFRBQkxFU1BB Q0UgcmVncmVzc19hY2xfdGJsc3AgT1dORVIgcmVncmVzc190YmxzcGNfZGRsX3VzZXIgTE9D QVRJT04gJyc7CitDUkVBVEUgUk9MRSByZWdyZXNzX3RibHNwY19kZGxfbm9hY2Nlc3M7CitS RVZPS0UgU0VMRUNUIE9OIHBnX3RhYmxlc3BhY2UgRlJPTSBQVUJMSUM7CitTRVQgUk9MRSBy ZWdyZXNzX3RibHNwY19kZGxfbm9hY2Nlc3M7CitTRUxFQ1QgKiBGUk9NIHBnX2dldF90YWJs ZXNwYWNlX2RkbCgncmVncmVzc19hY2xfdGJsc3AnKTsgIC0tIHNob3VsZCBmYWlsCitSRVNF VCBST0xFOworR1JBTlQgU0VMRUNUIE9OIHBnX3RhYmxlc3BhY2UgVE8gUFVCTElDOworRFJP UCBUQUJMRVNQQUNFIHJlZ3Jlc3NfYWNsX3RibHNwOworRFJPUCBST0xFIHJlZ3Jlc3NfdGJs c3BjX2RkbF9ub2FjY2VzczsKKworRFJPUCBST0xFIHJlZ3Jlc3NfdGJsc3BjX2RkbF91c2Vy OwotLSAKMi40My4wCgo= --------------0aiYBQ0Vz1MQXyFMtlfveiSt Content-Type: text/x-patch; charset=UTF-8; name="v4-0004-Add-pg_get_database_ddl-function.patch" Content-Disposition: attachment; filename="v4-0004-Add-pg_get_database_ddl-function.patch" Content-Transfer-Encoding: base64 RnJvbSAzYTBmM2M3NmYxYzM1ZmZhNTYyOTViZjFlYTlhMmQyYzhlZmNlOTI4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogVGh1LCAxOSBNYXIgMjAyNiAwOTo1NzozNSAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggdjQgNC80XSBBZGQgcGdfZ2V0X2RhdGFiYXNlX2RkbCgpIGZ1bmN0aW9uCk1JTUUt VmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApD b250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpBZGQgYSBuZXcgU1FMLWNhbGxhYmxl IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgRERMIHN0YXRlbWVudHMgbmVlZGVkCnRvIHJl Y3JlYXRlIGEgZGF0YWJhc2UuIEl0IHRha2VzIGEgcmVnZGF0YWJhc2UgYXJndW1lbnQgYW5k IGFuIG9wdGlvbmFsClZBUklBRElDIHRleHQgYXJndW1lbnQgZm9yIG9wdGlvbnMgdGhhdCBh cmUgc3BlY2lmaWVkIGFzIGFsdGVybmF0aW5nCm5hbWUvdmFsdWUgcGFpcnMuIFRoZSBmb2xs b3dpbmcgb3B0aW9ucyBhcmUgc3VwcG9ydGVkOiBwcmV0dHkgKGJvb2xlYW4pCmZvciBmb3Jt YXR0ZWQgb3V0cHV0LCBvd25lciAoYm9vbGVhbikgdG8gaW5jbHVkZSBPV05FUiBhbmQgdGFi bGVzcGFjZQooYm9vbGVhbikgdG8gaW5jbHVkZSBUQUJMRVNQQUNFLiBUaGUgcmV0dXJuIGlz IG9uZSBvciBtdWx0aXBsZSByb3dzCndoZXJlIHRoZSBmaXJzdCByb3cgaXMgYSBDUkVBVEUg REFUQUJBU0Ugc3RhdGVtZW50IGFuZCBzdWJzZXF1ZW50IHJvd3MgYXJlCkFMVEVSIERBVEFC QVNFIHN0YXRlbWVudHMgdG8gc2V0IHNvbWUgZGF0YWJhc2UgcHJvcGVydGllcy4KClRoZSBj YWxsZXIgbXVzdCBoYXZlIENPTk5FQ1QgcHJpdmlsZWdlIG9uIHRoZSB0YXJnZXQgZGF0YWJh c2UuCgpBdXRob3I6IEFrc2hheSBKb3NoaSA8YWtzaGF5Lmpvc2hpQGVudGVycHJpc2VkYi5j b20+CkNvLWF1dGhvcmVkLWJ5OiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5lLm5l dD4KQ28tYXV0aG9yZWQtYnk6IEV1bGVyIFRhdmVpcmEgPGV1bGVyQGV1bGVydG8uY29tPgpS ZXZpZXdlZC1ieTogSmFwaW4gTGkgPGphcGlubGlAaG90bWFpbC5jb20+ClJldmlld2VkLWJ5 OiBDaGFvIExpIDxsaS5ldmFuLmNoYW9AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogw4FsdmFy byBIZXJyZXJhIDxhbHZoZXJyZUBrdXJpbGVtdS5kZT4KUmV2aWV3ZWQtYnk6IFF1YW4gWm9u Z2xpYW5nIDxxdWFuem9uZ2xpYW5nQHllYWgubmV0PgpEaXNjdXNzaW9uOiBodHRwczovL3Bv c3Rnci5lcy9tL0NBTnhvTERjNkZIQllKdmNnT25aeVMrakYwTlVvM0xxXzgzLXJ0dEJ1Smdz OWlkX1VEZ0BtYWlsLmdtYWlsLmNvbQpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9t L2UyNDdjMjYxLWUzZmItNDgxMC04MWUwLWE2NTg5MzE3MGU5NEBkdW5zbGFuZS5uZXQKLS0t CiBkb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWluZm8uc2dtbCAgICAgICAgICAgfCAgMjMgKysK IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9kZGx1dGlscy5jICAgICAgICAgICB8IDMzMCArKysr KysrKysrKysrKysrKysrKysKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAg ICAgICAgICB8ICAgOCArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2RhdGFiYXNlX2Rk bC5vdXQgfCAgODggKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxl ICAgICAgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2RhdGFiYXNlX2RkbC5z cWwgICAgICB8ICA2NiArKysrKwogNiBmaWxlcyBjaGFuZ2VkLCA1MTYgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvZGF0YWJhc2VfZGRsLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2RhdGFiYXNlX2RkbC5zcWwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvZnVuYy9mdW5jLWluZm8uc2dtbCBiL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtaW5mby5z Z21sCmluZGV4IGUxNGMyMDliZjE0Li44MGNmMTEwODNkNiAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL2Z1bmMvZnVuYy1pbmZvLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVu Yy1pbmZvLnNnbWwKQEAgLTM5MzgsNiArMzkzOCwyOSBAQCBhY2wgICAgICB8IHtwb3N0Z3Jl cz1hcndkRHh0bS9wb3N0Z3Jlcyxmb289ci9wb3N0Z3Jlc30KICAgICAgICAgPGxpdGVyYWw+ T1dORVI8L2xpdGVyYWw+LgogICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICAgPC9yb3c+ CisgICAgICA8cm93PgorICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48 cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CisgICAgICAgIDxpbmRleHRlcm0+CisgICAg ICAgICA8cHJpbWFyeT5wZ19nZXRfZGF0YWJhc2VfZGRsPC9wcmltYXJ5PgorICAgICAgICA8 L2luZGV4dGVybT4KKyAgICAgICAgPGZ1bmN0aW9uPnBnX2dldF9kYXRhYmFzZV9kZGw8L2Z1 bmN0aW9uPgorICAgICAgICAoIDxwYXJhbWV0ZXI+ZGF0YWJhc2U8L3BhcmFtZXRlcj4gPHR5 cGU+cmVnZGF0YWJhc2U8L3R5cGU+CisgICAgICAgIDxvcHRpb25hbD4sIDxsaXRlcmFsPlZB UklBRElDPC9saXRlcmFsPiA8cGFyYW1ldGVyPm9wdGlvbnM8L3BhcmFtZXRlcj4KKyAgICAg ICAgPHR5cGU+dGV4dDwvdHlwZT4gPC9vcHRpb25hbD4gKQorICAgICAgICA8cmV0dXJudmFs dWU+c2V0b2YgdGV4dDwvcmV0dXJudmFsdWU+CisgICAgICAgPC9wYXJhPgorICAgICAgIDxw YXJhPgorICAgICAgICBSZWNvbnN0cnVjdHMgdGhlIDxjb21tYW5kPkNSRUFURSBEQVRBQkFT RTwvY29tbWFuZD4gc3RhdGVtZW50IGZvciB0aGUKKyAgICAgICAgc3BlY2lmaWVkIGRhdGFi YXNlLCBmb2xsb3dlZCBieSA8Y29tbWFuZD5BTFRFUiBEQVRBQkFTRTwvY29tbWFuZD4KKyAg ICAgICAgc3RhdGVtZW50cyBmb3IgY29ubmVjdGlvbiBsaW1pdCwgdGVtcGxhdGUgc3RhdHVz LCBhbmQgY29uZmlndXJhdGlvbgorICAgICAgICBzZXR0aW5ncy4gIEVhY2ggc3RhdGVtZW50 IGlzIHJldHVybmVkIGFzIGEgc2VwYXJhdGUgcm93LgorICAgICAgICBUaGUgZm9sbG93aW5n IG9wdGlvbnMgYXJlIHN1cHBvcnRlZDoKKyAgICAgICAgPGxpdGVyYWw+cHJldHR5PC9saXRl cmFsPiAoYm9vbGVhbikgZm9yIGZvcm1hdHRlZCBvdXRwdXQsCisgICAgICAgIDxsaXRlcmFs Pm93bmVyPC9saXRlcmFsPiAoYm9vbGVhbikgdG8gaW5jbHVkZSA8bGl0ZXJhbD5PV05FUjwv bGl0ZXJhbD4sCisgICAgICAgIGFuZCA8bGl0ZXJhbD50YWJsZXNwYWNlPC9saXRlcmFsPiAo Ym9vbGVhbikgdG8gaW5jbHVkZQorICAgICAgICA8bGl0ZXJhbD5UQUJMRVNQQUNFPC9saXRl cmFsPi4KKyAgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgIDwvcm93PgogICAgICA8L3Ri b2R5PgogICAgIDwvdGdyb3VwPgogICAgPC90YWJsZT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9kZGx1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2RkbHV0 aWxzLmMKaW5kZXggZDk1Mzk2M2E3MTIuLjVmZjE1YmMyY2YxIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvZGRsdXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvZGRsdXRpbHMuYwpAQCAtMjMsMTEgKzIzLDE0IEBACiAjaW5jbHVkZSAiYWNjZXNzL3Rh YmxlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hdXRoX21lbWJlcnMuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX2F1dGhpZC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfY29sbGF0aW9u LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19kYXRhYmFzZS5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfZGJfcm9sZV9zZXR0aW5nLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190YWJsZXNw YWNlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVzcGFjZS5oIgogI2luY2x1ZGUgImNv bW1vbi9yZWxwYXRoLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgorI2luY2x1ZGUgIm1iL3Bn X3djaGFyLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAidXRpbHMvYWNs LmgiCiAjaW5jbHVkZSAidXRpbHMvYXJyYXkuaCIKQEAgLTM2LDYgKzM5LDcgQEAKICNpbmNs dWRlICJ1dGlscy9mbWdyb2lkcy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1 ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL3BnX2xvY2FsZS5oIgog I2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3J1bGV1dGlscy5oIgog I2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCkBAIC04MCw2ICs4NCw4IEBAIHN0YXRpYyBM aXN0ICpwZ19nZXRfcm9sZV9kZGxfaW50ZXJuYWwoT2lkIHJvbGVpZCwgYm9vbCBwcmV0dHks CiAJCQkJCQkJCQkgIGJvb2wgbWVtYmVyc2hpcHMpOwogc3RhdGljIExpc3QgKnBnX2dldF90 YWJsZXNwYWNlX2RkbF9pbnRlcm5hbChPaWQgdHNpZCwgYm9vbCBwcmV0dHksIGJvb2wgbm9f b3duZXIpOwogc3RhdGljIERhdHVtIHBnX2dldF90YWJsZXNwYWNlX2RkbF9zcmYoRnVuY3Rp b25DYWxsSW5mbyBmY2luZm8sIE9pZCB0c2lkLCBib29sIGlzbnVsbCk7CitzdGF0aWMgTGlz dCAqcGdfZ2V0X2RhdGFiYXNlX2RkbF9pbnRlcm5hbChPaWQgZGJpZCwgYm9vbCBwcmV0dHks CisJCQkJCQkJCQkJICBib29sIG5vX293bmVyLCBib29sIG5vX3RhYmxlc3BhY2UpOwogCiAK IC8qCkBAIC04MzgsMyArODQ0LDMyNyBAQCBwZ19nZXRfdGFibGVzcGFjZV9kZGxfbmFtZShQ R19GVU5DVElPTl9BUkdTKQogCiAJcmV0dXJuIHBnX2dldF90YWJsZXNwYWNlX2RkbF9zcmYo ZmNpbmZvLCB0c2lkLCBpc251bGwpOwogfQorCisvKgorICogcGdfZ2V0X2RhdGFiYXNlX2Rk bF9pbnRlcm5hbAorICoJCUdlbmVyYXRlIERETCBzdGF0ZW1lbnRzIHRvIHJlY3JlYXRlIGEg ZGF0YWJhc2UuCisgKgorICogUmV0dXJucyBhIExpc3Qgb2YgcGFsbG9jJ2Qgc3RyaW5ncy4g IFRoZSBmaXJzdCBlbGVtZW50IGlzIHRoZQorICogQ1JFQVRFIERBVEFCQVNFIHN0YXRlbWVu dDsgc3Vic2VxdWVudCBlbGVtZW50cyBhcmUgQUxURVIgREFUQUJBU0UKKyAqIHN0YXRlbWVu dHMgZm9yIHByb3BlcnRpZXMgYW5kIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MuCisgKi8KK3N0 YXRpYyBMaXN0ICoKK3BnX2dldF9kYXRhYmFzZV9kZGxfaW50ZXJuYWwoT2lkIGRiaWQsIGJv b2wgcHJldHR5LAorCQkJCQkJCSBib29sIG5vX293bmVyLCBib29sIG5vX3RhYmxlc3BhY2Up Cit7CisJSGVhcFR1cGxlCXR1cGxlOworCUZvcm1fcGdfZGF0YWJhc2UgZGJmb3JtOworCVN0 cmluZ0luZm9EYXRhIGJ1ZjsKKwlib29sCQlpc251bGw7CisJRGF0dW0JCWRhdHVtOworCWNv bnN0IGNoYXIgKmVuY29kaW5nOworCWNoYXIJICAgKmRibmFtZTsKKwljaGFyCSAgICpjb2xs YXRlOworCWNoYXIJICAgKmN0eXBlOworCVJlbGF0aW9uCXJlbDsKKwlTY2FuS2V5RGF0YSBz Y2Fua2V5WzJdOworCVN5c1NjYW5EZXNjIHNjYW47CisJTGlzdAkgICAqc3RhdGVtZW50cyA9 IE5JTDsKKwlBY2xSZXN1bHQJYWNscmVzdWx0OworCisJdHVwbGUgPSBTZWFyY2hTeXNDYWNo ZTEoREFUQUJBU0VPSUQsIE9iamVjdElkR2V0RGF0dW0oZGJpZCkpOworCWlmICghSGVhcFR1 cGxlSXNWYWxpZCh0dXBsZSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJS Q09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkgZXJybXNnKCJkYXRhYmFzZSB3aXRoIE9J RCAldSBkb2VzIG5vdCBleGlzdCIsIGRiaWQpKSk7CisKKwkvKiBVc2VyIG11c3QgaGF2ZSBj b25uZWN0IHByaXZpbGVnZSBmb3IgdGFyZ2V0IGRhdGFiYXNlLiAqLworCWFjbHJlc3VsdCA9 IG9iamVjdF9hY2xjaGVjayhEYXRhYmFzZVJlbGF0aW9uSWQsIGRiaWQsIEdldFVzZXJJZCgp LCBBQ0xfQ09OTkVDVCk7CisJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19PSykKKwkJYWNs Y2hlY2tfZXJyb3IoYWNscmVzdWx0LCBPQkpFQ1RfREFUQUJBU0UsCisJCQkJCSAgIGdldF9k YXRhYmFzZV9uYW1lKGRiaWQpKTsKKworCWRiZm9ybSA9IChGb3JtX3BnX2RhdGFiYXNlKSBH RVRTVFJVQ1QodHVwbGUpOworCWRibmFtZSA9IHBzdHJkdXAoTmFtZVN0cihkYmZvcm0tPmRh dG5hbWUpKTsKKworCS8qCisJICogV2UgZG9uJ3Qgc3VwcG9ydCBnZW5lcmF0aW5nIERETCBm b3Igc3lzdGVtIGRhdGFiYXNlcy4gIFRoZSBwcmltYXJ5CisJICogcmVhc29uIGZvciB0aGlz IGlzIHRoYXQgdXNlcnMgc2hvdWxkbid0IGJlIHJlY3JlYXRpbmcgdGhlbS4KKwkgKi8KKwlp ZiAoc3RyY21wKGRibmFtZSwgInRlbXBsYXRlMCIpID09IDAgfHwgc3RyY21wKGRibmFtZSwg InRlbXBsYXRlMSIpID09IDApCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJS Q09ERV9SRVNFUlZFRF9OQU1FKSwKKwkJCQkgZXJybXNnKCJkYXRhYmFzZSBcIiVzXCIgaXMg YSBzeXN0ZW0gZGF0YWJhc2UiLCBkYm5hbWUpLAorCQkJIGVycmRldGFpbCgiRERMIGdlbmVy YXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgdGVtcGxhdGUwIGFuZCB0ZW1wbGF0ZTEuIikp KTsKKworCWluaXRTdHJpbmdJbmZvKCZidWYpOworCisJLyogLS0tIEJ1aWxkIENSRUFURSBE QVRBQkFTRSBzdGF0ZW1lbnQgLS0tICovCisJYXBwZW5kU3RyaW5nSW5mbygmYnVmLCAiQ1JF QVRFIERBVEFCQVNFICVzIiwgcXVvdGVfaWRlbnRpZmllcihkYm5hbWUpKTsKKworCS8qCisJ ICogQWx3YXlzIHVzZSB0ZW1wbGF0ZTA6IHRoZSB0YXJnZXQgZGF0YWJhc2UgYWxyZWFkeSBj b250YWlucyB0aGUgY2F0YWxvZworCSAqIGRhdGEgZnJvbSB3aGF0ZXZlciB0ZW1wbGF0ZSB3 YXMgdXNlZCBvcmlnaW5hbGx5LCBzbyB3ZSBtdXN0IHN0YXJ0IGZyb20KKwkgKiB0aGUgcHJp c3RpbmUgdGVtcGxhdGUgdG8gYXZvaWQgZHVwbGljYXRpb24uCisJICovCisJYXBwZW5kX2Rk bF9vcHRpb24oJmJ1ZiwgcHJldHR5LCA0LCAiV0lUSCBURU1QTEFURSA9IHRlbXBsYXRlMCIp OworCisJLyogRU5DT0RJTkcgKi8KKwllbmNvZGluZyA9IHBnX2VuY29kaW5nX3RvX2NoYXIo ZGJmb3JtLT5lbmNvZGluZyk7CisJaWYgKHN0cmxlbihlbmNvZGluZykgPiAwKQorCQlhcHBl bmRfZGRsX29wdGlvbigmYnVmLCBwcmV0dHksIDQsICJFTkNPRElORyA9ICVzIiwKKwkJCQkJ CSAgcXVvdGVfbGl0ZXJhbF9jc3RyKGVuY29kaW5nKSk7CisKKwkvKiBMT0NBTEVfUFJPVklE RVIgKi8KKwlpZiAoZGJmb3JtLT5kYXRsb2Nwcm92aWRlciA9PSBDT0xMUFJPVklERVJfQlVJ TFRJTiB8fAorCQlkYmZvcm0tPmRhdGxvY3Byb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1Ug fHwKKwkJZGJmb3JtLT5kYXRsb2Nwcm92aWRlciA9PSBDT0xMUFJPVklERVJfTElCQykKKwkJ YXBwZW5kX2RkbF9vcHRpb24oJmJ1ZiwgcHJldHR5LCA0LCAiTE9DQUxFX1BST1ZJREVSID0g JXMiLAorCQkJCQkJICBjb2xscHJvdmlkZXJfbmFtZShkYmZvcm0tPmRhdGxvY3Byb3ZpZGVy KSk7CisJZWxzZQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJIGVycm1zZygidW5yZWNvZ25pemVkIGxv Y2FsZSBwcm92aWRlcjogJWMiLAorCQkJCQkJZGJmb3JtLT5kYXRsb2Nwcm92aWRlcikpKTsK KworCS8qIExPQ0FMRSwgTENfQ09MTEFURSwgTENfQ1RZUEUgKi8KKwlkYXR1bSA9IFN5c0Nh Y2hlR2V0QXR0cihEQVRBQkFTRU9JRCwgdHVwbGUsCisJCQkJCQkJQW51bV9wZ19kYXRhYmFz ZV9kYXRjb2xsYXRlLCAmaXNudWxsKTsKKwljb2xsYXRlID0gaXNudWxsID8gTlVMTCA6IFRl eHREYXR1bUdldENTdHJpbmcoZGF0dW0pOworCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKERB VEFCQVNFT0lELCB0dXBsZSwKKwkJCQkJCQlBbnVtX3BnX2RhdGFiYXNlX2RhdGN0eXBlLCAm aXNudWxsKTsKKwljdHlwZSA9IGlzbnVsbCA/IE5VTEwgOiBUZXh0RGF0dW1HZXRDU3RyaW5n KGRhdHVtKTsKKwlpZiAoY29sbGF0ZSAhPSBOVUxMICYmIGN0eXBlICE9IE5VTEwgJiYgc3Ry Y21wKGNvbGxhdGUsIGN0eXBlKSA9PSAwKQorCXsKKwkJYXBwZW5kX2RkbF9vcHRpb24oJmJ1 ZiwgcHJldHR5LCA0LCAiTE9DQUxFID0gJXMiLAorCQkJCQkJICBxdW90ZV9saXRlcmFsX2Nz dHIoY29sbGF0ZSkpOworCX0KKwllbHNlCisJeworCQlpZiAoY29sbGF0ZSAhPSBOVUxMKQor CQkJYXBwZW5kX2RkbF9vcHRpb24oJmJ1ZiwgcHJldHR5LCA0LCAiTENfQ09MTEFURSA9ICVz IiwKKwkJCQkJCQkgIHF1b3RlX2xpdGVyYWxfY3N0cihjb2xsYXRlKSk7CisJCWlmIChjdHlw ZSAhPSBOVUxMKQorCQkJYXBwZW5kX2RkbF9vcHRpb24oJmJ1ZiwgcHJldHR5LCA0LCAiTENf Q1RZUEUgPSAlcyIsCisJCQkJCQkJICBxdW90ZV9saXRlcmFsX2NzdHIoY3R5cGUpKTsKKwl9 CisKKwkvKiBMT0NBTEUgKHByb3ZpZGVyLXNwZWNpZmljKSAqLworCWRhdHVtID0gU3lzQ2Fj aGVHZXRBdHRyKERBVEFCQVNFT0lELCB0dXBsZSwKKwkJCQkJCQlBbnVtX3BnX2RhdGFiYXNl X2RhdGxvY2FsZSwgJmlzbnVsbCk7CisJaWYgKCFpc251bGwpCisJeworCQljb25zdCBjaGFy ICpsb2NhbGUgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKTsKKworCQlpZiAoZGJmb3Jt LT5kYXRsb2Nwcm92aWRlciA9PSBDT0xMUFJPVklERVJfQlVJTFRJTikKKwkJCWFwcGVuZF9k ZGxfb3B0aW9uKCZidWYsIHByZXR0eSwgNCwgIkJVSUxUSU5fTE9DQUxFID0gJXMiLAorCQkJ CQkJCSAgcXVvdGVfbGl0ZXJhbF9jc3RyKGxvY2FsZSkpOworCQllbHNlIGlmIChkYmZvcm0t PmRhdGxvY3Byb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1UpCisJCQlhcHBlbmRfZGRsX29w dGlvbigmYnVmLCBwcmV0dHksIDQsICJJQ1VfTE9DQUxFID0gJXMiLAorCQkJCQkJCSAgcXVv dGVfbGl0ZXJhbF9jc3RyKGxvY2FsZSkpOworCX0KKworCS8qIElDVV9SVUxFUyAqLworCWRh dHVtID0gU3lzQ2FjaGVHZXRBdHRyKERBVEFCQVNFT0lELCB0dXBsZSwKKwkJCQkJCQlBbnVt X3BnX2RhdGFiYXNlX2RhdGljdXJ1bGVzLCAmaXNudWxsKTsKKwlpZiAoIWlzbnVsbCAmJiBk YmZvcm0tPmRhdGxvY3Byb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1UpCisJCWFwcGVuZF9k ZGxfb3B0aW9uKCZidWYsIHByZXR0eSwgNCwgIklDVV9SVUxFUyA9ICVzIiwKKwkJCQkJCSAg cXVvdGVfbGl0ZXJhbF9jc3RyKFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pKSk7CisKKwkv KiBUQUJMRVNQQUNFICovCisJaWYgKCFub190YWJsZXNwYWNlICYmIE9pZElzVmFsaWQoZGJm b3JtLT5kYXR0YWJsZXNwYWNlKSkKKwl7CisJCWNoYXIJICAgKnNwY25hbWUgPSBnZXRfdGFi bGVzcGFjZV9uYW1lKGRiZm9ybS0+ZGF0dGFibGVzcGFjZSk7CisKKwkJaWYgKHBnX3N0cmNh c2VjbXAoc3BjbmFtZSwgInBnX2RlZmF1bHQiKSAhPSAwKQorCQkJYXBwZW5kX2RkbF9vcHRp b24oJmJ1ZiwgcHJldHR5LCA0LCAiVEFCTEVTUEFDRSA9ICVzIiwKKwkJCQkJCQkgIHF1b3Rl X2lkZW50aWZpZXIoc3BjbmFtZSkpOworCX0KKworCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZi dWYsICc7Jyk7CisJc3RhdGVtZW50cyA9IGxhcHBlbmQoc3RhdGVtZW50cywgcHN0cmR1cChi dWYuZGF0YSkpOworCisJLyogT1dORVIgKi8KKwlpZiAoIW5vX293bmVyICYmIE9pZElzVmFs aWQoZGJmb3JtLT5kYXRkYmEpKQorCXsKKwkJY2hhcgkgICAqb3duZXIgPSBHZXRVc2VyTmFt ZUZyb21JZChkYmZvcm0tPmRhdGRiYSwgZmFsc2UpOworCisJCXJlc2V0U3RyaW5nSW5mbygm YnVmKTsKKwkJYXBwZW5kU3RyaW5nSW5mbygmYnVmLCAiQUxURVIgREFUQUJBU0UgJXMgT1dO RVIgVE8gJXM7IiwKKwkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKGRibmFtZSksIHF1b3RlX2lk ZW50aWZpZXIob3duZXIpKTsKKwkJcGZyZWUob3duZXIpOworCQlzdGF0ZW1lbnRzID0gbGFw cGVuZChzdGF0ZW1lbnRzLCBwc3RyZHVwKGJ1Zi5kYXRhKSk7CisJfQorCisJLyogQ09OTkVD VElPTiBMSU1JVCAqLworCWlmIChkYmZvcm0tPmRhdGNvbm5saW1pdCAhPSAtMSkKKwl7CisJ CXJlc2V0U3RyaW5nSW5mbygmYnVmKTsKKwkJYXBwZW5kU3RyaW5nSW5mbygmYnVmLCAiQUxU RVIgREFUQUJBU0UgJXMgQ09OTkVDVElPTiBMSU1JVCA9ICVkOyIsCisJCQkJCQkgcXVvdGVf aWRlbnRpZmllcihkYm5hbWUpLCBkYmZvcm0tPmRhdGNvbm5saW1pdCk7CisJCXN0YXRlbWVu dHMgPSBsYXBwZW5kKHN0YXRlbWVudHMsIHBzdHJkdXAoYnVmLmRhdGEpKTsKKwl9CisKKwkv KiBJU19URU1QTEFURSAqLworCWlmIChkYmZvcm0tPmRhdGlzdGVtcGxhdGUpCisJeworCQly ZXNldFN0cmluZ0luZm8oJmJ1Zik7CisJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIkFMVEVS IERBVEFCQVNFICVzIElTX1RFTVBMQVRFID0gdHJ1ZTsiLAorCQkJCQkJIHF1b3RlX2lkZW50 aWZpZXIoZGJuYW1lKSk7CisJCXN0YXRlbWVudHMgPSBsYXBwZW5kKHN0YXRlbWVudHMsIHBz dHJkdXAoYnVmLmRhdGEpKTsKKwl9CisKKwkvKiBBTExPV19DT05ORUNUSU9OUyAqLworCWlm ICghZGJmb3JtLT5kYXRhbGxvd2Nvbm4pCisJeworCQlyZXNldFN0cmluZ0luZm8oJmJ1Zik7 CisJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIkFMVEVSIERBVEFCQVNFICVzIEFMTE9XX0NP Tk5FQ1RJT05TID0gZmFsc2U7IiwKKwkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKGRibmFtZSkp OworCQlzdGF0ZW1lbnRzID0gbGFwcGVuZChzdGF0ZW1lbnRzLCBwc3RyZHVwKGJ1Zi5kYXRh KSk7CisJfQorCisJUmVsZWFzZVN5c0NhY2hlKHR1cGxlKTsKKworCS8qCisJICogTm93IHNj YW4gcGdfZGJfcm9sZV9zZXR0aW5nIGZvciBBTFRFUiBEQVRBQkFTRSBTRVQgY29uZmlndXJh dGlvbnMuCisJICoKKwkgKiBJdCBpcyBvbmx5IGRhdGFiYXNlLXdpZGUgKHNldHJvbGUgPSAw KS4gSXQgZ2VuZXJhdGVzIG9uZSBBTFRFUgorCSAqIHN0YXRlbWVudCBwZXIgc2V0dGluZy4K KwkgKi8KKwlyZWwgPSB0YWJsZV9vcGVuKERiUm9sZVNldHRpbmdSZWxhdGlvbklkLCBBY2Nl c3NTaGFyZUxvY2spOworCVNjYW5LZXlJbml0KCZzY2Fua2V5WzBdLAorCQkJCUFudW1fcGdf ZGJfcm9sZV9zZXR0aW5nX3NldGRhdGFiYXNlLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJl ciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVtKGRiaWQpKTsKKwlTY2FuS2V5SW5p dCgmc2NhbmtleVsxXSwKKwkJCQlBbnVtX3BnX2RiX3JvbGVfc2V0dGluZ19zZXRyb2xlLAor CQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERh dHVtKEludmFsaWRPaWQpKTsKKworCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocmVsLCBE YlJvbGVTZXR0aW5nRGF0aWRSb2xpZEluZGV4SWQsIHRydWUsCisJCQkJCQkJICBOVUxMLCAy LCBzY2Fua2V5KTsKKworCXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlID0gc3lzdGFi bGVfZ2V0bmV4dChzY2FuKSkpCisJeworCQlBcnJheVR5cGUgICpkYmNvbmZpZzsKKwkJRGF0 dW0JICAgKnNldHRpbmdzOworCQlib29sCSAgICpudWxsczsKKwkJaW50CQkJbnNldHRpbmdz OworCisJCS8qCisJCSAqIFRoZSBzZXRjb25maWcgY29sdW1uIGlzIGEgdGV4dCBhcnJheSBp biAibmFtZT12YWx1ZSIgZm9ybWF0LiBJdAorCQkgKiBzaG91bGQgbmV2ZXIgYmUgbnVsbCBm b3IgYSB2YWxpZCByb3csIGJ1dCBiZSBkZWZlbnNpdmUuCisJCSAqLworCQlkYXR1bSA9IGhl YXBfZ2V0YXR0cih0dXBsZSwgQW51bV9wZ19kYl9yb2xlX3NldHRpbmdfc2V0Y29uZmlnLAor CQkJCQkJCSBSZWxhdGlvbkdldERlc2NyKHJlbCksICZpc251bGwpOworCQlpZiAoaXNudWxs KQorCQkJY29udGludWU7CisKKwkJZGJjb25maWcgPSBEYXR1bUdldEFycmF5VHlwZVAoZGF0 dW0pOworCisJCWRlY29uc3RydWN0X2FycmF5X2J1aWx0aW4oZGJjb25maWcsIFRFWFRPSUQs ICZzZXR0aW5ncywgJm51bGxzLCAmbnNldHRpbmdzKTsKKworCQlmb3IgKGludCBpID0gMDsg aSA8IG5zZXR0aW5nczsgaSsrKQorCQl7CisJCQljaGFyCSAgICpzLAorCQkJCQkgICAqcDsK KworCQkJaWYgKG51bGxzW2ldKQorCQkJCWNvbnRpbnVlOworCisJCQlzID0gVGV4dERhdHVt R2V0Q1N0cmluZyhzZXR0aW5nc1tpXSk7CisJCQlwID0gc3RyY2hyKHMsICc9Jyk7CisJCQlp ZiAocCA9PSBOVUxMKQorCQkJeworCQkJCXBmcmVlKHMpOworCQkJCWNvbnRpbnVlOworCQkJ fQorCQkJKnArKyA9ICdcMCc7CisKKwkJCXJlc2V0U3RyaW5nSW5mbygmYnVmKTsKKwkJCWFw cGVuZFN0cmluZ0luZm8oJmJ1ZiwgIkFMVEVSIERBVEFCQVNFICVzIFNFVCAlcyBUTyAiLAor CQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKGRibmFtZSksCisJCQkJCQkJIHF1b3RlX2lkZW50 aWZpZXIocykpOworCisJCQlhcHBlbmRfZ3VjX3ZhbHVlKCZidWYsIHMsIHApOworCisJCQlh cHBlbmRTdHJpbmdJbmZvQ2hhcigmYnVmLCAnOycpOworCisJCQlzdGF0ZW1lbnRzID0gbGFw cGVuZChzdGF0ZW1lbnRzLCBwc3RyZHVwKGJ1Zi5kYXRhKSk7CisKKwkJCXBmcmVlKHMpOwor CQl9CisKKwkJcGZyZWUoc2V0dGluZ3MpOworCQlwZnJlZShudWxscyk7CisJCXBmcmVlKGRi Y29uZmlnKTsKKwl9CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCXRhYmxlX2Nsb3Nl KHJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXBmcmVlKGJ1Zi5kYXRhKTsKKwlwZnJlZShk Ym5hbWUpOworCisJcmV0dXJuIHN0YXRlbWVudHM7Cit9CisKKy8qCisgKiBwZ19nZXRfZGF0 YWJhc2VfZGRsCisgKgkJUmV0dXJuIERETCB0byByZWNyZWF0ZSBhIGRhdGFiYXNlIGFzIGEg c2V0IG9mIHRleHQgcm93cy4KKyAqLworRGF0dW0KK3BnX2dldF9kYXRhYmFzZV9kZGwoUEdf RlVOQ1RJT05fQVJHUykKK3sKKwlGdW5jQ2FsbENvbnRleHQgKmZ1bmNjdHg7CisJTGlzdAkg ICAqc3RhdGVtZW50czsKKworCWlmIChTUkZfSVNfRklSU1RDQUxMKCkpCisJeworCQlNZW1v cnlDb250ZXh0IG9sZGNvbnRleHQ7CisJCU9pZAkJCWRiaWQ7CisJCURkbE9wdGlvbglvcHRz W10gPSB7CisJCQl7InByZXR0eSIsIERETF9PUFRfQk9PTH0sCisJCQl7Im93bmVyIiwgRERM X09QVF9CT09MfSwKKwkJCXsidGFibGVzcGFjZSIsIERETF9PUFRfQk9PTH0sCisJCX07CisK KwkJZnVuY2N0eCA9IFNSRl9GSVJTVENBTExfSU5JVCgpOworCQlvbGRjb250ZXh0ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKGZ1bmNjdHgtPm11bHRpX2NhbGxfbWVtb3J5X2N0eCk7CisK KwkJaWYgKFBHX0FSR0lTTlVMTCgwKSkKKwkJeworCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRv KG9sZGNvbnRleHQpOworCQkJU1JGX1JFVFVSTl9ET05FKGZ1bmNjdHgpOworCQl9CisKKwkJ ZGJpZCA9IFBHX0dFVEFSR19PSUQoMCk7CisJCXBhcnNlX2RkbF9vcHRpb25zKGZjaW5mbywg MSwgb3B0cywgbGVuZ3Rob2Yob3B0cykpOworCisJCXN0YXRlbWVudHMgPSBwZ19nZXRfZGF0 YWJhc2VfZGRsX2ludGVybmFsKGRiaWQsCisJCQkJCQkJCQkJCQkgIG9wdHNbMF0uaXNzZXQg JiYgb3B0c1swXS5ib29sdmFsLAorCQkJCQkJCQkJCQkJICBvcHRzWzFdLmlzc2V0ICYmICFv cHRzWzFdLmJvb2x2YWwsCisJCQkJCQkJCQkJCQkgIG9wdHNbMl0uaXNzZXQgJiYgIW9wdHNb Ml0uYm9vbHZhbCk7CisJCWZ1bmNjdHgtPnVzZXJfZmN0eCA9IHN0YXRlbWVudHM7CisJCWZ1 bmNjdHgtPm1heF9jYWxscyA9IGxpc3RfbGVuZ3RoKHN0YXRlbWVudHMpOworCisJCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKwl9CisKKwlmdW5jY3R4ID0gU1JGX1BF UkNBTExfU0VUVVAoKTsKKwlzdGF0ZW1lbnRzID0gKExpc3QgKikgZnVuY2N0eC0+dXNlcl9m Y3R4OworCisJaWYgKGZ1bmNjdHgtPmNhbGxfY250ciA8IGZ1bmNjdHgtPm1heF9jYWxscykK Kwl7CisJCWNoYXIJICAgKnN0bXQ7CisKKwkJc3RtdCA9IGxpc3RfbnRoKHN0YXRlbWVudHMs IGZ1bmNjdHgtPmNhbGxfY250cik7CisKKwkJU1JGX1JFVFVSTl9ORVhUKGZ1bmNjdHgsIENT dHJpbmdHZXRUZXh0RGF0dW0oc3RtdCkpOworCX0KKwllbHNlCisJeworCQlsaXN0X2ZyZWVf ZGVlcChzdGF0ZW1lbnRzKTsKKwkJU1JGX1JFVFVSTl9ET05FKGZ1bmNjdHgpOworCX0KK30K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDk4NGNmNjIwYmM4Li43ODdkZWI4MmEz YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC04NjI3LDYgKzg2MjcsMTQgQEAK ICAgcHJvYWxsYXJndHlwZXMgPT4gJ3tuYW1lLHRleHR9JywKICAgcHJvbmFyZ2RlZmF1bHRz ID0+ICcxJywgcHJvYXJnZGVmYXVsdHMgPT4gJ3tOVUxMfScsCiAgIHByb3NyYyA9PiAncGdf Z2V0X3RhYmxlc3BhY2VfZGRsX25hbWUnIH0sCit7IG9pZCA9PiAnODc2MicsIGRlc2NyID0+ ICdnZXQgRERMIHRvIHJlY3JlYXRlIGEgZGF0YWJhc2UnLAorICBwcm9uYW1lID0+ICdwZ19n ZXRfZGF0YWJhc2VfZGRsJywgcHJvdmFyaWFkaWMgPT4gJ3RleHQnLCBwcm9pc3N0cmljdCA9 PiAnZicsCisgIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcmV0c2V0ID0+ICd0JywgcHJvcm93 cyA9PiAnMTAnLCBwcm9yZXR0eXBlID0+ICd0ZXh0JywKKyAgcHJvYXJndHlwZXMgPT4gJ3Jl Z2RhdGFiYXNlIHRleHQnLAorICBwcm9hcmdtb2RlcyA9PiAne2ksdn0nLAorICBwcm9hbGxh cmd0eXBlcyA9PiAne3JlZ2RhdGFiYXNlLHRleHR9JywKKyAgcHJvbmFyZ2RlZmF1bHRzID0+ ICcxJywgcHJvYXJnZGVmYXVsdHMgPT4gJ3tOVUxMfScsCisgIHByb3NyYyA9PiAncGdfZ2V0 X2RhdGFiYXNlX2RkbCcgfSwKIHsgb2lkID0+ICcyNTA5JywKICAgZGVzY3IgPT4gJ2RlcGFy c2UgYW4gZW5jb2RlZCBleHByZXNzaW9uIHdpdGggcHJldHR5LXByaW50IG9wdGlvbicsCiAg IHByb25hbWUgPT4gJ3BnX2dldF9leHByJywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9yZXR0 eXBlID0+ICd0ZXh0JywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv ZGF0YWJhc2VfZGRsLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZGF0YWJhc2Vf ZGRsLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTA4MWMx YTJiNTMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Rh dGFiYXNlX2RkbC5vdXQKQEAgLTAsMCArMSw4OCBAQAorLS0KKy0tIFRlc3RzIGZvciBwZ19n ZXRfZGF0YWJhc2VfZGRsKCkKKy0tCistLSBUbyBwcm9kdWNlIHN0YWJsZSByZWdyZXNzaW9u IHRlc3Qgb3V0cHV0LCBzdHJpcCBsb2NhbGUvY29sbGF0aW9uIGRldGFpbHMKKy0tIGZyb20g dGhlIERETCBvdXRwdXQuICBVc2VzIGEgcGxhaW4gU1FMIGZ1bmN0aW9uIHRvIGF2b2lkIGEg UEwvcGdTUUwKKy0tIGRlcGVuZGVuY3kuCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBk ZGxfZmlsdGVyKGRkbF9pbnB1dCBURVhUKQorUkVUVVJOUyBURVhUIExBTkdVQUdFIHNxbCBB UyAkJAorU0VMRUNUIHJlZ2V4cF9yZXBsYWNlKAorICByZWdleHBfcmVwbGFjZSgKKyAgICBy ZWdleHBfcmVwbGFjZSgKKyAgICAgIHJlZ2V4cF9yZXBsYWNlKAorICAgICAgICByZWdleHBf cmVwbGFjZSgKKyAgICAgICAgICBkZGxfaW5wdXQsCisgICAgICAgICAgJ1xzKlxtTE9DQUxF X1BST1ZJREVSXE1ccyo9XHMqKFsnJyJdP1teJyciXHNdK1snJyJdPyknLCAnJywgJ2dpJyks CisgICAgICAgICdccypMQ19DT0xMQVRFXHMqPVxzKihbJyciXSlbXicnIl0qXDEnLCAnJywg J2dpJyksCisgICAgICAnXHMqTENfQ1RZUEVccyo9XHMqKFsnJyJdKVteJyciXSpcMScsICcn LCAnZ2knKSwKKyAgICAnXHMqXFMqTE9DQUxFXFMqXHMqPT9ccyooWycnIl0pW14nJyJdKlwx JywgJycsICdnaScpLAorICAnXHMqXFMqQ09MTEFUSU9OXFMqXHMqPT9ccyooWycnIl0pW14n JyJdKlwxJywgJycsICdnaScpCiskJDsKK0NSRUFURSBST0xFIHJlZ3Jlc3NfZGF0ZGJhOwor Q1JFQVRFIERBVEFCQVNFIHJlZ3Jlc3NfZGF0YWJhc2VfZGRsCisgICAgRU5DT0RJTkcgdXRm OCBMQ19DT0xMQVRFICJDIiBMQ19DVFlQRSAiQyIgVEVNUExBVEUgdGVtcGxhdGUwCisgICAg T1dORVIgcmVncmVzc19kYXRkYmE7CitBTFRFUiBEQVRBQkFTRSByZWdyZXNzX2RhdGFiYXNl X2RkbCBDT05ORUNUSU9OX0xJTUlUIDEyMzsKK0FMVEVSIERBVEFCQVNFIHJlZ3Jlc3NfZGF0 YWJhc2VfZGRsIFNFVCByYW5kb21fcGFnZV9jb3N0ID0gMi4wOworQUxURVIgUk9MRSByZWdy ZXNzX2RhdGRiYSBJTiBEQVRBQkFTRSByZWdyZXNzX2RhdGFiYXNlX2RkbCBTRVQgcmFuZG9t X3BhZ2VfY29zdCA9IDEuMTsKKy0tIERhdGFiYXNlIGRvZXNuJ3QgZXhpc3QKK1NFTEVDVCAq IEZST00gcGdfZ2V0X2RhdGFiYXNlX2RkbCgncmVncmVzc2lvbl9kYXRhYmFzZScpOworRVJS T1I6ICBkYXRhYmFzZSAicmVncmVzc2lvbl9kYXRhYmFzZSIgZG9lcyBub3QgZXhpc3QKK0xJ TkUgMTogU0VMRUNUICogRlJPTSBwZ19nZXRfZGF0YWJhc2VfZGRsKCdyZWdyZXNzaW9uX2Rh dGFiYXNlJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CistLSBOVUxMIHZhbHVlCitTRUxFQ1QgKiBGUk9NIHBnX2dldF9kYXRhYmFzZV9kZGwoTlVM TCk7CisgcGdfZ2V0X2RhdGFiYXNlX2RkbCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKDAg cm93cykKKworLS0gSW52YWxpZCBvcHRpb24gdmFsdWUgKHNob3VsZCBlcnJvcikKK1NFTEVD VCAqIEZST00gcGdfZ2V0X2RhdGFiYXNlX2RkbCgncmVncmVzc19kYXRhYmFzZV9kZGwnLCAn b3duZXInLCAnaW52YWxpZCcpOworRVJST1I6ICBpbnZhbGlkIHZhbHVlIGZvciBib29sZWFu IG9wdGlvbiAib3duZXIiOiBpbnZhbGlkCistLSBEdXBsaWNhdGUgb3B0aW9uIChzaG91bGQg ZXJyb3IpCitTRUxFQ1QgKiBGUk9NIHBnX2dldF9kYXRhYmFzZV9kZGwoJ3JlZ3Jlc3NfZGF0 YWJhc2VfZGRsJywgJ293bmVyJywgJ2ZhbHNlJywgJ293bmVyJywgJ3RydWUnKTsKK0VSUk9S OiAgb3B0aW9uICJvd25lciIgaXMgc3BlY2lmaWVkIG1vcmUgdGhhbiBvbmNlCistLSBXaXRo b3V0IG9wdGlvbnMKK1NFTEVDVCBkZGxfZmlsdGVyKHBnX2dldF9kYXRhYmFzZV9kZGwpIEZS T00gcGdfZ2V0X2RhdGFiYXNlX2RkbCgncmVncmVzc19kYXRhYmFzZV9kZGwnKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRkbF9maWx0ZXIgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIENSRUFURSBEQVRBQkFTRSByZWdyZXNzX2RhdGFiYXNlX2RkbCBXSVRIIFRFTVBMQVRF ID0gdGVtcGxhdGUwIEVOQ09ESU5HID0gJ1VURjgnOworIEFMVEVSIERBVEFCQVNFIHJlZ3Jl c3NfZGF0YWJhc2VfZGRsIE9XTkVSIFRPIHJlZ3Jlc3NfZGF0ZGJhOworIEFMVEVSIERBVEFC QVNFIHJlZ3Jlc3NfZGF0YWJhc2VfZGRsIENPTk5FQ1RJT04gTElNSVQgPSAxMjM7CisgQUxU RVIgREFUQUJBU0UgcmVncmVzc19kYXRhYmFzZV9kZGwgU0VUIHJhbmRvbV9wYWdlX2Nvc3Qg VE8gJzIuMCc7CisoNCByb3dzKQorCistLSBXaXRoIG93bmVyCitTRUxFQ1QgZGRsX2ZpbHRl cihwZ19nZXRfZGF0YWJhc2VfZGRsKSBGUk9NIHBnX2dldF9kYXRhYmFzZV9kZGwoJ3JlZ3Jl c3NfZGF0YWJhc2VfZGRsJywgJ293bmVyJywgJ3RydWUnKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRkbF9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBE QVRBQkFTRSByZWdyZXNzX2RhdGFiYXNlX2RkbCBXSVRIIFRFTVBMQVRFID0gdGVtcGxhdGUw IEVOQ09ESU5HID0gJ1VURjgnOworIEFMVEVSIERBVEFCQVNFIHJlZ3Jlc3NfZGF0YWJhc2Vf ZGRsIE9XTkVSIFRPIHJlZ3Jlc3NfZGF0ZGJhOworIEFMVEVSIERBVEFCQVNFIHJlZ3Jlc3Nf ZGF0YWJhc2VfZGRsIENPTk5FQ1RJT04gTElNSVQgPSAxMjM7CisgQUxURVIgREFUQUJBU0Ug cmVncmVzc19kYXRhYmFzZV9kZGwgU0VUIHJhbmRvbV9wYWdlX2Nvc3QgVE8gJzIuMCc7Ciso NCByb3dzKQorCistLSBQcmV0dHktcHJpbnRlZCBvdXRwdXQKK1xwc2V0IGZvcm1hdCB1bmFs aWduZWQKK1NFTEVDVCBkZGxfZmlsdGVyKHBnX2dldF9kYXRhYmFzZV9kZGwpIEZST00gcGdf Z2V0X2RhdGFiYXNlX2RkbCgncmVncmVzc19kYXRhYmFzZV9kZGwnLCAncHJldHR5JywgJ3Ry dWUnLCAndGFibGVzcGFjZScsICdmYWxzZScpOworZGRsX2ZpbHRlcgorQ1JFQVRFIERBVEFC QVNFIHJlZ3Jlc3NfZGF0YWJhc2VfZGRsCisgICAgV0lUSCBURU1QTEFURSA9IHRlbXBsYXRl MAorICAgIEVOQ09ESU5HID0gJ1VURjgnOworQUxURVIgREFUQUJBU0UgcmVncmVzc19kYXRh YmFzZV9kZGwgT1dORVIgVE8gcmVncmVzc19kYXRkYmE7CitBTFRFUiBEQVRBQkFTRSByZWdy ZXNzX2RhdGFiYXNlX2RkbCBDT05ORUNUSU9OIExJTUlUID0gMTIzOworQUxURVIgREFUQUJB U0UgcmVncmVzc19kYXRhYmFzZV9kZGwgU0VUIHJhbmRvbV9wYWdlX2Nvc3QgVE8gJzIuMCc7 CisoNCByb3dzKQorXHBzZXQgZm9ybWF0IGFsaWduZWQKKy0tIFBlcm1pc3Npb24gY2hlY2s6 IHJldm9rZSBDT05ORUNUIG9uIGRhdGFiYXNlCitDUkVBVEUgUk9MRSByZWdyZXNzX2RiX2Rk bF9ub2FjY2VzczsKK1JFVk9LRSBDT05ORUNUIE9OIERBVEFCQVNFIHJlZ3Jlc3NfZGF0YWJh c2VfZGRsIEZST00gUFVCTElDOworU0VUIFJPTEUgcmVncmVzc19kYl9kZGxfbm9hY2Nlc3M7 CitTRUxFQ1QgKiBGUk9NIHBnX2dldF9kYXRhYmFzZV9kZGwoJ3JlZ3Jlc3NfZGF0YWJhc2Vf ZGRsJyk7ICAtLSBzaG91bGQgZmFpbAorRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Ig ZGF0YWJhc2UgcmVncmVzc19kYXRhYmFzZV9kZGwKK1JFU0VUIFJPTEU7CitHUkFOVCBDT05O RUNUIE9OIERBVEFCQVNFIHJlZ3Jlc3NfZGF0YWJhc2VfZGRsIFRPIFBVQkxJQzsKK0RST1Ag Uk9MRSByZWdyZXNzX2RiX2RkbF9ub2FjY2VzczsKK0RST1AgREFUQUJBU0UgcmVncmVzc19k YXRhYmFzZV9kZGw7CitEUk9QIEZVTkNUSU9OIGRkbF9maWx0ZXIodGV4dCk7CitEUk9QIFJP TEUgcmVncmVzc19kYXRkYmE7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFs bGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRl eCBmYWJhZWJmMmM3OC4uY2MzNjUzOTNiYjcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9z Y2hlZHVsZQpAQCAtMTMwLDcgKzEzMCw3IEBAIHRlc3Q6IHBhcnRpdGlvbl9tZXJnZSBwYXJ0 aXRpb25fc3BsaXQgcGFydGl0aW9uX2pvaW4gcGFydGl0aW9uX3BydW5lIHJlbG9wdGlvbnMK ICMgb2lkam9pbnMgaXMgcmVhZC1vbmx5LCB0aG91Z2gsIGFuZCBzaG91bGQgcnVuIGxhdGUg Zm9yIGJlc3QgY292ZXJhZ2UKIHRlc3Q6IG9pZGpvaW5zIGV2ZW50X3RyaWdnZXIKIAotdGVz dDogcm9sZV9kZGwgdGFibGVzcGFjZV9kZGwKK3Rlc3Q6IHJvbGVfZGRsIHRhYmxlc3BhY2Vf ZGRsIGRhdGFiYXNlX2RkbAogCiAjIGV2ZW50X3RyaWdnZXJfbG9naW4gY2Fubm90IHJ1biBj b25jdXJyZW50bHkgd2l0aCBhbnkgb3RoZXIgdGVzdHMgYmVjYXVzZQogIyBvbi1sb2dpbiBl dmVudCBoYW5kbGluZyBjb3VsZCBjYXRjaCBjb25uZWN0aW9uIG9mIGEgY29uY3VycmVudCB0 ZXN0LgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZGF0YWJhc2VfZGRsLnNx bCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2RhdGFiYXNlX2RkbC5zcWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjA5M2NjYzAwMjllCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZGF0YWJhc2VfZGRsLnNxbApAQCAtMCwwICsx LDY2IEBACistLQorLS0gVGVzdHMgZm9yIHBnX2dldF9kYXRhYmFzZV9kZGwoKQorLS0KKwor LS0gVG8gcHJvZHVjZSBzdGFibGUgcmVncmVzc2lvbiB0ZXN0IG91dHB1dCwgc3RyaXAgbG9j YWxlL2NvbGxhdGlvbiBkZXRhaWxzCistLSBmcm9tIHRoZSBEREwgb3V0cHV0LiAgVXNlcyBh IHBsYWluIFNRTCBmdW5jdGlvbiB0byBhdm9pZCBhIFBML3BnU1FMCistLSBkZXBlbmRlbmN5 LgorCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBkZGxfZmlsdGVyKGRkbF9pbnB1dCBU RVhUKQorUkVUVVJOUyBURVhUIExBTkdVQUdFIHNxbCBBUyAkJAorU0VMRUNUIHJlZ2V4cF9y ZXBsYWNlKAorICByZWdleHBfcmVwbGFjZSgKKyAgICByZWdleHBfcmVwbGFjZSgKKyAgICAg IHJlZ2V4cF9yZXBsYWNlKAorICAgICAgICByZWdleHBfcmVwbGFjZSgKKyAgICAgICAgICBk ZGxfaW5wdXQsCisgICAgICAgICAgJ1xzKlxtTE9DQUxFX1BST1ZJREVSXE1ccyo9XHMqKFsn JyJdP1teJyciXHNdK1snJyJdPyknLCAnJywgJ2dpJyksCisgICAgICAgICdccypMQ19DT0xM QVRFXHMqPVxzKihbJyciXSlbXicnIl0qXDEnLCAnJywgJ2dpJyksCisgICAgICAnXHMqTENf Q1RZUEVccyo9XHMqKFsnJyJdKVteJyciXSpcMScsICcnLCAnZ2knKSwKKyAgICAnXHMqXFMq TE9DQUxFXFMqXHMqPT9ccyooWycnIl0pW14nJyJdKlwxJywgJycsICdnaScpLAorICAnXHMq XFMqQ09MTEFUSU9OXFMqXHMqPT9ccyooWycnIl0pW14nJyJdKlwxJywgJycsICdnaScpCisk JDsKKworQ1JFQVRFIFJPTEUgcmVncmVzc19kYXRkYmE7CitDUkVBVEUgREFUQUJBU0UgcmVn cmVzc19kYXRhYmFzZV9kZGwKKyAgICBFTkNPRElORyB1dGY4IExDX0NPTExBVEUgIkMiIExD X0NUWVBFICJDIiBURU1QTEFURSB0ZW1wbGF0ZTAKKyAgICBPV05FUiByZWdyZXNzX2RhdGRi YTsKK0FMVEVSIERBVEFCQVNFIHJlZ3Jlc3NfZGF0YWJhc2VfZGRsIENPTk5FQ1RJT05fTElN SVQgMTIzOworQUxURVIgREFUQUJBU0UgcmVncmVzc19kYXRhYmFzZV9kZGwgU0VUIHJhbmRv bV9wYWdlX2Nvc3QgPSAyLjA7CitBTFRFUiBST0xFIHJlZ3Jlc3NfZGF0ZGJhIElOIERBVEFC QVNFIHJlZ3Jlc3NfZGF0YWJhc2VfZGRsIFNFVCByYW5kb21fcGFnZV9jb3N0ID0gMS4xOwor CistLSBEYXRhYmFzZSBkb2Vzbid0IGV4aXN0CitTRUxFQ1QgKiBGUk9NIHBnX2dldF9kYXRh YmFzZV9kZGwoJ3JlZ3Jlc3Npb25fZGF0YWJhc2UnKTsKKworLS0gTlVMTCB2YWx1ZQorU0VM RUNUICogRlJPTSBwZ19nZXRfZGF0YWJhc2VfZGRsKE5VTEwpOworCistLSBJbnZhbGlkIG9w dGlvbiB2YWx1ZSAoc2hvdWxkIGVycm9yKQorU0VMRUNUICogRlJPTSBwZ19nZXRfZGF0YWJh c2VfZGRsKCdyZWdyZXNzX2RhdGFiYXNlX2RkbCcsICdvd25lcicsICdpbnZhbGlkJyk7CisK Ky0tIER1cGxpY2F0ZSBvcHRpb24gKHNob3VsZCBlcnJvcikKK1NFTEVDVCAqIEZST00gcGdf Z2V0X2RhdGFiYXNlX2RkbCgncmVncmVzc19kYXRhYmFzZV9kZGwnLCAnb3duZXInLCAnZmFs c2UnLCAnb3duZXInLCAndHJ1ZScpOworCistLSBXaXRob3V0IG9wdGlvbnMKK1NFTEVDVCBk ZGxfZmlsdGVyKHBnX2dldF9kYXRhYmFzZV9kZGwpIEZST00gcGdfZ2V0X2RhdGFiYXNlX2Rk bCgncmVncmVzc19kYXRhYmFzZV9kZGwnKTsKKworLS0gV2l0aCBvd25lcgorU0VMRUNUIGRk bF9maWx0ZXIocGdfZ2V0X2RhdGFiYXNlX2RkbCkgRlJPTSBwZ19nZXRfZGF0YWJhc2VfZGRs KCdyZWdyZXNzX2RhdGFiYXNlX2RkbCcsICdvd25lcicsICd0cnVlJyk7CisKKy0tIFByZXR0 eS1wcmludGVkIG91dHB1dAorXHBzZXQgZm9ybWF0IHVuYWxpZ25lZAorU0VMRUNUIGRkbF9m aWx0ZXIocGdfZ2V0X2RhdGFiYXNlX2RkbCkgRlJPTSBwZ19nZXRfZGF0YWJhc2VfZGRsKCdy ZWdyZXNzX2RhdGFiYXNlX2RkbCcsICdwcmV0dHknLCAndHJ1ZScsICd0YWJsZXNwYWNlJywg J2ZhbHNlJyk7CitccHNldCBmb3JtYXQgYWxpZ25lZAorCistLSBQZXJtaXNzaW9uIGNoZWNr OiByZXZva2UgQ09OTkVDVCBvbiBkYXRhYmFzZQorQ1JFQVRFIFJPTEUgcmVncmVzc19kYl9k ZGxfbm9hY2Nlc3M7CitSRVZPS0UgQ09OTkVDVCBPTiBEQVRBQkFTRSByZWdyZXNzX2RhdGFi YXNlX2RkbCBGUk9NIFBVQkxJQzsKK1NFVCBST0xFIHJlZ3Jlc3NfZGJfZGRsX25vYWNjZXNz OworU0VMRUNUICogRlJPTSBwZ19nZXRfZGF0YWJhc2VfZGRsKCdyZWdyZXNzX2RhdGFiYXNl X2RkbCcpOyAgLS0gc2hvdWxkIGZhaWwKK1JFU0VUIFJPTEU7CitHUkFOVCBDT05ORUNUIE9O IERBVEFCQVNFIHJlZ3Jlc3NfZGF0YWJhc2VfZGRsIFRPIFBVQkxJQzsKK0RST1AgUk9MRSBy ZWdyZXNzX2RiX2RkbF9ub2FjY2VzczsKKworRFJPUCBEQVRBQkFTRSByZWdyZXNzX2RhdGFi YXNlX2RkbDsKK0RST1AgRlVOQ1RJT04gZGRsX2ZpbHRlcih0ZXh0KTsKK0RST1AgUk9MRSBy ZWdyZXNzX2RhdGRiYTsKLS0gCjIuNDMuMAoK --------------0aiYBQ0Vz1MQXyFMtlfveiSt--