Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1vHc8I-00CuZe-SG for pgpool-hackers@arkaria.postgresql.org; Sat, 08 Nov 2025 06:09:07 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1vHc8F-000qPG-74 for pgpool-hackers@arkaria.postgresql.org; Sat, 08 Nov 2025 06:09:03 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1vHKai-00DpiO-Ce for pgpool-hackers@lists.postgresql.org; Fri, 07 Nov 2025 11:25:16 +0000 Received: from mail-ed1-x531.google.com ([2a00:1450:4864:20::531]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vHKad-005tZ2-2O for pgpool-hackers@lists.postgresql.org; Fri, 07 Nov 2025 11:25:15 +0000 Received: by mail-ed1-x531.google.com with SMTP id 4fb4d7f45d1cf-640860f97b5so1079018a12.2 for ; Fri, 07 Nov 2025 03:25:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762514710; x=1763119510; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=cV4P4STNqsFuHQ0jwx2LYGmt276WDGUsRzHhkaw4UCA=; b=i+2NW9tLnGLLFXE47zMmcMalEH4wgfoollomP5roYtaeutD5h54fP8xzMwzYIZD2kn EwsSHvVyXYhMrkGPW4XEdzF3pJW7ypQSrpw2JTOpXANirZNh8+YsuxXyhAwju1kxsZFv 4anr4wYGzBgivkB6oStfCJ2O5vM/t7PhJNsF+q+9wBr8K4DZgwlum1s0X9jG925lOJTX lKuyWtZ1koCDt/eEGFL6nsIO8F9Y9J319sAoE5bZ0Uhj2lJYkB3Oam9S5KUMFZnhK569 nFl9mb7OjaarMoWRB8L0XBq5hXaKt4tu5ZDyIgbCwKsr/lECirDvB6Cf8DbjFSV7oFtr JtlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762514710; x=1763119510; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=cV4P4STNqsFuHQ0jwx2LYGmt276WDGUsRzHhkaw4UCA=; b=idCcNI5oKtVCy4HD0Kke5FhzNt1y/RlbT0VdTbEiZGcgqCNVIns24bRp8mMwFkwLO4 N5xXUYCyEh7Vx8FTQCvL6vOXBbK3O4LEduF8peJ8/8HseSl5g2X+al5LI7MSQeYn9/xs D296u59hhiLTbEaSVTaTFhun7PBJEoH2ldoMpe+fg+EIRSHRNve9zRSBQDwxfLRrHy0Q tTPgvkg4HgrWG/1lfgvX4VhwoxvuexVPwpAv1nx5i9tbDfQcC1qQVSjNEoKyLkAddBbK rU7Dn5T3LRV6Qp4kq4+CPgMB9y7Qef83SdVXzTto/YRd5YuDgF2QebuJ1xPrbRilej4X G+rg== X-Forwarded-Encrypted: i=1; AJvYcCWfMq6RshJDhA/4nG3nCfh6vkohF+qkfiuUHYE3ld5JTbapeLg0hGx6DFJjtRQZK3AHGnjA+nOyJ4DkhkhZJA==@lists.postgresql.org X-Gm-Message-State: AOJu0YyR7yZ9PfbzfynPkOIc6oayAvo9cDleT0KdS/27rAKiqlNq7+1v jlq0y0eKTL1xNap4eGfZiv3Xj6i2vfeipi1U8618nNiKThLEdA1nUObEZd10fhGBAJPJQBfqrkR nBGdo8s5n9pdlckt6DW63VJI+7K6Vp/s= X-Gm-Gg: ASbGncuZY/Cx/xeVdHpb8ZpCcOIyb/zlLjC4SZr+ivnqv3OhU378l+oDvsxcKZK5P+S iNL1APoG03EBqcJnNpnl31Q9j5ia6c+cy7WGvzyRK27jPN23QkOzJ9SVEX878qaY7F15UYyZ54g v1V2Fn2sXuY3yps3Mmtc115mWoAA/bZFvx1Tpc/oFaamUOruyGpRtHjTwWYZV89fkvYDEsl4xax gPTK78eg2Oux5VNF803mn0y91SyQSzbqzXWwLqkxYO+GoCRhvS73t9e/HQS X-Google-Smtp-Source: AGHT+IHjQPSWraicy5KHx6b6vt+qq+7yfX/7bEi0yxLaqCrT+QGXZ5IqiUXpxF9enobqeFEth42QyAPzOeG2L55bz6U= X-Received: by 2002:a05:6402:50d1:b0:641:27d8:ec72 with SMTP id 4fb4d7f45d1cf-6413eec4a4emr2707377a12.4.1762514709727; Fri, 07 Nov 2025 03:25:09 -0800 (PST) MIME-Version: 1.0 References: <20251104.204038.1590226740870853344.ishii@postgresql.org> In-Reply-To: <20251104.204038.1590226740870853344.ishii@postgresql.org> From: VASUKI M Date: Fri, 7 Nov 2025 16:55:28 +0530 X-Gm-Features: AWmQ_bngD9JGZDWlVbdCqS3XlIavEksnz3jaa4MBMBq8Qd93Ywr3O5EhgHu1SkU Message-ID: Subject: Re: Autofail back inconsistent To: Tatsuo Ishii , Bo Peng Cc: bharatdb@cdac.in, pgpool-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000002fd8580642ff6fe0" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002fd8580642ff6fe0 Content-Type: multipart/alternative; boundary="0000000000002fd8570642ff6fde" --0000000000002fd8570642ff6fde Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thank you for your reply Tatsuo. Overview: This enhancement ensures data consistency during standby node reattachment by automatically performing pg_rewind synchronization and WAL replay before allowing a node to rejoin the cluster. This automation reduces manual intervention, improves fault recovery speed, and enhances high availability= . Key Changes - Enhanced `failover.sh` and `follow_primary.sh` scripts to trigger automatic synchronization. - Added a new `resync.sh` script for safe data synchronization and reattach= . - Included sample configuration files for a 3-node cluster (1 primary + 2 standbys). - Improved recovery automation and minimized risk of inconsistent data after failover. Testing The feature has been successfully tested on a **3-node local cluster setup**: - 1 Primary PostgreSQL node - 2 Standby nodes managed through Pgpool-II - Verified automatic resync and reattach after simulated failover events. Patch Details The patch is based on the latest Pgpool-II master branch (commit `76a06e5af`). Please find the attached patch file: **0001-Add-Automatic-Resync-and-Reattach-feature-pg_rewind-.patch** I would appreciate it if the community could review the changes and provide feedback or suggestions for improvement. Thank you for your time and support. Best regards, **Vasuki M** CDAC Chennai Email: bharatdbpg@gmail.com On Tue, 4 Nov 2025 at 17:10, Tatsuo Ishii wrote: > > Hi Pgpool-II Community, > > Thank you for the proposal. > > > I=E2=80=99ve been working with PostgreSQL for quite some time, and whil= e managing > > backend servers with Pgpool-II, I noticed that there=E2=80=99s no built= -in data > > synchronization before standby nodes are reattached. > > > > To address this, I=E2=80=99ve developed a new enhancement for Pgpool-II= called > > *=E2=80=9CAutomatic > > Resync and Reattach=E2=80=9D*, aimed at improving high availability and= reducing > > manual intervention after node failures. > > > > This feature automatically performs: > > > > - > > > > *pg_rewind synchronization* and *WAL replay* for failed or lagging > > standby nodes > > - > > > > *Automatic reattachment* of standby nodes once they are safely > resynced > > > > This enhancement overcomes some limitations of existing features: > > > > - > > > > *Online Recovery* =E2=80=93 requires manual execution of pcp_recover= y_node > > - > > > > *Auto Failback* =E2=80=93 may reattach inconsistent nodes without > synchronization > > > > With *Auto Resync & Reattach*, Pgpool-II ensures data safety and > > consistency during failover recovery, providing a more robust and > > self-healing HA environment. > > > > I=E2=80=99ve created a dedicated GitHub repository with setup instructi= ons, > > configuration samples, and architecture diagrams here: > > https://github.com/BharatDBPG/pgpool2-auto-resync > > > > The repository includes: > > > > - > > > > Enhanced failover.sh and follow_primary.sh scripts (handling both > > primary and standby failures) > > - > > > > A new resync.sh script integrating pg_rewind + WAL replay > > - > > > > Sample configuration files for a *1 Primary + 2 Standby* setup > > > > I would love to receive feedback or suggestions from the community > > regarding possible improvements or integration ideas. > > > > I will be happy to share a patch if needed. > > Thank you for your time and support. > > > > Best regards, > > > > *Vasuki MCDAC,CHENNAI* > > > > https://github.com/BharatDBPG/pgpool2-auto-resync > > Yes, it would be nice to share a patch. As we follow the PostgreSQL > development model (not using GitHub), we are familiar with discussing > on a patch base. > > Best regards, > -- > Tatsuo Ishii > SRA OSS K.K. > English: http://www.sraoss.co.jp/index_en/ > Japanese:http://www.sraoss.co.jp > --0000000000002fd8570642ff6fde Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Thank you for your reply Tatsuo.

Overview:
This= enhancement ensures data consistency during standby node reattachment by a= utomatically performing pg_rewind synchronization and WAL replay before all= owing a node to rejoin the cluster. This automation reduces manual interven= tion, improves fault recovery speed, and enhances high availability.
Key Changes
- Enhanced `failover.sh` and `follow_primary.sh` scripts to= trigger automatic synchronization.
- Added a new `resync.sh` script for= safe data synchronization and reattach.
- Included sample configuration= files for a 3-node cluster (1 primary + 2 standbys).
- Improved recover= y automation and minimized risk of inconsistent data after failover.
=C2=A0Testing
The feature has been successfully tested on a **3-node lo= cal cluster setup**:
- 1 Primary PostgreSQL node
- 2 Standby nodes ma= naged through Pgpool-II
- Verified automatic resync and reattach after s= imulated failover events.

Patch Details
The patch is based on the= latest Pgpool-II master branch (commit `76a06e5af`).

Please find th= e attached patch file:
**0001-Add-Automatic-Resync-and-Reattach-feature-= pg_rewind-.patch**

I would appreciate it if the community could revi= ew the changes and provide feedback or suggestions for improvement.

= Thank you for your time and support.

Best regards, =C2=A0
**Vasuk= i M**=C2=A0
CDAC Chennai =C2=A0
Email: bharatdbpg@gmail.com

On Tue, 4= Nov 2025 at 17:10, Tatsuo Ishii <ishii@postgresql.org> wrote:
> Hi Pgpool-II Community,

Thank you for the proposal.

> I=E2=80=99ve been working with PostgreSQL for quite some time, and whi= le managing
> backend servers with Pgpool-II, I noticed that there=E2=80=99s no buil= t-in data
> synchronization before standby nodes are reattached.
>
> To address this, I=E2=80=99ve developed a new enhancement for Pgpool-I= I called
> *=E2=80=9CAutomatic
> Resync and Reattach=E2=80=9D*, aimed at improving high availability an= d reducing
> manual intervention after node failures.
>
> This feature automatically performs:
>
>=C2=A0 =C2=A0 -
>
>=C2=A0 =C2=A0 *pg_rewind synchronization* and *WAL replay* for failed o= r lagging
>=C2=A0 =C2=A0 standby nodes
>=C2=A0 =C2=A0 -
>
>=C2=A0 =C2=A0 *Automatic reattachment* of standby nodes once they are s= afely resynced
>
> This enhancement overcomes some limitations of existing features:
>
>=C2=A0 =C2=A0 -
>
>=C2=A0 =C2=A0 *Online Recovery* =E2=80=93 requires manual execution of = pcp_recovery_node
>=C2=A0 =C2=A0 -
>
>=C2=A0 =C2=A0 *Auto Failback* =E2=80=93 may reattach inconsistent nodes= without synchronization
>
> With *Auto Resync & Reattach*, Pgpool-II ensures data safety and > consistency during failover recovery, providing a more robust and
> self-healing HA environment.
>
> I=E2=80=99ve created a dedicated GitHub repository with setup instruct= ions,
> configuration samples, and architecture diagrams here:
>=C2=A0 https://github.com/BharatDBPG/pgpool2-au= to-resync
>
> The repository includes:
>
>=C2=A0 =C2=A0 -
>
>=C2=A0 =C2=A0 Enhanced failover.sh and follow_primary.sh scripts (handl= ing both
>=C2=A0 =C2=A0 primary and standby failures)
>=C2=A0 =C2=A0 -
>
>=C2=A0 =C2=A0 A new resync.sh script integrating pg_rewind + WAL replay=
>=C2=A0 =C2=A0 -
>
>=C2=A0 =C2=A0 Sample configuration files for a *1 Primary + 2 Standby* = setup
>
> I would love to receive feedback or suggestions from the community
> regarding possible improvements or integration ideas.
>
> I will be happy to share a patch if needed.
> Thank you for your time and support.
>
> Best regards,
>
> *Vasuki MCDAC,CHENNAI*
>
> https://github.com/BharatDBPG/pgpool2-auto-res= ync

Yes, it would be nice to share a patch. As we follow the PostgreSQL
development model (not using GitHub), we are familiar with discussing
on a patch base.

Best regards,
--
Tatsuo Ishii
SRA OSS K.K.
English: http://www.sraoss.co.jp/index_en/
Japanese:http://www.sraoss.co.jp
--0000000000002fd8570642ff6fde-- --0000000000002fd8580642ff6fe0 Content-Type: text/x-patch; charset="UTF-8"; name="0001-Add-Automatic-Resync-and-Reattach-feature-pg_rewind-.patch" Content-Disposition: attachment; filename="0001-Add-Automatic-Resync-and-Reattach-feature-pg_rewind-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhorqbs70 RnJvbSAxYTA4OTM5MDQ4ZDBhMzk3YmIxMDFjM2I2MTcwOGIxNmYyZGFiMDBhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXREQlBHIDxiaGFyYXRkYnBnQGdtYWlsLmNvbT4KRGF0 ZTogRnJpLCA3IE5vdiAyMDI1IDE2OjQyOjA2ICswNTMwClN1YmplY3Q6IFtQQVRDSF0gQWRkIEF1 dG9tYXRpYyBSZXN5bmMgYW5kIFJlYXR0YWNoIGZlYXR1cmUgKHBnX3Jld2luZCArIFdBTAogcmVw bGF5KQoKVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGVuaGFuY2VtZW50IHRvIFBncG9vbC1J SSB0aGF0IGVuc3VyZXMgZGF0YQpjb25zaXN0ZW5jeSBkdXJpbmcgbm9kZSByZWF0dGFjaG1lbnQg YnkgcGVyZm9ybWluZyBwZ19yZXdpbmQgc3luY2hyb25pemF0aW9uCmFuZCBXQUwgcmVwbGF5IGJl Zm9yZSByZWF0dGFjaGluZyBhIHN0YW5kYnkgbm9kZS4KCkNoYW5nZXMgaW5jbHVkZToKLSBFbmhh bmNlZCBmYWlsb3Zlci5zaCBhbmQgZm9sbG93X3ByaW1hcnkuc2ggc2NyaXB0cwotIE5ldyByZXN5 bmMuc2ggc2NyaXB0IGZvciBhdXRvbWF0aWMgc3luY2hyb25pemF0aW9uIGFuZCBzYWZlIHJlYXR0 YWNoCi0gTmV3IHNhbXBsZSBjb25maWd1cmF0aW9uIGZpbGVzIGZvciAxIHByaW1hcnkgYW5kIDIg c3RhbmRieSBzZXR1cAoKVGhpcyBlbmhhbmNlbWVudCBpbXByb3ZlcyBoaWdoIGF2YWlsYWJpbGl0 eSBieSBjb21iaW5pbmcgZGF0YSBzYWZldHkKd2l0aCBhdXRvbWF0aW9uLCByZWR1Y2luZyBtYW51 YWwgcmVjb3ZlcnkgYW5kIHJlYXR0YWNoIG9wZXJhdGlvbnMuCgpUZXN0ZWQgc3VjY2Vzc2Z1bGx5 IG9uIGEgMy1ub2RlICgxIHByaW1hcnkgKyAyIHN0YW5kYnkpIGxvY2FsIGNsdXN0ZXIuCgpTaWdu ZWQtb2ZmLWJ5OiBWYXN1a2kgTSA8YmhhcmF0ZGJwZ0BnbWFpbC5jb20+ClNpZ25lZC1vZmYtYnk6 IEJoYXJhdERCUEcgPGJoYXJhdGRicGdAZ21haWwuY29tPgotLS0KIHNyYy9zYW1wbGUvUG9zdGdy ZXNxbF9tYWluLmNvbmYuc2FtcGxlICAgICAgfCAgMjUgKysrCiBzcmMvc2FtcGxlL3BjcC5jb25m LnNhbXBsZSAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvc2FtcGxlL3BnX2hiYS5jb25m LnNhbXBsZSAgICAgICAgICAgICAgIHwgIDEzICsrCiBzcmMvc2FtcGxlL3Bvb2xfaGJhLmNvbmYu c2FtcGxlICAgICAgICAgICAgIHwgICA0ICsKIHNyYy9zYW1wbGUvc2NyaXB0cy9mYWlsb3Zlci5z aC5zYW1wbGUgICAgICAgfCAxMDIgKysrLS0tLS0tLS0tCiBzcmMvc2FtcGxlL3NjcmlwdHMvZm9s bG93X3ByaW1hcnkuc2guc2FtcGxlIHwgMTYzICsrKystLS0tLS0tLS0tLS0tLS0tCiBzcmMvc2Ft cGxlL3NjcmlwdHMvcmVjb3Zlcnkuc2guc2FtcGxlICAgICAgIHwgIDg3ICsrKysrKysrKysrCiBz cmMvc2FtcGxlL3NjcmlwdHMvcmVzeW5jLnNoICAgICAgICAgICAgICAgIHwgMTU1ICsrKysrKysr KysrKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgMzQwIGluc2VydGlvbnMoKyksIDIxMSBkZWxl dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvc2FtcGxlL1Bvc3RncmVzcWxfbWFpbi5j b25mLnNhbXBsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9zYW1wbGUvcGdfaGJhLmNvbmYuc2Ft cGxlCiBjcmVhdGUgbW9kZSAxMDA3NTUgc3JjL3NhbXBsZS9zY3JpcHRzL3JlY292ZXJ5LnNoLnNh bXBsZQogY3JlYXRlIG1vZGUgMTAwNzU1IHNyYy9zYW1wbGUvc2NyaXB0cy9yZXN5bmMuc2gKCmRp ZmYgLS1naXQgYS9zcmMvc2FtcGxlL1Bvc3RncmVzcWxfbWFpbi5jb25mLnNhbXBsZSBiL3NyYy9z YW1wbGUvUG9zdGdyZXNxbF9tYWluLmNvbmYuc2FtcGxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMC4uNmUyOGI4N2JhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3NhbXBsZS9Q b3N0Z3Jlc3FsX21haW4uY29uZi5zYW1wbGUKQEAgLTAsMCArMSwyNSBAQAorIyBQb3N0Z3JlU1FM IENvbmZpZ3VyYXRpb24gKFNhbXBsZSkKKyMgU2FmZSB0byBwdWJsaXNoIOKAkyBwYXRocywgcG9y dHMsIGFuZCBjcmVkZW50aWFscyByZW1vdmVkCisKKyNjb25uZWN0aW9uIHNldHRpbmdzCisKK2xp c3Rlbl9hZGRyZXNzZXMgPSAnKicKK3BvcnQ9NTQzMgorbWF4X2Nvbm5lY3Rpb25zID0gMTAwCitw YXNzd29yZF9lbmNyeXB0aW9uID0gbWQ1CisjcmVwbGljYXRpb24gc2V0dGluZ3MKK3dhbF9sZXZl bCA9IHJlcGxpY2EKK3dhbF9rZWVwX3NpemU9ICcxR0InCittYXhfd2FsX3NlbmRlcnMgPSAxMAor YXJjaGl2ZV9tb2RlID0gb24KK2FyY2hpdmVfY29tbWFuZCA9ICdjcCAlcCAvdmFyL2xpYi9wb3N0 Z3Jlc3FsLzE4L2FyY2hpdmVfd2FsLyVmJworI2hvdCBzdGFuZGJ5IHNldHRpbmdzCitob3Rfc3Rh bmRieSA9IG9uCisjbG9nZ2luZyBzZXR0aW5ncworbG9nX2Rlc3RpbmF0aW9uID0gJ3N0ZGVycicK K2xvZ2dpbmdfY29sbGVjdG9yID0gb24KK2xvZ19kaXJlY3RvcnkgPSAnL3Zhci9sb2cvcG9zdGdy ZXNxbCcKK2xvZ19maWxlbmFtZSA9ICdwb3N0Z3Jlc3FsLTE4LW1haW4ubG9nJworbG9nX21pbl9t ZXNzYWdlcyA9IGluZm8KKyMgRGF0YSBEaXJlY3RvcnkgKGV4YW1wbGUgb25seSwgYWRqdXN0IGlu IHByb2R1Y3Rpb24pCisjIGRhdGFfZGlyZWN0b3J5ID0gJy92YXIvbGliL3Bvc3RncmVzcWwvMTgv bWFpbicKZGlmZiAtLWdpdCBhL3NyYy9zYW1wbGUvcGNwLmNvbmYuc2FtcGxlIGIvc3JjL3NhbXBs ZS9wY3AuY29uZi5zYW1wbGUKaW5kZXggN2UzZjYyMDJmLi4zZmVjZDAyMzQgMTAwNjQ0Ci0tLSBh L3NyYy9zYW1wbGUvcGNwLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9zYW1wbGUvcGNwLmNvbmYuc2Ft cGxlCkBAIC0yNSw0ICsyNSw0IEBACiAjIExpbmVzIGJlZ2lubmluZyB3aXRoICcjJyAocG91bmQp IGFyZSBjb21tZW50cyBhbmQgd2lsbAogIyBiZSBpZ25vcmVkLiBBZ2Fpbiwgbm8gc3BhY2VzIG9y IHRhYnMgYWxsb3dlZCBiZWZvcmUgJyMnLgogCi0jIFVTRVJJRDpNRDVQQVNTV0QKKyMgVVNFUklE Ok1ENVBBU1NXRFtwbGFpbl0KZGlmZiAtLWdpdCBhL3NyYy9zYW1wbGUvcGdfaGJhLmNvbmYuc2Ft cGxlIGIvc3JjL3NhbXBsZS9wZ19oYmEuY29uZi5zYW1wbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwLi5hYjA1ZDE0OTUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvc2FtcGxl L3BnX2hiYS5jb25mLnNhbXBsZQpAQCAtMCwwICsxLDEzIEBACisjY2hhbmdlIHNjcmFtLXNoYSB0 byBtZDUgdG8gY29ubmVjdCB3aXRoICBwZ3Bvb2wKKyMgUG9zdGdyZVNRTCBDbGllbnQgQXV0aGVu dGljYXRpb24gQ29uZmlndXJhdGlvbiBGaWxlIChTYW1wbGUpCisjIFNhZmUgdmVyc2lvbiBmb3Ig R2l0SHViIChyZW1vdmUgSVBzIG9yIHByaXZhdGUgaW5mbykKKworIyBUWVBFICBEQVRBQkFTRSAg ICAgICAgVVNFUiAgICAgICAgICAgIEFERFJFU1MgICAgICAgICAgICAgICAgIE1FVEhPRAorbG9j YWwgICBhbGwgICAgICAgICAgICAgYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRydXN0Citob3N0ICAgIGFsbCAgICAgICAgICAgICBhbGwgICAgICAgICAgICAgMTI3LjAu MC4xLzMyICAgICAgICAgICAgbWQ1Citob3N0ICAgIHJlcGxpY2F0aW9uICAgICByZXBsICAgICAg ICAgICAgMTI3LjAuMC4xLzMyICAgICAgICAgICAgbWQ1Citob3N0ICAgIGFsbCAgICAgICAgICAg ICBhbGwgICAgICAgICAgICAgOjoxLzEyOCAgICAgICAgICAgICAgICAgbWQ1CisjYWRkIGVudHJ5 IGZvciBob3N0IGFuZCByZXBsaWNhdGlvbiB3aXRoIHlvdXIgdXNlcgorI2Fzc3VtaW5nIHVzZXI6 cG9zdGdyZXMKK2hvc3QgICAgcmVwbGljYXRpb24gICAgIHBvc3RncmVzICAgICAgICAxMjcuMC4w LjEvMzIgICAgICAgICAgICBtZDUKK2hvc3QgICAgYWxsICAgICAgICAgICAgIHBvc3RncmVzICAg ICAgICAxMjcuMC4wLjEvMzIgICAgICAgICAgICBtZDUKZGlmZiAtLWdpdCBhL3NyYy9zYW1wbGUv cG9vbF9oYmEuY29uZi5zYW1wbGUgYi9zcmMvc2FtcGxlL3Bvb2xfaGJhLmNvbmYuc2FtcGxlCmlu ZGV4IGQwYjlkMTI4My4uYTA1Nzg2NDEzIDEwMDY0NAotLS0gYS9zcmMvc2FtcGxlL3Bvb2xfaGJh LmNvbmYuc2FtcGxlCisrKyBiL3NyYy9zYW1wbGUvcG9vbF9oYmEuY29uZi5zYW1wbGUKQEAgLTcw LDMgKzcwLDcgQEAgbG9jYWwgICBhbGwgICAgICAgICBhbGwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdHJ1c3QKICMgSVB2NCBsb2NhbCBjb25uZWN0aW9uczoKIGhvc3QgICAgYWxsICAg ICAgICAgYWxsICAgICAgICAgMTI3LjAuMC4xLzMyICAgICAgICAgIHRydXN0CiBob3N0ICAgIGFs bCAgICAgICAgIGFsbCAgICAgICAgIDo6MS8xMjggICAgICAgICAgICAgICB0cnVzdAorIyBUWVBF ICBEQVRBQkFTRSAgICAgICAgVVNFUiAgICAgICAgICAgIEFERFJFU1MgICAgICAgICAgICAgICAg IE1FVEhPRAoraG9zdCAgICBhbGwgICAgICAgICAgICAgYWxsICAgICAgICAgICAgIDAuMC4wLjAv MCAgICAgICAgICAgICAgIG1kNQoraG9zdCAgICByZXBsaWNhdGlvbiAgICAgcmVwbCAgICAgICAg ICAgIDAuMC4wLjAvMCAgICAgICAgICAgICAgIG1kNQoraG9zdAlyZXBsaWNhdGlvbglwb3N0Z3Jl cwkxMjcuMC4wLjEvMzIJCW1kNQpkaWZmIC0tZ2l0IGEvc3JjL3NhbXBsZS9zY3JpcHRzL2ZhaWxv dmVyLnNoLnNhbXBsZSBiL3NyYy9zYW1wbGUvc2NyaXB0cy9mYWlsb3Zlci5zaC5zYW1wbGUKaW5k ZXggMDE4NzhkN2U1Li4yOGRiNGJlZjIgMTAwNzU1Ci0tLSBhL3NyYy9zYW1wbGUvc2NyaXB0cy9m YWlsb3Zlci5zaC5zYW1wbGUKKysrIGIvc3JjL3NhbXBsZS9zY3JpcHRzL2ZhaWxvdmVyLnNoLnNh bXBsZQpAQCAtMSw4NCArMSwzMCBAQAogIyEvYmluL2Jhc2gKLSMgVGhpcyBzY3JpcHQgaXMgcnVu IGJ5IGZhaWxvdmVyX2NvbW1hbmQuCi0KLXNldCAtbyB4dHJhY2UKLQotIyBTcGVjaWFsIHZhbHVl czoKLSMgMSkgICVkID0gZmFpbGVkIG5vZGUgaWQKLSMgMikgICVoID0gZmFpbGVkIG5vZGUgaG9z dG5hbWUKLSMgMykgICVwID0gZmFpbGVkIG5vZGUgcG9ydCBudW1iZXIKLSMgNCkgICVEID0gZmFp bGVkIG5vZGUgZGF0YWJhc2UgY2x1c3RlciBwYXRoCi0jIDUpICAlbSA9IG5ldyBtYWluIG5vZGUg aWQKLSMgNikgICVIID0gbmV3IG1haW4gbm9kZSBob3N0bmFtZQotIyA3KSAgJU0gPSBvbGQgbWFp biBub2RlIGlkCi0jIDgpICAlUCA9IG9sZCBwcmltYXJ5IG5vZGUgaWQKLSMgOSkgICVyID0gbmV3 IG1haW4gcG9ydCBudW1iZXIKLSMgMTApICVSID0gbmV3IG1haW4gZGF0YWJhc2UgY2x1c3RlciBw YXRoCi0jIDExKSAlTiA9IG9sZCBwcmltYXJ5IG5vZGUgaG9zdG5hbWUKLSMgMTIpICVTID0gb2xk IHByaW1hcnkgbm9kZSBwb3J0IG51bWJlcgotIyAxMykgJSUgPSAnJScgY2hhcmFjdGVyCisjIGZh aWxvdmVyLnNoIOKAlCBQZ3Bvb2wtSUkgZmFpbG92ZXIgaGFuZGxpbmcgc2NyaXB0CisjIEFyZ3M6 ICVkICVoICVwICVEICVtICVIICVNICVQCiAKIEZBSUxFRF9OT0RFX0lEPSIkMSIKLUZBSUxFRF9O T0RFX0hPU1Q9IiQyIgotRkFJTEVEX05PREVfUE9SVD0iJDMiCi1GQUlMRURfTk9ERV9QR0RBVEE9 IiQ0IgotTkVXX01BSU5fTk9ERV9JRD0iJDUiCi1ORVdfTUFJTl9OT0RFX0hPU1Q9IiQ2IgotT0xE X01BSU5fTk9ERV9JRD0iJDciCi1PTERfUFJJTUFSWV9OT0RFX0lEPSIkOCIKLU5FV19NQUlOX05P REVfUE9SVD0iJDkiCi1ORVdfTUFJTl9OT0RFX1BHREFUQT0iJHsxMH0iCi1PTERfUFJJTUFSWV9O T0RFX0hPU1Q9IiR7MTF9IgotT0xEX1BSSU1BUllfTk9ERV9QT1JUPSIkezEyfSIKLQotUEdIT01F PS91c3IvcGdzcWwtMTcKLVJFUExfU0xPVF9OQU1FPSQoZWNobyAke0ZBSUxFRF9OT0RFX0hPU1Qs LH0gfCB0ciAtLSAtLiBfKQotUE9TVEdSRVNRTF9TVEFSVFVQX1VTRVI9cG9zdGdyZXMKLVNTSF9L RVlfRklMRT1pZF9yc2FfcGdwb29sCi1TU0hfT1BUSU9OUz0iLW8gU3RyaWN0SG9zdEtleUNoZWNr aW5nPW5vIC1vIFVzZXJLbm93bkhvc3RzRmlsZT0vZGV2L251bGwgLWkgfi8uc3NoLyR7U1NIX0tF WV9GSUxFfSIKLQotCi1lY2hvIGZhaWxvdmVyLnNoOiBzdGFydDogZmFpbGVkX25vZGVfaWQ9JEZB SUxFRF9OT0RFX0lEIGZhaWxlZF9ob3N0PSRGQUlMRURfTk9ERV9IT1NUIFwKLSAgICBvbGRfcHJp bWFyeV9ub2RlX2lkPSRPTERfUFJJTUFSWV9OT0RFX0lEIG5ld19tYWluX25vZGVfaWQ9JE5FV19N QUlOX05PREVfSUQgbmV3X21haW5faG9zdD0kTkVXX01BSU5fTk9ERV9IT1NUCi0KLSMjIElmIHRo ZXJlJ3Mgbm8gbWFpbiBub2RlIGFueW1vcmUsIHNraXAgZmFpbG92ZXIuCi1pZiBbICRORVdfTUFJ Tl9OT0RFX0lEIC1sdCAwIF07IHRoZW4KLSAgICBlY2hvIGZhaWxvdmVyLnNoOiBBbGwgbm9kZXMg YXJlIGRvd24uIFNraXBwaW5nIGZhaWxvdmVyLgotICAgIGV4aXQgMAotZmkKLQotIyMgVGVzdCBw YXNzd29yZGxlc3MgU1NICi1zc2ggLVQgJHtTU0hfT1BUSU9OU30gJHtQT1NUR1JFU1FMX1NUQVJU VVBfVVNFUn1AJHtORVdfTUFJTl9OT0RFX0hPU1R9IGxzIC90bXAgPiAvZGV2L251bGwKLQotaWYg WyAkPyAtbmUgMCBdOyB0aGVuCi0gICAgZWNobyBmYWlsb3Zlci5zaDogcGFzc3dvcmRsZXNzIFNT SCB0byAke1BPU1RHUkVTUUxfU1RBUlRVUF9VU0VSfUAke05FV19NQUlOX05PREVfSE9TVH0gZmFp bGVkLiBQbGVhc2Ugc2V0dXAgcGFzc3dvcmRsZXNzIFNTSC4KLSAgICBleGl0IDEKLWZpCi0KLSMj IElmIFN0YW5kYnkgbm9kZSBpcyBkb3duLCBza2lwIGZhaWxvdmVyLgotaWYgWyAkT0xEX1BSSU1B UllfTk9ERV9JRCAhPSAiLTEiIC1hICRGQUlMRURfTk9ERV9JRCAhPSAkT0xEX1BSSU1BUllfTk9E RV9JRCBdOyB0aGVuCi0KLSAgICAjIElmIFN0YW5kYnkgbm9kZSBpcyBkb3duLCBkcm9wIHJlcGxp Y2F0aW9uIHNsb3QuCi0gICAgJHtQR0hPTUV9L2Jpbi9wc3FsIC1oICR7T0xEX1BSSU1BUllfTk9E RV9IT1NUfSAtcCAke09MRF9QUklNQVJZX05PREVfUE9SVH0gcG9zdGdyZXMgXAotICAgICAgICAt YyAiU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgnJHtSRVBMX1NMT1RfTkFNRX0nKTsi ICA+L2Rldi9udWxsIDI+JjEKLQotICAgIGlmIFsgJD8gLW5lIDAgXTsgdGhlbgotICAgICAgICBl Y2hvIEVSUk9SOiBmYWlsb3Zlci5zaDogZHJvcCByZXBsaWNhdGlvbiBzbG90IFwiJHtSRVBMX1NM T1RfTkFNRX1cIiBmYWlsZWQuIFlvdSBtYXkgbmVlZCB0byBkcm9wIHJlcGxpY2F0aW9uIHNsb3Qg bWFudWFsbHkuCi0gICAgZmkKLQotICAgIGVjaG8gZmFpbG92ZXIuc2g6IGVuZDogc3RhbmRieSBu b2RlIGlzIGRvd24uIFNraXBwaW5nIGZhaWxvdmVyLgotICAgIGV4aXQgMAotZmkKLQotIyMgUHJv bW90ZSBTdGFuZGJ5IG5vZGUuCi1lY2hvIGZhaWxvdmVyLnNoOiBwcmltYXJ5IG5vZGUgaXMgZG93 biwgcHJvbW90ZSBuZXdfbWFpbl9ub2RlX2lkPSRORVdfTUFJTl9OT0RFX0lEIG9uICR7TkVXX01B SU5fTk9ERV9IT1NUfS4KLQotc3NoIC1UICR7U1NIX09QVElPTlN9ICR7UE9TVEdSRVNRTF9TVEFS VFVQX1VTRVJ9QCR7TkVXX01BSU5fTk9ERV9IT1NUfSAke1BHSE9NRX0vYmluL3BnX2N0bCAtRCAk e05FV19NQUlOX05PREVfUEdEQVRBfSAtdyBwcm9tb3RlCi0KLWlmIFsgJD8gLW5lIDAgXTsgdGhl bgotICAgIGVjaG8gRVJST1I6IGZhaWxvdmVyLnNoOiBwcm9tb3RlIGZhaWxlZAotICAgIGV4aXQg MQorRkFJTEVEX0hPU1Q9IiQyIgorRkFJTEVEX1BPUlQ9IiQzIgorRkFJTEVEX0RBVEE9IiQ0Igor TkVXX1BSSU1BUllfTk9ERV9JRD0iJDUiCitORVdfUFJJTUFSWV9IT1NUPSIkNiIKK05FV19QUklN QVJZX1BPUlQ9IiQ3IgorCisjY2hhbmdlIHRoaXMgYXMgcGVyIHlvdXIgcmVxdWlyZW1lbnQKK1BH X0JJTj0iL3Vzci9saWIvcG9zdGdyZXNxbC8xOC9iaW4iCitQR0RBVEE9Ii92YXIvbGliL3Bvc3Rn cmVzcWwvMTgvbWFpbiIKK0xPRz0iL3Zhci9sb2cvcGdwb29sL2ZhaWxvdmVyLmxvZyIKKworbWtk aXIgLXAgL3Zhci9sb2cvcGdwb29sCitlY2hvICIkKGRhdGUgJyslRiAlVCcpIEZhaWxvdmVyIHRy aWdnZXJlZDogZmFpbGVkX25vZGU9JEZBSUxFRF9OT0RFX0lEIGhvc3Q9JEZBSUxFRF9IT1NUOiRG QUlMRURfUE9SVCBuZXdfcHJpbWFyeT0kTkVXX1BSSU1BUllfSE9TVDokTkVXX1BSSU1BUllfUE9S VCIgPj4gIiRMT0ciCisKKyMgMe+4j+KDoyBJZiB0aGUgZmFpbGVkIG5vZGUgd2FzIHRoZSBvbGQg cHJpbWFyeQoraWYgWyAiJEZBSUxFRF9OT0RFX0lEIiAhPSAiJE5FV19QUklNQVJZX05PREVfSUQi IF07IHRoZW4KKyAgICBlY2hvICIkKGRhdGUgJyslRiAlVCcpIFByb21vdGluZyBuZXcgcHJpbWFy eSBhdCAkTkVXX1BSSU1BUllfSE9TVDokTkVXX1BSSU1BUllfUE9SVC4uLiIgPj4gIiRMT0ciCisg ICAgc3VkbyAtdSBwb3N0Z3JlcyAiJFBHX0JJTi9wZ19jdGwiIHByb21vdGUgLUQgIiRQR0RBVEEi ID4+ICIkTE9HIiAyPiYxCisgICAgZWNobyAiJChkYXRlICcrJUYgJVQnKSBQcm9tb3Rpb24gY29t cGxldGVkIGZvciBub2RlX2lkPSRORVdfUFJJTUFSWV9OT0RFX0lEIiA+PiAiJExPRyIKK2Vsc2UK KyAgICBlY2hvICIkKGRhdGUgJyslRiAlVCcpIFN0YW5kYnkgbm9kZSAkRkFJTEVEX0hPU1Q6JEZB SUxFRF9QT1JUIGZhaWxlZC4gTm8gcHJvbW90aW9uIHJlcXVpcmVkLiIgPj4gIiRMT0ciCiBmaQog Ci1lY2hvIGZhaWxvdmVyLnNoOiBlbmQ6IG5ld19tYWluX25vZGVfaWQ9JE5FV19NQUlOX05PREVf SUQgb24gJHtORVdfTUFJTl9OT0RFX0hPU1R9IHdhcyBzdWNjZXNzZnVsbHkgcHJvbW90ZWQgdG8g cHJpbWFyeQogZXhpdCAwCmRpZmYgLS1naXQgYS9zcmMvc2FtcGxlL3NjcmlwdHMvZm9sbG93X3By aW1hcnkuc2guc2FtcGxlIGIvc3JjL3NhbXBsZS9zY3JpcHRzL2ZvbGxvd19wcmltYXJ5LnNoLnNh bXBsZQppbmRleCBlYjgzYjcxMjMuLjMyZDRlZjFlYSAxMDA3NTUKLS0tIGEvc3JjL3NhbXBsZS9z Y3JpcHRzL2ZvbGxvd19wcmltYXJ5LnNoLnNhbXBsZQorKysgYi9zcmMvc2FtcGxlL3NjcmlwdHMv Zm9sbG93X3ByaW1hcnkuc2guc2FtcGxlCkBAIC0xLDEzNyArMSwzNiBAQAogIyEvYmluL2Jhc2gK LSMgVGhpcyBzY3JpcHQgaXMgcnVuIGFmdGVyIGZhaWxvdmVyX2NvbW1hbmQgdG8gc3luY2hyb25p emUgdGhlIFN0YW5kYnkgd2l0aCB0aGUgbmV3IFByaW1hcnkuCi0KLXNldCAtbyB4dHJhY2UKLQot IyBTcGVjaWFsIHZhbHVlczoKLSMgMSkgICVkID0gbm9kZSBpZAotIyAyKSAgJWggPSBob3N0bmFt ZQotIyAzKSAgJXAgPSBwb3J0IG51bWJlcgotIyA0KSAgJUQgPSBub2RlIGRhdGFiYXNlIGNsdXN0 ZXIgcGF0aAotIyA1KSAgJW0gPSBuZXcgcHJpbWFyeSBub2RlIGlkCi0jIDYpICAlSCA9IG5ldyBw cmltYXJ5IG5vZGUgaG9zdG5hbWUKLSMgNykgICVNID0gb2xkIG1haW4gbm9kZSBpZAotIyA4KSAg JVAgPSBvbGQgcHJpbWFyeSBub2RlIGlkCi0jIDkpICAlciA9IG5ldyBwcmltYXJ5IHBvcnQgbnVt YmVyCi0jIDEwKSAlUiA9IG5ldyBwcmltYXJ5IGRhdGFiYXNlIGNsdXN0ZXIgcGF0aAotIyAxMSkg JU4gPSBvbGQgcHJpbWFyeSBub2RlIGhvc3RuYW1lCi0jIDEyKSAlUyA9IG9sZCBwcmltYXJ5IG5v ZGUgcG9ydCBudW1iZXIKLSMgMTMpICUlID0gJyUnIGNoYXJhY3RlcgotCi1OT0RFX0lEPSIkMSIK LU5PREVfSE9TVD0iJDIiCi1OT0RFX1BPUlQ9IiQzIgotTk9ERV9QR0RBVEE9IiQ0IgotTkVXX1BS SU1BUllfTk9ERV9JRD0iJDUiCi1ORVdfUFJJTUFSWV9OT0RFX0hPU1Q9IiQ2IgotT0xEX01BSU5f Tk9ERV9JRD0iJDciCi1PTERfUFJJTUFSWV9OT0RFX0lEPSIkOCIKLU5FV19QUklNQVJZX05PREVf UE9SVD0iJDkiCi1ORVdfUFJJTUFSWV9OT0RFX1BHREFUQT0iJHsxMH0iCi0KLVBHSE9NRT0vdXNy L3Bnc3FsLTE3Ci1SRVBMVVNFUj1yZXBsCi1QQ1BfVVNFUj1wZ3Bvb2wKLVBHUE9PTF9QQVRIPS91 c3IvYmluCi1QQ1BfUE9SVD05ODk4Ci1SRVBMX1NMT1RfTkFNRT0kKGVjaG8gJHtOT0RFX0hPU1Qs LH0gfCB0ciAtLSAtLiBfKQotUE9TVEdSRVNRTF9TVEFSVFVQX1VTRVI9cG9zdGdyZXMKLVNTSF9L RVlfRklMRT1pZF9yc2FfcGdwb29sCi1TU0hfT1BUSU9OUz0iLW8gU3RyaWN0SG9zdEtleUNoZWNr aW5nPW5vIC1vIFVzZXJLbm93bkhvc3RzRmlsZT0vZGV2L251bGwgLWkgfi8uc3NoLyR7U1NIX0tF WV9GSUxFfSIKLQotZWNobyBmb2xsb3dfcHJpbWFyeS5zaDogc3RhcnQ6IFN0YW5kYnkgbm9kZSAk e05PREVfSUR9Ci0KLSMgQ2hlY2sgdGhlIGNvbm5lY3Rpb24gc3RhdHVzIG9mIFN0YW5kYnkKLSR7 UEdIT01FfS9iaW4vcGdfaXNyZWFkeSAtaCAke05PREVfSE9TVH0gLXAgJHtOT0RFX1BPUlR9ID4g L2Rldi9udWxsIDI+JjEKLQotaWYgWyAkPyAtbmUgMCBdOyB0aGVuCi0gICAgZWNobyBmb2xsb3df cHJpbWFyeS5zaDogbm9kZV9pZD0ke05PREVfSUR9IGlzIG5vdCBydW5uaW5nLiBza2lwcGluZyBm b2xsb3cgcHJpbWFyeSBjb21tYW5kCi0gICAgZXhpdCAwCi1maQotCi0jIFRlc3QgcGFzc3dvcmRs ZXNzIFNTSAotc3NoIC1UICR7U1NIX09QVElPTlN9ICR7UE9TVEdSRVNRTF9TVEFSVFVQX1VTRVJ9 QCR7TkVXX1BSSU1BUllfTk9ERV9IT1NUfSBscyAvdG1wID4gL2Rldi9udWxsCi0KLWlmIFsgJD8g LW5lIDAgXTsgdGhlbgotICAgIGVjaG8gZm9sbG93X21haW4uc2g6IHBhc3N3b3JkbGVzcyBTU0gg dG8gJHtQT1NUR1JFU1FMX1NUQVJUVVBfVVNFUn1AJHtORVdfUFJJTUFSWV9OT0RFX0hPU1R9IGZh aWxlZC4gUGxlYXNlIHNldHVwIHBhc3N3b3JkbGVzcyBTU0guCi0gICAgZXhpdCAxCi1maQotCi0j IEdldCBQb3N0Z3JlU1FMIG1ham9yIHZlcnNpb24KLVBHVkVSU0lPTj1gJHtQR0hPTUV9L2Jpbi9w c3FsIC1WIHwgYXdrICd7cHJpbnQgJDN9JyB8IHNlZCAncy9cLi4qLy8nIHwgc2VkICdzL1woWzAt OV0qXClbYS16QS1aXS4qL1wxLydgCi0KLWlmIFsgJFBHVkVSU0lPTiAtZ2UgMTIgXTsgdGhlbgot ICAgIFJFQ09WRVJZQ09ORj0ke05PREVfUEdEQVRBfS9teXJlY292ZXJ5LmNvbmYKLWVsc2UKLSAg ICBSRUNPVkVSWUNPTkY9JHtOT0RFX1BHREFUQX0vcmVjb3ZlcnkuY29uZgotZmkKLQotIyBTeW5j aHJvbml6ZSBTdGFuZGJ5IHdpdGggdGhlIG5ldyBQcmltYXJ5LgotZWNobyBmb2xsb3dfcHJpbWFy eS5zaDogcGdfcmV3aW5kIGZvciBub2RlICR7Tk9ERV9JRH0KLQotIyBSdW4gY2hlY2twb2ludCBj b21tYW5kIHRvIHVwZGF0ZSBjb250cm9sIGZpbGUgYmVmb3JlIHJ1bm5pbmcgcGdfcmV3aW5kCi0k e1BHSE9NRX0vYmluL3BzcWwgLWggJHtORVdfUFJJTUFSWV9OT0RFX0hPU1R9IC1wICR7TkVXX1BS SU1BUllfTk9ERV9QT1JUfSBwb3N0Z3JlcyAtYyAiY2hlY2twb2ludDsiCi0KLSMgQ3JlYXRlIHJl cGxpY2F0aW9uIHNsb3QgIiR7UkVQTF9TTE9UX05BTUV9IgotJHtQR0hPTUV9L2Jpbi9wc3FsIC1o ICR7TkVXX1BSSU1BUllfTk9ERV9IT1NUfSAtcCAke05FV19QUklNQVJZX05PREVfUE9SVH0gcG9z dGdyZXMgXAotICAgIC1jICJTRUxFQ1QgcGdfY3JlYXRlX3BoeXNpY2FsX3JlcGxpY2F0aW9uX3Ns b3QoJyR7UkVQTF9TTE9UX05BTUV9Jyk7IiAgPi9kZXYvbnVsbCAyPiYxCi0KLWlmIFsgJD8gLW5l IDAgXTsgdGhlbgotICAgIGVjaG8gZm9sbG93X3ByaW1hcnkuc2g6IGNyZWF0ZSByZXBsaWNhdGlv biBzbG90IFwiJHtSRVBMX1NMT1RfTkFNRX1cIiBmYWlsZWQuIFlvdSBtYXkgbmVlZCB0byBjcmVh dGUgcmVwbGljYXRpb24gc2xvdCBtYW51YWxseS4KLWZpCi0KLXNzaCAtVCAke1NTSF9PUFRJT05T fSAke1BPU1RHUkVTUUxfU1RBUlRVUF9VU0VSfUAke05PREVfSE9TVH0gIgotCi0gICAgc2V0IC1v IGVycmV4aXQKLQotICAgICR7UEdIT01FfS9iaW4vcGdfY3RsIC13IC1tIGYgLUQgJHtOT0RFX1BH REFUQX0gc3RvcAotCi0gICAgJHtQR0hPTUV9L2Jpbi9wZ19yZXdpbmQgLUQgJHtOT0RFX1BHREFU QX0gLS1zb3VyY2Utc2VydmVyPVwidXNlcj0ke1BPU1RHUkVTUUxfU1RBUlRVUF9VU0VSfSBob3N0 PSR7TkVXX1BSSU1BUllfTk9ERV9IT1NUfSBwb3J0PSR7TkVXX1BSSU1BUllfTk9ERV9QT1JUfSBk Ym5hbWU9cG9zdGdyZXNcIgotCi0gICAgWyAtZCBcIiR7Tk9ERV9QR0RBVEF9XCIgXSAmJiBybSAt cmYgJHtOT0RFX1BHREFUQX0vcGdfcmVwbHNsb3QvKgotCi0gICAgY2F0ID4gJHtSRUNPVkVSWUNP TkZ9IDw8IEVPVAotcHJpbWFyeV9jb25uaW5mbyA9ICdob3N0PSR7TkVXX1BSSU1BUllfTk9ERV9I T1NUfSBwb3J0PSR7TkVXX1BSSU1BUllfTk9ERV9QT1JUfSB1c2VyPSR7UkVQTFVTRVJ9IGFwcGxp Y2F0aW9uX25hbWU9JHtOT0RFX0hPU1R9IHBhc3NmaWxlPScnL3Zhci9saWIvcGdzcWwvLnBncGFz cycnJwotcmVjb3ZlcnlfdGFyZ2V0X3RpbWVsaW5lID0gJ2xhdGVzdCcKLXByaW1hcnlfc2xvdF9u YW1lID0gJyR7UkVQTF9TTE9UX05BTUV9JwotRU9UCi0KLSAgICBpZiBbICR7UEdWRVJTSU9OfSAt Z2UgMTIgXTsgdGhlbgotICAgICAgICBzZWQgLWkgLWUgXCJcXFwkYWluY2x1ZGVfaWZfZXhpc3Rz ID0gJyQoZWNobyAke1JFQ09WRVJZQ09ORn0gfCBzZWQgLWUgJ3MvXC8vXFxcLy9nJyknXCIgXAot ICAgICAgICAgICAgICAgLWUgXCIvXmluY2x1ZGVfaWZfZXhpc3RzID0gJyQoZWNobyAke1JFQ09W RVJZQ09ORn0gfCBzZWQgLWUgJ3MvXC8vXFxcLy9nJyknL2RcIiAke05PREVfUEdEQVRBfS9wb3N0 Z3Jlc3FsLmNvbmYKLSAgICAgICAgdG91Y2ggJHtOT0RFX1BHREFUQX0vc3RhbmRieS5zaWduYWwK LSAgICBlbHNlCi0gICAgICAgIGVjaG8gXCJzdGFuZGJ5X21vZGUgPSAnb24nXCIgPj4gJHtSRUNP VkVSWUNPTkZ9Ci0gICAgZmkKLQotICAgICR7UEdIT01FfS9iaW4vcGdfY3RsIC1sIC9kZXYvbnVs bCAtdyAtRCAke05PREVfUEdEQVRBfSBzdGFydAotCi0iCi0KLSMgSWYgc3RhcnQgU3RhbmRieSBz dWNjZXNzZnVsbHksIGF0dGFjaCB0aGlzIG5vZGUKLWlmIFsgJD8gLWVxIDAgXTsgdGhlbgotCi0g ICAgIyBSdW4gcGNwX2F0dGFjdF9ub2RlIHRvIGF0dGFjaCBTdGFuZGJ5IG5vZGUgdG8gUGdwb29s LUlJLgotICAgICR7UEdQT09MX1BBVEh9L3BjcF9hdHRhY2hfbm9kZSAtdyAtaCBsb2NhbGhvc3Qg LVUgJFBDUF9VU0VSIC1wICR7UENQX1BPUlR9IC1uICR7Tk9ERV9JRH0KLQotICAgIGlmIFsgJD8g LW5lIDAgXTsgdGhlbgotICAgICAgICBlY2hvIEVSUk9SOiBmb2xsb3dfcHJpbWFyeS5zaDogZW5k OiBwY3BfYXR0YWNoX25vZGUgZmFpbGVkCi0gICAgICAgIGV4aXQgMQotICAgIGZpCi0KKyMgZm9s bG93X3ByaW1hcnkuc2gKKyMgQ2FsbGVkIGJ5IFBncG9vbC1JSSBhZnRlciBhIG5ldyBwcmltYXJ5 IGlzIGVsZWN0ZWQuCisjIEFyZ3M6ICVkIChmYWlsZWQgbm9kZSBpZCkKKyMgICAgICAgJWggKGZh aWxlZCBob3N0KQorIyAgICAgICAlcCAoZmFpbGVkIHBvcnQpCisjICAgICAgICVEIChmYWlsZWQg ZGF0YSBkaXJlY3RvcnkpCisjICAgICAgICVtIChuZXcgcHJpbWFyeSBub2RlIGlkKQorIyAgICAg ICAlSCAobmV3IHByaW1hcnkgaG9zdCkKKyMgICAgICAgJU0gKG5ldyBwcmltYXJ5IHBvcnQpCisK K0ZBSUxFRF9JRD0iJDEiCitGQUlMRURfSE9TVD0iJDIiCitGQUlMRURfUE9SVD0iJDMiCitGQUlM RURfREFUQT0iJDQiCitORVdfTUFJTl9JRD0iJDUiCitORVdfTUFJTl9IT1NUPSIkNiIKK05FV19N QUlOX1BPUlQ9IiQ3IgorCitMT0c9Ii92YXIvbG9nL3BncG9vbC9mb2xsb3dfcHJpbWFyeS5sb2ci Citta2RpciAtcCAvdmFyL2xvZy9wZ3Bvb2wKKworZWNobyAiJChkYXRlICcrJUYgJVQnKSBmb2xs b3dfcHJpbWFyeTogZmFpbGVkPSRGQUlMRURfSE9TVDokRkFJTEVEX1BPUlQgbmV3X3ByaW1hcnk9 JE5FV19NQUlOX0hPU1Q6JE5FV19NQUlOX1BPUlQiID4+ICIkTE9HIgorCisjIFBhdGggdG8geW91 ciByZXN5bmMgc2NyaXB0ICh0aGlzIGhhbmRsZXMgcmVjbG9uaW5nL3Jlc3luY2luZykKK1JFU1lO Q19TQ1JJUFQ9Ii9ldGMvcGdwb29sMi9yZXN5bmMuc2giCisKK2lmIFsgLXggIiRSRVNZTkNfU0NS SVBUIiBdOyB0aGVuCisgICAgZWNobyAiJChkYXRlICcrJUYgJVQnKSBTdGFydGluZyByZXN5bmMg b2Ygb2xkIHByaW1hcnkgKCRGQUlMRURfSE9TVDokRkFJTEVEX1BPUlQpIGZyb20gbmV3IHByaW1h cnkgKCRORVdfTUFJTl9IT1NUOiRORVdfTUFJTl9QT1JUKS4uLiIgPj4gIiRMT0ciCisgICAgIiRS RVNZTkNfU0NSSVBUIiAiJEZBSUxFRF9IT1NUIiAiJE5FV19NQUlOX0hPU1QiICIkRkFJTEVEX1BP UlQiICIkTkVXX01BSU5fUE9SVCIgIiRGQUlMRURfREFUQSIgPj4gIiRMT0ciIDI+JjEgJgorICAg IGVjaG8gIiQoZGF0ZSAnKyVGICVUJykgUmVzeW5jIHNjcmlwdCB0cmlnZ2VyZWQgc3VjY2Vzc2Z1 bGx5LiIgPj4gIiRMT0ciCiBlbHNlCi0KLSAgICAjIElmIHN0YXJ0IFN0YW5kYnkgZmFpbGVkLCBk cm9wIHJlcGxpY2F0aW9uIHNsb3QgIiR7UkVQTF9TTE9UX05BTUV9IgotICAgICR7UEdIT01FfS9i aW4vcHNxbCAtaCAke05FV19QUklNQVJZX05PREVfSE9TVH0gLXAgJHtORVdfUFJJTUFSWV9OT0RF X1BPUlR9IHBvc3RncmVzIFwKLSAgICAgICAgLWMgIlNFTEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9u X3Nsb3QoJyR7UkVQTF9TTE9UX05BTUV9Jyk7IiAgPi9kZXYvbnVsbCAyPiYxCi0KLSAgICBpZiBb ICQ/IC1uZSAwIF07IHRoZW4KLSAgICAgICAgZWNobyBFUlJPUjogZm9sbG93X3ByaW1hcnkuc2g6 IGRyb3AgcmVwbGljYXRpb24gc2xvdCBcIiR7UkVQTF9TTE9UX05BTUV9XCIgZmFpbGVkLiBZb3Ug bWF5IG5lZWQgdG8gZHJvcCByZXBsaWNhdGlvbiBzbG90IG1hbnVhbGx5LgotICAgIGZpCi0KLSAg ICBlY2hvIEVSUk9SOiBmb2xsb3dfcHJpbWFyeS5zaDogZW5kOiBmb2xsb3cgcHJpbWFyeSBjb21t YW5kIGZhaWxlZAotICAgIGV4aXQgMQorICAgIGVjaG8gIiQoZGF0ZSAnKyVGICVUJykgRVJST1I6 IFJlc3luYyBzY3JpcHQgbm90IGZvdW5kIG9yIG5vdCBleGVjdXRhYmxlIGF0ICRSRVNZTkNfU0NS SVBUIiA+PiAiJExPRyIKIGZpCiAKLWVjaG8gZm9sbG93X3ByaW1hcnkuc2g6IGVuZDogZm9sbG93 IHByaW1hcnkgY29tbWFuZCBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5CiBleGl0IDAKZGlmZiAt LWdpdCBhL3NyYy9zYW1wbGUvc2NyaXB0cy9yZWNvdmVyeS5zaC5zYW1wbGUgYi9zcmMvc2FtcGxl L3NjcmlwdHMvcmVjb3Zlcnkuc2guc2FtcGxlCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAw MDAwMDAwMC4uMThiMmFjZGI5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3NhbXBsZS9zY3JpcHRz L3JlY292ZXJ5LnNoLnNhbXBsZQpAQCAtMCwwICsxLDg3IEBACisjIS9iaW4vYmFzaAorIz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorIyByZWNvdmVyeS5zaAorIyBDYWxsZWQgYXV0b21hdGljYWxseSBieSBQZ3Bvb2wt SUkgd2hlbiBhIGRvd24gbm9kZSBiZWNvbWVzIGF2YWlsYWJsZQorIyBvciB3aGVuIG9ubGluZSBy ZWNvdmVyeSBpcyB0cmlnZ2VyZWQuCisjIFRoaXMgc2NyaXB0IGlkZW50aWZpZXMgdGhlIGN1cnJl bnQgcHJpbWFyeSB2aWEgUENQIGFuZCByZXN5bmNzCisjIHRoZSB0YXJnZXQgc3RhbmRieSAob2xk IG5vZGUpIHVzaW5nIHJlc3luYy5zaC4KKyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworc2V0IC1ldW8gcGlwZWZh aWwKKworI2NoYW5nZSB0aGlzIGFzIHBlciB1ciByZXF1aXJlZCBwYXRoCitOT0RFX0lEPSIkezE6 LX0iCitMT0c9L3Zhci9sb2cvcGdwb29sL3JlY292ZXJ5LmxvZworbWtkaXIgLXAgL3Zhci9sb2cv cGdwb29sCitleGVjID4+IiRMT0ciIDI+JjEKKworZWNobyAiPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IgorZWNobyAi JChkYXRlICcrJUYgJVQnKSBbSU5GT10gcmVjb3Zlcnkuc2ggY2FsbGVkIHdpdGggTk9ERV9JRD0k Tk9ERV9JRCIKKworIyAtLS0gTWFwcGluZyBOb2RlIElEcyB0byBwb3J0cyBhbmQgZGF0YSBkaXJl Y3RvcmllcyAtLS0tLS0tLS0tLS0tLS0tLQorY2FzZSAiJE5PREVfSUQiIGluCisgIDApCisgICAg VEFSR0VUX1BHREFUQT0iL3Zhci9saWIvcG9zdGdyZXNxbC8xOC9tYWluIgorICAgIFRBUkdFVF9Q T1JUPTU0MzIKKyAgICBUQVJHRVRfSE9TVD0ibG9jYWxob3N0IgorICAgIDs7CisgIDEpCisgICAg VEFSR0VUX1BHREFUQT0iL3Zhci9saWIvcG9zdGdyZXNxbC8xOC9zdGFuZGJ5MSIKKyAgICBUQVJH RVRfUE9SVD01NDMzCisgICAgVEFSR0VUX0hPU1Q9ImxvY2FsaG9zdCIKKyAgICA7OworICAyKQor ICAgIFRBUkdFVF9QR0RBVEE9Ii92YXIvbGliL3Bvc3RncmVzcWwvMTgvc3RhbmRieTIiCisgICAg VEFSR0VUX1BPUlQ9NTQzNAorICAgIFRBUkdFVF9IT1NUPSJsb2NhbGhvc3QiCisgICAgOzsKKyAg KikKKyAgICBlY2hvICIkKGRhdGUgJyslRiAlVCcpIFtFUlJPUl0gVW5rbm93biBub2RlIGlkOiAk Tk9ERV9JRCIKKyAgICBleGl0IDEKKyAgICA7OworZXNhYworCitlY2hvICIkKGRhdGUgJyslRiAl VCcpIFtJTkZPXSBUYXJnZXQgbm9kZTogJFRBUkdFVF9IT1NUOiRUQVJHRVRfUE9SVCAoJFRBUkdF VF9QR0RBVEEpIgorCisjIC0tLSBQQ1Agc2V0dGluZ3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQQ1BfUE9SVD05ODk4CitQQ1BfVVNFUj1wb3N0 Z3JlcworCisjIC0tLSBEZXRlY3QgY3VycmVudCBwcmltYXJ5IHVzaW5nIHBjcF9ub2RlX2luZm8g LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitlY2hvICIkKGRhdGUgJyslRiAlVCcpIFtJTkZPXSBEZXRl Y3RpbmcgY3VycmVudCBwcmltYXJ5IG5vZGUuLi4iCisjUFJJTUFSWV9JTkZPPSQoc3VkbyAtdSBw b3N0Z3JlcyBwY3Bfbm9kZV9pbmZvIC1oIGxvY2FsaG9zdCAtVSAiJFBDUF9VU0VSIiAtcCAiJFBD UF9QT1JUIiAyPi9kZXYvbnVsbCB8IGdyZXAgInByaW1hcnkgcHJpbWFyeSIgfCBoZWFkIC1uIDEp CisjIERldGVjdCBjdXJyZW50IHByaW1hcnkgbm9kZQorUFJJTUFSWV9JTkZPPSQoc3VkbyAtdSBw b3N0Z3JlcyBwY3Bfbm9kZV9pbmZvIC1oIGxvY2FsaG9zdCAtVSAiJFBDUF9VU0VSIiAtcCAiJFBD UF9QT1JUIiAyPi9kZXYvbnVsbCBcCisgIHwgYXdrICckNz09InByaW1hcnkiIHtwcmludCAkMSAi OiIgJDI7IGV4aXR9JykKKworaWYgWyAteiAiJFBSSU1BUllfSU5GTyIgXTsgdGhlbgorICBlY2hv ICIkKGRhdGUgJyslRiAlVCcpIFtFUlJPUl0gQ291bGQgbm90IGRldGVybWluZSBwcmltYXJ5IHZp YSBwY3Bfbm9kZV9pbmZvIgorICBleGl0IDEKK2ZpCisKKyMgLS0tIFNwbGl0IGhvc3Q6cG9ydCBj b3JyZWN0bHkgLS0tCitQUklNQVJZX0hPU1Q9JHtQUklNQVJZX0lORk8lJToqfSAgICMgZXZlcnl0 aGluZyBiZWZvcmUgY29sb24KK1BSSU1BUllfUE9SVD0ke1BSSU1BUllfSU5GTyMjKjp9ICAgIyBl dmVyeXRoaW5nIGFmdGVyIGNvbG9uCisKK2VjaG8gIiQoZGF0ZSAnKyVGICVUJykgW0lORk9dIEN1 cnJlbnQgcHJpbWFyeSBkZXRlY3RlZDogJFBSSU1BUllfSE9TVDokUFJJTUFSWV9QT1JUIgorCisj IC0tLSBTYWZldHkgY2hlY2s6IGRvIG5vdCByZXN5bmMgdGhlIGN1cnJlbnQgcHJpbWFyeSAtLS0K K2lmIFsgIiRQUklNQVJZX1BPUlQiID0gIiRUQVJHRVRfUE9SVCIgXTsgdGhlbgorICBlY2hvICIk KGRhdGUgJyslRiAlVCcpIFtXQVJOXSBUYXJnZXQgbm9kZSBpcyBhbHJlYWR5IHByaW1hcnk7IHNr aXBwaW5nIHJlc3luYy4iCisgIGV4aXQgMAorZmkKKworIyAtLS0gUGVyZm9ybSB0aGUgcmVzeW5j IC0tLQorZWNobyAiJChkYXRlICcrJUYgJVQnKSBbSU5GT10gQ2FsbGluZyByZXN5bmMuc2ggZm9y IG5vZGUgJE5PREVfSUQuLi4iCisvZXRjL3BncG9vbDIvcmVzeW5jLnNoICIkVEFSR0VUX0hPU1Qi ICIkUFJJTUFSWV9IT1NUIiAiJFRBUkdFVF9QT1JUIiAiJFBSSU1BUllfUE9SVCIgIiRUQVJHRVRf UEdEQVRBIiA+PiAvdmFyL2xvZy9wZ3Bvb2wvcmVzeW5jLmxvZyAyPiYxCisKK1JDPSQ/CitpZiBb ICRSQyAtZXEgMCBdOyB0aGVuCisgIGVjaG8gIiQoZGF0ZSAnKyVGICVUJykgW0lORk9dIFJlY292 ZXJ5IGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgZm9yIG5vZGUgJE5PREVfSUQuIgorZWxzZQorICBl Y2hvICIkKGRhdGUgJyslRiAlVCcpIFtFUlJPUl0gUmVjb3ZlcnkgZmFpbGVkIGZvciBub2RlICRO T0RFX0lEIChleGl0PSRSQykuIENoZWNrIHJlc3luYy5sb2cuIgorZmkKKworCitlY2hvICI9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0iCitleGl0ICRSQwpkaWZmIC0tZ2l0IGEvc3JjL3NhbXBsZS9zY3JpcHRzL3Jlc3lu Yy5zaCBiL3NyYy9zYW1wbGUvc2NyaXB0cy9yZXN5bmMuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUK aW5kZXggMDAwMDAwMDAwLi44YmQ2OTJhM2EKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvc2FtcGxl L3NjcmlwdHMvcmVzeW5jLnNoCkBAIC0wLDAgKzEsMTU1IEBACisjIS9iaW4vYmFzaAorI3RoaXMg aXMgZm9yIDMgbm9kZSBzZXR1cCBhc3N1bWluZyA1NDMyIGFzIHByaW1hcnkgYW5kIDU0MzMsNTQz NCBhcmUgc3RhbmRieXMKKyMgSW1wcm92ZWQgcmVzeW5jLnNoCisjIEFyZ3M6ICQxID0gb2xkX2hv c3QgKG5vZGUgdG8gcmVzeW5jKSwgJDIgPSBuZXdfcHJpbWFyeV9ob3N0LCAkMyA9IG9sZF9wb3J0 LCAkNCA9IG5ld19wb3J0LCAkNSA9IG9sZF9kYXRhX2Rpcgorc2V0IC1ldW8gcGlwZWZhaWwKKwor T0xEX0hPU1Q9IiR7MTotfSIKK05FV19IT1NUPSIkezI6LX0iCitPTERfUE9SVD0iJHszOi19Igor TkVXX1BPUlQ9IiR7NDotfSIKK09MRF9QR0RBVEE9IiR7NTotfSIKKworIyBBZGp1c3QgdGhlc2Ug aWYgeW91ciBiaW5hcmllcyBvciBwcmltYXJ5IGRhdGEgcGF0aCBkaWZmZXIKK1BHX0JJTj0iL3Vz ci9saWIvcG9zdGdyZXNxbC8xOC9iaW4iCitQUklNQVJZX1BHREFUQT0iL3Zhci9saWIvcG9zdGdy ZXNxbC8xOC9tYWluIgorCitQQ1BfUE9SVD05ODk4CitQQ1BfVVNFUj1wb3N0Z3JlcworTE9HPS92 YXIvbG9nL3BncG9vbC9yZXN5bmMubG9nCisKK21rZGlyIC1wIC92YXIvbG9nL3BncG9vbAorIyBC YXNpYyBhcmd1bWVudCBkdW1wIGZvciBkZWJ1Z2dpbmcKK2VjaG8gIiQoZGF0ZSAnKyVGICVUJykg PT09PSByZXN5bmMuc2ggc3RhcnQgPT09PSIgPj4gIiRMT0ciCitlY2hvICIkKGRhdGUgJyslRiAl VCcpIGFyZ3M6IE9MRF9IT1NUPSRPTERfSE9TVCBORVdfSE9TVD0kTkVXX0hPU1QgT0xEX1BPUlQ9 JE9MRF9QT1JUIE5FV19QT1JUPSRORVdfUE9SVCBPTERfUEdEQVRBPSRPTERfUEdEQVRBIiA+PiAi JExPRyIKK2VjaG8gIiQoZGF0ZSAnKyVGICVUJykgZW52aXJvbm1lbnQ6IFBHX0JJTj0kUEdfQklO IFBDUF9QT1JUPSRQQ1BfUE9SVCBQQ1BfVVNFUj0kUENQX1VTRVIiID4+ICIkTE9HIgorCisjIEJh c2ljIHZhbGlkYXRpb24KK2lmIFsgLXogIiRPTERfSE9TVCIgXSB8fCBbIC16ICIkTkVXX0hPU1Qi IF0gfHwgWyAteiAiJE9MRF9QT1JUIiBdIHx8IFsgLXogIiRORVdfUE9SVCIgXSB8fCBbIC16ICIk T0xEX1BHREFUQSIgXTsgdGhlbgorICBlY2hvICIkKGRhdGUgJyslRiAlVCcpIEVSUk9SOiBtaXNz aW5nIHJlcXVpcmVkIGFyZ3VtZW50cyIgPj4gIiRMT0ciCisgIGV4aXQgMQorZmkKKworIyBTdG9w IHRhcmdldCBQb3N0Z3JlcyAoaWdub3JlIGlmIGFscmVhZHkgc3RvcHBlZCkKK2VjaG8gIiQoZGF0 ZSAnKyVGICVUJykgc3RvcHBpbmcgdGFyZ2V0IHBvc3RncmVzIChpZiBydW5uaW5nKTogJE9MRF9Q R0RBVEEiID4+ICIkTE9HIgorc3VkbyAtdSBwb3N0Z3JlcyAiJFBHX0JJTi9wZ19jdGwiIC1EICIk T0xEX1BHREFUQSIgc3RvcCAtbSBpbW1lZGlhdGUgPj4gIiRMT0ciIDI+JjEgfHwgdHJ1ZQorc2xl ZXAgMgorCisjIFRyeSB0byBhdXRvLWRldGVybWluZSBOT0RFX0lEX0ZPUl9QQ1AgZnJvbSBwY3Bf bm9kZV9pbmZvIChzYWZlciB0aGFuIHN0YXRpYyBtYXBwaW5nKQorTk9ERV9JRF9GT1JfUENQPSIi CitQQ1BfT1VUPSQoc3VkbyAtdSBwb3N0Z3JlcyBwY3Bfbm9kZV9pbmZvIC1oIGxvY2FsaG9zdCAt cCAiJFBDUF9QT1JUIiAtVSAiJFBDUF9VU0VSIiAyPi9kZXYvbnVsbCB8fCB0cnVlKQoraWYgWyAt biAiJFBDUF9PVVQiIF07IHRoZW4KKyAgIyBpdGVyYXRlIGxpbmVzIGFuZCBmaW5kIG1hdGNoaW5n IGhvc3Q6cG9ydDsgcGNwX25vZGVfaW5mbyBsaW5lczogIjxob3N0PiA8cG9ydD4gLi4uIgorICBp ZHg9MAorICB3aGlsZSByZWFkIC1yIGxpbmU7IGRvCisgICAgaHM9JChlY2hvICIkbGluZSIgfCBh d2sgJ3twcmludCAkMX0nKQorICAgIHB0PSQoZWNobyAiJGxpbmUiIHwgYXdrICd7cHJpbnQgJDJ9 JykKKyAgICBpZiBbICIkaHMiID0gIiRPTERfSE9TVCIgXSAmJiBbICIkcHQiID0gIiRPTERfUE9S VCIgXTsgdGhlbgorICAgICAgTk9ERV9JRF9GT1JfUENQPSIkaWR4IgorICAgICAgYnJlYWsKKyAg ICBmaQorICAgIGlkeD0kKChpZHgrMSkpCisgIGRvbmUgPDw8ICIkUENQX09VVCIKK2ZpCisKKyMg RmFsbGJhY2sgc3RhdGljIG1hcHBpbmcgaWYgd2UgY291bGRuJ3QgZGV0ZXJtaW5lIG5vZGUgaWQK K2lmIFsgLXogIiROT0RFX0lEX0ZPUl9QQ1AiIF07IHRoZW4KKyAgZWNobyAiJChkYXRlICcrJUYg JVQnKSBXQVJOOiBjb3VsZCBub3QgZGV0ZWN0IG5vZGUgaWQgdmlhIHBjcF9ub2RlX2luZm87IHVz aW5nIHBvcnQtPmlkIGZhbGxiYWNrIiA+PiAiJExPRyIKKyAgY2FzZSAiJE9MRF9QT1JUIiBpbgor ICAgIDU0MzIpIE5PREVfSURfRk9SX1BDUD0wIDs7CisgICAgNTQzMykgTk9ERV9JRF9GT1JfUENQ PTEgOzsKKyAgICA1NDM0KSBOT0RFX0lEX0ZPUl9QQ1A9MiA7OworICAgICopIGVjaG8gIiQoZGF0 ZSAnKyVGICVUJykgRVJST1I6IHVua25vd24gT0xEX1BPUlQ9JE9MRF9QT1JUIiA+PiAiJExPRyI7 IGV4aXQgMSA7OworICBlc2FjCitmaQorZWNobyAiJChkYXRlICcrJUYgJVQnKSBOT0RFX0lEX0ZP Ul9QQ1A9JE5PREVfSURfRk9SX1BDUCIgPj4gIiRMT0ciCisKKyMgRW5zdXJlIE5FV19IT1NUL05F V19QT1JUIHByZXNlbnQKK2lmIFsgLXogIiRORVdfSE9TVCIgXSB8fCBbIC16ICIkTkVXX1BPUlQi IF07IHRoZW4KKyAgZWNobyAiJChkYXRlICcrJUYgJVQnKSBFUlJPUjogTkVXX0hPU1Qgb3IgTkVX X1BPUlQgZW1wdHkiID4+ICIkTE9HIgorICBleGl0IDEKK2ZpCisKKyMgUHJpbnQgcGdfY29udHJv bGRhdGEgc3lzdGVtIGlkcyAoYmVzdC1lZmZvcnQpCitTWVNfU1JDPSQoc3VkbyAtdSBwb3N0Z3Jl cyAiJFBHX0JJTi9wZ19jb250cm9sZGF0YSIgIiRPTERfUEdEQVRBIiAyPi9kZXYvbnVsbCB8IGF3 ayAtRjogJy9EYXRhYmFzZSBzeXN0ZW0gaWRlbnRpZmllci8ge3ByaW50ICQyfScgfCB0ciAtZCAn ICcgfHwgdHJ1ZSkKK1NZU19UR1Q9JChzdWRvIC11IHBvc3RncmVzICIkUEdfQklOL3BnX2NvbnRy b2xkYXRhIiAiJFBSSU1BUllfUEdEQVRBIiAyPi9kZXYvbnVsbCB8IGF3ayAtRjogJy9EYXRhYmFz ZSBzeXN0ZW0gaWRlbnRpZmllci8ge3ByaW50ICQyfScgfCB0ciAtZCAnICcgfHwgdHJ1ZSkKK2Vj aG8gIiQoZGF0ZSAnKyVGICVUJykgc3lzdGVtaWQgb2xkPSRTWVNfU1JDIGN1cnJlbnRfcHJpbWFy eT0kU1lTX1RHVCIgPj4gIiRMT0ciCisKKyMgVHJ5IHBnX3Jld2luZAorZWNobyAiJChkYXRlICcr JUYgJVQnKSBBdHRlbXB0aW5nIHBnX3Jld2luZDogdGFyZ2V0PSRPTERfUEdEQVRBIDwtIHNvdXJj ZT0kTkVXX0hPU1Q6JE5FV19QT1JUIiA+PiAiJExPRyIKK2lmIHN1ZG8gLXUgcG9zdGdyZXMgIiRQ R19CSU4vcGdfcmV3aW5kIiAtLXRhcmdldC1wZ2RhdGE9IiRPTERfUEdEQVRBIiAtLXNvdXJjZS1z ZXJ2ZXI9Imhvc3Q9JE5FV19IT1NUIHBvcnQ9JE5FV19QT1JUIHVzZXI9cG9zdGdyZXMgZGJuYW1l PXBvc3RncmVzIiA+PiAiJExPRyIgMj4mMTsgdGhlbgorICBlY2hvICIkKGRhdGUgJyslRiAlVCcp IHBnX3Jld2luZCBzdWNjZWVkZWQiID4+ICIkTE9HIgorZWxzZQorICBlY2hvICIkKGRhdGUgJysl RiAlVCcpIHBnX3Jld2luZCBmYWlsZWQ7IGZhbGxpbmcgYmFjayB0byBwZ19iYXNlYmFja3VwIiA+ PiAiJExPRyIKKyAgIyBSZW1vdmUgY29udGVudHMgYnV0IGtlZXAgZGlyZWN0b3J5IGl0c2VsZgor ICBMT0c9Ii92YXIvbG9nL3BncG9vbC9yZXN5bmMubG9nIgorICBzdWRvIHJtIC1yZiAiJE9MRF9Q R0RBVEEiID4+ICIkTE9HIiAyPiYxCisgIHN1ZG8gbWtkaXIgLXAgIiRPTERfUEdEQVRBIiA+PiAi JExPRyIgMj4mMQorICBzdWRvIGNob3duIC1SIHBvc3RncmVzOnBvc3RncmVzICIkT0xEX1BHREFU QSIgPj4gIiRMT0ciIDI+JjEKKyAgc3VkbyBjaG1vZCA3MDAgIiRPTERfUEdEQVRBIiA+PiAiJExP RyIgMj4mMQorCisKKyAgIyBSdW4gcGdfYmFzZWJhY2t1cCAocmVxdWlyZXMgcmVwbCB1c2VyIGFu ZCAucGdwYXNzKQorICBlY2hvICIkKGRhdGUgJyslRiAlVCcpIHJ1bm5pbmcgcGdfYmFzZWJhY2t1 cCBmcm9tICRORVdfSE9TVDokTkVXX1BPUlQgdG8gJE9MRF9QR0RBVEEiID4+ICIkTE9HIgorICBp ZiAhIHN1ZG8gLXUgcG9zdGdyZXMgIiRQR19CSU4vcGdfYmFzZWJhY2t1cCIgLWggIiRORVdfSE9T VCIgLXAgIiRORVdfUE9SVCIgLVUgcmVwbCAtRCAiJE9MRF9QR0RBVEEiIC1GcCAtWHMgLVAgLVIg Pj4gIiRMT0ciIDI+JjE7IHRoZW4KKyAgICBlY2hvICIkKGRhdGUgJyslRiAlVCcpIHBnX2Jhc2Vi YWNrdXAgZmFpbGVkOyBhYm9ydGluZyByZXN5bmMiID4+ICIkTE9HIgorICAgIGV4aXQgMQorICBm aQorICBlY2hvICIkKGRhdGUgJyslRiAlVCcpIHBnX2Jhc2ViYWNrdXAgc3VjY2VlZGVkIiA+PiAi JExPRyIKK2ZpCisKKyMgRW5zdXJlIHByaW1hcnlfY29ubmluZm8gZXhpc3RzIGluIHBvc3RncmVz cWwuYXV0by5jb25mIChzYWZlIGFwcGVuZCkKK3N1ZG8gLXUgcG9zdGdyZXMgYmFzaCAtYyAiCisg IGNvbmY9XCIkT0xEX1BHREFUQS9wb3N0Z3Jlc3FsLmF1dG8uY29uZlwiCisgIGlmICEgZ3JlcCAt cSBwcmltYXJ5X2Nvbm5pbmZvIFwiXCRjb25mXCIgMj4vZGV2L251bGw7IHRoZW4KKyAgICBlY2hv IFwicHJpbWFyeV9jb25uaW5mbyA9ICdob3N0PSRORVdfSE9TVCBwb3J0PSRORVdfUE9SVCB1c2Vy PXJlcGwgcGFzc2ZpbGU9L3Zhci9saWIvcG9zdGdyZXNxbC8ucGdwYXNzJ1wiID4+IFwiXCRjb25m XCIKKyAgZmkKKyIKKworIyBDcmVhdGUgc3RhbmRieS5zaWduYWwgZm9yIG1vZGVybiBQb3N0Z3Jl cworc3VkbyAtdSBwb3N0Z3JlcyB0b3VjaCAiJE9MRF9QR0RBVEEvc3RhbmRieS5zaWduYWwiCisK KyMgRml4IG93bmVyc2hpcC9wZXJtaXNzaW9ucworc3VkbyBjaG93biAtUiBwb3N0Z3Jlczpwb3N0 Z3JlcyAiJE9MRF9QR0RBVEEiCitzdWRvIGNobW9kIDcwMCAiJE9MRF9QR0RBVEEiIHx8IHRydWUK KworY2FzZSAiJE9MRF9QT1JUIiBpbgorICA1NDMyKSBDT05GPSIvZXRjL3Bvc3RncmVzcWwvMTgv bWFpbi9wb3N0Z3Jlc3FsLmNvbmYiIDs7CisgIDU0MzMpIENPTkY9Ii9ldGMvcG9zdGdyZXNxbC8x OC9zdGFuZGJ5MS9wb3N0Z3Jlc3FsLmNvbmYiIDs7CisgIDU0MzQpIENPTkY9Ii9ldGMvcG9zdGdy ZXNxbC8xOC9zdGFuZGJ5Mi9wb3N0Z3Jlc3FsLmNvbmYiIDs7CisgICopIENPTkY9Ii9ldGMvcG9z dGdyZXNxbC8xOC9tYWluL3Bvc3RncmVzcWwuY29uZiIgOzsKK2VzYWMKKworCitlY2hvICIkKGRh dGUgJyslRiAlVCcpIHN0YXJ0aW5nIHBvc3RncmVzIGF0ICRPTERfUEdEQVRBIHVzaW5nIGNvbmZp ZyAkQ09ORiIKK3N1ZG8gLXUgcG9zdGdyZXMgIiRQR19CSU4vcGdfY3RsIiAtRCAiJE9MRF9QR0RB VEEiIC1vICItYyBjb25maWdfZmlsZT0kQ09ORiIgLXcgc3RhcnQgPj4iJExPRyIgMj4mMSB8fCBl Y2hvICIkKGRhdGUgJyslRiAlVCcpIHBnX2N0bCBzdGFydCByZXR1cm5lZCBub24temVybyAoY2hl Y2sgcG9zdGdyZXMgbG9ncykiCisKKworIyBXYWl0IGZvciBzb2NrZXQgd2l0aCBwZ19pc3JlYWR5 ICh1cCB0byB+MzBzKQorYXR0ZW1wdD0wCit1bnRpbCBzdWRvIC11IHBvc3RncmVzICIkUEdfQklO L3BnX2lzcmVhZHkiIC1xIC1wICIkT0xEX1BPUlQiIHx8IFsgJGF0dGVtcHQgLWdlIDIwIF07IGRv CisgIGF0dGVtcHQ9JCgoYXR0ZW1wdCsxKSkKKyAgc2xlZXAgMgorZG9uZQoraWYgWyAkYXR0ZW1w dCAtZ2UgMTUgXTsgdGhlbgorICBlY2hvICIkKGRhdGUgJyslRiAlVCcpIFdBUk5JTkc6IHNlcnZl ciBhdCAkT0xEX1BHREFUQSBkaWRuJ3QgYmVjb21lIHJlYWR5IHdpdGhpbiB0aW1lb3V0IiA+PiAi JExPRyIKK2ZpCisKKyMgQXR0YWNoIG5vZGUgdG8gUGdwb29sIHZpYSBQQ1Agd2l0aCByZXRyaWVz CitSRVRSSUVTPTYKK2k9MAord2hpbGUgWyAkaSAtbHQgJFJFVFJJRVMgXTsgZG8KKyAgaWYgc3Vk byAtdSBwb3N0Z3JlcyBwY3BfYXR0YWNoX25vZGUgLWggbG9jYWxob3N0IC1wICIkUENQX1BPUlQi IC1VICIkUENQX1VTRVIiIC1uICIkTk9ERV9JRF9GT1JfUENQIiA+PiAiJExPRyIgMj4mMTsgdGhl bgorICAgIGVjaG8gIiQoZGF0ZSAnKyVGICVUJykgcGNwX2F0dGFjaF9ub2RlIHN1Y2NlZWRlZCBm b3Igbm9kZSAkTk9ERV9JRF9GT1JfUENQIiA+PiAiJExPRyIKKyAgICBicmVhaworICBmaQorICBl Y2hvICIkKGRhdGUgJyslRiAlVCcpIHBjcF9hdHRhY2hfbm9kZSBhdHRlbXB0ICQoKGkrMSkpIGZh aWxlZDsgc2xlZXBpbmcgYW5kIHJldHJ5aW5nLi4uIiA+PiAiJExPRyIKKyAgaT0kKChpKzEpKQor ICBzbGVlcCAzCitkb25lCitpZiBbICRpIC1nZSAkUkVUUklFUyBdOyB0aGVuCisgIGVjaG8gIiQo ZGF0ZSAnKyVGICVUJykgRVJST1I6IHBjcF9hdHRhY2hfbm9kZSBmYWlsZWQgYWZ0ZXIgJFJFVFJJ RVMgYXR0ZW1wdHMiID4+ICIkTE9HIgorZmkKKworZWNobyAiJChkYXRlICcrJUYgJVQnKSA9PT09 IHJlc3luYyBjb21wbGV0ZSA9PT09IiA+PiAiJExPRyIKK2V4aXQgMAotLSAKMi40My4wCgo= --0000000000002fd8580642ff6fe0--