Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mngl2-0007te-JZ for pgsql-hackers@arkaria.postgresql.org; Thu, 18 Nov 2021 12:43:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mngl0-0000aH-Oh for pgsql-hackers@arkaria.postgresql.org; Thu, 18 Nov 2021 12:43:14 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mngkz-0000a8-P9 for pgsql-hackers@lists.postgresql.org; Thu, 18 Nov 2021 12:43:14 +0000 Received: from esa5.fujitsucc.c3s2.iphmx.com ([68.232.159.76]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mngkv-0005sV-Nx for pgsql-hackers@lists.postgresql.org; Thu, 18 Nov 2021 12:43:12 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1637239390; x=1668775390; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=rAEaGNVirXhljdtucVmfsJDNBRUgS+fQZpeRWb9qMRg=; b=VcoH2C+2lkJBOktK0hlV0dmlzLVyYhb/YoJ3tnNT9zleje7LAWx3yqM+ qSHvn4ZRbiwz4VcpFGekOO/SPAzjYQJDy/lMAh781zTsQhzLV32P1QOFM Do31Qmc9vVcoZiN4RMqQIkCVOaxLW6kascELJmF0p0twVro+UtIK+wCP8 dMcZBGv3es2ZZopBVhiyivJR7hJaAvL/MnzkM4qX3R8nbJ7QSAsodtGK3 ScrV9NwiecVu8oeH6Sbj8Kr8gZ0baCBFZqAU7oWap/oKhI051HNDnXff7 USxOm5Z3Xb93RXg8jZC5N5g2qRiAmIOOjMGamcQPZxSlO1F3qziOLSjef g==; X-IronPort-AV: E=McAfee;i="6200,9189,10171"; a="44052814" X-IronPort-AV: E=Sophos;i="5.87,244,1631545200"; d="zip'48?scan'48,208,48,223";a="44052814" Received: from mail-os0jpn01lp2104.outbound.protection.outlook.com (HELO JPN01-OS0-obe.outbound.protection.outlook.com) ([104.47.23.104]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Nov 2021 21:43:05 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QpIsqpMl2DELv2pSn7YHs90rru7RondJPlXLhdXnu216Yy/DQTOLjJBIEtSPZWJ3HBGqB+T7+OSl2IayUovdrtgfTqRfSPGziHbytIvzQhYNZGe0xsLk+PTdKqqqt4k58veqZpkzXonKKLcY8YXC61GfNEYWiFKWEe/0FPTNa9603ddWs65MFTBt8yjbfu0DBi1EJNXIZUgUf1iHTIXpFaGgUlldk8gK+z6FkzmjdEYpYSpZAROLri5Q4d8gnuOTTZ88RvtXucCz9TmQ1tQT8VVe5RsV2fcfhmQENyzlG9DkdWk5M9nl+eJGEnShpVqvbo3TSWo86w3r+aHnV7ADRw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=hAY+Of19qvVMV9k9WBz2KEklx1er8DVBk/VLBrb0Rpc=; b=NqCS9wKirQVy5E8Lkoi1rkbJBf/GzC0yBTB+sVPBIBHXCjYnozz1B0tLA2C3EWw6ZDX4ASDYE65I3UWbubgkRsVJfG+RTipwfcuNWU23kQlos67KnFCY78ejF2OGuNWOit0vD128IsSJYhGngSwL4CAulFrivJbf1ZNyDbpHPLfHrL9Uh6uw7XgsowJxP3zU4UBYQUx07EndF7CeAbOGpyLjdm7HtNoQ/VfY7hObVoTQnZzEGdBPhWp0qBAAp+Er+kjZzWMzspi8bxAv3xcZ3TTcWMNkNmxj5BYVZmVYLXdzWm/PM/05InKtfB1+90IFtgcVi32SsyLtqYOnbRAh8g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fujitsu.onmicrosoft.com; s=selector2-fujitsu-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hAY+Of19qvVMV9k9WBz2KEklx1er8DVBk/VLBrb0Rpc=; b=GOCQat12G/lHTh/ebf4kKm26xdUWHM87MKQwU0IHiXmVui44SOZzvabjuo4hiv0SD7z5JA31idYu2wFO03a3UOkEs+SAJQ24O6oaDwb6zpwzieJH/h3duMOoAvZljJdidcXfIKq5jiSS0L3ApVIAVWKqxgGi4mQz7609biYY8Ts= Received: from TYAPR01MB5866.jpnprd01.prod.outlook.com (2603:1096:404:8056::13) by TYAPR01MB2125.jpnprd01.prod.outlook.com (2603:1096:404:8::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.26; Thu, 18 Nov 2021 12:43:01 +0000 Received: from TYAPR01MB5866.jpnprd01.prod.outlook.com ([fe80::30b0:3a2a:f088:165b]) by TYAPR01MB5866.jpnprd01.prod.outlook.com ([fe80::30b0:3a2a:f088:165b%6]) with mapi id 15.20.4690.027; Thu, 18 Nov 2021 12:43:01 +0000 From: "kuroda.hayato@fujitsu.com" To: 'Shinya Kato' CC: "pgsql-hackers@lists.postgresql.org" Subject: RE: [Proposal] Add foreign-server health checks infrastructure Thread-Topic: [Proposal] Add foreign-server health checks infrastructure Thread-Index: AdfNNjec7xk22WznTt+52qg+YpAmvANdE8aAAG+tXeA= Date: Thu, 18 Nov 2021 12:43:01 +0000 Message-ID: References: <54449d7bea79263e937266ad6ebc65b3@oss.nttdata.com> In-Reply-To: <54449d7bea79263e937266ad6ebc65b3@oss.nttdata.com> Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: MSIP_Label_a7295cc1-d279-42ac-ab4d-3b0f4fece050_Enabled=true; MSIP_Label_a7295cc1-d279-42ac-ab4d-3b0f4fece050_SetDate=2021-11-18T10:56:04Z; MSIP_Label_a7295cc1-d279-42ac-ab4d-3b0f4fece050_Method=Standard; MSIP_Label_a7295cc1-d279-42ac-ab4d-3b0f4fece050_Name=FUJITSU-RESTRICTED?; MSIP_Label_a7295cc1-d279-42ac-ab4d-3b0f4fece050_SiteId=a19f121d-81e1-4858-a9d8-736e267fd4c7; MSIP_Label_a7295cc1-d279-42ac-ab4d-3b0f4fece050_ActionId=d2b8073e-ab72-4295-90d1-f1bf054ff529; MSIP_Label_a7295cc1-d279-42ac-ab4d-3b0f4fece050_ContentBits=0 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 6b85b14d-e437-4537-d821-08d9aa90f557 x-ms-traffictypediagnostic: TYAPR01MB2125: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: P6fEiofoyZcE2oDtR4V93kVYl+luq1MKX8GMikYLbif23hUAZCu3t5NsrkDrX4odE3lG+wNvcEvs8Oh5gm/7ZUsiNilyy9XSruTvlXM+h8CZJ6mRxHOsQEwy+E/durJdX+/68u4DwGz2BUusDs0cRJn+isH7ZrDSZVlYqDxqKPNDfK32c86jL7h3x3Aymw02Nbz0k7OtoequBwJAD2mIROHco2clvJbJ+DNRzJE5TGF/Vc5RUy23mLR1bWqiHcrV5OaySPc5Z3BvHGnujwoQwei9KJg4U4CGqULE28pMhnE0WAjNWnMNxzLsemQE/u6g6I1VmH0s5x0KfoyY1PIPTSv7RyHjvEubVYe4h5fIvyURXMzVWExKPgbZktKGGdTEMAdL24NsfmkLxC2xX2kWdhTKt+Jro/9ilBkL/R1IguZlUNuQQ3BCzeecVKHM+tuIQtc1MDyhTRaF3cctEDhrdY47ZHLep/10feD+DgxkJTfHkqB9Y6N8E162zAOk8Uu68nSMU/EX9yZMYigoyvmyLTyuDRSDprvNw+FZbSC+UvPnY4FcO/G4Vc3/q2dY5aVStE/qqAQgrH+Ana3LPE4k1oVn8ifVeA10NKV3ls+6g+SpEo4uoUPEqiWdv5pyoVXeeJKYIG9498xUapiK5uw+KP7leVTuP59nwJ7xAxvPQzqXLCgKx+v4DEN3ste/XfbLf3jUKoox2+908+X1izwNZp/MiSYpvpgwCBOBgNUPJrWjbqN/E+NcwoASE7XGN+QvD0c4E6EfGjQ/XlNdMRWDYg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYAPR01MB5866.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(66946007)(33656002)(82960400001)(99936003)(76116006)(71200400001)(9686003)(64756008)(66476007)(85182001)(66556008)(66446008)(55016002)(508600001)(186003)(8676002)(83380400001)(8936002)(26005)(38100700002)(122000001)(6916009)(38070700005)(52536014)(86362001)(7696005)(2906002)(5660300002)(6506007)(4326008)(316002)(966005)(21314003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-2022-jp?B?SVd0a0kzaUo3ZkRJdVdYSnVWZzhLZEZvSDdvY0xjSDJ2dFBYYldLelZr?= =?iso-2022-jp?B?VTdHOVJjeU56Wnp2YjY5cklxWm5nVE92RThUSng0WGw0Mis4VGtxaENr?= =?iso-2022-jp?B?RFA4aU1Mb2tCWHhMSlMzeUpmOWdHWnU1WUxEUFFBdEFxOXFpajUyV3Zp?= =?iso-2022-jp?B?cVB1czhkZnd4M1VmSVd3cm5KMWpUbFd3NmdnaUIrcjJwU2ZtZHMrK25o?= =?iso-2022-jp?B?TWdBV0FiU0FsMTIxWndGWmZmZmtQallaSG96MjdoaWI1NXF4c0cvTWVi?= =?iso-2022-jp?B?eUk0eVpla2xQQitIWDBQenU2SFFDR3F3OFNDN3ozNG5rZ2FlbUU5bC9J?= =?iso-2022-jp?B?SkJhSE8vZWlPbGw5bmZrQWo4MW5NTklZOEVRNkUzbUFBSVJVNlB2dHlr?= =?iso-2022-jp?B?K3VqbDltWXZvbUdOVngrWDBRdUpFSHVUL3I2emJtUmhMdHorU3I3Z1pX?= =?iso-2022-jp?B?bVJaWWgxcnd1OUtxZC9JU0tiMmFPRkRZdGpGelk1S0xiWmF0Ym5FM29D?= =?iso-2022-jp?B?eDVKb1dGSmE2YjNWb0lVcU1CSnlYMDJHLzlsejRDYVVYSTBoUERuN1VO?= =?iso-2022-jp?B?ZkxHWFcrSGJiSGl6OXdONWU2ajdQVmZvRHh0eStRNk83dEFjL29qczUz?= =?iso-2022-jp?B?L0xQdzlIeFA0eHpxMDVUZ084TU5PUE1wcDY2MmlTUjdKaElTRk80ZkhW?= =?iso-2022-jp?B?b3ROSHYzZUN5bkx1RDV2S0UwT1l5TWoydmNLMDEvT1RMa0V4NUlaVE92?= =?iso-2022-jp?B?TzF6YzJEaEprV3cwNzg0YlJETTkyUlV4RHdFOGZIcDZNTldlSmEvaG5h?= =?iso-2022-jp?B?ZnhkUjZ2ckFvekdzeklPV0NoR3dqeXdYbkg2TmFLZzhpbUk1N01ZaTIx?= =?iso-2022-jp?B?TWNwVExSMDdkdHk1MVpRR0Z0ZXIvU0dQQ0dGTm9VTENlVEk2N3R2Y3l6?= =?iso-2022-jp?B?ai9RdGlCcWxXYmxTOXU1RXI0OHJDTDZXcmZwYUxhY3crV1ZLUmhWOWZP?= =?iso-2022-jp?B?d2NPSzhpeFNMSEpQNy8xYThLZ3prS055WEJ0eWMzWWNBQzhUdm5ISUQr?= =?iso-2022-jp?B?WkZNK2VpbURKN0NWcXhZdGFWTWtWaitPZjBzTmZQdTBlQXFiS3k0NFQ2?= =?iso-2022-jp?B?UldXb3ZVSzNVL1FDOHcwcW93b1p3cE1MeXJzamVDc0dobnJFenpPdU0y?= =?iso-2022-jp?B?VUlOck5FVGhYdlJxaWRocmlOazFKKzZCN21CZ2hOSG5abUp2bU9wbUhq?= =?iso-2022-jp?B?Tyt4TFZoWU85MXR6WVNmeTZONk8wUFQwOWZaWWEwb1FpcW4yYUFUS29L?= =?iso-2022-jp?B?MmVJeVM2QTJZcFZiSGZVckhXVW9lSWJnajZEV0p0SmZDNGc5aWZZTU83?= =?iso-2022-jp?B?ZWFVZTQxUHdvQkVlSVZqSjZZSFVUWUtZN2NqR2c1MlQ5Y1owSUJCMUI1?= =?iso-2022-jp?B?S1lnVkpXOFl1bkh4b3dsaVcxcnBJK0RoR094ZE45V0s2YWhWbU5FNktS?= =?iso-2022-jp?B?b0tGMzRwcDN0UmFRMkoydGRmamJOaXdlUlhQQzM2NzljSmxoY0U1bjNT?= =?iso-2022-jp?B?Z0k5NjRpQnRoMkRtSlk2Y0VMZjdVeUplSVJTbFUrdGRMZi9qdzVIeklF?= =?iso-2022-jp?B?UkxnZGlZS2x1S2x4N3RsYWpVVmMwWU9KTnRkRHBCYitJUk9ZZlFWQzFF?= =?iso-2022-jp?B?U0ZyNER5QzBoYjkxb214M012T2pqc2szYy9EWEUxVmRkK3Y3Zjh5bHdR?= =?iso-2022-jp?B?cTZkREluRWVzSm10VnEwc0I4Q3k2VUlJbUozUG1qcUI3eW5oUm5kelpN?= =?iso-2022-jp?B?a0lIZVRvdytDSjJqTHlQOXllZWE0bFVnZFlYc1E1Ti9lSG91UVEzK0Qx?= =?iso-2022-jp?B?VkxtKzUwT2E1Z093YWhTTmhKQ050aGdVdjRrSXpXYTUwbXFUWFR2aVNX?= =?iso-2022-jp?B?WHV2TVM0am1KRFd3OGNjQXJQcHljcjNCQjNxM1FqOUoxSFcvUXFCL1A4?= =?iso-2022-jp?B?MklaV3gyd1h5N1Fqb3B2S1Q2bUUyVW9GUWQ2TEVTclJjMGI4YW5OYWJK?= =?iso-2022-jp?B?Q2J5WTFLRFpzSlhqdm1pc3lJRWRzWEtHSm91Y09oSTZaUGo3Nk0yYmJ1?= =?iso-2022-jp?B?OTlMNXdHUUtuNFpZOTNkdlVjeHdZa3crOFU1czY1cWtVd3AwUlM0dFNW?= =?iso-2022-jp?B?NWRqdGh6bE84K1NoNEhLcndzZmxuQ2FwdENWdTdKUEVYZUIxV3YxWTNQ?= =?iso-2022-jp?B?T3pYbm83aFF2WFdaTG5paGNBOTMvSXJzdkRSSjhhRHVnZ2xnOHVmNFpr?= =?iso-2022-jp?B?elRVeC9HU0ZuSkE0THhTcUhFcGFOTlNESHNRN1BGT3pVV2IvL05HRnUz?= =?iso-2022-jp?B?WU5rdzYwYXZGbmtyTjNEQmFGZ3RCNTZ3Rk5yT05Ubng2TlBPOFgvd2ps?= =?iso-2022-jp?B?TnEvdzVBPT0=?= Content-Type: multipart/mixed; boundary="_003_TYAPR01MB58662CD4FD98AA475B3D10F9F59B9TYAPR01MB5866jpnp_" MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYAPR01MB5866.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6b85b14d-e437-4537-d821-08d9aa90f557 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Nov 2021 12:43:01.6897 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a19f121d-81e1-4858-a9d8-736e267fd4c7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: bVBOfob2b380mBF70LrfrQWpJlb5RbbYllycRujhooQm9XoIR81QOYTiwAP/I6bxI4w/2mOuZtEAonqSKWLtmVPqtuDS+ZCpUSZBlNkUmvE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYAPR01MB2125 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_003_TYAPR01MB58662CD4FD98AA475B3D10F9F59B9TYAPR01MB5866jpnp_ Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: quoted-printable Dear Kato-san, Thank you for your interest! > > I also want you to review the postgres_fdw part, > > but I think it should not be attached because cfbot cannot understand > > such a dependency > > and will throw build error. Do you know how to deal with them in this > > case? >=20 > I don't know how to deal with them, but I hope you will attach the PoC, > as it may be easier to review. OK, I attached the PoC along with the dependent patches. Please see the zip= file. add_helth_check_... patch is written by me, and other two patches are just copied from [1]. In the new callback function ConnectionHash is searched sequentially and WaitEventSetWait() is performed for WL_SOCKET_CLOSED socket event. This event is added by the dependent ones. =3D=3D=3D How to use =3D=3D=3D I'll explain how to use it briefly. 1. boot two postmaster processes. One is coordinator, and another is worker 2. set remote_servers_connection_check_interval to non-zero value at the co= ordinator 3. create tables to worker DB-cluster. 4. create foreign server, user mapping, and foreign table to coordinator. 5. connect to coordinator via psql. 6. open a transaction and access to foreing tables. 7. do "pg_ctl stop" command to woker DB-cluser. 8. execute some commands that does not access an foreign table. 9. Finally the following output will be get: ERROR: Postgres foreign server XXX might be down. =3D=3D=3D Example in some steps =3D=3D=3D 3. at worker ``` postgres=3D# \d List of relations Schema | Name | Type | Owner =20 --------+--------+-------+-------- public | remote | table | hayato (1 row) ``` 4. at coordinator=20 ``` postgres=3D# select * from pg_foreign_server ; oid | srvname | srvowner | srvfdw | srvtype | srvversion | srvacl | = srvoptions =20 -------+---------+----------+--------+---------+------------+--------+-----= ------------------------ 16406 | remote | 10 | 16402 | | | | {por= t=3D5433,dbname=3Dpostgres} (1 row) postgres=3D# select * from pg_user_mapping ; oid | umuser | umserver | umoptions =20 -------+--------+----------+--------------- 16407 | 10 | 16406 | {user=3Dhayato} (1 row) postgres=3D# \d List of relations Schema | Name | Type | Owner =20 --------+--------+---------------+-------- public | local | table | hayato public | remote | foreign table | hayato (2 rows) ``` 6-9. at coordinator ``` postgres=3D# begin; BEGIN postgres=3D*# select * from remote ; id=20 ---- 1 (1 row) postgres=3D*# select * from local ; ERROR: Postgres foreign server remote might be down. postgres=3D!# ``` Note that some keepalive settings are needed if you want to detect cable breakdown events. In my understanding following parameters are needed as server options: * keepalives_idle * keepalives_count * keepalives_interval [1]: https://commitfest.postgresql.org/35/3098/ Best Regards, Hayato Kuroda FUJITSU LIMITED --_003_TYAPR01MB58662CD4FD98AA475B3D10F9F59B9TYAPR01MB5866jpnp_ Content-Type: application/x-zip-compressed; name="patches.zip" Content-Description: patches.zip Content-Disposition: attachment; filename="patches.zip"; size=6216; creation-date="Thu, 18 Nov 2021 12:38:16 GMT"; modification-date="Thu, 18 Nov 2021 12:38:16 GMT" Content-Transfer-Encoding: base64 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 vnwTuDb65xuPDShjdFADt3zvZoL8DtkvuYsrFTqU/4LY7wwyxKiHfhaXERQVInOkJw50H7WZ8qeO iV/XjYsqz5UN0Wn9iYk7ID9ZTBEkutahnm/q3pDNXOrOMpv6rybMXHx+z0+87dvYbf4/dM8wfezX tOmv606v2e5abb1etztdx1GmePbYbfo/pGXd8H9IgmeTpk5HsSp/5/EX3y4ZsTpCGK0YhiRMQIFJ zsVKdZPeZNnM9ERr3jIxiQb+uumOJ6YYYfs9cUMSRjwQHXgjXFd0TVCYSfNorqHXdseKW8ASlFV4 /x46laIJTgejT5hfCmvCL/mRsTiNo0CtoEuSLblS2EPJDRLBuiuQNtjwILgFdB5PEnzLEr3cojxP 1zH4gH3FGPSJ9iWS5Y45D0f8TqLMv8Eed61IDSvzmnF9kbw2FJaz7MoU32TwAvJlmkAgwXFNjce+ SFQTumqkjV06N4+AE9+NXdNz/2B8UloL3Qpx6q9FaZlIq7NkcZnTJzcxKrhDQmqmQynNlJ7MMvww LQIktQ5jVLToPvLOTQ0krd5U6pok/QtQSwECFAAUAAAACACSTkhTVWWOkbIHAADGEAAAPwAAAAAA AAABACAAAAAAAAAAdjItMDAwMi1Vc2UtV0xfU09DS0VUX0NMT1NFRC1mb3ItY2xpZW50X2Nvbm5l Y3Rpb25fY2hlY2tfLnBhdGNoUEsBAhQAFAAAAAgAd6xyU9/oSywkBQAA/wsAACYAAAAAAAAAAQAg AAAADwgAAGFkZF9oZWx0aF9jaGVja19mb3JfcG9zdGdyZXNfZmR3LnBhdGNoUEsBAhQAFAAAAAgA j05IU8EyVeM0CQAA8R4AAD0AAAAAAAAAAQAgAAAAdw0AAHYyLTAwMDEtQWRkLVdMX1NPQ0tFVF9D TE9TRUQtZm9yLXNvY2tldC1zaHV0ZG93bi1ldmVudHMucGF0Y2hQSwUGAAAAAAMAAwAsAQAABhcA AAAA --_003_TYAPR01MB58662CD4FD98AA475B3D10F9F59B9TYAPR01MB5866jpnp_ Content-Type: application/octet-stream; name="v01_add_checking_infrastracture.patch" Content-Description: v01_add_checking_infrastracture.patch Content-Disposition: attachment; filename="v01_add_checking_infrastracture.patch"; size=12189; creation-date="Thu, 18 Nov 2021 12:37:46 GMT"; modification-date="Sat, 30 Oct 2021 03:35:40 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYwppbmRleCBhYWMxMDE2NWVjLi4wYzRkNjFh MzRjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jCkBAIC0yNjksNiArMjY5LDcg QEAgQ29weUdldERhdGEoQ29weUZyb21TdGF0ZSBjc3RhdGUsIHZvaWQgKmRhdGFidWYsIGludCBt aW5yZWFkLCBpbnQgbWF4cmVhZCkKIAogCQkJcmVhZG1lc3NhZ2U6CiAJCQkJCUhPTERfQ0FOQ0VM X0lOVEVSUlVQVFMoKTsKKwkJCQkJSE9MRF9DSEVDS0lOR19SRU1PVEVfU0VSVkVSU19JTlRFUlJV UFRTKCk7CiAJCQkJCXBxX3N0YXJ0bXNncmVhZCgpOwogCQkJCQltdHlwZSA9IHBxX2dldGJ5dGUo KTsKIAkJCQkJaWYgKG10eXBlID09IEVPRikKQEAgLTMwMCw2ICszMDEsNyBAQCBDb3B5R2V0RGF0 YShDb3B5RnJvbVN0YXRlIGNzdGF0ZSwgdm9pZCAqZGF0YWJ1ZiwgaW50IG1pbnJlYWQsIGludCBt YXhyZWFkKQogCQkJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9D T05ORUNUSU9OX0ZBSUxVUkUpLAogCQkJCQkJCQkgZXJybXNnKCJ1bmV4cGVjdGVkIEVPRiBvbiBj bGllbnQgY29ubmVjdGlvbiB3aXRoIGFuIG9wZW4gdHJhbnNhY3Rpb24iKSkpOworCQkJCQlSRVNV TUVfQ0hFQ0tJTkdfUkVNT1RFX1NFUlZFUlNfSU5URVJSVVBUUygpOwogCQkJCQlSRVNVTUVfQ0FO Q0VMX0lOVEVSUlVQVFMoKTsKIAkJCQkJLyogLi4uIGFuZCBwcm9jZXNzIGl0ICovCiAJCQkJCXN3 aXRjaCAobXR5cGUpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9mb3JlaWduL2ZvcmVpZ24uYyBi L3NyYy9iYWNrZW5kL2ZvcmVpZ24vZm9yZWlnbi5jCmluZGV4IGUwN2NjNTc0MzEuLmViOWM0ZjNm MDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2ZvcmVpZ24vZm9yZWlnbi5jCisrKyBiL3NyYy9i YWNrZW5kL2ZvcmVpZ24vZm9yZWlnbi5jCkBAIC0yNiw3ICsyNiwxMSBAQAogI2luY2x1ZGUgInV0 aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMv c3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy90aW1lb3V0LmgiCiAKKy8qIGZvciBjaGVja2lu ZyByZW1vdGUgc2VydmVycyAqLworaW50IHJlbW90ZV9zZXJ2ZXJzX2Nvbm5lY3Rpb25fY2hlY2tf aW50ZXJ2YWwgPSAwOworc3RhdGljIENoZWNraW5nUmVtb3RlU2VydmVyc0NhbGxiYWNrSXRlbSAq ZmR3X2NhbGxiYWNrcyA9IE5VTEw7CiAKIC8qCiAgKiBHZXRGb3JlaWduRGF0YVdyYXBwZXIgLQls b29rIHVwIHRoZSBmb3JlaWduLWRhdGEgd3JhcHBlciBieSBPSUQuCkBAIC04MzYsMyArODQwLDUx IEBAIEdldEV4aXN0aW5nTG9jYWxKb2luUGF0aChSZWxPcHRJbmZvICpqb2lucmVsKQogCX0KIAly ZXR1cm4gTlVMTDsKIH0KKworLyoKKyAqIFJlZ2lzdGVyIGNhbGxiYWNrcyBmb3IgY2hlY2tpbmcg cmVtb3RlIHNlcnZlcnMuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNl IGJ5IEZEVyBleHRlbnNpb25zLgorICogVGhlIGNoZWNraW5nIHRpbWVvdXQgd2lsbCBiZSBmaXJl ZCBhZnRlciByZWdpc3RlcmluZyB0aGUgZmlyc3QgY2FsbGJhY2suCisgKi8KK3ZvaWQKK1JlZ2lz dGVyQ2hlY2tpbmdSZW1vdGVTZXJ2ZXJzQ2FsbGJhY2soQ2hlY2tpbmdSZW1vdGVTZXJ2ZXJzQ2Fs bGJhY2sgY2FsbGJhY2ssIHZvaWQgKmFyZykKK3sKKwlDaGVja2luZ1JlbW90ZVNlcnZlcnNDYWxs YmFja0l0ZW0gKml0ZW07CisJLyogc2hvdWxkIHdlIHN0YXJ0IGNoZWNraW5nIHRpbWVvdXQ/ICov CisJYm9vbCBmaXJzdF9leGVjID0gSGF2ZUNoZWNraW5nUmVtb3RlU2VydmVyc0NhbGxiYWNrcygp OworCisJaXRlbSA9IChDaGVja2luZ1JlbW90ZVNlcnZlcnNDYWxsYmFja0l0ZW0gKikKKwkJCU1l bW9yeUNvbnRleHRBbGxvYyhUb3BNZW1vcnlDb250ZXh0LCBzaXplb2YoQ2hlY2tpbmdSZW1vdGVT ZXJ2ZXJzQ2FsbGJhY2tJdGVtKSk7CisJaXRlbS0+Y2FsbGJhY2sgPSBjYWxsYmFjazsKKwlpdGVt LT5hcmcgPSBhcmc7CisJaXRlbS0+bmV4dCA9IGZkd19jYWxsYmFja3M7CisJZmR3X2NhbGxiYWNr cyA9IGl0ZW07CisKKwlpZiAoZmlyc3RfZXhlYyAmJiByZW1vdGVfc2VydmVyc19jb25uZWN0aW9u X2NoZWNrX2ludGVydmFsID4gMCkKKwkJZW5hYmxlX3RpbWVvdXRfYWZ0ZXIoQ0hFQ0tJTkdfUkVN T1RFX1NFUlZFUlNfVElNRU9VVCwgcmVtb3RlX3NlcnZlcnNfY29ubmVjdGlvbl9jaGVja19pbnRl cnZhbCk7Cit9CisKKworLyoKKyAqIENhbGwgY2FsbGJhY2tzIGZvciBjaGVja2luZyByZW1vdGUg c2VydmVycy4KKyAqCisgKiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiB3aWxsIG5vdCByZXR1cm4g YW55dGhpbmcuCisgKiBDYWxsYmFjayBmdW5jdGlvbnMgbXVzdCB0aHJvdyBlcmVwb3J0KEVSUk9S KSBpZiBkaXNjb25uZWN0aW9uIGhhcyBiZWVuIGRldGVjdGVkLgorICovCit2b2lkCitDYWxsQ2hl Y2tpbmdSZW1vdGVTZXJ2ZXJzQ2FsbGJhY2tzKHZvaWQpCit7CisJQ2hlY2tpbmdSZW1vdGVTZXJ2 ZXJzQ2FsbGJhY2tJdGVtICppdGVtOworCWZvciAoaXRlbSA9IGZkd19jYWxsYmFja3M7IGl0ZW07 IGl0ZW0gPSBpdGVtLT5uZXh0KQorCQlpdGVtLT5jYWxsYmFjayhpdGVtLT5hcmcpOworfQorCisv KgorICogQ2hlY2sgd2hldGhlciBhbnkgY2FsbGJhY2tzIGhhcyBiZWVuIHJlZ2lzdGVyZWQuCisg Ki8KK2Jvb2wKK0hhdmVDaGVja2luZ1JlbW90ZVNlcnZlcnNDYWxsYmFja3Modm9pZCkKK3sKKwly ZXR1cm4gZmR3X2NhbGxiYWNrcyAhPSBOVUxMOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv bGlicHEvcHFjb21tLmMgYi9zcmMvYmFja2VuZC9saWJwcS9wcWNvbW0uYwppbmRleCA4OWE1Zjkw MWFhLi4zMWUzOWI2Y2JmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9wcWNvbW0uYwor KysgYi9zcmMvYmFja2VuZC9saWJwcS9wcWNvbW0uYwpAQCAtMTE1OSw3ICsxMTU5LDYgQEAgcHFf c3RhcnRtc2dyZWFkKHZvaWQpCiAJCWVyZXBvcnQoRkFUQUwsCiAJCQkJKGVycmNvZGUoRVJSQ09E RV9QUk9UT0NPTF9WSU9MQVRJT04pLAogCQkJCSBlcnJtc2coInRlcm1pbmF0aW5nIGNvbm5lY3Rp b24gYmVjYXVzZSBwcm90b2NvbCBzeW5jaHJvbml6YXRpb24gd2FzIGxvc3QiKSkpOwotCiAJUHFD b21tUmVhZGluZ01zZyA9IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3Av cG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRleCAwNzc1YWJlMzVk Li5kNzg5MGI1MzA3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysr IGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVk ZSAiY29tbWFuZHMvYXN5bmMuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcmVwYXJlLmgiCiAjaW5j bHVkZSAiZXhlY3V0b3Ivc3BpLmgiCisjaW5jbHVkZSAiZm9yZWlnbi9mb3JlaWduLmgiCiAjaW5j bHVkZSAiaml0L2ppdC5oIgogI2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCiAjaW5jbHVkZSAibGli cHEvcHFmb3JtYXQuaCIKQEAgLTM0OSw2ICszNTAsNyBAQCBTb2NrZXRCYWNrZW5kKFN0cmluZ0lu Zm8gaW5CdWYpCiAJICogR2V0IG1lc3NhZ2UgdHlwZSBjb2RlIGZyb20gdGhlIGZyb250ZW5kLgog CSAqLwogCUhPTERfQ0FOQ0VMX0lOVEVSUlVQVFMoKTsKKwlIT0xEX0NIRUNLSU5HX1JFTU9URV9T RVJWRVJTX0lOVEVSUlVQVFMoKTsKIAlwcV9zdGFydG1zZ3JlYWQoKTsKIAlxdHlwZSA9IHBxX2dl dGJ5dGUoKTsKIApAQCAtNDU1LDYgKzQ1Nyw3IEBAIFNvY2tldEJhY2tlbmQoU3RyaW5nSW5mbyBp bkJ1ZikKIAkgKi8KIAlpZiAocHFfZ2V0bWVzc2FnZShpbkJ1ZiwgbWF4bXNnbGVuKSkKIAkJcmV0 dXJuIEVPRjsJCQkJLyogc3VpdGFibGUgbWVzc2FnZSBhbHJlYWR5IGxvZ2dlZCAqLworCVJFU1VN RV9DSEVDS0lOR19SRU1PVEVfU0VSVkVSU19JTlRFUlJVUFRTKCk7CiAJUkVTVU1FX0NBTkNFTF9J TlRFUlJVUFRTKCk7CiAKIAlyZXR1cm4gcXR5cGU7CkBAIC0yNzA4LDYgKzI3MTEsMTMgQEAgc3Rh cnRfeGFjdF9jb21tYW5kKHZvaWQpCiAJCSFnZXRfdGltZW91dF9hY3RpdmUoQ0xJRU5UX0NPTk5F Q1RJT05fQ0hFQ0tfVElNRU9VVCkpCiAJCWVuYWJsZV90aW1lb3V0X2FmdGVyKENMSUVOVF9DT05O RUNUSU9OX0NIRUNLX1RJTUVPVVQsCiAJCQkJCQkJIGNsaWVudF9jb25uZWN0aW9uX2NoZWNrX2lu dGVydmFsKTsKKwlpZiAocmVtb3RlX3NlcnZlcnNfY29ubmVjdGlvbl9jaGVja19pbnRlcnZhbCA+ IDAgJiYKKwkJSXNVbmRlclBvc3RtYXN0ZXIgJiYKKwkJTXlQcm9jUG9ydCAmJgorCQlIYXZlQ2hl Y2tpbmdSZW1vdGVTZXJ2ZXJzQ2FsbGJhY2tzKCkgJiYKKwkJIWdldF90aW1lb3V0X2FjdGl2ZShD SEVDS0lOR19SRU1PVEVfU0VSVkVSU19USU1FT1VUKSkKKwkJZW5hYmxlX3RpbWVvdXRfYWZ0ZXIo Q0hFQ0tJTkdfUkVNT1RFX1NFUlZFUlNfVElNRU9VVCwKKwkJCQkJCQkgcmVtb3RlX3NlcnZlcnNf Y29ubmVjdGlvbl9jaGVja19pbnRlcnZhbCk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0zMjEzLDYg KzMyMjMsMjQgQEAgUHJvY2Vzc0ludGVycnVwdHModm9pZCkKIAkJfQogCX0KIAorCWlmIChDaGVj a2luZ1JlbW90ZVNlcnZlcnNUaW1lb3V0UGVuZGluZyAmJiBDaGVja2luZ1JlbW90ZVNlcnZlcnNI b2xkb2ZmQ291bnQgIT0gMCkKKwl7CisJCS8qCisJCSAqIFNraXAgY2hlY2tpbmcgZm9yZWlnbiBz ZXJ2ZXJzIHdoaWxlIHJlYWRpbmcgbWVzc2FnZXMuCisJCSAqLworCQlJbnRlcnJ1cHRQZW5kaW5n ID0gdHJ1ZTsKKwl9CisJZWxzZSBpZiAoQ2hlY2tpbmdSZW1vdGVTZXJ2ZXJzVGltZW91dFBlbmRp bmcpCisJeworCQlDaGVja2luZ1JlbW90ZVNlcnZlcnNUaW1lb3V0UGVuZGluZyA9IGZhbHNlOwor CisJCUNhbGxDaGVja2luZ1JlbW90ZVNlcnZlcnNDYWxsYmFja3MoKTsKKworCQlpZiAocmVtb3Rl X3NlcnZlcnNfY29ubmVjdGlvbl9jaGVja19pbnRlcnZhbCA+IDApCisJCQllbmFibGVfdGltZW91 dF9hZnRlcihDSEVDS0lOR19SRU1PVEVfU0VSVkVSU19USU1FT1VULAorCQkJCQkJCQkJcmVtb3Rl X3NlcnZlcnNfY29ubmVjdGlvbl9jaGVja19pbnRlcnZhbCk7CisJfQorCiAJaWYgKENsaWVudENv bm5lY3Rpb25Mb3N0KQogCXsKIAkJUXVlcnlDYW5jZWxQZW5kaW5nID0gZmFsc2U7IC8qIGxvc3Qg Y29ubmVjdGlvbiB0cnVtcHMgUXVlcnlDYW5jZWwgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2luaXQvZ2xvYmFscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMK aW5kZXggMzgxZDllNTQ4ZC4uMTViMGMyNzI3YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvaW5pdC9nbG9iYWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMK QEAgLTM2LDkgKzM2LDExIEBAIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBJZGxlSW5UcmFuc2FjdGlv blNlc3Npb25UaW1lb3V0UGVuZGluZyA9IGZhbHNlOwogdm9sYXRpbGUgc2lnX2F0b21pY190IElk bGVTZXNzaW9uVGltZW91dFBlbmRpbmcgPSBmYWxzZTsKIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBQ cm9jU2lnbmFsQmFycmllclBlbmRpbmcgPSBmYWxzZTsKIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBM b2dNZW1vcnlDb250ZXh0UGVuZGluZyA9IGZhbHNlOwordm9sYXRpbGUgc2lnX2F0b21pY190IENo ZWNraW5nUmVtb3RlU2VydmVyc1RpbWVvdXRQZW5kaW5nID0gZmFsc2U7CiB2b2xhdGlsZSB1aW50 MzIgSW50ZXJydXB0SG9sZG9mZkNvdW50ID0gMDsKIHZvbGF0aWxlIHVpbnQzMiBRdWVyeUNhbmNl bEhvbGRvZmZDb3VudCA9IDA7CiB2b2xhdGlsZSB1aW50MzIgQ3JpdFNlY3Rpb25Db3VudCA9IDA7 Cit2b2xhdGlsZSB1aW50MzIgQ2hlY2tpbmdSZW1vdGVTZXJ2ZXJzSG9sZG9mZkNvdW50ID0gMDsK IAogaW50CQkJTXlQcm9jUGlkOwogcGdfdGltZV90CU15U3RhcnRUaW1lOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5p dC9wb3N0aW5pdC5jCmluZGV4IDc4YmM2NDY3MWUuLmZjZjVkMjQyNDggMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9p bml0L3Bvc3Rpbml0LmMKQEAgLTczLDYgKzczLDcgQEAgc3RhdGljIHZvaWQgTG9ja1RpbWVvdXRI YW5kbGVyKHZvaWQpOwogc3RhdGljIHZvaWQgSWRsZUluVHJhbnNhY3Rpb25TZXNzaW9uVGltZW91 dEhhbmRsZXIodm9pZCk7CiBzdGF0aWMgdm9pZCBJZGxlU2Vzc2lvblRpbWVvdXRIYW5kbGVyKHZv aWQpOwogc3RhdGljIHZvaWQgQ2xpZW50Q2hlY2tUaW1lb3V0SGFuZGxlcih2b2lkKTsKK3N0YXRp YyB2b2lkIENoZWNraW5nUmVtb3RlU2VydmVyc1RpbWVvdXRIYW5kbGVyKHZvaWQpOwogc3RhdGlj IGJvb2wgVGhlcmVJc0F0TGVhc3RPbmVSb2xlKHZvaWQpOwogc3RhdGljIHZvaWQgcHJvY2Vzc19z dGFydHVwX29wdGlvbnMoUG9ydCAqcG9ydCwgYm9vbCBhbV9zdXBlcnVzZXIpOwogc3RhdGljIHZv aWQgcHJvY2Vzc19zZXR0aW5ncyhPaWQgZGF0YWJhc2VpZCwgT2lkIHJvbGVpZCk7CkBAIC02MTUs NiArNjE2LDcgQEAgSW5pdFBvc3RncmVzKGNvbnN0IGNoYXIgKmluX2RibmFtZSwgT2lkIGRib2lk LCBjb25zdCBjaGFyICp1c2VybmFtZSwKIAkJCQkJCUlkbGVJblRyYW5zYWN0aW9uU2Vzc2lvblRp bWVvdXRIYW5kbGVyKTsKIAkJUmVnaXN0ZXJUaW1lb3V0KElETEVfU0VTU0lPTl9USU1FT1VULCBJ ZGxlU2Vzc2lvblRpbWVvdXRIYW5kbGVyKTsKIAkJUmVnaXN0ZXJUaW1lb3V0KENMSUVOVF9DT05O RUNUSU9OX0NIRUNLX1RJTUVPVVQsIENsaWVudENoZWNrVGltZW91dEhhbmRsZXIpOworCQlSZWdp c3RlclRpbWVvdXQoQ0hFQ0tJTkdfUkVNT1RFX1NFUlZFUlNfVElNRU9VVCwgQ2hlY2tpbmdSZW1v dGVTZXJ2ZXJzVGltZW91dEhhbmRsZXIpOwogCX0KIAogCS8qCkBAIC0xMjQ1LDYgKzEyNDcsMTQg QEAgQ2xpZW50Q2hlY2tUaW1lb3V0SGFuZGxlcih2b2lkKQogCVNldExhdGNoKE15TGF0Y2gpOwog fQogCitzdGF0aWMgdm9pZAorQ2hlY2tpbmdSZW1vdGVTZXJ2ZXJzVGltZW91dEhhbmRsZXIodm9p ZCkKK3sKKwlDaGVja2luZ1JlbW90ZVNlcnZlcnNUaW1lb3V0UGVuZGluZyA9IHRydWU7CisJSW50 ZXJydXB0UGVuZGluZyA9IHRydWU7CisJU2V0TGF0Y2goTXlMYXRjaCk7Cit9CisKIC8qCiAgKiBS ZXR1cm5zIHRydWUgaWYgYXQgbGVhc3Qgb25lIHJvbGUgaXMgZGVmaW5lZCBpbiB0aGlzIGRhdGFi YXNlIGNsdXN0ZXIuCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3Vj LmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCmluZGV4IGU5MWQ1YTNjZmQuLjI0MTcy ZGU3YTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwpAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgImNv bW1hbmRzL3ZhY3V1bS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhcmlhYmxlLmgiCiAjaW5jbHVk ZSAiY29tbW9uL3N0cmluZy5oIgorI2luY2x1ZGUgImZvcmVpZ24vZm9yZWlnbi5oIgogI2luY2x1 ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJqaXQvaml0LmgiCiAjaW5jbHVkZSAibGlicHEvYXV0 aC5oIgpAQCAtMTA1LDYgKzEwNiw3IEBACiAjaW5jbHVkZSAidXRpbHMvcXVlcnlqdW1ibGUuaCIK ICNpbmNsdWRlICJ1dGlscy9ybHMuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCisjaW5j bHVkZSAidXRpbHMvdGltZW91dC5oIgogI2luY2x1ZGUgInV0aWxzL3R6cGFyc2VyLmgiCiAjaW5j bHVkZSAidXRpbHMvaW52YWwuaCIKICNpbmNsdWRlICJ1dGlscy92YXJsZW5hLmgiCkBAIC0zNTgz LDYgKzM1ODUsMTcgQEAgc3RhdGljIHN0cnVjdCBjb25maWdfaW50IENvbmZpZ3VyZU5hbWVzSW50 W10gPQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKIAorCisJeworCQl7InJlbW90ZV9zZXJ2ZXJz X2Nvbm5lY3Rpb25fY2hlY2tfaW50ZXJ2YWwiLCBQR0NfVVNFUlNFVCwgQ09OTl9BVVRIX1NFVFRJ TkdTLAorCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRoZSB0aW1lIGludGVydmFsIGJldHdlZW4gY2hl Y2tzIGZvciBkaXNjb25uZWN0aW9uIG9mIHJlbW90ZSBzZXJ2ZXJzLiIpLAorCQkJTlVMTCwKKwkJ CUdVQ19VTklUX01TCisJCX0sCisJCSZyZW1vdGVfc2VydmVyc19jb25uZWN0aW9uX2NoZWNrX2lu dGVydmFsLAorCQkwLCAwLCBJTlRfTUFYLAorCX0sCisKIAkvKiBFbmQtb2YtbGlzdCBtYXJrZXIg Ki8KIAl7CiAJCXtOVUxMLCAwLCAwLCBOVUxMLCBOVUxMfSwgTlVMTCwgMCwgMCwgMCwgTlVMTCwg TlVMTCwgTlVMTApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3Fs LmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2Ft cGxlCmluZGV4IDFjYmM5ZmVlYjYuLjliNzA3NjFkOWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGls cy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTkwLDYgKzkwLDEwIEBACiAJCQkJCSMg ZGlzY29ubmVjdGlvbiB3aGlsZSBydW5uaW5nIHF1ZXJpZXM7CiAJCQkJCSMgMCBmb3IgbmV2ZXIK IAorI3JlbW90ZV9zZXJ2ZXJzX2Nvbm5lY3Rpb25fY2hlY2tfaW50ZXJ2YWwgPSAwCSMgdGltZSBi ZXR3ZWVuIHRpbWUgYmV0d2VlbiBjaGVja3MgZm9yCisJCQkJCSMgZm9yZWlnbiBzZXJ2ZXIgZGlz Y29ubmVjdGlvbjsKKwkJCQkJIyAwIGZvciBuZXZlcgorCiAjIC0gQXV0aGVudGljYXRpb24gLQog CiAjYXV0aGVudGljYXRpb25fdGltZW91dCA9IDFtaW4JCSMgMXMtNjAwcwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvZm9yZWlnbi9mb3JlaWduLmggYi9zcmMvaW5jbHVkZS9mb3JlaWduL2ZvcmVp Z24uaAppbmRleCA4MTY5ZWI3NmIxLi45OGY1OWMxMTUzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9mb3JlaWduL2ZvcmVpZ24uaAorKysgYi9zcmMvaW5jbHVkZS9mb3JlaWduL2ZvcmVpZ24uaApA QCAtODEsNCArODEsMjAgQEAgZXh0ZXJuIExpc3QgKkdldEZvcmVpZ25Db2x1bW5PcHRpb25zKE9p ZCByZWxpZCwgQXR0ck51bWJlciBhdHRudW0pOwogZXh0ZXJuIE9pZAlnZXRfZm9yZWlnbl9kYXRh X3dyYXBwZXJfb2lkKGNvbnN0IGNoYXIgKmZkd25hbWUsIGJvb2wgbWlzc2luZ19vayk7CiBleHRl cm4gT2lkCWdldF9mb3JlaWduX3NlcnZlcl9vaWQoY29uc3QgY2hhciAqc2VydmVybmFtZSwgYm9v bCBtaXNzaW5nX29rKTsKIAorCisvKiBmdW5jdGlvbnMgYW5kIHZhcmlhYmxlcyBmb3IgZmR3IGNo ZWNraW5nLiAqLwordHlwZWRlZiB2b2lkICgqQ2hlY2tpbmdSZW1vdGVTZXJ2ZXJzQ2FsbGJhY2sp ICh2b2lkICphcmcpOwordHlwZWRlZiBzdHJ1Y3QgQ2hlY2tpbmdSZW1vdGVTZXJ2ZXJzQ2FsbGJh Y2tJdGVtCit7CisJc3RydWN0IENoZWNraW5nUmVtb3RlU2VydmVyc0NhbGxiYWNrSXRlbSAqbmV4 dDsKKwlDaGVja2luZ1JlbW90ZVNlcnZlcnNDYWxsYmFjayBjYWxsYmFjazsKKwl2b2lkCQkqYXJn OworfSBDaGVja2luZ1JlbW90ZVNlcnZlcnNDYWxsYmFja0l0ZW07CisKK2V4dGVybiB2b2lkIFJl Z2lzdGVyQ2hlY2tpbmdSZW1vdGVTZXJ2ZXJzQ2FsbGJhY2soQ2hlY2tpbmdSZW1vdGVTZXJ2ZXJz Q2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQgKmFyZyk7CitleHRlcm4gdm9pZCBDYWxsQ2hlY2tpbmdS ZW1vdGVTZXJ2ZXJzQ2FsbGJhY2tzKHZvaWQpOworZXh0ZXJuIGJvb2wgSGF2ZUNoZWNraW5nUmVt b3RlU2VydmVyc0NhbGxiYWNrcyh2b2lkKTsKKworZXh0ZXJuIGludCByZW1vdGVfc2VydmVyc19j b25uZWN0aW9uX2NoZWNrX2ludGVydmFsOworCiAjZW5kaWYJCQkJCQkJLyogRk9SRUlHTl9IICov CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaCBiL3NyYy9pbmNsdWRlL21pc2Nh ZG1pbi5oCmluZGV4IDkwYTMwMTYwNjUuLjM3N2ZjNjhhYWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL21pc2NhZG1pbi5oCisrKyBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCkBAIC05OCwxMCAr OTgsMTMgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBMb2dNZW1v cnlDb250ZXh0UGVuZGluZzsKIGV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWlj X3QgQ2hlY2tDbGllbnRDb25uZWN0aW9uUGVuZGluZzsKIGV4dGVybiBQR0RMTElNUE9SVCB2b2xh dGlsZSBzaWdfYXRvbWljX3QgQ2xpZW50Q29ubmVjdGlvbkxvc3Q7CiAKK2V4dGVybiBQR0RMTElN UE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgQ2hlY2tpbmdSZW1vdGVTZXJ2ZXJzVGltZW91dFBl bmRpbmc7CisKIC8qIHRoZXNlIGFyZSBtYXJrZWQgdm9sYXRpbGUgYmVjYXVzZSB0aGV5IGFyZSBl eGFtaW5lZCBieSBzaWduYWwgaGFuZGxlcnM6ICovCiBleHRlcm4gUEdETExJTVBPUlQgdm9sYXRp bGUgdWludDMyIEludGVycnVwdEhvbGRvZmZDb3VudDsKIGV4dGVybiBQR0RMTElNUE9SVCB2b2xh dGlsZSB1aW50MzIgUXVlcnlDYW5jZWxIb2xkb2ZmQ291bnQ7CiBleHRlcm4gUEdETExJTVBPUlQg dm9sYXRpbGUgdWludDMyIENyaXRTZWN0aW9uQ291bnQ7CitleHRlcm4gUEdETExJTVBPUlQgdm9s YXRpbGUgdWludDMyIENoZWNraW5nUmVtb3RlU2VydmVyc0hvbGRvZmZDb3VudDsKIAogLyogaW4g dGNvcC9wb3N0Z3Jlcy5jICovCiBleHRlcm4gdm9pZCBQcm9jZXNzSW50ZXJydXB0cyh2b2lkKTsK QEAgLTEyNiw3ICsxMjksNyBAQCBkbyB7IFwKIC8qIElzIFByb2Nlc3NJbnRlcnJ1cHRzKCkgZ3Vh cmFudGVlZCB0byBjbGVhciBJbnRlcnJ1cHRQZW5kaW5nPyAqLwogI2RlZmluZSBJTlRFUlJVUFRT X0NBTl9CRV9QUk9DRVNTRUQoKSBcCiAJKEludGVycnVwdEhvbGRvZmZDb3VudCA9PSAwICYmIENy aXRTZWN0aW9uQ291bnQgPT0gMCAmJiBcCi0JIFF1ZXJ5Q2FuY2VsSG9sZG9mZkNvdW50ID09IDAp CisJIFF1ZXJ5Q2FuY2VsSG9sZG9mZkNvdW50ID09IDAgJiYgQ2hlY2tpbmdSZW1vdGVTZXJ2ZXJz SG9sZG9mZkNvdW50ID09IDApCiAKICNkZWZpbmUgSE9MRF9JTlRFUlJVUFRTKCkgIChJbnRlcnJ1 cHRIb2xkb2ZmQ291bnQrKykKIApAQCAtMTUyLDYgKzE1NSwxMyBAQCBkbyB7IFwKIAlDcml0U2Vj dGlvbkNvdW50LS07IFwKIH0gd2hpbGUoMCkKIAorI2RlZmluZSBIT0xEX0NIRUNLSU5HX1JFTU9U RV9TRVJWRVJTX0lOVEVSUlVQVFMoKSAgKENoZWNraW5nUmVtb3RlU2VydmVyc0hvbGRvZmZDb3Vu dCsrKQorCisjZGVmaW5lIFJFU1VNRV9DSEVDS0lOR19SRU1PVEVfU0VSVkVSU19JTlRFUlJVUFRT KCkgXAorZG8geyBcCisJQXNzZXJ0KENoZWNraW5nUmVtb3RlU2VydmVyc0hvbGRvZmZDb3VudCA+ IDApOyBcCisJQ2hlY2tpbmdSZW1vdGVTZXJ2ZXJzSG9sZG9mZkNvdW50LS07IFwKK30gd2hpbGUo MCkKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgkgIGdsb2JhbHMuaCAtLQkJCQkJCQkJCQkJ CQkJCSAqCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy90aW1lb3V0LmggYi9zcmMvaW5j bHVkZS91dGlscy90aW1lb3V0LmgKaW5kZXggMmNiYzVkZTRkOS4uY2ViNmIxYzEyYyAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvdGltZW91dC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxz L3RpbWVvdXQuaApAQCAtMzQsNiArMzQsNyBAQCB0eXBlZGVmIGVudW0gVGltZW91dElkCiAJSURM RV9TRVNTSU9OX1RJTUVPVVQsCiAJQ0xJRU5UX0NPTk5FQ1RJT05fQ0hFQ0tfVElNRU9VVCwKIAlT VEFSVFVQX1BST0dSRVNTX1RJTUVPVVQsCisJQ0hFQ0tJTkdfUkVNT1RFX1NFUlZFUlNfVElNRU9V VCwKIAkvKiBGaXJzdCB1c2VyLWRlZmluYWJsZSB0aW1lb3V0IHJlYXNvbiAqLwogCVVTRVJfVElN RU9VVCwKIAkvKiBNYXhpbXVtIG51bWJlciBvZiB0aW1lb3V0IHJlYXNvbnMgKi8K --_003_TYAPR01MB58662CD4FD98AA475B3D10F9F59B9TYAPR01MB5866jpnp_--