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 1voJhQ-001ESM-2l for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Feb 2026 11:08:33 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1voJhP-003Mw7-2n for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Feb 2026 11:08:31 +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 1voJhP-003Mvz-13 for pgsql-hackers@lists.postgresql.org; Fri, 06 Feb 2026 11:08:31 +0000 Received: from mail-westus3azolkn19012013.outbound.protection.outlook.com ([52.103.23.13] helo=PH8PR06CU001.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1voJhM-00000001Lm4-0sVc for pgsql-hackers@postgresql.org; Fri, 06 Feb 2026 11:08:30 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gyQZqHPJktpAN+PWMDa0MSd2RuElXtVJ8nMk7/4gbmKK7VJMrKLDg1Ly7klPfTwUVm6CAPlkGEEEIhpnAM365uWBfxLO8bBezWT07ZynewdEeY9PQenh7ZIegTUvJ0cFPNGqOeBJGNvVCwOb4DxlD0k3FvemwgrzWC5osyYiR0frBNlxyZTh2EcMvMpQH7cY7mQ3GEKjvPrtYUY9ZtqW1beYBFTGrdDe3MkqHdXHaEpJcHut37py8OdVSwD1sOLR5uG78C6fXGSpOO+WDiWdmPx5QMVeyQNwfLMarDQ+O0krpgDc4iwNEPh/hlVicg0kZI6jDX/+fikgIOGH7DRc9Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=03Q0HmDM8n5RK5XKK9GGqKQUzdaTbDdbb3IsQWOd7Ac=; b=Ak27l44CVCKsUaJfIeZ42MD+JZpgy9cydD/VGZz8o5smzvkLOnUF2dD+YVl0llxGumlu9BGtFffzg33HbDfxPleHn1sOWuZjGLmhifR8oFHBcXT51AQNDKhbmg5lLSzJjmeZiuXEGZJENI4uydkbvSSB9CFrizGYfM6AsFE9rlZpsFREhOC1EhX5fZzsVBW+ae+4IcyHQjlZ6loqvGIuDCVUUBEqrW3hYr9B+CUWyf27rK8EZqPBluOkGRECErV5AouV279dt/fyy0iMxGSQoa3dunDhkQBlEozQpnjthPYC4ovI6UqibZZwqib3I1AhLAR+xpxABGp7bc4y4/WJOg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=03Q0HmDM8n5RK5XKK9GGqKQUzdaTbDdbb3IsQWOd7Ac=; b=aOkVFMBYPsSjijW2Ugsm2WLbARgvrBCK5SYA4PIDahPZa0IYTW03chwKd4Y/wy2m8wt2CLgR6Y1r/YtYQHsbfbgXpU59rON1httk0HSsRf7P/KKTcPmB9t5s3t+/P+/x51Kd4835dNAXQKY8sOJJS61zkyIEd6ZQKLiDCeqWF6BOepZMiu3zuqxyUiQLZ2Ux9vMELf1MufqLs0xDSA8zXLSVUxE/6dM6wVmRDUCRNWWx2IcjpolWgZOQdYbDdXReXPq9vZlkq0MfwbPysSrdx1s5OJ4L0rP4zMdBQhKGkkIaNycP1pVehMzlNLHwD/VRKhNNxJbfh2K0MVwp4YkNrQ== Received: from PH0PR08MB7020.namprd08.prod.outlook.com (2603:10b6:510:74::15) by MN2PR08MB6349.namprd08.prod.outlook.com (2603:10b6:208:1a1::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9587.12; Fri, 6 Feb 2026 11:08:23 +0000 Received: from PH0PR08MB7020.namprd08.prod.outlook.com ([fe80::129a:a42a:445c:3273]) by PH0PR08MB7020.namprd08.prod.outlook.com ([fe80::129a:a42a:445c:3273%4]) with mapi id 15.20.9587.013; Fri, 6 Feb 2026 11:08:23 +0000 From: Boris Mironov To: Madyshev Egor , "pgsql-hackers@postgresql.org" Subject: Re: Idea to enhance pgbench by more modes to generate data (multi-TXNs, UNNEST, COPY BINARY) Thread-Topic: Idea to enhance pgbench by more modes to generate data (multi-TXNs, UNNEST, COPY BINARY) Thread-Index: AQHcUwuRPlzLCtdZw06GAdoL15fmHbTwZ0aAgAGpzjGAACRkgIAAEcrGgAQQLgCAAG6d+YAGXmPMgAFzjL6AAV1tS4BpseD8gAEgG5GAAGN+EIAAFWg0gArDj2mAAAeBfg== Date: Fri, 6 Feb 2026 11:08:23 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-CA, en-US Content-Language: en-CA X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH0PR08MB7020:EE_|MN2PR08MB6349:EE_ x-ms-office365-filtering-correlation-id: 2547a7a1-2841-4e74-2493-08de65700b4a x-ms-exchange-slblob-mailprops: zZTkHIKWWP8EXRfSHz/+bmvhnEayH3FsvHxtzuJRxY9FYCvlzX31B/smfiEA79o6qRUMr8KdmXL14fJv60147N3yXK3k5TI0hUQjZnX/fGjufmJ3jjCoVKIkKOQsISxZR+WUrvR5igS7X5ghpS5XWmOyAZMM+H/vZerEnP1DpXveLNUUIDtHZnFKLtueorle/at26KHxck6oz557fkXfgABTzKXunQsYEEBt3RHsT8w0UOEsIY50KpjojYATUgdbqgmZ5xbuOMgl6WkZp0E/NjB4cF4x3/2u8LQwiWqJ+2+1Az1V9l9B4vpe+y8NJ9f0L+SXUnkqcMipgrxtSMh+FAsr5dCEy3BQNtq108SqmW7YL5vETXB28pHwKZ2H5fItT4c3bqU/lmfr3jv0IfBm5AzN3uD5V3YhFmdvHUqJEWAyEDhuZmion1lxGmYFHHwgdNrB9hOK9t0UZXnZdMDa+sK14jn5dBrK3RxRoLOLnM4fKbahorv5g0cWnM64VpJe3UFeVwNrud0vhEp0TcrcVH9rL2bx7oU0vyvXHfgaM199O/CD+2USwi2LsfAAus9PW9iNsIdUxCYSr27q4atWvqN3b6x51tXBasknY6a6k3cBbp5EML/RPjNbI6S+aJNqlkT4GF0mzKXnqY6cpMYWbOKHRh+5CPPqKCsqxwU0fvRwmgr2uKAEgw== x-microsoft-antispam: BCL:0;ARA:14566002|461199028|15080799012|15030799006|31061999003|6092099016|51005399006|19110799012|8060799015|8062599012|3412199025|440099028|40105399003|102099032; x-microsoft-antispam-message-info: =?iso-8859-1?Q?cQEdD8Kgjzr2vF75GFkPWAlz0DAqex/QNNrWl/MTRJJc6F3CGxQFp0t0El?= =?iso-8859-1?Q?6LH5R+T5QMWGIAJyqm+pNRijVoHq5CQ6XCAZmzGsjItZ09ap6yleJ6+tzy?= =?iso-8859-1?Q?GKkXUpraPKhowvd+8Us/L9jvyprV0qbAwPDutCuzgH0nWWSqVADkr8DsZO?= =?iso-8859-1?Q?4np5ukK17aQVycyWjKQQz11Oc8ml/NJn0tX6wK6pih5MvAtCsukzSbXKjA?= =?iso-8859-1?Q?Qk9uumRavOZlmOJ6vXGIG7Hpo3SeDvuDeRwclGAH5IHfdLIff7HDASYpuJ?= =?iso-8859-1?Q?GpBgvf36XFXhVH4rnf19zfs/XutSfjFedhJpAO3D24Kuq4dqfQp0cuUSh7?= =?iso-8859-1?Q?HVGS5UFXnz4tu1Cj70nNZsTKttFvdDIkGZo4cdKWnVIIy0cR231ZPULWAS?= =?iso-8859-1?Q?WLQjRa1Z8BcrNt1u5q/LC/0WuV/94m1dLJnBYZt/VhflLEpmAU/0Ci6XUA?= =?iso-8859-1?Q?Ft3EdyXzVLkjuqz+4zarcrdpSUTPS8J7lUow7BtUkF8O5HykM6HT2EPHwy?= =?iso-8859-1?Q?VCELQJ4mdGz4zfqIRE0XFB0+onAw5gt/YojReuruCEljhrjvOwb7v5n9o6?= =?iso-8859-1?Q?eOpBjEnBFhgpJD24ETgoB90uWHdb3LpUbgAUmJ5+QcF4hDuXniAO/RsWY/?= =?iso-8859-1?Q?T5iWEGMhQER1tVUCj2GXAdJae0X1qYITab5g/N5vmROPQZrG5ZnK+mDVlm?= =?iso-8859-1?Q?azrHZbI6/h41w0j5DQLtDpxw4x32RSOkAH0IqxYhvnep6MJMItxvQ0KTBc?= =?iso-8859-1?Q?jkJnYahQr+vAexEe1NfTosEGuuij0sTAP4SE2FBn9f5pxwV9Fq1dl9OK3k?= =?iso-8859-1?Q?1xaEtle3v+DxfylCp1dflEiqpFwtePrruIyaP2dSYOiQWkJqtubsz7Yaja?= =?iso-8859-1?Q?X9X14GiKVXrHAUI16ux1rSeE/6t1iL8SF0lVPFdPJIjD1pcY+m73k8BpXy?= =?iso-8859-1?Q?v3iAcrhxsDRQ3bN2ti9yOhGJCvrkme+BRBmq+UTZZj7Kii3a2M9t0hN2OD?= =?iso-8859-1?Q?MPtKXZSofCXUQDfWSiW+wm+7eC4/UIAkYgvOhueTn7NtnoZyZCBMID0u4A?= =?iso-8859-1?Q?/uNrgpjsRCSnokuBMMwmLHH05utxYvocRQA793xLHU1qUGVKvxP0BxLt/2?= =?iso-8859-1?Q?evDdUqWkfNGDySfXpkcN1aF+N3iRBn+WQPa5IUCo5h3WkioPwWZGJa408q?= =?iso-8859-1?Q?Dq+95El1QTnHEIaO+Ih+p67bjdXXurDjNiE0PnKpHCAWXnAuCzZBON0bOt?= =?iso-8859-1?Q?GgA+SFF+7ceAXgKatRaGS6vDNaXjiwYa7227BbNb8=3D?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?TkBb4awo6bXJmU5ZX0GgBjW0BDvvKN/x3TXyw9pjKBRJ7Kux616tDFENvo?= =?iso-8859-1?Q?O4qouSkJgZerqvkZX9UCiG5U92Ljat6C7lQO6EmcC+/Xl1K9x3J7VRAAhi?= =?iso-8859-1?Q?nknbEZR3ihNCxYA4PszPwAqdO/g+n7tHTkDdOs4KKoNly6UPjit130B5AA?= =?iso-8859-1?Q?LXcUZLGlnIur+CfiPQl8IAZmKa449ShJY3OAPpfar5pSdnFY5lhCKT7aks?= =?iso-8859-1?Q?vqRMil7K69LNQntfmDVOBljqfnD36voLZPQWyeMJHYlL6NpfvvqIBbZzID?= =?iso-8859-1?Q?sYLr0EuFun5q9Xmco25kjHJMzVAw/e+cQbrP4aIq/XJqJEWBta76bS7FVl?= =?iso-8859-1?Q?EzkE97V2HfGSiHbHACp0AzWhuZO236FsjaudzhM3vvXKAqgOzO6OWFGiIy?= =?iso-8859-1?Q?4w8NrdzTBA5rM4SlGwW1CtUlBBfwTvXYMnCY97Nb3JRBsdi2Lai/on2tP7?= =?iso-8859-1?Q?9rJwgLQUcU/e3FDDzLKd9lmgNhai3P7E3HAawFXDw39W5mLMvBrQv5zLNC?= =?iso-8859-1?Q?KN7vg9Ssj9aV1uCZCzQ0ZGak6CSdSxX0JM3c4M7PIAlx/u6m4pyat+4Mw9?= =?iso-8859-1?Q?xpq2tSroZSaKf7G+Chy2yL1mPNn3FHks4xqKqw1+R0F7SDdgp5Kd89rcYS?= =?iso-8859-1?Q?Q1LLfWH+EznyGpTZEPhhKbyvDPDwc+W9pOxtOMMTplflhZye1t+IVsw352?= =?iso-8859-1?Q?74426obgXgjOf8Imz7ajzrEV4MupAJS7TTsbH0KNGjfN61Az8DELOoYcLQ?= =?iso-8859-1?Q?fVk+NXKFxmXaY98fwmhYq6g+Z0/eQQTus/kr7dtEdoDJGKfDaAXvj+f4XF?= =?iso-8859-1?Q?XNZEdALWQA67JOyzwEWwwDOMuUXtxGMe23I7i3bhu9UOsGdQVB8Pp1uc0c?= =?iso-8859-1?Q?nkWWzAsDfxuco6b7N/Q83SXGz4lCLCibviPB2+1iY8CJRfR3ds+FtPncS+?= =?iso-8859-1?Q?IB6mZf7okTKEgclrYgpxmieCApTaqWQww3BHIKbX9/cwjwUenBS6M7CudT?= =?iso-8859-1?Q?eAkM2/RmvkF9u70YQPV2anWHTf1+BCOMSUNbdaoxeXrZTa+ndZq+nbvGTh?= =?iso-8859-1?Q?WgiM1SM54Xgcfq88kbPsvPW69zSGGRS/JVigjZYnfg4wrdTrZip0oyvzHz?= =?iso-8859-1?Q?vwHzVe/DmbtWbkgoQKajx/DMdYcwNEXcpgtedw93IdYlBtEBkE2xBlbKqa?= =?iso-8859-1?Q?2rnjQXJE8VU9ksdxbqmWXt/eTS3jge3cMdAh3saVNDGHsotKVMZIq++RcU?= =?iso-8859-1?Q?uGCcSGyb9Uesbbf1CgtzVtFnM+wfAohQ6PRBE3q03HL8u5jrxAfFjI23QA?= =?iso-8859-1?Q?4W3dBlXBELmWTJLM1khcXqqxxrdiZtf4VZkHOwxzthkIcYyEL3db75J2Fe?= =?iso-8859-1?Q?HwUwz0LeaZ84c4uQeqxBoiKqIkYuw8ECA4cJUM+FPL2BpLmGM1Gy1JnFXO?= =?iso-8859-1?Q?L+IVyRUWGyKCo6MMtwbxT6vf6g+JvyzEhh1/YA=3D=3D?= Content-Type: multipart/mixed; boundary="_004_PH0PR08MB70207B96C493E5777DB4D6428866APH0PR08MB7020namp_" MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR08MB7020.namprd08.prod.outlook.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 2547a7a1-2841-4e74-2493-08de65700b4a X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Feb 2026 11:08:23.2713 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR08MB6349 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_004_PH0PR08MB70207B96C493E5777DB4D6428866APH0PR08MB7020namp_ Content-Type: multipart/alternative; boundary="_000_PH0PR08MB70207B96C493E5777DB4D6428866APH0PR08MB7020namp_" --_000_PH0PR08MB70207B96C493E5777DB4D6428866APH0PR08MB7020namp_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Resending patch as Excel spreadsheet took over second attachment in last em= ail and testing bot got confused --_000_PH0PR08MB70207B96C493E5777DB4D6428866APH0PR08MB7020namp_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Resending patch as Excel spreadsheet took over second attachment in last em= ail and testing bot got confused
--_000_PH0PR08MB70207B96C493E5777DB4D6428866APH0PR08MB7020namp_-- --_004_PH0PR08MB70207B96C493E5777DB4D6428866APH0PR08MB7020namp_ Content-Type: application/octet-stream; name="v7-pgbench-faster-modes.patch" Content-Description: v7-pgbench-faster-modes.patch Content-Disposition: attachment; filename="v7-pgbench-faster-modes.patch"; size=83239; creation-date="Fri, 06 Feb 2026 11:08:02 GMT"; modification-date="Fri, 06 Feb 2026 11:08:05 GMT" Content-Transfer-Encoding: base64 RnJvbSBjNzY4ZjM5OWM1NTYyOTVkZTdkNTM4OTU0MTBlNjg2ZDg2YjRiOTYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCb3JpcyBNaXJvbm92IDxib3Jpcy5taXJvbm92QGdtYWlsLmNv bT4KRGF0ZTogU3VuLCA5IE5vdiAyMDI1IDE5OjM0OjU4ICswNzAwClN1YmplY3Q6IFtQQVRDSCB2 NyAwMS8xOF0gQ29udmVydGluZyBvbmUgaHVnZSB0cmFuc2FjdGlvbiBpbnRvIHNlcmllcyBvZiBv bmUKIHBlciAnc2NhbGUnCgotLS0KIHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgfCA2MSArKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0MSBp bnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVu Y2gvcGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwppbmRleCBkODc2NGJhNmZl MC4uMjg0YTdjODYwZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKKysr IGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtMTgxLDYgKzE4MSwxMiBAQCBzdGF0aWMg aW50NjQgZW5kX3RpbWUgPSAwOwkJLyogd2hlbiB0byBzdG9wIGluIG1pY3JvIHNlY29uZHMsIHVu ZGVyIC1UICovCiAgKi8KIHN0YXRpYyBpbnQJc2NhbGUgPSAxOwogCisvKgorICogc2NhbGluZyBm YWN0b3IgYWZ0ZXIgd2hpY2ggd2Ugc3dpdGNoIHRvIG11bHRpcGxlIHRyYW5zYWN0aW9ucyBkdXJp bmcKKyAqIGRhdGEgcG9wdWxhdGlvbiBwaGFzZSBvbiBzZXJ2ZXIgc2lkZQorICovCitzdGF0aWMg aW50NjQJc2luZ2xlX3R4bl9zY2FsZV9saW1pdCA9IDE7CisKIC8qCiAgKiBmaWxsZmFjdG9yLiBm b3IgZXhhbXBsZSwgZmlsbGZhY3RvciA9IDkwIHdpbGwgdXNlIG9ubHkgOTAgcGVyY2VudAogICog c3BhY2UgZHVyaW5nIGluc2VydHMgYW5kIGxlYXZlIDEwIHBlcmNlbnQgZnJlZS4KQEAgLTUyMTMs NiArNTIxOSw3IEBAIHN0YXRpYyB2b2lkCiBpbml0R2VuZXJhdGVEYXRhU2VydmVyU2lkZShQR2Nv bm4gKmNvbikKIHsKIAlQUUV4cEJ1ZmZlckRhdGEgc3FsOworCWludAkJCQljaHVuayA9IChzY2Fs ZSA+PSBzaW5nbGVfdHhuX3NjYWxlX2xpbWl0KSA/IDEgOiBzY2FsZTsKIAogCWZwcmludGYoc3Rk ZXJyLCAiZ2VuZXJhdGluZyBkYXRhIChzZXJ2ZXItc2lkZSkuLi5cbiIpOwogCkBAIC01MjI1LDMw ICs1MjMyLDQ0IEBAIGluaXRHZW5lcmF0ZURhdGFTZXJ2ZXJTaWRlKFBHY29ubiAqY29uKQogCS8q IHRydW5jYXRlIGF3YXkgYW55IG9sZCBkYXRhICovCiAJaW5pdFRydW5jYXRlVGFibGVzKGNvbik7 CiAKKwlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOworCiAJaW5pdFBRRXhwQnVmZmVy KCZzcWwpOwogCi0JcHJpbnRmUFFFeHBCdWZmZXIoJnNxbCwKLQkJCQkJICAiaW5zZXJ0IGludG8g cGdiZW5jaF9icmFuY2hlcyhiaWQsYmJhbGFuY2UpICIKLQkJCQkJICAic2VsZWN0IGJpZCwgMCAi Ci0JCQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsICVkKSBhcyBiaWQiLCBuYnJhbmNoZXMg KiBzY2FsZSk7Ci0JZXhlY3V0ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsKLQotCXByaW50ZlBR RXhwQnVmZmVyKCZzcWwsCi0JCQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hfdGVsbGVycyh0aWQs YmlkLHRiYWxhbmNlKSAiCi0JCQkJCSAgInNlbGVjdCB0aWQsICh0aWQgLSAxKSAvICVkICsgMSwg MCAiCi0JCQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsICVkKSBhcyB0aWQiLCBudGVsbGVy cywgbnRlbGxlcnMgKiBzY2FsZSk7Ci0JZXhlY3V0ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsK LQotCXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCi0JCQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hf YWNjb3VudHMoYWlkLGJpZCxhYmFsYW5jZSxmaWxsZXIpICIKLQkJCQkJICAic2VsZWN0IGFpZCwg KGFpZCAtIDEpIC8gJWQgKyAxLCAwLCAnJyAiCi0JCQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVz KDEsICIgSU5UNjRfRk9STUFUICIpIGFzIGFpZCIsCi0JCQkJCSAgbmFjY291bnRzLCAoaW50NjQp IG5hY2NvdW50cyAqIHNjYWxlKTsKLQlleGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOwor CWZvciAoaW50IGkgPSAwOyBpIDwgc2NhbGU7IGkgKz0gY2h1bmspIHsKKwkJZXhlY3V0ZVN0YXRl bWVudChjb24sICJiZWdpbiIpOworCisJCXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCisJCQkJCQkg ICJpbnNlcnQgaW50byBwZ2JlbmNoX2JyYW5jaGVzKGJpZCxiYmFsYW5jZSkgIgorCQkJCQkJICAi c2VsZWN0IGJpZCArIDEsIDAgIgorCQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoJWQsICVk KSBhcyBiaWQiLCBpLCBpICsgY2h1bmspOworCQkJCQkJICAvLyJzZWxlY3QgYmlkLCAwICIKKwkJ CQkJCSAgLy8iZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwgJWQpIGFzIGJpZCIsIG5icmFuY2hlcyAq IHNjYWxlKTsKKwkJZXhlY3V0ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsKKworCQlwcmludGZQ UUV4cEJ1ZmZlcigmc3FsLAorCQkJCQkJICAiaW5zZXJ0IGludG8gcGdiZW5jaF90ZWxsZXJzKHRp ZCxiaWQsdGJhbGFuY2UpICIKKwkJCQkJCSAgInNlbGVjdCB0aWQgKyAxLCB0aWQgLyAlZCArIDEs IDAgIgorCQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoJWQsICVkKSBhcyB0aWQiLAorCQkJ CQkJICBudGVsbGVycywgaSAqIG50ZWxsZXJzLCAoaSArIGNodW5rKSAqIG50ZWxsZXJzIC0gMSk7 CisJCQkJCQkgIC8vInNlbGVjdCB0aWQsICh0aWQgLSAxKSAvICVkICsgMSwgMCAiCisJCQkJCQkg IC8vImZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsICVkKSBhcyB0aWQiLCBudGVsbGVycywgbnRlbGxl cnMgKiBzY2FsZSk7CisJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7CisKKwkJcHJp bnRmUFFFeHBCdWZmZXIoJnNxbCwKKwkJCQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hfYWNjb3Vu dHMoYWlkLGJpZCxhYmFsYW5jZSxmaWxsZXIpICIKKwkJCQkJCSAgInNlbGVjdCBhaWQgKyAxLCBh aWQgLyAlZCArIDEsIDAsICcnICIKKwkJCQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKCIgSU5U NjRfRk9STUFUICIsICIgSU5UNjRfRk9STUFUICIpIGFzIGFpZCIsCisJCQkJCQkgIG5hY2NvdW50 cywgKGludDY0KSBpICogbmFjY291bnRzLCAoaW50NjQpIChpICsgY2h1bmspICogbmFjY291bnRz IC0gMSk7CisJCQkJCQkgIC8vInNlbGVjdCBhaWQsIChhaWQgLSAxKSAvICVkICsgMSwgMCwgJycg IgorCQkJCQkJICAvLyJmcm9tIGdlbmVyYXRlX3NlcmllcygxLCAiIElOVDY0X0ZPUk1BVCAiKSBh cyBhaWQiLAorCQkJCQkJICAvL25hY2NvdW50cywgKGludDY0KSBuYWNjb3VudHMgKiBzY2FsZSk7 CisJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7CisKKwkJZXhlY3V0ZVN0YXRlbWVu dChjb24sICJjb21taXQiKTsKKwl9CiAKIAl0ZXJtUFFFeHBCdWZmZXIoJnNxbCk7Ci0KLQlleGVj dXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOwogfQogCiAvKgotLSAKMi40My4wCgpGcm9tIDBl ZGRiMTU2YzE4N2Q4MjljNDM4MWJjOTI4YzUzMTQ3MDU5Mjg4NTIgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IEJvcmlzIE1pcm9ub3YgPGJvcmlzLm1pcm9ub3ZAZ21haWwuY29tPgpEYXRl OiBTdW4sIDkgTm92IDIwMjUgMjA6MTM6MjMgKzA3MDAKU3ViamVjdDogW1BBVENIIHY3IDAyLzE4 XSBHZXR0aW5nIHJpZCBvZmYgbGltaXQgZm9yIHNpbmdsZSB0cmFuc2FjdGlvbiBzaXplCiBkdXJp bmcgZGF0YSBnZW5lcmF0aW9uCgotLS0KIHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgfCAxNSAr KysrLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDExIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMvYmlu L3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDI4NGE3Yzg2MGYxLi4yOGI3MmU0Y2YxZiAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMvYmluL3BnYmVuY2gvcGdi ZW5jaC5jCkBAIC0xODEsMTIgKzE4MSw2IEBAIHN0YXRpYyBpbnQ2NCBlbmRfdGltZSA9IDA7CQkv KiB3aGVuIHRvIHN0b3AgaW4gbWljcm8gc2Vjb25kcywgdW5kZXIgLVQgKi8KICAqLwogc3RhdGlj IGludAlzY2FsZSA9IDE7CiAKLS8qCi0gKiBzY2FsaW5nIGZhY3RvciBhZnRlciB3aGljaCB3ZSBz d2l0Y2ggdG8gbXVsdGlwbGUgdHJhbnNhY3Rpb25zIGR1cmluZwotICogZGF0YSBwb3B1bGF0aW9u IHBoYXNlIG9uIHNlcnZlciBzaWRlCi0gKi8KLXN0YXRpYyBpbnQ2NAlzaW5nbGVfdHhuX3NjYWxl X2xpbWl0ID0gMTsKLQogLyoKICAqIGZpbGxmYWN0b3IuIGZvciBleGFtcGxlLCBmaWxsZmFjdG9y ID0gOTAgd2lsbCB1c2Ugb25seSA5MCBwZXJjZW50CiAgKiBzcGFjZSBkdXJpbmcgaW5zZXJ0cyBh bmQgbGVhdmUgMTAgcGVyY2VudCBmcmVlLgpAQCAtNTIxOSw3ICs1MjEzLDYgQEAgc3RhdGljIHZv aWQKIGluaXRHZW5lcmF0ZURhdGFTZXJ2ZXJTaWRlKFBHY29ubiAqY29uKQogewogCVBRRXhwQnVm ZmVyRGF0YSBzcWw7Ci0JaW50CQkJCWNodW5rID0gKHNjYWxlID49IHNpbmdsZV90eG5fc2NhbGVf bGltaXQpID8gMSA6IHNjYWxlOwogCiAJZnByaW50ZihzdGRlcnIsICJnZW5lcmF0aW5nIGRhdGEg KHNlcnZlci1zaWRlKS4uLlxuIik7CiAKQEAgLTUyMzYsMTMgKzUyMjksMTMgQEAgaW5pdEdlbmVy YXRlRGF0YVNlcnZlclNpZGUoUEdjb25uICpjb24pCiAKIAlpbml0UFFFeHBCdWZmZXIoJnNxbCk7 CiAKLQlmb3IgKGludCBpID0gMDsgaSA8IHNjYWxlOyBpICs9IGNodW5rKSB7CisJZm9yIChpbnQg aSA9IDA7IGkgPCBzY2FsZTsgaSsrKSB7CiAJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4i KTsKIAogCQlwcmludGZQUUV4cEJ1ZmZlcigmc3FsLAogCQkJCQkJICAiaW5zZXJ0IGludG8gcGdi ZW5jaF9icmFuY2hlcyhiaWQsYmJhbGFuY2UpICIKIAkJCQkJCSAgInNlbGVjdCBiaWQgKyAxLCAw ICIKLQkJCQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKCVkLCAlZCkgYXMgYmlkIiwgaSwgaSAr IGNodW5rKTsKKwkJCQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKCVkLCAlZCkgYXMgYmlkIiwg aSwgaSArIDEpOwogCQkJCQkJICAvLyJzZWxlY3QgYmlkLCAwICIKIAkJCQkJCSAgLy8iZnJvbSBn ZW5lcmF0ZV9zZXJpZXMoMSwgJWQpIGFzIGJpZCIsIG5icmFuY2hlcyAqIHNjYWxlKTsKIAkJZXhl Y3V0ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsKQEAgLTUyNTEsNyArNTI0NCw3IEBAIGluaXRH ZW5lcmF0ZURhdGFTZXJ2ZXJTaWRlKFBHY29ubiAqY29uKQogCQkJCQkJICAiaW5zZXJ0IGludG8g cGdiZW5jaF90ZWxsZXJzKHRpZCxiaWQsdGJhbGFuY2UpICIKIAkJCQkJCSAgInNlbGVjdCB0aWQg KyAxLCB0aWQgLyAlZCArIDEsIDAgIgogCQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoJWQs ICVkKSBhcyB0aWQiLAotCQkJCQkJICBudGVsbGVycywgaSAqIG50ZWxsZXJzLCAoaSArIGNodW5r KSAqIG50ZWxsZXJzIC0gMSk7CisJCQkJCQkgIG50ZWxsZXJzLCBpICogbnRlbGxlcnMsIChpICsg MSkgKiBudGVsbGVycyAtIDEpOwogCQkJCQkJICAvLyJzZWxlY3QgdGlkLCAodGlkIC0gMSkgLyAl ZCArIDEsIDAgIgogCQkJCQkJICAvLyJmcm9tIGdlbmVyYXRlX3NlcmllcygxLCAlZCkgYXMgdGlk IiwgbnRlbGxlcnMsIG50ZWxsZXJzICogc2NhbGUpOwogCQlleGVjdXRlU3RhdGVtZW50KGNvbiwg c3FsLmRhdGEpOwpAQCAtNTI2MCw3ICs1MjUzLDcgQEAgaW5pdEdlbmVyYXRlRGF0YVNlcnZlclNp ZGUoUEdjb25uICpjb24pCiAJCQkJCQkgICJpbnNlcnQgaW50byBwZ2JlbmNoX2FjY291bnRzKGFp ZCxiaWQsYWJhbGFuY2UsZmlsbGVyKSAiCiAJCQkJCQkgICJzZWxlY3QgYWlkICsgMSwgYWlkIC8g JWQgKyAxLCAwLCAnJyAiCiAJCQkJCQkgICJmcm9tIGdlbmVyYXRlX3NlcmllcygiIElOVDY0X0ZP Uk1BVCAiLCAiIElOVDY0X0ZPUk1BVCAiKSBhcyBhaWQiLAotCQkJCQkJICBuYWNjb3VudHMsIChp bnQ2NCkgaSAqIG5hY2NvdW50cywgKGludDY0KSAoaSArIGNodW5rKSAqIG5hY2NvdW50cyAtIDEp OworCQkJCQkJICBuYWNjb3VudHMsIChpbnQ2NCkgaSAqIG5hY2NvdW50cywgKGludDY0KSAoaSAr IDEpICogbmFjY291bnRzIC0gMSk7CiAJCQkJCQkgIC8vInNlbGVjdCBhaWQsIChhaWQgLSAxKSAv ICVkICsgMSwgMCwgJycgIgogCQkJCQkJICAvLyJmcm9tIGdlbmVyYXRlX3NlcmllcygxLCAiIElO VDY0X0ZPUk1BVCAiKSBhcyBhaWQiLAogCQkJCQkJICAvL25hY2NvdW50cywgKGludDY0KSBuYWNj b3VudHMgKiBzY2FsZSk7Ci0tIAoyLjQzLjAKCkZyb20gYzU2NTljZjQ3NGVjMjczYzA1NzY2OGYz MGE0ZjQzNWZkMDJmMmRhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQm9yaXMgTWly b25vdiA8Ym9yaXMubWlyb25vdkBnbWFpbC5jb20+CkRhdGU6IFN1biwgOSBOb3YgMjAyNSAyMDoz ODozNiArMDcwMApTdWJqZWN0OiBbUEFUQ0ggdjcgMDMvMThdIE5vIG5lZWQgdG8ga2VlcCBvbGQg Y29kZSBpbiBjb21tZW50cwoKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIHwgNyAtLS0t LS0tCiAxIGZpbGUgY2hhbmdlZCwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnYmVuY2gvcGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwppbmRleCAyOGI3 MmU0Y2YxZi4uOTc4OTVhYTllZGYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNo LmMKKysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtNTIzNiw4ICs1MjM2LDYgQEAg aW5pdEdlbmVyYXRlRGF0YVNlcnZlclNpZGUoUEdjb25uICpjb24pCiAJCQkJCQkgICJpbnNlcnQg aW50byBwZ2JlbmNoX2JyYW5jaGVzKGJpZCxiYmFsYW5jZSkgIgogCQkJCQkJICAic2VsZWN0IGJp ZCArIDEsIDAgIgogCQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoJWQsICVkKSBhcyBiaWQi LCBpLCBpICsgMSk7Ci0JCQkJCQkgIC8vInNlbGVjdCBiaWQsIDAgIgotCQkJCQkJICAvLyJmcm9t IGdlbmVyYXRlX3NlcmllcygxLCAlZCkgYXMgYmlkIiwgbmJyYW5jaGVzICogc2NhbGUpOwogCQll eGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOwogCiAJCXByaW50ZlBRRXhwQnVmZmVyKCZz cWwsCkBAIC01MjQ1LDggKzUyNDMsNiBAQCBpbml0R2VuZXJhdGVEYXRhU2VydmVyU2lkZShQR2Nv bm4gKmNvbikKIAkJCQkJCSAgInNlbGVjdCB0aWQgKyAxLCB0aWQgLyAlZCArIDEsIDAgIgogCQkJ CQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoJWQsICVkKSBhcyB0aWQiLAogCQkJCQkJICBudGVs bGVycywgaSAqIG50ZWxsZXJzLCAoaSArIDEpICogbnRlbGxlcnMgLSAxKTsKLQkJCQkJCSAgLy8i c2VsZWN0IHRpZCwgKHRpZCAtIDEpIC8gJWQgKyAxLCAwICIKLQkJCQkJCSAgLy8iZnJvbSBnZW5l cmF0ZV9zZXJpZXMoMSwgJWQpIGFzIHRpZCIsIG50ZWxsZXJzLCBudGVsbGVycyAqIHNjYWxlKTsK IAkJZXhlY3V0ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsKIAogCQlwcmludGZQUUV4cEJ1ZmZl cigmc3FsLApAQCAtNTI1NCw5ICs1MjUwLDYgQEAgaW5pdEdlbmVyYXRlRGF0YVNlcnZlclNpZGUo UEdjb25uICpjb24pCiAJCQkJCQkgICJzZWxlY3QgYWlkICsgMSwgYWlkIC8gJWQgKyAxLCAwLCAn JyAiCiAJCQkJCQkgICJmcm9tIGdlbmVyYXRlX3NlcmllcygiIElOVDY0X0ZPUk1BVCAiLCAiIElO VDY0X0ZPUk1BVCAiKSBhcyBhaWQiLAogCQkJCQkJICBuYWNjb3VudHMsIChpbnQ2NCkgaSAqIG5h Y2NvdW50cywgKGludDY0KSAoaSArIDEpICogbmFjY291bnRzIC0gMSk7Ci0JCQkJCQkgIC8vInNl bGVjdCBhaWQsIChhaWQgLSAxKSAvICVkICsgMSwgMCwgJycgIgotCQkJCQkJICAvLyJmcm9tIGdl bmVyYXRlX3NlcmllcygxLCAiIElOVDY0X0ZPUk1BVCAiKSBhcyBhaWQiLAotCQkJCQkJICAvL25h Y2NvdW50cywgKGludDY0KSBuYWNjb3VudHMgKiBzY2FsZSk7CiAJCWV4ZWN1dGVTdGF0ZW1lbnQo Y29uLCBzcWwuZGF0YSk7CiAKIAkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKLS0g CjIuNDMuMAoKRnJvbSBlNDdiNTJkZGYyMzU5M2RhZDkzNzVlZjUzNTZmZDQxZDA2MjFlZGUzIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCb3JpcyBNaXJvbm92IDxib3Jpcy5taXJvbm92 QGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAxMCBOb3YgMjAyNSAxOTowNjo0OCArMDcwMApTdWJqZWN0 OiBbUEFUQ0ggdjcgMDQvMThdIEFkZGluZyBzZXJ2ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24gdmlh IHVubmVzdAoKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIHwgMTk5ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTgyIGluc2VydGlv bnMoKyksIDE3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2Jl bmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDk3ODk1YWE5ZWRmLi42NWQ3 N2NkZWZlYSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMv YmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC0xNjEsNyArMTYxLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg c29ja2V0X3NldAogICogc29tZSBjb25maWd1cmFibGUgcGFyYW1ldGVycyAqLwogCiAjZGVmaW5l IERFRkFVTFRfSU5JVF9TVEVQUyAiZHRndnAiCS8qIGRlZmF1bHQgLUkgc2V0dGluZyAqLwotI2Rl ZmluZSBBTExfSU5JVF9TVEVQUyAiZHRnR3ZwZiIJLyogYWxsIHBvc3NpYmxlIHN0ZXBzICovCisj ZGVmaW5lIEFMTF9JTklUX1NURVBTICJkdGdHaUl2cGYiCS8qIGFsbCBwb3NzaWJsZSBzdGVwcyAq LwogCiAjZGVmaW5lIExPR19TVEVQX1NFQ09ORFMJNQkvKiBzZWNvbmRzIGJldHdlZW4gbG9nIG1l c3NhZ2VzICovCiAjZGVmaW5lIERFRkFVTFRfTlhBQ1RTCTEwCQkvKiBkZWZhdWx0IG54YWN0cyAq LwpAQCAtMTcxLDYgKzE3MSwxMiBAQCB0eXBlZGVmIHN0cnVjdCBzb2NrZXRfc2V0CiAjZGVmaW5l IE1JTl9aSVBGSUFOX1BBUkFNCQkxLjAwMQkvKiBtaW5pbXVtIHBhcmFtZXRlciBmb3IgemlwZmlh biAqLwogI2RlZmluZSBNQVhfWklQRklBTl9QQVJBTQkJMTAwMC4wCS8qIG1heGltdW0gcGFyYW1l dGVyIGZvciB6aXBmaWFuICovCiAKKy8qIG9yaWdpbmFsIHNpbmdsZSB0cmFuc2FjdGlvbiBzZXJ2 ZXItc2lkZSBtZXRob2QgKi8KKyNkZWZpbmUgR0VOX1RZUEVfSU5TRVJUX09SSUdJTkFMCSdHJwkv KiB1c2UgSU5TRVJUIC4uIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMgdG8gZ2VuZXJhdGUgZGF0YSAq LworLyogJ29uZSB0cmFuc2FjdGlvbiBwZXIgc2NhbGUnIHNlcnZlci1zaWRlIG1ldGhvZHMgKi8K KyNkZWZpbmUgR0VOX1RZUEVfSU5TRVJUX1NFUklFUwkJJ2knCS8qIHVzZSBJTlNFUlQgLi4gU0VM RUNUIGdlbmVyYXRlX3NlcmllcyB0byBnZW5lcmF0ZSBkYXRhICovCisjZGVmaW5lIEdFTl9UWVBF X0lOU0VSVF9VTk5FU1QgIAknSScJLyogdXNlIElOU0VSVCAuLiBTRUxFQ1QgdW5uZXN0IHRvIGdl bmVyYXRlIGRhdGEgKi8KKwogc3RhdGljIGludAlueGFjdHMgPSAwOwkJCS8qIG51bWJlciBvZiB0 cmFuc2FjdGlvbnMgcGVyIGNsaWVudCAqLwogc3RhdGljIGludAlkdXJhdGlvbiA9IDA7CQkvKiBk dXJhdGlvbiBpbiBzZWNvbmRzICovCiBzdGF0aWMgaW50NjQgZW5kX3RpbWUgPSAwOwkJLyogd2hl biB0byBzdG9wIGluIG1pY3JvIHNlY29uZHMsIHVuZGVyIC1UICovCkBAIC0xODEsNiArMTg3LDEx IEBAIHN0YXRpYyBpbnQ2NCBlbmRfdGltZSA9IDA7CQkvKiB3aGVuIHRvIHN0b3AgaW4gbWljcm8g c2Vjb25kcywgdW5kZXIgLVQgKi8KICAqLwogc3RhdGljIGludAlzY2FsZSA9IDE7CiAKKy8qCisg KgorICovCitzdGF0aWMgY2hhcglkYXRhX2dlbmVyYXRpb25fdHlwZSA9ICc/JzsKKwogLyoKICAq IGZpbGxmYWN0b3IuIGZvciBleGFtcGxlLCBmaWxsZmFjdG9yID0gOTAgd2lsbCB1c2Ugb25seSA5 MCBwZXJjZW50CiAgKiBzcGFjZSBkdXJpbmcgaW5zZXJ0cyBhbmQgbGVhdmUgMTAgcGVyY2VudCBm cmVlLgpAQCAtOTE0LDcgKzkyNSw5IEBAIHVzYWdlKHZvaWQpCiAJCSAgICIgICAgICAgICAgICAg ICAgICAgICAgICAgICBkOiBkcm9wIGFueSBleGlzdGluZyBwZ2JlbmNoIHRhYmxlc1xuIgogCQkg ICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogY3JlYXRlIHRoZSB0YWJsZXMgdXNlZCBi eSB0aGUgc3RhbmRhcmQgcGdiZW5jaCBzY2VuYXJpb1xuIgogCQkgICAiICAgICAgICAgICAgICAg ICAgICAgICAgICAgZzogZ2VuZXJhdGUgZGF0YSwgY2xpZW50LXNpZGVcbiIKLQkJICAgIiAgICAg ICAgICAgICAgICAgICAgICAgICAgIEc6IGdlbmVyYXRlIGRhdGEsIHNlcnZlci1zaWRlXG4iCisJ CSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICBHOiBnZW5lcmF0ZSBkYXRhLCBzZXJ2ZXIt c2lkZSBpbiBzaW5nbGUgdHJhbnNhY3Rpb25cbiIKKwkJICAgIiAgICAgICAgICAgICAgICAgICAg ICAgICAgIGk6ICAgc2VydmVyLXNpZGUgKG11bHRpcGxlIFRYTnMpIElOU0VSVCAuLiBTRUxFQ1Qg Z2VuZXJhdGVfc2VyaWVzXG4iCisJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICBJOiAg IHNlcnZlci1zaWRlIChtdWx0aXBsZSBUWE5zKSBJTlNFUlQgLi4gU0VMRUNUIHVubmVzdFxuIgog CQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgdjogaW52b2tlIFZBQ1VVTSBvbiB0aGUg c3RhbmRhcmQgdGFibGVzXG4iCiAJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICBwOiBj cmVhdGUgcHJpbWFyeSBrZXkgaW5kZXhlcyBvbiB0aGUgc3RhbmRhcmQgdGFibGVzXG4iCiAJCSAg ICIgICAgICAgICAgICAgICAgICAgICAgICAgICBmOiBjcmVhdGUgZm9yZWlnbiBrZXlzIGJldHdl ZW4gdGhlIHN0YW5kYXJkIHRhYmxlc1xuIgpAQCAtNTIwMywxOCArNTIxNiwxNiBAQCBpbml0R2Vu ZXJhdGVEYXRhQ2xpZW50U2lkZShQR2Nvbm4gKmNvbikKIH0KIAogLyoKLSAqIEZpbGwgdGhlIHN0 YW5kYXJkIHRhYmxlcyB3aXRoIHNvbWUgZGF0YSBnZW5lcmF0ZWQgb24gdGhlIHNlcnZlcgotICoK LSAqIEFzIGFscmVhZHkgdGhlIGNhc2Ugd2l0aCB0aGUgY2xpZW50LXNpZGUgZGF0YSBnZW5lcmF0 aW9uLCB0aGUgZmlsbGVyCi0gKiBjb2x1bW4gZGVmYXVsdHMgdG8gTlVMTCBpbiBwZ2JlbmNoX2Jy YW5jaGVzIGFuZCBwZ2JlbmNoX3RlbGxlcnMsCi0gKiBhbmQgaXMgYSBibGFuay1wYWRkZWQgc3Ry aW5nIGluIHBnYmVuY2hfYWNjb3VudHMuCisgKiBHZW5lcmF0aW5nIGRhdGEgdmlhIElOU0VSVCAu LiBTRUxFQ1QgLi4gRlJPTSBnZW5lcmF0ZV9zZXJpZXMKKyAqIHdob2xlIGRhdGFzZXQgaW4gc2lu Z2xlIHRyYW5zYWN0aW9uCiAgKi8KIHN0YXRpYyB2b2lkCi1pbml0R2VuZXJhdGVEYXRhU2VydmVy U2lkZShQR2Nvbm4gKmNvbikKK2dlbmVyYXRlRGF0YUluc2VydFNpbmdsZVRYTihQR2Nvbm4gKmNv bikKIHsKIAlQUUV4cEJ1ZmZlckRhdGEgc3FsOwogCi0JZnByaW50ZihzdGRlcnIsICJnZW5lcmF0 aW5nIGRhdGEgKHNlcnZlci1zaWRlKS4uLlxuIik7CisJZnByaW50ZihzdGRlcnIsICJ2aWEgSU5T RVJUIC4uIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMuLi4gaW4gc2luZ2xlIFRYTlxuIik7CisKIAog CS8qCiAJICogd2UgZG8gYWxsIG9mIHRoaXMgaW4gb25lIHRyYW5zYWN0aW9uIHRvIGVuYWJsZSB0 aGUgYmFja2VuZCdzCkBAIC01MjI1LDMxICs1MjM2LDEzNiBAQCBpbml0R2VuZXJhdGVEYXRhU2Vy dmVyU2lkZShQR2Nvbm4gKmNvbikKIAkvKiB0cnVuY2F0ZSBhd2F5IGFueSBvbGQgZGF0YSAqLwog CWluaXRUcnVuY2F0ZVRhYmxlcyhjb24pOwogCisJaW5pdFBRRXhwQnVmZmVyKCZzcWwpOworCisJ cHJpbnRmUFFFeHBCdWZmZXIoJnNxbCwKKwkJCQkJICAiaW5zZXJ0IGludG8gcGdiZW5jaF9icmFu Y2hlcyhiaWQsIGJiYWxhbmNlKSAiCisJCQkJCSAgInNlbGVjdCBiaWQsIDAgIgorCQkJCQkgICJm cm9tIGdlbmVyYXRlX3NlcmllcygxLCAlZCkiLCBzY2FsZSAqIG5icmFuY2hlcyk7CisJZXhlY3V0 ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsKKworCXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCisJ CQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hfdGVsbGVycyh0aWQsIGJpZCwgdGJhbGFuY2UpICIK KwkJCQkJICAic2VsZWN0IHRpZCArIDEsIHRpZCAvICVkICsgMSwgMCAiCisJCQkJCSAgImZyb20g Z2VuZXJhdGVfc2VyaWVzKDAsICVkKSBhcyB0aWQiLAorCQkJCQkgIG50ZWxsZXJzLCAoc2NhbGUg KiBudGVsbGVycykgLSAxKTsKKwlleGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOworCisJ cHJpbnRmUFFFeHBCdWZmZXIoJnNxbCwKKwkJCQkJICAiaW5zZXJ0IGludG8gcGdiZW5jaF9hY2Nv dW50cyhhaWQsIGJpZCwgYWJhbGFuY2UsICIKKwkJCQkJCQkJICAgImZpbGxlcikgIgorCQkJCQkg ICJzZWxlY3QgYWlkICsgMSwgYWlkIC8gJWQgKyAxLCAwLCAnJyAiCisJCQkJCSAgImZyb20gZ2Vu ZXJhdGVfc2VyaWVzKDAsICIgSU5UNjRfRk9STUFUICIpIGFzIGFpZCIsCisJCQkJCSAgbmFjY291 bnRzLCAoaW50NjQpIChzY2FsZSAqIG5hY2NvdW50cykgLSAxKTsKKwlleGVjdXRlU3RhdGVtZW50 KGNvbiwgc3FsLmRhdGEpOworCiAJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKIAor CXRlcm1QUUV4cEJ1ZmZlcigmc3FsKTsKK30KKworCisvKgorICogR2VuZXJhdGluZyBkYXRhIHZp YSBJTlNFUlQgLi4gU0VMRUNUIC4uIEZST00gZ2VuZXJhdGVfc2VyaWVzCisgKiBPbmUgdHJhbnNh Y3Rpb24gcGVyICdzY2FsZScKKyAqLworc3RhdGljIHZvaWQKK2dlbmVyYXRlRGF0YUluc2VydFNl cmllcyhQR2Nvbm4gKmNvbikKK3sKKwlQUUV4cEJ1ZmZlckRhdGEgc3FsOworCisJZnByaW50Zihz dGRlcnIsICJ2aWEgSU5TRVJUIC4uIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMuLi4gaW4gbXVsdGlw bGUgVFhOKHMpXG4iKTsKKwogCWluaXRQUUV4cEJ1ZmZlcigmc3FsKTsKIAotCWZvciAoaW50IGkg PSAwOyBpIDwgc2NhbGU7IGkrKykgeworCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4iKTsK KworCS8qIHRydW5jYXRlIGF3YXkgYW55IG9sZCBkYXRhICovCisJaW5pdFRydW5jYXRlVGFibGVz KGNvbik7CisKKwlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOworCisJZm9yIChpbnQg aSA9IDA7IGkgPCBzY2FsZTsgaSsrKQorCXsKIAkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJiZWdp biIpOwogCiAJCXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCi0JCQkJCQkgICJpbnNlcnQgaW50byBw Z2JlbmNoX2JyYW5jaGVzKGJpZCxiYmFsYW5jZSkgIgotCQkJCQkJICAic2VsZWN0IGJpZCArIDEs IDAgIgotCQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoJWQsICVkKSBhcyBiaWQiLCBpLCBp ICsgMSk7CisJCQkJCQkgICJpbnNlcnQgaW50byBwZ2JlbmNoX2JyYW5jaGVzKGJpZCwgYmJhbGFu Y2UpICIKKwkJCQkJCSAgInZhbHVlcyglZCwgMCkiLCBpICsgMSk7CiAJCWV4ZWN1dGVTdGF0ZW1l bnQoY29uLCBzcWwuZGF0YSk7CiAKIAkJcHJpbnRmUFFFeHBCdWZmZXIoJnNxbCwKLQkJCQkJCSAg Imluc2VydCBpbnRvIHBnYmVuY2hfdGVsbGVycyh0aWQsYmlkLHRiYWxhbmNlKSAiCisJCQkJCQkg ICJpbnNlcnQgaW50byBwZ2JlbmNoX3RlbGxlcnModGlkLCBiaWQsIHRiYWxhbmNlKSAiCiAJCQkJ CQkgICJzZWxlY3QgdGlkICsgMSwgdGlkIC8gJWQgKyAxLCAwICIKIAkJCQkJCSAgImZyb20gZ2Vu ZXJhdGVfc2VyaWVzKCVkLCAlZCkgYXMgdGlkIiwKIAkJCQkJCSAgbnRlbGxlcnMsIGkgKiBudGVs bGVycywgKGkgKyAxKSAqIG50ZWxsZXJzIC0gMSk7CiAJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBz cWwuZGF0YSk7CiAKIAkJcHJpbnRmUFFFeHBCdWZmZXIoJnNxbCwKLQkJCQkJCSAgImluc2VydCBp bnRvIHBnYmVuY2hfYWNjb3VudHMoYWlkLGJpZCxhYmFsYW5jZSxmaWxsZXIpICIKKwkJCQkJCSAg Imluc2VydCBpbnRvIHBnYmVuY2hfYWNjb3VudHMoYWlkLCBiaWQsIGFiYWxhbmNlLCAiCisJCQkJ CQkJCQkgICAiZmlsbGVyKSAiCiAJCQkJCQkgICJzZWxlY3QgYWlkICsgMSwgYWlkIC8gJWQgKyAx LCAwLCAnJyAiCi0JCQkJCQkgICJmcm9tIGdlbmVyYXRlX3NlcmllcygiIElOVDY0X0ZPUk1BVCAi LCAiIElOVDY0X0ZPUk1BVCAiKSBhcyBhaWQiLAotCQkJCQkJICBuYWNjb3VudHMsIChpbnQ2NCkg aSAqIG5hY2NvdW50cywgKGludDY0KSAoaSArIDEpICogbmFjY291bnRzIC0gMSk7CisJCQkJCQkg ICJmcm9tIGdlbmVyYXRlX3NlcmllcygiIElOVDY0X0ZPUk1BVCAiLCAiCisJCQkJCQkJCUlOVDY0 X0ZPUk1BVCAiKSBhcyBhaWQiLAorCQkJCQkJICBuYWNjb3VudHMsIChpbnQ2NCkgaSAqIG5hY2Nv dW50cywKKwkJCQkJCSAgKGludDY0KSAoaSArIDEpICogbmFjY291bnRzIC0gMSk7CisJCWV4ZWN1 dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7CisKKwkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJj b21taXQiKTsKKwl9CisKKwl0ZXJtUFFFeHBCdWZmZXIoJnNxbCk7Cit9CisKKy8qCisgKiBHZW5l cmF0aW5nIGRhdGEgdmlhIElOU0VSVCAuLiBTRUxFQ1QgLi4gRlJPTSB1bm5lc3QKKyAqIE9uZSB0 cmFuc2FjdGlvbiBwZXIgJ3NjYWxlJworICovCitzdGF0aWMgdm9pZAorZ2VuZXJhdGVEYXRhSW5z ZXJ0VW5uZXN0KFBHY29ubiAqY29uKQoreworCVBRRXhwQnVmZmVyRGF0YSBzcWw7CisKKwlmcHJp bnRmKHN0ZGVyciwgInZpYSBJTlNFUlQgLi4gU0VMRUNUIHVubmVzdC4uLlxuIik7CisKKwlpbml0 UFFFeHBCdWZmZXIoJnNxbCk7CisKKwlleGVjdXRlU3RhdGVtZW50KGNvbiwgImJlZ2luIik7CisK KwkvKiB0cnVuY2F0ZSBhd2F5IGFueSBvbGQgZGF0YSAqLworCWluaXRUcnVuY2F0ZVRhYmxlcyhj b24pOworCisJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKKworCWZvciAoaW50IHMg PSAwOyBzIDwgc2NhbGU7IHMrKykKKwl7CisJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4i KTsKKworCQlwcmludGZQUUV4cEJ1ZmZlcigmc3FsLAorCQkJCQkJICAiaW5zZXJ0IGludG8gcGdi ZW5jaF9icmFuY2hlcyhiaWQsYmJhbGFuY2UpICIKKwkJCQkJCSAgInZhbHVlcyglZCwgMCkiLCBz ICsgMSk7CisJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7CisKKwkJcHJpbnRmUFFF eHBCdWZmZXIoJnNxbCwKKwkJCQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hfdGVsbGVycyh0aWQs IGJpZCwgdGJhbGFuY2UpICIKKwkJCQkJCSAgInNlbGVjdCB1bm5lc3QoYXJyYXlfYWdnKHMuaSBv cmRlciBieSBzLmkpKSBhcyB0aWQsICIKKwkJCQkJCQkJICAiJWQgYXMgYmlkLCAwIGFzIHRiYWxh bmNlICIKKwkJCQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKCVkLCAlZCkgYXMgcyhpKSIsCisJ CQkJCQkgIHMgKyAxLCBzICogbnRlbGxlcnMgKyAxLCAocyArIDEpICogbnRlbGxlcnMpOworCQll eGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOworCisJCXByaW50ZlBRRXhwQnVmZmVyKCZz cWwsCisJCQkJCQkgICJ3aXRoIGRhdGEgYXMgKCIKKwkJCQkJCSAgIiAgIHNlbGVjdCBnZW5lcmF0 ZV9zZXJpZXMoIiBJTlQ2NF9GT1JNQVQgIiwgIgorCQkJCQkJCSAgSU5UNjRfRk9STUFUICIpIGFz IGkpICIKKwkJCQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hfYWNjb3VudHMoYWlkLCBiaWQsICIK KwkJCQkJCQkJCSAgImFiYWxhbmNlLCBmaWxsZXIpICIKKwkJCQkJCSAgInNlbGVjdCB1bm5lc3Qo YWlkKSwgdW5uZXN0KGJpZCksIDAgYXMgYWJhbGFuY2UsICIKKwkJCQkJCQkJICAiJycgYXMgZmls bGVyICIKKwkJCQkJCSAgImZyb20gKHNlbGVjdCBhcnJheV9hZ2coaSsxKSBhaWQsICIKKwkJCQkJ CQkJCSAgICJhcnJheV9hZ2coaS8lZCArIDEpIGJpZCBmcm9tIGRhdGEpIiwKKwkJCQkJCSAgKGlu dDY0KSBzICogbmFjY291bnRzICsgMSwKKwkJCQkJCSAgKGludDY0KSAocyArIDEpICogbmFjY291 bnRzLCBuYWNjb3VudHMpOwogCQlleGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOwogCiAJ CWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7CkBAIC01MjU4LDYgKzUzNzQsMzIgQEAg aW5pdEdlbmVyYXRlRGF0YVNlcnZlclNpZGUoUEdjb25uICpjb24pCiAJdGVybVBRRXhwQnVmZmVy KCZzcWwpOwogfQogCisvKgorICogRmlsbCB0aGUgc3RhbmRhcmQgdGFibGVzIHdpdGggc29tZSBk YXRhIGdlbmVyYXRlZCBvbiB0aGUgc2VydmVyCisgKgorICogQXMgYWxyZWFkeSB0aGUgY2FzZSB3 aXRoIHRoZSBjbGllbnQtc2lkZSBkYXRhIGdlbmVyYXRpb24sIHRoZSBmaWxsZXIKKyAqIGNvbHVt biBkZWZhdWx0cyB0byBOVUxMIGluIHBnYmVuY2hfYnJhbmNoZXMgYW5kIHBnYmVuY2hfdGVsbGVy cywKKyAqIGFuZCBpcyBhIGJsYW5rLXBhZGRlZCBzdHJpbmcgaW4gcGdiZW5jaF9hY2NvdW50cy4K KyAqLworc3RhdGljIHZvaWQKK2luaXRHZW5lcmF0ZURhdGFTZXJ2ZXJTaWRlKFBHY29ubiAqY29u KQoreworCWZwcmludGYoc3RkZXJyLCAiZ2VuZXJhdGluZyBkYXRhIChzZXJ2ZXItc2lkZSkgIik7 CisKKwlzd2l0Y2ggKGRhdGFfZ2VuZXJhdGlvbl90eXBlKQorCXsKKwkJY2FzZSBHRU5fVFlQRV9J TlNFUlRfT1JJR0lOQUw6CisJCQlnZW5lcmF0ZURhdGFJbnNlcnRTaW5nbGVUWE4oY29uKTsKKwkJ CWJyZWFrOworCQljYXNlIEdFTl9UWVBFX0lOU0VSVF9TRVJJRVM6CisJCQlnZW5lcmF0ZURhdGFJ bnNlcnRTZXJpZXMoY29uKTsKKwkJCWJyZWFrOworCQljYXNlIEdFTl9UWVBFX0lOU0VSVF9VTk5F U1Q6CisJCQlnZW5lcmF0ZURhdGFJbnNlcnRVbm5lc3QoY29uKTsKKwkJCWJyZWFrOworCX0KK30K KwogLyoKICAqIEludm9rZSB2YWN1dW0gb24gdGhlIHN0YW5kYXJkIHRhYmxlcwogICovCkBAIC01 MzQxLDYgKzU0ODMsOCBAQCBpbml0Q3JlYXRlRktleXMoUEdjb25uICpjb24pCiBzdGF0aWMgdm9p ZAogY2hlY2tJbml0U3RlcHMoY29uc3QgY2hhciAqaW5pdGlhbGl6ZV9zdGVwcykKIHsKKwljaGFy CWRhdGFfaW5pdF90eXBlID0gMDsKKwogCWlmIChpbml0aWFsaXplX3N0ZXBzWzBdID09ICdcMCcp CiAJCXBnX2ZhdGFsKCJubyBpbml0aWFsaXphdGlvbiBzdGVwcyBzcGVjaWZpZWQiKTsKIApAQCAt NTM1Miw3ICs1NDk2LDI2IEBAIGNoZWNrSW5pdFN0ZXBzKGNvbnN0IGNoYXIgKmluaXRpYWxpemVf c3RlcHMpCiAJCQlwZ19sb2dfZXJyb3JfZGV0YWlsKCJBbGxvd2VkIHN0ZXAgY2hhcmFjdGVycyBh cmU6IFwiIiBBTExfSU5JVF9TVEVQUyAiXCIuIik7CiAJCQlleGl0KDEpOwogCQl9CisKKwkJc3dp dGNoICgqc3RlcCkKKwkJeworCQkJY2FzZSAnRyc6CisJCQkJZGF0YV9pbml0X3R5cGUrKzsKKwkJ CQlkYXRhX2dlbmVyYXRpb25fdHlwZSA9ICpzdGVwOworCQkJCWJyZWFrOworCQkJY2FzZSAnaSc6 CisJCQkJZGF0YV9pbml0X3R5cGUrKzsKKwkJCQlkYXRhX2dlbmVyYXRpb25fdHlwZSA9ICpzdGVw OworCQkJCWJyZWFrOworCQkJY2FzZSAnSSc6CisJCQkJZGF0YV9pbml0X3R5cGUrKzsKKwkJCQlk YXRhX2dlbmVyYXRpb25fdHlwZSA9ICpzdGVwOworCQkJCWJyZWFrOworCQl9CiAJfQorCisJaWYg KGRhdGFfaW5pdF90eXBlID4gMSkKKwkJcGdfbG9nX2Vycm9yKCJXQVJOSU5HISBNb3JlIHRoYW4g b25lIHR5cGUgb2Ygc2VydmVyLXNpZGUgZGF0YSBnZW5lcmF0aW9uIGlzIHJlcXVlc3RlZCIpOwog fQogCiAvKgpAQCAtNTM5NSw2ICs1NTU4LDggQEAgcnVuSW5pdFN0ZXBzKGNvbnN0IGNoYXIgKmlu aXRpYWxpemVfc3RlcHMpCiAJCQkJaW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGUoY29uKTsKIAkJ CQlicmVhazsKIAkJCWNhc2UgJ0cnOgorCQkJY2FzZSAnaSc6CisJCQljYXNlICdJJzoKIAkJCQlv cCA9ICJzZXJ2ZXItc2lkZSBnZW5lcmF0ZSI7CiAJCQkJaW5pdEdlbmVyYXRlRGF0YVNlcnZlclNp ZGUoY29uKTsKIAkJCQlicmVhazsKLS0gCjIuNDMuMAoKRnJvbSA1ZTE4MjdiODg5YjI4M2Y1MDI5 OWNlNmFiMWE3M2Y5ZjU1YTRhODRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCb3Jp cyBNaXJvbm92IDxib3Jpcy5taXJvbm92QGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAxMCBOb3YgMjAy NSAyMDowMDo1NiArMDcwMApTdWJqZWN0OiBbUEFUQ0ggdjcgMDUvMThdIEZpeGluZyB0eXBvIGlu IHF1ZXJ5CgotLS0KIHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgfCAzICsrLQogMSBmaWxlIGNo YW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDY1 ZDc3Y2RlZmVhLi4wM2UzN2RmNDQzNCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVu Y2guYworKysgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC01MjQxLDcgKzUyNDEsOCBA QCBnZW5lcmF0ZURhdGFJbnNlcnRTaW5nbGVUWE4oUEdjb25uICpjb24pCiAJcHJpbnRmUFFFeHBC dWZmZXIoJnNxbCwKIAkJCQkJICAiaW5zZXJ0IGludG8gcGdiZW5jaF9icmFuY2hlcyhiaWQsIGJi YWxhbmNlKSAiCiAJCQkJCSAgInNlbGVjdCBiaWQsIDAgIgotCQkJCQkgICJmcm9tIGdlbmVyYXRl X3NlcmllcygxLCAlZCkiLCBzY2FsZSAqIG5icmFuY2hlcyk7CisJCQkJCSAgImZyb20gZ2VuZXJh dGVfc2VyaWVzKDEsICVkKSBhcyBiaWQiLAorCQkJCQkgIHNjYWxlICogbmJyYW5jaGVzKTsKIAll eGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOwogCiAJcHJpbnRmUFFFeHBCdWZmZXIoJnNx bCwKLS0gCjIuNDMuMAoKRnJvbSA3Y2E4NjUyMWZkYTY5MjliOGUwZGUzZmM3N2RjYmI4OTg0MDA5 Yzg4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCb3JpcyBNaXJvbm92IDxib3Jpcy5t aXJvbm92QGdtYWlsLmNvbT4KRGF0ZTogVHVlLCAxMSBOb3YgMjAyNSAxOTozOTo0NSArMDcwMApT dWJqZWN0OiBbUEFUQ0ggdjcgMDYvMThdIEFkZGluZyBzdXBwb3J0IGZvciBDT1BZIEJJTkFSWSBt b2RlCgotLS0KIHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgfCAzOTMgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCAzODEgaW5zZXJ0aW9ucygr KSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2gu YyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKaW5kZXggMDNlMzdkZjQ0MzQuLjcxYWExZDk0 NzlmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCisrKyBiL3NyYy9iaW4v cGdiZW5jaC9wZ2JlbmNoLmMKQEAgLTE2MSw3ICsxNjEsNyBAQCB0eXBlZGVmIHN0cnVjdCBzb2Nr ZXRfc2V0CiAgKiBzb21lIGNvbmZpZ3VyYWJsZSBwYXJhbWV0ZXJzICovCiAKICNkZWZpbmUgREVG QVVMVF9JTklUX1NURVBTICJkdGd2cCIJLyogZGVmYXVsdCAtSSBzZXR0aW5nICovCi0jZGVmaW5l IEFMTF9JTklUX1NURVBTICJkdGdHaUl2cGYiCS8qIGFsbCBwb3NzaWJsZSBzdGVwcyAqLworI2Rl ZmluZSBBTExfSU5JVF9TVEVQUyAiZHRnQ0dpSXZwZiIJLyogYWxsIHBvc3NpYmxlIHN0ZXBzICov CiAKICNkZWZpbmUgTE9HX1NURVBfU0VDT05EUwk1CS8qIHNlY29uZHMgYmV0d2VlbiBsb2cgbWVz c2FnZXMgKi8KICNkZWZpbmUgREVGQVVMVF9OWEFDVFMJMTAJCS8qIGRlZmF1bHQgbnhhY3RzICov CkBAIC0xNzYsNiArMTc2LDggQEAgdHlwZWRlZiBzdHJ1Y3Qgc29ja2V0X3NldAogLyogJ29uZSB0 cmFuc2FjdGlvbiBwZXIgc2NhbGUnIHNlcnZlci1zaWRlIG1ldGhvZHMgKi8KICNkZWZpbmUgR0VO X1RZUEVfSU5TRVJUX1NFUklFUwkJJ2knCS8qIHVzZSBJTlNFUlQgLi4gU0VMRUNUIGdlbmVyYXRl X3NlcmllcyB0byBnZW5lcmF0ZSBkYXRhICovCiAjZGVmaW5lIEdFTl9UWVBFX0lOU0VSVF9VTk5F U1QgIAknSScJLyogdXNlIElOU0VSVCAuLiBTRUxFQ1QgdW5uZXN0IHRvIGdlbmVyYXRlIGRhdGEg Ki8KKyNkZWZpbmUgR0VOX1RZUEVfQ09QWV9PUklHSU5BTAkJJ2cnIC8qIHVzZSBDT1BZIC4uIEZS T00gU1RESU4gLi4gVEVYVCB0byBnZW5lcmF0ZSBkYXRhICovCisjZGVmaW5lIEdFTl9UWVBFX0NP UFlfQklOQVJZCQknQycgLyogdXNlIENPUFkgLi4gRlJPTSBTVERJTiAuLiBCSU5BUlkgdG8gZ2Vu ZXJhdGUgZGF0YSAqLwogCiBzdGF0aWMgaW50CW54YWN0cyA9IDA7CQkJLyogbnVtYmVyIG9mIHRy YW5zYWN0aW9ucyBwZXIgY2xpZW50ICovCiBzdGF0aWMgaW50CWR1cmF0aW9uID0gMDsJCS8qIGR1 cmF0aW9uIGluIHNlY29uZHMgKi8KQEAgLTE4OCwxMCArMTkwLDE3IEBAIHN0YXRpYyBpbnQ2NCBl bmRfdGltZSA9IDA7CQkvKiB3aGVuIHRvIHN0b3AgaW4gbWljcm8gc2Vjb25kcywgdW5kZXIgLVQg Ki8KIHN0YXRpYyBpbnQJc2NhbGUgPSAxOwogCiAvKgotICoKKyAqIG1vZGUgb2YgZGF0YSBnZW5l cmF0aW9uIHRvIHVzZQogICovCiBzdGF0aWMgY2hhcglkYXRhX2dlbmVyYXRpb25fdHlwZSA9ICc/ JzsKIAorLyoKKyAqIENPUFkgRlJPTSBCSU5BUlkgZXhlY3V0aW9uIGJ1ZmZlcgorICovCisjZGVm aW5lIEJJTl9DT1BZX0JVRl9TSVpFCTEwMjQwMAkJCQkvKiBtYXhpbXVtIGJ1ZmZlciBzaXplIGZv ciBDT1BZIEZST00gQklOQVJZICovCitzdGF0aWMgY2hhcgkJKmJpbl9jb3B5X2J1ZmZlciA9IE5V TEw7CQkvKiBidWZmZXIgZm9yIENPUFkgRlJPTSBCSU5BUlkgKi8KK3N0YXRpYyBpbnQzMl90CSBi aW5fY29weV9idWZmZXJfbGVuZ3RoID0gMDsJLyogY3VycmVudCBidWZmZXIgc2l6ZSAqLworCiAv KgogICogZmlsbGZhY3Rvci4gZm9yIGV4YW1wbGUsIGZpbGxmYWN0b3IgPSA5MCB3aWxsIHVzZSBv bmx5IDkwIHBlcmNlbnQKICAqIHNwYWNlIGR1cmluZyBpbnNlcnRzIGFuZCBsZWF2ZSAxMCBwZXJj ZW50IGZyZWUuCkBAIC04NjEsNyArODcwLDggQEAgc3RhdGljIGludAl3YWl0X29uX3NvY2tldF9z ZXQoc29ja2V0X3NldCAqc2EsIGludDY0IHVzZWNzKTsKIHN0YXRpYyBib29sIHNvY2tldF9oYXNf aW5wdXQoc29ja2V0X3NldCAqc2EsIGludCBmZCwgaW50IGlkeCk7CiAKIC8qIGNhbGxiYWNrIHVz ZWQgdG8gYnVpbGQgcm93cyBmb3IgQ09QWSBkdXJpbmcgZGF0YSBsb2FkaW5nICovCi10eXBlZGVm IHZvaWQgKCppbml0Um93TWV0aG9kKSAoUFFFeHBCdWZmZXJEYXRhICpzcWwsIGludDY0IGN1cnIp OwordHlwZWRlZiB2b2lkICgqaW5pdFJvd01ldGhvZCkJCShQUUV4cEJ1ZmZlckRhdGEgKnNxbCwg aW50NjQgY3Vycik7Cit0eXBlZGVmIHZvaWQgKCppbml0Um93TWV0aG9kQmluKQkoUEdjb25uICpj b24sIFBHcmVzdWx0ICpyZXMsIGludDY0X3QgY3VyciwgaW50MzJfdCBwYXJlbnQpOwogCiAvKiBj YWxsYmFjayBmdW5jdGlvbnMgZm9yIG91ciBmbGV4IGxleGVyICovCiBzdGF0aWMgY29uc3QgUHNx bFNjYW5DYWxsYmFja3MgcGdiZW5jaF9jYWxsYmFja3MgPSB7CkBAIC05MjUsNiArOTM1LDcgQEAg dXNhZ2Uodm9pZCkKIAkJICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ6IGRyb3AgYW55 IGV4aXN0aW5nIHBnYmVuY2ggdGFibGVzXG4iCiAJCSAgICIgICAgICAgICAgICAgICAgICAgICAg ICAgICB0OiBjcmVhdGUgdGhlIHRhYmxlcyB1c2VkIGJ5IHRoZSBzdGFuZGFyZCBwZ2JlbmNoIHNj ZW5hcmlvXG4iCiAJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICBnOiBnZW5lcmF0ZSBk YXRhLCBjbGllbnQtc2lkZVxuIgorCQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgQzog ICBjbGllbnQtc2lkZSAoc2luZ2xlIFROWCkgQ09QWSAuLiBGUk9NIFNURElOIC4uIEJJTkFSWVxu IgogCQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgRzogZ2VuZXJhdGUgZGF0YSwgc2Vy dmVyLXNpZGUgaW4gc2luZ2xlIHRyYW5zYWN0aW9uXG4iCiAJCSAgICIgICAgICAgICAgICAgICAg ICAgICAgICAgICBpOiAgIHNlcnZlci1zaWRlIChtdWx0aXBsZSBUWE5zKSBJTlNFUlQgLi4gU0VM RUNUIGdlbmVyYXRlX3Nlcmllc1xuIgogCQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAg STogICBzZXJ2ZXItc2lkZSAobXVsdGlwbGUgVFhOcykgSU5TRVJUIC4uIFNFTEVDVCB1bm5lc3Rc biIKQEAgLTUxOTEsOSArNTIwMiw5IEBAIGluaXRQb3B1bGF0ZVRhYmxlKFBHY29ubiAqY29uLCBj b25zdCBjaGFyICp0YWJsZSwgaW50NjQgYmFzZSwKICAqIGEgYmxhbmstcGFkZGVkIHN0cmluZyBp biBwZ2JlbmNoX2FjY291bnRzLgogICovCiBzdGF0aWMgdm9pZAotaW5pdEdlbmVyYXRlRGF0YUNs aWVudFNpZGUoUEdjb25uICpjb24pCitpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZVRleHQoUEdj b25uICpjb24pCiB7Ci0JZnByaW50ZihzdGRlcnIsICJnZW5lcmF0aW5nIGRhdGEgKGNsaWVudC1z aWRlKS4uLlxuIik7CisJZnByaW50ZihzdGRlcnIsICJURVhUIG1vZGUuLi5cbiIpOwogCiAJLyoK IAkgKiB3ZSBkbyBhbGwgb2YgdGhpcyBpbiBvbmUgdHJhbnNhY3Rpb24gdG8gZW5hYmxlIHRoZSBi YWNrZW5kJ3MKQEAgLTUyMDksMTIgKzUyMjAsMzczIEBAIGluaXRHZW5lcmF0ZURhdGFDbGllbnRT aWRlKFBHY29ubiAqY29uKQogCSAqIGFscmVhZHkgZXhpc3QKIAkgKi8KIAlpbml0UG9wdWxhdGVU YWJsZShjb24sICJwZ2JlbmNoX2JyYW5jaGVzIiwgbmJyYW5jaGVzLCBpbml0QnJhbmNoKTsKLQlp bml0UG9wdWxhdGVUYWJsZShjb24sICJwZ2JlbmNoX3RlbGxlcnMiLCBudGVsbGVycywgaW5pdFRl bGxlcik7CisJaW5pdFBvcHVsYXRlVGFibGUoY29uLCAicGdiZW5jaF90ZWxsZXJzIiwgIG50ZWxs ZXJzLCAgaW5pdFRlbGxlcik7CiAJaW5pdFBvcHVsYXRlVGFibGUoY29uLCAicGdiZW5jaF9hY2Nv dW50cyIsIG5hY2NvdW50cywgaW5pdEFjY291bnQpOwogCiAJZXhlY3V0ZVN0YXRlbWVudChjb24s ICJjb21taXQiKTsKIH0KIAorCisvKgorICogRHVtcHMgYmluYXJ5IGJ1ZmZlciB0byBmaWxlIChw dXJlbHkgZm9yIGRlYnVnZ2luZykKKyAqLworc3RhdGljIHZvaWQKK2R1bXBCdWZmZXJUb0ZpbGUo Y2hhciAqZmlsZW5hbWUpCit7CisJRklMRSAqZmlsZV9wdHI7CisJc2l6ZV90IGJ5dGVzX3dyaXR0 ZW47CisKKwlmaWxlX3B0ciA9IGZvcGVuKGZpbGVuYW1lLCAid2IiKTsKKwlpZiAoZmlsZV9wdHIg PT0gTlVMTCkKKwl7CisJCWZwcmludGYoc3RkZXJyLCAiRXJyb3Igb3BlbmluZyBmaWxlICVzXG4i LCBmaWxlbmFtZSk7CisJCXJldHVybjsgLy8gRVhJVF9GQUlMVVJFOworCX0KKworCWJ5dGVzX3dy aXR0ZW4gPSBmd3JpdGUoYmluX2NvcHlfYnVmZmVyLCAxLCBiaW5fY29weV9idWZmZXJfbGVuZ3Ro LCBmaWxlX3B0cik7CisKKwlpZiAoYnl0ZXNfd3JpdHRlbiAhPSBiaW5fY29weV9idWZmZXJfbGVu Z3RoKQorCXsKKwkJZnByaW50ZihzdGRlcnIsICJFcnJvciB3cml0aW5nIHRvIGZpbGUgb3IgaW5j b21wbGV0ZSB3cml0ZVxuIik7CisJCWZjbG9zZShmaWxlX3B0cik7CisJCXJldHVybjsgLy8gRVhJ VF9GQUlMVVJFOworCX0KKworCWZjbG9zZShmaWxlX3B0cik7Cit9CisKKy8qCisgKiBTYXZlIGNo YXIgZGF0YSB0byBidWZmZXIKKyAqLworc3RhdGljIHZvaWQKK2J1ZmZlckNoYXJEYXRhKGNoYXIg KnNyYywgaW50MzJfdCBsZW4pCit7CisJbWVtY3B5KChjaGFyICopIGJpbl9jb3B5X2J1ZmZlciAr IGJpbl9jb3B5X2J1ZmZlcl9sZW5ndGgsIChjaGFyICopIHNyYywgbGVuKTsKKwliaW5fY29weV9i dWZmZXJfbGVuZ3RoICs9IGxlbjsKK30KKworLyoKKyAqIENvbnZlcnRzIHBsYXRmb3JtIGJ5dGUg b3JkZXIgaW50byBuZXR3b3JrIGJ5dGUgb3JkZXIKKyAqIFNQQVJDIGRvZXNuJ3QgcmVxaXJlIHRo YXQKKyAqLworc3RhdGljIHZvaWQKK2J1ZmZlckRhdGEodm9pZCAqc3JjLCBpbnQzMl90IGxlbikK K3sKKyNpZmRlZiBfX3NwYXJjX18KKwlidWZmZXJDaGFyRGF0YShzcmMsIGxlbik7CisjZWxzZQor CWlmIChsZW4gPT0gMSkKKwkJYnVmZmVyQ2hhckRhdGEoc3JjLCBsZW4pOworCWVsc2UKKwkJZm9y IChpbnQzMl90IGkgPSAwOyBpIDwgbGVuOyBpKyspCisJCXsKKwkJCSgoY2hhciAqKSBiaW5fY29w eV9idWZmZXIgKyBiaW5fY29weV9idWZmZXJfbGVuZ3RoKVtpXSA9CisJCQkJKChjaGFyICopIHNy YylbbGVuIC0gaSAtIDFdOworCQl9CisKKwliaW5fY29weV9idWZmZXJfbGVuZ3RoICs9IGxlbjsK KyNlbmRpZgorfQorCisvKgorICogYWRkcyBjb2x1bW4gY291bnRlcgorICovCitzdGF0aWMgdm9p ZAorYWRkQ29sdW1uQ291bnRlcihpbnQxNl90IG4pCit7CisJYnVmZmVyRGF0YSgodm9pZCAqKSAm biwgc2l6ZW9mKG4pKTsKK30KKworLyoKKyAqIGFkZHMgY29sdW1uIHdpdGggTlVMTCB2YWx1ZQor ICovCitzdGF0aWMgdm9pZAorYWRkTnVsbENvbHVtbigpCit7CisJaW50MzJfdCBudWxsID0gLTE7 CisJYnVmZmVyRGF0YSgodm9pZCAqKSAmbnVsbCwgc2l6ZW9mKG51bGwpKTsKK30KKworLyoKKyAq IGFkZHMgY29sdW1uIHdpdGggaW50OCB2YWx1ZQorICovCitzdGF0aWMgdm9pZAorYWRkSW50OENv bHVtbihpbnQ4X3QgdmFsdWUpCit7CisJaW50OF90CWRhdGEgPSB2YWx1ZTsKKwlpbnQzMl90CXNp emUgPSBzaXplb2YoZGF0YSk7CisJYnVmZmVyRGF0YSgodm9pZCAqKSAmc2l6ZSwgc2l6ZW9mKHNp emUpKTsKKwlidWZmZXJEYXRhKCh2b2lkICopICZkYXRhLCBzaXplb2YoZGF0YSkpOworfQorCisv KgorICogYWRkcyBjb2x1bW4gd2l0aCBpbnQxNiB2YWx1ZQorICovCitzdGF0aWMgdm9pZAorYWRk SW50MTZDb2x1bW4oaW50MTZfdCB2YWx1ZSkKK3sKKwlpbnQxNl90CWRhdGEgPSB2YWx1ZTsKKwlp bnQzMl90CXNpemUgPSBzaXplb2YoZGF0YSk7CisJYnVmZmVyRGF0YSgodm9pZCAqKSAmc2l6ZSwg c2l6ZW9mKHNpemUpKTsKKwlidWZmZXJEYXRhKCh2b2lkICopICZkYXRhLCBzaXplb2YoZGF0YSkp OworfQorCisvKgorICogYWRkcyBjb2x1bW4gd2l0aCBpbnRpMzIgdmFsdWUKKyAqLworc3RhdGlj IHZvaWQKK2FkZEludDMyQ29sdW1uKGludDMyX3QgdmFsdWUpCit7CisJaW50MzJfdAlkYXRhID0g dmFsdWU7CisJaW50MzJfdAlzaXplID0gc2l6ZW9mKGRhdGEpOworCWJ1ZmZlckRhdGEoKHZvaWQg KikgJnNpemUsIHNpemVvZihzaXplKSk7CisJYnVmZmVyRGF0YSgodm9pZCAqKSAmZGF0YSwgc2l6 ZW9mKGRhdGEpKTsKK30KKworLyoKKyAqIGFkZHMgY29sdW1uIHdpdGggaW50aTY0IHZhbHVlCisg Ki8KK3N0YXRpYyB2b2lkCithZGRJbnQ2NENvbHVtbihpbnQ2NF90IHZhbHVlKQoreworCWludDY0 X3QJZGF0YSA9IHZhbHVlOworCWludDMyX3QJc2l6ZSA9IHNpemVvZihkYXRhKTsKKwlidWZmZXJE YXRhKCh2b2lkICopICZzaXplLCBzaXplb2Yoc2l6ZSkpOworCWJ1ZmZlckRhdGEoKHZvaWQgKikg JmRhdGEsIHNpemVvZihkYXRhKSk7Cit9CisKKy8qCisgKiBhZGRzIGNvbHVtbiB3aXRoIGNoYXIg dmFsdWUKKyAqLworc3RhdGljIHZvaWQKK2FkZENoYXJDb2x1bW4oY2hhciAqdmFsdWUpCit7CisJ aW50MzJfdAlzaXplID0gc3RybGVuKHZhbHVlKTsKKwlidWZmZXJEYXRhKCh2b2lkICopICZzaXpl LCBzaXplb2Yoc2l6ZSkpOworCWJ1ZmZlckNoYXJEYXRhKHZhbHVlLCBzaXplKTsKK30KKworLyoK KyAqIFN0YXJ0cyBjb21tdW5pY2F0aW9uIHdpdGggc2VydmVyIGZvciBDT1BZIEZST00gQklOQVJZ IHN0YXRlbWVudAorICovCitzdGF0aWMgdm9pZAorc2VuZEJpbmFyeUNvcHlIZWFkZXIoUEdjb25u ICpjb24pCit7CisJY2hhciBoZWFkZXJbXSA9IHsnUCcsJ0cnLCdDJywnTycsJ1AnLCdZJywnXG4n LCdcMzc3JywnXHInLCdcbicsJ1wwJywKKwkJCQkJICdcMCcsJ1wwJywnXDAnLCdcMCcsCisJCQkJ CSAnXDAnLCdcMCcsJ1wwJywnXDAnIH07CisKKwlQUXB1dENvcHlEYXRhKGNvbiwgaGVhZGVyLCAx OSk7Cit9CisKKy8qCisgKiBGaW5pc2hlcyBjb21tdW5pY2F0aW9uIHdpdGggc2VydmVyIGZvciBD T1BZIEZST00gQklOQVJZIHN0YXRlbWVudAorICovCitzdGF0aWMgdm9pZAorc2VuZEJpbmFyeUNv cHlUcmFpbGVyKFBHY29ubiAqY29uKQoreworCXN0YXRpYyBjaGFyIHRyYWlsZXJbXSA9IHsgMHhG RiwgMHhGRiB9OworCisJUFFwdXRDb3B5RGF0YShjb24sIHRyYWlsZXIsIDIpOworfQorCisvKgor ICogRmxhc2hlcyBjdXJyZW50IGJ1ZmZlciBvdmVyIG5ldHdvcmsgaWYgbmVlZGVkCisgKi8KK3N0 YXRpYyB2b2lkCitmbHVzaEJ1ZmZlcihQR2Nvbm4gKmNvbiwgUEdyZXN1bHQgKnJlcywgaW50MTZf dCByb3dfbGVuKQoreworCWlmIChiaW5fY29weV9idWZmZXJfbGVuZ3RoICsgcm93X2xlbiA+IEJJ Tl9DT1BZX0JVRl9TSVpFKQorCXsKKwkJLyogZmx1c2ggY3VycmVudCBidWZmZXIgKi8KKwkJaWYg KFBRcmVzdWx0U3RhdHVzKHJlcykgPT0gUEdSRVNfQ09QWV9JTikKKwkJCVBRcHV0Q29weURhdGEo Y29uLCAoY2hhciAqKSBiaW5fY29weV9idWZmZXIsIGJpbl9jb3B5X2J1ZmZlcl9sZW5ndGgpOwor CQliaW5fY29weV9idWZmZXJfbGVuZ3RoID0gMDsKKwl9Cit9CisKKy8qCisgKiBTZW5kcyBjdXJy ZW50IGJyYW5jaCByb3cgdG8gYnVmZmVyCisgKi8KK3N0YXRpYyB2b2lkCitpbml0QnJhbmNoQmlu YXJ5KFBHY29ubiAqY29uLCBQR3Jlc3VsdCAqcmVzLCBpbnQ2NF90IGN1cnIsIGludDMyX3QgcGFy ZW50KQoreworCS8qCisJICogRWFjaCByb3cgaGFzIGZvbGxvd2luZyBleHRyYSBieXRlczoKKwkg KiAtIDIgYnl0ZXMgZm9yIG51bWJlciBvZiBjb2x1bW5zCisJICogLSA0IGJ5dGVzIGFzIGxlbmd0 aCBmb3IgZWFjaCBjb2x1bW4KKwkgKi8KKwlpbnQxNl90CW1heF9yb3dfbGVuID0gIDM1ICsgMiAr IDQqMzsgLyogbWF4IHJvdyBzaXplIGlzIDMyICovCisKKwlmbHVzaEJ1ZmZlcihjb24sIHJlcywg bWF4X3Jvd19sZW4pOworCisJYWRkQ29sdW1uQ291bnRlcigyKTsKKworCWFkZEludDMyQ29sdW1u KGN1cnIgKyAxKTsKKwlhZGRJbnQzMkNvbHVtbigwKTsKK30KKworLyoKKyAqIFNlbmRzIGN1cnJl bnQgdGVsbGVyIHJvdyB0byBidWZmZXIKKyAqLworc3RhdGljIHZvaWQKK2luaXRUZWxsZXJCaW5h cnkoUEdjb25uICpjb24sIFBHcmVzdWx0ICpyZXMsIGludDY0X3QgY3VyciwgaW50MzJfdCBwYXJl bnQpCit7CisJLyoKKwkgKiBFYWNoIHJvdyBoYXMgZm9sbG93aW5nIGV4dHJhIGJ5dGVzOgorCSAq IC0gMiBieXRlcyBmb3IgbnVtYmVyIG9mIGNvbHVtbnMKKwkgKiAtIDQgYnl0ZXMgYXMgbGVuZ3Ro IGZvciBlYWNoIGNvbHVtbgorCSAqLworCWludDE2X3QJbWF4X3Jvd19sZW4gPSAgNDAgKyAyICsg NCo0OyAvKiBtYXggcm93IHNpemUgaXMgNDAgKi8KKworCWZsdXNoQnVmZmVyKGNvbiwgcmVzLCBt YXhfcm93X2xlbik7CisKKwlhZGRDb2x1bW5Db3VudGVyKDMpOworCisJYWRkSW50MzJDb2x1bW4o Y3VyciArIDEpOworCWFkZEludDMyQ29sdW1uKGN1cnIgLyBwYXJlbnQgKyAxKTsKKwlhZGRJbnQz MkNvbHVtbigwKTsKK30KKworLyoKKyAqIFNlbmRzIGN1cnJlbnQgYWNjb3VudCByb3cgdG8gYnVm ZmVyCisgKi8KK3N0YXRpYyB2b2lkCitpbml0QWNjb3VudEJpbmFyeShQR2Nvbm4gKmNvbiwgUEdy ZXN1bHQgKnJlcywgaW50NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCkKK3sKKwkvKgorCSAqIEVh Y2ggcm93IGhhcyBmb2xsb3dpbmcgZXh0cmEgYnl0ZXM6CisJICogLSAyIGJ5dGVzIGZvciBudW1i ZXIgb2YgY29sdW1ucworCSAqIC0gNCBieXRlcyBhcyBsZW5ndGggZm9yIGVhY2ggY29sdW1uCisJ ICovCisJaW50MTZfdAltYXhfcm93X2xlbiA9IDI1MCArIDIgKyA0KjQ7IC8qIG1heCByb3cgc2l6 ZSBpcyAyNTAgZm9yIGludDY0ICovCisKKwlmbHVzaEJ1ZmZlcihjb24sIHJlcywgbWF4X3Jvd19s ZW4pOworCisJYWRkQ29sdW1uQ291bnRlcigzKTsKKworCWlmIChzY2FsZSA8PSBTQ0FMRV8zMkJJ VF9USFJFU0hPTEQpCisJCWFkZEludDMyQ29sdW1uKGN1cnIgKyAxKTsKKwllbHNlCisJCWFkZElu dDY0Q29sdW1uKGN1cnIpOworCisJYWRkSW50MzJDb2x1bW4oY3VyciAvIHBhcmVudCArIDEpOwor CWFkZEludDMyQ29sdW1uKDApOworfQorCisvKgorICogVW5pdmVyc2FsIHdyYXBwZXIgZm9yIHNl bmRpbmcgZGF0YSBpbiBiaW5hcnkgZm9ybWF0CisgKi8KK3N0YXRpYyB2b2lkCitpbml0UG9wdWxh dGVUYWJsZUJpbmFyeShQR2Nvbm4gKmNvbiwgY2hhciAqdGFibGUsIGNoYXIgKmNvbHVtbnMsCisJ CQkJCQlpbnQ2NF90IGJhc2UsIGluaXRSb3dNZXRob2RCaW4gaW5pdF9yb3cpCit7CisJaW50CQkJ IG47CisJUEdyZXN1bHQJKnJlczsKKwljaGFyCQkgY29weV9zdGF0ZW1lbnRbMjU2XTsKKwljb25z dCBjaGFyCSpjb3B5X3N0YXRlbWVudF9mbXQgPSAiY29weSAlcyAoJXMpIGZyb20gc3RkaW4gKGZv cm1hdCBiaW5hcnkpIjsKKwlpbnQ2NF90CQkgdG90YWwgPSBiYXNlICogc2NhbGU7CisKKwliaW5f Y29weV9idWZmZXJfbGVuZ3RoID0gMDsKKworCS8qIFVzZSBDT1BZIHdpdGggRlJFRVpFIG9uIHYx NCBhbmQgbGF0ZXIgZm9yIGFsbCBvcmRpbmFyeSB0YWJsZXMgKi8KKwlpZiAoKFBRc2VydmVyVmVy c2lvbihjb24pID49IDE0MDAwMCkgJiYKKwkJZ2V0X3RhYmxlX3JlbGtpbmQoY29uLCB0YWJsZSkg PT0gUkVMS0lORF9SRUxBVElPTikKKwkJY29weV9zdGF0ZW1lbnRfZm10ID0gImNvcHkgJXMgKCVz KSBmcm9tIHN0ZGluIHdpdGggKGZvcm1hdCBiaW5hcnksIGZyZWV6ZSBvbikiOworCisJbiA9IHBn X3NucHJpbnRmKGNvcHlfc3RhdGVtZW50LCBzaXplb2YoY29weV9zdGF0ZW1lbnQpLCBjb3B5X3N0 YXRlbWVudF9mbXQsIHRhYmxlLCBjb2x1bW5zKTsKKwlpZiAobiA+PSBzaXplb2YoY29weV9zdGF0 ZW1lbnQpKQorCQlwZ19mYXRhbCgiaW52YWxpZCBidWZmZXIgc2l6ZTogbXVzdCBiZSBhdCBsZWFz dCAlZCBjaGFyYWN0ZXJzIGxvbmciLCBuKTsKKwllbHNlIGlmIChuID09IC0xKQorCQlwZ19mYXRh bCgiaW52YWxpZCBmb3JtYXQgc3RyaW5nIik7CisKKwlyZXMgPSBQUWV4ZWMoY29uLCBjb3B5X3N0 YXRlbWVudCk7CisKKwlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19DT1BZX0lOKQor CQlwZ19mYXRhbCgidW5leHBlY3RlZCBjb3B5IGluIHJlc3VsdDogJXMiLCBQUWVycm9yTWVzc2Fn ZShjb24pKTsKKwlQUWNsZWFyKHJlcyk7CisKKworCXNlbmRCaW5hcnlDb3B5SGVhZGVyKGNvbik7 CisKKwlmb3IgKGludDY0X3QgaSA9IDA7IGkgPCB0b3RhbDsgaSsrKQorCXsKKwkJaW5pdF9yb3co Y29uLCByZXMsIGksIGJhc2UpOworCX0KKworCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpID09IFBH UkVTX0NPUFlfSU4pCisJCVBRcHV0Q29weURhdGEoY29uLCAoY2hhciAqKSBiaW5fY29weV9idWZm ZXIsIGJpbl9jb3B5X2J1ZmZlcl9sZW5ndGgpOworCWVsc2UKKwkJZnByaW50ZihzdGRlcnIsICJV bmV4cGVjdGVkIG1vZGUgJWQgaW5zdGVhZCBvZiAlZFxuIiwgUFFyZXN1bHRTdGF0dXMocmVzKSwg UEdSRVNfQ09QWV9JTik7CisKKwlzZW5kQmluYXJ5Q29weVRyYWlsZXIoY29uKTsKKworCWlmIChQ UXJlc3VsdFN0YXR1cyhyZXMpID09IFBHUkVTX0NPUFlfSU4pCisJeworCQlpZiAoUFFwdXRDb3B5 RW5kKGNvbiwgTlVMTCkgPT0gMSkgLyogc3VjY2VzcyAqLworCQl7CisJCQlyZXMgPSBQUWdldFJl c3VsdChjb24pOworCQkJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09NTUFORF9P SykKKwkJCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yOiAlc1xuIiwgUFFlcnJvck1lc3NhZ2UoY29u KSk7CisJCQlQUWNsZWFyKHJlcyk7CisJCX0KKwkJZWxzZQorCQkJZnByaW50ZihzdGRlcnIsICJF cnJvcjogJXNcbiIsIFBRZXJyb3JNZXNzYWdlKGNvbikpOworCX0KK30KKworLyoKKyAqIFdyYXBw ZXIgZm9yIGJpbmFyeSBkYXRhIGxvYWQKKyAqLworc3RhdGljIHZvaWQKK2luaXRHZW5lcmF0ZURh dGFDbGllbnRTaWRlQmluYXJ5KFBHY29ubiAqY29uKQoreworCisJZnByaW50ZihzdGRlcnIsICJC SU5BUlkgbW9kZS4uLlxuIik7CisKKwliaW5fY29weV9idWZmZXIgPSBwZ19tYWxsb2MoQklOX0NP UFlfQlVGX1NJWkUpOworCWJpbl9jb3B5X2J1ZmZlcl9sZW5ndGggPSAwOworCisJLyoKKwkgKiB3 ZSBkbyBhbGwgb2YgdGhpcyBpbiBvbmUgdHJhbnNhY3Rpb24gdG8gZW5hYmxlIHRoZSBiYWNrZW5k J3MKKwkgKiBkYXRhLWxvYWRpbmcgb3B0aW1pemF0aW9ucworCSAqLworCWV4ZWN1dGVTdGF0ZW1l bnQoY29uLCAiYmVnaW4iKTsKKworCS8qIHRydW5jYXRlIGF3YXkgYW55IG9sZCBkYXRhICovCisJ aW5pdFRydW5jYXRlVGFibGVzKGNvbik7CisKKwlpbml0UG9wdWxhdGVUYWJsZUJpbmFyeShjb24s ICJwZ2JlbmNoX2JyYW5jaGVzIiwgImJpZCwgYmJhbGFuY2UiLAorCQkJCQkJCW5icmFuY2hlcywg aW5pdEJyYW5jaEJpbmFyeSk7CisJaW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoY29uLCAicGdiZW5j aF90ZWxsZXJzIiwgICJ0aWQsIGJpZCwgdGJhbGFuY2UiLAorCQkJCQkJCW50ZWxsZXJzLCAgaW5p dFRlbGxlckJpbmFyeSk7CisJaW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoY29uLCAicGdiZW5jaF9h Y2NvdW50cyIsICJhaWQsIGJpZCwgYWJhbGFuY2UiLAorCQkJCQkJCW5hY2NvdW50cywgaW5pdEFj Y291bnRCaW5hcnkpOworCisJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKKworCXBn X2ZyZWUoYmluX2NvcHlfYnVmZmVyKTsKK30KKworLyoKKyAqIEZpbGwgdGhlIHN0YW5kYXJkIHRh YmxlcyB3aXRoIHNvbWUgZGF0YSBnZW5lcmF0ZWQgYW5kIHNlbnQgZnJvbSB0aGUgY2xpZW50Lgor ICovCitzdGF0aWMgdm9pZAoraW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGUoUEdjb25uICpjb24p Cit7CisJZnByaW50ZihzdGRlcnIsICJnZW5lcmF0aW5nIGRhdGEgKGNsaWVudC1zaWRlKSBpbiAi KTsKKworCXN3aXRjaCAoZGF0YV9nZW5lcmF0aW9uX3R5cGUpCisJeworCQljYXNlIEdFTl9UWVBF X0NPUFlfT1JJR0lOQUw6CisJCQlpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZVRleHQoY29uKTsK KwkJCWJyZWFrOworCQljYXNlIEdFTl9UWVBFX0NPUFlfQklOQVJZOgorCQkJaW5pdEdlbmVyYXRl RGF0YUNsaWVudFNpZGVCaW5hcnkoY29uKTsKKwkJCWJyZWFrOworCX0KK30KKwogLyoKICAqIEdl bmVyYXRpbmcgZGF0YSB2aWEgSU5TRVJUIC4uIFNFTEVDVCAuLiBGUk9NIGdlbmVyYXRlX3Nlcmll cwogICogd2hvbGUgZGF0YXNldCBpbiBzaW5nbGUgdHJhbnNhY3Rpb24KQEAgLTU1MDAsMTQgKzU4 NzIsMTAgQEAgY2hlY2tJbml0U3RlcHMoY29uc3QgY2hhciAqaW5pdGlhbGl6ZV9zdGVwcykKIAog CQlzd2l0Y2ggKCpzdGVwKQogCQl7CisJCQljYXNlICdnJzoKKwkJCWNhc2UgJ0MnOgogCQkJY2Fz ZSAnRyc6Ci0JCQkJZGF0YV9pbml0X3R5cGUrKzsKLQkJCQlkYXRhX2dlbmVyYXRpb25fdHlwZSA9 ICpzdGVwOwotCQkJCWJyZWFrOwogCQkJY2FzZSAnaSc6Ci0JCQkJZGF0YV9pbml0X3R5cGUrKzsK LQkJCQlkYXRhX2dlbmVyYXRpb25fdHlwZSA9ICpzdGVwOwotCQkJCWJyZWFrOwogCQkJY2FzZSAn SSc6CiAJCQkJZGF0YV9pbml0X3R5cGUrKzsKIAkJCQlkYXRhX2dlbmVyYXRpb25fdHlwZSA9ICpz dGVwOwpAQCAtNTU1NSw2ICs1OTIzLDcgQEAgcnVuSW5pdFN0ZXBzKGNvbnN0IGNoYXIgKmluaXRp YWxpemVfc3RlcHMpCiAJCQkJaW5pdENyZWF0ZVRhYmxlcyhjb24pOwogCQkJCWJyZWFrOwogCQkJ Y2FzZSAnZyc6CisJCQljYXNlICdDJzoKIAkJCQlvcCA9ICJjbGllbnQtc2lkZSBnZW5lcmF0ZSI7 CiAJCQkJaW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGUoY29uKTsKIAkJCQlicmVhazsKLS0gCjIu NDMuMAoKRnJvbSA0YWEwYWMwNTc2NWVkZjZiNWYwYzEzZTE4YWM2NzcyODdjZTc4MjA2IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBGdWppaSBNYXNhbyA8ZnVqaWlAcG9zdGdyZXNxbC5v cmc+CkRhdGU6IEZyaSwgMTQgTm92IDIwMjUgMjI6NDA6MzkgKzA5MDAKU3ViamVjdDogW1BBVENI IHY3IDA3LzE4XSBwZ2JlbmNoOiBGaXggYXNzZXJ0aW9uIGZhaWx1cmUgd2l0aCBtdWx0aXBsZQog XHN5bmNwaXBlbGluZSBpbiBwaXBlbGluZSBtb2RlLgoKUHJldmlvdXNseSwgd2hlbiBwZ2JlbmNo IHJhbiBhIGN1c3RvbSBzY3JpcHQgdGhhdCB0cmlnZ2VyZWQgcmV0cmlhYmxlIGVycm9ycwooZS5n LiwgZGVhZGxvY2tzKSBmb2xsb3dlZCBieSBtdWx0aXBsZSBcc3luY3BpcGVsaW5lIGNvbW1hbmRz IGluIHBpcGVsaW5lIG1vZGUsCnRoZSBmb2xsb3dpbmcgYXNzZXJ0aW9uIGZhaWx1cmUgY291bGQg b2NjdXI6CgogICAgQXNzZXJ0aW9uIGZhaWxlZDogKHJlcyA9PSAoKHZvaWQqKTApKSwgZnVuY3Rp b24gZGlzY2FyZFVudGlsU3luYywgZmlsZSBwZ2JlbmNoLmMsIGxpbmUgMzU5NC4KClRoZSBpc3N1 ZSB3YXMgdGhhdCBkaXNjYXJkVW50aWxTeW5jKCkgYXNzdW1lZCBhIHBpcGVsaW5lIHN5bmMgcmVz dWx0CihQR1JFU19QSVBFTElORV9TWU5DKSB3b3VsZCBhbHdheXMgYmUgZm9sbG93ZWQgYnkgZWl0 aGVyIGFub3RoZXIgc3luYyByZXN1bHQKb3IgTlVMTC4gVGhpcyBhc3N1bXB0aW9uIHdhcyBpbmNv cnJlY3Q6IHdoZW4gbXVsdGlwbGUgc3luYyByZXF1ZXN0cyB3ZXJlIHNlbnQsCmEgc3luYyByZXN1 bHQgY291bGQgaW5zdGVhZCBiZSBmb2xsb3dlZCBieSBhbm90aGVyIHJlc3VsdCB0eXBlLiBJbiBz dWNoIGNhc2VzLApkaXNjYXJkVW50aWxTeW5jKCkgbWlzaGFuZGxlZCB0aGUgcmVzdWx0cywgbGVh ZGluZyB0byB0aGUgYXNzZXJ0aW9uIGZhaWx1cmUuCgpUaGlzIGNvbW1pdCBmaXhlcyB0aGUgaXNz dWUgYnkgbWFraW5nIGRpc2NhcmRVbnRpbFN5bmMoKSBjb3JyZWN0bHkgaGFuZGxlIGNhc2VzCndo ZXJlIGEgcGlwZWxpbmUgc3luYyByZXN1bHQgaXMgZm9sbG93ZWQgYnkgb3RoZXIgcmVzdWx0IHR5 cGVzLiBJdCBub3cgY29udGludWVzCmRpc2NhcmRpbmcgcmVzdWx0cyB1bnRpbCBhbm90aGVyIHBp cGVsaW5lIHN5bmMgZm9sbG93ZWQgYnkgTlVMTCBpcyByZWFjaGVkLgoKQmFja3BhdGNoZWQgdG8g djE3LCB3aGVyZSBzdXBwb3J0IGZvciBcc3luY3BpcGVsaW5lIGNvbW1hbmQgaW4gcGdiZW5jaCB3 YXMKaW50cm9kdWNlZC4KCkF1dGhvcjogWXVnbyBOYWdhdGEgPG5hZ2F0YUBzcmFvc3MuY28uanA+ ClJldmlld2VkLWJ5OiBDaGFvIExpIDxsaWNAaGlnaGdvLmNvbT4KUmV2aWV3ZWQtYnk6IEZ1amlp IE1hc2FvIDxtYXNhby5mdWppaUBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdy LmVzL20vMjAyNTExMTExMDUwMzcuZjNmYzU1NDYxNmJjMTk4OTFmOTI2YzViQHNyYW9zcy5jby5q cApCYWNrcGF0Y2gtdGhyb3VnaDogMTcKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIHwg MzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdl ZCwgMjggaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ2JlbmNoL3BnYmVuY2guYyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKaW5kZXggZDg3 NjRiYTZmZTAuLmE0MjUxNzZlY2RjIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5j aC5jCisrKyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKQEAgLTM1NjMsMTQgKzM1NjMsMTgg QEAgZG9SZXRyeShDU3RhdGUgKnN0LCBwZ190aW1lX3VzZWNfdCAqbm93KQogfQogCiAvKgotICog UmVhZCByZXN1bHRzIGFuZCBkaXNjYXJkIGl0IHVudGlsIGEgc3luYyBwb2ludC4KKyAqIFJlYWQg YW5kIGRpc2NhcmQgcmVzdWx0cyB1bnRpbCB0aGUgbGFzdCBzeW5jIHBvaW50LgogICovCiBzdGF0 aWMgaW50CiBkaXNjYXJkVW50aWxTeW5jKENTdGF0ZSAqc3QpCiB7CiAJYm9vbAkJcmVjZWl2ZWRf c3luYyA9IGZhbHNlOwogCi0JLyogc2VuZCBhIHN5bmMgKi8KKwkvKgorCSAqIFNlbmQgYSBTeW5j IG1lc3NhZ2UgdG8gZW5zdXJlIGF0IGxlYXN0IG9uZSBQR1JFU19QSVBFTElORV9TWU5DIGlzCisJ ICogcmVjZWl2ZWQgYW5kIHRvIGF2b2lkIGFuIGluZmluaXRlIGxvb3AsIHNpbmNlIGFsbCBlYXJs aWVyIG9uZXMgbWF5IGhhdmUKKwkgKiBhbHJlYWR5IGJlZW4gcmVjZWl2ZWQuCisJICovCiAJaWYg KCFQUXBpcGVsaW5lU3luYyhzdC0+Y29uKSkKIAl7CiAJCXBnX2xvZ19lcnJvcigiY2xpZW50ICVk IGFib3J0ZWQ6IGZhaWxlZCB0byBzZW5kIGEgcGlwZWxpbmUgc3luYyIsCkBAIC0zNTc4LDI5ICsz NTgyLDQyIEBAIGRpc2NhcmRVbnRpbFN5bmMoQ1N0YXRlICpzdCkKIAkJcmV0dXJuIDA7CiAJfQog Ci0JLyogcmVjZWl2ZSBQR1JFU19QSVBFTElORV9TWU5DIGFuZCBudWxsIGZvbGxvd2luZyBpdCAq LworCS8qCisJICogQ29udGludWUgcmVhZGluZyByZXN1bHRzIHVudGlsIHRoZSBsYXN0IHN5bmMg cG9pbnQsIGkuZS4sIHVudGlsCisJICogcmVhY2hpbmcgbnVsbCBqdXN0IGFmdGVyIFBHUkVTX1BJ UEVMSU5FX1NZTkMuCisJICovCiAJZm9yICg7OykKIAl7CiAJCVBHcmVzdWx0ICAgKnJlcyA9IFBR Z2V0UmVzdWx0KHN0LT5jb24pOwogCisJCWlmIChQUXN0YXR1cyhzdC0+Y29uKSA9PSBDT05ORUNU SU9OX0JBRCkKKwkJeworCQkJcGdfbG9nX2Vycm9yKCJjbGllbnQgJWQgYWJvcnRlZCB3aGlsZSBy b2xsaW5nIGJhY2sgdGhlIHRyYW5zYWN0aW9uIGFmdGVyIGFuIGVycm9yOyBwZXJoYXBzIHRoZSBi YWNrZW5kIGRpZWQgd2hpbGUgcHJvY2Vzc2luZyIsCisJCQkJCQkgc3QtPmlkKTsKKwkJCVBRY2xl YXIocmVzKTsKKwkJCXJldHVybiAwOworCQl9CisKIAkJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykg PT0gUEdSRVNfUElQRUxJTkVfU1lOQykKIAkJCXJlY2VpdmVkX3N5bmMgPSB0cnVlOwotCQllbHNl IGlmIChyZWNlaXZlZF9zeW5jKQorCQllbHNlIGlmIChyZWNlaXZlZF9zeW5jICYmIHJlcyA9PSBO VUxMKQogCQl7Ci0JCQkvKgotCQkJICogUEdSRVNfUElQRUxJTkVfU1lOQyBtdXN0IGJlIGZvbGxv d2VkIGJ5IGFub3RoZXIKLQkJCSAqIFBHUkVTX1BJUEVMSU5FX1NZTkMgb3IgTlVMTDsgb3RoZXJ3 aXNlLCBhc3NlcnQgZmFpbHVyZS4KLQkJCSAqLwotCQkJQXNzZXJ0KHJlcyA9PSBOVUxMKTsKLQog CQkJLyoKIAkJCSAqIFJlc2V0IG9uZ29pbmcgc3luYyBjb3VudCB0byAwIHNpbmNlIGFsbCBQR1JF U19QSVBFTElORV9TWU5DCiAJCQkgKiByZXN1bHRzIGhhdmUgYmVlbiBkaXNjYXJkZWQuCiAJCQkg Ki8KIAkJCXN0LT5udW1fc3luY3MgPSAwOwotCQkJUFFjbGVhcihyZXMpOwogCQkJYnJlYWs7CiAJ CX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogSWYgYSBQR1JFU19QSVBFTElORV9TWU5DIGlz IGZvbGxvd2VkIGJ5IHNvbWV0aGluZyBvdGhlciB0aGFuCisJCQkgKiBQR1JFU19QSVBFTElORV9T WU5DIG9yIE5VTEwsIGFub3RoZXIgUEdSRVNfUElQRUxJTkVfU1lOQyB3aWxsCisJCQkgKiBhcHBl YXIgbGF0ZXIuIFJlc2V0IHJlY2VpdmVkX3N5bmMgdG8gZmFsc2UgdG8gd2FpdCBmb3IgaXQuCisJ CQkgKi8KKwkJCXJlY2VpdmVkX3N5bmMgPSBmYWxzZTsKKwkJfQogCQlQUWNsZWFyKHJlcyk7CiAJ fQogCi0tIAoyLjQzLjAKCkZyb20gOWM0ZjE5MDU1NTk3ZTlhZGIyNWU2NWMyYWE4YmVkZjIwYTA5 ZTEzZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQm9yaXMgTWlyb25vdiA8Ym9yaXMu bWlyb25vdkBnbWFpbC5jb20+CkRhdGU6IEZyaSwgMjEgTm92IDIwMjUgMTk6MDU6NTggKzA3MDAK U3ViamVjdDogW1BBVENIIHY3IDA4LzE4XSBTZXR0aW5nIGVtcHR5IHN0cmluZyBhcyBkZWZhdWx0 IHZhbHVlIGluIGZpbGxlcgogY29sdW1uCgotLS0KIHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMg fCAxNiArKysrKysrKy0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9z cmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDk2N2Y2Y2U2OTg0Li4wM2I1ZTVjMjhmMCAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMvYmluL3BnYmVu Y2gvcGdiZW5jaC5jCkBAIC00OTg1LDI2ICs0OTg1LDI2IEBAIGluaXRDcmVhdGVUYWJsZXMoUEdj b25uICpjb24pCiAJc3RhdGljIGNvbnN0IHN0cnVjdCBkZGxpbmZvIERETHNbXSA9IHsKIAkJewog CQkJInBnYmVuY2hfaGlzdG9yeSIsCi0JCQkidGlkIGludCxiaWQgaW50LGFpZCAgICBpbnQsZGVs dGEgaW50LG10aW1lIHRpbWVzdGFtcCxmaWxsZXIgY2hhcigyMikiLAotCQkJInRpZCBpbnQsYmlk IGludCxhaWQgYmlnaW50LGRlbHRhIGludCxtdGltZSB0aW1lc3RhbXAsZmlsbGVyIGNoYXIoMjIp IiwKKwkJCSJ0aWQgaW50LGJpZCBpbnQsYWlkICAgIGludCxkZWx0YSBpbnQsbXRpbWUgdGltZXN0 YW1wLGZpbGxlciBjaGFyKDIyKSBkZWZhdWx0ICcnIiwKKwkJCSJ0aWQgaW50LGJpZCBpbnQsYWlk IGJpZ2ludCxkZWx0YSBpbnQsbXRpbWUgdGltZXN0YW1wLGZpbGxlciBjaGFyKDIyKSBkZWZhdWx0 ICcnIiwKIAkJCTAKIAkJfSwKIAkJewogCQkJInBnYmVuY2hfdGVsbGVycyIsCi0JCQkidGlkIGlu dCBub3QgbnVsbCxiaWQgaW50LHRiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4NCkiLAotCQkJInRp ZCBpbnQgbm90IG51bGwsYmlkIGludCx0YmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODQpIiwKKwkJ CSJ0aWQgaW50IG5vdCBudWxsLGJpZCBpbnQsdGJhbGFuY2UgaW50LGZpbGxlciBjaGFyKDg0KSBk ZWZhdWx0ICcnIiwKKwkJCSJ0aWQgaW50IG5vdCBudWxsLGJpZCBpbnQsdGJhbGFuY2UgaW50LGZp bGxlciBjaGFyKDg0KSBkZWZhdWx0ICcnIiwKIAkJCTEKIAkJfSwKIAkJewogCQkJInBnYmVuY2hf YWNjb3VudHMiLAotCQkJImFpZCAgICBpbnQgbm90IG51bGwsYmlkIGludCxhYmFsYW5jZSBpbnQs ZmlsbGVyIGNoYXIoODQpIiwKLQkJCSJhaWQgYmlnaW50IG5vdCBudWxsLGJpZCBpbnQsYWJhbGFu Y2UgaW50LGZpbGxlciBjaGFyKDg0KSIsCisJCQkiYWlkICAgIGludCBub3QgbnVsbCxiaWQgaW50 LGFiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4NCkgZGVmYXVsdCAnJyIsCisJCQkiYWlkIGJpZ2lu dCBub3QgbnVsbCxiaWQgaW50LGFiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4NCkgZGVmYXVsdCAn JyIsCiAJCQkxCiAJCX0sCiAJCXsKIAkJCSJwZ2JlbmNoX2JyYW5jaGVzIiwKLQkJCSJiaWQgaW50 IG5vdCBudWxsLGJiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4OCkiLAotCQkJImJpZCBpbnQgbm90 IG51bGwsYmJhbGFuY2UgaW50LGZpbGxlciBjaGFyKDg4KSIsCisJCQkiYmlkIGludCBub3QgbnVs bCxiYmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODgpIGRlZmF1bHQgJyciLAorCQkJImJpZCBpbnQg bm90IG51bGwsYmJhbGFuY2UgaW50LGZpbGxlciBjaGFyKDg4KSBkZWZhdWx0ICcnIiwKIAkJCTEK IAkJfQogCX07Ci0tIAoyLjQzLjAKCkZyb20gMmFhYmFhNTJkZmZkYjc4ZmJlZmFlZjk1MTYzODgx YzE1ZTE4ZWYyOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSGVpa2tpIExpbm5ha2Fu Z2FzIDxoZWlra2kubGlubmFrYW5nYXNAaWtpLmZpPgpEYXRlOiBGcmksIDIxIE5vdiAyMDI1IDE1 OjAzOjExICswMjAwClN1YmplY3Q6IFtQQVRDSCB2NyAwOS8xOF0gVXNlIHN0cnRvaTY0KCkgaW4g cGdiZW5jaCwgcmVwbGFjaW5nIGl0cyBvcGVuLWNvZGVkCiBpbXBsZW1lbnRhdGlvbgoKTWFrZXMg dGhlIGNvZGUgYSBsaXR0bGUgc2ltcGxlci4KClRoZSBvbGQgaW1wbGVtZW50YXRpb24gYWNjZXB0 ZWQgdHJhaWxpbmcgd2hpdGVzcGFjZSwgYnV0IHRoYXQgd2FzCnVubmVjZXNzYXJ5LiBGaXJzdGx5 LCBpdHMgc2libGluZyBmdW5jdGlvbiBmb3IgcGFyc2luZyBkZWNpbWFscywKc3RydG9kb3VibGUo KSwgZG9lcyBub3QgYWNjZXB0IHRyYWlsaW5nIHdoaXRlc3BhY2UuIFNlY29uZGx5LCBub25lIG9m CnRoZSBjYWxsZXJzIGNhbiBwYXNzIGEgc3RyaW5nIHdpdGggdHJhaWxpbmcgd2hpdGVzcGFjZSB0 byBpdC4KCkluIHRoZSBwYXNzaW5nLCBjaGVjayBzcGVjaWZpY2FsbHkgZm9yIEVSQU5HRSBiZWZv cmUgcHJpbnRpbmcgdGhlICJvdXQKb2YgcmFuZ2UiIGVycm9yLiBPbiBzb21lIHN5c3RlbXMsIHN0 cnRvdWwoKSBhbmQgc3RydG9kKCkgcmV0dXJuIEVJTlZBTApvbiBhbiBlbXB0eSBvciBhbGwtc3Bh Y2VzIHN0cmluZywgYW5kICJpbnZhbGlkIGlucHV0IHN5bnRheCIgaXMgbW9yZQphcHByb3ByaWF0 ZSBmb3IgdGhhdCB0aGFuICJvdXQgb2YgcmFuZ2UiLiBGb3IgdGhlIGV4aXN0aW5nCnN0cnRvZG91 YmxlKCkgZnVuY3Rpb24gdGhpcyBpcyBwdXJlbHkgYWNhZGVtaWNhbCBiZWNhdXNlIGl0J3MgbmV2 ZXIKY2FsbGVkIHdpdGggZXJyb3JPSz09ZmFsc2UsIGJ1dCBsZXQncyBiZSB0aWR5LiAoUGVyaGFw cyB3ZSBzaG91bGQKcmVtb3ZlIHRoZSBkZWFkIGNvZGVwYXRocyBhbHRvZ2V0aGVyLCBidXQgSSds bCBsZWF2ZSB0aGF0IGZvciBhbm90aGVyCmRheS4pCgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGku ZXZhbi5jaGFvQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFl1ZWZlaSBTaGkgPHNoaXl1ZWZlaTEw MDRAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogTmVpbCBDaGVuIDxjYXJwZW50ZXIubmFpbC5jekBn bWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2Ut aWQvODYxZGQ1YmQtZjJjOS00ZmY1LThhYTAtZjgyYmRiNzVlYzFmQGlraS5maQotLS0KIHNyYy9i aW4vcGdiZW5jaC9wZ2JlbmNoLmMgfCA4MyArKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCA2NCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2Jl bmNoL3BnYmVuY2guYwppbmRleCBhNDI1MTc2ZWNkYy4uNjg3NzRhNTllZmQgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKKysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2gu YwpAQCAtOTgyLDEzICs5ODIsMTcgQEAgdXNhZ2Uodm9pZCkKIAkJICAgcHJvZ25hbWUsIHByb2du YW1lLCBQQUNLQUdFX0JVR1JFUE9SVCwgUEFDS0FHRV9OQU1FLCBQQUNLQUdFX1VSTCk7CiB9CiAK LS8qIHJldHVybiB3aGV0aGVyIHN0ciBtYXRjaGVzICJeXHMqWy0rXT9bMC05XSskIiAqLworLyoK KyAqIFJldHVybiB3aGV0aGVyIHN0ciBtYXRjaGVzICJeXHMqWy0rXT9bMC05XSskIgorICoKKyAq IFRoaXMgc2hvdWxkIGFncmVlIHdpdGggc3RydG9pbnQ2NCgpIG9uIHdoYXQncyBhY2NlcHRlZCwg aWdub3Jpbmcgb3ZlcmZsb3dzLgorICovCiBzdGF0aWMgYm9vbAogaXNfYW5faW50KGNvbnN0IGNo YXIgKnN0cikKIHsKIAljb25zdCBjaGFyICpwdHIgPSBzdHI7CiAKLQkvKiBza2lwIGxlYWRpbmcg c3BhY2VzOyBjYXN0IGlzIGNvbnNpc3RlbnQgd2l0aCBzdHJ0b2ludDY0ICovCisJLyogc2tpcCBs ZWFkaW5nIHNwYWNlcyAqLwogCXdoaWxlICgqcHRyICYmIGlzc3BhY2UoKHVuc2lnbmVkIGNoYXIp ICpwdHIpKQogCQlwdHIrKzsKIApAQCAtMTAxMiw5ICsxMDE2LDYgQEAgaXNfYW5faW50KGNvbnN0 IGNoYXIgKnN0cikKIC8qCiAgKiBzdHJ0b2ludDY0IC0tIGNvbnZlcnQgYSBzdHJpbmcgdG8gNjQt Yml0IGludGVnZXIKICAqCi0gKiBUaGlzIGZ1bmN0aW9uIGlzIGEgc2xpZ2h0bHkgbW9kaWZpZWQg dmVyc2lvbiBvZiBwZ19zdHJ0b2ludDY0KCkgZnJvbQotICogc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L251bXV0aWxzLmMuCi0gKgogICogVGhlIGZ1bmN0aW9uIHJldHVybnMgd2hldGhlciB0aGUgY29u dmVyc2lvbiB3b3JrZWQsIGFuZCBpZiBzbwogICogIipyZXN1bHQiIGlzIHNldCB0byB0aGUgcmVz dWx0LgogICoKQEAgLTEwMjMsNzEgKzEwMjQsMjUgQEAgaXNfYW5faW50KGNvbnN0IGNoYXIgKnN0 cikKIGJvb2wKIHN0cnRvaW50NjQoY29uc3QgY2hhciAqc3RyLCBib29sIGVycm9yT0ssIGludDY0 ICpyZXN1bHQpCiB7Ci0JY29uc3QgY2hhciAqcHRyID0gc3RyOwotCWludDY0CQl0bXAgPSAwOwot CWJvb2wJCW5lZyA9IGZhbHNlOwotCi0JLyoKLQkgKiBEbyBvdXIgb3duIHNjYW4sIHJhdGhlciB0 aGFuIHJlbHlpbmcgb24gc3NjYW5mIHdoaWNoIG1pZ2h0IGJlIGJyb2tlbgotCSAqIGZvciBsb25n IGxvbmcuCi0JICoKLQkgKiBBcyBJTlQ2NF9NSU4gY2FuJ3QgYmUgc3RvcmVkIGFzIGEgcG9zaXRp dmUgNjQgYml0IGludGVnZXIsIGFjY3VtdWxhdGUKLQkgKiB2YWx1ZSBhcyBhIG5lZ2F0aXZlIG51 bWJlci4KLQkgKi8KLQotCS8qIHNraXAgbGVhZGluZyBzcGFjZXMgKi8KLQl3aGlsZSAoKnB0ciAm JiBpc3NwYWNlKCh1bnNpZ25lZCBjaGFyKSAqcHRyKSkKLQkJcHRyKys7Ci0KLQkvKiBoYW5kbGUg c2lnbiAqLwotCWlmICgqcHRyID09ICctJykKLQl7Ci0JCXB0cisrOwotCQluZWcgPSB0cnVlOwot CX0KLQllbHNlIGlmICgqcHRyID09ICcrJykKLQkJcHRyKys7CisJY2hhcgkgICAqZW5kOwogCi0J LyogcmVxdWlyZSBhdCBsZWFzdCBvbmUgZGlnaXQgKi8KLQlpZiAodW5saWtlbHkoIWlzZGlnaXQo KHVuc2lnbmVkIGNoYXIpICpwdHIpKSkKLQkJZ290byBpbnZhbGlkX3N5bnRheDsKKwllcnJubyA9 IDA7CisJKnJlc3VsdCA9IHN0cnRvaTY0KHN0ciwgJmVuZCwgMTApOwogCi0JLyogcHJvY2VzcyBk aWdpdHMgKi8KLQl3aGlsZSAoKnB0ciAmJiBpc2RpZ2l0KCh1bnNpZ25lZCBjaGFyKSAqcHRyKSkK KwlpZiAodW5saWtlbHkoZXJybm8gPT0gRVJBTkdFKSkKIAl7Ci0JCWludDgJCWRpZ2l0ID0gKCpw dHIrKyAtICcwJyk7Ci0KLQkJaWYgKHVubGlrZWx5KHBnX211bF9zNjRfb3ZlcmZsb3codG1wLCAx MCwgJnRtcCkpIHx8Ci0JCQl1bmxpa2VseShwZ19zdWJfczY0X292ZXJmbG93KHRtcCwgZGlnaXQs ICZ0bXApKSkKLQkJCWdvdG8gb3V0X29mX3JhbmdlOworCQlpZiAoIWVycm9yT0spCisJCQlwZ19s b2dfZXJyb3IoInZhbHVlIFwiJXNcIiBpcyBvdXQgb2YgcmFuZ2UgZm9yIHR5cGUgYmlnaW50Iiwg c3RyKTsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAotCS8qIGFsbG93IHRyYWlsaW5nIHdoaXRlc3Bh Y2UsIGJ1dCBub3Qgb3RoZXIgdHJhaWxpbmcgY2hhcnMgKi8KLQl3aGlsZSAoKnB0ciAhPSAnXDAn ICYmIGlzc3BhY2UoKHVuc2lnbmVkIGNoYXIpICpwdHIpKQotCQlwdHIrKzsKLQotCWlmICh1bmxp a2VseSgqcHRyICE9ICdcMCcpKQotCQlnb3RvIGludmFsaWRfc3ludGF4OwotCi0JaWYgKCFuZWcp CisJaWYgKHVubGlrZWx5KGVycm5vICE9IDAgfHwgZW5kID09IHN0ciB8fCAqZW5kICE9ICdcMCcp KQogCXsKLQkJaWYgKHVubGlrZWx5KHRtcCA9PSBQR19JTlQ2NF9NSU4pKQotCQkJZ290byBvdXRf b2ZfcmFuZ2U7Ci0JCXRtcCA9IC10bXA7CisJCWlmICghZXJyb3JPSykKKwkJCXBnX2xvZ19lcnJv cigiaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgYmlnaW50OiBcIiVzXCIiLCBzdHIpOwor CQlyZXR1cm4gZmFsc2U7CiAJfQotCi0JKnJlc3VsdCA9IHRtcDsKIAlyZXR1cm4gdHJ1ZTsKLQot b3V0X29mX3JhbmdlOgotCWlmICghZXJyb3JPSykKLQkJcGdfbG9nX2Vycm9yKCJ2YWx1ZSBcIiVz XCIgaXMgb3V0IG9mIHJhbmdlIGZvciB0eXBlIGJpZ2ludCIsIHN0cik7Ci0JcmV0dXJuIGZhbHNl OwotCi1pbnZhbGlkX3N5bnRheDoKLQlpZiAoIWVycm9yT0spCi0JCXBnX2xvZ19lcnJvcigiaW52 YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgYmlnaW50OiBcIiVzXCIiLCBzdHIpOwotCXJldHVy biBmYWxzZTsKIH0KIAogLyogY29udmVydCBzdHJpbmcgdG8gZG91YmxlLCBkZXRlY3Rpbmcgb3Zl cmZsb3dzL3VuZGVyZmxvd3MgKi8KQEAgLTEwOTksMTQgKzEwNTQsMTQgQEAgc3RydG9kb3VibGUo Y29uc3QgY2hhciAqc3RyLCBib29sIGVycm9yT0ssIGRvdWJsZSAqZHYpCiAJZXJybm8gPSAwOwog CSpkdiA9IHN0cnRvZChzdHIsICZlbmQpOwogCi0JaWYgKHVubGlrZWx5KGVycm5vICE9IDApKQor CWlmICh1bmxpa2VseShlcnJubyA9PSBFUkFOR0UpKQogCXsKIAkJaWYgKCFlcnJvck9LKQogCQkJ cGdfbG9nX2Vycm9yKCJ2YWx1ZSBcIiVzXCIgaXMgb3V0IG9mIHJhbmdlIGZvciB0eXBlIGRvdWJs ZSIsIHN0cik7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKLQlpZiAodW5saWtlbHkoZW5kID09IHN0 ciB8fCAqZW5kICE9ICdcMCcpKQorCWlmICh1bmxpa2VseShlcnJubyAhPSAwIHx8IGVuZCA9PSBz dHIgfHwgKmVuZCAhPSAnXDAnKSkKIAl7CiAJCWlmICghZXJyb3JPSykKIAkJCXBnX2xvZ19lcnJv cigiaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgZG91YmxlOiBcIiVzXCIiLCBzdHIpOwot LSAKMi40My4wCgpGcm9tIGRjYjg1ZDI2ZjgxMzJlYWFmOWQwOTZlODE0YjliZGE0OWRiN2Q0Nzgg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJvcmlzIE1pcm9ub3YgPGJvcmlzLm1pcm9u b3ZAZ21haWwuY29tPgpEYXRlOiBGcmksIDIxIE5vdiAyMDI1IDIwOjA2OjI0ICswNzAwClN1Ympl Y3Q6IFtQQVRDSCB2NyAxMC8xOF0gU3dpdGNoaW5nIENPUFkgRlJPTSBCSU5BUlkgdGkgcnVuIGlu IG11bHRpcGxlCiB0cmFuc2FjdGlvbnMKCi0tLQogc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyB8 IDI3ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE2IGluc2Vy dGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9w Z2JlbmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDAzYjVlNWMyOGYwLi42 Yjg5MDA3YTYzYiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9z cmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC01NDk2LDIwICs1NDk2LDIwIEBAIGluaXRBY2Nv dW50QmluYXJ5KFBHY29ubiAqY29uLCBQR3Jlc3VsdCAqcmVzLCBpbnQ2NF90IGN1cnIsIGludDMy X3QgcGFyZW50KQogICovCiBzdGF0aWMgdm9pZAogaW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoUEdj b25uICpjb24sIGNoYXIgKnRhYmxlLCBjaGFyICpjb2x1bW5zLAotCQkJCQkJaW50NjRfdCBiYXNl LCBpbml0Um93TWV0aG9kQmluIGluaXRfcm93KQorCQkJCQkJaW50IGNvdW50ZXIsIGludDY0X3Qg YmFzZSwgaW5pdFJvd01ldGhvZEJpbiBpbml0X3JvdykKIHsKIAlpbnQJCQkgbjsKIAlQR3Jlc3Vs dAkqcmVzOwogCWNoYXIJCSBjb3B5X3N0YXRlbWVudFsyNTZdOwogCWNvbnN0IGNoYXIJKmNvcHlf c3RhdGVtZW50X2ZtdCA9ICJjb3B5ICVzICglcykgZnJvbSBzdGRpbiAoZm9ybWF0IGJpbmFyeSki OwotCWludDY0X3QJCSB0b3RhbCA9IGJhc2UgKiBzY2FsZTsKKwlpbnQ2NF90CQkgc3RhcnQgPSBi YXNlICogY291bnRlcjsKIAogCWJpbl9jb3B5X2J1ZmZlcl9sZW5ndGggPSAwOwogCiAJLyogVXNl IENPUFkgd2l0aCBGUkVFWkUgb24gdjE0IGFuZCBsYXRlciBmb3IgYWxsIG9yZGluYXJ5IHRhYmxl cyAqLwogCWlmICgoUFFzZXJ2ZXJWZXJzaW9uKGNvbikgPj0gMTQwMDAwKSAmJgogCQlnZXRfdGFi bGVfcmVsa2luZChjb24sIHRhYmxlKSA9PSBSRUxLSU5EX1JFTEFUSU9OKQotCQljb3B5X3N0YXRl bWVudF9mbXQgPSAiY29weSAlcyAoJXMpIGZyb20gc3RkaW4gd2l0aCAoZm9ybWF0IGJpbmFyeSwg ZnJlZXplIG9uKSI7CisJCWNvcHlfc3RhdGVtZW50X2ZtdCA9ICJjb3B5ICVzICglcykgZnJvbSBz dGRpbiB3aXRoIChmb3JtYXQgYmluYXJ5KSI7CiAKIAluID0gcGdfc25wcmludGYoY29weV9zdGF0 ZW1lbnQsIHNpemVvZihjb3B5X3N0YXRlbWVudCksIGNvcHlfc3RhdGVtZW50X2ZtdCwgdGFibGUs IGNvbHVtbnMpOwogCWlmIChuID49IHNpemVvZihjb3B5X3N0YXRlbWVudCkpCkBAIC01NTI2LDcg KzU1MjYsNyBAQCBpbml0UG9wdWxhdGVUYWJsZUJpbmFyeShQR2Nvbm4gKmNvbiwgY2hhciAqdGFi bGUsIGNoYXIgKmNvbHVtbnMsCiAKIAlzZW5kQmluYXJ5Q29weUhlYWRlcihjb24pOwogCi0JZm9y IChpbnQ2NF90IGkgPSAwOyBpIDwgdG90YWw7IGkrKykKKwlmb3IgKGludDY0X3QgaSA9IHN0YXJ0 OyBpIDwgc3RhcnQgKyBiYXNlOyBpKyspCiAJewogCQlpbml0X3Jvdyhjb24sIHJlcywgaSwgYmFz ZSk7CiAJfQpAQCAtNTU3MywxNSArNTU3MywyMCBAQCBpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lk ZUJpbmFyeShQR2Nvbm4gKmNvbikKIAkvKiB0cnVuY2F0ZSBhd2F5IGFueSBvbGQgZGF0YSAqLwog CWluaXRUcnVuY2F0ZVRhYmxlcyhjb24pOwogCi0JaW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoY29u LCAicGdiZW5jaF9icmFuY2hlcyIsICJiaWQsIGJiYWxhbmNlIiwKLQkJCQkJCQluYnJhbmNoZXMs IGluaXRCcmFuY2hCaW5hcnkpOwotCWluaXRQb3B1bGF0ZVRhYmxlQmluYXJ5KGNvbiwgInBnYmVu Y2hfdGVsbGVycyIsICAidGlkLCBiaWQsIHRiYWxhbmNlIiwKLQkJCQkJCQludGVsbGVycywgIGlu aXRUZWxsZXJCaW5hcnkpOwotCWluaXRQb3B1bGF0ZVRhYmxlQmluYXJ5KGNvbiwgInBnYmVuY2hf YWNjb3VudHMiLCAiYWlkLCBiaWQsIGFiYWxhbmNlIiwKLQkJCQkJCQluYWNjb3VudHMsIGluaXRB Y2NvdW50QmluYXJ5KTsKLQogCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7CiAKKwlm b3IgKGludCBpID0gMDsgaSA8IHNjYWxlOyBpKyspCisJeworCQlpbml0UG9wdWxhdGVUYWJsZUJp bmFyeShjb24sICJwZ2JlbmNoX2JyYW5jaGVzIiwgImJpZCwgYmJhbGFuY2UiLAorCQkJCQkJCQlp LCBuYnJhbmNoZXMsIGluaXRCcmFuY2hCaW5hcnkpOworCQlpbml0UG9wdWxhdGVUYWJsZUJpbmFy eShjb24sICJwZ2JlbmNoX3RlbGxlcnMiLCAgInRpZCwgYmlkLCB0YmFsYW5jZSIsCisJCQkJCQkJ CWksIG50ZWxsZXJzLCAgaW5pdFRlbGxlckJpbmFyeSk7CisJCWluaXRQb3B1bGF0ZVRhYmxlQmlu YXJ5KGNvbiwgInBnYmVuY2hfYWNjb3VudHMiLCAiYWlkLCBiaWQsIGFiYWxhbmNlIiwKKwkJCQkJ CQkJaSwgbmFjY291bnRzLCBpbml0QWNjb3VudEJpbmFyeSk7CisKKwkJZXhlY3V0ZVN0YXRlbWVu dChjb24sICJjb21taXQiKTsKKwl9CisKIAlwZ19mcmVlKGJpbl9jb3B5X2J1ZmZlcik7CiB9CiAK LS0gCjIuNDMuMAoKRnJvbSBiOGUyODg4MTIyNTIzNGZkMDBiNTUyMzViYzYwZmFkMmRjNjBiNTQ0 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCb3JpcyBNaXJvbm92IDxib3Jpcy5taXJv bm92QGdtYWlsLmNvbT4KRGF0ZTogU2F0LCAyMiBOb3YgMjAyNSAxNzowNjowMCArMDcwMApTdWJq ZWN0OiBbUEFUQ0ggdjcgMTEvMThdIEFkZGluZyB0ZXN0cyBmb3IgbmV3IG1vZGVzIG9mIGRhdGEg Z2VuZXJhdGlvbgoKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jICAgICAgICAgICAgICAg ICAgICB8IDIxICsrKystLS0tCiBzcmMvYmluL3BnYmVuY2gvdC8wMDFfcGdiZW5jaF93aXRoX3Nl cnZlci5wbCB8IDUyICsrKysrKysrKysrKysrKysrLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDU2IGlu c2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5j aC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDZiODkwMDdhNjNi Li5kZDRlNWQ1ZTA1NiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysg Yi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC0xNjQsNyArMTY0LDcgQEAgdHlwZWRlZiBz dHJ1Y3Qgc29ja2V0X3NldAogI2RlZmluZSBBTExfSU5JVF9TVEVQUyAiZHRnQ0dpSXZwZiIJLyog YWxsIHBvc3NpYmxlIHN0ZXBzICovCiAKICNkZWZpbmUgTE9HX1NURVBfU0VDT05EUwk1CS8qIHNl Y29uZHMgYmV0d2VlbiBsb2cgbWVzc2FnZXMgKi8KLSNkZWZpbmUgREVGQVVMVF9OWEFDVFMJMTAJ CS8qIGRlZmF1bHQgbnhhY3RzICovCisjZGVmaW5lIERFRkFVTFRfTlhBQ1RTCQkxMAkvKiBkZWZh dWx0IG54YWN0cyAqLwogCiAjZGVmaW5lIE1JTl9HQVVTU0lBTl9QQVJBTQkJMi4wIC8qIG1pbmlt dW0gcGFyYW1ldGVyIGZvciBnYXVzcyAqLwogCkBAIC0xOTIsNyArMTkyLDcgQEAgc3RhdGljIGlu dAlzY2FsZSA9IDE7CiAvKgogICogbW9kZSBvZiBkYXRhIGdlbmVyYXRpb24gdG8gdXNlCiAgKi8K LXN0YXRpYyBjaGFyCWRhdGFfZ2VuZXJhdGlvbl90eXBlID0gJz8nOworc3RhdGljIGNoYXIJZGF0 YV9nZW5lcmF0aW9uX3R5cGUgPSBHRU5fVFlQRV9DT1BZX09SSUdJTkFMOwogCiAvKgogICogQ09Q WSBGUk9NIEJJTkFSWSBleGVjdXRpb24gYnVmZmVyCkBAIC00OTg1LDI2ICs0OTg1LDI2IEBAIGlu aXRDcmVhdGVUYWJsZXMoUEdjb25uICpjb24pCiAJc3RhdGljIGNvbnN0IHN0cnVjdCBkZGxpbmZv IERETHNbXSA9IHsKIAkJewogCQkJInBnYmVuY2hfaGlzdG9yeSIsCi0JCQkidGlkIGludCxiaWQg aW50LGFpZCAgICBpbnQsZGVsdGEgaW50LG10aW1lIHRpbWVzdGFtcCxmaWxsZXIgY2hhcigyMikg ZGVmYXVsdCAnJyIsCi0JCQkidGlkIGludCxiaWQgaW50LGFpZCBiaWdpbnQsZGVsdGEgaW50LG10 aW1lIHRpbWVzdGFtcCxmaWxsZXIgY2hhcigyMikgZGVmYXVsdCAnJyIsCisJCQkidGlkIGludCxi aWQgaW50LGFpZCAgICBpbnQsZGVsdGEgaW50LG10aW1lIHRpbWVzdGFtcCxmaWxsZXIgY2hhcigy MikgZGVmYXVsdCAnPyciLAorCQkJInRpZCBpbnQsYmlkIGludCxhaWQgYmlnaW50LGRlbHRhIGlu dCxtdGltZSB0aW1lc3RhbXAsZmlsbGVyIGNoYXIoMjIpIGRlZmF1bHQgJz8nIiwKIAkJCTAKIAkJ fSwKIAkJewogCQkJInBnYmVuY2hfdGVsbGVycyIsCi0JCQkidGlkIGludCBub3QgbnVsbCxiaWQg aW50LHRiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4NCkgZGVmYXVsdCAnJyIsCi0JCQkidGlkIGlu dCBub3QgbnVsbCxiaWQgaW50LHRiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4NCkgZGVmYXVsdCAn JyIsCisJCQkidGlkIGludCBub3QgbnVsbCxiaWQgaW50LHRiYWxhbmNlIGludCxmaWxsZXIgY2hh cig4NCkiLAorCQkJInRpZCBpbnQgbm90IG51bGwsYmlkIGludCx0YmFsYW5jZSBpbnQsZmlsbGVy IGNoYXIoODQpIiwKIAkJCTEKIAkJfSwKIAkJewogCQkJInBnYmVuY2hfYWNjb3VudHMiLAotCQkJ ImFpZCAgICBpbnQgbm90IG51bGwsYmlkIGludCxhYmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODQp IGRlZmF1bHQgJyciLAotCQkJImFpZCBiaWdpbnQgbm90IG51bGwsYmlkIGludCxhYmFsYW5jZSBp bnQsZmlsbGVyIGNoYXIoODQpIGRlZmF1bHQgJyciLAorCQkJImFpZCAgICBpbnQgbm90IG51bGws YmlkIGludCxhYmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODQpIGRlZmF1bHQgJz8nIiwKKwkJCSJh aWQgYmlnaW50IG5vdCBudWxsLGJpZCBpbnQsYWJhbGFuY2UgaW50LGZpbGxlciBjaGFyKDg0KSBk ZWZhdWx0ICc/JyIsCiAJCQkxCiAJCX0sCiAJCXsKIAkJCSJwZ2JlbmNoX2JyYW5jaGVzIiwKLQkJ CSJiaWQgaW50IG5vdCBudWxsLGJiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4OCkgZGVmYXVsdCAn JyIsCi0JCQkiYmlkIGludCBub3QgbnVsbCxiYmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODgpIGRl ZmF1bHQgJyciLAorCQkJImJpZCBpbnQgbm90IG51bGwsYmJhbGFuY2UgaW50LGZpbGxlciBjaGFy KDg4KSIsCisJCQkiYmlkIGludCBub3QgbnVsbCxiYmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODgp IiwKIAkJCTEKIAkJfQogCX07CkBAIC03ODM3LDYgKzc4MzcsNyBAQCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikKIAkJCX0KIAkJfQogCisJCWNoZWNrSW5pdFN0ZXBzKGluaXRpYWxpemVfc3Rl cHMpOwogCQlydW5Jbml0U3RlcHMoaW5pdGlhbGl6ZV9zdGVwcyk7CiAJCWV4aXQoMCk7CiAJfQpk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3QvMDAxX3BnYmVuY2hfd2l0aF9zZXJ2ZXIucGwg Yi9zcmMvYmluL3BnYmVuY2gvdC8wMDFfcGdiZW5jaF93aXRoX3NlcnZlci5wbAppbmRleCA1ODFl OWFmNzkwNy4uYTM3NzA0OGVhZDEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC90LzAwMV9w Z2JlbmNoX3dpdGhfc2VydmVyLnBsCisrKyBiL3NyYy9iaW4vcGdiZW5jaC90LzAwMV9wZ2JlbmNo X3dpdGhfc2VydmVyLnBsCkBAIC0xNiwyNSArMTYsMzAgQEAgc3ViIGNoZWNrX2RhdGFfc3RhdGUK IAlsb2NhbCAkVGVzdDo6QnVpbGRlcjo6TGV2ZWwgPSAkVGVzdDo6QnVpbGRlcjo6TGV2ZWwgKyAx OwogCW15ICRub2RlID0gc2hpZnQ7CiAJbXkgJHR5cGUgPSBzaGlmdDsKKwlteSAkc3FsX3Jlc3Vs dDsKIAotCW15ICRzcWxfcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCQkn U0VMRUNUIGNvdW50KCopIEFTIG51bGxfY291bnQgRlJPTSBwZ2JlbmNoX2FjY291bnRzIFdIRVJF IGZpbGxlciBJUyBOVUxMIExJTUlUIDEwOycKLQkpOwotCWlzKCRzcWxfcmVzdWx0LCAnMCcsCi0J CSIkdHlwZTogZmlsbGVyIGNvbHVtbiBvZiBwZ2JlbmNoX2FjY291bnRzIGhhcyBubyBOVUxMIGRh dGEiKTsKIAkkc3FsX3Jlc3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJJ1NF TEVDVCBjb3VudCgqKSBBUyBudWxsX2NvdW50IEZST00gcGdiZW5jaF9icmFuY2hlcyBXSEVSRSBm aWxsZXIgSVMgTlVMTDsnCiAJKTsKIAlpcygkc3FsX3Jlc3VsdCwgJzEnLAogCQkiJHR5cGU6IGZp bGxlciBjb2x1bW4gb2YgcGdiZW5jaF9icmFuY2hlcyBoYXMgb25seSBOVUxMIGRhdGEiKTsKKwog CSRzcWxfcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCQknU0VMRUNUIGNv dW50KCopIEFTIG51bGxfY291bnQgRlJPTSBwZ2JlbmNoX3RlbGxlcnMgV0hFUkUgZmlsbGVyIElT IE5VTEw7JwogCSk7CiAJaXMoJHNxbF9yZXN1bHQsICcxMCcsCiAJCSIkdHlwZTogZmlsbGVyIGNv bHVtbiBvZiBwZ2JlbmNoX3RlbGxlcnMgaGFzIG9ubHkgTlVMTCBkYXRhIik7CisKKwkkc3FsX3Jl c3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJJ1NFTEVDVCBjb3VudCgqKSBB UyBudWxsX2NvdW50IEZST00gcGdiZW5jaF9hY2NvdW50cyBXSEVSRSBmaWxsZXIgSVMgTlVMTCBM SU1JVCAxMDsnCisJKTsKKwlpcygkc3FsX3Jlc3VsdCwgJzAnLAorCQkiJHR5cGU6IGZpbGxlciBj b2x1bW4gb2YgcGdiZW5jaF9hY2NvdW50cyBoYXMgbm8gTlVMTCBkYXRhIik7CisKIAkkc3FsX3Jl c3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJJ1NFTEVDVCBjb3VudCgqKSBB UyBkYXRhX2NvdW50IEZST00gcGdiZW5jaF9oaXN0b3J5OycpOwotCWlzKCRzcWxfcmVzdWx0LCAn MCcsICIkdHlwZTogcGdiZW5jaF9oaXN0b3J5IGhhcyBubyBkYXRhIik7CisJaXMoJHNxbF9yZXN1 bHQsICcwJywKKwkJIiR0eXBlOiBwZ2JlbmNoX2hpc3RvcnkgaGFzIG5vIGRhdGEiKTsKIH0KIAog IyBzdGFydCBhIHBnYmVuY2ggc3BlY2lmaWMgc2VydmVyCkBAIC0xMjUsNyArMTMwLDcgQEAgJG5v ZGUtPnBnYmVuY2goCiAJJ3BnYmVuY2ggc2NhbGUgMSBpbml0aWFsaXphdGlvbicsKTsKIAogIyBD aGVjayBkYXRhIHN0YXRlLCBhZnRlciBjbGllbnQtc2lkZSBkYXRhIGdlbmVyYXRpb24uCi1jaGVj a19kYXRhX3N0YXRlKCRub2RlLCAnY2xpZW50LXNpZGUnKTsKK2NoZWNrX2RhdGFfc3RhdGUoJG5v ZGUsICdjbGllbnQtc2lkZSAoZGVmYXVsdCBvcHRpb25zKScpOwogCiAjIEFnYWluLCB3aXRoIGFs bCBwb3NzaWJsZSBvcHRpb25zCiAkbm9kZS0+cGdiZW5jaCgKQEAgLTE0Myw2ICsxNDgsNyBAQCAk bm9kZS0+cGdiZW5jaCgKIAkJcXJ7ZG9uZSBpbiBcZCtcLlxkXGQgcyB9CiAJXSwKIAkncGdiZW5j aCBzY2FsZSAxIGluaXRpYWxpemF0aW9uJyk7CitjaGVja19kYXRhX3N0YXRlKCRub2RlLCAnY2xp ZW50LXNpZGUgKGFsbCBvcHRpb25zKScpOwogCiAjIFRlc3QgaW50ZXJhY3Rpb24gb2YgLS1pbml0 LXN0ZXBzIHdpdGggbGVnYWN5IHN0ZXAtc2VsZWN0aW9uIG9wdGlvbnMKICRub2RlLT5wZ2JlbmNo KApAQCAtMTY0LDYgKzE3MCwzOCBAQCAkbm9kZS0+cGdiZW5jaCgKICMgQ2hlY2sgZGF0YSBzdGF0 ZSwgYWZ0ZXIgc2VydmVyLXNpZGUgZGF0YSBnZW5lcmF0aW9uLgogY2hlY2tfZGF0YV9zdGF0ZSgk bm9kZSwgJ3NlcnZlci1zaWRlJyk7CiAKKyMgVGVzdCBzZXJ2ZXItc2lkZSBnZW5lcmF0aW9uIHdp dGggVU5ORVNUCiskbm9kZS0+cGdiZW5jaCgKKwknLS1pbml0aWFsaXplIC0taW5pdC1zdGVwcz1k dEknLAorCTAsCisJW3Fye14kfV0sCisJWworCQlxcntkcm9wcGluZyBvbGQgdGFibGVzfSwKKwkJ cXJ7Y3JlYXRpbmcgdGFibGVzfSwKKwkJcXJ7Z2VuZXJhdGluZyBkYXRhIFwoc2VydmVyLXNpZGVc KX0sCisJCXFye2RvbmUgaW4gXGQrXC5cZFxkIHMgfQorCV0sCisJJ3BnYmVuY2ggLS1pbml0LXN0 ZXBzIHNlcnZlci1zaWRlIFVOTkVTVCcpOworCisjIENoZWNrIGRhdGEgc3RhdGUsIGFmdGVyIHNl cnZlci1zaWRlIGRhdGEgZ2VuZXJhdGlvbi4KK2NoZWNrX2RhdGFfc3RhdGUoJG5vZGUsICdzZXJ2 ZXItc2lkZSAodW5uZXN0KScpOworCisjIFRlc3Qgc2VydmVyLXNpZGUgZ2VuZXJhdGlvbiB3aXRo IFVOTkVTVAorJG5vZGUtPnBnYmVuY2goCisJJy0taW5pdGlhbGl6ZSAtLWluaXQtc3RlcHM9ZHRD JywKKwkwLAorCVtxcnteJH1dLAorCVsKKwkJcXJ7ZHJvcHBpbmcgb2xkIHRhYmxlc30sCisJCXFy e2NyZWF0aW5nIHRhYmxlc30sCisJCXFye2dlbmVyYXRpbmcgZGF0YSBcKGNsaWVudC1zaWRlXCl9 LAorCQlxcntkb25lIGluIFxkK1wuXGRcZCBzIH0KKwldLAorCSdwZ2JlbmNoIC0taW5pdC1zdGVw cyBjbGllbnQtc2lkZSBCSU5BUlknKTsKKworIyBDaGVjayBkYXRhIHN0YXRlLCBhZnRlciBzZXJ2 ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24uCitjaGVja19kYXRhX3N0YXRlKCRub2RlLCAnY2xpZW50 LXNpZGUgKGJpbmFyeSknKTsKKwogIyBSdW4gYWxsIGJ1aWx0aW4gc2NyaXB0cywgZm9yIGEgZmV3 IHRyYW5zYWN0aW9ucyBlYWNoCiAkbm9kZS0+cGdiZW5jaCgKIAknLS10cmFuc2FjdGlvbnM9NSAt RGZvbz1ibGEgLS1jbGllbnQ9MiAtLXByb3RvY29sPXNpbXBsZSAtLWJ1aWx0aW49dCcKLS0gCjIu NDMuMAoKRnJvbSBiM2YyYmNlMzQyMzJkMjk5YWJjNzY0NGE4NTc5ZjBjZTQ5YzhjOWQ2IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCb3JpcyBNaXJvbm92IDxib3Jpcy5taXJvbm92QGdt YWlsLmNvbT4KRGF0ZTogU3VuLCAyMyBOb3YgMjAyNSAxNDowNTo1OSArMDcwMApTdWJqZWN0OiBb UEFUQ0ggdjcgMTIvMThdIEZpeGluZyBjb21waWxlciB3YXJuaW5ncyBhYm91dCB1bnVzZWQgcHJv Y2VkdXJlcyBieQogcmVtb3Zpbmcgb3IgY29tbWVudGluZyB0aGVtIG91dCBhcyB0aGV5IG1pZ2h0 IGJlIG5lZWRlZCBhIGJpdCBsYXRlcgoKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIHwg MzEgKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDUgaW5z ZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNo L3BnYmVuY2guYyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKaW5kZXggMGEzYmEyMWRjYzku LjY4MmRiNjFmZjYxIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCisrKyBi L3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKQEAgLTUyMDEsNyArNTIwMSw3IEBAIGluaXRHZW5l cmF0ZURhdGFDbGllbnRTaWRlVGV4dChQR2Nvbm4gKmNvbikKIAogLyoKICAqIER1bXBzIGJpbmFy eSBidWZmZXIgdG8gZmlsZSAocHVyZWx5IGZvciBkZWJ1Z2dpbmcpCi0gKi8KKyAqCiBzdGF0aWMg dm9pZAogZHVtcEJ1ZmZlclRvRmlsZShjaGFyICpmaWxlbmFtZSkKIHsKQEAgLTUyMjYsNiArNTIy Niw3IEBAIGR1bXBCdWZmZXJUb0ZpbGUoY2hhciAqZmlsZW5hbWUpCiAKIAlmY2xvc2UoZmlsZV9w dHIpOwogfQorICovCiAKIC8qCiAgKiBTYXZlIGNoYXIgZGF0YSB0byBidWZmZXIKQEAgLTUyNzEs MzcgKzUyNzIsMTQgQEAgYWRkQ29sdW1uQ291bnRlcihpbnQxNl90IG4pCiAKIC8qCiAgKiBhZGRz IGNvbHVtbiB3aXRoIE5VTEwgdmFsdWUKLSAqLworICoKIHN0YXRpYyB2b2lkCiBhZGROdWxsQ29s dW1uKCkKIHsKIAlpbnQzMl90IG51bGwgPSAtMTsKIAlidWZmZXJEYXRhKCh2b2lkICopICZudWxs LCBzaXplb2YobnVsbCkpOwogfQotCi0vKgotICogYWRkcyBjb2x1bW4gd2l0aCBpbnQ4IHZhbHVl CiAgKi8KLXN0YXRpYyB2b2lkCi1hZGRJbnQ4Q29sdW1uKGludDhfdCB2YWx1ZSkKLXsKLQlpbnQ4 X3QJZGF0YSA9IHZhbHVlOwotCWludDMyX3QJc2l6ZSA9IHNpemVvZihkYXRhKTsKLQlidWZmZXJE YXRhKCh2b2lkICopICZzaXplLCBzaXplb2Yoc2l6ZSkpOwotCWJ1ZmZlckRhdGEoKHZvaWQgKikg JmRhdGEsIHNpemVvZihkYXRhKSk7Ci19Ci0KLS8qCi0gKiBhZGRzIGNvbHVtbiB3aXRoIGludDE2 IHZhbHVlCi0gKi8KLXN0YXRpYyB2b2lkCi1hZGRJbnQxNkNvbHVtbihpbnQxNl90IHZhbHVlKQot ewotCWludDE2X3QJZGF0YSA9IHZhbHVlOwotCWludDMyX3QJc2l6ZSA9IHNpemVvZihkYXRhKTsK LQlidWZmZXJEYXRhKCh2b2lkICopICZzaXplLCBzaXplb2Yoc2l6ZSkpOwotCWJ1ZmZlckRhdGEo KHZvaWQgKikgJmRhdGEsIHNpemVvZihkYXRhKSk7Ci19CiAKIC8qCiAgKiBhZGRzIGNvbHVtbiB3 aXRoIGludGkzMiB2YWx1ZQpAQCAtNTMyOSw3ICs1MzA3LDcgQEAgYWRkSW50NjRDb2x1bW4oaW50 NjRfdCB2YWx1ZSkKIAogLyoKICAqIGFkZHMgY29sdW1uIHdpdGggY2hhciB2YWx1ZQotICovCisg Kgogc3RhdGljIHZvaWQKIGFkZENoYXJDb2x1bW4oY2hhciAqdmFsdWUpCiB7CkBAIC01MzM3LDYg KzUzMTUsNyBAQCBhZGRDaGFyQ29sdW1uKGNoYXIgKnZhbHVlKQogCWJ1ZmZlckRhdGEoKHZvaWQg KikgJnNpemUsIHNpemVvZihzaXplKSk7CiAJYnVmZmVyQ2hhckRhdGEodmFsdWUsIHNpemUpOwog fQorICovCiAKIC8qCiAgKiBTdGFydHMgY29tbXVuaWNhdGlvbiB3aXRoIHNlcnZlciBmb3IgQ09Q WSBGUk9NIEJJTkFSWSBzdGF0ZW1lbnQKLS0gCjIuNDMuMAoKRnJvbSA5YWI3ZmUzMDJiYTdkZTQw NTkzZTdjYmE4ZWExY2EzYjg3NmMxZWE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBC b3JpcyBNaXJvbm92IDxib3Jpcy5taXJvbm92QGdtYWlsLmNvbT4KRGF0ZTogVGh1LCAyOSBKYW4g MjAyNiAxOToyMjoxNiArMDcwMApTdWJqZWN0OiBbUEFUQ0ggdjcgMTMvMThdIE1vdmluZyBQUWNs ZWFyIGNhbGwgdG8gdGhlIGVuZCBvZiBwcm9jZWR1cmUgdG8gYXZvaWQKIGFjY2VzcyB0byBwcmV2 aW91c2x5IHJlbGVhc2VkIG1lbW9yeQoKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIHwg MjcgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0 aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3Bn YmVuY2guYyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKaW5kZXggNjgyZGI2MWZmNjEuLjM2 ODdiNjU4NzFlIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCisrKyBiL3Ny Yy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKQEAgLTUzNjMsMTEgKzUzNjMsMTEgQEAgc3RhdGljIHZv aWQKIGluaXRCcmFuY2hCaW5hcnkoUEdjb25uICpjb24sIFBHcmVzdWx0ICpyZXMsIGludDY0X3Qg Y3VyciwgaW50MzJfdCBwYXJlbnQpCiB7CiAJLyoKLQkgKiBFYWNoIHJvdyBoYXMgZm9sbG93aW5n IGV4dHJhIGJ5dGVzOgorCSAqIEVhY2ggcm93IG9mIGJyYW5jaCB0YWJsZSBoYXMgZm9sbG93aW5n IGV4dHJhIGJ5dGVzOgogCSAqIC0gMiBieXRlcyBmb3IgbnVtYmVyIG9mIGNvbHVtbnMKLQkgKiAt IDQgYnl0ZXMgYXMgbGVuZ3RoIGZvciBlYWNoIGNvbHVtbgorCSAqIC0gNCBieXRlcyBhcyBsZW5n dGggZm9yIGVhY2ggb2YgdGFibGUncyAzIGNvbHVtbnMKIAkgKi8KLQlpbnQxNl90CW1heF9yb3df bGVuID0gIDM1ICsgMiArIDQqMzsgLyogbWF4IHJvdyBzaXplIGlzIDMyICovCisJaW50MTZfdAlt YXhfcm93X2xlbiA9ICAzNSArIDIgKyA0KjM7IC8qIG1heCByb3cgc2l6ZSBpcyAzNSAqLwogCiAJ Zmx1c2hCdWZmZXIoY29uLCByZXMsIG1heF9yb3dfbGVuKTsKIApAQCAtNTM4NCw5ICs1Mzg0LDkg QEAgc3RhdGljIHZvaWQKIGluaXRUZWxsZXJCaW5hcnkoUEdjb25uICpjb24sIFBHcmVzdWx0ICpy ZXMsIGludDY0X3QgY3VyciwgaW50MzJfdCBwYXJlbnQpCiB7CiAJLyoKLQkgKiBFYWNoIHJvdyBo YXMgZm9sbG93aW5nIGV4dHJhIGJ5dGVzOgorCSAqIEVhY2ggcm93IG9mIHRlbGxlcnMgdGFibGUg aGFzIGZvbGxvd2luZyBleHRyYSBieXRlczoKIAkgKiAtIDIgYnl0ZXMgZm9yIG51bWJlciBvZiBj b2x1bW5zCi0JICogLSA0IGJ5dGVzIGFzIGxlbmd0aCBmb3IgZWFjaCBjb2x1bW4KKwkgKiAtIDQg Ynl0ZXMgYXMgbGVuZ3RoIGZvciBlYWNoIG9mIHRhYmxlJ3MgNCBjb2x1bW5zCiAJICovCiAJaW50 MTZfdAltYXhfcm93X2xlbiA9ICA0MCArIDIgKyA0KjQ7IC8qIG1heCByb3cgc2l6ZSBpcyA0MCAq LwogCkBAIC01NDA2LDkgKzU0MDYsOSBAQCBzdGF0aWMgdm9pZAogaW5pdEFjY291bnRCaW5hcnko UEdjb25uICpjb24sIFBHcmVzdWx0ICpyZXMsIGludDY0X3QgY3VyciwgaW50MzJfdCBwYXJlbnQp CiB7CiAJLyoKLQkgKiBFYWNoIHJvdyBoYXMgZm9sbG93aW5nIGV4dHJhIGJ5dGVzOgorCSAqIEVh Y2ggcm93IG9mIGFjY291bnRzIHRhYmxlIGhhcyBmb2xsb3dpbmcgZXh0cmEgYnl0ZXM6CiAJICog LSAyIGJ5dGVzIGZvciBudW1iZXIgb2YgY29sdW1ucwotCSAqIC0gNCBieXRlcyBhcyBsZW5ndGgg Zm9yIGVhY2ggY29sdW1uCisJICogLSA0IGJ5dGVzIGFzIGxlbmd0aCBmb3IgZWFjaCBvZiB0YWJs ZSdzIDQgY29sdW1ucwogCSAqLwogCWludDE2X3QJbWF4X3Jvd19sZW4gPSAyNTAgKyAyICsgNCo0 OyAvKiBtYXggcm93IHNpemUgaXMgMjUwIGZvciBpbnQ2NCAqLwogCkBAIC01NDU1LDExICs1NDU1 LDExIEBAIGluaXRQb3B1bGF0ZVRhYmxlQmluYXJ5KFBHY29ubiAqY29uLCBjaGFyICp0YWJsZSwg Y2hhciAqY29sdW1ucywKIAogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPUFlf SU4pCiAJCXBnX2ZhdGFsKCJ1bmV4cGVjdGVkIGNvcHkgaW4gcmVzdWx0OiAlcyIsIFBRZXJyb3JN ZXNzYWdlKGNvbikpOwotCVBRY2xlYXIocmVzKTsKIAogCiAJc2VuZEJpbmFyeUNvcHlIZWFkZXIo Y29uKTsKIAorCiAJZm9yIChpbnQ2NF90IGkgPSBzdGFydDsgaSA8IHN0YXJ0ICsgYmFzZTsgaSsr KQogCXsKIAkJaW5pdF9yb3coY29uLCByZXMsIGksIGJhc2UpOwpAQCAtNTQ3MCw4ICs1NDcwLDEw IEBAIGluaXRQb3B1bGF0ZVRhYmxlQmluYXJ5KFBHY29ubiAqY29uLCBjaGFyICp0YWJsZSwgY2hh ciAqY29sdW1ucywKIAllbHNlCiAJCWZwcmludGYoc3RkZXJyLCAiVW5leHBlY3RlZCBtb2RlICVk IGluc3RlYWQgb2YgJWRcbiIsIFBRcmVzdWx0U3RhdHVzKHJlcyksIFBHUkVTX0NPUFlfSU4pOwog CisKIAlzZW5kQmluYXJ5Q29weVRyYWlsZXIoY29uKTsKIAorCiAJaWYgKFBRcmVzdWx0U3RhdHVz KHJlcykgPT0gUEdSRVNfQ09QWV9JTikKIAl7CiAJCWlmIChQUXB1dENvcHlFbmQoY29uLCBOVUxM KSA9PSAxKSAvKiBzdWNjZXNzICovCkBAIC01NDg0LDYgKzU0ODYsOCBAQCBpbml0UG9wdWxhdGVU YWJsZUJpbmFyeShQR2Nvbm4gKmNvbiwgY2hhciAqdGFibGUsIGNoYXIgKmNvbHVtbnMsCiAJCWVs c2UKIAkJCWZwcmludGYoc3RkZXJyLCAiRXJyb3I6ICVzXG4iLCBQUWVycm9yTWVzc2FnZShjb24p KTsKIAl9CisKKwlQUWNsZWFyKHJlcyk7CiB9CiAKIC8qCkBAIC01NDk5LDggKzU1MDMsOSBAQCBp bml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZUJpbmFyeShQR2Nvbm4gKmNvbikKIAliaW5fY29weV9i dWZmZXJfbGVuZ3RoID0gMDsKIAogCS8qCi0JICogd2UgZG8gYWxsIG9mIHRoaXMgaW4gb25lIHRy YW5zYWN0aW9uIHRvIGVuYWJsZSB0aGUgYmFja2VuZCdzCi0JICogZGF0YS1sb2FkaW5nIG9wdGlt aXphdGlvbnMKKwkgKiB3ZSBkbyBhbGwgb2YgdGhpcyBpbiBtdWx0aXBsZSB0cmFuc2FjdGlvbnMK KwkgKiB0byBtaW5pbWl6ZSBsb2FkIG9uIERCIHNlcnZlciBhbmQgcGVyaGFwcworCSAqIGluIGZ1 dHVyZSBhbGxvdyBsb2FkIGluIHBhcmFsbGVsIHNlc3Npb25zCiAJICovCiAJZXhlY3V0ZVN0YXRl bWVudChjb24sICJiZWdpbiIpOwogCkBAIC01NTExLDYgKzU1MTYsOCBAQCBpbml0R2VuZXJhdGVE YXRhQ2xpZW50U2lkZUJpbmFyeShQR2Nvbm4gKmNvbikKIAogCWZvciAoaW50IGkgPSAwOyBpIDwg c2NhbGU7IGkrKykKIAl7CisJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4iKTsKKwogCQlp bml0UG9wdWxhdGVUYWJsZUJpbmFyeShjb24sICJwZ2JlbmNoX2JyYW5jaGVzIiwgImJpZCwgYmJh bGFuY2UiLAogCQkJCQkJCQlpLCBuYnJhbmNoZXMsIGluaXRCcmFuY2hCaW5hcnkpOwogCQlpbml0 UG9wdWxhdGVUYWJsZUJpbmFyeShjb24sICJwZ2JlbmNoX3RlbGxlcnMiLCAgInRpZCwgYmlkLCB0 YmFsYW5jZSIsCi0tIAoyLjQzLjAKCkZyb20gM2Q3YjJjNTNiM2ZhNDViODg0ODM2OWJmYmM0OWEw YzdlNTg1NDMwNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQm9yaXMgTWlyb25vdiA8 Ym9yaXMubWlyb25vdkBnbWFpbC5jb20+CkRhdGU6IFRodSwgMjkgSmFuIDIwMjYgMTk6NDc6MjYg KzA3MDAKU3ViamVjdDogW1BBVENIIHY3IDE0LzE4XSBGaXhpbmcgZXJyb3IgYWJvdXQgZnJlZWlu ZyBtZW1vcnkgdHdpY2UKCi0tLQogc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyB8IDQgKystLQog MSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2gu YwppbmRleCAzNjg3YjY1ODcxZS4uNmY0MjQzOGQ5NzAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdi ZW5jaC9wZ2JlbmNoLmMKKysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtNTQ2Miw2 ICs1NDYyLDcgQEAgaW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoUEdjb25uICpjb24sIGNoYXIgKnRh YmxlLCBjaGFyICpjb2x1bW5zLAogCiAJZm9yIChpbnQ2NF90IGkgPSBzdGFydDsgaSA8IHN0YXJ0 ICsgYmFzZTsgaSsrKQogCXsKKwkJcmVzID0gUFFnZXRSZXN1bHQoY29uKTsKIAkJaW5pdF9yb3co Y29uLCByZXMsIGksIGJhc2UpOwogCX0KIApAQCAtNTQ3Myw3ICs1NDc0LDcgQEAgaW5pdFBvcHVs YXRlVGFibGVCaW5hcnkoUEdjb25uICpjb24sIGNoYXIgKnRhYmxlLCBjaGFyICpjb2x1bW5zLAog CiAJc2VuZEJpbmFyeUNvcHlUcmFpbGVyKGNvbik7CiAKLQorCXJlcyA9IFBRZ2V0UmVzdWx0KGNv bik7CiAJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgPT0gUEdSRVNfQ09QWV9JTikKIAl7CiAJCWlm IChQUXB1dENvcHlFbmQoY29uLCBOVUxMKSA9PSAxKSAvKiBzdWNjZXNzICovCkBAIC01NDgxLDcg KzU0ODIsNiBAQCBpbml0UG9wdWxhdGVUYWJsZUJpbmFyeShQR2Nvbm4gKmNvbiwgY2hhciAqdGFi bGUsIGNoYXIgKmNvbHVtbnMsCiAJCQlyZXMgPSBQUWdldFJlc3VsdChjb24pOwogCQkJaWYgKFBR cmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09NTUFORF9PSykKIAkJCQlmcHJpbnRmKHN0ZGVy ciwgIkVycm9yOiAlc1xuIiwgUFFlcnJvck1lc3NhZ2UoY29uKSk7Ci0JCQlQUWNsZWFyKHJlcyk7 CiAJCX0KIAkJZWxzZQogCQkJZnByaW50ZihzdGRlcnIsICJFcnJvcjogJXNcbiIsIFBRZXJyb3JN ZXNzYWdlKGNvbikpOwotLSAKMi40My4wCgpGcm9tIGE3MWM5MGY1NTZiYTE0MzMzNWQ5NjMxZWJi ZGY5NmI3MTIwYzZkMWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJvcmlzIE1pcm9u b3YgPGJvcmlzLm1pcm9ub3ZAZ21haWwuY29tPgpEYXRlOiBUaHUsIDI5IEphbiAyMDI2IDIwOjI0 OjU0ICswNzAwClN1YmplY3Q6IFtQQVRDSCB2NyAxNS8xOF0gRml4aW5nIG1lbW9yeSBsZWFrIGR1 cmluZyBkYXRhIGZsdXNoIGluIENPUFkgQklOQVJZCiB0ZXN0CgotLS0KIHNyYy9iaW4vcGdiZW5j aC9wZ2JlbmNoLmMgfCAyNiArKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5n ZWQsIDE2IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDZm NDI0MzhkOTcwLi44ZWNhNTM3YjcxOCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVu Y2guYworKysgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC04NzEsNyArODcxLDcgQEAg c3RhdGljIGJvb2wgc29ja2V0X2hhc19pbnB1dChzb2NrZXRfc2V0ICpzYSwgaW50IGZkLCBpbnQg aWR4KTsKIAogLyogY2FsbGJhY2sgdXNlZCB0byBidWlsZCByb3dzIGZvciBDT1BZIGR1cmluZyBk YXRhIGxvYWRpbmcgKi8KIHR5cGVkZWYgdm9pZCAoKmluaXRSb3dNZXRob2QpCQkoUFFFeHBCdWZm ZXJEYXRhICpzcWwsIGludDY0IGN1cnIpOwotdHlwZWRlZiB2b2lkICgqaW5pdFJvd01ldGhvZEJp bikJKFBHY29ubiAqY29uLCBQR3Jlc3VsdCAqcmVzLCBpbnQ2NF90IGN1cnIsIGludDMyX3QgcGFy ZW50KTsKK3R5cGVkZWYgdm9pZCAoKmluaXRSb3dNZXRob2RCaW4pCShQR2Nvbm4gKmNvbiwgaW50 NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCk7CiAKIC8qIGNhbGxiYWNrIGZ1bmN0aW9ucyBmb3Ig b3VyIGZsZXggbGV4ZXIgKi8KIHN0YXRpYyBjb25zdCBQc3FsU2NhbkNhbGxiYWNrcyBwZ2JlbmNo X2NhbGxiYWNrcyA9IHsKQEAgLTUzNDUsMTMgKzUzNDUsMTggQEAgc2VuZEJpbmFyeUNvcHlUcmFp bGVyKFBHY29ubiAqY29uKQogICogRmxhc2hlcyBjdXJyZW50IGJ1ZmZlciBvdmVyIG5ldHdvcmsg aWYgbmVlZGVkCiAgKi8KIHN0YXRpYyB2b2lkCi1mbHVzaEJ1ZmZlcihQR2Nvbm4gKmNvbiwgUEdy ZXN1bHQgKnJlcywgaW50MTZfdCByb3dfbGVuKQorZmx1c2hCdWZmZXIoUEdjb25uICpjb24sIGlu dDE2X3Qgcm93X2xlbikKIHsKKwlQR3Jlc3VsdCAqcmVzOworCiAJaWYgKGJpbl9jb3B5X2J1ZmZl cl9sZW5ndGggKyByb3dfbGVuID4gQklOX0NPUFlfQlVGX1NJWkUpCiAJeworCQlyZXMgPSBQUWdl dFJlc3VsdChjb24pOwogCQkvKiBmbHVzaCBjdXJyZW50IGJ1ZmZlciAqLwogCQlpZiAoUFFyZXN1 bHRTdGF0dXMocmVzKSA9PSBQR1JFU19DT1BZX0lOKQogCQkJUFFwdXRDb3B5RGF0YShjb24sIChj aGFyICopIGJpbl9jb3B5X2J1ZmZlciwgYmluX2NvcHlfYnVmZmVyX2xlbmd0aCk7CisJCWVsc2UK KwkJCXBnX2ZhdGFsKCJJdCBpcyBOT1QgYSBDT1BZIGNvbW1hbmQgdGhhdCBpcyBjdXJyZW50bHkg cnVubmluZyIpOwogCQliaW5fY29weV9idWZmZXJfbGVuZ3RoID0gMDsKIAl9CiB9CkBAIC01MzYw LDcgKzUzNjUsNyBAQCBmbHVzaEJ1ZmZlcihQR2Nvbm4gKmNvbiwgUEdyZXN1bHQgKnJlcywgaW50 MTZfdCByb3dfbGVuKQogICogU2VuZHMgY3VycmVudCBicmFuY2ggcm93IHRvIGJ1ZmZlcgogICov CiBzdGF0aWMgdm9pZAotaW5pdEJyYW5jaEJpbmFyeShQR2Nvbm4gKmNvbiwgUEdyZXN1bHQgKnJl cywgaW50NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCkKK2luaXRCcmFuY2hCaW5hcnkoUEdjb25u ICpjb24sIGludDY0X3QgY3VyciwgaW50MzJfdCBwYXJlbnQpCiB7CiAJLyoKIAkgKiBFYWNoIHJv dyBvZiBicmFuY2ggdGFibGUgaGFzIGZvbGxvd2luZyBleHRyYSBieXRlczoKQEAgLTUzNjksNyAr NTM3NCw3IEBAIGluaXRCcmFuY2hCaW5hcnkoUEdjb25uICpjb24sIFBHcmVzdWx0ICpyZXMsIGlu dDY0X3QgY3VyciwgaW50MzJfdCBwYXJlbnQpCiAJICovCiAJaW50MTZfdAltYXhfcm93X2xlbiA9 ICAzNSArIDIgKyA0KjM7IC8qIG1heCByb3cgc2l6ZSBpcyAzNSAqLwogCi0JZmx1c2hCdWZmZXIo Y29uLCByZXMsIG1heF9yb3dfbGVuKTsKKwlmbHVzaEJ1ZmZlcihjb24sIG1heF9yb3dfbGVuKTsK IAogCWFkZENvbHVtbkNvdW50ZXIoMik7CiAKQEAgLTUzODEsNyArNTM4Niw3IEBAIGluaXRCcmFu Y2hCaW5hcnkoUEdjb25uICpjb24sIFBHcmVzdWx0ICpyZXMsIGludDY0X3QgY3VyciwgaW50MzJf dCBwYXJlbnQpCiAgKiBTZW5kcyBjdXJyZW50IHRlbGxlciByb3cgdG8gYnVmZmVyCiAgKi8KIHN0 YXRpYyB2b2lkCi1pbml0VGVsbGVyQmluYXJ5KFBHY29ubiAqY29uLCBQR3Jlc3VsdCAqcmVzLCBp bnQ2NF90IGN1cnIsIGludDMyX3QgcGFyZW50KQoraW5pdFRlbGxlckJpbmFyeShQR2Nvbm4gKmNv biwgaW50NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCkKIHsKIAkvKgogCSAqIEVhY2ggcm93IG9m IHRlbGxlcnMgdGFibGUgaGFzIGZvbGxvd2luZyBleHRyYSBieXRlczoKQEAgLTUzOTAsNyArNTM5 NSw3IEBAIGluaXRUZWxsZXJCaW5hcnkoUEdjb25uICpjb24sIFBHcmVzdWx0ICpyZXMsIGludDY0 X3QgY3VyciwgaW50MzJfdCBwYXJlbnQpCiAJICovCiAJaW50MTZfdAltYXhfcm93X2xlbiA9ICA0 MCArIDIgKyA0KjQ7IC8qIG1heCByb3cgc2l6ZSBpcyA0MCAqLwogCi0JZmx1c2hCdWZmZXIoY29u LCByZXMsIG1heF9yb3dfbGVuKTsKKwlmbHVzaEJ1ZmZlcihjb24sIG1heF9yb3dfbGVuKTsKIAog CWFkZENvbHVtbkNvdW50ZXIoMyk7CiAKQEAgLTU0MDMsNyArNTQwOCw3IEBAIGluaXRUZWxsZXJC aW5hcnkoUEdjb25uICpjb24sIFBHcmVzdWx0ICpyZXMsIGludDY0X3QgY3VyciwgaW50MzJfdCBw YXJlbnQpCiAgKiBTZW5kcyBjdXJyZW50IGFjY291bnQgcm93IHRvIGJ1ZmZlcgogICovCiBzdGF0 aWMgdm9pZAotaW5pdEFjY291bnRCaW5hcnkoUEdjb25uICpjb24sIFBHcmVzdWx0ICpyZXMsIGlu dDY0X3QgY3VyciwgaW50MzJfdCBwYXJlbnQpCitpbml0QWNjb3VudEJpbmFyeShQR2Nvbm4gKmNv biwgaW50NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCkKIHsKIAkvKgogCSAqIEVhY2ggcm93IG9m IGFjY291bnRzIHRhYmxlIGhhcyBmb2xsb3dpbmcgZXh0cmEgYnl0ZXM6CkBAIC01NDEyLDcgKzU0 MTcsNyBAQCBpbml0QWNjb3VudEJpbmFyeShQR2Nvbm4gKmNvbiwgUEdyZXN1bHQgKnJlcywgaW50 NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCkKIAkgKi8KIAlpbnQxNl90CW1heF9yb3dfbGVuID0g MjUwICsgMiArIDQqNDsgLyogbWF4IHJvdyBzaXplIGlzIDI1MCBmb3IgaW50NjQgKi8KIAotCWZs dXNoQnVmZmVyKGNvbiwgcmVzLCBtYXhfcm93X2xlbik7CisJZmx1c2hCdWZmZXIoY29uLCBtYXhf cm93X2xlbik7CiAKIAlhZGRDb2x1bW5Db3VudGVyKDMpOwogCkBAIC01NDYyLDEwICs1NDY3LDEw IEBAIGluaXRQb3B1bGF0ZVRhYmxlQmluYXJ5KFBHY29ubiAqY29uLCBjaGFyICp0YWJsZSwgY2hh ciAqY29sdW1ucywKIAogCWZvciAoaW50NjRfdCBpID0gc3RhcnQ7IGkgPCBzdGFydCArIGJhc2U7 IGkrKykKIAl7Ci0JCXJlcyA9IFBRZ2V0UmVzdWx0KGNvbik7Ci0JCWluaXRfcm93KGNvbiwgcmVz LCBpLCBiYXNlKTsKKwkJaW5pdF9yb3coY29uLCBpLCBiYXNlKTsKIAl9CiAKKwlyZXMgPSBQUWdl dFJlc3VsdChjb24pOwogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpID09IFBHUkVTX0NPUFlfSU4p CiAJCVBRcHV0Q29weURhdGEoY29uLCAoY2hhciAqKSBiaW5fY29weV9idWZmZXIsIGJpbl9jb3B5 X2J1ZmZlcl9sZW5ndGgpOwogCWVsc2UKQEAgLTU0NzQsNiArNTQ3OSw3IEBAIGluaXRQb3B1bGF0 ZVRhYmxlQmluYXJ5KFBHY29ubiAqY29uLCBjaGFyICp0YWJsZSwgY2hhciAqY29sdW1ucywKIAog CXNlbmRCaW5hcnlDb3B5VHJhaWxlcihjb24pOwogCisKIAlyZXMgPSBQUWdldFJlc3VsdChjb24p OwogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpID09IFBHUkVTX0NPUFlfSU4pCiAJewotLSAKMi40 My4wCgpGcm9tIGE1OTMzZjQwYmUwZjNkNDA4YmI5MjBmMjk2ZmI1MTE5YzNlYzI4ZjQgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJvcmlzIE1pcm9ub3YgPGJvcmlzLm1pcm9ub3ZAZ21h aWwuY29tPgpEYXRlOiBGcmksIDMwIEphbiAyMDI2IDEzOjU5OjM2ICswNzAwClN1YmplY3Q6IFtQ QVRDSCB2NyAxNi8xOF0gRml4aW5nIG1lbW9yeSBsZWFrIHNob3duIGJ5IHZhbGdyaW5kCgotLS0K IHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgfCA2ICsrKysrLQogMSBmaWxlIGNoYW5nZWQsIDUg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5j aC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDhlY2E1MzdiNzE4 Li40NjZkOTAyM2Q3MiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysg Yi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC01MzU3LDYgKzUzNTcsOCBAQCBmbHVzaEJ1 ZmZlcihQR2Nvbm4gKmNvbiwgaW50MTZfdCByb3dfbGVuKQogCQkJUFFwdXRDb3B5RGF0YShjb24s IChjaGFyICopIGJpbl9jb3B5X2J1ZmZlciwgYmluX2NvcHlfYnVmZmVyX2xlbmd0aCk7CiAJCWVs c2UKIAkJCXBnX2ZhdGFsKCJJdCBpcyBOT1QgYSBDT1BZIGNvbW1hbmQgdGhhdCBpcyBjdXJyZW50 bHkgcnVubmluZyIpOworCisJCVBRY2xlYXIocmVzKTsKIAkJYmluX2NvcHlfYnVmZmVyX2xlbmd0 aCA9IDA7CiAJfQogfQpAQCAtNTQ2MCw2ICs1NDYyLDcgQEAgaW5pdFBvcHVsYXRlVGFibGVCaW5h cnkoUEdjb25uICpjb24sIGNoYXIgKnRhYmxlLCBjaGFyICpjb2x1bW5zLAogCiAJaWYgKFBRcmVz dWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09QWV9JTikKIAkJcGdfZmF0YWwoInVuZXhwZWN0ZWQg Y29weSBpbiByZXN1bHQ6ICVzIiwgUFFlcnJvck1lc3NhZ2UoY29uKSk7CisJUFFjbGVhcihyZXMp OwogCiAKIAlzZW5kQmluYXJ5Q29weUhlYWRlcihjb24pOwpAQCAtNTQ3NSw2ICs1NDc4LDcgQEAg aW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoUEdjb25uICpjb24sIGNoYXIgKnRhYmxlLCBjaGFyICpj b2x1bW5zLAogCQlQUXB1dENvcHlEYXRhKGNvbiwgKGNoYXIgKikgYmluX2NvcHlfYnVmZmVyLCBi aW5fY29weV9idWZmZXJfbGVuZ3RoKTsKIAllbHNlCiAJCWZwcmludGYoc3RkZXJyLCAiVW5leHBl Y3RlZCBtb2RlICVkIGluc3RlYWQgb2YgJWRcbiIsIFBRcmVzdWx0U3RhdHVzKHJlcyksIFBHUkVT X0NPUFlfSU4pOworCVBRY2xlYXIocmVzKTsKIAogCiAJc2VuZEJpbmFyeUNvcHlUcmFpbGVyKGNv bik7CkBAIC01NDg1LDYgKzU0ODksNyBAQCBpbml0UG9wdWxhdGVUYWJsZUJpbmFyeShQR2Nvbm4g KmNvbiwgY2hhciAqdGFibGUsIGNoYXIgKmNvbHVtbnMsCiAJewogCQlpZiAoUFFwdXRDb3B5RW5k KGNvbiwgTlVMTCkgPT0gMSkgLyogc3VjY2VzcyAqLwogCQl7CisJCQlQUWNsZWFyKHJlcyk7CiAJ CQlyZXMgPSBQUWdldFJlc3VsdChjb24pOwogCQkJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0g UEdSRVNfQ09NTUFORF9PSykKIAkJCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yOiAlc1xuIiwgUFFl cnJvck1lc3NhZ2UoY29uKSk7CkBAIC01NDkyLDcgKzU0OTcsNiBAQCBpbml0UG9wdWxhdGVUYWJs ZUJpbmFyeShQR2Nvbm4gKmNvbiwgY2hhciAqdGFibGUsIGNoYXIgKmNvbHVtbnMsCiAJCWVsc2UK IAkJCWZwcmludGYoc3RkZXJyLCAiRXJyb3I6ICVzXG4iLCBQUWVycm9yTWVzc2FnZShjb24pKTsK IAl9Ci0KIAlQUWNsZWFyKHJlcyk7CiB9CiAKLS0gCjIuNDMuMAoKRnJvbSA2YTMwMzZmODk4YjA1 MGQ1ZTcxZTcwZWFjZWNjZDYzMDAzYWE2NDQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiBCb3JpcyBNaXJvbm92IDxib3Jpcy5taXJvbm92QGdtYWlsLmNvbT4KRGF0ZTogRnJpLCA2IEZl YiAyMDI2IDEzOjUzOjA3ICswNzAwClN1YmplY3Q6IFtQQVRDSCB2NyAxNy8xOF0gQWRkaW5nIGFi aWxpdHkgdG8gc3dpdGNoIGRhdGEgaW5pdCBiZXR3ZWVuIHNpbmdsZQogYW5kIG11bHRpcGxlIHRy YW5zYWN0aW9ucwoKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jICAgICAgICAgICAgICAg ICAgICB8IDE5MiArKysrKysrKystLS0tLS0tLS0tCiBzcmMvYmluL3BnYmVuY2gvdC8wMDFfcGdi ZW5jaF93aXRoX3NlcnZlci5wbCB8ICA5MyArKysrKysrKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTcz IGluc2VydGlvbnMoKyksIDExMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3Bn YmVuY2gvcGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwppbmRleCA0NjZkOTAy M2Q3Mi4uYWY3MWUzNThlNzEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMK KysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtMTU5LDkgKzE1OSw4IEBAIHR5cGVk ZWYgc3RydWN0IHNvY2tldF9zZXQKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBzb21lIGNvbmZpZ3VyYWJs ZSBwYXJhbWV0ZXJzICovCi0KLSNkZWZpbmUgREVGQVVMVF9JTklUX1NURVBTICJkdGd2cCIJLyog ZGVmYXVsdCAtSSBzZXR0aW5nICovCi0jZGVmaW5lIEFMTF9JTklUX1NURVBTICJkdGdDR2lJdnBm IgkvKiBhbGwgcG9zc2libGUgc3RlcHMgKi8KKyNkZWZpbmUgREVGQVVMVF9JTklUX1NURVBTICJk dGd2cCIJCS8qIGRlZmF1bHQgLUkgc2V0dGluZyAqLworI2RlZmluZSBBTExfSU5JVF9TVEVQUyAi ZHRnTVNjR1V2cGYiCS8qIGFsbCBwb3NzaWJsZSBzdGVwcyAqLwogCiAjZGVmaW5lIExPR19TVEVQ X1NFQ09ORFMJNQkvKiBzZWNvbmRzIGJldHdlZW4gbG9nIG1lc3NhZ2VzICovCiAjZGVmaW5lIERF RkFVTFRfTlhBQ1RTCQkxMAkvKiBkZWZhdWx0IG54YWN0cyAqLwpAQCAtMTcxLDE0ICsxNzAsMTcg QEAgdHlwZWRlZiBzdHJ1Y3Qgc29ja2V0X3NldAogI2RlZmluZSBNSU5fWklQRklBTl9QQVJBTQkJ MS4wMDEJLyogbWluaW11bSBwYXJhbWV0ZXIgZm9yIHppcGZpYW4gKi8KICNkZWZpbmUgTUFYX1pJ UEZJQU5fUEFSQU0JCTEwMDAuMAkvKiBtYXhpbXVtIHBhcmFtZXRlciBmb3IgemlwZmlhbiAqLwog Ci0vKiBvcmlnaW5hbCBzaW5nbGUgdHJhbnNhY3Rpb24gc2VydmVyLXNpZGUgbWV0aG9kICovCi0j ZGVmaW5lIEdFTl9UWVBFX0lOU0VSVF9PUklHSU5BTAknRycJLyogdXNlIElOU0VSVCAuLiBTRUxF Q1QgZ2VuZXJhdGVfc2VyaWVzIHRvIGdlbmVyYXRlIGRhdGEgKi8KLS8qICdvbmUgdHJhbnNhY3Rp b24gcGVyIHNjYWxlJyBzZXJ2ZXItc2lkZSBtZXRob2RzICovCi0jZGVmaW5lIEdFTl9UWVBFX0lO U0VSVF9TRVJJRVMJCSdpJwkvKiB1c2UgSU5TRVJUIC4uIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMg dG8gZ2VuZXJhdGUgZGF0YSAqLwotI2RlZmluZSBHRU5fVFlQRV9JTlNFUlRfVU5ORVNUICAJJ0kn CS8qIHVzZSBJTlNFUlQgLi4gU0VMRUNUIHVubmVzdCB0byBnZW5lcmF0ZSBkYXRhICovCi0jZGVm aW5lIEdFTl9UWVBFX0NPUFlfT1JJR0lOQUwJCSdnJyAvKiB1c2UgQ09QWSAuLiBGUk9NIFNURElO IC4uIFRFWFQgdG8gZ2VuZXJhdGUgZGF0YSAqLwotI2RlZmluZSBHRU5fVFlQRV9DT1BZX0JJTkFS WQkJJ0MnIC8qIHVzZSBDT1BZIC4uIEZST00gU1RESU4gLi4gQklOQVJZIHRvIGdlbmVyYXRlIGRh dGEgKi8KLQorLyogc2VydmVyLXNpZGUgbWV0aG9kcyB0byBnZW5lcmF0ZSBkYXRhICovCisjZGVm aW5lIElOSVRfU1RFUF9HRU5fVFlQRV9JTlNFUlRfU0VSSUVTCSdHJwkvKiB1c2UgSU5TRVJUIC4u IFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMgdG8gZ2VuZXJhdGUgZGF0YSAqLworI2RlZmluZSBJTklU X1NURVBfR0VOX1RZUEVfSU5TRVJUX1VOTkVTVAknVScJLyogdXNlIElOU0VSVCAuLiBTRUxFQ1Qg dW5uZXN0IHRvIGdlbmVyYXRlIGRhdGEgKi8KKy8qIGNsaWVudC1zaWRlIG1ldGhvZHMgdG8gZ2Vu ZXJhdGUgZGF0YSAqLworI2RlZmluZSBJTklUX1NURVBfR0VOX1RZUEVfQ09QWV9URVhUCQknZycg LyogdXNlIENPUFkgLi4gRlJPTSBTVERJTiAuLiBURVhUIHRvIGdlbmVyYXRlIGRhdGEgKi8KKyNk ZWZpbmUgSU5JVF9TVEVQX0dFTl9UWVBFX0NPUFlfQklOQVJZCQknYycgLyogdXNlIENPUFkgLi4g RlJPTSBTVERJTiAuLiBCSU5BUlkgdG8gZ2VuZXJhdGUgZGF0YSAqLworLyogZGF0YSBpbml0IHBz ZXVkbyBzdGVwcyAqLworI2RlZmluZSBJTklUX1NURVBfR0VOX1RZUEVfU0lOR0xFX1hBQ1QJCSdT JyAvKiBzd2l0Y2ggdG8gaW5pdCBkYXRhIGFzIHNpbmdsZSB0cmFuc2FjdGlvbiAqLworI2RlZmlu ZSBJTklUX1NURVBfR0VOX1RZUEVfTVVMVElfWEFDVAkJJ00nIC8qIHN3aXRjaCB0byBpbml0IGRh dGEgYXMgbXVsdGlwbGUgdHJhbnNhY3Rpb25zICovCisKK3N0YXRpYyBib29sIG11bHRpX3hhY3Qg PSBmYWxzZTsJLyogaW5pdCBkYXRhIHR5cGUgKGFzIHNpbmdsZSBvciBtdWx0aXBsZSB0cmFuc2Fj dGlvbnMpICovCiBzdGF0aWMgaW50CW54YWN0cyA9IDA7CQkJLyogbnVtYmVyIG9mIHRyYW5zYWN0 aW9ucyBwZXIgY2xpZW50ICovCiBzdGF0aWMgaW50CWR1cmF0aW9uID0gMDsJCS8qIGR1cmF0aW9u IGluIHNlY29uZHMgKi8KIHN0YXRpYyBpbnQ2NCBlbmRfdGltZSA9IDA7CQkvKiB3aGVuIHRvIHN0 b3AgaW4gbWljcm8gc2Vjb25kcywgdW5kZXIgLVQgKi8KQEAgLTE5Miw3ICsxOTQsNyBAQCBzdGF0 aWMgaW50CXNjYWxlID0gMTsKIC8qCiAgKiBtb2RlIG9mIGRhdGEgZ2VuZXJhdGlvbiB0byB1c2UK ICAqLwotc3RhdGljIGNoYXIJZGF0YV9nZW5lcmF0aW9uX3R5cGUgPSBHRU5fVFlQRV9DT1BZX09S SUdJTkFMOworc3RhdGljIGNoYXIJZGF0YV9nZW5lcmF0aW9uX3R5cGUgPSBJTklUX1NURVBfR0VO X1RZUEVfQ09QWV9URVhUOwogCiAvKgogICogQ09QWSBGUk9NIEJJTkFSWSBleGVjdXRpb24gYnVm ZmVyCkBAIC05MzQsMTEgKzkzNiwxMyBAQCB1c2FnZSh2b2lkKQogCQkgICAiICAgICAgICAgICAg ICAgICAgICAgICAgICAgcnVuIHNlbGVjdGVkIGluaXRpYWxpemF0aW9uIHN0ZXBzLCBpbiB0aGUg c3BlY2lmaWVkIG9yZGVyXG4iCiAJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICBkOiBk cm9wIGFueSBleGlzdGluZyBwZ2JlbmNoIHRhYmxlc1xuIgogCQkgICAiICAgICAgICAgICAgICAg ICAgICAgICAgICAgdDogY3JlYXRlIHRoZSB0YWJsZXMgdXNlZCBieSB0aGUgc3RhbmRhcmQgcGdi ZW5jaCBzY2VuYXJpb1xuIgotCQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgZzogZ2Vu ZXJhdGUgZGF0YSwgY2xpZW50LXNpZGVcbiIKLQkJICAgIiAgICAgICAgICAgICAgICAgICAgICAg ICAgIEM6ICAgY2xpZW50LXNpZGUgKHNpbmdsZSBUTlgpIENPUFkgLi4gRlJPTSBTVERJTiAuLiBC SU5BUllcbiIKLQkJICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgIEc6IGdlbmVyYXRlIGRh dGEsIHNlcnZlci1zaWRlIGluIHNpbmdsZSB0cmFuc2FjdGlvblxuIgotCQkgICAiICAgICAgICAg ICAgICAgICAgICAgICAgICAgaTogICBzZXJ2ZXItc2lkZSAobXVsdGlwbGUgVFhOcykgSU5TRVJU IC4uIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXNcbiIKLQkJICAgIiAgICAgICAgICAgICAgICAgICAg ICAgICAgIEk6ICAgc2VydmVyLXNpZGUgKG11bHRpcGxlIFRYTnMpIElOU0VSVCAuLiBTRUxFQ1Qg dW5uZXN0XG4iCisJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBnZW5lcmF0ZSBk YXRhLCBjbGllbnQtc2lkZTpcbiIKKwkJICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZzogICBDT1BZIC4uIEZST00gU1RESU4gLi4gVEVYVFxuIgorCQkgICAiICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjOiAgIENPUFkgLi4gRlJPTSBTVERJTiAuLiBCSU5BUllcbiIKKwkJICAg IiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGdlbmVyYXRlIGRhdGEsIHNlcnZlci1zaWRl OlxuIgorCQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHOiAgIElOU0VSVCAuLiBT RUxFQ1QgZ2VuZXJhdGVfc2VyaWVzXG4iCisJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFU6ICAgSU5TRVJUIC4uIFNFTEVDVCB1bm5lc3RcbiIKKwkJICAgIiAgICAgICAgICAgICAg ICAgICAgICAgICAgIE06IHVzZSBtdWx0aXBsZSB0cmFuc2FjdGlvbnMgdG8gaW5pdGlhbGl6ZSBk YXRhXG4iCiAJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICB2OiBpbnZva2UgVkFDVVVN IG9uIHRoZSBzdGFuZGFyZCB0YWJsZXNcbiIKIAkJICAgIiAgICAgICAgICAgICAgICAgICAgICAg ICAgIHA6IGNyZWF0ZSBwcmltYXJ5IGtleSBpbmRleGVzIG9uIHRoZSBzdGFuZGFyZCB0YWJsZXNc biIKIAkJICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgIGY6IGNyZWF0ZSBmb3JlaWduIGtl eXMgYmV0d2VlbiB0aGUgc3RhbmRhcmQgdGFibGVzXG4iCkBAIC01MDQ5LDggKzUwNTMsOCBAQCBp bml0QWNjb3VudChQUUV4cEJ1ZmZlckRhdGEgKnNxbCwgaW50NjQgY3VycikKIH0KIAogc3RhdGlj IHZvaWQKLWluaXRQb3B1bGF0ZVRhYmxlKFBHY29ubiAqY29uLCBjb25zdCBjaGFyICp0YWJsZSwg aW50NjQgYmFzZSwKLQkJCQkgIGluaXRSb3dNZXRob2QgaW5pdF9yb3cpCitpbml0UG9wdWxhdGVU YWJsZVRleHQoUEdjb25uICpjb24sIGNvbnN0IGNoYXIgKnRhYmxlLCBpbnQ2NCBiYXNlLAorCQkJ CQkgIGluaXRSb3dNZXRob2QgaW5pdF9yb3cpCiB7CiAJaW50CQkJbjsKIAlpbnQ2NAkJazsKQEAg LTUxNzgsNiArNTE4Miw5IEBAIGluaXRHZW5lcmF0ZURhdGFDbGllbnRTaWRlVGV4dChQR2Nvbm4g KmNvbikKIHsKIAlmcHJpbnRmKHN0ZGVyciwgIlRFWFQgbW9kZS4uLlxuIik7CiAKKwlpZiAobXVs dGlfeGFjdCkKKwkJZnByaW50ZihzdGRlcnIsICJXQVJOSU5HISBNdWx0aXBsZSB0cmFuc2FjdGlv bnMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBtb2RlXG4iKTsKKwogCS8qCiAJICogd2UgZG8g YWxsIG9mIHRoaXMgaW4gb25lIHRyYW5zYWN0aW9uIHRvIGVuYWJsZSB0aGUgYmFja2VuZCdzCiAJ ICogZGF0YS1sb2FkaW5nIG9wdGltaXphdGlvbnMKQEAgLTUxOTEsOSArNTE5OCw5IEBAIGluaXRH ZW5lcmF0ZURhdGFDbGllbnRTaWRlVGV4dChQR2Nvbm4gKmNvbikKIAkgKiBmaWxsIGJyYW5jaGVz LCB0ZWxsZXJzLCBhY2NvdW50cyBpbiB0aGF0IG9yZGVyIGluIGNhc2UgZm9yZWlnbiBrZXlzCiAJ ICogYWxyZWFkeSBleGlzdAogCSAqLwotCWluaXRQb3B1bGF0ZVRhYmxlKGNvbiwgInBnYmVuY2hf YnJhbmNoZXMiLCBuYnJhbmNoZXMsIGluaXRCcmFuY2gpOwotCWluaXRQb3B1bGF0ZVRhYmxlKGNv biwgInBnYmVuY2hfdGVsbGVycyIsICBudGVsbGVycywgIGluaXRUZWxsZXIpOwotCWluaXRQb3B1 bGF0ZVRhYmxlKGNvbiwgInBnYmVuY2hfYWNjb3VudHMiLCBuYWNjb3VudHMsIGluaXRBY2NvdW50 KTsKKwlpbml0UG9wdWxhdGVUYWJsZVRleHQoY29uLCAicGdiZW5jaF9icmFuY2hlcyIsIG5icmFu Y2hlcywgaW5pdEJyYW5jaCk7CisJaW5pdFBvcHVsYXRlVGFibGVUZXh0KGNvbiwgInBnYmVuY2hf dGVsbGVycyIsICBudGVsbGVycywgIGluaXRUZWxsZXIpOworCWluaXRQb3B1bGF0ZVRhYmxlVGV4 dChjb24sICJwZ2JlbmNoX2FjY291bnRzIiwgbmFjY291bnRzLCBpbml0QWNjb3VudCk7CiAKIAll eGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOwogfQpAQCAtNTQ1MCw3ICs1NDU3LDggQEAg aW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoUEdjb25uICpjb24sIGNoYXIgKnRhYmxlLCBjaGFyICpj b2x1bW5zLAogCS8qIFVzZSBDT1BZIHdpdGggRlJFRVpFIG9uIHYxNCBhbmQgbGF0ZXIgZm9yIGFs bCBvcmRpbmFyeSB0YWJsZXMgKi8KIAlpZiAoKFBRc2VydmVyVmVyc2lvbihjb24pID49IDE0MDAw MCkgJiYKIAkJZ2V0X3RhYmxlX3JlbGtpbmQoY29uLCB0YWJsZSkgPT0gUkVMS0lORF9SRUxBVElP TikKLQkJY29weV9zdGF0ZW1lbnRfZm10ID0gImNvcHkgJXMgKCVzKSBmcm9tIHN0ZGluIHdpdGgg KGZvcm1hdCBiaW5hcnkpIjsKKwkJaWYgKCFtdWx0aV94YWN0KQorCQkJY29weV9zdGF0ZW1lbnRf Zm10ID0gImNvcHkgJXMgKCVzKSBmcm9tIHN0ZGluIHdpdGggKGZvcm1hdCBiaW5hcnksIGZyZWV6 ZSBvbikiOwogCiAJbiA9IHBnX3NucHJpbnRmKGNvcHlfc3RhdGVtZW50LCBzaXplb2YoY29weV9z dGF0ZW1lbnQpLCBjb3B5X3N0YXRlbWVudF9mbXQsIHRhYmxlLCBjb2x1bW5zKTsKIAlpZiAobiA+ PSBzaXplb2YoY29weV9zdGF0ZW1lbnQpKQpAQCAtNTUyMiwxMSArNTUzMCwxMyBAQCBpbml0R2Vu ZXJhdGVEYXRhQ2xpZW50U2lkZUJpbmFyeShQR2Nvbm4gKmNvbikKIAkvKiB0cnVuY2F0ZSBhd2F5 IGFueSBvbGQgZGF0YSAqLwogCWluaXRUcnVuY2F0ZVRhYmxlcyhjb24pOwogCi0JZXhlY3V0ZVN0 YXRlbWVudChjb24sICJjb21taXQiKTsKKwlpZiAobXVsdGlfeGFjdCkKKwkJZXhlY3V0ZVN0YXRl bWVudChjb24sICJjb21taXQiKTsKIAogCWZvciAoaW50IGkgPSAwOyBpIDwgc2NhbGU7IGkrKykK IAl7Ci0JCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4iKTsKKwkJaWYgKG11bHRpX3hhY3Qp CisJCQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImJlZ2luIik7CiAKIAkJaW5pdFBvcHVsYXRlVGFi bGVCaW5hcnkoY29uLCAicGdiZW5jaF9icmFuY2hlcyIsICJiaWQsIGJiYWxhbmNlIiwKIAkJCQkJ CQkJaSwgbmJyYW5jaGVzLCBpbml0QnJhbmNoQmluYXJ5KTsKQEAgLTU1MzUsOSArNTU0NSwxMyBA QCBpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZUJpbmFyeShQR2Nvbm4gKmNvbikKIAkJaW5pdFBv cHVsYXRlVGFibGVCaW5hcnkoY29uLCAicGdiZW5jaF9hY2NvdW50cyIsICJhaWQsIGJpZCwgYWJh bGFuY2UiLAogCQkJCQkJCQlpLCBuYWNjb3VudHMsIGluaXRBY2NvdW50QmluYXJ5KTsKIAotCQll eGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOworCQlpZiAobXVsdGlfeGFjdCkKKwkJCWV4 ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7CiAJfQogCisJaWYgKCFtdWx0aV94YWN0KQor CQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOworCiAJcGdfZnJlZShiaW5fY29weV9i dWZmZXIpOwogfQogCkBAIC01NTQ3LDE0ICs1NTYxLDE1IEBAIGluaXRHZW5lcmF0ZURhdGFDbGll bnRTaWRlQmluYXJ5KFBHY29ubiAqY29uKQogc3RhdGljIHZvaWQKIGluaXRHZW5lcmF0ZURhdGFD bGllbnRTaWRlKFBHY29ubiAqY29uKQogewotCWZwcmludGYoc3RkZXJyLCAiZ2VuZXJhdGluZyBk YXRhIChjbGllbnQtc2lkZSkgaW4gIik7CisJZnByaW50ZihzdGRlcnIsICJnZW5lcmF0aW5nIGRh dGEgKGNsaWVudC1zaWRlIGFzICVzIHRyYW5zYWN0aW9uJXMpIGluICIsCisJCQltdWx0aV94YWN0 ID8gIm11bHRpcGxlIiA6ICJzaW5nbGUiLCBtdWx0aV94YWN0ID8gInMiIDogIiIpOwogCiAJc3dp dGNoIChkYXRhX2dlbmVyYXRpb25fdHlwZSkKIAl7Ci0JCWNhc2UgR0VOX1RZUEVfQ09QWV9PUklH SU5BTDoKKwkJY2FzZSBJTklUX1NURVBfR0VOX1RZUEVfQ09QWV9URVhUOgogCQkJaW5pdEdlbmVy YXRlRGF0YUNsaWVudFNpZGVUZXh0KGNvbik7CiAJCQlicmVhazsKLQkJY2FzZSBHRU5fVFlQRV9D T1BZX0JJTkFSWToKKwkJY2FzZSBJTklUX1NURVBfR0VOX1RZUEVfQ09QWV9CSU5BUlk6CiAJCQlp bml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZUJpbmFyeShjb24pOwogCQkJYnJlYWs7CiAJfQpAQCAt NTU2Miw1OCArNTU3Nyw3IEBAIGluaXRHZW5lcmF0ZURhdGFDbGllbnRTaWRlKFBHY29ubiAqY29u KQogCiAvKgogICogR2VuZXJhdGluZyBkYXRhIHZpYSBJTlNFUlQgLi4gU0VMRUNUIC4uIEZST00g Z2VuZXJhdGVfc2VyaWVzCi0gKiB3aG9sZSBkYXRhc2V0IGluIHNpbmdsZSB0cmFuc2FjdGlvbgot ICovCi1zdGF0aWMgdm9pZAotZ2VuZXJhdGVEYXRhSW5zZXJ0U2luZ2xlVFhOKFBHY29ubiAqY29u KQotewotCVBRRXhwQnVmZmVyRGF0YSBzcWw7Ci0KLQlmcHJpbnRmKHN0ZGVyciwgInZpYSBJTlNF UlQgLi4gU0VMRUNUIGdlbmVyYXRlX3Nlcmllcy4uLiBpbiBzaW5nbGUgVFhOXG4iKTsKLQotCi0J LyoKLQkgKiB3ZSBkbyBhbGwgb2YgdGhpcyBpbiBvbmUgdHJhbnNhY3Rpb24gdG8gZW5hYmxlIHRo ZSBiYWNrZW5kJ3MKLQkgKiBkYXRhLWxvYWRpbmcgb3B0aW1pemF0aW9ucwotCSAqLwotCWV4ZWN1 dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4iKTsKLQotCS8qIHRydW5jYXRlIGF3YXkgYW55IG9sZCBk YXRhICovCi0JaW5pdFRydW5jYXRlVGFibGVzKGNvbik7Ci0KLQlpbml0UFFFeHBCdWZmZXIoJnNx bCk7Ci0KLQlwcmludGZQUUV4cEJ1ZmZlcigmc3FsLAotCQkJCQkgICJpbnNlcnQgaW50byBwZ2Jl bmNoX2JyYW5jaGVzKGJpZCwgYmJhbGFuY2UpICIKLQkJCQkJICAic2VsZWN0IGJpZCwgMCAiCi0J CQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsICVkKSBhcyBiaWQiLAotCQkJCQkgIHNjYWxl ICogbmJyYW5jaGVzKTsKLQlleGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOwotCi0JcHJp bnRmUFFFeHBCdWZmZXIoJnNxbCwKLQkJCQkJICAiaW5zZXJ0IGludG8gcGdiZW5jaF90ZWxsZXJz KHRpZCwgYmlkLCB0YmFsYW5jZSkgIgotCQkJCQkgICJzZWxlY3QgdGlkICsgMSwgdGlkIC8gJWQg KyAxLCAwICIKLQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMCwgJWQpIGFzIHRpZCIsCi0J CQkJCSAgbnRlbGxlcnMsIChzY2FsZSAqIG50ZWxsZXJzKSAtIDEpOwotCWV4ZWN1dGVTdGF0ZW1l bnQoY29uLCBzcWwuZGF0YSk7Ci0KLQlwcmludGZQUUV4cEJ1ZmZlcigmc3FsLAotCQkJCQkgICJp bnNlcnQgaW50byBwZ2JlbmNoX2FjY291bnRzKGFpZCwgYmlkLCBhYmFsYW5jZSwgIgotCQkJCQkJ CQkgICAiZmlsbGVyKSAiCi0JCQkJCSAgInNlbGVjdCBhaWQgKyAxLCBhaWQgLyAlZCArIDEsIDAs ICcnICIKLQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMCwgIiBJTlQ2NF9GT1JNQVQgIikg YXMgYWlkIiwKLQkJCQkJICBuYWNjb3VudHMsIChpbnQ2NCkgKHNjYWxlICogbmFjY291bnRzKSAt IDEpOwotCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7Ci0KLQlleGVjdXRlU3RhdGVt ZW50KGNvbiwgImNvbW1pdCIpOwotCi0JdGVybVBRRXhwQnVmZmVyKCZzcWwpOwotfQotCi0KLS8q Ci0gKiBHZW5lcmF0aW5nIGRhdGEgdmlhIElOU0VSVCAuLiBTRUxFQ1QgLi4gRlJPTSBnZW5lcmF0 ZV9zZXJpZXMKLSAqIE9uZSB0cmFuc2FjdGlvbiBwZXIgJ3NjYWxlJworICogUG9zc2libHkgYXMg Ik9uZSB0cmFuc2FjdGlvbiBwZXIgc2NhbGUiIGluIG11bHRpLXRyYW5zYWN0aW9uIG1vZGUKICAq Lwogc3RhdGljIHZvaWQKIGdlbmVyYXRlRGF0YUluc2VydFNlcmllcyhQR2Nvbm4gKmNvbikKQEAg LTU2MjksMTEgKzU1OTMsMTMgQEAgZ2VuZXJhdGVEYXRhSW5zZXJ0U2VyaWVzKFBHY29ubiAqY29u KQogCS8qIHRydW5jYXRlIGF3YXkgYW55IG9sZCBkYXRhICovCiAJaW5pdFRydW5jYXRlVGFibGVz KGNvbik7CiAKLQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOworCWlmIChtdWx0aV94 YWN0KQorCQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOwogCiAJZm9yIChpbnQgaSA9 IDA7IGkgPCBzY2FsZTsgaSsrKQogCXsKLQkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJiZWdpbiIp OworCQlpZiAobXVsdGlfeGFjdCkKKwkJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4iKTsK IAogCQlwcmludGZQUUV4cEJ1ZmZlcigmc3FsLAogCQkJCQkJICAiaW5zZXJ0IGludG8gcGdiZW5j aF9icmFuY2hlcyhiaWQsIGJiYWxhbmNlKSAiCkBAIC01NjU3LDE1ICs1NjIzLDE5IEBAIGdlbmVy YXRlRGF0YUluc2VydFNlcmllcyhQR2Nvbm4gKmNvbikKIAkJCQkJCSAgKGludDY0KSAoaSArIDEp ICogbmFjY291bnRzIC0gMSk7CiAJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7CiAK LQkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKKwkJaWYgKG11bHRpX3hhY3QpCisJ CQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOwogCX0KIAorCWlmICghbXVsdGlfeGFj dCkKKwkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKKwogCXRlcm1QUUV4cEJ1ZmZl cigmc3FsKTsKIH0KIAogLyoKICAqIEdlbmVyYXRpbmcgZGF0YSB2aWEgSU5TRVJUIC4uIFNFTEVD VCAuLiBGUk9NIHVubmVzdAotICogT25lIHRyYW5zYWN0aW9uIHBlciAnc2NhbGUnCisgKiBQb3Nz aWJseSBhcyAiT25lIHRyYW5zYWN0aW9uIHBlciBzY2FsZSIgaW4gbXVsdGktdGFuc2FjdGlvbiBt b2RlCiAgKi8KIHN0YXRpYyB2b2lkCiBnZW5lcmF0ZURhdGFJbnNlcnRVbm5lc3QoUEdjb25uICpj b24pCkBAIC01NjgxLDExICs1NjUxLDEzIEBAIGdlbmVyYXRlRGF0YUluc2VydFVubmVzdChQR2Nv bm4gKmNvbikKIAkvKiB0cnVuY2F0ZSBhd2F5IGFueSBvbGQgZGF0YSAqLwogCWluaXRUcnVuY2F0 ZVRhYmxlcyhjb24pOwogCi0JZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKKwlpZiAo bXVsdGlfeGFjdCkKKwkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKIAogCWZvciAo aW50IHMgPSAwOyBzIDwgc2NhbGU7IHMrKykKIAl7Ci0JCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAi YmVnaW4iKTsKKwkJaWYgKG11bHRpX3hhY3QpCisJCQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImJl Z2luIik7CiAKIAkJcHJpbnRmUFFFeHBCdWZmZXIoJnNxbCwKIAkJCQkJCSAgImluc2VydCBpbnRv IHBnYmVuY2hfYnJhbmNoZXMoYmlkLGJiYWxhbmNlKSAiCkBAIC01NzE0LDE0ICs1Njg2LDE4IEBA IGdlbmVyYXRlRGF0YUluc2VydFVubmVzdChQR2Nvbm4gKmNvbikKIAkJCQkJCSAgKGludDY0KSAo cyArIDEpICogbmFjY291bnRzLCBuYWNjb3VudHMpOwogCQlleGVjdXRlU3RhdGVtZW50KGNvbiwg c3FsLmRhdGEpOwogCi0JCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7CisJCWlmICht dWx0aV94YWN0KQorCQkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKIAl9CiAKKwlp ZiAoIW11bHRpX3hhY3QpCisJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7CisKIAl0 ZXJtUFFFeHBCdWZmZXIoJnNxbCk7CiB9CiAKIC8qCi0gKiBGaWxsIHRoZSBzdGFuZGFyZCB0YWJs ZXMgd2l0aCBzb21lIGRhdGEgZ2VuZXJhdGVkIG9uIHRoZSBzZXJ2ZXIKKyAqIEZpbGwgdGhlIHN0 YW5kYXJkIHRhYmxlcyB3aXRoIHNvbWUgZGF0YSBnZW5lcmF0ZWQgb24gdGhlIHNlcnZlciBzaWRl CiAgKgogICogQXMgYWxyZWFkeSB0aGUgY2FzZSB3aXRoIHRoZSBjbGllbnQtc2lkZSBkYXRhIGdl bmVyYXRpb24sIHRoZSBmaWxsZXIKICAqIGNvbHVtbiBkZWZhdWx0cyB0byBOVUxMIGluIHBnYmVu Y2hfYnJhbmNoZXMgYW5kIHBnYmVuY2hfdGVsbGVycywKQEAgLTU3MzAsMTcgKzU3MDYsMTUgQEAg Z2VuZXJhdGVEYXRhSW5zZXJ0VW5uZXN0KFBHY29ubiAqY29uKQogc3RhdGljIHZvaWQKIGluaXRH ZW5lcmF0ZURhdGFTZXJ2ZXJTaWRlKFBHY29ubiAqY29uKQogewotCWZwcmludGYoc3RkZXJyLCAi Z2VuZXJhdGluZyBkYXRhIChzZXJ2ZXItc2lkZSkgIik7CisJZnByaW50ZihzdGRlcnIsICJnZW5l cmF0aW5nIGRhdGEgKHNlcnZlci1zaWRlIGFzICVzIHRyYW5zYWN0aW9uJXMpICIsCisJCQltdWx0 aV94YWN0ID8gIm11bHRpcGxlIiA6ICJzaW5nbGUiLCBtdWx0aV94YWN0ID8gInMiIDogIiIpOwog CiAJc3dpdGNoIChkYXRhX2dlbmVyYXRpb25fdHlwZSkKIAl7Ci0JCWNhc2UgR0VOX1RZUEVfSU5T RVJUX09SSUdJTkFMOgotCQkJZ2VuZXJhdGVEYXRhSW5zZXJ0U2luZ2xlVFhOKGNvbik7Ci0JCQli cmVhazsKLQkJY2FzZSBHRU5fVFlQRV9JTlNFUlRfU0VSSUVTOgorCQljYXNlIElOSVRfU1RFUF9H RU5fVFlQRV9JTlNFUlRfU0VSSUVTOgogCQkJZ2VuZXJhdGVEYXRhSW5zZXJ0U2VyaWVzKGNvbik7 CiAJCQlicmVhazsKLQkJY2FzZSBHRU5fVFlQRV9JTlNFUlRfVU5ORVNUOgorCQljYXNlIElOSVRf U1RFUF9HRU5fVFlQRV9JTlNFUlRfVU5ORVNUOgogCQkJZ2VuZXJhdGVEYXRhSW5zZXJ0VW5uZXN0 KGNvbik7CiAJCQlicmVhazsKIAl9CkBAIC01ODQ1LDE5ICs1ODE5LDIwIEBAIGNoZWNrSW5pdFN0 ZXBzKGNvbnN0IGNoYXIgKmluaXRpYWxpemVfc3RlcHMpCiAKIAkJc3dpdGNoICgqc3RlcCkKIAkJ ewotCQkJY2FzZSAnZyc6Ci0JCQljYXNlICdDJzoKLQkJCWNhc2UgJ0cnOgotCQkJY2FzZSAnaSc6 Ci0JCQljYXNlICdJJzoKKwkJCWNhc2UgSU5JVF9TVEVQX0dFTl9UWVBFX0NPUFlfVEVYVDoKKwkJ CWNhc2UgSU5JVF9TVEVQX0dFTl9UWVBFX0NPUFlfQklOQVJZOgorCQkJY2FzZSBJTklUX1NURVBf R0VOX1RZUEVfSU5TRVJUX1NFUklFUzoKKwkJCWNhc2UgSU5JVF9TVEVQX0dFTl9UWVBFX0lOU0VS VF9VTk5FU1Q6CiAJCQkJZGF0YV9pbml0X3R5cGUrKzsKIAkJCQlkYXRhX2dlbmVyYXRpb25fdHlw ZSA9ICpzdGVwOwogCQkJCWJyZWFrOwogCQl9CiAJfQogCisJaWYgKGRhdGFfaW5pdF90eXBlID09 IDApCisJCXBnX2xvZ19lcnJvcigiV0FSTklORyEgTm8gZGF0YSBnZW5lcmF0aW9uIHR5cGUgaXMg cHJvdmlkZWQiKTsKIAlpZiAoZGF0YV9pbml0X3R5cGUgPiAxKQotCQlwZ19sb2dfZXJyb3IoIldB Uk5JTkchIE1vcmUgdGhhbiBvbmUgdHlwZSBvZiBzZXJ2ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24g aXMgcmVxdWVzdGVkIik7CisJCXBnX2xvZ19lcnJvcigiV0FSTklORyEgTW9yZSB0aGFuIG9uZSB0 eXBlIG9mIGRhdGEgaW5pdGlhbGl6YXRpb24gaXMgcmVxdWVzdGVkIik7CiB9CiAKIC8qCkBAIC01 ODk1LDE3ICs1ODcwLDIyIEBAIHJ1bkluaXRTdGVwcyhjb25zdCBjaGFyICppbml0aWFsaXplX3N0 ZXBzKQogCQkJCW9wID0gImNyZWF0ZSB0YWJsZXMiOwogCQkJCWluaXRDcmVhdGVUYWJsZXMoY29u KTsKIAkJCQlicmVhazsKLQkJCWNhc2UgJ2cnOgotCQkJY2FzZSAnQyc6CisJCQljYXNlIElOSVRf U1RFUF9HRU5fVFlQRV9DT1BZX1RFWFQ6CisJCQljYXNlIElOSVRfU1RFUF9HRU5fVFlQRV9DT1BZ X0JJTkFSWToKIAkJCQlvcCA9ICJjbGllbnQtc2lkZSBnZW5lcmF0ZSI7CiAJCQkJaW5pdEdlbmVy YXRlRGF0YUNsaWVudFNpZGUoY29uKTsKIAkJCQlicmVhazsKLQkJCWNhc2UgJ0cnOgotCQkJY2Fz ZSAnaSc6Ci0JCQljYXNlICdJJzoKKwkJCWNhc2UgSU5JVF9TVEVQX0dFTl9UWVBFX0lOU0VSVF9T RVJJRVM6CisJCQljYXNlIElOSVRfU1RFUF9HRU5fVFlQRV9JTlNFUlRfVU5ORVNUOgogCQkJCW9w ID0gInNlcnZlci1zaWRlIGdlbmVyYXRlIjsKIAkJCQlpbml0R2VuZXJhdGVEYXRhU2VydmVyU2lk ZShjb24pOwogCQkJCWJyZWFrOworCQkJY2FzZSBJTklUX1NURVBfR0VOX1RZUEVfU0lOR0xFX1hB Q1Q6CisJCQkJbXVsdGlfeGFjdCA9IGZhbHNlOworCQkJCWJyZWFrOworCQkJY2FzZSBJTklUX1NU RVBfR0VOX1RZUEVfTVVMVElfWEFDVDoKKwkJCQltdWx0aV94YWN0ID0gdHJ1ZTsKKwkJCQlicmVh azsKIAkJCWNhc2UgJ3YnOgogCQkJCW9wID0gInZhY3V1bSI7CiAJCQkJaW5pdFZhY3V1bShjb24p OwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3QvMDAxX3BnYmVuY2hfd2l0aF9zZXJ2ZXIu cGwgYi9zcmMvYmluL3BnYmVuY2gvdC8wMDFfcGdiZW5jaF93aXRoX3NlcnZlci5wbAppbmRleCBh Mzc3MDQ4ZWFkMS4uYWNiMWUzMWQzZTggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC90LzAw MV9wZ2JlbmNoX3dpdGhfc2VydmVyLnBsCisrKyBiL3NyYy9iaW4vcGdiZW5jaC90LzAwMV9wZ2Jl bmNoX3dpdGhfc2VydmVyLnBsCkBAIC0xMTcsNiArMTE3LDcgQEAgJG5vZGUtPnBnYmVuY2goCiAJ W3Fye1BlcmhhcHMgeW91IG5lZWQgdG8gZG8gaW5pdGlhbGl6YXRpb259XSwKIAkncnVuIHdpdGhv dXQgaW5pdCcpOwogCisKICMgSW5pdGlhbGl6ZSBwZ2JlbmNoIHRhYmxlcyBzY2FsZSAxCiAkbm9k ZS0+cGdiZW5jaCgKIAknLWknLCAwLApAQCAtMTYwLDcgKzE2MSw3IEBAICRub2RlLT5wZ2JlbmNo KAogCQlxcntjcmVhdGluZyB0YWJsZXN9LAogCQlxcntjcmVhdGluZyAzIHBhcnRpdGlvbnN9LAog CQlxcntjcmVhdGluZyBwcmltYXJ5IGtleXN9LAotCQlxcntnZW5lcmF0aW5nIGRhdGEgXChzZXJ2 ZXItc2lkZVwpfSwKKwkJcXJ7Z2VuZXJhdGluZyBkYXRhIFwoc2VydmVyLXNpZGUgYXMgc2luZ2xl IHRyYW5zYWN0aW9uXCl9LAogCQlxcntjcmVhdGluZyBmb3JlaWduIGtleXN9LAogCQlxcnsoPyF2 YWN1dW1pbmcpfSwgICAgIyBubyB2YWN1dW0KIAkJcXJ7ZG9uZSBpbiBcZCtcLlxkXGQgcyB9CkBA IC0xNzAsMTUgKzE3MSwxNiBAQCAkbm9kZS0+cGdiZW5jaCgKICMgQ2hlY2sgZGF0YSBzdGF0ZSwg YWZ0ZXIgc2VydmVyLXNpZGUgZGF0YSBnZW5lcmF0aW9uLgogY2hlY2tfZGF0YV9zdGF0ZSgkbm9k ZSwgJ3NlcnZlci1zaWRlJyk7CiAKKwogIyBUZXN0IHNlcnZlci1zaWRlIGdlbmVyYXRpb24gd2l0 aCBVTk5FU1QKICRub2RlLT5wZ2JlbmNoKAotCSctLWluaXRpYWxpemUgLS1pbml0LXN0ZXBzPWR0 SScsCisJJy0taW5pdGlhbGl6ZSAtLWluaXQtc3RlcHM9ZHRVJywKIAkwLAogCVtxcnteJH1dLAog CVsKIAkJcXJ7ZHJvcHBpbmcgb2xkIHRhYmxlc30sCiAJCXFye2NyZWF0aW5nIHRhYmxlc30sCi0J CXFye2dlbmVyYXRpbmcgZGF0YSBcKHNlcnZlci1zaWRlXCl9LAorCQlxcntnZW5lcmF0aW5nIGRh dGEgXChzZXJ2ZXItc2lkZSBhcyBzaW5nbGUgdHJhbnNhY3Rpb25cKX0sCiAJCXFye2RvbmUgaW4g XGQrXC5cZFxkIHMgfQogCV0sCiAJJ3BnYmVuY2ggLS1pbml0LXN0ZXBzIHNlcnZlci1zaWRlIFVO TkVTVCcpOwpAQCAtMTg2LDE1ICsxODgsNDggQEAgJG5vZGUtPnBnYmVuY2goCiAjIENoZWNrIGRh dGEgc3RhdGUsIGFmdGVyIHNlcnZlci1zaWRlIGRhdGEgZ2VuZXJhdGlvbi4KIGNoZWNrX2RhdGFf c3RhdGUoJG5vZGUsICdzZXJ2ZXItc2lkZSAodW5uZXN0KScpOwogCi0jIFRlc3Qgc2VydmVyLXNp ZGUgZ2VuZXJhdGlvbiB3aXRoIFVOTkVTVAorCisjIFRlc3Qgc2VydmVyLXNpZGUgZ2VuZXJhdGlv biB3aXRoIENPUFkgVEVYVAorJG5vZGUtPnBnYmVuY2goCisJJy0taW5pdGlhbGl6ZSAtLWluaXQt c3RlcHM9ZHRnJywKKwkwLAorCVtxcnteJH1dLAorCVsKKwkJcXJ7ZHJvcHBpbmcgb2xkIHRhYmxl c30sCisJCXFye2NyZWF0aW5nIHRhYmxlc30sCisJCXFye2dlbmVyYXRpbmcgZGF0YSBcKGNsaWVu dC1zaWRlIGFzIHNpbmdsZSB0cmFuc2FjdGlvbn0sCisJCXFye2RvbmUgaW4gXGQrXC5cZFxkIHMg fQorCV0sCisJJ3BnYmVuY2ggLS1pbml0LXN0ZXBzIGNsaWVudC1zaWRlIFRFWFQnKTsKKworIyBD aGVjayBkYXRhIHN0YXRlLCBhZnRlciBzZXJ2ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24uCitjaGVj a19kYXRhX3N0YXRlKCRub2RlLCAnY2xpZW50LXNpZGUgKHRleHQpJyk7CisKKyRub2RlLT5wZ2Jl bmNoKAorCSctLWluaXRpYWxpemUgLS1pbml0LXN0ZXBzPWR0TWcnLAorCTAsCisJW3Fye14kfV0s CisJWworCQlxcntkcm9wcGluZyBvbGQgdGFibGVzfSwKKwkJcXJ7Y3JlYXRpbmcgdGFibGVzfSwK KwkJcXJ7Z2VuZXJhdGluZyBkYXRhIFwoY2xpZW50LXNpZGUgYXMgbXVsdGlwbGUgdHJhbnNhY3Rp b25zfSwKKwkJcXJ7ZG9uZSBpbiBcZCtcLlxkXGQgcyB9CisJXSwKKwkncGdiZW5jaCAtLWluaXQt c3RlcHMgY2xpZW50LXNpZGUgVEVYVCcpOworCisjIENoZWNrIGRhdGEgc3RhdGUsIGFmdGVyIHNl cnZlci1zaWRlIGRhdGEgZ2VuZXJhdGlvbi4KK2NoZWNrX2RhdGFfc3RhdGUoJG5vZGUsICdjbGll bnQtc2lkZSAodGV4dCknKTsKKworCisjIFRlc3Qgc2VydmVyLXNpZGUgZ2VuZXJhdGlvbiB3aXRo IENPUFkgQklOQVJZCiAkbm9kZS0+cGdiZW5jaCgKLQknLS1pbml0aWFsaXplIC0taW5pdC1zdGVw cz1kdEMnLAorCSctLWluaXRpYWxpemUgLS1pbml0LXN0ZXBzPWR0YycsCiAJMCwKIAlbcXJ7XiR9 XSwKIAlbCiAJCXFye2Ryb3BwaW5nIG9sZCB0YWJsZXN9LAogCQlxcntjcmVhdGluZyB0YWJsZXN9 LAotCQlxcntnZW5lcmF0aW5nIGRhdGEgXChjbGllbnQtc2lkZVwpfSwKKwkJcXJ7Z2VuZXJhdGlu ZyBkYXRhIFwoY2xpZW50LXNpZGUgYXMgc2luZ2xlIHRyYW5zYWN0aW9ufSwKIAkJcXJ7ZG9uZSBp biBcZCtcLlxkXGQgcyB9CiAJXSwKIAkncGdiZW5jaCAtLWluaXQtc3RlcHMgY2xpZW50LXNpZGUg QklOQVJZJyk7CkBAIC0yMDIsNiArMjM3LDUyIEBAICRub2RlLT5wZ2JlbmNoKAogIyBDaGVjayBk YXRhIHN0YXRlLCBhZnRlciBzZXJ2ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24uCiBjaGVja19kYXRh X3N0YXRlKCRub2RlLCAnY2xpZW50LXNpZGUgKGJpbmFyeSknKTsKIAorJG5vZGUtPnBnYmVuY2go CisJJy0taW5pdGlhbGl6ZSAtLWluaXQtc3RlcHM9ZHRTYycsCisJMCwKKwlbcXJ7XiR9XSwKKwlb CisJCXFye2Ryb3BwaW5nIG9sZCB0YWJsZXN9LAorCQlxcntjcmVhdGluZyB0YWJsZXN9LAorCQlx cntnZW5lcmF0aW5nIGRhdGEgXChjbGllbnQtc2lkZSBhcyBzaW5nbGUgdHJhbnNhY3Rpb259LAor CQlxcntkb25lIGluIFxkK1wuXGRcZCBzIH0KKwldLAorCSdwZ2JlbmNoIC0taW5pdC1zdGVwcyBj bGllbnQtc2lkZSBCSU5BUlknKTsKKworIyBDaGVjayBkYXRhIHN0YXRlLCBhZnRlciBzZXJ2ZXIt c2lkZSBkYXRhIGdlbmVyYXRpb24uCitjaGVja19kYXRhX3N0YXRlKCRub2RlLCAnY2xpZW50LXNp ZGUgKGJpbmFyeSknKTsKKworJG5vZGUtPnBnYmVuY2goCisJJy0taW5pdGlhbGl6ZSAtLWluaXQt c3RlcHM9ZHRNYycsCisJMCwKKwlbcXJ7XiR9XSwKKwlbCisJCXFye2Ryb3BwaW5nIG9sZCB0YWJs ZXN9LAorCQlxcntjcmVhdGluZyB0YWJsZXN9LAorCQlxcntnZW5lcmF0aW5nIGRhdGEgXChjbGll bnQtc2lkZSBhcyBtdWx0aXBsZSB0cmFuc2FjdGlvbnN9LAorCQlxcntkb25lIGluIFxkK1wuXGRc ZCBzIH0KKwldLAorCSdwZ2JlbmNoIC0taW5pdC1zdGVwcyBjbGllbnQtc2lkZSBCSU5BUlknKTsK KworIyBDaGVjayBkYXRhIHN0YXRlLCBhZnRlciBzZXJ2ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24u CitjaGVja19kYXRhX3N0YXRlKCRub2RlLCAnY2xpZW50LXNpZGUgKGJpbmFyeSknKTsKKworJG5v ZGUtPnBnYmVuY2goCisJJy0taW5pdGlhbGl6ZSAtLWluaXQtc3RlcHM9ZHRNYycsCisJMCwKKwlb cXJ7XiR9XSwKKwlbCisJCXFye2Ryb3BwaW5nIG9sZCB0YWJsZXN9LAorCQlxcntjcmVhdGluZyB0 YWJsZXN9LAorCQlxcntnZW5lcmF0aW5nIGRhdGEgXChjbGllbnQtc2lkZSBhcyBtdWx0aXBsZSB0 cmFuc2FjdGlvbnN9LAorCQlxcntkb25lIGluIFxkK1wuXGRcZCBzIH0KKwldLAorCSdwZ2JlbmNo IC0taW5pdC1zdGVwcyBjbGllbnQtc2lkZSBCSU5BUlknKTsKKworIyBDaGVjayBkYXRhIHN0YXRl LCBhZnRlciBzZXJ2ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24uCitjaGVja19kYXRhX3N0YXRlKCRu b2RlLCAnY2xpZW50LXNpZGUgKGJpbmFyeSknKTsKKworCiAjIFJ1biBhbGwgYnVpbHRpbiBzY3Jp cHRzLCBmb3IgYSBmZXcgdHJhbnNhY3Rpb25zIGVhY2gKICRub2RlLT5wZ2JlbmNoKAogCSctLXRy YW5zYWN0aW9ucz01IC1EZm9vPWJsYSAtLWNsaWVudD0yIC0tcHJvdG9jb2w9c2ltcGxlIC0tYnVp bHRpbj10JwotLSAKMi40My4wCgpGcm9tIDI0NzFiYjQ3YmY3MTU0MDJlY2U2MWIwODRiNjlhZmUz YmI1Mzc0MmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJvcmlzIE1pcm9ub3YgPGJv cmlzLm1pcm9ub3ZAZ21haWwuY29tPgpEYXRlOiBGcmksIDYgRmViIDIwMjYgMTM6NTU6NDcgKzA3 MDAKU3ViamVjdDogW1BBVENIIHY3IDE4LzE4XSBSZW1vdmluZyBjb21tZW50ZWQgb3V0IHByb2Nl ZHVyZXMKCi0tLQogc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyB8IDUyIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDUyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVu Y2gvcGdiZW5jaC5jCmluZGV4IGFmNzFlMzU4ZTcxLi4zNDQ2NGI3MDM3YyAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5j CkBAIC01MjA2LDM1ICs1MjA2LDYgQEAgaW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGVUZXh0KFBH Y29ubiAqY29uKQogfQogCiAKLS8qCi0gKiBEdW1wcyBiaW5hcnkgYnVmZmVyIHRvIGZpbGUgKHB1 cmVseSBmb3IgZGVidWdnaW5nKQotICoKLXN0YXRpYyB2b2lkCi1kdW1wQnVmZmVyVG9GaWxlKGNo YXIgKmZpbGVuYW1lKQotewotCUZJTEUgKmZpbGVfcHRyOwotCXNpemVfdCBieXRlc193cml0dGVu OwotCi0JZmlsZV9wdHIgPSBmb3BlbihmaWxlbmFtZSwgIndiIik7Ci0JaWYgKGZpbGVfcHRyID09 IE5VTEwpCi0JewotCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yIG9wZW5pbmcgZmlsZSAlc1xuIiwg ZmlsZW5hbWUpOwotCQlyZXR1cm47IC8vIEVYSVRfRkFJTFVSRTsKLQl9Ci0KLQlieXRlc193cml0 dGVuID0gZndyaXRlKGJpbl9jb3B5X2J1ZmZlciwgMSwgYmluX2NvcHlfYnVmZmVyX2xlbmd0aCwg ZmlsZV9wdHIpOwotCi0JaWYgKGJ5dGVzX3dyaXR0ZW4gIT0gYmluX2NvcHlfYnVmZmVyX2xlbmd0 aCkKLQl7Ci0JCWZwcmludGYoc3RkZXJyLCAiRXJyb3Igd3JpdGluZyB0byBmaWxlIG9yIGluY29t cGxldGUgd3JpdGVcbiIpOwotCQlmY2xvc2UoZmlsZV9wdHIpOwotCQlyZXR1cm47IC8vIEVYSVRf RkFJTFVSRTsKLQl9Ci0KLQlmY2xvc2UoZmlsZV9wdHIpOwotfQotICovCi0KIC8qCiAgKiBTYXZl IGNoYXIgZGF0YSB0byBidWZmZXIKICAqLwpAQCAtNTI3NywxNyArNTI0OCw2IEBAIGFkZENvbHVt bkNvdW50ZXIoaW50MTZfdCBuKQogCWJ1ZmZlckRhdGEoKHZvaWQgKikgJm4sIHNpemVvZihuKSk7 CiB9CiAKLS8qCi0gKiBhZGRzIGNvbHVtbiB3aXRoIE5VTEwgdmFsdWUKLSAqCi1zdGF0aWMgdm9p ZAotYWRkTnVsbENvbHVtbigpCi17Ci0JaW50MzJfdCBudWxsID0gLTE7Ci0JYnVmZmVyRGF0YSgo dm9pZCAqKSAmbnVsbCwgc2l6ZW9mKG51bGwpKTsKLX0KLSAqLwotCiAvKgogICogYWRkcyBjb2x1 bW4gd2l0aCBpbnRpMzIgdmFsdWUKICAqLwpAQCAtNTMxMiwxOCArNTI3Miw2IEBAIGFkZEludDY0 Q29sdW1uKGludDY0X3QgdmFsdWUpCiAJYnVmZmVyRGF0YSgodm9pZCAqKSAmZGF0YSwgc2l6ZW9m KGRhdGEpKTsKIH0KIAotLyoKLSAqIGFkZHMgY29sdW1uIHdpdGggY2hhciB2YWx1ZQotICoKLXN0 YXRpYyB2b2lkCi1hZGRDaGFyQ29sdW1uKGNoYXIgKnZhbHVlKQotewotCWludDMyX3QJc2l6ZSA9 IHN0cmxlbih2YWx1ZSk7Ci0JYnVmZmVyRGF0YSgodm9pZCAqKSAmc2l6ZSwgc2l6ZW9mKHNpemUp KTsKLQlidWZmZXJDaGFyRGF0YSh2YWx1ZSwgc2l6ZSk7Ci19Ci0gKi8KLQogLyoKICAqIFN0YXJ0 cyBjb21tdW5pY2F0aW9uIHdpdGggc2VydmVyIGZvciBDT1BZIEZST00gQklOQVJZIHN0YXRlbWVu dAogICovCi0tIAoyLjQzLjAKCg== --_004_PH0PR08MB70207B96C493E5777DB4D6428866APH0PR08MB7020namp_--