Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pEMpw-0007Ah-Ti for pgsql-hackers@arkaria.postgresql.org; Sun, 08 Jan 2023 03:59:10 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pEMpv-0002rC-1S for pgsql-hackers@arkaria.postgresql.org; Sun, 08 Jan 2023 03:59:07 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pEMpu-0002r2-96 for pgsql-hackers@lists.postgresql.org; Sun, 08 Jan 2023 03:59:06 +0000 Received: from esa1.fujitsucc.c3s2.iphmx.com ([68.232.152.245]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pEMpn-0000DE-Hu for pgsql-hackers@lists.postgresql.org; Sun, 08 Jan 2023 03:59:03 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1673150340; x=1704686340; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=b2WOP/CBCro2oa9+eRN/mRbVcxOd6z/YL2babVWKhCM=; b=EWG3xYzrBnSaHMXFyB3Ux4NO9cxLG42vkVSJEgX9OZOJJptCr21+dRc+ iS03St3uIn2k42/5UszWsTkZmznvzf8HOwYF4fL1aztbWElQSFfqY1C4f 2i0pW9+57t/LWy8QkFpwHSnKDxR+gvCp1muE8zB6tQzkdreyemHVj+qKV 5HFoYvnao8oZcr4eg0kCcGLSaX0TOGrTi+mnon2kAUdMn2sWXxOxvX2T3 xTLcct2I57jZFrWr1JnLS7bboR/eE6imHWAMrMjbZmXjxTfMs+MpM4A0R jCR6P8tvVtsnjGkwfOeIO0YikyyPVD8uz81Uh4jBUtkhiXcxKq8l5L/ur Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10583"; a="82205699" X-IronPort-AV: E=Sophos;i="5.96,309,1665414000"; d="scan'208,223";a="82205699" Received: from mail-tycjpn01lp2170.outbound.protection.outlook.com (HELO JPN01-TYC-obe.outbound.protection.outlook.com) ([104.47.23.170]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Jan 2023 12:58:55 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QI1/0Z3w7YtvG2MQwS1haFlTGcLVlBwn9wM4vfpfpOwf7ZVLjoOH86zDwsIDKfHTBGjyqSX+cKcgEJdHBqMQ+fHqCv8eE8LAoP5/0pD/IyJChndY7I4iTHbn0q0nCmPJipbCQe4fhVj8aH9Oho773sOYkNIa3KfjpowH70N8pGFEc+/FlgSV2igPDaX2dt5Tps5WFmAfN6cCGWNiLaZsR6+Jo1mLYzEY0eiiAWKZqaF/41KI/4JzjxiUfqFRWwZkV1lA9gNBBVNk1Yz0izOUhCJraGwGFxNQSTKdbPJeoEOxau87eKaVa2n427RLnDQYnRuwDkI5ZTntK31iLDgKxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=39By3ajGy5lIOGUz+WQ4xlxqmThK2nNb4BB+yXbODKQ=; b=PAXagjTWGLLFjtoerxijXt/hbH7AHQMJGxQJVcF26sxLgdCAMSwns0EPW4+Iu3aGwnqXiqCQ0Afkihu9lSgvHdKx3FTE4iaa8U7WTHJIbz5XxvtHN/AtW5Nol6nEqOKiBwO043+3OTQOBotAHmpHgDl+PLIz8CECFRiKibpx7vy+efFxaGU1nRREIojqEUW8I2BzoTkS+NdAMpew9ske2KxcrD6FLCFdp4k5K5GXzPm4NYN8hlZyXXdz0uC6KJaYzh5eJI8fQqe29AbXx9UuZmVas/Q4mvSlbrwpJu4MAB4aFrzoVM+wr5h/z5fd5IZg1Es6kNsCw6sc3VQ1AomvOA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com (2603:1096:604:bb::12) by OS3PR01MB8210.jpnprd01.prod.outlook.com (2603:1096:604:174::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.18; Sun, 8 Jan 2023 03:58:51 +0000 Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::db62:a054:b1fa:4cb3]) by OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::db62:a054:b1fa:4cb3%3]) with mapi id 15.20.5986.018; Sun, 8 Jan 2023 03:58:50 +0000 From: "houzj.fnst@fujitsu.com" To: Amit Kapila CC: Masahiko Sawada , "wangw.fnst@fujitsu.com" , Peter Smith , "shiy.fnst@fujitsu.com" , PostgreSQL Hackers , Dilip Kumar Subject: RE: Perform streaming logical transactions by background workers and parallel apply Thread-Topic: Perform streaming logical transactions by background workers and parallel apply Thread-Index: AQHZD4gmc8Gf0xrGM0OFaEbpojAcOq5uQq1wgAHYoYCAAB++4IAAIlOAgAGmKgCAABa30IADFsaAgAFWGwCAABBJYIAA+pYAgABJqTCAAgB9AIAA8s2ggABurUCABGXB4IAAfjmAgAEdzwCAAHCvAIABHXEAgAIlRYCAAWA5AIAEvuWAgAE6wQCAAY/VgIAAWFEwgAAJz4CAAB4xgIAABTsAgADsLVCAAFA9gIAAMiLQgAAJBQCAAQ5tgIAAH42AgAALiQCAAA7+AIAAKYCwgAE8UACAAA1nAIAANzCAgAEiKoCAABvkQA== Date: Sun, 8 Jan 2023 03:58:50 +0000 Message-ID: References: In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9ZTU3ZDNmMjctZDYwNS00YTI1LTljYzktOGMxNDgwMTM4?= =?utf-8?B?NmRjO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX0NvbnRlbnRCaXRzPTA7TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5?= =?utf-8?B?LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfRW5hYmxlZD10cnVlO01TSVBfTGFi?= =?utf-8?B?ZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX01ldGhv?= =?utf-8?B?ZD1TdGFuZGFyZDtNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRk?= =?utf-8?B?LTNiMGY0ZmVjZTA1MF9OYW1lPUZVSklUU1UtUkVTVFJJQ1RFRO+/ou++gA==?= =?utf-8?B?776LO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX1NldERhdGU9MjAyMy0wMS0wOFQwMzo1Mzo1Mlo7TVNJUF9MYWJl?= =?utf-8?B?bF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfU2l0ZUlk?= =?utf-8?Q?=3Da19f121d-81e1-4858-a9d8-736e267fd4c7;?= authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: OS0PR01MB5716:EE_|OS3PR01MB8210:EE_ x-ms-office365-filtering-correlation-id: 9110b8da-54cb-4e7e-3704-08daf12ca6db x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: UFJxRhDxA/KpShvdGiZa95l7EGk9V9FdN2rObLz6MeG4ZXkQtmmvS5VQ/9xuG3flkRqmUsZH4BT+LN2WLvtE8QvOSLK0gnw5vZn7q2w80DoFHHaqMUvuKV3shOmPTO+moIoiv0e8lQzoIOfzCPB+53A0pdUoF1lcYYF9baEqqmkwRd0ece97mwG4Tv1J7G7lh1i8ha7B7ZtjCCJQzRwSRUk1WNXiB5pmc1zkES2ZswXSbW2nHFRvwIfertPhD7oJavrTH4Y8i12j0jkpfCI0CXuCW3EdbvnvWZdv12eLQlzb1lzuW5C+L0UxhUZAeU8ev9jeJy/wWpVuHNGpP8LW33EtZEApuhxjxJgXC6PFQzxy2ScIRsL1ItJ48xtAv49SW8X0a17uIuGq0iGZj/G4+MfcpRLs1smAogQ7kvFIr4PCBplQUH6pJi1FB6oCmR1oz50LOcthniPxSaiCVT8mcIiwwrzbt1QXPkuhMt2qK0qTRhY7bD8tvmWXw82gZtIpMxVwxEVXGUAKDbwGCbn4MRnQZWkTRbqa6TrFGQlkcFUfpUlr8PWnf3x4ON2p1zQQJ9dcUO0XBFvc8xndjjP8ig0bcbhnMVvI5BdkR96jwnFUt70alUy+FmyNOZstnzpvcwCsJfbuSVwvOwF4x+Tz/nt6SUV2cAwIFkQTev2JryrBKI+mPPb5UHVriumlpkWR6Q3IcH9rInJigtOnsF3uvmdqSNH0evaNiVvFXA5EQDo= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS0PR01MB5716.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(376002)(396003)(346002)(39860400002)(366004)(136003)(451199015)(1590799012)(2906002)(83380400001)(1580799009)(54906003)(9686003)(7696005)(64756008)(66556008)(66446008)(66476007)(5660300002)(66946007)(55016003)(99936003)(85182001)(186003)(53546011)(26005)(122000001)(52536014)(8936002)(6506007)(33656002)(76116006)(478600001)(82960400001)(38100700002)(41300700001)(316002)(86362001)(38070700005)(4326008)(8676002)(6916009)(71200400001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?UDl1T3VPUFV4a0VOOVBVblV4SFAwdzhIcWJ2NFVQdWF0OXVYUGpLdEhIRFN5?= =?utf-8?B?cXRqZW9zRjNjUS9PVG5aM3Qwc1pjL2hCdFZPWXdRUWNSWG9CaWZJSGRNOGVR?= =?utf-8?B?dGF1UnZLTVQrK3dQeW0xUGJxRnNzMkErOFlkaUVZNnk0MU1Nbjg4alp2aUd6?= =?utf-8?B?cG5raHY0Z2NnVUNuU0JlaitZWjVIR3BBcEJvbmJFdnV4cG9HTzl3YXhVVm4x?= =?utf-8?B?djZTb3FDWGdwZFFkaytTVjVWUGJXTFZrNVdhQ0k3RGdWL0poYzE5UEpLdUJv?= =?utf-8?B?S1RTRzBNNDRxRUpkZkhWMXZrYWppdmlsczZVVXJ3eGNtTGlzU21DZFhHSGZY?= =?utf-8?B?eWE2WUt2c2lKVG5kR1VBMm54Y1dnWVYxVjdQSFFvNUpLWDh0aWNRN3dpbmRJ?= =?utf-8?B?RTRnWnZEa1Rra0FWNG9zb0tYTEtlaHF6WFU3NmEvaHZPZFA1Qnc2eTExTHI1?= =?utf-8?B?VkNhWXloTkdwRVZtR1J0cHdyYUhGbjRnV0dnK292T3VSV1NhbG5jZ1Q2OGN1?= =?utf-8?B?UGk5L1pKeFlxYjlpcnBQcHdTL3d5Q0swWGxzSEcvWk5aaXc3NkVjUTl4WGkr?= =?utf-8?B?UHNLZEVkTXArZkQ0ZEhqbWFvL3Z3a1VUTk9WeDdCc1BINnJkcGlMM0N5TnNm?= =?utf-8?B?TzBFZUFsMWdRWDFKTmZJcmdCenVBM1JIVlVvRnhjNER5L1RLM0lDSnQxRlhY?= =?utf-8?B?QVJ0SVlGd0pnaDQ5Q2lUSWY3dnZ0cDJ6U0c1ZHE0R202RWZhRGl0ZFhkSzdD?= =?utf-8?B?TVZIcHl4OG1ZaFlkcXppRlZFeGVvVlNPVy82TmtrNE9UblpIN2pYWlF3aldC?= =?utf-8?B?YnVOQ0k4aFdacjhDWkdxajc0WW1NU0tzUTMwWGhUU20rZTdTM3g4UnZwWXpN?= =?utf-8?B?K1dpU0V0NWZ5Zi9yc3NGdkdDcTBrSTdSbkJnQ2VSdmRMZXpEWEVRR1hxWWE5?= =?utf-8?B?K2tJYmJqb0lGNTdhUllzZWtCNEZWQ0tYVHVscXBOeHM5UUVXTmYyZm9BRnJE?= =?utf-8?B?VkVKZzBlZnYzZzJUc1gzcnZZUWM5Si96a1Fwak9ReHBMeVBmeks2bDRza0lP?= =?utf-8?B?OGkrMUs3bDJSOU91UFlLS3FUNU56TEM5dUFDTjA4YVdmYkNKU3l5b2RSeHNZ?= =?utf-8?B?MGpZL3RlQ21RNWYzS2hTQVJQOVE3b3BkWTV3bDZaVWZqM1pCNmJNKzdjcTk2?= =?utf-8?B?bXcrVTRQbHJ2RWk4L204WnRnQllRZ1djSHBsdzkyYzBhZkJnb3NacFppbGV1?= =?utf-8?B?bkZyK2NCSXZPaXRNWnI3NXZYcEFWUWlSUjZvZEQ0RCtNNkNpSEV3RUp5MUlr?= =?utf-8?B?aVd1djFkVVYwNEFzbDhleGMreDlNMDFCVkZWb1o1UkpEN1habzhnQlJwdXU0?= =?utf-8?B?OUM2aG8zZVR1TVVxZlBON1RZTFQ0UXFXaFh5VVkyK3NvL21RVzVLUHFGQnI4?= =?utf-8?B?NUgydXNMcGN3dDB2WGE0a1FIT3JXc1pUcXhKR3ZYMjcrN1RzKzVFekh5L3Fx?= =?utf-8?B?OWJLK3RlVDRYYTlZQXJ6OExtTXVjVGhSUVd6bzlhSEhUOVpDQ2VPNGIxd01k?= =?utf-8?B?Ylhwa3JpNDNBREViSEJGRlNPUUlBNzR1cWVmOGx2a2RZQ0w1Q256MndyT3Rx?= =?utf-8?B?a292QTdJZ1J4YWIvbVIydDBZUUxaNkszUHlRNzVEUnZMRGVmWTN1VnBKbEVz?= =?utf-8?B?SHhjRjdoWmpXN1NKMm9TM3F1dDZzYVdBRlkzZjVuVlVsS3BHUXIxdDdCZFQy?= =?utf-8?B?d0lCK0M5Qk0rNzgydzMrSE95Q083cDdBc1ZHMFF5Qkd3ejQ0MkQ1OWNZTEJW?= =?utf-8?B?QmJqMW4yRERndERXclhvaEk3RDIzMWdBSTVaUjloRk5jbGV1N054MG9UcDZw?= =?utf-8?B?UWI0TzNqZWdoQXNDNEVxZVBqeG1wa0tTM2FNQmRocEZYb2lLNG8zNVlPZDZL?= =?utf-8?B?UFlxak10NjBCSEdQbFM0UkxmYWpmenUrZjVPNnNXUFhiRG91akM2ODdGeDEy?= =?utf-8?B?UDBHT2VORTAxZW9lQTkvTDJSemIxSTZaNk9LT0k0MGhhM2NkdHZjeEZla3J2?= =?utf-8?B?a0NWTkRBaVhwclJ2N2tnaFJCQXBWSmloYmlQRjFLWXR1N3hReis3c0p0L2RC?= =?utf-8?Q?0qwmTcG9dmDNaxYOx+9FhQK53?= Content-Type: multipart/mixed; boundary="_006_OS0PR01MB571685A645E509267AC5F30894F99OS0PR01MB5716jpnp_" MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: CKdvE19gtSb6Yo/th5nodE3DL6mkqVN8j6MkWsEXBO3tEAvq09J2IPnQgJG3GQhn2omiJhpmgSIsScBwYgh3Bh3XZ1zxUarfReI0ywZLqBbKYj4S1mYMr50SDYRCY/xiytQJHm8KOEHw+rPetoZgJfR6RlCTYyXKIMdGEvtws/Cz1YU0DSkdVhHgkDbUk3lcHGFJ4NKFkeiP0sHxrQ0AogSOhciESjSPhyn0alYGVcciCNwLsREWs6hjXRt1EFbf5y/ENMRngcdAlNPBR09iIXvBEKWVl0x1HtrFNc397LQX4T8x4n1QDODwV6+1Sy0GA9nyyAXHK6xk4PZdUupkiCLLYfsXj1TkqjfqUbdcXxZbEuaD4YiMTIczPjj2C6kwg6RZpsHwccERfwv9PEuT7bqJvD1NbQiXEez9cg0AO28CEuSporYj11tefAAKkU2DFKa79uI9s72RBFi6nKUpODFh9PeDBivxNr6qw5Q72x+tQT41rYY810NfjDjVSq0O+SRWrcIH80fk0eQelkAxNNL6bPiRYizMOxf6vZ+6AEnZwc72/5b0lt1cvT9V3y41yOQ6A0T3dVjTrKVx560JBlV3BExhhcD+MdKkYIQE2RlmGvshtPAcwGL0vBab/nGX6RO8qLgX7Y/GwlTe1IFOD+HmhZKtQi7pmSEXpOmwrYLKPKzNxHO/54Hgn0o4LRNAdhLqHq/axQW5hxYJUfaijH6SeJPaSyRrf2aZk9ckv1HNnmnI/Qt18Rnk5rfKfA6y2FDgbfomGwgH3BNG/vMgsH1wD9o6hsOozaD74W3C2Y8zLSaW0liiScu2fs4enG64 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS0PR01MB5716.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9110b8da-54cb-4e7e-3704-08daf12ca6db X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Jan 2023 03:58:50.5960 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a19f121d-81e1-4858-a9d8-736e267fd4c7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: znODbZp2E2psOpeGZp3XcKls3rKiY3ydtZGb4fhREi6NO54ycKgs1F+rKRtN0rKaBGZy54kn3lFgoXgdmHIgSw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS3PR01MB8210 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_006_OS0PR01MB571685A645E509267AC5F30894F99OS0PR01MB5716jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gU3VuZGF5LCBKYW51YXJ5IDgsIDIwMjMgMTA6MTQgQU0gQW1pdCBLYXBpbGEgPGFtaXQua2Fw aWxhMTZAZ21haWwuY29tPiB3cm90ZToNCj4gDQo+IE9uIFNhdCwgSmFuIDcsIDIwMjMgYXQgMjoy NSBQTSBEaWxpcCBLdW1hciA8ZGlsaXBiYWxhdXRAZ21haWwuY29tPiB3cm90ZToNCj4gPg0KPiAN Cj4gVG9kYXksIEkgd2FzIGFuYWx5emluZyB0aGlzIHBhdGNoIHcuci50IHJlY2VudCBjb21taXQg YzZlMWY2MmUyYyBhbmQgZm91bmQgdGhhdA0KPiBwYV9zZXRfeGFjdF9zdGF0ZSgpIHNob3VsZCBz ZXQgdGhlIGxhdGNoICh3YWtlIHVwKSBmb3IgdGhlIGxlYWRlciB3b3JrZXIgYXMgdGhlDQo+IGxl YWRlciBjb3VsZCBiZSB3YWl0aW5nIGluIHBhX3dhaXRfZm9yX3hhY3Rfc3RhdGUoKS4gV2hhdCBk byB5b3UgdGhpbms/IEJ1dA0KPiBvdGhlcndpc2UsIGl0IHNob3VsZCBiZSBva2F5IHcuci50IERE THMgYmVjYXVzZSB0aGlzIHBhdGNoIGFsbG93cyB0aGUgbGVhZGVyDQo+IHdvcmtlciB0byByZXN0 YXJ0IGxvZ2ljYWwgcmVwbGljYXRpb24gZm9yIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgY2hhbmdl IHdoaWNoIHdpbGwNCj4gaW4gdHVybiBzdG9wL3Jlc3RhcnQgcGFyYWxsZWwgd29ya2VycyBpZiBy ZXF1aXJlZC4NCg0KVGhhbmtzIGZvciB0aGUgYW5hbHlzaXMuIEkgYWdyZWUgdGhhdCBpdCB3b3Vs ZCBiZSBiZXR0ZXIgdG8gc2lnbmFsIHRoZSBsZWFkZXINCndoZW4gc2V0dGluZyB0aGUgc3RhdGUg dG8gUEFSQUxMRUxfVFJBTlNfU1RBUlRFRCwgb3RoZXJ3aXNlIGl0IG1pZ2h0IHNsaWdodGx5DQpk ZWxheSB0aGUgdGltaW5nIG9mIGNhdGNoIHRoZSBzdGF0ZSBjaGFuZ2UgaW4gcGFfd2FpdF9mb3Jf eGFjdF9zdGF0ZSgpLCBzbyBJDQpoYXZlIHVwZGF0ZWQgdGhlIHBhdGNoIGZvciB0aGUgc2FtZS4g QmVzaWRlcywgSSBhbHNvIGNoZWNrZWQgY29tbWl0IGM2ZTFmNjJlMmMsDQpJIHRoaW5rIERETCBv cGVyYXRpb24gZG9lc24ndCBuZWVkIHRvIHdha2UgdXAgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtl cg0KZGlyZWN0bHkgYXMgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBkb2Vzbid0IHN0YXJ0IHRh YmxlIHN5bmMgYW5kIG9ubHkNCmNvbW11bmljYXRlIHdpdGggdGhlIGxlYWRlciwgc28gSSBkaWRu J3QgZmluZCBzb21lIG90aGVyIHBsYWNlcyB0aGF0IG5lZWQgdG8gYmUNCmNoYW5nZWQuDQoNCkF0 dGFjaCB0aGUgdXBkYXRlZCBwYXRjaCBzZXQuDQoNCkJlc3QgcmVnYXJkcywNCkhvdSB6ag0K --_006_OS0PR01MB571685A645E509267AC5F30894F99OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v77-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch" Content-Description: v77-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch Content-Disposition: attachment; filename="v77-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch"; size=9665; creation-date="Sun, 08 Jan 2023 03:53:58 GMT"; modification-date="Sun, 08 Jan 2023 03:58:47 GMT" Content-Transfer-Encoding: base64 RnJvbSAxOTk1ODdhYTViNmUzZjdlZDAxNmE0YTcyZGI1NDU4MjkyOWNkMWNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFRodSwgNiBPY3QgMjAyMiAxNDo0MjoyNCArMDgwMApTdWJqZWN0OiBbUEFUQ0gg djc3IDUvNV0gQWRkIGEgbWFpbl93b3JrZXJfcGlkIHRvIHBnX3N0YXRfc3Vic2NyaXB0aW9uCgpt YWluX3dvcmtlcl9waWQgaXMgUHJvY2VzcyBJRCBvZiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciwg aWYgdGhpcyBwcm9jZXNzIGlzIGEKYXBwbHkgcGFyYWxsZWwgd29ya2VyLiBOVUxMIGlmIHRoaXMg cHJvY2VzcyBpcyBhIGxlYWRlciBhcHBseSB3b3JrZXIgb3IgYQpzeW5jaHJvbml6YXRpb24gd29y a2VyLgoKVGhlIG5ldyBjb2x1bW4gY2FuIG1ha2UgaXQgZWFzaWVyIHRvIGRpc3Rpbmd1aXNoIGxl YWRlciBhcHBseSB3b3JrZXIgYW5kIGFwcGx5CnBhcmFsbGVsIHdvcmtlciB3aGljaCBpcyBhbHNv IHNpbWlsYXIgdG8gdGhlICdsZWFkZXJfcGlkJyBjb2x1bW4gaW4KcGdfc3RhdF9hY3Rpdml0eS4K LS0tCiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgfCAgMyArKy0K IGRvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgICAgICAgICAgICAgICB8IDI2ICsrKysrKysr KysrKysrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAg ICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jIHwg MzIgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0ICAgICAgICAgICAgfCAgNiArKystLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcnVsZXMub3V0ICAgICAgICB8ICAzICsrLQogNiBmaWxlcyBjaGFuZ2VkLCA0NSBpbnNlcnRp b25zKCspLCAyNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNh bC1yZXBsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dt bAppbmRleCBjYjRmNWM2Li42MjU0Mzg4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNh bC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9u LnNnbWwKQEAgLTE2OTEsNyArMTY5MSw4IEBAIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBk YXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAgICBz dWJzY3JpcHRpb24uICBBIGRpc2FibGVkIHN1YnNjcmlwdGlvbiBvciBhIGNyYXNoZWQgc3Vic2Ny aXB0aW9uIHdpbGwgaGF2ZQogICAgemVybyByb3dzIGluIHRoaXMgdmlldy4gIElmIHRoZSBpbml0 aWFsIGRhdGEgc3luY2hyb25pemF0aW9uIG9mIGFueQogICAgdGFibGUgaXMgaW4gcHJvZ3Jlc3Ms IHRoZXJlIHdpbGwgYmUgYWRkaXRpb25hbCB3b3JrZXJzIGZvciB0aGUgdGFibGVzCi0gICBiZWlu ZyBzeW5jaHJvbml6ZWQuCisgICBiZWluZyBzeW5jaHJvbml6ZWQuIE1vcmVvdmVyLCBpZiB0aGUg c3RyZWFtaW5nIHRyYW5zYWN0aW9uIGlzIGFwcGxpZWQgaW4KKyAgIHBhcmFsbGVsLCB0aGVyZSB3 aWxsIGJlIGFkZGl0aW9uYWwgd29ya2Vycy4KICAgPC9wYXJhPgogIDwvc2VjdDE+CiAKZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbW9uaXRv cmluZy5zZ21sCmluZGV4IGNmMjIwYzMuLmMyZTdiZGIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9tb25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbApAQCAt MzE5OCwxMSArMzE5OCwyMiBAQCBTRUxFQ1QgcGlkLCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZl bnQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdhaXRfZXZlbnQgaQogCiAgICAgIDxyb3c+ CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29s dW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5hcHBseV9sZWFkZXJfcGlkPC9z dHJ1Y3RmaWVsZD4gPHR5cGU+aW50ZWdlcjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxw YXJhPgorICAgICAgIFByb2Nlc3MgSUQgb2YgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIsIGlmIHRo aXMgcHJvY2VzcyBpcyBhIGFwcGx5CisgICAgICAgcGFyYWxsZWwgd29ya2VyLiBOVUxMIGlmIHRo aXMgcHJvY2VzcyBpcyBhIGxlYWRlciBhcHBseSB3b3JrZXIgb3IgYQorICAgICAgIHN5bmNocm9u aXphdGlvbiB3b3JrZXIuCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAg ICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSBy b2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CiAgICAgICAgPHN0cnVjdGZpZWxkPnJlbGlkPC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAg ICAgICAgT0lEIG9mIHRoZSByZWxhdGlvbiB0aGF0IHRoZSB3b3JrZXIgaXMgc3luY2hyb25pemlu ZzsgbnVsbCBmb3IgdGhlCi0gICAgICAgbWFpbiBhcHBseSB3b3JrZXIKKyAgICAgICBtYWluIGFw cGx5IHdvcmtlciBhbmQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcgogICAgICAgPC9wYXJhPjwv ZW50cnk+CiAgICAgIDwvcm93PgogCkBAIC0zMjEyLDcgKzMyMjMsNyBAQCBTRUxFQ1QgcGlkLCB3 YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdh aXRfZXZlbnQgaQogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAgICAgTGFzdCB3cml0 ZS1haGVhZCBsb2cgbG9jYXRpb24gcmVjZWl2ZWQsIHRoZSBpbml0aWFsIHZhbHVlIG9mCi0gICAg ICAgdGhpcyBmaWVsZCBiZWluZyAwCisgICAgICAgdGhpcyBmaWVsZCBiZWluZyAwOyBudWxsIGZv ciB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAg PC9yb3c+CiAKQEAgLTMyMjEsNyArMzIzMiw4IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlw ZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAg ICAgICAgPHN0cnVjdGZpZWxkPmxhc3RfbXNnX3NlbmRfdGltZTwvc3RydWN0ZmllbGQ+IDx0eXBl PnRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZTwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxw YXJhPgotICAgICAgIFNlbmQgdGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBvcmln aW4gV0FMIHNlbmRlcgorICAgICAgIFNlbmQgdGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2ZWQg ZnJvbSBvcmlnaW4gV0FMIHNlbmRlcjsgbnVsbCBmb3IgdGhlCisgICAgICAgcGFyYWxsZWwgYXBw bHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTMyMzAs NyArMzI0Miw4IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9N IHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICAgPHN0cnVjdGZpZWxk Pmxhc3RfbXNnX3JlY2VpcHRfdGltZTwvc3RydWN0ZmllbGQ+IDx0eXBlPnRpbWVzdGFtcCB3aXRo IHRpbWUgem9uZTwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAgICAgIFJl Y2VpcHQgdGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBvcmlnaW4gV0FMIHNlbmRl cgorICAgICAgIFJlY2VpcHQgdGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBvcmln aW4gV0FMIHNlbmRlcjsgbnVsbCBmb3IKKyAgICAgICB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy CiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTMyMzksNyArMzI1Miw4 IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRf YWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICAgPHN0cnVjdGZpZWxkPmxhdGVzdF9l bmRfbHNuPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+cGdfbHNuPC90eXBlPgogICAgICAgPC9wYXJhPgog ICAgICAgPHBhcmE+Ci0gICAgICAgTGFzdCB3cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gcmVwb3J0 ZWQgdG8gb3JpZ2luIFdBTCBzZW5kZXIKKyAgICAgICBMYXN0IHdyaXRlLWFoZWFkIGxvZyBsb2Nh dGlvbiByZXBvcnRlZCB0byBvcmlnaW4gV0FMIHNlbmRlcjsgbnVsbCBmb3IKKyAgICAgICB0aGUg cGFyYWxsZWwgYXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+ CiAKQEAgLTMyNDksNyArMzI2Myw3IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2Fp dF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICA8 L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICBUaW1lIG9mIGxhc3Qgd3JpdGUtYWhlYWQgbG9n IGxvY2F0aW9uIHJlcG9ydGVkIHRvIG9yaWdpbiBXQUwKLSAgICAgICBzZW5kZXIKKyAgICAgICBz ZW5kZXI7IG51bGwgZm9yIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIKICAgICAgIDwvcGFyYT48 L2VudHJ5PgogICAgICA8L3Jvdz4KICAgICA8L3Rib2R5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1f dmlld3Muc3FsCmluZGV4IGFmMDc2ODQuLmFlZjkyNmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3Rl bV92aWV3cy5zcWwKQEAgLTk0OSw2ICs5NDksNyBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X3N1YnNj cmlwdGlvbiBBUwogICAgICAgICAgICAgc3Uub2lkIEFTIHN1YmlkLAogICAgICAgICAgICAgc3Uu c3VibmFtZSwKICAgICAgICAgICAgIHN0LnBpZCwKKyAgICAgICAgICAgIHN0LmFwcGx5X2xlYWRl cl9waWQsCiAgICAgICAgICAgICBzdC5yZWxpZCwKICAgICAgICAgICAgIHN0LnJlY2VpdmVkX2xz biwKICAgICAgICAgICAgIHN0Lmxhc3RfbXNnX3NlbmRfdGltZSwKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwppbmRleCBhZmI3YWNkLi5iMzllMGYxIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCkBAIC0xMDcyLDcgKzEwNzIs NyBAQCBJc0xvZ2ljYWxMYXVuY2hlcih2b2lkKQogRGF0dW0KIHBnX3N0YXRfZ2V0X3N1YnNjcmlw dGlvbihQR19GVU5DVElPTl9BUkdTKQogewotI2RlZmluZSBQR19TVEFUX0dFVF9TVUJTQ1JJUFRJ T05fQ09MUwk4CisjZGVmaW5lIFBHX1NUQVRfR0VUX1NVQlNDUklQVElPTl9DT0xTCTkKIAlPaWQJ CQlzdWJpZCA9IFBHX0FSR0lTTlVMTCgwKSA/IEludmFsaWRPaWQgOiBQR19HRVRBUkdfT0lEKDAp OwogCWludAkJCWk7CiAJUmV0dXJuU2V0SW5mbyAqcnNpbmZvID0gKFJldHVyblNldEluZm8gKikg ZmNpbmZvLT5yZXN1bHRpbmZvOwpAQCAtMTA5OCwxMCArMTA5OCw2IEBAIHBnX3N0YXRfZ2V0X3N1 YnNjcmlwdGlvbihQR19GVU5DVElPTl9BUkdTKQogCQlpZiAoT2lkSXNWYWxpZChzdWJpZCkgJiYg d29ya2VyLnN1YmlkICE9IHN1YmlkKQogCQkJY29udGludWU7CiAKLQkJLyogU2tpcCBpZiB0aGlz IGlzIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyICovCi0JCWlmIChpc1BhcmFsbGVsQXBwbHlXb3Jr ZXIoJndvcmtlcikpCi0JCQljb250aW51ZTsKLQogCQl3b3JrZXJfcGlkID0gd29ya2VyLnByb2Mt PnBpZDsKIAogCQl2YWx1ZXNbMF0gPSBPYmplY3RJZEdldERhdHVtKHdvcmtlci5zdWJpZCk7CkBA IC0xMTEwLDI2ICsxMTA2LDMyIEBAIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19GVU5DVElP Tl9BUkdTKQogCQllbHNlCiAJCQludWxsc1sxXSA9IHRydWU7CiAJCXZhbHVlc1syXSA9IEludDMy R2V0RGF0dW0od29ya2VyX3BpZCk7Ci0JCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHdvcmtlci5s YXN0X2xzbikpCisKKwkJaWYgKHdvcmtlci5hcHBseV9sZWFkZXJfcGlkID09IEludmFsaWRQaWQp CiAJCQludWxsc1szXSA9IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1szXSA9IExTTkdldERhdHVt KHdvcmtlci5sYXN0X2xzbik7Ci0JCWlmICh3b3JrZXIubGFzdF9zZW5kX3RpbWUgPT0gMCkKKwkJ CXZhbHVlc1szXSA9IEludDMyR2V0RGF0dW0od29ya2VyLmFwcGx5X2xlYWRlcl9waWQpOworCisJ CWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHdvcmtlci5sYXN0X2xzbikpCiAJCQludWxsc1s0XSA9 IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1s0XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0od29ya2Vy Lmxhc3Rfc2VuZF90aW1lKTsKLQkJaWYgKHdvcmtlci5sYXN0X3JlY3ZfdGltZSA9PSAwKQorCQkJ dmFsdWVzWzRdID0gTFNOR2V0RGF0dW0od29ya2VyLmxhc3RfbHNuKTsKKwkJaWYgKHdvcmtlci5s YXN0X3NlbmRfdGltZSA9PSAwKQogCQkJbnVsbHNbNV0gPSB0cnVlOwogCQllbHNlCi0JCQl2YWx1 ZXNbNV0gPSBUaW1lc3RhbXBUekdldERhdHVtKHdvcmtlci5sYXN0X3JlY3ZfdGltZSk7Ci0JCWlm IChYTG9nUmVjUHRySXNJbnZhbGlkKHdvcmtlci5yZXBseV9sc24pKQorCQkJdmFsdWVzWzVdID0g VGltZXN0YW1wVHpHZXREYXR1bSh3b3JrZXIubGFzdF9zZW5kX3RpbWUpOworCQlpZiAod29ya2Vy Lmxhc3RfcmVjdl90aW1lID09IDApCiAJCQludWxsc1s2XSA9IHRydWU7CiAJCWVsc2UKLQkJCXZh bHVlc1s2XSA9IExTTkdldERhdHVtKHdvcmtlci5yZXBseV9sc24pOwotCQlpZiAod29ya2VyLnJl cGx5X3RpbWUgPT0gMCkKKwkJCXZhbHVlc1s2XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0od29ya2Vy Lmxhc3RfcmVjdl90aW1lKTsKKwkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQod29ya2VyLnJlcGx5 X2xzbikpCiAJCQludWxsc1s3XSA9IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1s3XSA9IFRpbWVz dGFtcFR6R2V0RGF0dW0od29ya2VyLnJlcGx5X3RpbWUpOworCQkJdmFsdWVzWzddID0gTFNOR2V0 RGF0dW0od29ya2VyLnJlcGx5X2xzbik7CisJCWlmICh3b3JrZXIucmVwbHlfdGltZSA9PSAwKQor CQkJbnVsbHNbOF0gPSB0cnVlOworCQllbHNlCisJCQl2YWx1ZXNbOF0gPSBUaW1lc3RhbXBUekdl dERhdHVtKHdvcmtlci5yZXBseV90aW1lKTsKIAogCQl0dXBsZXN0b3JlX3B1dHZhbHVlcyhyc2lu Zm8tPnNldFJlc3VsdCwgcnNpbmZvLT5zZXREZXNjLAogCQkJCQkJCSB2YWx1ZXMsIG51bGxzKTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDdiZTlhNTAuLjYzNGM2ZDQgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdApAQCAtNTQyNiw5ICs1NDI2LDkgQEAKICAgcHJvbmFtZSA9PiAncGdfc3Rh dF9nZXRfc3Vic2NyaXB0aW9uJywgcHJvcm93cyA9PiAnMTAnLCBwcm9pc3N0cmljdCA9PiAnZics CiAgIHByb3JldHNldCA9PiAndCcsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcGFyYWxsZWwgPT4g J3InLAogICBwcm9yZXR0eXBlID0+ICdyZWNvcmQnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKLSAg cHJvYWxsYXJndHlwZXMgPT4gJ3tvaWQsb2lkLG9pZCxpbnQ0LHBnX2xzbix0aW1lc3RhbXB0eix0 aW1lc3RhbXB0eixwZ19sc24sdGltZXN0YW1wdHp9JywKLSAgcHJvYXJnbW9kZXMgPT4gJ3tpLG8s byxvLG8sbyxvLG8sb30nLAotICBwcm9hcmduYW1lcyA9PiAne3N1YmlkLHN1YmlkLHJlbGlkLHBp ZCxyZWNlaXZlZF9sc24sbGFzdF9tc2dfc2VuZF90aW1lLGxhc3RfbXNnX3JlY2VpcHRfdGltZSxs YXRlc3RfZW5kX2xzbixsYXRlc3RfZW5kX3RpbWV9JywKKyAgcHJvYWxsYXJndHlwZXMgPT4gJ3tv aWQsb2lkLG9pZCxpbnQ0LGludDQscGdfbHNuLHRpbWVzdGFtcHR6LHRpbWVzdGFtcHR6LHBnX2xz bix0aW1lc3RhbXB0en0nLAorICBwcm9hcmdtb2RlcyA9PiAne2ksbyxvLG8sbyxvLG8sbyxvLG99 JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3tzdWJpZCxzdWJpZCxyZWxpZCxwaWQsYXBwbHlfbGVhZGVy X3BpZCxyZWNlaXZlZF9sc24sbGFzdF9tc2dfc2VuZF90aW1lLGxhc3RfbXNnX3JlY2VpcHRfdGlt ZSxsYXRlc3RfZW5kX2xzbixsYXRlc3RfZW5kX3RpbWV9JywKICAgcHJvc3JjID0+ICdwZ19zdGF0 X2dldF9zdWJzY3JpcHRpb24nIH0sCiB7IG9pZCA9PiAnMjAyNicsIGRlc2NyID0+ICdzdGF0aXN0 aWNzOiBjdXJyZW50IGJhY2tlbmQgUElEJywKICAgcHJvbmFtZSA9PiAncGdfYmFja2VuZF9waWQn LCBwcm92b2xhdGlsZSA9PiAncycsIHByb3BhcmFsbGVsID0+ICdyJywKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9ydWxlcy5vdXQKaW5kZXggZmI5ZjkzNi4uN2U2ZWE2MCAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9ydWxlcy5vdXQKQEAgLTIwOTQsNiArMjA5NCw3IEBAIHBnX3N0YXRfc3NsfCBTRUxFQ1Qg cy5waWQsCiBwZ19zdGF0X3N1YnNjcmlwdGlvbnwgU0VMRUNUIHN1Lm9pZCBBUyBzdWJpZCwKICAg ICBzdS5zdWJuYW1lLAogICAgIHN0LnBpZCwKKyAgICBzdC5hcHBseV9sZWFkZXJfcGlkLAogICAg IHN0LnJlbGlkLAogICAgIHN0LnJlY2VpdmVkX2xzbiwKICAgICBzdC5sYXN0X21zZ19zZW5kX3Rp bWUsCkBAIC0yMTAxLDcgKzIxMDIsNyBAQCBwZ19zdGF0X3N1YnNjcmlwdGlvbnwgU0VMRUNUIHN1 Lm9pZCBBUyBzdWJpZCwKICAgICBzdC5sYXRlc3RfZW5kX2xzbiwKICAgICBzdC5sYXRlc3RfZW5k X3RpbWUKICAgIEZST00gKHBnX3N1YnNjcmlwdGlvbiBzdQotICAgICBMRUZUIEpPSU4gcGdfc3Rh dF9nZXRfc3Vic2NyaXB0aW9uKE5VTEw6Om9pZCkgc3Qoc3ViaWQsIHJlbGlkLCBwaWQsIHJlY2Vp dmVkX2xzbiwgbGFzdF9tc2dfc2VuZF90aW1lLCBsYXN0X21zZ19yZWNlaXB0X3RpbWUsIGxhdGVz dF9lbmRfbHNuLCBsYXRlc3RfZW5kX3RpbWUpIE9OICgoc3Quc3ViaWQgPSBzdS5vaWQpKSk7Cisg ICAgIExFRlQgSk9JTiBwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24oTlVMTDo6b2lkKSBzdChzdWJp ZCwgcmVsaWQsIHBpZCwgYXBwbHlfbGVhZGVyX3BpZCwgcmVjZWl2ZWRfbHNuLCBsYXN0X21zZ19z ZW5kX3RpbWUsIGxhc3RfbXNnX3JlY2VpcHRfdGltZSwgbGF0ZXN0X2VuZF9sc24sIGxhdGVzdF9l bmRfdGltZSkgT04gKChzdC5zdWJpZCA9IHN1Lm9pZCkpKTsKIHBnX3N0YXRfc3Vic2NyaXB0aW9u X3N0YXRzfCBTRUxFQ1Qgc3Muc3ViaWQsCiAgICAgcy5zdWJuYW1lLAogICAgIHNzLmFwcGx5X2Vy cm9yX2NvdW50LAotLSAKMi43LjIud2luZG93cy4xCgo= --_006_OS0PR01MB571685A645E509267AC5F30894F99OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v77-0001-Perform-apply-of-large-transactions-by-parallel-.patch" Content-Description: v77-0001-Perform-apply-of-large-transactions-by-parallel-.patch Content-Disposition: attachment; filename="v77-0001-Perform-apply-of-large-transactions-by-parallel-.patch"; size=269409; creation-date="Sun, 08 Jan 2023 03:53:58 GMT"; modification-date="Sun, 08 Jan 2023 03:58:48 GMT" Content-Transfer-Encoding: base64 RnJvbSAxOTI4NDJhNjYyMzg0ZjhkZTQzMzFjZDQ2OGEzYjVjYjg4MGI4MGJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBTYXQsIDcgSmFuIDIwMjMgMTM6MzM6MDYgKzA4MDAKU3ViamVjdDogW1BBVENIIHY3 N10gUGVyZm9ybSBhcHBseSBvZiBsYXJnZSB0cmFuc2FjdGlvbnMgYnkgcGFyYWxsZWwgd29ya2Vy cy4KCi0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDExICstCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgMjggKy0KIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwg ICAgICAgICAgICAgIHwgICAyMiArLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAg ICAgICAgICAgICAgICAgICAgfCAgICA1ICsKIGRvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAyOSArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf c3Vic2NyaXB0aW9uLnNnbWwgICAgICAgICAgfCAgIDI0ICstCiBkb2Mvc3JjL3NnbWwvc3lzdGVt LXZpZXdzLnNnbWwgICAgICAgICAgICAgICAgICAgICB8ICAgMTQgKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hhY3QuYyAgICAgICAgICAgICAgICAgIHwgICAyNCArLQogc3JjL2JhY2tl bmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jICAgICAgICAgICAgfCAgIDY3ICstCiBzcmMv YmFja2VuZC9saWJwcS9wcW1xLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTggKy0K IHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYyAgICAgICAgICAgICAgICAgIHwgICAg MyArCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2ludGVycnVwdC5jICAgICAgICAgICAgICAgICB8 ICAgIDUgKy0KIC4uLi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYyAgICAgICAg ICAgIHwgICAgNiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZSAg ICAgICAgICAgfCAgICAxICsKIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3 b3JrZXIuYyAgICAgIHwgMTYzMCArKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyAgICAgICAgICAgfCAgICA1ICstCiBzcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgICAgICAgICB8ICAyMjAgKystCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkICAgICAgICB8ICAgIDEgKwog c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYyAgICAgICAgICAgfCAgIDI2 ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgICAgICAgICAgICB8 ICAgMzcgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5j ICAgIHwgICAgNSArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMu YyAgICAgICAgfCAgIDI1ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtl ci5jICAgICAgICAgICB8IDEzODUgKysrKysrKysrKysrKystLS0KIHNyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgICAgICAgIHwgICAyMiArLQogc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jICAgICAgICAgICAgICAgfCAgICA0ICsKIHNyYy9iYWNr ZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMgICAgICAgICAgICAgICAgICAgIHwgICA0NiArCiBzcmMv YmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKwog c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jICAgICAgICAgICAgfCAgICA2 ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9sb2NrZnVuY3MuYyAgICAgICAgICAgICAgICAgIHwg ICAxNiArLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAgICAgICAg ICAgfCAgIDEyICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBs ZSAgICAgIHwgICAgMSArCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgIDYgKy0KIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAyMSArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3Jp cHRpb24uaCAgICAgICAgICAgICAgfCAgIDIxICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9zdWJz Y3JpcHRpb25jbWRzLmggICAgICAgICAgICB8ICAgIDIgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vbG9naWNhbGxhdW5jaGVyLmggICAgICAgICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL2xvZ2ljYWxwcm90by5oICAgICAgICAgICAgIHwgICAyOCArLQogc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oICAgICAgICAgICAgfCAgICA5ICsKIHNyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vcGdvdXRwdXQuaCAgICAgICAgICAgICAgICAgfCAgICAyICst CiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmggICAgICAgICAgICB8ICAg IDQgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmggICAgICAgICAgICAg IHwgICAgMiArLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggICAg ICAgICAgfCAgMjI3ICsrLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmggICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICA1ICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2UvbG9jay5oICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAxNyArLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFs LmggICAgICAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZl bnQuaCAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3N1YnNjcmlwdGlvbi5vdXQgICAgICAgICB8ICAgNDYgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3N1YnNjcmlwdGlvbi5zcWwgICAgICAgICAgICAgIHwgICAgNiArLQogc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgICAgICAgfCAgMjc0ICsrKy0KIHNyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbCAgICAgIHwgIDEzMCArLQog c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwgICAgICAgICAgfCAgICAz ICsKIC4uLi9zdWJzY3JpcHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwgICAgIHwg IDIyMCArKy0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0 LnBsIHwgICAgMyArCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2Fk ZS5wbCAgICB8ICAgIDIgKwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0 cmVhbS5wbCAgICAgfCAgNTI1ICsrKystLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0ICAgICAgICAgICAgICAgICAgIHwgICAgNyArCiA1NyBmaWxlcyBjaGFuZ2VkLCA0NTA5IGlu c2VydGlvbnMoKyksIDc1OCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwoKZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNn bWwKaW5kZXggOTMxNmI4MS4uYzFlNDA0OCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFs b2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTc5MTMsMTEgKzc5 MTMsMTYgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZn dDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKIAogICAgICA8cm93PgogICAgICAgPGVu dHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0 aW9uIj4KLSAgICAgICA8c3RydWN0ZmllbGQ+c3Vic3RyZWFtPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ Ym9vbDwvdHlwZT4KKyAgICAgICA8c3RydWN0ZmllbGQ+c3Vic3RyZWFtPC9zdHJ1Y3RmaWVsZD4g PHR5cGU+Y2hhcjwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAgICAgIElm IHRydWUsIHRoZSBzdWJzY3JpcHRpb24gd2lsbCBhbGxvdyBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jl c3MKLSAgICAgICB0cmFuc2FjdGlvbnMKKyAgICAgICBDb250cm9scyBob3cgdG8gaGFuZGxlIHRo ZSBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zOgorICAgICAgIDxsaXRlcmFs PmY8L2xpdGVyYWw+ID0gZGlzYWxsb3cgc3RyZWFtaW5nIG9mIGluLXByb2dyZXNzIHRyYW5zYWN0 aW9ucywKKyAgICAgICA8bGl0ZXJhbD50PC9saXRlcmFsPiA9IHNwaWxsIHRoZSBjaGFuZ2VzIG9m IGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyB0bworICAgICAgIGRpc2sgYW5kIGFwcGx5IGF0IG9u Y2UgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiB0aGUKKyAgICAgICBwdWJs aXNoZXIgYW5kIHJlY2VpdmVkIGJ5IHRoZSBzdWJzY3JpYmVyLAorICAgICAgIDxsaXRlcmFsPnA8 L2xpdGVyYWw+ID0gYXBwbHkgY2hhbmdlcyBkaXJlY3RseSB1c2luZyBhIHBhcmFsbGVsIGFwcGx5 CisgICAgICAgd29ya2VyIGlmIGF2YWlsYWJsZSAoc2FtZSBhcyAndCcgaWYgbm8gd29ya2VyIGlz IGF2YWlsYWJsZSkKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21s CmluZGV4IDA1YjM4NjIuLmEzM2E5MzUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTQ5NjgsNyArNDk2OCw4IEBA IEFOWSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8L3JlcGxhY2VhYmxl PiAoIDxyZXBsYWNlYWJsZSBjbGFzcz0iCiAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgPHBhcmE+ CiAgICAgICAgIFNwZWNpZmllcyBtYXhpbXVtIG51bWJlciBvZiBsb2dpY2FsIHJlcGxpY2F0aW9u IHdvcmtlcnMuIFRoaXMgaW5jbHVkZXMKLSAgICAgICAgYm90aCBhcHBseSB3b3JrZXJzIGFuZCB0 YWJsZSBzeW5jaHJvbml6YXRpb24gd29ya2Vycy4KKyAgICAgICAgbGVhZGVyIGFwcGx5IHdvcmtl cnMsIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIGFuZCB0YWJsZSBzeW5jaHJvbml6YXRpb24KKyAg ICAgICAgd29ya2Vycy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIExv Z2ljYWwgcmVwbGljYXRpb24gd29ya2VycyBhcmUgdGFrZW4gZnJvbSB0aGUgcG9vbCBkZWZpbmVk IGJ5CkBAIC01MDA4LDYgKzUwMDksMzEgQEAgQU5ZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNsYXNzPSIKICAgICAg IDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJsaXN0ZW50cnkg aWQ9Imd1Yy1tYXgtcGFyYWxsZWwtYXBwbHktd29ya2Vycy1wZXItc3Vic2NyaXB0aW9uIiB4cmVm bGFiZWw9Im1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24iPgorICAg ICAgPHRlcm0+PHZhcm5hbWU+bWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlw dGlvbjwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQorICAgICAgPGluZGV4dGVybT4K KyAgICAgICA8cHJpbWFyeT48dmFybmFtZT5tYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJf c3Vic2NyaXB0aW9uPC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4K KyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAg ICAgIDxwYXJhPgorICAgICAgICBNYXhpbXVtIG51bWJlciBvZiBwYXJhbGxlbCBhcHBseSB3b3Jr ZXJzIHBlciBzdWJzY3JpcHRpb24uIFRoaXMKKyAgICAgICAgcGFyYW1ldGVyIGNvbnRyb2xzIHRo ZSBhbW91bnQgb2YgcGFyYWxsZWxpc20gZm9yIHN0cmVhbWluZyBvZgorICAgICAgICBpbi1wcm9n cmVzcyB0cmFuc2FjdGlvbnMgd2l0aCBzdWJzY3JpcHRpb24gcGFyYW1ldGVyCisgICAgICAgIDxs aXRlcmFsPnN0cmVhbWluZyA9IHBhcmFsbGVsPC9saXRlcmFsPi4KKyAgICAgICA8L3BhcmE+Cisg ICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFyZSB0YWtl biBmcm9tIHRoZSBwb29sIGRlZmluZWQgYnkKKyAgICAgICAgPHZhcm5hbWU+bWF4X2xvZ2ljYWxf cmVwbGljYXRpb25fd29ya2VyczwvdmFybmFtZT4uCisgICAgICAgPC9wYXJhPgorICAgICAgIDxw YXJhPgorICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAyLiBUaGlzIHBhcmFtZXRlciBjYW4g b25seSBiZSBzZXQgaW4gdGhlCisgICAgICAgIDxmaWxlbmFtZT5wb3N0Z3Jlc3FsLmNvbmY8L2Zp bGVuYW1lPiBmaWxlIG9yIG9uIHRoZSBzZXJ2ZXIgY29tbWFuZAorICAgICAgICBsaW5lLgorICAg ICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAg ICAgIDwvdmFyaWFibGVsaXN0PgogICAgIDwvc2VjdDI+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBs aWNhdGlvbi5zZ21sCmluZGV4IDdiOWJiMDAuLjU0ZjQ4YmUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwt cmVwbGljYXRpb24uc2dtbApAQCAtMTUwMSw2ICsxNTAxLDE2IEBAIENPTlRFWFQ6ICBwcm9jZXNz aW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcg IklOU0VSCiAgICBtaWdodCBub3QgdmlvbGF0ZSBhbnkgY29uc3RyYWludC4gIFRoaXMgY2FuIGVh c2lseSBtYWtlIHRoZSBzdWJzY3JpYmVyCiAgICBpbmNvbnNpc3RlbnQuCiAgIDwvcGFyYT4KKwor ICA8cGFyYT4KKyAgIFdoZW4gdGhlIHN0cmVhbWluZyBtb2RlIGlzIDxsaXRlcmFsPnBhcmFsbGVs PC9saXRlcmFsPiwgdGhlIGZpbmlzaCBMU04gb2YKKyAgIGZhaWxlZCB0cmFuc2FjdGlvbnMgbWF5 IG5vdCBiZSBsb2dnZWQuIEluIHRoYXQgY2FzZSwgaXQgbWF5IGJlIG5lY2Vzc2FyeSB0bworICAg Y2hhbmdlIHRoZSBzdHJlYW1pbmcgbW9kZSB0byA8bGl0ZXJhbD5vbjwvbGl0ZXJhbD4gb3IgPGxp dGVyYWw+b2ZmPC9saXRlcmFsPiBhbmQKKyAgIGNhdXNlIHRoZSBzYW1lIGNvbmZsaWN0cyBhZ2Fp biBzbyB0aGUgZmluaXNoIExTTiBvZiB0aGUgZmFpbGVkIHRyYW5zYWN0aW9uIHdpbGwKKyAgIGJl IHdyaXR0ZW4gdG8gdGhlIHNlcnZlciBsb2cuIEZvciB0aGUgdXNhZ2Ugb2YgZmluaXNoIExTTiwg cGxlYXNlIHJlZmVyIHRvIDxsaW5rCisgICBsaW5rZW5kPSJzcWwtYWx0ZXJzdWJzY3JpcHRpb24i Pjxjb21tYW5kPkFMVEVSIFNVQlNDUklQVElPTiAuLi4KKyAgIFNLSVA8L2NvbW1hbmQ+PC9saW5r Pi4KKyAgPC9wYXJhPgogIDwvc2VjdDE+CiAKICA8c2VjdDEgaWQ9ImxvZ2ljYWwtcmVwbGljYXRp b24tcmVzdHJpY3Rpb25zIj4KQEAgLTE4MDksOCArMTgxOSw5IEBAIENPTlRFWFQ6ICBwcm9jZXNz aW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcg IklOU0VSCiAKICAgIDxwYXJhPgogICAgIDxsaW5rIGxpbmtlbmQ9Imd1Yy1tYXgtbG9naWNhbC1y ZXBsaWNhdGlvbi13b3JrZXJzIj48dmFybmFtZT5tYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3Jr ZXJzPC92YXJuYW1lPjwvbGluaz4KLSAgICBtdXN0IGJlIHNldCB0byBhdCBsZWFzdCB0aGUgbnVt YmVyIG9mIHN1YnNjcmlwdGlvbnMgKGZvciBhcHBseSB3b3JrZXJzKSwgcGx1cwotICAgIHNvbWUg cmVzZXJ2ZSBmb3IgdGhlIHRhYmxlIHN5bmNocm9uaXphdGlvbiB3b3JrZXJzLgorICAgIG11c3Qg YmUgc2V0IHRvIGF0IGxlYXN0IHRoZSBudW1iZXIgb2Ygc3Vic2NyaXB0aW9ucyAoZm9yIGxlYWRl ciBhcHBseQorICAgIHdvcmtlcnMpLCBwbHVzIHNvbWUgcmVzZXJ2ZSBmb3IgdGhlIHRhYmxlIHN5 bmNocm9uaXphdGlvbiB3b3JrZXJzIGFuZAorICAgIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuCiAg ICA8L3BhcmE+CiAKICAgIDxwYXJhPgpAQCAtMTgyOCw2ICsxODM5LDEzIEBAIENPTlRFWFQ6ICBw cm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBk dXJpbmcgIklOU0VSCiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgorICAgIDxsaW5rIGxpbmtlbmQ9 Imd1Yy1tYXgtcGFyYWxsZWwtYXBwbHktd29ya2Vycy1wZXItc3Vic2NyaXB0aW9uIj48dmFybmFt ZT5tYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uPC92YXJuYW1lPjwv bGluaz4KKyAgICAgY29udHJvbHMgdGhlIGFtb3VudCBvZiBwYXJhbGxlbGlzbSBmb3Igc3RyZWFt aW5nIG9mIGluLXByb2dyZXNzCisgICAgIHRyYW5zYWN0aW9ucyB3aXRoIHN1YnNjcmlwdGlvbiBw YXJhbWV0ZXIKKyAgICAgPGxpdGVyYWw+c3RyZWFtaW5nID0gcGFyYWxsZWw8L2xpdGVyYWw+Lgor ICAgPC9wYXJhPgorCisgICA8cGFyYT4KICAgICBMb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlcnMg YXJlIGFsc28gYWZmZWN0ZWQgYnkKICAgICA8bGluayBsaW5rZW5kPSJndWMtd2FsLXJlY2VpdmVy LXRpbWVvdXQiPjx2YXJuYW1lPndhbF9yZWNlaXZlcl90aW1lb3V0PC92YXJuYW1lPjwvbGluaz4s CiAgICAgPGxpbmsgbGlua2VuZD0iZ3VjLXdhbC1yZWNlaXZlci1zdGF0dXMtaW50ZXJ2YWwiPjx2 YXJuYW1lPndhbF9yZWNlaXZlcl9zdGF0dXNfaW50ZXJ2YWw8L3Zhcm5hbWU+PC9saW5rPiBhbmQK ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwv bW9uaXRvcmluZy5zZ21sCmluZGV4IDViY2JhMGYuLmNmMjIwYzMgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dt bApAQCAtMTg1OSw2ICsxODU5LDExIEBAIHBvc3RncmVzICAgMjcwOTMgIDAuMCAgMC4wICAzMDA5 NiAgMjc1MiA/ICAgICAgICBTcyAgIDExOjM0ICAgMDowMCBwb3N0Z3Jlczogc2VyCiAgICAgICA8 ZW50cnk+V2FpdGluZyB0byBhY3F1aXJlIGFuIGFkdmlzb3J5IHVzZXIgbG9jay48L2VudHJ5Pgog ICAgICA8L3Jvdz4KICAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD5hcHBseXRyYW5z YWN0aW9uPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+V2FpdGluZyB0byBhY3F1aXJl IGEgbG9jayBvbiBhIHJlbW90ZSB0cmFuc2FjdGlvbiBiZWluZyBhcHBsaWVkCisgICAgICBieSBh IGxvZ2ljYWwgcmVwbGljYXRpb24gc3Vic2NyaWJlci48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAg ICAgPHJvdz4KICAgICAgIDxlbnRyeT48bGl0ZXJhbD5leHRlbmQ8L2xpdGVyYWw+PC9lbnRyeT4K ICAgICAgIDxlbnRyeT5XYWl0aW5nIHRvIGV4dGVuZCBhIHJlbGF0aW9uLjwvZW50cnk+CiAgICAg IDwvcm93PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvcHJvdG9jb2wuc2dtbAppbmRleCAwMzMxMmUwLi40MzllZjY3IDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dt bApAQCAtMzEwMyw3ICszMTAzLDcgQEAgcHNxbCAiZGJuYW1lPXBvc3RncmVzIHJlcGxpY2F0aW9u PWRhdGFiYXNlIiAtYyAiSURFTlRJRllfU1lTVEVNOyIKICAgICAgPGxpc3RpdGVtPgogICAgICAg PHBhcmE+CiAgICAgICAgUHJvdG9jb2wgdmVyc2lvbi4gQ3VycmVudGx5IHZlcnNpb25zIDxsaXRl cmFsPjE8L2xpdGVyYWw+LCA8bGl0ZXJhbD4yPC9saXRlcmFsPiwKLSAgICAgICBhbmQgPGxpdGVy YWw+MzwvbGl0ZXJhbD4gYXJlIHN1cHBvcnRlZC4KKyAgICAgICA8bGl0ZXJhbD4zPC9saXRlcmFs PiwgYW5kIDxsaXRlcmFsPjQ8L2xpdGVyYWw+IGFyZSBzdXBwb3J0ZWQuCiAgICAgICA8L3BhcmE+ CiAgICAgICA8cGFyYT4KICAgICAgICBWZXJzaW9uIDxsaXRlcmFsPjI8L2xpdGVyYWw+IGlzIHN1 cHBvcnRlZCBvbmx5IGZvciBzZXJ2ZXIgdmVyc2lvbiAxNApAQCAtMzExMyw2ICszMTEzLDExIEBA IHBzcWwgImRibmFtZT1wb3N0Z3JlcyByZXBsaWNhdGlvbj1kYXRhYmFzZSIgLWMgIklERU5USUZZ X1NZU1RFTTsiCiAgICAgICAgVmVyc2lvbiA8bGl0ZXJhbD4zPC9saXRlcmFsPiBpcyBzdXBwb3J0 ZWQgb25seSBmb3Igc2VydmVyIHZlcnNpb24gMTUKICAgICAgICBhbmQgYWJvdmUsIGFuZCBpdCBh bGxvd3Mgc3RyZWFtaW5nIG9mIHR3by1waGFzZSBjb21taXRzLgogICAgICAgPC9wYXJhPgorICAg ICAgPHBhcmE+CisgICAgICAgVmVyc2lvbiA8bGl0ZXJhbD40PC9saXRlcmFsPiBpcyBzdXBwb3J0 ZWQgb25seSBmb3Igc2VydmVyIHZlcnNpb24gMTYKKyAgICAgICBhbmQgYWJvdmUsIGFuZCBpdCBh bGxvd3Mgc3RyZWFtcyBvZiBsYXJnZSBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMgdG8KKyAgICAg ICBiZSBhcHBsaWVkIGluIHBhcmFsbGVsLgorICAgICAgPC9wYXJhPgogICAgICA8L2xpc3RpdGVt PgogICAgIDwvdmFybGlzdGVudHJ5PgogCkBAIC02ODgzLDYgKzY4ODgsMjggQEAgcHNxbCAiZGJu YW1lPXBvc3RncmVzIHJlcGxpY2F0aW9uPWRhdGFiYXNlIiAtYyAiSURFTlRJRllfU1lTVEVNOyIK ICAgICAgICAgPC9wYXJhPgogICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICA8L3Zhcmxpc3RlbnRy eT4KKworICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICA8dGVybT5JbnQ2NCAoWExvZ1JlY1B0 cik8L3Rlcm0+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIFRo ZSBMU04gb2YgdGhlIGFib3J0LiBUaGlzIGZpZWxkIGlzIGF2YWlsYWJsZSBzaW5jZSBwcm90b2Nv bCB2ZXJzaW9uCisgICAgICAgICA0LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRl bT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAg IDx0ZXJtPkludDY0IChUaW1lc3RhbXBUeik8L3Rlcm0+CisgICAgICAgPGxpc3RpdGVtPgorICAg ICAgICA8cGFyYT4KKyAgICAgICAgIEFib3J0IHRpbWVzdGFtcCBvZiB0aGUgdHJhbnNhY3Rpb24u IFRoZSB2YWx1ZSBpcyBpbiBudW1iZXIKKyAgICAgICAgIG9mIG1pY3Jvc2Vjb25kcyBzaW5jZSBQ b3N0Z3JlU1FMIGVwb2NoICgyMDAwLTAxLTAxKS4gVGhpcyBmaWVsZCBpcworICAgICAgICAgYXZh aWxhYmxlIHNpbmNlIHByb3RvY29sIHZlcnNpb24gNC4KKyAgICAgICAgPC9wYXJhPgorICAgICAg IDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8L3ZhcmlhYmxlbGlz dD4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYv Y3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4IDkwYmQ3MDAuLmViYTcyYzYgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0yMjgsMTMgKzIyOCwyOSBA QCBDUkVBVEUgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdWJz Y3JpcHRpb25fbmFtZTwvcmVwbGFjZWFibAogICAgICAgIDwvdmFybGlzdGVudHJ5PgogCiAgICAg ICAgPHZhcmxpc3RlbnRyeT4KLSAgICAgICAgPHRlcm0+PGxpdGVyYWw+c3RyZWFtaW5nPC9saXRl cmFsPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4pPC90ZXJtPgorICAgICAgICA8dGVybT48bGl0ZXJh bD5zdHJlYW1pbmc8L2xpdGVyYWw+ICg8dHlwZT5lbnVtPC90eXBlPik8L3Rlcm0+CiAgICAgICAg IDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgIFNwZWNpZmllcyB3aGV0aGVy IHRvIGVuYWJsZSBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zCi0gICAgICAg ICAgZm9yIHRoaXMgc3Vic2NyaXB0aW9uLiAgQnkgZGVmYXVsdCwgYWxsIHRyYW5zYWN0aW9ucwot ICAgICAgICAgIGFyZSBmdWxseSBkZWNvZGVkIG9uIHRoZSBwdWJsaXNoZXIgYW5kIG9ubHkgdGhl biBzZW50IHRvIHRoZQotICAgICAgICAgIHN1YnNjcmliZXIgYXMgYSB3aG9sZS4KKyAgICAgICAg ICBmb3IgdGhpcyBzdWJzY3JpcHRpb24uICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyA8bGl0ZXJhbD5v ZmY8L2xpdGVyYWw+LAorICAgICAgICAgIG1lYW5pbmcgYWxsIHRyYW5zYWN0aW9ucyBhcmUgZnVs bHkgZGVjb2RlZCBvbiB0aGUgcHVibGlzaGVyIGFuZCBvbmx5CisgICAgICAgICAgdGhlbiBzZW50 IHRvIHRoZSBzdWJzY3JpYmVyIGFzIGEgd2hvbGUuCisgICAgICAgICA8L3BhcmE+CisKKyAgICAg ICAgIDxwYXJhPgorICAgICAgICAgIElmIHNldCB0byA8bGl0ZXJhbD5vbjwvbGl0ZXJhbD4sIHRo ZSBpbmNvbWluZyBjaGFuZ2VzIGFyZSB3cml0dGVuIHRvCisgICAgICAgICAgdGVtcG9yYXJ5IGZp bGVzIGFuZCB0aGVuIGFwcGxpZWQgb25seSBhZnRlciB0aGUgdHJhbnNhY3Rpb24gaXMKKyAgICAg ICAgICBjb21taXR0ZWQgb24gdGhlIHB1Ymxpc2hlciBhbmQgcmVjZWl2ZWQgYnkgdGhlIHN1YnNj cmliZXIuCisgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIElm IHNldCB0byA8bGl0ZXJhbD5wYXJhbGxlbDwvbGl0ZXJhbD4sIGluY29taW5nIGNoYW5nZXMgYXJl IGRpcmVjdGx5CisgICAgICAgICAgYXBwbGllZCB2aWEgb25lIG9mIHRoZSBwYXJhbGxlbCBhcHBs eSB3b3JrZXJzLCBpZiBhdmFpbGFibGUuIElmIG5vCisgICAgICAgICAgcGFyYWxsZWwgYXBwbHkg d29ya2VyIGlzIGZyZWUgdG8gaGFuZGxlIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgdGhlbgorICAg ICAgICAgIHRoZSBjaGFuZ2VzIGFyZSB3cml0dGVuIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgYXBw bGllZCBhZnRlciB0aGUKKyAgICAgICAgICB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuIE5vdGUg dGhhdCBpZiBhbiBlcnJvciBoYXBwZW5zIGluIGEKKyAgICAgICAgICBwYXJhbGxlbCBhcHBseSB3 b3JrZXIsIHRoZSBmaW5pc2ggTFNOIG9mIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24KKyAgICAgICAg ICBtaWdodCBub3QgYmUgcmVwb3J0ZWQgaW4gdGhlIHNlcnZlciBsb2cuCiAgICAgICAgICA8L3Bh cmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvc3lzdGVt LXZpZXdzLnNnbWwKaW5kZXggMTQzYWU1Yi4uMWQxYjdkZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3N5c3RlbS12aWV3cy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dt bApAQCAtMTM3OSw4ICsxMzc5LDkgQEAKICAgICAgICA8bGl0ZXJhbD52aXJ0dWFseGlkPC9saXRl cmFsPiwKICAgICAgICA8bGl0ZXJhbD5zcGVjdG9rZW48L2xpdGVyYWw+LAogICAgICAgIDxsaXRl cmFsPm9iamVjdDwvbGl0ZXJhbD4sCi0gICAgICAgPGxpdGVyYWw+dXNlcmxvY2s8L2xpdGVyYWw+ LCBvcgotICAgICAgIDxsaXRlcmFsPmFkdmlzb3J5PC9saXRlcmFsPi4KKyAgICAgICA8bGl0ZXJh bD51c2VybG9jazwvbGl0ZXJhbD4sCisgICAgICAgPGxpdGVyYWw+YWR2aXNvcnk8L2xpdGVyYWw+ LCBvcgorICAgICAgIDxsaXRlcmFsPmFwcGx5dHJhbnNhY3Rpb248L2xpdGVyYWw+LgogICAgICAg IChTZWUgYWxzbyA8eHJlZiBsaW5rZW5kPSJ3YWl0LWV2ZW50LWxvY2stdGFibGUiLz4uKQogICAg ICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgpAQCAtMTU5NSw2ICsxNTk2LDE1IEBACiAg IDwvcGFyYT4KIAogICA8cGFyYT4KKyAgIEFwcGx5IHRyYW5zYWN0aW9uIGxvY2tzIGFyZSB1c2Vk IGluIHBhcmFsbGVsIG1vZGUgdG8gYXBwbHkgdGhlIHRyYW5zYWN0aW9uCisgICBpbiBsb2dpY2Fs IHJlcGxpY2F0aW9uLiBUaGUgcmVtb3RlIHRyYW5zYWN0aW9uIGlkIGlzIGRpc3BsYXllZCBpbiB0 aGUKKyAgIDxzdHJ1Y3RmaWVsZD50cmFuc2FjdGlvbmlkPC9zdHJ1Y3RmaWVsZD4gY29sdW1uLiBU aGUgPHN0cnVjdGZpZWxkPm9ianN1YmlkPC9zdHJ1Y3RmaWVsZD4KKyAgIGRpc3BsYXlzIHRoZSBs b2NrIHN1YnR5cGUgd2hpY2ggaXMgMCBmb3IgdGhlIGxvY2sgdXNlZCB0byBzeW5jaHJvbml6ZSB0 aGUKKyAgIHNldCBvZiBjaGFuZ2VzLCBhbmQgMSBmb3IgdGhlIGxvY2sgdXNlZCB0byB3YWl0IGZv ciB0aGUgdHJhbnNhY3Rpb24gdG8KKyAgIGZpbmlzaCB0byBlbnN1cmUgY29tbWl0IG9yZGVyLgor ICA8L3BhcmE+CisKKyAgPHBhcmE+CiAgICA8c3RydWN0bmFtZT5wZ19sb2Nrczwvc3RydWN0bmFt ZT4gcHJvdmlkZXMgYSBnbG9iYWwgdmlldyBvZiBhbGwgbG9ja3MKICAgIGluIHRoZSBkYXRhYmFz ZSBjbHVzdGVyLCBub3Qgb25seSB0aG9zZSByZWxldmFudCB0byB0aGUgY3VycmVudCBkYXRhYmFz ZS4KICAgIEFsdGhvdWdoIGl0cyA8c3RydWN0ZmllbGQ+cmVsYXRpb248L3N0cnVjdGZpZWxkPiBj b2x1bW4gY2FuIGJlIGpvaW5lZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0veGFjdC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCmluZGV4IDhkYWE3 ZjcuLmQ4NWUzMTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3Qu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKQEAgLTE3MTMsNiArMTcx Myw3IEBAIFJlY29yZFRyYW5zYWN0aW9uQWJvcnQoYm9vbCBpc1N1YlhhY3QpCiAJaW50CQkJbmNo aWxkcmVuOwogCVRyYW5zYWN0aW9uSWQgKmNoaWxkcmVuOwogCVRpbWVzdGFtcFR6IHhhY3RfdGlt ZTsKKwlib29sCQlyZXBsb3JpZ2luOwogCiAJLyoKIAkgKiBJZiB3ZSBoYXZlbid0IGJlZW4gYXNz aWduZWQgYW4gWElELCBub2JvZHkgd2lsbCBjYXJlIHdoZXRoZXIgd2UgYWJvcnRlZApAQCAtMTc0 Myw2ICsxNzQ0LDEzIEBAIFJlY29yZFRyYW5zYWN0aW9uQWJvcnQoYm9vbCBpc1N1YlhhY3QpCiAJ CWVsb2coUEFOSUMsICJjYW5ub3QgYWJvcnQgdHJhbnNhY3Rpb24gJXUsIGl0IHdhcyBhbHJlYWR5 IGNvbW1pdHRlZCIsCiAJCQkgeGlkKTsKIAorCS8qCisJICogQXJlIHdlIHVzaW5nIHRoZSByZXBs aWNhdGlvbiBvcmlnaW5zIGZlYXR1cmU/ICBPciwgaW4gb3RoZXIgd29yZHMsIGFyZQorCSAqIHdl IHJlcGxheWluZyByZW1vdGUgYWN0aW9ucz8KKwkgKi8KKwlyZXBsb3JpZ2luID0gKHJlcGxvcmln aW5fc2Vzc2lvbl9vcmlnaW4gIT0gSW52YWxpZFJlcE9yaWdpbklkICYmCisJCQkJICByZXBsb3Jp Z2luX3Nlc3Npb25fb3JpZ2luICE9IERvTm90UmVwbGljYXRlSWQpOworCiAJLyogRmV0Y2ggdGhl IGRhdGEgd2UgbmVlZCBmb3IgdGhlIGFib3J0IHJlY29yZCAqLwogCW5yZWxzID0gc21nckdldFBl bmRpbmdEZWxldGVzKGZhbHNlLCAmcmVscyk7CiAJbmNoaWxkcmVuID0geGFjdEdldENvbW1pdHRl ZENoaWxkcmVuKCZjaGlsZHJlbik7CkBAIC0xNzY2LDYgKzE3NzQsMTEgQEAgUmVjb3JkVHJhbnNh Y3Rpb25BYm9ydChib29sIGlzU3ViWGFjdCkKIAkJCQkJICAgTXlYYWN0RmxhZ3MsIEludmFsaWRU cmFuc2FjdGlvbklkLAogCQkJCQkgICBOVUxMKTsKIAorCWlmIChyZXBsb3JpZ2luKQorCQkvKiBN b3ZlIExTTnMgZm9yd2FyZCBmb3IgdGhpcyByZXBsaWNhdGlvbiBvcmlnaW4gKi8KKwkJcmVwbG9y aWdpbl9zZXNzaW9uX2FkdmFuY2UocmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl9sc24sCisJCQkJ CQkJCSAgIFhhY3RMYXN0UmVjRW5kKTsKKwogCS8qCiAJICogUmVwb3J0IHRoZSBsYXRlc3QgYXN5 bmMgYWJvcnQgTFNOLCBzbyB0aGF0IHRoZSBXQUwgd3JpdGVyIGtub3dzIHRvCiAJICogZmx1c2gg dGhpcyBhYm9ydC4gVGhlcmUncyBub3RoaW5nIHRvIGJlIGdhaW5lZCBieSBkZWxheWluZyB0aGlz LCBzaW5jZQpAQCAtNTg3MywxMSArNTg4NiwxMCBAQCBYYWN0TG9nQWJvcnRSZWNvcmQoVGltZXN0 YW1wVHogYWJvcnRfdGltZSwKIAl9CiAKIAkvKgotCSAqIER1bXAgdHJhbnNhY3Rpb24gb3JpZ2lu IGluZm9ybWF0aW9uIG9ubHkgZm9yIGFib3J0IHByZXBhcmVkLiBXZSBuZWVkCi0JICogdGhpcyBk dXJpbmcgcmVjb3ZlcnkgdG8gdXBkYXRlIHRoZSByZXBsaWNhdGlvbiBvcmlnaW4gcHJvZ3Jlc3Mu CisJICogRHVtcCB0cmFuc2FjdGlvbiBvcmlnaW4gaW5mb3JtYXRpb24uIFdlIG5lZWQgdGhpcyBk dXJpbmcgcmVjb3ZlcnkgdG8KKwkgKiB1cGRhdGUgdGhlIHJlcGxpY2F0aW9uIG9yaWdpbiBwcm9n cmVzcy4KIAkgKi8KLQlpZiAoKHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gIT0gSW52YWxpZFJl cE9yaWdpbklkKSAmJgotCQlUcmFuc2FjdGlvbklkSXNWYWxpZCh0d29waGFzZV94aWQpKQorCWlm IChyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luICE9IEludmFsaWRSZXBPcmlnaW5JZCkKIAl7CiAJ CXhsX3hpbmZvLnhpbmZvIHw9IFhBQ1RfWElORk9fSEFTX09SSUdJTjsKIApAQCAtNTkzNCw4ICs1 OTQ2LDggQEAgWGFjdExvZ0Fib3J0UmVjb3JkKFRpbWVzdGFtcFR6IGFib3J0X3RpbWUsCiAJaWYg KHhsX3hpbmZvLnhpbmZvICYgWEFDVF9YSU5GT19IQVNfT1JJR0lOKQogCQlYTG9nUmVnaXN0ZXJE YXRhKChjaGFyICopICgmeGxfb3JpZ2luKSwgc2l6ZW9mKHhsX3hhY3Rfb3JpZ2luKSk7CiAKLQlp ZiAoVHJhbnNhY3Rpb25JZElzVmFsaWQodHdvcGhhc2VfeGlkKSkKLQkJWExvZ1NldFJlY29yZEZs YWdzKFhMT0dfSU5DTFVERV9PUklHSU4pOworCS8qIEluY2x1ZGUgdGhlIHJlcGxpY2F0aW9uIG9y aWdpbiAqLworCVhMb2dTZXRSZWNvcmRGbGFncyhYTE9HX0lOQ0xVREVfT1JJR0lOKTsKIAogCXJl dHVybiBYTG9nSW5zZXJ0KFJNX1hBQ1RfSUQsIGluZm8pOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv c3Vic2NyaXB0aW9uY21kcy5jCmluZGV4IGYxNWEzMzIuLmJhZmYwMGQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTg1LDcgKzg1LDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgU3ViT3B0cwogCWJvb2wJCWNvcHlfZGF0YTsKIAlib29sCQlyZWZyZXNoOwogCWJvb2wJCWJp bmFyeTsKLQlib29sCQlzdHJlYW1pbmc7CisJY2hhcgkJc3RyZWFtaW5nOwogCWJvb2wJCXR3b3Bo YXNlOwogCWJvb2wJCWRpc2FibGVvbmVycjsKIAljaGFyCSAgICpvcmlnaW47CkBAIC0xMzksNyAr MTM5LDcgQEAgcGFyc2Vfc3Vic2NyaXB0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBM aXN0ICpzdG10X29wdGlvbnMsCiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfQklO QVJZKSkKIAkJb3B0cy0+YmluYXJ5ID0gZmFsc2U7CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRz LCBTVUJPUFRfU1RSRUFNSU5HKSkKLQkJb3B0cy0+c3RyZWFtaW5nID0gZmFsc2U7CisJCW9wdHMt PnN0cmVhbWluZyA9IExPR0lDQUxSRVBfU1RSRUFNX09GRjsKIAlpZiAoSXNTZXQoc3VwcG9ydGVk X29wdHMsIFNVQk9QVF9UV09QSEFTRV9DT01NSVQpKQogCQlvcHRzLT50d29waGFzZSA9IGZhbHNl OwogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX0RJU0FCTEVfT05fRVJSKSkKQEAg LTI0Miw3ICsyNDIsNyBAQCBwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpw c3RhdGUsIExpc3QgKnN0bXRfb3B0aW9ucywKIAkJCQllcnJvckNvbmZsaWN0aW5nRGVmRWxlbShk ZWZlbCwgcHN0YXRlKTsKIAogCQkJb3B0cy0+c3BlY2lmaWVkX29wdHMgfD0gU1VCT1BUX1NUUkVB TUlORzsKLQkJCW9wdHMtPnN0cmVhbWluZyA9IGRlZkdldEJvb2xlYW4oZGVmZWwpOworCQkJb3B0 cy0+c3RyZWFtaW5nID0gZGVmR2V0U3RyZWFtaW5nTW9kZShkZWZlbCk7CiAJCX0KIAkJZWxzZSBp ZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAidHdvX3BoYXNlIikgPT0gMCkKIAkJewpAQCAtNjMw LDcgKzYzMCw3IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0 ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1 Ym93bmVyIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKG93bmVyKTsKIAl2YWx1ZXNbQW51bV9wZ19z dWJzY3JpcHRpb25fc3ViZW5hYmxlZCAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMuZW5hYmxlZCk7 CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmJpbmFyeSAtIDFdID0gQm9vbEdldERh dHVtKG9wdHMuYmluYXJ5KTsKLQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic3RyZWFt IC0gMV0gPSBCb29sR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOworCXZhbHVlc1tBbnVtX3BnX3N1 YnNjcmlwdGlvbl9zdWJzdHJlYW0gLSAxXSA9IENoYXJHZXREYXR1bShvcHRzLnN0cmVhbWluZyk7 CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnR3b3BoYXNlc3RhdGUgLSAxXSA9CiAJ CUNoYXJHZXREYXR1bShvcHRzLnR3b3BoYXNlID8KIAkJCQkJIExPR0lDQUxSRVBfVFdPUEhBU0Vf U1RBVEVfUEVORElORyA6CkBAIC0xMDk5LDcgKzEwOTksNyBAQCBBbHRlclN1YnNjcmlwdGlvbihQ YXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCQlpZiAo SXNTZXQob3B0cy5zcGVjaWZpZWRfb3B0cywgU1VCT1BUX1NUUkVBTUlORykpCiAJCQkJewogCQkJ CQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0gPQotCQkJCQkJQm9v bEdldERhdHVtKG9wdHMuc3RyZWFtaW5nKTsKKwkJCQkJCUNoYXJHZXREYXR1bShvcHRzLnN0cmVh bWluZyk7CiAJCQkJCXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFd ID0gdHJ1ZTsKIAkJCQl9CiAKQEAgLTIxMjgsMyArMjEyOCw2MCBAQCBtZXJnZV9wdWJsaWNhdGlv bnMoTGlzdCAqb2xkcHVibGlzdCwgTGlzdCAqbmV3cHVibGlzdCwgYm9vbCBhZGRwdWIsIGNvbnN0 IGNoYXIgKgogCiAJcmV0dXJuIG9sZHB1Ymxpc3Q7CiB9CisKKy8qCisgKiBFeHRyYWN0IHRoZSBz dHJlYW1pbmcgbW9kZSB2YWx1ZSBmcm9tIGEgRGVmRWxlbS4gIFRoaXMgaXMgbGlrZQorICogZGVm R2V0Qm9vbGVhbigpIGJ1dCBhbHNvIGFjY2VwdHMgdGhlIHNwZWNpYWwgdmFsdWUgb2YgInBhcmFs bGVsIi4KKyAqLworY2hhcgorZGVmR2V0U3RyZWFtaW5nTW9kZShEZWZFbGVtICpkZWYpCit7CisJ LyoKKwkgKiBJZiBubyBwYXJhbWV0ZXIgdmFsdWUgZ2l2ZW4sIGFzc3VtZSAidHJ1ZSIgaXMgbWVh bnQuCisJICovCisJaWYgKCFkZWYtPmFyZykKKwkJcmV0dXJuIExPR0lDQUxSRVBfU1RSRUFNX09O OworCisJLyoKKwkgKiBBbGxvdyAwLCAxLCAiZmFsc2UiLCAidHJ1ZSIsICJvZmYiLCAib24iIG9y ICJwYXJhbGxlbCIuCisJICovCisJc3dpdGNoIChub2RlVGFnKGRlZi0+YXJnKSkKKwl7CisJCWNh c2UgVF9JbnRlZ2VyOgorCQkJc3dpdGNoIChpbnRWYWwoZGVmLT5hcmcpKQorCQkJeworCQkJCWNh c2UgMDoKKwkJCQkJcmV0dXJuIExPR0lDQUxSRVBfU1RSRUFNX09GRjsKKwkJCQljYXNlIDE6CisJ CQkJCXJldHVybiBMT0dJQ0FMUkVQX1NUUkVBTV9PTjsKKwkJCQlkZWZhdWx0OgorCQkJCQkvKiBv dGhlcndpc2UsIGVycm9yIG91dCBiZWxvdyAqLworCQkJCQlicmVhazsKKwkJCX0KKwkJCWJyZWFr OworCQlkZWZhdWx0OgorCQkJeworCQkJCWNoYXIJICAgKnN2YWwgPSBkZWZHZXRTdHJpbmcoZGVm KTsKKworCQkJCS8qCisJCQkJICogVGhlIHNldCBvZiBzdHJpbmdzIGFjY2VwdGVkIGhlcmUgc2hv dWxkIG1hdGNoIHVwIHdpdGggdGhlCisJCQkJICogZ3JhbW1hcidzIG9wdF9ib29sZWFuX29yX3N0 cmluZyBwcm9kdWN0aW9uLgorCQkJCSAqLworCQkJCWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJm YWxzZSIpID09IDAgfHwKKwkJCQkJcGdfc3RyY2FzZWNtcChzdmFsLCAib2ZmIikgPT0gMCkKKwkJ CQkJcmV0dXJuIExPR0lDQUxSRVBfU1RSRUFNX09GRjsKKwkJCQlpZiAocGdfc3RyY2FzZWNtcChz dmFsLCAidHJ1ZSIpID09IDAgfHwKKwkJCQkJcGdfc3RyY2FzZWNtcChzdmFsLCAib24iKSA9PSAw KQorCQkJCQlyZXR1cm4gTE9HSUNBTFJFUF9TVFJFQU1fT047CisJCQkJaWYgKHBnX3N0cmNhc2Vj bXAoc3ZhbCwgInBhcmFsbGVsIikgPT0gMCkKKwkJCQkJcmV0dXJuIExPR0lDQUxSRVBfU1RSRUFN X1BBUkFMTEVMOworCQkJfQorCQkJYnJlYWs7CisJfQorCisJZXJlcG9ydChFUlJPUiwKKwkJCShl cnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCSBlcnJtc2coIiVzIHJlcXVpcmVzIGEg Qm9vbGVhbiB2YWx1ZSBvciBcInBhcmFsbGVsXCIiLAorCQkJCQlkZWYtPmRlZm5hbWUpKSk7CisJ cmV0dXJuIExPR0lDQUxSRVBfU1RSRUFNX09GRjsJLyoga2VlcCBjb21waWxlciBxdWlldCAqLwor fQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jIGIvc3JjL2JhY2tlbmQvbGli cHEvcHFtcS5jCmluZGV4IDc2NmVjYTkuLjM5ZTc3ZWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2xpYnBxL3BxbXEuYworKysgYi9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMKQEAgLTEzLDExICsx MywxMyBAQAogCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgImFjY2Vzcy9wYXJh bGxlbC5oIgogI2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3Jt YXQuaCIKICNpbmNsdWRlICJsaWJwcS9wcW1xLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAj aW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5o IgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5o IgogCkBAIC0xNjIsOSArMTY0LDE5IEBAIG1xX3B1dG1lc3NhZ2UoY2hhciBtc2d0eXBlLCBjb25z dCBjaGFyICpzLCBzaXplX3QgbGVuKQogCQlyZXN1bHQgPSBzaG1fbXFfc2VuZHYocHFfbXFfaGFu ZGxlLCBpb3YsIDIsIHRydWUsIHRydWUpOwogCiAJCWlmIChwcV9tcV9wYXJhbGxlbF9sZWFkZXJf cGlkICE9IDApCi0JCQlTZW5kUHJvY1NpZ25hbChwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcGlkLAot CQkJCQkJICAgUFJPQ1NJR19QQVJBTExFTF9NRVNTQUdFLAotCQkJCQkJICAgcHFfbXFfcGFyYWxs ZWxfbGVhZGVyX2JhY2tlbmRfaWQpOworCQl7CisJCQlpZiAoSXNMb2dpY2FsUGFyYWxsZWxBcHBs eVdvcmtlcigpKQorCQkJCVNlbmRQcm9jU2lnbmFsKHBxX21xX3BhcmFsbGVsX2xlYWRlcl9waWQs CisJCQkJCQkJICAgUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdFLAorCQkJCQkJCSAgIHBx X21xX3BhcmFsbGVsX2xlYWRlcl9iYWNrZW5kX2lkKTsKKwkJCWVsc2UKKwkJCXsKKwkJCQlBc3Nl cnQoSXNQYXJhbGxlbFdvcmtlcigpKTsKKwkJCQlTZW5kUHJvY1NpZ25hbChwcV9tcV9wYXJhbGxl bF9sZWFkZXJfcGlkLAorCQkJCQkJCSAgIFBST0NTSUdfUEFSQUxMRUxfTUVTU0FHRSwKKwkJCQkJ CQkgICBwcV9tcV9wYXJhbGxlbF9sZWFkZXJfYmFja2VuZF9pZCk7CisJCQl9CisJCX0KIAogCQlp ZiAocmVzdWx0ICE9IFNITV9NUV9XT1VMRF9CTE9DSykKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9iZ3dvcmtlci5jCmluZGV4IDZmOGUzNDQ1Li5lN2E0YTcxIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9i Z3dvcmtlci5jCkBAIC0xMjgsNiArMTI4LDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdAogCX0sCiAJ ewogCQkiQXBwbHlXb3JrZXJNYWluIiwgQXBwbHlXb3JrZXJNYWluCisJfSwKKwl7CisJCSJQYXJh bGxlbEFwcGx5V29ya2VyTWFpbiIsIFBhcmFsbGVsQXBwbHlXb3JrZXJNYWluCiAJfQogfTsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuYyBiL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvaW50ZXJydXB0LmMKaW5kZXggMmVlODk2Zi4uNmQ0YmQ3NiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuYworKysgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2ludGVycnVwdC5jCkBAIC05OCw4ICs5OCw5IEBAIFNpZ25hbEhhbmRsZXJG b3JDcmFzaEV4aXQoU0lHTkFMX0FSR1MpCiAgKiBzaHV0IGRvd24gYW5kIGV4aXQuCiAgKgogICog VHlwaWNhbGx5LCB0aGlzIGhhbmRsZXIgd291bGQgYmUgdXNlZCBmb3IgU0lHVEVSTSwgYnV0IHNv bWUgcHJvY2Vzc2VzIHVzZQotICogb3RoZXIgc2lnbmFscy4gSW4gcGFydGljdWxhciwgdGhlIGNo ZWNrcG9pbnRlciBleGl0cyBvbiBTSUdVU1IyLCBhbmQgdGhlCi0gKiBXQUwgd3JpdGVyIGV4aXRz IG9uIGVpdGhlciBTSUdJTlQgb3IgU0lHVEVSTS4KKyAqIG90aGVyIHNpZ25hbHMuIEluIHBhcnRp Y3VsYXIsIHRoZSBjaGVja3BvaW50ZXIgZXhpdHMgb24gU0lHVVNSMiwgYW5kIHRoZSBXQUwKKyAq IHdyaXRlciBhbmQgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2Vy IGV4aXRzIG9uIGVpdGhlcgorICogU0lHSU5UIG9yIFNJR1RFUk0uCiAgKgogICogU2h1dGRvd25S ZXF1ZXN0UGVuZGluZyBzaG91bGQgYmUgY2hlY2tlZCBhdCBhIGNvbnZlbmllbnQgcGxhY2Ugd2l0 aGluIHRoZQogICogbWFpbiBsb29wLCBvciBlbHNlIHRoZSBtYWluIGxvb3Agc2hvdWxkIGNhbGwg SGFuZGxlTWFpbkxvb3BJbnRlcnJ1cHRzLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYwppbmRleCAyMTlj ZDczLi5jNDBjNjIyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdh bHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYwpAQCAtNDQzLDkgKzQ0Myw5IEBA IGxpYnBxcmN2X3N0YXJ0c3RyZWFtaW5nKFdhbFJlY2VpdmVyQ29ubiAqY29ubiwKIAkJYXBwZW5k U3RyaW5nSW5mbygmY21kLCAicHJvdG9fdmVyc2lvbiAnJXUnIiwKIAkJCQkJCSBvcHRpb25zLT5w cm90by5sb2dpY2FsLnByb3RvX3ZlcnNpb24pOwogCi0JCWlmIChvcHRpb25zLT5wcm90by5sb2dp Y2FsLnN0cmVhbWluZyAmJgotCQkJUFFzZXJ2ZXJWZXJzaW9uKGNvbm4tPnN0cmVhbUNvbm4pID49 IDE0MDAwMCkKLQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwgIiwgc3RyZWFtaW5nICdv biciKTsKKwkJaWYgKG9wdGlvbnMtPnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nX3N0cikKKwkJCWFw cGVuZFN0cmluZ0luZm8oJmNtZCwgIiwgc3RyZWFtaW5nICclcyciLAorCQkJCQkJCSBvcHRpb25z LT5wcm90by5sb2dpY2FsLnN0cmVhbWluZ19zdHIpOwogCiAJCWlmIChvcHRpb25zLT5wcm90by5s b2dpY2FsLnR3b3BoYXNlICYmCiAJCQlQUXNlcnZlclZlcnNpb24oY29ubi0+c3RyZWFtQ29ubikg Pj0gMTUwMDAwKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9N YWtlZmlsZSBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUKaW5kZXgg YzRlMmZkZS4uMmRjMjVlMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2Vm aWxlCkBAIC0xNSw2ICsxNSw3IEBAIGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmls ZS5nbG9iYWwKIG92ZXJyaWRlIENQUEZMQUdTIDo9IC1JJChzcmNkaXIpICQoQ1BQRkxBR1MpCiAK IE9CSlMgPSBcCisJYXBwbHlwYXJhbGxlbHdvcmtlci5vIFwKIAlkZWNvZGUubyBcCiAJbGF1bmNo ZXIubyBcCiAJbG9naWNhbC5vIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uMWIzYjc0MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCkBAIC0wLDAgKzEsMTYzMCBAQAorLyot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKiBhcHBseXBhcmFsbGVsd29ya2VyLmMKKyAqCSAgIFN1cHBvcnQg cm91dGluZXMgZm9yIGFwcGx5aW5nIHhhY3QgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyCisgKgor ICogQ29weXJpZ2h0IChjKSAyMDIzLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91 cAorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCisgKgorICogVGhpcyBmaWxlIGNvbnRhaW5zIHRo ZSBjb2RlIHRvIGxhdW5jaCwgc2V0IHVwLCBhbmQgdGVhcmRvd24gYSBwYXJhbGxlbCBhcHBseQor ICogd29ya2VyIHdoaWNoIHJlY2VpdmVzIHRoZSBjaGFuZ2VzIGZyb20gdGhlIGxlYWRlciB3b3Jr ZXIgYW5kIGludm9rZXMgcm91dGluZXMKKyAqIHRvIGFwcGx5IHRob3NlIG9uIHRoZSBzdWJzY3Jp YmVyIGRhdGFiYXNlLiBBZGRpdGlvbmFsbHksIHRoaXMgZmlsZSBjb250YWlucworICogcm91dGlu ZXMgdGhhdCBhcmUgaW50ZW5kZWQgdG8gc3VwcG9ydCBzZXR0aW5nIHVwLCB1c2luZywgYW5kIHRl YXJpbmcgZG93biBhCisgKiBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyB3aGljaCBpcyByZXF1aXJl ZCBzbyB0aGUgbGVhZGVyIHdvcmtlciBhbmQgcGFyYWxsZWwKKyAqIGFwcGx5IHdvcmtlcnMgY2Fu IGNvbW11bmljYXRlIHdpdGggZWFjaCBvdGhlci4KKyAqCisgKiBUaGUgcGFyYWxsZWwgYXBwbHkg d29ya2VycyBhcmUgYXNzaWduZWQgKGlmIGF2YWlsYWJsZSkgYXMgc29vbiBhcyB4YWN0J3MKKyAq IGZpcnN0IHN0cmVhbSBpcyByZWNlaXZlZCBmb3Igc3Vic2NyaXB0aW9ucyB0aGF0IGhhdmUgc2V0 IHRoZWlyICdzdHJlYW1pbmcnCisgKiBvcHRpb24gYXMgcGFyYWxsZWwuIFRoZSBsZWFkZXIgYXBw bHkgd29ya2VyIHdpbGwgc2VuZCBjaGFuZ2VzIHRvIHRoaXMgbmV3CisgKiB3b3JrZXIgdmlhIHNo YXJlZCBtZW1vcnkuIFdlIGtlZXAgdGhpcyB3b3JrZXIgYXNzaWduZWQgdGlsbCB0aGUgdHJhbnNh Y3Rpb24KKyAqIGNvbW1pdCBpcyByZWNlaXZlZCBhbmQgYWxzbyB3YWl0IGZvciB0aGUgd29ya2Vy IHRvIGZpbmlzaCBhdCBjb21taXQuIFRoaXMKKyAqIHByZXNlcnZlcyBjb21taXQgb3JkZXJpbmcg YW5kIGF2b2lkIGZpbGUgSS9PIGluIG1vc3QgY2FzZXMsIGFsdGhvdWdoIHdlCisgKiBzdGlsbCBu ZWVkIHRvIHNwaWxsIHRvIGEgZmlsZSBpZiB0aGVyZSBpcyBubyB3b3JrZXIgYXZhaWxhYmxlLiBT ZWUgY29tbWVudHMKKyAqIGF0b3AgbG9naWNhbC93b3JrZXIgdG8ga25vdyBtb3JlIGFib3V0IHN0 cmVhbWVkIHhhY3RzIHdob3NlIGNoYW5nZXMgYXJlCisgKiBzcGlsbGVkIHRvIGRpc2suIEl0IGlz IGltcG9ydGFudCB0byBtYWludGFpbiBjb21taXQgb3JkZXIgdG8gYXZvaWQgZmFpbHVyZXMKKyAq IGR1ZSB0bzogKGEpIHRyYW5zYWN0aW9uIGRlcGVuZGVuY2llcyAtIHNheSBpZiB3ZSBpbnNlcnQg YSByb3cgaW4gdGhlIGZpcnN0CisgKiB0cmFuc2FjdGlvbiBhbmQgdXBkYXRlIGl0IGluIHRoZSBz ZWNvbmQgdHJhbnNhY3Rpb24gb24gcHVibGlzaGVyIHRoZW4KKyAqIGFsbG93aW5nIHRoZSBzdWJz Y3JpYmVyIHRvIGFwcGx5IGJvdGggaW4gcGFyYWxsZWwgY2FuIGxlYWQgdG8gZmFpbHVyZSBpbiB0 aGUKKyAqIHVwZGF0ZTsgKGIpIGRlYWRsb2NrcyAtIGFsbG93aW5nIHRyYW5zYWN0aW9ucyB0aGF0 IHVwZGF0ZSB0aGUgc2FtZSBzZXQgb2YKKyAqIHJvd3MvdGFibGVzIGluIHRoZSBvcHBvc2l0ZSBv cmRlciB0byBiZSBhcHBsaWVkIGluIHBhcmFsbGVsIGNhbiBsZWFkIHRvCisgKiBkZWFkbG9ja3Mu CisgKgorICogQSB3b3JrZXIgcG9vbCBpcyB1c2VkIHRvIGF2b2lkIHJlc3RhcnRpbmcgd29ya2Vy cyBmb3IgZWFjaCBzdHJlYW1pbmcKKyAqIHRyYW5zYWN0aW9uLiBXZSBtYWludGFpbiBlYWNoIHdv cmtlcidzIGluZm9ybWF0aW9uIChQYXJhbGxlbEFwcGx5V29ya2VySW5mbykKKyAqIGluIHRoZSBQ YXJhbGxlbEFwcGx5V29ya2VyUG9vbC4gQWZ0ZXIgc3VjY2Vzc2Z1bGx5IGxhdW5jaGluZyBhIG5l dyB3b3JrZXIsCisgKiBpdHMgaW5mb3JtYXRpb24gaXMgYWRkZWQgdG8gdGhlIFBhcmFsbGVsQXBw bHlXb3JrZXJQb29sLiBPbmNlIHRoZSB3b3JrZXIKKyAqIGZpbmlzaGVzIGFwcGx5aW5nIHRoZSB0 cmFuc2FjdGlvbiwgaXQgaXMgbWFya2VkIGFzIGF2YWlsYWJsZSBmb3IgcmUtdXNlLgorICogTm93 LCBiZWZvcmUgc3RhcnRpbmcgYSBuZXcgd29ya2VyIHRvIGFwcGx5IHRoZSBzdHJlYW1pbmcgdHJh bnNhY3Rpb24sIHdlCisgKiBjaGVjayB0aGUgbGlzdCBmb3IgYW55IGF2YWlsYWJsZSB3b3JrZXIu IE5vdGUgdGhhdCB3ZSByZXRhaW4gYSBtYXhpbXVtIG9mCisgKiBoYWxmIHRoZSBtYXhfcGFyYWxs ZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIHdvcmtlcnMgaW4gdGhlIHBvb2wgYW5k CisgKiBhZnRlciB0aGF0LCB3ZSBzaW1wbHkgZXhpdCB0aGUgd29ya2VyIGFmdGVyIGFwcGx5aW5n IHRoZSB0cmFuc2FjdGlvbi4KKyAqCisgKiBYWFggVGhpcyB3b3JrZXIgcG9vbCB0aHJlc2hvbGQg aXMgYXJiaXRyYXJ5IGFuZCB3ZSBjYW4gcHJvdmlkZSBhIEdVQworICogdmFyaWFibGUgZm9yIHRo aXMgaW4gdGhlIGZ1dHVyZSBpZiByZXF1aXJlZC4KKyAqCisgKiBUaGUgbGVhZGVyIGFwcGx5IHdv cmtlciB3aWxsIGNyZWF0ZSBhIHNlcGFyYXRlIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50 CisgKiB3aGVuIGVhY2ggcGFyYWxsZWwgYXBwbHkgd29ya2VyIHN0YXJ0cy4gVGhlIHJlYXNvbiBm b3IgdGhpcyBkZXNpZ24gaXMgdGhhdAorICogd2UgY2Fubm90IHByZWRpY3QgaG93IG1hbnkgd29y a2VycyB3aWxsIGJlIG5lZWRlZC4gSXQgbWF5IGJlIHBvc3NpYmxlIHRvCisgKiBhbGxvY2F0ZSBl bm91Z2ggc2hhcmVkIG1lbW9yeSBpbiBvbmUgc2VnbWVudCBiYXNlZCBvbiB0aGUgbWF4aW11bSBu dW1iZXIgb2YKKyAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgKG1heF9wYXJhbGxlbF9hcHBseV93 b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24pLCBidXQKKyAqIHRoaXMgd291bGQgd2FzdGUgbWVtb3J5 IGlmIG5vIHByb2Nlc3MgaXMgYWN0dWFsbHkgc3RhcnRlZC4KKyAqCisgKiBUaGUgZHluYW1pYyBz aGFyZWQgbWVtb3J5IHNlZ21lbnQgY29udGFpbnM6IChhKSBhIHNobV9tcSB0aGF0IGlzIHVzZWQg dG8KKyAqIHNlbmQgY2hhbmdlcyBpbiB0aGUgdHJhbnNhY3Rpb24gZnJvbSBsZWFkZXIgYXBwbHkg d29ya2VyIHRvIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXI7IChiKSBhbm90aGVyIHNobV9tcSB0 aGF0IGlzIHVzZWQgdG8gc2VuZCBlcnJvcnMgKGFuZCBvdGhlciBtZXNzYWdlcworICogcmVwb3J0 ZWQgdmlhIGVsb2cvZXJlcG9ydCkgZnJvbSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHRvIGxl YWRlciBhcHBseQorICogd29ya2VyOyAoYykgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIHRvIGJlIHNo YXJlZCBhbW9uZyBwYXJhbGxlbCBhcHBseSB3b3JrZXJzCisgKiBhbmQgdGhlIGxlYWRlciBhcHBs eSB3b3JrZXIgKGkuZS4gbWVtYmVycyBvZiBQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkKS4KKyAq CisgKiBMb2NraW5nIENvbnNpZGVyYXRpb25zCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg KiBXZSBoYXZlIGEgcmlzayBvZiBkZWFkbG9jayBkdWUgdG8gY29uY3VycmVudGx5IGFwcGx5aW5n IHRoZSB0cmFuc2FjdGlvbnMgaW4KKyAqIHBhcmFsbGVsIG1vZGUgdGhhdCB3ZXJlIGluZGVwZW5k ZW50IG9uIHRoZSBwdWJsaXNoZXIgc2lkZSBidXQgYmVjYW1lCisgKiBkZXBlbmRlbnQgb24gdGhl IHN1YnNjcmliZXIgc2lkZSBkdWUgdG8gdGhlIGRpZmZlcmVudCBkYXRhYmFzZSBzdHJ1Y3R1cmVz CisgKiAobGlrZSBzY2hlbWEgb2Ygc3Vic2NyaXB0aW9uIHRhYmxlcywgY29uc3RyYWludHMsIGV0 Yy4pIG9uIGVhY2ggc2lkZS4gVGhpcworICogY2FuIGhhcHBlbiBldmVuIHdpdGhvdXQgcGFyYWxs ZWwgbW9kZSB3aGVuIHRoZXJlIGFyZSBjb25jdXJyZW50IG9wZXJhdGlvbnMKKyAqIG9uIHRoZSBz dWJzY3JpYmVyLiBJbiBvcmRlciB0byBkZXRlY3QgdGhlIGRlYWRsb2NrcyBhbW9uZyBsZWFkZXIg KExBKSBhbmQKKyAqIHBhcmFsbGVsIGFwcGx5IChQQSkgd29ya2Vycywgd2UgdXNlZCBsbWdyIGxv Y2tzIHdoZW4gdGhlIFBBIHdhaXRzIGZvciB0aGUKKyAqIG5leHQgc3RyZWFtIChzZXQgb2YgY2hh bmdlcykgYW5kIExBIHdhaXRzIGZvciBQQSB0byBmaW5pc2ggdGhlIHRyYW5zYWN0aW9uLgorICog QW4gYWx0ZXJuYXRpdmUgYXBwcm9hY2ggY291bGQgYmUgdG8gbm90IGFsbG93IHBhcmFsbGVsaXNt IHdoZW4gdGhlIHNjaGVtYSBvZgorICogdGFibGVzIGlzIGRpZmZlcmVudCBiZXR3ZWVuIHRoZSBw dWJsaXNoZXIgYW5kIHN1YnNjcmliZXIgYnV0IHRoYXQgd291bGQgYmUKKyAqIHRvbyByZXN0cmlj dGl2ZSBhbmQgd291bGQgcmVxdWlyZSB0aGUgcHVibGlzaGVyIHRvIHNlbmQgbXVjaCBtb3JlCisg KiBpbmZvcm1hdGlvbiB0aGFuIGl0IGlzIGN1cnJlbnRseSBzZW5kaW5nLgorICoKKyAqIENvbnNp ZGVyIGEgY2FzZSB3aGVyZSB0aGUgc3Vic2NyaWJlZCB0YWJsZSBkb2VzIG5vdCBoYXZlIGEgdW5p cXVlIGtleSBvbiB0aGUKKyAqIHB1Ymxpc2hlciBhbmQgaGFzIGEgdW5pcXVlIGtleSBvbiB0aGUg c3Vic2NyaWJlci4gVGhlIGRlYWRsb2NrIGNhbiBoYXBwZW4gaW4KKyAqIHRoZSBmb2xsb3dpbmcg d2F5czoKKyAqCisgKiAxKSBEZWFkbG9jayBiZXR3ZWVuIHRoZSBsZWFkZXIgYXBwbHkgd29ya2Vy IGFuZCBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlcgorICoKKyAqIENvbnNpZGVyIHRoYXQgdGhlIHBh cmFsbGVsIGFwcGx5IHdvcmtlciAoUEEpIGlzIGV4ZWN1dGluZyBUWC0xIGFuZCB0aGUKKyAqIGxl YWRlciBhcHBseSB3b3JrZXIgKExBKSBpcyBleGVjdXRpbmcgVFgtMiBjb25jdXJyZW50bHkgb24g dGhlIHN1YnNjcmliZXIuCisgKiBOb3csIExBIGlzIHdhaXRpbmcgZm9yIFBBIGJlY2F1c2Ugb2Yg dGhlIHVuaXF1ZSBrZXkgY29uc3RyYWludCBvZiB0aGUKKyAqIHN1YnNjcmliZWQgdGFibGUgd2hp bGUgUEEgaXMgd2FpdGluZyBmb3IgTEEgdG8gc2VuZCB0aGUgbmV4dCBzdHJlYW0gb2YKKyAqIGNo YW5nZXMgb3IgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQgbWVzc2FnZS4KKyAqCisgKiBJbiBv cmRlciBmb3IgbG1nciB0byBkZXRlY3QgdGhpcywgd2UgaGF2ZSBMQSBhY3F1aXJlIGEgc2Vzc2lv biBsb2NrIG9uIHRoZQorICogcmVtb3RlIHRyYW5zYWN0aW9uIChieSBwYV9sb2NrX3N0cmVhbSgp KSBhbmQgaGF2ZSBQQSB3YWl0IG9uIHRoZSBsb2NrIGJlZm9yZQorICogdHJ5aW5nIHRvIHJlY2Vp dmUgdGhlIG5leHQgc3RyZWFtIG9mIGNoYW5nZXMuIFNwZWNpZmljYWxseSwgTEEgd2lsbCBhY3F1 aXJlCisgKiB0aGUgbG9jayBpbiBBY2Nlc3NFeGNsdXNpdmUgbW9kZSBiZWZvcmUgc2VuZGluZyB0 aGUgU1RSRUFNX1NUT1AgYW5kIHdpbGwKKyAqIHJlbGVhc2UgaXQgaWYgYWxyZWFkeSBhY3F1aXJl ZCBhZnRlciBzZW5kaW5nIHRoZSBTVFJFQU1fU1RBUlQsIFNUUkVBTV9BQk9SVAorICogKGZvciB0 b3BsZXZlbCB0cmFuc2FjdGlvbiksIFNUUkVBTV9QUkVQQVJFLCBhbmQgU1RSRUFNX0NPTU1JVC4g VGhlIFBBIHdpbGwKKyAqIGFjcXVpcmUgdGhlIGxvY2sgaW4gQWNjZXNzU2hhcmUgbW9kZSBhZnRl ciBwcm9jZXNzaW5nIFNUUkVBTV9TVE9QIGFuZAorICogU1RSRUFNX0FCT1JUIChmb3Igc3VidHJh bnNhY3Rpb24pIGFuZCB0aGVuIHJlbGVhc2UgdGhlIGxvY2sgaW1tZWRpYXRlbHkKKyAqIGFmdGVy IGFjcXVpcmluZyBpdC4KKyAqCisgKiBUaGUgbG9jayBncmFwaCBmb3IgdGhlIGFib3ZlIGV4YW1w bGUgd2lsbCBsb29rIGFzIGZvbGxvd3M6CisgKiBMQSAod2FpdGluZyB0byBhY3F1aXJlIHRoZSBs b2NrIG9uIHRoZSB1bmlxdWUgaW5kZXgpIC0+IFBBICh3YWl0aW5nIHRvCisgKiBhY3F1aXJlIHRo ZSBzdHJlYW0gbG9jaykgLT4gTEEKKyAqCisgKiBUaGlzIHdheSwgd2hlbiBQQSBpcyB3YWl0aW5n IGZvciBMQSBmb3IgdGhlIG5leHQgc3RyZWFtIG9mIGNoYW5nZXMsIHdlIGNhbgorICogaGF2ZSBh IHdhaXQtZWRnZSBmcm9tIFBBIHRvIExBIGluIGxtZ3IsIHdoaWNoIHdpbGwgbWFrZSB1cyBkZXRl Y3QgdGhlCisgKiBkZWFkbG9jayBiZXR3ZWVuIExBIGFuZCBQQS4KKyAqCisgKiAyKSBEZWFkbG9j ayBiZXR3ZWVuIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBwYXJhbGxlbCBhcHBseSB3b3Jr ZXJzCisgKgorICogVGhpcyBzY2VuYXJpbyBpcyBzaW1pbGFyIHRvIHRoZSBmaXJzdCBjYXNlIGJ1 dCBUWC0xIGFuZCBUWC0yIGFyZSBleGVjdXRlZCBieQorICogdHdvIHBhcmFsbGVsIGFwcGx5IHdv cmtlcnMgKFBBLTEgYW5kIFBBLTIgcmVzcGVjdGl2ZWx5KS4gSW4gdGhpcyBzY2VuYXJpbywKKyAq IFBBLTIgaXMgd2FpdGluZyBmb3IgUEEtMSB0byBjb21wbGV0ZSBpdHMgdHJhbnNhY3Rpb24gd2hp bGUgUEEtMSBpcyB3YWl0aW5nCisgKiBmb3Igc3Vic2VxdWVudCBpbnB1dCBmcm9tIExBLiBBbHNv LCBMQSBpcyB3YWl0aW5nIGZvciBQQS0yIHRvIGNvbXBsZXRlIGl0cworICogdHJhbnNhY3Rpb24g aW4gb3JkZXIgdG8gcHJlc2VydmUgdGhlIGNvbW1pdCBvcmRlci4gVGhlcmUgaXMgYSBkZWFkbG9j ayBhbW9uZworICogdGhlIHRocmVlIHByb2Nlc3Nlcy4KKyAqCisgKiBJbiBvcmRlciBmb3IgbG1n ciB0byBkZXRlY3QgdGhpcywgd2UgaGF2ZSBQQSBhY3F1aXJlIGEgc2Vzc2lvbiBsb2NrICh0aGlz IGlzCisgKiBhIGRpZmZlcmVudCBsb2NrIHRoYW4gcmVmZXJyZWQgaW4gdGhlIHByZXZpb3VzIGNh c2UsIHNlZQorICogcGFfbG9ja190cmFuc2FjdGlvbigpKSBvbiB0aGUgdHJhbnNhY3Rpb24gYmVp bmcgYXBwbGllZCBhbmQgaGF2ZSBMQSB3YWl0IG9uCisgKiB0aGUgbG9jayBiZWZvcmUgcHJvY2Vl ZGluZyBpbiB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmRzLiBTcGVjaWZpY2FsbHksCisg KiBQQSB3aWxsIGFjcXVpcmUgdGhpcyBsb2NrIGluIEFjY2Vzc0V4Y2x1c2l2ZSBtb2RlIGJlZm9y ZSBleGVjdXRpbmcgdGhlIGZpcnN0CisgKiBtZXNzYWdlIG9mIHRoZSB0cmFuc2FjdGlvbiBhbmQg cmVsZWFzZSBpdCBhdCB0aGUgeGFjdCBlbmQuIExBIHdpbGwgYWNxdWlyZQorICogdGhpcyBsb2Nr IGluIEFjY2Vzc1NoYXJlIG1vZGUgYXQgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmRzIGFuZCBy ZWxlYXNlIGl0CisgKiBpbW1lZGlhdGVseS4KKyAqCisgKiBUaGUgbG9jayBncmFwaCBmb3IgdGhl IGFib3ZlIGV4YW1wbGUgd2lsbCBsb29rIGFzIGZvbGxvd3M6CisgKiBMQSAod2FpdGluZyB0byBh Y3F1aXJlIHRoZSB0cmFuc2FjdGlvbiBsb2NrKSAtPiBQQS0yICh3YWl0aW5nIHRvIGFjcXVpcmUg dGhlCisgKiBsb2NrIGR1ZSB0byB1bmlxdWUgaW5kZXggY29uc3RyYWludCkgLT4gUEEtMSAod2Fp dGluZyB0byBhY3F1aXJlIHRoZSBzdHJlYW0KKyAqIGxvY2spIC0+IExBCisgKgorICogVGhpcyB3 YXkgd2hlbiBMQSBpcyB3YWl0aW5nIHRvIGZpbmlzaCB0aGUgdHJhbnNhY3Rpb24gZW5kIGNvbW1h bmQgdG8gcHJlc2VydmUKKyAqIHRoZSBjb21taXQgb3JkZXIsIHdlIHdpbGwgYmUgYWJsZSB0byBk ZXRlY3QgZGVhZGxvY2ssIGlmIGFueS4KKyAqCisgKiBPbmUgbWlnaHQgdGhpbmsgd2UgY2FuIHVz ZSBYYWN0TG9ja1RhYmxlV2FpdCgpLCBidXQgWGFjdExvY2tUYWJsZVdhaXQoKQorICogY29uc2lk ZXJzIFBSRVBBUkVEIFRSQU5TQUNUSU9OIGFzIHN0aWxsIGluIHByb2dyZXNzIHdoaWNoIG1lYW5z IHRoZSBsb2NrCisgKiB3b24ndCBiZSByZWxlYXNlZCBldmVuIGFmdGVyIHRoZSBwYXJhbGxlbCBh cHBseSB3b3JrZXIgaGFzIHByZXBhcmVkIHRoZQorICogdHJhbnNhY3Rpb24uCisgKgorICogMykg RGVhZGxvY2sgd2hlbiB0aGUgc2htX21xIGJ1ZmZlciBpcyBmdWxsCisgKgorICogSW4gdGhlIHBy ZXZpb3VzIHNjZW5hcmlvIChpZS4gUEEtMSBhbmQgUEEtMiBhcmUgZXhlY3V0aW5nIHRyYW5zYWN0 aW9ucworICogY29uY3VycmVudGx5KSwgaWYgdGhlIHNobV9tcSBidWZmZXIgYmV0d2VlbiBMQSBh bmQgUEEtMiBpcyBmdWxsLCBMQSBoYXMgdG8KKyAqIHdhaXQgdG8gc2VuZCBtZXNzYWdlcywgYW5k IHRoaXMgd2FpdCBkb2Vzbid0IGFwcGVhciBpbiBsbWdyLgorICoKKyAqIFRvIGF2b2lkIHRoaXMg d2FpdCwgd2UgdXNlIGEgbm9uLWJsb2NraW5nIHdyaXRlIGFuZCB3YWl0IHdpdGggYSB0aW1lb3V0 LiBJZgorICogdGhlIHRpbWVvdXQgaXMgZXhjZWVkZWQsIHRoZSBMQSB3aWxsIHNlcmlhbGl6ZSBh bGwgdGhlIHBlbmRpbmcgbWVzc2FnZXMgdG8KKyAqIGEgZmlsZSBhbmQgaW5kaWNhdGUgUEEtMiB0 aGF0IGl0IG5lZWRzIHRvIHJlYWQgdGhhdCBmaWxlIGZvciB0aGUgcmVtYWluaW5nCisgKiBtZXNz YWdlcy4gVGhlbiBMQSB3aWxsIHN0YXJ0IHdhaXRpbmcgZm9yIGNvbW1pdCBhcyBpbiB0aGUgcHJl dmlvdXMgY2FzZQorICogd2hpY2ggd2lsbCBkZXRlY3QgZGVhZGxvY2sgaWYgYW55LiBTZWUgcGFf c2VuZF9kYXRhKCkgYW5kCisgKiBlbnVtIFRyYW5zQXBwbHlBY3Rpb24uCisgKgorICogTG9jayB0 eXBlcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogQm90aCB0aGUgc3RyZWFtIGxvY2sg YW5kIHRoZSB0cmFuc2FjdGlvbiBsb2NrIG1lbnRpb25lZCBhYm92ZSBhcmUKKyAqIHNlc3Npb24t bGV2ZWwgbG9ja3MgYmVjYXVzZSBib3RoIGxvY2tzIGNvdWxkIGJlIGFjcXVpcmVkIG91dHNpZGUg dGhlCisgKiB0cmFuc2FjdGlvbiwgYW5kIHRoZSBzdHJlYW0gbG9jayBpbiB0aGUgbGVhZGVyIG5l ZWRzIHRvIHBlcnNpc3QgYWNyb3NzCisgKiB0cmFuc2FjdGlvbiBib3VuZGFyaWVzIGkuZS4gdW50 aWwgdGhlIGVuZCBvZiB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgorICotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJsaWJwcS9wcWZv cm1hdC5oIgorI2luY2x1ZGUgImxpYnBxL3BxbXEuaCIKKyNpbmNsdWRlICJwZ3N0YXQuaCIKKyNp bmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xv Z2ljYWxsYXVuY2hlci5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIK KyNpbmNsdWRlICJyZXBsaWNhdGlvbi9vcmlnaW4uaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi93 b3JrZXJfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgorI2luY2x1ZGUgInN0 b3JhZ2UvbG1nci5oIgorI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKKyNpbmNsdWRlICJ1dGls cy9pbnZhbC5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMv c3lzY2FjaGUuaCIKKworI2RlZmluZSBQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJQyAweDc4N2Nh MDY3CisKKy8qCisgKiBEU00ga2V5cyBmb3IgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBVbmxpa2Ug b3RoZXIgcGFyYWxsZWwgZXhlY3V0aW9uIGNvZGUsCisgKiBzaW5jZSB3ZSBkb24ndCBuZWVkIHRv IHdvcnJ5IGFib3V0IERTTSBrZXlzIGNvbmZsaWN0aW5nIHdpdGggcGxhbl9ub2RlX2lkIHdlCisg KiBjYW4gdXNlIHNtYWxsIGludGVnZXJzLgorICovCisjZGVmaW5lIFBBUkFMTEVMX0FQUExZX0tF WV9TSEFSRUQJCTEKKyNkZWZpbmUgUEFSQUxMRUxfQVBQTFlfS0VZX01RCQkJMgorI2RlZmluZSBQ QVJBTExFTF9BUFBMWV9LRVlfRVJST1JfUVVFVUUJMworCisvKiBRdWV1ZSBzaXplIG9mIERTTSwg MTYgTUIgZm9yIG5vdy4gKi8KKyNkZWZpbmUgRFNNX1FVRVVFX1NJWkUJKDE2ICogMTAyNCAqIDEw MjQpCisKKy8qCisgKiBFcnJvciBxdWV1ZSBzaXplIG9mIERTTS4gSXQgaXMgZGVzaXJhYmxlIHRv IG1ha2UgaXQgbGFyZ2UgZW5vdWdoIHRoYXQgYQorICogdHlwaWNhbCBFcnJvclJlc3BvbnNlIGNh biBiZSBzZW50IHdpdGhvdXQgYmxvY2tpbmcuIFRoYXQgd2F5LCBhIHdvcmtlciB0aGF0CisgKiBl cnJvcnMgb3V0IGNhbiB3cml0ZSB0aGUgd2hvbGUgbWVzc2FnZSBpbnRvIHRoZSBxdWV1ZSBhbmQg dGVybWluYXRlIHdpdGhvdXQKKyAqIHdhaXRpbmcgZm9yIHRoZSB1c2VyIGJhY2tlbmQuCisgKi8K KyNkZWZpbmUgRFNNX0VSUk9SX1FVRVVFX1NJWkUJCQkoMTYgKiAxMDI0KQorCisvKgorICogVGhl cmUgYXJlIHRocmVlIGZpZWxkcyBpbiBlYWNoIG1lc3NhZ2UgcmVjZWl2ZWQgYnkgdGhlIHBhcmFs bGVsIGFwcGx5CisgKiB3b3JrZXI6IHN0YXJ0X2xzbiwgZW5kX2xzbiBhbmQgc2VuZF90aW1lLiBC ZWNhdXNlIHdlIGhhdmUgdXBkYXRlZCB0aGVzZQorICogc3RhdGlzdGljcyBpbiB0aGUgbGVhZGVy IGFwcGx5IHdvcmtlciwgd2UgY2FuIGlnbm9yZSB0aGVzZSBmaWVsZHMgaW4gdGhlCisgKiBwYXJh bGxlbCBhcHBseSB3b3JrZXIgKHNlZSBmdW5jdGlvbiBMb2dpY2FsUmVwQXBwbHlMb29wKS4KKyAq LworI2RlZmluZSBTSVpFX1NUQVRTX01FU1NBR0UgKDIgKiBzaXplb2YoWExvZ1JlY1B0cikgKyBz aXplb2YoVGltZXN0YW1wVHopKQorCisvKgorICogVGhlIHR5cGUgb2Ygc2Vzc2lvbi1sZXZlbCBs b2NrIG9uIGEgdHJhbnNhY3Rpb24gYmVpbmcgYXBwbGllZCBvbiBhIGxvZ2ljYWwKKyAqIHJlcGxp Y2F0aW9uIHN1YnNjcmliZXIuCisgKi8KKyNkZWZpbmUgUEFSQUxMRUxfQVBQTFlfTE9DS19TVFJF QU0JMAorI2RlZmluZSBQQVJBTExFTF9BUFBMWV9MT0NLX1hBQ1QJMQorCisvKgorICogSGFzaCB0 YWJsZSBlbnRyeSB0byBtYXAgeGlkIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgc3RhdGUu CisgKi8KK3R5cGVkZWYgc3RydWN0IFBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeQoreworCVRyYW5z YWN0aW9uSWQgeGlkOwkJCS8qIEhhc2gga2V5IC0tIG11c3QgYmUgZmlyc3QgKi8KKwlQYXJhbGxl bEFwcGx5V29ya2VySW5mbyAqd2luZm87Cit9IFBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeTsKKwor LyoKKyAqIEEgaGFzaCB0YWJsZSB1c2VkIHRvIGNhY2hlIHRoZSBzdGF0ZSBvZiBzdHJlYW1pbmcg dHJhbnNhY3Rpb25zIGJlaW5nIGFwcGxpZWQKKyAqIGJ5IHRoZSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXJzLgorICovCitzdGF0aWMgSFRBQiAqUGFyYWxsZWxBcHBseVR4bkhhc2ggPSBOVUxMOworCisv KgorKiBBIGxpc3QgKHBvb2wpIG9mIGFjdGl2ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLiBUaGUg aW5mb3JtYXRpb24gZm9yCisqIHRoZSBuZXcgd29ya2VyIGlzIGFkZGVkIHRvIHRoZSBsaXN0IGFm dGVyIHN1Y2Nlc3NmdWxseSBsYXVuY2hpbmcgaXQuIFRoZQorKiBsaXN0IGVudHJ5IGlzIHJlbW92 ZWQgaWYgdGhlcmUgYXJlIGFscmVhZHkgZW5vdWdoIHdvcmtlcnMgaW4gdGhlIHdvcmtlcgorKiBw b29sIGF0IHRoZSBlbmQgb2YgdGhlIHRyYW5zYWN0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBh Ym91dCB0aGUgd29ya2VyCisqIHBvb2wsIHNlZSBjb21tZW50cyBhdG9wIHRoaXMgZmlsZS4KKyAq Lworc3RhdGljIExpc3QgKlBhcmFsbGVsQXBwbHlXb3JrZXJQb29sID0gTklMOworCisvKgorICog SW5mb3JtYXRpb24gc2hhcmVkIGJldHdlZW4gbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgcGFyYWxs ZWwgYXBwbHkgd29ya2VyLgorICovCitQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpNeVBhcmFs bGVsU2hhcmVkID0gTlVMTDsKKworLyoKKyAqIElzIHRoZXJlIGEgbWVzc2FnZSBzZW50IGJ5IGEg cGFyYWxsZWwgYXBwbHkgd29ya2VyIHRoYXQgdGhlIGxlYWRlciBhcHBseQorICogd29ya2VyIG5l ZWRzIHRvIHJlY2VpdmU/CisgKi8KK3ZvbGF0aWxlIHNpZ19hdG9taWNfdCBQYXJhbGxlbEFwcGx5 TWVzc2FnZVBlbmRpbmcgPSBmYWxzZTsKKworLyoKKyAqIENhY2hlIHRoZSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIgaW5mb3JtYXRpb24gcmVxdWlyZWQgZm9yIGFwcGx5aW5nIHRoZQorICogY3VycmVu dCBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uIEl0IGlzIHVzZWQgdG8gc2F2ZSB0aGUgY29zdCBvZiBz ZWFyY2hpbmcgdGhlCisgKiBoYXNoIHRhYmxlIHdoZW4gYXBwbHlpbmcgdGhlIGNoYW5nZXMgYmV0 d2VlbiBTVFJFQU1fU1RBUlQgYW5kIFNUUkVBTV9TVE9QLgorICovCitzdGF0aWMgUGFyYWxsZWxB cHBseVdvcmtlckluZm8gKnN0cmVhbV9hcHBseV93b3JrZXIgPSBOVUxMOworCisvKiBBIGxpc3Qg dG8gbWFpbnRhaW4gc3VidHJhbnNhY3Rpb25zLCBpZiBhbnkuICovCitzdGF0aWMgTGlzdCAqc3Vi eGFjdGxpc3QgPSBOSUw7CisKK3N0YXRpYyB2b2lkIHBhX2ZyZWVfd29ya2VyX2luZm8oUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKndpbmZvKTsKK3N0YXRpYyBQYXJhbGxlbFRyYW5zU3RhdGUgcGFf Z2V0X3hhY3Rfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCk7CitzdGF0 aWMgUGFydGlhbEZpbGVTZXRTdGF0ZSBwYV9nZXRfZmlsZXNldF9zdGF0ZSh2b2lkKTsKKworLyoK KyAqIFJldHVybnMgdHJ1ZSBpZiBpdCBpcyBPSyB0byBzdGFydCBhIHBhcmFsbGVsIGFwcGx5IHdv cmtlciwgZmFsc2Ugb3RoZXJ3aXNlLgorICovCitzdGF0aWMgYm9vbAorcGFfY2FuX3N0YXJ0KHZv aWQpCit7CisJLyogT25seSBsZWFkZXIgYXBwbHkgd29ya2VycyBjYW4gc3RhcnQgcGFyYWxsZWwg YXBwbHkgd29ya2Vycy4gKi8KKwlpZiAoIWFtX2xlYWRlcl9hcHBseV93b3JrZXIoKSkKKwkJcmV0 dXJuIGZhbHNlOworCisJLyoKKwkgKiBJdCBpcyBnb29kIHRvIGNoZWNrIGZvciBhbnkgY2hhbmdl IGluIHRoZSBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHRvCisJICogYXZvaWQgdGhlIGNhc2Ugd2hl cmUgZm9yIGEgdmVyeSBsb25nIHRpbWUgdGhlIGNoYW5nZSBkb2Vzbid0IGdldAorCSAqIHJlZmxl Y3RlZC4gVGhpcyBjYW4gaGFwcGVuIHdoZW4gdGhlcmUgaXMgYSBjb25zdGFudCBmbG93IG9mIHN0 cmVhbWluZworCSAqIHRyYW5zYWN0aW9ucyB0aGF0IGFyZSBoYW5kbGVkIGJ5IHBhcmFsbGVsIGFw cGx5IHdvcmtlcnMuCisJICoKKwkgKiBJdCBpcyBiZXR0ZXIgdG8gZG8gaXQgYmVmb3JlIHRoZSBi ZWxvdyBjaGVja3Mgc28gdGhhdCB0aGUgbGF0ZXN0IHZhbHVlcworCSAqIG9mIHN1YnNjcmlwdGlv biBjYW4gYmUgdXNlZCBmb3IgdGhlIGNoZWNrcy4KKwkgKi8KKwltYXliZV9yZXJlYWRfc3Vic2Ny aXB0aW9uKCk7CisKKwkvKgorCSAqIERvbid0IHN0YXJ0IGEgbmV3IHBhcmFsbGVsIGFwcGx5IHdv cmtlciBpZiB0aGUgc3Vic2NyaXB0aW9uIGlzIG5vdAorCSAqIHVzaW5nIHBhcmFsbGVsIHN0cmVh bWluZyBtb2RlLCBvciBpZiB0aGUgcHVibGlzaGVyIGRvZXMgbm90IHN1cHBvcnQKKwkgKiBwYXJh bGxlbCBhcHBseS4KKwkgKi8KKwlpZiAoIU15TG9naWNhbFJlcFdvcmtlci0+cGFyYWxsZWxfYXBw bHkpCisJCXJldHVybiBmYWxzZTsKKworCS8qCisJICogRG9uJ3Qgc3RhcnQgYSBuZXcgcGFyYWxs ZWwgd29ya2VyIGlmIHVzZXIgaGFzIHNldCBza2lwbHNuIGFzIGl0J3MKKwkgKiBwb3NzaWJsZSB0 aGF0IHRoZXkgd2FudCB0byBza2lwIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uIEZvcgorCSAq IHN0cmVhbWluZyB0cmFuc2FjdGlvbnMsIHdlIG5lZWQgdG8gc2VyaWFsaXplIHRoZSB0cmFuc2Fj dGlvbiB0byBhIGZpbGUKKwkgKiBzbyB0aGF0IHdlIGNhbiBnZXQgdGhlIGxhc3QgTFNOIG9mIHRo ZSB0cmFuc2FjdGlvbiB0byBqdWRnZSB3aGV0aGVyIHRvCisJICogc2tpcCBiZWZvcmUgc3RhcnRp bmcgdG8gYXBwbHkgdGhlIGNoYW5nZS4KKwkgKgorCSAqIE9uZSBtaWdodCB0aGluayB0aGF0IHdl IGNvdWxkIGFsbG93IHBhcmFsbGVsaXNtIGlmIHRoZSBmaXJzdCBsc24gb2YgdGhlCisJICogdHJh bnNhY3Rpb24gaXMgZ3JlYXRlciB0aGFuIHNraXBsc24sIGJ1dCB3ZSBkb24ndCBzZW5kIGl0IHdp dGggdGhlCisJICogU1RSRUFNIFNUQVJUIG1lc3NhZ2UsIGFuZCBpdCBkb2Vzbid0IHNlZW0gd29y dGggc2VuZGluZyB0aGUgZXh0cmEgZWlnaHQKKwkgKiBieXRlcyB3aXRoIHRoZSBTVFJFQU0gU1RB UlQgdG8gZW5hYmxlIHBhcmFsbGVsaXNtIGZvciB0aGlzIGNhc2UuCisJICovCisJaWYgKCFYTG9n UmVjUHRySXNJbnZhbGlkKE15U3Vic2NyaXB0aW9uLT5za2lwbHNuKSkKKwkJcmV0dXJuIGZhbHNl OworCisJLyoKKwkgKiBGb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB0aGF0IGFyZSBiZWluZyBh cHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwKKwkgKiBhcHBseSB3b3JrZXIsIHdlIGNhbm5vdCBkZWNp ZGUgd2hldGhlciB0byBhcHBseSB0aGUgY2hhbmdlIGZvciBhCisJICogcmVsYXRpb24gdGhhdCBp cyBub3QgaW4gdGhlIFJFQURZIHN0YXRlIChzZWUKKwkgKiBzaG91bGRfYXBwbHlfY2hhbmdlc19m b3JfcmVsKSBhcyB3ZSB3b24ndCBrbm93IHJlbW90ZV9maW5hbF9sc24gYnkgdGhhdAorCSAqIHRp bWUuIFNvLCB3ZSBkb24ndCBzdGFydCB0aGUgbmV3IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpbiB0 aGlzIGNhc2UuCisJICovCisJaWYgKCFBbGxUYWJsZXN5bmNzUmVhZHkoKSkKKwkJcmV0dXJuIGZh bHNlOworCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBTZXQgdXAgYSBkeW5hbWljIHNoYXJl ZCBtZW1vcnkgc2VnbWVudC4KKyAqCisgKiBXZSBzZXQgdXAgYSBjb250cm9sIHJlZ2lvbiB0aGF0 IGNvbnRhaW5zIGEgZml4ZWQtc2l6ZSB3b3JrZXIgaW5mbworICogKFBhcmFsbGVsQXBwbHlXb3Jr ZXJTaGFyZWQpLCBhIG1lc3NhZ2UgcXVldWUsIGFuZCBhbiBlcnJvciBxdWV1ZS4KKyAqCisgKiBS ZXR1cm5zIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFpbHVyZS4KKyAqLworc3RhdGljIGJv b2wKK3BhX3NldHVwX2RzbShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCit7CisJc2ht X3RvY19lc3RpbWF0b3IgZTsKKwlTaXplCQlzZWdzaXplOworCWRzbV9zZWdtZW50ICpzZWc7CisJ c2htX3RvYyAgICAqdG9jOworCVBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKnNoYXJlZDsKKwlz aG1fbXEJICAgKm1xOworCVNpemUJCXF1ZXVlX3NpemUgPSBEU01fUVVFVUVfU0laRTsKKwlTaXpl CQllcnJvcl9xdWV1ZV9zaXplID0gRFNNX0VSUk9SX1FVRVVFX1NJWkU7CisKKwkvKgorCSAqIEVz dGltYXRlIGhvdyBtdWNoIHNoYXJlZCBtZW1vcnkgd2UgbmVlZC4KKwkgKgorCSAqIEJlY2F1c2Ug dGhlIFRPQyBtYWNoaW5lcnkgbWF5IGNob29zZSB0byBpbnNlcnQgcGFkZGluZyBvZiBvZGRseS1z aXplZAorCSAqIHJlcXVlc3RzLCB3ZSBtdXN0IGVzdGltYXRlIGVhY2ggY2h1bmsgc2VwYXJhdGVs eS4KKwkgKgorCSAqIFdlIG5lZWQgb25lIGtleSB0byByZWdpc3RlciB0aGUgbG9jYXRpb24gb2Yg dGhlIGhlYWRlciwgYW5kIHR3byBvdGhlcgorCSAqIGtleXMgdG8gdHJhY2sgdGhlIGxvY2F0aW9u cyBvZiB0aGUgbWVzc2FnZSBxdWV1ZSBhbmQgdGhlIGVycm9yIG1lc3NhZ2UKKwkgKiBxdWV1ZS4K KwkgKi8KKwlzaG1fdG9jX2luaXRpYWxpemVfZXN0aW1hdG9yKCZlKTsKKwlzaG1fdG9jX2VzdGlt YXRlX2NodW5rKCZlLCBzaXplb2YoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCkpOworCXNobV90 b2NfZXN0aW1hdGVfY2h1bmsoJmUsIHF1ZXVlX3NpemUpOworCXNobV90b2NfZXN0aW1hdGVfY2h1 bmsoJmUsIGVycm9yX3F1ZXVlX3NpemUpOworCisJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZlLCAz KTsKKwlzZWdzaXplID0gc2htX3RvY19lc3RpbWF0ZSgmZSk7CisKKwkvKiBDcmVhdGUgdGhlIHNo YXJlZCBtZW1vcnkgc2VnbWVudCBhbmQgZXN0YWJsaXNoIGEgdGFibGUgb2YgY29udGVudHMuICov CisJc2VnID0gZHNtX2NyZWF0ZShzaG1fdG9jX2VzdGltYXRlKCZlKSwgMCk7CisJaWYgKCFzZWcp CisJCXJldHVybiBmYWxzZTsKKworCXRvYyA9IHNobV90b2NfY3JlYXRlKFBHX0xPR0lDQUxfQVBQ TFlfU0hNX01BR0lDLCBkc21fc2VnbWVudF9hZGRyZXNzKHNlZyksCisJCQkJCQkgc2Vnc2l6ZSk7 CisKKwkvKiBTZXQgdXAgdGhlIGhlYWRlciByZWdpb24uICovCisJc2hhcmVkID0gc2htX3RvY19h bGxvY2F0ZSh0b2MsIHNpemVvZihQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkKSk7CisJU3Bpbkxv Y2tJbml0KCZzaGFyZWQtPm11dGV4KTsKKworCXNoYXJlZC0+eGFjdF9zdGF0ZSA9IFBBUkFMTEVM X1RSQU5TX1VOS05PV047CisJcGdfYXRvbWljX2luaXRfdTMyKCYoc2hhcmVkLT5wZW5kaW5nX3N0 cmVhbV9jb3VudCksIDApOworCXNoYXJlZC0+bGFzdF9jb21taXRfZW5kID0gSW52YWxpZFhMb2dS ZWNQdHI7CisJc2hhcmVkLT5maWxlc2V0X3N0YXRlID0gRlNfRU1QVFk7CisKKwlzaG1fdG9jX2lu c2VydCh0b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9TSEFSRUQsIHNoYXJlZCk7CisKKwkvKiBTZXQg dXAgbWVzc2FnZSBxdWV1ZSBmb3IgdGhlIHdvcmtlci4gKi8KKwltcSA9IHNobV9tcV9jcmVhdGUo c2htX3RvY19hbGxvY2F0ZSh0b2MsIHF1ZXVlX3NpemUpLCBxdWV1ZV9zaXplKTsKKwlzaG1fdG9j X2luc2VydCh0b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9NUSwgbXEpOworCXNobV9tcV9zZXRfc2Vu ZGVyKG1xLCBNeVByb2MpOworCisJLyogQXR0YWNoIHRoZSBxdWV1ZS4gKi8KKwl3aW5mby0+bXFf aGFuZGxlID0gc2htX21xX2F0dGFjaChtcSwgc2VnLCBOVUxMKTsKKworCS8qIFNldCB1cCBlcnJv ciBxdWV1ZSBmb3IgdGhlIHdvcmtlci4gKi8KKwltcSA9IHNobV9tcV9jcmVhdGUoc2htX3RvY19h bGxvY2F0ZSh0b2MsIGVycm9yX3F1ZXVlX3NpemUpLAorCQkJCQkgICBlcnJvcl9xdWV1ZV9zaXpl KTsKKwlzaG1fdG9jX2luc2VydCh0b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9FUlJPUl9RVUVVRSwg bXEpOworCXNobV9tcV9zZXRfcmVjZWl2ZXIobXEsIE15UHJvYyk7CisKKwkvKiBBdHRhY2ggdGhl IHF1ZXVlLiAqLworCXdpbmZvLT5lcnJvcl9tcV9oYW5kbGUgPSBzaG1fbXFfYXR0YWNoKG1xLCBz ZWcsIE5VTEwpOworCisJLyogUmV0dXJuIHJlc3VsdHMgdG8gY2FsbGVyLiAqLworCXdpbmZvLT5k c21fc2VnID0gc2VnOworCXdpbmZvLT5zaGFyZWQgPSBzaGFyZWQ7CisKKwlyZXR1cm4gdHJ1ZTsK K30KKworLyoKKyAqIFRyeSB0byBnZXQgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZnJvbSB0aGUg cG9vbC4gSWYgbm9uZSBpcyBhdmFpbGFibGUgdGhlbgorICogc3RhcnQgYSBuZXcgb25lLgorICov CitzdGF0aWMgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKgorcGFfbGF1bmNoX3BhcmFsbGVsX3dv cmtlcih2b2lkKQoreworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwlib29sCQlsYXVuY2hl ZDsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87CisJTGlzdENlbGwgICAqbGM7CisK KwkvKiBUcnkgdG8gZ2V0IGFuIGF2YWlsYWJsZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZnJvbSB0 aGUgd29ya2VyIHBvb2wuICovCisJZm9yZWFjaChsYywgUGFyYWxsZWxBcHBseVdvcmtlclBvb2wp CisJeworCQl3aW5mbyA9IChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKSBsZmlyc3QobGMpOwor CisJCWlmICghd2luZm8tPmluX3VzZSkKKwkJCXJldHVybiB3aW5mbzsKKwl9CisKKwkvKgorCSAq IFN0YXJ0IGEgbmV3IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkgKgorCSAqIFRoZSB3b3JrZXIg aW5mbyBjYW4gYmUgdXNlZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSB3b3JrZXIgcHJvY2Vzcywg c28KKwkgKiBjcmVhdGUgaXQgaW4gYSBwZXJtYW5lbnQgY29udGV4dC4KKwkgKi8KKwlvbGRjb250 ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CisKKwl3aW5mbyA9IChQ YXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKSBwYWxsb2MwKHNpemVvZihQYXJhbGxlbEFwcGx5V29y a2VySW5mbykpOworCisJLyogU2V0dXAgc2hhcmVkIG1lbW9yeS4gKi8KKwlpZiAoIXBhX3NldHVw X2RzbSh3aW5mbykpCisJeworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisJ CXBmcmVlKHdpbmZvKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJbGF1bmNoZWQgPSBsb2dpY2Fs cmVwX3dvcmtlcl9sYXVuY2goTXlMb2dpY2FsUmVwV29ya2VyLT5kYmlkLAorCQkJCQkJCQkJCU15 U3Vic2NyaXB0aW9uLT5vaWQsCisJCQkJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUsCisJCQkJ CQkJCQkJTXlMb2dpY2FsUmVwV29ya2VyLT51c2VyaWQsCisJCQkJCQkJCQkJSW52YWxpZE9pZCwK KwkJCQkJCQkJCQlkc21fc2VnbWVudF9oYW5kbGUod2luZm8tPmRzbV9zZWcpKTsKKworCWlmIChs YXVuY2hlZCkKKwl7CisJCVBhcmFsbGVsQXBwbHlXb3JrZXJQb29sID0gbGFwcGVuZChQYXJhbGxl bEFwcGx5V29ya2VyUG9vbCwgd2luZm8pOworCX0KKwllbHNlCisJeworCQlwYV9mcmVlX3dvcmtl cl9pbmZvKHdpbmZvKTsKKwkJd2luZm8gPSBOVUxMOworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhvbGRjb250ZXh0KTsKKworCXJldHVybiB3aW5mbzsKK30KKworLyoKKyAqIEFsbG9jYXRl IGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0aGUgc3BlY2lm aWVkIHhpZC4KKyAqCisgKiBXZSBmaXJzdCB0cnkgdG8gZ2V0IGFuIGF2YWlsYWJsZSB3b3JrZXIg ZnJvbSB0aGUgcG9vbCwgaWYgYW55IGFuZCB0aGVuIHRyeQorICogdG8gbGF1bmNoIGEgbmV3IHdv cmtlci4gT24gc3VjY2Vzc2Z1bCBhbGxvY2F0aW9uLCByZW1lbWJlciB0aGUgd29ya2VyCisgKiBp bmZvcm1hdGlvbiBpbiB0aGUgaGFzaCB0YWJsZSBzbyB0aGF0IHdlIGNhbiBnZXQgaXQgbGF0ZXIg Zm9yIHByb2Nlc3NpbmcgdGhlCisgKiBzdHJlYW1pbmcgY2hhbmdlcy4KKyAqLwordm9pZAorcGFf YWxsb2NhdGVfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKQoreworCWJvb2wJCWZvdW5kOworCVBh cmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9IE5VTEw7CisJUGFyYWxsZWxBcHBseVdvcmtl ckVudHJ5ICplbnRyeTsKKworCWlmICghcGFfY2FuX3N0YXJ0KCkpCisJCXJldHVybjsKKworCS8q IEZpcnN0IHRpbWUgdGhyb3VnaCwgaW5pdGlhbGl6ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgc3Rh dGUgaGFzaHRhYmxlLiAqLworCWlmICghUGFyYWxsZWxBcHBseVR4bkhhc2gpCisJeworCQlIQVNI Q1RMCQljdGw7CisKKwkJTWVtU2V0KCZjdGwsIDAsIHNpemVvZihjdGwpKTsKKwkJY3RsLmtleXNp emUgPSBzaXplb2YoVHJhbnNhY3Rpb25JZCk7CisJCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUGFy YWxsZWxBcHBseVdvcmtlckVudHJ5KTsKKwkJY3RsLmhjeHQgPSBBcHBseUNvbnRleHQ7CisKKwkJ UGFyYWxsZWxBcHBseVR4bkhhc2ggPSBoYXNoX2NyZWF0ZSgibG9naWNhbCByZXBsaWNhdGlvbiBw YXJhbGxlbCBhcHBseSB3b3JrZXJzIGhhc2giLAorCQkJCQkJCQkJCSAgIDE2LCAmY3RsLAorCQkJ CQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCX0KKwor CXdpbmZvID0gcGFfbGF1bmNoX3BhcmFsbGVsX3dvcmtlcigpOworCWlmICghd2luZm8pCisJCXJl dHVybjsKKworCS8qIENyZWF0ZSBhbiBlbnRyeSBmb3IgdGhlIHJlcXVlc3RlZCB0cmFuc2FjdGlv bi4gKi8KKwllbnRyeSA9IGhhc2hfc2VhcmNoKFBhcmFsbGVsQXBwbHlUeG5IYXNoLCAmeGlkLCBI QVNIX0VOVEVSLCAmZm91bmQpOworCWlmIChmb3VuZCkKKwkJZWxvZyhFUlJPUiwgImhhc2ggdGFi bGUgY29ycnVwdGVkIik7CisKKwkvKiBVcGRhdGUgdGhlIHRyYW5zYWN0aW9uIGluZm9ybWF0aW9u IGluIHNoYXJlZCBtZW1vcnkuICovCisJU3BpbkxvY2tBY3F1aXJlKCZ3aW5mby0+c2hhcmVkLT5t dXRleCk7CisJd2luZm8tPnNoYXJlZC0+eGFjdF9zdGF0ZSA9IFBBUkFMTEVMX1RSQU5TX1VOS05P V047CisJd2luZm8tPnNoYXJlZC0+eGlkID0geGlkOworCVNwaW5Mb2NrUmVsZWFzZSgmd2luZm8t PnNoYXJlZC0+bXV0ZXgpOworCisJd2luZm8tPmluX3VzZSA9IHRydWU7CisJd2luZm8tPnNlcmlh bGl6ZV9jaGFuZ2VzID0gZmFsc2U7CisJZW50cnktPndpbmZvID0gd2luZm87CisJZW50cnktPnhp ZCA9IHhpZDsKK30KKworLyoKKyAqIEZpbmQgdGhlIGFzc2lnbmVkIHdvcmtlciBmb3IgdGhlIGdp dmVuIHRyYW5zYWN0aW9uLCBpZiBhbnkuCisgKi8KK1BhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICoK K3BhX2ZpbmRfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKQoreworCWJvb2wJCWZvdW5kOworCVBh cmFsbGVsQXBwbHlXb3JrZXJFbnRyeSAqZW50cnk7CisKKwlpZiAoIVRyYW5zYWN0aW9uSWRJc1Zh bGlkKHhpZCkpCisJCXJldHVybiBOVUxMOworCisJaWYgKCFQYXJhbGxlbEFwcGx5VHhuSGFzaCkK KwkJcmV0dXJuIE5VTEw7CisKKwkvKiBSZXR1cm4gdGhlIGNhY2hlZCBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgaWYgdmFsaWQuICovCisJaWYgKHN0cmVhbV9hcHBseV93b3JrZXIpCisJCXJldHVybiBz dHJlYW1fYXBwbHlfd29ya2VyOworCisJLyogRmluZCBhbiBlbnRyeSBmb3IgdGhlIHJlcXVlc3Rl ZCB0cmFuc2FjdGlvbi4gKi8KKwllbnRyeSA9IGhhc2hfc2VhcmNoKFBhcmFsbGVsQXBwbHlUeG5I YXNoLCAmeGlkLCBIQVNIX0ZJTkQsICZmb3VuZCk7CisJaWYgKGZvdW5kKQorCXsKKwkJLyogVGhl IHdvcmtlciBtdXN0IG5vdCBoYXZlIGV4aXRlZC4gICovCisJCUFzc2VydChlbnRyeS0+d2luZm8t PmluX3VzZSk7CisJCXJldHVybiBlbnRyeS0+d2luZm87CisJfQorCisJcmV0dXJuIE5VTEw7Cit9 CisKKy8qCisgKiBNYWtlcyB0aGUgd29ya2VyIGF2YWlsYWJsZSBmb3IgcmV1c2UuCisgKgorICog VGhpcyByZW1vdmVzIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZW50cnkgZnJvbSB0aGUgaGFz aCB0YWJsZSBzbyB0aGF0IGl0CisgKiBjYW4ndCBiZSB1c2VkLiBJZiB0aGVyZSBhcmUgZW5vdWdo IHdvcmtlcnMgaW4gdGhlIHBvb2wsIGl0IHN0b3BzIHRoZSB3b3JrZXIKKyAqIGFuZCBmcmVlcyB0 aGUgY29ycmVzcG9uZGluZyBpbmZvLiBPdGhlcndpc2UgaXQganVzdCBtYXJrcyB0aGUgd29ya2Vy IGFzCisgKiBhdmFpbGFibGUgZm9yIHJldXNlLgorICoKKyAqIEZvciBtb3JlIGluZm9ybWF0aW9u IGFib3V0IHRoZSB3b3JrZXIgcG9vbCwgc2VlIGNvbW1lbnRzIGF0b3AgdGhpcyBmaWxlLgorICov CitzdGF0aWMgdm9pZAorcGFfZnJlZV93b3JrZXIoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndp bmZvKQoreworCUFzc2VydCghYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpOworCUFzc2VydCh3 aW5mby0+aW5fdXNlKTsKKwlBc3NlcnQocGFfZ2V0X3hhY3Rfc3RhdGUod2luZm8tPnNoYXJlZCkg PT0gUEFSQUxMRUxfVFJBTlNfRklOSVNIRUQpOworCisJaWYgKCFoYXNoX3NlYXJjaChQYXJhbGxl bEFwcGx5VHhuSGFzaCwgJndpbmZvLT5zaGFyZWQtPnhpZCwgSEFTSF9SRU1PVkUsIE5VTEwpKQor CQllbG9nKEVSUk9SLCAiaGFzaCB0YWJsZSBjb3JydXB0ZWQiKTsKKworCS8qCisJICogU3RvcCB0 aGUgd29ya2VyIGlmIHRoZXJlIGFyZSBlbm91Z2ggd29ya2VycyBpbiB0aGUgcG9vbC4KKwkgKgor CSAqIFhYWCBBZGRpdGlvbmFsbHksIHdlIGFsc28gc3RvcCB0aGUgd29ya2VyIGlmIHRoZSBsZWFk ZXIgYXBwbHkgd29ya2VyCisJICogc2VyaWFsaXplIHBhcnQgb2YgdGhlIHRyYW5zYWN0aW9uIGRh dGEgZHVlIHRvIGEgc2VuZCB0aW1lb3V0LiBUaGlzIGlzCisJICogYmVjYXVzZSB0aGUgbWVzc2Fn ZSBjb3VsZCBiZSBwYXJ0aWFsbHkgd3JpdHRlbiB0byB0aGUgcXVldWUgYW5kIHRoZXJlCisJICog aXMgbm8gd2F5IHRvIGNsZWFuIHRoZSBxdWV1ZSBvdGhlciB0aGFuIHJlc2VuZGluZyB0aGUgbWVz c2FnZSB1bnRpbCBpdAorCSAqIHN1Y2NlZWRzLiBJbnN0ZWFkIG9mIHRyeWluZyB0byBzZW5kIHRo ZSBkYXRhIHdoaWNoIGFueXdheSB3b3VsZCBoYXZlCisJICogYmVlbiBzZXJpYWxpemVkIGFuZCB0 aGVuIGxldHRpbmcgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBkZWFsIHdpdGgKKwkgKiB0aGUg c3B1cmlvdXMgbWVzc2FnZSwgd2Ugc3RvcCB0aGUgd29ya2VyLgorCSAqLworCWlmICh3aW5mby0+ c2VyaWFsaXplX2NoYW5nZXMgfHwKKwkJbGlzdF9sZW5ndGgoUGFyYWxsZWxBcHBseVdvcmtlclBv b2wpID4KKwkJKG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gLyAy KSkKKwl7CisJCWludAkJCXNsb3Rfbm87CisJCXVpbnQxNgkJZ2VuZXJhdGlvbjsKKworCQlTcGlu TG9ja0FjcXVpcmUoJndpbmZvLT5zaGFyZWQtPm11dGV4KTsKKwkJZ2VuZXJhdGlvbiA9IHdpbmZv LT5zaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX2dlbmVyYXRpb247CisJCXNsb3Rfbm8gPSB3aW5m by0+c2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9zbG90X25vOworCQlTcGluTG9ja1JlbGVhc2Uo JndpbmZvLT5zaGFyZWQtPm11dGV4KTsKKworCQlsb2dpY2FscmVwX3BhX3dvcmtlcl9zdG9wKHNs b3Rfbm8sIGdlbmVyYXRpb24pOworCisJCXBhX2ZyZWVfd29ya2VyX2luZm8od2luZm8pOworCisJ CXJldHVybjsKKwl9CisKKwl3aW5mby0+aW5fdXNlID0gZmFsc2U7CisJd2luZm8tPnNlcmlhbGl6 ZV9jaGFuZ2VzID0gZmFsc2U7Cit9CisKKy8qCisgKiBGcmVlIHRoZSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgaW5mb3JtYXRpb24gYW5kIHVubGluayB0aGUgZmlsZXMgd2l0aAorICogc2VyaWFsaXpl ZCBjaGFuZ2VzIGlmIGFueS4KKyAqLworc3RhdGljIHZvaWQKK3BhX2ZyZWVfd29ya2VyX2luZm8o UGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQoreworCUFzc2VydCh3aW5mbyk7CisKKwlp ZiAod2luZm8tPm1xX2hhbmRsZSkKKwkJc2htX21xX2RldGFjaCh3aW5mby0+bXFfaGFuZGxlKTsK KworCWlmICh3aW5mby0+ZXJyb3JfbXFfaGFuZGxlKQorCQlzaG1fbXFfZGV0YWNoKHdpbmZvLT5l cnJvcl9tcV9oYW5kbGUpOworCisJLyogVW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQg Y2hhbmdlcy4gKi8KKwlpZiAod2luZm8tPnNlcmlhbGl6ZV9jaGFuZ2VzKQorCQlzdHJlYW1fY2xl YW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB3aW5mby0+c2hhcmVkLT54aWQp OworCisJaWYgKHdpbmZvLT5kc21fc2VnKQorCQlkc21fZGV0YWNoKHdpbmZvLT5kc21fc2VnKTsK KworCS8qIFJlbW92ZSBmcm9tIHRoZSB3b3JrZXIgcG9vbC4gKi8KKwlQYXJhbGxlbEFwcGx5V29y a2VyUG9vbCA9IGxpc3RfZGVsZXRlX3B0cihQYXJhbGxlbEFwcGx5V29ya2VyUG9vbCwgd2luZm8p OworCisJcGZyZWUod2luZm8pOworfQorCisvKgorICogRGV0YWNoIHRoZSBlcnJvciBxdWV1ZSBm b3IgYWxsIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuCisgKi8KK3ZvaWQKK3BhX2RldGFjaF9hbGxf ZXJyb3JfbXEodm9pZCkKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCWZvcmVhY2gobGMsIFBhcmFs bGVsQXBwbHlXb3JrZXJQb29sKQorCXsKKwkJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZv ID0gKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICopIGxmaXJzdChsYyk7CisKKwkJc2htX21xX2Rl dGFjaCh3aW5mby0+ZXJyb3JfbXFfaGFuZGxlKTsKKwkJd2luZm8tPmVycm9yX21xX2hhbmRsZSA9 IE5VTEw7CisJfQorfQorCisvKgorICogQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBwZW5kaW5nIHNw b29sZWQgbWVzc2FnZXMuCisgKi8KK3N0YXRpYyBib29sCitwYV9oYXNfc3Bvb2xlZF9tZXNzYWdl X3BlbmRpbmcoKQoreworCVBhcnRpYWxGaWxlU2V0U3RhdGUgZmlsZXNldF9zdGF0ZTsKKworCWZp bGVzZXRfc3RhdGUgPSBwYV9nZXRfZmlsZXNldF9zdGF0ZSgpOworCisJcmV0dXJuIChmaWxlc2V0 X3N0YXRlICE9IEZTX0VNUFRZKTsKK30KKworLyoKKyAqIFJlcGxheSB0aGUgc3Bvb2xlZCBtZXNz YWdlcyBvbmNlIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGhhcyBmaW5pc2hlZAorICogc2VyaWFs aXppbmcgY2hhbmdlcyB0byB0aGUgZmlsZS4KKyAqCisgKiBSZXR1cm5zIGZhbHNlIGlmIHRoZXJl IGFyZW4ndCBhbnkgcGVuZGluZyBzcG9vbGVkIG1lc3NhZ2VzLCB0cnVlIG90aGVyd2lzZS4KKyAq Lworc3RhdGljIGJvb2wKK3BhX3Byb2Nlc3Nfc3Bvb2xlZF9tZXNzYWdlc19pZl9yZXF1aXJlZCh2 b2lkKQoreworCVBhcnRpYWxGaWxlU2V0U3RhdGUgZmlsZXNldF9zdGF0ZTsKKworCWZpbGVzZXRf c3RhdGUgPSBwYV9nZXRfZmlsZXNldF9zdGF0ZSgpOworCisJaWYgKGZpbGVzZXRfc3RhdGUgPT0g RlNfRU1QVFkpCisJCXJldHVybiBmYWxzZTsKKworCS8qCisJICogSWYgdGhlIGxlYWRlciBhcHBs eSB3b3JrZXIgaXMgYnVzeSBzZXJpYWxpemluZyB0aGUgcGFydGlhbCBjaGFuZ2VzIHRoZW4KKwkg KiBhY3F1aXJlIHRoZSBzdHJlYW0gbG9jayBub3cgYW5kIHdhaXQgZm9yIHRoZSBsZWFkZXIgd29y a2VyIHRvIGZpbmlzaAorCSAqIHNlcmlhbGl6aW5nIHRoZSBjaGFuZ2VzLiBPdGhlcndpc2UsIHRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd29uJ3QgZ2V0CisJICogYSBjaGFuY2UgdG8gcmVjZWl2 ZSBhIFNUUkVBTV9TVE9QIChhbmQgYWNxdWlyZSB0aGUgc3RyZWFtIGxvY2spIHVudGlsCisJICog dGhlIGxlYWRlciBoYWQgc2VyaWFsaXplZCBhbGwgY2hhbmdlcyB3aGljaCBjYW4gbGVhZCB0byB1 bmRldGVjdGVkCisJICogZGVhZGxvY2suCisJICoKKwkgKiBOb3RlIHRoYXQgdGhlIGZpbGVzZXQg c3RhdGUgY2FuIGJlIEZTX1NFUklBTElaRV9ET05FIG9uY2UgdGhlIGxlYWRlcgorCSAqIHdvcmtl ciBoYXMgZmluaXNoZWQgc2VyaWFsaXppbmcgdGhlIGNoYW5nZXMuCisJICovCisJaWYgKGZpbGVz ZXRfc3RhdGUgPT0gRlNfU0VSSUFMSVpFX0lOX1BST0dSRVNTKQorCXsKKwkJcGFfbG9ja19zdHJl YW0oTXlQYXJhbGxlbFNoYXJlZC0+eGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCQlwYV91bmxvY2tf c3RyZWFtKE15UGFyYWxsZWxTaGFyZWQtPnhpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCQlmaWxl c2V0X3N0YXRlID0gcGFfZ2V0X2ZpbGVzZXRfc3RhdGUoKTsKKwl9CisKKwkvKgorCSAqIFdlIGNh bm5vdCByZWFkIHRoZSBmaWxlIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBsZWFkZXIgaGFzIHNlcmlh bGl6ZWQgYWxsCisJICogY2hhbmdlcyB0byB0aGUgZmlsZSBiZWNhdXNlIHRoZXJlIG1heSBzdGls bCBiZSBtZXNzYWdlcyBpbiB0aGUgbWVtb3J5CisJICogcXVldWUuIFdlIHdpbGwgYXBwbHkgYWxs IHNwb29sZWQgbWVzc2FnZXMgdGhlIG5leHQgdGltZSB3ZSBjYWxsIHRoaXMKKwkgKiBmdW5jdGlv biBhbmQgdGhhdCB3aWxsIGVuc3VyZSB0aGVyZSBhcmUgbm8gbWVzc2FnZXMgbGVmdCBpbiB0aGUg bWVtb3J5CisJICogcXVldWUuCisJICovCisJaWYgKGZpbGVzZXRfc3RhdGUgPT0gRlNfU0VSSUFM SVpFX0RPTkUpCisJeworCQlwYV9zZXRfZmlsZXNldF9zdGF0ZShNeVBhcmFsbGVsU2hhcmVkLCBG U19SRUFEWSk7CisJfQorCWVsc2UgaWYgKGZpbGVzZXRfc3RhdGUgPT0gRlNfUkVBRFkpCisJewor CQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKCZNeVBhcmFsbGVsU2hhcmVkLT5maWxlc2V0LAorCQkJ CQkJCSAgIE15UGFyYWxsZWxTaGFyZWQtPnhpZCwKKwkJCQkJCQkgICBJbnZhbGlkWExvZ1JlY1B0 cik7CisJCXBhX3NldF9maWxlc2V0X3N0YXRlKE15UGFyYWxsZWxTaGFyZWQsIEZTX0VNUFRZKTsK Kwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIEludGVycnVwdCBoYW5kbGVyIGZvciBt YWluIGxvb3Agb2YgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCitzdGF0aWMgdm9pZAorUHJv Y2Vzc1BhcmFsbGVsQXBwbHlJbnRlcnJ1cHRzKHZvaWQpCit7CisJQ0hFQ0tfRk9SX0lOVEVSUlVQ VFMoKTsKKworCWlmIChTaHV0ZG93blJlcXVlc3RQZW5kaW5nKQorCXsKKwkJZXJlcG9ydChMT0cs CisJCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIg Zm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgaGFzIGZpbmlzaGVkIiwKKwkJCQkJCU15U3Vic2NyaXB0 aW9uLT5uYW1lKSkpOworCisJCXByb2NfZXhpdCgwKTsKKwl9CisKKwlpZiAoQ29uZmlnUmVsb2Fk UGVuZGluZykKKwl7CisJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKKwkJUHJvY2Vzc0Nv bmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CisJfQorfQorCisvKiBQYXJhbGxlbCBhcHBseSB3b3JrZXIg bWFpbiBsb29wLiAqLworc3RhdGljIHZvaWQKK0xvZ2ljYWxQYXJhbGxlbEFwcGx5TG9vcChzaG1f bXFfaGFuZGxlICptcWgpCit7CisJc2htX21xX3Jlc3VsdCBzaG1xX3JlczsKKwlFcnJvckNvbnRl eHRDYWxsYmFjayBlcnJjYWxsYmFjazsKKwlNZW1vcnlDb250ZXh0IG9sZGN4dCA9IEN1cnJlbnRN ZW1vcnlDb250ZXh0OworCisJLyoKKwkgKiBJbml0IHRoZSBBcHBseU1lc3NhZ2VDb250ZXh0IHdo aWNoIHdlIGNsZWFuIHVwIGFmdGVyIGVhY2ggcmVwbGljYXRpb24KKwkgKiBwcm90b2NvbCBtZXNz YWdlLgorCSAqLworCUFwcGx5TWVzc2FnZUNvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUo QXBwbHlDb250ZXh0LAorCQkJCQkJCQkJCQkJIkFwcGx5TWVzc2FnZUNvbnRleHQiLAorCQkJCQkJ CQkJCQkJQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CisKKwkvKgorCSAqIFB1c2ggYXBwbHkgZXJy b3IgY29udGV4dCBjYWxsYmFjay4gRmllbGRzIHdpbGwgYmUgZmlsbGVkIHdoaWxlIGFwcGx5aW5n CisJICogYSBjaGFuZ2UuCisJICovCisJZXJyY2FsbGJhY2suY2FsbGJhY2sgPSBhcHBseV9lcnJv cl9jYWxsYmFjazsKKwllcnJjYWxsYmFjay5wcmV2aW91cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7 CisJZXJyb3JfY29udGV4dF9zdGFjayA9ICZlcnJjYWxsYmFjazsKKworCWZvciAoOzspCisJewor CQl2b2lkCSAgICpkYXRhOworCQlTaXplCQlsZW47CisKKwkJUHJvY2Vzc1BhcmFsbGVsQXBwbHlJ bnRlcnJ1cHRzKCk7CisKKwkJLyogRW5zdXJlIHdlIGFyZSByZWFkaW5nIHRoZSBkYXRhIGludG8g b3VyIG1lbW9yeSBjb250ZXh0LiAqLworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlNZXNz YWdlQ29udGV4dCk7CisKKwkJc2htcV9yZXMgPSBzaG1fbXFfcmVjZWl2ZShtcWgsICZsZW4sICZk YXRhLCB0cnVlKTsKKworCQlpZiAoc2htcV9yZXMgPT0gU0hNX01RX1NVQ0NFU1MpCisJCXsKKwkJ CVN0cmluZ0luZm9EYXRhIHM7CisJCQlpbnQJCQljOworCisJCQlpZiAobGVuID09IDApCisJCQkJ ZWxvZyhFUlJPUiwgImludmFsaWQgbWVzc2FnZSBsZW5ndGgiKTsKKworCQkJcy5jdXJzb3IgPSAw OworCQkJcy5tYXhsZW4gPSAtMTsKKwkJCXMuZGF0YSA9IChjaGFyICopIGRhdGE7CisJCQlzLmxl biA9IGxlbjsKKworCQkJLyoKKwkJCSAqIFRoZSBmaXJzdCBieXRlIG9mIG1lc3NhZ2VzIHNlbnQg ZnJvbSBsZWFkZXIgYXBwbHkgd29ya2VyIHRvCisJCQkgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXJz IGNhbiBvbmx5IGJlICd3Jy4KKwkJCSAqLworCQkJYyA9IHBxX2dldG1zZ2J5dGUoJnMpOworCQkJ aWYgKGMgIT0gJ3cnKQorCQkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIG1lc3NhZ2UgXCIlY1wi IiwgYyk7CisKKwkJCS8qCisJCQkgKiBJZ25vcmUgc3RhdGlzdGljcyBmaWVsZHMgdGhhdCBoYXZl IGJlZW4gdXBkYXRlZCBieSB0aGUgbGVhZGVyCisJCQkgKiBhcHBseSB3b3JrZXIuCisJCQkgKgor CQkJICogWFhYIFdlIGNhbiBhdm9pZCBzZW5kaW5nIHRoZSBzdGF0aXN0aWNzIGZpZWxkcyBmcm9t IHRoZSBsZWFkZXIKKwkJCSAqIGFwcGx5IHdvcmtlciBidXQgZm9yIHRoYXQsIGl0IG5lZWRzIHRv IHJlYnVpbGQgdGhlIGVudGlyZQorCQkJICogbWVzc2FnZSBieSByZW1vdmluZyB0aGVzZSBmaWVs ZHMgd2hpY2ggY291bGQgYmUgbW9yZSB3b3JrIHRoYW4KKwkJCSAqIHNpbXBseSBpZ25vcmluZyB0 aGVzZSBmaWVsZHMgaW4gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkJCSAqLworCQkJcy5j dXJzb3IgKz0gU0laRV9TVEFUU19NRVNTQUdFOworCisJCQlhcHBseV9kaXNwYXRjaCgmcyk7CisJ CX0KKwkJZWxzZSBpZiAoc2htcV9yZXMgPT0gU0hNX01RX1dPVUxEX0JMT0NLKQorCQl7CisJCQkv KiBSZXBsYXkgdGhlIGNoYW5nZXMgZnJvbSB0aGUgZmlsZSwgaWYgYW55LiAqLworCQkJaWYgKCFw YV9wcm9jZXNzX3Nwb29sZWRfbWVzc2FnZXNfaWZfcmVxdWlyZWQoKSkKKwkJCXsKKwkJCQlpbnQJ CQlyYzsKKworCQkJCS8qIFdhaXQgZm9yIG1vcmUgd29yay4gKi8KKwkJCQlyYyA9IFdhaXRMYXRj aChNeUxhdGNoLAorCQkJCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElU X09OX1BNX0RFQVRILAorCQkJCQkJCSAgIDEwMDBMLAorCQkJCQkJCSAgIFdBSVRfRVZFTlRfTE9H SUNBTF9QQVJBTExFTF9BUFBMWV9NQUlOKTsKKworCQkJCWlmIChyYyAmIFdMX0xBVENIX1NFVCkK KwkJCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCX0KKwkJfQorCQllbHNlCisJCXsKKwkJCUFz c2VydChzaG1xX3JlcyA9PSBTSE1fTVFfREVUQUNIRUQpOworCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwK KwkJCQkJIGVycm1zZygibG9zdCBjb25uZWN0aW9uIHRvIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9u IGFwcGx5IHdvcmtlciIpKSk7CisJCX0KKworCQlNZW1vcnlDb250ZXh0UmVzZXQoQXBwbHlNZXNz YWdlQ29udGV4dCk7CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworCX0KKworCS8q IFBvcCB0aGUgZXJyb3IgY29udGV4dCBzdGFjay4gKi8KKwllcnJvcl9jb250ZXh0X3N0YWNrID0g ZXJyY2FsbGJhY2sucHJldmlvdXM7CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsK K30KKworLyoKKyAqIE1ha2Ugc3VyZSB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB0cmllcyB0byBy ZWFkIGZyb20gb3VyIGVycm9yIHF1ZXVlIG9uZSBtb3JlCisgKiB0aW1lLiBUaGlzIGd1YXJkcyBh Z2FpbnN0IHRoZSBjYXNlIHdoZXJlIHdlIGV4aXQgdW5jbGVhbmx5IHdpdGhvdXQgc2VuZGluZwor ICogYW4gRXJyb3JSZXNwb25zZSwgZm9yIGV4YW1wbGUgYmVjYXVzZSBzb21lIGNvZGUgY2FsbHMg cHJvY19leGl0IGRpcmVjdGx5LgorICovCitzdGF0aWMgdm9pZAorcGFfc2h1dGRvd24oaW50IGNv ZGUsIERhdHVtIGFyZykKK3sKKwlTZW5kUHJvY1NpZ25hbChNeUxvZ2ljYWxSZXBXb3JrZXItPmFw cGx5X2xlYWRlcl9waWQsCisJCQkJICAgUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdFLAor CQkJCSAgIEludmFsaWRCYWNrZW5kSWQpOworCisJZHNtX2RldGFjaCgoZHNtX3NlZ21lbnQgKikg RGF0dW1HZXRQb2ludGVyKGFyZykpOworfQorCisvKgorICogUGFyYWxsZWwgYXBwbHkgd29ya2Vy IGVudHJ5IHBvaW50LgorICovCit2b2lkCitQYXJhbGxlbEFwcGx5V29ya2VyTWFpbihEYXR1bSBt YWluX2FyZykKK3sKKwlQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpzaGFyZWQ7CisJZHNtX2hh bmRsZQloYW5kbGU7CisJZHNtX3NlZ21lbnQgKnNlZzsKKwlzaG1fdG9jICAgICp0b2M7CisJc2ht X21xCSAgICptcTsKKwlzaG1fbXFfaGFuZGxlICptcWg7CisJc2htX21xX2hhbmRsZSAqZXJyb3Jf bXFoOworCVJlcE9yaWdpbklkIG9yaWdpbmlkOworCWludAkJCXdvcmtlcl9zbG90ID0gRGF0dW1H ZXRJbnQzMihtYWluX2FyZyk7CisJY2hhcgkJb3JpZ2lubmFtZVtOQU1FREFUQUxFTl07CisKKwkv KiBTZXR1cCBzaWduYWwgaGFuZGxpbmcuICovCisJcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5k bGVyRm9yQ29uZmlnUmVsb2FkKTsKKwlwcXNpZ25hbChTSUdJTlQsIFNpZ25hbEhhbmRsZXJGb3JT aHV0ZG93blJlcXVlc3QpOworCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7CisJQmFja2dyb3VuZFdv cmtlclVuYmxvY2tTaWduYWxzKCk7CisKKwkvKgorCSAqIEF0dGFjaCB0byB0aGUgZHluYW1pYyBz aGFyZWQgbWVtb3J5IHNlZ21lbnQgZm9yIHRoZSBwYXJhbGxlbCBhcHBseSwgYW5kCisJICogZmlu ZCBpdHMgdGFibGUgb2YgY29udGVudHMuCisJICoKKwkgKiBMaWtlIHBhcmFsbGVsIHF1ZXJ5LCB3 ZSBkb24ndCBuZWVkIHJlc291cmNlIG93bmVyIGJ5IHRoaXMgdGltZS4gU2VlCisJICogUGFyYWxs ZWxXb3JrZXJNYWluLgorCSAqLworCW1lbWNweSgmaGFuZGxlLCBNeUJnd29ya2VyRW50cnktPmJn d19leHRyYSwgc2l6ZW9mKGRzbV9oYW5kbGUpKTsKKwlzZWcgPSBkc21fYXR0YWNoKGhhbmRsZSk7 CisJaWYgKCFzZWcpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpF Q1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygidW5hYmxlIHRvIG1h cCBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCIpKSk7CisKKwl0b2MgPSBzaG1fdG9jX2F0 dGFjaChQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJQywgZHNtX3NlZ21lbnRfYWRkcmVzcyhzZWcp KTsKKwlpZiAoIXRvYykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09C SkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJiYWQgbWFnaWMg bnVtYmVyIGluIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50IikpKTsKKworCWJlZm9yZV9z aG1lbV9leGl0KHBhX3NodXRkb3duLCBQb2ludGVyR2V0RGF0dW0oc2VnKSk7CisKKwkvKiBMb29r IHVwIHRoZSBzaGFyZWQgaW5mb3JtYXRpb24uICovCisJc2hhcmVkID0gc2htX3RvY19sb29rdXAo dG9jLCBQQVJBTExFTF9BUFBMWV9LRVlfU0hBUkVELCBmYWxzZSk7CisJTXlQYXJhbGxlbFNoYXJl ZCA9IHNoYXJlZDsKKworCS8qCisJICogQXR0YWNoIHRvIHRoZSBtZXNzYWdlIHF1ZXVlLgorCSAq LworCW1xID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9BUFBMWV9LRVlfTVEsIGZhbHNl KTsKKwlzaG1fbXFfc2V0X3JlY2VpdmVyKG1xLCBNeVByb2MpOworCW1xaCA9IHNobV9tcV9hdHRh Y2gobXEsIHNlZywgTlVMTCk7CisKKwkvKgorCSAqIFByaW1hcnkgaW5pdGlhbGl6YXRpb24gaXMg Y29tcGxldGUuIE5vdywgd2UgY2FuIGF0dGFjaCB0byBvdXIgc2xvdC4KKwkgKiBUaGlzIGlzIHRv IGVuc3VyZSB0aGF0IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGRvZXMgbm90IHdyaXRlIGRhdGEg dG8KKwkgKiB0aGUgdW5pbml0aWFsaXplZCBtZW1vcnkgcXVldWUuCisJICovCisJbG9naWNhbHJl cF93b3JrZXJfYXR0YWNoKHdvcmtlcl9zbG90KTsKKworCVNwaW5Mb2NrQWNxdWlyZSgmTXlQYXJh bGxlbFNoYXJlZC0+bXV0ZXgpOworCU15UGFyYWxsZWxTaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2Vy X2dlbmVyYXRpb24gPSBNeUxvZ2ljYWxSZXBXb3JrZXItPmdlbmVyYXRpb247CisJTXlQYXJhbGxl bFNoYXJlZC0+bG9naWNhbHJlcF93b3JrZXJfc2xvdF9ubyA9IHdvcmtlcl9zbG90OworCVNwaW5M b2NrUmVsZWFzZSgmTXlQYXJhbGxlbFNoYXJlZC0+bXV0ZXgpOworCisJLyoKKwkgKiBBdHRhY2gg dG8gdGhlIGVycm9yIHF1ZXVlLgorCSAqLworCW1xID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJB TExFTF9BUFBMWV9LRVlfRVJST1JfUVVFVUUsIGZhbHNlKTsKKwlzaG1fbXFfc2V0X3NlbmRlciht cSwgTXlQcm9jKTsKKwllcnJvcl9tcWggPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOwor CisJcHFfcmVkaXJlY3RfdG9fc2htX21xKHNlZywgZXJyb3JfbXFoKTsKKwlwcV9zZXRfcGFyYWxs ZWxfbGVhZGVyKE15TG9naWNhbFJlcFdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCwKKwkJCQkJCSAg IEludmFsaWRCYWNrZW5kSWQpOworCisJTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3NlbmRfdGlt ZSA9IE15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9yZWN2X3RpbWUgPQorCQlNeUxvZ2ljYWxSZXBX b3JrZXItPnJlcGx5X3RpbWUgPSAwOworCisJSW5pdGlhbGl6ZUFwcGx5V29ya2VyKCk7CisKKwkv KiBTZXR1cCByZXBsaWNhdGlvbiBvcmlnaW4gdHJhY2tpbmcuICovCisJU3RhcnRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKKwlSZXBsaWNhdGlvbk9yaWdpbk5hbWVGb3JMb2dpY2FsUmVwKE15U3Vic2Ny aXB0aW9uLT5vaWQsIEludmFsaWRPaWQsCisJCQkJCQkJCQkgICBvcmlnaW5uYW1lLCBzaXplb2Yo b3JpZ2lubmFtZSkpOworCW9yaWdpbmlkID0gcmVwbG9yaWdpbl9ieV9uYW1lKG9yaWdpbm5hbWUs IGZhbHNlKTsKKworCS8qCisJICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBkb2Vzbid0IG5l ZWQgdG8gbW9ub3BvbGl6ZSB0aGlzIHJlcGxpY2F0aW9uCisJICogb3JpZ2luIHdoaWNoIHdhcyBh bHJlYWR5IGFjcXVpcmVkIGJ5IGl0cyBsZWFkZXIgcHJvY2Vzcy4KKwkgKi8KKwlyZXBsb3JpZ2lu X3Nlc3Npb25fc2V0dXAob3JpZ2luaWQsIE15TG9naWNhbFJlcFdvcmtlci0+YXBwbHlfbGVhZGVy X3BpZCk7CisJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9IG9yaWdpbmlkOworCUNvbW1pdFRy YW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyoKKwkgKiBTZXR1cCBjYWxsYmFjayBmb3Igc3lzY2Fj aGUgc28gdGhhdCB3ZSBrbm93IHdoZW4gc29tZXRoaW5nIGNoYW5nZXMgaW4KKwkgKiB0aGUgc3Vi c2NyaXB0aW9uIHJlbGF0aW9uIHN0YXRlLgorCSAqLworCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNh bGxiYWNrKFNVQlNDUklQVElPTlJFTE1BUCwKKwkJCQkJCQkJICBpbnZhbGlkYXRlX3N5bmNpbmdf dGFibGVfc3RhdGVzLAorCQkJCQkJCQkgIChEYXR1bSkgMCk7CisKKwlzZXRfYXBwbHlfZXJyb3Jf Y29udGV4dF9vcmlnaW4ob3JpZ2lubmFtZSk7CisKKwlMb2dpY2FsUGFyYWxsZWxBcHBseUxvb3Ao bXFoKTsKKworCS8qCisJICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBtdXN0IG5vdCBnZXQg aGVyZSBiZWNhdXNlIHRoZSBwYXJhbGxlbCBhcHBseQorCSAqIHdvcmtlciB3aWxsIG9ubHkgc3Rv cCB3aGVuIGl0IHJlY2VpdmVzIGEgU0lHVEVSTSBvciBTSUdJTlQgZnJvbSB0aGUKKwkgKiBsZWFk ZXIsIG9yIHdoZW4gdGhlcmUgaXMgYW4gZXJyb3IuIE5vbmUgb2YgdGhlc2UgY2FzZXMgd2lsbCBh bGxvdyB0aGUKKwkgKiBjb2RlIHRvIHJlYWNoIGhlcmUuCisJICovCisJQXNzZXJ0KGZhbHNlKTsK K30KKworLyoKKyAqIEhhbmRsZSByZWNlaXB0IG9mIGFuIGludGVycnVwdCBpbmRpY2F0aW5nIGEg cGFyYWxsZWwgYXBwbHkgd29ya2VyIG1lc3NhZ2UuCisgKgorICogTm90ZTogdGhpcyBpcyBjYWxs ZWQgd2l0aGluIGEgc2lnbmFsIGhhbmRsZXIhIEFsbCB3ZSBjYW4gZG8gaXMgc2V0IGEgZmxhZwor ICogdGhhdCB3aWxsIGNhdXNlIHRoZSBuZXh0IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgdG8gaW52 b2tlCisgKiBIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZXMoKS4KKyAqLwordm9pZAorSGFuZGxl UGFyYWxsZWxBcHBseU1lc3NhZ2VJbnRlcnJ1cHQodm9pZCkKK3sKKwlJbnRlcnJ1cHRQZW5kaW5n ID0gdHJ1ZTsKKwlQYXJhbGxlbEFwcGx5TWVzc2FnZVBlbmRpbmcgPSB0cnVlOworCVNldExhdGNo KE15TGF0Y2gpOworfQorCisvKgorICogSGFuZGxlIGEgc2luZ2xlIHByb3RvY29sIG1lc3NhZ2Ug cmVjZWl2ZWQgZnJvbSBhIHNpbmdsZSBwYXJhbGxlbCBhcHBseQorICogd29ya2VyLgorICovCitz dGF0aWMgdm9pZAorSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2UoU3RyaW5nSW5mbyBtc2cpCit7 CisJY2hhcgkJbXNndHlwZTsKKworCW1zZ3R5cGUgPSBwcV9nZXRtc2dieXRlKG1zZyk7CisKKwlz d2l0Y2ggKG1zZ3R5cGUpCisJeworCQljYXNlICdFJzoJCQkJLyogRXJyb3JSZXNwb25zZSAqLwor CQkJeworCQkJCUVycm9yRGF0YQllZGF0YTsKKworCQkJCS8qIFBhcnNlIEVycm9yUmVzcG9uc2Uu ICovCisJCQkJcHFfcGFyc2VfZXJyb3Jub3RpY2UobXNnLCAmZWRhdGEpOworCisJCQkJLyoKKwkJ CQkgKiBJZiBkZXNpcmVkLCBhZGQgYSBjb250ZXh0IGxpbmUgdG8gc2hvdyB0aGF0IHRoaXMgaXMg YQorCQkJCSAqIG1lc3NhZ2UgcHJvcGFnYXRlZCBmcm9tIGEgcGFyYWxsZWwgYXBwbHkgd29ya2Vy LiBPdGhlcndpc2UsCisJCQkJICogaXQgY2FuIHNvbWV0aW1lcyBiZSBjb25mdXNpbmcgdG8gdW5k ZXJzdGFuZCB3aGF0IGFjdHVhbGx5CisJCQkJICogaGFwcGVuZWQuCisJCQkJICovCisJCQkJaWYg KGVkYXRhLmNvbnRleHQpCisJCQkJCWVkYXRhLmNvbnRleHQgPSBwc3ByaW50ZigiJXNcbiVzIiwg ZWRhdGEuY29udGV4dCwKKwkJCQkJCQkJCQkJIF8oImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxs ZWwgYXBwbHkgd29ya2VyIikpOworCQkJCWVsc2UKKwkJCQkJZWRhdGEuY29udGV4dCA9IHBzdHJk dXAoXygibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIiKSk7CisKKwkJ CQkvKgorCQkJCSAqIENvbnRleHQgYmV5b25kIHRoYXQgc2hvdWxkIHVzZSB0aGUgZXJyb3IgY29u dGV4dCBjYWxsYmFja3MKKwkJCQkgKiB0aGF0IHdlcmUgaW4gZWZmZWN0IGluIExvZ2ljYWxSZXBB cHBseUxvb3AoKS4KKwkJCQkgKi8KKwkJCQllcnJvcl9jb250ZXh0X3N0YWNrID0gYXBwbHlfZXJy b3JfY29udGV4dF9zdGFjazsKKworCQkJCS8qCisJCQkJICogVGhlIGFjdHVhbCBlcnJvciBtdXN0 IGhhdmUgYmVlbiByZXBvcnRlZCBieSB0aGUgcGFyYWxsZWwKKwkJCQkgKiBhcHBseSB3b3JrZXIu CisJCQkJICovCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JK RUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkJIGVycm1zZygibG9naWNhbCBy ZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZXhpdGVkIGR1ZSB0byBlcnJvciIpLAor CQkJCQkJIGVycmNvbnRleHQoIiVzIiwgZWRhdGEuY29udGV4dCkpKTsKKwkJCX0KKworCQkJLyoK KwkJCSAqIERvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcgYWJvdXQgTm90aWNlUmVzcG9uc2UgYW5k CisJCQkgKiBOb3RpZnlSZXNwb25zZSBhcyB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIg ZG9lc24ndCBuZWVkCisJCQkgKiB0byBzZW5kIG1lc3NhZ2VzIHRvIHRoZSBjbGllbnQuCisJCQkg Ki8KKwkJY2FzZSAnTic6CisJCWNhc2UgJ0EnOgorCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJ CWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgbWVzc2FnZSB0eXBlIHJlY2VpdmVkIGZyb20gbG9n aWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXI6ICVjIChtZXNzYWdlIGxlbmd0 aCAlZCBieXRlcykiLAorCQkJCSBtc2d0eXBlLCBtc2ctPmxlbik7CisJfQorfQorCisvKgorICog SGFuZGxlIGFueSBxdWV1ZWQgcHJvdG9jb2wgbWVzc2FnZXMgcmVjZWl2ZWQgZnJvbSBwYXJhbGxl bCBhcHBseSB3b3JrZXJzLgorICovCit2b2lkCitIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZXMo dm9pZCkKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKwlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisK KwlzdGF0aWMgTWVtb3J5Q29udGV4dCBocGFtX2NvbnRleHQgPSBOVUxMOworCisJLyoKKwkgKiBU aGlzIGlzIGludm9rZWQgZnJvbSBQcm9jZXNzSW50ZXJydXB0cygpLCBhbmQgc2luY2Ugc29tZSBv ZiB0aGUKKwkgKiBmdW5jdGlvbnMgaXQgY2FsbHMgY29udGFpbiBDSEVDS19GT1JfSU5URVJSVVBU UygpLCB0aGVyZSBpcyBhIHBvdGVudGlhbAorCSAqIGZvciByZWN1cnNpdmUgY2FsbHMgaWYgbW9y ZSBzaWduYWxzIGFyZSByZWNlaXZlZCB3aGlsZSB0aGlzIHJ1bnMuIEl0J3MKKwkgKiB1bmNsZWFy IHRoYXQgcmVjdXJzaXZlIGVudHJ5IHdvdWxkIGJlIHNhZmUsIGFuZCBpdCBkb2Vzbid0IHNlZW0g dXNlZnVsCisJICogZXZlbiBpZiBpdCBpcyBzYWZlLCBzbyBsZXQncyBibG9jayBpbnRlcnJ1cHRz IHVudGlsIGRvbmUuCisJICovCisJSE9MRF9JTlRFUlJVUFRTKCk7CisKKwkvKgorCSAqIE1vcmVv dmVyLCBDdXJyZW50TWVtb3J5Q29udGV4dCBtaWdodCBiZSBwb2ludGluZyBhbG1vc3QgYW55d2hl cmUuIFdlCisJICogZG9uJ3Qgd2FudCB0byByaXNrIGxlYWtpbmcgZGF0YSBpbnRvIGxvbmctbGl2 ZWQgY29udGV4dHMsIHNvIGxldCdzIGRvCisJICogb3VyIHdvcmsgaGVyZSBpbiBhIHByaXZhdGUg Y29udGV4dCB0aGF0IHdlIGNhbiByZXNldCBvbiBlYWNoIHVzZS4KKwkgKi8KKwlpZiAoIWhwYW1f Y29udGV4dCkJCQkvKiBmaXJzdCB0aW1lIHRocm91Z2g/ICovCisJCWhwYW1fY29udGV4dCA9IEFs bG9jU2V0Q29udGV4dENyZWF0ZShUb3BNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJCQkgIkhhbmRs ZVBhcmFsbGVsQXBwbHlNZXNzYWdlcyIsCisJCQkJCQkJCQkJCSBBTExPQ1NFVF9ERUZBVUxUX1NJ WkVTKTsKKwllbHNlCisJCU1lbW9yeUNvbnRleHRSZXNldChocGFtX2NvbnRleHQpOworCisJb2xk Y29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhocGFtX2NvbnRleHQpOworCisJUGFyYWxs ZWxBcHBseU1lc3NhZ2VQZW5kaW5nID0gZmFsc2U7CisKKwlmb3JlYWNoKGxjLCBQYXJhbGxlbEFw cGx5V29ya2VyUG9vbCkKKwl7CisJCXNobV9tcV9yZXN1bHQgcmVzOworCQlTaXplCQluYnl0ZXM7 CisJCXZvaWQJICAgKmRhdGE7CisJCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9IChQ YXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKSBsZmlyc3QobGMpOworCisJCS8qCisJCSAqIFRoZSBs ZWFkZXIgd2lsbCBkZXRhY2ggZnJvbSB0aGUgZXJyb3IgcXVldWUgYW5kIHNldCBpdCB0byBOVUxM CisJCSAqIGJlZm9yZSBwcmVwYXJpbmcgdG8gc3RvcCBhbGwgcGFyYWxsZWwgYXBwbHkgd29ya2Vy cywgc28gd2UgZG9uJ3QKKwkJICogbmVlZCB0byBoYW5kbGUgZXJyb3IgbWVzc2FnZXMgYW55bW9y ZS4gU2VlCisJCSAqIGxvZ2ljYWxyZXBfd29ya2VyX2RldGFjaC4KKwkJICovCisJCWlmICghd2lu Zm8tPmVycm9yX21xX2hhbmRsZSkKKwkJCWNvbnRpbnVlOworCisJCXJlcyA9IHNobV9tcV9yZWNl aXZlKHdpbmZvLT5lcnJvcl9tcV9oYW5kbGUsICZuYnl0ZXMsICZkYXRhLCB0cnVlKTsKKworCQlp ZiAocmVzID09IFNITV9NUV9XT1VMRF9CTE9DSykKKwkJCWNvbnRpbnVlOworCQllbHNlIGlmIChy ZXMgPT0gU0hNX01RX1NVQ0NFU1MpCisJCXsKKwkJCVN0cmluZ0luZm9EYXRhIG1zZzsKKworCQkJ aW5pdFN0cmluZ0luZm8oJm1zZyk7CisJCQlhcHBlbmRCaW5hcnlTdHJpbmdJbmZvKCZtc2csIGRh dGEsIG5ieXRlcyk7CisJCQlIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZSgmbXNnKTsKKwkJCXBm cmVlKG1zZy5kYXRhKTsKKwkJfQorCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJy Y29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVy cm1zZygibG9zdCBjb25uZWN0aW9uIHRvIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVs IGFwcGx5IHdvcmtlciIpKSk7CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRl eHQpOworCisJLyogTWlnaHQgYXMgd2VsbCBjbGVhciB0aGUgY29udGV4dCBvbiBvdXIgd2F5IG91 dCAqLworCU1lbW9yeUNvbnRleHRSZXNldChocGFtX2NvbnRleHQpOworCisJUkVTVU1FX0lOVEVS UlVQVFMoKTsKK30KKworLyoKKyAqIFNlbmQgdGhlIGRhdGEgdG8gdGhlIHNwZWNpZmllZCBwYXJh bGxlbCBhcHBseSB3b3JrZXIgdmlhIHNoYXJlZC1tZW1vcnkKKyAqIHF1ZXVlLgorICoKKyAqIFJl dHVybnMgZmFsc2UgaWYgdGhlIGF0dGVtcHQgdG8gc2VuZCBkYXRhIHZpYSBzaGFyZWQgbWVtb3J5 IHRpbWVzIG91dCwgdHJ1ZQorICogb3RoZXJ3aXNlLgorICovCitib29sCitwYV9zZW5kX2RhdGEo UGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXplIG5ieXRlcywgY29uc3Qgdm9pZCAq ZGF0YSkKK3sKKwlpbnQJCQlyYzsKKwlzaG1fbXFfcmVzdWx0IHJlc3VsdDsKKwlUaW1lc3RhbXBU eiBzdGFydFRpbWUgPSAwOworCisJQXNzZXJ0KCFJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CisJQXNz ZXJ0KCF3aW5mby0+c2VyaWFsaXplX2NoYW5nZXMpOworCisvKgorICogVGhpcyB0aW1lb3V0IGlz IGEgYml0IGFyYml0cmFyeSBidXQgdGVzdGluZyByZXZlYWxlZCB0aGF0IGl0IGlzIHN1ZmZpY2ll bnQKKyAqIHRvIHNlbmQgdGhlIG1lc3NhZ2UgdW5sZXNzIHRoZSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgaXMgd2FpdGluZyBvbiBzb21lCisgKiBsb2NrIG9yIHRoZXJlIGlzIGEgc2VyaW91cyByZXNv dXJjZSBjcnVuY2guIFNlZSB0aGUgY29tbWVudHMgYXRvcCB0aGlzIGZpbGUKKyAqIHRvIGtub3cg d2h5IHdlIGFyZSB1c2luZyBhIG5vbi1ibG9ja2luZyB3YXkgdG8gc2VuZCB0aGUgbWVzc2FnZS4K KyAqLworI2RlZmluZSBTSE1fU0VORF9SRVRSWV9JTlRFUlZBTF9NUyAxMDAwCisjZGVmaW5lIFNI TV9TRU5EX1RJTUVPVVRfTVMJCSgxMDAwMCAtIFNITV9TRU5EX1JFVFJZX0lOVEVSVkFMX01TKQor CisJZm9yICg7OykKKwl7CisJCXJlc3VsdCA9IHNobV9tcV9zZW5kKHdpbmZvLT5tcV9oYW5kbGUs IG5ieXRlcywgZGF0YSwgdHJ1ZSwgdHJ1ZSk7CisKKwkJaWYgKHJlc3VsdCA9PSBTSE1fTVFfU1VD Q0VTUykKKwkJCXJldHVybiB0cnVlOworCQllbHNlIGlmIChyZXN1bHQgPT0gU0hNX01RX0RFVEFD SEVEKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9U X0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJtc2coImNvdWxkIG5vdCBzZW5kIGRh dGEgdG8gc2hhcmVkLW1lbW9yeSBxdWV1ZSIpKSk7CisKKwkJQXNzZXJ0KHJlc3VsdCA9PSBTSE1f TVFfV09VTERfQkxPQ0spOworCisJCS8qIFdhaXQgYmVmb3JlIHJldHJ5aW5nLiAqLworCQlyYyA9 IFdhaXRMYXRjaChNeUxhdGNoLAorCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwg V0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJICAgU0hNX1NFTkRfUkVUUllfSU5URVJWQUxfTVMs CisJCQkJCSAgIFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBMWV9TVEFURV9DSEFOR0Up OworCisJCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKKwkJeworCQkJUmVzZXRMYXRjaChNeUxhdGNo KTsKKwkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCX0KKworCQlpZiAoc3RhcnRUaW1lID09 IDApCisJCQlzdGFydFRpbWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisJCWVsc2UgaWYgKFRp bWVzdGFtcERpZmZlcmVuY2VFeGNlZWRzKHN0YXJ0VGltZSwgR2V0Q3VycmVudFRpbWVzdGFtcCgp LAorCQkJCQkJCQkJCQlTSE1fU0VORF9USU1FT1VUX01TKSkKKwkJeworCQkJZXJlcG9ydChMT0cs CisJCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIHdpbGwgc2Vy aWFsaXplIHRoZSByZW1haW5pbmcgY2hhbmdlcyBvZiByZW1vdGUgdHJhbnNhY3Rpb24gJXUgdG8g YSBmaWxlIiwKKwkJCQkJCQl3aW5mby0+c2hhcmVkLT54aWQpKSk7CisJCQlyZXR1cm4gZmFsc2U7 CisJCX0KKwl9Cit9CisKKy8qCisgKiBTd2l0Y2ggdG8gUEFSVElBTF9TRVJJQUxJWkUgbW9kZSBm b3IgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gLS0gdGhpcyBtZWFucworICogdGhhdCB0aGUgY3Vy cmVudCBkYXRhIGFuZCBhbnkgc3Vic2VxdWVudCBkYXRhIGZvciB0aGlzIHRyYW5zYWN0aW9uIHdp bGwgYmUKKyAqIHNlcmlhbGl6ZWQgdG8gYSBmaWxlLiBUaGlzIGlzIGRvbmUgdG8gcHJldmVudCBw b3NzaWJsZSBkZWFkbG9ja3Mgd2l0aAorICogYW5vdGhlciBwYXJhbGxlbCBhcHBseSB3b3JrZXIg KHJlZmVyIHRvIHRoZSBjb21tZW50cyBhdG9wIHRoaXMgZmlsZSkuCisgKi8KK3ZvaWQKK3BhX3N3 aXRjaF90b19wYXJ0aWFsX3NlcmlhbGl6ZShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8s CisJCQkJCQkJICAgYm9vbCBzdHJlYW1fbG9ja2VkKQoreworCS8qCisJICogVGhlIHBhcmFsbGVs IGFwcGx5IHdvcmtlciBjb3VsZCBiZSBzdHVjayBmb3Igc29tZSByZWFzb24gKHNheSB3YWl0aW5n CisJICogb24gc29tZSBsb2NrIGJ5IG90aGVyIGJhY2tlbmQpLCBzbyBzdG9wIHRyeWluZyB0byBz ZW5kIGRhdGEgZGlyZWN0bHkgdG8KKwkgKiBpdCBhbmQgc3RhcnQgc2VyaWFsaXppbmcgZGF0YSB0 byB0aGUgZmlsZSBpbnN0ZWFkLgorCSAqLworCXdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcyA9IHRy dWU7CisKKwkvKiBJbml0aWFsaXplIHRoZSBzdHJlYW0gZmlsZXNldC4gKi8KKwlzdHJlYW1fc3Rh cnRfaW50ZXJuYWwod2luZm8tPnNoYXJlZC0+eGlkLCB0cnVlKTsKKworCS8qCisJICogQWNxdWly ZXMgdGhlIHN0cmVhbSBsb2NrIGlmIG5vdCBhbHJlYWR5IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBw YXJhbGxlbAorCSAqIGFwcGx5IHdvcmtlciB3aWxsIHdhaXQgZm9yIHRoZSBsZWFkZXIgdG8gcmVs ZWFzZSB0aGUgc3RyZWFtIGxvY2sgdW50aWwKKwkgKiB0aGUgZW5kIG9mIHRoZSB0cmFuc2FjdGlv bi4KKwkgKi8KKwlpZiAoIXN0cmVhbV9sb2NrZWQpCisJCXBhX2xvY2tfc3RyZWFtKHdpbmZvLT5z aGFyZWQtPnhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisKKwlwYV9zZXRfZmlsZXNldF9zdGF0 ZSh3aW5mby0+c2hhcmVkLCBGU19TRVJJQUxJWkVfSU5fUFJPR1JFU1MpOworfQorCisvKgorICog V2FpdCB1bnRpbCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyJ3MgdHJhbnNhY3Rpb24gc3RhdGUg aGFzIHJlYWNoZWQgb3IKKyAqIGV4Y2VlZGVkIHRoZSBnaXZlbiB4YWN0X3N0YXRlLgorICovCitz dGF0aWMgdm9pZAorcGFfd2FpdF9mb3JfeGFjdF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2VySW5m byAqd2luZm8sCisJCQkJCSAgIFBhcmFsbGVsVHJhbnNTdGF0ZSB4YWN0X3N0YXRlKQoreworCWZv ciAoOzspCisJeworCQkvKgorCQkgKiBTdG9wIGlmIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBoYXMg cmVhY2hlZCBvciBleGNlZWRlZCB0aGUgZ2l2ZW4KKwkJICogeGFjdF9zdGF0ZS4KKwkJICovCisJ CWlmIChwYV9nZXRfeGFjdF9zdGF0ZSh3aW5mby0+c2hhcmVkKSA+PSB4YWN0X3N0YXRlKQorCQkJ YnJlYWs7CisKKwkJLyogV2FpdCB0byBiZSBzaWduYWxsZWQuICovCisJCSh2b2lkKSBXYWl0TGF0 Y2goTXlMYXRjaCwKKwkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9P Tl9QTV9ERUFUSCwKKwkJCQkJCSAxMEwsCisJCQkJCQkgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFM TEVMX0FQUExZX1NUQVRFX0NIQU5HRSk7CisKKwkJLyogUmVzZXQgdGhlIGxhdGNoIHNvIHdlIGRv bid0IHNwaW4uICovCisJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisKKwkJLyogQW4gaW50ZXJydXB0 IG1heSBoYXZlIG9jY3VycmVkIHdoaWxlIHdlIHdlcmUgd2FpdGluZy4gKi8KKwkJQ0hFQ0tfRk9S X0lOVEVSUlVQVFMoKTsKKwl9Cit9CisKKy8qCisgKiBXYWl0IHVudGlsIHRoZSBwYXJhbGxlbCBh cHBseSB3b3JrZXIncyB0cmFuc2FjdGlvbiBmaW5pc2hlcy4KKyAqLworc3RhdGljIHZvaWQKK3Bh X3dhaXRfZm9yX3hhY3RfZmluaXNoKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykKK3sK KwkvKgorCSAqIFdhaXQgdW50aWwgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBzZXQgdGhlIHN0 YXRlIHRvCisJICogUEFSQUxMRUxfVFJBTlNfU1RBUlRFRCB3aGljaCBtZWFucyBpdCBoYXMgYWNx dWlyZWQgdGhlIHRyYW5zYWN0aW9uCisJICogbG9jay4gVGhpcyBpcyB0byBwcmV2ZW50IGxlYWRl ciBhcHBseSB3b3JrZXIgZnJvbSBhY3F1aXJpbmcgdGhlCisJICogdHJhbnNhY3Rpb24gbG9jayBl YXJsaWVyIHRoYW4gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkgKi8KKwlwYV93YWl0X2Zv cl94YWN0X3N0YXRlKHdpbmZvLCBQQVJBTExFTF9UUkFOU19TVEFSVEVEKTsKKworCS8qCisJICog V2FpdCBmb3IgdGhlIHRyYW5zYWN0aW9uIGxvY2sgdG8gYmUgcmVsZWFzZWQuIFRoaXMgaXMgcmVx dWlyZWQgdG8KKwkgKiBkZXRlY3QgZGVhZGxvY2sgYW1vbmcgbGVhZGVyIGFuZCBwYXJhbGxlbCBh cHBseSB3b3JrZXJzLiBSZWZlciB0byB0aGUKKwkgKiBjb21tZW50cyBhdG9wIHRoaXMgZmlsZS4K KwkgKi8KKwlwYV9sb2NrX3RyYW5zYWN0aW9uKHdpbmZvLT5zaGFyZWQtPnhpZCwgQWNjZXNzU2hh cmVMb2NrKTsKKwlwYV91bmxvY2tfdHJhbnNhY3Rpb24od2luZm8tPnNoYXJlZC0+eGlkLCBBY2Nl c3NTaGFyZUxvY2spOworCisJLyoKKwkgKiBDaGVjayBpZiB0aGUgc3RhdGUgYmVjb21lcyBQQVJB TExFTF9UUkFOU19GSU5JU0hFRCBpbiBjYXNlIHRoZSBwYXJhbGxlbAorCSAqIGFwcGx5IHdvcmtl ciBmYWlsZWQgd2hpbGUgYXBwbHlpbmcgY2hhbmdlcyBjYXVzaW5nIHRoZSBsb2NrIHRvIGJlCisJ ICogcmVsZWFzZWQuCisJICovCisJaWYgKHBhX2dldF94YWN0X3N0YXRlKHdpbmZvLT5zaGFyZWQp ICE9IFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVEKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJj b2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJt c2coImxvc3QgY29ubmVjdGlvbiB0byB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBh cHBseSB3b3JrZXIiKSkpOworfQorCisvKgorICogU2V0IHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBm b3IgYSBnaXZlbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKi8KK3ZvaWQKK3BhX3NldF94YWN0 X3N0YXRlKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKndzaGFyZWQsCisJCQkJICBQYXJhbGxl bFRyYW5zU3RhdGUgeGFjdF9zdGF0ZSkKK3sKKwlTcGluTG9ja0FjcXVpcmUoJndzaGFyZWQtPm11 dGV4KTsKKwl3c2hhcmVkLT54YWN0X3N0YXRlID0geGFjdF9zdGF0ZTsKKwlTcGluTG9ja1JlbGVh c2UoJndzaGFyZWQtPm11dGV4KTsKK30KKworLyoKKyAqIEdldCB0aGUgdHJhbnNhY3Rpb24gc3Rh dGUgZm9yIGEgZ2l2ZW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCitzdGF0aWMgUGFyYWxs ZWxUcmFuc1N0YXRlCitwYV9nZXRfeGFjdF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVk ICp3c2hhcmVkKQoreworCVBhcmFsbGVsVHJhbnNTdGF0ZSB4YWN0X3N0YXRlOworCisJU3Bpbkxv Y2tBY3F1aXJlKCZ3c2hhcmVkLT5tdXRleCk7CisJeGFjdF9zdGF0ZSA9IHdzaGFyZWQtPnhhY3Rf c3RhdGU7CisJU3BpbkxvY2tSZWxlYXNlKCZ3c2hhcmVkLT5tdXRleCk7CisKKwlyZXR1cm4geGFj dF9zdGF0ZTsKK30KKworLyoKKyAqIENhY2hlIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaW5m b3JtYXRpb24uCisgKi8KK3ZvaWQKK3BhX3NldF9zdHJlYW1fYXBwbHlfd29ya2VyKFBhcmFsbGVs QXBwbHlXb3JrZXJJbmZvICp3aW5mbykKK3sKKwlzdHJlYW1fYXBwbHlfd29ya2VyID0gd2luZm87 Cit9CisKKy8qCisgKiBGb3JtIGEgdW5pcXVlIHNhdmVwb2ludCBuYW1lIGZvciB0aGUgc3RyZWFt aW5nIHRyYW5zYWN0aW9uLgorICoKKyAqIE5vdGUgdGhhdCBkaWZmZXJlbnQgc3Vic2NyaXB0aW9u cyBmb3IgcHVibGljYXRpb25zIG9uIGRpZmZlcmVudCBub2RlcyBjYW4KKyAqIHJlY2VpdmUgc2Ft ZSByZW1vdGUgeGlkLCBzbyB3ZSBuZWVkIHRvIHVzZSBzdWJzY3JpcHRpb24gaWQgYWxvbmcgd2l0 aCBpdC4KKyAqCisgKiBSZXR1cm5zIHRoZSBuYW1lIGluIHRoZSBzdXBwbGllZCBidWZmZXIuCisg Ki8KK3N0YXRpYyB2b2lkCitwYV9zYXZlcG9pbnRfbmFtZShPaWQgc3Vib2lkLCBUcmFuc2FjdGlv bklkIHhpZCwgY2hhciAqc3BuYW1lLCBTaXplIHN6c3ApCit7CisJc25wcmludGYoc3BuYW1lLCBz enNwLCAicGdfc3BfJXVfJXUiLCBzdWJvaWQsIHhpZCk7Cit9CisKKy8qCisgKiBEZWZpbmUgYSBz YXZlcG9pbnQgZm9yIGEgc3VieGFjdCBpbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaWYgbmVlZGVk LgorICoKKyAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgY2FuIGZpZ3VyZSBvdXQgaWYgYSBu ZXcgc3VidHJhbnNhY3Rpb24gd2FzCisgKiBzdGFydGVkIGJ5IGNoZWNraW5nIGlmIHRoZSBuZXcg Y2hhbmdlIGFycml2ZWQgd2l0aCBhIGRpZmZlcmVudCB4aWQuIEluIHRoYXQKKyAqIGNhc2UgZGVm aW5lIGEgbmFtZWQgc2F2ZXBvaW50LCBzbyB0aGF0IHdlIGFyZSBhYmxlIHRvIHJvbGxiYWNrIHRv IGl0CisgKiBpZiByZXF1aXJlZC4KKyAqLwordm9pZAorcGFfc3RhcnRfc3VidHJhbnMoVHJhbnNh Y3Rpb25JZCBjdXJyZW50X3hpZCwgVHJhbnNhY3Rpb25JZCB0b3BfeGlkKQoreworCWlmIChjdXJy ZW50X3hpZCAhPSB0b3BfeGlkICYmCisJCSFsaXN0X21lbWJlcl94aWQoc3VieGFjdGxpc3QsIGN1 cnJlbnRfeGlkKSkKKwl7CisJCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCQljaGFyCQlzcG5hbWVb TkFNRURBVEFMRU5dOworCisJCXBhX3NhdmVwb2ludF9uYW1lKE15U3Vic2NyaXB0aW9uLT5vaWQs IGN1cnJlbnRfeGlkLAorCQkJCQkJICBzcG5hbWUsIHNpemVvZihzcG5hbWUpKTsKKworCQllbG9n KERFQlVHMSwgImRlZmluaW5nIHNhdmVwb2ludCAlcyBpbiBsb2dpY2FsIHJlcGxpY2F0aW9uIHBh cmFsbGVsIGFwcGx5IHdvcmtlciIsIHNwbmFtZSk7CisKKwkJLyogV2UgbXVzdCBiZSBpbiB0cmFu c2FjdGlvbiBibG9jayB0byBkZWZpbmUgdGhlIFNBVkVQT0lOVC4gKi8KKwkJaWYgKCFJc1RyYW5z YWN0aW9uQmxvY2soKSkKKwkJeworCQkJaWYgKCFJc1RyYW5zYWN0aW9uU3RhdGUoKSkKKwkJCQlT dGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCQlCZWdpblRyYW5zYWN0aW9uQmxvY2soKTsK KwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQl9CisKKwkJRGVmaW5lU2F2ZXBvaW50 KHNwbmFtZSk7CisKKwkJLyoKKwkJICogQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kIGlzIG5lZWRl ZCB0byBzdGFydCBhIHN1YnRyYW5zYWN0aW9uIGFmdGVyCisJCSAqIGlzc3VpbmcgYSBTQVZFUE9J TlQgaW5zaWRlIGEgdHJhbnNhY3Rpb24gYmxvY2sgKHNlZQorCQkgKiBTdGFydFN1YlRyYW5zYWN0 aW9uKCkpLgorCQkgKi8KKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJb2xkY3R4 ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFRvcFRyYW5zYWN0aW9uQ29udGV4dCk7CisJCXN1Ynhh Y3RsaXN0ID0gbGFwcGVuZF94aWQoc3VieGFjdGxpc3QsIGN1cnJlbnRfeGlkKTsKKwkJTWVtb3J5 Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJfQorfQorCisvKiBSZXNldCB0aGUgbGlzdCB0aGF0 IG1haW50YWlucyBzdWJ0cmFuc2FjdGlvbnMuICovCit2b2lkCitwYV9yZXNldF9zdWJ0cmFucyh2 b2lkKQoreworCS8qCisJICogV2UgZG9uJ3QgbmVlZCB0byBmcmVlIHRoaXMgZXhwbGljaXRseSBh cyB0aGUgYWxsb2NhdGVkIG1lbW9yeSB3aWxsIGJlCisJICogZnJlZWQgYXQgdGhlIHRyYW5zYWN0 aW9uIGVuZC4KKwkgKi8KKwlzdWJ4YWN0bGlzdCA9IE5JTDsKK30KKworLyoKKyAqIEhhbmRsZSBT VFJFQU0gQUJPUlQgbWVzc2FnZSB3aGVuIHRoZSB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCBpbiBh IHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXIuCisgKi8KK3ZvaWQKK3BhX3N0cmVhbV9hYm9ydChM b2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9kYXRhKQoreworCVRyYW5zYWN0aW9uSWQg eGlkID0gYWJvcnRfZGF0YS0+eGlkOworCVRyYW5zYWN0aW9uSWQgc3VieGlkID0gYWJvcnRfZGF0 YS0+c3VieGlkOworCisJLyoKKwkgKiBVcGRhdGUgb3JpZ2luIHN0YXRlIHNvIHdlIGNhbiByZXN0 YXJ0IHN0cmVhbWluZyBmcm9tIGNvcnJlY3QgcG9zaXRpb24KKwkgKiBpbiBjYXNlIG9mIGNyYXNo LgorCSAqLworCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fbHNuID0gYWJvcnRfZGF0YS0+YWJv cnRfbHNuOworCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fdGltZXN0YW1wID0gYWJvcnRfZGF0 YS0+YWJvcnRfdGltZTsKKworCS8qCisJICogSWYgdGhlIHR3byBYSURzIGFyZSB0aGUgc2FtZSwg aXQncyBpbiBmYWN0IGFib3J0IG9mIHRvcGxldmVsIHhhY3QsIHNvCisJICoganVzdCBmcmVlIHRo ZSBzdWJ4YWN0bGlzdC4KKwkgKi8KKwlpZiAoc3VieGlkID09IHhpZCkKKwl7CisJCXBhX3NldF94 YWN0X3N0YXRlKE15UGFyYWxsZWxTaGFyZWQsIFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVEKTsKKwor CQkvKgorCQkgKiBSZWxlYXNlIHRoZSBsb2NrIGFzIHdlIG1pZ2h0IGJlIHByb2Nlc3NpbmcgYW4g ZW1wdHkgc3RyZWFtaW5nCisJCSAqIHRyYW5zYWN0aW9uIGluIHdoaWNoIGNhc2UgdGhlIGxvY2sg d29uJ3QgYmUgcmVsZWFzZWQgZHVyaW5nCisJCSAqIHRyYW5zYWN0aW9uIHJvbGxiYWNrLgorCQkg KgorCQkgKiBOb3RlIHRoYXQgaXQncyBvayB0byByZWxlYXNlIHRoZSB0cmFuc2FjdGlvbiBsb2Nr IGJlZm9yZSBhYm9ydGluZworCQkgKiB0aGUgdHJhbnNhY3Rpb24gYmVjYXVzZSBldmVuIGlmIHRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZGllcyBkdWUKKwkJICogdG8gY3Jhc2ggb3Igc29tZSBv dGhlciByZWFzb24sIHN1Y2ggYSB0cmFuc2FjdGlvbiB3b3VsZCBzdGlsbCBiZQorCQkgKiBjb25z aWRlcmVkIGFib3J0ZWQgYW55d2F5LgorCQkgKi8KKwkJcGFfdW5sb2NrX3RyYW5zYWN0aW9uKHhp ZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisKKwkJQWJvcnRDdXJyZW50VHJhbnNhY3Rpb24oKTsK KworCQlpZiAoSXNUcmFuc2FjdGlvbkJsb2NrKCkpCisJCXsKKwkJCUVuZFRyYW5zYWN0aW9uQmxv Y2soZmFsc2UpOworCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCX0KKworCQlwYV9y ZXNldF9zdWJ0cmFucygpOworCisJCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwg TlVMTCk7CisJfQorCWVsc2UKKwl7CisJCS8qIE9LLCBzbyBpdCdzIGEgc3VieGFjdC4gUm9sbGJh Y2sgdG8gdGhlIHNhdmVwb2ludC4gKi8KKwkJaW50CQkJaTsKKwkJY2hhcgkJc3BuYW1lW05BTUVE QVRBTEVOXTsKKworCQlwYV9zYXZlcG9pbnRfbmFtZShNeVN1YnNjcmlwdGlvbi0+b2lkLCBzdWJ4 aWQsIHNwbmFtZSwgc2l6ZW9mKHNwbmFtZSkpOworCisJCWVsb2coREVCVUcxLCAicm9sbGluZyBi YWNrIHRvIHNhdmVwb2ludCAlcyBpbiBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciIsIHNwbmFtZSk7CisKKwkJLyoKKwkJICogU2VhcmNoIHRoZSBzdWJ4YWN0bGlzdCwg ZGV0ZXJtaW5lIHRoZSBvZmZzZXQgdHJhY2tlZCBmb3IgdGhlCisJCSAqIHN1YnhhY3QsIGFuZCB0 cnVuY2F0ZSB0aGUgbGlzdC4KKwkJICoKKwkJICogTm90ZSB0aGF0IGZvciBhbiBlbXB0eSBzdWIt dHJhbnNhY3Rpb24gd2Ugd29uJ3QgZmluZCB0aGUgc3VieGlkCisJCSAqIGhlcmUuCisJCSAqLwor CQlmb3IgKGkgPSBsaXN0X2xlbmd0aChzdWJ4YWN0bGlzdCkgLSAxOyBpID49IDA7IGktLSkKKwkJ eworCQkJVHJhbnNhY3Rpb25JZCB4aWRfdG1wID0gbGZpcnN0X3hpZChsaXN0X250aF9jZWxsKHN1 YnhhY3RsaXN0LCBpKSk7CisKKwkJCWlmICh4aWRfdG1wID09IHN1YnhpZCkKKwkJCXsKKwkJCQlS b2xsYmFja1RvU2F2ZXBvaW50KHNwbmFtZSk7CisJCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5k KCk7CisJCQkJc3VieGFjdGxpc3QgPSBsaXN0X3RydW5jYXRlKHN1YnhhY3RsaXN0LCBpKTsKKwkJ CQlicmVhazsKKwkJCX0KKwkJfQorCX0KK30KKworLyoKKyAqIFNldCB0aGUgZmlsZXNldCBzdGF0 ZSBmb3IgYSBwYXJ0aWN1bGFyIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gVGhlIGZpbGVzZXQKKyAq IHdpbGwgYmUgc2V0IG9uY2UgdGhlIGxlYWRlciB3b3JrZXIgc2VyaWFsaXplZCBhbGwgY2hhbmdl cyB0byB0aGUgZmlsZQorICogc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBieSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIuCisgKi8KK3ZvaWQKK3BhX3NldF9maWxlc2V0X3N0YXRlKFBhcmFsbGVsQXBwbHlX b3JrZXJTaGFyZWQgKndzaGFyZWQsCisJCQkJCSBQYXJ0aWFsRmlsZVNldFN0YXRlIGZpbGVzZXRf c3RhdGUpCit7CisJU3BpbkxvY2tBY3F1aXJlKCZ3c2hhcmVkLT5tdXRleCk7CisJd3NoYXJlZC0+ ZmlsZXNldF9zdGF0ZSA9IGZpbGVzZXRfc3RhdGU7CisKKwlpZiAoZmlsZXNldF9zdGF0ZSA9PSBG U19TRVJJQUxJWkVfRE9ORSkKKwl7CisJCUFzc2VydChhbV9sZWFkZXJfYXBwbHlfd29ya2VyKCkp OworCQlBc3NlcnQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCk7CisJCXdzaGFy ZWQtPmZpbGVzZXQgPSAqTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldDsKKwl9CisK KwlTcGluTG9ja1JlbGVhc2UoJndzaGFyZWQtPm11dGV4KTsKK30KKworLyoKKyAqIEdldCB0aGUg ZmlsZXNldCBzdGF0ZSBmb3IgdGhlIGN1cnJlbnQgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICov CitzdGF0aWMgUGFydGlhbEZpbGVTZXRTdGF0ZQorcGFfZ2V0X2ZpbGVzZXRfc3RhdGUodm9pZCkK K3sKKwlQYXJ0aWFsRmlsZVNldFN0YXRlIGZpbGVzZXRfc3RhdGU7CisKKwlBc3NlcnQoYW1fcGFy YWxsZWxfYXBwbHlfd29ya2VyKCkpOworCisJU3BpbkxvY2tBY3F1aXJlKCZNeVBhcmFsbGVsU2hh cmVkLT5tdXRleCk7CisJZmlsZXNldF9zdGF0ZSA9IE15UGFyYWxsZWxTaGFyZWQtPmZpbGVzZXRf c3RhdGU7CisJU3BpbkxvY2tSZWxlYXNlKCZNeVBhcmFsbGVsU2hhcmVkLT5tdXRleCk7CisKKwly ZXR1cm4gZmlsZXNldF9zdGF0ZTsKK30KKworLyoKKyAqIEhlbHBlciBmdW5jdGlvbnMgdG8gYWNx dWlyZSBhbmQgcmVsZWFzZSBhIGxvY2sgZm9yIGVhY2ggc3RyZWFtIGJsb2NrLgorICoKKyAqIFNl dCBsb2NrdGFnX2ZpZWxkNCB0byBQQVJBTExFTF9BUFBMWV9MT0NLX1NUUkVBTSB0byBpbmRpY2F0 ZSB0aGF0IGl0J3MgYQorICogc3RyZWFtIGxvY2suCisgKgorICogUmVmZXIgdG8gdGhlIGNvbW1l bnRzIGF0b3AgdGhpcyBmaWxlIHRvIHNlZSBob3cgdGhlIHN0cmVhbSBsb2NrIGlzIHVzZWQuCisg Ki8KK3ZvaWQKK3BhX2xvY2tfc3RyZWFtKFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2Nr bW9kZSkKK3sKKwlMb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24oTXlMb2dpY2FsUmVwV29y a2VyLT5zdWJpZCwgeGlkLAorCQkJCQkJCQkgICBQQVJBTExFTF9BUFBMWV9MT0NLX1NUUkVBTSwg bG9ja21vZGUpOworfQorCit2b2lkCitwYV91bmxvY2tfc3RyZWFtKFRyYW5zYWN0aW9uSWQgeGlk LCBMT0NLTU9ERSBsb2NrbW9kZSkKK3sKKwlVbmxvY2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lv bihNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQsCisJCQkJCQkJCQkgUEFSQUxMRUxfQVBQ TFlfTE9DS19TVFJFQU0sIGxvY2ttb2RlKTsKK30KKworLyoKKyAqIEhlbHBlciBmdW5jdGlvbnMg dG8gYWNxdWlyZSBhbmQgcmVsZWFzZSBhIGxvY2sgZm9yIGVhY2ggbG9jYWwgdHJhbnNhY3Rpb24K KyAqIGFwcGx5LgorICoKKyAqIFNldCBsb2NrdGFnX2ZpZWxkNCB0byBQQVJBTExFTF9BUFBMWV9M T0NLX1hBQ1QgdG8gaW5kaWNhdGUgdGhhdCBpdCdzIGEKKyAqIHRyYW5zYWN0aW9uIGxvY2suCisg KgorICogTm90ZSB0aGF0IGFsbCB0aGUgY2FsbGVycyBtdXN0IHBhc3MgYSByZW1vdGUgdHJhbnNh Y3Rpb24gSUQgaW5zdGVhZCBvZiBhCisgKiBsb2NhbCB0cmFuc2FjdGlvbiBJRCBhcyB4aWQuIFRo aXMgaXMgYmVjYXVzZSB0aGUgbG9jYWwgdHJhbnNhY3Rpb24gSUQgd2lsbAorICogb25seSBiZSBh c3NpZ25lZCB3aGlsZSBhcHBseWluZyB0aGUgZmlyc3QgY2hhbmdlIGluIHRoZSBwYXJhbGxlbCBh cHBseSBidXQKKyAqIGl0J3MgcG9zc2libGUgdGhhdCB0aGUgZmlyc3QgY2hhbmdlIGluIHRoZSBw YXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgYmxvY2tlZAorICogYnkgYSBjb25jdXJyZW50bHkgZXhl Y3V0aW5nIHRyYW5zYWN0aW9uIGluIGFub3RoZXIgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBXZQor ICogY2FuIG9ubHkgY29tbXVuaWNhdGUgdGhlIGxvY2FsIHRyYW5zYWN0aW9uIGlkIHRvIHRoZSBs ZWFkZXIgYWZ0ZXIgYXBwbHlpbmcKKyAqIHRoZSBmaXJzdCBjaGFuZ2Ugc28gaXQgd29uJ3QgYmUg YWJsZSB0byB3YWl0IGFmdGVyIHNlbmRpbmcgdGhlIHhhY3QgZmluaXNoCisgKiBjb21tYW5kIHVz aW5nIHRoaXMgbG9jay4KKyAqCisgKiBSZWZlciB0byB0aGUgY29tbWVudHMgYXRvcCB0aGlzIGZp bGUgdG8gc2VlIGhvdyB0aGUgdHJhbnNhY3Rpb24gbG9jayBpcworICogdXNlZC4KKyAqLwordm9p ZAorcGFfbG9ja190cmFuc2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwgTE9DS01PREUgbG9ja21v ZGUpCit7CisJTG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uKE15TG9naWNhbFJlcFdvcmtl ci0+c3ViaWQsIHhpZCwKKwkJCQkJCQkJICAgUEFSQUxMRUxfQVBQTFlfTE9DS19YQUNULCBsb2Nr bW9kZSk7Cit9CisKK3ZvaWQKK3BhX3VubG9ja190cmFuc2FjdGlvbihUcmFuc2FjdGlvbklkIHhp ZCwgTE9DS01PREUgbG9ja21vZGUpCit7CisJVW5sb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Np b24oTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkLAorCQkJCQkJCQkJIFBBUkFMTEVMX0FQ UExZX0xPQ0tfWEFDVCwgbG9ja21vZGUpOworfQorCisvKgorICogRGVjcmVtZW50IHRoZSBudW1i ZXIgb2YgcGVuZGluZyBzdHJlYW1pbmcgYmxvY2tzIGFuZCB3YWl0IG9uIHRoZSBzdHJlYW0gbG9j aworICogaWYgdGhlcmUgaXMgbm8gcGVuZGluZyBibG9jayBhdmFpbGFibGUuCisgKi8KK3ZvaWQK K3BhX2RlY3JfYW5kX3dhaXRfc3RyZWFtX2Jsb2NrKHZvaWQpCit7CisJQXNzZXJ0KGFtX3BhcmFs bGVsX2FwcGx5X3dvcmtlcigpKTsKKworCS8qCisJICogSXQgaXMgb25seSBwb3NzaWJsZSB0byBu b3QgaGF2ZSBhbnkgcGVuZGluZyBzdHJlYW0gY2h1bmtzIHdoZW4gd2UgYXJlCisJICogYXBwbHlp bmcgc3Bvb2xlZCBtZXNzYWdlcy4KKwkgKi8KKwlpZiAocGdfYXRvbWljX3JlYWRfdTMyKCZNeVBh cmFsbGVsU2hhcmVkLT5wZW5kaW5nX3N0cmVhbV9jb3VudCkgPT0gMCkKKwl7CisJCWlmIChwYV9o YXNfc3Bvb2xlZF9tZXNzYWdlX3BlbmRpbmcoKSkKKwkJCXJldHVybjsKKworCQllbG9nKEVSUk9S LCAiaW52YWxpZCBwZW5kaW5nIHN0cmVhbWluZyBjaHVuayAwIik7CisJfQorCisJaWYgKHBnX2F0 b21pY19zdWJfZmV0Y2hfdTMyKCZNeVBhcmFsbGVsU2hhcmVkLT5wZW5kaW5nX3N0cmVhbV9jb3Vu dCwgMSkgPT0gMCkKKwl7CisJCXBhX2xvY2tfc3RyZWFtKE15UGFyYWxsZWxTaGFyZWQtPnhpZCwg QWNjZXNzU2hhcmVMb2NrKTsKKwkJcGFfdW5sb2NrX3N0cmVhbShNeVBhcmFsbGVsU2hhcmVkLT54 aWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJfQorfQorCisvKgorICogRmluaXNoIHByb2Nlc3Npbmcg dGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlci4KKyAq Lwordm9pZAorcGFfeGFjdF9maW5pc2goUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBY TG9nUmVjUHRyIHJlbW90ZV9sc24pCit7CisJQXNzZXJ0KGFtX2xlYWRlcl9hcHBseV93b3JrZXIo KSk7CisKKwkvKgorCSAqIFVubG9jayB0aGUgc2hhcmVkIG9iamVjdCBsb2NrIHNvIHRoYXQgcGFy YWxsZWwgYXBwbHkgd29ya2VyIGNhbgorCSAqIGNvbnRpbnVlIHRvIHJlY2VpdmUgYW5kIGFwcGx5 IGNoYW5nZXMuCisJICovCisJcGFfdW5sb2NrX3N0cmVhbSh3aW5mby0+c2hhcmVkLT54aWQsIEFj Y2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJLyoKKwkgKiBXYWl0IGZvciB0aGF0IHdvcmtlciB0byBm aW5pc2guIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIG1haW50YWluIGNvbW1pdAorCSAqIG9yZGVyIHdo aWNoIGF2b2lkcyBmYWlsdXJlcyBkdWUgdG8gdHJhbnNhY3Rpb24gZGVwZW5kZW5jaWVzIGFuZAor CSAqIGRlYWRsb2Nrcy4KKwkgKi8KKwlwYV93YWl0X2Zvcl94YWN0X2ZpbmlzaCh3aW5mbyk7CisK KwlpZiAoIVhMb2dSZWNQdHJJc0ludmFsaWQocmVtb3RlX2xzbikpCisJCXN0b3JlX2ZsdXNoX3Bv c2l0aW9uKHJlbW90ZV9sc24sIHdpbmZvLT5zaGFyZWQtPmxhc3RfY29tbWl0X2VuZCk7CisKKwlw YV9mcmVlX3dvcmtlcih3aW5mbyk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2RlY29kZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9k ZWNvZGUuYwppbmRleCBjM2JjOGVjLi5hNTNlMjNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvZGVjb2RlLmMKQEAgLTgyMiwxMCArODIyLDExIEBAIERlY29kZUFib3J0KExvZ2lj YWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmLAogCQlmb3IgKGkg PSAwOyBpIDwgcGFyc2VkLT5uc3VieGFjdHM7IGkrKykKIAkJewogCQkJUmVvcmRlckJ1ZmZlckFi b3J0KGN0eC0+cmVvcmRlciwgcGFyc2VkLT5zdWJ4YWN0c1tpXSwKLQkJCQkJCQkgICBidWYtPnJl Y29yZC0+RW5kUmVjUHRyKTsKKwkJCQkJCQkgICBidWYtPnJlY29yZC0+RW5kUmVjUHRyLCBhYm9y dF90aW1lKTsKIAkJfQogCi0JCVJlb3JkZXJCdWZmZXJBYm9ydChjdHgtPnJlb3JkZXIsIHhpZCwg YnVmLT5yZWNvcmQtPkVuZFJlY1B0cik7CisJCVJlb3JkZXJCdWZmZXJBYm9ydChjdHgtPnJlb3Jk ZXIsIHhpZCwgYnVmLT5yZWNvcmQtPkVuZFJlY1B0ciwKKwkJCQkJCSAgIGFib3J0X3RpbWUpOwog CX0KIAogCS8qIHVwZGF0ZSB0aGUgZGVjb2Rpbmcgc3RhdHMgKi8KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwppbmRleCBhNjllMzcxLi5hZmI3YWNkIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCkBAIC01NSw2ICs1NSw3IEBA CiAvKiBHVUMgdmFyaWFibGVzICovCiBpbnQJCQltYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3Jr ZXJzID0gNDsKIGludAkJCW1heF9zeW5jX3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiA9IDI7Citp bnQJCQltYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uID0gMjsKIAog TG9naWNhbFJlcFdvcmtlciAqTXlMb2dpY2FsUmVwV29ya2VyID0gTlVMTDsKIApAQCAtNzQsNiAr NzUsNyBAQCBzdGF0aWMgdm9pZCBsb2dpY2FscmVwX2xhdW5jaGVyX29uZXhpdChpbnQgY29kZSwg RGF0dW0gYXJnKTsKIHN0YXRpYyB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX29uZXhpdChpbnQgY29k ZSwgRGF0dW0gYXJnKTsKIHN0YXRpYyB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2RldGFjaCh2b2lk KTsKIHN0YXRpYyB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2NsZWFudXAoTG9naWNhbFJlcFdvcmtl ciAqd29ya2VyKTsKK3N0YXRpYyBpbnQJbG9naWNhbHJlcF9wYV93b3JrZXJfY291bnQoT2lkIHN1 YmlkKTsKIAogc3RhdGljIGJvb2wgb25fY29tbWl0X2xhdW5jaGVyX3dha2V1cCA9IGZhbHNlOwog CkBAIC0xNTIsOCArMTU0LDEwIEBAIGdldF9zdWJzY3JpcHRpb25fbGlzdCh2b2lkKQogICoKICAq IFRoaXMgaXMgb25seSBuZWVkZWQgZm9yIGNsZWFuaW5nIHVwIHRoZSBzaGFyZWQgbWVtb3J5IGlu IGNhc2UgdGhlIHdvcmtlcgogICogZmFpbHMgdG8gYXR0YWNoLgorICoKKyAqIFJldHVybnMgd2hl dGhlciB0aGUgYXR0YWNoIHdhcyBzdWNjZXNzZnVsLgogICovCi1zdGF0aWMgdm9pZAorc3RhdGlj IGJvb2wKIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2FsUmVwV29ya2VyICp3 b3JrZXIsCiAJCQkJCQkJICAgdWludDE2IGdlbmVyYXRpb24sCiAJCQkJCQkJICAgQmFja2dyb3Vu ZFdvcmtlckhhbmRsZSAqaGFuZGxlKQpAQCAtMTY5LDExICsxNzMsMTEgQEAgV2FpdEZvclJlcGxp Y2F0aW9uV29ya2VyQXR0YWNoKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwKIAogCQlMV0xvY2tB Y3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOwogCi0JCS8qIFdvcmtlciBl aXRoZXIgZGllZCBvciBoYXMgc3RhcnRlZDsgbm8gbmVlZCB0byBkbyBhbnl0aGluZy4gKi8KKwkJ LyogV29ya2VyIGVpdGhlciBkaWVkIG9yIGhhcyBzdGFydGVkLiBSZXR1cm4gZmFsc2UgaWYgZGll ZC4gKi8KIAkJaWYgKCF3b3JrZXItPmluX3VzZSB8fCB3b3JrZXItPnByb2MpCiAJCXsKIAkJCUxX TG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwotCQkJcmV0dXJuOworCQkJcmV0dXJu IHdvcmtlci0+aW5fdXNlOwogCQl9CiAKIAkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2Vy TG9jayk7CkBAIC0xODgsNyArMTkyLDcgQEAgV2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNo KExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwKIAkJCWlmIChnZW5lcmF0aW9uID09IHdvcmtlci0+ Z2VuZXJhdGlvbikKIAkJCQlsb2dpY2FscmVwX3dvcmtlcl9jbGVhbnVwKHdvcmtlcik7CiAJCQlM V0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKLQkJCXJldHVybjsKKwkJCXJldHVy biBmYWxzZTsKIAkJfQogCiAJCS8qCkBAIC0yMTAsNiArMjE0LDggQEAgV2FpdEZvclJlcGxpY2F0 aW9uV29ya2VyQXR0YWNoKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwKIC8qCiAgKiBXYWxrcyB0 aGUgd29ya2VycyBhcnJheSBhbmQgc2VhcmNoZXMgZm9yIG9uZSB0aGF0IG1hdGNoZXMgZ2l2ZW4K ICAqIHN1YnNjcmlwdGlvbiBpZCBhbmQgcmVsaWQuCisgKgorICogV2UgYXJlIG9ubHkgaW50ZXJl c3RlZCBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBvciB0YWJsZSBzeW5jIHdvcmtlci4KICAq LwogTG9naWNhbFJlcFdvcmtlciAqCiBsb2dpY2FscmVwX3dvcmtlcl9maW5kKE9pZCBzdWJpZCwg T2lkIHJlbGlkLCBib29sIG9ubHlfcnVubmluZykKQEAgLTIyNCw2ICsyMzAsMTAgQEAgbG9naWNh bHJlcF93b3JrZXJfZmluZChPaWQgc3ViaWQsIE9pZCByZWxpZCwgYm9vbCBvbmx5X3J1bm5pbmcp CiAJewogCQlMb2dpY2FsUmVwV29ya2VyICp3ID0gJkxvZ2ljYWxSZXBDdHgtPndvcmtlcnNbaV07 CiAKKwkJLyogU2tpcCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLiAqLworCQlpZiAoaXNQYXJhbGxl bEFwcGx5V29ya2VyKHcpKQorCQkJY29udGludWU7CisKIAkJaWYgKHctPmluX3VzZSAmJiB3LT5z dWJpZCA9PSBzdWJpZCAmJiB3LT5yZWxpZCA9PSByZWxpZCAmJgogCQkJKCFvbmx5X3J1bm5pbmcg fHwgdy0+cHJvYykpCiAJCXsKQEAgLTI2MCwxMSArMjcwLDEzIEBAIGxvZ2ljYWxyZXBfd29ya2Vy c19maW5kKE9pZCBzdWJpZCwgYm9vbCBvbmx5X3J1bm5pbmcpCiB9CiAKIC8qCi0gKiBTdGFydCBu ZXcgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIsIGlmIHBvc3NpYmxlLgorICogU3RhcnQgbmV3IGxv Z2ljYWwgcmVwbGljYXRpb24gYmFja2dyb3VuZCB3b3JrZXIsIGlmIHBvc3NpYmxlLgorICoKKyAq IFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJlLgogICovCi12b2lkCiti b29sCiBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRiaWQsIE9pZCBzdWJpZCwgY29uc3Qg Y2hhciAqc3VibmFtZSwgT2lkIHVzZXJpZCwKLQkJCQkJCSBPaWQgcmVsaWQpCisJCQkJCQkgT2lk IHJlbGlkLCBkc21faGFuZGxlIHN1Yndvcmtlcl9kc20pCiB7CiAJQmFja2dyb3VuZFdvcmtlciBi Z3c7CiAJQmFja2dyb3VuZFdvcmtlckhhbmRsZSAqYmd3X2hhbmRsZTsKQEAgLTI3Myw3ICsyODUs MTIgQEAgbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0 IGNoYXIgKnN1Ym5hbWUsIE9pZCB1c2VyaWQsCiAJaW50CQkJc2xvdCA9IDA7CiAJTG9naWNhbFJl cFdvcmtlciAqd29ya2VyID0gTlVMTDsKIAlpbnQJCQluc3luY3dvcmtlcnM7CisJaW50CQkJbnBh cmFsbGVsYXBwbHl3b3JrZXJzOwogCVRpbWVzdGFtcFR6IG5vdzsKKwlib29sCQlpc19wYXJhbGxl bF9hcHBseV93b3JrZXIgPSAoc3Vid29ya2VyX2RzbSAhPSBEU01fSEFORExFX0lOVkFMSUQpOwor CisJLyogU2FuaXR5IGNoZWNrIC0gdGFibGVzeW5jIHdvcmtlciBjYW5ub3QgYmUgYSBzdWJ3b3Jr ZXIgKi8KKwlBc3NlcnQoIShpc19wYXJhbGxlbF9hcHBseV93b3JrZXIgJiYgT2lkSXNWYWxpZChy ZWxpZCkpKTsKIAogCWVyZXBvcnQoREVCVUcxLAogCQkJKGVycm1zZ19pbnRlcm5hbCgic3RhcnRp bmcgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIiLApA QCAtMzUxLDcgKzM2OCwyMCBAQCByZXRyeToKIAlpZiAoT2lkSXNWYWxpZChyZWxpZCkgJiYgbnN5 bmN3b3JrZXJzID49IG1heF9zeW5jX3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbikKIAl7CiAJCUxX TG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwotCQlyZXR1cm47CisJCXJldHVybiBm YWxzZTsKKwl9CisKKwlucGFyYWxsZWxhcHBseXdvcmtlcnMgPSBsb2dpY2FscmVwX3BhX3dvcmtl cl9jb3VudChzdWJpZCk7CisKKwkvKgorCSAqIFJldHVybiBmYWxzZSBpZiB0aGUgbnVtYmVyIG9m IHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgcmVhY2hlZCB0aGUgbGltaXQKKwkgKiBwZXIgc3Vic2Ny aXB0aW9uLgorCSAqLworCWlmIChpc19wYXJhbGxlbF9hcHBseV93b3JrZXIgJiYKKwkJbnBhcmFs bGVsYXBwbHl3b3JrZXJzID49IG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3Jp cHRpb24pCisJeworCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKKwkJcmV0 dXJuIGZhbHNlOwogCX0KIAogCS8qCkBAIC0zNjUsNyArMzk1LDcgQEAgcmV0cnk6CiAJCQkJKGVy cmNvZGUoRVJSQ09ERV9DT05GSUdVUkFUSU9OX0xJTUlUX0VYQ0VFREVEKSwKIAkJCQkgZXJybXNn KCJvdXQgb2YgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgc2xvdHMiKSwKIAkJCQkgZXJyaGlu dCgiWW91IG1pZ2h0IG5lZWQgdG8gaW5jcmVhc2UgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29y a2Vycy4iKSkpOwotCQlyZXR1cm47CisJCXJldHVybiBmYWxzZTsKIAl9CiAKIAkvKiBQcmVwYXJl IHRoZSB3b3JrZXIgc2xvdC4gKi8KQEAgLTM4MCw2ICs0MTAsOCBAQCByZXRyeToKIAl3b3JrZXIt PnJlbHN0YXRlID0gU1VCUkVMX1NUQVRFX1VOS05PV047CiAJd29ya2VyLT5yZWxzdGF0ZV9sc24g PSBJbnZhbGlkWExvZ1JlY1B0cjsKIAl3b3JrZXItPnN0cmVhbV9maWxlc2V0ID0gTlVMTDsKKwl3 b3JrZXItPmFwcGx5X2xlYWRlcl9waWQgPSBpc19wYXJhbGxlbF9hcHBseV93b3JrZXIgPyBNeVBy b2NQaWQgOiBJbnZhbGlkUGlkOworCXdvcmtlci0+cGFyYWxsZWxfYXBwbHkgPSBpc19wYXJhbGxl bF9hcHBseV93b3JrZXI7CiAJd29ya2VyLT5sYXN0X2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwog CVRJTUVTVEFNUF9OT0JFR0lOKHdvcmtlci0+bGFzdF9zZW5kX3RpbWUpOwogCVRJTUVTVEFNUF9O T0JFR0lOKHdvcmtlci0+bGFzdF9yZWN2X3RpbWUpOwpAQCAtMzk3LDE5ICs0MjksMzQgQEAgcmV0 cnk6CiAJCUJHV09SS0VSX0JBQ0tFTkRfREFUQUJBU0VfQ09OTkVDVElPTjsKIAliZ3cuYmd3X3N0 YXJ0X3RpbWUgPSBCZ1dvcmtlclN0YXJ0X1JlY292ZXJ5RmluaXNoZWQ7CiAJc25wcmludGYoYmd3 LmJnd19saWJyYXJ5X25hbWUsIEJHV19NQVhMRU4sICJwb3N0Z3JlcyIpOwotCXNucHJpbnRmKGJn dy5iZ3dfZnVuY3Rpb25fbmFtZSwgQkdXX01BWExFTiwgIkFwcGx5V29ya2VyTWFpbiIpOworCisJ aWYgKGlzX3BhcmFsbGVsX2FwcGx5X3dvcmtlcikKKwkJc25wcmludGYoYmd3LmJnd19mdW5jdGlv bl9uYW1lLCBCR1dfTUFYTEVOLCAiUGFyYWxsZWxBcHBseVdvcmtlck1haW4iKTsKKwllbHNlCisJ CXNucHJpbnRmKGJndy5iZ3dfZnVuY3Rpb25fbmFtZSwgQkdXX01BWExFTiwgIkFwcGx5V29ya2Vy TWFpbiIpOworCiAJaWYgKE9pZElzVmFsaWQocmVsaWQpKQogCQlzbnByaW50ZihiZ3cuYmd3X25h bWUsIEJHV19NQVhMRU4sCiAJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3Vi c2NyaXB0aW9uICV1IHN5bmMgJXUiLCBzdWJpZCwgcmVsaWQpOworCWVsc2UgaWYgKGlzX3BhcmFs bGVsX2FwcGx5X3dvcmtlcikKKwkJc25wcmludGYoYmd3LmJnd19uYW1lLCBCR1dfTUFYTEVOLAor CQkJCSAibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHN1YnNj cmlwdGlvbiAldSIsIHN1YmlkKTsKIAllbHNlCiAJCXNucHJpbnRmKGJndy5iZ3dfbmFtZSwgQkdX X01BWExFTiwKLQkJCQkgImxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGZvciBzdWJzY3JpcHRp b24gJXUiLCBzdWJpZCk7Ci0Jc25wcmludGYoYmd3LmJnd190eXBlLCBCR1dfTUFYTEVOLCAibG9n aWNhbCByZXBsaWNhdGlvbiB3b3JrZXIiKTsKKwkJCQkgImxvZ2ljYWwgcmVwbGljYXRpb24gYXBw bHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUiLCBzdWJpZCk7CisKKwlpZiAoaXNfcGFyYWxs ZWxfYXBwbHlfd29ya2VyKQorCQlzbnByaW50ZihiZ3cuYmd3X3R5cGUsIEJHV19NQVhMRU4sICJs b2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIHdvcmtlciIpOworCWVsc2UKKwkJc25wcmludGYo Ymd3LmJnd190eXBlLCBCR1dfTUFYTEVOLCAibG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIiKTsK IAogCWJndy5iZ3dfcmVzdGFydF90aW1lID0gQkdXX05FVkVSX1JFU1RBUlQ7CiAJYmd3LmJnd19u b3RpZnlfcGlkID0gTXlQcm9jUGlkOwogCWJndy5iZ3dfbWFpbl9hcmcgPSBJbnQzMkdldERhdHVt KHNsb3QpOwogCisJaWYgKGlzX3BhcmFsbGVsX2FwcGx5X3dvcmtlcikKKwkJbWVtY3B5KGJndy5i Z3dfZXh0cmEsICZzdWJ3b3JrZXJfZHNtLCBzaXplb2YoZHNtX2hhbmRsZSkpOworCiAJaWYgKCFS ZWdpc3RlckR5bmFtaWNCYWNrZ3JvdW5kV29ya2VyKCZiZ3csICZiZ3dfaGFuZGxlKSkKIAl7CiAJ CS8qIEZhaWxlZCB0byBzdGFydCB3b3JrZXIsIHNvIGNsZWFuIHVwIHRoZSB3b3JrZXIgc2xvdC4g Ki8KQEAgLTQyMiwzMyArNDY5LDIzIEBAIHJldHJ5OgogCQkJCShlcnJjb2RlKEVSUkNPREVfQ09O RklHVVJBVElPTl9MSU1JVF9FWENFRURFRCksCiAJCQkJIGVycm1zZygib3V0IG9mIGJhY2tncm91 bmQgd29ya2VyIHNsb3RzIiksCiAJCQkJIGVycmhpbnQoIllvdSBtaWdodCBuZWVkIHRvIGluY3Jl YXNlIG1heF93b3JrZXJfcHJvY2Vzc2VzLiIpKSk7Ci0JCXJldHVybjsKKwkJcmV0dXJuIGZhbHNl OwogCX0KIAogCS8qIE5vdyB3YWl0IHVudGlsIGl0IGF0dGFjaGVzLiAqLwotCVdhaXRGb3JSZXBs aWNhdGlvbldvcmtlckF0dGFjaCh3b3JrZXIsIGdlbmVyYXRpb24sIGJnd19oYW5kbGUpOworCXJl dHVybiBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2god29ya2VyLCBnZW5lcmF0aW9uLCBi Z3dfaGFuZGxlKTsKIH0KIAogLyoKLSAqIFN0b3AgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gd29y a2VyIGZvciBzdWJpZC9yZWxpZCwgaWYgYW55LCBhbmQgd2FpdCB1bnRpbAotICogaXQgZGV0YWNo ZXMgZnJvbSB0aGUgc2xvdC4KKyAqIEludGVybmFsIGZ1bmN0aW9uIHRvIHN0b3AgdGhlIHdvcmtl ciBhbmQgd2FpdCB1bnRpbCBpdCBkZXRhY2hlcyBmcm9tIHRoZQorICogc2xvdC4KICAqLwotdm9p ZAotbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCkKK3N0YXRpYyB2 b2lkCitsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKExvZ2ljYWxSZXBXb3JrZXIgKndv cmtlciwgaW50IHNpZ25vKQogewotCUxvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcjsKIAl1aW50MTYJ CWdlbmVyYXRpb247CiAKLQlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19T SEFSRUQpOwotCi0Jd29ya2VyID0gbG9naWNhbHJlcF93b3JrZXJfZmluZChzdWJpZCwgcmVsaWQs IGZhbHNlKTsKLQotCS8qIE5vIHdvcmtlciwgbm90aGluZyB0byBkby4gKi8KLQlpZiAoIXdvcmtl cikKLQl7Ci0JCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwotCQlyZXR1cm47 Ci0JfQorCUFzc2VydChMV0xvY2tIZWxkQnlNZUluTW9kZShMb2dpY2FsUmVwV29ya2VyTG9jaywg TFdfU0hBUkVEKSk7CiAKIAkvKgogCSAqIFJlbWVtYmVyIHdoaWNoIGdlbmVyYXRpb24gd2FzIG91 ciB3b3JrZXIgc28gd2UgY2FuIGNoZWNrIGlmIHdoYXQgd2Ugc2VlCkBAIC00ODYsMTAgKzUyMyw3 IEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCiAJCSAqIGRp ZmZlcmVudCwgbWVhbmluZyB0aGF0IGEgZGlmZmVyZW50IHdvcmtlciBoYXMgdGFrZW4gdGhlIHNs b3QuCiAJCSAqLwogCQlpZiAoIXdvcmtlci0+aW5fdXNlIHx8IHdvcmtlci0+Z2VuZXJhdGlvbiAh PSBnZW5lcmF0aW9uKQotCQl7Ci0JCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2Nr KTsKIAkJCXJldHVybjsKLQkJfQogCiAJCS8qIFdvcmtlciBoYXMgYXNzaWduZWQgcHJvYywgc28g aXQgaGFzIHN0YXJ0ZWQuICovCiAJCWlmICh3b3JrZXItPnByb2MpCkBAIC00OTcsNyArNTMxLDcg QEAgbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCkKIAl9CiAKIAkv KiBOb3cgdGVybWluYXRlIHRoZSB3b3JrZXIgLi4uICovCi0Ja2lsbCh3b3JrZXItPnByb2MtPnBp ZCwgU0lHVEVSTSk7CisJa2lsbCh3b3JrZXItPnByb2MtPnBpZCwgc2lnbm8pOwogCiAJLyogLi4u IGFuZCB3YWl0IGZvciBpdCB0byBkaWUuICovCiAJZm9yICg7OykKQEAgLTUyMyw2ICs1NTcsNTMg QEAgbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCkKIAogCQlMV0xv Y2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOwogCX0KK30KKworLyoK KyAqIFN0b3AgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGZvciBzdWJpZC9yZWxpZCwg aWYgYW55LgorICovCit2b2lkCitsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lk IHJlbGlkKQoreworCUxvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcjsKKworCUxXTG9ja0FjcXVpcmUo TG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CisKKwl3b3JrZXIgPSBsb2dpY2FscmVw X3dvcmtlcl9maW5kKHN1YmlkLCByZWxpZCwgZmFsc2UpOworCisJaWYgKHdvcmtlcikKKwl7CisJ CUFzc2VydCghaXNQYXJhbGxlbEFwcGx5V29ya2VyKHdvcmtlcikpOworCQlsb2dpY2FscmVwX3dv cmtlcl9zdG9wX2ludGVybmFsKHdvcmtlciwgU0lHVEVSTSk7CisJfQorCisJTFdMb2NrUmVsZWFz ZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Cit9CisKKy8qCisgKiBTdG9wIHRoZSBsb2dpY2FsIHJl cGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBjb3JyZXNwb25kaW5nIHRvIHRoZQorICog aW5wdXQgc2xvdCBudW1iZXIuCisgKgorICogTm9kZSB0aGF0IHRoZSBmdW5jdGlvbiBzZW5kcyBT SUdJTlQgaW5zdGVhZCBvZiBTSUdURVJNIHRvIHRoZSBwYXJhbGxlbCBhcHBseQorICogd29ya2Vy IHNvIHRoYXQgdGhlIHdvcmtlciBleGl0cyBjbGVhbmx5LgorICovCit2b2lkCitsb2dpY2FscmVw X3BhX3dvcmtlcl9zdG9wKGludCBzbG90X25vLCB1aW50MTYgZ2VuZXJhdGlvbikKK3sKKwlMb2dp Y2FsUmVwV29ya2VyICp3b3JrZXI7CisKKwlBc3NlcnQoc2xvdF9ubyA+PSAwICYmIHNsb3Rfbm8g PCBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzKTsKKworCUxXTG9ja0FjcXVpcmUoTG9n aWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CisKKwl3b3JrZXIgPSAmTG9naWNhbFJlcEN0 eC0+d29ya2Vyc1tzbG90X25vXTsKKwlBc3NlcnQoaXNQYXJhbGxlbEFwcGx5V29ya2VyKHdvcmtl cikpOworCisJLyoKKwkgKiBPbmx5IHN0b3AgdGhlIHdvcmtlciBpZiB0aGUgZ2VuZXJhdGlvbiBt YXRjaGVzIGFuZCB0aGUgd29ya2VyIGlzIGFsaXZlLgorCSAqLworCWlmICh3b3JrZXItPmdlbmVy YXRpb24gPT0gZ2VuZXJhdGlvbiAmJiB3b3JrZXItPnByb2MpCisJCWxvZ2ljYWxyZXBfd29ya2Vy X3N0b3BfaW50ZXJuYWwod29ya2VyLCBTSUdJTlQpOwogCiAJTFdMb2NrUmVsZWFzZShMb2dpY2Fs UmVwV29ya2VyTG9jayk7CiB9CkBAIC01OTUsMTEgKzY3Niw0MCBAQCBsb2dpY2FscmVwX3dvcmtl cl9hdHRhY2goaW50IHNsb3QpCiB9CiAKIC8qCi0gKiBEZXRhY2ggdGhlIHdvcmtlciAoY2xlYW5z IHVwIHRoZSB3b3JrZXIgaW5mbykuCisgKiBTdG9wIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJz IGlmIGFueSwgYW5kIGRldGFjaCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlcgorICogKGNsZWFucyB1 cCB0aGUgd29ya2VyIGluZm8pLgogICovCiBzdGF0aWMgdm9pZAogbG9naWNhbHJlcF93b3JrZXJf ZGV0YWNoKHZvaWQpCiB7CisJLyogU3RvcCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4gKi8K KwlpZiAoYW1fbGVhZGVyX2FwcGx5X3dvcmtlcigpKQorCXsKKwkJTGlzdAkgICAqd29ya2VyczsK KwkJTGlzdENlbGwgICAqbGM7CisKKwkJLyoKKwkJICogRGV0YWNoIGZyb20gdGhlIGVycm9yX21x X2hhbmRsZSBmb3IgYWxsIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMKKwkJICogYmVmb3JlIHRlcm1p bmF0aW5nIHRoZW0uIFRoaXMgcHJldmVudHMgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgZnJvbQor CQkgKiByZWNlaXZpbmcgdGhlIHdvcmtlciB0ZXJtaW5hdGlvbiBtZXNzYWdlIGFuZCBzZW5kaW5n IGl0IHRvIGxvZ3MKKwkJICogd2hlbiB0aGUgc2FtZSBpcyBhbHJlYWR5IGRvbmUgYnkgdGhlIHBh cmFsbGVsIHdvcmtlci4KKwkJICovCisJCXBhX2RldGFjaF9hbGxfZXJyb3JfbXEoKTsKKworCQlM V0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOworCisJCXdvcmtl cnMgPSBsb2dpY2FscmVwX3dvcmtlcnNfZmluZChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB0 cnVlKTsKKwkJZm9yZWFjaChsYywgd29ya2VycykKKwkJeworCQkJTG9naWNhbFJlcFdvcmtlciAq dyA9IChMb2dpY2FsUmVwV29ya2VyICopIGxmaXJzdChsYyk7CisKKwkJCWlmIChpc1BhcmFsbGVs QXBwbHlXb3JrZXIodykpCisJCQkJbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3LCBT SUdURVJNKTsKKwkJfQorCisJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwor CX0KKwogCS8qIEJsb2NrIGNvbmN1cnJlbnQgYWNjZXNzLiAqLwogCUxXTG9ja0FjcXVpcmUoTG9n aWNhbFJlcFdvcmtlckxvY2ssIExXX0VYQ0xVU0lWRSk7CiAKQEAgLTYyMiw2ICs3MzIsOCBAQCBs b2dpY2FscmVwX3dvcmtlcl9jbGVhbnVwKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcikKIAl3b3Jr ZXItPnVzZXJpZCA9IEludmFsaWRPaWQ7CiAJd29ya2VyLT5zdWJpZCA9IEludmFsaWRPaWQ7CiAJ d29ya2VyLT5yZWxpZCA9IEludmFsaWRPaWQ7CisJd29ya2VyLT5hcHBseV9sZWFkZXJfcGlkID0g SW52YWxpZFBpZDsKKwl3b3JrZXItPnBhcmFsbGVsX2FwcGx5ID0gZmFsc2U7CiB9CiAKIC8qCkBA IC02NTMsNiArNzY1LDEzIEBAIGxvZ2ljYWxyZXBfd29ya2VyX29uZXhpdChpbnQgY29kZSwgRGF0 dW0gYXJnKQogCWlmIChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0ICE9IE5VTEwp CiAJCUZpbGVTZXREZWxldGVBbGwoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCk7 CiAKKwkvKgorCSAqIFNlc3Npb24gbGV2ZWwgbG9ja3MgbWF5IGJlIGFjcXVpcmVkIG91dHNpZGUg b2YgYSB0cmFuc2FjdGlvbiBpbgorCSAqIHBhcmFsbGVsIGFwcGx5IG1vZGUgYW5kIHdpbGwgbm90 IGJlIHJlbGVhc2VkIHdoZW4gdGhlIHdvcmtlcgorCSAqIHRlcm1pbmF0ZXMsIHNvIG1hbnVhbGx5 IHJlbGVhc2UgYWxsIGxvY2tzIGJlZm9yZSB0aGUgd29ya2VyIGV4aXRzLgorCSAqLworCUxvY2tS ZWxlYXNlQWxsKERFRkFVTFRfTE9DS01FVEhPRCwgdHJ1ZSk7CisKIAlBcHBseUxhdW5jaGVyV2Fr ZXVwKCk7CiB9CiAKQEAgLTY4MSw2ICs4MDAsMzMgQEAgbG9naWNhbHJlcF9zeW5jX3dvcmtlcl9j b3VudChPaWQgc3ViaWQpCiB9CiAKIC8qCisgKiBDb3VudCB0aGUgbnVtYmVyIG9mIHJlZ2lzdGVy ZWQgKGJ1dCBub3QgbmVjZXNzYXJpbHkgcnVubmluZykgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtl cnMgZm9yIGEgc3Vic2NyaXB0aW9uLgorICovCitzdGF0aWMgaW50Citsb2dpY2FscmVwX3BhX3dv cmtlcl9jb3VudChPaWQgc3ViaWQpCit7CisJaW50CQkJaTsKKwlpbnQJCQlyZXMgPSAwOworCisJ QXNzZXJ0KExXTG9ja0hlbGRCeU1lKExvZ2ljYWxSZXBXb3JrZXJMb2NrKSk7CisKKwkvKgorCSAq IFNjYW4gYWxsIGF0dGFjaGVkIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIG9ubHkgY291bnRpbmcg dGhvc2Ugd2hpY2gKKwkgKiBoYXZlIHRoZSBnaXZlbiBzdWJzY3JpcHRpb24gaWQuCisJICovCisJ Zm9yIChpID0gMDsgaSA8IG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM7IGkrKykKKwl7 CisJCUxvZ2ljYWxSZXBXb3JrZXIgKncgPSAmTG9naWNhbFJlcEN0eC0+d29ya2Vyc1tpXTsKKwor CQlpZiAody0+c3ViaWQgPT0gc3ViaWQgJiYgaXNQYXJhbGxlbEFwcGx5V29ya2VyKHcpKQorCQkJ cmVzKys7CisJfQorCisJcmV0dXJuIHJlczsKK30KKworLyoKICAqIEFwcGx5TGF1bmNoZXJTaG1l bVNpemUKICAqCQlDb21wdXRlIHNwYWNlIG5lZWRlZCBmb3IgcmVwbGljYXRpb24gbGF1bmNoZXIg c2hhcmVkIG1lbW9yeQogICovCkBAIC04NjksNyArMTAxNSw3IEBAIEFwcGx5TGF1bmNoZXJNYWlu KERhdHVtIG1haW5fYXJnKQogCQkJCQl3YWl0X3RpbWUgPSB3YWxfcmV0cmlldmVfcmV0cnlfaW50 ZXJ2YWw7CiAKIAkJCQkJbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKHN1Yi0+ZGJpZCwgc3ViLT5v aWQsIHN1Yi0+bmFtZSwKLQkJCQkJCQkJCQkJIHN1Yi0+b3duZXIsIEludmFsaWRPaWQpOworCQkJ CQkJCQkJCQkgc3ViLT5vd25lciwgSW52YWxpZE9pZCwgRFNNX0hBTkRMRV9JTlZBTElEKTsKIAkJ CQl9CiAJCQl9CiAKQEAgLTk1Miw2ICsxMDk4LDEwIEBAIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlv bihQR19GVU5DVElPTl9BUkdTKQogCQlpZiAoT2lkSXNWYWxpZChzdWJpZCkgJiYgd29ya2VyLnN1 YmlkICE9IHN1YmlkKQogCQkJY29udGludWU7CiAKKwkJLyogU2tpcCBpZiB0aGlzIGlzIGEgcGFy YWxsZWwgYXBwbHkgd29ya2VyICovCisJCWlmIChpc1BhcmFsbGVsQXBwbHlXb3JrZXIoJndvcmtl cikpCisJCQljb250aW51ZTsKKwogCQl3b3JrZXJfcGlkID0gd29ya2VyLnByb2MtPnBpZDsKIAog CQl2YWx1ZXNbMF0gPSBPYmplY3RJZEdldERhdHVtKHdvcmtlci5zdWJpZCk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNvbi5idWlsZAppbmRleCA3MTQ0ZDdhLi5kNDhjZDRj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxk CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbWVzb24uYnVpbGQKQEAgLTEs NiArMSw3IEBACiAjIENvcHlyaWdodCAoYykgMjAyMi0yMDIzLCBQb3N0Z3JlU1FMIEdsb2JhbCBE ZXZlbG9wbWVudCBHcm91cAogCiBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCisgICdhcHBseXBh cmFsbGVsd29ya2VyLmMnLAogICAnZGVjb2RlLmMnLAogICAnbGF1bmNoZXIuYycsCiAgICdsb2dp Y2FsLmMnLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmln aW4uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMKaW5kZXggZmM4 Njc2OC4uYjc1NGM0MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9vcmlnaW4uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5j CkBAIC0xMDc1LDEyICsxMDc1LDIwIEBAIFJlcGxpY2F0aW9uT3JpZ2luRXhpdENsZWFudXAoaW50 IGNvZGUsIERhdHVtIGFyZykKICAqIGFycmF5IGRvZXNuJ3QgaGF2ZSB0byBiZSBzZWFyY2hlZCB3 aGVuIGNhbGxpbmcKICAqIHJlcGxvcmlnaW5fc2Vzc2lvbl9hZHZhbmNlKCkuCiAgKgotICogT2J2 aW91c2x5IG9ubHkgb25lIHN1Y2ggY2FjaGVkIG9yaWdpbiBjYW4gZXhpc3QgcGVyIHByb2Nlc3Mg YW5kIHRoZSBjdXJyZW50Ci0gKiBjYWNoZWQgdmFsdWUgY2FuIG9ubHkgYmUgc2V0IGFnYWluIGFm dGVyIHRoZSBwcmV2aW91cyB2YWx1ZSBpcyB0b3JuIGRvd24KLSAqIHdpdGggcmVwbG9yaWdpbl9z ZXNzaW9uX3Jlc2V0KCkuCisgKiBOb3JtYWxseSBvbmx5IG9uZSBzdWNoIGNhY2hlZCBvcmlnaW4g Y2FuIGV4aXN0IHBlciBwcm9jZXNzIHNvIHRoZSBjYWNoZWQKKyAqIHZhbHVlIGNhbiBvbmx5IGJl IHNldCBhZ2FpbiBhZnRlciB0aGUgcHJldmlvdXMgdmFsdWUgaXMgdG9ybiBkb3duIHdpdGgKKyAq IHJlcGxvcmlnaW5fc2Vzc2lvbl9yZXNldCgpLiBGb3IgdGhpcyBub3JtYWwgY2FzZSBwYXNzIGFj cXVpcmVkX2J5ID0gMAorICogKG1lYW5pbmcgdGhlIHNsb3QgaXMgbm90IGFsbG93ZWQgdG8gYmUg YWxyZWFkeSBhY3F1aXJlZCBieSBhbm90aGVyIHByb2Nlc3MpLgorICoKKyAqIEhvd2V2ZXIsIHNv bWV0aW1lcyBtdWx0aXBsZSBwcm9jZXNzZXMgY2FuIHNhZmVseSByZS11c2UgdGhlIHNhbWUgb3Jp Z2luIHNsb3QKKyAqIChmb3IgZXhhbXBsZSwgbXVsdGlwbGUgcGFyYWxsZWwgYXBwbHkgcHJvY2Vz c2VzIGNhbiBzYWZlbHkgdXNlIHRoZSBzYW1lCisgKiBvcmlnaW4sIHByb3ZpZGVkIHRoZXkgbWFp bnRhaW4gY29tbWl0IG9yZGVyIGJ5IGFsbG93aW5nIG9ubHkgb25lIHByb2Nlc3MgdG8KKyAqIGNv bW1pdCBhdCBhIHRpbWUpLiBGb3IgdGhpcyBjYXNlIHRoZSBmaXJzdCBwcm9jZXNzIG11c3QgcGFz cyBhY3F1aXJlZF9ieSA9CisgKiAwLCBhbmQgdGhlbiB0aGUgb3RoZXIgcHJvY2Vzc2VzIHNoYXJp bmcgdGhhdCBzYW1lIG9yaWdpbiBjYW4gcGFzcworICogYWNxdWlyZWRfYnkgPSBQSUQgb2YgdGhl IGZpcnN0IHByb2Nlc3MuCiAgKi8KIHZvaWQKLXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBP cmlnaW5JZCBub2RlKQorcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUs IGludCBhY3F1aXJlZF9ieSkKIHsKIAlzdGF0aWMgYm9vbCByZWdpc3RlcmVkX2NsZWFudXA7CiAJ aW50CQkJaTsKQEAgLTExMjIsNyArMTEzMCw3IEBAIHJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChS ZXBPcmlnaW5JZCBub2RlKQogCQlpZiAoY3Vyc3RhdGUtPnJvaWRlbnQgIT0gbm9kZSkKIAkJCWNv bnRpbnVlOwogCi0JCWVsc2UgaWYgKGN1cnN0YXRlLT5hY3F1aXJlZF9ieSAhPSAwKQorCQllbHNl IGlmIChjdXJzdGF0ZS0+YWNxdWlyZWRfYnkgIT0gMCAmJiBhY3F1aXJlZF9ieSA9PSAwKQogCQl7 CiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9JTl9VU0Up LApAQCAtMTE1Myw3ICsxMTYxLDExIEBAIHJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmln aW5JZCBub2RlKQogCiAJQXNzZXJ0KHNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUtPnJvaWRlbnQg IT0gSW52YWxpZFJlcE9yaWdpbklkKTsKIAotCXNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUtPmFj cXVpcmVkX2J5ID0gTXlQcm9jUGlkOworCWlmIChhY3F1aXJlZF9ieSA9PSAwKQorCQlzZXNzaW9u X3JlcGxpY2F0aW9uX3N0YXRlLT5hY3F1aXJlZF9ieSA9IE15UHJvY1BpZDsKKwllbHNlIGlmIChz ZXNzaW9uX3JlcGxpY2F0aW9uX3N0YXRlLT5hY3F1aXJlZF9ieSAhPSBhY3F1aXJlZF9ieSkKKwkJ ZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBmaW5kIHJlcGxpY2F0aW9uIHN0YXRlIHNsb3QgZm9yIHJl cGxpY2F0aW9uIG9yaWdpbiB3aXRoIE9JRCAldSB3aGljaCB3YXMgYWNxdWlyZWQgYnkgJWQiLAor CQkJIG5vZGUsIGFjcXVpcmVkX2J5KTsKIAogCUxXTG9ja1JlbGVhc2UoUmVwbGljYXRpb25Pcmln aW5Mb2NrKTsKIApAQCAtMTMzNyw3ICsxMzQ5LDcgQEAgcGdfcmVwbGljYXRpb25fb3JpZ2luX3Nl c3Npb25fc2V0dXAoUEdfRlVOQ1RJT05fQVJHUykKIAogCW5hbWUgPSB0ZXh0X3RvX2NzdHJpbmco KHRleHQgKikgRGF0dW1HZXRQb2ludGVyKFBHX0dFVEFSR19EQVRVTSgwKSkpOwogCW9yaWdpbiA9 IHJlcGxvcmlnaW5fYnlfbmFtZShuYW1lLCBmYWxzZSk7Ci0JcmVwbG9yaWdpbl9zZXNzaW9uX3Nl dHVwKG9yaWdpbik7CisJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbiwgMCk7CiAKIAly ZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luID0gb3JpZ2luOwogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3Byb3RvLmMKaW5kZXggZDAwZTkwZC4uM2E5ZDUzYSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwpAQCAtMTE2NCwxMCArMTE2NCwxNCBAQCBsb2dpY2Fs cmVwX3JlYWRfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVwQ29tbWl0RGF0 YSAqY29tbWl0X2RhdGEpCiAvKgogICogV3JpdGUgU1RSRUFNIEFCT1JUIHRvIHRoZSBvdXRwdXQg c3RyZWFtLiBOb3RlIHRoYXQgeGlkIGFuZCBzdWJ4aWQgd2lsbCBiZQogICogc2FtZSBmb3IgdGhl IHRvcC1sZXZlbCB0cmFuc2FjdGlvbiBhYm9ydC4KKyAqCisgKiBJZiB3cml0ZV9hYm9ydF9pbmZv IGlzIHRydWUsIHNlbmQgdGhlIGFib3J0X2xzbiBhbmQgYWJvcnRfdGltZSBmaWVsZHMsCisgKiBv dGhlcndpc2UgZG9uJ3QuCiAgKi8KIHZvaWQKIGxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0 KFN0cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwKLQkJCQkJCQkgIFRyYW5zYWN0aW9u SWQgc3VieGlkKQorCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBzdWJ4aWQsIFhMb2dSZWNQdHIgYWJv cnRfbHNuLAorCQkJCQkJCSAgVGltZXN0YW1wVHogYWJvcnRfdGltZSwgYm9vbCB3cml0ZV9hYm9y dF9pbmZvKQogewogCXBxX3NlbmRieXRlKG91dCwgTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9BQk9S VCk7CiAKQEAgLTExNzYsMTkgKzExODAsNDAgQEAgbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJv cnQoU3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLAogCS8qIHRyYW5zYWN0aW9uIElE ICovCiAJcHFfc2VuZGludDMyKG91dCwgeGlkKTsKIAlwcV9zZW5kaW50MzIob3V0LCBzdWJ4aWQp OworCisJaWYgKHdyaXRlX2Fib3J0X2luZm8pCisJeworCQlwcV9zZW5kaW50NjQob3V0LCBhYm9y dF9sc24pOworCQlwcV9zZW5kaW50NjQob3V0LCBhYm9ydF90aW1lKTsKKwl9CiB9CiAKIC8qCiAg KiBSZWFkIFNUUkVBTSBBQk9SVCBmcm9tIHRoZSBvdXRwdXQgc3RyZWFtLgorICoKKyAqIElmIHJl YWRfYWJvcnRfaW5mbyBpcyB0cnVlLCByZWFkIHRoZSBhYm9ydF9sc24gYW5kIGFib3J0X3RpbWUg ZmllbGRzLAorICogb3RoZXJ3aXNlIGRvbid0LgogICovCiB2b2lkCi1sb2dpY2FscmVwX3JlYWRf c3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gaW4sIFRyYW5zYWN0aW9uSWQgKnhpZCwKLQkJCQkJCQkg VHJhbnNhY3Rpb25JZCAqc3VieGlkKQorbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChTdHJp bmdJbmZvIGluLAorCQkJCQkJCSBMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9kYXRh LAorCQkJCQkJCSBib29sIHJlYWRfYWJvcnRfaW5mbykKIHsKLQlBc3NlcnQoeGlkICYmIHN1Ynhp ZCk7CisJQXNzZXJ0KGFib3J0X2RhdGEpOworCisJYWJvcnRfZGF0YS0+eGlkID0gcHFfZ2V0bXNn aW50KGluLCA0KTsKKwlhYm9ydF9kYXRhLT5zdWJ4aWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQpOwog Ci0JKnhpZCA9IHBxX2dldG1zZ2ludChpbiwgNCk7Ci0JKnN1YnhpZCA9IHBxX2dldG1zZ2ludChp biwgNCk7CisJaWYgKHJlYWRfYWJvcnRfaW5mbykKKwl7CisJCWFib3J0X2RhdGEtPmFib3J0X2xz biA9IHBxX2dldG1zZ2ludDY0KGluKTsKKwkJYWJvcnRfZGF0YS0+YWJvcnRfdGltZSA9IHBxX2dl dG1zZ2ludDY0KGluKTsKKwl9CisJZWxzZQorCXsKKwkJYWJvcnRfZGF0YS0+YWJvcnRfbHNuID0g SW52YWxpZFhMb2dSZWNQdHI7CisJCWFib3J0X2RhdGEtPmFib3J0X3RpbWUgPSAwOworCX0KIH0K IAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRl cmJ1ZmZlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVy LmMKaW5kZXggZjI4NGZjMi4uNjZmYjAzOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKQEAgLTI4NzMsNyArMjg3Myw4IEBAIFJlb3JkZXJC dWZmZXJGaW5pc2hQcmVwYXJlZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQs CiAgKiBkaXNrLgogICovCiB2b2lkCi1SZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAq cmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKK1Jlb3JkZXJCdWZmZXJBYm9y dChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAor CQkJCSAgIFRpbWVzdGFtcFR6IGFib3J0X3RpbWUpCiB7CiAJUmVvcmRlckJ1ZmZlclRYTiAqdHhu OwogCkBAIC0yODg0LDYgKzI4ODUsOCBAQCBSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZl ciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKIAlpZiAodHhuID09IE5V TEwpCiAJCXJldHVybjsKIAorCXR4bi0+eGFjdF90aW1lLmFib3J0X3RpbWUgPSBhYm9ydF90aW1l OworCiAJLyogRm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBub3RpZnkgdGhlIHJlbW90ZSBub2Rl IGFib3V0IHRoZSBhYm9ydC4gKi8KIAlpZiAocmJ0eG5faXNfc3RyZWFtZWQodHhuKSkKIAl7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwppbmRleCAwOWIzZThi Li4zOGRmY2U3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Rh Ymxlc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5j LmMKQEAgLTE0LDcgKzE0LDcgQEAKICAqCSAgVGhlIGluaXRpYWwgZGF0YSBzeW5jaHJvbml6YXRp b24gaXMgZG9uZSBzZXBhcmF0ZWx5IGZvciBlYWNoIHRhYmxlLAogICoJICBpbiBhIHNlcGFyYXRl IGFwcGx5IHdvcmtlciB0aGF0IG9ubHkgZmV0Y2hlcyB0aGUgaW5pdGlhbCBzbmFwc2hvdCBkYXRh CiAgKgkgIGZyb20gdGhlIHB1Ymxpc2hlciBhbmQgdGhlbiBzeW5jaHJvbml6ZXMgdGhlIHBvc2l0 aW9uIGluIHRoZSBzdHJlYW0gd2l0aAotICoJICB0aGUgbWFpbiBhcHBseSB3b3JrZXIuCisgKgkg IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyLgogICoKICAqCSAgVGhlcmUgYXJlIHNldmVyYWwgcmVh c29ucyBmb3IgZG9pbmcgdGhlIHN5bmNocm9uaXphdGlvbiB0aGlzIHdheToKICAqCSAgIC0gSXQg YWxsb3dzIHVzIHRvIHBhcmFsbGVsaXplIHRoZSBpbml0aWFsIGRhdGEgc3luY2hyb25pemF0aW9u CkBAIC0xNTMsNyArMTUzLDcgQEAgZmluaXNoX3N5bmNfd29ya2VyKHZvaWQpCiAJCQkJCWdldF9y ZWxfbmFtZShNeUxvZ2ljYWxSZXBXb3JrZXItPnJlbGlkKSkpKTsKIAlDb21taXRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKIAotCS8qIEZpbmQgdGhlIG1haW4gYXBwbHkgd29ya2VyIGFuZCBzaWduYWwg aXQuICovCisJLyogRmluZCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgc2lnbmFsIGl0LiAq LwogCWxvZ2ljYWxyZXBfd29ya2VyX3dha2V1cChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBJ bnZhbGlkT2lkKTsKIAogCS8qIFN0b3AgZ3JhY2VmdWxseSAqLwpAQCAtNTg4LDcgKzU4OCw4IEBA IHByb2Nlc3Nfc3luY2luZ190YWJsZXNfZm9yX2FwcGx5KFhMb2dSZWNQdHIgY3VycmVudF9sc24p CiAJCQkJCQkJCQkJCQkgTXlTdWJzY3JpcHRpb24tPm9pZCwKIAkJCQkJCQkJCQkJCSBNeVN1YnNj cmlwdGlvbi0+bmFtZSwKIAkJCQkJCQkJCQkJCSBNeUxvZ2ljYWxSZXBXb3JrZXItPnVzZXJpZCwK LQkJCQkJCQkJCQkJCSByc3RhdGUtPnJlbGlkKTsKKwkJCQkJCQkJCQkJCSByc3RhdGUtPnJlbGlk LAorCQkJCQkJCQkJCQkJIERTTV9IQU5ETEVfSU5WQUxJRCk7CiAJCQkJCQloZW50cnktPmxhc3Rf c3RhcnRfdGltZSA9IG5vdzsKIAkJCQkJfQogCQkJCX0KQEAgLTYzNiw2ICs2MzcsMTQgQEAgcHJv Y2Vzc19zeW5jaW5nX3RhYmxlc19mb3JfYXBwbHkoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikKIHZv aWQKIHByb2Nlc3Nfc3luY2luZ190YWJsZXMoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikKIHsKKwkv KgorCSAqIFNraXAgZm9yIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgYmVjYXVzZSB0aGV5IG9ubHkg b3BlcmF0ZSBvbiB0YWJsZXMKKwkgKiB0aGF0IGFyZSBpbiBhIFJFQURZIHN0YXRlLiBTZWUgcGFf Y2FuX3N0YXJ0KCkgYW5kCisJICogc2hvdWxkX2FwcGx5X2NoYW5nZXNfZm9yX3JlbCgpLgorCSAq LworCWlmIChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKKwkJcmV0dXJuOworCiAJaWYgKGFt X3RhYmxlc3luY193b3JrZXIoKSkKIAkJcHJvY2Vzc19zeW5jaW5nX3RhYmxlc19mb3Jfc3luYyhj dXJyZW50X2xzbik7CiAJZWxzZQpAQCAtMTI1NCw3ICsxMjYzLDcgQEAgTG9naWNhbFJlcFN5bmNU YWJsZVN0YXJ0KFhMb2dSZWNQdHIgKm9yaWdpbl9zdGFydHBvcykKIAogCS8qCiAJICogSGVyZSB3 ZSB1c2UgdGhlIHNsb3QgbmFtZSBpbnN0ZWFkIG9mIHRoZSBzdWJzY3JpcHRpb24gbmFtZSBhcyB0 aGUKLQkgKiBhcHBsaWNhdGlvbl9uYW1lLCBzbyB0aGF0IGl0IGlzIGRpZmZlcmVudCBmcm9tIHRo ZSBtYWluIGFwcGx5IHdvcmtlciwKKwkgKiBhcHBsaWNhdGlvbl9uYW1lLCBzbyB0aGF0IGl0IGlz IGRpZmZlcmVudCBmcm9tIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyLAogCSAqIHNvIHRoYXQgc3lu Y2hyb25vdXMgcmVwbGljYXRpb24gY2FuIGRpc3Rpbmd1aXNoIHRoZW0uCiAJICovCiAJTG9nUmVw V29ya2VyV2FsUmN2Q29ubiA9CkBAIC0xMzAyLDcgKzEzMTEsNyBAQCBMb2dpY2FsUmVwU3luY1Rh YmxlU3RhcnQoWExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zKQogCQkgKiB0aW1lIHRoaXMgdGFi bGVzeW5jIHdhcyBsYXVuY2hlZC4KIAkJICovCiAJCW9yaWdpbmlkID0gcmVwbG9yaWdpbl9ieV9u YW1lKG9yaWdpbm5hbWUsIGZhbHNlKTsKLQkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdp bmlkKTsKKwkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkLCAwKTsKIAkJcmVwbG9y aWdpbl9zZXNzaW9uX29yaWdpbiA9IG9yaWdpbmlkOwogCQkqb3JpZ2luX3N0YXJ0cG9zID0gcmVw bG9yaWdpbl9zZXNzaW9uX2dldF9wcm9ncmVzcyhmYWxzZSk7CiAKQEAgLTE0MTMsNyArMTQyMiw3 IEBAIExvZ2ljYWxSZXBTeW5jVGFibGVTdGFydChYTG9nUmVjUHRyICpvcmlnaW5fc3RhcnRwb3Mp CiAJCQkJCQkgICB0cnVlIC8qIGdvIGJhY2t3YXJkICovICwgdHJ1ZSAvKiBXQUwgbG9nICovICk7 CiAJCVVubG9ja1JlbGF0aW9uT2lkKFJlcGxpY2F0aW9uT3JpZ2luUmVsYXRpb25JZCwgUm93RXhj bHVzaXZlTG9jayk7CiAKLQkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkKTsKKwkJ cmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkLCAwKTsKIAkJcmVwbG9yaWdpbl9zZXNz aW9uX29yaWdpbiA9IG9yaWdpbmlkOwogCX0KIAllbHNlCkBAIC0xNDY4LDggKzE0NzcsOCBAQCBj b3B5X3RhYmxlX2RvbmU6CiAJU3BpbkxvY2tSZWxlYXNlKCZNeUxvZ2ljYWxSZXBXb3JrZXItPnJl bG11dGV4KTsKIAogCS8qCi0JICogRmluYWxseSwgd2FpdCB1bnRpbCB0aGUgbWFpbiBhcHBseSB3 b3JrZXIgdGVsbHMgdXMgdG8gY2F0Y2ggdXAgYW5kIHRoZW4KLQkgKiByZXR1cm4gdG8gbGV0IExv Z2ljYWxSZXBBcHBseUxvb3AgZG8gaXQuCisJICogRmluYWxseSwgd2FpdCB1bnRpbCB0aGUgbGVh ZGVyIGFwcGx5IHdvcmtlciB0ZWxscyB1cyB0byBjYXRjaCB1cCBhbmQKKwkgKiB0aGVuIHJldHVy biB0byBsZXQgTG9naWNhbFJlcEFwcGx5TG9vcCBkbyBpdC4KIAkgKi8KIAl3YWl0X2Zvcl93b3Jr ZXJfc3RhdGVfY2hhbmdlKFNVQlJFTF9TVEFURV9DQVRDSFVQKTsKIAlyZXR1cm4gc2xvdG5hbWU7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCBmODY0OWUxLi5k ZTk0MmJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtl ci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTIy LDggKzIyLDEyIEBACiAgKiBTVFJFQU1FRCBUUkFOU0FDVElPTlMKICAqIC0tLS0tLS0tLS0tLS0t LS0tLS0tLQogICogU3RyZWFtZWQgdHJhbnNhY3Rpb25zIChsYXJnZSB0cmFuc2FjdGlvbnMgZXhj ZWVkaW5nIGEgbWVtb3J5IGxpbWl0IG9uIHRoZQotICogdXBzdHJlYW0pIGFyZSBub3QgYXBwbGll ZCBpbW1lZGlhdGVseSwgYnV0IGluc3RlYWQsIHRoZSBkYXRhIGlzIHdyaXR0ZW4KLSAqIHRvIHRl bXBvcmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBsaWVkIGF0IG9uY2Ugd2hlbiB0aGUgZmluYWwgY29t bWl0IGFycml2ZXMuCisgKiB1cHN0cmVhbSkgYXJlIGFwcGxpZWQgdXNpbmcgb25lIG9mIHR3byBh cHByb2FjaGVzOgorICoKKyAqIDEpIFdyaXRlIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgYXBwbHkg d2hlbiB0aGUgZmluYWwgY29tbWl0IGFycml2ZXMKKyAqCisgKiBUaGlzIGFwcHJvYWNoIGlzIHVz ZWQgd2hlbiB0aGUgdXNlciBoYXMgc2V0IHRoZSBzdWJzY3JpcHRpb24ncyBzdHJlYW1pbmcKKyAq IG9wdGlvbiBhcyBvbi4KICAqCiAgKiBVbmxpa2UgdGhlIHJlZ3VsYXIgKG5vbi1zdHJlYW1lZCkg Y2FzZSwgaGFuZGxpbmcgc3RyZWFtZWQgdHJhbnNhY3Rpb25zIGhhcwogICogdG8gaGFuZGxlIGFi b3J0cyBvZiBib3RoIHRoZSB0b3BsZXZlbCB0cmFuc2FjdGlvbiBhbmQgc3VidHJhbnNhY3Rpb25z LiBUaGlzCkBAIC01MCw2ICs1NCwxMiBAQAogICogdGhlIGZpbGUgd2UgZGVzaXJlZCBhY3Jvc3Mg bXVsdGlwbGUgc3RyZWFtLW9wZW4gY2FsbHMgZm9yIHRoZSBzYW1lCiAgKiB0cmFuc2FjdGlvbi4K ICAqCisgKiAyKSBQYXJhbGxlbCBhcHBseSB3b3JrZXJzLgorICoKKyAqIFRoaXMgYXBwcm9hY2gg aXMgdXNlZCB3aGVuIHRoZSB1c2VyIGhhcyBzZXQgdGhlIHN1YnNjcmlwdGlvbidzIHN0cmVhbWlu ZworICogb3B0aW9uIGFzIHBhcmFsbGVsLiBTZWUgbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2Vy LmMgZm9yIGluZm9ybWF0aW9uIGFib3V0CisgKiB0aGlzIGFwcHJvYWNoLgorICoKICAqIFRXT19Q SEFTRSBUUkFOU0FDVElPTlMKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIFR3byBwaGFz ZSB0cmFuc2FjdGlvbnMgYXJlIHJlcGxheWVkIGF0IHByZXBhcmUgYW5kIHRoZW4gY29tbWl0dGVk IG9yCkBAIC0yMzMsNyArMjQzLDUyIEBAIHR5cGVkZWYgc3RydWN0IEFwcGx5RXJyb3JDYWxsYmFj a0FyZwogCWNoYXIJICAgKm9yaWdpbl9uYW1lOwogfSBBcHBseUVycm9yQ2FsbGJhY2tBcmc7CiAK LXN0YXRpYyBBcHBseUVycm9yQ2FsbGJhY2tBcmcgYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnID0K Ky8qCisgKiBUaGUgYWN0aW9uIHRvIGJlIHRha2VuIGZvciB0aGUgY2hhbmdlcyBpbiB0aGUgdHJh bnNhY3Rpb24uCisgKgorICogVFJBTlNfTEVBREVSX0FQUExZOgorICogVGhpcyBhY3Rpb24gbWVh bnMgdGhhdCB3ZSBhcmUgaW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIGNoYW5nZXMgb2Yg dGhlCisgKiB0cmFuc2FjdGlvbiBhcmUgYXBwbGllZCBkaXJlY3RseSBieSB0aGUgd29ya2VyLgor ICoKKyAqIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CisgKiBUaGlzIGFjdGlvbiBtZWFucyB0aGF0 IHdlIGFyZSBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBvciB0YWJsZSBzeW5jCisgKiB3b3Jr ZXIuIENoYW5nZXMgYXJlIHdyaXR0ZW4gdG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCB0aGVuIGFwcGxp ZWQgd2hlbiB0aGUKKyAqIGZpbmFsIGNvbW1pdCBhcnJpdmVzLgorICoKKyAqIFRSQU5TX0xFQURF Ul9TRU5EX1RPX1BBUkFMTEVMOgorICogVGhpcyBhY3Rpb24gbWVhbnMgdGhhdCB3ZSBhcmUgaW4g dGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIG5lZWQgdG8gc2VuZAorICogdGhlIGNoYW5nZXMg dG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqCisgKiBUUkFOU19MRUFERVJfUEFSVElB TF9TRVJJQUxJWkU6CisgKiBUaGlzIGFjdGlvbiBtZWFucyB0aGF0IHdlIGFyZSBpbiB0aGUgbGVh ZGVyIGFwcGx5IHdvcmtlciBhbmQgaGF2ZSBzZW50IHNvbWUKKyAqIGNoYW5nZXMgZGlyZWN0bHkg dG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBhbmQgdGhlIHJlbWFpbmluZyBjaGFuZ2VzIGFy ZQorICogc2VyaWFsaXplZCB0byBhIGZpbGUsIGR1ZSB0byB0aW1lb3V0IHdoaWxlIHNlbmRpbmcg ZGF0YS4gVGhlIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXIgd2lsbCBhcHBseSB0aGVzZSBzZXJp YWxpemVkIGNoYW5nZXMgd2hlbiB0aGUgZmluYWwgY29tbWl0IGFycml2ZXMuCisgKgorICogV2Ug Y2FuJ3QgdXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkUgZm9yIHRoaXMgY2FzZSBiZWNhdXNlLCBp biBhZGRpdGlvbiB0bworICogc2VyaWFsaXppbmcgY2hhbmdlcywgdGhlIGxlYWRlciB3b3JrZXIg YWxzbyBuZWVkcyB0byBzZXJpYWxpemUgdGhlCisgKiBTVFJFQU1fWFhYIG1lc3NhZ2UgdG8gYSBm aWxlLCBhbmQgd2FpdCBmb3IgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB0bworICogZmluaXNo IHRoZSB0cmFuc2FjdGlvbiB3aGVuIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBj b21tYW5kLiBTbworICogdGhpcyBuZXcgYWN0aW9uIHdhcyBpbnRyb2R1Y2VkIHRvIGtlZXAgdGhl IGNvZGUgYW5kIGxvZ2ljIGNsZWFyLgorICoKKyAqIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorICog VGhpcyBhY3Rpb24gbWVhbnMgdGhhdCB3ZSBhcmUgaW4gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtl ciBhbmQgY2hhbmdlcyBvZgorICogdGhlIHRyYW5zYWN0aW9uIGFyZSBhcHBsaWVkIGRpcmVjdGx5 IGJ5IHRoZSB3b3JrZXIuCisgKi8KK3R5cGVkZWYgZW51bQoreworCS8qIFRoZSBhY3Rpb24gZm9y IG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zLiAqLworCVRSQU5TX0xFQURFUl9BUFBMWSwKKwor CS8qIEFjdGlvbnMgZm9yIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMuICovCisJVFJBTlNfTEVBREVS X1NFUklBTElaRSwKKwlUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTCwKKwlUUkFOU19MRUFE RVJfUEFSVElBTF9TRVJJQUxJWkUsCisJVFJBTlNfUEFSQUxMRUxfQVBQTFkKK30gVHJhbnNBcHBs eUFjdGlvbjsKKworLyogZXJyY29udGV4dCB0cmFja2VyICovCitBcHBseUVycm9yQ2FsbGJhY2tB cmcgYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnID0KIHsKIAkuY29tbWFuZCA9IDAsCiAJLnJlbCA9 IE5VTEwsCkBAIC0yNDMsNyArMjk4LDkgQEAgc3RhdGljIEFwcGx5RXJyb3JDYWxsYmFja0FyZyBh cHBseV9lcnJvcl9jYWxsYmFja19hcmcgPQogCS5vcmlnaW5fbmFtZSA9IE5VTEwsCiB9OwogCi1z dGF0aWMgTWVtb3J5Q29udGV4dCBBcHBseU1lc3NhZ2VDb250ZXh0ID0gTlVMTDsKK0Vycm9yQ29u dGV4dENhbGxiYWNrICphcHBseV9lcnJvcl9jb250ZXh0X3N0YWNrID0gTlVMTDsKKworTWVtb3J5 Q29udGV4dCBBcHBseU1lc3NhZ2VDb250ZXh0ID0gTlVMTDsKIE1lbW9yeUNvbnRleHQgQXBwbHlD b250ZXh0ID0gTlVMTDsKIAogLyogcGVyIHN0cmVhbSBjb250ZXh0IGZvciBzdHJlYW1pbmcgdHJh bnNhY3Rpb25zICovCkBAIC0yNjUsMTYgKzMyMiwyNSBAQCBzdGF0aWMgYm9vbCBpbl9zdHJlYW1l ZF90cmFuc2FjdGlvbiA9IGZhbHNlOwogc3RhdGljIFRyYW5zYWN0aW9uSWQgc3RyZWFtX3hpZCA9 IEludmFsaWRUcmFuc2FjdGlvbklkOwogCiAvKgorICogVGhlIG51bWJlciBvZiBjaGFuZ2VzIGFw cGxpZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGR1cmluZyBvbmUgc3RyZWFtaW5nCisgKiBi bG9jay4KKyAqLworc3RhdGljIHVpbnQzMiBwYXJhbGxlbF9zdHJlYW1fbmNoYW5nZXMgPSAwOwor CisvKgogICogV2UgZW5hYmxlIHNraXBwaW5nIGFsbCBkYXRhIG1vZGlmaWNhdGlvbiBjaGFuZ2Vz IChJTlNFUlQsIFVQREFURSwgZXRjLikgZm9yCiAgKiB0aGUgc3Vic2NyaXB0aW9uIGlmIHRoZSBy ZW1vdGUgdHJhbnNhY3Rpb24ncyBmaW5pc2ggTFNOIG1hdGNoZXMgdGhlIHN1YnNraXBsc24uCiAg KiBPbmNlIHdlIHN0YXJ0IHNraXBwaW5nIGNoYW5nZXMsIHdlIGRvbid0IHN0b3AgaXQgdW50aWwg d2Ugc2tpcCBhbGwgY2hhbmdlcyBvZgogICogdGhlIHRyYW5zYWN0aW9uIGV2ZW4gaWYgcGdfc3Vi c2NyaXB0aW9uIGlzIHVwZGF0ZWQgYW5kIE15U3Vic2NyaXB0aW9uLT5za2lwbHNuCi0gKiBnZXRz IGNoYW5nZWQgb3IgcmVzZXQgZHVyaW5nIHRoYXQuIEFsc28sIGluIHN0cmVhbWluZyB0cmFuc2Fj dGlvbiBjYXNlcywgd2UKLSAqIGRvbid0IHNraXAgcmVjZWl2aW5nIGFuZCBzcG9vbGluZyB0aGUg Y2hhbmdlcyBzaW5jZSB3ZSBkZWNpZGUgd2hldGhlciBvciBub3QKKyAqIGdldHMgY2hhbmdlZCBv ciByZXNldCBkdXJpbmcgdGhhdC4gQWxzbywgaW4gc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGNhc2Vz IChzdHJlYW1pbmcgPSBvbiksCisgKiB3ZSBkb24ndCBza2lwIHJlY2VpdmluZyBhbmQgc3Bvb2xp bmcgdGhlIGNoYW5nZXMgc2luY2Ugd2UgZGVjaWRlIHdoZXRoZXIgb3Igbm90CiAgKiB0byBza2lw IGFwcGx5aW5nIHRoZSBjaGFuZ2VzIHdoZW4gc3RhcnRpbmcgdG8gYXBwbHkgY2hhbmdlcy4gVGhl IHN1YnNraXBsc24gaXMKICAqIGNsZWFyZWQgYWZ0ZXIgc3VjY2Vzc2Z1bGx5IHNraXBwaW5nIHRo ZSB0cmFuc2FjdGlvbiBvciBhcHBseWluZyBub24tZW1wdHkKICAqIHRyYW5zYWN0aW9uLiBUaGUg bGF0dGVyIHByZXZlbnRzIHRoZSBtaXN0YWtlbmx5IHNwZWNpZmllZCBzdWJza2lwbHNuIGZyb20K LSAqIGJlaW5nIGxlZnQuCisgKiBiZWluZyBsZWZ0LiBOb3RlIHRoYXQgd2UgY2Fubm90IHNraXAg dGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgd2hlbiB1c2luZworICogcGFyYWxsZWwgYXBwbHkg d29ya2VycyBiZWNhdXNlIHdlIGNhbm5vdCBnZXQgdGhlIGZpbmlzaCBMU04gYmVmb3JlIGFwcGx5 aW5nCisgKiB0aGUgY2hhbmdlcy4gU28sIHdlIGRvbid0IHN0YXJ0IHBhcmFsbGVsIGFwcGx5IHdv cmtlciB3aGVuIGZpbmlzaCBMU04gaXMgc2V0CisgKiBieSB0aGUgdXNlci4KICAqLwogc3RhdGlj IFhMb2dSZWNQdHIgc2tpcF94YWN0X2ZpbmlzaF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKICNk ZWZpbmUgaXNfc2tpcHBpbmdfY2hhbmdlcygpICh1bmxpa2VseSghWExvZ1JlY1B0cklzSW52YWxp ZChza2lwX3hhY3RfZmluaXNoX2xzbikpKQpAQCAtMzE0LDIzICszODAsMTYgQEAgc3RhdGljIGlu bGluZSB2b2lkIGNsZWFudXBfc3VieGFjdF9pbmZvKHZvaWQpOwogLyoKICAqIFNlcmlhbGl6ZSBh bmQgZGVzZXJpYWxpemUgY2hhbmdlcyBmb3IgYSB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KICAqLwot c3RhdGljIHZvaWQgc3RyZWFtX2NsZWFudXBfZmlsZXMoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklk IHhpZCk7CiBzdGF0aWMgdm9pZCBzdHJlYW1fb3Blbl9maWxlKE9pZCBzdWJpZCwgVHJhbnNhY3Rp b25JZCB4aWQsCiAJCQkJCQkJIGJvb2wgZmlyc3Rfc2VnbWVudCk7CiBzdGF0aWMgdm9pZCBzdHJl YW1fd3JpdGVfY2hhbmdlKGNoYXIgYWN0aW9uLCBTdHJpbmdJbmZvIHMpOworc3RhdGljIHZvaWQg c3RyZWFtX29wZW5fYW5kX3dyaXRlX2NoYW5nZShUcmFuc2FjdGlvbklkIHhpZCwgY2hhciBhY3Rp b24sIFN0cmluZ0luZm8gcyk7CiBzdGF0aWMgdm9pZCBzdHJlYW1fY2xvc2VfZmlsZSh2b2lkKTsK IAogc3RhdGljIHZvaWQgc2VuZF9mZWVkYmFjayhYTG9nUmVjUHRyIHJlY3Zwb3MsIGJvb2wgZm9y Y2UsIGJvb2wgcmVxdWVzdFJlcGx5KTsKIAotc3RhdGljIHZvaWQgc3RvcmVfZmx1c2hfcG9zaXRp b24oWExvZ1JlY1B0ciByZW1vdGVfbHNuKTsKLQotc3RhdGljIHZvaWQgbWF5YmVfcmVyZWFkX3N1 YnNjcmlwdGlvbih2b2lkKTsKLQogc3RhdGljIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4 aXQodm9pZCk7CiAKLS8qIHByb3RvdHlwZSBuZWVkZWQgYmVjYXVzZSBvZiBzdHJlYW1fY29tbWl0 ICovCi1zdGF0aWMgdm9pZCBhcHBseV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpOwotCiBzdGF0aWMg dm9pZCBhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKExvZ2ljYWxSZXBDb21taXREYXRhICpj b21taXRfZGF0YSk7CiBzdGF0aWMgdm9pZCBhcHBseV9oYW5kbGVfaW5zZXJ0X2ludGVybmFsKEFw cGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCiAJCQkJCQkJCQkJIFJlc3VsdFJlbEluZm8gKnJlbGlu Zm8sCkBAIC0zNTQsMTkgKzQxMywzMiBAQCBzdGF0aWMgdm9pZCBhcHBseV9oYW5kbGVfdHVwbGVf cm91dGluZyhBcHBseUV4ZWN1dGlvbkRhdGEgKmVkYXRhLAogLyogQ29tcHV0ZSBHSUQgZm9yIHR3 b19waGFzZSB0cmFuc2FjdGlvbnMgKi8KIHN0YXRpYyB2b2lkIFR3b1BoYXNlVHJhbnNhY3Rpb25H aWQoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCwgY2hhciAqZ2lkLCBpbnQgc3pnaWQpOwog Ci0vKiBDb21tb24gc3RyZWFtaW5nIGZ1bmN0aW9uIHRvIGFwcGx5IGFsbCB0aGUgc3Bvb2xlZCBt ZXNzYWdlcyAqLwotc3RhdGljIHZvaWQgYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlv bklkIHhpZCwgWExvZ1JlY1B0ciBsc24pOwotCiAvKiBGdW5jdGlvbnMgZm9yIHNraXBwaW5nIGNo YW5nZXMgKi8KIHN0YXRpYyB2b2lkIG1heWJlX3N0YXJ0X3NraXBwaW5nX2NoYW5nZXMoWExvZ1Jl Y1B0ciBmaW5pc2hfbHNuKTsKIHN0YXRpYyB2b2lkIHN0b3Bfc2tpcHBpbmdfY2hhbmdlcyh2b2lk KTsKIHN0YXRpYyB2b2lkIGNsZWFyX3N1YnNjcmlwdGlvbl9za2lwX2xzbihYTG9nUmVjUHRyIGZp bmlzaF9sc24pOwogCiAvKiBGdW5jdGlvbnMgZm9yIGFwcGx5IGVycm9yIGNhbGxiYWNrICovCi1z dGF0aWMgdm9pZCBhcHBseV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpOwogc3RhdGljIGlubGlu ZSB2b2lkIHNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoVHJhbnNhY3Rpb25JZCB4aWQsIFhM b2dSZWNQdHIgbHNuKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCByZXNldF9hcHBseV9lcnJvcl9jb250 ZXh0X2luZm8odm9pZCk7CiAKK3N0YXRpYyBUcmFuc0FwcGx5QWN0aW9uIGdldF90cmFuc2FjdGlv bl9hcHBseV9hY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsCisJCQkJCQkJCQkJCQkJIFBhcmFsbGVs QXBwbHlXb3JrZXJJbmZvICoqd2luZm8pOworCisvKgorICogUmV0dXJuIHRoZSBuYW1lIG9mIHRo ZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlci4KKyAqLworc3RhdGljIGNvbnN0IGNoYXIgKgor Z2V0X3dvcmtlcl9uYW1lKHZvaWQpCit7CisJaWYgKGFtX3RhYmxlc3luY193b3JrZXIoKSkKKwkJ cmV0dXJuIF8oImxvZ2ljYWwgcmVwbGljYXRpb24gdGFibGUgc3luY2hyb25pemF0aW9uIHdvcmtl ciIpOworCWVsc2UgaWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQlyZXR1cm4gXygi bG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIiKTsKKwllbHNlCisJCXJl dHVybiBfKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlciIpOworfQorCiAvKgogICog Rm9ybSB0aGUgb3JpZ2luIG5hbWUgZm9yIHRoZSBzdWJzY3JpcHRpb24uCiAgKgpAQCAtMzk2LDE5 ICs0NjgsNDMgQEAgUmVwbGljYXRpb25PcmlnaW5OYW1lRm9yTG9naWNhbFJlcChPaWQgc3Vib2lk LCBPaWQgcmVsaWQsCiAgKgogICogVGhpcyBpcyBtYWlubHkgbmVlZGVkIGZvciBpbml0aWFsIHJl bGF0aW9uIGRhdGEgc3luYyBhcyB0aGF0IHJ1bnMgaW4KICAqIHNlcGFyYXRlIHdvcmtlciBwcm9j ZXNzIHJ1bm5pbmcgaW4gcGFyYWxsZWwgYW5kIHdlIG5lZWQgc29tZSB3YXkgdG8gc2tpcAotICog Y2hhbmdlcyBjb21pbmcgdG8gdGhlIG1haW4gYXBwbHkgd29ya2VyIGR1cmluZyB0aGUgc3luYyBv ZiBhIHRhYmxlLgorICogY2hhbmdlcyBjb21pbmcgdG8gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIg ZHVyaW5nIHRoZSBzeW5jIG9mIGEgdGFibGUuCiAgKgogICogTm90ZSB3ZSBuZWVkIHRvIGRvIHNt YWxsZXIgb3IgZXF1YWxzIGNvbXBhcmlzb24gZm9yIFNZTkNET05FIHN0YXRlIGJlY2F1c2UKICAq IGl0IG1pZ2h0IGhvbGQgcG9zaXRpb24gb2YgZW5kIG9mIGluaXRpYWwgc2xvdCBjb25zaXN0ZW50 IHBvaW50IFdBTAogICogcmVjb3JkICsgMSAoaWUgc3RhcnQgb2YgbmV4dCByZWNvcmQpIGFuZCBu ZXh0IHJlY29yZCBjYW4gYmUgQ09NTUlUIG9mCiAgKiB0cmFuc2FjdGlvbiB3ZSBhcmUgbm93IHBy b2Nlc3NpbmcgKHdoaWNoIGlzIHdoYXQgd2Ugc2V0IHJlbW90ZV9maW5hbF9sc24KICAqIHRvIGlu IGFwcGx5X2hhbmRsZV9iZWdpbikuCisgKgorICogTm90ZSB0aGF0IGZvciBzdHJlYW1pbmcgdHJh bnNhY3Rpb25zIHRoYXQgYXJlIGJlaW5nIGFwcGxpZWQgaW4gdGhlIHBhcmFsbGVsCisgKiBhcHBs eSB3b3JrZXIsIHdlIGRpc2FsbG93IGFwcGx5aW5nIGNoYW5nZXMgaWYgdGhlIHRhcmdldCB0YWJs ZSBpbiB0aGUKKyAqIHN1YnNjcmlwdGlvbiBpcyBub3QgaW4gdGhlIFJFQURZIHN0YXRlLCBiZWNh dXNlIHdlIGNhbm5vdCBkZWNpZGUgd2hldGhlciB0bworICogYXBwbHkgdGhlIGNoYW5nZSBhcyB3 ZSB3b24ndCBrbm93IHJlbW90ZV9maW5hbF9sc24gYnkgdGhhdCB0aW1lLgorICoKKyAqIFdlIGFs cmVhZHkgY2hlY2tlZCB0aGlzIGluIHBhX2Nhbl9zdGFydCgpIGJlZm9yZSBhc3NpZ25pbmcgdGhl CisgKiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gdGhlIHBhcmFsbGVsIHdvcmtlciwgYnV0IGl0 IGFsc28gbmVlZHMgdG8gYmUKKyAqIGNoZWNrZWQgaGVyZSBiZWNhdXNlIGlmIHRoZSB1c2VyIGV4 ZWN1dGVzIEFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSAorICogUFVCTElDQVRJT04gaW4g cGFyYWxsZWwsIHRoZSBuZXcgdGFibGUgY2FuIGJlIGFkZGVkIHRvIHBnX3N1YnNjcmlwdGlvbl9y ZWwKKyAqIHdoaWxlIGFwcGx5aW5nIHRoaXMgdHJhbnNhY3Rpb24uCiAgKi8KIHN0YXRpYyBib29s CiBzaG91bGRfYXBwbHlfY2hhbmdlc19mb3JfcmVsKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVs KQogewogCWlmIChhbV90YWJsZXN5bmNfd29ya2VyKCkpCiAJCXJldHVybiBNeUxvZ2ljYWxSZXBX b3JrZXItPnJlbGlkID09IHJlbC0+bG9jYWxyZWxvaWQ7CisJZWxzZSBpZiAoYW1fcGFyYWxsZWxf YXBwbHlfd29ya2VyKCkpCisJeworCQkvKiBXZSBkb24ndCBzeW5jaHJvbml6ZSByZWwncyB0aGF0 IGFyZSBpbiB1bmtub3duIHN0YXRlLiAqLworCQlpZiAocmVsLT5zdGF0ZSAhPSBTVUJSRUxfU1RB VEVfUkVBRFkgJiYKKwkJCXJlbC0+c3RhdGUgIT0gU1VCUkVMX1NUQVRFX1VOS05PV04pCisJCQll cmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVR VUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxl bCBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCBzdG9wIiwKKwkJCQkJ CQlNeVN1YnNjcmlwdGlvbi0+bmFtZSksCisJCQkJCSBlcnJkZXRhaWwoIkNhbm5vdCBoYW5kbGUg c3RyZWFtZWQgcmVwbGljYXRpb24gdHJhbnNhY3Rpb25zIHVzaW5nIHBhcmFsbGVsIGFwcGx5IHdv cmtlcnMgdW50aWwgYWxsIHRhYmxlcyBoYXZlIGJlZW4gc3luY2hyb25pemVkLiIpKSk7CisKKwkJ cmV0dXJuIHJlbC0+c3RhdGUgPT0gU1VCUkVMX1NUQVRFX1JFQURZOworCX0KIAllbHNlCiAJCXJl dHVybiAocmVsLT5zdGF0ZSA9PSBTVUJSRUxfU1RBVEVfUkVBRFkgfHwKIAkJCQkocmVsLT5zdGF0 ZSA9PSBTVUJSRUxfU1RBVEVfU1lOQ0RPTkUgJiYKQEAgLTQ1NCw0MyArNTUwLDExMCBAQCBlbmRf cmVwbGljYXRpb25fc3RlcCh2b2lkKQogfQogCiAvKgotICogSGFuZGxlIHN0cmVhbWVkIHRyYW5z YWN0aW9ucy4KKyAqIEhhbmRsZSBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgZm9yIGJvdGggdGhlIGxl YWRlciBhcHBseSB3b3JrZXIgYW5kIHRoZQorICogcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4KKyAq CisgKiBJbiB0aGUgc3RyZWFtaW5nIGNhc2UgKHJlY2VpdmluZyBhIGJsb2NrIG9mIHRoZSBzdHJl YW1lZCB0cmFuc2FjdGlvbiksIGZvcgorICogc2VyaWFsaXplIG1vZGUsIHNpbXBseSByZWRpcmVj dCBpdCB0byBhIGZpbGUgZm9yIHRoZSBwcm9wZXIgdG9wbGV2ZWwKKyAqIHRyYW5zYWN0aW9uLCBh bmQgZm9yIHBhcmFsbGVsIG1vZGUsIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwgc2VuZCB0 aGUKKyAqIGNoYW5nZXMgdG8gcGFyYWxsZWwgYXBwbHkgd29ya2VycyBhbmQgdGhlIHBhcmFsbGVs IGFwcGx5IHdvcmtlciB3aWxsIGRlZmluZQorICogc2F2ZXBvaW50cyBpZiBuZWVkZWQuIChMT0dJ Q0FMX1JFUF9NU0dfUkVMQVRJT04gb3IgTE9HSUNBTF9SRVBfTVNHX1RZUEUKKyAqIG1lc3NhZ2Vz IHdpbGwgYmUgYXBwbGllZCBieSBib3RoIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHBhcmFsbGVs IGFwcGx5CisgKiB3b3JrZXJzKS4KICAqCi0gKiBJZiBpbiBzdHJlYW1pbmcgbW9kZSAocmVjZWl2 aW5nIGEgYmxvY2sgb2Ygc3RyZWFtZWQgdHJhbnNhY3Rpb24pLCB3ZQotICogc2ltcGx5IHJlZGly ZWN0IGl0IHRvIGEgZmlsZSBmb3IgdGhlIHByb3BlciB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KKyAq IFJldHVybnMgdHJ1ZSBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb25zICh3aGVuIHRoZSBjaGFuZ2Ug aXMgZWl0aGVyIHNlcmlhbGl6ZWQKKyAqIHRvIGZpbGUgb3Igc2VudCB0byBwYXJhbGxlbCBhcHBs eSB3b3JrZXIpLCBmYWxzZSBvdGhlcndpc2UgKHJlZ3VsYXIgbW9kZSBvcgorICogbmVlZHMgdG8g YmUgcHJvY2Vzc2VkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlcikuCiAgKgotICogUmV0dXJucyB0 cnVlIGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbnMsIGZhbHNlIG90aGVyd2lzZSAocmVndWxhciBt b2RlKS4KKyAqIEV4Y2VwdGlvbjogSWYgdGhlIG1lc3NhZ2UgYmVpbmcgcHJvY2Vzc2VkIGlzIExP R0lDQUxfUkVQX01TR19SRUxBVElPTgorICogb3IgTE9HSUNBTF9SRVBfTVNHX1RZUEUsIHJldHVy biBmYWxzZSBldmVuIGlmIHRoZSBtZXNzYWdlIG5lZWRzIHRvIGJlIHNlbnQKKyAqIHRvIGEgcGFy YWxsZWwgYXBwbHkgd29ya2VyLgogICovCiBzdGF0aWMgYm9vbAogaGFuZGxlX3N0cmVhbWVkX3Ry YW5zYWN0aW9uKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbiwgU3RyaW5nSW5mbyBzKQogewotCVRy YW5zYWN0aW9uSWQgeGlkOworCVRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQ7CisJUGFyYWxsZWxB cHBseVdvcmtlckluZm8gKndpbmZvOworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOwor CVN0cmluZ0luZm9EYXRhIG9yaWdpbmFsX21zZzsKKworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFu c2FjdGlvbl9hcHBseV9hY3Rpb24oc3RyZWFtX3hpZCwgJndpbmZvKTsKIAogCS8qIG5vdCBpbiBz dHJlYW1pbmcgbW9kZSAqLwotCWlmICghaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCisJaWYgKGFw cGx5X2FjdGlvbiA9PSBUUkFOU19MRUFERVJfQVBQTFkpCiAJCXJldHVybiBmYWxzZTsKIAotCUFz c2VydChzdHJlYW1fZmQgIT0gTlVMTCk7CiAJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHN0 cmVhbV94aWQpKTsKIAogCS8qCisJICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBuZWVkcyB0 aGUgeGlkIGluIHRoaXMgbWVzc2FnZSB0byBkZWNpZGUKKwkgKiB3aGV0aGVyIHRvIGRlZmluZSBh IHNhdmVwb2ludCwgc28gc2F2ZSB0aGUgb3JpZ2luYWwgbWVzc2FnZSB0aGF0IGhhcworCSAqIG5v dCBtb3ZlZCB0aGUgY3Vyc29yIGFmdGVyIHRoZSB4aWQuIFdlIHdpbGwgc2VyaWFsaXplIHRoaXMg bWVzc2FnZSB0byBhCisJICogZmlsZSBpbiBQQVJUSUFMX1NFUklBTElaRSBtb2RlLgorCSAqLwor CW9yaWdpbmFsX21zZyA9ICpzOworCisJLyoKIAkgKiBXZSBzaG91bGQgaGF2ZSByZWNlaXZlZCBY SUQgb2YgdGhlIHN1YnhhY3QgYXMgdGhlIGZpcnN0IHBhcnQgb2YgdGhlCiAJICogbWVzc2FnZSwg c28gZXh0cmFjdCBpdC4KIAkgKi8KLQl4aWQgPSBwcV9nZXRtc2dpbnQocywgNCk7CisJY3VycmVu dF94aWQgPSBwcV9nZXRtc2dpbnQocywgNCk7CiAKLQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KHhpZCkpCisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChjdXJyZW50X3hpZCkpCiAJCWVyZXBv cnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAogCQkJ CSBlcnJtc2dfaW50ZXJuYWwoImludmFsaWQgdHJhbnNhY3Rpb24gSUQgaW4gc3RyZWFtZWQgcmVw bGljYXRpb24gdHJhbnNhY3Rpb24iKSkpOwogCi0JLyogQWRkIHRoZSBuZXcgc3VieGFjdCB0byB0 aGUgYXJyYXkgKHVubGVzcyBhbHJlYWR5IHRoZXJlKS4gKi8KLQlzdWJ4YWN0X2luZm9fYWRkKHhp ZCk7CisJc3dpdGNoIChhcHBseV9hY3Rpb24pCisJeworCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJ QUxJWkU6CisJCQlBc3NlcnQoc3RyZWFtX2ZkKTsKIAotCS8qIHdyaXRlIHRoZSBjaGFuZ2UgdG8g dGhlIGN1cnJlbnQgZmlsZSAqLwotCXN0cmVhbV93cml0ZV9jaGFuZ2UoYWN0aW9uLCBzKTsKKwkJ CS8qIEFkZCB0aGUgbmV3IHN1YnhhY3QgdG8gdGhlIGFycmF5ICh1bmxlc3MgYWxyZWFkeSB0aGVy ZSkuICovCisJCQlzdWJ4YWN0X2luZm9fYWRkKGN1cnJlbnRfeGlkKTsKKworCQkJLyogV3JpdGUg dGhlIGNoYW5nZSB0byB0aGUgY3VycmVudCBmaWxlICovCisJCQlzdHJlYW1fd3JpdGVfY2hhbmdl KGFjdGlvbiwgcyk7CisJCQlyZXR1cm4gdHJ1ZTsKKworCQljYXNlIFRSQU5TX0xFQURFUl9TRU5E X1RPX1BBUkFMTEVMOgorCQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJLyoKKwkJCSAqIFhYWCBUaGUg cHVibGlzaGVyIHNpZGUgZG9lc24ndCBhbHdheXMgc2VuZCByZWxhdGlvbi90eXBlIHVwZGF0ZQor CQkJICogbWVzc2FnZXMgYWZ0ZXIgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiwgc28gYWxzbyB1 cGRhdGUgdGhlCisJCQkgKiByZWxhdGlvbi90eXBlIGluIGxlYWRlciBhcHBseSB3b3JrZXIuIFNl ZSBmdW5jdGlvbgorCQkJICogY2xlYW51cF9yZWxfc3luY19jYWNoZS4KKwkJCSAqLworCQkJaWYg KHBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKSkKKwkJCQlyZXR1cm4gKGFjdGlv biAhPSBMT0dJQ0FMX1JFUF9NU0dfUkVMQVRJT04gJiYKKwkJCQkJCWFjdGlvbiAhPSBMT0dJQ0FM X1JFUF9NU0dfVFlQRSk7CisKKwkJCS8qCisJCQkgKiBTd2l0Y2ggdG8gc2VyaWFsaXplIG1vZGUg d2hlbiB3ZSBhcmUgbm90IGFibGUgdG8gc2VuZCB0aGUKKwkJCSAqIGNoYW5nZSB0byBwYXJhbGxl bCBhcHBseSB3b3JrZXIuCisJCQkgKi8KKwkJCXBhX3N3aXRjaF90b19wYXJ0aWFsX3NlcmlhbGl6 ZSh3aW5mbywgZmFsc2UpOworCisJCQkvKiBmYWxsIHRocm91Z2ggKi8KKwkJY2FzZSBUUkFOU19M RUFERVJfUEFSVElBTF9TRVJJQUxJWkU6CisJCQlzdHJlYW1fd3JpdGVfY2hhbmdlKGFjdGlvbiwg Jm9yaWdpbmFsX21zZyk7CisKKwkJCS8qIFNhbWUgcmVhc29uIGFzIFRSQU5TX0xFQURFUl9TRU5E X1RPX1BBUkFMTEVMIGNhc2UuICovCisJCQlyZXR1cm4gKGFjdGlvbiAhPSBMT0dJQ0FMX1JFUF9N U0dfUkVMQVRJT04gJiYKKwkJCQkJYWN0aW9uICE9IExPR0lDQUxfUkVQX01TR19UWVBFKTsKIAot CXJldHVybiB0cnVlOworCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCQkJcGFyYWxsZWxf c3RyZWFtX25jaGFuZ2VzICs9IDE7CisKKwkJCS8qIERlZmluZSBhIHNhdmVwb2ludCBmb3IgYSBz dWJ4YWN0IGlmIG5lZWRlZC4gKi8KKwkJCXBhX3N0YXJ0X3N1YnRyYW5zKGN1cnJlbnRfeGlkLCBz dHJlYW1feGlkKTsKKwkJCXJldHVybiBmYWxzZTsKKworCQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZh bHNlKTsKKwkJCXJldHVybiBmYWxzZTsJCS8qIHNpbGVuY2UgY29tcGlsZXIgd2FybmluZyAqLwor CX0KIH0KIAogLyoKQEAgLTkyOCw4ICsxMDkxLDExIEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJlX2lu dGVybmFsKExvZ2ljYWxSZXBQcmVwYXJlZFR4bkRhdGEgKnByZXBhcmVfZGF0YSkKIAkgKiBCZWdp blRyYW5zYWN0aW9uQmxvY2sgaXMgbmVjZXNzYXJ5IHRvIGJhbGFuY2UgdGhlIEVuZFRyYW5zYWN0 aW9uQmxvY2sKIAkgKiBjYWxsZWQgd2l0aGluIHRoZSBQcmVwYXJlVHJhbnNhY3Rpb25CbG9jayBi ZWxvdy4KIAkgKi8KLQlCZWdpblRyYW5zYWN0aW9uQmxvY2soKTsKLQlDb21taXRUcmFuc2FjdGlv bkNvbW1hbmQoKTsgLyogQ29tcGxldGVzIHRoZSBwcmVjZWRpbmcgQmVnaW4gY29tbWFuZC4gKi8K KwlpZiAoIUlzVHJhbnNhY3Rpb25CbG9jaygpKQorCXsKKwkJQmVnaW5UcmFuc2FjdGlvbkJsb2Nr KCk7CisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOyAvKiBDb21wbGV0ZXMgdGhlIHByZWNl ZGluZyBCZWdpbiBjb21tYW5kLiAqLworCX0KIAogCS8qCiAJICogVXBkYXRlIG9yaWdpbiBzdGF0 ZSBzbyB3ZSBjYW4gcmVzdGFydCBzdHJlYW1pbmcgZnJvbSBjb3JyZWN0IHBvc2l0aW9uCkBAIC05 NzYsNyArMTE0Miw3IEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAlDb21t aXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCi0J c3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24pOworCXN0b3JlX2ZsdXNo X3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuLCBYYWN0TGFzdENvbW1pdEVuZCk7CiAKIAlp bl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIApAQCAtOTk4LDYgKzExNjQsMTIgQEAgYXBw bHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCiAvKgogICogSGFuZGxlIGEgQ09NTUlU IFBSRVBBUkVEIG9mIGEgcHJldmlvdXNseSBQUkVQQVJFRCB0cmFuc2FjdGlvbi4KKyAqCisgKiBO b3RlIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byB3YWl0IGhlcmUgaWYgdGhlIHRyYW5zYWN0aW9uIHdh cyBwcmVwYXJlZCBpbiBhCisgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuIEluIHRoYXQgY2FzZSwg d2UgaGF2ZSBhbHJlYWR5IHdhaXRlZCBmb3IgdGhlIHByZXBhcmUKKyAqIHRvIGZpbmlzaCBpbiBh cHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoKSB3aGljaCB3aWxsIGVuc3VyZSBhbGwgdGhlCisg KiBvcGVyYXRpb25zIGluIHRoYXQgdHJhbnNhY3Rpb24gaGF2ZSBoYXBwZW5lZCBpbiB0aGUgc3Vi c2NyaWJlciwgc28gbm8KKyAqIGNvbmN1cnJlbnQgdHJhbnNhY3Rpb24gY2FuIGNhdXNlIGRlYWRs b2NrIG9yIHRyYW5zYWN0aW9uIGRlcGVuZGVuY3kgaXNzdWVzLgogICovCiBzdGF0aWMgdm9pZAog YXBwbHlfaGFuZGxlX2NvbW1pdF9wcmVwYXJlZChTdHJpbmdJbmZvIHMpCkBAIC0xMDI3LDcgKzEx OTksNyBAQCBhcHBseV9oYW5kbGVfY29tbWl0X3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAlDb21t aXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCi0J c3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24pOworCXN0b3JlX2ZsdXNo X3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuLCBYYWN0TGFzdENvbW1pdEVuZCk7CiAJaW5f cmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhh dCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwpAQCAtMTA0MSw2ICsxMjEz LDEyIEBAIGFwcGx5X2hhbmRsZV9jb21taXRfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCiAvKgog ICogSGFuZGxlIGEgUk9MTEJBQ0sgUFJFUEFSRUQgb2YgYSBwcmV2aW91c2x5IFBSRVBBUkVEIFRS QU5TQUNUSU9OLgorICoKKyAqIE5vdGUgdGhhdCB3ZSBkb24ndCBuZWVkIHRvIHdhaXQgaGVyZSBp ZiB0aGUgdHJhbnNhY3Rpb24gd2FzIHByZXBhcmVkIGluIGEKKyAqIHBhcmFsbGVsIGFwcGx5IHdv cmtlci4gSW4gdGhhdCBjYXNlLCB3ZSBoYXZlIGFscmVhZHkgd2FpdGVkIGZvciB0aGUgcHJlcGFy ZQorICogdG8gZmluaXNoIGluIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZSgpIHdoaWNoIHdp bGwgZW5zdXJlIGFsbCB0aGUKKyAqIG9wZXJhdGlvbnMgaW4gdGhhdCB0cmFuc2FjdGlvbiBoYXZl IGhhcHBlbmVkIGluIHRoZSBzdWJzY3JpYmVyLCBzbyBubworICogY29uY3VycmVudCB0cmFuc2Fj dGlvbiBjYW4gY2F1c2UgZGVhZGxvY2sgb3IgdHJhbnNhY3Rpb24gZGVwZW5kZW5jeSBpc3N1ZXMu CiAgKi8KIHN0YXRpYyB2b2lkCiBhcHBseV9oYW5kbGVfcm9sbGJhY2tfcHJlcGFyZWQoU3RyaW5n SW5mbyBzKQpAQCAtMTA4Miw3ICsxMjYwLDcgQEAgYXBwbHlfaGFuZGxlX3JvbGxiYWNrX3ByZXBh cmVkKFN0cmluZ0luZm8gcykKIAogCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CiAKLQlzdG9y ZV9mbHVzaF9wb3NpdGlvbihyb2xsYmFja19kYXRhLnJvbGxiYWNrX2VuZF9sc24pOworCXN0b3Jl X2ZsdXNoX3Bvc2l0aW9uKHJvbGxiYWNrX2RhdGEucm9sbGJhY2tfZW5kX2xzbiwgWGFjdExhc3RD b21taXRFbmQpOwogCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCiAJLyogUHJvY2Vz cyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8K QEAgLTEwOTQsMTUgKzEyNzIsMTYgQEAgYXBwbHlfaGFuZGxlX3JvbGxiYWNrX3ByZXBhcmVkKFN0 cmluZ0luZm8gcykKIAogLyoKICAqIEhhbmRsZSBTVFJFQU0gUFJFUEFSRS4KLSAqCi0gKiBMb2dp YyBpcyBpbiB0d28gcGFydHM6Ci0gKiAxLiBSZXBsYXkgYWxsIHRoZSBzcG9vbGVkIG9wZXJhdGlv bnMKLSAqIDIuIE1hcmsgdGhlIHRyYW5zYWN0aW9uIGFzIHByZXBhcmVkCiAgKi8KIHN0YXRpYyB2 b2lkCiBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogewogCUxvZ2lj YWxSZXBQcmVwYXJlZFR4bkRhdGEgcHJlcGFyZV9kYXRhOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvICp3aW5mbzsKKwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKKworCS8qIFNhdmUg dGhlIG1lc3NhZ2UgYmVmb3JlIGl0IGlzIGNvbnN1bWVkLiAqLworCVN0cmluZ0luZm9EYXRhIG9y aWdpbmFsX21zZyA9ICpzOwogCiAJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQogCQllcmVw b3J0KEVSUk9SLApAQCAtMTExOCwyNCArMTI5Nyw5OCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3By ZXBhcmUoU3RyaW5nSW5mbyBzKQogCWxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fcHJlcGFyZShzLCAm cHJlcGFyZV9kYXRhKTsKIAlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHByZXBhcmVfZGF0 YS54aWQsIHByZXBhcmVfZGF0YS5wcmVwYXJlX2xzbik7CiAKLQllbG9nKERFQlVHMSwgInJlY2Vp dmVkIHByZXBhcmUgZm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9uICV1IiwgcHJlcGFyZV9kYXRhLnhp ZCk7CisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihwcmVwYXJl X2RhdGEueGlkLCAmd2luZm8pOwogCi0JLyogUmVwbGF5IGFsbCB0aGUgc3Bvb2xlZCBvcGVyYXRp b25zLiAqLwotCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMocHJlcGFyZV9kYXRhLnhpZCwgcHJlcGFy ZV9kYXRhLnByZXBhcmVfbHNuKTsKKwlzd2l0Y2ggKGFwcGx5X2FjdGlvbikKKwl7CisJCWNhc2Ug VFJBTlNfTEVBREVSX1NFUklBTElaRToKIAotCS8qIE1hcmsgdGhlIHRyYW5zYWN0aW9uIGFzIHBy ZXBhcmVkLiAqLwotCWFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVybmFsKCZwcmVwYXJlX2RhdGEp OworCQkJLyoKKwkJCSAqIFRoZSB0cmFuc2FjdGlvbiBoYXMgYmVlbiBzZXJpYWxpemVkIHRvIGZp bGUsIHNvIHJlcGxheSBhbGwgdGhlCisJCQkgKiBzcG9vbGVkIG9wZXJhdGlvbnMuCisJCQkgKi8K KwkJCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmls ZXNldCwKKwkJCQkJCQkJICAgcHJlcGFyZV9kYXRhLnhpZCwgcHJlcGFyZV9kYXRhLnByZXBhcmVf bHNuKTsKIAotCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQkJLyogTWFyayB0aGUgdHJh bnNhY3Rpb24gYXMgcHJlcGFyZWQuICovCisJCQlhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5h bCgmcHJlcGFyZV9kYXRhKTsKIAotCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CisJCQlDb21t aXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVf ZGF0YS5lbmRfbHNuKTsKKwkJCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRf bHNuLCBYYWN0TGFzdENvbW1pdEVuZCk7CiAKLQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxz ZTsKKwkJCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOworCisJCQkvKiBVbmxpbmsgdGhl IGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCisJCQlz dHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBwcmVwYXJlX2Rh dGEueGlkKTsKKworCQkJZWxvZyhERUJVRzEsICJmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSBTVFJF QU0gUFJFUEFSRSBjb21tYW5kIik7CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX0xFQURFUl9T RU5EX1RPX1BBUkFMTEVMOgorCQkJQXNzZXJ0KHdpbmZvKTsKIAotCS8qIHVubGluayB0aGUgZmls ZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mby4gKi8KLQlzdHJlYW1f Y2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBwcmVwYXJlX2RhdGEueGlk KTsKKwkJCWlmIChwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkpCisJCQl7CisJ CQkJLyogRmluaXNoIHByb2Nlc3NpbmcgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gKi8KKwkJ CQlwYV94YWN0X2ZpbmlzaCh3aW5mbywgcHJlcGFyZV9kYXRhLmVuZF9sc24pOworCQkJCWJyZWFr OworCQkJfQorCisJCQkvKgorCQkJICogU3dpdGNoIHRvIHNlcmlhbGl6ZSBtb2RlIHdoZW4gd2Ug YXJlIG5vdCBhYmxlIHRvIHNlbmQgdGhlCisJCQkgKiBjaGFuZ2UgdG8gcGFyYWxsZWwgYXBwbHkg d29ya2VyLgorCQkJICovCisJCQlwYV9zd2l0Y2hfdG9fcGFydGlhbF9zZXJpYWxpemUod2luZm8s IHRydWUpOworCisJCQkvKiBmYWxsIHRocm91Z2ggKi8KKwkJY2FzZSBUUkFOU19MRUFERVJfUEFS VElBTF9TRVJJQUxJWkU6CisJCQlBc3NlcnQod2luZm8pOworCisJCQlzdHJlYW1fb3Blbl9hbmRf d3JpdGVfY2hhbmdlKHByZXBhcmVfZGF0YS54aWQsCisJCQkJCQkJCQkJIExPR0lDQUxfUkVQX01T R19TVFJFQU1fUFJFUEFSRSwKKwkJCQkJCQkJCQkgJm9yaWdpbmFsX21zZyk7CisKKwkJCXBhX3Nl dF9maWxlc2V0X3N0YXRlKHdpbmZvLT5zaGFyZWQsIEZTX1NFUklBTElaRV9ET05FKTsKKworCQkJ LyogRmluaXNoIHByb2Nlc3NpbmcgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gKi8KKwkJCXBh X3hhY3RfZmluaXNoKHdpbmZvLCBwcmVwYXJlX2RhdGEuZW5kX2xzbik7CisJCQlicmVhazsKKwor CQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCisJCQkvKgorCQkJICogSWYgdGhlIHBhcmFs bGVsIGFwcGx5IHdvcmtlciBpcyBhcHBseWluZyBzcG9vbGVkIG1lc3NhZ2VzIHRoZW4KKwkJCSAq IGNsb3NlIHRoZSBmaWxlIGJlZm9yZSBwcmVwYXJpbmcuCisJCQkgKi8KKwkJCWlmIChzdHJlYW1f ZmQpCisJCQkJc3RyZWFtX2Nsb3NlX2ZpbGUoKTsKKworCQkJYmVnaW5fcmVwbGljYXRpb25fc3Rl cCgpOworCisJCQkvKiBNYXJrIHRoZSB0cmFuc2FjdGlvbiBhcyBwcmVwYXJlZC4gKi8KKwkJCWFw cGx5X2hhbmRsZV9wcmVwYXJlX2ludGVybmFsKCZwcmVwYXJlX2RhdGEpOworCisJCQllbmRfcmVw bGljYXRpb25fc3RlcCgpOworCisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQkJ TXlQYXJhbGxlbFNoYXJlZC0+bGFzdF9jb21taXRfZW5kID0gWGFjdExhc3RDb21taXRFbmQ7CisK KwkJCXBhX3NldF94YWN0X3N0YXRlKE15UGFyYWxsZWxTaGFyZWQsIFBBUkFMTEVMX1RSQU5TX0ZJ TklTSEVEKTsKKwkJCXBhX3VubG9ja190cmFuc2FjdGlvbihNeVBhcmFsbGVsU2hhcmVkLT54aWQs IEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJCQlwYV9yZXNldF9zdWJ0cmFucygpOworCisJCQll bG9nKERFQlVHMSwgImZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNUUkVBTSBQUkVQQVJFIGNvbW1h bmQiKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2UpOworCQkJYnJl YWs7CisJfQorCisJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKIAogCS8qIFByb2Nlc3MgYW55 IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJv Y2Vzc19zeW5jaW5nX3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5kX2xzbik7CkBAIC0xMTczLDI3ICsx NDI2LDY0IEBAIGFwcGx5X2hhbmRsZV9vcmlnaW4oU3RyaW5nSW5mbyBzKQogfQogCiAvKgorICog SW5pdGlhbGl6ZSBmaWxlc2V0IChpZiBub3QgYWxyZWFkeSBkb25lKS4KKyAqCisgKiBDcmVhdGUg YSBuZXcgZmlsZSB3aGVuIGZpcnN0X3NlZ21lbnQgaXMgdHJ1ZSwgb3RoZXJ3aXNlIG9wZW4gdGhl IGV4aXN0aW5nCisgKiBmaWxlLgorICovCit2b2lkCitzdHJlYW1fc3RhcnRfaW50ZXJuYWwoVHJh bnNhY3Rpb25JZCB4aWQsIGJvb2wgZmlyc3Rfc2VnbWVudCkKK3sKKwliZWdpbl9yZXBsaWNhdGlv bl9zdGVwKCk7CisKKwkvKgorCSAqIEluaXRpYWxpemUgdGhlIHdvcmtlcidzIHN0cmVhbV9maWxl c2V0IGlmIHdlIGhhdmVuJ3QgeWV0LiBUaGlzIHdpbGwgYmUKKwkgKiB1c2VkIGZvciB0aGUgZW50 aXJlIGR1cmF0aW9uIG9mIHRoZSB3b3JrZXIgc28gY3JlYXRlIGl0IGluIGEgcGVybWFuZW50CisJ ICogY29udGV4dC4gV2UgY3JlYXRlIHRoaXMgb24gdGhlIHZlcnkgZmlyc3Qgc3RyZWFtaW5nIG1l c3NhZ2UgZnJvbSBhbnkKKwkgKiB0cmFuc2FjdGlvbiBhbmQgdGhlbiB1c2UgaXQgZm9yIHRoaXMg YW5kIG90aGVyIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMuCisJICogTm93LCB3ZSBjb3VsZCBjcmVh dGUgYSBmaWxlc2V0IGF0IHRoZSBzdGFydCBvZiB0aGUgd29ya2VyIGFzIHdlbGwgYnV0CisJICog dGhlbiB3ZSB3b24ndCBiZSBzdXJlIHRoYXQgaXQgd2lsbCBldmVyIGJlIHVzZWQuCisJICovCisJ aWYgKCFNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0KQorCXsKKwkJTWVtb3J5Q29u dGV4dCBvbGRjdHg7CisKKwkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29u dGV4dCk7CisKKwkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IHBhbGxvYyhz aXplb2YoRmlsZVNldCkpOworCQlGaWxlU2V0SW5pdChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVh bV9maWxlc2V0KTsKKworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKwl9CisKKwkv KiBPcGVuIHRoZSBzcG9vbCBmaWxlIGZvciB0aGlzIHRyYW5zYWN0aW9uLiAqLworCXN0cmVhbV9v cGVuX2ZpbGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkLCBmaXJzdF9zZWdtZW50KTsK KworCS8qIElmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBzZWdtZW50LCBvcGVuIGV4aXN0aW5nIHN1 YnhhY3QgZmlsZS4gKi8KKwlpZiAoIWZpcnN0X3NlZ21lbnQpCisJCXN1YnhhY3RfaW5mb19yZWFk KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CisKKwllbmRfcmVwbGljYXRpb25fc3Rl cCgpOworfQorCisvKgogICogSGFuZGxlIFNUUkVBTSBTVEFSVCBtZXNzYWdlLgogICovCiBzdGF0 aWMgdm9pZAogYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiB7CiAJYm9v bAkJZmlyc3Rfc2VnbWVudDsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87CisJVHJh bnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CisKKwkvKiBTYXZlIHRoZSBtZXNzYWdlIGJlZm9y ZSBpdCBpcyBjb25zdW1lZC4gKi8KKwlTdHJpbmdJbmZvRGF0YSBvcmlnaW5hbF9tc2cgPSAqczsK IAogCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQko ZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCiAJCQkJIGVycm1zZ19pbnRlcm5h bCgiZHVwbGljYXRlIFNUUkVBTSBTVEFSVCBtZXNzYWdlIikpKTsKIAotCS8qCi0JICogU3RhcnQg YSB0cmFuc2FjdGlvbiBvbiBzdHJlYW0gc3RhcnQsIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBiZSBj b21taXR0ZWQKLQkgKiBvbiB0aGUgc3RyZWFtIHN0b3AgdW5sZXNzIGl0IGlzIGEgdGFibGVzeW5j IHdvcmtlciBpbiB3aGljaCBjYXNlIGl0Ci0JICogd2lsbCBiZSBjb21taXR0ZWQgYWZ0ZXIgcHJv Y2Vzc2luZyBhbGwgdGhlIG1lc3NhZ2VzLiBXZSBuZWVkIHRoZQotCSAqIHRyYW5zYWN0aW9uIGZv ciBoYW5kbGluZyB0aGUgYnVmZmlsZSwgdXNlZCBmb3Igc2VyaWFsaXppbmcgdGhlCi0JICogc3Ry ZWFtaW5nIGRhdGEgYW5kIHN1YnhhY3QgaW5mby4KLQkgKi8KLQliZWdpbl9yZXBsaWNhdGlvbl9z dGVwKCk7Ci0KIAkvKiBub3RpZnkgaGFuZGxlIG1ldGhvZHMgd2UncmUgcHJvY2Vzc2luZyBhIHJl bW90ZSB0cmFuc2FjdGlvbiAqLwogCWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gdHJ1ZTsKIApA QCAtMTIwNyw1NCArMTQ5NywxMTggQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJ bmZvIHMpCiAKIAlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHN0cmVhbV94aWQsIEludmFs aWRYTG9nUmVjUHRyKTsKIAotCS8qCi0JICogSW5pdGlhbGl6ZSB0aGUgd29ya2VyJ3Mgc3RyZWFt X2ZpbGVzZXQgaWYgd2UgaGF2ZW4ndCB5ZXQuIFRoaXMgd2lsbCBiZQotCSAqIHVzZWQgZm9yIHRo ZSBlbnRpcmUgZHVyYXRpb24gb2YgdGhlIHdvcmtlciBzbyBjcmVhdGUgaXQgaW4gYSBwZXJtYW5l bnQKLQkgKiBjb250ZXh0LiBXZSBjcmVhdGUgdGhpcyBvbiB0aGUgdmVyeSBmaXJzdCBzdHJlYW1p bmcgbWVzc2FnZSBmcm9tIGFueQotCSAqIHRyYW5zYWN0aW9uIGFuZCB0aGVuIHVzZSBpdCBmb3Ig dGhpcyBhbmQgb3RoZXIgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4KLQkgKiBOb3csIHdlIGNvdWxk IGNyZWF0ZSBhIGZpbGVzZXQgYXQgdGhlIHN0YXJ0IG9mIHRoZSB3b3JrZXIgYXMgd2VsbCBidXQK LQkgKiB0aGVuIHdlIHdvbid0IGJlIHN1cmUgdGhhdCBpdCB3aWxsIGV2ZXIgYmUgdXNlZC4KLQkg Ki8KLQlpZiAoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9PSBOVUxMKQorCS8q IFRyeSB0byBhbGxvY2F0ZSBhIHdvcmtlciBmb3IgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4g Ki8KKwlpZiAoZmlyc3Rfc2VnbWVudCkKKwkJcGFfYWxsb2NhdGVfd29ya2VyKHN0cmVhbV94aWQp OworCisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihzdHJlYW1f eGlkLCAmd2luZm8pOworCisJc3dpdGNoIChhcHBseV9hY3Rpb24pCiAJewotCQlNZW1vcnlDb250 ZXh0IG9sZGN0eDsKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgogCi0JCW9sZGN0eCA9 IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCQkJLyoKKwkJCSAqIEZ1bmN0 aW9uIHN0cmVhbV9zdGFydF9pbnRlcm5hbCBzdGFydHMgYSB0cmFuc2FjdGlvbi4gVGhpcworCQkJ ICogdHJhbnNhY3Rpb24gd2lsbCBiZSBjb21taXR0ZWQgb24gdGhlIHN0cmVhbSBzdG9wIHVubGVz cyBpdCBpcyBhCisJCQkgKiB0YWJsZXN5bmMgd29ya2VyIGluIHdoaWNoIGNhc2UgaXQgd2lsbCBi ZSBjb21taXR0ZWQgYWZ0ZXIKKwkJCSAqIHByb2Nlc3NpbmcgYWxsIHRoZSBtZXNzYWdlcy4gV2Ug bmVlZCB0aGlzIHRyYW5zYWN0aW9uIGZvcgorCQkJICogaGFuZGxpbmcgdGhlIEJ1ZkZpbGUsIHVz ZWQgZm9yIHNlcmlhbGl6aW5nIHRoZSBzdHJlYW1pbmcgZGF0YQorCQkJICogYW5kIHN1YnhhY3Qg aW5mby4KKwkJCSAqLworCQkJc3RyZWFtX3N0YXJ0X2ludGVybmFsKHN0cmVhbV94aWQsIGZpcnN0 X3NlZ21lbnQpOworCQkJYnJlYWs7CiAKLQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmls ZXNldCA9IHBhbGxvYyhzaXplb2YoRmlsZVNldCkpOwotCQlGaWxlU2V0SW5pdChNeUxvZ2ljYWxS ZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0KTsKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19Q QVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CiAKLQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9s ZGN0eCk7Ci0JfQorCQkJLyoKKwkJCSAqIE9uY2Ugd2Ugc3RhcnQgc2VyaWFsaXppbmcgdGhlIGNo YW5nZXMsIHRoZSBwYXJhbGxlbCBhcHBseQorCQkJICogd29ya2VyIHdpbGwgd2FpdCBmb3IgdGhl IGxlYWRlciB0byByZWxlYXNlIHRoZSBzdHJlYW0gbG9jaworCQkJICogdW50aWwgdGhlIGVuZCBv ZiB0aGUgdHJhbnNhY3Rpb24uIFNvLCB3ZSBkb24ndCBuZWVkIHRvIHJlbGVhc2UKKwkJCSAqIHRo ZSBsb2NrIG9yIGluY3JlbWVudCB0aGUgc3RyZWFtIGNvdW50IGluIHRoYXQgY2FzZS4KKwkJCSAq LworCQkJaWYgKHBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKSkKKwkJCXsKKwkJ CQkvKgorCQkJCSAqIFVubG9jayB0aGUgc2hhcmVkIG9iamVjdCBsb2NrIHNvIHRoYXQgdGhlIHBh cmFsbGVsIGFwcGx5CisJCQkJICogd29ya2VyIGNhbiBjb250aW51ZSB0byByZWNlaXZlIGNoYW5n ZXMuCisJCQkJICovCisJCQkJaWYgKCFmaXJzdF9zZWdtZW50KQorCQkJCQlwYV91bmxvY2tfc3Ry ZWFtKHdpbmZvLT5zaGFyZWQtPnhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CiAKLQkvKiBvcGVu IHRoZSBzcG9vbCBmaWxlIGZvciB0aGlzIHRyYW5zYWN0aW9uICovCi0Jc3RyZWFtX29wZW5fZmls ZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkLCBmaXJzdF9zZWdtZW50KTsK KwkJCQkvKgorCQkJCSAqIEluY3JlbWVudCB0aGUgbnVtYmVyIG9mIHN0cmVhbWluZyBibG9ja3Mg d2FpdGluZyB0byBiZQorCQkJCSAqIHByb2Nlc3NlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIu CisJCQkJICovCisJCQkJcGdfYXRvbWljX2FkZF9mZXRjaF91MzIoJndpbmZvLT5zaGFyZWQtPnBl bmRpbmdfc3RyZWFtX2NvdW50LCAxKTsKIAotCS8qIGlmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBz ZWdtZW50LCBvcGVuIGV4aXN0aW5nIHN1YnhhY3QgZmlsZSAqLwotCWlmICghZmlyc3Rfc2VnbWVu dCkKLQkJc3VieGFjdF9pbmZvX3JlYWQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFt X3hpZCk7CisJCQkJLyogQ2FjaGUgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBmb3IgdGhpcyB0 cmFuc2FjdGlvbi4gKi8KKwkJCQlwYV9zZXRfc3RyZWFtX2FwcGx5X3dvcmtlcih3aW5mbyk7CisJ CQkJYnJlYWs7CisJCQl9CiAKLQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX1JVTk5JTkcs IE5VTEwpOworCQkJLyoKKwkJCSAqIFN3aXRjaCB0byBzZXJpYWxpemUgbW9kZSB3aGVuIHdlIGFy ZSBub3QgYWJsZSB0byBzZW5kIHRoZQorCQkJICogY2hhbmdlIHRvIHBhcmFsbGVsIGFwcGx5IHdv cmtlci4KKwkJCSAqLworCQkJcGFfc3dpdGNoX3RvX3BhcnRpYWxfc2VyaWFsaXplKHdpbmZvLCAh Zmlyc3Rfc2VnbWVudCk7CiAKLQllbmRfcmVwbGljYXRpb25fc3RlcCgpOworCQkJLyogZmFsbCB0 aHJvdWdoICovCisJCWNhc2UgVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFOgorCQkJQXNz ZXJ0KHdpbmZvKTsKKworCQkJLyoKKwkJCSAqIE9wZW4gdGhlIHNwb29sIGZpbGUgdW5sZXNzIGl0 IHdhcyBhbHJlYWR5IG9wZW5lZCB3aGVuIHN3aXRjaGluZworCQkJICogdG8gc2VyaWFsaXplIG1v ZGUuIFRoZSB0cmFuc2FjdGlvbiBzdGFydGVkIGluCisJCQkgKiBzdHJlYW1fc3RhcnRfaW50ZXJu YWwgd2lsbCBiZSBjb21taXR0ZWQgb24gdGhlIHN0cmVhbSBzdG9wLgorCQkJICovCisJCQlpZiAo YXBwbHlfYWN0aW9uICE9IFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMKQorCQkJCXN0cmVh bV9zdGFydF9pbnRlcm5hbChzdHJlYW1feGlkLCBmaXJzdF9zZWdtZW50KTsKKworCQkJc3RyZWFt X3dyaXRlX2NoYW5nZShMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1NUQVJULCAmb3JpZ2luYWxfbXNn KTsKKworCQkJLyogQ2FjaGUgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBmb3IgdGhpcyB0cmFu c2FjdGlvbi4gKi8KKwkJCXBhX3NldF9zdHJlYW1fYXBwbHlfd29ya2VyKHdpbmZvKTsKKwkJCWJy ZWFrOworCisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6CisJCQlpZiAoZmlyc3Rfc2VnbWVu dCkKKwkJCXsKKwkJCQkvKiBIb2xkIHRoZSBsb2NrIHVudGlsIHRoZSBlbmQgb2YgdGhlIHRyYW5z YWN0aW9uLiAqLworCQkJCXBhX2xvY2tfdHJhbnNhY3Rpb24oTXlQYXJhbGxlbFNoYXJlZC0+eGlk LCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKwkJCQlwYV9zZXRfeGFjdF9zdGF0ZShNeVBhcmFsbGVs U2hhcmVkLCBQQVJBTExFTF9UUkFOU19TVEFSVEVEKTsKKworCQkJCS8qCisJCQkJICogU2lnbmFs IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyLCBhcyBpdCBtYXkgYmUgd2FpdGluZyBmb3IgdXMuCisJ CQkJICovCisJCQkJbG9naWNhbHJlcF93b3JrZXJfd2FrZXVwKE15TG9naWNhbFJlcFdvcmtlci0+ c3ViaWQsIEludmFsaWRPaWQpOworCQkJfQorCisJCQlwYXJhbGxlbF9zdHJlYW1fbmNoYW5nZXMg PSAwOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCUFzc2VydChmYWxzZSk7CisJCQlicmVh azsKKwl9CisKKwlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX1JVTk5JTkcsIE5VTEwpOwog fQogCiAvKgotICogSGFuZGxlIFNUUkVBTSBTVE9QIG1lc3NhZ2UuCisgKiBVcGRhdGUgdGhlIGlu Zm9ybWF0aW9uIGFib3V0IHN1YnhhY3RzIGFuZCBjbG9zZSB0aGUgZmlsZS4KKyAqCisgKiBUaGlz IGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgc3RyZWFtX3N0YXJ0X2ludGVybmFs IGZ1bmN0aW9uIGhhcworICogYmVlbiBjYWxsZWQuCiAgKi8KLXN0YXRpYyB2b2lkCi1hcHBseV9o YW5kbGVfc3RyZWFtX3N0b3AoU3RyaW5nSW5mbyBzKQordm9pZAorc3RyZWFtX3N0b3BfaW50ZXJu YWwoVHJhbnNhY3Rpb25JZCB4aWQpCiB7Ci0JaWYgKCFpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikK LQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElP TiksCi0JCQkJIGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIFNUT1AgbWVzc2FnZSB3aXRob3V0IFNU UkVBTSBTVEFSVCIpKSk7Ci0KIAkvKgotCSAqIENsb3NlIHRoZSBmaWxlIHdpdGggc2VyaWFsaXpl ZCBjaGFuZ2VzLCBhbmQgc2VyaWFsaXplIGluZm9ybWF0aW9uIGFib3V0Ci0JICogc3VieGFjdHMg Zm9yIHRoZSB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KKwkgKiBTZXJpYWxpemUgaW5mb3JtYXRpb24g YWJvdXQgc3VieGFjdHMgZm9yIHRoZSB0b3BsZXZlbCB0cmFuc2FjdGlvbiwgdGhlbgorCSAqIGNs b3NlIHRoZSBzdHJlYW0gbWVzc2FnZXMgc3Bvb2wgZmlsZS4KIAkgKi8KLQlzdWJ4YWN0X2luZm9f d3JpdGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7CisJc3VieGFjdF9p bmZvX3dyaXRlKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CiAJc3RyZWFtX2Nsb3Nl X2ZpbGUoKTsKIAogCS8qIFdlIG11c3QgYmUgaW4gYSB2YWxpZCB0cmFuc2FjdGlvbiBzdGF0ZSAq LwpAQCAtMTI2Myw0MCArMTYxNywxMjQgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdG9wKFN0cmlu Z0luZm8gcykKIAkvKiBDb21taXQgdGhlIHBlci1zdHJlYW0gdHJhbnNhY3Rpb24gKi8KIAlDb21t aXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gZmFs c2U7Ci0KIAkvKiBSZXNldCBwZXItc3RyZWFtIGNvbnRleHQgKi8KIAlNZW1vcnlDb250ZXh0UmVz ZXQoTG9naWNhbFN0cmVhbWluZ0NvbnRleHQpOwotCi0JcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShT VEFURV9JRExFLCBOVUxMKTsKLQlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKIH0K IAogLyoKLSAqIEhhbmRsZSBTVFJFQU0gYWJvcnQgbWVzc2FnZS4KKyAqIEhhbmRsZSBTVFJFQU0g U1RPUCBtZXNzYWdlLgogICovCiBzdGF0aWMgdm9pZAotYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9y dChTdHJpbmdJbmZvIHMpCithcHBseV9oYW5kbGVfc3RyZWFtX3N0b3AoU3RyaW5nSW5mbyBzKQog ewotCVRyYW5zYWN0aW9uSWQgeGlkOwotCVRyYW5zYWN0aW9uSWQgc3VieGlkOworCVBhcmFsbGVs QXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKKwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsK IAotCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKKwlpZiAoIWluX3N0cmVhbWVkX3RyYW5z YWN0aW9uKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xf VklPTEFUSU9OKSwKLQkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJFQU0gQUJPUlQgbWVzc2FnZSB3 aXRob3V0IFNUUkVBTSBTVE9QIikpKTsKKwkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJFQU0gU1RP UCBtZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUQVJUIikpKTsKKworCWFwcGx5X2FjdGlvbiA9IGdl dF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oc3RyZWFtX3hpZCwgJndpbmZvKTsKKworCXN3aXRj aCAoYXBwbHlfYWN0aW9uKQorCXsKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgorCQkJ c3RyZWFtX3N0b3BfaW50ZXJuYWwoc3RyZWFtX3hpZCk7CisJCQlicmVhazsKKworCQljYXNlIFRS QU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgorCQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJLyoK KwkJCSAqIExvY2sgYmVmb3JlIHNlbmRpbmcgdGhlIFNUUkVBTV9TVE9QIG1lc3NhZ2Ugc28gdGhh dCB0aGUgbGVhZGVyCisJCQkgKiBjYW4gaG9sZCB0aGUgbG9jayBmaXJzdCBhbmQgdGhlIHBhcmFs bGVsIGFwcGx5IHdvcmtlciB3aWxsIHdhaXQKKwkJCSAqIGZvciBsZWFkZXIgdG8gcmVsZWFzZSB0 aGUgbG9jay4gU2VlIExvY2tpbmcgQ29uc2lkZXJhdGlvbnMgYXRvcAorCQkJICogYXBwbHlwYXJh bGxlbHdvcmtlci5jLgorCQkJICovCisJCQlwYV9sb2NrX3N0cmVhbSh3aW5mby0+c2hhcmVkLT54 aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJCQlpZiAocGFfc2VuZF9kYXRhKHdpbmZvLCBz LT5sZW4sIHMtPmRhdGEpKQorCQkJeworCQkJCXBhX3NldF9zdHJlYW1fYXBwbHlfd29ya2VyKE5V TEwpOworCQkJCWJyZWFrOworCQkJfQorCisJCQkvKgorCQkJICogU3dpdGNoIHRvIHNlcmlhbGl6 ZSBtb2RlIHdoZW4gd2UgYXJlIG5vdCBhYmxlIHRvIHNlbmQgdGhlCisJCQkgKiBjaGFuZ2UgdG8g cGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCQkJICovCisJCQlwYV9zd2l0Y2hfdG9fcGFydGlhbF9z ZXJpYWxpemUod2luZm8sIHRydWUpOworCisJCQkvKiBmYWxsIHRocm91Z2ggKi8KKwkJY2FzZSBU UkFOU19MRUFERVJfUEFSVElBTF9TRVJJQUxJWkU6CisJCQlzdHJlYW1fd3JpdGVfY2hhbmdlKExP R0lDQUxfUkVQX01TR19TVFJFQU1fU1RPUCwgcyk7CisJCQlzdHJlYW1fc3RvcF9pbnRlcm5hbChz dHJlYW1feGlkKTsKKwkJCXBhX3NldF9zdHJlYW1fYXBwbHlfd29ya2VyKE5VTEwpOworCQkJYnJl YWs7CisKKwkJY2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToKKwkJCWVsb2coREVCVUcxLCAiYXBw bGllZCAldSBjaGFuZ2VzIGluIHRoZSBzdHJlYW1pbmcgY2h1bmsiLAorCQkJCSBwYXJhbGxlbF9z dHJlYW1fbmNoYW5nZXMpOworCisJCQkvKgorCQkJICogQnkgdGhlIHRpbWUgcGFyYWxsZWwgYXBw bHkgd29ya2VyIGlzIHByb2Nlc3NpbmcgdGhlIGNoYW5nZXMgaW4KKwkJCSAqIHRoZSBjdXJyZW50 IHN0cmVhbWluZyBibG9jaywgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgbWF5IGhhdmUKKwkJCSAq IHNlbnQgbXVsdGlwbGUgc3RyZWFtaW5nIGJsb2Nrcy4gVGhpcyBjYW4gbGVhZCB0byBwYXJhbGxl bCBhcHBseQorCQkJICogd29ya2VyIHN0YXJ0IHdhaXRpbmcgZXZlbiB3aGVuIHRoZXJlIGFyZSBt b3JlIGNodW5rIG9mIHN0cmVhbXMKKwkJCSAqIGluIHRoZSBxdWV1ZS4gU28sIHRyeSB0byBsb2Nr IG9ubHkgaWYgdGhlcmUgaXMgbm8gbWVzc2FnZSBsZWZ0CisJCQkgKiBpbiB0aGUgcXVldWUuIFNl ZSBMb2NraW5nIENvbnNpZGVyYXRpb25zIGF0b3AKKwkJCSAqIGFwcGx5cGFyYWxsZWx3b3JrZXIu Yy4KKwkJCSAqCisJCQkgKiBOb3RlIHRoYXQgaGVyZSB3ZSBoYXZlIGEgcmFjZSBjb25kaXRpb24g d2hlcmUgd2UgY2FuIHN0YXJ0CisJCQkgKiB3YWl0aW5nIGV2ZW4gd2hlbiB0aGVyZSBhcmUgcGVu ZGluZyBzdHJlYW1pbmcgY2h1bmtzLiBUaGlzIGNhbgorCQkJICogaGFwcGVuIGlmIHRoZSBsZWFk ZXIgc2VuZHMgYW5vdGhlciBzdHJlYW1pbmcgYmxvY2sgYW5kIGFjcXVpcmVzCisJCQkgKiB0aGUg c3RyZWFtIGxvY2sgYWdhaW4gYWZ0ZXIgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBjaGVja3MK KwkJCSAqIHRoYXQgdGhlcmUgaXMgbm8gcGVuZGluZyBzdHJlYW1pbmcgYmxvY2sgYW5kIGJlZm9y ZSBpdCBhY3R1YWxseQorCQkJICogc3RhcnRzIHdhaXRpbmcgb24gYSBsb2NrLiBXZSBjYW4gaGFu ZGxlIHRoaXMgY2FzZSBieSBub3QKKwkJCSAqIGFsbG93aW5nIHRoZSBsZWFkZXIgdG8gaW5jcmVt ZW50IHRoZSBzdHJlYW0gYmxvY2sgY291bnQgZHVyaW5nCisJCQkgKiB0aGUgdGltZSBwYXJhbGxl bCBhcHBseSB3b3JrZXIgYWNxdWlyZXMgdGhlIGxvY2sgYnV0IGl0IGlzIG5vdAorCQkJICogY2xl YXIgd2hldGhlciB0aGF0IGlzIHdvcnRoIHRoZSBjb21wbGV4aXR5LgorCQkJICoKKwkJCSAqIE5v dywgaWYgdGhpcyBtaXNzZWQgY2h1bmsgY29udGFpbnMgcm9sbGJhY2sgdG8gc2F2ZXBvaW50LCB0 aGVuCisJCQkgKiB0aGVyZSBpcyBhIHJpc2sgb2YgZGVhZGxvY2sgd2hpY2ggcHJvYmFibHkgc2hv dWxkbid0IGhhcHBlbgorCQkJICogYWZ0ZXIgcmVzdGFydC4KKwkJCSAqLworCQkJcGFfZGVjcl9h bmRfd2FpdF9zdHJlYW1fYmxvY2soKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3Nl cnQoZmFsc2UpOworCQkJYnJlYWs7CisJfQorCisJaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSBm YWxzZTsKKworCS8qCisJICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBjb3VsZCBiZSBpbiBh IHRyYW5zYWN0aW9uIGluIHdoaWNoIGNhc2Ugd2UKKwkgKiBuZWVkIHRvIHJlcG9ydCB0aGUgc3Rh dGUgYXMgU1RBVEVfSURMRUlOVFJBTlNBQ1RJT04uCisJICovCisJaWYgKElzVHJhbnNhY3Rpb25P clRyYW5zYWN0aW9uQmxvY2soKSkKKwkJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExF SU5UUkFOU0FDVElPTiwgTlVMTCk7CisJZWxzZQorCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNU QVRFX0lETEUsIE5VTEwpOwogCi0JbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChzLCAmeGlk LCAmc3VieGlkKTsKKwlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKK30KIAorLyoK KyAqIEhlbHBlciBmdW5jdGlvbiB0byBoYW5kbGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2hlbiB0 aGUgdHJhbnNhY3Rpb24gd2FzCisgKiBzZXJpYWxpemVkIHRvIGZpbGUuCisgKi8KK3N0YXRpYyB2 b2lkCitzdHJlYW1fYWJvcnRfaW50ZXJuYWwoVHJhbnNhY3Rpb25JZCB4aWQsIFRyYW5zYWN0aW9u SWQgc3VieGlkKQorewogCS8qCiAJICogSWYgdGhlIHR3byBYSURzIGFyZSB0aGUgc2FtZSwgaXQn cyBpbiBmYWN0IGFib3J0IG9mIHRvcGxldmVsIHhhY3QsIHNvCiAJICoganVzdCBkZWxldGUgdGhl IGZpbGVzIHdpdGggc2VyaWFsaXplZCBpbmZvLgogCSAqLwogCWlmICh4aWQgPT0gc3VieGlkKQot CXsKLQkJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdCh4aWQsIEludmFsaWRYTG9nUmVjUHRy KTsKIAkJc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlk KTsKLQl9CiAJZWxzZQogCXsKIAkJLyoKQEAgLTEzMjAsOCArMTc1OCw2IEBAIGFwcGx5X2hhbmRs ZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQogCQlib29sCQlmb3VuZCA9IGZhbHNlOwogCQlj aGFyCQlwYXRoW01BWFBHUEFUSF07CiAKLQkJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChz dWJ4aWQsIEludmFsaWRYTG9nUmVjUHRyKTsKLQogCQlzdWJpZHggPSAtMTsKIAkJYmVnaW5fcmVw bGljYXRpb25fc3RlcCgpOwogCQlzdWJ4YWN0X2luZm9fcmVhZChNeUxvZ2ljYWxSZXBXb3JrZXIt PnN1YmlkLCB4aWQpOwpAQCAtMTM0Niw0NyArMTc4MiwyMzcgQEAgYXBwbHlfaGFuZGxlX3N0cmVh bV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJCQljbGVhbnVwX3N1YnhhY3RfaW5mbygpOwogCQkJZW5k X3JlcGxpY2F0aW9uX3N0ZXAoKTsKIAkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwotCQkJ cmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CiAJCQlyZXR1cm47CiAJCX0KIAotCQkv KiBvcGVuIHRoZSBjaGFuZ2VzIGZpbGUgKi8KLQkJY2hhbmdlc19maWxlbmFtZShwYXRoLCBNeUxv Z2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOwotCQlmZCA9IEJ1ZkZpbGVPcGVuRmlsZVNldChN eUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0LCBwYXRoLAotCQkJCQkJCQlPX1JEV1Is IGZhbHNlKTsKKwkJLyogb3BlbiB0aGUgY2hhbmdlcyBmaWxlICovCisJCWNoYW5nZXNfZmlsZW5h bWUocGF0aCwgTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkKTsKKwkJZmQgPSBCdWZGaWxl T3BlbkZpbGVTZXQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCwgcGF0aCwKKwkJ CQkJCQkJT19SRFdSLCBmYWxzZSk7CisKKwkJLyogT0ssIHRydW5jYXRlIHRoZSBmaWxlIGF0IHRo ZSByaWdodCBvZmZzZXQgKi8KKwkJQnVmRmlsZVRydW5jYXRlRmlsZVNldChmZCwgc3VieGFjdF9k YXRhLnN1YnhhY3RzW3N1YmlkeF0uZmlsZW5vLAorCQkJCQkJCSAgIHN1YnhhY3RfZGF0YS5zdWJ4 YWN0c1tzdWJpZHhdLm9mZnNldCk7CisJCUJ1ZkZpbGVDbG9zZShmZCk7CisKKwkJLyogZGlzY2Fy ZCB0aGUgc3VieGFjdHMgYWRkZWQgbGF0ZXIgKi8KKwkJc3VieGFjdF9kYXRhLm5zdWJ4YWN0cyA9 IHN1YmlkeDsKKworCQkvKiB3cml0ZSB0aGUgdXBkYXRlZCBzdWJ4YWN0IGxpc3QgKi8KKwkJc3Vi eGFjdF9pbmZvX3dyaXRlKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CisKKwkJZW5k X3JlcGxpY2F0aW9uX3N0ZXAoKTsKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJfQor fQorCisvKgorICogSGFuZGxlIFNUUkVBTSBBQk9SVCBtZXNzYWdlLgorICovCitzdGF0aWMgdm9p ZAorYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCit7CisJVHJhbnNhY3Rp b25JZCB4aWQ7CisJVHJhbnNhY3Rpb25JZCBzdWJ4aWQ7CisJTG9naWNhbFJlcFN0cmVhbUFib3J0 RGF0YSBhYm9ydF9kYXRhOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKKwlUcmFu c0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKKworCS8qIFNhdmUgdGhlIG1lc3NhZ2UgYmVmb3Jl IGl0IGlzIGNvbnN1bWVkLiAqLworCVN0cmluZ0luZm9EYXRhIG9yaWdpbmFsX21zZyA9ICpzOwor CWJvb2wJCXRvcGxldmVsX3hhY3Q7CisKKwlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04p LAorCQkJCSBlcnJtc2dfaW50ZXJuYWwoIlNUUkVBTSBBQk9SVCBtZXNzYWdlIHdpdGhvdXQgU1RS RUFNIFNUT1AiKSkpOworCisJLyogV2UgcmVjZWl2ZSBhYm9ydCBpbmZvcm1hdGlvbiBvbmx5IHdo ZW4gd2UgY2FuIGFwcGx5IGluIHBhcmFsbGVsLiAqLworCWxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1f YWJvcnQocywgJmFib3J0X2RhdGEsCisJCQkJCQkJCSBNeUxvZ2ljYWxSZXBXb3JrZXItPnBhcmFs bGVsX2FwcGx5KTsKKworCXhpZCA9IGFib3J0X2RhdGEueGlkOworCXN1YnhpZCA9IGFib3J0X2Rh dGEuc3VieGlkOworCXRvcGxldmVsX3hhY3QgPSAoeGlkID09IHN1YnhpZCk7CisKKwlzZXRfYXBw bHlfZXJyb3JfY29udGV4dF94YWN0KHN1YnhpZCwgYWJvcnRfZGF0YS5hYm9ydF9sc24pOworCisJ YXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbih4aWQsICZ3aW5mbyk7 CisKKwlzd2l0Y2ggKGFwcGx5X2FjdGlvbikKKwl7CisJCWNhc2UgVFJBTlNfTEVBREVSX1NFUklB TElaRToKKworCQkJLyoKKwkJCSAqIFdlIGFyZSBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBh bmQgdGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuCisJCQkgKiBzZXJpYWxpemVkIHRvIGZpbGUuCisJ CQkgKi8KKwkJCXN0cmVhbV9hYm9ydF9pbnRlcm5hbCh4aWQsIHN1YnhpZCk7CisKKwkJCWVsb2co REVCVUcxLCAiZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFNIEFCT1JUIGNvbW1hbmQiKTsK KwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisJCQlB c3NlcnQod2luZm8pOworCisJCQkvKgorCQkJICogRm9yIHRoZSBjYXNlIG9mIGFib3J0aW5nIHRo ZSBzdWJ0cmFuc2FjdGlvbiwgd2UgaW5jcmVtZW50IHRoZQorCQkJICogbnVtYmVyIG9mIHN0cmVh bWluZyBibG9ja3MgYW5kIHRha2UgdGhlIGxvY2sgYWdhaW4gYmVmb3JlCisJCQkgKiBzZW5kaW5n IHRoZSBTVFJFQU1fQUJPUlQgdG8gZW5zdXJlIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5CisJCQkg KiB3b3JrZXIgd2lsbCB3YWl0IG9uIHRoZSBsb2NrIGZvciB0aGUgbmV4dCBzZXQgb2YgY2hhbmdl cyBhZnRlcgorCQkJICogcHJvY2Vzc2luZyB0aGUgU1RSRUFNX0FCT1JUIG1lc3NhZ2UgaWYgaXQg aXMgbm90IGFscmVhZHkKKwkJCSAqIHdhaXRpbmcgZm9yIFNUUkVBTV9TVE9QIG1lc3NhZ2UuCisJ CQkgKgorCQkJICogSXQgaXMgaW1wb3J0YW50IHRvIHBlcmZvcm0gdGhpcyBsb2NraW5nIGJlZm9y ZSBzZW5kaW5nIHRoZQorCQkJICogU1RSRUFNX0FCT1JUIG1lc3NhZ2Ugc28gdGhhdCB0aGUgbGVh ZGVyIGNhbiBob2xkIHRoZSBsb2NrIGZpcnN0CisJCQkgKiBhbmQgdGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciB3aWxsIHdhaXQgZm9yIHRoZSBsZWFkZXIgdG8KKwkJCSAqIHJlbGVhc2UgdGhlIGxv Y2suIFRoaXMgaXMgdGhlIHNhbWUgYXMgd2hhdCB3ZSBkbyBpbgorCQkJICogYXBwbHlfaGFuZGxl X3N0cmVhbV9zdG9wLiBTZWUgTG9ja2luZyBDb25zaWRlcmF0aW9ucyBhdG9wCisJCQkgKiBhcHBs eXBhcmFsbGVsd29ya2VyLmMuCisJCQkgKi8KKwkJCWlmICghdG9wbGV2ZWxfeGFjdCkKKwkJCXsK KwkJCQlwYV91bmxvY2tfc3RyZWFtKHhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisJCQkJcGdf YXRvbWljX2FkZF9mZXRjaF91MzIoJndpbmZvLT5zaGFyZWQtPnBlbmRpbmdfc3RyZWFtX2NvdW50 LCAxKTsKKwkJCQlwYV9sb2NrX3N0cmVhbSh4aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCQkJ fQorCisJCQlpZiAocGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpKQorCQkJewor CQkJCS8qCisJCQkJICogVW5saWtlIFNUUkVBTV9DT01NSVQgYW5kIFNUUkVBTV9QUkVQQVJFLCB3 ZSBkb24ndCBuZWVkIHRvCisJCQkJICogd2FpdCBoZXJlIGZvciB0aGUgcGFyYWxsZWwgYXBwbHkg d29ya2VyIHRvIGZpbmlzaCBhcyB0aGF0CisJCQkJICogaXMgbm90IHJlcXVpcmVkIHRvIG1haW50 YWluIHRoZSBjb21taXQgb3JkZXIgYW5kIHdvbid0IGhhdmUKKwkJCQkgKiB0aGUgcmlzayBvZiBm YWlsdXJlcyBkdWUgdG8gdHJhbnNhY3Rpb24gZGVwZW5kZW5jaWVzIGFuZAorCQkJCSAqIGRlYWRs b2Nrcy4gSG93ZXZlciwgaXQgaXMgcG9zc2libGUgdGhhdCBiZWZvcmUgdGhlIHBhcmFsbGVsCisJ CQkJICogd29ya2VyIGZpbmlzaGVzIGFuZCB3ZSBjbGVhciB0aGUgd29ya2VyIGluZm8sIHRoZSB4 aWQKKwkJCQkgKiB3cmFwYXJvdW5kIGhhcHBlbnMgb24gdGhlIHVwc3RyZWFtIGFuZCBhIG5ldyB0 cmFuc2FjdGlvbgorCQkJCSAqIHdpdGggdGhlIHNhbWUgeGlkIGNhbiBhcHBlYXIgYW5kIHRoYXQg Y2FuIGxlYWQgdG8gZHVwbGljYXRlCisJCQkJICogZW50cmllcyBpbiBQYXJhbGxlbEFwcGx5VHhu SGFzaC4gWWV0IGFub3RoZXIgcHJvYmxlbSBjb3VsZAorCQkJCSAqIGJlIHRoYXQgd2UgbWF5IGhh dmUgc2VyaWFsaXplZCB0aGUgY2hhbmdlcyBpbiBwYXJ0aWFsCisJCQkJICogc2VyaWFsaXplIG1v ZGUgYW5kIHRoZSBmaWxlIGNvbnRhaW5pbmcgeGFjdCBjaGFuZ2VzIG1heQorCQkJCSAqIGFscmVh ZHkgZXhpc3QsIGFuZCBhZnRlciB4aWQgd3JhcGFyb3VuZCB0cnlpbmcgdG8gY3JlYXRlCisJCQkJ ICogdGhlIGZpbGUgZm9yIHRoZSBzYW1lIHhpZCBjYW4gbGVhZCB0byBhbiBlcnJvci4gVG8gYXZv aWQKKwkJCQkgKiB0aGVzZSBwcm9ibGVtcywgd2UgZGVjaWRlIHRvIHdhaXQgZm9yIHRoZSBhYm9y dHMgdG8gZmluaXNoLgorCQkJCSAqCisJCQkJICogTm90ZSwgaXQgaXMgb2theSB0byBub3QgdXBk YXRlIHRoZSBmbHVzaCBsb2NhdGlvbiBwb3NpdGlvbgorCQkJCSAqIGZvciBhYm9ydHMgYXMgaW4g d29yc3QgY2FzZSB0aGF0IG1lYW5zIHN1Y2ggYSB0cmFuc2FjdGlvbgorCQkJCSAqIHdvbid0IGJl IHNlbnQgYWdhaW4gYWZ0ZXIgcmVzdGFydC4KKwkJCQkgKi8KKwkJCQlpZiAodG9wbGV2ZWxfeGFj dCkKKwkJCQkJcGFfeGFjdF9maW5pc2god2luZm8sIEludmFsaWRYTG9nUmVjUHRyKTsKKworCQkJ CWJyZWFrOworCQkJfQorCisJCQkvKgorCQkJICogU3dpdGNoIHRvIHNlcmlhbGl6ZSBtb2RlIHdo ZW4gd2UgYXJlIG5vdCBhYmxlIHRvIHNlbmQgdGhlCisJCQkgKiBjaGFuZ2UgdG8gcGFyYWxsZWwg YXBwbHkgd29ya2VyLgorCQkJICovCisJCQlwYV9zd2l0Y2hfdG9fcGFydGlhbF9zZXJpYWxpemUo d2luZm8sIHRydWUpOworCisJCQkvKiBmYWxsIHRocm91Z2ggKi8KKwkJY2FzZSBUUkFOU19MRUFE RVJfUEFSVElBTF9TRVJJQUxJWkU6CisJCQlBc3NlcnQod2luZm8pOworCisJCQkvKgorCQkJICog UGFyYWxsZWwgYXBwbHkgd29ya2VyIG1pZ2h0IGhhdmUgYXBwbGllZCBzb21lIGNoYW5nZXMsIHNv IHdyaXRlCisJCQkgKiB0aGUgU1RSRUFNX0FCT1JUIG1lc3NhZ2Ugc28gdGhhdCBpdCBjYW4gcm9s bGJhY2sgdGhlCisJCQkgKiBzdWJ0cmFuc2FjdGlvbiBpZiBuZWVkZWQuCisJCQkgKi8KKwkJCXN0 cmVhbV9vcGVuX2FuZF93cml0ZV9jaGFuZ2UoeGlkLCBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX0FC T1JULAorCQkJCQkJCQkJCSAmb3JpZ2luYWxfbXNnKTsKKworCQkJaWYgKHRvcGxldmVsX3hhY3Qp CisJCQl7CisJCQkJcGFfc2V0X2ZpbGVzZXRfc3RhdGUod2luZm8tPnNoYXJlZCwgRlNfU0VSSUFM SVpFX0RPTkUpOworCQkJCXBhX3hhY3RfZmluaXNoKHdpbmZvLCBJbnZhbGlkWExvZ1JlY1B0cik7 CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCisJCQkv KgorCQkJICogSWYgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyBhcHBseWluZyBzcG9vbGVk IG1lc3NhZ2VzIHRoZW4KKwkJCSAqIGNsb3NlIHRoZSBmaWxlIGJlZm9yZSBhYm9ydGluZy4KKwkJ CSAqLworCQkJaWYgKHRvcGxldmVsX3hhY3QgJiYgc3RyZWFtX2ZkKQorCQkJCXN0cmVhbV9jbG9z ZV9maWxlKCk7CisKKwkJCXBhX3N0cmVhbV9hYm9ydCgmYWJvcnRfZGF0YSk7CisKKwkJCS8qCisJ CQkgKiBXZSBuZWVkIHRvIHdhaXQgYWZ0ZXIgcHJvY2Vzc2luZyByb2xsYmFjayB0byBzYXZlcG9p bnQgZm9yIHRoZQorCQkJICogbmV4dCBzZXQgb2YgY2hhbmdlcy4KKwkJCSAqCisJCQkgKiBXZSBo YXZlIGEgcmFjZSBjb25kaXRpb24gaGVyZSBkdWUgdG8gd2hpY2ggd2UgY2FuIHN0YXJ0IHdhaXRp bmcKKwkJCSAqIGhlcmUgd2hlbiB0aGVyZSBhcmUgbW9yZSBjaHVuayBvZiBzdHJlYW1zIGluIHRo ZSBxdWV1ZS4gU2VlCisJCQkgKiBhcHBseV9oYW5kbGVfc3RyZWFtX3N0b3AuCisJCQkgKi8KKwkJ CWlmICghdG9wbGV2ZWxfeGFjdCkKKwkJCQlwYV9kZWNyX2FuZF93YWl0X3N0cmVhbV9ibG9jaygp OworCisJCQllbG9nKERFQlVHMSwgImZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNUUkVBTSBBQk9S VCBjb21tYW5kIik7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsK KwkJCWJyZWFrOworCX0KKworCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOworfQor CisvKgorICogRW5zdXJlIHRoYXQgdGhlIHBhc3NlZCBsb2NhdGlvbiBpcyBmaWxlc2V0J3MgZW5k LgorICovCitzdGF0aWMgdm9pZAorZW5zdXJlX2xhc3RfbWVzc2FnZShGaWxlU2V0ICpzdHJlYW1f ZmlsZXNldCwgVHJhbnNhY3Rpb25JZCB4aWQsIGludCBmaWxlbm8sCisJCQkJCW9mZl90IG9mZnNl dCkKK3sKKwljaGFyCQlwYXRoW01BWFBHUEFUSF07CisJQnVmRmlsZSAgICAqZmQ7CisJaW50CQkJ bGFzdF9maWxlbm87CisJb2ZmX3QJCWxhc3Rfb2Zmc2V0OworCisJQXNzZXJ0KCFJc1RyYW5zYWN0 aW9uU3RhdGUoKSk7CiAKLQkJLyogT0ssIHRydW5jYXRlIHRoZSBmaWxlIGF0IHRoZSByaWdodCBv ZmZzZXQgKi8KLQkJQnVmRmlsZVRydW5jYXRlRmlsZVNldChmZCwgc3VieGFjdF9kYXRhLnN1Ynhh Y3RzW3N1YmlkeF0uZmlsZW5vLAotCQkJCQkJCSAgIHN1YnhhY3RfZGF0YS5zdWJ4YWN0c1tzdWJp ZHhdLm9mZnNldCk7Ci0JCUJ1ZkZpbGVDbG9zZShmZCk7CisJYmVnaW5fcmVwbGljYXRpb25fc3Rl cCgpOwogCi0JCS8qIGRpc2NhcmQgdGhlIHN1YnhhY3RzIGFkZGVkIGxhdGVyICovCi0JCXN1Ynhh Y3RfZGF0YS5uc3VieGFjdHMgPSBzdWJpZHg7CisJY2hhbmdlc19maWxlbmFtZShwYXRoLCBNeUxv Z2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOwogCi0JCS8qIHdyaXRlIHRoZSB1cGRhdGVkIHN1 YnhhY3QgbGlzdCAqLwotCQlzdWJ4YWN0X2luZm9fd3JpdGUoTXlMb2dpY2FsUmVwV29ya2VyLT5z dWJpZCwgeGlkKTsKKwlmZCA9IEJ1ZkZpbGVPcGVuRmlsZVNldChzdHJlYW1fZmlsZXNldCwgcGF0 aCwgT19SRE9OTFksIGZhbHNlKTsKIAotCQllbmRfcmVwbGljYXRpb25fc3RlcCgpOwotCQlDb21t aXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKLQl9CisJQnVmRmlsZVNlZWsoZmQsIDAsIDAsIFNFRUtf RU5EKTsKKwlCdWZGaWxlVGVsbChmZCwgJmxhc3RfZmlsZW5vLCAmbGFzdF9vZmZzZXQpOwogCi0J cmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CisJQnVmRmlsZUNsb3NlKGZkKTsKKwor CWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CisKKwlpZiAobGFzdF9maWxlbm8gIT0gZmlsZW5vIHx8 IGxhc3Rfb2Zmc2V0ICE9IG9mZnNldCkKKwkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgbWVzc2Fn ZSBsZWZ0IGluIHN0cmVhbWluZyB0cmFuc2FjdGlvbidzIGNoYW5nZXMgZmlsZSBcIiVzXCIiLAor CQkJIHBhdGgpOwogfQogCiAvKgogICogQ29tbW9uIHNwb29sZmlsZSBwcm9jZXNzaW5nLgogICov Ci1zdGF0aWMgdm9pZAotYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwg WExvZ1JlY1B0ciBsc24pCit2b2lkCithcHBseV9zcG9vbGVkX21lc3NhZ2VzKEZpbGVTZXQgKnN0 cmVhbV9maWxlc2V0LCBUcmFuc2FjdGlvbklkIHhpZCwKKwkJCQkJICAgWExvZ1JlY1B0ciBsc24p CiB7CiAJU3RyaW5nSW5mb0RhdGEgczI7CiAJaW50CQkJbmNoYW5nZXM7CiAJY2hhcgkJcGF0aFtN QVhQR1BBVEhdOwogCWNoYXIJICAgKmJ1ZmZlciA9IE5VTEw7CiAJTWVtb3J5Q29udGV4dCBvbGRj eHQ7Ci0JQnVmRmlsZSAgICAqZmQ7CisJUmVzb3VyY2VPd25lciBvbGRvd25lcjsKKwlpbnQJCQlm aWxlbm87CisJb2ZmX3QJCW9mZnNldDsKIAotCW1heWJlX3N0YXJ0X3NraXBwaW5nX2NoYW5nZXMo bHNuKTsKKwlpZiAoIWFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQltYXliZV9zdGFydF9z a2lwcGluZ19jaGFuZ2VzKGxzbik7CiAKIAkvKiBNYWtlIHN1cmUgd2UgaGF2ZSBhbiBvcGVuIHRy YW5zYWN0aW9uICovCiAJYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOwpAQCAtMTQwMiw4ICsyMDI4 LDE2IEBAIGFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQ dHIgbHNuKQogCWNoYW5nZXNfZmlsZW5hbWUocGF0aCwgTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJp ZCwgeGlkKTsKIAllbG9nKERFQlVHMSwgInJlcGxheWluZyBjaGFuZ2VzIGZyb20gZmlsZSBcIiVz XCIiLCBwYXRoKTsKIAotCWZkID0gQnVmRmlsZU9wZW5GaWxlU2V0KE15TG9naWNhbFJlcFdvcmtl ci0+c3RyZWFtX2ZpbGVzZXQsIHBhdGgsIE9fUkRPTkxZLAotCQkJCQkJCWZhbHNlKTsKKwkvKgor CSAqIE1ha2Ugc3VyZSB0aGUgZmlsZSBpcyBvd25lZCBieSB0aGUgdG9wbGV2ZWwgdHJhbnNhY3Rp b24gc28gdGhhdCB0aGUKKwkgKiBmaWxlIHdpbGwgbm90IGJlIGFjY2lkZW50YWxseSBjbG9zZWQg d2hlbiBhYm9ydGluZyBhIHN1YnRyYW5zYWN0aW9uLgorCSAqLworCW9sZG93bmVyID0gQ3VycmVu dFJlc291cmNlT3duZXI7CisJQ3VycmVudFJlc291cmNlT3duZXIgPSBUb3BUcmFuc2FjdGlvblJl c291cmNlT3duZXI7CisKKwlzdHJlYW1fZmQgPSBCdWZGaWxlT3BlbkZpbGVTZXQoc3RyZWFtX2Zp bGVzZXQsIHBhdGgsIE9fUkRPTkxZLCBmYWxzZSk7CisKKwlDdXJyZW50UmVzb3VyY2VPd25lciA9 IG9sZG93bmVyOwogCiAJYnVmZmVyID0gcGFsbG9jKEJMQ0tTWik7CiAJaW5pdFN0cmluZ0luZm8o JnMyKTsKQEAgLTE0MzQsNyArMjA2OCw3IEBAIGFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoVHJhbnNh Y3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwog CiAJCS8qIHJlYWQgbGVuZ3RoIG9mIHRoZSBvbi1kaXNrIHJlY29yZCAqLwotCQluYnl0ZXMgPSBC dWZGaWxlUmVhZChmZCwgJmxlbiwgc2l6ZW9mKGxlbikpOworCQluYnl0ZXMgPSBCdWZGaWxlUmVh ZChzdHJlYW1fZmQsICZsZW4sIHNpemVvZihsZW4pKTsKIAogCQkvKiBoYXZlIHdlIHJlYWNoZWQg ZW5kIG9mIHRoZSBmaWxlPyAqLwogCQlpZiAobmJ5dGVzID09IDApCkBAIC0xNDU1LDEyICsyMDg5 LDE0IEBAIGFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQ dHIgbHNuKQogCQlidWZmZXIgPSByZXBhbGxvYyhidWZmZXIsIGxlbik7CiAKIAkJLyogYW5kIGZp bmFsbHkgcmVhZCB0aGUgZGF0YSBpbnRvIHRoZSBidWZmZXIgKi8KLQkJaWYgKEJ1ZkZpbGVSZWFk KGZkLCBidWZmZXIsIGxlbikgIT0gbGVuKQorCQlpZiAoQnVmRmlsZVJlYWQoc3RyZWFtX2ZkLCBi dWZmZXIsIGxlbikgIT0gbGVuKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGVfZm9y X2ZpbGVfYWNjZXNzKCksCiAJCQkJCSBlcnJtc2coImNvdWxkIG5vdCByZWFkIGZyb20gc3RyZWFt aW5nIHRyYW5zYWN0aW9uJ3MgY2hhbmdlcyBmaWxlIFwiJXNcIjogJW0iLAogCQkJCQkJCXBhdGgp KSk7CiAKKwkJQnVmRmlsZVRlbGwoc3RyZWFtX2ZkLCAmZmlsZW5vLCAmb2Zmc2V0KTsKKwogCQkv KiBjb3B5IHRoZSBidWZmZXIgdG8gdGhlIHN0cmluZ2luZm8gYW5kIGNhbGwgYXBwbHlfZGlzcGF0 Y2ggKi8KIAkJcmVzZXRTdHJpbmdJbmZvKCZzMik7CiAJCWFwcGVuZEJpbmFyeVN0cmluZ0luZm8o JnMyLCBidWZmZXIsIGxlbik7CkBAIC0xNDc2LDE1ICsyMTEyLDI0IEBAIGFwcGx5X3Nwb29sZWRf bWVzc2FnZXMoVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQogCiAJCW5jaGFuZ2Vz Kys7CiAKKwkJLyoKKwkJICogSXQgaXMgcG9zc2libGUgdGhlIGZpbGUgaGFzIGJlZW4gY2xvc2Vk IGJlY2F1c2Ugd2UgaGF2ZSBwcm9jZXNzZWQKKwkJICogdGhlIHRyYW5zYWN0aW9uIGVuZCBtZXNz YWdlIGxpa2Ugc3RyZWFtX2NvbW1pdCBpbiB3aGljaCBjYXNlIHRoYXQKKwkJICogbXVzdCBiZSB0 aGUgbGFzdCBtZXNzYWdlLgorCQkgKi8KKwkJaWYgKCFzdHJlYW1fZmQpCisJCXsKKwkJCWVuc3Vy ZV9sYXN0X21lc3NhZ2Uoc3RyZWFtX2ZpbGVzZXQsIHhpZCwgZmlsZW5vLCBvZmZzZXQpOworCQkJ YnJlYWs7CisJCX0KKwogCQlpZiAobmNoYW5nZXMgJSAxMDAwID09IDApCiAJCQllbG9nKERFQlVH MSwgInJlcGxheWVkICVkIGNoYW5nZXMgZnJvbSBmaWxlIFwiJXNcIiIsCiAJCQkJIG5jaGFuZ2Vz LCBwYXRoKTsKIAl9CiAKLQlCdWZGaWxlQ2xvc2UoZmQpOwotCi0JcGZyZWUoYnVmZmVyKTsKLQlw ZnJlZShzMi5kYXRhKTsKKwlpZiAoc3RyZWFtX2ZkKQorCQlzdHJlYW1fY2xvc2VfZmlsZSgpOwog CiAJZWxvZyhERUJVRzEsICJyZXBsYXllZCAlZCAoYWxsKSBjaGFuZ2VzIGZyb20gZmlsZSBcIiVz XCIiLAogCQkgbmNoYW5nZXMsIHBhdGgpOwpAQCAtMTUwMCw2ICsyMTQ1LDExIEBAIGFwcGx5X2hh bmRsZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gcykKIHsKIAlUcmFuc2FjdGlvbklkIHhpZDsK IAlMb2dpY2FsUmVwQ29tbWl0RGF0YSBjb21taXRfZGF0YTsKKwlQYXJhbGxlbEFwcGx5V29ya2Vy SW5mbyAqd2luZm87CisJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CisKKwkvKiBTYXZl IHRoZSBtZXNzYWdlIGJlZm9yZSBpdCBpcyBjb25zdW1lZC4gKi8KKwlTdHJpbmdJbmZvRGF0YSBv cmlnaW5hbF9tc2cgPSAqczsKIAogCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKIAkJZXJl cG9ydChFUlJPUiwKQEAgLTE1MDksMTQgKzIxNTksODUgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9j b21taXQoU3RyaW5nSW5mbyBzKQogCXhpZCA9IGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fY29tbWl0 KHMsICZjb21taXRfZGF0YSk7CiAJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdCh4aWQsIGNv bW1pdF9kYXRhLmNvbW1pdF9sc24pOwogCi0JZWxvZyhERUJVRzEsICJyZWNlaXZlZCBjb21taXQg Zm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9uICV1IiwgeGlkKTsKKwlhcHBseV9hY3Rpb24gPSBnZXRf dHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKHhpZCwgJndpbmZvKTsKIAotCWFwcGx5X3Nwb29sZWRf bWVzc2FnZXMoeGlkLCBjb21taXRfZGF0YS5jb21taXRfbHNuKTsKKwlzd2l0Y2ggKGFwcGx5X2Fj dGlvbikKKwl7CisJCWNhc2UgVFJBTlNfTEVBREVSX1NFUklBTElaRToKIAotCWFwcGx5X2hhbmRs ZV9jb21taXRfaW50ZXJuYWwoJmNvbW1pdF9kYXRhKTsKKwkJCS8qCisJCQkgKiBUaGUgdHJhbnNh Y3Rpb24gaGFzIGJlZW4gc2VyaWFsaXplZCB0byBmaWxlLCBzbyByZXBsYXkgYWxsIHRoZQorCQkJ ICogc3Bvb2xlZCBvcGVyYXRpb25zLgorCQkJICovCisJCQlhcHBseV9zcG9vbGVkX21lc3NhZ2Vz KE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQsIHhpZCwKKwkJCQkJCQkJICAgY29t bWl0X2RhdGEuY29tbWl0X2xzbik7CisKKwkJCWFwcGx5X2hhbmRsZV9jb21taXRfaW50ZXJuYWwo JmNvbW1pdF9kYXRhKTsKKworCQkJLyogVW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQg Y2hhbmdlcyBhbmQgc3VieGFjdCBpbmZvLiAqLworCQkJc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlM b2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkKTsKKworCQkJZWxvZyhERUJVRzEsICJmaW5pc2hl ZCBwcm9jZXNzaW5nIHRoZSBTVFJFQU0gQ09NTUlUIGNvbW1hbmQiKTsKKwkJCWJyZWFrOworCisJ CWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOwor CisJCQlpZiAocGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpKQorCQkJeworCQkJ CS8qIEZpbmlzaCBwcm9jZXNzaW5nIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uICovCisJCQkJ cGFfeGFjdF9maW5pc2god2luZm8sIGNvbW1pdF9kYXRhLmVuZF9sc24pOworCQkJCWJyZWFrOwor CQkJfQorCisJCQkvKgorCQkJICogU3dpdGNoIHRvIHNlcmlhbGl6ZSBtb2RlIHdoZW4gd2UgYXJl IG5vdCBhYmxlIHRvIHNlbmQgdGhlCisJCQkgKiBjaGFuZ2UgdG8gcGFyYWxsZWwgYXBwbHkgd29y a2VyLgorCQkJICovCisJCQlwYV9zd2l0Y2hfdG9fcGFydGlhbF9zZXJpYWxpemUod2luZm8sIHRy dWUpOworCisJCQkvKiBmYWxsIHRocm91Z2ggKi8KKwkJY2FzZSBUUkFOU19MRUFERVJfUEFSVElB TF9TRVJJQUxJWkU6CisJCQlBc3NlcnQod2luZm8pOworCisJCQlzdHJlYW1fb3Blbl9hbmRfd3Jp dGVfY2hhbmdlKHhpZCwgTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9DT01NSVQsCisJCQkJCQkJCQkJ ICZvcmlnaW5hbF9tc2cpOworCisJCQlwYV9zZXRfZmlsZXNldF9zdGF0ZSh3aW5mby0+c2hhcmVk LCBGU19TRVJJQUxJWkVfRE9ORSk7CiAKLQkvKiB1bmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFs aXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8gKi8KLQlzdHJlYW1fY2xlYW51cF9maWxlcyhN eUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCQkJLyogRmluaXNoIHByb2Nlc3Npbmcg dGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gKi8KKwkJCXBhX3hhY3RfZmluaXNoKHdpbmZvLCBj b21taXRfZGF0YS5lbmRfbHNuKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfUEFSQUxMRUxf QVBQTFk6CisKKwkJCS8qCisJCQkgKiBJZiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIGFw cGx5aW5nIHNwb29sZWQgbWVzc2FnZXMgdGhlbgorCQkJICogY2xvc2UgdGhlIGZpbGUgYmVmb3Jl IGNvbW1pdHRpbmcuCisJCQkgKi8KKwkJCWlmIChzdHJlYW1fZmQpCisJCQkJc3RyZWFtX2Nsb3Nl X2ZpbGUoKTsKKworCQkJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2RhdGEp OworCisJCQlNeVBhcmFsbGVsU2hhcmVkLT5sYXN0X2NvbW1pdF9lbmQgPSBYYWN0TGFzdENvbW1p dEVuZDsKKworCQkJLyoKKwkJCSAqIEl0IGlzIGltcG9ydGFudCB0byBzZXQgdGhlIHRyYW5zYWN0 aW9uIHN0YXRlIGFzIGZpbmlzaGVkIGJlZm9yZQorCQkJICogcmVsZWFzaW5nIHRoZSBsb2NrLiBT ZWUgcGFfd2FpdF9mb3JfeGFjdF9maW5pc2guCisJCQkgKi8KKwkJCXBhX3NldF94YWN0X3N0YXRl KE15UGFyYWxsZWxTaGFyZWQsIFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVEKTsKKwkJCXBhX3VubG9j a190cmFuc2FjdGlvbih4aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJCQlwYV9yZXNldF9z dWJ0cmFucygpOworCisJCQllbG9nKERFQlVHMSwgImZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNU UkVBTSBDT01NSVQgY29tbWFuZCIpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCUFzc2Vy dChmYWxzZSk7CisJCQlicmVhazsKKwl9CiAKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBh cmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190 YWJsZXMoY29tbWl0X2RhdGEuZW5kX2xzbik7CkBAIC0xNTYwLDkgKzIyODEsMTYgQEAgYXBwbHlf aGFuZGxlX2NvbW1pdF9pbnRlcm5hbChMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEp CiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fdGltZXN0YW1wID0gY29tbWl0X2RhdGEtPmNv bW1pdHRpbWU7CiAKIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJaWYgKElzVHJh bnNhY3Rpb25CbG9jaygpKQorCQl7CisJCQlFbmRUcmFuc2FjdGlvbkJsb2NrKGZhbHNlKTsKKwkJ CUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQl9CisKIAkJcGdzdGF0X3JlcG9ydF9zdGF0 KGZhbHNlKTsKIAotCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihjb21taXRfZGF0YS0+ZW5kX2xzbik7 CisJCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKGNvbW1pdF9kYXRhLT5lbmRfbHNuLCBYYWN0TGFzdENv bW1pdEVuZCk7CiAJfQogCWVsc2UKIAl7CkBAIC0yNTA4LDcgKzMyMzYsNyBAQCBhcHBseV9oYW5k bGVfdHJ1bmNhdGUoU3RyaW5nSW5mbyBzKQogLyoKICAqIExvZ2ljYWwgcmVwbGljYXRpb24gcHJv dG9jb2wgbWVzc2FnZSBkaXNwYXRjaGVyLgogICovCi1zdGF0aWMgdm9pZAordm9pZAogYXBwbHlf ZGlzcGF0Y2goU3RyaW5nSW5mbyBzKQogewogCUxvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbiA9IHBx X2dldG1zZ2J5dGUocyk7CkBAIC0yNjcyLDE3ICszNDAwLDI0IEBAIGdldF9mbHVzaF9wb3NpdGlv bihYTG9nUmVjUHRyICp3cml0ZSwgWExvZ1JlY1B0ciAqZmx1c2gsCiAvKgogICogU3RvcmUgY3Vy cmVudCByZW1vdGUvbG9jYWwgbHNuIHBhaXIgaW4gdGhlIHRyYWNraW5nIGxpc3QuCiAgKi8KLXN0 YXRpYyB2b2lkCi1zdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9sc24pCit2 b2lkCitzdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9sc24sIFhMb2dSZWNQ dHIgbG9jYWxfbHNuKQogewogCUZsdXNoUG9zaXRpb24gKmZsdXNocG9zOwogCisJLyoKKwkgKiBT a2lwIGZvciBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLCBiZWNhdXNlIHRoZSBsc25fbWFwcGluZyBp cyBtYWludGFpbmVkCisJICogYnkgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIuCisJICovCisJaWYg KGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQlyZXR1cm47CisKIAkvKiBOZWVkIHRvIGRv IHRoaXMgaW4gcGVybWFuZW50IGNvbnRleHQgKi8KIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBw bHlDb250ZXh0KTsKIAogCS8qIFRyYWNrIGNvbW1pdCBsc24gICovCiAJZmx1c2hwb3MgPSAoRmx1 c2hQb3NpdGlvbiAqKSBwYWxsb2Moc2l6ZW9mKEZsdXNoUG9zaXRpb24pKTsKLQlmbHVzaHBvcy0+ bG9jYWxfZW5kID0gWGFjdExhc3RDb21taXRFbmQ7CisJZmx1c2hwb3MtPmxvY2FsX2VuZCA9IGxv Y2FsX2xzbjsKIAlmbHVzaHBvcy0+cmVtb3RlX2VuZCA9IHJlbW90ZV9sc247CiAKIAlkbGlzdF9w dXNoX3RhaWwoJmxzbl9tYXBwaW5nLCAmZmx1c2hwb3MtPm5vZGUpOwpAQCAtMjc0MSw2ICszNDc2 LDcgQEAgTG9naWNhbFJlcEFwcGx5TG9vcChYTG9nUmVjUHRyIGxhc3RfcmVjZWl2ZWQpCiAJZXJy Y2FsbGJhY2suY2FsbGJhY2sgPSBhcHBseV9lcnJvcl9jYWxsYmFjazsKIAllcnJjYWxsYmFjay5w cmV2aW91cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7CiAJZXJyb3JfY29udGV4dF9zdGFjayA9ICZl cnJjYWxsYmFjazsKKwlhcHBseV9lcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyb3JfY29udGV4dF9z dGFjazsKIAogCS8qIFRoaXMgb3V0ZXIgbG9vcCBpdGVyYXRlcyBvbmNlIHBlciB3YWl0LiAqLwog CWZvciAoOzspCkBAIC0yOTU1LDYgKzM2OTEsNyBAQCBMb2dpY2FsUmVwQXBwbHlMb29wKFhMb2dS ZWNQdHIgbGFzdF9yZWNlaXZlZCkKIAogCS8qIFBvcCB0aGUgZXJyb3IgY29udGV4dCBzdGFjayAq LwogCWVycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91czsKKwlhcHBseV9l cnJvcl9jb250ZXh0X3N0YWNrID0gZXJyb3JfY29udGV4dF9zdGFjazsKIAogCS8qIEFsbCBkb25l ICovCiAJd2FscmN2X2VuZHN0cmVhbWluZyhMb2dSZXBXb3JrZXJXYWxSY3ZDb25uLCAmdGxpKTsK QEAgLTMwNTMsOSArMzc5MCwzMSBAQCBzZW5kX2ZlZWRiYWNrKFhMb2dSZWNQdHIgcmVjdnBvcywg Ym9vbCBmb3JjZSwgYm9vbCByZXF1ZXN0UmVwbHkpCiB9CiAKIC8qCi0gKiBSZXJlYWQgc3Vic2Ny aXB0aW9uIGluZm8gaWYgbmVlZGVkLiBNb3N0IGNoYW5nZXMgd2lsbCBiZSBleGl0LgorICogRXhp dCByb3V0aW5lIGZvciBhcHBseSB3b3JrZXJzIGR1ZSB0byBzdWJzY3JpcHRpb24gcGFyYW1ldGVy IGNoYW5nZXMuCiAgKi8KIHN0YXRpYyB2b2lkCithcHBseV93b3JrZXJfZXhpdCh2b2lkKQorewor CWlmIChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKKwl7CisJCS8qCisJCSAqIERvbid0IHN0 b3AgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBhcyB0aGUgbGVhZGVyIHdpbGwgZGV0ZWN0IHRo ZQorCQkgKiBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIGNoYW5nZSBhbmQgcmVzdGFydCBsb2dpY2Fs IHJlcGxpY2F0aW9uIGxhdGVyCisJCSAqIGFueXdheS4gVGhpcyBhbHNvIHByZXZlbnRzIHRoZSBs ZWFkZXIgZnJvbSByZXBvcnRpbmcgZXJyb3JzIHdoZW4KKwkJICogdHJ5aW5nIHRvIGNvbW11bmlj YXRlIHdpdGggYSBzdG9wcGVkIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgd2hpY2gKKwkJICogd291 bGQgYWNjaWRlbnRhbGx5IGRpc2FibGUgc3Vic2NyaXB0aW9ucyBpZiBkaXNhYmxlX29uX2Vycm9y IHdhcworCQkgKiBzZXQuCisJCSAqLworCQlyZXR1cm47CisJfQorCisJcHJvY19leGl0KDApOwor fQorCisvKgorICogUmVyZWFkIHN1YnNjcmlwdGlvbiBpbmZvIGlmIG5lZWRlZC4gTW9zdCBjaGFu Z2VzIHdpbGwgYmUgZXhpdC4KKyAqLwordm9pZAogbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2 b2lkKQogewogCU1lbW9yeUNvbnRleHQgb2xkY3R4OwpAQCAtMzA4NSw5ICszODQ0LDkgQEAgbWF5 YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKQogCWlmICghbmV3c3ViKQogCXsKIAkJZXJlcG9y dChMT0csCi0JCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9y IHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCAiCi0JCQkJCQkic3RvcCBiZWNhdXNlIHRoZSBzdWJz Y3JpcHRpb24gd2FzIHJlbW92ZWQiLAotCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CisJ CS8qIHRyYW5zbGF0b3I6IGZpcnN0ICVzIGlzIHRoZSBuYW1lIG9mIGxvZ2ljYWwgcmVwbGljYXRp b24gd29ya2VyICovCisJCQkJKGVycm1zZygiJXMgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2ls bCBzdG9wIGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3YXMgcmVtb3ZlZCIsCisJCQkJCQlnZXRf d29ya2VyX25hbWUoKSwgTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CiAKIAkJcHJvY19leGl0KDAp OwogCX0KQEAgLTMwOTYsMTEgKzM4NTUsMTEgQEAgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2 b2lkKQogCWlmICghbmV3c3ViLT5lbmFibGVkKQogCXsKIAkJZXJlcG9ydChMT0csCi0JCQkJKGVy cm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBc IiVzXCIgd2lsbCAiCi0JCQkJCQkic3RvcCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gd2FzIGRp c2FibGVkIiwKLQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCQkvKiB0cmFuc2xhdG9y OiBmaXJzdCAlcyBpcyB0aGUgbmFtZSBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciAqLwor CQkJCShlcnJtc2coIiVzIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgc3RvcCBiZWNhdXNl IHRoZSBzdWJzY3JpcHRpb24gd2FzIGRpc2FibGVkIiwKKwkJCQkJCWdldF93b3JrZXJfbmFtZSgp LCBNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKIAotCQlwcm9jX2V4aXQoMCk7CisJCWFwcGx5X3dv cmtlcl9leGl0KCk7CiAJfQogCiAJLyogIXNsb3RuYW1lIHNob3VsZCBuZXZlciBoYXBwZW4gd2hl biBlbmFibGVkIGlzIHRydWUuICovCkBAIC0zMTExLDcgKzM4NzAsMTAgQEAgbWF5YmVfcmVyZWFk X3N1YnNjcmlwdGlvbih2b2lkKQogCiAJLyoKIAkgKiBFeGl0IGlmIGFueSBwYXJhbWV0ZXIgdGhh dCBhZmZlY3RzIHRoZSByZW1vdGUgY29ubmVjdGlvbiB3YXMgY2hhbmdlZC4KLQkgKiBUaGUgbGF1 bmNoZXIgd2lsbCBzdGFydCBhIG5ldyB3b3JrZXIuCisJICogVGhlIGxhdW5jaGVyIHdpbGwgc3Rh cnQgYSBuZXcgd29ya2VyIGJ1dCBub3RlIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5CisJICogd29y a2VyIHdvbid0IHJlc3RhcnQgaWYgdGhlIHN0cmVhbWluZyBvcHRpb24ncyB2YWx1ZSBpcyBjaGFu Z2VkIGZyb20KKwkgKiAncGFyYWxsZWwnIHRvIGFueSBvdGhlciB2YWx1ZSBvciB0aGUgc2VydmVy IGRlY2lkZXMgbm90IHRvIHN0cmVhbSB0aGUKKwkgKiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbi4K IAkgKi8KIAlpZiAoc3RyY21wKG5ld3N1Yi0+Y29ubmluZm8sIE15U3Vic2NyaXB0aW9uLT5jb25u aW5mbykgIT0gMCB8fAogCQlzdHJjbXAobmV3c3ViLT5uYW1lLCBNeVN1YnNjcmlwdGlvbi0+bmFt ZSkgIT0gMCB8fApAQCAtMzEyMiwxMSArMzg4NCwxNyBAQCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0 aW9uKHZvaWQpCiAJCW5ld3N1Yi0+b3duZXIgIT0gTXlTdWJzY3JpcHRpb24tPm93bmVyIHx8CiAJ CSFlcXVhbChuZXdzdWItPnB1YmxpY2F0aW9ucywgTXlTdWJzY3JpcHRpb24tPnB1YmxpY2F0aW9u cykpCiAJewotCQllcmVwb3J0KExPRywKLQkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9u IGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHJlc3RhcnQgYmVjYXVz ZSBvZiBhIHBhcmFtZXRlciBjaGFuZ2UiLAotCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7 CisJCWlmIChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKKwkJCWVyZXBvcnQoTE9HLAorCQkJ CQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBmb3Ig c3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHN0b3AgYmVjYXVzZSBvZiBhIHBhcmFtZXRlciBjaGFu Z2UiLAorCQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCQllbHNlCisJCQllcmVwb3J0 KExPRywKKwkJCS8qIHRyYW5zbGF0b3I6IGZpcnN0ICVzIGlzIHRoZSBuYW1lIG9mIGxvZ2ljYWwg cmVwbGljYXRpb24gd29ya2VyICovCisJCQkJCShlcnJtc2coIiVzIGZvciBzdWJzY3JpcHRpb24g XCIlc1wiIHdpbGwgcmVzdGFydCBiZWNhdXNlIG9mIGEgcGFyYW1ldGVyIGNoYW5nZSIsCisJCQkJ CQkJZ2V0X3dvcmtlcl9uYW1lKCksIE15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOwogCi0JCXByb2Nf ZXhpdCgwKTsKKwkJYXBwbHlfd29ya2VyX2V4aXQoKTsKIAl9CiAKIAkvKiBDaGVjayBmb3Igb3Ro ZXIgY2hhbmdlcyB0aGF0IHNob3VsZCBuZXZlciBoYXBwZW4gdG9vLiAqLwpAQCAtMzM3OCw3ICs0 MTQ2LDcgQEAgY2hhbmdlc19maWxlbmFtZShjaGFyICpwYXRoLCBPaWQgc3ViaWQsIFRyYW5zYWN0 aW9uSWQgeGlkKQogICogdG9wbGV2ZWwgdHJhbnNhY3Rpb24uIEVhY2ggc3Vic2NyaXB0aW9uIGhh cyBhIHNlcGFyYXRlIHNldCBvZiBmaWxlcwogICogZm9yIGFueSB0b3BsZXZlbCB0cmFuc2FjdGlv bi4KICAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIHN0cmVhbV9jbGVhbnVwX2ZpbGVzKE9pZCBzdWJp ZCwgVHJhbnNhY3Rpb25JZCB4aWQpCiB7CiAJY2hhcgkJcGF0aFtNQVhQR1BBVEhdOwpAQCAtMzQw MSw5ICs0MTY5LDYgQEAgc3RyZWFtX2NsZWFudXBfZmlsZXMoT2lkIHN1YmlkLCBUcmFuc2FjdGlv bklkIHhpZCkKICAqIGJ5IHN0cmVhbV94aWQgKGdsb2JhbCB2YXJpYWJsZSkuIElmIGl0J3MgdGhl IGZpcnN0IGNodW5rIG9mIHN0cmVhbWVkCiAgKiBjaGFuZ2VzIGZvciB0aGlzIHRyYW5zYWN0aW9u LCBjcmVhdGUgdGhlIGJ1ZmZpbGUsIG90aGVyd2lzZSBvcGVuIHRoZQogICogcHJldmlvdXNseSBj cmVhdGVkIGZpbGUuCi0gKgotICogVGhpcyBjYW4gb25seSBiZSBjYWxsZWQgYXQgdGhlIGJlZ2lu bmluZyBvZiBhICJzdHJlYW1pbmciIGJsb2NrLCBpLmUuCi0gKiBiZXR3ZWVuIHN0cmVhbV9zdGFy dC9zdHJlYW1fc3RvcCBtZXNzYWdlcyBmcm9tIHRoZSB1cHN0cmVhbS4KICAqLwogc3RhdGljIHZv aWQKIHN0cmVhbV9vcGVuX2ZpbGUoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBm aXJzdF9zZWdtZW50KQpAQCAtMzQxMSw3ICs0MTc2LDYgQEAgc3RyZWFtX29wZW5fZmlsZShPaWQg c3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGZpcnN0X3NlZ21lbnQpCiAJY2hhcgkJcGF0 aFtNQVhQR1BBVEhdOwogCU1lbW9yeUNvbnRleHQgb2xkY3h0OwogCi0JQXNzZXJ0KGluX3N0cmVh bWVkX3RyYW5zYWN0aW9uKTsKIAlBc3NlcnQoT2lkSXNWYWxpZChzdWJpZCkpOwogCUFzc2VydChU cmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKTsKIAlBc3NlcnQoc3RyZWFtX2ZkID09IE5VTEwpOwpA QCAtMzQ1MCwxNSArNDIxNCwxMCBAQCBzdHJlYW1fb3Blbl9maWxlKE9pZCBzdWJpZCwgVHJhbnNh Y3Rpb25JZCB4aWQsIGJvb2wgZmlyc3Rfc2VnbWVudCkKIC8qCiAgKiBzdHJlYW1fY2xvc2VfZmls ZQogICoJICBDbG9zZSB0aGUgY3VycmVudGx5IG9wZW4gZmlsZSB3aXRoIHN0cmVhbWVkIGNoYW5n ZXMuCi0gKgotICogVGhpcyBjYW4gb25seSBiZSBjYWxsZWQgYXQgdGhlIGVuZCBvZiBhIHN0cmVh bWluZyBibG9jaywgaS5lLiBhdCBzdHJlYW1fc3RvcAotICogbWVzc2FnZSBmcm9tIHRoZSB1cHN0 cmVhbS4KICAqLwogc3RhdGljIHZvaWQKIHN0cmVhbV9jbG9zZV9maWxlKHZvaWQpCiB7Ci0JQXNz ZXJ0KGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKTsKLQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFs aWQoc3RyZWFtX3hpZCkpOwogCUFzc2VydChzdHJlYW1fZmQgIT0gTlVMTCk7CiAKIAlCdWZGaWxl Q2xvc2Uoc3RyZWFtX2ZkKTsKQEAgLTM0ODAsOCArNDIzOSw2IEBAIHN0cmVhbV93cml0ZV9jaGFu Z2UoY2hhciBhY3Rpb24sIFN0cmluZ0luZm8gcykKIHsKIAlpbnQJCQlsZW47CiAKLQlBc3NlcnQo aW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pOwotCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChz dHJlYW1feGlkKSk7CiAJQXNzZXJ0KHN0cmVhbV9mZCAhPSBOVUxMKTsKIAogCS8qIHRvdGFsIG9u LWRpc2sgc2l6ZSwgaW5jbHVkaW5nIHRoZSBhY3Rpb24gdHlwZSBjaGFyYWN0ZXIgKi8KQEAgLTM1 MDAsNiArNDI1NywyNiBAQCBzdHJlYW1fd3JpdGVfY2hhbmdlKGNoYXIgYWN0aW9uLCBTdHJpbmdJ bmZvIHMpCiB9CiAKIC8qCisgKiBzdHJlYW1fb3Blbl9hbmRfd3JpdGVfY2hhbmdlCisgKgkgIFNl cmlhbGl6ZSBhIG1lc3NhZ2UgdG8gYSBmaWxlIGZvciB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb24uCisg KgorICogVGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFyIHRvIHN0cmVhbV93cml0ZV9jaGFuZ2UgZXhj ZXB0IHRoYXQgaXQgd2lsbCBvcGVuIHRoZQorICogdGFyZ2V0IGZpbGUgaWYgbm90IGFscmVhZHkg YmVmb3JlIHdyaXRpbmcgdGhlIG1lc3NhZ2UgYW5kIGNsb3NlIHRoZSBmaWxlIGF0CisgKiB0aGUg ZW5kLgorICovCitzdGF0aWMgdm9pZAorc3RyZWFtX29wZW5fYW5kX3dyaXRlX2NoYW5nZShUcmFu c2FjdGlvbklkIHhpZCwgY2hhciBhY3Rpb24sIFN0cmluZ0luZm8gcykKK3sKKwlBc3NlcnQoIWlu X3N0cmVhbWVkX3RyYW5zYWN0aW9uKTsKKworCWlmICghc3RyZWFtX2ZkKQorCQlzdHJlYW1fc3Rh cnRfaW50ZXJuYWwoeGlkLCBmYWxzZSk7CisKKwlzdHJlYW1fd3JpdGVfY2hhbmdlKGFjdGlvbiwg cyk7CisJc3RyZWFtX3N0b3BfaW50ZXJuYWwoeGlkKTsKK30KKworLyoKICAqIENsZWFudXAgdGhl IG1lbW9yeSBmb3Igc3VieGFjdHMgYW5kIHJlc2V0IHRoZSByZWxhdGVkIHZhcmlhYmxlcy4KICAq Lwogc3RhdGljIGlubGluZSB2b2lkCkBAIC0zNjEwLDM3ICs0Mzg3LDE2IEBAIHN0YXJ0X2FwcGx5 KFhMb2dSZWNQdHIgb3JpZ2luX3N0YXJ0cG9zKQogCVBHX0VORF9UUlkoKTsKIH0KIAotLyogTG9n aWNhbCBSZXBsaWNhdGlvbiBBcHBseSB3b3JrZXIgZW50cnkgcG9pbnQgKi8KKy8qCisgKiBDb21t b24gaW5pdGlhbGl6YXRpb24gZm9yIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHBhcmFsbGVsIGFw cGx5IHdvcmtlci4KKyAqCisgKiBJbml0aWFsaXplIHRoZSBkYXRhYmFzZSBjb25uZWN0aW9uLCBp bi1tZW1vcnkgc3Vic2NyaXB0aW9uIGFuZCBuZWNlc3NhcnkKKyAqIGNvbmZpZyBvcHRpb25zLgor ICovCiB2b2lkCi1BcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCitJbml0aWFsaXplQXBw bHlXb3JrZXIodm9pZCkKIHsKLQlpbnQJCQl3b3JrZXJfc2xvdCA9IERhdHVtR2V0SW50MzIobWFp bl9hcmcpOwogCU1lbW9yeUNvbnRleHQgb2xkY3R4OwotCWNoYXIJCW9yaWdpbm5hbWVbTkFNRURB VEFMRU5dOwotCVhMb2dSZWNQdHIJb3JpZ2luX3N0YXJ0cG9zID0gSW52YWxpZFhMb2dSZWNQdHI7 Ci0JY2hhcgkgICAqbXlzbG90bmFtZSA9IE5VTEw7Ci0JV2FsUmN2U3RyZWFtT3B0aW9ucyBvcHRp b25zOwotCWludAkJCXNlcnZlcl92ZXJzaW9uOwotCi0JLyogQXR0YWNoIHRvIHNsb3QgKi8KLQls b2dpY2FscmVwX3dvcmtlcl9hdHRhY2god29ya2VyX3Nsb3QpOwotCi0JLyogU2V0dXAgc2lnbmFs IGhhbmRsaW5nICovCi0JcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVs b2FkKTsKLQlwcXNpZ25hbChTSUdURVJNLCBkaWUpOwotCUJhY2tncm91bmRXb3JrZXJVbmJsb2Nr U2lnbmFscygpOwotCi0JLyoKLQkgKiBXZSBkb24ndCBjdXJyZW50bHkgbmVlZCBhbnkgUmVzb3Vy Y2VPd25lciBpbiBhIHdhbHJlY2VpdmVyIHByb2Nlc3MsIGJ1dAotCSAqIGlmIHdlIGRpZCwgd2Ug Y291bGQgY2FsbCBDcmVhdGVBdXhQcm9jZXNzUmVzb3VyY2VPd25lciBoZXJlLgotCSAqLwotCi0J LyogSW5pdGlhbGlzZSBzdGF0cyB0byBhIHNhbmlzaCB2YWx1ZSAqLwotCU15TG9naWNhbFJlcFdv cmtlci0+bGFzdF9zZW5kX3RpbWUgPSBNeUxvZ2ljYWxSZXBXb3JrZXItPmxhc3RfcmVjdl90aW1l ID0KLQkJTXlMb2dpY2FsUmVwV29ya2VyLT5yZXBseV90aW1lID0gR2V0Q3VycmVudFRpbWVzdGFt cCgpOwotCi0JLyogTG9hZCB0aGUgbGlicHEtc3BlY2lmaWMgZnVuY3Rpb25zICovCi0JbG9hZF9m aWxlKCJsaWJwcXdhbHJlY2VpdmVyIiwgZmFsc2UpOwogCiAJLyogUnVuIGFzIHJlcGxpY2Egc2Vz c2lvbiByZXBsaWNhdGlvbiByb2xlLiAqLwogCVNldENvbmZpZ09wdGlvbigic2Vzc2lvbl9yZXBs aWNhdGlvbl9yb2xlIiwgInJlcGxpY2EiLApAQCAtMzY2OCw5ICs0NDI0LDEwIEBAIEFwcGx5V29y a2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAlpZiAoIU15U3Vic2NyaXB0aW9uKQogCXsKIAkJZXJl cG9ydChMT0csCi0JCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIg Zm9yIHN1YnNjcmlwdGlvbiAldSB3aWxsIG5vdCAiCi0JCQkJCQkic3RhcnQgYmVjYXVzZSB0aGUg c3Vic2NyaXB0aW9uIHdhcyByZW1vdmVkIGR1cmluZyBzdGFydHVwIiwKLQkJCQkJCU15TG9naWNh bFJlcFdvcmtlci0+c3ViaWQpKSk7CisJCS8qIHRyYW5zbGF0b3I6ICVzIGlzIHRoZSBuYW1lIG9m IGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyICovCisJCQkJKGVycm1zZygiJXMgZm9yIHN1YnNj cmlwdGlvbiAldSB3aWxsIG5vdCBzdGFydCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gd2FzIHJl bW92ZWQgZHVyaW5nIHN0YXJ0dXAiLAorCQkJCQkJZ2V0X3dvcmtlcl9uYW1lKCksIE15TG9naWNh bFJlcFdvcmtlci0+c3ViaWQpKSk7CisKIAkJcHJvY19leGl0KDApOwogCX0KIApAQCAtMzY4MCwx MSArNDQzNywxMSBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJaWYgKCFNeVN1 YnNjcmlwdGlvbi0+ZW5hYmxlZCkKIAl7CiAJCWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImxv Z2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdp bGwgbm90ICIKLQkJCQkJCSJzdGFydCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gd2FzIGRpc2Fi bGVkIGR1cmluZyBzdGFydHVwIiwKLQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCQkv KiB0cmFuc2xhdG9yOiBmaXJzdCAlcyBpcyB0aGUgbmFtZSBvZiBsb2dpY2FsIHJlcGxpY2F0aW9u IHdvcmtlciAqLworCQkJCShlcnJtc2coIiVzIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwg bm90IHN0YXJ0IGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3YXMgZGlzYWJsZWQgZHVyaW5nIHN0 YXJ0dXAiLAorCQkJCQkJZ2V0X3dvcmtlcl9uYW1lKCksIE15U3Vic2NyaXB0aW9uLT5uYW1lKSkp OwogCi0JCXByb2NfZXhpdCgwKTsKKwkJYXBwbHlfd29ya2VyX2V4aXQoKTsKIAl9CiAKIAkvKiBT ZXR1cCBzeW5jaHJvbm91cyBjb21taXQgYWNjb3JkaW5nIHRvIHRoZSB1c2VyJ3Mgd2lzaGVzICov CkBAIC0zNjk5LDEzICs0NDU2LDQ5IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykK IAlpZiAoYW1fdGFibGVzeW5jX3dvcmtlcigpKQogCQllcmVwb3J0KExPRywKIAkJCQkoZXJybXNn KCJsb2dpY2FsIHJlcGxpY2F0aW9uIHRhYmxlIHN5bmNocm9uaXphdGlvbiB3b3JrZXIgZm9yIHN1 YnNjcmlwdGlvbiBcIiVzXCIsIHRhYmxlIFwiJXNcIiBoYXMgc3RhcnRlZCIsCi0JCQkJCQlNeVN1 YnNjcmlwdGlvbi0+bmFtZSwgZ2V0X3JlbF9uYW1lKE15TG9naWNhbFJlcFdvcmtlci0+cmVsaWQp KSkpOworCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUsCisJCQkJCQlnZXRfcmVsX25hbWUoTXlM b2dpY2FsUmVwV29ya2VyLT5yZWxpZCkpKSk7CiAJZWxzZQogCQllcmVwb3J0KExPRywKLQkJCQko ZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9u IFwiJXNcIiBoYXMgc3RhcnRlZCIsCi0JCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKKwkJ LyogdHJhbnNsYXRvcjogZmlyc3QgJXMgaXMgdGhlIG5hbWUgb2YgbG9naWNhbCByZXBsaWNhdGlv biB3b3JrZXIgKi8KKwkJCQkoZXJybXNnKCIlcyBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiBoYXMg c3RhcnRlZCIsCisJCQkJCQlnZXRfd29ya2VyX25hbWUoKSwgTXlTdWJzY3JpcHRpb24tPm5hbWUp KSk7CiAKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKK30KKworLyogTG9naWNhbCBSZXBs aWNhdGlvbiBBcHBseSB3b3JrZXIgZW50cnkgcG9pbnQgKi8KK3ZvaWQKK0FwcGx5V29ya2VyTWFp bihEYXR1bSBtYWluX2FyZykKK3sKKwlpbnQJCQl3b3JrZXJfc2xvdCA9IERhdHVtR2V0SW50MzIo bWFpbl9hcmcpOworCWNoYXIJCW9yaWdpbm5hbWVbTkFNRURBVEFMRU5dOworCVhMb2dSZWNQdHIJ b3JpZ2luX3N0YXJ0cG9zID0gSW52YWxpZFhMb2dSZWNQdHI7CisJY2hhcgkgICAqbXlzbG90bmFt ZSA9IE5VTEw7CisJV2FsUmN2U3RyZWFtT3B0aW9ucyBvcHRpb25zOworCWludAkJCXNlcnZlcl92 ZXJzaW9uOworCisJLyogQXR0YWNoIHRvIHNsb3QgKi8KKwlsb2dpY2FscmVwX3dvcmtlcl9hdHRh Y2god29ya2VyX3Nsb3QpOworCisJLyogU2V0dXAgc2lnbmFsIGhhbmRsaW5nICovCisJcHFzaWdu YWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsKKwlwcXNpZ25hbChTSUdU RVJNLCBkaWUpOworCUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2lnbmFscygpOworCisJLyoKKwkg KiBXZSBkb24ndCBjdXJyZW50bHkgbmVlZCBhbnkgUmVzb3VyY2VPd25lciBpbiBhIHdhbHJlY2Vp dmVyIHByb2Nlc3MsIGJ1dAorCSAqIGlmIHdlIGRpZCwgd2UgY291bGQgY2FsbCBDcmVhdGVBdXhQ cm9jZXNzUmVzb3VyY2VPd25lciBoZXJlLgorCSAqLworCisJLyogSW5pdGlhbGlzZSBzdGF0cyB0 byBhIHNhbmlzaCB2YWx1ZSAqLworCU15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9zZW5kX3RpbWUg PSBNeUxvZ2ljYWxSZXBXb3JrZXItPmxhc3RfcmVjdl90aW1lID0KKwkJTXlMb2dpY2FsUmVwV29y a2VyLT5yZXBseV90aW1lID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOworCisJLyogTG9hZCB0aGUg bGlicHEtc3BlY2lmaWMgZnVuY3Rpb25zICovCisJbG9hZF9maWxlKCJsaWJwcXdhbHJlY2VpdmVy IiwgZmFsc2UpOworCisJSW5pdGlhbGl6ZUFwcGx5V29ya2VyKCk7CiAKIAkvKiBDb25uZWN0IHRv IHRoZSBvcmlnaW4gYW5kIHN0YXJ0IHRoZSByZXBsaWNhdGlvbi4gKi8KIAllbG9nKERFQlVHMSwg ImNvbm5lY3RpbmcgdG8gcHVibGlzaGVyIHVzaW5nIGNvbm5lY3Rpb24gc3RyaW5nIFwiJXNcIiIs CkBAIC0zNzE1LDIwICs0NTA4LDE1IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykK IAl7CiAJCXN0YXJ0X3RhYmxlX3N5bmMoJm9yaWdpbl9zdGFydHBvcywgJm15c2xvdG5hbWUpOwog Ci0JCS8qCi0JCSAqIEFsbG9jYXRlIHRoZSBvcmlnaW4gbmFtZSBpbiBsb25nLWxpdmVkIGNvbnRl eHQgZm9yIGVycm9yIGNvbnRleHQKLQkJICogbWVzc2FnZS4KLQkJICovCiAJCVJlcGxpY2F0aW9u T3JpZ2luTmFtZUZvckxvZ2ljYWxSZXAoTXlTdWJzY3JpcHRpb24tPm9pZCwKIAkJCQkJCQkJCQkg ICBNeUxvZ2ljYWxSZXBXb3JrZXItPnJlbGlkLAogCQkJCQkJCQkJCSAgIG9yaWdpbm5hbWUsCiAJ CQkJCQkJCQkJICAgc2l6ZW9mKG9yaWdpbm5hbWUpKTsKLQkJYXBwbHlfZXJyb3JfY2FsbGJhY2tf YXJnLm9yaWdpbl9uYW1lID0gTWVtb3J5Q29udGV4dFN0cmR1cChBcHBseUNvbnRleHQsCi0JCQkJ CQkJCQkJCQkJCQkJICAgb3JpZ2lubmFtZSk7CisJCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X29y aWdpbihvcmlnaW5uYW1lKTsKIAl9CiAJZWxzZQogCXsKLQkJLyogVGhpcyBpcyBtYWluIGFwcGx5 IHdvcmtlciAqLworCQkvKiBUaGlzIGlzIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyICovCiAJCVJl cE9yaWdpbklkIG9yaWdpbmlkOwogCQlUaW1lTGluZUlECXN0YXJ0cG9pbnRUTEk7CiAJCWNoYXIJ ICAgKmVycjsKQEAgLTM3NTIsNyArNDU0MCw3IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWlu X2FyZykKIAkJb3JpZ2luaWQgPSByZXBsb3JpZ2luX2J5X25hbWUob3JpZ2lubmFtZSwgdHJ1ZSk7 CiAJCWlmICghT2lkSXNWYWxpZChvcmlnaW5pZCkpCiAJCQlvcmlnaW5pZCA9IHJlcGxvcmlnaW5f Y3JlYXRlKG9yaWdpbm5hbWUpOwotCQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQp OworCQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQsIDApOwogCQlyZXBsb3JpZ2lu X3Nlc3Npb25fb3JpZ2luID0gb3JpZ2luaWQ7CiAJCW9yaWdpbl9zdGFydHBvcyA9IHJlcGxvcmln aW5fc2Vzc2lvbl9nZXRfcHJvZ3Jlc3MoZmFsc2UpOwogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKQEAgLTM3NzAsMTIgKzQ1NTgsNyBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9h cmcpCiAJCSAqLwogCQkodm9pZCkgd2FscmN2X2lkZW50aWZ5X3N5c3RlbShMb2dSZXBXb3JrZXJX YWxSY3ZDb25uLCAmc3RhcnRwb2ludFRMSSk7CiAKLQkJLyoKLQkJICogQWxsb2NhdGUgdGhlIG9y aWdpbiBuYW1lIGluIGxvbmctbGl2ZWQgY29udGV4dCBmb3IgZXJyb3IgY29udGV4dAotCQkgKiBt ZXNzYWdlLgotCQkgKi8KLQkJYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnLm9yaWdpbl9uYW1lID0g TWVtb3J5Q29udGV4dFN0cmR1cChBcHBseUNvbnRleHQsCi0JCQkJCQkJCQkJCQkJCQkJICAgb3Jp Z2lubmFtZSk7CisJCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X29yaWdpbihvcmlnaW5uYW1lKTsK IAl9CiAKIAkvKgpAQCAtMzc5MywxMyArNDU3NiwzNiBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0g bWFpbl9hcmcpCiAKIAlzZXJ2ZXJfdmVyc2lvbiA9IHdhbHJjdl9zZXJ2ZXJfdmVyc2lvbihMb2dS ZXBXb3JrZXJXYWxSY3ZDb25uKTsKIAlvcHRpb25zLnByb3RvLmxvZ2ljYWwucHJvdG9fdmVyc2lv biA9CisJCXNlcnZlcl92ZXJzaW9uID49IDE2MDAwMCA/IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFN X1BBUkFMTEVMX1ZFUlNJT05fTlVNIDoKIAkJc2VydmVyX3ZlcnNpb24gPj0gMTUwMDAwID8gTE9H SUNBTFJFUF9QUk9UT19UV09QSEFTRV9WRVJTSU9OX05VTSA6CiAJCXNlcnZlcl92ZXJzaW9uID49 IDE0MDAwMCA/IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1ZFUlNJT05fTlVNIDoKIAkJTE9HSUNB TFJFUF9QUk9UT19WRVJTSU9OX05VTTsKIAogCW9wdGlvbnMucHJvdG8ubG9naWNhbC5wdWJsaWNh dGlvbl9uYW1lcyA9IE15U3Vic2NyaXB0aW9uLT5wdWJsaWNhdGlvbnM7CiAJb3B0aW9ucy5wcm90 by5sb2dpY2FsLmJpbmFyeSA9IE15U3Vic2NyaXB0aW9uLT5iaW5hcnk7Ci0Jb3B0aW9ucy5wcm90 by5sb2dpY2FsLnN0cmVhbWluZyA9IE15U3Vic2NyaXB0aW9uLT5zdHJlYW07CisKKwkvKgorCSAq IEFzc2lnbiB0aGUgYXBwcm9wcmlhdGUgb3B0aW9uIHZhbHVlIGZvciBzdHJlYW1pbmcgb3B0aW9u IGFjY29yZGluZyB0bworCSAqIHRoZSAnc3RyZWFtaW5nJyBtb2RlIGFuZCB0aGUgcHVibGlzaGVy J3MgYWJpbGl0eSB0byBzdXBwb3J0IHRoYXQgbW9kZS4KKwkgKi8KKwlpZiAoc2VydmVyX3ZlcnNp b24gPj0gMTYwMDAwICYmCisJCU15U3Vic2NyaXB0aW9uLT5zdHJlYW0gPT0gTE9HSUNBTFJFUF9T VFJFQU1fUEFSQUxMRUwpCisJeworCQlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nX3N0 ciA9ICJwYXJhbGxlbCI7CisJCU15TG9naWNhbFJlcFdvcmtlci0+cGFyYWxsZWxfYXBwbHkgPSB0 cnVlOworCX0KKwllbHNlIGlmIChzZXJ2ZXJfdmVyc2lvbiA+PSAxNDAwMDAgJiYKKwkJCSBNeVN1 YnNjcmlwdGlvbi0+c3RyZWFtICE9IExPR0lDQUxSRVBfU1RSRUFNX09GRikKKwl7CisJCW9wdGlv bnMucHJvdG8ubG9naWNhbC5zdHJlYW1pbmdfc3RyID0gIm9uIjsKKwkJTXlMb2dpY2FsUmVwV29y a2VyLT5wYXJhbGxlbF9hcHBseSA9IGZhbHNlOworCX0KKwllbHNlCisJeworCQlvcHRpb25zLnBy b3RvLmxvZ2ljYWwuc3RyZWFtaW5nX3N0ciA9IE5VTEw7CisJCU15TG9naWNhbFJlcFdvcmtlci0+ cGFyYWxsZWxfYXBwbHkgPSBmYWxzZTsKKwl9CisKIAlvcHRpb25zLnByb3RvLmxvZ2ljYWwudHdv cGhhc2UgPSBmYWxzZTsKIAlvcHRpb25zLnByb3RvLmxvZ2ljYWwub3JpZ2luID0gcHN0cmR1cChN eVN1YnNjcmlwdGlvbi0+b3JpZ2luKTsKIApAQCAtMzg5Nyw2ICs0NzAzLDE1IEBAIElzTG9naWNh bFdvcmtlcih2b2lkKQogfQogCiAvKgorICogSXMgY3VycmVudCBwcm9jZXNzIGEgbG9naWNhbCBy ZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXI/CisgKi8KK2Jvb2wKK0lzTG9naWNhbFBh cmFsbGVsQXBwbHlXb3JrZXIodm9pZCkKK3sKKwlyZXR1cm4gSXNMb2dpY2FsV29ya2VyKCkgJiYg YW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCk7Cit9CisKKy8qCiAgKiBTdGFydCBza2lwcGluZyBj aGFuZ2VzIG9mIHRoZSB0cmFuc2FjdGlvbiBpZiB0aGUgZ2l2ZW4gTFNOIG1hdGNoZXMgdGhlCiAg KiBMU04gc3BlY2lmaWVkIGJ5IHN1YnNjcmlwdGlvbidzIHNraXBsc24uCiAgKi8KQEAgLTM5NTgs NyArNDc3Myw3IEBAIGNsZWFyX3N1YnNjcmlwdGlvbl9za2lwX2xzbihYTG9nUmVjUHRyIGZpbmlz aF9sc24pCiAJWExvZ1JlY1B0cglteXNraXBsc24gPSBNeVN1YnNjcmlwdGlvbi0+c2tpcGxzbjsK IAlib29sCQlzdGFydGVkX3R4ID0gZmFsc2U7CiAKLQlpZiAobGlrZWx5KFhMb2dSZWNQdHJJc0lu dmFsaWQobXlza2lwbHNuKSkpCisJaWYgKGxpa2VseShYTG9nUmVjUHRySXNJbnZhbGlkKG15c2tp cGxzbikpIHx8IGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQogCQlyZXR1cm47CiAKIAlpZiAo IUlzVHJhbnNhY3Rpb25TdGF0ZSgpKQpAQCAtNDAzMCw3ICs0ODQ1LDcgQEAgY2xlYXJfc3Vic2Ny aXB0aW9uX3NraXBfbHNuKFhMb2dSZWNQdHIgZmluaXNoX2xzbikKIH0KIAogLyogRXJyb3IgY2Fs bGJhY2sgdG8gZ2l2ZSBtb3JlIGNvbnRleHQgaW5mbyBhYm91dCB0aGUgY2hhbmdlIGJlaW5nIGFw cGxpZWQgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBhcHBseV9lcnJvcl9jYWxsYmFjayh2b2lkICph cmcpCiB7CiAJQXBwbHlFcnJvckNhbGxiYWNrQXJnICplcnJhcmcgPSAmYXBwbHlfZXJyb3JfY2Fs bGJhY2tfYXJnOwpAQCAtNDA1OCwyMyArNDg3Myw0NyBAQCBhcHBseV9lcnJvcl9jYWxsYmFjayh2 b2lkICphcmcpCiAJCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCwKIAkJCQkJICAgTFNOX0ZPUk1B VF9BUkdTKGVycmFyZy0+ZmluaXNoX2xzbikpOwogCX0KLQllbHNlIGlmIChlcnJhcmctPnJlbW90 ZV9hdHRudW0gPCAwKQotCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciBy ZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBtZXNzYWdlIHR5cGUgXCIlc1wiIGZvciBy ZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGluIHRyYW5zYWN0aW9uICV1LCBm aW5pc2hlZCBhdCAlWC8lWCIsCi0JCQkJICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKLQkJCQkgICBs b2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAotCQkJCSAgIGVycmFyZy0+ cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKLQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLnJl bG5hbWUsCi0JCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAotCQkJCSAgIExTTl9GT1JNQVRfQVJH UyhlcnJhcmctPmZpbmlzaF9sc24pKTsKIAllbHNlCi0JCWVycmNvbnRleHQoInByb2Nlc3Npbmcg cmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIG1lc3NhZ2Ug dHlwZSBcIiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgY29s dW1uIFwiJXNcIiBpbiB0cmFuc2FjdGlvbiAldSwgZmluaXNoZWQgYXQgJVgvJVgiLAotCQkJCSAg IGVycmFyZy0+b3JpZ2luX25hbWUsCi0JCQkJICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJy YXJnLT5jb21tYW5kKSwKLQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsCi0J CQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAotCQkJCSAgIGVycmFyZy0+cmVs LT5yZW1vdGVyZWwuYXR0bmFtZXNbZXJyYXJnLT5yZW1vdGVfYXR0bnVtXSwKLQkJCQkgICBlcnJh cmctPnJlbW90ZV94aWQsCi0JCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGVycmFyZy0+ZmluaXNoX2xz bikpOworCXsKKwkJaWYgKGVycmFyZy0+cmVtb3RlX2F0dG51bSA8IDApCisJCXsKKwkJCWlmIChY TG9nUmVjUHRySXNJbnZhbGlkKGVycmFyZy0+ZmluaXNoX2xzbikpCisJCQkJZXJyY29udGV4dCgi cHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJp bmcgbWVzc2FnZSB0eXBlIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwi JXMuJXNcIiBpbiB0cmFuc2FjdGlvbiAldSIsCisJCQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1l LAorCQkJCQkJICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKKwkJ CQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+ cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCk7CisJ CQllbHNlCisJCQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGlj YXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgbWVzc2FnZSB0eXBlIFwiJXNcIiBmb3IgcmVwbGlj YXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBpbiB0cmFuc2FjdGlvbiAldSwgZmluaXNo ZWQgYXQgJVgvJVgiLAorCQkJCQkJICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKKwkJCQkJCSAgIGxv Z2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCisJCQkJCQkgICBlcnJhcmct PnJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVs LnJlbG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQsCisJCQkJCQkgICBMU05fRk9S TUFUX0FSR1MoZXJyYXJnLT5maW5pc2hfbHNuKSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlpZiAo WExvZ1JlY1B0cklzSW52YWxpZChlcnJhcmctPmZpbmlzaF9sc24pKQorCQkJCWVycmNvbnRleHQo InByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVy aW5nIG1lc3NhZ2UgdHlwZSBcIiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBc IiVzLiVzXCIgY29sdW1uIFwiJXNcIiBpbiB0cmFuc2FjdGlvbiAldSIsCisJCQkJCQkgICBlcnJh cmctPm9yaWdpbl9uYW1lLAorCQkJCQkJICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJn LT5jb21tYW5kKSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKKwkJ CQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+ cmVsLT5yZW1vdGVyZWwuYXR0bmFtZXNbZXJyYXJnLT5yZW1vdGVfYXR0bnVtXSwKKwkJCQkJCSAg IGVycmFyZy0+cmVtb3RlX3hpZCk7CisJCQllbHNlCisJCQkJZXJyY29udGV4dCgicHJvY2Vzc2lu ZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgbWVzc2Fn ZSB0eXBlIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBj b2x1bW4gXCIlc1wiIGluIHRyYW5zYWN0aW9uICV1LCBmaW5pc2hlZCBhdCAlWC8lWCIsCisJCQkJ CQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAorCQkJCQkJICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5 cGUoZXJyYXJnLT5jb21tYW5kKSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNw bmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKKwkJCQkJCSAg IGVycmFyZy0+cmVsLT5yZW1vdGVyZWwuYXR0bmFtZXNbZXJyYXJnLT5yZW1vdGVfYXR0bnVtXSwK KwkJCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCwKKwkJCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhl cnJhcmctPmZpbmlzaF9sc24pKTsKKwkJfQorCX0KIH0KIAogLyogU2V0IHRyYW5zYWN0aW9uIGlu Zm9ybWF0aW9uIG9mIGFwcGx5IGVycm9yIGNhbGxiYWNrICovCkBAIC00MTQ0LDMgKzQ5ODMsNTMg QEAgQXRFT1hhY3RfTG9naWNhbFJlcFdvcmtlcnMoYm9vbCBpc0NvbW1pdCkKIAkvKiBUaGUgTGlz dCBzdG9yYWdlIHdpbGwgYmUgcmVjbGFpbWVkIGF1dG9tYXRpY2FsbHkgaW4geGFjdCBjbGVhbnVw LiAqLwogCW9uX2NvbW1pdF93YWtldXBfd29ya2Vyc19zdWJpZHMgPSBOSUw7CiB9CisKKy8qCisg KiBBbGxvY2F0ZSB0aGUgb3JpZ2luIG5hbWUgaW4gbG9uZy1saXZlZCBjb250ZXh0IGZvciBlcnJv ciBjb250ZXh0IG1lc3NhZ2UuCisgKi8KK3ZvaWQKK3NldF9hcHBseV9lcnJvcl9jb250ZXh0X29y aWdpbihjaGFyICpvcmlnaW5uYW1lKQoreworCWFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZy5vcmln aW5fbmFtZSA9IE1lbW9yeUNvbnRleHRTdHJkdXAoQXBwbHlDb250ZXh0LAorCQkJCQkJCQkJCQkJ CQkJICAgb3JpZ2lubmFtZSk7Cit9CisKKy8qCisgKiBSZXR1cm4gdGhlIGFjdGlvbiB0byBiZSB0 YWtlbiBmb3IgdGhlIGdpdmVuIHRyYW5zYWN0aW9uLiAqd2luZm8gaXMKKyAqIGFzc2lnbmVkIHRv IHRoZSBkZXN0aW5hdGlvbiBwYXJhbGxlbCB3b3JrZXIgaW5mbyB3aGVuIHRoZSBsZWFkZXIgYXBw bHkKKyAqIHdvcmtlciBoYXMgdG8gcGFzcyBhbGwgdGhlIHRyYW5zYWN0aW9uJ3MgY2hhbmdlcyB0 byB0aGUgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlci4KKyAqLworc3RhdGljIFRyYW5zQXBwbHlB Y3Rpb24KK2dldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsIFBh cmFsbGVsQXBwbHlXb3JrZXJJbmZvICoqd2luZm8pCit7CisJKndpbmZvID0gTlVMTDsKKworCWlm IChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKKwl7CisJCXJldHVybiBUUkFOU19QQVJBTExF TF9BUFBMWTsKKwl9CisJZWxzZSBpZiAoaW5fcmVtb3RlX3RyYW5zYWN0aW9uKQorCXsKKwkJcmV0 dXJuIFRSQU5TX0xFQURFUl9BUFBMWTsKKwl9CisKKwkvKgorCSAqIENoZWNrIGlmIHdlIGFyZSBw cm9jZXNzaW5nIHRoaXMgdHJhbnNhY3Rpb24gdXNpbmcgYSBwYXJhbGxlbCBhcHBseQorCSAqIHdv cmtlci4KKwkgKi8KKwkqd2luZm8gPSBwYV9maW5kX3dvcmtlcih4aWQpOworCisJaWYgKCEqd2lu Zm8pCisJeworCQlyZXR1cm4gVFJBTlNfTEVBREVSX1NFUklBTElaRTsKKwl9CisJZWxzZSBpZiAo KCp3aW5mbyktPnNlcmlhbGl6ZV9jaGFuZ2VzKQorCXsKKwkJcmV0dXJuIFRSQU5TX0xFQURFUl9Q QVJUSUFMX1NFUklBTElaRTsKKwl9CisJZWxzZQorCXsKKwkJcmV0dXJuIFRSQU5TX0xFQURFUl9T RU5EX1RPX1BBUkFMTEVMOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1 dC9wZ291dHB1dC5jCmluZGV4IDg3NmFkYWIuLjE5YzEwYzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwpAQCAtMTgsNiArMTgsNyBAQAogI2luY2x1ZGUg ImNhdGFsb2cvcGdfcHVibGljYXRpb25fcmVsLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJz Y3JpcHRpb24uaCIKICNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIKKyNpbmNsdWRlICJjb21t YW5kcy9zdWJzY3JpcHRpb25jbWRzLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIK ICNpbmNsdWRlICJmbWdyLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCkBAIC0yOTAs NyArMjkxLDcgQEAgcGFyc2Vfb3V0cHV0X3BhcmFtZXRlcnMoTGlzdCAqb3B0aW9ucywgUEdPdXRw dXREYXRhICpkYXRhKQogCWJvb2wJCW9yaWdpbl9vcHRpb25fZ2l2ZW4gPSBmYWxzZTsKIAogCWRh dGEtPmJpbmFyeSA9IGZhbHNlOwotCWRhdGEtPnN0cmVhbWluZyA9IGZhbHNlOworCWRhdGEtPnN0 cmVhbWluZyA9IExPR0lDQUxSRVBfU1RSRUFNX09GRjsKIAlkYXRhLT5tZXNzYWdlcyA9IGZhbHNl OwogCWRhdGEtPnR3b19waGFzZSA9IGZhbHNlOwogCkBAIC0zNjksNyArMzcwLDcgQEAgcGFyc2Vf b3V0cHV0X3BhcmFtZXRlcnMoTGlzdCAqb3B0aW9ucywgUEdPdXRwdXREYXRhICpkYXRhKQogCQkJ CQkJIGVycm1zZygiY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMiKSkpOwogCQkJc3Ry ZWFtaW5nX2dpdmVuID0gdHJ1ZTsKIAotCQkJZGF0YS0+c3RyZWFtaW5nID0gZGVmR2V0Qm9vbGVh bihkZWZlbCk7CisJCQlkYXRhLT5zdHJlYW1pbmcgPSBkZWZHZXRTdHJlYW1pbmdNb2RlKGRlZmVs KTsKIAkJfQogCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJ0d29fcGhhc2UiKSA9 PSAwKQogCQl7CkBAIC00NjEsMTMgKzQ2MiwyMCBAQCBwZ291dHB1dF9zdGFydHVwKExvZ2ljYWxE ZWNvZGluZ0NvbnRleHQgKmN0eCwgT3V0cHV0UGx1Z2luT3B0aW9ucyAqb3B0LAogCQkgKiB3ZSBv bmx5IGFsbG93IGl0IHdpdGggc3VmZmljaWVudCB2ZXJzaW9uIG9mIHRoZSBwcm90b2NvbCwgYW5k IHdoZW4KIAkJICogdGhlIG91dHB1dCBwbHVnaW4gc3VwcG9ydHMgaXQuCiAJCSAqLwotCQlpZiAo IWRhdGEtPnN0cmVhbWluZykKKwkJaWYgKGRhdGEtPnN0cmVhbWluZyA9PSBMT0dJQ0FMUkVQX1NU UkVBTV9PRkYpCiAJCQljdHgtPnN0cmVhbWluZyA9IGZhbHNlOwotCQllbHNlIGlmIChkYXRhLT5w cm90b2NvbF92ZXJzaW9uIDwgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lPTl9OVU0pCisJ CWVsc2UgaWYgKGRhdGEtPnN0cmVhbWluZyA9PSBMT0dJQ0FMUkVQX1NUUkVBTV9PTiAmJgorCQkJ CSBkYXRhLT5wcm90b2NvbF92ZXJzaW9uIDwgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lP Tl9OVU0pCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURf UEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkJIGVycm1zZygicmVxdWVzdGVkIHByb3RvX3ZlcnNpb249 JWQgZG9lcyBub3Qgc3VwcG9ydCBzdHJlYW1pbmcsIG5lZWQgJWQgb3IgaGlnaGVyIiwKIAkJCQkJ CQlkYXRhLT5wcm90b2NvbF92ZXJzaW9uLCBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9WRVJTSU9O X05VTSkpKTsKKwkJZWxzZSBpZiAoZGF0YS0+c3RyZWFtaW5nID09IExPR0lDQUxSRVBfU1RSRUFN X1BBUkFMTEVMICYmCisJCQkJIGRhdGEtPnByb3RvY29sX3ZlcnNpb24gPCBMT0dJQ0FMUkVQX1BS T1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkgZXJybXNn KCJyZXF1ZXN0ZWQgcHJvdG9fdmVyc2lvbj0lZCBkb2VzIG5vdCBzdXBwb3J0IHBhcmFsbGVsIHN0 cmVhbWluZywgbmVlZCAlZCBvciBoaWdoZXIiLAorCQkJCQkJCWRhdGEtPnByb3RvY29sX3ZlcnNp b24sIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNKSkpOwogCQll bHNlIGlmICghY3R4LT5zdHJlYW1pbmcpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKQEAgLTE4NDEsNiArMTg0OSw4IEBA IHBnb3V0cHV0X3N0cmVhbV9hYm9ydChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4 LAogCQkJCQkgIFhMb2dSZWNQdHIgYWJvcnRfbHNuKQogewogCVJlb3JkZXJCdWZmZXJUWE4gKnRv cHR4bjsKKwlQR091dHB1dERhdGEgKmRhdGEgPSAoUEdPdXRwdXREYXRhICopIGN0eC0+b3V0cHV0 X3BsdWdpbl9wcml2YXRlOworCWJvb2wJCXdyaXRlX2Fib3J0X2luZm8gPSAoZGF0YS0+c3RyZWFt aW5nID09IExPR0lDQUxSRVBfU1RSRUFNX1BBUkFMTEVMKTsKIAogCS8qCiAJICogVGhlIGFib3J0 IHNob3VsZCBoYXBwZW4gb3V0c2lkZSBzdHJlYW1pbmcgYmxvY2ssIGV2ZW4gZm9yIHN0cmVhbWVk CkBAIC0xODU0LDcgKzE4NjQsOSBAQCBwZ291dHB1dF9zdHJlYW1fYWJvcnQoc3RydWN0IExvZ2lj YWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAlBc3NlcnQocmJ0eG5faXNfc3RyZWFtZWQodG9wdHhu KSk7CiAKIAlPdXRwdXRQbHVnaW5QcmVwYXJlV3JpdGUoY3R4LCB0cnVlKTsKLQlsb2dpY2FscmVw X3dyaXRlX3N0cmVhbV9hYm9ydChjdHgtPm91dCwgdG9wdHhuLT54aWQsIHR4bi0+eGlkKTsKKwls b2dpY2FscmVwX3dyaXRlX3N0cmVhbV9hYm9ydChjdHgtPm91dCwgdG9wdHhuLT54aWQsIHR4bi0+ eGlkLCBhYm9ydF9sc24sCisJCQkJCQkJCSAgdHhuLT54YWN0X3RpbWUuYWJvcnRfdGltZSwgd3Jp dGVfYWJvcnRfaW5mbyk7CisKIAlPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRydWUpOwogCiAJY2xl YW51cF9yZWxfc3luY19jYWNoZSh0b3B0eG4tPnhpZCwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvcHJvY3NpZ25hbC5jCmluZGV4IDQzZmJiZGIuLjM5NWIyY2YgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9wcm9jc2lnbmFsLmMKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJjb21tYW5kcy9h c3luYy5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgorI2lu Y2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlv bi93YWxzZW5kZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgog I2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCkBAIC02NTcsNiArNjU4LDkgQEAgcHJvY3NpZ25hbF9z aWd1c3IxX2hhbmRsZXIoU0lHTkFMX0FSR1MpCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lH X0xPR19NRU1PUllfQ09OVEVYVCkpCiAJCUhhbmRsZUxvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQo KTsKIAorCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdF KSkKKwkJSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VJbnRlcnJ1cHQoKTsKKwogCWlmIChDaGVj a1Byb2NTaWduYWwoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9EQVRBQkFTRSkpCiAJCVJlY292 ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9EQVRBQkFTRSk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jCmluZGV4IDIwZGNjYTMuLmVlOWI4OWEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9sbWdyL2xtZ3IuYwpAQCAtMTExNyw2ICsxMTE3LDQ1IEBAIFVubG9ja1NoYXJlZE9iamVj dEZvclNlc3Npb24oT2lkIGNsYXNzaWQsIE9pZCBvYmppZCwgdWludDE2IG9ianN1YmlkLAogCUxv Y2tSZWxlYXNlKCZ0YWcsIGxvY2ttb2RlLCB0cnVlKTsKIH0KIAorLyoKKyAqCQlMb2NrQXBwbHlU cmFuc2FjdGlvbkZvclNlc3Npb24KKyAqCisgKiBPYnRhaW4gYSBzZXNzaW9uLWxldmVsIGxvY2sg b24gYSB0cmFuc2FjdGlvbiBiZWluZyBhcHBsaWVkIG9uIGEgbG9naWNhbAorICogcmVwbGljYXRp b24gc3Vic2NyaWJlci4gU2VlIExvY2tSZWxhdGlvbklkRm9yU2Vzc2lvbiBmb3Igbm90ZXMgYWJv dXQKKyAqIHNlc3Npb24tbGV2ZWwgbG9ja3MuCisgKi8KK3ZvaWQKK0xvY2tBcHBseVRyYW5zYWN0 aW9uRm9yU2Vzc2lvbihPaWQgc3Vib2lkLCBUcmFuc2FjdGlvbklkIHhpZCwgdWludDE2IG9iamlk LAorCQkJCQkJCSAgIExPQ0tNT0RFIGxvY2ttb2RlKQoreworCUxPQ0tUQUcJCXRhZzsKKworCVNF VF9MT0NLVEFHX0FQUExZX1RSQU5TQUNUSU9OKHRhZywKKwkJCQkJCQkJICBNeURhdGFiYXNlSWQs CisJCQkJCQkJCSAgc3Vib2lkLAorCQkJCQkJCQkgIHhpZCwKKwkJCQkJCQkJICBvYmppZCk7CisK Kwkodm9pZCkgTG9ja0FjcXVpcmUoJnRhZywgbG9ja21vZGUsIHRydWUsIGZhbHNlKTsKK30KKwor LyoKKyAqCQlVbmxvY2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lvbgorICovCit2b2lkCitVbmxv Y2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lvbihPaWQgc3Vib2lkLCBUcmFuc2FjdGlvbklkIHhp ZCwgdWludDE2IG9iamlkLAorCQkJCQkJCQkgTE9DS01PREUgbG9ja21vZGUpCit7CisJTE9DS1RB RwkJdGFnOworCisJU0VUX0xPQ0tUQUdfQVBQTFlfVFJBTlNBQ1RJT04odGFnLAorCQkJCQkJCQkg IE15RGF0YWJhc2VJZCwKKwkJCQkJCQkJICBzdWJvaWQsCisJCQkJCQkJCSAgeGlkLAorCQkJCQkJ CQkgIG9iamlkKTsKKworCUxvY2tSZWxlYXNlKCZ0YWcsIGxvY2ttb2RlLCB0cnVlKTsKK30KIAog LyoKICAqIEFwcGVuZCBhIGRlc2NyaXB0aW9uIG9mIGEgbG9ja2FibGUgb2JqZWN0IHRvIGJ1Zi4K QEAgLTEyMDIsNiArMTI0MSwxMyBAQCBEZXNjcmliZUxvY2tUYWcoU3RyaW5nSW5mbyBidWYsIGNv bnN0IExPQ0tUQUcgKnRhZykKIAkJCQkJCQkgdGFnLT5sb2NrdGFnX2ZpZWxkMywKIAkJCQkJCQkg dGFnLT5sb2NrdGFnX2ZpZWxkNCk7CiAJCQlicmVhazsKKwkJY2FzZSBMT0NLVEFHX0FQUExZX1RS QU5TQUNUSU9OOgorCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsCisJCQkJCQkJIF8oInJlbW90ZSB0 cmFuc2FjdGlvbiAldSBvZiBzdWJzY3JpcHRpb24gJXUgb2YgZGF0YWJhc2UgJXUiKSwKKwkJCQkJ CQkgdGFnLT5sb2NrdGFnX2ZpZWxkMywKKwkJCQkJCQkgdGFnLT5sb2NrdGFnX2ZpZWxkMiwKKwkJ CQkJCQkgdGFnLT5sb2NrdGFnX2ZpZWxkMSk7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWFw cGVuZFN0cmluZ0luZm8oYnVmLAogCQkJCQkJCSBfKCJ1bnJlY29nbml6ZWQgbG9ja3RhZyB0eXBl ICVkIiksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFj a2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggMzE0NzllOC4uMjI0YWIyOSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdy ZXMuYwpAQCAtMzM5MSw2ICszMzkxLDkgQEAgUHJvY2Vzc0ludGVycnVwdHModm9pZCkKIAogCWlm IChMb2dNZW1vcnlDb250ZXh0UGVuZGluZykKIAkJUHJvY2Vzc0xvZ01lbW9yeUNvbnRleHRJbnRl cnJ1cHQoKTsKKworCWlmIChQYXJhbGxlbEFwcGx5TWVzc2FnZVBlbmRpbmcpCisJCUhhbmRsZVBh cmFsbGVsQXBwbHlNZXNzYWdlcygpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkv d2FpdF9ldmVudC5jCmluZGV4IGY5NTc0ZTguLjZlNDU5OTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9h Y3Rpdml0eS93YWl0X2V2ZW50LmMKQEAgLTIzMCw2ICsyMzAsOSBAQCBwZ3N0YXRfZ2V0X3dhaXRf YWN0aXZpdHkoV2FpdEV2ZW50QWN0aXZpdHkgdykKIAkJY2FzZSBXQUlUX0VWRU5UX0xPR0lDQUxf TEFVTkNIRVJfTUFJTjoKIAkJCWV2ZW50X25hbWUgPSAiTG9naWNhbExhdW5jaGVyTWFpbiI7CiAJ CQlicmVhazsKKwkJY2FzZSBXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfTUFJTjoK KwkJCWV2ZW50X25hbWUgPSAiTG9naWNhbFBhcmFsbGVsQXBwbHlNYWluIjsKKwkJCWJyZWFrOwog CQljYXNlIFdBSVRfRVZFTlRfUkVDT1ZFUllfV0FMX1NUUkVBTToKIAkJCWV2ZW50X25hbWUgPSAi UmVjb3ZlcnlXYWxTdHJlYW0iOwogCQkJYnJlYWs7CkBAIC0zODgsNiArMzkxLDkgQEAgcGdzdGF0 X2dldF93YWl0X2lwYyhXYWl0RXZlbnRJUEMgdykKIAkJY2FzZSBXQUlUX0VWRU5UX0hBU0hfR1JP V19CVUNLRVRTX1JFSU5TRVJUOgogCQkJZXZlbnRfbmFtZSA9ICJIYXNoR3Jvd0J1Y2tldHNSZWlu c2VydCI7CiAJCQlicmVhazsKKwkJY2FzZSBXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQ TFlfU1RBVEVfQ0hBTkdFOgorCQkJZXZlbnRfbmFtZSA9ICJMb2dpY2FsUGFyYWxsZWxBcHBseVN0 YXRlQ2hhbmdlIjsKKwkJCWJyZWFrOwogCQljYXNlIFdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX0RB VEE6CiAJCQlldmVudF9uYW1lID0gIkxvZ2ljYWxTeW5jRGF0YSI7CiAJCQlicmVhazsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9sb2NrZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9sb2NrZnVuY3MuYwppbmRleCAzY2NlNGJkLi5jOGFhYzA2IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2xvY2tmdW5jcy5jCkBAIC0zNywxMCArMzcsMTEgQEAgY29uc3QgY2hhciAqY29uc3QgTG9j a1RhZ1R5cGVOYW1lc1tdID0gewogCSJzcGVjdG9rZW4iLAogCSJvYmplY3QiLAogCSJ1c2VybG9j ayIsCi0JImFkdmlzb3J5IgorCSJhZHZpc29yeSIsCisJImFwcGx5dHJhbnNhY3Rpb24iCiB9Owog Ci1TdGF0aWNBc3NlcnREZWNsKGxlbmd0aG9mKExvY2tUYWdUeXBlTmFtZXMpID09IChMT0NLVEFH X0FEVklTT1JZICsgMSksCitTdGF0aWNBc3NlcnREZWNsKGxlbmd0aG9mKExvY2tUYWdUeXBlTmFt ZXMpID09IChMT0NLVEFHX0xBU1RfVFlQRSArIDEpLAogCQkJCSAiYXJyYXkgbGVuZ3RoIG1pc21h dGNoIik7CiAKIC8qIFRoaXMgbXVzdCBtYXRjaCBlbnVtIFByZWRpY2F0ZUxvY2tUYXJnZXRUeXBl IChwcmVkaWNhdGVfaW50ZXJuYWxzLmgpICovCkBAIC0zMTIsNiArMzEzLDE3IEBAIHBnX2xvY2tf c3RhdHVzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJbnVsbHNbOF0gPSB0cnVlOwogCQkJCW51bGxz WzldID0gdHJ1ZTsKIAkJCQlicmVhazsKKwkJCWNhc2UgTE9DS1RBR19BUFBMWV9UUkFOU0FDVElP TjoKKwkJCQl2YWx1ZXNbMV0gPSBPYmplY3RJZEdldERhdHVtKGluc3RhbmNlLT5sb2NrdGFnLmxv Y2t0YWdfZmllbGQxKTsKKwkJCQl2YWx1ZXNbOF0gPSBPYmplY3RJZEdldERhdHVtKGluc3RhbmNl LT5sb2NrdGFnLmxvY2t0YWdfZmllbGQyKTsKKwkJCQl2YWx1ZXNbNl0gPSBPYmplY3RJZEdldERh dHVtKGluc3RhbmNlLT5sb2NrdGFnLmxvY2t0YWdfZmllbGQzKTsKKwkJCQl2YWx1ZXNbOV0gPSBJ bnQxNkdldERhdHVtKGluc3RhbmNlLT5sb2NrdGFnLmxvY2t0YWdfZmllbGQ0KTsKKwkJCQludWxs c1syXSA9IHRydWU7CisJCQkJbnVsbHNbM10gPSB0cnVlOworCQkJCW51bGxzWzRdID0gdHJ1ZTsK KwkJCQludWxsc1s1XSA9IHRydWU7CisJCQkJbnVsbHNbN10gPSB0cnVlOworCQkJCWJyZWFrOwog CQkJY2FzZSBMT0NLVEFHX09CSkVDVDoKIAkJCWNhc2UgTE9DS1RBR19VU0VSTE9DSzoKIAkJCWNh c2UgTE9DS1RBR19BRFZJU09SWToKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXgg NjgzMjhiMS4uOTI1NDViNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNf dGFibGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTMw MDMsNiArMzAwMywxOCBAQCBzdHJ1Y3QgY29uZmlnX2ludCBDb25maWd1cmVOYW1lc0ludFtdID0K IAl9LAogCiAJeworCQl7Im1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRp b24iLAorCQkJUEdDX1NJR0hVUCwKKwkJCVJFUExJQ0FUSU9OX1NVQlNDUklCRVJTLAorCQkJZ2V0 dGV4dF9ub29wKCJNYXhpbXVtIG51bWJlciBvZiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIHBlciBz dWJzY3JpcHRpb24uIiksCisJCQlOVUxMLAorCQl9LAorCQkmbWF4X3BhcmFsbGVsX2FwcGx5X3dv cmtlcnNfcGVyX3N1YnNjcmlwdGlvbiwKKwkJMiwgMCwgTUFYX1BBUkFMTEVMX1dPUktFUl9MSU1J VCwKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCisKKwl7CiAJCXsibG9nX3JvdGF0aW9uX2FnZSIs IFBHQ19TSUdIVVAsIExPR0dJTkdfV0hFUkUsCiAJCQlnZXR0ZXh0X25vb3AoIlNldHMgdGhlIGFt b3VudCBvZiB0aW1lIHRvIHdhaXQgYmVmb3JlIGZvcmNpbmcgIgogCQkJCQkJICJsb2cgZmlsZSBy b3RhdGlvbi4iKSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNx bC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNh bXBsZQppbmRleCA1YWZkZWIwLi5jMmFkYTkyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCkBAIC0zNTksNiArMzU5LDcgQEAKICNtYXhfbG9naWNh bF9yZXBsaWNhdGlvbl93b3JrZXJzID0gNAkjIHRha2VuIGZyb20gbWF4X3dvcmtlcl9wcm9jZXNz ZXMKIAkJCQkJIyAoY2hhbmdlIHJlcXVpcmVzIHJlc3RhcnQpCiAjbWF4X3N5bmNfd29ya2Vyc19w ZXJfc3Vic2NyaXB0aW9uID0gMgkjIHRha2VuIGZyb20gbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25f d29ya2VycworI21heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAy CSMgdGFrZW4gZnJvbSBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzCiAKIAogIy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBi L3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggMzA3MThkZC4uNWU4MDBkYyAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5jCkBAIC00NTMzLDcgKzQ1MzMsNyBAQCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZv dXQpCiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTQwMDAwKQogCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxdWVyeSwgIiBzLnN1YnN0cmVhbSxcbiIpOwogCWVsc2UKLQkJYXBwZW5kUFFFeHBC dWZmZXJTdHIocXVlcnksICIgZmFsc2UgQVMgc3Vic3RyZWFtLFxuIik7CisJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKHF1ZXJ5LCAiICdmJyBBUyBzdWJzdHJlYW0sXG4iKTsKIAogCWlmIChmb3V0LT5y ZW1vdGVWZXJzaW9uID49IDE1MDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCkBA IC00NjcwLDggKzQ2NzAsMTAgQEAgZHVtcFN1YnNjcmlwdGlvbihBcmNoaXZlICpmb3V0LCBjb25z dCBTdWJzY3JpcHRpb25JbmZvICpzdWJpbmZvKQogCWlmIChzdHJjbXAoc3ViaW5mby0+c3ViYmlu YXJ5LCAidCIpID09IDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBiaW5hcnkg PSB0cnVlIik7CiAKLQlpZiAoc3RyY21wKHN1YmluZm8tPnN1YnN0cmVhbSwgImYiKSAhPSAwKQor CWlmIChzdHJjbXAoc3ViaW5mby0+c3Vic3RyZWFtLCAidCIpID09IDApCiAJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKHF1ZXJ5LCAiLCBzdHJlYW1pbmcgPSBvbiIpOworCWVsc2UgaWYgKHN0cmNtcChz dWJpbmZvLT5zdWJzdHJlYW0sICJwIikgPT0gMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVl cnksICIsIHN0cmVhbWluZyA9IHBhcmFsbGVsIik7CiAKIAlpZiAoc3RyY21wKHN1YmluZm8tPnN1 YnR3b3BoYXNlc3RhdGUsIHR3b19waGFzZV9kaXNhYmxlZCkgIT0gMCkKIAkJYXBwZW5kUFFFeHBC dWZmZXJTdHIocXVlcnksICIsIHR3b19waGFzZSA9IG9uIik7CmRpZmYgLS1naXQgYS9zcmMvYmlu L3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IDUyM2ZhYjYu LjY2NTVmMDcgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9i aW4vcHNxbC9kZXNjcmliZS5jCkBAIC02NTAyLDExICs2NTAyLDI0IEBAIGRlc2NyaWJlU3Vic2Ny aXB0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UpCiAJewogCQkvKiBCaW5h cnkgbW9kZSBhbmQgc3RyZWFtaW5nIGFyZSBvbmx5IHN1cHBvcnRlZCBpbiB2MTQgYW5kIGhpZ2hl ciAqLwogCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNDAwMDApCisJCXsKIAkJCWFwcGVuZFBRRXhw QnVmZmVyKCZidWYsCi0JCQkJCQkJICAiLCBzdWJiaW5hcnkgQVMgXCIlc1wiXG4iCi0JCQkJCQkJ ICAiLCBzdWJzdHJlYW0gQVMgXCIlc1wiXG4iLAotCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJCaW5h cnkiKSwKLQkJCQkJCQkgIGdldHRleHRfbm9vcCgiU3RyZWFtaW5nIikpOworCQkJCQkJCSAgIiwg c3ViYmluYXJ5IEFTIFwiJXNcIlxuIiwKKwkJCQkJCQkgIGdldHRleHRfbm9vcCgiQmluYXJ5Iikp OworCisJCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNjAwMDApCisJCQkJYXBwZW5kUFFFeHBCdWZm ZXIoJmJ1ZiwKKwkJCQkJCQkJICAiLCAoQ0FTRSBzdWJzdHJlYW1cbiIKKwkJCQkJCQkJICAiICAg IFdIRU4gJ2YnIFRIRU4gJ29mZidcbiIKKwkJCQkJCQkJICAiICAgIFdIRU4gJ3QnIFRIRU4gJ29u J1xuIgorCQkJCQkJCQkgICIgICAgV0hFTiAncCcgVEhFTiAncGFyYWxsZWwnXG4iCisJCQkJCQkJ CSAgIiAgIEVORCkgQVMgXCIlc1wiXG4iLAorCQkJCQkJCQkgIGdldHRleHRfbm9vcCgiU3RyZWFt aW5nIikpOworCQkJZWxzZQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJCSAg Iiwgc3Vic3RyZWFtIEFTIFwiJXNcIlxuIiwKKwkJCQkJCQkJICBnZXR0ZXh0X25vb3AoIlN0cmVh bWluZyIpKTsKKwkJfQogCiAJCS8qIFR3b19waGFzZSBhbmQgZGlzYWJsZV9vbl9lcnJvciBhcmUg b25seSBzdXBwb3J0ZWQgaW4gdjE1IGFuZCBoaWdoZXIgKi8KIAkJaWYgKHBzZXQuc3ZlcnNpb24g Pj0gMTUwMDAwKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRp b24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKaW5kZXggZWI0ZWVi NC4uYjBmMmExNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRp b24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCkBAIC04MCw3 ICs4MCw4IEBAIENBVEFMT0cocGdfc3Vic2NyaXB0aW9uLDYxMDAsU3Vic2NyaXB0aW9uUmVsYXRp b25JZCkgQktJX1NIQVJFRF9SRUxBVElPTiBCS0lfUk9XCiAJYm9vbAkJc3ViYmluYXJ5OwkJLyog VHJ1ZSBpZiB0aGUgc3Vic2NyaXB0aW9uIHdhbnRzIHRoZQogCQkJCQkJCQkgKiBwdWJsaXNoZXIg dG8gc2VuZCBkYXRhIGluIGJpbmFyeSAqLwogCi0JYm9vbAkJc3Vic3RyZWFtOwkJLyogU3RyZWFt IGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4gKi8KKwljaGFyCQlzdWJzdHJlYW07CQkvKiBTdHJl YW0gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLiBTZWUKKwkJCQkJCQkJICogTE9HSUNBTFJFUF9T VFJFQU1feHh4IGNvbnN0YW50cy4gKi8KIAogCWNoYXIJCXN1YnR3b3BoYXNlc3RhdGU7CS8qIFN0 cmVhbSB0d28tcGhhc2UgdHJhbnNhY3Rpb25zICovCiAKQEAgLTEyNCw3ICsxMjUsOCBAQCB0eXBl ZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAlib29sCQllbmFibGVkOwkJLyogSW5kaWNhdGVzIGlm IHRoZSBzdWJzY3JpcHRpb24gaXMgZW5hYmxlZCAqLwogCWJvb2wJCWJpbmFyeTsJCQkvKiBJbmRp Y2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiB3YW50cyBkYXRhIGluCiAJCQkJCQkJCSAqIGJpbmFy eSBmb3JtYXQgKi8KLQlib29sCQlzdHJlYW07CQkJLyogQWxsb3cgc3RyZWFtaW5nIGluLXByb2dy ZXNzIHRyYW5zYWN0aW9ucy4gKi8KKwljaGFyCQlzdHJlYW07CQkJLyogQWxsb3cgc3RyZWFtaW5n IGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4KKwkJCQkJCQkJICogU2VlIExPR0lDQUxSRVBfU1RS RUFNX3h4eCBjb25zdGFudHMuICovCiAJY2hhcgkJdHdvcGhhc2VzdGF0ZTsJLyogQWxsb3cgc3Ry ZWFtaW5nIHR3by1waGFzZSB0cmFuc2FjdGlvbnMgKi8KIAlib29sCQlkaXNhYmxlb25lcnI7CS8q IEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0aW9uIHNob3VsZCBiZQogCQkJCQkJCQkgKiBhdXRv bWF0aWNhbGx5IGRpc2FibGVkIGlmIGEgd29ya2VyIGVycm9yCkBAIC0xMzcsNiArMTM5LDIxIEBA IHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlvbgogCQkJCQkJCQkgKiBzcGVjaWZpZWQgb3JpZ2lu ICovCiB9IFN1YnNjcmlwdGlvbjsKIAorLyogRGlzYWxsb3cgc3RyZWFtaW5nIGluLXByb2dyZXNz IHRyYW5zYWN0aW9ucy4gKi8KKyNkZWZpbmUgTE9HSUNBTFJFUF9TVFJFQU1fT0ZGICdmJworCisv KgorICogU3RyZWFtaW5nIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyBhcmUgd3JpdHRlbiB0byBh IHRlbXBvcmFyeSBmaWxlIGFuZAorICogYXBwbGllZCBvbmx5IGFmdGVyIHRoZSB0cmFuc2FjdGlv biBpcyBjb21taXR0ZWQgb24gdXBzdHJlYW0uCisgKi8KKyNkZWZpbmUgTE9HSUNBTFJFUF9TVFJF QU1fT04gJ3QnCisKKy8qCisgKiBTdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIGFy ZSBhcHBsaWVkIGltbWVkaWF0ZWx5IHZpYSBhIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXIuCisg Ki8KKyNkZWZpbmUgTE9HSUNBTFJFUF9TVFJFQU1fUEFSQUxMRUwgJ3AnCisKIGV4dGVybiBTdWJz Y3JpcHRpb24gKkdldFN1YnNjcmlwdGlvbihPaWQgc3ViaWQsIGJvb2wgbWlzc2luZ19vayk7CiBl eHRlcm4gdm9pZCBGcmVlU3Vic2NyaXB0aW9uKFN1YnNjcmlwdGlvbiAqc3ViKTsKIGV4dGVybiB2 b2lkIERpc2FibGVTdWJzY3JpcHRpb24oT2lkIHN1YmlkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3N1 YnNjcmlwdGlvbmNtZHMuaAppbmRleCBmNTlhYWY0Li4yMTRkYzZjIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmgKKysrIGIvc3JjL2luY2x1ZGUvY29t bWFuZHMvc3Vic2NyaXB0aW9uY21kcy5oCkBAIC0yNiw0ICsyNiw2IEBAIGV4dGVybiB2b2lkIERy b3BTdWJzY3JpcHRpb24oRHJvcFN1YnNjcmlwdGlvblN0bXQgKnN0bXQsIGJvb2wgaXNUb3BMZXZl bCk7CiBleHRlcm4gT2JqZWN0QWRkcmVzcyBBbHRlclN1YnNjcmlwdGlvbk93bmVyKGNvbnN0IGNo YXIgKm5hbWUsIE9pZCBuZXdPd25lcklkKTsKIGV4dGVybiB2b2lkIEFsdGVyU3Vic2NyaXB0aW9u T3duZXJfb2lkKE9pZCBzdWJpZCwgT2lkIG5ld093bmVySWQpOwogCitleHRlcm4gY2hhciBkZWZH ZXRTdHJlYW1pbmdNb2RlKERlZkVsZW0gKmRlZik7CisKICNlbmRpZgkJCQkJCQkvKiBTVUJTQ1JJ UFRJT05DTURTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2lj YWxsYXVuY2hlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgK aW5kZXggZTE2NjFiNi4uYzg1NTkzYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vbG9naWNhbGxhdW5jaGVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNh bGxhdW5jaGVyLmgKQEAgLTE0LDYgKzE0LDcgQEAKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBt YXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBt YXhfc3luY193b3JrZXJzX3Blcl9zdWJzY3JpcHRpb247CitleHRlcm4gUEdETExJTVBPUlQgaW50 IG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb247CiAKIGV4dGVybiB2 b2lkIEFwcGx5TGF1bmNoZXJSZWdpc3Rlcih2b2lkKTsKIGV4dGVybiB2b2lkIEFwcGx5TGF1bmNo ZXJNYWluKERhdHVtIG1haW5fYXJnKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL2xvZ2ljYWxwcm90by5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3Rv LmgKaW5kZXggZDY0MjY0My4uMGVhMmRmNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vbG9naWNhbHByb3RvLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNh bHByb3RvLmgKQEAgLTMyLDEyICszMiwxNyBAQAogICoKICAqIExPR0lDQUxSRVBfUFJPVE9fVFdP UEhBU0VfVkVSU0lPTl9OVU0gaXMgdGhlIG1pbmltdW0gcHJvdG9jb2wgdmVyc2lvbiB3aXRoCiAg KiBzdXBwb3J0IGZvciB0d28tcGhhc2UgY29tbWl0IGRlY29kaW5nIChhdCBwcmVwYXJlIHRpbWUp LiBJbnRyb2R1Y2VkIGluIFBHMTUuCisgKgorICogTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFS QUxMRUxfVkVSU0lPTl9OVU0gaXMgdGhlIG1pbmltdW0gcHJvdG9jb2wgdmVyc2lvbgorICogd2hl cmUgd2Ugc3VwcG9ydCBhcHBseWluZyBsYXJnZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIGluIHBh cmFsbGVsLgorICogSW50cm9kdWNlZCBpbiBQRzE2LgogICovCiAjZGVmaW5lIExPR0lDQUxSRVBf UFJPVE9fTUlOX1ZFUlNJT05fTlVNIDEKICNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19WRVJTSU9O X05VTSAxCiAjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1ZFUlNJT05fTlVNIDIKICNk ZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19UV09QSEFTRV9WRVJTSU9OX05VTSAzCi0jZGVmaW5lIExP R0lDQUxSRVBfUFJPVE9fTUFYX1ZFUlNJT05fTlVNIExPR0lDQUxSRVBfUFJPVE9fVFdPUEhBU0Vf VkVSU0lPTl9OVU0KKyNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVS U0lPTl9OVU0gNAorI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX01BWF9WRVJTSU9OX05VTSBMT0dJ Q0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTQogCiAvKgogICogTG9naWNh bCBtZXNzYWdlIHR5cGVzCkBAIC0xNzUsNiArMTgwLDE3IEBAIHR5cGVkZWYgc3RydWN0IExvZ2lj YWxSZXBSb2xsYmFja1ByZXBhcmVkVHhuRGF0YQogCWNoYXIJCWdpZFtHSURTSVpFXTsKIH0gTG9n aWNhbFJlcFJvbGxiYWNrUHJlcGFyZWRUeG5EYXRhOwogCisvKgorICogVHJhbnNhY3Rpb24gcHJv dG9jb2wgaW5mb3JtYXRpb24gZm9yIHN0cmVhbSBhYm9ydC4KKyAqLwordHlwZWRlZiBzdHJ1Y3Qg TG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YQoreworCVRyYW5zYWN0aW9uSWQgeGlkOworCVRyYW5z YWN0aW9uSWQgc3VieGlkOworCVhMb2dSZWNQdHIJYWJvcnRfbHNuOworCVRpbWVzdGFtcFR6IGFi b3J0X3RpbWU7Cit9IExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGE7CisKIGV4dGVybiB2b2lkIGxv Z2ljYWxyZXBfd3JpdGVfYmVnaW4oU3RyaW5nSW5mbyBvdXQsIFJlb3JkZXJCdWZmZXJUWE4gKnR4 bik7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlYWRfYmVnaW4oU3RyaW5nSW5mbyBpbiwKIAkJ CQkJCQkJICBMb2dpY2FsUmVwQmVnaW5EYXRhICpiZWdpbl9kYXRhKTsKQEAgLTI0Niw5ICsyNjIs MTMgQEAgZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fY29tbWl0KFN0cmluZ0lu Zm8gb3V0LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4KIGV4dGVybiBUcmFuc2FjdGlvbklkIGxvZ2lj YWxyZXBfcmVhZF9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gaW4sCiAJCQkJCQkJCQkJCQkgICBM b2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEpOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJl cF93cml0ZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLAot CQkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBzdWJ4aWQpOwotZXh0ZXJuIHZvaWQgbG9naWNhbHJl cF9yZWFkX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIGluLCBUcmFuc2FjdGlvbklkICp4aWQsCi0J CQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnN1YnhpZCk7CisJCQkJCQkJCQkJICBUcmFuc2FjdGlv bklkIHN1YnhpZCwKKwkJCQkJCQkJCQkgIFhMb2dSZWNQdHIgYWJvcnRfbHNuLAorCQkJCQkJCQkJ CSAgVGltZXN0YW1wVHogYWJvcnRfdGltZSwKKwkJCQkJCQkJCQkgIGJvb2wgd3JpdGVfYWJvcnRf aW5mbyk7CitleHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KFN0cmluZ0lu Zm8gaW4sCisJCQkJCQkJCQkJIExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEgKmFib3J0X2RhdGEs CisJCQkJCQkJCQkJIGJvb2wgcmVhZF9hYm9ydF9pbmZvKTsKIGV4dGVybiBjaGFyICpsb2dpY2Fs cmVwX21lc3NhZ2VfdHlwZShMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24pOwogCiAjZW5kaWYJCQkJ CQkJLyogTE9HSUNBTF9QUk9UT19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9sb2dpY2Fsd29ya2VyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29y a2VyLmgKaW5kZXggZTQ4NDY2Mi4uMzk1ODhkYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vbG9naWNhbHdvcmtlci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xv Z2ljYWx3b3JrZXIuaApAQCAtMTIsOSArMTIsMTggQEAKICNpZm5kZWYgTE9HSUNBTFdPUktFUl9I CiAjZGVmaW5lIExPR0lDQUxXT1JLRVJfSAogCisjaW5jbHVkZSA8c2lnbmFsLmg+CisKK2V4dGVy biBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgUGFyYWxsZWxBcHBseU1lc3NhZ2VQ ZW5kaW5nOworCiBleHRlcm4gdm9pZCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpOwor ZXh0ZXJuIHZvaWQgUGFyYWxsZWxBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpOwogCiBl eHRlcm4gYm9vbCBJc0xvZ2ljYWxXb3JrZXIodm9pZCk7CitleHRlcm4gYm9vbCBJc0xvZ2ljYWxQ YXJhbGxlbEFwcGx5V29ya2VyKHZvaWQpOworCitleHRlcm4gdm9pZCBIYW5kbGVQYXJhbGxlbEFw cGx5TWVzc2FnZUludGVycnVwdCh2b2lkKTsKK2V4dGVybiB2b2lkIEhhbmRsZVBhcmFsbGVsQXBw bHlNZXNzYWdlcyh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgTG9naWNhbFJlcFdvcmtlcnNXYWtldXBB dENvbW1pdChPaWQgc3ViaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9vcmlnaW4uaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oCmluZGV4IDM3ODVm OTUuLjUzMTM1MTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5o CisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oCkBAIC01Myw3ICs1Myw3IEBA IGV4dGVybiBYTG9nUmVjUHRyIHJlcGxvcmlnaW5fZ2V0X3Byb2dyZXNzKFJlcE9yaWdpbklkIG5v ZGUsIGJvb2wgZmx1c2gpOwogCiBleHRlcm4gdm9pZCByZXBsb3JpZ2luX3Nlc3Npb25fYWR2YW5j ZShYTG9nUmVjUHRyIHJlbW90ZV9jb21taXQsCiAJCQkJCQkJCQkgICBYTG9nUmVjUHRyIGxvY2Fs X2NvbW1pdCk7Ci1leHRlcm4gdm9pZCByZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2lu SWQgbm9kZSk7CitleHRlcm4gdm9pZCByZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2lu SWQgbm9kZSwgaW50IGFjcXVpcmVkX2J5KTsKIGV4dGVybiB2b2lkIHJlcGxvcmlnaW5fc2Vzc2lv bl9yZXNldCh2b2lkKTsKIGV4dGVybiBYTG9nUmVjUHRyIHJlcGxvcmlnaW5fc2Vzc2lvbl9nZXRf cHJvZ3Jlc3MoYm9vbCBmbHVzaCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL3Bnb3V0cHV0LmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5oCmluZGV4 IDY2MzMxMWEuLmI0YTgwMTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bn b3V0cHV0LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcGdvdXRwdXQuaApAQCAtMjYs NyArMjYsNyBAQCB0eXBlZGVmIHN0cnVjdCBQR091dHB1dERhdGEKIAlMaXN0CSAgICpwdWJsaWNh dGlvbl9uYW1lczsKIAlMaXN0CSAgICpwdWJsaWNhdGlvbnM7CiAJYm9vbAkJYmluYXJ5OwotCWJv b2wJCXN0cmVhbWluZzsKKwljaGFyCQlzdHJlYW1pbmc7CiAJYm9vbAkJbWVzc2FnZXM7CiAJYm9v bAkJdHdvX3BoYXNlOwogCWNoYXIJICAgKm9yaWdpbjsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jl b3JkZXJidWZmZXIuaAppbmRleCBhNDJhMTIwLi5mNmM0ZGQ3IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vcmVvcmRlcmJ1ZmZlci5oCkBAIC0zMTYsNiArMzE2LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg UmVvcmRlckJ1ZmZlclRYTgogCXsKIAkJVGltZXN0YW1wVHogY29tbWl0X3RpbWU7CiAJCVRpbWVz dGFtcFR6IHByZXBhcmVfdGltZTsKKwkJVGltZXN0YW1wVHogYWJvcnRfdGltZTsKIAl9CQkJeGFj dF90aW1lOwogCiAJLyoKQEAgLTY3OCw3ICs2NzksOCBAQCBleHRlcm4gdm9pZCBSZW9yZGVyQnVm ZmVyQXNzaWduQ2hpbGQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogZXh0 ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckNvbW1pdENoaWxkKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFu c2FjdGlvbklkIHhpZCwKIAkJCQkJCQkJCSBUcmFuc2FjdGlvbklkIHN1YnhpZCwgWExvZ1JlY1B0 ciBjb21taXRfbHNuLAogCQkJCQkJCQkJIFhMb2dSZWNQdHIgZW5kX2xzbik7Ci1leHRlcm4gdm9p ZCBSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlk LCBYTG9nUmVjUHRyIGxzbik7CitleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRl ckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkJCQkg ICBUaW1lc3RhbXBUeiBhYm9ydF90aW1lKTsKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJBYm9y dE9sZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCBvbGRlc3RSdW5uaW5nWGlkKTsK IGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJGb3JnZXQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5z YWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbik7CiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVy SW52YWxpZGF0ZShSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQ dHIgbHNuKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVy LmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oCmluZGV4IGZkNjEzNjgu LmRlY2ZmZTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVy LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaApAQCAtMTgyLDcg KzE4Miw3IEBAIHR5cGVkZWYgc3RydWN0CiAJCQl1aW50MzIJCXByb3RvX3ZlcnNpb247CS8qIExv Z2ljYWwgcHJvdG9jb2wgdmVyc2lvbiAqLwogCQkJTGlzdAkgICAqcHVibGljYXRpb25fbmFtZXM7 CS8qIFN0cmluZyBsaXN0IG9mIHB1YmxpY2F0aW9ucyAqLwogCQkJYm9vbAkJYmluYXJ5OyAvKiBB c2sgcHVibGlzaGVyIHRvIHVzZSBiaW5hcnkgKi8KLQkJCWJvb2wJCXN0cmVhbWluZzsJLyogU3Ry ZWFtaW5nIG9mIGxhcmdlIHRyYW5zYWN0aW9ucyAqLworCQkJY2hhcgkgICAqc3RyZWFtaW5nX3N0 cjsJLyogU3RyZWFtaW5nIG9mIGxhcmdlIHRyYW5zYWN0aW9ucyAqLwogCQkJYm9vbAkJdHdvcGhh c2U7CS8qIFN0cmVhbWluZyBvZiB0d28tcGhhc2UgdHJhbnNhY3Rpb25zIGF0CiAJCQkJCQkJCQkg KiBwcmVwYXJlIHRpbWUgKi8KIAkJCWNoYXIJICAgKm9yaWdpbjsgLyogT25seSBwdWJsaXNoIGRh dGEgb3JpZ2luYXRpbmcgZnJvbSB0aGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2lu dGVybmFsLmgKaW5kZXggMmEzZWM1Yy4uZGI4OTFlZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vd29ya2VyX2ludGVybmFsLmgKQEAgLTE3LDggKzE3LDEzIEBACiAjaW5jbHVkZSAiYWNjZXNz L3hsb2dkZWZzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCIKICNpbmNs dWRlICJkYXRhdHlwZS90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNs dWRlICJyZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCIKKyNpbmNsdWRlICJzdG9yYWdlL2J1 ZmZpbGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZpbGVzZXQuaCIKICNpbmNsdWRlICJzdG9yYWdl L2xvY2suaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NobV9tcS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uv c2htX3RvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3Bpbi5oIgogCiAKQEAgLTUzLDEzICs1OCwy NCBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwV29ya2VyCiAKIAkvKgogCSAqIFVzZWQgdG8g Y3JlYXRlIHRoZSBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGZpbGVzIGZvciB0aGUgc3RyZWFtaW5nCi0J ICogdHJhbnNhY3Rpb25zLiAgVXBvbiB0aGUgYXJyaXZhbCBvZiB0aGUgZmlyc3Qgc3RyZWFtaW5n IHRyYW5zYWN0aW9uLCB0aGUKLQkgKiBmaWxlc2V0IHdpbGwgYmUgaW5pdGlhbGl6ZWQsIGFuZCBp dCB3aWxsIGJlIGRlbGV0ZWQgd2hlbiB0aGUgd29ya2VyCi0JICogZXhpdHMuICBVbmRlciB0aGlz LCBzZXBhcmF0ZSBidWZmaWxlcyB3b3VsZCBiZSBjcmVhdGVkIGZvciBlYWNoCi0JICogdHJhbnNh Y3Rpb24gd2hpY2ggd2lsbCBiZSBkZWxldGVkIGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBpcyBmaW5p c2hlZC4KKwkgKiB0cmFuc2FjdGlvbnMuICBVcG9uIHRoZSBhcnJpdmFsIG9mIHRoZSBmaXJzdCBz dHJlYW1pbmcgdHJhbnNhY3Rpb24gb3IKKwkgKiB3aGVuIHRoZSBmaXJzdC10aW1lIGxlYWRlciBh cHBseSB3b3JrZXIgdGltZXMgb3V0IHdoaWxlIHNlbmRpbmcgY2hhbmdlcworCSAqIHRvIHRoZSBw YXJhbGxlbCBhcHBseSB3b3JrZXIsIHRoZSBmaWxlc2V0IHdpbGwgYmUgaW5pdGlhbGl6ZWQsIGFu ZCBpdAorCSAqIHdpbGwgYmUgZGVsZXRlZCB3aGVuIHRoZSB3b3JrZXIgZXhpdHMuICBVbmRlciB0 aGlzLCBzZXBhcmF0ZSBidWZmaWxlcworCSAqIHdvdWxkIGJlIGNyZWF0ZWQgZm9yIGVhY2ggdHJh bnNhY3Rpb24gd2hpY2ggd2lsbCBiZSBkZWxldGVkIGFmdGVyIHRoZQorCSAqIHRyYW5zYWN0aW9u IGlzIGZpbmlzaGVkLgogCSAqLwogCUZpbGVTZXQgICAgKnN0cmVhbV9maWxlc2V0OwogCisJLyoK KwkgKiBQSUQgb2YgbGVhZGVyIGFwcGx5IHdvcmtlciBpZiB0aGlzIHNsb3QgaXMgdXNlZCBmb3Ig YSBwYXJhbGxlbCBhcHBseQorCSAqIHdvcmtlciwgSW52YWxpZFBpZCBvdGhlcndpc2UuCisJICov CisJcGlkX3QJCWFwcGx5X2xlYWRlcl9waWQ7CisKKwkvKiBJbmRpY2F0ZXMgd2hldGhlciBhcHBs eSBjYW4gYmUgcGVyZm9ybWVkIGluIHBhcmFsbGVsLiAqLworCWJvb2wJCXBhcmFsbGVsX2FwcGx5 OworCiAJLyogU3RhdHMuICovCiAJWExvZ1JlY1B0cglsYXN0X2xzbjsKIAlUaW1lc3RhbXBUeiBs YXN0X3NlbmRfdGltZTsKQEAgLTY4LDkgKzg0LDEzOCBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2Fs UmVwV29ya2VyCiAJVGltZXN0YW1wVHogcmVwbHlfdGltZTsKIH0gTG9naWNhbFJlcFdvcmtlcjsK IAorLyoKKyAqIFN0YXRlIG9mIHRoZSB0cmFuc2FjdGlvbiBpbiBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIuCisgKgorICogVGhlIGVudW0gdmFsdWVzIG11c3QgaGF2ZSB0aGUgc2FtZSBvcmRlciBhcyB0 aGUgdHJhbnNhY3Rpb24gc3RhdGUKKyAqIHRyYW5zaXRpb25zLgorICovCit0eXBlZGVmIGVudW0g UGFyYWxsZWxUcmFuc1N0YXRlCit7CisJUEFSQUxMRUxfVFJBTlNfVU5LTk9XTiwKKwlQQVJBTExF TF9UUkFOU19TVEFSVEVELAorCVBBUkFMTEVMX1RSQU5TX0ZJTklTSEVECit9IFBhcmFsbGVsVHJh bnNTdGF0ZTsKKworLyoKKyAqIFN0YXRlIG9mIGZpbGVzZXQgdXNlZCB0byBjb21tdW5pY2F0ZSBj aGFuZ2VzIGZyb20gbGVhZGVyIHRvIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXIuCisgKgorICog RlNfRU1QVFkgaW5kaWNhdGVzIGFuIGluaXRpYWwgc3RhdGUgd2hlcmUgdGhlIGxlYWRlciBkb2Vz bid0IG5lZWQgdG8gdXNlCisgKiB0aGUgZmlsZSB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBwYXJh bGxlbCBhcHBseSB3b3JrZXIuCisgKgorICogRlNfU0VSSUFMSVpFX0lOX1BST0dSRVNTIGluZGlj YXRlcyB0aGF0IHRoZSBsZWFkZXIgaXMgc2VyaWFsaXppbmcgY2hhbmdlcworICogdG8gdGhlIGZp bGUuCisgKgorICogRlNfU0VSSUFMSVpFX0RPTkUgaW5kaWNhdGVzIHRoYXQgdGhlIGxlYWRlciBo YXMgc2VyaWFsaXplZCBhbGwgY2hhbmdlcyB0bworICogdGhlIGZpbGUuCisgKgorICogRlNfUkVB RFkgaW5kaWNhdGVzIHRoYXQgaXQgaXMgbm93IG9rIGZvciBhIHBhcmFsbGVsIGFwcGx5IHdvcmtl ciB0bworICogcmVhZCB0aGUgZmlsZS4KKyAqLwordHlwZWRlZiBlbnVtIFBhcnRpYWxGaWxlU2V0 U3RhdGUKK3sKKwlGU19FTVBUWSwKKwlGU19TRVJJQUxJWkVfSU5fUFJPR1JFU1MsCisJRlNfU0VS SUFMSVpFX0RPTkUsCisJRlNfUkVBRFkKK30gUGFydGlhbEZpbGVTZXRTdGF0ZTsKKworLyoKKyAq IFN0cnVjdCBmb3Igc2hhcmluZyBpbmZvcm1hdGlvbiBiZXR3ZWVuIGxlYWRlciBhcHBseSB3b3Jr ZXIgYW5kIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXJzLgorICovCit0eXBlZGVmIHN0cnVjdCBQ YXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkCit7CisJc2xvY2tfdAkJbXV0ZXg7CisKKwlUcmFuc2Fj dGlvbklkIHhpZDsKKworCS8qCisJICogU3RhdGUgdXNlZCB0byBlbnN1cmUgY29tbWl0IG9yZGVy aW5nLgorCSAqCisJICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIHNldCBpdCB0byBQ QVJBTExFTF9UUkFOU19GSU5JU0hFRCBhZnRlcgorCSAqIGhhbmRsaW5nIHRoZSB0cmFuc2FjdGlv biBmaW5pc2ggY29tbWFuZHMgd2hpbGUgdGhlIGFwcGx5IGxlYWRlciB3aWxsCisJICogd2FpdCBm b3IgaXQgdG8gYmVjb21lIFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVEIGJlZm9yZSBwcm9jZWVkaW5n IGluCisJICogdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmRzIChlLmcuIFNUUkVBTV9DT01NSVQv U1RSRUFNX1BSRVBBUkUvCisJICogU1RSRUFNX0FCT1JUKS4KKwkgKi8KKwlQYXJhbGxlbFRyYW5z U3RhdGUgeGFjdF9zdGF0ZTsKKworCS8qIEluZm9ybWF0aW9uIGZyb20gdGhlIGNvcnJlc3BvbmRp bmcgTG9naWNhbFJlcFdvcmtlciBzbG90LiAqLworCXVpbnQxNgkJbG9naWNhbHJlcF93b3JrZXJf Z2VuZXJhdGlvbjsKKwlpbnQJCQlsb2dpY2FscmVwX3dvcmtlcl9zbG90X25vOworCisJLyoKKwkg KiBJbmRpY2F0ZXMgd2hldGhlciB0aGVyZSBhcmUgcGVuZGluZyBzdHJlYW1pbmcgYmxvY2tzIGlu IHRoZSBxdWV1ZS4gVGhlCisJICogcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdpbGwgY2hlY2sgaXQg YmVmb3JlIHN0YXJ0aW5nIHRvIHdhaXQuCisJICovCisJcGdfYXRvbWljX3VpbnQzMiBwZW5kaW5n X3N0cmVhbV9jb3VudDsKKworCS8qCisJICogWGFjdExhc3RDb21taXRFbmQgZnJvbSB0aGUgcGFy YWxsZWwgYXBwbHkgd29ya2VyLiBUaGlzIGlzIHJlcXVpcmVkIGJ5CisJICogdGhlIGxlYWRlciB3 b3JrZXIgc28gaXQgY2FuIHVwZGF0ZSB0aGUgbHNuX21hcHBpbmdzLgorCSAqLworCVhMb2dSZWNQ dHIJbGFzdF9jb21taXRfZW5kOworCisJLyoKKwkgKiBBZnRlciBlbnRlcmluZyBQQVJUSUFMX1NF UklBTElaRSBtb2RlLCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB3aWxsCisJICogc2VyaWFsaXpl IGNoYW5nZXMgdG8gdGhlIGZpbGUsIGFuZCBzaGFyZSB0aGUgZmlsZXNldCB3aXRoIHRoZSBwYXJh bGxlbAorCSAqIGFwcGx5IHdvcmtlciB3aGVuIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZp bmlzaCBjb21tYW5kLiBUaGVuIHRoZQorCSAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIGFw cGx5IGFsbCB0aGUgc3Bvb2xlZCBtZXNzYWdlcy4KKwkgKgorCSAqIEZpbGVTZXQgaXMgdXNlZCBo ZXJlIGluc3RlYWQgb2YgU2hhcmVkRmlsZVNldCBiZWNhdXNlIHdlIG5lZWQgaXQgdG8KKwkgKiBz dXJ2aXZlIGFmdGVyIHJlbGVhc2luZyB0aGUgc2hhcmVkIG1lbW9yeSBzbyB0aGF0IHRoZSBsZWFk ZXIgYXBwbHkKKwkgKiB3b3JrZXIgY2FuIHJlLXVzZSB0aGUgc2FtZSBmaWxlc2V0IGZvciB0aGUg bmV4dCBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uCisJICovCisJUGFydGlhbEZpbGVTZXRTdGF0ZSBm aWxlc2V0X3N0YXRlOworCUZpbGVTZXQJCWZpbGVzZXQ7Cit9IFBhcmFsbGVsQXBwbHlXb3JrZXJT aGFyZWQ7CisKKy8qCisgKiBJbmZvcm1hdGlvbiB3aGljaCBpcyB1c2VkIHRvIG1hbmFnZSB0aGUg cGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCit0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbEFwcGx5 V29ya2VySW5mbworeworCS8qCisJICogVGhpcyBxdWV1ZSBpcyB1c2VkIHRvIHNlbmQgY2hhbmdl cyBmcm9tIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHRvIHRoZQorCSAqIHBhcmFsbGVsIGFwcGx5 IHdvcmtlci4KKwkgKi8KKwlzaG1fbXFfaGFuZGxlICptcV9oYW5kbGU7CisKKwkvKgorCSAqIFRo aXMgcXVldWUgaXMgdXNlZCB0byB0cmFuc2ZlciBlcnJvciBtZXNzYWdlcyBmcm9tIHRoZSBwYXJh bGxlbCBhcHBseQorCSAqIHdvcmtlciB0byB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlci4KKwkgKi8K KwlzaG1fbXFfaGFuZGxlICplcnJvcl9tcV9oYW5kbGU7CisKKwlkc21fc2VnbWVudCAqZHNtX3Nl ZzsKKworCS8qCisJICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIg bmVlZHMgdG8gc2VyaWFsaXplIHRoZQorCSAqIHJlbWFpbmluZyBjaGFuZ2VzIHRvIGEgZmlsZSBk dWUgdG8gdGltZW91dCB3aGVuIGF0dGVtcHRpbmcgdG8gc2VuZCBkYXRhCisJICogdG8gdGhlIHBh cmFsbGVsIGFwcGx5IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4KKwkgKi8KKwlib29sCQlzZXJp YWxpemVfY2hhbmdlczsKKworCS8qCisJICogVHJ1ZSBpZiB0aGUgd29ya2VyIGlzIGJlaW5nIHVz ZWQgdG8gcHJvY2VzcyBhIHBhcmFsbGVsIGFwcGx5CisJICogdHJhbnNhY3Rpb24uIEZhbHNlIGlu ZGljYXRlcyB0aGlzIHdvcmtlciBpcyBhdmFpbGFibGUgZm9yIHJlLXVzZS4KKwkgKi8KKwlib29s CQlpbl91c2U7CisKKwlQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpzaGFyZWQ7Cit9IFBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvOworCiAvKiBNYWluIG1lbW9yeSBjb250ZXh0IGZvciBhcHBseSB3 b3JrZXIuIFBlcm1hbmVudCBkdXJpbmcgd29ya2VyIGxpZmV0aW1lLiAqLwogZXh0ZXJuIFBHRExM SU1QT1JUIE1lbW9yeUNvbnRleHQgQXBwbHlDb250ZXh0OwogCitleHRlcm4gUEdETExJTVBPUlQg TWVtb3J5Q29udGV4dCBBcHBseU1lc3NhZ2VDb250ZXh0OworCitleHRlcm4gUEdETExJTVBPUlQg RXJyb3JDb250ZXh0Q2FsbGJhY2sgKmFwcGx5X2Vycm9yX2NvbnRleHRfc3RhY2s7CisKK2V4dGVy biBQR0RMTElNUE9SVCBQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpNeVBhcmFsbGVsU2hhcmVk OworCiAvKiBsaWJwcXJlY2VpdmVyIGNvbm5lY3Rpb24gKi8KIGV4dGVybiBQR0RMTElNUE9SVCBz dHJ1Y3QgV2FsUmVjZWl2ZXJDb25uICpMb2dSZXBXb3JrZXJXYWxSY3ZDb25uOwogCkBAIC04NCw5 ICsyMjksMTEgQEAgZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfYXR0YWNoKGludCBzbG90 KTsKIGV4dGVybiBMb2dpY2FsUmVwV29ya2VyICpsb2dpY2FscmVwX3dvcmtlcl9maW5kKE9pZCBz dWJpZCwgT2lkIHJlbGlkLAogCQkJCQkJCQkJCQkJYm9vbCBvbmx5X3J1bm5pbmcpOwogZXh0ZXJu IExpc3QgKmxvZ2ljYWxyZXBfd29ya2Vyc19maW5kKE9pZCBzdWJpZCwgYm9vbCBvbmx5X3J1bm5p bmcpOwotZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE9pZCBkYmlkLCBPaWQg c3ViaWQsIGNvbnN0IGNoYXIgKnN1Ym5hbWUsCi0JCQkJCQkJCQkgT2lkIHVzZXJpZCwgT2lkIHJl bGlkKTsKK2V4dGVybiBib29sIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJpZCwgT2lk IHN1YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLAorCQkJCQkJCQkJIE9pZCB1c2VyaWQsIE9pZCBy ZWxpZCwKKwkJCQkJCQkJCSBkc21faGFuZGxlIHN1Yndvcmtlcl9kc20pOwogZXh0ZXJuIHZvaWQg bG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCk7CitleHRlcm4gdm9p ZCBsb2dpY2FscmVwX3BhX3dvcmtlcl9zdG9wKGludCBzbG90X25vLCB1aW50MTYgZ2VuZXJhdGlv bik7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl93YWtldXAoT2lkIHN1YmlkLCBPaWQg cmVsaWQpOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfd2FrZXVwX3B0cihMb2dpY2Fs UmVwV29ya2VyICp3b3JrZXIpOwogCkBAIC0xMDMsMTAgKzI1MCw3OCBAQCBleHRlcm4gdm9pZCBw cm9jZXNzX3N5bmNpbmdfdGFibGVzKFhMb2dSZWNQdHIgY3VycmVudF9sc24pOwogZXh0ZXJuIHZv aWQgaW52YWxpZGF0ZV9zeW5jaW5nX3RhYmxlX3N0YXRlcyhEYXR1bSBhcmcsIGludCBjYWNoZWlk LAogCQkJCQkJCQkJCQl1aW50MzIgaGFzaHZhbHVlKTsKIAorZXh0ZXJuIHZvaWQgc3RyZWFtX3N0 YXJ0X2ludGVybmFsKFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGZpcnN0X3NlZ21lbnQpOworZXh0 ZXJuIHZvaWQgc3RyZWFtX3N0b3BfaW50ZXJuYWwoVHJhbnNhY3Rpb25JZCB4aWQpOworCisvKiBD b21tb24gc3RyZWFtaW5nIGZ1bmN0aW9uIHRvIGFwcGx5IGFsbCB0aGUgc3Bvb2xlZCBtZXNzYWdl cyAqLworZXh0ZXJuIHZvaWQgYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhGaWxlU2V0ICpzdHJlYW1f ZmlsZXNldCwgVHJhbnNhY3Rpb25JZCB4aWQsCisJCQkJCQkJCSAgIFhMb2dSZWNQdHIgbHNuKTsK KworZXh0ZXJuIHZvaWQgYXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBzKTsKKworZXh0ZXJuIHZv aWQgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKTsKKworZXh0ZXJuIHZvaWQgc3RyZWFt X2NsZWFudXBfZmlsZXMoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCk7CisKK2V4dGVybiB2 b2lkIEluaXRpYWxpemVBcHBseVdvcmtlcih2b2lkKTsKKworZXh0ZXJuIHZvaWQgc3RvcmVfZmx1 c2hfcG9zaXRpb24oWExvZ1JlY1B0ciByZW1vdGVfbHNuLCBYTG9nUmVjUHRyIGxvY2FsX2xzbik7 CisKKy8qIEZ1bmN0aW9uIGZvciBhcHBseSBlcnJvciBjYWxsYmFjayAqLworZXh0ZXJuIHZvaWQg YXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKK2V4dGVybiB2b2lkIHNldF9hcHBseV9l cnJvcl9jb250ZXh0X29yaWdpbihjaGFyICpvcmlnaW5uYW1lKTsKKworLyogUGFyYWxsZWwgYXBw bHkgd29ya2VyIHNldHVwIGFuZCBpbnRlcmFjdGlvbnMgKi8KK2V4dGVybiB2b2lkIHBhX2FsbG9j YXRlX3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCk7CitleHRlcm4gUGFyYWxsZWxBcHBseVdvcmtl ckluZm8gKnBhX2ZpbmRfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiB2b2lkIHBh X2RldGFjaF9hbGxfZXJyb3JfbXEodm9pZCk7CisKK2V4dGVybiBib29sIHBhX3NlbmRfZGF0YShQ YXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFNpemUgbmJ5dGVzLAorCQkJCQkJIGNvbnN0 IHZvaWQgKmRhdGEpOworZXh0ZXJuIHZvaWQgcGFfc3dpdGNoX3RvX3BhcnRpYWxfc2VyaWFsaXpl KFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywKKwkJCQkJCQkJCQkgICBib29sIHN0cmVh bV9sb2NrZWQpOworCitleHRlcm4gdm9pZCBwYV9zZXRfeGFjdF9zdGF0ZShQYXJhbGxlbEFwcGx5 V29ya2VyU2hhcmVkICp3c2hhcmVkLAorCQkJCQkJCSAgUGFyYWxsZWxUcmFuc1N0YXRlIGluX3hh Y3QpOworZXh0ZXJuIHZvaWQgcGFfc2V0X3N0cmVhbV9hcHBseV93b3JrZXIoUGFyYWxsZWxBcHBs eVdvcmtlckluZm8gKndpbmZvKTsKKworZXh0ZXJuIHZvaWQgcGFfc3RhcnRfc3VidHJhbnMoVHJh bnNhY3Rpb25JZCBjdXJyZW50X3hpZCwKKwkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgdG9wX3hpZCk7 CitleHRlcm4gdm9pZCBwYV9yZXNldF9zdWJ0cmFucyh2b2lkKTsKK2V4dGVybiB2b2lkIHBhX3N0 cmVhbV9hYm9ydChMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9kYXRhKTsKK2V4dGVy biB2b2lkIHBhX3NldF9maWxlc2V0X3N0YXRlKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKndz aGFyZWQsCisJCQkJCQkJCSBQYXJ0aWFsRmlsZVNldFN0YXRlIGZpbGVzZXRfc3RhdGUpOworCitl eHRlcm4gdm9pZCBwYV9sb2NrX3N0cmVhbShUcmFuc2FjdGlvbklkIHhpZCwgTE9DS01PREUgbG9j a21vZGUpOworZXh0ZXJuIHZvaWQgcGFfdW5sb2NrX3N0cmVhbShUcmFuc2FjdGlvbklkIHhpZCwg TE9DS01PREUgbG9ja21vZGUpOworCitleHRlcm4gdm9pZCBwYV9sb2NrX3RyYW5zYWN0aW9uKFRy YW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9kZSk7CitleHRlcm4gdm9pZCBwYV91bmxv Y2tfdHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKKwor ZXh0ZXJuIHZvaWQgcGFfZGVjcl9hbmRfd2FpdF9zdHJlYW1fYmxvY2sodm9pZCk7CisKK2V4dGVy biB2b2lkIHBhX3hhY3RfZmluaXNoKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywKKwkJ CQkJCSAgIFhMb2dSZWNQdHIgcmVtb3RlX2xzbik7CisKKyNkZWZpbmUgaXNQYXJhbGxlbEFwcGx5 V29ya2VyKHdvcmtlcikgKCh3b3JrZXIpLT5hcHBseV9sZWFkZXJfcGlkICE9IEludmFsaWRQaWQp CisKIHN0YXRpYyBpbmxpbmUgYm9vbAogYW1fdGFibGVzeW5jX3dvcmtlcih2b2lkKQogewogCXJl dHVybiBPaWRJc1ZhbGlkKE15TG9naWNhbFJlcFdvcmtlci0+cmVsaWQpOwogfQogCitzdGF0aWMg aW5saW5lIGJvb2wKK2FtX2xlYWRlcl9hcHBseV93b3JrZXIodm9pZCkKK3sKKwlyZXR1cm4gKCFh bV90YWJsZXN5bmNfd29ya2VyKCkgJiYKKwkJCSFpc1BhcmFsbGVsQXBwbHlXb3JrZXIoTXlMb2dp Y2FsUmVwV29ya2VyKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbAorYW1fcGFyYWxsZWxfYXBw bHlfd29ya2VyKHZvaWQpCit7CisJcmV0dXJuIGlzUGFyYWxsZWxBcHBseVdvcmtlcihNeUxvZ2lj YWxSZXBXb3JrZXIpOworfQorCiAjZW5kaWYJCQkJCQkJLyogV09SS0VSX0lOVEVSTkFMX0ggKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oIGIvc3JjL2luY2x1ZGUvc3Rv cmFnZS9sbWdyLmgKaW5kZXggOTk1YzhlOC4uNGVlOTFlMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvc3RvcmFnZS9sbWdyLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmgKQEAgLTEw Nyw2ICsxMDcsMTEgQEAgZXh0ZXJuIHZvaWQgTG9ja1NoYXJlZE9iamVjdEZvclNlc3Npb24oT2lk IGNsYXNzaWQsIE9pZCBvYmppZCwgdWludDE2IG9ianN1YmlkLAogZXh0ZXJuIHZvaWQgVW5sb2Nr U2hhcmVkT2JqZWN0Rm9yU2Vzc2lvbihPaWQgY2xhc3NpZCwgT2lkIG9iamlkLCB1aW50MTYgb2Jq c3ViaWQsCiAJCQkJCQkJCQkJIExPQ0tNT0RFIGxvY2ttb2RlKTsKIAorZXh0ZXJuIHZvaWQgTG9j a0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uKE9pZCBzdWJvaWQsIFRyYW5zYWN0aW9uSWQgeGlk LCB1aW50MTYgb2JqaWQsCisJCQkJCQkJCQkJICAgTE9DS01PREUgbG9ja21vZGUpOworZXh0ZXJu IHZvaWQgVW5sb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24oT2lkIHN1Ym9pZCwgVHJhbnNh Y3Rpb25JZCB4aWQsIHVpbnQxNiBvYmppZCwKKwkJCQkJCQkJCQkJIExPQ0tNT0RFIGxvY2ttb2Rl KTsKKwogLyogRGVzY3JpYmUgYSBsb2NrdGFnIGZvciBlcnJvciBtZXNzYWdlcyAqLwogZXh0ZXJu IHZvaWQgRGVzY3JpYmVMb2NrVGFnKFN0cmluZ0luZm8gYnVmLCBjb25zdCBMT0NLVEFHICp0YWcp OwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaCBiL3NyYy9pbmNsdWRl L3N0b3JhZ2UvbG9jay5oCmluZGV4IDlhNzE5MzQuLjE5MGJkZGIgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3N0b3JhZ2UvbG9jay5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG9jay5oCkBA IC0xNDksMTAgKzE0OSwxMiBAQCB0eXBlZGVmIGVudW0gTG9ja1RhZ1R5cGUKIAlMT0NLVEFHX1NQ RUNVTEFUSVZFX1RPS0VOLAkvKiBzcGVjdWxhdGl2ZSBpbnNlcnRpb24gWGlkIGFuZCB0b2tlbiAq LwogCUxPQ0tUQUdfT0JKRUNULAkJCQkvKiBub24tcmVsYXRpb24gZGF0YWJhc2Ugb2JqZWN0ICov CiAJTE9DS1RBR19VU0VSTE9DSywJCQkvKiByZXNlcnZlZCBmb3Igb2xkIGNvbnRyaWIvdXNlcmxv Y2sgY29kZSAqLwotCUxPQ0tUQUdfQURWSVNPUlkJCQkvKiBhZHZpc29yeSB1c2VyIGxvY2tzICov CisJTE9DS1RBR19BRFZJU09SWSwJCQkvKiBhZHZpc29yeSB1c2VyIGxvY2tzICovCisJTE9DS1RB R19BUFBMWV9UUkFOU0FDVElPTgkvKiB0cmFuc2FjdGlvbiBiZWluZyBhcHBsaWVkIG9uIGEgbG9n aWNhbAorCQkJCQkJCQkgKiByZXBsaWNhdGlvbiBzdWJzY3JpYmVyICovCiB9IExvY2tUYWdUeXBl OwogCi0jZGVmaW5lIExPQ0tUQUdfTEFTVF9UWVBFCUxPQ0tUQUdfQURWSVNPUlkKKyNkZWZpbmUg TE9DS1RBR19MQVNUX1RZUEUJTE9DS1RBR19BUFBMWV9UUkFOU0FDVElPTgogCiBleHRlcm4gUEdE TExJTVBPUlQgY29uc3QgY2hhciAqY29uc3QgTG9ja1RhZ1R5cGVOYW1lc1tdOwogCkBAIC0yNzgs NiArMjgwLDE3IEBAIHR5cGVkZWYgc3RydWN0IExPQ0tUQUcKIAkgKGxvY2t0YWcpLmxvY2t0YWdf dHlwZSA9IExPQ0tUQUdfQURWSVNPUlksIFwKIAkgKGxvY2t0YWcpLmxvY2t0YWdfbG9ja21ldGhv ZGlkID0gVVNFUl9MT0NLTUVUSE9EKQogCisvKgorICogSUQgaW5mbyBmb3IgYSByZW1vdGUgdHJh bnNhY3Rpb24gb24gYSBsb2dpY2FsIHJlcGxpY2F0aW9uIHN1YnNjcmliZXIgaXM6IERCCisgKiBP SUQgKyBTVUJTQ1JJUFRJT04gT0lEICsgVFJBTlNBQ1RJT04gSUQgKyBPQkpJRAorICovCisjZGVm aW5lIFNFVF9MT0NLVEFHX0FQUExZX1RSQU5TQUNUSU9OKGxvY2t0YWcsZGJvaWQsc3Vib2lkLHhp ZCxvYmppZCkgXAorCSgobG9ja3RhZykubG9ja3RhZ19maWVsZDEgPSAoZGJvaWQpLCBcCisJIChs b2NrdGFnKS5sb2NrdGFnX2ZpZWxkMiA9IChzdWJvaWQpLCBcCisJIChsb2NrdGFnKS5sb2NrdGFn X2ZpZWxkMyA9ICh4aWQpLCBcCisJIChsb2NrdGFnKS5sb2NrdGFnX2ZpZWxkNCA9IChvYmppZCks IFwKKwkgKGxvY2t0YWcpLmxvY2t0YWdfdHlwZSA9IExPQ0tUQUdfQVBQTFlfVFJBTlNBQ1RJT04s IFwKKwkgKGxvY2t0YWcpLmxvY2t0YWdfbG9ja21ldGhvZGlkID0gREVGQVVMVF9MT0NLTUVUSE9E KQogCiAvKgogICogUGVyLWxvY2tlZC1vYmplY3QgbG9jayBpbmZvcm1hdGlvbjoKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFn ZS9wcm9jc2lnbmFsLmgKaW5kZXggNDVlMmYxZi4uOTA1YWYyMiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9j c2lnbmFsLmgKQEAgLTM1LDYgKzM1LDcgQEAgdHlwZWRlZiBlbnVtCiAJUFJPQ1NJR19XQUxTTkRf SU5JVF9TVE9QUElORywJLyogYXNrIHdhbHNlbmRlcnMgdG8gcHJlcGFyZSBmb3Igc2h1dGRvd24g ICovCiAJUFJPQ1NJR19CQVJSSUVSLAkJCS8qIGdsb2JhbCBiYXJyaWVyIGludGVycnVwdCAgKi8K IAlQUk9DU0lHX0xPR19NRU1PUllfQ09OVEVYVCwgLyogYXNrIGJhY2tlbmQgdG8gbG9nIHRoZSBt ZW1vcnkgY29udGV4dHMgKi8KKwlQUk9DU0lHX1BBUkFMTEVMX0FQUExZX01FU1NBR0UsIC8qIE1l c3NhZ2UgZnJvbSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzICovCiAKIAkvKiBSZWNvdmVyeSBjb25m bGljdCByZWFzb25zICovCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9EQVRBQkFTRSwKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCBiL3NyYy9pbmNsdWRlL3V0 aWxzL3dhaXRfZXZlbnQuaAppbmRleCBmNTMyNTRhLi42Y2FjZDZlIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9l dmVudC5oCkBAIC00Miw2ICs0Miw3IEBAIHR5cGVkZWYgZW51bQogCVdBSVRfRVZFTlRfQ0hFQ0tQ T0lOVEVSX01BSU4sCiAJV0FJVF9FVkVOVF9MT0dJQ0FMX0FQUExZX01BSU4sCiAJV0FJVF9FVkVO VF9MT0dJQ0FMX0xBVU5DSEVSX01BSU4sCisJV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQ UExZX01BSU4sCiAJV0FJVF9FVkVOVF9SRUNPVkVSWV9XQUxfU1RSRUFNLAogCVdBSVRfRVZFTlRf U1lTTE9HR0VSX01BSU4sCiAJV0FJVF9FVkVOVF9XQUxfUkVDRUlWRVJfTUFJTiwKQEAgLTEwNSw2 ICsxMDYsNyBAQCB0eXBlZGVmIGVudW0KIAlXQUlUX0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX0FM TE9DQVRFLAogCVdBSVRfRVZFTlRfSEFTSF9HUk9XX0JVQ0tFVFNfRUxFQ1QsCiAJV0FJVF9FVkVO VF9IQVNIX0dST1dfQlVDS0VUU19SRUlOU0VSVCwKKwlXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxM RUxfQVBQTFlfU1RBVEVfQ0hBTkdFLAogCVdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX0RBVEEsCiAJ V0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNfU1RBVEVfQ0hBTkdFLAogCVdBSVRfRVZFTlRfTVFfSU5U RVJOQUwsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlv bi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKaW5kZXgg YzEzZDIxOC4uMWVkNmY0YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9z dWJzY3JpcHRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0 aW9uLm91dApAQCAtMTE3LDcgKzExNyw3IEBAIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlv biwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAg IE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1Ymxp Y2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUg b24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5m byAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0g cmVncmVzc190ZXN0c3ViNCB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IG5vbmUgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YjQgfCByZWdyZXNzX3N1YnNj cmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAg IHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBub25lICAgfCBvZmYgICAg ICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykK IAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjQgU0VUIChvcmlnaW4gPSBhbnkp OwpAQCAtMTI1LDcgKzEyNSw3IEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI0 IFNFVCAob3JpZ2luID0gYW55KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlz dCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBU d28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3Vz IGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWI0IHwgcmVncmVzc19zdWJz Y3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAg ICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAg ICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVz c190ZXN0c3ViNCB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3Rw dWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2Rv ZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Rl c3RzdWIzOwpAQCAtMTM4LDcgKzEzOCw3IEBAIEVSUk9SOiAgaW52YWxpZCBjb25uZWN0aW9uIHN0 cmluZyBzeW50YXg6IG1pc3NpbmcgIj0iIGFmdGVyICJmb29iYXIiIGluIGNvbm5lY3RpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAg TmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGlj YXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBv biBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZv ICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJl Z3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rl c3RwdWJ9ICAgfCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNz X2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0 aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBk ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAg ICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBB TFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCBQVUJMSUNBVElPTiB0ZXN0cHVi MiwgdGVzdHB1YjMgV0lUSCAocmVmcmVzaCA9IGZhbHNlKTsKQEAgLTE1OCw3ICsxNTgsNyBAQCBB TFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNLSVAgKGxzbiA9ICcwLzEyMzQ1Jyk7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlv bnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxl ZCB8ICAgICBQdWJsaWNhdGlvbiAgICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2Ug Y29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8 ICAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNj cmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBm ICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8 IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAwLzEy MzQ1CisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAg fCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8xMjM0NQogKDEgcm93KQogCiAtLSBv ayAtIHdpdGggbHNuID0gTk9ORQpAQCAtMTcwLDcgKzE3MCw3IEBAIEVSUk9SOiAgaW52YWxpZCBX QUwgbG9jYXRpb24gKExTTik6IDAvMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwg U3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4g fCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tp cCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190 ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIs dGVzdHB1YjN9IHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVz c19kb2Vzbm90ZXhpc3QyIHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3Jp cHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgb2Zm ICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBv ZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8wCiAo MSByb3cpCiAKIEJFR0lOOwpAQCAtMjA1LDcgKzIwNSw3IEBAIEhJTlQ6ICBBdmFpbGFibGUgdmFs dWVzOiBsb2NhbCwgcmVtb3RlX3dyaXRlLCByZW1vdGVfYXBwbHksIG9uLCBvZmYuCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAg ICAgICBOYW1lICAgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8 ICAgICBQdWJsaWNhdGlvbiAgICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29t bWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAg ICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViX2ZvbyB8IHJlZ3Jlc3Nf c3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAg ICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55 ICAgIHwgbG9jYWwgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8 IDAvMAorIHJlZ3Jlc3NfdGVzdHN1Yl9mb28gfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAg ICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IGxvY2FsICAgICAgICAg ICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAwLzAKICgxIHJvdykKIAogLS0g cmVuYW1lIGJhY2sgdG8ga2VlcCB0aGUgcmVzdCBzaW1wbGUKQEAgLTI0Miw3ICsyNDIsNyBAQCBI SU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0 aGUgcmVwbGljYXRpb24gc2xvdCwgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM aXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwg VHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91 cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNj cmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgdCAgICAgIHwgZiAgICAgICAg IHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAg ICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNz X3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVi fSAgIHwgdCAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVz dHN1YiBTRVQgKGJpbmFyeSA9IGZhbHNlKTsKQEAgLTI1MSwxMyArMjUxLDEzIEBAIEFMVEVSIFNV QlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBO YW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNh dGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9u IGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8g ICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVn cmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVz dHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAg ICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3Nf ZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAg ICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIERS T1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjsKLS0tIGZhaWwgLSBzdHJlYW1pbmcgbXVz dCBiZSBib29sZWFuCistLSBmYWlsIC0gc3RyZWFtaW5nIG11c3QgYmUgYm9vbGVhbiBvciAncGFy YWxsZWwnCiBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29u bmVjdCA9IGZhbHNlLCBzdHJlYW1pbmcgPSBmb28pOwotRVJST1I6ICBzdHJlYW1pbmcgcmVxdWly ZXMgYSBCb29sZWFuIHZhbHVlCitFUlJPUjogIHN0cmVhbWluZyByZXF1aXJlcyBhIEJvb2xlYW4g dmFsdWUgb3IgInBhcmFsbGVsIgogLS0gbm93IGl0IHdvcmtzCiBDUkVBVEUgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3Qn IFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBzdHJlYW1pbmcgPSB0 cnVlKTsKIFdBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29u bmVjdGVkCkBAIC0yNjYsNyArMjY2LDE1IEBAIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlv biwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAg TmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGlj YXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBv biBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZv ICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJl Z3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rl c3RwdWJ9ICAgfCBmICAgICAgfCB0ICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNz X2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0 aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAgICAgfCBk ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAg ICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorKDEgcm93KQorCitB TFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gcGFyYWxs ZWwpOworXGRScysKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJz Y3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBj b21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwg ICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNl ciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAg ICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAg IHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNV QlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcgPSBmYWxzZSk7CkBAIC0y NzUsNyArMjgzLDcgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNs b3RfbmFtZSA9IE5PTkUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9m IHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBo YXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21t aXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlv bl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAg ICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3Rz dWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwg ZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAg fCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhp c3QgfCAwLzAKICgxIHJvdykKIAogLS0gZmFpbCAtIHB1YmxpY2F0aW9uIGFscmVhZHkgZXhpc3Rz CkBAIC0yOTMsNyArMzAxLDcgQEAgRVJST1I6ICBwdWJsaWNhdGlvbiAidGVzdHB1YjEiIGlzIGFs cmVhZHkgaW4gc3Vic2NyaXB0aW9uICJyZWdyZXNzX3Rlc3RzdWIiCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1l ICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgICAgIFB1 YmxpY2F0aW9uICAgICAgICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0 IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAg ICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNj cmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViLHRlc3RwdWIxLHRlc3RwdWIyfSB8IGYg ICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg YW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0 IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYg ICAgICAgfCB7dGVzdHB1Yix0ZXN0cHViMSx0ZXN0cHViMn0gfCBmICAgICAgfCBvZmYgICAgICAg fCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAg ICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQog CiAtLSBmYWlsIC0gcHVibGljYXRpb24gdXNlZCBtb3JlIHRoZW4gb25jZQpAQCAtMzExLDcgKzMx OSw3IEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgRFJPUCBQVUJMSUNBVElP TiB0ZXN0cHViMSwgdGVzdHB1YjIgV0lUSCAocmVmCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJl YW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5 bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNO IAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jl c3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBm ICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8 IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAor IHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBEUk9QIFNVQlNDUklQVElPTiByZWdy ZXNzX3Rlc3RzdWI7CkBAIC0zNTAsNyArMzU4LDcgQEAgSElOVDogIFRvIGluaXRpYXRlIHJlcGxp Y2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGUK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAg ICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQ dWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNh YmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29u bmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t Ci0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAg fCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJl Z3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJz Y3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAg ICB8IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAg ICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cp CiAKIC0tZmFpbCAtIGFsdGVyIG9mIHR3b19waGFzZSBvcHRpb24gbm90IHN1cHBvcnRlZC4KQEAg LTM2Miw3ICszNzAsNyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAo c3RyZWFtaW5nID0gdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qg b2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28t cGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNv bW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0 aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCB0ICAgICAgICAgfCBw ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAg ICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVz dHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAg fCBmICAgICAgfCBvbiAgICAgICAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3Rl eGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3Vi IFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CkBAIC0zNzUsNyArMzgzLDcgQEAgSElOVDogIFRvIGlu aXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0 aW9uIHNsb3QsIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJz Y3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBj b21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwg ICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNl ciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHQgICAgICAgICB8IHAgICAgICAg ICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAg IHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwg cmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAg ICB8IG9uICAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55 ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwg MC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChz bG90X25hbWUgPSBOT05FKTsKQEAgLTM5MSw3ICszOTksNyBAQCBISU5UOiAgVG8gaW5pdGlhdGUg cmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xv dCwgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlv bnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxl ZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8 IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAg ICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAg ICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5h bWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNz X3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2Zm ICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBv ZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgx IHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKGRpc2FibGVf b25fZXJyb3IgPSB0cnVlKTsKQEAgLTM5OSw3ICs0MDcsNyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04g cmVncmVzc190ZXN0c3ViIFNFVCAoZGlzYWJsZV9vbl9lcnJvciA9IHRydWUpOwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUg ICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9u IHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJy b3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAg ICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNz X3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVi fSAgIHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IHQgICAgICAgICAg ICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAg ICAgICAgICAgICB8IHQgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAg ICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIg U1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbCBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5zcWwKaW5kZXggZWFlYWRlOC4uNzk5MWFiZiAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsCkBAIC0xNjcsNyArMTY3LDcgQEAgQUxU RVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwog CiBEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI7CiAKLS0tIGZhaWwgLSBzdHJlYW1p bmcgbXVzdCBiZSBib29sZWFuCistLSBmYWlsIC0gc3RyZWFtaW5nIG11c3QgYmUgYm9vbGVhbiBv ciAncGFyYWxsZWwnCiBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNU SU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lU SCAoY29ubmVjdCA9IGZhbHNlLCBzdHJlYW1pbmcgPSBmb28pOwogCiAtLSBub3cgaXQgd29ya3MK QEAgLTE3NSw2ICsxNzUsMTAgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIg Q09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUIKIAogXGRScysKIAor QUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9IHBhcmFs bGVsKTsKKworXGRScysKKwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQg KHN0cmVhbWluZyA9IGZhbHNlKTsKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIg U0VUIChzbG90X25hbWUgPSBOT05FKTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0u cGwKaW5kZXggZTI1OWMxMC4uOTFlOGFhOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE1X3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3Ry ZWFtLnBsCkBAIC04LDYgKzgsMTI4IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwog dXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hlY2sg dGhhdCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGhhcyBmaW5pc2hlZCBhcHBseWluZyB0aGUg c3RyZWFtaW5nCisjIHRyYW5zYWN0aW9uLgorc3ViIGNoZWNrX3BhcmFsbGVsX2xvZworeworCW15 ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICR0eXBlKSA9IEBfOwor CisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xv ZygKKwkJCXFyL0RFQlVHOiAoIFtBLVowLTldKzopPyBmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSBT VFJFQU0gJHR5cGUgY29tbWFuZC8sCisJCQkkb2Zmc2V0KTsKKwl9Cit9CisKKyMgQ29tbW9uIHRl c3Qgc3RlcHMgZm9yIGJvdGggdGhlIHN0cmVhbWluZz1vbiBhbmQgc3RyZWFtaW5nPXBhcmFsbGVs IGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5v ZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsKKworCSMgSW50ZXJs ZWF2ZSBhIHBhaXIgb2YgdHJhbnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1p dC4KKwlteSAkaW4gID0gJyc7CisJbXkgJG91dCA9ICcnOworCisJbXkgJG9mZnNldCA9IDA7CisK KwlteSAkdGltZXIgPSBJUEM6OlJ1bjo6dGltZW91dCgkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6 OnRpbWVvdXRfZGVmYXVsdCk7CisKKwlteSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3Vu ZF9wc3FsKCdwb3N0Z3JlcycsIFwkaW4sIFwkb3V0LCAkdGltZXIsCisJCW9uX2Vycm9yX3N0b3Ag PT4gMCk7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zm c2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSRpbiAuPSBxeworCUJFR0lO OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUo YikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChh LDMpID0gMDsKKwl9OworCSRoLT5wdW1wX25iOworCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLCA5OTk5KSBzKGkp OworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiA1MDAwOworCUNPTU1JVDsKKwl9KTsK KworCSRpbiAuPSBxeworCUNPTU1JVDsKKwlccQorCX07CisJJGgtPmZpbmlzaDsgICAgIyBlcnJv cnMgbWFrZSB0aGUgbmV4dCB0ZXN0IGZhaWwsIHNvIGlnbm9yZSB0aGVtIGhlcmUKKworCSRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxl bF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnQ09NTUlUJyk7 CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0 ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKKwkJJ2NoZWNrIGV4 dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycpOworCisJIyBUZXN0IHRoZSBzdHJl YW1pbmcgaW4gYmluYXJ5IG1vZGUKKwkkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVCAoYmluYXJ5ID0gb24pIik7 CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0g LXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRl bGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAx LCAxMDAwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9k KGEsMikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlD T01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRp c19wYXJhbGxlbCwgJ0NPTU1JVCcpOworCisJJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNv dW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8 NjY2NyksCisJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsK KworCSMgQ2hhbmdlIHRoZSBsb2NhbCB2YWx1ZXMgb2YgdGhlIGV4dHJhIGNvbHVtbnMgb24gdGhl IHN1YnNjcmliZXIsCisJIyB1cGRhdGUgcHVibGlzaGVyLCBhbmQgY2hlY2sgdGhhdCBzdWJzY3Jp YmVyIHJldGFpbnMgdGhlIGV4cGVjdGVkCisJIyB2YWx1ZXMuIFRoaXMgaXMgdG8gZW5zdXJlIHRo YXQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYmVoYXZlCisJIyBwcm9wZXJseSBhZnRlciBh IHN0cmVhbWluZyB0cmFuc2FjdGlvbi4KKwkkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIlVQREFURSB0ZXN0X3RhYiBTRVQgYyA9ICdlcG9jaCc6OnRpbWVzdGFtcHR6 ICsgOTg3NjU0MzIxICogaW50ZXJ2YWwgJzFzJyIKKwkpOworCisJIyBDaGVjayB0aGUgc3Vic2Ny aWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxv Z2ZpbGU7CisKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiVVBE QVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGE6OnRleHQpIik7CisKKwkkbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2Rl X3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJ0NPTU1JVCcpOworCisJJHJlc3Vs dCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNv dW50KCopLCBjb3VudChleHRyYWN0KGVwb2NoIGZyb20gYykgPSA5ODc2NTQzMjEpLCBjb3VudChk ID0gOTk5KSBGUk9NIHRlc3RfdGFiIgorCSk7CisJaXMoJHJlc3VsdCwgcXEoNjY2N3w2NjY3fDY2 NjcpLAorCQknY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsbHkgY2hhbmdlZCBkYXRh Jyk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpIik7 CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKK30KKwogIyBD cmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQoYWxs b3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMjYsMTcgKzE0OCwyNyBAQCAkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKIAkiSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgxLCAnZm9vJyks ICgyLCAnYmFyJykiKTsKIAorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IkNSRUFURSBUQUJMRSB0ZXN0X3RhYl8yIChhIGludCkiKTsKKwogIyBTZXR1cCBzdHJ1Y3R1cmUg b24gc3Vic2NyaWJlcgogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJ IkNSRUFURSBUQUJMRSB0ZXN0X3RhYiAoYSBpbnQgcHJpbWFyeSBrZXksIGIgdGV4dCwgYyB0aW1l c3RhbXB0eiBERUZBVUxUIG5vdygpLCBkIGJpZ2ludCBERUZBVUxUIDk5OSkiCiApOwogCiskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0ZXN0X3Rh Yl8yIChhIGludCkiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJDUkVBVEUgVU5JUVVFIElOREVYIGlkeF90YWIgb24gdGVzdF90YWJfMihhKSIpOworCiAjIFNl dHVwIGxvZ2ljYWwgcmVwbGljYXRpb24KIG15ICRwdWJsaXNoZXJfY29ubnN0ciA9ICRub2RlX3B1 Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKICRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBU QUJMRSB0ZXN0X3RhYiIpOworCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUg dGVzdF90YWIsIHRlc3RfdGFiXzIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1v ZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIg Q09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUn IFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5nID0gb24pIgogKTsKQEAgLTQ5LDYg KzE4MSw0MyBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291 bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwyfDIpLCAnY2hl Y2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCit0ZXN0X3N0cmVh bWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKKwor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJl YW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9u X25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyk7CisKKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04g dGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxsZWwsIGJpbmFyeSA9IG9mZikiKTsKKworJG5v ZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQg IT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFt ZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQor ICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hh bmdpbmcgU1VCU0NSSVBUSU9OIjsKKworIyBXZSBuZWVkIHRvIGNoZWNrIERFQlVHIGxvZ3MgdG8g ZW5zdXJlIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBoYXMKKyMgYXBwbGllZCB0aGUg dHJhbnNhY3Rpb24uIFNvLCBidW1wIHVwIHRoZSBsb2cgdmVyYm9zaXR5LgorJG5vZGVfc3Vic2Ny aWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJsb2dfbWluX21lc3NhZ2VzID0g ZGVidWcxIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisKKyMgUnVuIGEgcXVlcnkgdG8g bWFrZSBzdXJlIHRoYXQgdGhlIHJlbG9hZCBoYXMgdGFrZW4gZWZmZWN0LgorJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7U0VMRUNUIDF9KTsKKwordGVzdF9zdHJlYW1p bmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CisKKyMg VGVzdCB0aGF0IHRoZSBkZWFkbG9jayBpcyBkZXRlY3RlZCBhbW9uZyB0aGUgbGVhZGVyIGFuZCBw YXJhbGxlbCBhcHBseQorIyB3b3JrZXJzLgorCiskbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29u ZigncG9zdGdyZXNxbC5jb25mJywgImRlYWRsb2NrX3RpbWVvdXQgPSAxMG1zIik7Ciskbm9kZV9z dWJzY3JpYmVyLT5yZWxvYWQ7CisKKyMgUnVuIGEgcXVlcnkgdG8gbWFrZSBzdXJlIHRoYXQgdGhl IHJlbG9hZCBoYXMgdGFrZW4gZWZmZWN0LgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIHF7U0VMRUNUIDF9KTsKKwogIyBJbnRlcmxlYXZlIGEgcGFpciBvZiB0cmFuc2Fj dGlvbnMsIGVhY2ggZXhjZWVkaW5nIHRoZSA2NGtCIGxpbWl0LgogbXkgJGluICA9ICcnOwogbXkg JG91dCA9ICcnOwpAQCAtNTgsNzMgKzIyNyw5MCBAQCBteSAkdGltZXIgPSBJUEM6OlJ1bjo6dGlt ZW91dCgkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCk7CiBteSAkaCA9 ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIFwkaW4sIFwkb3V0 LCAkdGltZXIsCiAJb25fZXJyb3Jfc3RvcCA9PiAwKTsKIAorIyBDb25maXJtIGlmIGEgZGVhZGxv Y2sgYmV0d2VlbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgdGhlIHBhcmFsbGVsIGFwcGx5 CisjIHdvcmtlciBjYW4gYmUgZGV0ZWN0ZWQuCisKK215ICRvZmZzZXQgPSAtcyAkbm9kZV9zdWJz Y3JpYmVyLT5sb2dmaWxlOworCiAkaW4gLj0gcXsKIEJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBz KGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsK LURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKK0lOU0VSVCBJTlRPIHRl c3RfdGFiXzIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsKIH07 CiAkaC0+cHVtcF9uYjsKIAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVz JywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLCA5OTk5KSBzKGkpOwotREVMRVRFIEZST00gdGVz dF90YWIgV0hFUkUgYSA+IDUwMDA7Ci1DT01NSVQ7Ci19KTsKKyMgRW5zdXJlIHRoYXQgdGhlIHBh cmFsbGVsIGFwcGx5IHdvcmtlciBleGVjdXRlcyB0aGUgaW5zZXJ0IGNvbW1hbmQgYmVmb3JlIHRo ZQorIyBsZWFkZXIgd29ya2VyLgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFy L0RFQlVHOiAoIFtBLVowLTldKzopPyBhcHBsaWVkIFswLTldKyBjaGFuZ2VzIGluIHRoZSBzdHJl YW1pbmcgY2h1bmsvLAorCSRvZmZzZXQpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90YWJfMiB2YWx1ZXMoMSkiKTsKIAogJGluIC49 IHF7CiBDT01NSVQ7CiBccQogfTsKLSRoLT5maW5pc2g7ICAgICMgZXJyb3JzIG1ha2UgdGhlIG5l eHQgdGVzdCBmYWlsLCBzbyBpZ25vcmUgdGhlbSBoZXJlCiskaC0+ZmluaXNoOwogCiskbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGRlYWRsb2Nr IGRldGVjdGVkLywKKwkkb2Zmc2V0KTsKKworIyBJbiBvcmRlciBmb3IgdGhlIHR3byB0cmFuc2Fj dGlvbnMgdG8gYmUgY29tcGxldGVkIG5vcm1hbGx5IHdpdGhvdXQgY2F1c2luZworIyBjb25mbGlj dHMgZHVlIHRvIHRoZSB1bmlxdWUgaW5kZXgsIHdlIHRlbXBvcmFyaWx5IGRyb3AgaXQuCiskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggaWR4X3RhYiIp OworCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQg aW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7CiAKICRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJP TSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLCAnY2hlY2sgZXh0 cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJyk7CisgICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfMiIp OworaXMoJHJlc3VsdCwgcXEoNTAwMSksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBh ZnRlciBkcm9wcGluZyBpbmRleCcpOwogCi0jIFRlc3QgdGhlIHN0cmVhbWluZyBpbiBiaW5hcnkg bW9kZQorIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCiskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgVEFCTEUgdGVzdF90YWJf MiIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJBTFRFUiBTVUJTQ1JJUFRJT04g dGFwX3N1YiBTRVQgKGJpbmFyeSA9IG9uKSIpOworCSJDUkVBVEUgVU5JUVVFIElOREVYIGlkeF90 YWIgb24gdGVzdF90YWJfMihhKSIpOwogCi0jIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5v dWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLCAxMDAwMCkgcyhp KTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1E RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1DT01NSVQ7Ci19KTsKKyMg Q29uZmlybSBpZiBhIGRlYWRsb2NrIGJldHdlZW4gdHdvIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMg Y2FuIGJlIGRldGVjdGVkLgogCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWUpOworIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0 ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKIAotJHJlc3VsdCA9Ci0gICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSg2NjY3 fDY2Njd8NjY2NyksICdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMn KTsKKyRpbiAuPSBxeworQkVHSU47CitJTlNFUlQgSU5UTyB0ZXN0X3RhYl8yIFNFTEVDVCBpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7Cit9OworJGgtPnB1bXBfbmI7CisKKyMg RW5zdXJlIHRoYXQgdGhlIGZpcnN0IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBleGVjdXRlcyB0aGUg aW5zZXJ0IGNvbW1hbmQKKyMgYmVmb3JlIHRoZSBzZWNvbmQgb25lLgorJG5vZGVfc3Vic2NyaWJl ci0+d2FpdF9mb3JfbG9nKAorCXFyL0RFQlVHOiAoIFtBLVowLTldKzopPyBhcHBsaWVkIFswLTld KyBjaGFuZ2VzIGluIHRoZSBzdHJlYW1pbmcgY2h1bmsvLAorCSRvZmZzZXQpOwogCi0jIENoYW5n ZSB0aGUgbG9jYWwgdmFsdWVzIG9mIHRoZSBleHRyYSBjb2x1bW5zIG9uIHRoZSBzdWJzY3JpYmVy LAotIyB1cGRhdGUgcHVibGlzaGVyLCBhbmQgY2hlY2sgdGhhdCBzdWJzY3JpYmVyIHJldGFpbnMg dGhlIGV4cGVjdGVkCi0jIHZhbHVlcy4gVGhpcyBpcyB0byBlbnN1cmUgdGhhdCBub24tc3RyZWFt aW5nIHRyYW5zYWN0aW9ucyBiZWhhdmUKLSMgcHJvcGVybHkgYWZ0ZXIgYSBzdHJlYW1pbmcgdHJh bnNhY3Rpb24uCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiVVBE QVRFIHRlc3RfdGFiIFNFVCBjID0gJ2Vwb2NoJzo6dGltZXN0YW1wdHogKyA5ODc2NTQzMjEgKiBp bnRlcnZhbCAnMXMnIgotKTsKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs Ci0JIlVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShhOjp0ZXh0KSIpOworCSJJTlNFUlQgSU5U TyB0ZXN0X3RhYl8yIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSki KTsKIAorJGluIC49IHF7CitDT01NSVQ7CitccQorfTsKKyRoLT5maW5pc2g7CisKKyRub2RlX3N1 YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gZGVhZGxvY2sg ZGV0ZWN0ZWQvLAorCSRvZmZzZXQpOworCisjIEluIG9yZGVyIGZvciB0aGUgdHdvIHRyYW5zYWN0 aW9ucyB0byBiZSBjb21wbGV0ZWQgbm9ybWFsbHkgd2l0aG91dCBjYXVzaW5nCisjIGNvbmZsaWN0 cyBkdWUgdG8gdGhlIHVuaXF1ZSBpbmRleCwgd2UgdGVtcG9yYXJpbHkgZHJvcCBpdC4KKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCBpZHhfdGFiIik7 CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBp biB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKIAotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGV4dHJhY3QoZXBvY2ggZnJvbSBjKSA9IDk4 NzY1NDMyMSksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiCi0pOwotaXMoJHJlc3VsdCwg cXEoNjY2N3w2NjY3fDY2NjcpLAotCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWxs eSBjaGFuZ2VkIGRhdGEnKTsKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiXzIiKTsKK2lzKCRy ZXN1bHQsIHFxKDEwMDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRy b3BwaW5nIGluZGV4Jyk7CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNo ZXItPnN0b3A7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFt X3N1YnhhY3QucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3Qu cGwKaW5kZXggNjQ5ZGQ5NS4uMmYwMTQ4YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAxNl9zdHJlYW1fc3VieGFjdC5wbApAQCAtOCw2ICs4LDczIEBAIHVzZSBQb3N0Z3JlU1FMOjpU ZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1v cmU7CiAKKyMgQ2hlY2sgdGhhdCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGhhcyBmaW5pc2hl ZCBhcHBseWluZyB0aGUgc3RyZWFtaW5nCisjIHRyYW5zYWN0aW9uLgorc3ViIGNoZWNrX3BhcmFs bGVsX2xvZworeworCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWws ICR0eXBlKSA9IEBfOworCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmli ZXItPndhaXRfZm9yX2xvZygKKwkJCXFyL0RFQlVHOiAoIFtBLVowLTldKzopPyBmaW5pc2hlZCBw cm9jZXNzaW5nIHRoZSBTVFJFQU0gJHR5cGUgY29tbWFuZC8sCisJCQkkb2Zmc2V0KTsKKwl9Cit9 CisKKyMgQ29tbW9uIHRlc3Qgc3RlcHMgZm9yIGJvdGggdGhlIHN0cmVhbWluZz1vbiBhbmQgc3Ry ZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2Rl X3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBA XzsKKworCW15ICRvZmZzZXQgPSAwOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJv bSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkj IEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgc29tZSByb3dzLgorCSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNSkgcyhp KTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwor CURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlTQVZFUE9JTlQgczE7 CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3Nlcmllcyg2LCA4KSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBX SEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykg PSAwOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDksIDExKSBzKGkpOworCVVQREFURSB0ZXN0 X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVz dF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCVNBVkVQT0lOVCBzMzsKKwlJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEyLCAx NCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikg PSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlTQVZFUE9J TlQgczQ7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygxNSwgMTcpIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0g bWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBt b2QoYSwzKSA9IDA7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3Jp YmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdDT01NSVQnKTsKKworCW15ICRyZXN1bHQgPQor CSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJl c3VsdCwgcXEoMTJ8MTJ8MTIpLAorCQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmli ZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZh dWx0cycKKwkpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgKGEg PiAyKSIpOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Cit9 CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5p bml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM3LDYgKzEwNCwxMCBAQCAk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJ T04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1 Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3Ry ZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9O IHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9 JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5nID0gb24pIgogKTsK QEAgLTQ5LDQxICsxMjAsMzQgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291 bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8 MnwyKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAot IyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIHNvbWUgcm93cy4KLSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNSkgcyhpKTsK LVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxF VEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQgczE7Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDYsIDgpIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9k KGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotU0FW RVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg5LCAxMSkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9 IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBt b2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQgczM7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEyLCAxNCkgcyhpKTsKLVVQREFU RSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQgczQ7Ci1JTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1 LCAxNykgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwy KSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1DT01NSVQ7 Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQot JHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJT RUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7 Ci1pcygkcmVzdWx0LCBxcSgxMnwxMnwxMiksCi0JJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBz dWJzY3JpYmVyIGluIHN0cmVhbWluZyBtb2RlIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9j YWwgZGVmYXVsdHMnCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNj cmliZXIsICRhcHBuYW1lLCAwKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxp Y2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdz dHJlYW1pbmcnOyIKICk7CiAKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxsZWwp Iik7CisKKyRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJT RUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxp Y2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQor ICBvciBkaWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0 IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CisKKyMgV2UgbmVlZCB0byBjaGVjayBERUJV RyBsb2dzIHRvIGVuc3VyZSB0aGF0IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaGFzCisjIGFw cGxpZWQgdGhlIHRyYW5zYWN0aW9uLiBTbywgYnVtcCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4KKyRu b2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9t ZXNzYWdlcyA9IGRlYnVnMSIpOworJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCisjIFJ1biBh IHF1ZXJ5IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSByZWxvYWQgaGFzIHRha2VuIGVmZmVjdC4KKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxe1NFTEVDVCAxfSk7CisKK3Rl c3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUs IDEpOworCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwog CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5wbCBi L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsCmluZGV4IDJmYmQ2NDMu LjYyNjY3NmEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1f ZGRsLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsCkBA IC0yLDYgKzIsOSBAQAogIyBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyMywgUG9zdGdyZVNRTCBHbG9i YWwgRGV2ZWxvcG1lbnQgR3JvdXAKIAogIyBUZXN0IHN0cmVhbWluZyBvZiBsYXJnZSB0cmFuc2Fj dGlvbiB3aXRoIERETCBhbmQgc3VidHJhbnNhY3Rpb25zCisjCisjIFRoaXMgZmlsZSBpcyBtYWlu bHkgdG8gdGVzdCB0aGUgRERML0RNTCBpbnRlcmFjdGlvbiBvZiB0aGUgcHVibGlzaGVyIHNpZGUs CisjIHNvIHdlIGRpZG4ndCBhZGQgYSBwYXJhbGxlbCBhcHBseSB2ZXJzaW9uIGZvciB0aGUgdGVz dHMgaW4gdGhpcyBmaWxlLgogdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5nczsKIHVzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4 X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsCmluZGV4IDE3MGVlMTAuLmRjZTE0YjEgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbAor KysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwK QEAgLTgsNiArOCwxMjQgQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9z dGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGF0IHRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaGFzIGZpbmlzaGVkIGFwcGx5aW5nIHRoZSBzdHJlYW1p bmcKKyMgdHJhbnNhY3Rpb24uCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2Rl X3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJHR5cGUpID0gQF87CisKKwlpZiAo JGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCQkJ cXIvREVCVUc6ICggW0EtWjAtOV0rOik/IGZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNUUkVBTSAk dHlwZSBjb21tYW5kLywKKwkJCSRvZmZzZXQpOworCX0KK30KKworIyBDb21tb24gdGVzdCBzdGVw cyBmb3IgYm90aCB0aGUgc3RyZWFtaW5nPW9uIGFuZCBzdHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMu CitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJz Y3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBfOworCisJbXkgJG9mZnNldCA9IDA7 CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0g LXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgc3RyZWFtZWQgdHJhbnNhY3Rpb24g d2l0aCBEREwsIERNTCBhbmQgUk9MTEJBQ0tzCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo CisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVT ICgzLCBtZDUoMzo6dGV4dCkpOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3Rh YiBWQUxVRVMgKDQsIG1kNSg0Ojp0ZXh0KSk7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFZBTFVFUyAoNSwgbWQ1KDU6OnRleHQpKTsKKwlTQVZFUE9JTlQgczM7CisJSU5T RVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg2LCBtZDUoNjo6dGV4dCkpOworCVJPTExCQUNLIFRP IHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoNywgbWQ1KDc6OnRleHQpKTsKKwlS T0xMQkFDSyBUTyBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDgsIG1kNSg4Ojp0 ZXh0KSk7CisJU0FWRVBPSU5UIHM0OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOSwg bWQ1KDk6OnRleHQpKTsKKwlTQVZFUE9JTlQgczU7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFM VUVTICgxMCwgbWQ1KDEwOjp0ZXh0KSk7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygk bm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdDT01NSVQnKTsKKworCW15 ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0 LCBxcSg2fDApLAorCQknY2hlY2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQg b24gc3Vic2NyaWJlciBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwor CSk7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0 ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgc3RyZWFtZWQgdHJhbnNhY3Rp b24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyBvdXQgb2Ygb3JkZXIKKwkjIHN1YnRyYW5zYWN0 aW9uIFJPTExCQUNLcworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMn LCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMTEsIG1kNSgxMTo6 dGV4dCkpOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDEy LCBtZDUoMTI6OnRleHQpKTsKKwlTQVZFUE9JTlQgczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIg VkFMVUVTICgxMywgbWQ1KDEzOjp0ZXh0KSk7CisJU0FWRVBPSU5UIHMzOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFZBTFVFUyAoMTQsIG1kNSgxNDo6dGV4dCkpOworCVJFTEVBU0UgczI7CisJSU5T RVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgxNSwgbWQ1KDE1Ojp0ZXh0KSk7CisJUk9MTEJBQ0sg VE8gczE7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAk b2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdDT01NSVQnKTsKKworCSRyZXN1bHQgPQorCSAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNv dW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSg3fDApLAorCQknY2hlY2sg cm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlcicpOworCisJ IyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRu b2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdpdGgg c3Vic2NyaWJlciByZWNlaXZpbmcgcm9sbGJhY2sKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxV RVMgKDE2LCBtZDUoMTY6OnRleHQpKTsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVz dF90YWIgVkFMVUVTICgxNywgbWQ1KDE3Ojp0ZXh0KSk7CisJU0FWRVBPSU5UIHMyOworCUlOU0VS VCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMTgsIG1kNSgxODo6dGV4dCkpOworCVJPTExCQUNLOwor CX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKwor CWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxs ZWwsICdBQk9SVCcpOworCisJJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3Rh YiIpOworCWlzKCRyZXN1bHQsIHFxKDd8MCksICdjaGVjayByb2xsYmFjayB3YXMgcmVmbGVjdGVk IG9uIHN1YnNjcmliZXInKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIChhID4gMikiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0g UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxp c2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNiw2ICsxNTQs MTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBV QkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0g J3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVz aW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlND UklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlv bl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9u KSIKICk7CkBAIC00OCw4MSArMTcwLDMzIEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQo KiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MCksICdjaGVj ayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMgc3RyZWFtZWQg dHJhbnNhY3Rpb24gd2l0aCBEREwsIERNTCBhbmQgUk9MTEJBQ0tzCi0kbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3Rh YiBWQUxVRVMgKDMsIG1kNSgzOjp0ZXh0KSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0 ZXN0X3RhYiBWQUxVRVMgKDQsIG1kNSg0Ojp0ZXh0KSk7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQg SU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDUsIG1kNSg1Ojp0ZXh0KSk7Ci1TQVZFUE9JTlQgczM7Ci1J TlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDYsIG1kNSg2Ojp0ZXh0KSk7Ci1ST0xMQkFDSyBU TyBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoNywgbWQ1KDc6OnRleHQpKTsKLVJP TExCQUNLIFRPIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg4LCBtZDUoODo6dGV4 dCkpOwotU0FWRVBPSU5UIHM0OwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5LCBtZDUo OTo6dGV4dCkpOwotU0FWRVBPSU5UIHM1OwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgx MCwgbWQ1KDEwOjp0ZXh0KSk7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00g dGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDZ8MCksCi0JJ2NoZWNrIHJvbGxiYWNrIHRvIHNh dmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29u dGFpbiBsb2NhbCBkZWZhdWx0cycKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5v ZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0 YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0 YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAotIyBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3aXRoIHN1 YnNjcmliZXIgcmVjZWl2aW5nIG91dCBvZiBvcmRlciBzdWJ0cmFuc2FjdGlvbgotIyBST0xMQkFD S3MKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsK LUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMTEsIG1kNSgxMTo6dGV4dCkpOwotU0FWRVBP SU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgxMiwgbWQ1KDEyOjp0ZXh0KSk7 Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDEzLCBtZDUoMTM6 OnRleHQpKTsKLVNBVkVQT0lOVCBzMzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMTQs IG1kNSgxNDo6dGV4dCkpOwotUkVMRUFTRSBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVF UyAoMTUsIG1kNSgxNTo6dGV4dCkpOwotUk9MTEJBQ0sgVE8gczE7Ci1DT01NSVQ7Ci19KTsKLQot JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9 Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDd8MCksCi0J J2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIn KTsKLQotIyBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmliZXIgcmVjZWl2aW5nIHJv bGxiYWNrCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVH SU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDE2LCBtZDUoMTY6OnRleHQpKTsKLVNB VkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMTcsIG1kNSgxNzo6dGV4 dCkpOwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgxOCwgbWQ1 KDE4Ojp0ZXh0KSk7Ci1ST0xMQkFDSzsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0 X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoN3wwKSwgJ2NoZWNrIHJvbGxiYWNrIHdhcyByZWZsZWN0 ZWQgb24gc3Vic2NyaWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxl bCkiKTsKKworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJ IlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBw bGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICAp CisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3Rh cnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKKworIyBXZSBuZWVkIHRvIGNoZWNrIERF QlVHIGxvZ3MgdG8gZW5zdXJlIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBoYXMKKyMg YXBwbGllZCB0aGUgdHJhbnNhY3Rpb24uIFNvLCBidW1wIHVwIHRoZSBsb2cgdmVyYm9zaXR5Lgor JG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJsb2dfbWlu X21lc3NhZ2VzID0gZGVidWcxIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisKKyMgUnVu IGEgcXVlcnkgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHJlbG9hZCBoYXMgdGFrZW4gZWZmZWN0Lgor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7U0VMRUNUIDF9KTsKKwor dGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFt ZSwgMSk7CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1YnhhY3Rf ZGRsX2Fib3J0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0 X2RkbF9hYm9ydC5wbAppbmRleCA5NjJlMzQ3Li5iMzAyMjNkIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsCisrKyBiL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwKQEAg LTMsNiArMyw5IEBACiAKICMgVGVzdCBzdHJlYW1pbmcgb2YgdHJhbnNhY3Rpb24gd2l0aCBzdWJ0 cmFuc2FjdGlvbnMsIERETHMsIERNTHMsIGFuZAogIyByb2xsYmFja3MKKyMKKyMgVGhpcyBmaWxl IGlzIG1haW5seSB0byB0ZXN0IHRoZSBEREwvRE1MIGludGVyYWN0aW9uIG9mIHRoZSBwdWJsaXNo ZXIgc2lkZSwKKyMgc28gd2UgZGlkbid0IGFkZCBhIHBhcmFsbGVsIGFwcGx5IHZlcnNpb24gZm9y IHRoZSB0ZXN0cyBpbiB0aGlzIGZpbGUuCiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzOwogdXNl IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCmluZGV4IDhlM2U3NGIuLmU2MjRlYmUgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCisrKyBi L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCkBAIC01LDYg KzUsOCBAQAogIwogIyBJbmNsdWRlcyB0ZXN0cyBmb3Igb3B0aW9ucyAyUEMgKG5vdC1zdHJlYW1p bmcpIGFuZCBhbHNvIGZvciAyUEMgKHN0cmVhbWluZykuCiAjCisjIFR3by1waGFzZSBhbmQgcGFy YWxsZWwgYXBwbHkgd2lsbCBiZSB0ZXN0ZWQgaW4gMDIzX3R3b3BoYXNlX3N0cmVhbSwgc28gd2UK KyMgZGlkbid0IGFkZCBhIHBhcmFsbGVsIGFwcGx5IHZlcnNpb24gZm9yIHRoZSB0ZXN0cyBpbiB0 aGlzIGZpbGUuCiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzOwogdXNlIFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdv cGhhc2Vfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0 cmVhbS5wbAppbmRleCA3Y2Q4MDE3Li43NWNhODM3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKQEAgLTgsNiArOCwyODkgQEAgdXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2Ug VGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGF0IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaGFz IGZpbmlzaGVkIGFwcGx5aW5nIHRoZSBzdHJlYW1pbmcKKyMgdHJhbnNhY3Rpb24uCitzdWIgY2hl Y2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19w YXJhbGxlbCwgJHR5cGUpID0gQF87CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVf c3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCQkJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/IGZp bmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNUUkVBTSAkdHlwZSBjb21tYW5kLywKKwkJCSRvZmZzZXQp OworCX0KK30KKworIyBDb21tb24gdGVzdCBzdGVwcyBmb3IgYm90aCB0aGUgc3RyZWFtaW5nPW9u IGFuZCBzdHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlt eSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFs bGVsKSA9IEBfOworCisJbXkgJG9mZnNldCA9IDA7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisJIyBUZXN0IDJQQyBQUkVQQVJFIC8gQ09NTUlUIFBSRVBBUkVELgorCSMgMS4g RGF0YSBpcyBzdHJlYW1lZCBhcyBhIDJQQyB0cmFuc2FjdGlvbi4KKwkjIDIuIFRoZW4gZG8gY29t bWl0IHByZXBhcmVkLgorCSMKKwkjIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1 YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRv ZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBjaGVjayB0aGF0IDJQ QyBnZXRzIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcgorCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRl bGV0ZSBzb21lIHJvd3MuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jl cycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUpIHMoaSk7CisJCVVQREFURSB0ZXN0X3Rh YiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVw YXJlZF90YWInO30pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAk aXNfcGFyYWxsZWwsICdQUkVQQVJFJyk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMg aW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCW15ICRyZXN1bHQgPSAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBn X3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMg cHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21t aXR0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQ09NTUlU IFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlz IGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQo ZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDR8NHw0KSwKKwkJJ1Jv d3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRy YSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKwkkcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJP TSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9u IGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisJIyBUZXN0IDJQQyBQUkVQQVJFIC8gUk9MTEJBQ0sgUFJFUEFSRUQuCisJIyAx LiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9u IHN1YnNjcmliZXIuCisJIyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQQy4KKwkjIDMuIERv IHJvbGxiYWNrIHByZXBhcmVkLgorCSMKKwkjIEV4cGVjdCBkYXRhIHJvbGxzIGJhY2sgbGVhdmlu ZyBvbmx5IHRoZSBvcmlnaW5hbCAyIHJvd3MuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxs IGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCisJIyBDaGVjayB0aGUg c3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmli ZXItPmxvZ2ZpbGU7CisKKwkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBzb21lIHJv d3MuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJF R0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDMsIDUpIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1k NShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1v ZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30p OworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNo ZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWws ICdQUkVQQVJFJyk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQg c3RhdGUgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3Rz OyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vi c2NyaWJlcicpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCisJJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlJPTExCQUNLIFBSRVBBUkVEICd0ZXN0 X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vi c2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVz dF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgyfDJ8MiksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQ QyBhcmUgcm9sbGVkIGJhY2ssIGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwgMiByb3dzJworCSk7 CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0 LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgQ2hlY2sgdGhhdCAyUEMgQ09NTUlUIFBS RVBBUkVEIGlzIGRlY29kZWQgcHJvcGVybHkgb24gY3Jhc2ggcmVzdGFydC4KKwkjIDEuIGluc2Vy dCwgdXBkYXRlIGFuZCBkZWxldGUgc29tZSByb3dzLgorCSMgMi4gVGhlbiBzZXJ2ZXIgY3Jhc2hl cyBiZWZvcmUgdGhlIDJQQyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCisJIyAzLiBBZnRlciBz ZXJ2ZXJzIGFyZSByZXN0YXJ0ZWQgdGhlIHBlbmRpbmcgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVk LgorCSMKKwkjIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIgc2lk ZSBhZnRlciB0aGUgY29tbWl0LgorCSMgTm90ZTogYm90aCBwdWJsaXNoZXIgYW5kIHN1YnNjcmli ZXIgZG8gY3Jhc2gvcmVzdGFydC4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK KwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMg JG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1KSBzKGkpOworCQlV UERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxF VEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJ T04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3N1YnNjcmliZXItPnN0b3AoJ2lt bWVkaWF0ZScpOworCSRub2RlX3B1Ymxpc2hlci0+c3RvcCgnaW1tZWRpYXRlJyk7CisKKwkkbm9k ZV9wdWJsaXNoZXItPnN0YXJ0OworCSRub2RlX3N1YnNjcmliZXItPnN0YXJ0OworCisJIyBXZSBk b24ndCB0cnkgdG8gY2hlY2sgdGhlIGxvZyBmb3IgcGFyYWxsZWwgb3B0aW9uIGhlcmUgYXMgdGhl IHN1YnNjcmliZXIKKwkjIG1heSBoYXZlIHN0b3BwZWQgYWZ0ZXIgZmluaXNoaW5nIHRoZSBwcmVw YXJlIGFuZCBiZWZvcmUgbG9nZ2luZyB0aGUKKwkjIGFwcHJvcHJpYXRlIG1lc3NhZ2UuCisKKwkj IGNvbW1pdCBwb3N0IHRoZSByZXN0YXJ0CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCSRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIGlu c2VydHMgYXJlIHZpc2libGUKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5 KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoNHw0fDQpLAorCQknUm93cyBpbnNl cnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVt bnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworCSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgUk9M TEJBQ0sgUFJFUEFSRUQuCisJIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdo aWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCisJIyAyLiBEYXRhIGlzIHN0cmVhbWVk IHVzaW5nIDJQQy4KKwkjIDMuIEEgc2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBh ZnRlciB0aGUgUFJFUEFSRS4KKwkjIDQuIFRoZW4gZG8gYSBST0xMQkFDSyBQUkVQQVJFRC4KKwkj CisJIyBFeHBlY3QgdGhlIDJQQyBkYXRhIHJvbGxzIGJhY2sgbGVhdmluZyBvbmx5IDMgcm93cyBv biB0aGUgc3Vic2NyaWJlcgorCSMgKHRoZSBvcmlnaW5hbCAyICsgaW5zZXJ0ZWQgMSkuCisJIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRh IGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEg PiAyOyIpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9m ZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIFRoZW4gaW5zZXJ0LCB1 cGRhdGUgYW5kIGRlbGV0ZSBzb21lIHJvd3MuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo CisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUpIHMoaSk7CisJCVVQ REFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVU RSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElP TiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVy LCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdQUkVQQVJFJyk7CisKKwkjIGNoZWNrIHRoYXQgdHJh bnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgq KSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNh Y3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJIyBJbnNlcnQgYSBkaWZmZXJl bnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKKwkj IE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwgaG9sZHMgcm93IGxvY2tzIHNvIG1ha2Ug c3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBzZXBhcmF0ZSBwcmltYXJ5IGtleQorCSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBW QUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKKworCSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgYWJv cnRlZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJST0xMQkFD SyBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBp cyBhYm9ydGVkIG9uIHN1YnNjcmliZXIsCisJIyBidXQgdGhlIGV4dHJhIElOU0VSVCBvdXRzaWRl IG9mIHRoZSAyUEMgc3RpbGwgd2FzIHJlcGxpY2F0ZWQKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMp LCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoM3wzfDMp LAorCQknY2hlY2sgdGhlIG91dHNpZGUgaW5zZXJ0IHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicp OworCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3Vs dCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIERvIElOU0VSVCBhZnRlciB0aGUgUFJF UEFSRSBidXQgYmVmb3JlIENPTU1JVCBQUkVQQVJFRC4KKwkjIDEuIFRhYmxlIGlzIGRlbGV0ZWQg YmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KKwkjIDIu IERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgorCSMgMy4gQSBzaW5nbGUgcm93IElOU0VSVCBp cyBkb25lIHdoaWNoIGlzIGFmdGVyIHRoZSBQUkVQQVJFLgorCSMgNC4gVGhlbiBkbyBhIENPTU1J VCBQUkVQQVJFRC4KKwkjCisJIyBFeHBlY3QgMlBDIGRhdGEgKyB0aGUgZXh0cmEgcm93IGFyZSBv biB0aGUgc3Vic2NyaWJlcgorCSMgKHRoZSAzMzM0ICsgaW5zZXJ0ZWQgMSA9IDMzMzUpLgorCSMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0 YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBsaWNhdGVkKQorCSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBh ID4gMjsiKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRv ZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBUaGVuIGluc2VydCwg dXBkYXRlIGFuZCBkZWxldGUgc29tZSByb3dzLgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1KSBzKGkpOworCQlV UERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxF VEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJ T04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJl ciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnUFJFUEFSRScpOworCisJIyBjaGVjayB0aGF0IHRy YW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQo KikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5z YWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgSW5zZXJ0IGEgZGlmZmVy ZW50IHJlY29yZCAobm93IHdlIGFyZSBvdXRzaWRlIG9mIHRoZSAyUEMgdHJhbnNhY3Rpb24pCisJ IyBOb3RlOiB0aGUgMlBDIHRyYW5zYWN0aW9uIHN0aWxsIGhvbGRzIHJvdyBsb2NrcyBzbyBtYWtl IHN1cmUgdGhpcyBpbnNlcnQgaXMgZm9yIGEgc2VwYXJhcmUgcHJpbWFyeSBrZXkKKwkkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiSU5TRVJUIElOVE8gdGVzdF90YWIg VkFMVUVTICg5OTk5OSwgJ2Zvb2JhcicpIik7CisKKwkjIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGNv bW1pdHRlZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJDT01N SVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKworCSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24g aXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3Vu dChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoNXw1fDUpLAorCQkn Um93cyBpbnNlcnRlZCBieSAyUEMgKGFzIHdlbGwgYXMgb3V0c2lkZSBpbnNlcnQpIGhhdmUgY29t bWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVm YXVsdHMnCisJKTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwor CWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmli ZXInKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIp OworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Cit9CisKICMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgU2V0dXAKICMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKQEAgLTQ4LDYgKzMzMSwxMCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUg dGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgKIAkncG9zdGdyZXMnLCAiCiAJQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViCkBAIC02NCwy MzYgKzM1MSwzOCBAQCBteSAkdHdvcGhhc2VfcXVlcnkgPQogJG5vZGVfc3Vic2NyaWJlci0+cG9s bF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLCAkdHdvcGhhc2VfcXVlcnkpCiAgIG9yIGRpZSAiVGlt ZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHN1YnNjcmliZXIgdG8gZW5hYmxlIHR3b3BoYXNlIjsK IAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBDaGVjayBpbml0aWFsIGRhdGEg d2FzIGNvcGllZCB0byBzdWJzY3JpYmVyCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CiBteSAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJ IlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIi KTsKIGlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVk IHRvIHN1YnNjcmliZXInKTsKIAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBU ZXN0IDJQQyBQUkVQQVJFIC8gQ09NTUlUIFBSRVBBUkVELgotIyAxLiBEYXRhIGlzIHN0cmVhbWVk IGFzIGEgMlBDIHRyYW5zYWN0aW9uLgotIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJlZC4KLSMK LSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlciBzaWRlIGFmdGVy IHRoZSBjb21taXQuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgY2hlY2sg dGhhdCAyUEMgZ2V0cyByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIKLSMgSW5zZXJ0LCB1cGRhdGUg YW5kIGRlbGV0ZSBzb21lIHJvd3MuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9z dGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNSkgcyhpKTsKLQlVUERBVEUgdGVzdF90 YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBh cmVkX3RhYic7fSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBz dWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJl c3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7Ci0K LSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsi KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKK3Rlc3Rf c3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDAp OwogCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIK LSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VM RUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwot aXMoJHJlc3VsdCwgcXEoNHw0fDQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1p dHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1 bHRzJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2lu ZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxp Y2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7Ci0k cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVD VCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCks ICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBSRVBBUkUgLyBST0xMQkFDSyBQUkVQ QVJFRC4KLSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBhcmUgcmVw bGljYXRlZCBvbiBzdWJzY3JpYmVyLgotIyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQQy4K LSMgMy4gRG8gcm9sbGJhY2sgcHJlcGFyZWQuCi0jCi0jIEV4cGVjdCBkYXRhIHJvbGxzIGJhY2sg bGVhdmluZyBvbmx5IHRoZSBvcmlnaW5hbCAyIHJvd3MuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCi0KLSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAo d2lsbCBiZSByZXBsaWNhdGVkKQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwotCi0jIFRoZW4gaW5zZXJ0 LCB1cGRhdGUgYW5kIGRlbGV0ZSBzb21lIHJvd3MuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNSkgcyhpKTsKLQlVUERB VEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBG Uk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0 ZXN0X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBz dGF0ZSBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIp OwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3Jp YmVyJyk7Ci0KLSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgYWJvcnRlZAotJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiUk9MTEJBQ0sgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFy ZWRfdGFiJzsiKTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcgot JHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxF Q1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1p cygkcmVzdWx0LCBxcSgyfDJ8MiksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGFyZSByb2xsZWQg YmFjaywgbGVhdmluZyBvbmx5IHRoZSBvcmlnaW5hbCAyIHJvd3MnKTsKLQotJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikg RlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rp b24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKLSMgQ2hlY2sgdGhhdCAyUEMgQ09NTUlUIFBSRVBBUkVEIGlzIGRlY29kZWQgcHJv cGVybHkgb24gY3Jhc2ggcmVzdGFydC4KLSMgMS4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBz b21lIHJvd3MuCi0jIDIuIFRoZW4gc2VydmVyIGNyYXNoZXMgYmVmb3JlIHRoZSAyUEMgdHJhbnNh Y3Rpb24gaXMgY29tbWl0dGVkLgotIyAzLiBBZnRlciBzZXJ2ZXJzIGFyZSByZXN0YXJ0ZWQgdGhl IHBlbmRpbmcgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLgotIwotIyBFeHBlY3QgYWxsIGRhdGEg aXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KLSMgTm90 ZTogYm90aCBwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIgZG8gY3Jhc2gvcmVzdGFydC4KLSMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo Ci0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUpIHMoaSk7Ci0JVVBEQVRF IHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVz dF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9zdWJzY3JpYmVyLT5zdG9wKCdpbW1lZGlhdGUn KTsKLSRub2RlX3B1Ymxpc2hlci0+c3RvcCgnaW1tZWRpYXRlJyk7Ci0KLSRub2RlX3B1Ymxpc2hl ci0+c3RhcnQ7Ci0kbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKIAotIyBjb21taXQgcG9zdCB0aGUg cmVzdGFydAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQ09NTUlU IFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0kbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIGluc2VydHMgYXJlIHZpc2libGUKLSRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMo JHJlc3VsdCwgcXEoNHw0fDQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRl ZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRz JwotKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBEbyBJTlNFUlQgYWZ0 ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBST0xMQkFDSyBQUkVQQVJFRC4KLSMgMS4gVGFibGUg aXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3Jp YmVyLgotIyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQQy4KLSMgMy4gQSBzaW5nbGUgcm93 IElOU0VSVCBpcyBkb25lIHdoaWNoIGlzIGFmdGVyIHRoZSBQUkVQQVJFLgotIyA0LiBUaGVuIGRv IGEgUk9MTEJBQ0sgUFJFUEFSRUQuCi0jCi0jIEV4cGVjdCB0aGUgMlBDIGRhdGEgcm9sbHMgYmFj ayBsZWF2aW5nIG9ubHkgMyByb3dzIG9uIHRoZSBzdWJzY3JpYmVyCi0jICh0aGUgb3JpZ2luYWwg MiArIGluc2VydGVkIDEpLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIEZp cnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRl ZCkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0 ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxl dGUgc29tZSByb3dzLgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywg cXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUpIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBi ID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVS RSBtb2QoYSwzKSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWIn O30pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0j IGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJl cgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJT RUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFx KDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIEluc2Vy dCBhIGRpZmZlcmVudCByZWNvcmQgKG5vdyB3ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5z YWN0aW9uKQotIyBOb3RlOiB0aGUgMlBDIHRyYW5zYWN0aW9uIHN0aWxsIGhvbGRzIHJvdyBsb2Nr cyBzbyBtYWtlIHN1cmUgdGhpcyBpbnNlcnQgaXMgZm9yIGEgc2VwYXJhdGUgcHJpbWFyeSBrZXkK LSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIklOU0VSVCBJTlRPIHRl c3RfdGFiIFZBTFVFUyAoOTk5OTksICdmb29iYXInKSIpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBn ZXRzIGFib3J0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlJP TExCQUNLIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlv biBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXIsCi0jIGJ1dCB0aGUgZXh0cmEgSU5TRVJUIG91dHNp ZGUgb2YgdGhlIDJQQyBzdGlsbCB3YXMgcmVwbGljYXRlZAotJHJlc3VsdCA9ICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMp LCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzfDN8Myks ICdjaGVjayB0aGUgb3V0c2lkZSBpbnNlcnQgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7Ci0K LSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VM RUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgw KSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIERvIElOU0VSVCBhZnRlciB0aGUgUFJFUEFSRSBidXQg YmVmb3JlIENPTU1JVCBQUkVQQVJFRC4KLSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIg cm93cyB3aGljaCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgotIyAyLiBEYXRhIGlzIHN0 cmVhbWVkIHVzaW5nIDJQQy4KLSMgMy4gQSBzaW5nbGUgcm93IElOU0VSVCBpcyBkb25lIHdoaWNo IGlzIGFmdGVyIHRoZSBQUkVQQVJFLgotIyA0LiBUaGVuIGRvIGEgQ09NTUlUIFBSRVBBUkVELgot IwotIyBFeHBlY3QgMlBDIGRhdGEgKyB0aGUgZXh0cmEgcm93IGFyZSBvbiB0aGUgc3Vic2NyaWJl cgotIyAodGhlIDMzMzQgKyBpbnNlcnRlZCAxID0gMzMzNSkuCi0jIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCi0KLSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93 cyAod2lsbCBiZSByZXBsaWNhdGVkKQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwotCi0jIFRoZW4gaW5z ZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBzb21lIHJvd3MuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNSkgcyhpKTsKLQlV UERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVU RSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9O ICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJl ZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3Rz OyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJz Y3JpYmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxU RVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOwogCi0j IEluc2VydCBhIGRpZmZlcmVudCByZWNvcmQgKG5vdyB3ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBD IHRyYW5zYWN0aW9uKQotIyBOb3RlOiB0aGUgMlBDIHRyYW5zYWN0aW9uIHN0aWxsIGhvbGRzIHJv dyBsb2NrcyBzbyBtYWtlIHN1cmUgdGhpcyBpbnNlcnQgaXMgZm9yIGEgc2VwYXJhcmUgcHJpbWFy eSBrZXkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIklOU0VSVCBJ TlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OTksICdmb29iYXInKSIpOworJG5vZGVfcHVibGlzaGVy LT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBG Uk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFt ZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0 IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NS SVBUSU9OIjsKIAotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKLSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVw YXJlZF90YWInOyIpOworIyBXZSBuZWVkIHRvIGNoZWNrIERFQlVHIGxvZ3MgdG8gZW5zdXJlIHRo YXQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBoYXMKKyMgYXBwbGllZCB0aGUgdHJhbnNhY3Rp b24uIFNvLCBidW1wIHVwIHRoZSBsb2cgdmVyYm9zaXR5LgorJG5vZGVfc3Vic2NyaWJlci0+YXBw ZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7 Ciskbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CiAKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7CisjIFJ1biBhIHF1ZXJ5IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBy ZWxvYWQgaGFzIHRha2VuIGVmZmVjdC4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCBxe1NFTEVDVCAxfSk7CiAKLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBjb21t aXR0ZWQgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5 KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSg1fDV8NSksCi0JJ1Jvd3MgaW5zZXJ0 ZWQgYnkgMlBDIChhcyB3ZWxsIGFzIG91dHNpZGUgaW5zZXJ0KSBoYXZlIGNvbW1pdHRlZCBvbiBz dWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwotKTsK LQotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJT RUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFx KDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKK3Rlc3Rfc3Ry ZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwog CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIGNoZWNrIGFsbCB0aGUgY2xlYW51 cApkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA1MGQ4NmNiLi4yM2JhZmVjIDEwMDY0NAot LS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMTQ3Myw2ICsxNDczLDcgQEAgTG9naWNhbFJlcFJlbElk CiBMb2dpY2FsUmVwUmVsTWFwRW50cnkKIExvZ2ljYWxSZXBSZWxhdGlvbgogTG9naWNhbFJlcFJv bGxiYWNrUHJlcGFyZWRUeG5EYXRhCitMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhCiBMb2dpY2Fs UmVwVHVwbGVEYXRhCiBMb2dpY2FsUmVwVHlwCiBMb2dpY2FsUmVwV29ya2VyCkBAIC0xODc2LDYg KzE4NzcsOSBAQCBQYWdlWExvZ1JlY1B0cgogUGFnZXRhYmxlRW50cnkKIFBhaXJzCiBQYXJhbGxl bEFwcGVuZFN0YXRlCitQYXJhbGxlbEFwcGx5V29ya2VyRW50cnkKK1BhcmFsbGVsQXBwbHlXb3Jr ZXJJbmZvCitQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkCiBQYXJhbGxlbEJpdG1hcEhlYXBTdGF0 ZQogUGFyYWxsZWxCbG9ja1RhYmxlU2NhbkRlc2MKIFBhcmFsbGVsQmxvY2tUYWJsZVNjYW5Xb3Jr ZXIKQEAgLTE4OTUsNiArMTg5OSw3IEBAIFBhcmFsbGVsU2xvdFJlc3VsdEhhbmRsZXIKIFBhcmFs bGVsU3RhdGUKIFBhcmFsbGVsVGFibGVTY2FuRGVzYwogUGFyYWxsZWxUYWJsZVNjYW5EZXNjRGF0 YQorUGFyYWxsZWxUcmFuc1N0YXRlCiBQYXJhbGxlbFZhY3V1bVN0YXRlCiBQYXJhbGxlbFdvcmtl ckNvbnRleHQKIFBhcmFsbGVsV29ya2VySW5mbwpAQCAtMTkyNCw2ICsxOTI5LDcgQEAgUGFyc2Vy U3RhdGUKIFBhcnRDbGF1c2VJbmZvCiBQYXJ0Q2xhdXNlTWF0Y2hTdGF0dXMKIFBhcnRDbGF1c2VU YXJnZXQKK1BhcnRpYWxGaWxlU2V0U3RhdGUKIFBhcnRpdGlvbkJvdW5kSW5mbwogUGFydGl0aW9u Qm91bmRJbmZvRGF0YQogUGFydGl0aW9uQm91bmRTcGVjCkBAIC0yNzc0LDYgKzI3ODAsNyBAQCBU b2NFbnRyeQogVG9rZW5BdXhEYXRhCiBUb2tlbml6ZWRBdXRoTGluZQogVHJhY2tJdGVtCitUcmFu c0FwcGx5QWN0aW9uCiBUcmFuc0ludmFsaWRhdGlvbkluZm8KIFRyYW5zU3RhdGUKIFRyYW5zYWN0 aW9uSWQKLS0gCjIuNy4yLndpbmRvd3MuMQoK --_006_OS0PR01MB571685A645E509267AC5F30894F99OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v77-0002-Add-GUC-stream_serialize_threshold-and-test-seri.patch" Content-Description: v77-0002-Add-GUC-stream_serialize_threshold-and-test-seri.patch Content-Disposition: attachment; filename="v77-0002-Add-GUC-stream_serialize_threshold-and-test-seri.patch"; size=12800; creation-date="Sun, 08 Jan 2023 03:53:58 GMT"; modification-date="Sun, 08 Jan 2023 03:58:48 GMT" Content-Transfer-Encoding: base64 RnJvbSAxMGU0NTM4NzM0ZmMxZDUxMmVmY2U1Zjg2ZTI0Y2U1M2E1Mjg4NjJiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IEthcGlsYSA8YWthcGlsYUBwb3N0Z3Jlc3FsLm9yZz4K RGF0ZTogTW9uLCAyIEphbiAyMDIzIDE1OjM3OjI1ICswNTMwClN1YmplY3Q6IFtQQVRDSCB2Nzcg Mi81XSBBZGQgR1VDIHN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkIGFuZCB0ZXN0CiBzZXJpYWxp emluZyBtZXNzYWdlcyB0byBkaXNrLgoKLS0tCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAzMiArKysrKwogLi4uL3JlcGxpY2F0aW9uL2xvZ2lj YWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jICAgICAgfCAgMTIgKysKIHNyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICAgICAgIHwgICA5ICsrCiBzcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Y190YWJsZXMuYyAgICAgICAgICAgICAgICB8ICAxNCArKwogc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggICAgICAgICAgfCAgIDQgKwogc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgICAgICAgfCAxNDQgKysrKysr KysrKysrKysrKysrKystCiA2IGZpbGVzIGNoYW5nZWQsIDIxMiBpbnNlcnRpb25zKCspLCAzIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9z cmMvc2dtbC9jb25maWcuc2dtbAppbmRleCBhMzNhOTM1Li42NjliYWJmIDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBA IC0xMTY1MCw2ICsxMTY1MCwzOCBAQCBMT0c6ICBDbGVhblVwTG9jazogZGVsZXRpbmc6IGxvY2so MHhiN2FjZDg0NCkgaWQoMjQ2ODgsMjQ2OTYsMCwwLDAsMSkKICAgICAgIDwvbGlzdGl0ZW0+CiAg ICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1zdHJlYW0t c2VyaWFsaXplLXRocmVzaG9sZCIgeHJlZmxhYmVsPSJzdHJlYW1fc2VyaWFsaXplX3RocmVzaG9s ZCI+CisgICAgICA8dGVybT48dmFybmFtZT5zdHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZDwvdmFy bmFtZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQorICAgICAgPGluZGV4dGVybT4KKyAgICAgICA8 cHJpbWFyeT48dmFybmFtZT5zdHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZDwvdmFybmFtZT4gY29u ZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4dGVybT4KKyAgICAg IDwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgRm9yY2Vz IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHRvIHNlcmlhbGl6ZSBtZXNzYWdlcyB0byBmaWxlcyBh ZnRlcgorICAgICAgICBzZW5kaW5nIHNwZWNpZmllZCBhbW91bnQgb2Ygc3RyZWFtaW5nIGNodW5r cyB0byB0aGUgcGFyYWxsZWwgYXBwbHkKKyAgICAgICAgd29ya2VyLiBTZXR0aW5nIHRoaXMgdG8g emVybyBzZXJpYWxpemUgYWxsIG1lc3NhZ2VzLiBBIHZhbHVlIG9mCisgICAgICAgIDxsaXRlcmFs Pi0xPC9saXRlcmFsPiAodGhlIGRlZmF1bHQpIGRpc2FibGVzIHRoaXMgZmVhdHVyZS4gVGhpcyBp cworICAgICAgICBpbnRlbmRlZCB0byB0ZXN0IHNlcmlhbGl6YXRpb24gdG8gZmlsZXMgd2l0aAor ICAgICAgICA8bGl0ZXJhbD5zdHJlYW1pbmcgPSBwYXJhbGxlbDwvbGl0ZXJhbD4uCisgICAgICAg PC9wYXJhPgorCisgICAgICAgPHBhcmE+CisgICAgICAgIFdoZW4gbG9naWNhbCByZXBsaWNhdGlv biBzdWJzY3JpcHRpb24gPGxpdGVyYWw+c3RyZWFtaW5nPC9saXRlcmFsPgorICAgICAgICBwYXJh bWV0ZXIgaXMgc2V0IHRvIDxsaXRlcmFsPnBhcmFsbGVsPC9saXRlcmFsPiwgdGhlIGxlYWRlciBh cHBseSB3b3JrZXIKKyAgICAgICAgc2VuZHMgbWVzc2FnZXMgdG8gcGFyYWxsZWwgd29ya2VycyB3 aXRoIGEgdGltZW91dC4gQnkgZGVmYXVsdCwgdGhlCisgICAgICAgIGxlYWRlciBhcHBseSB3b3Jr ZXIgd2lsbCBzZXJpYWxpemUgdGhlIHJlbWFpbmluZyBtZXNzYWdlcyB0byBmaWxlcyBpZgorICAg ICAgICB0aGUgdGltZW91dCBpcyBleGNlZWRlZC4gSWYgdGhpcyBvcHRpb24gaXMgc2V0IHRvIGFu eSB2YWx1ZSBvdGhlciB0aGFuCisgICAgICAgIDxsaXRlcmFsPi0xPC9saXRlcmFsPiwgc2VyaWFs aXplIHRvIGZpbGVzIGV2ZW4gd2l0aG91dCB0aW1lb3V0LgorICAgICAgIDwvcGFyYT4KKworICAg ICAgIDxwYXJhPgorICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gb25seSBiZSBzZXQgaW4gdGhl IDxmaWxlbmFtZT5wb3N0Z3Jlc3FsLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICBmaWxlIG9yIG9u IHRoZSBzZXJ2ZXIgY29tbWFuZCBsaW5lLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0 ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgPC92YXJpYWJsZWxpc3Q+CiAgIDwvc2Vj dDE+CiAgIDxzZWN0MSBpZD0icnVudGltZS1jb25maWctc2hvcnQiPgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCAx YjNiNzQxLi4zZDdmOGE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpAQCAtMjU0LDYgKzI1NCw5IEBAIHN0YXRpYyBQ YXJhbGxlbEFwcGx5V29ya2VySW5mbyAqc3RyZWFtX2FwcGx5X3dvcmtlciA9IE5VTEw7CiAvKiBB IGxpc3QgdG8gbWFpbnRhaW4gc3VidHJhbnNhY3Rpb25zLCBpZiBhbnkuICovCiBzdGF0aWMgTGlz dCAqc3VieGFjdGxpc3QgPSBOSUw7CiAKKy8qIEdVQyB2YXJpYWJsZSAqLworaW50CQkJc3RyZWFt X3NlcmlhbGl6ZV90aHJlc2hvbGQgPSAtMTsKKwogc3RhdGljIHZvaWQgcGFfZnJlZV93b3JrZXJf aW5mbyhQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pOwogc3RhdGljIFBhcmFsbGVsVHJh bnNTdGF0ZSBwYV9nZXRfeGFjdF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hh cmVkKTsKIHN0YXRpYyBQYXJ0aWFsRmlsZVNldFN0YXRlIHBhX2dldF9maWxlc2V0X3N0YXRlKHZv aWQpOwpAQCAtMTE0OSw2ICsxMTUyLDE1IEBAIHBhX3NlbmRfZGF0YShQYXJhbGxlbEFwcGx5V29y a2VySW5mbyAqd2luZm8sIFNpemUgbmJ5dGVzLCBjb25zdCB2b2lkICpkYXRhKQogCUFzc2VydCgh SXNUcmFuc2FjdGlvblN0YXRlKCkpOwogCUFzc2VydCghd2luZm8tPnNlcmlhbGl6ZV9jaGFuZ2Vz KTsKIAorCS8qIEZvcmNlIHRvIHNlcmlhbGl6ZSBtZXNzYWdlcyBpZiBzdHJlYW1fc2VyaWFsaXpl X3RocmVzaG9sZCBpcyByZWFjaGVkLiAqLworCWlmIChzdHJlYW1fc2VyaWFsaXplX3RocmVzaG9s ZCAhPSAtMSAmJgorCQkoc3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQgPT0gMCB8fAorCQkgc3Ry ZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQgPCBwYXJhbGxlbF9zdHJlYW1fbmNodW5rcykpCisJewor CQlwYXJhbGxlbF9zdHJlYW1fbmNodW5rcyA9IDA7CisJCXJldHVybiBmYWxzZTsKKwl9CisKIC8q CiAgKiBUaGlzIHRpbWVvdXQgaXMgYSBiaXQgYXJiaXRyYXJ5IGJ1dCB0ZXN0aW5nIHJldmVhbGVk IHRoYXQgaXQgaXMgc3VmZmljaWVudAogICogdG8gc2VuZCB0aGUgbWVzc2FnZSB1bmxlc3MgdGhl IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyB3YWl0aW5nIG9uIHNvbWUKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDMxOThjOTcuLjNlNWI3NTkgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMzI4LDYgKzMyOCwxMiBAQCBz dGF0aWMgVHJhbnNhY3Rpb25JZCBzdHJlYW1feGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiBz dGF0aWMgdWludDMyIHBhcmFsbGVsX3N0cmVhbV9uY2hhbmdlcyA9IDA7CiAKIC8qCisgKiBUaGUg bnVtYmVyIG9mIHN0cmVhbWluZyBjaHVua3Mgc2VudCBieSBsZWFkZXIgYXBwbHkgd29ya2VyIGR1 cmluZyBvbmUKKyAqIHN0cmVhbWVkIHRyYW5zYWN0aW9uLiBUaGlzIGlzIG9ubHkgdXNlZCB3aGVu IHN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkID4gMC4KKyAqLwordWludDMyCQlwYXJhbGxlbF9z dHJlYW1fbmNodW5rcyA9IDA7CisKKy8qCiAgKiBXZSBlbmFibGUgc2tpcHBpbmcgYWxsIGRhdGEg bW9kaWZpY2F0aW9uIGNoYW5nZXMgKElOU0VSVCwgVVBEQVRFLCBldGMuKSBmb3IKICAqIHRoZSBz dWJzY3JpcHRpb24gaWYgdGhlIHJlbW90ZSB0cmFuc2FjdGlvbidzIGZpbmlzaCBMU04gbWF0Y2hl cyB0aGUgc3Vic2tpcGxzbi4KICAqIE9uY2Ugd2Ugc3RhcnQgc2tpcHBpbmcgY2hhbmdlcywgd2Ug ZG9uJ3Qgc3RvcCBpdCB1bnRpbCB3ZSBza2lwIGFsbCBjaGFuZ2VzIG9mCkBAIC0xNTIxLDYgKzE1 MjcsOSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8gcykKIAkJY2FzZSBU UkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKIAkJCUFzc2VydCh3aW5mbyk7CiAKKwkJCWlm IChzdHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZCA+IDApCisJCQkJcGFyYWxsZWxfc3RyZWFtX25j aHVua3MrKzsKKwogCQkJLyoKIAkJCSAqIE9uY2Ugd2Ugc3RhcnQgc2VyaWFsaXppbmcgdGhlIGNo YW5nZXMsIHRoZSBwYXJhbGxlbCBhcHBseQogCQkJICogd29ya2VyIHdpbGwgd2FpdCBmb3IgdGhl IGxlYWRlciB0byByZWxlYXNlIHRoZSBzdHJlYW0gbG9jawpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190 YWJsZXMuYwppbmRleCA5MjU0NWI0Li4zMDJjZWI3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190 YWJsZXMuYwpAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxs YXVuY2hlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIKICNpbmNsdWRlICJyZXBs aWNhdGlvbi9zeW5jcmVwLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVybmFs LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xhcmdl X29iamVjdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcGdfc2htZW0uaCIKQEAgLTMwMTUsNiArMzAx NiwxOSBAQCBzdHJ1Y3QgY29uZmlnX2ludCBDb25maWd1cmVOYW1lc0ludFtdID0KIAl9LAogCiAJ eworCQl7InN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkIiwgUEdDX1NJR0hVUCwgREVWRUxPUEVS X09QVElPTlMsCisJCQlnZXR0ZXh0X25vb3AoIkZvcmNlcyB0aGUgbGVhZGVyIGFwcGx5IHdvcmtl ciB0byBzZXJpYWxpemUgbWVzc2FnZXMgIgorCQkJCQkJICJ0byBmaWxlcyBhZnRlciBzZW5kaW5n IHNwZWNpZmllZCBhbW91bnQgb2Ygc3RyZWFtaW5nICIKKwkJCQkJCSAiY2h1bmtzIGluIHN0cmVh bWluZyBwYXJhbGxlbCBtb2RlLiIpLAorCQkJZ2V0dGV4dF9ub29wKCJBIHZhbHVlIG9mIC0xIGRp c2FibGVzIHRoaXMgZmVhdHVyZS4iKSwKKwkJCUdVQ19OT1RfSU5fU0FNUExFCisJCX0sCisJCSZz dHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZCwKKwkJLTEsIC0xLCBJTlRfTUFYLAorCQlOVUxMLCBO VUxMLCBOVUxMCisJfSwKKworCXsKIAkJeyJsb2dfcm90YXRpb25fYWdlIiwgUEdDX1NJR0hVUCwg TE9HR0lOR19XSEVSRSwKIAkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUgYW1vdW50IG9mIHRpbWUg dG8gd2FpdCBiZWZvcmUgZm9yY2luZyAiCiAJCQkJCQkgImxvZyBmaWxlIHJvdGF0aW9uLiIpLApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAppbmRleCBkYjg5MWVlLi5h NjgyNzkxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJu YWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApAQCAt MjI1LDYgKzIyNSwxMCBAQCBleHRlcm4gUEdETExJTVBPUlQgTG9naWNhbFJlcFdvcmtlciAqTXlM b2dpY2FsUmVwV29ya2VyOwogCiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBpbl9yZW1vdGVfdHJh bnNhY3Rpb247CiAKK2V4dGVybiBQR0RMTElNUE9SVCBpbnQgc3RyZWFtX3NlcmlhbGl6ZV90aHJl c2hvbGQ7CisKK2V4dGVybiBQR0RMTElNUE9SVCB1aW50MzIgcGFyYWxsZWxfc3RyZWFtX25jaHVu a3M7CisKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaChpbnQgc2xvdCk7CiBl eHRlcm4gTG9naWNhbFJlcFdvcmtlciAqbG9naWNhbHJlcF93b3JrZXJfZmluZChPaWQgc3ViaWQs IE9pZCByZWxpZCwKIAkJCQkJCQkJCQkJCWJvb2wgb25seV9ydW5uaW5nKTsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMTVfc3RyZWFtLnBsCmluZGV4IDkxZThhYTguLjgzZDY5NTYgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKKysrIGIvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbApAQCAtMTMzLDEzICsxMzMsMjAgQEAgc3ViIHRlc3Rf c3RyZWFtaW5nCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0g UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxp c2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ci0kbm9kZV9wdWJsaXNo ZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAotCSdsb2dpY2FsX2RlY29kaW5nX3dv cmtfbWVtID0gNjRrQicpOworJG5vZGVfcHVibGlzaGVyLT5hcHBlbmRfY29uZigKKwkncG9zdGdy ZXNxbC5jb25mJywgcXEoCittYXhfcHJlcGFyZWRfdHJhbnNhY3Rpb25zID0gMTAKK2xvZ2ljYWxf ZGVjb2Rpbmdfd29ya19tZW0gPSA2NGtCCispKTsKICRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CiAK ICMgQ3JlYXRlIHN1YnNjcmliZXIgbm9kZQogbXkgJG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOwogJG5vZGVfc3Vic2NyaWJlci0+ aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5h cHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5jb25mJywgcXEoCittYXhfcHJlcGFyZWRfdHJhbnNh Y3Rpb25zID0gMTAKKykpOwogJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CiAKICMgQ3JlYXRlIHNv bWUgcHJlZXhpc3RpbmcgY29udGVudCBvbiBwdWJsaXNoZXIKQEAgLTE3MCw3ICsxNzcsNyBAQCBt eSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKICMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24n CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNU SU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElD QVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbikiCisJIkNSRUFURSBTVUJTQ1JJUFRJ T04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFt ZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbiwgdHdv X3BoYXNlID0gb24pIgogKTsKIAogIyBXYWl0IGZvciBpbml0aWFsIHRhYmxlIHN5bmMgdG8gZmlu aXNoCkBAIC0zMTIsNiArMzE5LDEzNyBAQCAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl8yIik7 CiBpcygkcmVzdWx0LCBxcSgxMDAwMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBh ZnRlciBkcm9wcGluZyBpbmRleCcpOwogCisjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBl bnZpcm9ubWVudC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVO Q0FURSBUQUJMRSB0ZXN0X3RhYl8yIik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworCisjIFRlc3Qgc2VyaWFsaXppbmcgbWVzc2FnZXMgdG8gZGlzaworCisj IFNldCBzdHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZCB0byB6ZXJvLCBzbyB0aGUgbWVzc2FnZXMg d2lsbCBiZSBzZXJpYWxpemVkIHRvIGRpc2suCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwknQUxURVIgU1lTVEVNIFNFVCBzdHJlYW1fc2VyaWFsaXplX3RocmVzaG9s ZCA9IDA7Jyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisKKyMgUnVuIGEgcXVlcnkgdG8g bWFrZSBzdXJlIHRoYXQgdGhlIHJlbG9hZCBoYXMgdGFrZW4gZWZmZWN0LgorJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7U0VMRUNUIDF9KTsKKworIyBTZXJpYWxpemUg dGhlIENPTU1JVCB0cmFuc2FjdGlvbi4KKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20g bm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRlc3RfdGFi XzIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKSIpOworCisjIEVu c3VyZSB0aGF0IHRoZSBtZXNzYWdlcyBhcmUgc2VyaWFsaXplZC4KKyRub2RlX3N1YnNjcmliZXIt PndhaXRfZm9yX2xvZygKKwlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8gb3BlbmluZyBmaWxlICIu KlwuY2hhbmdlcyIgZm9yIHN0cmVhbWVkIGNoYW5nZXMvLAorCSRvZmZzZXQpOworCiskbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIENoZWNrIHRoYXQgdHJh bnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKKyRyZXN1bHQgPQorICAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRl c3RfdGFiXzIiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDApLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8g c3Vic2NyaWJlciBieSBzZXJpYWxpemluZyBtZXNzYWdlcyB0byBkaXNrJyk7CisKKyMgQ2xlYW4g dXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiXzIiKTsKKyRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgU2VyaWFsaXplIHRoZSBQ UkVQQVJFIHRyYW5zYWN0aW9uLgorIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cg b24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYl8yIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7 CisJUFJFUEFSRSBUUkFOU0FDVElPTiAneGFjdCc7CisJfSk7CisKKyMgRW5zdXJlIHRoYXQgdGhl IG1lc3NhZ2VzIGFyZSBzZXJpYWxpemVkLgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9n KAorCXFyL0RFQlVHOiAoIFtBLVowLTldKzopPyBvcGVuaW5nIGZpbGUgIi4qXC5jaGFuZ2VzIiBm b3Igc3RyZWFtZWQgY2hhbmdlcy8sCisJJG9mZnNldCk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgQ2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBp biBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBh cmVkX3hhY3RzOyIpOworaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJl ZCBvbiBzdWJzY3JpYmVyJyk7CisKKyMgQ2hlY2sgdGhhdCAyUEMgZ2V0cyBjb21taXR0ZWQgb24g c3Vic2NyaWJlcgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNPTU1J VCBQUkVQQVJFRCAneGFjdCc7Iik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7CisKKyMgQ2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24g c3Vic2NyaWJlcgorJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfMiIpOworaXMoJHJlc3VsdCwg cXEoNTAwMCksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGJ5IHNlcmlhbGl6aW5n IG1lc3NhZ2VzIHRvIGRpc2snKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52 aXJvbm1lbnQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNB VEUgVEFCTEUgdGVzdF90YWJfMiIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKKworIyBTZXJpYWxpemUgdGhlIEFCT1JUIHRvcC10cmFuc2FjdGlvbi4KKyMg Q2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2Rl X3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdw b3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWJfMiBTRUxFQ1QgaSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOworCVJPTExCQUNLOworCX0pOworCisj IEVuc3VyZSB0aGF0IHRoZSBtZXNzYWdlcyBhcmUgc2VyaWFsaXplZC4KKyRub2RlX3N1YnNjcmli ZXItPndhaXRfZm9yX2xvZygKKwlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8gb3BlbmluZyBmaWxl ICIuKlwuY2hhbmdlcyIgZm9yIHN0cmVhbWVkIGNoYW5nZXMvLAorCSRvZmZzZXQpOworCiskbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIENoZWNrIHRoYXQg dHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyCiskcmVzdWx0ID0KKyAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZXN0X3RhYl8yIik7CitpcygkcmVzdWx0LCBxcSgwKSwKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1 YnNjcmliZXIgYnkgc2VyaWFsaXppbmcgbWVzc2FnZXMgdG8gZGlzaycpOworCisjIENsZWFuIHVw IHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYl8yIik7Ciskbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIFNlcmlhbGl6ZSB0aGUgQUJP UlQgc3ViLXRyYW5zYWN0aW9uLgorIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cg b24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYl8yIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7 CisJU0FWRVBPSU5UIHNwOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiXzIgU0VMRUNUIGkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNTAwMSwgMTAwMDApIHMoaSk7CisJUk9MTEJBQ0sgVE8gc3A7CisJQ09N TUlUOworCX0pOworCisjIEVuc3VyZSB0aGF0IHRoZSBtZXNzYWdlcyBhcmUgc2VyaWFsaXplZC4K KyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9ERUJVRzogKCBbQS1aMC05XSs6 KT8gb3BlbmluZyBmaWxlICIuKlwuY2hhbmdlcyIgZm9yIHN0cmVhbWVkIGNoYW5nZXMvLAorCSRv ZmZzZXQpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwor CisjIENoZWNrIHRoYXQgb25seSBzdWItdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3Jp YmVyLgorJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfMiIpOworaXMoJHJlc3VsdCwgcXEoNTAw MCksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGJ5IHNlcmlhbGl6aW5nIG1lc3Nh Z2VzIHRvIGRpc2snKTsKKwogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hl ci0+c3RvcDsKIAotLSAKMi43LjIud2luZG93cy4xCgo= --_006_OS0PR01MB571685A645E509267AC5F30894F99OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v77-0003-Stop-extra-worker-if-GUC-was-changed.patch" Content-Description: v77-0003-Stop-extra-worker-if-GUC-was-changed.patch Content-Disposition: attachment; filename="v77-0003-Stop-extra-worker-if-GUC-was-changed.patch"; size=4294; creation-date="Sun, 08 Jan 2023 03:53:58 GMT"; modification-date="Sun, 08 Jan 2023 03:58:49 GMT" Content-Transfer-Encoding: base64 RnJvbSBiNDczYzJhNmJlYzk0NzgxMTRiMzQ3MDA2ZTBiMGJlNDI4N2Q1ZTI3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBzaGVybG9ja2NwcCA8c2hlcmxvY2tjcHBAZm94bWFpbC5jb20+ CkRhdGU6IFNhdCwgMTcgRGVjIDIwMjIgMjA6NDM6MjEgKzA4MDAKU3ViamVjdDogW1BBVENIIHY3 NyAzLzVdIFN0b3AgZXh0cmEgd29ya2VyIGlmIEdVQyB3YXMgY2hhbmdlZAoKSWYgdGhlIG1heF9w YXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gaXMgY2hhbmdlZCB0byBhCmxv d2VyIHZhbHVlLCB0cnkgdG8gc3RvcCBmcmVlIHdvcmtlcnMgaW4gdGhlIHBvb2wgdG8ga2VlcCB0 aGUgbnVtYmVyIG9mCndvcmtlcnMgbG93ZXIgdGhhbiBoYWxmIG9mIHRoZSBtYXhfcGFyYWxsZWxf YXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uCi0tLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2lj YWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jICAgICAgfCA2MCArKysrKysrKysrKysrKysrKystLS0t CiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgICAgICB8ICA3 ICsrKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggICAgICAgICAg fCAgMSArCiAzIGZpbGVzIGNoYW5nZWQsIDU3IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJh bGxlbHdvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFs bGVsd29ya2VyLmMKaW5kZXggM2Q3ZjhhOC4uMWRmMThhNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKQEAgLTU0Niw2 ICs1NDYsMjUgQEAgcGFfZmluZF93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQpCiB9CiAKIC8qCisg KiBTdG9wIHRoZSBnaXZlbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgYW5kIGZyZWUgdGhlIGNvcnJl c3BvbmRpbmcgaW5mby4KKyAqLworc3RhdGljIHZvaWQKK3BhX3N0b3Bfd29ya2VyKFBhcmFsbGVs QXBwbHlXb3JrZXJJbmZvICp3aW5mbykKK3sKKwlpbnQJCQlzbG90X25vOworCXVpbnQxNgkJZ2Vu ZXJhdGlvbjsKKworCVNwaW5Mb2NrQWNxdWlyZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOworCWdl bmVyYXRpb24gPSB3aW5mby0+c2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9nZW5lcmF0aW9uOwor CXNsb3Rfbm8gPSB3aW5mby0+c2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9zbG90X25vOworCVNw aW5Mb2NrUmVsZWFzZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOworCisJbG9naWNhbHJlcF9wYV93 b3JrZXJfc3RvcChzbG90X25vLCBnZW5lcmF0aW9uKTsKKworCXBhX2ZyZWVfd29ya2VyX2luZm8o d2luZm8pOworfQorCisvKgogICogTWFrZXMgdGhlIHdvcmtlciBhdmFpbGFibGUgZm9yIHJldXNl LgogICoKICAqIFRoaXMgcmVtb3ZlcyB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGVudHJ5IGZy b20gdGhlIGhhc2ggdGFibGUgc28gdGhhdCBpdApAQCAtNTgwLDIzICs1OTksNDIgQEAgcGFfZnJl ZV93b3JrZXIoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQogCQlsaXN0X2xlbmd0aChQ YXJhbGxlbEFwcGx5V29ya2VyUG9vbCkgPgogCQkobWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNf cGVyX3N1YnNjcmlwdGlvbiAvIDIpKQogCXsKLQkJaW50CQkJc2xvdF9ubzsKLQkJdWludDE2CQln ZW5lcmF0aW9uOwotCi0JCVNwaW5Mb2NrQWNxdWlyZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOwot CQlnZW5lcmF0aW9uID0gd2luZm8tPnNoYXJlZC0+bG9naWNhbHJlcF93b3JrZXJfZ2VuZXJhdGlv bjsKLQkJc2xvdF9ubyA9IHdpbmZvLT5zaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX3Nsb3Rfbm87 Ci0JCVNwaW5Mb2NrUmVsZWFzZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOworCQlwYV9zdG9wX3dv cmtlcih3aW5mbyk7CisJCXJldHVybjsKKwl9CiAKLQkJbG9naWNhbHJlcF9wYV93b3JrZXJfc3Rv cChzbG90X25vLCBnZW5lcmF0aW9uKTsKKwl3aW5mby0+aW5fdXNlID0gZmFsc2U7CisJd2luZm8t PnNlcmlhbGl6ZV9jaGFuZ2VzID0gZmFsc2U7Cit9CiAKLQkJcGFfZnJlZV93b3JrZXJfaW5mbyh3 aW5mbyk7CisvKgorICogVHJ5IHRvIHN0b3AgcGFyYWxsZWwgYXBwbHkgd29ya2VycyB0aGF0IGFy ZSBub3QgaW4gdXNlIHRvIGtlZXAgdGhlIG51bWJlciBvZgorICogd29ya2VycyBsb3dlciB0aGFu IGhhbGYgb2YgdGhlIG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24u CisgKi8KK3ZvaWQKK3BhX3N0b3BfaWRsZV93b3JrZXJzKHZvaWQpCit7CisJTGlzdAkgICAqYWN0 aXZlX3dvcmtlcnM7CisJTGlzdENlbGwgICAqbGM7CisJaW50CQkJbWF4X2FwcGx5d29ya2VycyA9 IG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gLyAyOwogCisJaWYg KGxpc3RfbGVuZ3RoKFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sKSA8PSBtYXhfYXBwbHl3b3JrZXJz KQogCQlyZXR1cm47CisKKwlhY3RpdmVfd29ya2VycyA9IGxpc3RfY29weShQYXJhbGxlbEFwcGx5 V29ya2VyUG9vbCk7CisKKwlmb3JlYWNoKGxjLCBhY3RpdmVfd29ya2VycykKKwl7CisJCVBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9IChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKSBs Zmlyc3QobGMpOworCisJCXBhX3N0b3Bfd29ya2VyKHdpbmZvKTsKKworCQkvKiBSZWNoZWNrIHRo ZSBudW1iZXIgb2Ygd29ya2Vycy4gKi8KKwkJaWYgKGxpc3RfbGVuZ3RoKFBhcmFsbGVsQXBwbHlX b3JrZXJQb29sKSA8PSBtYXhfYXBwbHl3b3JrZXJzKQorCQkJYnJlYWs7CiAJfQogCi0Jd2luZm8t PmluX3VzZSA9IGZhbHNlOwotCXdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcyA9IGZhbHNlOworCWxp c3RfZnJlZShhY3RpdmVfd29ya2Vycyk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC93b3JrZXIuYwppbmRleCAzZTViNzU5Li42ZDRmN2MwIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTM2MzYsNiArMzYzNiwxMyBAQCBMb2dpY2Fs UmVwQXBwbHlMb29wKFhMb2dSZWNQdHIgbGFzdF9yZWNlaXZlZCkKIAkJewogCQkJQ29uZmlnUmVs b2FkUGVuZGluZyA9IGZhbHNlOwogCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CisK KwkJCS8qCisJCQkgKiBUcnkgdG8gc3RvcCBmcmVlIHdvcmtlcnMgaW4gdGhlIHBvb2wgaW4gY2Fz ZSB0aGUKKwkJCSAqIG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24g aXMgY2hhbmdlZCB0byBhCisJCQkgKiBsb3dlciB2YWx1ZS4KKwkJCSAqLworCQkJcGFfc3RvcF9p ZGxlX3dvcmtlcnMoKTsKIAkJfQogCiAJCWlmIChyYyAmIFdMX1RJTUVPVVQpCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IGE2ODI3OTEuLmYzYjJmMmQgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCisrKyBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBAIC0yNzgsNiArMjc4 LDcgQEAgZXh0ZXJuIHZvaWQgc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfb3JpZ2luKGNoYXIgKm9y aWdpbm5hbWUpOwogLyogUGFyYWxsZWwgYXBwbHkgd29ya2VyIHNldHVwIGFuZCBpbnRlcmFjdGlv bnMgKi8KIGV4dGVybiB2b2lkIHBhX2FsbG9jYXRlX3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCk7 CiBleHRlcm4gUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKnBhX2ZpbmRfd29ya2VyKFRyYW5zYWN0 aW9uSWQgeGlkKTsKK2V4dGVybiB2b2lkIHBhX3N0b3BfaWRsZV93b3JrZXJzKHZvaWQpOwogZXh0 ZXJuIHZvaWQgcGFfZGV0YWNoX2FsbF9lcnJvcl9tcSh2b2lkKTsKIAogZXh0ZXJuIGJvb2wgcGFf c2VuZF9kYXRhKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU2l6ZSBuYnl0ZXMsCi0t IAoyLjcuMi53aW5kb3dzLjEKCg== --_006_OS0PR01MB571685A645E509267AC5F30894F99OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v77-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v77-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v77-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=21629; creation-date="Sun, 08 Jan 2023 03:53:58 GMT"; modification-date="Sun, 08 Jan 2023 03:58:49 GMT" Content-Transfer-Encoding: base64 RnJvbSAzMzIxMjUzNTA0Y2IwNGZjZDUzMTllOWVhNjk1YjAwMjYwOGM1YTdlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBTdW4sIDExIERlYyAyMDIyIDE5OjE2OjM0ICswODAwClN1YmplY3Q6IFtQQVRDSCB2 NzcgNC81XSBSZXRyeSB0byBhcHBseSBzdHJlYW1pbmcgeGFjdCBvbmx5IGluIGFwcGx5IHdvcmtl cgoKV2hlbiB0aGUgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBpcyBzZXQgc3RyZWFtaW5nPXBhcmFs bGVsLCB0aGUgbG9naWMgdHJpZXMgdG8KYXBwbHkgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB1 c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gSWYgdGhpcwpmYWlscyB0aGUgcGFyYWxsZWwg d29ya2VyIGV4aXRzIHdpdGggYW4gZXJyb3IuCgpJbiB0aGlzIGNhc2UsIHJldHJ5IGFwcGx5aW5n IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIG5vcm1hbApzdHJlYW1pbmc9b24g bW9kZS4gVGhpcyBpcyBkb25lIHRvIGF2b2lkIGdldHRpbmcgY2F1Z2h0IGluIGEgbG9vcCBvZiB0 aGUgc2FtZQpyZXRyeSBlcnJvcnMuCgpBIG5ldyBmbGFnIGZpZWxkICJzdWJyZXRyeSIgaGFzIGJl ZW4gaW50cm9kdWNlZCB0byBjYXRhbG9nICJwZ19zdWJzY3JpcHRpb24iLgpJZiB0aGVyZSBhcmUg YW55IGFjdGl2ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFuZCB0aGUgc3Vic2NyaWJlciBleGl0 cyB3aXRoIGFuCmVycm9yLCB0aGlzIGZsYWcgd2lsbCBiZSBzZXQgdHJ1ZSwgYW5kIHdoZW5ldmVy IHRoZSB0cmFuc2FjdGlvbiBpcyBhcHBsaWVkCnN1Y2Nlc3NmdWxseSwgdGhpcyBmbGFnIGlzIHJl c2V0IGZhbHNlLgpOb3csIHdoZW4gZGVjaWRpbmcgaG93IHRvIGFwcGx5IGEgc3RyZWFtaW5nIHRy YW5zYWN0aW9uLCB0aGUgbG9naWMgY2FuIGtub3cgaWYKdGhpcyB0cmFuc2FjdGlvbiBoYXMgcHJl dmlvdXNseSBmYWlsZWQgb3Igbm90IChieSBjaGVja2luZyB0aGUgInN1YnJldHJ5IgpmaWVsZCku CgpOb3RlOiBTaW5jZSB3ZSBhZGQgYSBuZXcgZmllbGQgJ3N1YnJldHJ5JyB0byBjYXRhbG9nICdw Z19zdWJzY3JpcHRpb24nIGhhcyBiZWVuCmV4cGFuZGVkLCB3ZSBuZWVkIGJ1bXAgY2F0YWxvZyB2 ZXJzaW9uLgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDEwICsrCiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAg ICAgICAgICAgICB8ICAxMSArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9u LnNnbWwgICAgICAgICAgfCAgIDUgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRp b24uYyAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmll d3Muc3FsICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNj cmlwdGlvbmNtZHMuYyAgICAgICAgICAgIHwgICAxICsKIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2Fs L2FwcGx5cGFyYWxsZWx3b3JrZXIuYyAgICAgIHwgIDMwICsrKysKIHNyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICAgICAgIHwgMTgyICsrKysrKysrKysrKysrKy0t LS0tLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDUgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggICAgICAgICAg ICAgIHwgICA3ICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAg ICAgICAgIHwgICAyICsKIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwgICAg ICAgICAgICAgIHwgIDYzICsrKysrKysKIDEyIGZpbGVzIGNoYW5nZWQsIDI2MyBpbnNlcnRpb25z KCspLCA1NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Mu c2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IGMxZTQwNDguLmQ5MTgzMjcg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9jYXRhbG9ncy5zZ21sCkBAIC03OTUwLDYgKzc5NTAsMTYgQEAgU0NSQU0tU0hBLTI1NiQ8cmVw bGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFi bGU+JmwKIAogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50 cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+ c3VicmV0cnk8L3N0cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBlPgorICAgICAgPC9wYXJhPgor ICAgICAgPHBhcmE+CisgICAgICAgVHJ1ZSBpZiBwcmV2aW91cyBjaGFuZ2UgZmFpbGVkIHRvIGJl IGFwcGxpZWQgd2hpbGUgdGhlcmUgd2VyZSBhbnkKKyAgICAgICBhY3RpdmUgcGFyYWxsZWwgYXBw bHkgd29ya2VycywgbmVjZXNzaXRhdGluZyBhIHJldHJ5LgorICAgICAgPC9wYXJhPjwvZW50cnk+ CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190 YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgogICAgICAgIDxzdHJ1 Y3RmaWVsZD5zdWJjb25uaW5mbzwvc3RydWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5cGU+CiAgICAg ICA8L3BhcmE+CiAgICAgICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9sb2dpY2Fs LXJlcGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21s CmluZGV4IDU0ZjQ4YmUuLmNiNGY1YzYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9sb2dpY2Fs LXJlcGxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24u c2dtbApAQCAtMTUwNCwxMiArMTUwNCwxMSBAQCBDT05URVhUOiAgcHJvY2Vzc2luZyByZW1vdGUg ZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luICJwZ18xNjM5NSIgZHVyaW5nICJJTlNFUgogCiAg IDxwYXJhPgogICAgV2hlbiB0aGUgc3RyZWFtaW5nIG1vZGUgaXMgPGxpdGVyYWw+cGFyYWxsZWw8 L2xpdGVyYWw+LCB0aGUgZmluaXNoIExTTiBvZgotICAgZmFpbGVkIHRyYW5zYWN0aW9ucyBtYXkg bm90IGJlIGxvZ2dlZC4gSW4gdGhhdCBjYXNlLCBpdCBtYXkgYmUgbmVjZXNzYXJ5IHRvCi0gICBj aGFuZ2UgdGhlIHN0cmVhbWluZyBtb2RlIHRvIDxsaXRlcmFsPm9uPC9saXRlcmFsPiBvciA8bGl0 ZXJhbD5vZmY8L2xpdGVyYWw+IGFuZAotICAgY2F1c2UgdGhlIHNhbWUgY29uZmxpY3RzIGFnYWlu IHNvIHRoZSBmaW5pc2ggTFNOIG9mIHRoZSBmYWlsZWQgdHJhbnNhY3Rpb24gd2lsbAotICAgYmUg d3JpdHRlbiB0byB0aGUgc2VydmVyIGxvZy4gRm9yIHRoZSB1c2FnZSBvZiBmaW5pc2ggTFNOLCBw bGVhc2UgcmVmZXIgdG8gPGxpbmsKLSAgIGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbiI+ PGNvbW1hbmQ+QUxURVIgU1VCU0NSSVBUSU9OIC4uLgotICAgU0tJUDwvY29tbWFuZD48L2xpbms+ LgorICAgZmFpbGVkIHRyYW5zYWN0aW9ucyBtYXkgbm90IGJlIGxvZ2dlZC4gSW4gdGhhdCBjYXNl LCB0aGUgZmFpbGVkIHRyYW5zYWN0aW9uCisgICB3aWxsIGJlIHJldHJpZWQgaW4gPGxpdGVyYWw+ c3RyZWFtaW5nID0gb248L2xpdGVyYWw+IG1vZGUuIElmIGl0IGZhaWxzCisgICBhZ2FpbiwgdGhl IGZpbmlzaCBMU04gb2YgdGhlIGZhaWxlZCB0cmFuc2FjdGlvbiB3aWxsIGJlIHdyaXR0ZW4gdG8g dGhlCisgICBzZXJ2ZXIgbG9nLiBGb3IgdGhlIHVzYWdlIG9mIGZpbmlzaCBMU04sIHBsZWFzZSBy ZWZlciB0bworICAgPGxpbmsgbGlua2VuZD0ic3FsLWFsdGVyc3Vic2NyaXB0aW9uIj48Y29tbWFu ZD5BTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFNLSVA8L2NvbW1hbmQ+PC9saW5rPi4KICAgPC9wYXJh PgogIDwvc2VjdDE+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNj cmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwK aW5kZXggZWJhNzJjNi4uZGVjZDU1NCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2Ny aXB0aW9uLnNnbWwKQEAgLTI1MSw2ICsyNTEsMTEgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Vic2NyaXB0aW9uX25hbWU8L3JlcGxhY2VhYmwK ICAgICAgICAgICB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuIE5vdGUgdGhhdCBpZiBhbiBlcnJv ciBoYXBwZW5zIGluIGEKICAgICAgICAgICBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIHRoZSBmaW5p c2ggTFNOIG9mIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24KICAgICAgICAgICBtaWdodCBub3QgYmUg cmVwb3J0ZWQgaW4gdGhlIHNlcnZlciBsb2cuCisgICAgICAgICAgV2hlbiBhcHBseWluZyBzdHJl YW1pbmcgdHJhbnNhY3Rpb25zLCBpZiBhIGRlYWRsb2NrIGlzIGRldGVjdGVkLCB0aGUKKyAgICAg ICAgICBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCBleGl0IHdpdGggYW4gZXJyb3IuIFRoZQor ICAgICAgICAgIDxsaXRlcmFsPnBhcmFsbGVsPC9saXRlcmFsPiBtb2RlIGlzIGRpc3JlZ2FyZGVk IHdoZW4gcmV0cnlpbmc7CisgICAgICAgICAgaW5zdGVhZCB0aGUgdHJhbnNhY3Rpb24gd2lsbCBi ZSBhcHBsaWVkIHVzaW5nIDxsaXRlcmFsPm9uPC9saXRlcmFsPgorICAgICAgICAgIG1vZGUuCiAg ICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50 cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwppbmRleCBhNTZhZTMxLi4wZWI1 ZmZiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCisr KyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKQEAgLTcxLDYgKzcxLDcg QEAgR2V0U3Vic2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rKQogCXN1Yi0+c3Ry ZWFtID0gc3ViZm9ybS0+c3Vic3RyZWFtOwogCXN1Yi0+dHdvcGhhc2VzdGF0ZSA9IHN1YmZvcm0t PnN1YnR3b3BoYXNlc3RhdGU7CiAJc3ViLT5kaXNhYmxlb25lcnIgPSBzdWJmb3JtLT5zdWJkaXNh Ymxlb25lcnI7CisJc3ViLT5yZXRyeSA9IHN1YmZvcm0tPnN1YnJldHJ5OwogCiAJLyogR2V0IGNv bm5pbmZvICovCiAJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoU1VCU0NSSVBUSU9OT0lELApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IDQ0N2M5YjkuLmFmMDc2ODQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTEzMDEsNyArMTMwMSw3IEBAIFJFVk9L RSBBTEwgT04gcGdfcmVwbGljYXRpb25fb3JpZ2luX3N0YXR1cyBGUk9NIHB1YmxpYzsKIFJFVk9L RSBBTEwgT04gcGdfc3Vic2NyaXB0aW9uIEZST00gcHVibGljOwogR1JBTlQgU0VMRUNUIChvaWQs IHN1YmRiaWQsIHN1YnNraXBsc24sIHN1Ym5hbWUsIHN1Ym93bmVyLCBzdWJlbmFibGVkLAogICAg ICAgICAgICAgICBzdWJiaW5hcnksIHN1YnN0cmVhbSwgc3VidHdvcGhhc2VzdGF0ZSwgc3ViZGlz YWJsZW9uZXJyLAotICAgICAgICAgICAgICBzdWJzbG90bmFtZSwgc3Vic3luY2NvbW1pdCwgc3Vi cHVibGljYXRpb25zLCBzdWJvcmlnaW4pCisgICAgICAgICAgICAgIHN1YnJldHJ5LCBzdWJzbG90 bmFtZSwgc3Vic3luY2NvbW1pdCwgc3VicHVibGljYXRpb25zLCBzdWJvcmlnaW4pCiAgICAgT04g cGdfc3Vic2NyaXB0aW9uIFRPIHB1YmxpYzsKIAogQ1JFQVRFIFZJRVcgcGdfc3RhdF9zdWJzY3Jp cHRpb25fc3RhdHMgQVMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlw dGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwppbmRl eCBiYWZmMDBkLi5iMjA1M2Y3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJz Y3JpcHRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21k cy5jCkBAIC02MzYsNiArNjM2LDcgQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBz dGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCQkJIExPR0lDQUxSRVBfVFdP UEhBU0VfU1RBVEVfUEVORElORyA6CiAJCQkJCSBMT0dJQ0FMUkVQX1RXT1BIQVNFX1NUQVRFX0RJ U0FCTEVEKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViZGlzYWJsZW9uZXJyIC0g MV0gPSBCb29sR2V0RGF0dW0ob3B0cy5kaXNhYmxlb25lcnIpOworCXZhbHVlc1tBbnVtX3BnX3N1 YnNjcmlwdGlvbl9zdWJyZXRyeSAtIDFdID0gQm9vbEdldERhdHVtKGZhbHNlKTsKIAl2YWx1ZXNb QW51bV9wZ19zdWJzY3JpcHRpb25fc3ViY29ubmluZm8gLSAxXSA9CiAJCUNTdHJpbmdHZXRUZXh0 RGF0dW0oY29ubmluZm8pOwogCWlmIChvcHRzLnNsb3RfbmFtZSkKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKaW5kZXggMWRm MThhNy4uYTY2OTg0MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9hcHBseXBhcmFsbGVsd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKQEAgLTMxNSw2ICszMTUsMTcgQEAgcGFfY2FuX3N0 YXJ0KHZvaWQpCiAJaWYgKCFBbGxUYWJsZXN5bmNzUmVhZHkoKSkKIAkJcmV0dXJuIGZhbHNlOwog CisJLyoKKwkgKiBEb24ndCB1c2UgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBmb3IgcmV0cmllcywg YmVjYXVzZSBpdCBpcyBwb3NzaWJsZQorCSAqIHRoYXQgYSBkZWFkbG9jayB3YXMgZGV0ZWN0ZWQg dGhlIGxhc3QgdGltZSB3ZSB0cmllZCB0byBhcHBseSBhCisJICogdHJhbnNhY3Rpb24gdXNpbmcg YSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJICovCisJaWYgKE15U3Vic2NyaXB0aW9uLT5yZXRy eSkKKwl7CisJCWVsb2coREVCVUcxLCAicGFyYWxsZWwgYXBwbHkgd29ya2VycyBhcmUgbm90IHVz ZWQgZm9yIHJldHJpZXMiKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwogCXJldHVybiB0cnVlOwog fQogCkBAIC0xNjc4LDMgKzE2ODksMjIgQEAgcGFfeGFjdF9maW5pc2goUGFyYWxsZWxBcHBseVdv cmtlckluZm8gKndpbmZvLCBYTG9nUmVjUHRyIHJlbW90ZV9sc24pCiAKIAlwYV9mcmVlX3dvcmtl cih3aW5mbyk7CiB9CisKKy8qIENoZWNrIGlmIGFueSBhY3RpdmUgcGFyYWxsZWwgYXBwbHkgd29y a2Vycy4gKi8KK2Jvb2wKK3BhX2hhdmVfYWN0aXZlX3dvcmtlcih2b2lkKQoreworCUxpc3RDZWxs ICAgKmxjOworCisJZm9yZWFjaChsYywgUGFyYWxsZWxBcHBseVdvcmtlclBvb2wpCisJeworCQlQ YXJhbGxlbEFwcGx5V29ya2VySW5mbyAqdG1wX3dpbmZvOworCisJCXRtcF93aW5mbyA9IChQYXJh bGxlbEFwcGx5V29ya2VySW5mbyAqKSBsZmlyc3QobGMpOworCisJCWlmICh0bXBfd2luZm8tPmlu X3VzZSkKKwkJCXJldHVybiB0cnVlOworCX0KKworCXJldHVybiBmYWxzZTsKK30KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDZkNGY3YzAuLjc0ODdjMzUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMzk0LDcgKzM5NCw3 IEBAIHN0YXRpYyB2b2lkIHN0cmVhbV9jbG9zZV9maWxlKHZvaWQpOwogCiBzdGF0aWMgdm9pZCBz ZW5kX2ZlZWRiYWNrKFhMb2dSZWNQdHIgcmVjdnBvcywgYm9vbCBmb3JjZSwgYm9vbCByZXF1ZXN0 UmVwbHkpOwogCi1zdGF0aWMgdm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhpdCh2b2lkKTsK K3N0YXRpYyB2b2lkIERpc2FibGVTdWJzY3JpcHRpb25PbkVycm9yKHZvaWQpOwogCiBzdGF0aWMg dm9pZCBhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKExvZ2ljYWxSZXBDb21taXREYXRhICpj b21taXRfZGF0YSk7CiBzdGF0aWMgdm9pZCBhcHBseV9oYW5kbGVfaW5zZXJ0X2ludGVybmFsKEFw cGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCkBAIC00MzEsNiArNDMxLDggQEAgc3RhdGljIGlubGlu ZSB2b2lkIHJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbyh2b2lkKTsKIHN0YXRpYyBUcmFu c0FwcGx5QWN0aW9uIGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oVHJhbnNhY3Rpb25JZCB4 aWQsCiAJCQkJCQkJCQkJCQkJIFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICoqd2luZm8pOwogCitz dGF0aWMgdm9pZCBzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGJvb2wgcmV0cnkpOworCiAvKgogICog UmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlci4KICAqLwpA QCAtMTA0Niw2ICsxMDQ4LDkgQEAgYXBwbHlfaGFuZGxlX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAJ LyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJh bGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKGNvbW1pdF9kYXRhLmVuZF9sc24pOwog CisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShm YWxzZSk7CisKIAlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOwogCXJl c2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwogfQpAQCAtMTE1Miw2ICsxMTU3LDkgQEAg YXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCiAJaW5fcmVtb3RlX3RyYW5zYWN0 aW9uID0gZmFsc2U7CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2Ny aXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBi ZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxl cyhwcmVwYXJlX2RhdGEuZW5kX2xzbik7CiAKQEAgLTEyMDgsNiArMTIxNiw5IEBAIGFwcGx5X2hh bmRsZV9jb21taXRfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCXN0b3JlX2ZsdXNoX3Bvc2l0aW9u KHByZXBhcmVfZGF0YS5lbmRfbHNuLCBYYWN0TGFzdENvbW1pdEVuZCk7CiAJaW5fcmVtb3RlX3Ry YW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRf c3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0 IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5n X3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5kX2xzbik7CiAKQEAgLTEyNjksNiArMTI4MCw5IEBAIGFw cGx5X2hhbmRsZV9yb2xsYmFja19wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAJc3RvcmVfZmx1c2hf cG9zaXRpb24ocm9sbGJhY2tfZGF0YS5yb2xsYmFja19lbmRfbHNuLCBYYWN0TGFzdENvbW1pdEVu ZCk7CiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBSZXNldCB0aGUgcmV0 cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCS8qIFByb2Nl c3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICov CiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhyb2xsYmFja19kYXRhLnJvbGxiYWNrX2VuZF9sc24p OwogCkBAIC0xMzk0LDYgKzE0MDgsOSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoU3Ry aW5nSW5mbyBzKQogCQkJYnJlYWs7CiAJfQogCisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICov CisJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CisKIAlwZ3N0YXRfcmVwb3J0X3N0YXQo ZmFsc2UpOwogCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9u aXplZCBpbiBwYXJhbGxlbC4gKi8KQEAgLTE5NjcsNiArMTk4NCwxMCBAQCBhcHBseV9oYW5kbGVf c3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJCWJyZWFrOwogCX0KIAorCS8qIFJlc2V0IHRo ZSByZXRyeSBmbGFnLiAqLworCWlmICh0b3BsZXZlbF94YWN0KQorCQlzZXRfc3Vic2NyaXB0aW9u X3JldHJ5KGZhbHNlKTsKKwogCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwogfQog CkBAIC0yMjQ5LDYgKzIyNzAsOSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJ bmZvIHMpCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXpl ZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKGNvbW1pdF9kYXRhLmVu ZF9sc24pOwogCisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlv bl9yZXRyeShmYWxzZSk7CisKIAlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5V TEwpOwogCiAJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CkBAIC00MzQ1LDIwICs0 MzY5LDI4IEBAIHN0YXJ0X3RhYmxlX3N5bmMoWExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zLCBj aGFyICoqbXlzbG90bmFtZSkKIAl9CiAJUEdfQ0FUQ0goKTsKIAl7CisJCS8qCisJCSAqIEVtaXQg dGhlIGVycm9yIG1lc3NhZ2UsIGFuZCByZWNvdmVyIGZyb20gdGhlIGVycm9yIHN0YXRlIHRvIGFu IGlkbGUKKwkJICogc3RhdGUKKwkJICovCisJCUhPTERfSU5URVJSVVBUUygpOworCisJCUVtaXRF cnJvclJlcG9ydCgpOworCQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKKwkJRmx1c2hFcnJv clN0YXRlKCk7CisKKwkJUkVTVU1FX0lOVEVSUlVQVFMoKTsKKworCQkvKiBSZXBvcnQgdGhlIHdv cmtlciBmYWlsZWQgZHVyaW5nIHRhYmxlIHN5bmNocm9uaXphdGlvbiAqLworCQlwZ3N0YXRfcmVw b3J0X3N1YnNjcmlwdGlvbl9lcnJvcihNeVN1YnNjcmlwdGlvbi0+b2lkLCBmYWxzZSk7CisKIAkJ aWYgKE15U3Vic2NyaXB0aW9uLT5kaXNhYmxlb25lcnIpCi0JCQlEaXNhYmxlU3Vic2NyaXB0aW9u QW5kRXhpdCgpOwotCQllbHNlCi0JCXsKLQkJCS8qCi0JCQkgKiBSZXBvcnQgdGhlIHdvcmtlciBm YWlsZWQgZHVyaW5nIHRhYmxlIHN5bmNocm9uaXphdGlvbi4gQWJvcnQKLQkJCSAqIHRoZSBjdXJy ZW50IHRyYW5zYWN0aW9uIHNvIHRoYXQgdGhlIHN0YXRzIG1lc3NhZ2UgaXMgc2VudCBpbiBhbgot CQkJICogaWRsZSBzdGF0ZS4KLQkJCSAqLwotCQkJQWJvcnRPdXRPZkFueVRyYW5zYWN0aW9uKCk7 Ci0JCQlwZ3N0YXRfcmVwb3J0X3N1YnNjcmlwdGlvbl9lcnJvcihNeVN1YnNjcmlwdGlvbi0+b2lk LCBmYWxzZSk7CisJCQlEaXNhYmxlU3Vic2NyaXB0aW9uT25FcnJvcigpOwogCi0JCQlQR19SRV9U SFJPVygpOwotCQl9CisJCS8qIFNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwkJc2V0X3N1YnNjcmlw dGlvbl9yZXRyeSh0cnVlKTsKKworCQlwcm9jX2V4aXQoMCk7CiAJfQogCVBHX0VORF9UUlkoKTsK IApAQCAtNDM4MywyMCArNDQxNSwyNyBAQCBzdGFydF9hcHBseShYTG9nUmVjUHRyIG9yaWdpbl9z dGFydHBvcykKIAl9CiAJUEdfQ0FUQ0goKTsKIAl7CisJCS8qCisJCSAqIEVtaXQgdGhlIGVycm9y IG1lc3NhZ2UsIGFuZCByZWNvdmVyIGZyb20gdGhlIGVycm9yIHN0YXRlIHRvIGFuIGlkbGUKKwkJ ICogc3RhdGUKKwkJICovCisJCUhPTERfSU5URVJSVVBUUygpOworCisJCUVtaXRFcnJvclJlcG9y dCgpOworCQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKKwkJRmx1c2hFcnJvclN0YXRlKCk7 CisKKwkJUkVTVU1FX0lOVEVSUlVQVFMoKTsKKworCQkvKiBSZXBvcnQgdGhlIHdvcmtlciBmYWls ZWQgd2hpbGUgYXBwbHlpbmcgY2hhbmdlcyAqLworCQlwZ3N0YXRfcmVwb3J0X3N1YnNjcmlwdGlv bl9lcnJvcihNeVN1YnNjcmlwdGlvbi0+b2lkLAorCQkJCQkJCQkJCSAhYW1fdGFibGVzeW5jX3dv cmtlcigpKTsKKwogCQlpZiAoTXlTdWJzY3JpcHRpb24tPmRpc2FibGVvbmVycikKLQkJCURpc2Fi bGVTdWJzY3JpcHRpb25BbmRFeGl0KCk7Ci0JCWVsc2UKLQkJewotCQkJLyoKLQkJCSAqIFJlcG9y dCB0aGUgd29ya2VyIGZhaWxlZCB3aGlsZSBhcHBseWluZyBjaGFuZ2VzLiBBYm9ydCB0aGUKLQkJ CSAqIGN1cnJlbnQgdHJhbnNhY3Rpb24gc28gdGhhdCB0aGUgc3RhdHMgbWVzc2FnZSBpcyBzZW50 IGluIGFuCi0JCQkgKiBpZGxlIHN0YXRlLgotCQkJICovCi0JCQlBYm9ydE91dE9mQW55VHJhbnNh Y3Rpb24oKTsKLQkJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vic2NyaXB0 aW9uLT5vaWQsICFhbV90YWJsZXN5bmNfd29ya2VyKCkpOworCQkJRGlzYWJsZVN1YnNjcmlwdGlv bk9uRXJyb3IoKTsKIAotCQkJUEdfUkVfVEhST1coKTsKLQkJfQorCQkvKiBTZXQgdGhlIHJldHJ5 IGZsYWcuICovCisJCXNldF9zdWJzY3JpcHRpb25fcmV0cnkodHJ1ZSk7CiAJfQogCVBHX0VORF9U UlkoKTsKIH0KQEAgLTQ2NzIsMzkgKzQ3MTEsMjAgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1h aW5fYXJnKQogfQogCiAvKgotICogQWZ0ZXIgZXJyb3IgcmVjb3ZlcnksIGRpc2FibGUgdGhlIHN1 YnNjcmlwdGlvbiBpbiBhIG5ldyB0cmFuc2FjdGlvbgotICogYW5kIGV4aXQgY2xlYW5seS4KKyAq IERpc2FibGUgdGhlIHN1YnNjcmlwdGlvbiBpbiBhIG5ldyB0cmFuc2FjdGlvbi4KICAqLwogc3Rh dGljIHZvaWQKLURpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KHZvaWQpCitEaXNhYmxlU3Vic2Ny aXB0aW9uT25FcnJvcih2b2lkKQogewotCS8qCi0JICogRW1pdCB0aGUgZXJyb3IgbWVzc2FnZSwg YW5kIHJlY292ZXIgZnJvbSB0aGUgZXJyb3Igc3RhdGUgdG8gYW4gaWRsZQotCSAqIHN0YXRlCi0J ICovCi0JSE9MRF9JTlRFUlJVUFRTKCk7Ci0KLQlFbWl0RXJyb3JSZXBvcnQoKTsKLQlBYm9ydE91 dE9mQW55VHJhbnNhY3Rpb24oKTsKLQlGbHVzaEVycm9yU3RhdGUoKTsKLQotCVJFU1VNRV9JTlRF UlJVUFRTKCk7Ci0KLQkvKiBSZXBvcnQgdGhlIHdvcmtlciBmYWlsZWQgZHVyaW5nIGVpdGhlciB0 YWJsZSBzeW5jaHJvbml6YXRpb24gb3IgYXBwbHkgKi8KLQlwZ3N0YXRfcmVwb3J0X3N1YnNjcmlw dGlvbl9lcnJvcihNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLAotCQkJCQkJCQkJICFhbV90YWJs ZXN5bmNfd29ya2VyKCkpOwotCiAJLyogRGlzYWJsZSB0aGUgc3Vic2NyaXB0aW9uICovCiAJU3Rh cnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlEaXNhYmxlU3Vic2NyaXB0aW9uKE15U3Vic2NyaXB0 aW9uLT5vaWQpOwogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyogTm90aWZ5IHRo ZSBzdWJzY3JpcHRpb24gaGFzIGJlZW4gZGlzYWJsZWQgYW5kIGV4aXQgKi8KKwkvKiBOb3RpZnkg dGhlIHN1YnNjcmlwdGlvbiBoYXMgYmVlbiBkaXNhYmxlZCAqLwogCWVyZXBvcnQoTE9HLAogCQkJ ZXJybXNnKCJzdWJzY3JpcHRpb24gXCIlc1wiIGhhcyBiZWVuIGRpc2FibGVkIGJlY2F1c2Ugb2Yg YW4gZXJyb3IiLAogCQkJCSAgIE15U3Vic2NyaXB0aW9uLT5uYW1lKSk7Ci0KLQlwcm9jX2V4aXQo MCk7CiB9CiAKIC8qCkBAIC01MDQ3LDMgKzUwNjcsNzEgQEAgZ2V0X3RyYW5zYWN0aW9uX2FwcGx5 X2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKip3aW5m bykKIAkJcmV0dXJuIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOwogCX0KIH0KKworLyoK KyAqIFNldCBzdWJyZXRyeSBvZiBwZ19zdWJzY3JpcHRpb24gY2F0YWxvZy4KKyAqCisgKiBJZiBy ZXRyeSBpcyB0cnVlLCBzdWJzY3JpYmVyIGlzIGFib3V0IHRvIGV4aXQgd2l0aCBhbiBlcnJvci4g T3RoZXJ3aXNlLCBpdAorICogbWVhbnMgdGhhdCB0aGUgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQg c3VjY2Vzc2Z1bGx5LgorICovCitzdGF0aWMgdm9pZAorc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShi b29sIHJldHJ5KQoreworCVJlbGF0aW9uCXJlbDsKKwlIZWFwVHVwbGUJdHVwOworCWJvb2wJCXN0 YXJ0ZWRfdHggPSBmYWxzZTsKKwlib29sCQludWxsc1tOYXR0c19wZ19zdWJzY3JpcHRpb25dOwor CWJvb2wJCXJlcGxhY2VzW05hdHRzX3BnX3N1YnNjcmlwdGlvbl07CisJRGF0dW0JCXZhbHVlc1tO YXR0c19wZ19zdWJzY3JpcHRpb25dOworCisJLyogRmFzdCBwYXRoIC0gaWYgbm8gc3RhdGUgY2hh bmdlIHRoZW4gbm90aGluZyB0byBkbyAqLworCWlmIChNeVN1YnNjcmlwdGlvbi0+cmV0cnkgPT0g cmV0cnkpCisJCXJldHVybjsKKworCS8qIEZhc3QgcGF0aCAtIHNraXAgZm9yIHBhcmFsbGVsIGFw cGx5IHdvcmtlcnMgKi8KKwlpZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJCXJldHVy bjsKKworCS8qIEZhc3QgcGF0aCAtIHNraXAgc2V0IHJldHJ5IGlmIG5vIGFjdGl2ZSBwYXJhbGxl bCBhcHBseSB3b3JrZXJzICovCisJaWYgKHJldHJ5ICYmICFwYV9oYXZlX2FjdGl2ZV93b3JrZXIo KSkKKwkJcmV0dXJuOworCisJaWYgKCFJc1RyYW5zYWN0aW9uU3RhdGUoKSkKKwl7CisJCVN0YXJ0 VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCXN0YXJ0ZWRfdHggPSB0cnVlOworCX0KKworCS8qIExv b2sgdXAgdGhlIHN1YnNjcmlwdGlvbiBpbiB0aGUgY2F0YWxvZyAqLworCXJlbCA9IHRhYmxlX29w ZW4oU3Vic2NyaXB0aW9uUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisJdHVwID0gU2Vh cmNoU3lzQ2FjaGVDb3B5MShTVUJTQ1JJUFRJT05PSUQsCisJCQkJCQkJICBPYmplY3RJZEdldERh dHVtKE15U3Vic2NyaXB0aW9uLT5vaWQpKTsKKworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXAp KQorCQllbG9nKEVSUk9SLCAic3Vic2NyaXB0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsIE15 U3Vic2NyaXB0aW9uLT5uYW1lKTsKKworCUxvY2tTaGFyZWRPYmplY3QoU3Vic2NyaXB0aW9uUmVs YXRpb25JZCwgTXlTdWJzY3JpcHRpb24tPm9pZCwgMCwKKwkJCQkJIEFjY2Vzc1NoYXJlTG9jayk7 CisKKwkvKiBGb3JtIGEgbmV3IHR1cGxlLiAqLworCW1lbXNldCh2YWx1ZXMsIDAsIHNpemVvZih2 YWx1ZXMpKTsKKwltZW1zZXQobnVsbHMsIGZhbHNlLCBzaXplb2YobnVsbHMpKTsKKwltZW1zZXQo cmVwbGFjZXMsIGZhbHNlLCBzaXplb2YocmVwbGFjZXMpKTsKKworCS8qIFNldCBzdWJyZXRyeSAq LworCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJyZXRyeSAtIDFdID0gQm9vbEdldERh dHVtKHJldHJ5KTsKKwlyZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJyZXRyeSAtIDFd ID0gdHJ1ZTsKKworCXR1cCA9IGhlYXBfbW9kaWZ5X3R1cGxlKHR1cCwgUmVsYXRpb25HZXREZXNj cihyZWwpLCB2YWx1ZXMsIG51bGxzLAorCQkJCQkJCXJlcGxhY2VzKTsKKworCS8qIFVwZGF0ZSB0 aGUgY2F0YWxvZy4gKi8KKwlDYXRhbG9nVHVwbGVVcGRhdGUocmVsLCAmdHVwLT50X3NlbGYsIHR1 cCk7CisKKwkvKiBDbGVhbnVwLiAqLworCWhlYXBfZnJlZXR1cGxlKHR1cCk7CisJdGFibGVfY2xv c2UocmVsLCBOb0xvY2spOworCisJaWYgKHN0YXJ0ZWRfdHgpCisJCUNvbW1pdFRyYW5zYWN0aW9u Q29tbWFuZCgpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3Ny Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggNWU4MDBkYy4uOTMxMjMzZiAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5jCkBAIC00NTYwLDggKzQ1NjAsOSBAQCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQp CiAJbnR1cHMgPSBQUW50dXBsZXMocmVzKTsKIAogCS8qCi0JICogR2V0IHN1YnNjcmlwdGlvbiBm aWVsZHMuIFdlIGRvbid0IGluY2x1ZGUgc3Vic2tpcGxzbiBpbiB0aGUgZHVtcCBhcwotCSAqIGFm dGVyIHJlc3RvcmluZyB0aGUgZHVtcCB0aGlzIHZhbHVlIG1heSBubyBsb25nZXIgYmUgcmVsZXZh bnQuCisJICogR2V0IHN1YnNjcmlwdGlvbiBmaWVsZHMuIFdlIGRvbid0IGluY2x1ZGUgc3Vic2tp cGxzbiBhbmQgc3VicmV0cnkgaW4KKwkgKiB0aGUgZHVtcCBhcyBhZnRlciByZXN0b3JpbmcgdGhl IGR1bXAgdGhpcyB2YWx1ZSBtYXkgbm8gbG9uZ2VyIGJlCisJICogcmVsZXZhbnQuCiAJICovCiAJ aV90YWJsZW9pZCA9IFBRZm51bWJlcihyZXMsICJ0YWJsZW9pZCIpOwogCWlfb2lkID0gUFFmbnVt YmVyKHJlcywgIm9pZCIpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJz Y3JpcHRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKaW5kZXgg YjBmMmExNy4uOGVkYmJjYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJz Y3JpcHRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCkBA IC04OCw2ICs4OCwxMSBAQCBDQVRBTE9HKHBnX3N1YnNjcmlwdGlvbiw2MTAwLFN1YnNjcmlwdGlv blJlbGF0aW9uSWQpIEJLSV9TSEFSRURfUkVMQVRJT04gQktJX1JPVwogCWJvb2wJCXN1YmRpc2Fi bGVvbmVycjsJLyogVHJ1ZSBpZiBhIHdvcmtlciBlcnJvciBzaG91bGQgY2F1c2UgdGhlCiAJCQkJ CQkJCQkgKiBzdWJzY3JpcHRpb24gdG8gYmUgZGlzYWJsZWQgKi8KIAorCWJvb2wJCXN1YnJldHJ5 IEJLSV9ERUZBVUxUKGYpOwkvKiBUcnVlIGlmIHByZXZpb3VzIGNoYW5nZSBmYWlsZWQKKwkJCQkJ CQkJCQkJICogdG8gYmUgYXBwbGllZCB3aGlsZSB0aGVyZSB3ZXJlCisJCQkJCQkJCQkJCSAqIGFu eSBhY3RpdmUgcGFyYWxsZWwgYXBwbHkKKwkJCQkJCQkJCQkJICogd29ya2VycyAqLworCiAjaWZk ZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUg Ki8KIAkvKiBDb25uZWN0aW9uIHN0cmluZyB0byB0aGUgcHVibGlzaGVyICovCiAJdGV4dAkJc3Vi Y29ubmluZm8gQktJX0ZPUkNFX05PVF9OVUxMOwpAQCAtMTMxLDYgKzEzNiw4IEBAIHR5cGVkZWYg c3RydWN0IFN1YnNjcmlwdGlvbgogCWJvb2wJCWRpc2FibGVvbmVycjsJLyogSW5kaWNhdGVzIGlm IHRoZSBzdWJzY3JpcHRpb24gc2hvdWxkIGJlCiAJCQkJCQkJCSAqIGF1dG9tYXRpY2FsbHkgZGlz YWJsZWQgaWYgYSB3b3JrZXIgZXJyb3IKIAkJCQkJCQkJICogb2NjdXJzICovCisJYm9vbAkJcmV0 cnk7CQkJLyogSW5kaWNhdGVzIGlmIHByZXZpb3VzIGNoYW5nZSBmYWlsZWQgdG8gYmUKKwkJCQkJ CQkJICogYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciAqLwogCWNoYXIJICAg KmNvbm5pbmZvOwkJLyogQ29ubmVjdGlvbiBzdHJpbmcgdG8gdGhlIHB1Ymxpc2hlciAqLwogCWNo YXIJICAgKnNsb3RuYW1lOwkJLyogTmFtZSBvZiB0aGUgcmVwbGljYXRpb24gc2xvdCAqLwogCWNo YXIJICAgKnN5bmNjb21taXQ7CQkvKiBTeW5jaHJvbm91cyBjb21taXQgc2V0dGluZyBmb3Igd29y a2VyICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJu YWwuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IGYz YjJmMmQuLjQyYzMzYTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtl cl9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5h bC5oCkBAIC0zMDgsNiArMzA4LDggQEAgZXh0ZXJuIHZvaWQgcGFfZGVjcl9hbmRfd2FpdF9zdHJl YW1fYmxvY2sodm9pZCk7CiBleHRlcm4gdm9pZCBwYV94YWN0X2ZpbmlzaChQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqd2luZm8sCiAJCQkJCQkgICBYTG9nUmVjUHRyIHJlbW90ZV9sc24pOwogCitl eHRlcm4gYm9vbCBwYV9oYXZlX2FjdGl2ZV93b3JrZXIodm9pZCk7CisKICNkZWZpbmUgaXNQYXJh bGxlbEFwcGx5V29ya2VyKHdvcmtlcikgKCh3b3JrZXIpLT5hcHBseV9sZWFkZXJfcGlkICE9IElu dmFsaWRQaWQpCiAKIHN0YXRpYyBpbmxpbmUgYm9vbApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9z dHJlYW0ucGwKaW5kZXggODNkNjk1Ni4uNDA1NGE1ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MTVfc3RyZWFtLnBsCkBAIC03NCw4ICs3NCwxNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkJJ2No ZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycpOwogCiAJIyBUZXN0IHRo ZSBzdHJlYW1pbmcgaW4gYmluYXJ5IG1vZGUKKwlteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxp Y2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdz dHJlYW1pbmcnOyIKKwkpOwogCSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAogCQkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUIChiaW5hcnkgPSBvbikiKTsKKwkk bm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBw aWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25f bmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorCSAgKQorCSAgb3Ig ZGllCisJICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0 ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKIAogCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9n IGZyb20gbm93IG9uLgogCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwpA QCAtNDUwLDYgKzQ1OCw2MSBAQCAkcmVzdWx0ID0KIGlzKCRyZXN1bHQsIHFxKDUwMDApLAogCSdk YXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBieSBzZXJpYWxpemluZyBtZXNzYWdlcyB0byBk aXNrJyk7CiAKKyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3Rf dGFiXzIiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisK KyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorIyBUZXN0IHJlLWFwcGx5IGEgZmFpbGVkIHN0cmVhbWlu ZyB0cmFuc2FjdGlvbiB1c2luZyB0aGUgbGVhZGVyIGFwcGx5CisjIHdvcmtlciBhbmQgYXBwbHkg c3Vic2VxdWVudCBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIHBhcmFsbGVsIGFwcGx5 CisjIHdvcmtlciBhZnRlciB0aGlzIHJldHJ5IHN1Y2NlZWRzLgorIyA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUg VU5JUVVFIElOREVYIGlkeF90YWIgb24gdGVzdF90YWJfMihhKSIpOworCisjIENoZWNrIHRoZSBz dWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVy LT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBx cXsKK0JFR0lOOworSU5TRVJUIElOVE8gdGVzdF90YWJfMiBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRl X3NlcmllcygxLCA1MDAwKSBzKGkpOworSU5TRVJUIElOVE8gdGVzdF90YWJfMiB2YWx1ZXMoMSk7 CitDT01NSVQ7fSk7CisKKyMgQ2hlY2sgaWYgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyBu b3Qgc3RhcnRlZCBiZWNhdXNlIHRoZSBhYm92ZQorIyB0cmFuc2FjdGlvbiBmYWlsZWQgdG8gYmUg YXBwbGllZC4KKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9ERUJVRzogKCBb QS1aMC05XSs6KT8gcGFyYWxsZWwgYXBwbHkgd29ya2VycyBhcmUgbm90IHVzZWQgZm9yIHJldHJp ZXMvLAorCSRvZmZzZXQpOworCisjIERyb3AgdGhlIHVuaXF1ZSBpbmRleCBvbiB0aGUgc3Vic2Ny aWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJEUk9QIElOREVYIGlkeF90YWIiKTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0 cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiskbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZXN0X3RhYl8yIik7CitpcygkcmVzdWx0LCBxcSg1MDAxKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBz dWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGluZGV4Jyk7CisKKyMgQWZ0ZXIgc3VjY2Vzc2Z1bGx5 IHJldHJ5aW5nIHRvIGFwcGx5IGEgZmFpbGVkIHN0cmVhbWluZyB0cmFuc2FjdGlvbiwgYXBwbHkK KyMgdGhlIGZvbGxvd2luZyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIHBhcmFsbGVs IGFwcGx5IHdvcmtlci4KKworIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24u Ciskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGVzdF90YWJfMiBTRUxF Q1QgaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLCAxMDAwMCkgcyhpKSIpOworCitjaGVja19w YXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgMSwgJ0NPTU1JVCcpOworCisk cmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxF Q1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl8yIik7CitpcygkcmVzdWx0LCBxcSgxMDAwMSksCisJ J2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIHVzaW5nIHRoZSBwYXJhbGxlbCBhcHBseSB3 b3JrZXInKTsKKwogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3Rv cDsKIAotLSAKMi43LjIud2luZG93cy4xCgo= --_006_OS0PR01MB571685A645E509267AC5F30894F99OS0PR01MB5716jpnp_--