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 1pE1zB-0004hQ-28 for pgsql-hackers@arkaria.postgresql.org; Sat, 07 Jan 2023 05:43:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pE1z9-0002x7-Ev for pgsql-hackers@arkaria.postgresql.org; Sat, 07 Jan 2023 05:43:15 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pE1z8-0002wT-5W for pgsql-hackers@lists.postgresql.org; Sat, 07 Jan 2023 05:43:15 +0000 Received: from esa6.fujitsucc.c3s2.iphmx.com ([68.232.159.83]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pE1z3-00011E-MG for pgsql-hackers@lists.postgresql.org; Sat, 07 Jan 2023 05:43:13 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1673070190; x=1704606190; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=a2XITCqdTE3DQiPs6qFyNXdFCPnuTzuqVh4nNfRK8pI=; b=NnU3BD02Xz/xXuBmQTzZEC9JznIcyuqR5igylSF9b7QLJs23yH2Mmp/r rnsh+FUDANjvKpufKU6EsDtbjkMALMDZ3A1XBD28D7Tc5IvY6P9GMo9Mp 3+CgUYuGFcCfFd19YpXUeRC9xxc85hV2kWSfyqfhYId9BbeYEO/AGGsMC EE6v9ZbbN24bzOCV/K67fEPXvnXWAvQ1wSqNJc/WuBStKechdS+Pj1fg6 2MQznzv4Be5oiV/QqWp4IMZSyPyxq4IRW7ACMwnpsCXQp1MROZAMDQrW4 8KAQXXIMfg6FlZ6/Qd5gJZVJe8gQJvHOQK0pmWa2Fo0eY7BxRKlpJS9jF g==; X-IronPort-AV: E=McAfee;i="6500,9779,10582"; a="74000224" X-IronPort-AV: E=Sophos;i="5.96,307,1665414000"; d="scan'208,223";a="74000224" Received: from mail-tycjpn01lp2176.outbound.protection.outlook.com (HELO JPN01-TYC-obe.outbound.protection.outlook.com) ([104.47.23.176]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Jan 2023 14:43:05 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=V1/0u1B2zdmm/qvgNEyEvKpQrGL9w5IbRv4VoY4rWs+2fCrkdvipoDfHw+qHqNjlGOAXevJLndEv8bqWMPE5LyekcAHX+Jltcm7pDFMugcRiqaCglevVZ7A604mLcU2KHt8HhMplCreWXxbyIZcw2YPmlQHrlRaBDZA1ceFzEADs0bn07Z9jRNH2tcCuBHS7RcoPHn8mdKJZOhQxdpnXLv+iFd0Ti/r2MI9lma/ev7WlNeAUNEEvEKBaWXYr7/opTW6o2wQahkvOUySIc0k8W/nG67oEscQ12WiL7vHbHDBdiOcrisi5vXef3Lf5G5bdeECHxgIJoNdOOsCZOBzwAw== 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=oTQxVI3Mk8YXTUL13jl6FYQI89LMka99FcYZ6Wps9EM=; b=JWzAY1jRQNstaVrL913S1LM7ME8e/7WDYOG9P4dAAXwY65ikSjk6vwBpdqBSsT72WV+h6jcKvOLBDacyC43Fgp5e9/ry0yZUaA7mFoHr4iJE+NTasw8dmkdvWwnQIWyxnl4miBOXi7B7BVQOkZNZ3eLj5gNDJHBs6i9BgOb1HM4JqTSVF3QIhAAQiMnereqY7E52GeDjYHtSCycKwCSIf8bXSamyRHFRbBD2mN1SwErv57FuALPEDDWnBfQjXyV5Je9SwzLKAL6n33GkZuS6w9mlj8te+SNSn5Lic2AeWal29Sn2juiCp4zhYg0AaxS9hs1HyYuH7kbJh5TLf1N8gg== 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 OS3PR01MB5718.jpnprd01.prod.outlook.com (2603:1096:604:c6::7) by TYCPR01MB5743.jpnprd01.prod.outlook.com (2603:1096:400:42::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Sat, 7 Jan 2023 05:43:00 +0000 Received: from OS3PR01MB5718.jpnprd01.prod.outlook.com ([fe80::389d:47ce:7f2e:b1f4]) by OS3PR01MB5718.jpnprd01.prod.outlook.com ([fe80::389d:47ce:7f2e:b1f4%9]) with mapi id 15.20.5944.019; Sat, 7 Jan 2023 05:42:59 +0000 From: "houzj.fnst@fujitsu.com" To: Dilip Kumar CC: Amit Kapila , Masahiko Sawada , "wangw.fnst@fujitsu.com" , Peter Smith , "shiy.fnst@fujitsu.com" , PostgreSQL Hackers 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+AIAAKYCwgAE8UACAAA1nAA== Date: Sat, 7 Jan 2023 05:42:59 +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?NTBfQWN0aW9uSWQ9NGYzOTk3NDQtZThmNi00Y2NkLWJhZjUtNTExYWFhNDNi?= =?utf-8?B?M2FlO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?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?ZWNlMDUwX1NldERhdGU9MjAyMy0wMS0wN1QwNTozNzo1OVo7TVNJUF9MYWJl?= =?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: OS3PR01MB5718:EE_|TYCPR01MB5743:EE_ x-ms-office365-filtering-correlation-id: 367c8c0b-0eac-4295-1ad5-08daf072091e x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 7Xy3vUMZs766avWK3/Qjgh9xHkN6rhbF4VQwNDwg1yVp54t1G5CvHoONzSM1o0/nQoF3O6nTfxfhLgm9ZF4bgz40szDZM2jTNmrXznt3LJdaHFVoyKqT+qmcVDGBwrjid77rxH2uzmdbjzAcPbk8e6S6dae1KnpspxUt8vmqCCgAIMQHKp5fEViPRLQb8OY91X97UItUVXKQvkHkqU9HovuimVft0ZGhIcIHK6RbesTkUgTo9LzJfOpnGOkppBN+zi2LD8pqzzKY+b8ywPwlxQVu+bWwXD0yHRZsWLIbLHp4ViRBvt3MUhgR56RfIihh8W2lxn0LD8PsRC1VRCE38av96BSpng7jqFYX1bJcTVLxUjiLBLiUfpipBqs2MRXmJIxIzYeqfOuEvs0J38Qj7izuQbD+0wHRw3GH6T9OlTORLwEOXSZP9lDtZZ7Up/nvS35XHB4onLP3WGDNDUyF4AcLK2esmdUZRVvOYRGnvyUb8GVP5bMgbbXgilHoiGoFjJ/BhzHWxEcqOeeEhewZcCT480GdcGqWMrDfzemf7iY6Bek8BLedZ5NI2ecJqQ7Z8hEXi5e1ruB55Rjw5IOUa35stxHQmYczmJK8aw4EqF/sFgU85ZZaMCmsEBswVeqRsUUZwEbeTxWSCVnyhuzI57IiLt8XLxK5DTCbk7oue7veuu2D4Y8WJcm3Zb5Be1meGSybroneii1+ne2J3flsNiN3qYAlCFwoofE8QqGoWqI= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3PR01MB5718.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(376002)(136003)(396003)(346002)(366004)(39860400002)(451199015)(1590799012)(5660300002)(2906002)(52536014)(8936002)(71200400001)(41300700001)(4744005)(4326008)(478600001)(316002)(66899015)(8676002)(66556008)(66476007)(64756008)(66946007)(6916009)(66446008)(54906003)(76116006)(1580799009)(9686003)(33656002)(26005)(6506007)(55016003)(83380400001)(7696005)(186003)(53546011)(122000001)(38100700002)(99936003)(82960400001)(38070700005)(86362001)(85182001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Q2QwMlQ2UzRrbUxRZnZPOE5DRm1sY2ZYZnR3L0JxcEZLUjA4cGhJZWQrSUdF?= =?utf-8?B?eU5HL2k2US9GSXhuTmRnVnNaemsvQm1qZlQ5b3lqTXlUeldPTkxuTUJKb1lM?= =?utf-8?B?STE1ekxpRmNwbERMZERwa05aeWNRT256cmd6c3JKeVlTSDZCWjB4cnZNdll3?= =?utf-8?B?NXZib0oxYnpobDJXOFZDQXVQZVJiTithV2wvdDlGbmpIeG1PZGY1cUlhaGlv?= =?utf-8?B?OTRwSFBrWkRqU0oxa2lGUW13eVVjcmsxWmFwRmNEa05LK21aRXhoNlMwUmUz?= =?utf-8?B?Sm01bzZQazJpSWNZdWdnTFdTZlh2LzU4dzZFOUhXbmJXNHg5Zm9UNFRYcnJD?= =?utf-8?B?VnNTNnVaTzFCbWU2K0JtNndaQ25BOVpUWWppOWRXeTExbXVFUGR1eHhoZVJW?= =?utf-8?B?QnRUZjJMSHhwYTBacitDaEY5R1pNNmxWTnFEdEM4bXVmRkUxRURpbzl4aXJs?= =?utf-8?B?bzlJM1NDNEtHZWdPdVU4NWdlejIxaVJ2NUo1RzNZb3JaYkxQeGl0cmVCY08y?= =?utf-8?B?T0FyMXhvY1RZanY0NjJ1RXIrNlV5TFc4cWliemV5NnFHeHpYSURUYzE4cTlW?= =?utf-8?B?S0xyWElxWjVxeUFQcDJha3NLWlNkbDZFb2hIN21kVXl5LzhrS2lZNjdqUW5l?= =?utf-8?B?SktiU1RtZ3dzNnByQ1AwaUN0YjY3WmhjRXRudlNPbElHN0dKVTZtSlRmaUNm?= =?utf-8?B?MUhLeVBlQm53cW1LQmgrckJ5YU5LbEVDb3hsTktya2tKMnJYK2lnTGdzVjh4?= =?utf-8?B?dWl3dmhodTNWcDR3ZmsyKzZjS2FNN3ZORlR2ZGNKRWVrMm1lTmJvdUl0RG8w?= =?utf-8?B?eDZaaEJMc0hraGR3L1J0Y1BkbTlKSFdVTUZPSTd2NUdHNjlsWVFROVpVWVR2?= =?utf-8?B?b0R3NlE1b1Evem5SN0tFcXZiVHhlUkVtVFJFSGZ6R3FSM0lOUTB1TXZwdDVZ?= =?utf-8?B?VHhsRlVpdFZWTjVoTWlkKytZK3pGVUlnelN5OENFV1liRmVrdWhjVGNkNmNZ?= =?utf-8?B?U0MzaE41ZHk3TFFSSUEzM2NNaXRvb3AvREI1MVlDdmxFdVVMN0REWjBQTFNQ?= =?utf-8?B?d3hqVWpyT3RrQ0ZmY25mQnJ0WnRFVHFtSnljZVpKa1R4dDNJUk1JNVNodjE0?= =?utf-8?B?UjZzRFpUTjRqeU9VTURlNmdjcTNUa1I1ZGdCeE5yVzhsNW40V1pyTm1SS1RQ?= =?utf-8?B?ak9HaGFERFlFV1VXdERiYnZCVEhuWEE3WXZ4TGY4bmpnY2U1QUZ5Yis5NUlE?= =?utf-8?B?SStnWFkzUEZBelpQY0IwRHZoeDkxVytVYTlyUUwvS0xKSlNOSkY1WkFFVHdI?= =?utf-8?B?eXJGQW8wT3h5TlhFNnFKZVQyTjBhTjRRYmFEZjByN0d3YXNDMzhNa3BNY1NC?= =?utf-8?B?UmRhRkhhaG1ZRE1JenJyNlpnWTg0eXlzeE1aUDJFUVRoZUU0ODZGVUNQdlBT?= =?utf-8?B?cjdoRnZhcktVUVJuYTlvQUZFMEpxMXdibHZETWJuYXRZUHpwcXV3Q3lrVEor?= =?utf-8?B?a2lONkN0OXMxMFI1cW9TY0Y1QWFvWFJvUkxRT3Viekczclk0YUpPTW15UURv?= =?utf-8?B?amttdUpvQlc3cHpjbitJcGEvSXpJbFRKMllJN01qSEsrTHRMazVoVnRNNDBt?= =?utf-8?B?K1VSQVp5alBBVGk5a1BRd2lyc2dKeDFxQnVLYmZ1ZzlHYXZ1L3JkZkdzcDhj?= =?utf-8?B?NHgzMnZWNm5RRUZWMmVqa09IUmRqREsrYTREUHU3dkhjRUVKQ2FJN2lzU3FI?= =?utf-8?B?S0VPL0lacEZmcjZwNms4QXZTbmRRQnRGa1ZJOUIvdk9nTzVqbkJsSnVoUUhV?= =?utf-8?B?NkRramFCUkozYnBlM1NiSTBDdk5YZGRhbzU0VnV1T09ocVlRN0lwNG9lQkRQ?= =?utf-8?B?NnJ3azd3ZmlWeDNMRkZSckFYTTQ1d2k3QXZiMTR3MjhvR3NpUXZHWXB6OUFB?= =?utf-8?B?dFlUanE0bUprUTY1cHdBZnFIelBJMU5aSlhZdTl1WlhCRVJhbFc0ZnJuYkky?= =?utf-8?B?UXhjQnRXUzk0K2ljNmJpVXo2dW5jUytrRmxFREhhaEdDTmdhUFM4cDd1QkNE?= =?utf-8?B?SlRqeW52L253N2ZKR1V1SmtSd2ZUMW83bzZycXo5eXF5ZEVXSUJKU29LWEJp?= =?utf-8?Q?7rPmtQjax0OFx7YRbPomoAoyj?= Content-Type: multipart/mixed; boundary="_006_OS3PR01MB5718AE486227CE3ACB844C5E94F89OS3PR01MB5718jpnp_" MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: Lhfrw63E9tbIlJ33dN3Okj+tuTWrU6UaqinJ4Bt/31wXCwmizlHU9gJJu2bZkxSf7PzG9TD2qxcdCK59bowiIsBMb+J80bB0L86iyyfddNqRwDcMHcI8YUsm51en1EuzGv0ADwnQN5DPrJGPPk+Cl+JHkGyxmc7KRepBk8hga44FzJrFdUX44CsS0tF26WA/psWqDhGrcNtlTKdwQIc4dJ05+ViRnS+VGEBQ9ZwC6p3TDge0eI2ev7HVb8Ws7Fm1btA+kMmXOCkojk62/odySbiHq51cLePTTFLYSA7cCkqTppK0SEhcpja5XwlLGAES3YVbqqfAk3+9Yox9v/pFaFHEkOPCSECyeqRPCgHnAgn4br7OneQ1uO3+if7Zp1cCt2c6MKz33tSEecwqnPhQoO19y/droOre1pp3KCFPns8R8slAdcrTSU95fbE/FnvpELwpnQmlw1JCBac5IpLfI+U90pbQywHLMSlgXNh81Zs4N5Sl9ZFsTyxOHrjHQvgazuTyYle8OzazzfCPs7uzLf2NY5foB5s8s0TtbjE/x5Wb8BB5zjDKVbpl3BUQlys2XVT1aNJx0O7MweWsOvrR40YwaujI2GQT/wkqQVKpTk9mr64cDP9gyO+EGrng+3c6uj1po0Djpp8kJaS1UDxX8tWE9+Q62tj5Eh4o+WDbeY/Y+0WFL5V9KAI0DkcXD8oiJ9lELEA7ucoKOLw20kTaPxmqAqd9aA6pJO3ikV6LTLzL0/0ilwo8yVSK0f63uzcn5Ir0d2E15C41acDhzdonPIFYX11w9d+DYKUuBWMeS95UsSV2qi7xFBcPmYa5V7zu8xToWb8l35ygYmmOqExbeSzUsGzIaDey9FjYmPZJ11r4EPMVQPgjyIQTNqhvSdZJ/ByJwRK4X+5XkK2+4SLC1A== X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS3PR01MB5718.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 367c8c0b-0eac-4295-1ad5-08daf072091e X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jan 2023 05:42:59.5939 (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: v6Iy08nyCZfra3tk2FK6cqPAKByUHmxKrwrcpwMKWN94AXTxfnWumFxe4UwC2Q529EFFBYeUPsXWnrhFmPVkqQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYCPR01MB5743 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_006_OS3PR01MB5718AE486227CE3ACB844C5E94F89OS3PR01MB5718jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gU2F0dXJkYXksIEphbnVhcnkgNywgMjAyMyAxMjo1MCBQTSBEaWxpcCBLdW1hciA8ZGlsaXBi YWxhdXRAZ21haWwuY29tPg0KPiANCj4gT24gRnJpLCBKYW4gNiwgMjAyMyBhdCAzOjM4IFBNIGhv dXpqLmZuc3RAZnVqaXRzdS5jb20gPGhvdXpqLmZuc3RAZnVqaXRzdS5jb20+DQo+IHdyb3RlOg0K PiA+DQo+IA0KPiBMb29rcyBnb29kLCBidXQgSSBmZWVsIGluIHBhX3Byb2Nlc3Nfc3Bvb2xlZF9t ZXNzYWdlc19pZl9yZXF1aXJlZCgpDQo+IGZ1bmN0aW9uIGFmdGVyIGdldHRpbmcgdGhlIGZpbGVz dGF0ZSB0aGUgZmlyc3QgY2hlY2sgc2hvdWxkIGJlIGlmIChmaWxlc3RhdGU9PQ0KPiBGU19FTVBU WSkgcmV0dXJuIGZhbHNlLiAgSSBtZWFuIHdoeSB0byBwcm9jZXNzIHRocm91Z2ggYWxsIHRoZSBz dGF0ZXMgaWYgaXQgaXMNCj4gZW1wdHkgYW5kIHdlIGNhbiBkaXJlY3RseSBleGl0LiAgSXQgaXMg bm90IGEgYmlnIGRlYWwgc28gaWYgeW91IHByZWZlciB0aGUgd2F5IGl0IGlzDQo+IHRoZW4gSSBo YXZlIG5vIG9iamVjdGlvbiB0byBpdC4NCg0KSSB0aGluayB5b3VyIHN1Z2dlc3Rpb24gbG9va3Mg Z29vZCwgSSBoYXZlIGFkanVzdGVkIHRoZSBjb2RlLg0KSSBhbHNvIHJlYmFzZSB0aGUgcGF0Y2gg c2V0IGR1ZSB0byB0aGUgcmVjZW50IGNvbW1pdCBjNmUxZjYuDQpBbmQgaGVyZSBpcyB0aGUgbmV3 IHZlcnNpb24gcGF0Y2ggc2V0Lg0KDQpCZXN0IHJlZ2FyZHMsDQpIb3UgemoNCg== --_006_OS3PR01MB5718AE486227CE3ACB844C5E94F89OS3PR01MB5718jpnp_ Content-Type: application/octet-stream; name="v76-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch" Content-Description: v76-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch Content-Disposition: attachment; filename="v76-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch"; size=9665; creation-date="Sat, 07 Jan 2023 05:42:45 GMT"; modification-date="Sat, 07 Jan 2023 05:42:55 GMT" Content-Transfer-Encoding: base64 RnJvbSBkZTM2YTAyMjY0NTJmZTZhZTZhNWVhNDAyMTA0NTE0N2Q5ZWRkYTk3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFRodSwgNiBPY3QgMjAyMiAxNDo0MjoyNCArMDgwMApTdWJqZWN0OiBbUEFUQ0gg djc2IDUvNV0gQWRkIGEgbWFpbl93b3JrZXJfcGlkIHRvIHBnX3N0YXRfc3Vic2NyaXB0aW9uCgpt 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_OS3PR01MB5718AE486227CE3ACB844C5E94F89OS3PR01MB5718jpnp_ Content-Type: application/octet-stream; name="v76-0001-Perform-apply-of-large-transactions-by-parallel-.patch" Content-Description: v76-0001-Perform-apply-of-large-transactions-by-parallel-.patch Content-Disposition: attachment; filename="v76-0001-Perform-apply-of-large-transactions-by-parallel-.patch"; size=271982; creation-date="Sat, 07 Jan 2023 05:42:45 GMT"; modification-date="Sat, 07 Jan 2023 05:42:55 GMT" Content-Transfer-Encoding: base64 RnJvbSBmNTFjNzExM2EwOGM5NThkMGQyNzdjYzg4ZGQ0OWM3YzlmN2JkZWE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBTYXQsIDcgSmFuIDIwMjMgMTM6MzM6MDYgKzA4MDAKU3ViamVjdDogW1BBVENIIHY3 NiAxLzVdIFBlcmZvcm0gYXBwbHkgb2YgbGFyZ2UgdHJhbnNhY3Rpb25zIGJ5IHBhcmFsbGVsCgpD dXJyZW50bHksIGZvciBsYXJnZSB0cmFuc2FjdGlvbnMsIHRoZSBwdWJsaXNoZXIgc2VuZHMgdGhl IGRhdGEgaW4KbXVsdGlwbGUgc3RyZWFtcyAoY2hhbmdlcyBkaXZpZGVkIGludG8gY2h1bmtzIGRl cGVuZGluZyB1cG9uCmxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0pLCBhbmQgdGhlbiBvbiB0aGUg c3Vic2NyaWJlci1zaWRlLCB0aGUgYXBwbHkKd29ya2VyIHdyaXRlcyB0aGUgY2hhbmdlcyBpbnRv IHRlbXBvcmFyeSBmaWxlcyBhbmQgb25jZSBpdCByZWNlaXZlcyB0aGUKY29tbWl0LCBpdCByZWFk cyBmcm9tIHRob3NlIGZpbGVzIGFuZCBhcHBsaWVzIHRoZSBlbnRpcmUgdHJhbnNhY3Rpb24uIFRv CmltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIHN1Y2ggdHJhbnNhY3Rpb25zLCB3ZSBjYW4gaW5z dGVhZCBhbGxvdyB0aGVtIHRvCmJlIGFwcGxpZWQgdmlhIHBhcmFsbGVsIHdvcmtlcnMuCgpJbiB0 aGlzIGFwcHJvYWNoLCB3ZSBhc3NpZ24gYSBuZXcgcGFyYWxsZWwgYXBwbHkgd29ya2VyIChpZiBh dmFpbGFibGUpIGFzCnNvb24gYXMgdGhlIHhhY3QncyBmaXJzdCBzdHJlYW0gaXMgcmVjZWl2ZWQg YW5kIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyCndpbGwgc2VuZCBjaGFuZ2VzIHRvIHRoaXMgbmV3 IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4gVGhlIHBhcmFsbGVsIGFwcGx5CndvcmtlciB3aWxs IGRpcmVjdGx5IGFwcGx5IHRoZSBjaGFuZ2UgaW5zdGVhZCBvZiB3cml0aW5nIGl0IHRvIHRlbXBv cmFyeQpmaWxlcy4gSG93ZXZlciwgaWYgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgdGltZXMgb3V0 IHdoaWxlIGF0dGVtcHRpbmcgdG8Kc2VuZCBhIG1lc3NhZ2UgdG8gdGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciwgaXQgd2lsbCBzd2l0Y2ggdG8KInBhcnRpYWwgc2VyaWFsaXplIiBtb2RlIC0gIGlu IHRoaXMgbW9kZSwgdGhlIGxlYWRlciBzZXJpYWxpemVzIGFsbApyZW1haW5pbmcgY2hhbmdlcyB0 byBhIGZpbGUgYW5kIG5vdGlmaWVzIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIHRvCnJlYWQg YW5kIGFwcGx5IHRoZW0gYXQgdGhlIGVuZCBvZiB0aGUgdHJhbnNhY3Rpb24uIFdlIHVzZSBhIG5v bi1ibG9ja2luZwp3YXkgdG8gc2VuZCB0aGUgbWVzc2FnZXMgZnJvbSB0aGUgbGVhZGVyIGFwcGx5 IHdvcmtlciB0byB0aGUgcGFyYWxsZWwKYXBwbHkgdG8gYXZvaWQgZGVhZGxvY2tzLiBXZSBrZWVw IHRoaXMgcGFyYWxsZWwgYXBwbHkgYXNzaWduZWQgdGlsbCB0aGUKdHJhbnNhY3Rpb24gY29tbWl0 IGlzIHJlY2VpdmVkIGFuZCBhbHNvIHdhaXQgZm9yIHRoZSB3b3JrZXIgdG8gZmluaXNoIGF0CmNv bW1pdC4gVGhpcyBwcmVzZXJ2ZXMgY29tbWl0IG9yZGVyaW5nIGFuZCBhdm9pZCB3cml0aW5nIHRv IGFuZCByZWFkaW5nCmZyb20gZmlsZXMgaW4gbW9zdCBjYXNlcy4gV2Ugc3RpbGwgbmVlZCB0byBz cGlsbCBpZiB0aGVyZSBpcyBubyB3b3JrZXIKYXZhaWxhYmxlLgoKVGhpcyBwYXRjaCBhbHNvIGV4 dGVuZHMgdGhlIFNVQlNDUklQVElPTiAnc3RyZWFtaW5nJyBwYXJhbWV0ZXIgc28gdGhhdCB0aGUK dXNlciBjYW4gY29udHJvbCB3aGV0aGVyIHRvIGFwcGx5IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rp b24gaW4gYSBwYXJhbGxlbAphcHBseSB3b3JrZXIgb3Igc3BpbGwgdGhlIGNoYW5nZSB0byBkaXNr LiBUaGUgdXNlciBjYW4gc2V0IHRoZSBzdHJlYW1pbmcKcGFyYW1ldGVyIHRvICdvbi9vZmYnLCBv ciAncGFyYWxsZWwnLiBUaGUgcGFyYW1ldGVyIHZhbHVlICdwYXJhbGxlbCcgbWVhbnMKdGhlIHN0 cmVhbWluZyB3aWxsIGJlIGFwcGxpZWQgdmlhIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLCBpZiBh dmFpbGFibGUuClRoZSBwYXJhbWV0ZXIgdmFsdWUgJ29uJyBtZWFucyB0aGUgc3RyZWFtaW5nIHRy YW5zYWN0aW9uIHdpbGwgYmUgc3BpbGxlZAp0byBkaXNrLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAn b2ZmJyAoc2FtZSBhcyBjdXJyZW50IGJlaGF2aW91cikuCgpJbiBhZGRpdGlvbiwgdGhlIHBhdGNo IGV4dGVuZHMgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gU1RSRUFNX0FCT1JUCm1lc3NhZ2Ugc28g dGhhdCBhYm9ydF9sc24gYW5kIGFib3J0X3RpbWUgY2FuIGFsc28gYmUgc2VudCB3aGljaCBjYW4g YmUKdXNlZCB0byB1cGRhdGUgdGhlIHJlcGxpY2F0aW9uIG9yaWdpbiBpbiBwYXJhbGxlbCBhcHBs eSB3b3JrZXIgd2hlbiB0aGUKc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQuIEJlY2F1 c2UgdGhpcyBtZXNzYWdlIGV4dGVuc2lvbiBpcyBuZWVkZWQKdG8gc3VwcG9ydCBwYXJhbGxlbCBz dHJlYW1pbmcsIHBhcmFsbGVsIHN0cmVhbWluZyBpcyBub3Qgc3VwcG9ydGVkIGZvcgpwdWJsaWNh dGlvbnMgb24gc2VydmVycyA8IFBHMTYuCgpOb3RlOiBTaW5jZSB0aGUgZmllbGQgJ3N1YnN0cmVh bScgb2YgY2F0YWxvZyAncGdfc3Vic2NyaXB0aW9uJyBoYXMgYmVlbgpleHBhbmRlZCwgd2UgbmVl ZCBidW1wIGNhdGFsb2cgdmVyc2lvbi4KCkF1dGhvcjogSG91IFpoaWppZSwgV2FuZyB3ZWksIEFt aXQgS2FwaWxhIHdpdGggZGVzaWduIGlucHV0cyBmcm9tIFNhd2FkYSBNYXNhaGlrbwpSZXZpZXdl ZC1ieTogU2F3YWRhIE1hc2FoaWtvLCBQZXRlciBTbWl0aCwgU2hpIHl1LCBEaWxpcCBLdW1hciwg S3Vyb2RhIEhheWF0bwpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBQTRlSzErd3lO NnpwYUhVa0NMb3JFV054NzVNRzB4aE13Y0ZodmpxbTJLVVJaRUFHd0BtYWlsLmdtYWlsLmNvbQot LS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAxMSArLQogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDI4ICstCiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAg ICAgICAgICB8ICAgMjIgKy0KIGRvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgNSArCiBkb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbCAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgMjkgKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNj cmlwdGlvbi5zZ21sICAgICAgICAgIHwgICAyNCArLQogZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3 cy5zZ21sICAgICAgICAgICAgICAgICAgICAgfCAgIDE0ICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94YWN0LmMgICAgICAgICAgICAgICAgICB8ICAgMjQgKy0KIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICAgICAgIHwgICA2NyArLQogc3JjL2JhY2tl bmQvbGlicHEvcHFtcS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE4ICstCiBzcmMv YmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMgICAgICAgICAgICAgICAgICB8ICAgIDMgKwog c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuYyAgICAgICAgICAgICAgICAgfCAgICA1 ICstCiAuLi4vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMgICAgICAgICAgICB8 ICAgIDYgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUgICAgICAg ICAgIHwgICAgMSArCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2Vy LmMgICAgICB8IDE2MzAgKysrKysrKysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvZGVjb2RlLmMgICAgICAgICAgIHwgICAgNSArLQogc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jICAgICAgICAgfCAgMjIwICsrLQogc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNvbi5idWlsZCAgICAgICAgfCAgICAxICsKIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMgICAgICAgICAgIHwgICAyNiArLQog c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jICAgICAgICAgICAgfCAgIDM3 ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYyAgICB8 ICAgIDUgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgICAg ICAgIHwgICAyNSArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAg ICAgICAgICAgfCAxMzgwICsrKysrKysrKysrKysrLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9wZ291dHB1dC9wZ291dHB1dC5jICAgICAgICB8ICAgMjIgKy0KIHNyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3Byb2NzaWduYWwuYyAgICAgICAgICAgICAgIHwgICAgNCArCiBzcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvbG1nci5jICAgICAgICAgICAgICAgICAgICB8ICAgNDYgKwogc3JjL2JhY2tl bmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAzICsKIHNyYy9i YWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyAgICAgICAgICAgIHwgICAgNiArCiBz cmMvYmFja2VuZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMgICAgICAgICAgICAgICAgICB8ICAgMTYg Ky0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICAgICAgICAgICAgIHwg ICAxMiArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgICAg ICB8ICAgIDEgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICA2ICstCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMjEgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9u LmggICAgICAgICAgICAgIHwgICAyMSArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvc3Vic2NyaXB0 aW9uY21kcy5oICAgICAgICAgICAgfCAgICAyICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xv Z2ljYWxsYXVuY2hlci5oICAgICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9sb2dpY2FscHJvdG8uaCAgICAgICAgICAgICB8ICAgMjggKy0KIHNyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCAgICAgICAgICAgIHwgICAgOSArCiBzcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9vcmlnaW4uaCAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmggICAgICAgICAgICAgICAgIHwgICAgMiArLQogc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oICAgICAgICAgICAgfCAgICA0ICst CiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oICAgICAgICAgICAgICB8ICAg IDIgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICAgICAg IHwgIDIyNyArKy0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgNSArCiBzcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaCAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMTcgKy0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oICAg ICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50Lmgg ICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9z dWJzY3JpcHRpb24ub3V0ICAgICAgICAgfCAgIDQ2ICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9z dWJzY3JpcHRpb24uc3FsICAgICAgICAgICAgICB8ICAgIDYgKy0KIHNyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAxNV9zdHJlYW0ucGwgICAgICAgICAgICAgIHwgIDI3NCArKystCiBzcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwgICAgICB8ICAxMzAgKy0KIHNyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsICAgICAgICAgIHwgICAgMyArCiAu Li4vc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsICAgICB8ICAyMjAg KystCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbCB8 ICAgIDMgKwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwg ICAgfCAgICAyICsKIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0u cGwgICAgIHwgIDUyNSArKysrLS0tCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAg ICAgICAgICAgICAgICAgICB8ICAgIDcgKwogNTcgZmlsZXMgY2hhbmdlZCwgNDUwNCBpbnNlcnRp b25zKCspLCA3NTggZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKCmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmlu ZGV4IDkzMTZiODEuLmMxZTQwNDggMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC03OTEzLDExICs3OTEzLDE2 IEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9y ZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZsCiAKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSBy b2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+ Ci0gICAgICAgPHN0cnVjdGZpZWxkPnN1YnN0cmVhbTwvc3RydWN0ZmllbGQ+IDx0eXBlPmJvb2w8 L3R5cGU+CisgICAgICAgPHN0cnVjdGZpZWxkPnN1YnN0cmVhbTwvc3RydWN0ZmllbGQ+IDx0eXBl PmNoYXI8L3R5cGU+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KLSAgICAgICBJZiB0cnVl LCB0aGUgc3Vic2NyaXB0aW9uIHdpbGwgYWxsb3cgc3RyZWFtaW5nIG9mIGluLXByb2dyZXNzCi0g ICAgICAgdHJhbnNhY3Rpb25zCisgICAgICAgQ29udHJvbHMgaG93IHRvIGhhbmRsZSB0aGUgc3Ry ZWFtaW5nIG9mIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uczoKKyAgICAgICA8bGl0ZXJhbD5mPC9s aXRlcmFsPiA9IGRpc2FsbG93IHN0cmVhbWluZyBvZiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMs CisgICAgICAgPGxpdGVyYWw+dDwvbGl0ZXJhbD4gPSBzcGlsbCB0aGUgY2hhbmdlcyBvZiBpbi1w cm9ncmVzcyB0cmFuc2FjdGlvbnMgdG8KKyAgICAgICBkaXNrIGFuZCBhcHBseSBhdCBvbmNlIGFm dGVyIHRoZSB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gdGhlCisgICAgICAgcHVibGlzaGVy IGFuZCByZWNlaXZlZCBieSB0aGUgc3Vic2NyaWJlciwKKyAgICAgICA8bGl0ZXJhbD5wPC9saXRl cmFsPiA9IGFwcGx5IGNoYW5nZXMgZGlyZWN0bHkgdXNpbmcgYSBwYXJhbGxlbCBhcHBseQorICAg ICAgIHdvcmtlciBpZiBhdmFpbGFibGUgKHNhbWUgYXMgJ3QnIGlmIG5vIHdvcmtlciBpcyBhdmFp bGFibGUpCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAppbmRl eCAwNWIzODYyLi5hMzNhOTM1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC00OTY4LDcgKzQ5NjgsOCBAQCBBTlkg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4gKCA8 cmVwbGFjZWFibGUgY2xhc3M9IgogICAgICAgPGxpc3RpdGVtPgogICAgICAgIDxwYXJhPgogICAg ICAgICBTcGVjaWZpZXMgbWF4aW11bSBudW1iZXIgb2YgbG9naWNhbCByZXBsaWNhdGlvbiB3b3Jr ZXJzLiBUaGlzIGluY2x1ZGVzCi0gICAgICAgIGJvdGggYXBwbHkgd29ya2VycyBhbmQgdGFibGUg c3luY2hyb25pemF0aW9uIHdvcmtlcnMuCisgICAgICAgIGxlYWRlciBhcHBseSB3b3JrZXJzLCBw YXJhbGxlbCBhcHBseSB3b3JrZXJzLCBhbmQgdGFibGUgc3luY2hyb25pemF0aW9uCisgICAgICAg IHdvcmtlcnMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICBMb2dpY2Fs IHJlcGxpY2F0aW9uIHdvcmtlcnMgYXJlIHRha2VuIGZyb20gdGhlIHBvb2wgZGVmaW5lZCBieQpA QCAtNTAwOCw2ICs1MDA5LDMxIEBAIEFOWSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bnVtX3N5bmM8L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJsZSBjbGFzcz0iCiAgICAgICA8L2xp c3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJn dWMtbWF4LXBhcmFsbGVsLWFwcGx5LXdvcmtlcnMtcGVyLXN1YnNjcmlwdGlvbiIgeHJlZmxhYmVs PSJtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIj4KKyAgICAgIDx0 ZXJtPjx2YXJuYW1lPm1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb248 L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikKKyAgICAgIDxpbmRleHRlcm0+CisgICAg ICAgPHByaW1hcnk+PHZhcm5hbWU+bWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNj cmlwdGlvbjwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAg ICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8 cGFyYT4KKyAgICAgICAgTWF4aW11bSBudW1iZXIgb2YgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBw ZXIgc3Vic2NyaXB0aW9uLiBUaGlzCisgICAgICAgIHBhcmFtZXRlciBjb250cm9scyB0aGUgYW1v dW50IG9mIHBhcmFsbGVsaXNtIGZvciBzdHJlYW1pbmcgb2YKKyAgICAgICAgaW4tcHJvZ3Jlc3Mg dHJhbnNhY3Rpb25zIHdpdGggc3Vic2NyaXB0aW9uIHBhcmFtZXRlcgorICAgICAgICA8bGl0ZXJh bD5zdHJlYW1pbmcgPSBwYXJhbGxlbDwvbGl0ZXJhbD4uCisgICAgICAgPC9wYXJhPgorICAgICAg IDxwYXJhPgorICAgICAgICBUaGUgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBhcmUgdGFrZW4gZnJv bSB0aGUgcG9vbCBkZWZpbmVkIGJ5CisgICAgICAgIDx2YXJuYW1lPm1heF9sb2dpY2FsX3JlcGxp Y2F0aW9uX3dvcmtlcnM8L3Zhcm5hbWU+LgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4K KyAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgMi4gVGhpcyBwYXJhbWV0ZXIgY2FuIG9ubHkg YmUgc2V0IGluIHRoZQorICAgICAgICA8ZmlsZW5hbWU+cG9zdGdyZXNxbC5jb25mPC9maWxlbmFt ZT4gZmlsZSBvciBvbiB0aGUgc2VydmVyIGNvbW1hbmQKKyAgICAgICAgbGluZS4KKyAgICAgICA8 L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8 L3ZhcmlhYmxlbGlzdD4KICAgICA8L3NlY3QyPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv bG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRp b24uc2dtbAppbmRleCA3YjliYjAwLi41NGY0OGJlIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv bG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxp Y2F0aW9uLnNnbWwKQEAgLTE1MDEsNiArMTUwMSwxNiBAQCBDT05URVhUOiAgcHJvY2Vzc2luZyBy ZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luICJwZ18xNjM5NSIgZHVyaW5nICJJTlNF UgogICAgbWlnaHQgbm90IHZpb2xhdGUgYW55IGNvbnN0cmFpbnQuICBUaGlzIGNhbiBlYXNpbHkg bWFrZSB0aGUgc3Vic2NyaWJlcgogICAgaW5jb25zaXN0ZW50LgogICA8L3BhcmE+CisKKyAgPHBh cmE+CisgICBXaGVuIHRoZSBzdHJlYW1pbmcgbW9kZSBpcyA8bGl0ZXJhbD5wYXJhbGxlbDwvbGl0 ZXJhbD4sIHRoZSBmaW5pc2ggTFNOIG9mCisgICBmYWlsZWQgdHJhbnNhY3Rpb25zIG1heSBub3Qg YmUgbG9nZ2VkLiBJbiB0aGF0IGNhc2UsIGl0IG1heSBiZSBuZWNlc3NhcnkgdG8KKyAgIGNoYW5n ZSB0aGUgc3RyZWFtaW5nIG1vZGUgdG8gPGxpdGVyYWw+b248L2xpdGVyYWw+IG9yIDxsaXRlcmFs Pm9mZjwvbGl0ZXJhbD4gYW5kCisgICBjYXVzZSB0aGUgc2FtZSBjb25mbGljdHMgYWdhaW4gc28g dGhlIGZpbmlzaCBMU04gb2YgdGhlIGZhaWxlZCB0cmFuc2FjdGlvbiB3aWxsCisgICBiZSB3cml0 dGVuIHRvIHRoZSBzZXJ2ZXIgbG9nLiBGb3IgdGhlIHVzYWdlIG9mIGZpbmlzaCBMU04sIHBsZWFz ZSByZWZlciB0byA8bGluaworICAgbGlua2VuZD0ic3FsLWFsdGVyc3Vic2NyaXB0aW9uIj48Y29t bWFuZD5BTFRFUiBTVUJTQ1JJUFRJT04gLi4uCisgICBTS0lQPC9jb21tYW5kPjwvbGluaz4uCisg IDwvcGFyYT4KICA8L3NlY3QxPgogCiAgPHNlY3QxIGlkPSJsb2dpY2FsLXJlcGxpY2F0aW9uLXJl c3RyaWN0aW9ucyI+CkBAIC0xODA5LDggKzE4MTksOSBAQCBDT05URVhUOiAgcHJvY2Vzc2luZyBy ZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luICJwZ18xNjM5NSIgZHVyaW5nICJJTlNF UgogCiAgICA8cGFyYT4KICAgICA8bGluayBsaW5rZW5kPSJndWMtbWF4LWxvZ2ljYWwtcmVwbGlj YXRpb24td29ya2VycyI+PHZhcm5hbWU+bWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2Vyczwv dmFybmFtZT48L2xpbms+Ci0gICAgbXVzdCBiZSBzZXQgdG8gYXQgbGVhc3QgdGhlIG51bWJlciBv ZiBzdWJzY3JpcHRpb25zIChmb3IgYXBwbHkgd29ya2VycyksIHBsdXMKLSAgICBzb21lIHJlc2Vy dmUgZm9yIHRoZSB0YWJsZSBzeW5jaHJvbml6YXRpb24gd29ya2Vycy4KKyAgICBtdXN0IGJlIHNl dCB0byBhdCBsZWFzdCB0aGUgbnVtYmVyIG9mIHN1YnNjcmlwdGlvbnMgKGZvciBsZWFkZXIgYXBw bHkKKyAgICB3b3JrZXJzKSwgcGx1cyBzb21lIHJlc2VydmUgZm9yIHRoZSB0YWJsZSBzeW5jaHJv bml6YXRpb24gd29ya2VycyBhbmQKKyAgICBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLgogICAgPC9w YXJhPgogCiAgICA8cGFyYT4KQEAgLTE4MjgsNiArMTgzOSwxMyBAQCBDT05URVhUOiAgcHJvY2Vz c2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luICJwZ18xNjM5NSIgZHVyaW5n ICJJTlNFUgogICAgPC9wYXJhPgogCiAgICA8cGFyYT4KKyAgICA8bGluayBsaW5rZW5kPSJndWMt bWF4LXBhcmFsbGVsLWFwcGx5LXdvcmtlcnMtcGVyLXN1YnNjcmlwdGlvbiI+PHZhcm5hbWU+bWF4 X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbjwvdmFybmFtZT48L2xpbms+ CisgICAgIGNvbnRyb2xzIHRoZSBhbW91bnQgb2YgcGFyYWxsZWxpc20gZm9yIHN0cmVhbWluZyBv ZiBpbi1wcm9ncmVzcworICAgICB0cmFuc2FjdGlvbnMgd2l0aCBzdWJzY3JpcHRpb24gcGFyYW1l dGVyCisgICAgIDxsaXRlcmFsPnN0cmVhbWluZyA9IHBhcmFsbGVsPC9saXRlcmFsPi4KKyAgIDwv cGFyYT4KKworICAgPHBhcmE+CiAgICAgTG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXJzIGFyZSBh bHNvIGFmZmVjdGVkIGJ5CiAgICAgPGxpbmsgbGlua2VuZD0iZ3VjLXdhbC1yZWNlaXZlci10aW1l b3V0Ij48dmFybmFtZT53YWxfcmVjZWl2ZXJfdGltZW91dDwvdmFybmFtZT48L2xpbms+LAogICAg IDxsaW5rIGxpbmtlbmQ9Imd1Yy13YWwtcmVjZWl2ZXItc3RhdHVzLWludGVydmFsIj48dmFybmFt ZT53YWxfcmVjZWl2ZXJfc3RhdHVzX2ludGVydmFsPC92YXJuYW1lPjwvbGluaz4gYW5kCmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL21vbml0 b3Jpbmcuc2dtbAppbmRleCA1YmNiYTBmLi5jZjIyMGMzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKQEAg LTE4NTksNiArMTg1OSwxMSBAQCBwb3N0Z3JlcyAgIDI3MDkzICAwLjAgIDAuMCAgMzAwOTYgIDI3 NTIgPyAgICAgICAgU3MgICAxMTozNCAgIDA6MDAgcG9zdGdyZXM6IHNlcgogICAgICAgPGVudHJ5 PldhaXRpbmcgdG8gYWNxdWlyZSBhbiBhZHZpc29yeSB1c2VyIGxvY2suPC9lbnRyeT4KICAgICAg PC9yb3c+CiAgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+YXBwbHl0cmFuc2FjdGlv bjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5PldhaXRpbmcgdG8gYWNxdWlyZSBhIGxv Y2sgb24gYSByZW1vdGUgdHJhbnNhY3Rpb24gYmVpbmcgYXBwbGllZAorICAgICAgYnkgYSBsb2dp Y2FsIHJlcGxpY2F0aW9uIHN1YnNjcmliZXIuPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgIDxy b3c+CiAgICAgICA8ZW50cnk+PGxpdGVyYWw+ZXh0ZW5kPC9saXRlcmFsPjwvZW50cnk+CiAgICAg ICA8ZW50cnk+V2FpdGluZyB0byBleHRlbmQgYSByZWxhdGlvbi48L2VudHJ5PgogICAgICA8L3Jv dz4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sIGIvZG9jL3NyYy9zZ21s L3Byb3RvY29sLnNnbWwKaW5kZXggMDMzMTJlMC4uNDM5ZWY2NyAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL3Byb3RvY29sLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKQEAg LTMxMDMsNyArMzEwMyw3IEBAIHBzcWwgImRibmFtZT1wb3N0Z3JlcyByZXBsaWNhdGlvbj1kYXRh YmFzZSIgLWMgIklERU5USUZZX1NZU1RFTTsiCiAgICAgIDxsaXN0aXRlbT4KICAgICAgIDxwYXJh PgogICAgICAgIFByb3RvY29sIHZlcnNpb24uIEN1cnJlbnRseSB2ZXJzaW9ucyA8bGl0ZXJhbD4x PC9saXRlcmFsPiwgPGxpdGVyYWw+MjwvbGl0ZXJhbD4sCi0gICAgICAgYW5kIDxsaXRlcmFsPjM8 L2xpdGVyYWw+IGFyZSBzdXBwb3J0ZWQuCisgICAgICAgPGxpdGVyYWw+MzwvbGl0ZXJhbD4sIGFu ZCA8bGl0ZXJhbD40PC9saXRlcmFsPiBhcmUgc3VwcG9ydGVkLgogICAgICAgPC9wYXJhPgogICAg ICAgPHBhcmE+CiAgICAgICAgVmVyc2lvbiA8bGl0ZXJhbD4yPC9saXRlcmFsPiBpcyBzdXBwb3J0 ZWQgb25seSBmb3Igc2VydmVyIHZlcnNpb24gMTQKQEAgLTMxMTMsNiArMzExMywxMSBAQCBwc3Fs ICJkYm5hbWU9cG9zdGdyZXMgcmVwbGljYXRpb249ZGF0YWJhc2UiIC1jICJJREVOVElGWV9TWVNU RU07IgogICAgICAgIFZlcnNpb24gPGxpdGVyYWw+MzwvbGl0ZXJhbD4gaXMgc3VwcG9ydGVkIG9u bHkgZm9yIHNlcnZlciB2ZXJzaW9uIDE1CiAgICAgICAgYW5kIGFib3ZlLCBhbmQgaXQgYWxsb3dz IHN0cmVhbWluZyBvZiB0d28tcGhhc2UgY29tbWl0cy4KICAgICAgIDwvcGFyYT4KKyAgICAgIDxw YXJhPgorICAgICAgIFZlcnNpb24gPGxpdGVyYWw+NDwvbGl0ZXJhbD4gaXMgc3VwcG9ydGVkIG9u bHkgZm9yIHNlcnZlciB2ZXJzaW9uIDE2CisgICAgICAgYW5kIGFib3ZlLCBhbmQgaXQgYWxsb3dz IHN0cmVhbXMgb2YgbGFyZ2UgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIHRvCisgICAgICAgYmUg YXBwbGllZCBpbiBwYXJhbGxlbC4KKyAgICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRlbT4KICAg ICA8L3Zhcmxpc3RlbnRyeT4KIApAQCAtNjg4Myw2ICs2ODg4LDI4IEBAIHBzcWwgImRibmFtZT1w b3N0Z3JlcyByZXBsaWNhdGlvbj1kYXRhYmFzZSIgLWMgIklERU5USUZZX1NZU1RFTTsiCiAgICAg ICAgIDwvcGFyYT4KICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgPC92YXJsaXN0ZW50cnk+CisK KyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+SW50NjQgKFhMb2dSZWNQdHIpPC90 ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBUaGUgTFNO IG9mIHRoZSBhYm9ydC4gVGhpcyBmaWVsZCBpcyBhdmFpbGFibGUgc2luY2UgcHJvdG9jb2wgdmVy c2lvbgorICAgICAgICAgNC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+Cisg ICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICA8dGVy bT5JbnQ2NCAoVGltZXN0YW1wVHopPC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAg PHBhcmE+CisgICAgICAgICBBYm9ydCB0aW1lc3RhbXAgb2YgdGhlIHRyYW5zYWN0aW9uLiBUaGUg dmFsdWUgaXMgaW4gbnVtYmVyCisgICAgICAgICBvZiBtaWNyb3NlY29uZHMgc2luY2UgUG9zdGdy ZVNRTCBlcG9jaCAoMjAwMC0wMS0wMSkuIFRoaXMgZmllbGQgaXMKKyAgICAgICAgIGF2YWlsYWJs ZSBzaW5jZSBwcm90b2NvbCB2ZXJzaW9uIDQuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xp c3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPC92YXJpYWJsZWxpc3Q+CiAg ICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV9zdWJzY3JpcHRpb24uc2dtbAppbmRleCA5MGJkNzAwLi5lYmE3MmM2IDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbApAQCAtMjI4LDEzICsyMjgsMjkgQEAgQ1JF QVRFIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Vic2NyaXB0 aW9uX25hbWU8L3JlcGxhY2VhYmwKICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAogICAgICAgIDx2 YXJsaXN0ZW50cnk+Ci0gICAgICAgIDx0ZXJtPjxsaXRlcmFsPnN0cmVhbWluZzwvbGl0ZXJhbD4g KDx0eXBlPmJvb2xlYW48L3R5cGU+KTwvdGVybT4KKyAgICAgICAgPHRlcm0+PGxpdGVyYWw+c3Ry ZWFtaW5nPC9saXRlcmFsPiAoPHR5cGU+ZW51bTwvdHlwZT4pPC90ZXJtPgogICAgICAgICA8bGlz dGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICBTcGVjaWZpZXMgd2hldGhlciB0byBl bmFibGUgc3RyZWFtaW5nIG9mIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucwotICAgICAgICAgIGZv ciB0aGlzIHN1YnNjcmlwdGlvbi4gIEJ5IGRlZmF1bHQsIGFsbCB0cmFuc2FjdGlvbnMKLSAgICAg ICAgICBhcmUgZnVsbHkgZGVjb2RlZCBvbiB0aGUgcHVibGlzaGVyIGFuZCBvbmx5IHRoZW4gc2Vu dCB0byB0aGUKLSAgICAgICAgICBzdWJzY3JpYmVyIGFzIGEgd2hvbGUuCisgICAgICAgICAgZm9y IHRoaXMgc3Vic2NyaXB0aW9uLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgPGxpdGVyYWw+b2ZmPC9s aXRlcmFsPiwKKyAgICAgICAgICBtZWFuaW5nIGFsbCB0cmFuc2FjdGlvbnMgYXJlIGZ1bGx5IGRl Y29kZWQgb24gdGhlIHB1Ymxpc2hlciBhbmQgb25seQorICAgICAgICAgIHRoZW4gc2VudCB0byB0 aGUgc3Vic2NyaWJlciBhcyBhIHdob2xlLgorICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICA8 cGFyYT4KKyAgICAgICAgICBJZiBzZXQgdG8gPGxpdGVyYWw+b248L2xpdGVyYWw+LCB0aGUgaW5j b21pbmcgY2hhbmdlcyBhcmUgd3JpdHRlbiB0bworICAgICAgICAgIHRlbXBvcmFyeSBmaWxlcyBh bmQgdGhlbiBhcHBsaWVkIG9ubHkgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzCisgICAgICAgICAg Y29tbWl0dGVkIG9uIHRoZSBwdWJsaXNoZXIgYW5kIHJlY2VpdmVkIGJ5IHRoZSBzdWJzY3JpYmVy LgorICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBJZiBzZXQg dG8gPGxpdGVyYWw+cGFyYWxsZWw8L2xpdGVyYWw+LCBpbmNvbWluZyBjaGFuZ2VzIGFyZSBkaXJl Y3RseQorICAgICAgICAgIGFwcGxpZWQgdmlhIG9uZSBvZiB0aGUgcGFyYWxsZWwgYXBwbHkgd29y a2VycywgaWYgYXZhaWxhYmxlLiBJZiBubworICAgICAgICAgIHBhcmFsbGVsIGFwcGx5IHdvcmtl ciBpcyBmcmVlIHRvIGhhbmRsZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIHRoZW4KKyAgICAgICAg ICB0aGUgY2hhbmdlcyBhcmUgd3JpdHRlbiB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIGFwcGxpZWQg YWZ0ZXIgdGhlCisgICAgICAgICAgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLiBOb3RlIHRoYXQg aWYgYW4gZXJyb3IgaGFwcGVucyBpbiBhCisgICAgICAgICAgcGFyYWxsZWwgYXBwbHkgd29ya2Vy LCB0aGUgZmluaXNoIExTTiBvZiB0aGUgcmVtb3RlIHRyYW5zYWN0aW9uCisgICAgICAgICAgbWln aHQgbm90IGJlIHJlcG9ydGVkIGluIHRoZSBzZXJ2ZXIgbG9nLgogICAgICAgICAgPC9wYXJhPgog ICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sIGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3 cy5zZ21sCmluZGV4IDE0M2FlNWIuLjFkMWI3ZGUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9z eXN0ZW0tdmlld3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKQEAg LTEzNzksOCArMTM3OSw5IEBACiAgICAgICAgPGxpdGVyYWw+dmlydHVhbHhpZDwvbGl0ZXJhbD4s CiAgICAgICAgPGxpdGVyYWw+c3BlY3Rva2VuPC9saXRlcmFsPiwKICAgICAgICA8bGl0ZXJhbD5v YmplY3Q8L2xpdGVyYWw+LAotICAgICAgIDxsaXRlcmFsPnVzZXJsb2NrPC9saXRlcmFsPiwgb3IK LSAgICAgICA8bGl0ZXJhbD5hZHZpc29yeTwvbGl0ZXJhbD4uCisgICAgICAgPGxpdGVyYWw+dXNl cmxvY2s8L2xpdGVyYWw+LAorICAgICAgIDxsaXRlcmFsPmFkdmlzb3J5PC9saXRlcmFsPiwgb3IK KyAgICAgICA8bGl0ZXJhbD5hcHBseXRyYW5zYWN0aW9uPC9saXRlcmFsPi4KICAgICAgICAoU2Vl IGFsc28gPHhyZWYgbGlua2VuZD0id2FpdC1ldmVudC1sb2NrLXRhYmxlIi8+LikKICAgICAgIDwv cGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KQEAgLTE1OTUsNiArMTU5NiwxNSBAQAogICA8L3Bh cmE+CiAKICAgPHBhcmE+CisgICBBcHBseSB0cmFuc2FjdGlvbiBsb2NrcyBhcmUgdXNlZCBpbiBw YXJhbGxlbCBtb2RlIHRvIGFwcGx5IHRoZSB0cmFuc2FjdGlvbgorICAgaW4gbG9naWNhbCByZXBs aWNhdGlvbi4gVGhlIHJlbW90ZSB0cmFuc2FjdGlvbiBpZCBpcyBkaXNwbGF5ZWQgaW4gdGhlCisg ICA8c3RydWN0ZmllbGQ+dHJhbnNhY3Rpb25pZDwvc3RydWN0ZmllbGQ+IGNvbHVtbi4gVGhlIDxz dHJ1Y3RmaWVsZD5vYmpzdWJpZDwvc3RydWN0ZmllbGQ+CisgICBkaXNwbGF5cyB0aGUgbG9jayBz dWJ0eXBlIHdoaWNoIGlzIDAgZm9yIHRoZSBsb2NrIHVzZWQgdG8gc3luY2hyb25pemUgdGhlCisg ICBzZXQgb2YgY2hhbmdlcywgYW5kIDEgZm9yIHRoZSBsb2NrIHVzZWQgdG8gd2FpdCBmb3IgdGhl IHRyYW5zYWN0aW9uIHRvCisgICBmaW5pc2ggdG8gZW5zdXJlIGNvbW1pdCBvcmRlci4KKyAgPC9w YXJhPgorCisgIDxwYXJhPgogICAgPHN0cnVjdG5hbWU+cGdfbG9ja3M8L3N0cnVjdG5hbWU+IHBy b3ZpZGVzIGEgZ2xvYmFsIHZpZXcgb2YgYWxsIGxvY2tzCiAgICBpbiB0aGUgZGF0YWJhc2UgY2x1 c3Rlciwgbm90IG9ubHkgdGhvc2UgcmVsZXZhbnQgdG8gdGhlIGN1cnJlbnQgZGF0YWJhc2UuCiAg ICBBbHRob3VnaCBpdHMgPHN0cnVjdGZpZWxkPnJlbGF0aW9uPC9zdHJ1Y3RmaWVsZD4gY29sdW1u IGNhbiBiZSBqb2luZWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hh Y3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYwppbmRleCA4ZGFhN2Y3Li5k ODVlMzEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCkBAIC0xNzEzLDYgKzE3MTMsNyBA QCBSZWNvcmRUcmFuc2FjdGlvbkFib3J0KGJvb2wgaXNTdWJYYWN0KQogCWludAkJCW5jaGlsZHJl bjsKIAlUcmFuc2FjdGlvbklkICpjaGlsZHJlbjsKIAlUaW1lc3RhbXBUeiB4YWN0X3RpbWU7CisJ Ym9vbAkJcmVwbG9yaWdpbjsKIAogCS8qCiAJICogSWYgd2UgaGF2ZW4ndCBiZWVuIGFzc2lnbmVk IGFuIFhJRCwgbm9ib2R5IHdpbGwgY2FyZSB3aGV0aGVyIHdlIGFib3J0ZWQKQEAgLTE3NDMsNiAr MTc0NCwxMyBAQCBSZWNvcmRUcmFuc2FjdGlvbkFib3J0KGJvb2wgaXNTdWJYYWN0KQogCQllbG9n KFBBTklDLCAiY2Fubm90IGFib3J0IHRyYW5zYWN0aW9uICV1LCBpdCB3YXMgYWxyZWFkeSBjb21t aXR0ZWQiLAogCQkJIHhpZCk7CiAKKwkvKgorCSAqIEFyZSB3ZSB1c2luZyB0aGUgcmVwbGljYXRp b24gb3JpZ2lucyBmZWF0dXJlPyAgT3IsIGluIG90aGVyIHdvcmRzLCBhcmUKKwkgKiB3ZSByZXBs YXlpbmcgcmVtb3RlIGFjdGlvbnM/CisJICovCisJcmVwbG9yaWdpbiA9IChyZXBsb3JpZ2luX3Nl c3Npb25fb3JpZ2luICE9IEludmFsaWRSZXBPcmlnaW5JZCAmJgorCQkJCSAgcmVwbG9yaWdpbl9z ZXNzaW9uX29yaWdpbiAhPSBEb05vdFJlcGxpY2F0ZUlkKTsKKwogCS8qIEZldGNoIHRoZSBkYXRh IHdlIG5lZWQgZm9yIHRoZSBhYm9ydCByZWNvcmQgKi8KIAlucmVscyA9IHNtZ3JHZXRQZW5kaW5n RGVsZXRlcyhmYWxzZSwgJnJlbHMpOwogCW5jaGlsZHJlbiA9IHhhY3RHZXRDb21taXR0ZWRDaGls ZHJlbigmY2hpbGRyZW4pOwpAQCAtMTc2Niw2ICsxNzc0LDExIEBAIFJlY29yZFRyYW5zYWN0aW9u QWJvcnQoYm9vbCBpc1N1YlhhY3QpCiAJCQkJCSAgIE15WGFjdEZsYWdzLCBJbnZhbGlkVHJhbnNh Y3Rpb25JZCwKIAkJCQkJICAgTlVMTCk7CiAKKwlpZiAocmVwbG9yaWdpbikKKwkJLyogTW92ZSBM U05zIGZvcndhcmQgZm9yIHRoaXMgcmVwbGljYXRpb24gb3JpZ2luICovCisJCXJlcGxvcmlnaW5f c2Vzc2lvbl9hZHZhbmNlKHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fbHNuLAorCQkJCQkJCQkg ICBYYWN0TGFzdFJlY0VuZCk7CisKIAkvKgogCSAqIFJlcG9ydCB0aGUgbGF0ZXN0IGFzeW5jIGFi b3J0IExTTiwgc28gdGhhdCB0aGUgV0FMIHdyaXRlciBrbm93cyB0bwogCSAqIGZsdXNoIHRoaXMg YWJvcnQuIFRoZXJlJ3Mgbm90aGluZyB0byBiZSBnYWluZWQgYnkgZGVsYXlpbmcgdGhpcywgc2lu Y2UKQEAgLTU4NzMsMTEgKzU4ODYsMTAgQEAgWGFjdExvZ0Fib3J0UmVjb3JkKFRpbWVzdGFtcFR6 IGFib3J0X3RpbWUsCiAJfQogCiAJLyoKLQkgKiBEdW1wIHRyYW5zYWN0aW9uIG9yaWdpbiBpbmZv cm1hdGlvbiBvbmx5IGZvciBhYm9ydCBwcmVwYXJlZC4gV2UgbmVlZAotCSAqIHRoaXMgZHVyaW5n IHJlY292ZXJ5IHRvIHVwZGF0ZSB0aGUgcmVwbGljYXRpb24gb3JpZ2luIHByb2dyZXNzLgorCSAq IER1bXAgdHJhbnNhY3Rpb24gb3JpZ2luIGluZm9ybWF0aW9uLiBXZSBuZWVkIHRoaXMgZHVyaW5n IHJlY292ZXJ5IHRvCisJICogdXBkYXRlIHRoZSByZXBsaWNhdGlvbiBvcmlnaW4gcHJvZ3Jlc3Mu CiAJICovCi0JaWYgKChyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luICE9IEludmFsaWRSZXBPcmln aW5JZCkgJiYKLQkJVHJhbnNhY3Rpb25JZElzVmFsaWQodHdvcGhhc2VfeGlkKSkKKwlpZiAocmVw bG9yaWdpbl9zZXNzaW9uX29yaWdpbiAhPSBJbnZhbGlkUmVwT3JpZ2luSWQpCiAJewogCQl4bF94 aW5mby54aW5mbyB8PSBYQUNUX1hJTkZPX0hBU19PUklHSU47CiAKQEAgLTU5MzQsOCArNTk0Niw4 IEBAIFhhY3RMb2dBYm9ydFJlY29yZChUaW1lc3RhbXBUeiBhYm9ydF90aW1lLAogCWlmICh4bF94 aW5mby54aW5mbyAmIFhBQ1RfWElORk9fSEFTX09SSUdJTikKIAkJWExvZ1JlZ2lzdGVyRGF0YSgo Y2hhciAqKSAoJnhsX29yaWdpbiksIHNpemVvZih4bF94YWN0X29yaWdpbikpOwogCi0JaWYgKFRy YW5zYWN0aW9uSWRJc1ZhbGlkKHR3b3BoYXNlX3hpZCkpCi0JCVhMb2dTZXRSZWNvcmRGbGFncyhY TE9HX0lOQ0xVREVfT1JJR0lOKTsKKwkvKiBJbmNsdWRlIHRoZSByZXBsaWNhdGlvbiBvcmlnaW4g Ki8KKwlYTG9nU2V0UmVjb3JkRmxhZ3MoWExPR19JTkNMVURFX09SSUdJTik7CiAKIAlyZXR1cm4g WExvZ0luc2VydChSTV9YQUNUX0lELCBpbmZvKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNj cmlwdGlvbmNtZHMuYwppbmRleCBmMTVhMzMyLi5iYWZmMDBkIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvc3Vic2NyaXB0aW9uY21kcy5jCkBAIC04NSw3ICs4NSw3IEBAIHR5cGVkZWYgc3RydWN0IFN1 Yk9wdHMKIAlib29sCQljb3B5X2RhdGE7CiAJYm9vbAkJcmVmcmVzaDsKIAlib29sCQliaW5hcnk7 Ci0JYm9vbAkJc3RyZWFtaW5nOworCWNoYXIJCXN0cmVhbWluZzsKIAlib29sCQl0d29waGFzZTsK IAlib29sCQlkaXNhYmxlb25lcnI7CiAJY2hhcgkgICAqb3JpZ2luOwpAQCAtMTM5LDcgKzEzOSw3 IEBAIHBhcnNlX3N1YnNjcmlwdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAq c3RtdF9vcHRpb25zLAogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX0JJTkFSWSkp CiAJCW9wdHMtPmJpbmFyeSA9IGZhbHNlOwogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VC T1BUX1NUUkVBTUlORykpCi0JCW9wdHMtPnN0cmVhbWluZyA9IGZhbHNlOworCQlvcHRzLT5zdHJl YW1pbmcgPSBMT0dJQ0FMUkVQX1NUUkVBTV9PRkY7CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRz LCBTVUJPUFRfVFdPUEhBU0VfQ09NTUlUKSkKIAkJb3B0cy0+dHdvcGhhc2UgPSBmYWxzZTsKIAlp ZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9ESVNBQkxFX09OX0VSUikpCkBAIC0yNDIs NyArMjQyLDcgQEAgcGFyc2Vfc3Vic2NyaXB0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRl LCBMaXN0ICpzdG10X29wdGlvbnMsCiAJCQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oZGVmZWws IHBzdGF0ZSk7CiAKIAkJCW9wdHMtPnNwZWNpZmllZF9vcHRzIHw9IFNVQk9QVF9TVFJFQU1JTkc7 Ci0JCQlvcHRzLT5zdHJlYW1pbmcgPSBkZWZHZXRCb29sZWFuKGRlZmVsKTsKKwkJCW9wdHMtPnN0 cmVhbWluZyA9IGRlZkdldFN0cmVhbWluZ01vZGUoZGVmZWwpOwogCQl9CiAJCWVsc2UgaWYgKHN0 cmNtcChkZWZlbC0+ZGVmbmFtZSwgInR3b19waGFzZSIpID09IDApCiAJCXsKQEAgLTYzMCw3ICs2 MzAsNyBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJz Y3JpcHRpb25TdG10ICpzdG10LAogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJvd25l ciAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShvd25lcik7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2Ny aXB0aW9uX3N1YmVuYWJsZWQgLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLmVuYWJsZWQpOwogCXZh bHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJiaW5hcnkgLSAxXSA9IEJvb2xHZXREYXR1bShv cHRzLmJpbmFyeSk7Ci0JdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFd ID0gQm9vbEdldERhdHVtKG9wdHMuc3RyZWFtaW5nKTsKKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3Jp cHRpb25fc3Vic3RyZWFtIC0gMV0gPSBDaGFyR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOwogCXZh bHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJ0d29waGFzZXN0YXRlIC0gMV0gPQogCQlDaGFy R2V0RGF0dW0ob3B0cy50d29waGFzZSA/CiAJCQkJCSBMT0dJQ0FMUkVQX1RXT1BIQVNFX1NUQVRF X1BFTkRJTkcgOgpAQCAtMTA5OSw3ICsxMDk5LDcgQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VT dGF0ZSAqcHN0YXRlLCBBbHRlclN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJaWYgKElzU2V0 KG9wdHMuc3BlY2lmaWVkX29wdHMsIFNVQk9QVF9TVFJFQU1JTkcpKQogCQkJCXsKIAkJCQkJdmFs dWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFdID0KLQkJCQkJCUJvb2xHZXRE YXR1bShvcHRzLnN0cmVhbWluZyk7CisJCQkJCQlDaGFyR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcp OwogCQkJCQlyZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzdHJlYW0gLSAxXSA9IHRy dWU7CiAJCQkJfQogCkBAIC0yMTI4LDMgKzIxMjgsNjAgQEAgbWVyZ2VfcHVibGljYXRpb25zKExp c3QgKm9sZHB1Ymxpc3QsIExpc3QgKm5ld3B1Ymxpc3QsIGJvb2wgYWRkcHViLCBjb25zdCBjaGFy ICoKIAogCXJldHVybiBvbGRwdWJsaXN0OwogfQorCisvKgorICogRXh0cmFjdCB0aGUgc3RyZWFt aW5nIG1vZGUgdmFsdWUgZnJvbSBhIERlZkVsZW0uICBUaGlzIGlzIGxpa2UKKyAqIGRlZkdldEJv b2xlYW4oKSBidXQgYWxzbyBhY2NlcHRzIHRoZSBzcGVjaWFsIHZhbHVlIG9mICJwYXJhbGxlbCIu CisgKi8KK2NoYXIKK2RlZkdldFN0cmVhbWluZ01vZGUoRGVmRWxlbSAqZGVmKQoreworCS8qCisJ ICogSWYgbm8gcGFyYW1ldGVyIHZhbHVlIGdpdmVuLCBhc3N1bWUgInRydWUiIGlzIG1lYW50Lgor CSAqLworCWlmICghZGVmLT5hcmcpCisJCXJldHVybiBMT0dJQ0FMUkVQX1NUUkVBTV9PTjsKKwor CS8qCisJICogQWxsb3cgMCwgMSwgImZhbHNlIiwgInRydWUiLCAib2ZmIiwgIm9uIiBvciAicGFy YWxsZWwiLgorCSAqLworCXN3aXRjaCAobm9kZVRhZyhkZWYtPmFyZykpCisJeworCQljYXNlIFRf SW50ZWdlcjoKKwkJCXN3aXRjaCAoaW50VmFsKGRlZi0+YXJnKSkKKwkJCXsKKwkJCQljYXNlIDA6 CisJCQkJCXJldHVybiBMT0dJQ0FMUkVQX1NUUkVBTV9PRkY7CisJCQkJY2FzZSAxOgorCQkJCQly ZXR1cm4gTE9HSUNBTFJFUF9TVFJFQU1fT047CisJCQkJZGVmYXVsdDoKKwkJCQkJLyogb3RoZXJ3 aXNlLCBlcnJvciBvdXQgYmVsb3cgKi8KKwkJCQkJYnJlYWs7CisJCQl9CisJCQlicmVhazsKKwkJ ZGVmYXVsdDoKKwkJCXsKKwkJCQljaGFyCSAgICpzdmFsID0gZGVmR2V0U3RyaW5nKGRlZik7CisK KwkJCQkvKgorCQkJCSAqIFRoZSBzZXQgb2Ygc3RyaW5ncyBhY2NlcHRlZCBoZXJlIHNob3VsZCBt YXRjaCB1cCB3aXRoIHRoZQorCQkJCSAqIGdyYW1tYXIncyBvcHRfYm9vbGVhbl9vcl9zdHJpbmcg cHJvZHVjdGlvbi4KKwkJCQkgKi8KKwkJCQlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAiZmFsc2Ui KSA9PSAwIHx8CisJCQkJCXBnX3N0cmNhc2VjbXAoc3ZhbCwgIm9mZiIpID09IDApCisJCQkJCXJl dHVybiBMT0dJQ0FMUkVQX1NUUkVBTV9PRkY7CisJCQkJaWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwg InRydWUiKSA9PSAwIHx8CisJCQkJCXBnX3N0cmNhc2VjbXAoc3ZhbCwgIm9uIikgPT0gMCkKKwkJ CQkJcmV0dXJuIExPR0lDQUxSRVBfU1RSRUFNX09OOworCQkJCWlmIChwZ19zdHJjYXNlY21wKHN2 YWwsICJwYXJhbGxlbCIpID09IDApCisJCQkJCXJldHVybiBMT0dJQ0FMUkVQX1NUUkVBTV9QQVJB TExFTDsKKwkJCX0KKwkJCWJyZWFrOworCX0KKworCWVyZXBvcnQoRVJST1IsCisJCQkoZXJyY29k ZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkgZXJybXNnKCIlcyByZXF1aXJlcyBhIEJvb2xl YW4gdmFsdWUgb3IgXCJwYXJhbGxlbFwiIiwKKwkJCQkJZGVmLT5kZWZuYW1lKSkpOworCXJldHVy biBMT0dJQ0FMUkVQX1NUUkVBTV9PRkY7CS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KK30KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYyBiL3NyYy9iYWNrZW5kL2xpYnBxL3Bx bXEuYwppbmRleCA3NjZlY2E5Li4zOWU3N2VmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJw cS9wcW1xLmMKKysrIGIvc3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jCkBAIC0xMywxMSArMTMsMTMg QEAKIAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKKyNpbmNsdWRlICJhY2Nlc3MvcGFyYWxsZWwu aCIKICNpbmNsdWRlICJsaWJwcS9saWJwcS5oIgogI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0Lmgi CiAjaW5jbHVkZSAibGlicHEvcHFtcS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1 ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKICNp bmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKIApA QCAtMTYyLDkgKzE2NCwxOSBAQCBtcV9wdXRtZXNzYWdlKGNoYXIgbXNndHlwZSwgY29uc3QgY2hh ciAqcywgc2l6ZV90IGxlbikKIAkJcmVzdWx0ID0gc2htX21xX3NlbmR2KHBxX21xX2hhbmRsZSwg aW92LCAyLCB0cnVlLCB0cnVlKTsKIAogCQlpZiAocHFfbXFfcGFyYWxsZWxfbGVhZGVyX3BpZCAh PSAwKQotCQkJU2VuZFByb2NTaWduYWwocHFfbXFfcGFyYWxsZWxfbGVhZGVyX3BpZCwKLQkJCQkJ CSAgIFBST0NTSUdfUEFSQUxMRUxfTUVTU0FHRSwKLQkJCQkJCSAgIHBxX21xX3BhcmFsbGVsX2xl YWRlcl9iYWNrZW5kX2lkKTsKKwkJeworCQkJaWYgKElzTG9naWNhbFBhcmFsbGVsQXBwbHlXb3Jr ZXIoKSkKKwkJCQlTZW5kUHJvY1NpZ25hbChwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcGlkLAorCQkJ CQkJCSAgIFBST0NTSUdfUEFSQUxMRUxfQVBQTFlfTUVTU0FHRSwKKwkJCQkJCQkgICBwcV9tcV9w YXJhbGxlbF9sZWFkZXJfYmFja2VuZF9pZCk7CisJCQllbHNlCisJCQl7CisJCQkJQXNzZXJ0KElz UGFyYWxsZWxXb3JrZXIoKSk7CisJCQkJU2VuZFByb2NTaWduYWwocHFfbXFfcGFyYWxsZWxfbGVh ZGVyX3BpZCwKKwkJCQkJCQkgICBQUk9DU0lHX1BBUkFMTEVMX01FU1NBR0UsCisJCQkJCQkJICAg cHFfbXFfcGFyYWxsZWxfbGVhZGVyX2JhY2tlbmRfaWQpOworCQkJfQorCQl9CiAKIAkJaWYgKHJl c3VsdCAhPSBTSE1fTVFfV09VTERfQkxPQ0spCiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3 b3JrZXIuYwppbmRleCA2ZjhlMzQ0NS4uZTdhNGE3MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9iZ3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3Jr ZXIuYwpAQCAtMTI4LDYgKzEyOCw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QKIAl9LAogCXsKIAkJ IkFwcGx5V29ya2VyTWFpbiIsIEFwcGx5V29ya2VyTWFpbgorCX0sCisJeworCQkiUGFyYWxsZWxB cHBseVdvcmtlck1haW4iLCBQYXJhbGxlbEFwcGx5V29ya2VyTWFpbgogCX0KIH07CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvaW50ZXJydXB0LmMgYi9zcmMvYmFja2VuZC9w b3N0bWFzdGVyL2ludGVycnVwdC5jCmluZGV4IDJlZTg5NmYuLjZkNGJkNzYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvaW50ZXJydXB0LmMKKysrIGIvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9pbnRlcnJ1cHQuYwpAQCAtOTgsOCArOTgsOSBAQCBTaWduYWxIYW5kbGVyRm9yQ3Jh c2hFeGl0KFNJR05BTF9BUkdTKQogICogc2h1dCBkb3duIGFuZCBleGl0LgogICoKICAqIFR5cGlj YWxseSwgdGhpcyBoYW5kbGVyIHdvdWxkIGJlIHVzZWQgZm9yIFNJR1RFUk0sIGJ1dCBzb21lIHBy b2Nlc3NlcyB1c2UKLSAqIG90aGVyIHNpZ25hbHMuIEluIHBhcnRpY3VsYXIsIHRoZSBjaGVja3Bv aW50ZXIgZXhpdHMgb24gU0lHVVNSMiwgYW5kIHRoZQotICogV0FMIHdyaXRlciBleGl0cyBvbiBl aXRoZXIgU0lHSU5UIG9yIFNJR1RFUk0uCisgKiBvdGhlciBzaWduYWxzLiBJbiBwYXJ0aWN1bGFy LCB0aGUgY2hlY2twb2ludGVyIGV4aXRzIG9uIFNJR1VTUjIsIGFuZCB0aGUgV0FMCisgKiB3cml0 ZXIgYW5kIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBleGl0 cyBvbiBlaXRoZXIKKyAqIFNJR0lOVCBvciBTSUdURVJNLgogICoKICAqIFNodXRkb3duUmVxdWVz dFBlbmRpbmcgc2hvdWxkIGJlIGNoZWNrZWQgYXQgYSBjb252ZW5pZW50IHBsYWNlIHdpdGhpbiB0 aGUKICAqIG1haW4gbG9vcCwgb3IgZWxzZSB0aGUgbWFpbiBsb29wIHNob3VsZCBjYWxsIEhhbmRs ZU1haW5Mb29wSW50ZXJydXB0cy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMKaW5kZXggMjE5Y2Q3My4u YzQwYzYyMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNl aXZlci9saWJwcXdhbHJlY2VpdmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGli cHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMKQEAgLTQ0Myw5ICs0NDMsOSBAQCBsaWJw cXJjdl9zdGFydHN0cmVhbWluZyhXYWxSZWNlaXZlckNvbm4gKmNvbm4sCiAJCWFwcGVuZFN0cmlu Z0luZm8oJmNtZCwgInByb3RvX3ZlcnNpb24gJyV1JyIsCiAJCQkJCQkgb3B0aW9ucy0+cHJvdG8u bG9naWNhbC5wcm90b192ZXJzaW9uKTsKIAotCQlpZiAob3B0aW9ucy0+cHJvdG8ubG9naWNhbC5z dHJlYW1pbmcgJiYKLQkJCVBRc2VydmVyVmVyc2lvbihjb25uLT5zdHJlYW1Db25uKSA+PSAxNDAw MDApCi0JCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZjbWQsICIsIHN0cmVhbWluZyAnb24nIik7 CisJCWlmIChvcHRpb25zLT5wcm90by5sb2dpY2FsLnN0cmVhbWluZ19zdHIpCisJCQlhcHBlbmRT dHJpbmdJbmZvKCZjbWQsICIsIHN0cmVhbWluZyAnJXMnIiwKKwkJCQkJCQkgb3B0aW9ucy0+cHJv dG8ubG9naWNhbC5zdHJlYW1pbmdfc3RyKTsKIAogCQlpZiAob3B0aW9ucy0+cHJvdG8ubG9naWNh bC50d29waGFzZSAmJgogCQkJUFFzZXJ2ZXJWZXJzaW9uKGNvbm4tPnN0cmVhbUNvbm4pID49IDE1 MDAwMCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZp bGUgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlCmluZGV4IGM0ZTJm ZGUuLjJkYzI1ZTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv TWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZQpA QCAtMTUsNiArMTUsNyBAQCBpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xv YmFsCiBvdmVycmlkZSBDUFBGTEFHUyA6PSAtSSQoc3JjZGlyKSAkKENQUEZMQUdTKQogCiBPQkpT ID0gXAorCWFwcGx5cGFyYWxsZWx3b3JrZXIubyBcCiAJZGVjb2RlLm8gXAogCWxhdW5jaGVyLm8g XAogCWxvZ2ljYWwubyBcCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjFiM2I3NDEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpAQCAtMCwwICsxLDE2MzAgQEAKKy8qLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICogYXBwbHlwYXJhbGxlbHdvcmtlci5jCisgKgkgICBTdXBwb3J0IHJvdXRp bmVzIGZvciBhcHBseWluZyB4YWN0IGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlcgorICoKKyAqIENv cHlyaWdodCAoYykgMjAyMywgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAq CisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2FwcGx5cGFyYWxsZWx3b3JrZXIuYworICoKKyAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgY29k ZSB0byBsYXVuY2gsIHNldCB1cCwgYW5kIHRlYXJkb3duIGEgcGFyYWxsZWwgYXBwbHkKKyAqIHdv cmtlciB3aGljaCByZWNlaXZlcyB0aGUgY2hhbmdlcyBmcm9tIHRoZSBsZWFkZXIgd29ya2VyIGFu ZCBpbnZva2VzIHJvdXRpbmVzCisgKiB0byBhcHBseSB0aG9zZSBvbiB0aGUgc3Vic2NyaWJlciBk YXRhYmFzZS4gQWRkaXRpb25hbGx5LCB0aGlzIGZpbGUgY29udGFpbnMKKyAqIHJvdXRpbmVzIHRo YXQgYXJlIGludGVuZGVkIHRvIHN1cHBvcnQgc2V0dGluZyB1cCwgdXNpbmcsIGFuZCB0ZWFyaW5n IGRvd24gYQorICogUGFyYWxsZWxBcHBseVdvcmtlckluZm8gd2hpY2ggaXMgcmVxdWlyZWQgc28g dGhlIGxlYWRlciB3b3JrZXIgYW5kIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXJzIGNhbiBjb21t dW5pY2F0ZSB3aXRoIGVhY2ggb3RoZXIuCisgKgorICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtl cnMgYXJlIGFzc2lnbmVkIChpZiBhdmFpbGFibGUpIGFzIHNvb24gYXMgeGFjdCdzCisgKiBmaXJz dCBzdHJlYW0gaXMgcmVjZWl2ZWQgZm9yIHN1YnNjcmlwdGlvbnMgdGhhdCBoYXZlIHNldCB0aGVp ciAnc3RyZWFtaW5nJworICogb3B0aW9uIGFzIHBhcmFsbGVsLiBUaGUgbGVhZGVyIGFwcGx5IHdv cmtlciB3aWxsIHNlbmQgY2hhbmdlcyB0byB0aGlzIG5ldworICogd29ya2VyIHZpYSBzaGFyZWQg bWVtb3J5LiBXZSBrZWVwIHRoaXMgd29ya2VyIGFzc2lnbmVkIHRpbGwgdGhlIHRyYW5zYWN0aW9u CisgKiBjb21taXQgaXMgcmVjZWl2ZWQgYW5kIGFsc28gd2FpdCBmb3IgdGhlIHdvcmtlciB0byBm aW5pc2ggYXQgY29tbWl0LiBUaGlzCisgKiBwcmVzZXJ2ZXMgY29tbWl0IG9yZGVyaW5nIGFuZCBh dm9pZCBmaWxlIEkvTyBpbiBtb3N0IGNhc2VzLCBhbHRob3VnaCB3ZQorICogc3RpbGwgbmVlZCB0 byBzcGlsbCB0byBhIGZpbGUgaWYgdGhlcmUgaXMgbm8gd29ya2VyIGF2YWlsYWJsZS4gU2VlIGNv bW1lbnRzCisgKiBhdG9wIGxvZ2ljYWwvd29ya2VyIHRvIGtub3cgbW9yZSBhYm91dCBzdHJlYW1l ZCB4YWN0cyB3aG9zZSBjaGFuZ2VzIGFyZQorICogc3BpbGxlZCB0byBkaXNrLiBJdCBpcyBpbXBv cnRhbnQgdG8gbWFpbnRhaW4gY29tbWl0IG9yZGVyIHRvIGF2b2lkIGZhaWx1cmVzCisgKiBkdWUg dG86IChhKSB0cmFuc2FjdGlvbiBkZXBlbmRlbmNpZXMgLSBzYXkgaWYgd2UgaW5zZXJ0IGEgcm93 IGluIHRoZSBmaXJzdAorICogdHJhbnNhY3Rpb24gYW5kIHVwZGF0ZSBpdCBpbiB0aGUgc2Vjb25k IHRyYW5zYWN0aW9uIG9uIHB1Ymxpc2hlciB0aGVuCisgKiBhbGxvd2luZyB0aGUgc3Vic2NyaWJl ciB0byBhcHBseSBib3RoIGluIHBhcmFsbGVsIGNhbiBsZWFkIHRvIGZhaWx1cmUgaW4gdGhlCisg KiB1cGRhdGU7IChiKSBkZWFkbG9ja3MgLSBhbGxvd2luZyB0cmFuc2FjdGlvbnMgdGhhdCB1cGRh dGUgdGhlIHNhbWUgc2V0IG9mCisgKiByb3dzL3RhYmxlcyBpbiB0aGUgb3Bwb3NpdGUgb3JkZXIg dG8gYmUgYXBwbGllZCBpbiBwYXJhbGxlbCBjYW4gbGVhZCB0bworICogZGVhZGxvY2tzLgorICoK KyAqIEEgd29ya2VyIHBvb2wgaXMgdXNlZCB0byBhdm9pZCByZXN0YXJ0aW5nIHdvcmtlcnMgZm9y IGVhY2ggc3RyZWFtaW5nCisgKiB0cmFuc2FjdGlvbi4gV2UgbWFpbnRhaW4gZWFjaCB3b3JrZXIn cyBpbmZvcm1hdGlvbiAoUGFyYWxsZWxBcHBseVdvcmtlckluZm8pCisgKiBpbiB0aGUgUGFyYWxs ZWxBcHBseVdvcmtlclBvb2wuIEFmdGVyIHN1Y2Nlc3NmdWxseSBsYXVuY2hpbmcgYSBuZXcgd29y a2VyLAorICogaXRzIGluZm9ybWF0aW9uIGlzIGFkZGVkIHRvIHRoZSBQYXJhbGxlbEFwcGx5V29y a2VyUG9vbC4gT25jZSB0aGUgd29ya2VyCisgKiBmaW5pc2hlcyBhcHBseWluZyB0aGUgdHJhbnNh Y3Rpb24sIGl0IGlzIG1hcmtlZCBhcyBhdmFpbGFibGUgZm9yIHJlLXVzZS4KKyAqIE5vdywgYmVm b3JlIHN0YXJ0aW5nIGEgbmV3IHdvcmtlciB0byBhcHBseSB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0 aW9uLCB3ZQorICogY2hlY2sgdGhlIGxpc3QgZm9yIGFueSBhdmFpbGFibGUgd29ya2VyLiBOb3Rl IHRoYXQgd2UgcmV0YWluIGEgbWF4aW11bSBvZgorICogaGFsZiB0aGUgbWF4X3BhcmFsbGVsX2Fw cGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiB3b3JrZXJzIGluIHRoZSBwb29sIGFuZAorICog YWZ0ZXIgdGhhdCwgd2Ugc2ltcGx5IGV4aXQgdGhlIHdvcmtlciBhZnRlciBhcHBseWluZyB0aGUg dHJhbnNhY3Rpb24uCisgKgorICogWFhYIFRoaXMgd29ya2VyIHBvb2wgdGhyZXNob2xkIGlzIGFy Yml0cmFyeSBhbmQgd2UgY2FuIHByb3ZpZGUgYSBHVUMKKyAqIHZhcmlhYmxlIGZvciB0aGlzIGlu IHRoZSBmdXR1cmUgaWYgcmVxdWlyZWQuCisgKgorICogVGhlIGxlYWRlciBhcHBseSB3b3JrZXIg d2lsbCBjcmVhdGUgYSBzZXBhcmF0ZSBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudAorICog d2hlbiBlYWNoIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBzdGFydHMuIFRoZSByZWFzb24gZm9yIHRo aXMgZGVzaWduIGlzIHRoYXQKKyAqIHdlIGNhbm5vdCBwcmVkaWN0IGhvdyBtYW55IHdvcmtlcnMg d2lsbCBiZSBuZWVkZWQuIEl0IG1heSBiZSBwb3NzaWJsZSB0bworICogYWxsb2NhdGUgZW5vdWdo IHNoYXJlZCBtZW1vcnkgaW4gb25lIHNlZ21lbnQgYmFzZWQgb24gdGhlIG1heGltdW0gbnVtYmVy IG9mCisgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIChtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vy c19wZXJfc3Vic2NyaXB0aW9uKSwgYnV0CisgKiB0aGlzIHdvdWxkIHdhc3RlIG1lbW9yeSBpZiBu byBwcm9jZXNzIGlzIGFjdHVhbGx5IHN0YXJ0ZWQuCisgKgorICogVGhlIGR5bmFtaWMgc2hhcmVk IG1lbW9yeSBzZWdtZW50IGNvbnRhaW5zOiAoYSkgYSBzaG1fbXEgdGhhdCBpcyB1c2VkIHRvCisg KiBzZW5kIGNoYW5nZXMgaW4gdGhlIHRyYW5zYWN0aW9uIGZyb20gbGVhZGVyIGFwcGx5IHdvcmtl ciB0byBwYXJhbGxlbCBhcHBseQorICogd29ya2VyOyAoYikgYW5vdGhlciBzaG1fbXEgdGhhdCBp cyB1c2VkIHRvIHNlbmQgZXJyb3JzIChhbmQgb3RoZXIgbWVzc2FnZXMKKyAqIHJlcG9ydGVkIHZp YSBlbG9nL2VyZXBvcnQpIGZyb20gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB0byBsZWFkZXIg YXBwbHkKKyAqIHdvcmtlcjsgKGMpIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiB0byBiZSBzaGFyZWQg YW1vbmcgcGFyYWxsZWwgYXBwbHkgd29ya2VycworICogYW5kIHRoZSBsZWFkZXIgYXBwbHkgd29y a2VyIChpLmUuIG1lbWJlcnMgb2YgUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCkuCisgKgorICog TG9ja2luZyBDb25zaWRlcmF0aW9ucworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogV2Ug aGF2ZSBhIHJpc2sgb2YgZGVhZGxvY2sgZHVlIHRvIGNvbmN1cnJlbnRseSBhcHBseWluZyB0aGUg dHJhbnNhY3Rpb25zIGluCisgKiBwYXJhbGxlbCBtb2RlIHRoYXQgd2VyZSBpbmRlcGVuZGVudCBv biB0aGUgcHVibGlzaGVyIHNpZGUgYnV0IGJlY2FtZQorICogZGVwZW5kZW50IG9uIHRoZSBzdWJz Y3JpYmVyIHNpZGUgZHVlIHRvIHRoZSBkaWZmZXJlbnQgZGF0YWJhc2Ugc3RydWN0dXJlcworICog KGxpa2Ugc2NoZW1hIG9mIHN1YnNjcmlwdGlvbiB0YWJsZXMsIGNvbnN0cmFpbnRzLCBldGMuKSBv biBlYWNoIHNpZGUuIFRoaXMKKyAqIGNhbiBoYXBwZW4gZXZlbiB3aXRob3V0IHBhcmFsbGVsIG1v ZGUgd2hlbiB0aGVyZSBhcmUgY29uY3VycmVudCBvcGVyYXRpb25zCisgKiBvbiB0aGUgc3Vic2Ny aWJlci4gSW4gb3JkZXIgdG8gZGV0ZWN0IHRoZSBkZWFkbG9ja3MgYW1vbmcgbGVhZGVyIChMQSkg YW5kCisgKiBwYXJhbGxlbCBhcHBseSAoUEEpIHdvcmtlcnMsIHdlIHVzZWQgbG1nciBsb2NrcyB3 aGVuIHRoZSBQQSB3YWl0cyBmb3IgdGhlCisgKiBuZXh0IHN0cmVhbSAoc2V0IG9mIGNoYW5nZXMp IGFuZCBMQSB3YWl0cyBmb3IgUEEgdG8gZmluaXNoIHRoZSB0cmFuc2FjdGlvbi4KKyAqIEFuIGFs dGVybmF0aXZlIGFwcHJvYWNoIGNvdWxkIGJlIHRvIG5vdCBhbGxvdyBwYXJhbGxlbGlzbSB3aGVu IHRoZSBzY2hlbWEgb2YKKyAqIHRhYmxlcyBpcyBkaWZmZXJlbnQgYmV0d2VlbiB0aGUgcHVibGlz aGVyIGFuZCBzdWJzY3JpYmVyIGJ1dCB0aGF0IHdvdWxkIGJlCisgKiB0b28gcmVzdHJpY3RpdmUg YW5kIHdvdWxkIHJlcXVpcmUgdGhlIHB1Ymxpc2hlciB0byBzZW5kIG11Y2ggbW9yZQorICogaW5m b3JtYXRpb24gdGhhbiBpdCBpcyBjdXJyZW50bHkgc2VuZGluZy4KKyAqCisgKiBDb25zaWRlciBh IGNhc2Ugd2hlcmUgdGhlIHN1YnNjcmliZWQgdGFibGUgZG9lcyBub3QgaGF2ZSBhIHVuaXF1ZSBr ZXkgb24gdGhlCisgKiBwdWJsaXNoZXIgYW5kIGhhcyBhIHVuaXF1ZSBrZXkgb24gdGhlIHN1YnNj cmliZXIuIFRoZSBkZWFkbG9jayBjYW4gaGFwcGVuIGluCisgKiB0aGUgZm9sbG93aW5nIHdheXM6 CisgKgorICogMSkgRGVhZGxvY2sgYmV0d2VlbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQg YSBwYXJhbGxlbCBhcHBseSB3b3JrZXIKKyAqCisgKiBDb25zaWRlciB0aGF0IHRoZSBwYXJhbGxl bCBhcHBseSB3b3JrZXIgKFBBKSBpcyBleGVjdXRpbmcgVFgtMSBhbmQgdGhlCisgKiBsZWFkZXIg YXBwbHkgd29ya2VyIChMQSkgaXMgZXhlY3V0aW5nIFRYLTIgY29uY3VycmVudGx5IG9uIHRoZSBz dWJzY3JpYmVyLgorICogTm93LCBMQSBpcyB3YWl0aW5nIGZvciBQQSBiZWNhdXNlIG9mIHRoZSB1 bmlxdWUga2V5IGNvbnN0cmFpbnQgb2YgdGhlCisgKiBzdWJzY3JpYmVkIHRhYmxlIHdoaWxlIFBB IGlzIHdhaXRpbmcgZm9yIExBIHRvIHNlbmQgdGhlIG5leHQgc3RyZWFtIG9mCisgKiBjaGFuZ2Vz IG9yIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kIG1lc3NhZ2UuCisgKgorICogSW4gb3JkZXIg Zm9yIGxtZ3IgdG8gZGV0ZWN0IHRoaXMsIHdlIGhhdmUgTEEgYWNxdWlyZSBhIHNlc3Npb24gbG9j ayBvbiB0aGUKKyAqIHJlbW90ZSB0cmFuc2FjdGlvbiAoYnkgcGFfbG9ja19zdHJlYW0oKSkgYW5k IGhhdmUgUEEgd2FpdCBvbiB0aGUgbG9jayBiZWZvcmUKKyAqIHRyeWluZyB0byByZWNlaXZlIHRo ZSBuZXh0IHN0cmVhbSBvZiBjaGFuZ2VzLiBTcGVjaWZpY2FsbHksIExBIHdpbGwgYWNxdWlyZQor ICogdGhlIGxvY2sgaW4gQWNjZXNzRXhjbHVzaXZlIG1vZGUgYmVmb3JlIHNlbmRpbmcgdGhlIFNU UkVBTV9TVE9QIGFuZCB3aWxsCisgKiByZWxlYXNlIGl0IGlmIGFscmVhZHkgYWNxdWlyZWQgYWZ0 ZXIgc2VuZGluZyB0aGUgU1RSRUFNX1NUQVJULCBTVFJFQU1fQUJPUlQKKyAqIChmb3IgdG9wbGV2 ZWwgdHJhbnNhY3Rpb24pLCBTVFJFQU1fUFJFUEFSRSwgYW5kIFNUUkVBTV9DT01NSVQuIFRoZSBQ QSB3aWxsCisgKiBhY3F1aXJlIHRoZSBsb2NrIGluIEFjY2Vzc1NoYXJlIG1vZGUgYWZ0ZXIgcHJv Y2Vzc2luZyBTVFJFQU1fU1RPUCBhbmQKKyAqIFNUUkVBTV9BQk9SVCAoZm9yIHN1YnRyYW5zYWN0 aW9uKSBhbmQgdGhlbiByZWxlYXNlIHRoZSBsb2NrIGltbWVkaWF0ZWx5CisgKiBhZnRlciBhY3F1 aXJpbmcgaXQuCisgKgorICogVGhlIGxvY2sgZ3JhcGggZm9yIHRoZSBhYm92ZSBleGFtcGxlIHdp bGwgbG9vayBhcyBmb2xsb3dzOgorICogTEEgKHdhaXRpbmcgdG8gYWNxdWlyZSB0aGUgbG9jayBv biB0aGUgdW5pcXVlIGluZGV4KSAtPiBQQSAod2FpdGluZyB0bworICogYWNxdWlyZSB0aGUgc3Ry ZWFtIGxvY2spIC0+IExBCisgKgorICogVGhpcyB3YXksIHdoZW4gUEEgaXMgd2FpdGluZyBmb3Ig TEEgZm9yIHRoZSBuZXh0IHN0cmVhbSBvZiBjaGFuZ2VzLCB3ZSBjYW4KKyAqIGhhdmUgYSB3YWl0 LWVkZ2UgZnJvbSBQQSB0byBMQSBpbiBsbWdyLCB3aGljaCB3aWxsIG1ha2UgdXMgZGV0ZWN0IHRo ZQorICogZGVhZGxvY2sgYmV0d2VlbiBMQSBhbmQgUEEuCisgKgorICogMikgRGVhZGxvY2sgYmV0 d2VlbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgcGFyYWxsZWwgYXBwbHkgd29ya2Vycwor ICoKKyAqIFRoaXMgc2NlbmFyaW8gaXMgc2ltaWxhciB0byB0aGUgZmlyc3QgY2FzZSBidXQgVFgt MSBhbmQgVFgtMiBhcmUgZXhlY3V0ZWQgYnkKKyAqIHR3byBwYXJhbGxlbCBhcHBseSB3b3JrZXJz IChQQS0xIGFuZCBQQS0yIHJlc3BlY3RpdmVseSkuIEluIHRoaXMgc2NlbmFyaW8sCisgKiBQQS0y IGlzIHdhaXRpbmcgZm9yIFBBLTEgdG8gY29tcGxldGUgaXRzIHRyYW5zYWN0aW9uIHdoaWxlIFBB LTEgaXMgd2FpdGluZworICogZm9yIHN1YnNlcXVlbnQgaW5wdXQgZnJvbSBMQS4gQWxzbywgTEEg aXMgd2FpdGluZyBmb3IgUEEtMiB0byBjb21wbGV0ZSBpdHMKKyAqIHRyYW5zYWN0aW9uIGluIG9y ZGVyIHRvIHByZXNlcnZlIHRoZSBjb21taXQgb3JkZXIuIFRoZXJlIGlzIGEgZGVhZGxvY2sgYW1v bmcKKyAqIHRoZSB0aHJlZSBwcm9jZXNzZXMuCisgKgorICogSW4gb3JkZXIgZm9yIGxtZ3IgdG8g ZGV0ZWN0IHRoaXMsIHdlIGhhdmUgUEEgYWNxdWlyZSBhIHNlc3Npb24gbG9jayAodGhpcyBpcwor ICogYSBkaWZmZXJlbnQgbG9jayB0aGFuIHJlZmVycmVkIGluIHRoZSBwcmV2aW91cyBjYXNlLCBz ZWUKKyAqIHBhX2xvY2tfdHJhbnNhY3Rpb24oKSkgb24gdGhlIHRyYW5zYWN0aW9uIGJlaW5nIGFw cGxpZWQgYW5kIGhhdmUgTEEgd2FpdCBvbgorICogdGhlIGxvY2sgYmVmb3JlIHByb2NlZWRpbmcg aW4gdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kcy4gU3BlY2lmaWNhbGx5LAorICogUEEg d2lsbCBhY3F1aXJlIHRoaXMgbG9jayBpbiBBY2Nlc3NFeGNsdXNpdmUgbW9kZSBiZWZvcmUgZXhl Y3V0aW5nIHRoZSBmaXJzdAorICogbWVzc2FnZSBvZiB0aGUgdHJhbnNhY3Rpb24gYW5kIHJlbGVh c2UgaXQgYXQgdGhlIHhhY3QgZW5kLiBMQSB3aWxsIGFjcXVpcmUKKyAqIHRoaXMgbG9jayBpbiBB Y2Nlc3NTaGFyZSBtb2RlIGF0IHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kcyBhbmQgcmVsZWFz ZSBpdAorICogaW1tZWRpYXRlbHkuCisgKgorICogVGhlIGxvY2sgZ3JhcGggZm9yIHRoZSBhYm92 ZSBleGFtcGxlIHdpbGwgbG9vayBhcyBmb2xsb3dzOgorICogTEEgKHdhaXRpbmcgdG8gYWNxdWly ZSB0aGUgdHJhbnNhY3Rpb24gbG9jaykgLT4gUEEtMiAod2FpdGluZyB0byBhY3F1aXJlIHRoZQor ICogbG9jayBkdWUgdG8gdW5pcXVlIGluZGV4IGNvbnN0cmFpbnQpIC0+IFBBLTEgKHdhaXRpbmcg dG8gYWNxdWlyZSB0aGUgc3RyZWFtCisgKiBsb2NrKSAtPiBMQQorICoKKyAqIFRoaXMgd2F5IHdo ZW4gTEEgaXMgd2FpdGluZyB0byBmaW5pc2ggdGhlIHRyYW5zYWN0aW9uIGVuZCBjb21tYW5kIHRv IHByZXNlcnZlCisgKiB0aGUgY29tbWl0IG9yZGVyLCB3ZSB3aWxsIGJlIGFibGUgdG8gZGV0ZWN0 IGRlYWRsb2NrLCBpZiBhbnkuCisgKgorICogT25lIG1pZ2h0IHRoaW5rIHdlIGNhbiB1c2UgWGFj dExvY2tUYWJsZVdhaXQoKSwgYnV0IFhhY3RMb2NrVGFibGVXYWl0KCkKKyAqIGNvbnNpZGVycyBQ UkVQQVJFRCBUUkFOU0FDVElPTiBhcyBzdGlsbCBpbiBwcm9ncmVzcyB3aGljaCBtZWFucyB0aGUg bG9jaworICogd29uJ3QgYmUgcmVsZWFzZWQgZXZlbiBhZnRlciB0aGUgcGFyYWxsZWwgYXBwbHkg d29ya2VyIGhhcyBwcmVwYXJlZCB0aGUKKyAqIHRyYW5zYWN0aW9uLgorICoKKyAqIDMpIERlYWRs b2NrIHdoZW4gdGhlIHNobV9tcSBidWZmZXIgaXMgZnVsbAorICoKKyAqIEluIHRoZSBwcmV2aW91 cyBzY2VuYXJpbyAoaWUuIFBBLTEgYW5kIFBBLTIgYXJlIGV4ZWN1dGluZyB0cmFuc2FjdGlvbnMK KyAqIGNvbmN1cnJlbnRseSksIGlmIHRoZSBzaG1fbXEgYnVmZmVyIGJldHdlZW4gTEEgYW5kIFBB LTIgaXMgZnVsbCwgTEEgaGFzIHRvCisgKiB3YWl0IHRvIHNlbmQgbWVzc2FnZXMsIGFuZCB0aGlz IHdhaXQgZG9lc24ndCBhcHBlYXIgaW4gbG1nci4KKyAqCisgKiBUbyBhdm9pZCB0aGlzIHdhaXQs IHdlIHVzZSBhIG5vbi1ibG9ja2luZyB3cml0ZSBhbmQgd2FpdCB3aXRoIGEgdGltZW91dC4gSWYK KyAqIHRoZSB0aW1lb3V0IGlzIGV4Y2VlZGVkLCB0aGUgTEEgd2lsbCBzZXJpYWxpemUgYWxsIHRo ZSBwZW5kaW5nIG1lc3NhZ2VzIHRvCisgKiBhIGZpbGUgYW5kIGluZGljYXRlIFBBLTIgdGhhdCBp dCBuZWVkcyB0byByZWFkIHRoYXQgZmlsZSBmb3IgdGhlIHJlbWFpbmluZworICogbWVzc2FnZXMu IFRoZW4gTEEgd2lsbCBzdGFydCB3YWl0aW5nIGZvciBjb21taXQgYXMgaW4gdGhlIHByZXZpb3Vz IGNhc2UKKyAqIHdoaWNoIHdpbGwgZGV0ZWN0IGRlYWRsb2NrIGlmIGFueS4gU2VlIHBhX3NlbmRf ZGF0YSgpIGFuZAorICogZW51bSBUcmFuc0FwcGx5QWN0aW9uLgorICoKKyAqIExvY2sgdHlwZXMK KyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEJvdGggdGhlIHN0cmVhbSBsb2NrIGFuZCB0 aGUgdHJhbnNhY3Rpb24gbG9jayBtZW50aW9uZWQgYWJvdmUgYXJlCisgKiBzZXNzaW9uLWxldmVs IGxvY2tzIGJlY2F1c2UgYm90aCBsb2NrcyBjb3VsZCBiZSBhY3F1aXJlZCBvdXRzaWRlIHRoZQor ICogdHJhbnNhY3Rpb24sIGFuZCB0aGUgc3RyZWFtIGxvY2sgaW4gdGhlIGxlYWRlciBuZWVkcyB0 byBwZXJzaXN0IGFjcm9zcworICogdHJhbnNhY3Rpb24gYm91bmRhcmllcyBpLmUuIHVudGlsIHRo ZSBlbmQgb2YgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4KKyAqLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQu aCIKKyNpbmNsdWRlICJsaWJwcS9wcW1xLmgiCisjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVk ZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fs bGF1bmNoZXIuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgiCisjaW5j bHVkZSAicmVwbGljYXRpb24vb3JpZ2luLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2Vy X2ludGVybmFsLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKKyNpbmNsdWRlICJzdG9yYWdl L2xtZ3IuaCIKKyNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCisjaW5jbHVkZSAidXRpbHMvaW52 YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2Nh Y2hlLmgiCisKKyNkZWZpbmUgUEdfTE9HSUNBTF9BUFBMWV9TSE1fTUFHSUMgMHg3ODdjYTA2Nwor CisvKgorICogRFNNIGtleXMgZm9yIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gVW5saWtlIG90aGVy IHBhcmFsbGVsIGV4ZWN1dGlvbiBjb2RlLAorICogc2luY2Ugd2UgZG9uJ3QgbmVlZCB0byB3b3Jy eSBhYm91dCBEU00ga2V5cyBjb25mbGljdGluZyB3aXRoIHBsYW5fbm9kZV9pZCB3ZQorICogY2Fu IHVzZSBzbWFsbCBpbnRlZ2Vycy4KKyAqLworI2RlZmluZSBQQVJBTExFTF9BUFBMWV9LRVlfU0hB UkVECQkxCisjZGVmaW5lIFBBUkFMTEVMX0FQUExZX0tFWV9NUQkJCTIKKyNkZWZpbmUgUEFSQUxM RUxfQVBQTFlfS0VZX0VSUk9SX1FVRVVFCTMKKworLyogUXVldWUgc2l6ZSBvZiBEU00sIDE2IE1C IGZvciBub3cuICovCisjZGVmaW5lIERTTV9RVUVVRV9TSVpFCSgxNiAqIDEwMjQgKiAxMDI0KQor CisvKgorICogRXJyb3IgcXVldWUgc2l6ZSBvZiBEU00uIEl0IGlzIGRlc2lyYWJsZSB0byBtYWtl IGl0IGxhcmdlIGVub3VnaCB0aGF0IGEKKyAqIHR5cGljYWwgRXJyb3JSZXNwb25zZSBjYW4gYmUg c2VudCB3aXRob3V0IGJsb2NraW5nLiBUaGF0IHdheSwgYSB3b3JrZXIgdGhhdAorICogZXJyb3Jz IG91dCBjYW4gd3JpdGUgdGhlIHdob2xlIG1lc3NhZ2UgaW50byB0aGUgcXVldWUgYW5kIHRlcm1p bmF0ZSB3aXRob3V0CisgKiB3YWl0aW5nIGZvciB0aGUgdXNlciBiYWNrZW5kLgorICovCisjZGVm aW5lIERTTV9FUlJPUl9RVUVVRV9TSVpFCQkJKDE2ICogMTAyNCkKKworLyoKKyAqIFRoZXJlIGFy ZSB0aHJlZSBmaWVsZHMgaW4gZWFjaCBtZXNzYWdlIHJlY2VpdmVkIGJ5IHRoZSBwYXJhbGxlbCBh cHBseQorICogd29ya2VyOiBzdGFydF9sc24sIGVuZF9sc24gYW5kIHNlbmRfdGltZS4gQmVjYXVz ZSB3ZSBoYXZlIHVwZGF0ZWQgdGhlc2UKKyAqIHN0YXRpc3RpY3MgaW4gdGhlIGxlYWRlciBhcHBs eSB3b3JrZXIsIHdlIGNhbiBpZ25vcmUgdGhlc2UgZmllbGRzIGluIHRoZQorICogcGFyYWxsZWwg YXBwbHkgd29ya2VyIChzZWUgZnVuY3Rpb24gTG9naWNhbFJlcEFwcGx5TG9vcCkuCisgKi8KKyNk ZWZpbmUgU0laRV9TVEFUU19NRVNTQUdFICgyICogc2l6ZW9mKFhMb2dSZWNQdHIpICsgc2l6ZW9m KFRpbWVzdGFtcFR6KSkKKworLyoKKyAqIFRoZSB0eXBlIG9mIHNlc3Npb24tbGV2ZWwgbG9jayBv biBhIHRyYW5zYWN0aW9uIGJlaW5nIGFwcGxpZWQgb24gYSBsb2dpY2FsCisgKiByZXBsaWNhdGlv biBzdWJzY3JpYmVyLgorICovCisjZGVmaW5lIFBBUkFMTEVMX0FQUExZX0xPQ0tfU1RSRUFNCTAK KyNkZWZpbmUgUEFSQUxMRUxfQVBQTFlfTE9DS19YQUNUCTEKKworLyoKKyAqIEhhc2ggdGFibGUg ZW50cnkgdG8gbWFwIHhpZCB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHN0YXRlLgorICov Cit0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbEFwcGx5V29ya2VyRW50cnkKK3sKKwlUcmFuc2FjdGlv bklkIHhpZDsJCQkvKiBIYXNoIGtleSAtLSBtdXN0IGJlIGZpcnN0ICovCisJUGFyYWxsZWxBcHBs eVdvcmtlckluZm8gKndpbmZvOworfSBQYXJhbGxlbEFwcGx5V29ya2VyRW50cnk7CisKKy8qCisg KiBBIGhhc2ggdGFibGUgdXNlZCB0byBjYWNoZSB0aGUgc3RhdGUgb2Ygc3RyZWFtaW5nIHRyYW5z YWN0aW9ucyBiZWluZyBhcHBsaWVkCisgKiBieSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4K KyAqLworc3RhdGljIEhUQUIgKlBhcmFsbGVsQXBwbHlUeG5IYXNoID0gTlVMTDsKKworLyoKKyog QSBsaXN0IChwb29sKSBvZiBhY3RpdmUgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4gVGhlIGluZm9y bWF0aW9uIGZvcgorKiB0aGUgbmV3IHdvcmtlciBpcyBhZGRlZCB0byB0aGUgbGlzdCBhZnRlciBz dWNjZXNzZnVsbHkgbGF1bmNoaW5nIGl0LiBUaGUKKyogbGlzdCBlbnRyeSBpcyByZW1vdmVkIGlm IHRoZXJlIGFyZSBhbHJlYWR5IGVub3VnaCB3b3JrZXJzIGluIHRoZSB3b3JrZXIKKyogcG9vbCBh dCB0aGUgZW5kIG9mIHRoZSB0cmFuc2FjdGlvbi4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQg dGhlIHdvcmtlcgorKiBwb29sLCBzZWUgY29tbWVudHMgYXRvcCB0aGlzIGZpbGUuCisgKi8KK3N0 YXRpYyBMaXN0ICpQYXJhbGxlbEFwcGx5V29ya2VyUG9vbCA9IE5JTDsKKworLyoKKyAqIEluZm9y bWF0aW9uIHNoYXJlZCBiZXR3ZWVuIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHBhcmFsbGVsIGFw cGx5IHdvcmtlci4KKyAqLworUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqTXlQYXJhbGxlbFNo YXJlZCA9IE5VTEw7CisKKy8qCisgKiBJcyB0aGVyZSBhIG1lc3NhZ2Ugc2VudCBieSBhIHBhcmFs bGVsIGFwcGx5IHdvcmtlciB0aGF0IHRoZSBsZWFkZXIgYXBwbHkKKyAqIHdvcmtlciBuZWVkcyB0 byByZWNlaXZlPworICovCit2b2xhdGlsZSBzaWdfYXRvbWljX3QgUGFyYWxsZWxBcHBseU1lc3Nh Z2VQZW5kaW5nID0gZmFsc2U7CisKKy8qCisgKiBDYWNoZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29y a2VyIGluZm9ybWF0aW9uIHJlcXVpcmVkIGZvciBhcHBseWluZyB0aGUKKyAqIGN1cnJlbnQgc3Ry ZWFtaW5nIHRyYW5zYWN0aW9uLiBJdCBpcyB1c2VkIHRvIHNhdmUgdGhlIGNvc3Qgb2Ygc2VhcmNo aW5nIHRoZQorICogaGFzaCB0YWJsZSB3aGVuIGFwcGx5aW5nIHRoZSBjaGFuZ2VzIGJldHdlZW4g U1RSRUFNX1NUQVJUIGFuZCBTVFJFQU1fU1RPUC4KKyAqLworc3RhdGljIFBhcmFsbGVsQXBwbHlX b3JrZXJJbmZvICpzdHJlYW1fYXBwbHlfd29ya2VyID0gTlVMTDsKKworLyogQSBsaXN0IHRvIG1h aW50YWluIHN1YnRyYW5zYWN0aW9ucywgaWYgYW55LiAqLworc3RhdGljIExpc3QgKnN1YnhhY3Rs aXN0ID0gTklMOworCitzdGF0aWMgdm9pZCBwYV9mcmVlX3dvcmtlcl9pbmZvKFBhcmFsbGVsQXBw bHlXb3JrZXJJbmZvICp3aW5mbyk7CitzdGF0aWMgUGFyYWxsZWxUcmFuc1N0YXRlIHBhX2dldF94 YWN0X3N0YXRlKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKndzaGFyZWQpOworc3RhdGljIFBh cnRpYWxGaWxlU2V0U3RhdGUgcGFfZ2V0X2ZpbGVzZXRfc3RhdGUodm9pZCk7CisKKy8qCisgKiBS ZXR1cm5zIHRydWUgaWYgaXQgaXMgT0sgdG8gc3RhcnQgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIs IGZhbHNlIG90aGVyd2lzZS4KKyAqLworc3RhdGljIGJvb2wKK3BhX2Nhbl9zdGFydCh2b2lkKQor eworCS8qIE9ubHkgbGVhZGVyIGFwcGx5IHdvcmtlcnMgY2FuIHN0YXJ0IHBhcmFsbGVsIGFwcGx5 IHdvcmtlcnMuICovCisJaWYgKCFhbV9sZWFkZXJfYXBwbHlfd29ya2VyKCkpCisJCXJldHVybiBm YWxzZTsKKworCS8qCisJICogSXQgaXMgZ29vZCB0byBjaGVjayBmb3IgYW55IGNoYW5nZSBpbiB0 aGUgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciB0bworCSAqIGF2b2lkIHRoZSBjYXNlIHdoZXJlIGZv ciBhIHZlcnkgbG9uZyB0aW1lIHRoZSBjaGFuZ2UgZG9lc24ndCBnZXQKKwkgKiByZWZsZWN0ZWQu IFRoaXMgY2FuIGhhcHBlbiB3aGVuIHRoZXJlIGlzIGEgY29uc3RhbnQgZmxvdyBvZiBzdHJlYW1p bmcKKwkgKiB0cmFuc2FjdGlvbnMgdGhhdCBhcmUgaGFuZGxlZCBieSBwYXJhbGxlbCBhcHBseSB3 b3JrZXJzLgorCSAqCisJICogSXQgaXMgYmV0dGVyIHRvIGRvIGl0IGJlZm9yZSB0aGUgYmVsb3cg Y2hlY2tzIHNvIHRoYXQgdGhlIGxhdGVzdCB2YWx1ZXMKKwkgKiBvZiBzdWJzY3JpcHRpb24gY2Fu IGJlIHVzZWQgZm9yIHRoZSBjaGVja3MuCisJICovCisJbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlv bigpOworCisJLyoKKwkgKiBEb24ndCBzdGFydCBhIG5ldyBwYXJhbGxlbCBhcHBseSB3b3JrZXIg aWYgdGhlIHN1YnNjcmlwdGlvbiBpcyBub3QKKwkgKiB1c2luZyBwYXJhbGxlbCBzdHJlYW1pbmcg bW9kZSwgb3IgaWYgdGhlIHB1Ymxpc2hlciBkb2VzIG5vdCBzdXBwb3J0CisJICogcGFyYWxsZWwg YXBwbHkuCisJICovCisJaWYgKCFNeUxvZ2ljYWxSZXBXb3JrZXItPnBhcmFsbGVsX2FwcGx5KQor CQlyZXR1cm4gZmFsc2U7CisKKwkvKgorCSAqIERvbid0IHN0YXJ0IGEgbmV3IHBhcmFsbGVsIHdv cmtlciBpZiB1c2VyIGhhcyBzZXQgc2tpcGxzbiBhcyBpdCdzCisJICogcG9zc2libGUgdGhhdCB0 aGV5IHdhbnQgdG8gc2tpcCB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLiBGb3IKKwkgKiBzdHJl YW1pbmcgdHJhbnNhY3Rpb25zLCB3ZSBuZWVkIHRvIHNlcmlhbGl6ZSB0aGUgdHJhbnNhY3Rpb24g dG8gYSBmaWxlCisJICogc28gdGhhdCB3ZSBjYW4gZ2V0IHRoZSBsYXN0IExTTiBvZiB0aGUgdHJh bnNhY3Rpb24gdG8ganVkZ2Ugd2hldGhlciB0bworCSAqIHNraXAgYmVmb3JlIHN0YXJ0aW5nIHRv IGFwcGx5IHRoZSBjaGFuZ2UuCisJICoKKwkgKiBPbmUgbWlnaHQgdGhpbmsgdGhhdCB3ZSBjb3Vs ZCBhbGxvdyBwYXJhbGxlbGlzbSBpZiB0aGUgZmlyc3QgbHNuIG9mIHRoZQorCSAqIHRyYW5zYWN0 aW9uIGlzIGdyZWF0ZXIgdGhhbiBza2lwbHNuLCBidXQgd2UgZG9uJ3Qgc2VuZCBpdCB3aXRoIHRo ZQorCSAqIFNUUkVBTSBTVEFSVCBtZXNzYWdlLCBhbmQgaXQgZG9lc24ndCBzZWVtIHdvcnRoIHNl bmRpbmcgdGhlIGV4dHJhIGVpZ2h0CisJICogYnl0ZXMgd2l0aCB0aGUgU1RSRUFNIFNUQVJUIHRv IGVuYWJsZSBwYXJhbGxlbGlzbSBmb3IgdGhpcyBjYXNlLgorCSAqLworCWlmICghWExvZ1JlY1B0 cklzSW52YWxpZChNeVN1YnNjcmlwdGlvbi0+c2tpcGxzbikpCisJCXJldHVybiBmYWxzZTsKKwor CS8qCisJICogRm9yIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgdGhhdCBhcmUgYmVpbmcgYXBwbGll ZCB1c2luZyBhIHBhcmFsbGVsCisJICogYXBwbHkgd29ya2VyLCB3ZSBjYW5ub3QgZGVjaWRlIHdo ZXRoZXIgdG8gYXBwbHkgdGhlIGNoYW5nZSBmb3IgYQorCSAqIHJlbGF0aW9uIHRoYXQgaXMgbm90 IGluIHRoZSBSRUFEWSBzdGF0ZSAoc2VlCisJICogc2hvdWxkX2FwcGx5X2NoYW5nZXNfZm9yX3Jl bCkgYXMgd2Ugd29uJ3Qga25vdyByZW1vdGVfZmluYWxfbHNuIGJ5IHRoYXQKKwkgKiB0aW1lLiBT bywgd2UgZG9uJ3Qgc3RhcnQgdGhlIG5ldyBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaW4gdGhpcyBj YXNlLgorCSAqLworCWlmICghQWxsVGFibGVzeW5jc1JlYWR5KCkpCisJCXJldHVybiBmYWxzZTsK KworCXJldHVybiB0cnVlOworfQorCisvKgorICogU2V0IHVwIGEgZHluYW1pYyBzaGFyZWQgbWVt b3J5IHNlZ21lbnQuCisgKgorICogV2Ugc2V0IHVwIGEgY29udHJvbCByZWdpb24gdGhhdCBjb250 YWlucyBhIGZpeGVkLXNpemUgd29ya2VyIGluZm8KKyAqIChQYXJhbGxlbEFwcGx5V29ya2VyU2hh cmVkKSwgYSBtZXNzYWdlIHF1ZXVlLCBhbmQgYW4gZXJyb3IgcXVldWUuCisgKgorICogUmV0dXJu cyB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmUuCisgKi8KK3N0YXRpYyBib29sCitw YV9zZXR1cF9kc20oUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQoreworCXNobV90b2Nf ZXN0aW1hdG9yIGU7CisJU2l6ZQkJc2Vnc2l6ZTsKKwlkc21fc2VnbWVudCAqc2VnOworCXNobV90 b2MgICAgKnRvYzsKKwlQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpzaGFyZWQ7CisJc2htX21x CSAgICptcTsKKwlTaXplCQlxdWV1ZV9zaXplID0gRFNNX1FVRVVFX1NJWkU7CisJU2l6ZQkJZXJy b3JfcXVldWVfc2l6ZSA9IERTTV9FUlJPUl9RVUVVRV9TSVpFOworCisJLyoKKwkgKiBFc3RpbWF0 ZSBob3cgbXVjaCBzaGFyZWQgbWVtb3J5IHdlIG5lZWQuCisJICoKKwkgKiBCZWNhdXNlIHRoZSBU T0MgbWFjaGluZXJ5IG1heSBjaG9vc2UgdG8gaW5zZXJ0IHBhZGRpbmcgb2Ygb2RkbHktc2l6ZWQK KwkgKiByZXF1ZXN0cywgd2UgbXVzdCBlc3RpbWF0ZSBlYWNoIGNodW5rIHNlcGFyYXRlbHkuCisJ ICoKKwkgKiBXZSBuZWVkIG9uZSBrZXkgdG8gcmVnaXN0ZXIgdGhlIGxvY2F0aW9uIG9mIHRoZSBo ZWFkZXIsIGFuZCB0d28gb3RoZXIKKwkgKiBrZXlzIHRvIHRyYWNrIHRoZSBsb2NhdGlvbnMgb2Yg dGhlIG1lc3NhZ2UgcXVldWUgYW5kIHRoZSBlcnJvciBtZXNzYWdlCisJICogcXVldWUuCisJICov CisJc2htX3RvY19pbml0aWFsaXplX2VzdGltYXRvcigmZSk7CisJc2htX3RvY19lc3RpbWF0ZV9j aHVuaygmZSwgc2l6ZW9mKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQpKTsKKwlzaG1fdG9jX2Vz dGltYXRlX2NodW5rKCZlLCBxdWV1ZV9zaXplKTsKKwlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZl LCBlcnJvcl9xdWV1ZV9zaXplKTsKKworCXNobV90b2NfZXN0aW1hdGVfa2V5cygmZSwgMyk7CisJ c2Vnc2l6ZSA9IHNobV90b2NfZXN0aW1hdGUoJmUpOworCisJLyogQ3JlYXRlIHRoZSBzaGFyZWQg bWVtb3J5IHNlZ21lbnQgYW5kIGVzdGFibGlzaCBhIHRhYmxlIG9mIGNvbnRlbnRzLiAqLworCXNl ZyA9IGRzbV9jcmVhdGUoc2htX3RvY19lc3RpbWF0ZSgmZSksIDApOworCWlmICghc2VnKQorCQly ZXR1cm4gZmFsc2U7CisKKwl0b2MgPSBzaG1fdG9jX2NyZWF0ZShQR19MT0dJQ0FMX0FQUExZX1NI TV9NQUdJQywgZHNtX3NlZ21lbnRfYWRkcmVzcyhzZWcpLAorCQkJCQkJIHNlZ3NpemUpOworCisJ LyogU2V0IHVwIHRoZSBoZWFkZXIgcmVnaW9uLiAqLworCXNoYXJlZCA9IHNobV90b2NfYWxsb2Nh dGUodG9jLCBzaXplb2YoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCkpOworCVNwaW5Mb2NrSW5p dCgmc2hhcmVkLT5tdXRleCk7CisKKwlzaGFyZWQtPnhhY3Rfc3RhdGUgPSBQQVJBTExFTF9UUkFO U19VTktOT1dOOworCXBnX2F0b21pY19pbml0X3UzMigmKHNoYXJlZC0+cGVuZGluZ19zdHJlYW1f Y291bnQpLCAwKTsKKwlzaGFyZWQtPmxhc3RfY29tbWl0X2VuZCA9IEludmFsaWRYTG9nUmVjUHRy OworCXNoYXJlZC0+ZmlsZXNldF9zdGF0ZSA9IEZTX0VNUFRZOworCisJc2htX3RvY19pbnNlcnQo dG9jLCBQQVJBTExFTF9BUFBMWV9LRVlfU0hBUkVELCBzaGFyZWQpOworCisJLyogU2V0IHVwIG1l c3NhZ2UgcXVldWUgZm9yIHRoZSB3b3JrZXIuICovCisJbXEgPSBzaG1fbXFfY3JlYXRlKHNobV90 b2NfYWxsb2NhdGUodG9jLCBxdWV1ZV9zaXplKSwgcXVldWVfc2l6ZSk7CisJc2htX3RvY19pbnNl cnQodG9jLCBQQVJBTExFTF9BUFBMWV9LRVlfTVEsIG1xKTsKKwlzaG1fbXFfc2V0X3NlbmRlciht cSwgTXlQcm9jKTsKKworCS8qIEF0dGFjaCB0aGUgcXVldWUuICovCisJd2luZm8tPm1xX2hhbmRs ZSA9IHNobV9tcV9hdHRhY2gobXEsIHNlZywgTlVMTCk7CisKKwkvKiBTZXQgdXAgZXJyb3IgcXVl dWUgZm9yIHRoZSB3b3JrZXIuICovCisJbXEgPSBzaG1fbXFfY3JlYXRlKHNobV90b2NfYWxsb2Nh dGUodG9jLCBlcnJvcl9xdWV1ZV9zaXplKSwKKwkJCQkJICAgZXJyb3JfcXVldWVfc2l6ZSk7CisJ c2htX3RvY19pbnNlcnQodG9jLCBQQVJBTExFTF9BUFBMWV9LRVlfRVJST1JfUVVFVUUsIG1xKTsK KwlzaG1fbXFfc2V0X3JlY2VpdmVyKG1xLCBNeVByb2MpOworCisJLyogQXR0YWNoIHRoZSBxdWV1 ZS4gKi8KKwl3aW5mby0+ZXJyb3JfbXFfaGFuZGxlID0gc2htX21xX2F0dGFjaChtcSwgc2VnLCBO VUxMKTsKKworCS8qIFJldHVybiByZXN1bHRzIHRvIGNhbGxlci4gKi8KKwl3aW5mby0+ZHNtX3Nl ZyA9IHNlZzsKKwl3aW5mby0+c2hhcmVkID0gc2hhcmVkOworCisJcmV0dXJuIHRydWU7Cit9CisK Ky8qCisgKiBUcnkgdG8gZ2V0IGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZyb20gdGhlIHBvb2wu IElmIG5vbmUgaXMgYXZhaWxhYmxlIHRoZW4KKyAqIHN0YXJ0IGEgbmV3IG9uZS4KKyAqLworc3Rh dGljIFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICoKK3BhX2xhdW5jaF9wYXJhbGxlbF93b3JrZXIo dm9pZCkKK3sKKwlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisJYm9vbAkJbGF1bmNoZWQ7CisJ UGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOworCUxpc3RDZWxsICAgKmxjOworCisJLyog VHJ5IHRvIGdldCBhbiBhdmFpbGFibGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZyb20gdGhlIHdv cmtlciBwb29sLiAqLworCWZvcmVhY2gobGMsIFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sKQorCXsK KwkJd2luZm8gPSAoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKikgbGZpcnN0KGxjKTsKKworCQlp ZiAoIXdpbmZvLT5pbl91c2UpCisJCQlyZXR1cm4gd2luZm87CisJfQorCisJLyoKKwkgKiBTdGFy dCBhIG5ldyBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJICoKKwkgKiBUaGUgd29ya2VyIGluZm8g Y2FuIGJlIHVzZWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgd29ya2VyIHByb2Nlc3MsIHNvCisJ ICogY3JlYXRlIGl0IGluIGEgcGVybWFuZW50IGNvbnRleHQuCisJICovCisJb2xkY29udGV4dCA9 IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCisJd2luZm8gPSAoUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKikgcGFsbG9jMChzaXplb2YoUGFyYWxsZWxBcHBseVdvcmtlcklu Zm8pKTsKKworCS8qIFNldHVwIHNoYXJlZCBtZW1vcnkuICovCisJaWYgKCFwYV9zZXR1cF9kc20o d2luZm8pKQorCXsKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCQlwZnJl ZSh3aW5mbyk7CisJCXJldHVybiBOVUxMOworCX0KKworCWxhdW5jaGVkID0gbG9naWNhbHJlcF93 b3JrZXJfbGF1bmNoKE15TG9naWNhbFJlcFdvcmtlci0+ZGJpZCwKKwkJCQkJCQkJCQlNeVN1YnNj cmlwdGlvbi0+b2lkLAorCQkJCQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lLAorCQkJCQkJCQkJ CU15TG9naWNhbFJlcFdvcmtlci0+dXNlcmlkLAorCQkJCQkJCQkJCUludmFsaWRPaWQsCisJCQkJ CQkJCQkJZHNtX3NlZ21lbnRfaGFuZGxlKHdpbmZvLT5kc21fc2VnKSk7CisKKwlpZiAobGF1bmNo ZWQpCisJeworCQlQYXJhbGxlbEFwcGx5V29ya2VyUG9vbCA9IGxhcHBlbmQoUGFyYWxsZWxBcHBs eVdvcmtlclBvb2wsIHdpbmZvKTsKKwl9CisJZWxzZQorCXsKKwkJcGFfZnJlZV93b3JrZXJfaW5m byh3aW5mbyk7CisJCXdpbmZvID0gTlVMTDsKKwl9CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkY29udGV4dCk7CisKKwlyZXR1cm4gd2luZm87Cit9CisKKy8qCisgKiBBbGxvY2F0ZSBhIHBh cmFsbGVsIGFwcGx5IHdvcmtlciB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgdGhlIHNwZWNpZmllZCB4 aWQuCisgKgorICogV2UgZmlyc3QgdHJ5IHRvIGdldCBhbiBhdmFpbGFibGUgd29ya2VyIGZyb20g dGhlIHBvb2wsIGlmIGFueSBhbmQgdGhlbiB0cnkKKyAqIHRvIGxhdW5jaCBhIG5ldyB3b3JrZXIu IE9uIHN1Y2Nlc3NmdWwgYWxsb2NhdGlvbiwgcmVtZW1iZXIgdGhlIHdvcmtlcgorICogaW5mb3Jt YXRpb24gaW4gdGhlIGhhc2ggdGFibGUgc28gdGhhdCB3ZSBjYW4gZ2V0IGl0IGxhdGVyIGZvciBw cm9jZXNzaW5nIHRoZQorICogc3RyZWFtaW5nIGNoYW5nZXMuCisgKi8KK3ZvaWQKK3BhX2FsbG9j YXRlX3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCkKK3sKKwlib29sCQlmb3VuZDsKKwlQYXJhbGxl bEFwcGx5V29ya2VySW5mbyAqd2luZm8gPSBOVUxMOworCVBhcmFsbGVsQXBwbHlXb3JrZXJFbnRy eSAqZW50cnk7CisKKwlpZiAoIXBhX2Nhbl9zdGFydCgpKQorCQlyZXR1cm47CisKKwkvKiBGaXJz dCB0aW1lIHRocm91Z2gsIGluaXRpYWxpemUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHN0YXRlIGhh c2h0YWJsZS4gKi8KKwlpZiAoIVBhcmFsbGVsQXBwbHlUeG5IYXNoKQorCXsKKwkJSEFTSENUTAkJ Y3RsOworCisJCU1lbVNldCgmY3RsLCAwLCBzaXplb2YoY3RsKSk7CisJCWN0bC5rZXlzaXplID0g c2l6ZW9mKFRyYW5zYWN0aW9uSWQpOworCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFBhcmFsbGVs QXBwbHlXb3JrZXJFbnRyeSk7CisJCWN0bC5oY3h0ID0gQXBwbHlDb250ZXh0OworCisJCVBhcmFs bGVsQXBwbHlUeG5IYXNoID0gaGFzaF9jcmVhdGUoImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxs ZWwgYXBwbHkgd29ya2VycyBoYXNoIiwKKwkJCQkJCQkJCQkgICAxNiwgJmN0bCwKKwkJCQkJCQkJ CQkgICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwl9CisKKwl3aW5m byA9IHBhX2xhdW5jaF9wYXJhbGxlbF93b3JrZXIoKTsKKwlpZiAoIXdpbmZvKQorCQlyZXR1cm47 CisKKwkvKiBDcmVhdGUgYW4gZW50cnkgZm9yIHRoZSByZXF1ZXN0ZWQgdHJhbnNhY3Rpb24uICov CisJZW50cnkgPSBoYXNoX3NlYXJjaChQYXJhbGxlbEFwcGx5VHhuSGFzaCwgJnhpZCwgSEFTSF9F TlRFUiwgJmZvdW5kKTsKKwlpZiAoZm91bmQpCisJCWVsb2coRVJST1IsICJoYXNoIHRhYmxlIGNv cnJ1cHRlZCIpOworCisJLyogVXBkYXRlIHRoZSB0cmFuc2FjdGlvbiBpbmZvcm1hdGlvbiBpbiBz aGFyZWQgbWVtb3J5LiAqLworCVNwaW5Mb2NrQWNxdWlyZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgp OworCXdpbmZvLT5zaGFyZWQtPnhhY3Rfc3RhdGUgPSBQQVJBTExFTF9UUkFOU19VTktOT1dOOwor CXdpbmZvLT5zaGFyZWQtPnhpZCA9IHhpZDsKKwlTcGluTG9ja1JlbGVhc2UoJndpbmZvLT5zaGFy ZWQtPm11dGV4KTsKKworCXdpbmZvLT5pbl91c2UgPSB0cnVlOworCXdpbmZvLT5zZXJpYWxpemVf Y2hhbmdlcyA9IGZhbHNlOworCWVudHJ5LT53aW5mbyA9IHdpbmZvOworCWVudHJ5LT54aWQgPSB4 aWQ7Cit9CisKKy8qCisgKiBGaW5kIHRoZSBhc3NpZ25lZCB3b3JrZXIgZm9yIHRoZSBnaXZlbiB0 cmFuc2FjdGlvbiwgaWYgYW55LgorICovCitQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqCitwYV9m aW5kX3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCkKK3sKKwlib29sCQlmb3VuZDsKKwlQYXJhbGxl bEFwcGx5V29ya2VyRW50cnkgKmVudHJ5OworCisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZCh4 aWQpKQorCQlyZXR1cm4gTlVMTDsKKworCWlmICghUGFyYWxsZWxBcHBseVR4bkhhc2gpCisJCXJl dHVybiBOVUxMOworCisJLyogUmV0dXJuIHRoZSBjYWNoZWQgcGFyYWxsZWwgYXBwbHkgd29ya2Vy IGlmIHZhbGlkLiAqLworCWlmIChzdHJlYW1fYXBwbHlfd29ya2VyKQorCQlyZXR1cm4gc3RyZWFt X2FwcGx5X3dvcmtlcjsKKworCS8qIEZpbmQgYW4gZW50cnkgZm9yIHRoZSByZXF1ZXN0ZWQgdHJh bnNhY3Rpb24uICovCisJZW50cnkgPSBoYXNoX3NlYXJjaChQYXJhbGxlbEFwcGx5VHhuSGFzaCwg JnhpZCwgSEFTSF9GSU5ELCAmZm91bmQpOworCWlmIChmb3VuZCkKKwl7CisJCS8qIFRoZSB3b3Jr ZXIgbXVzdCBub3QgaGF2ZSBleGl0ZWQuICAqLworCQlBc3NlcnQoZW50cnktPndpbmZvLT5pbl91 c2UpOworCQlyZXR1cm4gZW50cnktPndpbmZvOworCX0KKworCXJldHVybiBOVUxMOworfQorCisv KgorICogTWFrZXMgdGhlIHdvcmtlciBhdmFpbGFibGUgZm9yIHJldXNlLgorICoKKyAqIFRoaXMg cmVtb3ZlcyB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGVudHJ5IGZyb20gdGhlIGhhc2ggdGFi bGUgc28gdGhhdCBpdAorICogY2FuJ3QgYmUgdXNlZC4gSWYgdGhlcmUgYXJlIGVub3VnaCB3b3Jr ZXJzIGluIHRoZSBwb29sLCBpdCBzdG9wcyB0aGUgd29ya2VyCisgKiBhbmQgZnJlZXMgdGhlIGNv cnJlc3BvbmRpbmcgaW5mby4gT3RoZXJ3aXNlIGl0IGp1c3QgbWFya3MgdGhlIHdvcmtlciBhcwor ICogYXZhaWxhYmxlIGZvciByZXVzZS4KKyAqCisgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91 dCB0aGUgd29ya2VyIHBvb2wsIHNlZSBjb21tZW50cyBhdG9wIHRoaXMgZmlsZS4KKyAqLworc3Rh dGljIHZvaWQKK3BhX2ZyZWVfd29ya2VyKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykK K3sKKwlBc3NlcnQoIWFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKTsKKwlBc3NlcnQod2luZm8t PmluX3VzZSk7CisJQXNzZXJ0KHBhX2dldF94YWN0X3N0YXRlKHdpbmZvLT5zaGFyZWQpID09IFBB UkFMTEVMX1RSQU5TX0ZJTklTSEVEKTsKKworCWlmICghaGFzaF9zZWFyY2goUGFyYWxsZWxBcHBs eVR4bkhhc2gsICZ3aW5mby0+c2hhcmVkLT54aWQsIEhBU0hfUkVNT1ZFLCBOVUxMKSkKKwkJZWxv ZyhFUlJPUiwgImhhc2ggdGFibGUgY29ycnVwdGVkIik7CisKKwkvKgorCSAqIFN0b3AgdGhlIHdv cmtlciBpZiB0aGVyZSBhcmUgZW5vdWdoIHdvcmtlcnMgaW4gdGhlIHBvb2wuCisJICoKKwkgKiBY WFggQWRkaXRpb25hbGx5LCB3ZSBhbHNvIHN0b3AgdGhlIHdvcmtlciBpZiB0aGUgbGVhZGVyIGFw cGx5IHdvcmtlcgorCSAqIHNlcmlhbGl6ZSBwYXJ0IG9mIHRoZSB0cmFuc2FjdGlvbiBkYXRhIGR1 ZSB0byBhIHNlbmQgdGltZW91dC4gVGhpcyBpcworCSAqIGJlY2F1c2UgdGhlIG1lc3NhZ2UgY291 bGQgYmUgcGFydGlhbGx5IHdyaXR0ZW4gdG8gdGhlIHF1ZXVlIGFuZCB0aGVyZQorCSAqIGlzIG5v IHdheSB0byBjbGVhbiB0aGUgcXVldWUgb3RoZXIgdGhhbiByZXNlbmRpbmcgdGhlIG1lc3NhZ2Ug dW50aWwgaXQKKwkgKiBzdWNjZWVkcy4gSW5zdGVhZCBvZiB0cnlpbmcgdG8gc2VuZCB0aGUgZGF0 YSB3aGljaCBhbnl3YXkgd291bGQgaGF2ZQorCSAqIGJlZW4gc2VyaWFsaXplZCBhbmQgdGhlbiBs ZXR0aW5nIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZGVhbCB3aXRoCisJICogdGhlIHNwdXJp b3VzIG1lc3NhZ2UsIHdlIHN0b3AgdGhlIHdvcmtlci4KKwkgKi8KKwlpZiAod2luZm8tPnNlcmlh bGl6ZV9jaGFuZ2VzIHx8CisJCWxpc3RfbGVuZ3RoKFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sKSA+ CisJCShtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIC8gMikpCisJ eworCQlpbnQJCQlzbG90X25vOworCQl1aW50MTYJCWdlbmVyYXRpb247CisKKwkJU3BpbkxvY2tB Y3F1aXJlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CisJCWdlbmVyYXRpb24gPSB3aW5mby0+c2hh cmVkLT5sb2dpY2FscmVwX3dvcmtlcl9nZW5lcmF0aW9uOworCQlzbG90X25vID0gd2luZm8tPnNo YXJlZC0+bG9naWNhbHJlcF93b3JrZXJfc2xvdF9ubzsKKwkJU3BpbkxvY2tSZWxlYXNlKCZ3aW5m by0+c2hhcmVkLT5tdXRleCk7CisKKwkJbG9naWNhbHJlcF9wYV93b3JrZXJfc3RvcChzbG90X25v LCBnZW5lcmF0aW9uKTsKKworCQlwYV9mcmVlX3dvcmtlcl9pbmZvKHdpbmZvKTsKKworCQlyZXR1 cm47CisJfQorCisJd2luZm8tPmluX3VzZSA9IGZhbHNlOworCXdpbmZvLT5zZXJpYWxpemVfY2hh bmdlcyA9IGZhbHNlOworfQorCisvKgorICogRnJlZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy IGluZm9ybWF0aW9uIGFuZCB1bmxpbmsgdGhlIGZpbGVzIHdpdGgKKyAqIHNlcmlhbGl6ZWQgY2hh bmdlcyBpZiBhbnkuCisgKi8KK3N0YXRpYyB2b2lkCitwYV9mcmVlX3dvcmtlcl9pbmZvKFBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykKK3sKKwlBc3NlcnQod2luZm8pOworCisJaWYgKHdp bmZvLT5tcV9oYW5kbGUpCisJCXNobV9tcV9kZXRhY2god2luZm8tPm1xX2hhbmRsZSk7CisKKwlp ZiAod2luZm8tPmVycm9yX21xX2hhbmRsZSkKKwkJc2htX21xX2RldGFjaCh3aW5mby0+ZXJyb3Jf bXFfaGFuZGxlKTsKKworCS8qIFVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5n ZXMuICovCisJaWYgKHdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcykKKwkJc3RyZWFtX2NsZWFudXBf ZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgd2luZm8tPnNoYXJlZC0+eGlkKTsKKwor CWlmICh3aW5mby0+ZHNtX3NlZykKKwkJZHNtX2RldGFjaCh3aW5mby0+ZHNtX3NlZyk7CisKKwkv KiBSZW1vdmUgZnJvbSB0aGUgd29ya2VyIHBvb2wuICovCisJUGFyYWxsZWxBcHBseVdvcmtlclBv b2wgPSBsaXN0X2RlbGV0ZV9wdHIoUGFyYWxsZWxBcHBseVdvcmtlclBvb2wsIHdpbmZvKTsKKwor CXBmcmVlKHdpbmZvKTsKK30KKworLyoKKyAqIERldGFjaCB0aGUgZXJyb3IgcXVldWUgZm9yIGFs bCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLgorICovCit2b2lkCitwYV9kZXRhY2hfYWxsX2Vycm9y X21xKHZvaWQpCit7CisJTGlzdENlbGwgICAqbGM7CisKKwlmb3JlYWNoKGxjLCBQYXJhbGxlbEFw cGx5V29ya2VyUG9vbCkKKwl7CisJCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9IChQ YXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKSBsZmlyc3QobGMpOworCisJCXNobV9tcV9kZXRhY2go d2luZm8tPmVycm9yX21xX2hhbmRsZSk7CisJCXdpbmZvLT5lcnJvcl9tcV9oYW5kbGUgPSBOVUxM OworCX0KK30KKworLyoKKyAqIENoZWNrIGlmIHRoZXJlIGFyZSBhbnkgcGVuZGluZyBzcG9vbGVk IG1lc3NhZ2VzLgorICovCitzdGF0aWMgYm9vbAorcGFfaGFzX3Nwb29sZWRfbWVzc2FnZV9wZW5k aW5nKCkKK3sKKwlQYXJ0aWFsRmlsZVNldFN0YXRlIGZpbGVzZXRfc3RhdGU7CisKKwlmaWxlc2V0 X3N0YXRlID0gcGFfZ2V0X2ZpbGVzZXRfc3RhdGUoKTsKKworCXJldHVybiAoZmlsZXNldF9zdGF0 ZSAhPSBGU19FTVBUWSk7Cit9CisKKy8qCisgKiBSZXBsYXkgdGhlIHNwb29sZWQgbWVzc2FnZXMg b25jZSB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBoYXMgZmluaXNoZWQKKyAqIHNlcmlhbGl6aW5n IGNoYW5nZXMgdG8gdGhlIGZpbGUuCisgKgorICogUmV0dXJucyBmYWxzZSBpZiB0aGVyZSBhcmVu J3QgYW55IHBlbmRpbmcgc3Bvb2xlZCBtZXNzYWdlcywgdHJ1ZSBvdGhlcndpc2UuCisgKi8KK3N0 YXRpYyBib29sCitwYV9wcm9jZXNzX3Nwb29sZWRfbWVzc2FnZXNfaWZfcmVxdWlyZWQodm9pZCkK K3sKKwlQYXJ0aWFsRmlsZVNldFN0YXRlIGZpbGVzZXRfc3RhdGU7CisKKwlmaWxlc2V0X3N0YXRl ID0gcGFfZ2V0X2ZpbGVzZXRfc3RhdGUoKTsKKworCWlmIChmaWxlc2V0X3N0YXRlID09IEZTX0VN UFRZKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKgorCSAqIElmIHRoZSBsZWFkZXIgYXBwbHkgd29y a2VyIGlzIGJ1c3kgc2VyaWFsaXppbmcgdGhlIHBhcnRpYWwgY2hhbmdlcyB0aGVuCisJICogYWNx dWlyZSB0aGUgc3RyZWFtIGxvY2sgbm93IGFuZCB3YWl0IGZvciB0aGUgbGVhZGVyIHdvcmtlciB0 byBmaW5pc2gKKwkgKiBzZXJpYWxpemluZyB0aGUgY2hhbmdlcy4gT3RoZXJ3aXNlLCB0aGUgcGFy YWxsZWwgYXBwbHkgd29ya2VyIHdvbid0IGdldAorCSAqIGEgY2hhbmNlIHRvIHJlY2VpdmUgYSBT VFJFQU1fU1RPUCAoYW5kIGFjcXVpcmUgdGhlIHN0cmVhbSBsb2NrKSB1bnRpbAorCSAqIHRoZSBs ZWFkZXIgaGFkIHNlcmlhbGl6ZWQgYWxsIGNoYW5nZXMgd2hpY2ggY2FuIGxlYWQgdG8gdW5kZXRl Y3RlZAorCSAqIGRlYWRsb2NrLgorCSAqCisJICogTm90ZSB0aGF0IHRoZSBmaWxlc2V0IHN0YXRl IGNhbiBiZSBGU19TRVJJQUxJWkVfRE9ORSBvbmNlIHRoZSBsZWFkZXIKKwkgKiB3b3JrZXIgaGFz IGZpbmlzaGVkIHNlcmlhbGl6aW5nIHRoZSBjaGFuZ2VzLgorCSAqLworCWlmIChmaWxlc2V0X3N0 YXRlID09IEZTX1NFUklBTElaRV9JTl9QUk9HUkVTUykKKwl7CisJCXBhX2xvY2tfc3RyZWFtKE15 UGFyYWxsZWxTaGFyZWQtPnhpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJcGFfdW5sb2NrX3N0cmVh bShNeVBhcmFsbGVsU2hhcmVkLT54aWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkJZmlsZXNldF9z dGF0ZSA9IHBhX2dldF9maWxlc2V0X3N0YXRlKCk7CisJfQorCisJLyoKKwkgKiBXZSBjYW5ub3Qg cmVhZCB0aGUgZmlsZSBpbW1lZGlhdGVseSBhZnRlciB0aGUgbGVhZGVyIGhhcyBzZXJpYWxpemVk IGFsbAorCSAqIGNoYW5nZXMgdG8gdGhlIGZpbGUgYmVjYXVzZSB0aGVyZSBtYXkgc3RpbGwgYmUg bWVzc2FnZXMgaW4gdGhlIG1lbW9yeQorCSAqIHF1ZXVlLiBXZSB3aWxsIGFwcGx5IGFsbCBzcG9v bGVkIG1lc3NhZ2VzIHRoZSBuZXh0IHRpbWUgd2UgY2FsbCB0aGlzCisJICogZnVuY3Rpb24gYW5k IHRoYXQgd2lsbCBlbnN1cmUgdGhlcmUgYXJlIG5vIG1lc3NhZ2VzIGxlZnQgaW4gdGhlIG1lbW9y eQorCSAqIHF1ZXVlLgorCSAqLworCWlmIChmaWxlc2V0X3N0YXRlID09IEZTX1NFUklBTElaRV9E T05FKQorCXsKKwkJcGFfc2V0X2ZpbGVzZXRfc3RhdGUoTXlQYXJhbGxlbFNoYXJlZCwgRlNfUkVB RFkpOworCX0KKwllbHNlIGlmIChmaWxlc2V0X3N0YXRlID09IEZTX1JFQURZKQorCXsKKwkJYXBw bHlfc3Bvb2xlZF9tZXNzYWdlcygmTXlQYXJhbGxlbFNoYXJlZC0+ZmlsZXNldCwKKwkJCQkJCQkg ICBNeVBhcmFsbGVsU2hhcmVkLT54aWQsCisJCQkJCQkJICAgSW52YWxpZFhMb2dSZWNQdHIpOwor CQlwYV9zZXRfZmlsZXNldF9zdGF0ZShNeVBhcmFsbGVsU2hhcmVkLCBGU19FTVBUWSk7CisJfQor CisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBJbnRlcnJ1cHQgaGFuZGxlciBmb3IgbWFpbiBs b29wIG9mIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqLworc3RhdGljIHZvaWQKK1Byb2Nlc3NQ YXJhbGxlbEFwcGx5SW50ZXJydXB0cyh2b2lkKQoreworCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7 CisKKwlpZiAoU2h1dGRvd25SZXF1ZXN0UGVuZGluZykKKwl7CisJCWVyZXBvcnQoTE9HLAorCQkJ CShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciBz dWJzY3JpcHRpb24gXCIlc1wiIGhhcyBmaW5pc2hlZCIsCisJCQkJCQlNeVN1YnNjcmlwdGlvbi0+ bmFtZSkpKTsKKworCQlwcm9jX2V4aXQoMCk7CisJfQorCisJaWYgKENvbmZpZ1JlbG9hZFBlbmRp bmcpCisJeworCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CisJCVByb2Nlc3NDb25maWdG aWxlKFBHQ19TSUdIVVApOworCX0KK30KKworLyogUGFyYWxsZWwgYXBwbHkgd29ya2VyIG1haW4g bG9vcC4gKi8KK3N0YXRpYyB2b2lkCitMb2dpY2FsUGFyYWxsZWxBcHBseUxvb3Aoc2htX21xX2hh bmRsZSAqbXFoKQoreworCXNobV9tcV9yZXN1bHQgc2htcV9yZXM7CisJRXJyb3JDb250ZXh0Q2Fs bGJhY2sgZXJyY2FsbGJhY2s7CisJTWVtb3J5Q29udGV4dCBvbGRjeHQgPSBDdXJyZW50TWVtb3J5 Q29udGV4dDsKKworCS8qCisJICogSW5pdCB0aGUgQXBwbHlNZXNzYWdlQ29udGV4dCB3aGljaCB3 ZSBjbGVhbiB1cCBhZnRlciBlYWNoIHJlcGxpY2F0aW9uCisJICogcHJvdG9jb2wgbWVzc2FnZS4K KwkgKi8KKwlBcHBseU1lc3NhZ2VDb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKEFwcGx5 Q29udGV4dCwKKwkJCQkJCQkJCQkJCSJBcHBseU1lc3NhZ2VDb250ZXh0IiwKKwkJCQkJCQkJCQkJ CUFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCisJLyoKKwkgKiBQdXNoIGFwcGx5IGVycm9yIGNv bnRleHQgY2FsbGJhY2suIEZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aGlsZSBhcHBseWluZworCSAq IGEgY2hhbmdlLgorCSAqLworCWVycmNhbGxiYWNrLmNhbGxiYWNrID0gYXBwbHlfZXJyb3JfY2Fs bGJhY2s7CisJZXJyY2FsbGJhY2sucHJldmlvdXMgPSBlcnJvcl9jb250ZXh0X3N0YWNrOworCWVy cm9yX2NvbnRleHRfc3RhY2sgPSAmZXJyY2FsbGJhY2s7CisKKwlmb3IgKDs7KQorCXsKKwkJdm9p ZAkgICAqZGF0YTsKKwkJU2l6ZQkJbGVuOworCisJCVByb2Nlc3NQYXJhbGxlbEFwcGx5SW50ZXJy dXB0cygpOworCisJCS8qIEVuc3VyZSB3ZSBhcmUgcmVhZGluZyB0aGUgZGF0YSBpbnRvIG91ciBt ZW1vcnkgY29udGV4dC4gKi8KKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5TWVzc2FnZUNv bnRleHQpOworCisJCXNobXFfcmVzID0gc2htX21xX3JlY2VpdmUobXFoLCAmbGVuLCAmZGF0YSwg dHJ1ZSk7CisKKwkJaWYgKHNobXFfcmVzID09IFNITV9NUV9TVUNDRVNTKQorCQl7CisJCQlTdHJp bmdJbmZvRGF0YSBzOworCQkJaW50CQkJYzsKKworCQkJaWYgKGxlbiA9PSAwKQorCQkJCWVsb2co RVJST1IsICJpbnZhbGlkIG1lc3NhZ2UgbGVuZ3RoIik7CisKKwkJCXMuY3Vyc29yID0gMDsKKwkJ CXMubWF4bGVuID0gLTE7CisJCQlzLmRhdGEgPSAoY2hhciAqKSBkYXRhOworCQkJcy5sZW4gPSBs ZW47CisKKwkJCS8qCisJCQkgKiBUaGUgZmlyc3QgYnl0ZSBvZiBtZXNzYWdlcyBzZW50IGZyb20g bGVhZGVyIGFwcGx5IHdvcmtlciB0bworCQkJICogcGFyYWxsZWwgYXBwbHkgd29ya2VycyBjYW4g b25seSBiZSAndycuCisJCQkgKi8KKwkJCWMgPSBwcV9nZXRtc2dieXRlKCZzKTsKKwkJCWlmIChj ICE9ICd3JykKKwkJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBtZXNzYWdlIFwiJWNcIiIsIGMp OworCisJCQkvKgorCQkJICogSWdub3JlIHN0YXRpc3RpY3MgZmllbGRzIHRoYXQgaGF2ZSBiZWVu IHVwZGF0ZWQgYnkgdGhlIGxlYWRlcgorCQkJICogYXBwbHkgd29ya2VyLgorCQkJICoKKwkJCSAq IFhYWCBXZSBjYW4gYXZvaWQgc2VuZGluZyB0aGUgc3RhdGlzdGljcyBmaWVsZHMgZnJvbSB0aGUg bGVhZGVyCisJCQkgKiBhcHBseSB3b3JrZXIgYnV0IGZvciB0aGF0LCBpdCBuZWVkcyB0byByZWJ1 aWxkIHRoZSBlbnRpcmUKKwkJCSAqIG1lc3NhZ2UgYnkgcmVtb3ZpbmcgdGhlc2UgZmllbGRzIHdo aWNoIGNvdWxkIGJlIG1vcmUgd29yayB0aGFuCisJCQkgKiBzaW1wbHkgaWdub3JpbmcgdGhlc2Ug ZmllbGRzIGluIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJCQkgKi8KKwkJCXMuY3Vyc29y ICs9IFNJWkVfU1RBVFNfTUVTU0FHRTsKKworCQkJYXBwbHlfZGlzcGF0Y2goJnMpOworCQl9CisJ CWVsc2UgaWYgKHNobXFfcmVzID09IFNITV9NUV9XT1VMRF9CTE9DSykKKwkJeworCQkJLyogUmVw bGF5IHRoZSBjaGFuZ2VzIGZyb20gdGhlIGZpbGUsIGlmIGFueS4gKi8KKwkJCWlmICghcGFfcHJv Y2Vzc19zcG9vbGVkX21lc3NhZ2VzX2lmX3JlcXVpcmVkKCkpCisJCQl7CisJCQkJaW50CQkJcmM7 CisKKwkJCQkvKiBXYWl0IGZvciBtb3JlIHdvcmsuICovCisJCQkJcmMgPSBXYWl0TGF0Y2goTXlM YXRjaCwKKwkJCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9Q TV9ERUFUSCwKKwkJCQkJCQkgICAxMDAwTCwKKwkJCQkJCQkgICBXQUlUX0VWRU5UX0xPR0lDQUxf UEFSQUxMRUxfQVBQTFlfTUFJTik7CisKKwkJCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCQkJ CVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQl9CisJCX0KKwkJZWxzZQorCQl7CisJCQlBc3NlcnQo c2htcV9yZXMgPT0gU0hNX01RX0RFVEFDSEVEKTsKKworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ KGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJ CSBlcnJtc2coImxvc3QgY29ubmVjdGlvbiB0byB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBhcHBs eSB3b3JrZXIiKSkpOworCQl9CisKKwkJTWVtb3J5Q29udGV4dFJlc2V0KEFwcGx5TWVzc2FnZUNv bnRleHQpOworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKKwl9CisKKwkvKiBQb3Ag dGhlIGVycm9yIGNvbnRleHQgc3RhY2suICovCisJZXJyb3JfY29udGV4dF9zdGFjayA9IGVycmNh bGxiYWNrLnByZXZpb3VzOworCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7Cit9CisK Ky8qCisgKiBNYWtlIHN1cmUgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgdHJpZXMgdG8gcmVhZCBm cm9tIG91ciBlcnJvciBxdWV1ZSBvbmUgbW9yZQorICogdGltZS4gVGhpcyBndWFyZHMgYWdhaW5z dCB0aGUgY2FzZSB3aGVyZSB3ZSBleGl0IHVuY2xlYW5seSB3aXRob3V0IHNlbmRpbmcKKyAqIGFu IEVycm9yUmVzcG9uc2UsIGZvciBleGFtcGxlIGJlY2F1c2Ugc29tZSBjb2RlIGNhbGxzIHByb2Nf ZXhpdCBkaXJlY3RseS4KKyAqLworc3RhdGljIHZvaWQKK3BhX3NodXRkb3duKGludCBjb2RlLCBE YXR1bSBhcmcpCit7CisJU2VuZFByb2NTaWduYWwoTXlMb2dpY2FsUmVwV29ya2VyLT5hcHBseV9s ZWFkZXJfcGlkLAorCQkJCSAgIFBST0NTSUdfUEFSQUxMRUxfQVBQTFlfTUVTU0FHRSwKKwkJCQkg ICBJbnZhbGlkQmFja2VuZElkKTsKKworCWRzbV9kZXRhY2goKGRzbV9zZWdtZW50ICopIERhdHVt R2V0UG9pbnRlcihhcmcpKTsKK30KKworLyoKKyAqIFBhcmFsbGVsIGFwcGx5IHdvcmtlciBlbnRy eSBwb2ludC4KKyAqLwordm9pZAorUGFyYWxsZWxBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9h cmcpCit7CisJUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqc2hhcmVkOworCWRzbV9oYW5kbGUJ aGFuZGxlOworCWRzbV9zZWdtZW50ICpzZWc7CisJc2htX3RvYyAgICAqdG9jOworCXNobV9tcQkg ICAqbXE7CisJc2htX21xX2hhbmRsZSAqbXFoOworCXNobV9tcV9oYW5kbGUgKmVycm9yX21xaDsK KwlSZXBPcmlnaW5JZCBvcmlnaW5pZDsKKwlpbnQJCQl3b3JrZXJfc2xvdCA9IERhdHVtR2V0SW50 MzIobWFpbl9hcmcpOworCWNoYXIJCW9yaWdpbm5hbWVbTkFNRURBVEFMRU5dOworCisJLyogU2V0 dXAgc2lnbmFsIGhhbmRsaW5nLiAqLworCXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxlckZv ckNvbmZpZ1JlbG9hZCk7CisJcHFzaWduYWwoU0lHSU5ULCBTaWduYWxIYW5kbGVyRm9yU2h1dGRv d25SZXF1ZXN0KTsKKwlwcXNpZ25hbChTSUdURVJNLCBkaWUpOworCUJhY2tncm91bmRXb3JrZXJV bmJsb2NrU2lnbmFscygpOworCisJLyoKKwkgKiBBdHRhY2ggdG8gdGhlIGR5bmFtaWMgc2hhcmVk IG1lbW9yeSBzZWdtZW50IGZvciB0aGUgcGFyYWxsZWwgYXBwbHksIGFuZAorCSAqIGZpbmQgaXRz IHRhYmxlIG9mIGNvbnRlbnRzLgorCSAqCisJICogTGlrZSBwYXJhbGxlbCBxdWVyeSwgd2UgZG9u J3QgbmVlZCByZXNvdXJjZSBvd25lciBieSB0aGlzIHRpbWUuIFNlZQorCSAqIFBhcmFsbGVsV29y a2VyTWFpbi4KKwkgKi8KKwltZW1jcHkoJmhhbmRsZSwgTXlCZ3dvcmtlckVudHJ5LT5iZ3dfZXh0 cmEsIHNpemVvZihkc21faGFuZGxlKSk7CisJc2VnID0gZHNtX2F0dGFjaChoYW5kbGUpOworCWlm ICghc2VnKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05P VF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coInVuYWJsZSB0byBtYXAgZHlu YW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQiKSkpOworCisJdG9jID0gc2htX3RvY19hdHRhY2go UEdfTE9HSUNBTF9BUFBMWV9TSE1fTUFHSUMsIGRzbV9zZWdtZW50X2FkZHJlc3Moc2VnKSk7CisJ aWYgKCF0b2MpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1Rf Tk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygiYmFkIG1hZ2ljIG51bWJl ciBpbiBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCIpKSk7CisKKwliZWZvcmVfc2htZW1f ZXhpdChwYV9zaHV0ZG93biwgUG9pbnRlckdldERhdHVtKHNlZykpOworCisJLyogTG9vayB1cCB0 aGUgc2hhcmVkIGluZm9ybWF0aW9uLiAqLworCXNoYXJlZCA9IHNobV90b2NfbG9va3VwKHRvYywg UEFSQUxMRUxfQVBQTFlfS0VZX1NIQVJFRCwgZmFsc2UpOworCU15UGFyYWxsZWxTaGFyZWQgPSBz aGFyZWQ7CisKKwkvKgorCSAqIEF0dGFjaCB0byB0aGUgbWVzc2FnZSBxdWV1ZS4KKwkgKi8KKwlt cSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX01RLCBmYWxzZSk7CisJ c2htX21xX3NldF9yZWNlaXZlcihtcSwgTXlQcm9jKTsKKwltcWggPSBzaG1fbXFfYXR0YWNoKG1x LCBzZWcsIE5VTEwpOworCisJLyoKKwkgKiBQcmltYXJ5IGluaXRpYWxpemF0aW9uIGlzIGNvbXBs ZXRlLiBOb3csIHdlIGNhbiBhdHRhY2ggdG8gb3VyIHNsb3QuCisJICogVGhpcyBpcyB0byBlbnN1 cmUgdGhhdCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBkb2VzIG5vdCB3cml0ZSBkYXRhIHRvCisJ ICogdGhlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHF1ZXVlLgorCSAqLworCWxvZ2ljYWxyZXBfd29y a2VyX2F0dGFjaCh3b3JrZXJfc2xvdCk7CisKKwlTcGluTG9ja0FjcXVpcmUoJk15UGFyYWxsZWxT aGFyZWQtPm11dGV4KTsKKwlNeVBhcmFsbGVsU2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9nZW5l cmF0aW9uID0gTXlMb2dpY2FsUmVwV29ya2VyLT5nZW5lcmF0aW9uOworCU15UGFyYWxsZWxTaGFy ZWQtPmxvZ2ljYWxyZXBfd29ya2VyX3Nsb3Rfbm8gPSB3b3JrZXJfc2xvdDsKKwlTcGluTG9ja1Jl bGVhc2UoJk15UGFyYWxsZWxTaGFyZWQtPm11dGV4KTsKKworCS8qCisJICogQXR0YWNoIHRvIHRo ZSBlcnJvciBxdWV1ZS4KKwkgKi8KKwltcSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxf QVBQTFlfS0VZX0VSUk9SX1FVRVVFLCBmYWxzZSk7CisJc2htX21xX3NldF9zZW5kZXIobXEsIE15 UHJvYyk7CisJZXJyb3JfbXFoID0gc2htX21xX2F0dGFjaChtcSwgc2VnLCBOVUxMKTsKKworCXBx X3JlZGlyZWN0X3RvX3NobV9tcShzZWcsIGVycm9yX21xaCk7CisJcHFfc2V0X3BhcmFsbGVsX2xl YWRlcihNeUxvZ2ljYWxSZXBXb3JrZXItPmFwcGx5X2xlYWRlcl9waWQsCisJCQkJCQkgICBJbnZh bGlkQmFja2VuZElkKTsKKworCU15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9zZW5kX3RpbWUgPSBN eUxvZ2ljYWxSZXBXb3JrZXItPmxhc3RfcmVjdl90aW1lID0KKwkJTXlMb2dpY2FsUmVwV29ya2Vy LT5yZXBseV90aW1lID0gMDsKKworCUluaXRpYWxpemVBcHBseVdvcmtlcigpOworCisJLyogU2V0 dXAgcmVwbGljYXRpb24gb3JpZ2luIHRyYWNraW5nLiAqLworCVN0YXJ0VHJhbnNhY3Rpb25Db21t YW5kKCk7CisJUmVwbGljYXRpb25PcmlnaW5OYW1lRm9yTG9naWNhbFJlcChNeVN1YnNjcmlwdGlv bi0+b2lkLCBJbnZhbGlkT2lkLAorCQkJCQkJCQkJICAgb3JpZ2lubmFtZSwgc2l6ZW9mKG9yaWdp bm5hbWUpKTsKKwlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fYnlfbmFtZShvcmlnaW5uYW1lLCBmYWxz ZSk7CisKKwkvKgorCSAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZG9lc24ndCBuZWVkIHRv IG1vbm9wb2xpemUgdGhpcyByZXBsaWNhdGlvbgorCSAqIG9yaWdpbiB3aGljaCB3YXMgYWxyZWFk eSBhY3F1aXJlZCBieSBpdHMgbGVhZGVyIHByb2Nlc3MuCisJICovCisJcmVwbG9yaWdpbl9zZXNz aW9uX3NldHVwKG9yaWdpbmlkLCBNeUxvZ2ljYWxSZXBXb3JrZXItPmFwcGx5X2xlYWRlcl9waWQp OworCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW5pZDsKKwlDb21taXRUcmFuc2Fj dGlvbkNvbW1hbmQoKTsKKworCS8qCisJICogU2V0dXAgY2FsbGJhY2sgZm9yIHN5c2NhY2hlIHNv IHRoYXQgd2Uga25vdyB3aGVuIHNvbWV0aGluZyBjaGFuZ2VzIGluCisJICogdGhlIHN1YnNjcmlw dGlvbiByZWxhdGlvbiBzdGF0ZS4KKwkgKi8KKwlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFj ayhTVUJTQ1JJUFRJT05SRUxNQVAsCisJCQkJCQkJCSAgaW52YWxpZGF0ZV9zeW5jaW5nX3RhYmxl X3N0YXRlcywKKwkJCQkJCQkJICAoRGF0dW0pIDApOworCisJc2V0X2FwcGx5X2Vycm9yX2NvbnRl eHRfb3JpZ2luKG9yaWdpbm5hbWUpOworCisJTG9naWNhbFBhcmFsbGVsQXBwbHlMb29wKG1xaCk7 CisKKwkvKgorCSAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgbXVzdCBub3QgZ2V0IGhlcmUg YmVjYXVzZSB0aGUgcGFyYWxsZWwgYXBwbHkKKwkgKiB3b3JrZXIgd2lsbCBvbmx5IHN0b3Agd2hl biBpdCByZWNlaXZlcyBhIFNJR1RFUk0gb3IgU0lHSU5UIGZyb20gdGhlCisJICogbGVhZGVyLCBv ciB3aGVuIHRoZXJlIGlzIGFuIGVycm9yLiBOb25lIG9mIHRoZXNlIGNhc2VzIHdpbGwgYWxsb3cg dGhlCisJICogY29kZSB0byByZWFjaCBoZXJlLgorCSAqLworCUFzc2VydChmYWxzZSk7Cit9CisK Ky8qCisgKiBIYW5kbGUgcmVjZWlwdCBvZiBhbiBpbnRlcnJ1cHQgaW5kaWNhdGluZyBhIHBhcmFs bGVsIGFwcGx5IHdvcmtlciBtZXNzYWdlLgorICoKKyAqIE5vdGU6IHRoaXMgaXMgY2FsbGVkIHdp dGhpbiBhIHNpZ25hbCBoYW5kbGVyISBBbGwgd2UgY2FuIGRvIGlzIHNldCBhIGZsYWcKKyAqIHRo YXQgd2lsbCBjYXVzZSB0aGUgbmV4dCBDSEVDS19GT1JfSU5URVJSVVBUUygpIHRvIGludm9rZQor ICogSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VzKCkuCisgKi8KK3ZvaWQKK0hhbmRsZVBhcmFs bGVsQXBwbHlNZXNzYWdlSW50ZXJydXB0KHZvaWQpCit7CisJSW50ZXJydXB0UGVuZGluZyA9IHRy dWU7CisJUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nID0gdHJ1ZTsKKwlTZXRMYXRjaChNeUxh dGNoKTsKK30KKworLyoKKyAqIEhhbmRsZSBhIHNpbmdsZSBwcm90b2NvbCBtZXNzYWdlIHJlY2Vp dmVkIGZyb20gYSBzaW5nbGUgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlci4KKyAqLworc3RhdGlj IHZvaWQKK0hhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlKFN0cmluZ0luZm8gbXNnKQoreworCWNo YXIJCW1zZ3R5cGU7CisKKwltc2d0eXBlID0gcHFfZ2V0bXNnYnl0ZShtc2cpOworCisJc3dpdGNo IChtc2d0eXBlKQorCXsKKwkJY2FzZSAnRSc6CQkJCS8qIEVycm9yUmVzcG9uc2UgKi8KKwkJCXsK KwkJCQlFcnJvckRhdGEJZWRhdGE7CisKKwkJCQkvKiBQYXJzZSBFcnJvclJlc3BvbnNlLiAqLwor CQkJCXBxX3BhcnNlX2Vycm9ybm90aWNlKG1zZywgJmVkYXRhKTsKKworCQkJCS8qCisJCQkJICog SWYgZGVzaXJlZCwgYWRkIGEgY29udGV4dCBsaW5lIHRvIHNob3cgdGhhdCB0aGlzIGlzIGEKKwkJ CQkgKiBtZXNzYWdlIHByb3BhZ2F0ZWQgZnJvbSBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gT3Ro ZXJ3aXNlLAorCQkJCSAqIGl0IGNhbiBzb21ldGltZXMgYmUgY29uZnVzaW5nIHRvIHVuZGVyc3Rh bmQgd2hhdCBhY3R1YWxseQorCQkJCSAqIGhhcHBlbmVkLgorCQkJCSAqLworCQkJCWlmIChlZGF0 YS5jb250ZXh0KQorCQkJCQllZGF0YS5jb250ZXh0ID0gcHNwcmludGYoIiVzXG4lcyIsIGVkYXRh LmNvbnRleHQsCisJCQkJCQkJCQkJCSBfKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFw cGx5IHdvcmtlciIpKTsKKwkJCQllbHNlCisJCQkJCWVkYXRhLmNvbnRleHQgPSBwc3RyZHVwKF8o ImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIikpOworCisJCQkJLyoK KwkJCQkgKiBDb250ZXh0IGJleW9uZCB0aGF0IHNob3VsZCB1c2UgdGhlIGVycm9yIGNvbnRleHQg Y2FsbGJhY2tzCisJCQkJICogdGhhdCB3ZXJlIGluIGVmZmVjdCBpbiBMb2dpY2FsUmVwQXBwbHlM b29wKCkuCisJCQkJICovCisJCQkJZXJyb3JfY29udGV4dF9zdGFjayA9IGFwcGx5X2Vycm9yX2Nv bnRleHRfc3RhY2s7CisKKwkJCQkvKgorCQkJCSAqIFRoZSBhY3R1YWwgZXJyb3IgbXVzdCBoYXZl IGJlZW4gcmVwb3J0ZWQgYnkgdGhlIHBhcmFsbGVsCisJCQkJICogYXBwbHkgd29ya2VyLgorCQkJ CSAqLworCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9O T1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJCSBlcnJtc2coImxvZ2ljYWwgcmVwbGlj YXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGV4aXRlZCBkdWUgdG8gZXJyb3IiKSwKKwkJCQkJ CSBlcnJjb250ZXh0KCIlcyIsIGVkYXRhLmNvbnRleHQpKSk7CisJCQl9CisKKwkJCS8qCisJCQkg KiBEb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nIGFib3V0IE5vdGljZVJlc3BvbnNlIGFuZAorCQkJ ICogTm90aWZ5UmVzcG9uc2UgYXMgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGRvZXNu J3QgbmVlZAorCQkJICogdG8gc2VuZCBtZXNzYWdlcyB0byB0aGUgY2xpZW50LgorCQkJICovCisJ CWNhc2UgJ04nOgorCQljYXNlICdBJzoKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQllbG9n KEVSUk9SLCAidW5yZWNvZ25pemVkIG1lc3NhZ2UgdHlwZSByZWNlaXZlZCBmcm9tIGxvZ2ljYWwg cmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyOiAlYyAobWVzc2FnZSBsZW5ndGggJWQg Ynl0ZXMpIiwKKwkJCQkgbXNndHlwZSwgbXNnLT5sZW4pOworCX0KK30KKworLyoKKyAqIEhhbmRs ZSBhbnkgcXVldWVkIHByb3RvY29sIG1lc3NhZ2VzIHJlY2VpdmVkIGZyb20gcGFyYWxsZWwgYXBw bHkgd29ya2Vycy4KKyAqLwordm9pZAorSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VzKHZvaWQp Cit7CisJTGlzdENlbGwgICAqbGM7CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OworCisJc3Rh dGljIE1lbW9yeUNvbnRleHQgaHBhbV9jb250ZXh0ID0gTlVMTDsKKworCS8qCisJICogVGhpcyBp cyBpbnZva2VkIGZyb20gUHJvY2Vzc0ludGVycnVwdHMoKSwgYW5kIHNpbmNlIHNvbWUgb2YgdGhl CisJICogZnVuY3Rpb25zIGl0IGNhbGxzIGNvbnRhaW4gQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSwg dGhlcmUgaXMgYSBwb3RlbnRpYWwKKwkgKiBmb3IgcmVjdXJzaXZlIGNhbGxzIGlmIG1vcmUgc2ln bmFscyBhcmUgcmVjZWl2ZWQgd2hpbGUgdGhpcyBydW5zLiBJdCdzCisJICogdW5jbGVhciB0aGF0 IHJlY3Vyc2l2ZSBlbnRyeSB3b3VsZCBiZSBzYWZlLCBhbmQgaXQgZG9lc24ndCBzZWVtIHVzZWZ1 bAorCSAqIGV2ZW4gaWYgaXQgaXMgc2FmZSwgc28gbGV0J3MgYmxvY2sgaW50ZXJydXB0cyB1bnRp bCBkb25lLgorCSAqLworCUhPTERfSU5URVJSVVBUUygpOworCisJLyoKKwkgKiBNb3Jlb3Zlciwg Q3VycmVudE1lbW9yeUNvbnRleHQgbWlnaHQgYmUgcG9pbnRpbmcgYWxtb3N0IGFueXdoZXJlLiBX ZQorCSAqIGRvbid0IHdhbnQgdG8gcmlzayBsZWFraW5nIGRhdGEgaW50byBsb25nLWxpdmVkIGNv bnRleHRzLCBzbyBsZXQncyBkbworCSAqIG91ciB3b3JrIGhlcmUgaW4gYSBwcml2YXRlIGNvbnRl eHQgdGhhdCB3ZSBjYW4gcmVzZXQgb24gZWFjaCB1c2UuCisJICovCisJaWYgKCFocGFtX2NvbnRl eHQpCQkJLyogZmlyc3QgdGltZSB0aHJvdWdoPyAqLworCQlocGFtX2NvbnRleHQgPSBBbGxvY1Nl dENvbnRleHRDcmVhdGUoVG9wTWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJCQkJICJIYW5kbGVQYXJh bGxlbEFwcGx5TWVzc2FnZXMiLAorCQkJCQkJCQkJCQkgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7 CisJZWxzZQorCQlNZW1vcnlDb250ZXh0UmVzZXQoaHBhbV9jb250ZXh0KTsKKworCW9sZGNvbnRl eHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oaHBhbV9jb250ZXh0KTsKKworCVBhcmFsbGVsQXBw bHlNZXNzYWdlUGVuZGluZyA9IGZhbHNlOworCisJZm9yZWFjaChsYywgUGFyYWxsZWxBcHBseVdv cmtlclBvb2wpCisJeworCQlzaG1fbXFfcmVzdWx0IHJlczsKKwkJU2l6ZQkJbmJ5dGVzOworCQl2 b2lkCSAgICpkYXRhOworCQlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8gPSAoUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKikgbGZpcnN0KGxjKTsKKworCQkvKgorCQkgKiBUaGUgbGVhZGVy IHdpbGwgZGV0YWNoIGZyb20gdGhlIGVycm9yIHF1ZXVlIGFuZCBzZXQgaXQgdG8gTlVMTAorCQkg KiBiZWZvcmUgcHJlcGFyaW5nIHRvIHN0b3AgYWxsIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIHNv IHdlIGRvbid0CisJCSAqIG5lZWQgdG8gaGFuZGxlIGVycm9yIG1lc3NhZ2VzIGFueW1vcmUuIFNl ZQorCQkgKiBsb2dpY2FscmVwX3dvcmtlcl9kZXRhY2guCisJCSAqLworCQlpZiAoIXdpbmZvLT5l cnJvcl9tcV9oYW5kbGUpCisJCQljb250aW51ZTsKKworCQlyZXMgPSBzaG1fbXFfcmVjZWl2ZSh3 aW5mby0+ZXJyb3JfbXFfaGFuZGxlLCAmbmJ5dGVzLCAmZGF0YSwgdHJ1ZSk7CisKKwkJaWYgKHJl cyA9PSBTSE1fTVFfV09VTERfQkxPQ0spCisJCQljb250aW51ZTsKKwkJZWxzZSBpZiAocmVzID09 IFNITV9NUV9TVUNDRVNTKQorCQl7CisJCQlTdHJpbmdJbmZvRGF0YSBtc2c7CisKKwkJCWluaXRT dHJpbmdJbmZvKCZtc2cpOworCQkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbygmbXNnLCBkYXRhLCBu Ynl0ZXMpOworCQkJSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2UoJm1zZyk7CisJCQlwZnJlZSht c2cuZGF0YSk7CisJCX0KKwkJZWxzZQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUo RVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJtc2co Imxvc3QgY29ubmVjdGlvbiB0byB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBs eSB3b3JrZXIiKSkpOworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsK KworCS8qIE1pZ2h0IGFzIHdlbGwgY2xlYXIgdGhlIGNvbnRleHQgb24gb3VyIHdheSBvdXQgKi8K KwlNZW1vcnlDb250ZXh0UmVzZXQoaHBhbV9jb250ZXh0KTsKKworCVJFU1VNRV9JTlRFUlJVUFRT KCk7Cit9CisKKy8qCisgKiBTZW5kIHRoZSBkYXRhIHRvIHRoZSBzcGVjaWZpZWQgcGFyYWxsZWwg YXBwbHkgd29ya2VyIHZpYSBzaGFyZWQtbWVtb3J5CisgKiBxdWV1ZS4KKyAqCisgKiBSZXR1cm5z IGZhbHNlIGlmIHRoZSBhdHRlbXB0IHRvIHNlbmQgZGF0YSB2aWEgc2hhcmVkIG1lbW9yeSB0aW1l cyBvdXQsIHRydWUKKyAqIG90aGVyd2lzZS4KKyAqLworYm9vbAorcGFfc2VuZF9kYXRhKFBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU2l6ZSBuYnl0ZXMsIGNvbnN0IHZvaWQgKmRhdGEp Cit7CisJaW50CQkJcmM7CisJc2htX21xX3Jlc3VsdCByZXN1bHQ7CisJVGltZXN0YW1wVHogc3Rh cnRUaW1lID0gMDsKKworCUFzc2VydCghSXNUcmFuc2FjdGlvblN0YXRlKCkpOworCUFzc2VydCgh d2luZm8tPnNlcmlhbGl6ZV9jaGFuZ2VzKTsKKworLyoKKyAqIFRoaXMgdGltZW91dCBpcyBhIGJp dCBhcmJpdHJhcnkgYnV0IHRlc3RpbmcgcmV2ZWFsZWQgdGhhdCBpdCBpcyBzdWZmaWNpZW50Cisg KiB0byBzZW5kIHRoZSBtZXNzYWdlIHVubGVzcyB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlz IHdhaXRpbmcgb24gc29tZQorICogbG9jayBvciB0aGVyZSBpcyBhIHNlcmlvdXMgcmVzb3VyY2Ug Y3J1bmNoLiBTZWUgdGhlIGNvbW1lbnRzIGF0b3AgdGhpcyBmaWxlCisgKiB0byBrbm93IHdoeSB3 ZSBhcmUgdXNpbmcgYSBub24tYmxvY2tpbmcgd2F5IHRvIHNlbmQgdGhlIG1lc3NhZ2UuCisgKi8K KyNkZWZpbmUgU0hNX1NFTkRfUkVUUllfSU5URVJWQUxfTVMgMTAwMAorI2RlZmluZSBTSE1fU0VO RF9USU1FT1VUX01TCQkoMTAwMDAgLSBTSE1fU0VORF9SRVRSWV9JTlRFUlZBTF9NUykKKworCWZv ciAoOzspCisJeworCQlyZXN1bHQgPSBzaG1fbXFfc2VuZCh3aW5mby0+bXFfaGFuZGxlLCBuYnl0 ZXMsIGRhdGEsIHRydWUsIHRydWUpOworCisJCWlmIChyZXN1bHQgPT0gU0hNX01RX1NVQ0NFU1Mp CisJCQlyZXR1cm4gdHJ1ZTsKKwkJZWxzZSBpZiAocmVzdWx0ID09IFNITV9NUV9ERVRBQ0hFRCkK KwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9Q UkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJjb3VsZCBub3Qgc2VuZCBkYXRhIHRv IHNoYXJlZC1tZW1vcnkgcXVldWUiKSkpOworCisJCUFzc2VydChyZXN1bHQgPT0gU0hNX01RX1dP VUxEX0JMT0NLKTsKKworCQkvKiBXYWl0IGJlZm9yZSByZXRyeWluZy4gKi8KKwkJcmMgPSBXYWl0 TGF0Y2goTXlMYXRjaCwKKwkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VY SVRfT05fUE1fREVBVEgsCisJCQkJCSAgIFNITV9TRU5EX1JFVFJZX0lOVEVSVkFMX01TLAorCQkJ CQkgICBXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfU1RBVEVfQ0hBTkdFKTsKKwor CQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCXsKKwkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJ CQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCQl9CisKKwkJaWYgKHN0YXJ0VGltZSA9PSAwKQor CQkJc3RhcnRUaW1lID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOworCQllbHNlIGlmIChUaW1lc3Rh bXBEaWZmZXJlbmNlRXhjZWVkcyhzdGFydFRpbWUsIEdldEN1cnJlbnRUaW1lc3RhbXAoKSwKKwkJ CQkJCQkJCQkJU0hNX1NFTkRfVElNRU9VVF9NUykpCisJCXsKKwkJCWVyZXBvcnQoTE9HLAorCQkJ CQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlciB3aWxsIHNlcmlhbGl6 ZSB0aGUgcmVtYWluaW5nIGNoYW5nZXMgb2YgcmVtb3RlIHRyYW5zYWN0aW9uICV1IHRvIGEgZmls ZSIsCisJCQkJCQkJd2luZm8tPnNoYXJlZC0+eGlkKSkpOworCQkJcmV0dXJuIGZhbHNlOworCQl9 CisJfQorfQorCisvKgorICogU3dpdGNoIHRvIFBBUlRJQUxfU0VSSUFMSVpFIG1vZGUgZm9yIHRo ZSBjdXJyZW50IHRyYW5zYWN0aW9uIC0tIHRoaXMgbWVhbnMKKyAqIHRoYXQgdGhlIGN1cnJlbnQg ZGF0YSBhbmQgYW55IHN1YnNlcXVlbnQgZGF0YSBmb3IgdGhpcyB0cmFuc2FjdGlvbiB3aWxsIGJl CisgKiBzZXJpYWxpemVkIHRvIGEgZmlsZS4gVGhpcyBpcyBkb25lIHRvIHByZXZlbnQgcG9zc2li bGUgZGVhZGxvY2tzIHdpdGgKKyAqIGFub3RoZXIgcGFyYWxsZWwgYXBwbHkgd29ya2VyIChyZWZl ciB0byB0aGUgY29tbWVudHMgYXRvcCB0aGlzIGZpbGUpLgorICovCit2b2lkCitwYV9zd2l0Y2hf dG9fcGFydGlhbF9zZXJpYWxpemUoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLAorCQkJ CQkJCSAgIGJvb2wgc3RyZWFtX2xvY2tlZCkKK3sKKwkvKgorCSAqIFRoZSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIgY291bGQgYmUgc3R1Y2sgZm9yIHNvbWUgcmVhc29uIChzYXkgd2FpdGluZworCSAq IG9uIHNvbWUgbG9jayBieSBvdGhlciBiYWNrZW5kKSwgc28gc3RvcCB0cnlpbmcgdG8gc2VuZCBk YXRhIGRpcmVjdGx5IHRvCisJICogaXQgYW5kIHN0YXJ0IHNlcmlhbGl6aW5nIGRhdGEgdG8gdGhl IGZpbGUgaW5zdGVhZC4KKwkgKi8KKwl3aW5mby0+c2VyaWFsaXplX2NoYW5nZXMgPSB0cnVlOwor CisJLyogSW5pdGlhbGl6ZSB0aGUgc3RyZWFtIGZpbGVzZXQuICovCisJc3RyZWFtX3N0YXJ0X2lu dGVybmFsKHdpbmZvLT5zaGFyZWQtPnhpZCwgdHJ1ZSk7CisKKwkvKgorCSAqIEFjcXVpcmVzIHRo ZSBzdHJlYW0gbG9jayBpZiBub3QgYWxyZWFkeSB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcGFyYWxs ZWwKKwkgKiBhcHBseSB3b3JrZXIgd2lsbCB3YWl0IGZvciB0aGUgbGVhZGVyIHRvIHJlbGVhc2Ug dGhlIHN0cmVhbSBsb2NrIHVudGlsCisJICogdGhlIGVuZCBvZiB0aGUgdHJhbnNhY3Rpb24uCisJ ICovCisJaWYgKCFzdHJlYW1fbG9ja2VkKQorCQlwYV9sb2NrX3N0cmVhbSh3aW5mby0+c2hhcmVk LT54aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJcGFfc2V0X2ZpbGVzZXRfc3RhdGUod2lu Zm8tPnNoYXJlZCwgRlNfU0VSSUFMSVpFX0lOX1BST0dSRVNTKTsKK30KKworLyoKKyAqIFdhaXQg dW50aWwgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcidzIHRyYW5zYWN0aW9uIHN0YXRlIGhhcyBy ZWFjaGVkIG9yCisgKiBleGNlZWRlZCB0aGUgZ2l2ZW4geGFjdF9zdGF0ZS4KKyAqLworc3RhdGlj IHZvaWQKK3BhX3dhaXRfZm9yX3hhY3Rfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndp bmZvLAorCQkJCQkgICBQYXJhbGxlbFRyYW5zU3RhdGUgeGFjdF9zdGF0ZSkKK3sKKwlmb3IgKDs7 KQorCXsKKwkJLyoKKwkJICogU3RvcCBpZiB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgaGFzIHJlYWNo ZWQgb3IgZXhjZWVkZWQgdGhlIGdpdmVuCisJCSAqIHhhY3Rfc3RhdGUuCisJCSAqLworCQlpZiAo cGFfZ2V0X3hhY3Rfc3RhdGUod2luZm8tPnNoYXJlZCkgPj0geGFjdF9zdGF0ZSkKKwkJCWJyZWFr OworCisJCS8qIFdhaXQgdG8gYmUgc2lnbmFsbGVkLiAqLworCQkodm9pZCkgV2FpdExhdGNoKE15 TGF0Y2gsCisJCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1f REVBVEgsCisJCQkJCQkgMTBMLAorCQkJCQkJIFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9B UFBMWV9TVEFURV9DSEFOR0UpOworCisJCS8qIFJlc2V0IHRoZSBsYXRjaCBzbyB3ZSBkb24ndCBz cGluLiAqLworCQlSZXNldExhdGNoKE15TGF0Y2gpOworCisJCS8qIEFuIGludGVycnVwdCBtYXkg aGF2ZSBvY2N1cnJlZCB3aGlsZSB3ZSB3ZXJlIHdhaXRpbmcuICovCisJCUNIRUNLX0ZPUl9JTlRF UlJVUFRTKCk7CisJfQorfQorCisvKgorICogV2FpdCB1bnRpbCB0aGUgcGFyYWxsZWwgYXBwbHkg d29ya2VyJ3MgdHJhbnNhY3Rpb24gZmluaXNoZXMuCisgKi8KK3N0YXRpYyB2b2lkCitwYV93YWl0 X2Zvcl94YWN0X2ZpbmlzaChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCit7CisJLyoK KwkgKiBXYWl0IHVudGlsIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgc2V0IHRoZSBzdGF0ZSB0 bworCSAqIFBBUkFMTEVMX1RSQU5TX1NUQVJURUQgd2hpY2ggbWVhbnMgaXQgaGFzIGFjcXVpcmVk IHRoZSB0cmFuc2FjdGlvbgorCSAqIGxvY2suIFRoaXMgaXMgdG8gcHJldmVudCBsZWFkZXIgYXBw bHkgd29ya2VyIGZyb20gYWNxdWlyaW5nIHRoZQorCSAqIHRyYW5zYWN0aW9uIGxvY2sgZWFybGll ciB0aGFuIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJICovCisJcGFfd2FpdF9mb3JfeGFj dF9zdGF0ZSh3aW5mbywgUEFSQUxMRUxfVFJBTlNfU1RBUlRFRCk7CisKKwkvKgorCSAqIFdhaXQg Zm9yIHRoZSB0cmFuc2FjdGlvbiBsb2NrIHRvIGJlIHJlbGVhc2VkLiBUaGlzIGlzIHJlcXVpcmVk IHRvCisJICogZGV0ZWN0IGRlYWRsb2NrIGFtb25nIGxlYWRlciBhbmQgcGFyYWxsZWwgYXBwbHkg d29ya2Vycy4gUmVmZXIgdG8gdGhlCisJICogY29tbWVudHMgYXRvcCB0aGlzIGZpbGUuCisJICov CisJcGFfbG9ja190cmFuc2FjdGlvbih3aW5mby0+c2hhcmVkLT54aWQsIEFjY2Vzc1NoYXJlTG9j ayk7CisJcGFfdW5sb2NrX3RyYW5zYWN0aW9uKHdpbmZvLT5zaGFyZWQtPnhpZCwgQWNjZXNzU2hh cmVMb2NrKTsKKworCS8qCisJICogQ2hlY2sgaWYgdGhlIHN0YXRlIGJlY29tZXMgUEFSQUxMRUxf VFJBTlNfRklOSVNIRUQgaW4gY2FzZSB0aGUgcGFyYWxsZWwKKwkgKiBhcHBseSB3b3JrZXIgZmFp bGVkIHdoaWxlIGFwcGx5aW5nIGNoYW5nZXMgY2F1c2luZyB0aGUgbG9jayB0byBiZQorCSAqIHJl bGVhc2VkLgorCSAqLworCWlmIChwYV9nZXRfeGFjdF9zdGF0ZSh3aW5mby0+c2hhcmVkKSAhPSBQ QVJBTExFTF9UUkFOU19GSU5JU0hFRCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShF UlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJs b3N0IGNvbm5lY3Rpb24gdG8gdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkg d29ya2VyIikpKTsKK30KKworLyoKKyAqIFNldCB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgZm9yIGEg Z2l2ZW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCit2b2lkCitwYV9zZXRfeGFjdF9zdGF0 ZShQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVkLAorCQkJCSAgUGFyYWxsZWxUcmFu c1N0YXRlIHhhY3Rfc3RhdGUpCit7CisJU3BpbkxvY2tBY3F1aXJlKCZ3c2hhcmVkLT5tdXRleCk7 CisJd3NoYXJlZC0+eGFjdF9zdGF0ZSA9IHhhY3Rfc3RhdGU7CisJU3BpbkxvY2tSZWxlYXNlKCZ3 c2hhcmVkLT5tdXRleCk7Cit9CisKKy8qCisgKiBHZXQgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGZv ciBhIGdpdmVuIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqLworc3RhdGljIFBhcmFsbGVsVHJh bnNTdGF0ZQorcGFfZ2V0X3hhY3Rfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3No YXJlZCkKK3sKKwlQYXJhbGxlbFRyYW5zU3RhdGUgeGFjdF9zdGF0ZTsKKworCVNwaW5Mb2NrQWNx dWlyZSgmd3NoYXJlZC0+bXV0ZXgpOworCXhhY3Rfc3RhdGUgPSB3c2hhcmVkLT54YWN0X3N0YXRl OworCVNwaW5Mb2NrUmVsZWFzZSgmd3NoYXJlZC0+bXV0ZXgpOworCisJcmV0dXJuIHhhY3Rfc3Rh dGU7Cit9CisKKy8qCisgKiBDYWNoZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGluZm9ybWF0 aW9uLgorICovCit2b2lkCitwYV9zZXRfc3RyZWFtX2FwcGx5X3dvcmtlcihQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqd2luZm8pCit7CisJc3RyZWFtX2FwcGx5X3dvcmtlciA9IHdpbmZvOworfQor CisvKgorICogRm9ybSBhIHVuaXF1ZSBzYXZlcG9pbnQgbmFtZSBmb3IgdGhlIHN0cmVhbWluZyB0 cmFuc2FjdGlvbi4KKyAqCisgKiBOb3RlIHRoYXQgZGlmZmVyZW50IHN1YnNjcmlwdGlvbnMgZm9y IHB1YmxpY2F0aW9ucyBvbiBkaWZmZXJlbnQgbm9kZXMgY2FuCisgKiByZWNlaXZlIHNhbWUgcmVt b3RlIHhpZCwgc28gd2UgbmVlZCB0byB1c2Ugc3Vic2NyaXB0aW9uIGlkIGFsb25nIHdpdGggaXQu CisgKgorICogUmV0dXJucyB0aGUgbmFtZSBpbiB0aGUgc3VwcGxpZWQgYnVmZmVyLgorICovCitz dGF0aWMgdm9pZAorcGFfc2F2ZXBvaW50X25hbWUoT2lkIHN1Ym9pZCwgVHJhbnNhY3Rpb25JZCB4 aWQsIGNoYXIgKnNwbmFtZSwgU2l6ZSBzenNwKQoreworCXNucHJpbnRmKHNwbmFtZSwgc3pzcCwg InBnX3NwXyV1XyV1Iiwgc3Vib2lkLCB4aWQpOworfQorCisvKgorICogRGVmaW5lIGEgc2F2ZXBv aW50IGZvciBhIHN1YnhhY3QgaW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlmIG5lZWRlZC4KKyAq CisgKiBUaGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGNhbiBmaWd1cmUgb3V0IGlmIGEgbmV3IHN1 YnRyYW5zYWN0aW9uIHdhcworICogc3RhcnRlZCBieSBjaGVja2luZyBpZiB0aGUgbmV3IGNoYW5n ZSBhcnJpdmVkIHdpdGggYSBkaWZmZXJlbnQgeGlkLiBJbiB0aGF0CisgKiBjYXNlIGRlZmluZSBh IG5hbWVkIHNhdmVwb2ludCwgc28gdGhhdCB3ZSBhcmUgYWJsZSB0byByb2xsYmFjayB0byBpdAor ICogaWYgcmVxdWlyZWQuCisgKi8KK3ZvaWQKK3BhX3N0YXJ0X3N1YnRyYW5zKFRyYW5zYWN0aW9u SWQgY3VycmVudF94aWQsIFRyYW5zYWN0aW9uSWQgdG9wX3hpZCkKK3sKKwlpZiAoY3VycmVudF94 aWQgIT0gdG9wX3hpZCAmJgorCQkhbGlzdF9tZW1iZXJfeGlkKHN1YnhhY3RsaXN0LCBjdXJyZW50 X3hpZCkpCisJeworCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwkJY2hhcgkJc3BuYW1lW05BTUVE QVRBTEVOXTsKKworCQlwYV9zYXZlcG9pbnRfbmFtZShNeVN1YnNjcmlwdGlvbi0+b2lkLCBjdXJy ZW50X3hpZCwKKwkJCQkJCSAgc3BuYW1lLCBzaXplb2Yoc3BuYW1lKSk7CisKKwkJZWxvZyhERUJV RzEsICJkZWZpbmluZyBzYXZlcG9pbnQgJXMgaW4gbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxl bCBhcHBseSB3b3JrZXIiLCBzcG5hbWUpOworCisJCS8qIFdlIG11c3QgYmUgaW4gdHJhbnNhY3Rp b24gYmxvY2sgdG8gZGVmaW5lIHRoZSBTQVZFUE9JTlQuICovCisJCWlmICghSXNUcmFuc2FjdGlv bkJsb2NrKCkpCisJCXsKKwkJCWlmICghSXNUcmFuc2FjdGlvblN0YXRlKCkpCisJCQkJU3RhcnRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQkJQmVnaW5UcmFuc2FjdGlvbkJsb2NrKCk7CisJCQlD b21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJfQorCisJCURlZmluZVNhdmVwb2ludChzcG5h bWUpOworCisJCS8qCisJCSAqIENvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCBpcyBuZWVkZWQgdG8g c3RhcnQgYSBzdWJ0cmFuc2FjdGlvbiBhZnRlcgorCQkgKiBpc3N1aW5nIGEgU0FWRVBPSU5UIGlu c2lkZSBhIHRyYW5zYWN0aW9uIGJsb2NrIChzZWUKKwkJICogU3RhcnRTdWJUcmFuc2FjdGlvbigp KS4KKwkJICovCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCW9sZGN0eCA9IE1l bW9yeUNvbnRleHRTd2l0Y2hUbyhUb3BUcmFuc2FjdGlvbkNvbnRleHQpOworCQlzdWJ4YWN0bGlz dCA9IGxhcHBlbmRfeGlkKHN1YnhhY3RsaXN0LCBjdXJyZW50X3hpZCk7CisJCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRjdHgpOworCX0KK30KKworLyogUmVzZXQgdGhlIGxpc3QgdGhhdCBtYWlu dGFpbnMgc3VidHJhbnNhY3Rpb25zLiAqLwordm9pZAorcGFfcmVzZXRfc3VidHJhbnModm9pZCkK K3sKKwkvKgorCSAqIFdlIGRvbid0IG5lZWQgdG8gZnJlZSB0aGlzIGV4cGxpY2l0bHkgYXMgdGhl IGFsbG9jYXRlZCBtZW1vcnkgd2lsbCBiZQorCSAqIGZyZWVkIGF0IHRoZSB0cmFuc2FjdGlvbiBl bmQuCisJICovCisJc3VieGFjdGxpc3QgPSBOSUw7Cit9CisKKy8qCisgKiBIYW5kbGUgU1RSRUFN IEFCT1JUIG1lc3NhZ2Ugd2hlbiB0aGUgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgaW4gYSBwYXJh bGxlbAorICogYXBwbHkgd29ya2VyLgorICovCit2b2lkCitwYV9zdHJlYW1fYWJvcnQoTG9naWNh bFJlcFN0cmVhbUFib3J0RGF0YSAqYWJvcnRfZGF0YSkKK3sKKwlUcmFuc2FjdGlvbklkIHhpZCA9 IGFib3J0X2RhdGEtPnhpZDsKKwlUcmFuc2FjdGlvbklkIHN1YnhpZCA9IGFib3J0X2RhdGEtPnN1 YnhpZDsKKworCS8qCisJICogVXBkYXRlIG9yaWdpbiBzdGF0ZSBzbyB3ZSBjYW4gcmVzdGFydCBz dHJlYW1pbmcgZnJvbSBjb3JyZWN0IHBvc2l0aW9uCisJICogaW4gY2FzZSBvZiBjcmFzaC4KKwkg Ki8KKwlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX2xzbiA9IGFib3J0X2RhdGEtPmFib3J0X2xz bjsKKwlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX3RpbWVzdGFtcCA9IGFib3J0X2RhdGEtPmFi b3J0X3RpbWU7CisKKwkvKgorCSAqIElmIHRoZSB0d28gWElEcyBhcmUgdGhlIHNhbWUsIGl0J3Mg aW4gZmFjdCBhYm9ydCBvZiB0b3BsZXZlbCB4YWN0LCBzbworCSAqIGp1c3QgZnJlZSB0aGUgc3Vi eGFjdGxpc3QuCisJICovCisJaWYgKHN1YnhpZCA9PSB4aWQpCisJeworCQlwYV9zZXRfeGFjdF9z dGF0ZShNeVBhcmFsbGVsU2hhcmVkLCBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCk7CisKKwkJLyoK KwkJICogUmVsZWFzZSB0aGUgbG9jayBhcyB3ZSBtaWdodCBiZSBwcm9jZXNzaW5nIGFuIGVtcHR5 IHN0cmVhbWluZworCQkgKiB0cmFuc2FjdGlvbiBpbiB3aGljaCBjYXNlIHRoZSBsb2NrIHdvbid0 IGJlIHJlbGVhc2VkIGR1cmluZworCQkgKiB0cmFuc2FjdGlvbiByb2xsYmFjay4KKwkJICoKKwkJ ICogTm90ZSB0aGF0IGl0J3Mgb2sgdG8gcmVsZWFzZSB0aGUgdHJhbnNhY3Rpb24gbG9jayBiZWZv cmUgYWJvcnRpbmcKKwkJICogdGhlIHRyYW5zYWN0aW9uIGJlY2F1c2UgZXZlbiBpZiB0aGUgcGFy YWxsZWwgYXBwbHkgd29ya2VyIGRpZXMgZHVlCisJCSAqIHRvIGNyYXNoIG9yIHNvbWUgb3RoZXIg cmVhc29uLCBzdWNoIGEgdHJhbnNhY3Rpb24gd291bGQgc3RpbGwgYmUKKwkJICogY29uc2lkZXJl ZCBhYm9ydGVkIGFueXdheS4KKwkJICovCisJCXBhX3VubG9ja190cmFuc2FjdGlvbih4aWQsIEFj Y2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJCUFib3J0Q3VycmVudFRyYW5zYWN0aW9uKCk7CisKKwkJ aWYgKElzVHJhbnNhY3Rpb25CbG9jaygpKQorCQl7CisJCQlFbmRUcmFuc2FjdGlvbkJsb2NrKGZh bHNlKTsKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQl9CisKKwkJcGFfcmVzZXRf c3VidHJhbnMoKTsKKworCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwp OworCX0KKwllbHNlCisJeworCQkvKiBPSywgc28gaXQncyBhIHN1YnhhY3QuIFJvbGxiYWNrIHRv IHRoZSBzYXZlcG9pbnQuICovCisJCWludAkJCWk7CisJCWNoYXIJCXNwbmFtZVtOQU1FREFUQUxF Tl07CisKKwkJcGFfc2F2ZXBvaW50X25hbWUoTXlTdWJzY3JpcHRpb24tPm9pZCwgc3VieGlkLCBz cG5hbWUsIHNpemVvZihzcG5hbWUpKTsKKworCQllbG9nKERFQlVHMSwgInJvbGxpbmcgYmFjayB0 byBzYXZlcG9pbnQgJXMgaW4gbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIiLCBzcG5hbWUpOworCisJCS8qCisJCSAqIFNlYXJjaCB0aGUgc3VieGFjdGxpc3QsIGRldGVy bWluZSB0aGUgb2Zmc2V0IHRyYWNrZWQgZm9yIHRoZQorCQkgKiBzdWJ4YWN0LCBhbmQgdHJ1bmNh dGUgdGhlIGxpc3QuCisJCSAqCisJCSAqIE5vdGUgdGhhdCBmb3IgYW4gZW1wdHkgc3ViLXRyYW5z YWN0aW9uIHdlIHdvbid0IGZpbmQgdGhlIHN1YnhpZAorCQkgKiBoZXJlLgorCQkgKi8KKwkJZm9y IChpID0gbGlzdF9sZW5ndGgoc3VieGFjdGxpc3QpIC0gMTsgaSA+PSAwOyBpLS0pCisJCXsKKwkJ CVRyYW5zYWN0aW9uSWQgeGlkX3RtcCA9IGxmaXJzdF94aWQobGlzdF9udGhfY2VsbChzdWJ4YWN0 bGlzdCwgaSkpOworCisJCQlpZiAoeGlkX3RtcCA9PSBzdWJ4aWQpCisJCQl7CisJCQkJUm9sbGJh Y2tUb1NhdmVwb2ludChzcG5hbWUpOworCQkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwor CQkJCXN1YnhhY3RsaXN0ID0gbGlzdF90cnVuY2F0ZShzdWJ4YWN0bGlzdCwgaSk7CisJCQkJYnJl YWs7CisJCQl9CisJCX0KKwl9Cit9CisKKy8qCisgKiBTZXQgdGhlIGZpbGVzZXQgc3RhdGUgZm9y IGEgcGFydGljdWxhciBwYXJhbGxlbCBhcHBseSB3b3JrZXIuIFRoZSBmaWxlc2V0CisgKiB3aWxs IGJlIHNldCBvbmNlIHRoZSBsZWFkZXIgd29ya2VyIHNlcmlhbGl6ZWQgYWxsIGNoYW5nZXMgdG8g dGhlIGZpbGUKKyAqIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29y a2VyLgorICovCit2b2lkCitwYV9zZXRfZmlsZXNldF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2Vy U2hhcmVkICp3c2hhcmVkLAorCQkJCQkgUGFydGlhbEZpbGVTZXRTdGF0ZSBmaWxlc2V0X3N0YXRl KQoreworCVNwaW5Mb2NrQWNxdWlyZSgmd3NoYXJlZC0+bXV0ZXgpOworCXdzaGFyZWQtPmZpbGVz ZXRfc3RhdGUgPSBmaWxlc2V0X3N0YXRlOworCisJaWYgKGZpbGVzZXRfc3RhdGUgPT0gRlNfU0VS SUFMSVpFX0RPTkUpCisJeworCQlBc3NlcnQoYW1fbGVhZGVyX2FwcGx5X3dvcmtlcigpKTsKKwkJ QXNzZXJ0KE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOworCQl3c2hhcmVkLT5m aWxlc2V0ID0gKk15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQ7CisJfQorCisJU3Bp bkxvY2tSZWxlYXNlKCZ3c2hhcmVkLT5tdXRleCk7Cit9CisKKy8qCisgKiBHZXQgdGhlIGZpbGVz ZXQgc3RhdGUgZm9yIHRoZSBjdXJyZW50IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqLworc3Rh dGljIFBhcnRpYWxGaWxlU2V0U3RhdGUKK3BhX2dldF9maWxlc2V0X3N0YXRlKHZvaWQpCit7CisJ UGFydGlhbEZpbGVTZXRTdGF0ZSBmaWxlc2V0X3N0YXRlOworCisJQXNzZXJ0KGFtX3BhcmFsbGVs X2FwcGx5X3dvcmtlcigpKTsKKworCVNwaW5Mb2NrQWNxdWlyZSgmTXlQYXJhbGxlbFNoYXJlZC0+ bXV0ZXgpOworCWZpbGVzZXRfc3RhdGUgPSBNeVBhcmFsbGVsU2hhcmVkLT5maWxlc2V0X3N0YXRl OworCVNwaW5Mb2NrUmVsZWFzZSgmTXlQYXJhbGxlbFNoYXJlZC0+bXV0ZXgpOworCisJcmV0dXJu IGZpbGVzZXRfc3RhdGU7Cit9CisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb25zIHRvIGFjcXVpcmUg YW5kIHJlbGVhc2UgYSBsb2NrIGZvciBlYWNoIHN0cmVhbSBibG9jay4KKyAqCisgKiBTZXQgbG9j a3RhZ19maWVsZDQgdG8gUEFSQUxMRUxfQVBQTFlfTE9DS19TVFJFQU0gdG8gaW5kaWNhdGUgdGhh dCBpdCdzIGEKKyAqIHN0cmVhbSBsb2NrLgorICoKKyAqIFJlZmVyIHRvIHRoZSBjb21tZW50cyBh dG9wIHRoaXMgZmlsZSB0byBzZWUgaG93IHRoZSBzdHJlYW0gbG9jayBpcyB1c2VkLgorICovCit2 b2lkCitwYV9sb2NrX3N0cmVhbShUcmFuc2FjdGlvbklkIHhpZCwgTE9DS01PREUgbG9ja21vZGUp Cit7CisJTG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uKE15TG9naWNhbFJlcFdvcmtlci0+ c3ViaWQsIHhpZCwKKwkJCQkJCQkJICAgUEFSQUxMRUxfQVBQTFlfTE9DS19TVFJFQU0sIGxvY2tt b2RlKTsKK30KKwordm9pZAorcGFfdW5sb2NrX3N0cmVhbShUcmFuc2FjdGlvbklkIHhpZCwgTE9D S01PREUgbG9ja21vZGUpCit7CisJVW5sb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24oTXlM b2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkLAorCQkJCQkJCQkJIFBBUkFMTEVMX0FQUExZX0xP Q0tfU1RSRUFNLCBsb2NrbW9kZSk7Cit9CisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb25zIHRvIGFj cXVpcmUgYW5kIHJlbGVhc2UgYSBsb2NrIGZvciBlYWNoIGxvY2FsIHRyYW5zYWN0aW9uCisgKiBh cHBseS4KKyAqCisgKiBTZXQgbG9ja3RhZ19maWVsZDQgdG8gUEFSQUxMRUxfQVBQTFlfTE9DS19Y QUNUIHRvIGluZGljYXRlIHRoYXQgaXQncyBhCisgKiB0cmFuc2FjdGlvbiBsb2NrLgorICoKKyAq IE5vdGUgdGhhdCBhbGwgdGhlIGNhbGxlcnMgbXVzdCBwYXNzIGEgcmVtb3RlIHRyYW5zYWN0aW9u IElEIGluc3RlYWQgb2YgYQorICogbG9jYWwgdHJhbnNhY3Rpb24gSUQgYXMgeGlkLiBUaGlzIGlz IGJlY2F1c2UgdGhlIGxvY2FsIHRyYW5zYWN0aW9uIElEIHdpbGwKKyAqIG9ubHkgYmUgYXNzaWdu ZWQgd2hpbGUgYXBwbHlpbmcgdGhlIGZpcnN0IGNoYW5nZSBpbiB0aGUgcGFyYWxsZWwgYXBwbHkg YnV0CisgKiBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGZpcnN0IGNoYW5nZSBpbiB0aGUgcGFyYWxs ZWwgYXBwbHkgd29ya2VyIGlzIGJsb2NrZWQKKyAqIGJ5IGEgY29uY3VycmVudGx5IGV4ZWN1dGlu ZyB0cmFuc2FjdGlvbiBpbiBhbm90aGVyIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gV2UKKyAqIGNh biBvbmx5IGNvbW11bmljYXRlIHRoZSBsb2NhbCB0cmFuc2FjdGlvbiBpZCB0byB0aGUgbGVhZGVy IGFmdGVyIGFwcGx5aW5nCisgKiB0aGUgZmlyc3QgY2hhbmdlIHNvIGl0IHdvbid0IGJlIGFibGUg dG8gd2FpdCBhZnRlciBzZW5kaW5nIHRoZSB4YWN0IGZpbmlzaAorICogY29tbWFuZCB1c2luZyB0 aGlzIGxvY2suCisgKgorICogUmVmZXIgdG8gdGhlIGNvbW1lbnRzIGF0b3AgdGhpcyBmaWxlIHRv IHNlZSBob3cgdGhlIHRyYW5zYWN0aW9uIGxvY2sgaXMKKyAqIHVzZWQuCisgKi8KK3ZvaWQKK3Bh X2xvY2tfdHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKQor eworCUxvY2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lvbihNeUxvZ2ljYWxSZXBXb3JrZXItPnN1 YmlkLCB4aWQsCisJCQkJCQkJCSAgIFBBUkFMTEVMX0FQUExZX0xPQ0tfWEFDVCwgbG9ja21vZGUp OworfQorCit2b2lkCitwYV91bmxvY2tfdHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsIExP Q0tNT0RFIGxvY2ttb2RlKQoreworCVVubG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uKE15 TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCwKKwkJCQkJCQkJCSBQQVJBTExFTF9BUFBMWV9M T0NLX1hBQ1QsIGxvY2ttb2RlKTsKK30KKworLyoKKyAqIERlY3JlbWVudCB0aGUgbnVtYmVyIG9m IHBlbmRpbmcgc3RyZWFtaW5nIGJsb2NrcyBhbmQgd2FpdCBvbiB0aGUgc3RyZWFtIGxvY2sKKyAq IGlmIHRoZXJlIGlzIG5vIHBlbmRpbmcgYmxvY2sgYXZhaWxhYmxlLgorICovCit2b2lkCitwYV9k ZWNyX2FuZF93YWl0X3N0cmVhbV9ibG9jayh2b2lkKQoreworCUFzc2VydChhbV9wYXJhbGxlbF9h cHBseV93b3JrZXIoKSk7CisKKwkvKgorCSAqIEl0IGlzIG9ubHkgcG9zc2libGUgdG8gbm90IGhh dmUgYW55IHBlbmRpbmcgc3RyZWFtIGNodW5rcyB3aGVuIHdlIGFyZQorCSAqIGFwcGx5aW5nIHNw b29sZWQgbWVzc2FnZXMuCisJICovCisJaWYgKHBnX2F0b21pY19yZWFkX3UzMigmTXlQYXJhbGxl bFNoYXJlZC0+cGVuZGluZ19zdHJlYW1fY291bnQpID09IDApCisJeworCQlpZiAocGFfaGFzX3Nw b29sZWRfbWVzc2FnZV9wZW5kaW5nKCkpCisJCQlyZXR1cm47CisKKwkJZWxvZyhFUlJPUiwgImlu dmFsaWQgcGVuZGluZyBzdHJlYW1pbmcgY2h1bmsgMCIpOworCX0KKworCWlmIChwZ19hdG9taWNf c3ViX2ZldGNoX3UzMigmTXlQYXJhbGxlbFNoYXJlZC0+cGVuZGluZ19zdHJlYW1fY291bnQsIDEp ID09IDApCisJeworCQlwYV9sb2NrX3N0cmVhbShNeVBhcmFsbGVsU2hhcmVkLT54aWQsIEFjY2Vz c1NoYXJlTG9jayk7CisJCXBhX3VubG9ja19zdHJlYW0oTXlQYXJhbGxlbFNoYXJlZC0+eGlkLCBB Y2Nlc3NTaGFyZUxvY2spOworCX0KK30KKworLyoKKyAqIEZpbmlzaCBwcm9jZXNzaW5nIHRoZSBz dHJlYW1pbmcgdHJhbnNhY3Rpb24gaW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIuCisgKi8KK3Zv aWQKK3BhX3hhY3RfZmluaXNoKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgWExvZ1Jl Y1B0ciByZW1vdGVfbHNuKQoreworCUFzc2VydChhbV9sZWFkZXJfYXBwbHlfd29ya2VyKCkpOwor CisJLyoKKwkgKiBVbmxvY2sgdGhlIHNoYXJlZCBvYmplY3QgbG9jayBzbyB0aGF0IHBhcmFsbGVs IGFwcGx5IHdvcmtlciBjYW4KKwkgKiBjb250aW51ZSB0byByZWNlaXZlIGFuZCBhcHBseSBjaGFu Z2VzLgorCSAqLworCXBhX3VubG9ja19zdHJlYW0od2luZm8tPnNoYXJlZC0+eGlkLCBBY2Nlc3NF eGNsdXNpdmVMb2NrKTsKKworCS8qCisJICogV2FpdCBmb3IgdGhhdCB3b3JrZXIgdG8gZmluaXNo LiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBtYWludGFpbiBjb21taXQKKwkgKiBvcmRlciB3aGljaCBh dm9pZHMgZmFpbHVyZXMgZHVlIHRvIHRyYW5zYWN0aW9uIGRlcGVuZGVuY2llcyBhbmQKKwkgKiBk ZWFkbG9ja3MuCisJICovCisJcGFfd2FpdF9mb3JfeGFjdF9maW5pc2god2luZm8pOworCisJaWYg KCFYTG9nUmVjUHRySXNJbnZhbGlkKHJlbW90ZV9sc24pKQorCQlzdG9yZV9mbHVzaF9wb3NpdGlv bihyZW1vdGVfbHNuLCB3aW5mby0+c2hhcmVkLT5sYXN0X2NvbW1pdF9lbmQpOworCisJcGFfZnJl ZV93b3JrZXIod2luZm8pOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9kZWNvZGUuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2Rl LmMKaW5kZXggYzNiYzhlYy4uYTUzZTIzYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2RlY29kZS5jCkBAIC04MjIsMTAgKzgyMiwxMSBAQCBEZWNvZGVBYm9ydChMb2dpY2FsRGVj b2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZiwKIAkJZm9yIChpID0gMDsg aSA8IHBhcnNlZC0+bnN1YnhhY3RzOyBpKyspCiAJCXsKIAkJCVJlb3JkZXJCdWZmZXJBYm9ydChj dHgtPnJlb3JkZXIsIHBhcnNlZC0+c3VieGFjdHNbaV0sCi0JCQkJCQkJICAgYnVmLT5yZWNvcmQt PkVuZFJlY1B0cik7CisJCQkJCQkJICAgYnVmLT5yZWNvcmQtPkVuZFJlY1B0ciwgYWJvcnRfdGlt ZSk7CiAJCX0KIAotCQlSZW9yZGVyQnVmZmVyQWJvcnQoY3R4LT5yZW9yZGVyLCB4aWQsIGJ1Zi0+ cmVjb3JkLT5FbmRSZWNQdHIpOworCQlSZW9yZGVyQnVmZmVyQWJvcnQoY3R4LT5yZW9yZGVyLCB4 aWQsIGJ1Zi0+cmVjb3JkLT5FbmRSZWNQdHIsCisJCQkJCQkgICBhYm9ydF90aW1lKTsKIAl9CiAK IAkvKiB1cGRhdGUgdGhlIGRlY29kaW5nIHN0YXRzICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2xhdW5jaGVyLmMKaW5kZXggYTY5ZTM3MS4uYWZiN2FjZCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCisrKyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwpAQCAtNTUsNiArNTUsNyBAQAogLyog R1VDIHZhcmlhYmxlcyAqLwogaW50CQkJbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycyA9 IDQ7CiBpbnQJCQltYXhfc3luY193b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAyOworaW50CQkJ bWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiA9IDI7CiAKIExvZ2lj YWxSZXBXb3JrZXIgKk15TG9naWNhbFJlcFdvcmtlciA9IE5VTEw7CiAKQEAgLTc0LDYgKzc1LDcg QEAgc3RhdGljIHZvaWQgbG9naWNhbHJlcF9sYXVuY2hlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVt IGFyZyk7CiBzdGF0aWMgdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9vbmV4aXQoaW50IGNvZGUsIERh dHVtIGFyZyk7CiBzdGF0aWMgdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9kZXRhY2godm9pZCk7CiBz dGF0aWMgdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9jbGVhbnVwKExvZ2ljYWxSZXBXb3JrZXIgKndv cmtlcik7CitzdGF0aWMgaW50CWxvZ2ljYWxyZXBfcGFfd29ya2VyX2NvdW50KE9pZCBzdWJpZCk7 CiAKIHN0YXRpYyBib29sIG9uX2NvbW1pdF9sYXVuY2hlcl93YWtldXAgPSBmYWxzZTsKIApAQCAt MTUyLDggKzE1NCwxMCBAQCBnZXRfc3Vic2NyaXB0aW9uX2xpc3Qodm9pZCkKICAqCiAgKiBUaGlz IGlzIG9ubHkgbmVlZGVkIGZvciBjbGVhbmluZyB1cCB0aGUgc2hhcmVkIG1lbW9yeSBpbiBjYXNl IHRoZSB3b3JrZXIKICAqIGZhaWxzIHRvIGF0dGFjaC4KKyAqCisgKiBSZXR1cm5zIHdoZXRoZXIg dGhlIGF0dGFjaCB3YXMgc3VjY2Vzc2Z1bC4KICAqLwotc3RhdGljIHZvaWQKK3N0YXRpYyBib29s CiBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAqd29ya2Vy LAogCQkJCQkJCSAgIHVpbnQxNiBnZW5lcmF0aW9uLAogCQkJCQkJCSAgIEJhY2tncm91bmRXb3Jr ZXJIYW5kbGUgKmhhbmRsZSkKQEAgLTE2OSwxMSArMTczLDExIEBAIFdhaXRGb3JSZXBsaWNhdGlv bldvcmtlckF0dGFjaChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIsCiAKIAkJTFdMb2NrQWNxdWly ZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKIAotCQkvKiBXb3JrZXIgZWl0aGVy IGRpZWQgb3IgaGFzIHN0YXJ0ZWQ7IG5vIG5lZWQgdG8gZG8gYW55dGhpbmcuICovCisJCS8qIFdv cmtlciBlaXRoZXIgZGllZCBvciBoYXMgc3RhcnRlZC4gUmV0dXJuIGZhbHNlIGlmIGRpZWQuICov CiAJCWlmICghd29ya2VyLT5pbl91c2UgfHwgd29ya2VyLT5wcm9jKQogCQl7CiAJCQlMV0xvY2tS ZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKLQkJCXJldHVybjsKKwkJCXJldHVybiB3b3Jr ZXItPmluX3VzZTsKIAkJfQogCiAJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2sp OwpAQCAtMTg4LDcgKzE5Miw3IEBAIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaChMb2dp Y2FsUmVwV29ya2VyICp3b3JrZXIsCiAJCQlpZiAoZ2VuZXJhdGlvbiA9PSB3b3JrZXItPmdlbmVy YXRpb24pCiAJCQkJbG9naWNhbHJlcF93b3JrZXJfY2xlYW51cCh3b3JrZXIpOwogCQkJTFdMb2Nr UmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Ci0JCQlyZXR1cm47CisJCQlyZXR1cm4gZmFs c2U7CiAJCX0KIAogCQkvKgpAQCAtMjEwLDYgKzIxNCw4IEBAIFdhaXRGb3JSZXBsaWNhdGlvbldv cmtlckF0dGFjaChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIsCiAvKgogICogV2Fsa3MgdGhlIHdv cmtlcnMgYXJyYXkgYW5kIHNlYXJjaGVzIGZvciBvbmUgdGhhdCBtYXRjaGVzIGdpdmVuCiAgKiBz dWJzY3JpcHRpb24gaWQgYW5kIHJlbGlkLgorICoKKyAqIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQg aW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgb3IgdGFibGUgc3luYyB3b3JrZXIuCiAgKi8KIExv Z2ljYWxSZXBXb3JrZXIgKgogbG9naWNhbHJlcF93b3JrZXJfZmluZChPaWQgc3ViaWQsIE9pZCBy ZWxpZCwgYm9vbCBvbmx5X3J1bm5pbmcpCkBAIC0yMjQsNiArMjMwLDEwIEBAIGxvZ2ljYWxyZXBf d29ya2VyX2ZpbmQoT2lkIHN1YmlkLCBPaWQgcmVsaWQsIGJvb2wgb25seV9ydW5uaW5nKQogCXsK IAkJTG9naWNhbFJlcFdvcmtlciAqdyA9ICZMb2dpY2FsUmVwQ3R4LT53b3JrZXJzW2ldOwogCisJ CS8qIFNraXAgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4gKi8KKwkJaWYgKGlzUGFyYWxsZWxBcHBs eVdvcmtlcih3KSkKKwkJCWNvbnRpbnVlOworCiAJCWlmICh3LT5pbl91c2UgJiYgdy0+c3ViaWQg PT0gc3ViaWQgJiYgdy0+cmVsaWQgPT0gcmVsaWQgJiYKIAkJCSghb25seV9ydW5uaW5nIHx8IHct PnByb2MpKQogCQl7CkBAIC0yNjAsMTEgKzI3MCwxMyBAQCBsb2dpY2FscmVwX3dvcmtlcnNfZmlu ZChPaWQgc3ViaWQsIGJvb2wgb25seV9ydW5uaW5nKQogfQogCiAvKgotICogU3RhcnQgbmV3IGFw cGx5IGJhY2tncm91bmQgd29ya2VyLCBpZiBwb3NzaWJsZS4KKyAqIFN0YXJ0IG5ldyBsb2dpY2Fs IHJlcGxpY2F0aW9uIGJhY2tncm91bmQgd29ya2VyLCBpZiBwb3NzaWJsZS4KKyAqCisgKiBSZXR1 cm5zIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFpbHVyZS4KICAqLwotdm9pZAorYm9vbAog bG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIg KnN1Ym5hbWUsIE9pZCB1c2VyaWQsCi0JCQkJCQkgT2lkIHJlbGlkKQorCQkJCQkJIE9pZCByZWxp ZCwgZHNtX2hhbmRsZSBzdWJ3b3JrZXJfZHNtKQogewogCUJhY2tncm91bmRXb3JrZXIgYmd3Owog CUJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmJnd19oYW5kbGU7CkBAIC0yNzMsNyArMjg1LDEyIEBA IGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJpZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFy ICpzdWJuYW1lLCBPaWQgdXNlcmlkLAogCWludAkJCXNsb3QgPSAwOwogCUxvZ2ljYWxSZXBXb3Jr ZXIgKndvcmtlciA9IE5VTEw7CiAJaW50CQkJbnN5bmN3b3JrZXJzOworCWludAkJCW5wYXJhbGxl bGFwcGx5d29ya2VyczsKIAlUaW1lc3RhbXBUeiBub3c7CisJYm9vbAkJaXNfcGFyYWxsZWxfYXBw bHlfd29ya2VyID0gKHN1Yndvcmtlcl9kc20gIT0gRFNNX0hBTkRMRV9JTlZBTElEKTsKKworCS8q IFNhbml0eSBjaGVjayAtIHRhYmxlc3luYyB3b3JrZXIgY2Fubm90IGJlIGEgc3Vid29ya2VyICov CisJQXNzZXJ0KCEoaXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyICYmIE9pZElzVmFsaWQocmVsaWQp KSk7CiAKIAllcmVwb3J0KERFQlVHMSwKIAkJCShlcnJtc2dfaW50ZXJuYWwoInN0YXJ0aW5nIGxv Z2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIiwKQEAgLTM1 MSw3ICszNjgsMjAgQEAgcmV0cnk6CiAJaWYgKE9pZElzVmFsaWQocmVsaWQpICYmIG5zeW5jd29y a2VycyA+PSBtYXhfc3luY193b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24pCiAJewogCQlMV0xvY2tS ZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKLQkJcmV0dXJuOworCQlyZXR1cm4gZmFsc2U7 CisJfQorCisJbnBhcmFsbGVsYXBwbHl3b3JrZXJzID0gbG9naWNhbHJlcF9wYV93b3JrZXJfY291 bnQoc3ViaWQpOworCisJLyoKKwkgKiBSZXR1cm4gZmFsc2UgaWYgdGhlIG51bWJlciBvZiBwYXJh bGxlbCBhcHBseSB3b3JrZXJzIHJlYWNoZWQgdGhlIGxpbWl0CisJICogcGVyIHN1YnNjcmlwdGlv bi4KKwkgKi8KKwlpZiAoaXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyICYmCisJCW5wYXJhbGxlbGFw cGx5d29ya2VycyA+PSBtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9u KQorCXsKKwkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CisJCXJldHVybiBm YWxzZTsKIAl9CiAKIAkvKgpAQCAtMzY1LDcgKzM5NSw3IEBAIHJldHJ5OgogCQkJCShlcnJjb2Rl KEVSUkNPREVfQ09ORklHVVJBVElPTl9MSU1JVF9FWENFRURFRCksCiAJCQkJIGVycm1zZygib3V0 IG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIHNsb3RzIiksCiAJCQkJIGVycmhpbnQoIllv dSBtaWdodCBuZWVkIHRvIGluY3JlYXNlIG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMu IikpKTsKLQkJcmV0dXJuOworCQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJLyogUHJlcGFyZSB0aGUg d29ya2VyIHNsb3QuICovCkBAIC0zODAsNiArNDEwLDggQEAgcmV0cnk6CiAJd29ya2VyLT5yZWxz dGF0ZSA9IFNVQlJFTF9TVEFURV9VTktOT1dOOwogCXdvcmtlci0+cmVsc3RhdGVfbHNuID0gSW52 YWxpZFhMb2dSZWNQdHI7CiAJd29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IE5VTEw7CisJd29ya2Vy LT5hcHBseV9sZWFkZXJfcGlkID0gaXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyID8gTXlQcm9jUGlk IDogSW52YWxpZFBpZDsKKwl3b3JrZXItPnBhcmFsbGVsX2FwcGx5ID0gaXNfcGFyYWxsZWxfYXBw bHlfd29ya2VyOwogCXdvcmtlci0+bGFzdF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAlUSU1F U1RBTVBfTk9CRUdJTih3b3JrZXItPmxhc3Rfc2VuZF90aW1lKTsKIAlUSU1FU1RBTVBfTk9CRUdJ Tih3b3JrZXItPmxhc3RfcmVjdl90aW1lKTsKQEAgLTM5NywxOSArNDI5LDM0IEBAIHJldHJ5Ogog CQlCR1dPUktFUl9CQUNLRU5EX0RBVEFCQVNFX0NPTk5FQ1RJT047CiAJYmd3LmJnd19zdGFydF90 aW1lID0gQmdXb3JrZXJTdGFydF9SZWNvdmVyeUZpbmlzaGVkOwogCXNucHJpbnRmKGJndy5iZ3df bGlicmFyeV9uYW1lLCBCR1dfTUFYTEVOLCAicG9zdGdyZXMiKTsKLQlzbnByaW50ZihiZ3cuYmd3 X2Z1bmN0aW9uX25hbWUsIEJHV19NQVhMRU4sICJBcHBseVdvcmtlck1haW4iKTsKKworCWlmIChp c19wYXJhbGxlbF9hcHBseV93b3JrZXIpCisJCXNucHJpbnRmKGJndy5iZ3dfZnVuY3Rpb25fbmFt ZSwgQkdXX01BWExFTiwgIlBhcmFsbGVsQXBwbHlXb3JrZXJNYWluIik7CisJZWxzZQorCQlzbnBy aW50ZihiZ3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJHV19NQVhMRU4sICJBcHBseVdvcmtlck1haW4i KTsKKwogCWlmIChPaWRJc1ZhbGlkKHJlbGlkKSkKIAkJc25wcmludGYoYmd3LmJnd19uYW1lLCBC R1dfTUFYTEVOLAogCQkJCSAibG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1YnNjcmlw dGlvbiAldSBzeW5jICV1Iiwgc3ViaWQsIHJlbGlkKTsKKwllbHNlIGlmIChpc19wYXJhbGxlbF9h cHBseV93b3JrZXIpCisJCXNucHJpbnRmKGJndy5iZ3dfbmFtZSwgQkdXX01BWExFTiwKKwkJCQkg ImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRp b24gJXUiLCBzdWJpZCk7CiAJZWxzZQogCQlzbnByaW50ZihiZ3cuYmd3X25hbWUsIEJHV19NQVhM RU4sCi0JCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uICV1 Iiwgc3ViaWQpOwotCXNucHJpbnRmKGJndy5iZ3dfdHlwZSwgQkdXX01BWExFTiwgImxvZ2ljYWwg cmVwbGljYXRpb24gd29ya2VyIik7CisJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdv cmtlciBmb3Igc3Vic2NyaXB0aW9uICV1Iiwgc3ViaWQpOworCisJaWYgKGlzX3BhcmFsbGVsX2Fw cGx5X3dvcmtlcikKKwkJc25wcmludGYoYmd3LmJnd190eXBlLCBCR1dfTUFYTEVOLCAibG9naWNh bCByZXBsaWNhdGlvbiBwYXJhbGxlbCB3b3JrZXIiKTsKKwllbHNlCisJCXNucHJpbnRmKGJndy5i Z3dfdHlwZSwgQkdXX01BWExFTiwgImxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIik7CiAKIAli Z3cuYmd3X3Jlc3RhcnRfdGltZSA9IEJHV19ORVZFUl9SRVNUQVJUOwogCWJndy5iZ3dfbm90aWZ5 X3BpZCA9IE15UHJvY1BpZDsKIAliZ3cuYmd3X21haW5fYXJnID0gSW50MzJHZXREYXR1bShzbG90 KTsKIAorCWlmIChpc19wYXJhbGxlbF9hcHBseV93b3JrZXIpCisJCW1lbWNweShiZ3cuYmd3X2V4 dHJhLCAmc3Vid29ya2VyX2RzbSwgc2l6ZW9mKGRzbV9oYW5kbGUpKTsKKwogCWlmICghUmVnaXN0 ZXJEeW5hbWljQmFja2dyb3VuZFdvcmtlcigmYmd3LCAmYmd3X2hhbmRsZSkpCiAJewogCQkvKiBG YWlsZWQgdG8gc3RhcnQgd29ya2VyLCBzbyBjbGVhbiB1cCB0aGUgd29ya2VyIHNsb3QuICovCkBA IC00MjIsMzMgKzQ2OSwyMyBAQCByZXRyeToKIAkJCQkoZXJyY29kZShFUlJDT0RFX0NPTkZJR1VS QVRJT05fTElNSVRfRVhDRUVERUQpLAogCQkJCSBlcnJtc2coIm91dCBvZiBiYWNrZ3JvdW5kIHdv cmtlciBzbG90cyIpLAogCQkJCSBlcnJoaW50KCJZb3UgbWlnaHQgbmVlZCB0byBpbmNyZWFzZSBt YXhfd29ya2VyX3Byb2Nlc3Nlcy4iKSkpOwotCQlyZXR1cm47CisJCXJldHVybiBmYWxzZTsKIAl9 CiAKIAkvKiBOb3cgd2FpdCB1bnRpbCBpdCBhdHRhY2hlcy4gKi8KLQlXYWl0Rm9yUmVwbGljYXRp b25Xb3JrZXJBdHRhY2god29ya2VyLCBnZW5lcmF0aW9uLCBiZ3dfaGFuZGxlKTsKKwlyZXR1cm4g V2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKHdvcmtlciwgZ2VuZXJhdGlvbiwgYmd3X2hh bmRsZSk7CiB9CiAKIC8qCi0gKiBTdG9wIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBm b3Igc3ViaWQvcmVsaWQsIGlmIGFueSwgYW5kIHdhaXQgdW50aWwKLSAqIGl0IGRldGFjaGVzIGZy b20gdGhlIHNsb3QuCisgKiBJbnRlcm5hbCBmdW5jdGlvbiB0byBzdG9wIHRoZSB3b3JrZXIgYW5k IHdhaXQgdW50aWwgaXQgZGV0YWNoZXMgZnJvbSB0aGUKKyAqIHNsb3QuCiAgKi8KLXZvaWQKLWxv Z2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCitzdGF0aWMgdm9pZAor bG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIs IGludCBzaWdubykKIHsKLQlMb2dpY2FsUmVwV29ya2VyICp3b3JrZXI7CiAJdWludDE2CQlnZW5l cmF0aW9uOwogCi0JTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVE KTsKLQotCXdvcmtlciA9IGxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQoc3ViaWQsIHJlbGlkLCBmYWxz ZSk7Ci0KLQkvKiBObyB3b3JrZXIsIG5vdGhpbmcgdG8gZG8uICovCi0JaWYgKCF3b3JrZXIpCi0J ewotCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKLQkJcmV0dXJuOwotCX0K KwlBc3NlcnQoTFdMb2NrSGVsZEJ5TWVJbk1vZGUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NI QVJFRCkpOwogCiAJLyoKIAkgKiBSZW1lbWJlciB3aGljaCBnZW5lcmF0aW9uIHdhcyBvdXIgd29y a2VyIHNvIHdlIGNhbiBjaGVjayBpZiB3aGF0IHdlIHNlZQpAQCAtNDg2LDEwICs1MjMsNyBAQCBs b2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKQogCQkgKiBkaWZmZXJl bnQsIG1lYW5pbmcgdGhhdCBhIGRpZmZlcmVudCB3b3JrZXIgaGFzIHRha2VuIHRoZSBzbG90Lgog CQkgKi8KIAkJaWYgKCF3b3JrZXItPmluX3VzZSB8fCB3b3JrZXItPmdlbmVyYXRpb24gIT0gZ2Vu ZXJhdGlvbikKLQkJewotCQkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CiAJ CQlyZXR1cm47Ci0JCX0KIAogCQkvKiBXb3JrZXIgaGFzIGFzc2lnbmVkIHByb2MsIHNvIGl0IGhh cyBzdGFydGVkLiAqLwogCQlpZiAod29ya2VyLT5wcm9jKQpAQCAtNDk3LDcgKzUzMSw3IEBAIGxv Z2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCiAJfQogCiAJLyogTm93 IHRlcm1pbmF0ZSB0aGUgd29ya2VyIC4uLiAqLwotCWtpbGwod29ya2VyLT5wcm9jLT5waWQsIFNJ R1RFUk0pOworCWtpbGwod29ya2VyLT5wcm9jLT5waWQsIHNpZ25vKTsKIAogCS8qIC4uLiBhbmQg d2FpdCBmb3IgaXQgdG8gZGllLiAqLwogCWZvciAoOzspCkBAIC01MjMsNiArNTU3LDUzIEBAIGxv Z2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCiAKIAkJTFdMb2NrQWNx dWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKIAl9Cit9CisKKy8qCisgKiBT dG9wIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3ViaWQvcmVsaWQsIGlmIGFu eS4KKyAqLwordm9pZAorbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxp ZCkKK3sKKwlMb2dpY2FsUmVwV29ya2VyICp3b3JrZXI7CisKKwlMV0xvY2tBY3F1aXJlKExvZ2lj YWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOworCisJd29ya2VyID0gbG9naWNhbHJlcF93b3Jr ZXJfZmluZChzdWJpZCwgcmVsaWQsIGZhbHNlKTsKKworCWlmICh3b3JrZXIpCisJeworCQlBc3Nl cnQoIWlzUGFyYWxsZWxBcHBseVdvcmtlcih3b3JrZXIpKTsKKwkJbG9naWNhbHJlcF93b3JrZXJf c3RvcF9pbnRlcm5hbCh3b3JrZXIsIFNJR1RFUk0pOworCX0KKworCUxXTG9ja1JlbGVhc2UoTG9n aWNhbFJlcFdvcmtlckxvY2spOworfQorCisvKgorICogU3RvcCB0aGUgbG9naWNhbCByZXBsaWNh dGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgY29ycmVzcG9uZGluZyB0byB0aGUKKyAqIGlucHV0 IHNsb3QgbnVtYmVyLgorICoKKyAqIE5vZGUgdGhhdCB0aGUgZnVuY3Rpb24gc2VuZHMgU0lHSU5U IGluc3RlYWQgb2YgU0lHVEVSTSB0byB0aGUgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlciBzbyB0 aGF0IHRoZSB3b3JrZXIgZXhpdHMgY2xlYW5seS4KKyAqLwordm9pZAorbG9naWNhbHJlcF9wYV93 b3JrZXJfc3RvcChpbnQgc2xvdF9ubywgdWludDE2IGdlbmVyYXRpb24pCit7CisJTG9naWNhbFJl cFdvcmtlciAqd29ya2VyOworCisJQXNzZXJ0KHNsb3Rfbm8gPj0gMCAmJiBzbG90X25vIDwgbWF4 X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2Vycyk7CisKKwlMV0xvY2tBY3F1aXJlKExvZ2ljYWxS ZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOworCisJd29ya2VyID0gJkxvZ2ljYWxSZXBDdHgtPndv cmtlcnNbc2xvdF9ub107CisJQXNzZXJ0KGlzUGFyYWxsZWxBcHBseVdvcmtlcih3b3JrZXIpKTsK KworCS8qCisJICogT25seSBzdG9wIHRoZSB3b3JrZXIgaWYgdGhlIGdlbmVyYXRpb24gbWF0Y2hl cyBhbmQgdGhlIHdvcmtlciBpcyBhbGl2ZS4KKwkgKi8KKwlpZiAod29ya2VyLT5nZW5lcmF0aW9u ID09IGdlbmVyYXRpb24gJiYgd29ya2VyLT5wcm9jKQorCQlsb2dpY2FscmVwX3dvcmtlcl9zdG9w X2ludGVybmFsKHdvcmtlciwgU0lHSU5UKTsKIAogCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdv cmtlckxvY2spOwogfQpAQCAtNTk1LDExICs2NzYsNDAgQEAgbG9naWNhbHJlcF93b3JrZXJfYXR0 YWNoKGludCBzbG90KQogfQogCiAvKgotICogRGV0YWNoIHRoZSB3b3JrZXIgKGNsZWFucyB1cCB0 aGUgd29ya2VyIGluZm8pLgorICogU3RvcCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBpZiBh bnksIGFuZCBkZXRhY2ggdGhlIGxlYWRlciBhcHBseSB3b3JrZXIKKyAqIChjbGVhbnMgdXAgdGhl IHdvcmtlciBpbmZvKS4KICAqLwogc3RhdGljIHZvaWQKIGxvZ2ljYWxyZXBfd29ya2VyX2RldGFj aCh2b2lkKQogeworCS8qIFN0b3AgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuICovCisJaWYg KGFtX2xlYWRlcl9hcHBseV93b3JrZXIoKSkKKwl7CisJCUxpc3QJICAgKndvcmtlcnM7CisJCUxp c3RDZWxsICAgKmxjOworCisJCS8qCisJCSAqIERldGFjaCBmcm9tIHRoZSBlcnJvcl9tcV9oYW5k bGUgZm9yIGFsbCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzCisJCSAqIGJlZm9yZSB0ZXJtaW5hdGlu ZyB0aGVtLiBUaGlzIHByZXZlbnRzIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGZyb20KKwkJICog cmVjZWl2aW5nIHRoZSB3b3JrZXIgdGVybWluYXRpb24gbWVzc2FnZSBhbmQgc2VuZGluZyBpdCB0 byBsb2dzCisJCSAqIHdoZW4gdGhlIHNhbWUgaXMgYWxyZWFkeSBkb25lIGJ5IHRoZSBwYXJhbGxl bCB3b3JrZXIuCisJCSAqLworCQlwYV9kZXRhY2hfYWxsX2Vycm9yX21xKCk7CisKKwkJTFdMb2Nr QWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKKworCQl3b3JrZXJzID0g bG9naWNhbHJlcF93b3JrZXJzX2ZpbmQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgdHJ1ZSk7 CisJCWZvcmVhY2gobGMsIHdvcmtlcnMpCisJCXsKKwkJCUxvZ2ljYWxSZXBXb3JrZXIgKncgPSAo TG9naWNhbFJlcFdvcmtlciAqKSBsZmlyc3QobGMpOworCisJCQlpZiAoaXNQYXJhbGxlbEFwcGx5 V29ya2VyKHcpKQorCQkJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwodywgU0lHVEVS TSk7CisJCX0KKworCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKKwl9CisK IAkvKiBCbG9jayBjb25jdXJyZW50IGFjY2Vzcy4gKi8KIAlMV0xvY2tBY3F1aXJlKExvZ2ljYWxS ZXBXb3JrZXJMb2NrLCBMV19FWENMVVNJVkUpOwogCkBAIC02MjIsNiArNzMyLDggQEAgbG9naWNh bHJlcF93b3JrZXJfY2xlYW51cChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpCiAJd29ya2VyLT51 c2VyaWQgPSBJbnZhbGlkT2lkOwogCXdvcmtlci0+c3ViaWQgPSBJbnZhbGlkT2lkOwogCXdvcmtl ci0+cmVsaWQgPSBJbnZhbGlkT2lkOworCXdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCA9IEludmFs aWRQaWQ7CisJd29ya2VyLT5wYXJhbGxlbF9hcHBseSA9IGZhbHNlOwogfQogCiAvKgpAQCAtNjUz LDYgKzc2NSwxMyBAQCBsb2dpY2FscmVwX3dvcmtlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVtIGFy ZykKIAlpZiAoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCAhPSBOVUxMKQogCQlG aWxlU2V0RGVsZXRlQWxsKE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOwogCisJ LyoKKwkgKiBTZXNzaW9uIGxldmVsIGxvY2tzIG1heSBiZSBhY3F1aXJlZCBvdXRzaWRlIG9mIGEg dHJhbnNhY3Rpb24gaW4KKwkgKiBwYXJhbGxlbCBhcHBseSBtb2RlIGFuZCB3aWxsIG5vdCBiZSBy ZWxlYXNlZCB3aGVuIHRoZSB3b3JrZXIKKwkgKiB0ZXJtaW5hdGVzLCBzbyBtYW51YWxseSByZWxl YXNlIGFsbCBsb2NrcyBiZWZvcmUgdGhlIHdvcmtlciBleGl0cy4KKwkgKi8KKwlMb2NrUmVsZWFz ZUFsbChERUZBVUxUX0xPQ0tNRVRIT0QsIHRydWUpOworCiAJQXBwbHlMYXVuY2hlcldha2V1cCgp OwogfQogCkBAIC02ODEsNiArODAwLDMzIEBAIGxvZ2ljYWxyZXBfc3luY193b3JrZXJfY291bnQo T2lkIHN1YmlkKQogfQogCiAvKgorICogQ291bnQgdGhlIG51bWJlciBvZiByZWdpc3RlcmVkIChi dXQgbm90IG5lY2Vzc2FyaWx5IHJ1bm5pbmcpIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXJzIGZv ciBhIHN1YnNjcmlwdGlvbi4KKyAqLworc3RhdGljIGludAorbG9naWNhbHJlcF9wYV93b3JrZXJf Y291bnQoT2lkIHN1YmlkKQoreworCWludAkJCWk7CisJaW50CQkJcmVzID0gMDsKKworCUFzc2Vy dChMV0xvY2tIZWxkQnlNZShMb2dpY2FsUmVwV29ya2VyTG9jaykpOworCisJLyoKKwkgKiBTY2Fu IGFsbCBhdHRhY2hlZCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLCBvbmx5IGNvdW50aW5nIHRob3Nl IHdoaWNoCisJICogaGF2ZSB0aGUgZ2l2ZW4gc3Vic2NyaXB0aW9uIGlkLgorCSAqLworCWZvciAo aSA9IDA7IGkgPCBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzOyBpKyspCisJeworCQlM b2dpY2FsUmVwV29ya2VyICp3ID0gJkxvZ2ljYWxSZXBDdHgtPndvcmtlcnNbaV07CisKKwkJaWYg KHctPnN1YmlkID09IHN1YmlkICYmIGlzUGFyYWxsZWxBcHBseVdvcmtlcih3KSkKKwkJCXJlcysr OworCX0KKworCXJldHVybiByZXM7Cit9CisKKy8qCiAgKiBBcHBseUxhdW5jaGVyU2htZW1TaXpl CiAgKgkJQ29tcHV0ZSBzcGFjZSBuZWVkZWQgZm9yIHJlcGxpY2F0aW9uIGxhdW5jaGVyIHNoYXJl ZCBtZW1vcnkKICAqLwpAQCAtODY5LDcgKzEwMTUsNyBAQCBBcHBseUxhdW5jaGVyTWFpbihEYXR1 bSBtYWluX2FyZykKIAkJCQkJd2FpdF90aW1lID0gd2FsX3JldHJpZXZlX3JldHJ5X2ludGVydmFs OwogCiAJCQkJCWxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChzdWItPmRiaWQsIHN1Yi0+b2lkLCBz dWItPm5hbWUsCi0JCQkJCQkJCQkJCSBzdWItPm93bmVyLCBJbnZhbGlkT2lkKTsKKwkJCQkJCQkJ CQkJIHN1Yi0+b3duZXIsIEludmFsaWRPaWQsIERTTV9IQU5ETEVfSU5WQUxJRCk7CiAJCQkJfQog CQkJfQogCkBAIC05NTIsNiArMTA5OCwxMCBAQCBwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24oUEdf RlVOQ1RJT05fQVJHUykKIAkJaWYgKE9pZElzVmFsaWQoc3ViaWQpICYmIHdvcmtlci5zdWJpZCAh PSBzdWJpZCkKIAkJCWNvbnRpbnVlOwogCisJCS8qIFNraXAgaWYgdGhpcyBpcyBhIHBhcmFsbGVs IGFwcGx5IHdvcmtlciAqLworCQlpZiAoaXNQYXJhbGxlbEFwcGx5V29ya2VyKCZ3b3JrZXIpKQor CQkJY29udGludWU7CisKIAkJd29ya2VyX3BpZCA9IHdvcmtlci5wcm9jLT5waWQ7CiAKIAkJdmFs dWVzWzBdID0gT2JqZWN0SWRHZXREYXR1bSh3b3JrZXIuc3ViaWQpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbWVzb24uYnVpbGQKaW5kZXggNzE0NGQ3YS4uZDQ4Y2Q0YyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNvbi5idWlsZAorKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkCkBAIC0xLDYgKzEs NyBAQAogIyBDb3B5cmlnaHQgKGMpIDIwMjItMjAyMywgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxv cG1lbnQgR3JvdXAKIAogYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAorICAnYXBwbHlwYXJhbGxl bHdvcmtlci5jJywKICAgJ2RlY29kZS5jJywKICAgJ2xhdW5jaGVyLmMnLAogICAnbG9naWNhbC5j JywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jCmluZGV4IGZjODY3Njgu LmI3NTRjNDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3Jp Z2luLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYwpAQCAt MTA3NSwxMiArMTA3NSwyMCBAQCBSZXBsaWNhdGlvbk9yaWdpbkV4aXRDbGVhbnVwKGludCBjb2Rl LCBEYXR1bSBhcmcpCiAgKiBhcnJheSBkb2Vzbid0IGhhdmUgdG8gYmUgc2VhcmNoZWQgd2hlbiBj YWxsaW5nCiAgKiByZXBsb3JpZ2luX3Nlc3Npb25fYWR2YW5jZSgpLgogICoKLSAqIE9idmlvdXNs eSBvbmx5IG9uZSBzdWNoIGNhY2hlZCBvcmlnaW4gY2FuIGV4aXN0IHBlciBwcm9jZXNzIGFuZCB0 aGUgY3VycmVudAotICogY2FjaGVkIHZhbHVlIGNhbiBvbmx5IGJlIHNldCBhZ2FpbiBhZnRlciB0 aGUgcHJldmlvdXMgdmFsdWUgaXMgdG9ybiBkb3duCi0gKiB3aXRoIHJlcGxvcmlnaW5fc2Vzc2lv bl9yZXNldCgpLgorICogTm9ybWFsbHkgb25seSBvbmUgc3VjaCBjYWNoZWQgb3JpZ2luIGNhbiBl eGlzdCBwZXIgcHJvY2VzcyBzbyB0aGUgY2FjaGVkCisgKiB2YWx1ZSBjYW4gb25seSBiZSBzZXQg YWdhaW4gYWZ0ZXIgdGhlIHByZXZpb3VzIHZhbHVlIGlzIHRvcm4gZG93biB3aXRoCisgKiByZXBs b3JpZ2luX3Nlc3Npb25fcmVzZXQoKS4gRm9yIHRoaXMgbm9ybWFsIGNhc2UgcGFzcyBhY3F1aXJl ZF9ieSA9IDAKKyAqIChtZWFuaW5nIHRoZSBzbG90IGlzIG5vdCBhbGxvd2VkIHRvIGJlIGFscmVh ZHkgYWNxdWlyZWQgYnkgYW5vdGhlciBwcm9jZXNzKS4KKyAqCisgKiBIb3dldmVyLCBzb21ldGlt ZXMgbXVsdGlwbGUgcHJvY2Vzc2VzIGNhbiBzYWZlbHkgcmUtdXNlIHRoZSBzYW1lIG9yaWdpbiBz bG90CisgKiAoZm9yIGV4YW1wbGUsIG11bHRpcGxlIHBhcmFsbGVsIGFwcGx5IHByb2Nlc3NlcyBj YW4gc2FmZWx5IHVzZSB0aGUgc2FtZQorICogb3JpZ2luLCBwcm92aWRlZCB0aGV5IG1haW50YWlu IGNvbW1pdCBvcmRlciBieSBhbGxvd2luZyBvbmx5IG9uZSBwcm9jZXNzIHRvCisgKiBjb21taXQg YXQgYSB0aW1lKS4gRm9yIHRoaXMgY2FzZSB0aGUgZmlyc3QgcHJvY2VzcyBtdXN0IHBhc3MgYWNx dWlyZWRfYnkgPQorICogMCwgYW5kIHRoZW4gdGhlIG90aGVyIHByb2Nlc3NlcyBzaGFyaW5nIHRo YXQgc2FtZSBvcmlnaW4gY2FuIHBhc3MKKyAqIGFjcXVpcmVkX2J5ID0gUElEIG9mIHRoZSBmaXJz dCBwcm9jZXNzLgogICovCiB2b2lkCi1yZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2lu SWQgbm9kZSkKK3JlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlLCBpbnQg YWNxdWlyZWRfYnkpCiB7CiAJc3RhdGljIGJvb2wgcmVnaXN0ZXJlZF9jbGVhbnVwOwogCWludAkJ CWk7CkBAIC0xMTIyLDcgKzExMzAsNyBAQCByZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3Jp Z2luSWQgbm9kZSkKIAkJaWYgKGN1cnN0YXRlLT5yb2lkZW50ICE9IG5vZGUpCiAJCQljb250aW51 ZTsKIAotCQllbHNlIGlmIChjdXJzdGF0ZS0+YWNxdWlyZWRfYnkgIT0gMCkKKwkJZWxzZSBpZiAo Y3Vyc3RhdGUtPmFjcXVpcmVkX2J5ICE9IDAgJiYgYWNxdWlyZWRfYnkgPT0gMCkKIAkJewogCQkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfSU5fVVNFKSwKQEAg LTExNTMsNyArMTE2MSwxMSBAQCByZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQg bm9kZSkKIAogCUFzc2VydChzZXNzaW9uX3JlcGxpY2F0aW9uX3N0YXRlLT5yb2lkZW50ICE9IElu dmFsaWRSZXBPcmlnaW5JZCk7CiAKLQlzZXNzaW9uX3JlcGxpY2F0aW9uX3N0YXRlLT5hY3F1aXJl ZF9ieSA9IE15UHJvY1BpZDsKKwlpZiAoYWNxdWlyZWRfYnkgPT0gMCkKKwkJc2Vzc2lvbl9yZXBs aWNhdGlvbl9zdGF0ZS0+YWNxdWlyZWRfYnkgPSBNeVByb2NQaWQ7CisJZWxzZSBpZiAoc2Vzc2lv bl9yZXBsaWNhdGlvbl9zdGF0ZS0+YWNxdWlyZWRfYnkgIT0gYWNxdWlyZWRfYnkpCisJCWVsb2co RVJST1IsICJjb3VsZCBub3QgZmluZCByZXBsaWNhdGlvbiBzdGF0ZSBzbG90IGZvciByZXBsaWNh dGlvbiBvcmlnaW4gd2l0aCBPSUQgJXUgd2hpY2ggd2FzIGFjcXVpcmVkIGJ5ICVkIiwKKwkJCSBu b2RlLCBhY3F1aXJlZF9ieSk7CiAKIAlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9uT3JpZ2luTG9j ayk7CiAKQEAgLTEzMzcsNyArMTM0OSw3IEBAIHBnX3JlcGxpY2F0aW9uX29yaWdpbl9zZXNzaW9u X3NldHVwKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAluYW1lID0gdGV4dF90b19jc3RyaW5nKCh0ZXh0 ICopIERhdHVtR2V0UG9pbnRlcihQR19HRVRBUkdfREFUVU0oMCkpKTsKIAlvcmlnaW4gPSByZXBs b3JpZ2luX2J5X25hbWUobmFtZSwgZmFsc2UpOwotCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChv cmlnaW4pOworCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW4sIDApOwogCiAJcmVwbG9y aWdpbl9zZXNzaW9uX29yaWdpbiA9IG9yaWdpbjsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9wcm90by5jCmluZGV4IGQwMGU5MGQuLjNhOWQ1M2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3Byb3RvLmMKQEAgLTExNjQsMTAgKzExNjQsMTQgQEAgbG9naWNhbHJlcF9y ZWFkX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBpbiwgTG9naWNhbFJlcENvbW1pdERhdGEgKmNv bW1pdF9kYXRhKQogLyoKICAqIFdyaXRlIFNUUkVBTSBBQk9SVCB0byB0aGUgb3V0cHV0IHN0cmVh bS4gTm90ZSB0aGF0IHhpZCBhbmQgc3VieGlkIHdpbGwgYmUKICAqIHNhbWUgZm9yIHRoZSB0b3At bGV2ZWwgdHJhbnNhY3Rpb24gYWJvcnQuCisgKgorICogSWYgd3JpdGVfYWJvcnRfaW5mbyBpcyB0 cnVlLCBzZW5kIHRoZSBhYm9ydF9sc24gYW5kIGFib3J0X3RpbWUgZmllbGRzLAorICogb3RoZXJ3 aXNlIGRvbid0LgogICovCiB2b2lkCiBsb2dpY2FscmVwX3dyaXRlX3N0cmVhbV9hYm9ydChTdHJp bmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsCi0JCQkJCQkJICBUcmFuc2FjdGlvbklkIHN1 YnhpZCkKKwkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgc3VieGlkLCBYTG9nUmVjUHRyIGFib3J0X2xz biwKKwkJCQkJCQkgIFRpbWVzdGFtcFR6IGFib3J0X3RpbWUsIGJvb2wgd3JpdGVfYWJvcnRfaW5m bykKIHsKIAlwcV9zZW5kYnl0ZShvdXQsIExPR0lDQUxfUkVQX01TR19TVFJFQU1fQUJPUlQpOwog CkBAIC0xMTc2LDE5ICsxMTgwLDQwIEBAIGxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KFN0 cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwKIAkvKiB0cmFuc2FjdGlvbiBJRCAqLwog CXBxX3NlbmRpbnQzMihvdXQsIHhpZCk7CiAJcHFfc2VuZGludDMyKG91dCwgc3VieGlkKTsKKwor CWlmICh3cml0ZV9hYm9ydF9pbmZvKQorCXsKKwkJcHFfc2VuZGludDY0KG91dCwgYWJvcnRfbHNu KTsKKwkJcHFfc2VuZGludDY0KG91dCwgYWJvcnRfdGltZSk7CisJfQogfQogCiAvKgogICogUmVh ZCBTVFJFQU0gQUJPUlQgZnJvbSB0aGUgb3V0cHV0IHN0cmVhbS4KKyAqCisgKiBJZiByZWFkX2Fi b3J0X2luZm8gaXMgdHJ1ZSwgcmVhZCB0aGUgYWJvcnRfbHNuIGFuZCBhYm9ydF90aW1lIGZpZWxk cywKKyAqIG90aGVyd2lzZSBkb24ndC4KICAqLwogdm9pZAotbG9naWNhbHJlcF9yZWFkX3N0cmVh bV9hYm9ydChTdHJpbmdJbmZvIGluLCBUcmFuc2FjdGlvbklkICp4aWQsCi0JCQkJCQkJIFRyYW5z YWN0aW9uSWQgKnN1YnhpZCkKK2xvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQoU3RyaW5nSW5m byBpbiwKKwkJCQkJCQkgTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSAqYWJvcnRfZGF0YSwKKwkJ CQkJCQkgYm9vbCByZWFkX2Fib3J0X2luZm8pCiB7Ci0JQXNzZXJ0KHhpZCAmJiBzdWJ4aWQpOwor CUFzc2VydChhYm9ydF9kYXRhKTsKKworCWFib3J0X2RhdGEtPnhpZCA9IHBxX2dldG1zZ2ludChp biwgNCk7CisJYWJvcnRfZGF0YS0+c3VieGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsKIAotCSp4 aWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQpOwotCSpzdWJ4aWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQp OworCWlmIChyZWFkX2Fib3J0X2luZm8pCisJeworCQlhYm9ydF9kYXRhLT5hYm9ydF9sc24gPSBw cV9nZXRtc2dpbnQ2NChpbik7CisJCWFib3J0X2RhdGEtPmFib3J0X3RpbWUgPSBwcV9nZXRtc2dp bnQ2NChpbik7CisJfQorCWVsc2UKKwl7CisJCWFib3J0X2RhdGEtPmFib3J0X2xzbiA9IEludmFs aWRYTG9nUmVjUHRyOworCQlhYm9ydF9kYXRhLT5hYm9ydF90aW1lID0gMDsKKwl9CiB9CiAKIC8q CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZm ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCmlu ZGV4IGYyODRmYzIuLjY2ZmIwMzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC0yODczLDcgKzI4NzMsOCBAQCBSZW9yZGVyQnVmZmVy RmluaXNoUHJlcGFyZWQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogICog ZGlzay4KICAqLwogdm9pZAotUmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKnJiLCBU cmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCitSZW9yZGVyQnVmZmVyQWJvcnQoUmVv cmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkg ICBUaW1lc3RhbXBUeiBhYm9ydF90aW1lKQogewogCVJlb3JkZXJCdWZmZXJUWE4gKnR4bjsKIApA QCAtMjg4NCw2ICsyODg1LDggQEAgUmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKnJi LCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJaWYgKHR4biA9PSBOVUxMKQog CQlyZXR1cm47CiAKKwl0eG4tPnhhY3RfdGltZS5hYm9ydF90aW1lID0gYWJvcnRfdGltZTsKKwog CS8qIEZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgbm90aWZ5IHRoZSByZW1vdGUgbm9kZSBhYm91 dCB0aGUgYWJvcnQuICovCiAJaWYgKHJidHhuX2lzX3N0cmVhbWVkKHR4bikpCiAJewpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKaW5kZXggMDliM2U4Yi4uMzhk ZmNlNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5 bmMuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCkBA IC0xNCw3ICsxNCw3IEBACiAgKgkgIFRoZSBpbml0aWFsIGRhdGEgc3luY2hyb25pemF0aW9uIGlz IGRvbmUgc2VwYXJhdGVseSBmb3IgZWFjaCB0YWJsZSwKICAqCSAgaW4gYSBzZXBhcmF0ZSBhcHBs eSB3b3JrZXIgdGhhdCBvbmx5IGZldGNoZXMgdGhlIGluaXRpYWwgc25hcHNob3QgZGF0YQogICoJ ICBmcm9tIHRoZSBwdWJsaXNoZXIgYW5kIHRoZW4gc3luY2hyb25pemVzIHRoZSBwb3NpdGlvbiBp biB0aGUgc3RyZWFtIHdpdGgKLSAqCSAgdGhlIG1haW4gYXBwbHkgd29ya2VyLgorICoJICB0aGUg bGVhZGVyIGFwcGx5IHdvcmtlci4KICAqCiAgKgkgIFRoZXJlIGFyZSBzZXZlcmFsIHJlYXNvbnMg Zm9yIGRvaW5nIHRoZSBzeW5jaHJvbml6YXRpb24gdGhpcyB3YXk6CiAgKgkgICAtIEl0IGFsbG93 cyB1cyB0byBwYXJhbGxlbGl6ZSB0aGUgaW5pdGlhbCBkYXRhIHN5bmNocm9uaXphdGlvbgpAQCAt MTUzLDcgKzE1Myw3IEBAIGZpbmlzaF9zeW5jX3dvcmtlcih2b2lkKQogCQkJCQlnZXRfcmVsX25h bWUoTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxpZCkpKSk7CiAJQ29tbWl0VHJhbnNhY3Rpb25Db21t YW5kKCk7CiAKLQkvKiBGaW5kIHRoZSBtYWluIGFwcGx5IHdvcmtlciBhbmQgc2lnbmFsIGl0LiAq LworCS8qIEZpbmQgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHNpZ25hbCBpdC4gKi8KIAls b2dpY2FscmVwX3dvcmtlcl93YWtldXAoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgSW52YWxp ZE9pZCk7CiAKIAkvKiBTdG9wIGdyYWNlZnVsbHkgKi8KQEAgLTU4OCw3ICs1ODgsOCBAQCBwcm9j ZXNzX3N5bmNpbmdfdGFibGVzX2Zvcl9hcHBseShYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKQogCQkJ CQkJCQkJCQkJIE15U3Vic2NyaXB0aW9uLT5vaWQsCiAJCQkJCQkJCQkJCQkgTXlTdWJzY3JpcHRp b24tPm5hbWUsCiAJCQkJCQkJCQkJCQkgTXlMb2dpY2FsUmVwV29ya2VyLT51c2VyaWQsCi0JCQkJ CQkJCQkJCQkgcnN0YXRlLT5yZWxpZCk7CisJCQkJCQkJCQkJCQkgcnN0YXRlLT5yZWxpZCwKKwkJ CQkJCQkJCQkJCSBEU01fSEFORExFX0lOVkFMSUQpOwogCQkJCQkJaGVudHJ5LT5sYXN0X3N0YXJ0 X3RpbWUgPSBub3c7CiAJCQkJCX0KIAkJCQl9CkBAIC02MzYsNiArNjM3LDE0IEBAIHByb2Nlc3Nf c3luY2luZ190YWJsZXNfZm9yX2FwcGx5KFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiB2b2lkCiBw cm9jZXNzX3N5bmNpbmdfdGFibGVzKFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiB7CisJLyoKKwkg KiBTa2lwIGZvciBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGJlY2F1c2UgdGhleSBvbmx5IG9wZXJh dGUgb24gdGFibGVzCisJICogdGhhdCBhcmUgaW4gYSBSRUFEWSBzdGF0ZS4gU2VlIHBhX2Nhbl9z dGFydCgpIGFuZAorCSAqIHNob3VsZF9hcHBseV9jaGFuZ2VzX2Zvcl9yZWwoKS4KKwkgKi8KKwlp ZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJCXJldHVybjsKKwogCWlmIChhbV90YWJs ZXN5bmNfd29ya2VyKCkpCiAJCXByb2Nlc3Nfc3luY2luZ190YWJsZXNfZm9yX3N5bmMoY3VycmVu dF9sc24pOwogCWVsc2UKQEAgLTEyNTQsNyArMTI2Myw3IEBAIExvZ2ljYWxSZXBTeW5jVGFibGVT dGFydChYTG9nUmVjUHRyICpvcmlnaW5fc3RhcnRwb3MpCiAKIAkvKgogCSAqIEhlcmUgd2UgdXNl IHRoZSBzbG90IG5hbWUgaW5zdGVhZCBvZiB0aGUgc3Vic2NyaXB0aW9uIG5hbWUgYXMgdGhlCi0J ICogYXBwbGljYXRpb25fbmFtZSwgc28gdGhhdCBpdCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgbWFp biBhcHBseSB3b3JrZXIsCisJICogYXBwbGljYXRpb25fbmFtZSwgc28gdGhhdCBpdCBpcyBkaWZm ZXJlbnQgZnJvbSB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciwKIAkgKiBzbyB0aGF0IHN5bmNocm9u b3VzIHJlcGxpY2F0aW9uIGNhbiBkaXN0aW5ndWlzaCB0aGVtLgogCSAqLwogCUxvZ1JlcFdvcmtl cldhbFJjdkNvbm4gPQpAQCAtMTMwMiw3ICsxMzExLDcgQEAgTG9naWNhbFJlcFN5bmNUYWJsZVN0 YXJ0KFhMb2dSZWNQdHIgKm9yaWdpbl9zdGFydHBvcykKIAkJICogdGltZSB0aGlzIHRhYmxlc3lu YyB3YXMgbGF1bmNoZWQuCiAJCSAqLwogCQlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fYnlfbmFtZShv cmlnaW5uYW1lLCBmYWxzZSk7Ci0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCk7 CisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwgMCk7CiAJCXJlcGxvcmlnaW5f c2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW5pZDsKIAkJKm9yaWdpbl9zdGFydHBvcyA9IHJlcGxvcmln aW5fc2Vzc2lvbl9nZXRfcHJvZ3Jlc3MoZmFsc2UpOwogCkBAIC0xNDEzLDcgKzE0MjIsNyBAQCBM b2dpY2FsUmVwU3luY1RhYmxlU3RhcnQoWExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zKQogCQkJ CQkJICAgdHJ1ZSAvKiBnbyBiYWNrd2FyZCAqLyAsIHRydWUgLyogV0FMIGxvZyAqLyApOwogCQlV bmxvY2tSZWxhdGlvbk9pZChSZXBsaWNhdGlvbk9yaWdpblJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2 ZUxvY2spOwogCi0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCk7CisJCXJlcGxv cmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwgMCk7CiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9v cmlnaW4gPSBvcmlnaW5pZDsKIAl9CiAJZWxzZQpAQCAtMTQ2OCw4ICsxNDc3LDggQEAgY29weV90 YWJsZV9kb25lOgogCVNwaW5Mb2NrUmVsZWFzZSgmTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxtdXRl eCk7CiAKIAkvKgotCSAqIEZpbmFsbHksIHdhaXQgdW50aWwgdGhlIG1haW4gYXBwbHkgd29ya2Vy IHRlbGxzIHVzIHRvIGNhdGNoIHVwIGFuZCB0aGVuCi0JICogcmV0dXJuIHRvIGxldCBMb2dpY2Fs UmVwQXBwbHlMb29wIGRvIGl0LgorCSAqIEZpbmFsbHksIHdhaXQgdW50aWwgdGhlIGxlYWRlciBh cHBseSB3b3JrZXIgdGVsbHMgdXMgdG8gY2F0Y2ggdXAgYW5kCisJICogdGhlbiByZXR1cm4gdG8g bGV0IExvZ2ljYWxSZXBBcHBseUxvb3AgZG8gaXQuCiAJICovCiAJd2FpdF9mb3Jfd29ya2VyX3N0 YXRlX2NoYW5nZShTVUJSRUxfU1RBVEVfQ0FUQ0hVUCk7CiAJcmV0dXJuIHNsb3RuYW1lOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggZjg2NDllMS4uYWI5Mjdm OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0yMiw4ICsy MiwxMiBAQAogICogU1RSRUFNRUQgVFJBTlNBQ1RJT05TCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0KICAqIFN0cmVhbWVkIHRyYW5zYWN0aW9ucyAobGFyZ2UgdHJhbnNhY3Rpb25zIGV4Y2VlZGlu ZyBhIG1lbW9yeSBsaW1pdCBvbiB0aGUKLSAqIHVwc3RyZWFtKSBhcmUgbm90IGFwcGxpZWQgaW1t ZWRpYXRlbHksIGJ1dCBpbnN0ZWFkLCB0aGUgZGF0YSBpcyB3cml0dGVuCi0gKiB0byB0ZW1wb3Jh cnkgZmlsZXMgYW5kIHRoZW4gYXBwbGllZCBhdCBvbmNlIHdoZW4gdGhlIGZpbmFsIGNvbW1pdCBh cnJpdmVzLgorICogdXBzdHJlYW0pIGFyZSBhcHBsaWVkIHVzaW5nIG9uZSBvZiB0d28gYXBwcm9h Y2hlczoKKyAqCisgKiAxKSBXcml0ZSB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIGFwcGx5IHdoZW4g dGhlIGZpbmFsIGNvbW1pdCBhcnJpdmVzCisgKgorICogVGhpcyBhcHByb2FjaCBpcyB1c2VkIHdo ZW4gdGhlIHVzZXIgaGFzIHNldCB0aGUgc3Vic2NyaXB0aW9uJ3Mgc3RyZWFtaW5nCisgKiBvcHRp b24gYXMgb24uCiAgKgogICogVW5saWtlIHRoZSByZWd1bGFyIChub24tc3RyZWFtZWQpIGNhc2Us IGhhbmRsaW5nIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBoYXMKICAqIHRvIGhhbmRsZSBhYm9ydHMg b2YgYm90aCB0aGUgdG9wbGV2ZWwgdHJhbnNhY3Rpb24gYW5kIHN1YnRyYW5zYWN0aW9ucy4gVGhp cwpAQCAtNTAsNiArNTQsMTIgQEAKICAqIHRoZSBmaWxlIHdlIGRlc2lyZWQgYWNyb3NzIG11bHRp cGxlIHN0cmVhbS1vcGVuIGNhbGxzIGZvciB0aGUgc2FtZQogICogdHJhbnNhY3Rpb24uCiAgKgor ICogMikgUGFyYWxsZWwgYXBwbHkgd29ya2Vycy4KKyAqCisgKiBUaGlzIGFwcHJvYWNoIGlzIHVz ZWQgd2hlbiB0aGUgdXNlciBoYXMgc2V0IHRoZSBzdWJzY3JpcHRpb24ncyBzdHJlYW1pbmcKKyAq IG9wdGlvbiBhcyBwYXJhbGxlbC4gU2VlIGxvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIGZv ciBpbmZvcm1hdGlvbiBhYm91dAorICogdGhpcyBhcHByb2FjaC4KKyAqCiAgKiBUV09fUEhBU0Ug VFJBTlNBQ1RJT05TCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBUd28gcGhhc2UgdHJh bnNhY3Rpb25zIGFyZSByZXBsYXllZCBhdCBwcmVwYXJlIGFuZCB0aGVuIGNvbW1pdHRlZCBvcgpA QCAtMjMzLDcgKzI0Myw1MiBAQCB0eXBlZGVmIHN0cnVjdCBBcHBseUVycm9yQ2FsbGJhY2tBcmcK IAljaGFyCSAgICpvcmlnaW5fbmFtZTsKIH0gQXBwbHlFcnJvckNhbGxiYWNrQXJnOwogCi1zdGF0 aWMgQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZyA9CisvKgor ICogVGhlIGFjdGlvbiB0byBiZSB0YWtlbiBmb3IgdGhlIGNoYW5nZXMgaW4gdGhlIHRyYW5zYWN0 aW9uLgorICoKKyAqIFRSQU5TX0xFQURFUl9BUFBMWToKKyAqIFRoaXMgYWN0aW9uIG1lYW5zIHRo YXQgd2UgYXJlIGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBjaGFuZ2VzIG9mIHRoZQor ICogdHJhbnNhY3Rpb24gYXJlIGFwcGxpZWQgZGlyZWN0bHkgYnkgdGhlIHdvcmtlci4KKyAqCisg KiBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgorICogVGhpcyBhY3Rpb24gbWVhbnMgdGhhdCB3ZSBh cmUgaW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgb3IgdGFibGUgc3luYworICogd29ya2VyLiBD aGFuZ2VzIGFyZSB3cml0dGVuIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBsaWVkIHdo ZW4gdGhlCisgKiBmaW5hbCBjb21taXQgYXJyaXZlcy4KKyAqCisgKiBUUkFOU19MRUFERVJfU0VO RF9UT19QQVJBTExFTDoKKyAqIFRoaXMgYWN0aW9uIG1lYW5zIHRoYXQgd2UgYXJlIGluIHRoZSBs ZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBuZWVkIHRvIHNlbmQKKyAqIHRoZSBjaGFuZ2VzIHRvIHRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKgorICogVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VS SUFMSVpFOgorICogVGhpcyBhY3Rpb24gbWVhbnMgdGhhdCB3ZSBhcmUgaW4gdGhlIGxlYWRlciBh cHBseSB3b3JrZXIgYW5kIGhhdmUgc2VudCBzb21lCisgKiBjaGFuZ2VzIGRpcmVjdGx5IHRvIHRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgYW5kIHRoZSByZW1haW5pbmcgY2hhbmdlcyBhcmUKKyAq IHNlcmlhbGl6ZWQgdG8gYSBmaWxlLCBkdWUgdG8gdGltZW91dCB3aGlsZSBzZW5kaW5nIGRhdGEu IFRoZSBwYXJhbGxlbCBhcHBseQorICogd29ya2VyIHdpbGwgYXBwbHkgdGhlc2Ugc2VyaWFsaXpl ZCBjaGFuZ2VzIHdoZW4gdGhlIGZpbmFsIGNvbW1pdCBhcnJpdmVzLgorICoKKyAqIFdlIGNhbid0 IHVzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFIGZvciB0aGlzIGNhc2UgYmVjYXVzZSwgaW4gYWRk aXRpb24gdG8KKyAqIHNlcmlhbGl6aW5nIGNoYW5nZXMsIHRoZSBsZWFkZXIgd29ya2VyIGFsc28g bmVlZHMgdG8gc2VyaWFsaXplIHRoZQorICogU1RSRUFNX1hYWCBtZXNzYWdlIHRvIGEgZmlsZSwg YW5kIHdhaXQgZm9yIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdG8KKyAqIGZpbmlzaCB0aGUg dHJhbnNhY3Rpb24gd2hlbiBwcm9jZXNzaW5nIHRoZSB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFu ZC4gU28KKyAqIHRoaXMgbmV3IGFjdGlvbiB3YXMgaW50cm9kdWNlZCB0byBrZWVwIHRoZSBjb2Rl IGFuZCBsb2dpYyBjbGVhci4KKyAqCisgKiBUUkFOU19QQVJBTExFTF9BUFBMWToKKyAqIFRoaXMg YWN0aW9uIG1lYW5zIHRoYXQgd2UgYXJlIGluIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgYW5k IGNoYW5nZXMgb2YKKyAqIHRoZSB0cmFuc2FjdGlvbiBhcmUgYXBwbGllZCBkaXJlY3RseSBieSB0 aGUgd29ya2VyLgorICovCit0eXBlZGVmIGVudW0KK3sKKwkvKiBUaGUgYWN0aW9uIGZvciBub24t c3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4gKi8KKwlUUkFOU19MRUFERVJfQVBQTFksCisKKwkvKiBB Y3Rpb25zIGZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zLiAqLworCVRSQU5TX0xFQURFUl9TRVJJ QUxJWkUsCisJVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUwsCisJVFJBTlNfTEVBREVSX1BB UlRJQUxfU0VSSUFMSVpFLAorCVRSQU5TX1BBUkFMTEVMX0FQUExZCit9IFRyYW5zQXBwbHlBY3Rp b247CisKKy8qIGVycmNvbnRleHQgdHJhY2tlciAqLworQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFw cGx5X2Vycm9yX2NhbGxiYWNrX2FyZyA9CiB7CiAJLmNvbW1hbmQgPSAwLAogCS5yZWwgPSBOVUxM LApAQCAtMjQzLDcgKzI5OCw5IEBAIHN0YXRpYyBBcHBseUVycm9yQ2FsbGJhY2tBcmcgYXBwbHlf ZXJyb3JfY2FsbGJhY2tfYXJnID0KIAkub3JpZ2luX25hbWUgPSBOVUxMLAogfTsKIAotc3RhdGlj IE1lbW9yeUNvbnRleHQgQXBwbHlNZXNzYWdlQ29udGV4dCA9IE5VTEw7CitFcnJvckNvbnRleHRD YWxsYmFjayAqYXBwbHlfZXJyb3JfY29udGV4dF9zdGFjayA9IE5VTEw7CisKK01lbW9yeUNvbnRl eHQgQXBwbHlNZXNzYWdlQ29udGV4dCA9IE5VTEw7CiBNZW1vcnlDb250ZXh0IEFwcGx5Q29udGV4 dCA9IE5VTEw7CiAKIC8qIHBlciBzdHJlYW0gY29udGV4dCBmb3Igc3RyZWFtaW5nIHRyYW5zYWN0 aW9ucyAqLwpAQCAtMjY1LDE2ICszMjIsMjUgQEAgc3RhdGljIGJvb2wgaW5fc3RyZWFtZWRfdHJh bnNhY3Rpb24gPSBmYWxzZTsKIHN0YXRpYyBUcmFuc2FjdGlvbklkIHN0cmVhbV94aWQgPSBJbnZh bGlkVHJhbnNhY3Rpb25JZDsKIAogLyoKKyAqIFRoZSBudW1iZXIgb2YgY2hhbmdlcyBhcHBsaWVk IGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBkdXJpbmcgb25lIHN0cmVhbWluZworICogYmxvY2su CisgKi8KK3N0YXRpYyB1aW50MzIgcGFyYWxsZWxfc3RyZWFtX25jaGFuZ2VzID0gMDsKKworLyoK ICAqIFdlIGVuYWJsZSBza2lwcGluZyBhbGwgZGF0YSBtb2RpZmljYXRpb24gY2hhbmdlcyAoSU5T RVJULCBVUERBVEUsIGV0Yy4pIGZvcgogICogdGhlIHN1YnNjcmlwdGlvbiBpZiB0aGUgcmVtb3Rl IHRyYW5zYWN0aW9uJ3MgZmluaXNoIExTTiBtYXRjaGVzIHRoZSBzdWJza2lwbHNuLgogICogT25j ZSB3ZSBzdGFydCBza2lwcGluZyBjaGFuZ2VzLCB3ZSBkb24ndCBzdG9wIGl0IHVudGlsIHdlIHNr aXAgYWxsIGNoYW5nZXMgb2YKICAqIHRoZSB0cmFuc2FjdGlvbiBldmVuIGlmIHBnX3N1YnNjcmlw dGlvbiBpcyB1cGRhdGVkIGFuZCBNeVN1YnNjcmlwdGlvbi0+c2tpcGxzbgotICogZ2V0cyBjaGFu Z2VkIG9yIHJlc2V0IGR1cmluZyB0aGF0LiBBbHNvLCBpbiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24g Y2FzZXMsIHdlCi0gKiBkb24ndCBza2lwIHJlY2VpdmluZyBhbmQgc3Bvb2xpbmcgdGhlIGNoYW5n ZXMgc2luY2Ugd2UgZGVjaWRlIHdoZXRoZXIgb3Igbm90CisgKiBnZXRzIGNoYW5nZWQgb3IgcmVz ZXQgZHVyaW5nIHRoYXQuIEFsc28sIGluIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBjYXNlcyAoc3Ry ZWFtaW5nID0gb24pLAorICogd2UgZG9uJ3Qgc2tpcCByZWNlaXZpbmcgYW5kIHNwb29saW5nIHRo ZSBjaGFuZ2VzIHNpbmNlIHdlIGRlY2lkZSB3aGV0aGVyIG9yIG5vdAogICogdG8gc2tpcCBhcHBs eWluZyB0aGUgY2hhbmdlcyB3aGVuIHN0YXJ0aW5nIHRvIGFwcGx5IGNoYW5nZXMuIFRoZSBzdWJz a2lwbHNuIGlzCiAgKiBjbGVhcmVkIGFmdGVyIHN1Y2Nlc3NmdWxseSBza2lwcGluZyB0aGUgdHJh bnNhY3Rpb24gb3IgYXBwbHlpbmcgbm9uLWVtcHR5CiAgKiB0cmFuc2FjdGlvbi4gVGhlIGxhdHRl ciBwcmV2ZW50cyB0aGUgbWlzdGFrZW5seSBzcGVjaWZpZWQgc3Vic2tpcGxzbiBmcm9tCi0gKiBi ZWluZyBsZWZ0LgorICogYmVpbmcgbGVmdC4gTm90ZSB0aGF0IHdlIGNhbm5vdCBza2lwIHRoZSBz dHJlYW1pbmcgdHJhbnNhY3Rpb25zIHdoZW4gdXNpbmcKKyAqIHBhcmFsbGVsIGFwcGx5IHdvcmtl cnMgYmVjYXVzZSB3ZSBjYW5ub3QgZ2V0IHRoZSBmaW5pc2ggTFNOIGJlZm9yZSBhcHBseWluZwor ICogdGhlIGNoYW5nZXMuIFNvLCB3ZSBkb24ndCBzdGFydCBwYXJhbGxlbCBhcHBseSB3b3JrZXIg d2hlbiBmaW5pc2ggTFNOIGlzIHNldAorICogYnkgdGhlIHVzZXIuCiAgKi8KIHN0YXRpYyBYTG9n UmVjUHRyIHNraXBfeGFjdF9maW5pc2hfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAjZGVmaW5l IGlzX3NraXBwaW5nX2NoYW5nZXMoKSAodW5saWtlbHkoIVhMb2dSZWNQdHJJc0ludmFsaWQoc2tp cF94YWN0X2ZpbmlzaF9sc24pKSkKQEAgLTMxNCwyMyArMzgwLDE2IEBAIHN0YXRpYyBpbmxpbmUg dm9pZCBjbGVhbnVwX3N1YnhhY3RfaW5mbyh2b2lkKTsKIC8qCiAgKiBTZXJpYWxpemUgYW5kIGRl c2VyaWFsaXplIGNoYW5nZXMgZm9yIGEgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCiAgKi8KLXN0YXRp YyB2b2lkIHN0cmVhbV9jbGVhbnVwX2ZpbGVzKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQp Owogc3RhdGljIHZvaWQgc3RyZWFtX29wZW5fZmlsZShPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQg eGlkLAogCQkJCQkJCSBib29sIGZpcnN0X3NlZ21lbnQpOwogc3RhdGljIHZvaWQgc3RyZWFtX3dy aXRlX2NoYW5nZShjaGFyIGFjdGlvbiwgU3RyaW5nSW5mbyBzKTsKK3N0YXRpYyB2b2lkIHN0cmVh bV9vcGVuX2FuZF93cml0ZV9jaGFuZ2UoVHJhbnNhY3Rpb25JZCB4aWQsIGNoYXIgYWN0aW9uLCBT dHJpbmdJbmZvIHMpOwogc3RhdGljIHZvaWQgc3RyZWFtX2Nsb3NlX2ZpbGUodm9pZCk7CiAKIHN0 YXRpYyB2b2lkIHNlbmRfZmVlZGJhY2soWExvZ1JlY1B0ciByZWN2cG9zLCBib29sIGZvcmNlLCBi b29sIHJlcXVlc3RSZXBseSk7CiAKLXN0YXRpYyB2b2lkIHN0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhM b2dSZWNQdHIgcmVtb3RlX2xzbik7Ci0KLXN0YXRpYyB2b2lkIG1heWJlX3JlcmVhZF9zdWJzY3Jp cHRpb24odm9pZCk7Ci0KIHN0YXRpYyB2b2lkIERpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KHZv aWQpOwogCi0vKiBwcm90b3R5cGUgbmVlZGVkIGJlY2F1c2Ugb2Ygc3RyZWFtX2NvbW1pdCAqLwot c3RhdGljIHZvaWQgYXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBzKTsKLQogc3RhdGljIHZvaWQg YXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbChMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0 X2RhdGEpOwogc3RhdGljIHZvaWQgYXBwbHlfaGFuZGxlX2luc2VydF9pbnRlcm5hbChBcHBseUV4 ZWN1dGlvbkRhdGEgKmVkYXRhLAogCQkJCQkJCQkJCSBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLApA QCAtMzU0LDE5ICs0MTMsMzIgQEAgc3RhdGljIHZvaWQgYXBwbHlfaGFuZGxlX3R1cGxlX3JvdXRp bmcoQXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwKIC8qIENvbXB1dGUgR0lEIGZvciB0d29fcGhh c2UgdHJhbnNhY3Rpb25zICovCiBzdGF0aWMgdm9pZCBUd29QaGFzZVRyYW5zYWN0aW9uR2lkKE9p ZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQsIGNoYXIgKmdpZCwgaW50IHN6Z2lkKTsKIAotLyog Q29tbW9uIHN0cmVhbWluZyBmdW5jdGlvbiB0byBhcHBseSBhbGwgdGhlIHNwb29sZWQgbWVzc2Fn ZXMgKi8KLXN0YXRpYyB2b2lkIGFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoVHJhbnNhY3Rpb25JZCB4 aWQsIFhMb2dSZWNQdHIgbHNuKTsKLQogLyogRnVuY3Rpb25zIGZvciBza2lwcGluZyBjaGFuZ2Vz ICovCiBzdGF0aWMgdm9pZCBtYXliZV9zdGFydF9za2lwcGluZ19jaGFuZ2VzKFhMb2dSZWNQdHIg ZmluaXNoX2xzbik7CiBzdGF0aWMgdm9pZCBzdG9wX3NraXBwaW5nX2NoYW5nZXModm9pZCk7CiBz dGF0aWMgdm9pZCBjbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0ciBmaW5pc2hf bHNuKTsKIAogLyogRnVuY3Rpb25zIGZvciBhcHBseSBlcnJvciBjYWxsYmFjayAqLwotc3RhdGlj IHZvaWQgYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKIHN0YXRpYyBpbmxpbmUgdm9p ZCBzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVj UHRyIGxzbik7CiBzdGF0aWMgaW5saW5lIHZvaWQgcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9p bmZvKHZvaWQpOwogCitzdGF0aWMgVHJhbnNBcHBseUFjdGlvbiBnZXRfdHJhbnNhY3Rpb25fYXBw bHlfYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkJCQkJCQkJCSBQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqKndpbmZvKTsKKworLyoKKyAqIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgbG9n aWNhbCByZXBsaWNhdGlvbiB3b3JrZXIuCisgKi8KK3N0YXRpYyBjb25zdCBjaGFyICoKK2dldF93 b3JrZXJfbmFtZSh2b2lkKQoreworCWlmIChhbV90YWJsZXN5bmNfd29ya2VyKCkpCisJCXJldHVy biBfKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHRhYmxlIHN5bmNocm9uaXphdGlvbiB3b3JrZXIiKTsK KwllbHNlIGlmIChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKKwkJcmV0dXJuIF8oImxvZ2lj YWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIik7CisJZWxzZQorCQlyZXR1cm4g XygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIiKTsKK30KKwogLyoKICAqIEZvcm0g dGhlIG9yaWdpbiBuYW1lIGZvciB0aGUgc3Vic2NyaXB0aW9uLgogICoKQEAgLTM5NiwxOSArNDY4 LDQzIEBAIFJlcGxpY2F0aW9uT3JpZ2luTmFtZUZvckxvZ2ljYWxSZXAoT2lkIHN1Ym9pZCwgT2lk IHJlbGlkLAogICoKICAqIFRoaXMgaXMgbWFpbmx5IG5lZWRlZCBmb3IgaW5pdGlhbCByZWxhdGlv biBkYXRhIHN5bmMgYXMgdGhhdCBydW5zIGluCiAgKiBzZXBhcmF0ZSB3b3JrZXIgcHJvY2VzcyBy dW5uaW5nIGluIHBhcmFsbGVsIGFuZCB3ZSBuZWVkIHNvbWUgd2F5IHRvIHNraXAKLSAqIGNoYW5n ZXMgY29taW5nIHRvIHRoZSBtYWluIGFwcGx5IHdvcmtlciBkdXJpbmcgdGhlIHN5bmMgb2YgYSB0 YWJsZS4KKyAqIGNoYW5nZXMgY29taW5nIHRvIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGR1cmlu ZyB0aGUgc3luYyBvZiBhIHRhYmxlLgogICoKICAqIE5vdGUgd2UgbmVlZCB0byBkbyBzbWFsbGVy IG9yIGVxdWFscyBjb21wYXJpc29uIGZvciBTWU5DRE9ORSBzdGF0ZSBiZWNhdXNlCiAgKiBpdCBt aWdodCBob2xkIHBvc2l0aW9uIG9mIGVuZCBvZiBpbml0aWFsIHNsb3QgY29uc2lzdGVudCBwb2lu dCBXQUwKICAqIHJlY29yZCArIDEgKGllIHN0YXJ0IG9mIG5leHQgcmVjb3JkKSBhbmQgbmV4dCBy ZWNvcmQgY2FuIGJlIENPTU1JVCBvZgogICogdHJhbnNhY3Rpb24gd2UgYXJlIG5vdyBwcm9jZXNz aW5nICh3aGljaCBpcyB3aGF0IHdlIHNldCByZW1vdGVfZmluYWxfbHNuCiAgKiB0byBpbiBhcHBs eV9oYW5kbGVfYmVnaW4pLgorICoKKyAqIE5vdGUgdGhhdCBmb3Igc3RyZWFtaW5nIHRyYW5zYWN0 aW9ucyB0aGF0IGFyZSBiZWluZyBhcHBsaWVkIGluIHRoZSBwYXJhbGxlbAorICogYXBwbHkgd29y a2VyLCB3ZSBkaXNhbGxvdyBhcHBseWluZyBjaGFuZ2VzIGlmIHRoZSB0YXJnZXQgdGFibGUgaW4g dGhlCisgKiBzdWJzY3JpcHRpb24gaXMgbm90IGluIHRoZSBSRUFEWSBzdGF0ZSwgYmVjYXVzZSB3 ZSBjYW5ub3QgZGVjaWRlIHdoZXRoZXIgdG8KKyAqIGFwcGx5IHRoZSBjaGFuZ2UgYXMgd2Ugd29u J3Qga25vdyByZW1vdGVfZmluYWxfbHNuIGJ5IHRoYXQgdGltZS4KKyAqCisgKiBXZSBhbHJlYWR5 IGNoZWNrZWQgdGhpcyBpbiBwYV9jYW5fc3RhcnQoKSBiZWZvcmUgYXNzaWduaW5nIHRoZQorICog c3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIHRoZSBwYXJhbGxlbCB3b3JrZXIsIGJ1dCBpdCBhbHNv IG5lZWRzIHRvIGJlCisgKiBjaGVja2VkIGhlcmUgYmVjYXVzZSBpZiB0aGUgdXNlciBleGVjdXRl cyBBTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0gKKyAqIFBVQkxJQ0FUSU9OIGluIHBhcmFs bGVsLCB0aGUgbmV3IHRhYmxlIGNhbiBiZSBhZGRlZCB0byBwZ19zdWJzY3JpcHRpb25fcmVsCisg KiB3aGlsZSBhcHBseWluZyB0aGlzIHRyYW5zYWN0aW9uLgogICovCiBzdGF0aWMgYm9vbAogc2hv dWxkX2FwcGx5X2NoYW5nZXNfZm9yX3JlbChMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbCkKIHsK IAlpZiAoYW1fdGFibGVzeW5jX3dvcmtlcigpKQogCQlyZXR1cm4gTXlMb2dpY2FsUmVwV29ya2Vy LT5yZWxpZCA9PSByZWwtPmxvY2FscmVsb2lkOworCWVsc2UgaWYgKGFtX3BhcmFsbGVsX2FwcGx5 X3dvcmtlcigpKQorCXsKKwkJLyogV2UgZG9uJ3Qgc3luY2hyb25pemUgcmVsJ3MgdGhhdCBhcmUg aW4gdW5rbm93biBzdGF0ZS4gKi8KKwkJaWYgKHJlbC0+c3RhdGUgIT0gU1VCUkVMX1NUQVRFX1JF QURZICYmCisJCQlyZWwtPnN0YXRlICE9IFNVQlJFTF9TVEFURV9VTktOT1dOKQorCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lU RV9TVEFURSksCisJCQkJCSBlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBw bHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgc3RvcCIsCisJCQkJCQkJTXlT dWJzY3JpcHRpb24tPm5hbWUpLAorCQkJCQkgZXJyZGV0YWlsKCJDYW5ub3QgaGFuZGxlIHN0cmVh bWVkIHJlcGxpY2F0aW9uIHRyYW5zYWN0aW9ucyB1c2luZyBwYXJhbGxlbCBhcHBseSB3b3JrZXJz IHVudGlsIGFsbCB0YWJsZXMgaGF2ZSBiZWVuIHN5bmNocm9uaXplZC4iKSkpOworCisJCXJldHVy biByZWwtPnN0YXRlID09IFNVQlJFTF9TVEFURV9SRUFEWTsKKwl9CiAJZWxzZQogCQlyZXR1cm4g KHJlbC0+c3RhdGUgPT0gU1VCUkVMX1NUQVRFX1JFQURZIHx8CiAJCQkJKHJlbC0+c3RhdGUgPT0g U1VCUkVMX1NUQVRFX1NZTkNET05FICYmCkBAIC00NTQsNDMgKzU1MCwxMTAgQEAgZW5kX3JlcGxp Y2F0aW9uX3N0ZXAodm9pZCkKIH0KIAogLyoKLSAqIEhhbmRsZSBzdHJlYW1lZCB0cmFuc2FjdGlv bnMuCisgKiBIYW5kbGUgc3RyZWFtZWQgdHJhbnNhY3Rpb25zIGZvciBib3RoIHRoZSBsZWFkZXIg YXBwbHkgd29ya2VyIGFuZCB0aGUKKyAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuCisgKgorICog SW4gdGhlIHN0cmVhbWluZyBjYXNlIChyZWNlaXZpbmcgYSBibG9jayBvZiB0aGUgc3RyZWFtZWQg dHJhbnNhY3Rpb24pLCBmb3IKKyAqIHNlcmlhbGl6ZSBtb2RlLCBzaW1wbHkgcmVkaXJlY3QgaXQg dG8gYSBmaWxlIGZvciB0aGUgcHJvcGVyIHRvcGxldmVsCisgKiB0cmFuc2FjdGlvbiwgYW5kIGZv ciBwYXJhbGxlbCBtb2RlLCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB3aWxsIHNlbmQgdGhlCisg KiBjaGFuZ2VzIHRvIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgYW5kIHRoZSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIgd2lsbCBkZWZpbmUKKyAqIHNhdmVwb2ludHMgaWYgbmVlZGVkLiAoTE9HSUNBTF9S RVBfTVNHX1JFTEFUSU9OIG9yIExPR0lDQUxfUkVQX01TR19UWVBFCisgKiBtZXNzYWdlcyB3aWxs IGJlIGFwcGxpZWQgYnkgYm90aCBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBwYXJhbGxlbCBhcHBs eQorICogd29ya2VycykuCiAgKgotICogSWYgaW4gc3RyZWFtaW5nIG1vZGUgKHJlY2VpdmluZyBh IGJsb2NrIG9mIHN0cmVhbWVkIHRyYW5zYWN0aW9uKSwgd2UKLSAqIHNpbXBseSByZWRpcmVjdCBp dCB0byBhIGZpbGUgZm9yIHRoZSBwcm9wZXIgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCisgKiBSZXR1 cm5zIHRydWUgZm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyAod2hlbiB0aGUgY2hhbmdlIGlzIGVp dGhlciBzZXJpYWxpemVkCisgKiB0byBmaWxlIG9yIHNlbnQgdG8gcGFyYWxsZWwgYXBwbHkgd29y a2VyKSwgZmFsc2Ugb3RoZXJ3aXNlIChyZWd1bGFyIG1vZGUgb3IKKyAqIG5lZWRzIHRvIGJlIHBy b2Nlc3NlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIpLgogICoKLSAqIFJldHVybnMgdHJ1ZSBm b3Igc3RyZWFtZWQgdHJhbnNhY3Rpb25zLCBmYWxzZSBvdGhlcndpc2UgKHJlZ3VsYXIgbW9kZSku CisgKiBFeGNlcHRpb246IElmIHRoZSBtZXNzYWdlIGJlaW5nIHByb2Nlc3NlZCBpcyBMT0dJQ0FM X1JFUF9NU0dfUkVMQVRJT04KKyAqIG9yIExPR0lDQUxfUkVQX01TR19UWVBFLCByZXR1cm4gZmFs c2UgZXZlbiBpZiB0aGUgbWVzc2FnZSBuZWVkcyB0byBiZSBzZW50CisgKiB0byBhIHBhcmFsbGVs IGFwcGx5IHdvcmtlci4KICAqLwogc3RhdGljIGJvb2wKIGhhbmRsZV9zdHJlYW1lZF90cmFuc2Fj dGlvbihMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24sIFN0cmluZ0luZm8gcykKIHsKLQlUcmFuc2Fj dGlvbklkIHhpZDsKKwlUcmFuc2FjdGlvbklkIGN1cnJlbnRfeGlkOworCVBhcmFsbGVsQXBwbHlX b3JrZXJJbmZvICp3aW5mbzsKKwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKKwlTdHJp bmdJbmZvRGF0YSBvcmlnaW5hbF9tc2c7CisKKwlhcHBseV9hY3Rpb24gPSBnZXRfdHJhbnNhY3Rp b25fYXBwbHlfYWN0aW9uKHN0cmVhbV94aWQsICZ3aW5mbyk7CiAKIAkvKiBub3QgaW4gc3RyZWFt aW5nIG1vZGUgKi8KLQlpZiAoIWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQorCWlmIChhcHBseV9h Y3Rpb24gPT0gVFJBTlNfTEVBREVSX0FQUExZKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlBc3NlcnQo c3RyZWFtX2ZkICE9IE5VTEwpOwogCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChzdHJlYW1f eGlkKSk7CiAKIAkvKgorCSAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgbmVlZHMgdGhlIHhp ZCBpbiB0aGlzIG1lc3NhZ2UgdG8gZGVjaWRlCisJICogd2hldGhlciB0byBkZWZpbmUgYSBzYXZl cG9pbnQsIHNvIHNhdmUgdGhlIG9yaWdpbmFsIG1lc3NhZ2UgdGhhdCBoYXMKKwkgKiBub3QgbW92 ZWQgdGhlIGN1cnNvciBhZnRlciB0aGUgeGlkLiBXZSB3aWxsIHNlcmlhbGl6ZSB0aGlzIG1lc3Nh Z2UgdG8gYQorCSAqIGZpbGUgaW4gUEFSVElBTF9TRVJJQUxJWkUgbW9kZS4KKwkgKi8KKwlvcmln aW5hbF9tc2cgPSAqczsKKworCS8qCiAJICogV2Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgWElEIG9m IHRoZSBzdWJ4YWN0IGFzIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZQogCSAqIG1lc3NhZ2UsIHNvIGV4 dHJhY3QgaXQuCiAJICovCi0JeGlkID0gcHFfZ2V0bXNnaW50KHMsIDQpOworCWN1cnJlbnRfeGlk ID0gcHFfZ2V0bXNnaW50KHMsIDQpOwogCi0JaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQp KQorCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoY3VycmVudF94aWQpKQogCQllcmVwb3J0KEVS Uk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKIAkJCQkgZXJy bXNnX2ludGVybmFsKCJpbnZhbGlkIHRyYW5zYWN0aW9uIElEIGluIHN0cmVhbWVkIHJlcGxpY2F0 aW9uIHRyYW5zYWN0aW9uIikpKTsKIAotCS8qIEFkZCB0aGUgbmV3IHN1YnhhY3QgdG8gdGhlIGFy cmF5ICh1bmxlc3MgYWxyZWFkeSB0aGVyZSkuICovCi0Jc3VieGFjdF9pbmZvX2FkZCh4aWQpOwor CXN3aXRjaCAoYXBwbHlfYWN0aW9uKQorCXsKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpF OgorCQkJQXNzZXJ0KHN0cmVhbV9mZCk7CiAKLQkvKiB3cml0ZSB0aGUgY2hhbmdlIHRvIHRoZSBj dXJyZW50IGZpbGUgKi8KLQlzdHJlYW1fd3JpdGVfY2hhbmdlKGFjdGlvbiwgcyk7CisJCQkvKiBB ZGQgdGhlIG5ldyBzdWJ4YWN0IHRvIHRoZSBhcnJheSAodW5sZXNzIGFscmVhZHkgdGhlcmUpLiAq LworCQkJc3VieGFjdF9pbmZvX2FkZChjdXJyZW50X3hpZCk7CisKKwkJCS8qIFdyaXRlIHRoZSBj aGFuZ2UgdG8gdGhlIGN1cnJlbnQgZmlsZSAqLworCQkJc3RyZWFtX3dyaXRlX2NoYW5nZShhY3Rp b24sIHMpOworCQkJcmV0dXJuIHRydWU7CisKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19Q QVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCS8qCisJCQkgKiBYWFggVGhlIHB1Ymxp c2hlciBzaWRlIGRvZXNuJ3QgYWx3YXlzIHNlbmQgcmVsYXRpb24vdHlwZSB1cGRhdGUKKwkJCSAq IG1lc3NhZ2VzIGFmdGVyIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIHNvIGFsc28gdXBkYXRl IHRoZQorCQkJICogcmVsYXRpb24vdHlwZSBpbiBsZWFkZXIgYXBwbHkgd29ya2VyLiBTZWUgZnVu Y3Rpb24KKwkJCSAqIGNsZWFudXBfcmVsX3N5bmNfY2FjaGUuCisJCQkgKi8KKwkJCWlmIChwYV9z ZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkpCisJCQkJcmV0dXJuIChhY3Rpb24gIT0g TE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OICYmCisJCQkJCQlhY3Rpb24gIT0gTE9HSUNBTF9SRVBf TVNHX1RZUEUpOworCisJCQkvKgorCQkJICogU3dpdGNoIHRvIHNlcmlhbGl6ZSBtb2RlIHdoZW4g d2UgYXJlIG5vdCBhYmxlIHRvIHNlbmQgdGhlCisJCQkgKiBjaGFuZ2UgdG8gcGFyYWxsZWwgYXBw bHkgd29ya2VyLgorCQkJICovCisJCQlwYV9zd2l0Y2hfdG9fcGFydGlhbF9zZXJpYWxpemUod2lu Zm8sIGZhbHNlKTsKKworCQkJLyogZmFsbCB0aHJvdWdoICovCisJCWNhc2UgVFJBTlNfTEVBREVS X1BBUlRJQUxfU0VSSUFMSVpFOgorCQkJc3RyZWFtX3dyaXRlX2NoYW5nZShhY3Rpb24sICZvcmln aW5hbF9tc2cpOwogCi0JcmV0dXJuIHRydWU7CisJCQkvKiBTYW1lIHJlYXNvbiBhcyBUUkFOU19M RUFERVJfU0VORF9UT19QQVJBTExFTCBjYXNlLiAqLworCQkJcmV0dXJuIChhY3Rpb24gIT0gTE9H SUNBTF9SRVBfTVNHX1JFTEFUSU9OICYmCisJCQkJCWFjdGlvbiAhPSBMT0dJQ0FMX1JFUF9NU0df VFlQRSk7CisKKwkJY2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToKKwkJCXBhcmFsbGVsX3N0cmVh bV9uY2hhbmdlcyArPSAxOworCisJCQkvKiBEZWZpbmUgYSBzYXZlcG9pbnQgZm9yIGEgc3VieGFj dCBpZiBuZWVkZWQuICovCisJCQlwYV9zdGFydF9zdWJ0cmFucyhjdXJyZW50X3hpZCwgc3RyZWFt X3hpZCk7CisJCQlyZXR1cm4gZmFsc2U7CisKKwkJZGVmYXVsdDoKKwkJCUFzc2VydChmYWxzZSk7 CisJCQlyZXR1cm4gZmFsc2U7CQkvKiBzaWxlbmNlIGNvbXBpbGVyIHdhcm5pbmcgKi8KKwl9CiB9 CiAKIC8qCkBAIC05MjgsOCArMTA5MSwxMSBAQCBhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5h bChMb2dpY2FsUmVwUHJlcGFyZWRUeG5EYXRhICpwcmVwYXJlX2RhdGEpCiAJICogQmVnaW5UcmFu c2FjdGlvbkJsb2NrIGlzIG5lY2Vzc2FyeSB0byBiYWxhbmNlIHRoZSBFbmRUcmFuc2FjdGlvbkJs b2NrCiAJICogY2FsbGVkIHdpdGhpbiB0aGUgUHJlcGFyZVRyYW5zYWN0aW9uQmxvY2sgYmVsb3cu CiAJICovCi0JQmVnaW5UcmFuc2FjdGlvbkJsb2NrKCk7Ci0JQ29tbWl0VHJhbnNhY3Rpb25Db21t YW5kKCk7IC8qIENvbXBsZXRlcyB0aGUgcHJlY2VkaW5nIEJlZ2luIGNvbW1hbmQuICovCisJaWYg KCFJc1RyYW5zYWN0aW9uQmxvY2soKSkKKwl7CisJCUJlZ2luVHJhbnNhY3Rpb25CbG9jaygpOwor CQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsgLyogQ29tcGxldGVzIHRoZSBwcmVjZWRpbmcg QmVnaW4gY29tbWFuZC4gKi8KKwl9CiAKIAkvKgogCSAqIFVwZGF0ZSBvcmlnaW4gc3RhdGUgc28g d2UgY2FuIHJlc3RhcnQgc3RyZWFtaW5nIGZyb20gY29ycmVjdCBwb3NpdGlvbgpAQCAtOTc2LDcg KzExNDIsNyBAQCBhcHBseV9oYW5kbGVfcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJQ29tbWl0VHJh bnNhY3Rpb25Db21tYW5kKCk7CiAJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKIAotCXN0b3Jl X2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwlzdG9yZV9mbHVzaF9wb3Np dGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbiwgWGFjdExhc3RDb21taXRFbmQpOwogCiAJaW5fcmVt b3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKQEAgLTk5OCw2ICsxMTY0LDEyIEBAIGFwcGx5X2hh bmRsZV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAogLyoKICAqIEhhbmRsZSBhIENPTU1JVCBQUkVQ QVJFRCBvZiBhIHByZXZpb3VzbHkgUFJFUEFSRUQgdHJhbnNhY3Rpb24uCisgKgorICogTm90ZSB0 aGF0IHdlIGRvbid0IG5lZWQgdG8gd2FpdCBoZXJlIGlmIHRoZSB0cmFuc2FjdGlvbiB3YXMgcHJl cGFyZWQgaW4gYQorICogcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBJbiB0aGF0IGNhc2UsIHdlIGhh dmUgYWxyZWFkeSB3YWl0ZWQgZm9yIHRoZSBwcmVwYXJlCisgKiB0byBmaW5pc2ggaW4gYXBwbHlf aGFuZGxlX3N0cmVhbV9wcmVwYXJlKCkgd2hpY2ggd2lsbCBlbnN1cmUgYWxsIHRoZQorICogb3Bl cmF0aW9ucyBpbiB0aGF0IHRyYW5zYWN0aW9uIGhhdmUgaGFwcGVuZWQgaW4gdGhlIHN1YnNjcmli ZXIsIHNvIG5vCisgKiBjb25jdXJyZW50IHRyYW5zYWN0aW9uIGNhbiBjYXVzZSBkZWFkbG9jayBv ciB0cmFuc2FjdGlvbiBkZXBlbmRlbmN5IGlzc3Vlcy4KICAqLwogc3RhdGljIHZvaWQKIGFwcGx5 X2hhbmRsZV9jb21taXRfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQpAQCAtMTAyNyw3ICsxMTk5LDcg QEAgYXBwbHlfaGFuZGxlX2NvbW1pdF9wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAJQ29tbWl0VHJh bnNhY3Rpb25Db21tYW5kKCk7CiAJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKIAotCXN0b3Jl X2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwlzdG9yZV9mbHVzaF9wb3Np dGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbiwgWGFjdExhc3RDb21taXRFbmQpOwogCWluX3JlbW90 ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJl IGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KQEAgLTEwNDEsNiArMTIxMywxMiBA QCBhcHBseV9oYW5kbGVfY29tbWl0X3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAogLyoKICAqIEhh bmRsZSBhIFJPTExCQUNLIFBSRVBBUkVEIG9mIGEgcHJldmlvdXNseSBQUkVQQVJFRCBUUkFOU0FD VElPTi4KKyAqCisgKiBOb3RlIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byB3YWl0IGhlcmUgaWYgdGhl IHRyYW5zYWN0aW9uIHdhcyBwcmVwYXJlZCBpbiBhCisgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXIu IEluIHRoYXQgY2FzZSwgd2UgaGF2ZSBhbHJlYWR5IHdhaXRlZCBmb3IgdGhlIHByZXBhcmUKKyAq IHRvIGZpbmlzaCBpbiBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoKSB3aGljaCB3aWxsIGVu c3VyZSBhbGwgdGhlCisgKiBvcGVyYXRpb25zIGluIHRoYXQgdHJhbnNhY3Rpb24gaGF2ZSBoYXBw ZW5lZCBpbiB0aGUgc3Vic2NyaWJlciwgc28gbm8KKyAqIGNvbmN1cnJlbnQgdHJhbnNhY3Rpb24g Y2FuIGNhdXNlIGRlYWRsb2NrIG9yIHRyYW5zYWN0aW9uIGRlcGVuZGVuY3kgaXNzdWVzLgogICov CiBzdGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX3JvbGxiYWNrX3ByZXBhcmVkKFN0cmluZ0luZm8g cykKQEAgLTEwODIsNyArMTI2MCw3IEBAIGFwcGx5X2hhbmRsZV9yb2xsYmFja19wcmVwYXJlZChT dHJpbmdJbmZvIHMpCiAKIAlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCi0Jc3RvcmVfZmx1 c2hfcG9zaXRpb24ocm9sbGJhY2tfZGF0YS5yb2xsYmFja19lbmRfbHNuKTsKKwlzdG9yZV9mbHVz aF9wb3NpdGlvbihyb2xsYmFja19kYXRhLnJvbGxiYWNrX2VuZF9sc24sIFhhY3RMYXN0Q29tbWl0 RW5kKTsKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAogCS8qIFByb2Nlc3MgYW55 IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCkBAIC0x MDk0LDE1ICsxMjcyLDE2IEBAIGFwcGx5X2hhbmRsZV9yb2xsYmFja19wcmVwYXJlZChTdHJpbmdJ bmZvIHMpCiAKIC8qCiAgKiBIYW5kbGUgU1RSRUFNIFBSRVBBUkUuCi0gKgotICogTG9naWMgaXMg aW4gdHdvIHBhcnRzOgotICogMS4gUmVwbGF5IGFsbCB0aGUgc3Bvb2xlZCBvcGVyYXRpb25zCi0g KiAyLiBNYXJrIHRoZSB0cmFuc2FjdGlvbiBhcyBwcmVwYXJlZAogICovCiBzdGF0aWMgdm9pZAog YXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIHsKIAlMb2dpY2FsUmVw UHJlcGFyZWRUeG5EYXRhIHByZXBhcmVfZGF0YTsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAq d2luZm87CisJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CisKKwkvKiBTYXZlIHRoZSBt ZXNzYWdlIGJlZm9yZSBpdCBpcyBjb25zdW1lZC4gKi8KKwlTdHJpbmdJbmZvRGF0YSBvcmlnaW5h bF9tc2cgPSAqczsKIAogCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKIAkJZXJlcG9ydChF UlJPUiwKQEAgLTExMTgsMjQgKzEyOTcsOTggQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJl KFN0cmluZ0luZm8gcykKIAlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX3ByZXBhcmUocywgJnByZXBh cmVfZGF0YSk7CiAJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChwcmVwYXJlX2RhdGEueGlk LCBwcmVwYXJlX2RhdGEucHJlcGFyZV9sc24pOwogCi0JZWxvZyhERUJVRzEsICJyZWNlaXZlZCBw cmVwYXJlIGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbiAldSIsIHByZXBhcmVfZGF0YS54aWQpOwor CWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24ocHJlcGFyZV9kYXRh LnhpZCwgJndpbmZvKTsKIAotCS8qIFJlcGxheSBhbGwgdGhlIHNwb29sZWQgb3BlcmF0aW9ucy4g Ki8KLQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVfZGF0 YS5wcmVwYXJlX2xzbik7CisJc3dpdGNoIChhcHBseV9hY3Rpb24pCisJeworCQljYXNlIFRSQU5T X0xFQURFUl9TRVJJQUxJWkU6CiAKLQkvKiBNYXJrIHRoZSB0cmFuc2FjdGlvbiBhcyBwcmVwYXJl ZC4gKi8KLQlhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJlcGFyZV9kYXRhKTsKKwkJ CS8qCisJCQkgKiBUaGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4gc2VyaWFsaXplZCB0byBmaWxlLCBz byByZXBsYXkgYWxsIHRoZQorCQkJICogc3Bvb2xlZCBvcGVyYXRpb25zLgorCQkJICovCisJCQlh cHBseV9zcG9vbGVkX21lc3NhZ2VzKE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQs CisJCQkJCQkJCSAgIHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVfZGF0YS5wcmVwYXJlX2xzbik7 CiAKLQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJCS8qIE1hcmsgdGhlIHRyYW5zYWN0 aW9uIGFzIHByZXBhcmVkLiAqLworCQkJYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoJnBy ZXBhcmVfZGF0YSk7CiAKLQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOworCQkJQ29tbWl0VHJh bnNhY3Rpb25Db21tYW5kKCk7CiAKLQlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEu ZW5kX2xzbik7CisJCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbiwg WGFjdExhc3RDb21taXRFbmQpOwogCi0JaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CisJ CQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKworCQkJLyogVW5saW5rIHRoZSBmaWxl cyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcyBhbmQgc3VieGFjdCBpbmZvLiAqLworCQkJc3RyZWFt X2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgcHJlcGFyZV9kYXRhLnhp ZCk7CisKKwkJCWVsb2coREVCVUcxLCAiZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFNIFBS RVBBUkUgY29tbWFuZCIpOworCQkJYnJlYWs7CiAKLQkvKiB1bmxpbmsgdGhlIGZpbGVzIHdpdGgg c2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCi0Jc3RyZWFtX2NsZWFudXBf ZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgcHJlcGFyZV9kYXRhLnhpZCk7CisJCWNh c2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOworCisJ CQlpZiAocGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpKQorCQkJeworCQkJCS8q IEZpbmlzaCBwcm9jZXNzaW5nIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uICovCisJCQkJcGFf eGFjdF9maW5pc2god2luZm8sIHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwkJCQlicmVhazsKKwkJ CX0KKworCQkJLyoKKwkJCSAqIFN3aXRjaCB0byBzZXJpYWxpemUgbW9kZSB3aGVuIHdlIGFyZSBu b3QgYWJsZSB0byBzZW5kIHRoZQorCQkJICogY2hhbmdlIHRvIHBhcmFsbGVsIGFwcGx5IHdvcmtl ci4KKwkJCSAqLworCQkJcGFfc3dpdGNoX3RvX3BhcnRpYWxfc2VyaWFsaXplKHdpbmZvLCB0cnVl KTsKKworCQkJLyogZmFsbCB0aHJvdWdoICovCisJCWNhc2UgVFJBTlNfTEVBREVSX1BBUlRJQUxf U0VSSUFMSVpFOgorCQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJc3RyZWFtX29wZW5fYW5kX3dyaXRl X2NoYW5nZShwcmVwYXJlX2RhdGEueGlkLAorCQkJCQkJCQkJCSBMT0dJQ0FMX1JFUF9NU0dfU1RS RUFNX1BSRVBBUkUsCisJCQkJCQkJCQkJICZvcmlnaW5hbF9tc2cpOworCisJCQlwYV9zZXRfZmls ZXNldF9zdGF0ZSh3aW5mby0+c2hhcmVkLCBGU19TRVJJQUxJWkVfRE9ORSk7CisKKwkJCS8qIEZp bmlzaCBwcm9jZXNzaW5nIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uICovCisJCQlwYV94YWN0 X2ZpbmlzaCh3aW5mbywgcHJlcGFyZV9kYXRhLmVuZF9sc24pOworCQkJYnJlYWs7CisKKwkJY2Fz ZSBUUkFOU19QQVJBTExFTF9BUFBMWToKKworCQkJLyoKKwkJCSAqIElmIHRoZSBwYXJhbGxlbCBh cHBseSB3b3JrZXIgaXMgYXBwbHlpbmcgc3Bvb2xlZCBtZXNzYWdlcyB0aGVuCisJCQkgKiBjbG9z ZSB0aGUgZmlsZSBiZWZvcmUgcHJlcGFyaW5nLgorCQkJICovCisJCQlpZiAoc3RyZWFtX2ZkKQor CQkJCXN0cmVhbV9jbG9zZV9maWxlKCk7CisKKwkJCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsK KworCQkJLyogTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQuICovCisJCQlhcHBseV9o YW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJlcGFyZV9kYXRhKTsKKworCQkJZW5kX3JlcGxpY2F0 aW9uX3N0ZXAoKTsKKworCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJCU15UGFy YWxsZWxTaGFyZWQtPmxhc3RfY29tbWl0X2VuZCA9IFhhY3RMYXN0Q29tbWl0RW5kOworCisJCQlw YV9zZXRfeGFjdF9zdGF0ZShNeVBhcmFsbGVsU2hhcmVkLCBQQVJBTExFTF9UUkFOU19GSU5JU0hF RCk7CisJCQlwYV91bmxvY2tfdHJhbnNhY3Rpb24oTXlQYXJhbGxlbFNoYXJlZC0+eGlkLCBBY2Nl c3NFeGNsdXNpdmVMb2NrKTsKKworCQkJcGFfcmVzZXRfc3VidHJhbnMoKTsKKworCQkJZWxvZyhE RUJVRzEsICJmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSBTVFJFQU0gUFJFUEFSRSBjb21tYW5kIik7 CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCWJyZWFrOwor CX0KKworCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CiAKIAkvKiBQcm9jZXNzIGFueSB0YWJs ZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nf c3luY2luZ190YWJsZXMocHJlcGFyZV9kYXRhLmVuZF9sc24pOwpAQCAtMTE3MywyNyArMTQyNiw2 NCBAQCBhcHBseV9oYW5kbGVfb3JpZ2luKFN0cmluZ0luZm8gcykKIH0KIAogLyoKKyAqIEluaXRp YWxpemUgZmlsZXNldCAoaWYgbm90IGFscmVhZHkgZG9uZSkuCisgKgorICogQ3JlYXRlIGEgbmV3 IGZpbGUgd2hlbiBmaXJzdF9zZWdtZW50IGlzIHRydWUsIG90aGVyd2lzZSBvcGVuIHRoZSBleGlz dGluZworICogZmlsZS4KKyAqLwordm9pZAorc3RyZWFtX3N0YXJ0X2ludGVybmFsKFRyYW5zYWN0 aW9uSWQgeGlkLCBib29sIGZpcnN0X3NlZ21lbnQpCit7CisJYmVnaW5fcmVwbGljYXRpb25fc3Rl cCgpOworCisJLyoKKwkgKiBJbml0aWFsaXplIHRoZSB3b3JrZXIncyBzdHJlYW1fZmlsZXNldCBp ZiB3ZSBoYXZlbid0IHlldC4gVGhpcyB3aWxsIGJlCisJICogdXNlZCBmb3IgdGhlIGVudGlyZSBk dXJhdGlvbiBvZiB0aGUgd29ya2VyIHNvIGNyZWF0ZSBpdCBpbiBhIHBlcm1hbmVudAorCSAqIGNv bnRleHQuIFdlIGNyZWF0ZSB0aGlzIG9uIHRoZSB2ZXJ5IGZpcnN0IHN0cmVhbWluZyBtZXNzYWdl IGZyb20gYW55CisJICogdHJhbnNhY3Rpb24gYW5kIHRoZW4gdXNlIGl0IGZvciB0aGlzIGFuZCBv dGhlciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zLgorCSAqIE5vdywgd2UgY291bGQgY3JlYXRlIGEg ZmlsZXNldCBhdCB0aGUgc3RhcnQgb2YgdGhlIHdvcmtlciBhcyB3ZWxsIGJ1dAorCSAqIHRoZW4g d2Ugd29uJ3QgYmUgc3VyZSB0aGF0IGl0IHdpbGwgZXZlciBiZSB1c2VkLgorCSAqLworCWlmICgh TXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCkKKwl7CisJCU1lbW9yeUNvbnRleHQg b2xkY3R4OworCisJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQp OworCisJCU15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPSBwYWxsb2Moc2l6ZW9m KEZpbGVTZXQpKTsKKwkJRmlsZVNldEluaXQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmls ZXNldCk7CisKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJfQorCisJLyogT3Bl biB0aGUgc3Bvb2wgZmlsZSBmb3IgdGhpcyB0cmFuc2FjdGlvbi4gKi8KKwlzdHJlYW1fb3Blbl9m aWxlKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCwgZmlyc3Rfc2VnbWVudCk7CisKKwkv KiBJZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qgc2VnbWVudCwgb3BlbiBleGlzdGluZyBzdWJ4YWN0 IGZpbGUuICovCisJaWYgKCFmaXJzdF9zZWdtZW50KQorCQlzdWJ4YWN0X2luZm9fcmVhZChNeUxv Z2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCisJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsK K30KKworLyoKICAqIEhhbmRsZSBTVFJFQU0gU1RBUlQgbWVzc2FnZS4KICAqLwogc3RhdGljIHZv aWQKIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5mbyBzKQogewogCWJvb2wJCWZp cnN0X3NlZ21lbnQ7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOworCVRyYW5zQXBw bHlBY3Rpb24gYXBwbHlfYWN0aW9uOworCisJLyogU2F2ZSB0aGUgbWVzc2FnZSBiZWZvcmUgaXQg aXMgY29uc3VtZWQuICovCisJU3RyaW5nSW5mb0RhdGEgb3JpZ2luYWxfbXNnID0gKnM7CiAKIAlp ZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNv ZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAogCQkJCSBlcnJtc2dfaW50ZXJuYWwoImR1 cGxpY2F0ZSBTVFJFQU0gU1RBUlQgbWVzc2FnZSIpKSk7CiAKLQkvKgotCSAqIFN0YXJ0IGEgdHJh bnNhY3Rpb24gb24gc3RyZWFtIHN0YXJ0LCB0aGlzIHRyYW5zYWN0aW9uIHdpbGwgYmUgY29tbWl0 dGVkCi0JICogb24gdGhlIHN0cmVhbSBzdG9wIHVubGVzcyBpdCBpcyBhIHRhYmxlc3luYyB3b3Jr ZXIgaW4gd2hpY2ggY2FzZSBpdAotCSAqIHdpbGwgYmUgY29tbWl0dGVkIGFmdGVyIHByb2Nlc3Np bmcgYWxsIHRoZSBtZXNzYWdlcy4gV2UgbmVlZCB0aGUKLQkgKiB0cmFuc2FjdGlvbiBmb3IgaGFu ZGxpbmcgdGhlIGJ1ZmZpbGUsIHVzZWQgZm9yIHNlcmlhbGl6aW5nIHRoZQotCSAqIHN0cmVhbWlu ZyBkYXRhIGFuZCBzdWJ4YWN0IGluZm8uCi0JICovCi0JYmVnaW5fcmVwbGljYXRpb25fc3RlcCgp OwotCiAJLyogbm90aWZ5IGhhbmRsZSBtZXRob2RzIHdlJ3JlIHByb2Nlc3NpbmcgYSByZW1vdGUg dHJhbnNhY3Rpb24gKi8KIAlpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IHRydWU7CiAKQEAgLTEy MDcsNTQgKzE0OTcsMTEzIEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5mbyBz KQogCiAJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChzdHJlYW1feGlkLCBJbnZhbGlkWExv Z1JlY1B0cik7CiAKLQkvKgotCSAqIEluaXRpYWxpemUgdGhlIHdvcmtlcidzIHN0cmVhbV9maWxl c2V0IGlmIHdlIGhhdmVuJ3QgeWV0LiBUaGlzIHdpbGwgYmUKLQkgKiB1c2VkIGZvciB0aGUgZW50 aXJlIGR1cmF0aW9uIG9mIHRoZSB3b3JrZXIgc28gY3JlYXRlIGl0IGluIGEgcGVybWFuZW50Ci0J ICogY29udGV4dC4gV2UgY3JlYXRlIHRoaXMgb24gdGhlIHZlcnkgZmlyc3Qgc3RyZWFtaW5nIG1l c3NhZ2UgZnJvbSBhbnkKLQkgKiB0cmFuc2FjdGlvbiBhbmQgdGhlbiB1c2UgaXQgZm9yIHRoaXMg YW5kIG90aGVyIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMuCi0JICogTm93LCB3ZSBjb3VsZCBjcmVh dGUgYSBmaWxlc2V0IGF0IHRoZSBzdGFydCBvZiB0aGUgd29ya2VyIGFzIHdlbGwgYnV0Ci0JICog dGhlbiB3ZSB3b24ndCBiZSBzdXJlIHRoYXQgaXQgd2lsbCBldmVyIGJlIHVzZWQuCi0JICovCi0J aWYgKE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPT0gTlVMTCkKKwkvKiBUcnkg dG8gYWxsb2NhdGUgYSB3b3JrZXIgZm9yIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uICovCisJ aWYgKGZpcnN0X3NlZ21lbnQpCisJCXBhX2FsbG9jYXRlX3dvcmtlcihzdHJlYW1feGlkKTsKKwor CWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oc3RyZWFtX3hpZCwg JndpbmZvKTsKKworCXN3aXRjaCAoYXBwbHlfYWN0aW9uKQogCXsKLQkJTWVtb3J5Q29udGV4dCBv bGRjdHg7CisJCWNhc2UgVFJBTlNfTEVBREVSX1NFUklBTElaRToKIAotCQlvbGRjdHggPSBNZW1v cnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKwkJCS8qCisJCQkgKiBGdW5jdGlvbiBz dHJlYW1fc3RhcnRfaW50ZXJuYWwgc3RhcnRzIGEgdHJhbnNhY3Rpb24uIFRoaXMKKwkJCSAqIHRy YW5zYWN0aW9uIHdpbGwgYmUgY29tbWl0dGVkIG9uIHRoZSBzdHJlYW0gc3RvcCB1bmxlc3MgaXQg aXMgYQorCQkJICogdGFibGVzeW5jIHdvcmtlciBpbiB3aGljaCBjYXNlIGl0IHdpbGwgYmUgY29t bWl0dGVkIGFmdGVyCisJCQkgKiBwcm9jZXNzaW5nIGFsbCB0aGUgbWVzc2FnZXMuIFdlIG5lZWQg dGhpcyB0cmFuc2FjdGlvbiBmb3IKKwkJCSAqIGhhbmRsaW5nIHRoZSBCdWZGaWxlLCB1c2VkIGZv ciBzZXJpYWxpemluZyB0aGUgc3RyZWFtaW5nIGRhdGEKKwkJCSAqIGFuZCBzdWJ4YWN0IGluZm8u CisJCQkgKi8KKwkJCXN0cmVhbV9zdGFydF9pbnRlcm5hbChzdHJlYW1feGlkLCBmaXJzdF9zZWdt ZW50KTsKKwkJCWJyZWFrOwogCi0JCU15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQg PSBwYWxsb2Moc2l6ZW9mKEZpbGVTZXQpKTsKLQkJRmlsZVNldEluaXQoTXlMb2dpY2FsUmVwV29y a2VyLT5zdHJlYW1fZmlsZXNldCk7CisJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxM RUw6CisJCQlBc3NlcnQod2luZm8pOwogCi0JCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgp OwotCX0KKwkJCS8qCisJCQkgKiBPbmNlIHdlIHN0YXJ0IHNlcmlhbGl6aW5nIHRoZSBjaGFuZ2Vz LCB0aGUgcGFyYWxsZWwgYXBwbHkKKwkJCSAqIHdvcmtlciB3aWxsIHdhaXQgZm9yIHRoZSBsZWFk ZXIgdG8gcmVsZWFzZSB0aGUgc3RyZWFtIGxvY2sKKwkJCSAqIHVudGlsIHRoZSBlbmQgb2YgdGhl IHRyYW5zYWN0aW9uLiBTbywgd2UgZG9uJ3QgbmVlZCB0byByZWxlYXNlCisJCQkgKiB0aGUgbG9j ayBvciBpbmNyZW1lbnQgdGhlIHN0cmVhbSBjb3VudCBpbiB0aGF0IGNhc2UuCisJCQkgKi8KKwkJ CWlmIChwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkpCisJCQl7CisJCQkJLyoK KwkJCQkgKiBVbmxvY2sgdGhlIHNoYXJlZCBvYmplY3QgbG9jayBzbyB0aGF0IHRoZSBwYXJhbGxl bCBhcHBseQorCQkJCSAqIHdvcmtlciBjYW4gY29udGludWUgdG8gcmVjZWl2ZSBjaGFuZ2VzLgor CQkJCSAqLworCQkJCWlmICghZmlyc3Rfc2VnbWVudCkKKwkJCQkJcGFfdW5sb2NrX3N0cmVhbSh3 aW5mby0+c2hhcmVkLT54aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOwogCi0JLyogb3BlbiB0aGUg c3Bvb2wgZmlsZSBmb3IgdGhpcyB0cmFuc2FjdGlvbiAqLwotCXN0cmVhbV9vcGVuX2ZpbGUoTXlM b2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCwgZmlyc3Rfc2VnbWVudCk7CisJCQkJ LyoKKwkJCQkgKiBJbmNyZW1lbnQgdGhlIG51bWJlciBvZiBzdHJlYW1pbmcgYmxvY2tzIHdhaXRp bmcgdG8gYmUKKwkJCQkgKiBwcm9jZXNzZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCQkJ CSAqLworCQkJCXBnX2F0b21pY19hZGRfZmV0Y2hfdTMyKCZ3aW5mby0+c2hhcmVkLT5wZW5kaW5n X3N0cmVhbV9jb3VudCwgMSk7CiAKLQkvKiBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qgc2VnbWVu dCwgb3BlbiBleGlzdGluZyBzdWJ4YWN0IGZpbGUgKi8KLQlpZiAoIWZpcnN0X3NlZ21lbnQpCi0J CXN1YnhhY3RfaW5mb19yZWFkKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQp OworCQkJCS8qIENhY2hlIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHRoaXMgdHJhbnNh Y3Rpb24uICovCisJCQkJcGFfc2V0X3N0cmVhbV9hcHBseV93b3JrZXIod2luZm8pOworCQkJCWJy ZWFrOworCQkJfQogCi0JcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9SVU5OSU5HLCBOVUxM KTsKKwkJCS8qCisJCQkgKiBTd2l0Y2ggdG8gc2VyaWFsaXplIG1vZGUgd2hlbiB3ZSBhcmUgbm90 IGFibGUgdG8gc2VuZCB0aGUKKwkJCSAqIGNoYW5nZSB0byBwYXJhbGxlbCBhcHBseSB3b3JrZXIu CisJCQkgKi8KKwkJCXBhX3N3aXRjaF90b19wYXJ0aWFsX3NlcmlhbGl6ZSh3aW5mbywgIWZpcnN0 X3NlZ21lbnQpOwogCi0JZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKwkJCS8qIGZhbGwgdGhyb3Vn aCAqLworCQljYXNlIFRSQU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTElaRToKKwkJCUFzc2VydCh3 aW5mbyk7CisKKwkJCS8qCisJCQkgKiBPcGVuIHRoZSBzcG9vbCBmaWxlIHVubGVzcyBpdCB3YXMg YWxyZWFkeSBvcGVuZWQgd2hlbiBzd2l0Y2hpbmcKKwkJCSAqIHRvIHNlcmlhbGl6ZSBtb2RlLiBU aGUgdHJhbnNhY3Rpb24gc3RhcnRlZCBpbgorCQkJICogc3RyZWFtX3N0YXJ0X2ludGVybmFsIHdp bGwgYmUgY29tbWl0dGVkIG9uIHRoZSBzdHJlYW0gc3RvcC4KKwkJCSAqLworCQkJaWYgKGFwcGx5 X2FjdGlvbiAhPSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTCkKKwkJCQlzdHJlYW1fc3Rh cnRfaW50ZXJuYWwoc3RyZWFtX3hpZCwgZmlyc3Rfc2VnbWVudCk7CisKKwkJCXN0cmVhbV93cml0 ZV9jaGFuZ2UoTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9TVEFSVCwgJm9yaWdpbmFsX21zZyk7CisK KwkJCS8qIENhY2hlIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHRoaXMgdHJhbnNhY3Rp b24uICovCisJCQlwYV9zZXRfc3RyZWFtX2FwcGx5X3dvcmtlcih3aW5mbyk7CisJCQlicmVhazsK KworCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCQkJaWYgKGZpcnN0X3NlZ21lbnQpCisJ CQl7CisJCQkJLyogSG9sZCB0aGUgbG9jayB1bnRpbCB0aGUgZW5kIG9mIHRoZSB0cmFuc2FjdGlv bi4gKi8KKwkJCQlwYV9sb2NrX3RyYW5zYWN0aW9uKE15UGFyYWxsZWxTaGFyZWQtPnhpZCwgQWNj ZXNzRXhjbHVzaXZlTG9jayk7CisJCQkJcGFfc2V0X3hhY3Rfc3RhdGUoTXlQYXJhbGxlbFNoYXJl ZCwgUEFSQUxMRUxfVFJBTlNfU1RBUlRFRCk7CisJCQl9CisKKwkJCXBhcmFsbGVsX3N0cmVhbV9u Y2hhbmdlcyA9IDA7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsK KwkJCWJyZWFrOworCX0KKworCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfUlVOTklORywg TlVMTCk7CiB9CiAKIC8qCi0gKiBIYW5kbGUgU1RSRUFNIFNUT1AgbWVzc2FnZS4KKyAqIFVwZGF0 ZSB0aGUgaW5mb3JtYXRpb24gYWJvdXQgc3VieGFjdHMgYW5kIGNsb3NlIHRoZSBmaWxlLgorICoK KyAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCB3aGVuIHRoZSBzdHJlYW1fc3RhcnRf aW50ZXJuYWwgZnVuY3Rpb24gaGFzCisgKiBiZWVuIGNhbGxlZC4KICAqLwotc3RhdGljIHZvaWQK LWFwcGx5X2hhbmRsZV9zdHJlYW1fc3RvcChTdHJpbmdJbmZvIHMpCit2b2lkCitzdHJlYW1fc3Rv cF9pbnRlcm5hbChUcmFuc2FjdGlvbklkIHhpZCkKIHsKLQlpZiAoIWluX3N0cmVhbWVkX3RyYW5z YWN0aW9uKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xf VklPTEFUSU9OKSwKLQkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJFQU0gU1RPUCBtZXNzYWdlIHdp dGhvdXQgU1RSRUFNIFNUQVJUIikpKTsKLQogCS8qCi0JICogQ2xvc2UgdGhlIGZpbGUgd2l0aCBz ZXJpYWxpemVkIGNoYW5nZXMsIGFuZCBzZXJpYWxpemUgaW5mb3JtYXRpb24gYWJvdXQKLQkgKiBz dWJ4YWN0cyBmb3IgdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uLgorCSAqIFNlcmlhbGl6ZSBpbmZv cm1hdGlvbiBhYm91dCBzdWJ4YWN0cyBmb3IgdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uLCB0aGVu CisJICogY2xvc2UgdGhlIHN0cmVhbSBtZXNzYWdlcyBzcG9vbCBmaWxlLgogCSAqLwotCXN1Ynhh Y3RfaW5mb193cml0ZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkKTsKKwlz dWJ4YWN0X2luZm9fd3JpdGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkKTsKIAlzdHJl YW1fY2xvc2VfZmlsZSgpOwogCiAJLyogV2UgbXVzdCBiZSBpbiBhIHZhbGlkIHRyYW5zYWN0aW9u IHN0YXRlICovCkBAIC0xMjYzLDQwICsxNjEyLDEyNCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0 b3AoU3RyaW5nSW5mbyBzKQogCS8qIENvbW1pdCB0aGUgcGVyLXN0cmVhbSB0cmFuc2FjdGlvbiAq LwogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JaW5fc3RyZWFtZWRfdHJhbnNhY3Rp b24gPSBmYWxzZTsKLQogCS8qIFJlc2V0IHBlci1zdHJlYW0gY29udGV4dCAqLwogCU1lbW9yeUNv bnRleHRSZXNldChMb2dpY2FsU3RyZWFtaW5nQ29udGV4dCk7Ci0KLQlwZ3N0YXRfcmVwb3J0X2Fj dGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOwotCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5m bygpOwogfQogCiAvKgotICogSGFuZGxlIFNUUkVBTSBhYm9ydCBtZXNzYWdlLgorICogSGFuZGxl IFNUUkVBTSBTVE9QIG1lc3NhZ2UuCiAgKi8KIHN0YXRpYyB2b2lkCi1hcHBseV9oYW5kbGVfc3Ry ZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKK2FwcGx5X2hhbmRsZV9zdHJlYW1fc3RvcChTdHJpbmdJ bmZvIHMpCiB7Ci0JVHJhbnNhY3Rpb25JZCB4aWQ7Ci0JVHJhbnNhY3Rpb25JZCBzdWJ4aWQ7CisJ UGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlf YWN0aW9uOwogCi0JaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQorCWlmICghaW5fc3RyZWFt ZWRfdHJhbnNhY3Rpb24pCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9Q Uk9UT0NPTF9WSU9MQVRJT04pLAotCQkJCSBlcnJtc2dfaW50ZXJuYWwoIlNUUkVBTSBBQk9SVCBt ZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUT1AiKSkpOworCQkJCSBlcnJtc2dfaW50ZXJuYWwoIlNU UkVBTSBTVE9QIG1lc3NhZ2Ugd2l0aG91dCBTVFJFQU0gU1RBUlQiKSkpOworCisJYXBwbHlfYWN0 aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihzdHJlYW1feGlkLCAmd2luZm8pOwor CisJc3dpdGNoIChhcHBseV9hY3Rpb24pCisJeworCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJ WkU6CisJCQlzdHJlYW1fc3RvcF9pbnRlcm5hbChzdHJlYW1feGlkKTsKKwkJCWJyZWFrOworCisJ CWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOwor CisJCQkvKgorCQkJICogTG9jayBiZWZvcmUgc2VuZGluZyB0aGUgU1RSRUFNX1NUT1AgbWVzc2Fn ZSBzbyB0aGF0IHRoZSBsZWFkZXIKKwkJCSAqIGNhbiBob2xkIHRoZSBsb2NrIGZpcnN0IGFuZCB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdpbGwgd2FpdAorCQkJICogZm9yIGxlYWRlciB0byBy ZWxlYXNlIHRoZSBsb2NrLiBTZWUgTG9ja2luZyBDb25zaWRlcmF0aW9ucyBhdG9wCisJCQkgKiBh cHBseXBhcmFsbGVsd29ya2VyLmMuCisJCQkgKi8KKwkJCXBhX2xvY2tfc3RyZWFtKHdpbmZvLT5z aGFyZWQtPnhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisKKwkJCWlmIChwYV9zZW5kX2RhdGEo d2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkpCisJCQl7CisJCQkJcGFfc2V0X3N0cmVhbV9hcHBseV93 b3JrZXIoTlVMTCk7CisJCQkJYnJlYWs7CisJCQl9CisKKwkJCS8qCisJCQkgKiBTd2l0Y2ggdG8g c2VyaWFsaXplIG1vZGUgd2hlbiB3ZSBhcmUgbm90IGFibGUgdG8gc2VuZCB0aGUKKwkJCSAqIGNo YW5nZSB0byBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJCQkgKi8KKwkJCXBhX3N3aXRjaF90b19w YXJ0aWFsX3NlcmlhbGl6ZSh3aW5mbywgdHJ1ZSk7CisKKwkJCS8qIGZhbGwgdGhyb3VnaCAqLwor CQljYXNlIFRSQU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTElaRToKKwkJCXN0cmVhbV93cml0ZV9j aGFuZ2UoTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9TVE9QLCBzKTsKKwkJCXN0cmVhbV9zdG9wX2lu dGVybmFsKHN0cmVhbV94aWQpOworCQkJcGFfc2V0X3N0cmVhbV9hcHBseV93b3JrZXIoTlVMTCk7 CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCQkJZWxvZyhERUJV RzEsICJhcHBsaWVkICV1IGNoYW5nZXMgaW4gdGhlIHN0cmVhbWluZyBjaHVuayIsCisJCQkJIHBh cmFsbGVsX3N0cmVhbV9uY2hhbmdlcyk7CisKKwkJCS8qCisJCQkgKiBCeSB0aGUgdGltZSBwYXJh bGxlbCBhcHBseSB3b3JrZXIgaXMgcHJvY2Vzc2luZyB0aGUgY2hhbmdlcyBpbgorCQkJICogdGhl IGN1cnJlbnQgc3RyZWFtaW5nIGJsb2NrLCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBtYXkgaGF2 ZQorCQkJICogc2VudCBtdWx0aXBsZSBzdHJlYW1pbmcgYmxvY2tzLiBUaGlzIGNhbiBsZWFkIHRv IHBhcmFsbGVsIGFwcGx5CisJCQkgKiB3b3JrZXIgc3RhcnQgd2FpdGluZyBldmVuIHdoZW4gdGhl cmUgYXJlIG1vcmUgY2h1bmsgb2Ygc3RyZWFtcworCQkJICogaW4gdGhlIHF1ZXVlLiBTbywgdHJ5 IHRvIGxvY2sgb25seSBpZiB0aGVyZSBpcyBubyBtZXNzYWdlIGxlZnQKKwkJCSAqIGluIHRoZSBx dWV1ZS4gU2VlIExvY2tpbmcgQ29uc2lkZXJhdGlvbnMgYXRvcAorCQkJICogYXBwbHlwYXJhbGxl bHdvcmtlci5jLgorCQkJICoKKwkJCSAqIE5vdGUgdGhhdCBoZXJlIHdlIGhhdmUgYSByYWNlIGNv bmRpdGlvbiB3aGVyZSB3ZSBjYW4gc3RhcnQKKwkJCSAqIHdhaXRpbmcgZXZlbiB3aGVuIHRoZXJl IGFyZSBwZW5kaW5nIHN0cmVhbWluZyBjaHVua3MuIFRoaXMgY2FuCisJCQkgKiBoYXBwZW4gaWYg dGhlIGxlYWRlciBzZW5kcyBhbm90aGVyIHN0cmVhbWluZyBibG9jayBhbmQgYWNxdWlyZXMKKwkJ CSAqIHRoZSBzdHJlYW0gbG9jayBhZ2FpbiBhZnRlciB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy IGNoZWNrcworCQkJICogdGhhdCB0aGVyZSBpcyBubyBwZW5kaW5nIHN0cmVhbWluZyBibG9jayBh bmQgYmVmb3JlIGl0IGFjdHVhbGx5CisJCQkgKiBzdGFydHMgd2FpdGluZyBvbiBhIGxvY2suIFdl IGNhbiBoYW5kbGUgdGhpcyBjYXNlIGJ5IG5vdAorCQkJICogYWxsb3dpbmcgdGhlIGxlYWRlciB0 byBpbmNyZW1lbnQgdGhlIHN0cmVhbSBibG9jayBjb3VudCBkdXJpbmcKKwkJCSAqIHRoZSB0aW1l IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBhY3F1aXJlcyB0aGUgbG9jayBidXQgaXQgaXMgbm90CisJ CQkgKiBjbGVhciB3aGV0aGVyIHRoYXQgaXMgd29ydGggdGhlIGNvbXBsZXhpdHkuCisJCQkgKgor CQkJICogTm93LCBpZiB0aGlzIG1pc3NlZCBjaHVuayBjb250YWlucyByb2xsYmFjayB0byBzYXZl cG9pbnQsIHRoZW4KKwkJCSAqIHRoZXJlIGlzIGEgcmlzayBvZiBkZWFkbG9jayB3aGljaCBwcm9i YWJseSBzaG91bGRuJ3QgaGFwcGVuCisJCQkgKiBhZnRlciByZXN0YXJ0LgorCQkJICovCisJCQlw YV9kZWNyX2FuZF93YWl0X3N0cmVhbV9ibG9jaygpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoK KwkJCUFzc2VydChmYWxzZSk7CisJCQlicmVhazsKKwl9CisKKwlpbl9zdHJlYW1lZF90cmFuc2Fj dGlvbiA9IGZhbHNlOworCisJLyoKKwkgKiBUaGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGNvdWxk IGJlIGluIGEgdHJhbnNhY3Rpb24gaW4gd2hpY2ggY2FzZSB3ZQorCSAqIG5lZWQgdG8gcmVwb3J0 IHRoZSBzdGF0ZSBhcyBTVEFURV9JRExFSU5UUkFOU0FDVElPTi4KKwkgKi8KKwlpZiAoSXNUcmFu c2FjdGlvbk9yVHJhbnNhY3Rpb25CbG9jaygpKQorCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNU QVRFX0lETEVJTlRSQU5TQUNUSU9OLCBOVUxMKTsKKwllbHNlCisJCXBnc3RhdF9yZXBvcnRfYWN0 aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7CiAKLQlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0 KHMsICZ4aWQsICZzdWJ4aWQpOworCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwor fQogCisvKgorICogSGVscGVyIGZ1bmN0aW9uIHRvIGhhbmRsZSBTVFJFQU0gQUJPUlQgbWVzc2Fn ZSB3aGVuIHRoZSB0cmFuc2FjdGlvbiB3YXMKKyAqIHNlcmlhbGl6ZWQgdG8gZmlsZS4KKyAqLwor c3RhdGljIHZvaWQKK3N0cmVhbV9hYm9ydF9pbnRlcm5hbChUcmFuc2FjdGlvbklkIHhpZCwgVHJh bnNhY3Rpb25JZCBzdWJ4aWQpCit7CiAJLyoKIAkgKiBJZiB0aGUgdHdvIFhJRHMgYXJlIHRoZSBz YW1lLCBpdCdzIGluIGZhY3QgYWJvcnQgb2YgdG9wbGV2ZWwgeGFjdCwgc28KIAkgKiBqdXN0IGRl bGV0ZSB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGluZm8uCiAJICovCiAJaWYgKHhpZCA9PSBz dWJ4aWQpCi0JewotCQlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHhpZCwgSW52YWxpZFhM b2dSZWNQdHIpOwogCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1 YmlkLCB4aWQpOwotCX0KIAllbHNlCiAJewogCQkvKgpAQCAtMTMyMCw4ICsxNzUzLDYgQEAgYXBw bHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJCWJvb2wJCWZvdW5kID0gZmFs c2U7CiAJCWNoYXIJCXBhdGhbTUFYUEdQQVRIXTsKIAotCQlzZXRfYXBwbHlfZXJyb3JfY29udGV4 dF94YWN0KHN1YnhpZCwgSW52YWxpZFhMb2dSZWNQdHIpOwotCiAJCXN1YmlkeCA9IC0xOwogCQli ZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CiAJCXN1YnhhY3RfaW5mb19yZWFkKE15TG9naWNhbFJl cFdvcmtlci0+c3ViaWQsIHhpZCk7CkBAIC0xMzQ2LDQ3ICsxNzc3LDIzNyBAQCBhcHBseV9oYW5k bGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJCWNsZWFudXBfc3VieGFjdF9pbmZvKCk7 CiAJCQllbmRfcmVwbGljYXRpb25fc3RlcCgpOwogCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5k KCk7Ci0JCQlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKIAkJCXJldHVybjsKIAkJ fQogCi0JCS8qIG9wZW4gdGhlIGNoYW5nZXMgZmlsZSAqLwotCQljaGFuZ2VzX2ZpbGVuYW1lKHBh dGgsIE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7Ci0JCWZkID0gQnVmRmlsZU9wZW5G aWxlU2V0KE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQsIHBhdGgsCi0JCQkJCQkJ CU9fUkRXUiwgZmFsc2UpOworCQkvKiBvcGVuIHRoZSBjaGFuZ2VzIGZpbGUgKi8KKwkJY2hhbmdl c19maWxlbmFtZShwYXRoLCBNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCQlmZCA9 IEJ1ZkZpbGVPcGVuRmlsZVNldChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0LCBw YXRoLAorCQkJCQkJCQlPX1JEV1IsIGZhbHNlKTsKKworCQkvKiBPSywgdHJ1bmNhdGUgdGhlIGZp bGUgYXQgdGhlIHJpZ2h0IG9mZnNldCAqLworCQlCdWZGaWxlVHJ1bmNhdGVGaWxlU2V0KGZkLCBz dWJ4YWN0X2RhdGEuc3VieGFjdHNbc3ViaWR4XS5maWxlbm8sCisJCQkJCQkJICAgc3VieGFjdF9k YXRhLnN1YnhhY3RzW3N1YmlkeF0ub2Zmc2V0KTsKKwkJQnVmRmlsZUNsb3NlKGZkKTsKKworCQkv KiBkaXNjYXJkIHRoZSBzdWJ4YWN0cyBhZGRlZCBsYXRlciAqLworCQlzdWJ4YWN0X2RhdGEubnN1 YnhhY3RzID0gc3ViaWR4OworCisJCS8qIHdyaXRlIHRoZSB1cGRhdGVkIHN1YnhhY3QgbGlzdCAq LworCQlzdWJ4YWN0X2luZm9fd3JpdGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkKTsK KworCQllbmRfcmVwbGljYXRpb25fc3RlcCgpOworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKKwl9Cit9CisKKy8qCisgKiBIYW5kbGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2UuCisgKi8KK3N0 YXRpYyB2b2lkCithcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKK3sKKwlU cmFuc2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlvbklkIHN1YnhpZDsKKwlMb2dpY2FsUmVwU3Ry ZWFtQWJvcnREYXRhIGFib3J0X2RhdGE7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZv OworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOworCisJLyogU2F2ZSB0aGUgbWVzc2Fn ZSBiZWZvcmUgaXQgaXMgY29uc3VtZWQuICovCisJU3RyaW5nSW5mb0RhdGEgb3JpZ2luYWxfbXNn ID0gKnM7CisJYm9vbAkJdG9wbGV2ZWxfeGFjdDsKKworCWlmIChpbl9zdHJlYW1lZF90cmFuc2Fj dGlvbikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJ T0xBVElPTiksCisJCQkJIGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2l0 aG91dCBTVFJFQU0gU1RPUCIpKSk7CisKKwkvKiBXZSByZWNlaXZlIGFib3J0IGluZm9ybWF0aW9u IG9ubHkgd2hlbiB3ZSBjYW4gYXBwbHkgaW4gcGFyYWxsZWwuICovCisJbG9naWNhbHJlcF9yZWFk X3N0cmVhbV9hYm9ydChzLCAmYWJvcnRfZGF0YSwKKwkJCQkJCQkJIE15TG9naWNhbFJlcFdvcmtl ci0+cGFyYWxsZWxfYXBwbHkpOworCisJeGlkID0gYWJvcnRfZGF0YS54aWQ7CisJc3VieGlkID0g YWJvcnRfZGF0YS5zdWJ4aWQ7CisJdG9wbGV2ZWxfeGFjdCA9ICh4aWQgPT0gc3VieGlkKTsKKwor CXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3Qoc3VieGlkLCBhYm9ydF9kYXRhLmFib3J0X2xz bik7CisKKwlhcHBseV9hY3Rpb24gPSBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKHhpZCwg JndpbmZvKTsKKworCXN3aXRjaCAoYXBwbHlfYWN0aW9uKQorCXsKKwkJY2FzZSBUUkFOU19MRUFE RVJfU0VSSUFMSVpFOgorCisJCQkvKgorCQkJICogV2UgYXJlIGluIHRoZSBsZWFkZXIgYXBwbHkg d29ya2VyIGFuZCB0aGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4KKwkJCSAqIHNlcmlhbGl6ZWQgdG8g ZmlsZS4KKwkJCSAqLworCQkJc3RyZWFtX2Fib3J0X2ludGVybmFsKHhpZCwgc3VieGlkKTsKKwor CQkJZWxvZyhERUJVRzEsICJmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSBTVFJFQU0gQUJPUlQgY29t bWFuZCIpOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExF TDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCS8qCisJCQkgKiBGb3IgdGhlIGNhc2Ugb2YgYWJv cnRpbmcgdGhlIHN1YnRyYW5zYWN0aW9uLCB3ZSBpbmNyZW1lbnQgdGhlCisJCQkgKiBudW1iZXIg b2Ygc3RyZWFtaW5nIGJsb2NrcyBhbmQgdGFrZSB0aGUgbG9jayBhZ2FpbiBiZWZvcmUKKwkJCSAq IHNlbmRpbmcgdGhlIFNUUkVBTV9BQk9SVCB0byBlbnN1cmUgdGhhdCB0aGUgcGFyYWxsZWwgYXBw bHkKKwkJCSAqIHdvcmtlciB3aWxsIHdhaXQgb24gdGhlIGxvY2sgZm9yIHRoZSBuZXh0IHNldCBv ZiBjaGFuZ2VzIGFmdGVyCisJCQkgKiBwcm9jZXNzaW5nIHRoZSBTVFJFQU1fQUJPUlQgbWVzc2Fn ZSBpZiBpdCBpcyBub3QgYWxyZWFkeQorCQkJICogd2FpdGluZyBmb3IgU1RSRUFNX1NUT1AgbWVz c2FnZS4KKwkJCSAqCisJCQkgKiBJdCBpcyBpbXBvcnRhbnQgdG8gcGVyZm9ybSB0aGlzIGxvY2tp bmcgYmVmb3JlIHNlbmRpbmcgdGhlCisJCQkgKiBTVFJFQU1fQUJPUlQgbWVzc2FnZSBzbyB0aGF0 IHRoZSBsZWFkZXIgY2FuIGhvbGQgdGhlIGxvY2sgZmlyc3QKKwkJCSAqIGFuZCB0aGUgcGFyYWxs ZWwgYXBwbHkgd29ya2VyIHdpbGwgd2FpdCBmb3IgdGhlIGxlYWRlciB0bworCQkJICogcmVsZWFz ZSB0aGUgbG9jay4gVGhpcyBpcyB0aGUgc2FtZSBhcyB3aGF0IHdlIGRvIGluCisJCQkgKiBhcHBs eV9oYW5kbGVfc3RyZWFtX3N0b3AuIFNlZSBMb2NraW5nIENvbnNpZGVyYXRpb25zIGF0b3AKKwkJ CSAqIGFwcGx5cGFyYWxsZWx3b3JrZXIuYy4KKwkJCSAqLworCQkJaWYgKCF0b3BsZXZlbF94YWN0 KQorCQkJeworCQkJCXBhX3VubG9ja19zdHJlYW0oeGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsK KwkJCQlwZ19hdG9taWNfYWRkX2ZldGNoX3UzMigmd2luZm8tPnNoYXJlZC0+cGVuZGluZ19zdHJl YW1fY291bnQsIDEpOworCQkJCXBhX2xvY2tfc3RyZWFtKHhpZCwgQWNjZXNzRXhjbHVzaXZlTG9j ayk7CisJCQl9CisKKwkJCWlmIChwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkp CisJCQl7CisJCQkJLyoKKwkJCQkgKiBVbmxpa2UgU1RSRUFNX0NPTU1JVCBhbmQgU1RSRUFNX1BS RVBBUkUsIHdlIGRvbid0IG5lZWQgdG8KKwkJCQkgKiB3YWl0IGhlcmUgZm9yIHRoZSBwYXJhbGxl bCBhcHBseSB3b3JrZXIgdG8gZmluaXNoIGFzIHRoYXQKKwkJCQkgKiBpcyBub3QgcmVxdWlyZWQg dG8gbWFpbnRhaW4gdGhlIGNvbW1pdCBvcmRlciBhbmQgd29uJ3QgaGF2ZQorCQkJCSAqIHRoZSBy aXNrIG9mIGZhaWx1cmVzIGR1ZSB0byB0cmFuc2FjdGlvbiBkZXBlbmRlbmNpZXMgYW5kCisJCQkJ ICogZGVhZGxvY2tzLiBIb3dldmVyLCBpdCBpcyBwb3NzaWJsZSB0aGF0IGJlZm9yZSB0aGUgcGFy YWxsZWwKKwkJCQkgKiB3b3JrZXIgZmluaXNoZXMgYW5kIHdlIGNsZWFyIHRoZSB3b3JrZXIgaW5m bywgdGhlIHhpZAorCQkJCSAqIHdyYXBhcm91bmQgaGFwcGVucyBvbiB0aGUgdXBzdHJlYW0gYW5k IGEgbmV3IHRyYW5zYWN0aW9uCisJCQkJICogd2l0aCB0aGUgc2FtZSB4aWQgY2FuIGFwcGVhciBh bmQgdGhhdCBjYW4gbGVhZCB0byBkdXBsaWNhdGUKKwkJCQkgKiBlbnRyaWVzIGluIFBhcmFsbGVs QXBwbHlUeG5IYXNoLiBZZXQgYW5vdGhlciBwcm9ibGVtIGNvdWxkCisJCQkJICogYmUgdGhhdCB3 ZSBtYXkgaGF2ZSBzZXJpYWxpemVkIHRoZSBjaGFuZ2VzIGluIHBhcnRpYWwKKwkJCQkgKiBzZXJp YWxpemUgbW9kZSBhbmQgdGhlIGZpbGUgY29udGFpbmluZyB4YWN0IGNoYW5nZXMgbWF5CisJCQkJ ICogYWxyZWFkeSBleGlzdCwgYW5kIGFmdGVyIHhpZCB3cmFwYXJvdW5kIHRyeWluZyB0byBjcmVh dGUKKwkJCQkgKiB0aGUgZmlsZSBmb3IgdGhlIHNhbWUgeGlkIGNhbiBsZWFkIHRvIGFuIGVycm9y LiBUbyBhdm9pZAorCQkJCSAqIHRoZXNlIHByb2JsZW1zLCB3ZSBkZWNpZGUgdG8gd2FpdCBmb3Ig dGhlIGFib3J0cyB0byBmaW5pc2guCisJCQkJICoKKwkJCQkgKiBOb3RlLCBpdCBpcyBva2F5IHRv IG5vdCB1cGRhdGUgdGhlIGZsdXNoIGxvY2F0aW9uIHBvc2l0aW9uCisJCQkJICogZm9yIGFib3J0 cyBhcyBpbiB3b3JzdCBjYXNlIHRoYXQgbWVhbnMgc3VjaCBhIHRyYW5zYWN0aW9uCisJCQkJICog d29uJ3QgYmUgc2VudCBhZ2FpbiBhZnRlciByZXN0YXJ0LgorCQkJCSAqLworCQkJCWlmICh0b3Bs ZXZlbF94YWN0KQorCQkJCQlwYV94YWN0X2ZpbmlzaCh3aW5mbywgSW52YWxpZFhMb2dSZWNQdHIp OworCisJCQkJYnJlYWs7CisJCQl9CisKKwkJCS8qCisJCQkgKiBTd2l0Y2ggdG8gc2VyaWFsaXpl IG1vZGUgd2hlbiB3ZSBhcmUgbm90IGFibGUgdG8gc2VuZCB0aGUKKwkJCSAqIGNoYW5nZSB0byBw YXJhbGxlbCBhcHBseSB3b3JrZXIuCisJCQkgKi8KKwkJCXBhX3N3aXRjaF90b19wYXJ0aWFsX3Nl cmlhbGl6ZSh3aW5mbywgdHJ1ZSk7CisKKwkJCS8qIGZhbGwgdGhyb3VnaCAqLworCQljYXNlIFRS QU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTElaRToKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCS8q CisJCQkgKiBQYXJhbGxlbCBhcHBseSB3b3JrZXIgbWlnaHQgaGF2ZSBhcHBsaWVkIHNvbWUgY2hh bmdlcywgc28gd3JpdGUKKwkJCSAqIHRoZSBTVFJFQU1fQUJPUlQgbWVzc2FnZSBzbyB0aGF0IGl0 IGNhbiByb2xsYmFjayB0aGUKKwkJCSAqIHN1YnRyYW5zYWN0aW9uIGlmIG5lZWRlZC4KKwkJCSAq LworCQkJc3RyZWFtX29wZW5fYW5kX3dyaXRlX2NoYW5nZSh4aWQsIExPR0lDQUxfUkVQX01TR19T VFJFQU1fQUJPUlQsCisJCQkJCQkJCQkJICZvcmlnaW5hbF9tc2cpOworCisJCQlpZiAodG9wbGV2 ZWxfeGFjdCkKKwkJCXsKKwkJCQlwYV9zZXRfZmlsZXNldF9zdGF0ZSh3aW5mby0+c2hhcmVkLCBG U19TRVJJQUxJWkVfRE9ORSk7CisJCQkJcGFfeGFjdF9maW5pc2god2luZm8sIEludmFsaWRYTG9n UmVjUHRyKTsKKwkJCX0KKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6 CisKKwkJCS8qCisJCQkgKiBJZiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIGFwcGx5aW5n IHNwb29sZWQgbWVzc2FnZXMgdGhlbgorCQkJICogY2xvc2UgdGhlIGZpbGUgYmVmb3JlIGFib3J0 aW5nLgorCQkJICovCisJCQlpZiAodG9wbGV2ZWxfeGFjdCAmJiBzdHJlYW1fZmQpCisJCQkJc3Ry ZWFtX2Nsb3NlX2ZpbGUoKTsKKworCQkJcGFfc3RyZWFtX2Fib3J0KCZhYm9ydF9kYXRhKTsKKwor CQkJLyoKKwkJCSAqIFdlIG5lZWQgdG8gd2FpdCBhZnRlciBwcm9jZXNzaW5nIHJvbGxiYWNrIHRv IHNhdmVwb2ludCBmb3IgdGhlCisJCQkgKiBuZXh0IHNldCBvZiBjaGFuZ2VzLgorCQkJICoKKwkJ CSAqIFdlIGhhdmUgYSByYWNlIGNvbmRpdGlvbiBoZXJlIGR1ZSB0byB3aGljaCB3ZSBjYW4gc3Rh cnQgd2FpdGluZworCQkJICogaGVyZSB3aGVuIHRoZXJlIGFyZSBtb3JlIGNodW5rIG9mIHN0cmVh bXMgaW4gdGhlIHF1ZXVlLiBTZWUKKwkJCSAqIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RvcC4KKwkJ CSAqLworCQkJaWYgKCF0b3BsZXZlbF94YWN0KQorCQkJCXBhX2RlY3JfYW5kX3dhaXRfc3RyZWFt X2Jsb2NrKCk7CisKKwkJCWVsb2coREVCVUcxLCAiZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RS RUFNIEFCT1JUIGNvbW1hbmQiKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQo ZmFsc2UpOworCQkJYnJlYWs7CisJfQorCisJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZv KCk7Cit9CisKKy8qCisgKiBFbnN1cmUgdGhhdCB0aGUgcGFzc2VkIGxvY2F0aW9uIGlzIGZpbGVz ZXQncyBlbmQuCisgKi8KK3N0YXRpYyB2b2lkCitlbnN1cmVfbGFzdF9tZXNzYWdlKEZpbGVTZXQg KnN0cmVhbV9maWxlc2V0LCBUcmFuc2FjdGlvbklkIHhpZCwgaW50IGZpbGVubywKKwkJCQkJb2Zm X3Qgb2Zmc2V0KQoreworCWNoYXIJCXBhdGhbTUFYUEdQQVRIXTsKKwlCdWZGaWxlICAgICpmZDsK KwlpbnQJCQlsYXN0X2ZpbGVubzsKKwlvZmZfdAkJbGFzdF9vZmZzZXQ7CisKKwlBc3NlcnQoIUlz VHJhbnNhY3Rpb25TdGF0ZSgpKTsKIAotCQkvKiBPSywgdHJ1bmNhdGUgdGhlIGZpbGUgYXQgdGhl IHJpZ2h0IG9mZnNldCAqLwotCQlCdWZGaWxlVHJ1bmNhdGVGaWxlU2V0KGZkLCBzdWJ4YWN0X2Rh dGEuc3VieGFjdHNbc3ViaWR4XS5maWxlbm8sCi0JCQkJCQkJICAgc3VieGFjdF9kYXRhLnN1Ynhh Y3RzW3N1YmlkeF0ub2Zmc2V0KTsKLQkJQnVmRmlsZUNsb3NlKGZkKTsKKwliZWdpbl9yZXBsaWNh dGlvbl9zdGVwKCk7CiAKLQkJLyogZGlzY2FyZCB0aGUgc3VieGFjdHMgYWRkZWQgbGF0ZXIgKi8K LQkJc3VieGFjdF9kYXRhLm5zdWJ4YWN0cyA9IHN1YmlkeDsKKwljaGFuZ2VzX2ZpbGVuYW1lKHBh dGgsIE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CiAKLQkJLyogd3JpdGUgdGhlIHVw ZGF0ZWQgc3VieGFjdCBsaXN0ICovCi0JCXN1YnhhY3RfaW5mb193cml0ZShNeUxvZ2ljYWxSZXBX b3JrZXItPnN1YmlkLCB4aWQpOworCWZkID0gQnVmRmlsZU9wZW5GaWxlU2V0KHN0cmVhbV9maWxl c2V0LCBwYXRoLCBPX1JET05MWSwgZmFsc2UpOwogCi0JCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7 Ci0JCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwotCX0KKwlCdWZGaWxlU2VlayhmZCwgMCwg MCwgU0VFS19FTkQpOworCUJ1ZkZpbGVUZWxsKGZkLCAmbGFzdF9maWxlbm8sICZsYXN0X29mZnNl dCk7CiAKLQlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKKwlCdWZGaWxlQ2xvc2Uo ZmQpOworCisJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKworCWlmIChsYXN0X2ZpbGVubyAhPSBm aWxlbm8gfHwgbGFzdF9vZmZzZXQgIT0gb2Zmc2V0KQorCQllbG9nKEVSUk9SLCAidW5leHBlY3Rl ZCBtZXNzYWdlIGxlZnQgaW4gc3RyZWFtaW5nIHRyYW5zYWN0aW9uJ3MgY2hhbmdlcyBmaWxlIFwi JXNcIiIsCisJCQkgcGF0aCk7CiB9CiAKIC8qCiAgKiBDb21tb24gc3Bvb2xmaWxlIHByb2Nlc3Np bmcuCiAgKi8KLXN0YXRpYyB2b2lkCi1hcHBseV9zcG9vbGVkX21lc3NhZ2VzKFRyYW5zYWN0aW9u SWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKK3ZvaWQKK2FwcGx5X3Nwb29sZWRfbWVzc2FnZXMoRmls ZVNldCAqc3RyZWFtX2ZpbGVzZXQsIFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkgICBYTG9nUmVj UHRyIGxzbikKIHsKIAlTdHJpbmdJbmZvRGF0YSBzMjsKIAlpbnQJCQluY2hhbmdlczsKIAljaGFy CQlwYXRoW01BWFBHUEFUSF07CiAJY2hhcgkgICAqYnVmZmVyID0gTlVMTDsKIAlNZW1vcnlDb250 ZXh0IG9sZGN4dDsKLQlCdWZGaWxlICAgICpmZDsKKwlSZXNvdXJjZU93bmVyIG9sZG93bmVyOwor CWludAkJCWZpbGVubzsKKwlvZmZfdAkJb2Zmc2V0OwogCi0JbWF5YmVfc3RhcnRfc2tpcHBpbmdf Y2hhbmdlcyhsc24pOworCWlmICghYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJCW1heWJl X3N0YXJ0X3NraXBwaW5nX2NoYW5nZXMobHNuKTsKIAogCS8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGFu IG9wZW4gdHJhbnNhY3Rpb24gKi8KIAliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CkBAIC0xNDAy LDggKzIwMjMsMTYgQEAgYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwg WExvZ1JlY1B0ciBsc24pCiAJY2hhbmdlc19maWxlbmFtZShwYXRoLCBNeUxvZ2ljYWxSZXBXb3Jr ZXItPnN1YmlkLCB4aWQpOwogCWVsb2coREVCVUcxLCAicmVwbGF5aW5nIGNoYW5nZXMgZnJvbSBm aWxlIFwiJXNcIiIsIHBhdGgpOwogCi0JZmQgPSBCdWZGaWxlT3BlbkZpbGVTZXQoTXlMb2dpY2Fs UmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCwgcGF0aCwgT19SRE9OTFksCi0JCQkJCQkJZmFsc2Up OworCS8qCisJICogTWFrZSBzdXJlIHRoZSBmaWxlIGlzIG93bmVkIGJ5IHRoZSB0b3BsZXZlbCB0 cmFuc2FjdGlvbiBzbyB0aGF0IHRoZQorCSAqIGZpbGUgd2lsbCBub3QgYmUgYWNjaWRlbnRhbGx5 IGNsb3NlZCB3aGVuIGFib3J0aW5nIGEgc3VidHJhbnNhY3Rpb24uCisJICovCisJb2xkb3duZXIg PSBDdXJyZW50UmVzb3VyY2VPd25lcjsKKwlDdXJyZW50UmVzb3VyY2VPd25lciA9IFRvcFRyYW5z YWN0aW9uUmVzb3VyY2VPd25lcjsKKworCXN0cmVhbV9mZCA9IEJ1ZkZpbGVPcGVuRmlsZVNldChz dHJlYW1fZmlsZXNldCwgcGF0aCwgT19SRE9OTFksIGZhbHNlKTsKKworCUN1cnJlbnRSZXNvdXJj ZU93bmVyID0gb2xkb3duZXI7CiAKIAlidWZmZXIgPSBwYWxsb2MoQkxDS1NaKTsKIAlpbml0U3Ry aW5nSW5mbygmczIpOwpAQCAtMTQzNCw3ICsyMDYzLDcgQEAgYXBwbHlfc3Bvb2xlZF9tZXNzYWdl cyhUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJCUNIRUNLX0ZPUl9JTlRFUlJV UFRTKCk7CiAKIAkJLyogcmVhZCBsZW5ndGggb2YgdGhlIG9uLWRpc2sgcmVjb3JkICovCi0JCW5i eXRlcyA9IEJ1ZkZpbGVSZWFkKGZkLCAmbGVuLCBzaXplb2YobGVuKSk7CisJCW5ieXRlcyA9IEJ1 ZkZpbGVSZWFkKHN0cmVhbV9mZCwgJmxlbiwgc2l6ZW9mKGxlbikpOwogCiAJCS8qIGhhdmUgd2Ug cmVhY2hlZCBlbmQgb2YgdGhlIGZpbGU/ICovCiAJCWlmIChuYnl0ZXMgPT0gMCkKQEAgLTE0NTUs MTIgKzIwODQsMTQgQEAgYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwg WExvZ1JlY1B0ciBsc24pCiAJCWJ1ZmZlciA9IHJlcGFsbG9jKGJ1ZmZlciwgbGVuKTsKIAogCQkv KiBhbmQgZmluYWxseSByZWFkIHRoZSBkYXRhIGludG8gdGhlIGJ1ZmZlciAqLwotCQlpZiAoQnVm RmlsZVJlYWQoZmQsIGJ1ZmZlciwgbGVuKSAhPSBsZW4pCisJCWlmIChCdWZGaWxlUmVhZChzdHJl YW1fZmQsIGJ1ZmZlciwgbGVuKSAhPSBsZW4pCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJy Y29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKIAkJCQkJIGVycm1zZygiY291bGQgbm90IHJlYWQgZnJv bSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24ncyBjaGFuZ2VzIGZpbGUgXCIlc1wiOiAlbSIsCiAJCQkJ CQkJcGF0aCkpKTsKIAorCQlCdWZGaWxlVGVsbChzdHJlYW1fZmQsICZmaWxlbm8sICZvZmZzZXQp OworCiAJCS8qIGNvcHkgdGhlIGJ1ZmZlciB0byB0aGUgc3RyaW5naW5mbyBhbmQgY2FsbCBhcHBs eV9kaXNwYXRjaCAqLwogCQlyZXNldFN0cmluZ0luZm8oJnMyKTsKIAkJYXBwZW5kQmluYXJ5U3Ry aW5nSW5mbygmczIsIGJ1ZmZlciwgbGVuKTsKQEAgLTE0NzYsMTUgKzIxMDcsMjQgQEAgYXBwbHlf c3Bvb2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAKIAkJ bmNoYW5nZXMrKzsKIAorCQkvKgorCQkgKiBJdCBpcyBwb3NzaWJsZSB0aGUgZmlsZSBoYXMgYmVl biBjbG9zZWQgYmVjYXVzZSB3ZSBoYXZlIHByb2Nlc3NlZAorCQkgKiB0aGUgdHJhbnNhY3Rpb24g ZW5kIG1lc3NhZ2UgbGlrZSBzdHJlYW1fY29tbWl0IGluIHdoaWNoIGNhc2UgdGhhdAorCQkgKiBt dXN0IGJlIHRoZSBsYXN0IG1lc3NhZ2UuCisJCSAqLworCQlpZiAoIXN0cmVhbV9mZCkKKwkJewor CQkJZW5zdXJlX2xhc3RfbWVzc2FnZShzdHJlYW1fZmlsZXNldCwgeGlkLCBmaWxlbm8sIG9mZnNl dCk7CisJCQlicmVhazsKKwkJfQorCiAJCWlmIChuY2hhbmdlcyAlIDEwMDAgPT0gMCkKIAkJCWVs b2coREVCVUcxLCAicmVwbGF5ZWQgJWQgY2hhbmdlcyBmcm9tIGZpbGUgXCIlc1wiIiwKIAkJCQkg bmNoYW5nZXMsIHBhdGgpOwogCX0KIAotCUJ1ZkZpbGVDbG9zZShmZCk7Ci0KLQlwZnJlZShidWZm ZXIpOwotCXBmcmVlKHMyLmRhdGEpOworCWlmIChzdHJlYW1fZmQpCisJCXN0cmVhbV9jbG9zZV9m aWxlKCk7CiAKIAllbG9nKERFQlVHMSwgInJlcGxheWVkICVkIChhbGwpIGNoYW5nZXMgZnJvbSBm aWxlIFwiJXNcIiIsCiAJCSBuY2hhbmdlcywgcGF0aCk7CkBAIC0xNTAwLDYgKzIxNDAsMTEgQEAg YXBwbHlfaGFuZGxlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBzKQogewogCVRyYW5zYWN0aW9u SWQgeGlkOwogCUxvZ2ljYWxSZXBDb21taXREYXRhIGNvbW1pdF9kYXRhOworCVBhcmFsbGVsQXBw bHlXb3JrZXJJbmZvICp3aW5mbzsKKwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKKwor CS8qIFNhdmUgdGhlIG1lc3NhZ2UgYmVmb3JlIGl0IGlzIGNvbnN1bWVkLiAqLworCVN0cmluZ0lu Zm9EYXRhIG9yaWdpbmFsX21zZyA9ICpzOwogCiAJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9u KQogCQllcmVwb3J0KEVSUk9SLApAQCAtMTUwOSwxNCArMjE1NCw4NSBAQCBhcHBseV9oYW5kbGVf c3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAJeGlkID0gbG9naWNhbHJlcF9yZWFkX3N0cmVh bV9jb21taXQocywgJmNvbW1pdF9kYXRhKTsKIAlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0 KHhpZCwgY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CiAKLQllbG9nKERFQlVHMSwgInJlY2VpdmVk IGNvbW1pdCBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb24gJXUiLCB4aWQpOworCWFwcGx5X2FjdGlv biA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oeGlkLCAmd2luZm8pOwogCi0JYXBwbHlf c3Bvb2xlZF9tZXNzYWdlcyh4aWQsIGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOworCXN3aXRjaCAo YXBwbHlfYWN0aW9uKQorCXsKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgogCi0JYXBw bHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2RhdGEpOworCQkJLyoKKwkJCSAqIFRo ZSB0cmFuc2FjdGlvbiBoYXMgYmVlbiBzZXJpYWxpemVkIHRvIGZpbGUsIHNvIHJlcGxheSBhbGwg dGhlCisJCQkgKiBzcG9vbGVkIG9wZXJhdGlvbnMuCisJCQkgKi8KKwkJCWFwcGx5X3Nwb29sZWRf bWVzc2FnZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCwgeGlkLAorCQkJCQkJ CQkgICBjb21taXRfZGF0YS5jb21taXRfbHNuKTsKKworCQkJYXBwbHlfaGFuZGxlX2NvbW1pdF9p bnRlcm5hbCgmY29tbWl0X2RhdGEpOworCisJCQkvKiBVbmxpbmsgdGhlIGZpbGVzIHdpdGggc2Vy aWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCisJCQlzdHJlYW1fY2xlYW51cF9m aWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCisJCQllbG9nKERFQlVHMSwg ImZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNUUkVBTSBDT01NSVQgY29tbWFuZCIpOworCQkJYnJl YWs7CisKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3 aW5mbyk7CisKKwkJCWlmIChwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkpCisJ CQl7CisJCQkJLyogRmluaXNoIHByb2Nlc3NpbmcgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4g Ki8KKwkJCQlwYV94YWN0X2ZpbmlzaCh3aW5mbywgY29tbWl0X2RhdGEuZW5kX2xzbik7CisJCQkJ YnJlYWs7CisJCQl9CisKKwkJCS8qCisJCQkgKiBTd2l0Y2ggdG8gc2VyaWFsaXplIG1vZGUgd2hl biB3ZSBhcmUgbm90IGFibGUgdG8gc2VuZCB0aGUKKwkJCSAqIGNoYW5nZSB0byBwYXJhbGxlbCBh cHBseSB3b3JrZXIuCisJCQkgKi8KKwkJCXBhX3N3aXRjaF90b19wYXJ0aWFsX3NlcmlhbGl6ZSh3 aW5mbywgdHJ1ZSk7CisKKwkJCS8qIGZhbGwgdGhyb3VnaCAqLworCQljYXNlIFRSQU5TX0xFQURF Ul9QQVJUSUFMX1NFUklBTElaRToKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCXN0cmVhbV9vcGVu X2FuZF93cml0ZV9jaGFuZ2UoeGlkLCBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX0NPTU1JVCwKKwkJ CQkJCQkJCQkgJm9yaWdpbmFsX21zZyk7CisKKwkJCXBhX3NldF9maWxlc2V0X3N0YXRlKHdpbmZv LT5zaGFyZWQsIEZTX1NFUklBTElaRV9ET05FKTsKIAotCS8qIHVubGluayB0aGUgZmlsZXMgd2l0 aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mbyAqLwotCXN0cmVhbV9jbGVhbnVw X2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CisJCQkvKiBGaW5pc2ggcHJv Y2Vzc2luZyB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLiAqLworCQkJcGFfeGFjdF9maW5pc2go d2luZm8sIGNvbW1pdF9kYXRhLmVuZF9sc24pOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19Q QVJBTExFTF9BUFBMWToKKworCQkJLyoKKwkJCSAqIElmIHRoZSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgaXMgYXBwbHlpbmcgc3Bvb2xlZCBtZXNzYWdlcyB0aGVuCisJCQkgKiBjbG9zZSB0aGUgZmls ZSBiZWZvcmUgY29tbWl0dGluZy4KKwkJCSAqLworCQkJaWYgKHN0cmVhbV9mZCkKKwkJCQlzdHJl YW1fY2xvc2VfZmlsZSgpOworCisJCQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21t aXRfZGF0YSk7CisKKwkJCU15UGFyYWxsZWxTaGFyZWQtPmxhc3RfY29tbWl0X2VuZCA9IFhhY3RM YXN0Q29tbWl0RW5kOworCisJCQkvKgorCQkJICogSXQgaXMgaW1wb3J0YW50IHRvIHNldCB0aGUg dHJhbnNhY3Rpb24gc3RhdGUgYXMgZmluaXNoZWQgYmVmb3JlCisJCQkgKiByZWxlYXNpbmcgdGhl IGxvY2suIFNlZSBwYV93YWl0X2Zvcl94YWN0X2ZpbmlzaC4KKwkJCSAqLworCQkJcGFfc2V0X3hh Y3Rfc3RhdGUoTXlQYXJhbGxlbFNoYXJlZCwgUEFSQUxMRUxfVFJBTlNfRklOSVNIRUQpOworCQkJ cGFfdW5sb2NrX3RyYW5zYWN0aW9uKHhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisKKwkJCXBh X3Jlc2V0X3N1YnRyYW5zKCk7CisKKwkJCWVsb2coREVCVUcxLCAiZmluaXNoZWQgcHJvY2Vzc2lu ZyB0aGUgU1RSRUFNIENPTU1JVCBjb21tYW5kIik7CisJCQlicmVhazsKKworCQlkZWZhdWx0Ogor CQkJQXNzZXJ0KGZhbHNlKTsKKwkJCWJyZWFrOworCX0KIAogCS8qIFByb2Nlc3MgYW55IHRhYmxl cyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19z eW5jaW5nX3RhYmxlcyhjb21taXRfZGF0YS5lbmRfbHNuKTsKQEAgLTE1NjAsOSArMjI3NiwxNiBA QCBhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKExvZ2ljYWxSZXBDb21taXREYXRhICpjb21t aXRfZGF0YSkKIAkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl90aW1lc3RhbXAgPSBjb21taXRf ZGF0YS0+Y29tbWl0dGltZTsKIAogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQlp ZiAoSXNUcmFuc2FjdGlvbkJsb2NrKCkpCisJCXsKKwkJCUVuZFRyYW5zYWN0aW9uQmxvY2soZmFs c2UpOworCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCX0KKwogCQlwZ3N0YXRfcmVw b3J0X3N0YXQoZmFsc2UpOwogCi0JCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKGNvbW1pdF9kYXRhLT5l bmRfbHNuKTsKKwkJc3RvcmVfZmx1c2hfcG9zaXRpb24oY29tbWl0X2RhdGEtPmVuZF9sc24sIFhh Y3RMYXN0Q29tbWl0RW5kKTsKIAl9CiAJZWxzZQogCXsKQEAgLTI1MDgsNyArMzIzMSw3IEBAIGFw cGx5X2hhbmRsZV90cnVuY2F0ZShTdHJpbmdJbmZvIHMpCiAvKgogICogTG9naWNhbCByZXBsaWNh dGlvbiBwcm90b2NvbCBtZXNzYWdlIGRpc3BhdGNoZXIuCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lk CiBhcHBseV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpCiB7CiAJTG9naWNhbFJlcE1zZ1R5cGUgYWN0 aW9uID0gcHFfZ2V0bXNnYnl0ZShzKTsKQEAgLTI2NzIsMTcgKzMzOTUsMjQgQEAgZ2V0X2ZsdXNo X3Bvc2l0aW9uKFhMb2dSZWNQdHIgKndyaXRlLCBYTG9nUmVjUHRyICpmbHVzaCwKIC8qCiAgKiBT dG9yZSBjdXJyZW50IHJlbW90ZS9sb2NhbCBsc24gcGFpciBpbiB0aGUgdHJhY2tpbmcgbGlzdC4K ICAqLwotc3RhdGljIHZvaWQKLXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3Rl X2xzbikKK3ZvaWQKK3N0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xzbiwg WExvZ1JlY1B0ciBsb2NhbF9sc24pCiB7CiAJRmx1c2hQb3NpdGlvbiAqZmx1c2hwb3M7CiAKKwkv KgorCSAqIFNraXAgZm9yIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIGJlY2F1c2UgdGhlIGxzbl9t YXBwaW5nIGlzIG1haW50YWluZWQKKwkgKiBieSB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlci4KKwkg Ki8KKwlpZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJCXJldHVybjsKKwogCS8qIE5l ZWQgdG8gZG8gdGhpcyBpbiBwZXJtYW5lbnQgY29udGV4dCAqLwogCU1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhBcHBseUNvbnRleHQpOwogCiAJLyogVHJhY2sgY29tbWl0IGxzbiAgKi8KIAlmbHVzaHBv cyA9IChGbHVzaFBvc2l0aW9uICopIHBhbGxvYyhzaXplb2YoRmx1c2hQb3NpdGlvbikpOwotCWZs dXNocG9zLT5sb2NhbF9lbmQgPSBYYWN0TGFzdENvbW1pdEVuZDsKKwlmbHVzaHBvcy0+bG9jYWxf ZW5kID0gbG9jYWxfbHNuOwogCWZsdXNocG9zLT5yZW1vdGVfZW5kID0gcmVtb3RlX2xzbjsKIAog CWRsaXN0X3B1c2hfdGFpbCgmbHNuX21hcHBpbmcsICZmbHVzaHBvcy0+bm9kZSk7CkBAIC0yNzQx LDYgKzM0NzEsNyBAQCBMb2dpY2FsUmVwQXBwbHlMb29wKFhMb2dSZWNQdHIgbGFzdF9yZWNlaXZl ZCkKIAllcnJjYWxsYmFjay5jYWxsYmFjayA9IGFwcGx5X2Vycm9yX2NhbGxiYWNrOwogCWVycmNh bGxiYWNrLnByZXZpb3VzID0gZXJyb3JfY29udGV4dF9zdGFjazsKIAllcnJvcl9jb250ZXh0X3N0 YWNrID0gJmVycmNhbGxiYWNrOworCWFwcGx5X2Vycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJvcl9j b250ZXh0X3N0YWNrOwogCiAJLyogVGhpcyBvdXRlciBsb29wIGl0ZXJhdGVzIG9uY2UgcGVyIHdh aXQuICovCiAJZm9yICg7OykKQEAgLTI5NTUsNiArMzY4Niw3IEBAIExvZ2ljYWxSZXBBcHBseUxv b3AoWExvZ1JlY1B0ciBsYXN0X3JlY2VpdmVkKQogCiAJLyogUG9wIHRoZSBlcnJvciBjb250ZXh0 IHN0YWNrICovCiAJZXJyb3JfY29udGV4dF9zdGFjayA9IGVycmNhbGxiYWNrLnByZXZpb3VzOwor CWFwcGx5X2Vycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJvcl9jb250ZXh0X3N0YWNrOwogCiAJLyog QWxsIGRvbmUgKi8KIAl3YWxyY3ZfZW5kc3RyZWFtaW5nKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4s ICZ0bGkpOwpAQCAtMzA1Myw5ICszNzg1LDMxIEBAIHNlbmRfZmVlZGJhY2soWExvZ1JlY1B0ciBy ZWN2cG9zLCBib29sIGZvcmNlLCBib29sIHJlcXVlc3RSZXBseSkKIH0KIAogLyoKLSAqIFJlcmVh ZCBzdWJzY3JpcHRpb24gaW5mbyBpZiBuZWVkZWQuIE1vc3QgY2hhbmdlcyB3aWxsIGJlIGV4aXQu CisgKiBFeGl0IHJvdXRpbmUgZm9yIGFwcGx5IHdvcmtlcnMgZHVlIHRvIHN1YnNjcmlwdGlvbiBw YXJhbWV0ZXIgY2hhbmdlcy4KICAqLwogc3RhdGljIHZvaWQKK2FwcGx5X3dvcmtlcl9leGl0KHZv aWQpCit7CisJaWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCXsKKwkJLyoKKwkJICog RG9uJ3Qgc3RvcCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGFzIHRoZSBsZWFkZXIgd2lsbCBk ZXRlY3QgdGhlCisJCSAqIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgY2hhbmdlIGFuZCByZXN0YXJ0 IGxvZ2ljYWwgcmVwbGljYXRpb24gbGF0ZXIKKwkJICogYW55d2F5LiBUaGlzIGFsc28gcHJldmVu dHMgdGhlIGxlYWRlciBmcm9tIHJlcG9ydGluZyBlcnJvcnMgd2hlbgorCQkgKiB0cnlpbmcgdG8g Y29tbXVuaWNhdGUgd2l0aCBhIHN0b3BwZWQgcGFyYWxsZWwgYXBwbHkgd29ya2VyLCB3aGljaAor CQkgKiB3b3VsZCBhY2NpZGVudGFsbHkgZGlzYWJsZSBzdWJzY3JpcHRpb25zIGlmIGRpc2FibGVf b25fZXJyb3Igd2FzCisJCSAqIHNldC4KKwkJICovCisJCXJldHVybjsKKwl9CisKKwlwcm9jX2V4 aXQoMCk7Cit9CisKKy8qCisgKiBSZXJlYWQgc3Vic2NyaXB0aW9uIGluZm8gaWYgbmVlZGVkLiBN b3N0IGNoYW5nZXMgd2lsbCBiZSBleGl0LgorICovCit2b2lkCiBtYXliZV9yZXJlYWRfc3Vic2Ny aXB0aW9uKHZvaWQpCiB7CiAJTWVtb3J5Q29udGV4dCBvbGRjdHg7CkBAIC0zMDg1LDkgKzM4Mzks OSBAQCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQpCiAJaWYgKCFuZXdzdWIpCiAJewog CQllcmVwb3J0KExPRywKLQkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdv cmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsICIKLQkJCQkJCSJzdG9wIGJlY2F1c2Ug dGhlIHN1YnNjcmlwdGlvbiB3YXMgcmVtb3ZlZCIsCi0JCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFt ZSkpKTsKKwkJLyogdHJhbnNsYXRvcjogZmlyc3QgJXMgaXMgdGhlIG5hbWUgb2YgbG9naWNhbCBy ZXBsaWNhdGlvbiB3b3JrZXIgKi8KKwkJCQkoZXJybXNnKCIlcyBmb3Igc3Vic2NyaXB0aW9uIFwi JXNcIiB3aWxsIHN0b3AgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9uIHdhcyByZW1vdmVkIiwKKwkJ CQkJCWdldF93b3JrZXJfbmFtZSgpLCBNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKIAogCQlwcm9j X2V4aXQoMCk7CiAJfQpAQCAtMzA5NiwxMSArMzg1MCwxMSBAQCBtYXliZV9yZXJlYWRfc3Vic2Ny aXB0aW9uKHZvaWQpCiAJaWYgKCFuZXdzdWItPmVuYWJsZWQpCiAJewogCQllcmVwb3J0KExPRywK LQkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlciBmb3Igc3Vic2Ny aXB0aW9uIFwiJXNcIiB3aWxsICIKLQkJCQkJCSJzdG9wIGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlv biB3YXMgZGlzYWJsZWQiLAotCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CisJCS8qIHRy YW5zbGF0b3I6IGZpcnN0ICVzIGlzIHRoZSBuYW1lIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29y a2VyICovCisJCQkJKGVycm1zZygiJXMgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCBzdG9w IGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3YXMgZGlzYWJsZWQiLAorCQkJCQkJZ2V0X3dvcmtl cl9uYW1lKCksIE15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOwogCi0JCXByb2NfZXhpdCgwKTsKKwkJ YXBwbHlfd29ya2VyX2V4aXQoKTsKIAl9CiAKIAkvKiAhc2xvdG5hbWUgc2hvdWxkIG5ldmVyIGhh cHBlbiB3aGVuIGVuYWJsZWQgaXMgdHJ1ZS4gKi8KQEAgLTMxMTEsNyArMzg2NSwxMCBAQCBtYXli ZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQpCiAKIAkvKgogCSAqIEV4aXQgaWYgYW55IHBhcmFt ZXRlciB0aGF0IGFmZmVjdHMgdGhlIHJlbW90ZSBjb25uZWN0aW9uIHdhcyBjaGFuZ2VkLgotCSAq IFRoZSBsYXVuY2hlciB3aWxsIHN0YXJ0IGEgbmV3IHdvcmtlci4KKwkgKiBUaGUgbGF1bmNoZXIg d2lsbCBzdGFydCBhIG5ldyB3b3JrZXIgYnV0IG5vdGUgdGhhdCB0aGUgcGFyYWxsZWwgYXBwbHkK KwkgKiB3b3JrZXIgd29uJ3QgcmVzdGFydCBpZiB0aGUgc3RyZWFtaW5nIG9wdGlvbidzIHZhbHVl IGlzIGNoYW5nZWQgZnJvbQorCSAqICdwYXJhbGxlbCcgdG8gYW55IG90aGVyIHZhbHVlIG9yIHRo ZSBzZXJ2ZXIgZGVjaWRlcyBub3QgdG8gc3RyZWFtIHRoZQorCSAqIGluLXByb2dyZXNzIHRyYW5z YWN0aW9uLgogCSAqLwogCWlmIChzdHJjbXAobmV3c3ViLT5jb25uaW5mbywgTXlTdWJzY3JpcHRp b24tPmNvbm5pbmZvKSAhPSAwIHx8CiAJCXN0cmNtcChuZXdzdWItPm5hbWUsIE15U3Vic2NyaXB0 aW9uLT5uYW1lKSAhPSAwIHx8CkBAIC0zMTIyLDExICszODc5LDE3IEBAIG1heWJlX3JlcmVhZF9z dWJzY3JpcHRpb24odm9pZCkKIAkJbmV3c3ViLT5vd25lciAhPSBNeVN1YnNjcmlwdGlvbi0+b3du ZXIgfHwKIAkJIWVxdWFsKG5ld3N1Yi0+cHVibGljYXRpb25zLCBNeVN1YnNjcmlwdGlvbi0+cHVi bGljYXRpb25zKSkKIAl7Ci0JCWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImxvZ2ljYWwgcmVw bGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgcmVzdGFy dCBiZWNhdXNlIG9mIGEgcGFyYW1ldGVyIGNoYW5nZSIsCi0JCQkJCQlNeVN1YnNjcmlwdGlvbi0+ bmFtZSkpKTsKKwkJaWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQkJZXJlcG9ydChM T0csCisJCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29y a2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgc3RvcCBiZWNhdXNlIG9mIGEgcGFyYW1l dGVyIGNoYW5nZSIsCisJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CisJCWVsc2UKKwkJ CWVyZXBvcnQoTE9HLAorCQkJLyogdHJhbnNsYXRvcjogZmlyc3QgJXMgaXMgdGhlIG5hbWUgb2Yg bG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgKi8KKwkJCQkJKGVycm1zZygiJXMgZm9yIHN1YnNj cmlwdGlvbiBcIiVzXCIgd2lsbCByZXN0YXJ0IGJlY2F1c2Ugb2YgYSBwYXJhbWV0ZXIgY2hhbmdl IiwKKwkJCQkJCQlnZXRfd29ya2VyX25hbWUoKSwgTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CiAK LQkJcHJvY19leGl0KDApOworCQlhcHBseV93b3JrZXJfZXhpdCgpOwogCX0KIAogCS8qIENoZWNr IGZvciBvdGhlciBjaGFuZ2VzIHRoYXQgc2hvdWxkIG5ldmVyIGhhcHBlbiB0b28uICovCkBAIC0z Mzc4LDcgKzQxNDEsNyBAQCBjaGFuZ2VzX2ZpbGVuYW1lKGNoYXIgKnBhdGgsIE9pZCBzdWJpZCwg VHJhbnNhY3Rpb25JZCB4aWQpCiAgKiB0b3BsZXZlbCB0cmFuc2FjdGlvbi4gRWFjaCBzdWJzY3Jp cHRpb24gaGFzIGEgc2VwYXJhdGUgc2V0IG9mIGZpbGVzCiAgKiBmb3IgYW55IHRvcGxldmVsIHRy YW5zYWN0aW9uLgogICovCi1zdGF0aWMgdm9pZAordm9pZAogc3RyZWFtX2NsZWFudXBfZmlsZXMo T2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCkKIHsKIAljaGFyCQlwYXRoW01BWFBHUEFUSF07 CkBAIC0zNDAxLDkgKzQxNjQsNiBAQCBzdHJlYW1fY2xlYW51cF9maWxlcyhPaWQgc3ViaWQsIFRy YW5zYWN0aW9uSWQgeGlkKQogICogYnkgc3RyZWFtX3hpZCAoZ2xvYmFsIHZhcmlhYmxlKS4gSWYg aXQncyB0aGUgZmlyc3QgY2h1bmsgb2Ygc3RyZWFtZWQKICAqIGNoYW5nZXMgZm9yIHRoaXMgdHJh bnNhY3Rpb24sIGNyZWF0ZSB0aGUgYnVmZmlsZSwgb3RoZXJ3aXNlIG9wZW4gdGhlCiAgKiBwcmV2 aW91c2x5IGNyZWF0ZWQgZmlsZS4KLSAqCi0gKiBUaGlzIGNhbiBvbmx5IGJlIGNhbGxlZCBhdCB0 aGUgYmVnaW5uaW5nIG9mIGEgInN0cmVhbWluZyIgYmxvY2ssIGkuZS4KLSAqIGJldHdlZW4gc3Ry ZWFtX3N0YXJ0L3N0cmVhbV9zdG9wIG1lc3NhZ2VzIGZyb20gdGhlIHVwc3RyZWFtLgogICovCiBz dGF0aWMgdm9pZAogc3RyZWFtX29wZW5fZmlsZShPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlk LCBib29sIGZpcnN0X3NlZ21lbnQpCkBAIC0zNDExLDcgKzQxNzEsNiBAQCBzdHJlYW1fb3Blbl9m aWxlKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgZmlyc3Rfc2VnbWVudCkKIAlj aGFyCQlwYXRoW01BWFBHUEFUSF07CiAJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CiAKLQlBc3NlcnQo aW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pOwogCUFzc2VydChPaWRJc1ZhbGlkKHN1YmlkKSk7CiAJ QXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpOwogCUFzc2VydChzdHJlYW1fZmQgPT0g TlVMTCk7CkBAIC0zNDUwLDE1ICs0MjA5LDEwIEBAIHN0cmVhbV9vcGVuX2ZpbGUoT2lkIHN1Ymlk LCBUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBmaXJzdF9zZWdtZW50KQogLyoKICAqIHN0cmVhbV9j bG9zZV9maWxlCiAgKgkgIENsb3NlIHRoZSBjdXJyZW50bHkgb3BlbiBmaWxlIHdpdGggc3RyZWFt ZWQgY2hhbmdlcy4KLSAqCi0gKiBUaGlzIGNhbiBvbmx5IGJlIGNhbGxlZCBhdCB0aGUgZW5kIG9m IGEgc3RyZWFtaW5nIGJsb2NrLCBpLmUuIGF0IHN0cmVhbV9zdG9wCi0gKiBtZXNzYWdlIGZyb20g dGhlIHVwc3RyZWFtLgogICovCiBzdGF0aWMgdm9pZAogc3RyZWFtX2Nsb3NlX2ZpbGUodm9pZCkK IHsKLQlBc3NlcnQoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pOwotCUFzc2VydChUcmFuc2FjdGlv bklkSXNWYWxpZChzdHJlYW1feGlkKSk7CiAJQXNzZXJ0KHN0cmVhbV9mZCAhPSBOVUxMKTsKIAog CUJ1ZkZpbGVDbG9zZShzdHJlYW1fZmQpOwpAQCAtMzQ4MCw4ICs0MjM0LDYgQEAgc3RyZWFtX3dy aXRlX2NoYW5nZShjaGFyIGFjdGlvbiwgU3RyaW5nSW5mbyBzKQogewogCWludAkJCWxlbjsKIAot CUFzc2VydChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbik7Ci0JQXNzZXJ0KFRyYW5zYWN0aW9uSWRJ c1ZhbGlkKHN0cmVhbV94aWQpKTsKIAlBc3NlcnQoc3RyZWFtX2ZkICE9IE5VTEwpOwogCiAJLyog dG90YWwgb24tZGlzayBzaXplLCBpbmNsdWRpbmcgdGhlIGFjdGlvbiB0eXBlIGNoYXJhY3RlciAq LwpAQCAtMzUwMCw2ICs0MjUyLDI2IEBAIHN0cmVhbV93cml0ZV9jaGFuZ2UoY2hhciBhY3Rpb24s IFN0cmluZ0luZm8gcykKIH0KIAogLyoKKyAqIHN0cmVhbV9vcGVuX2FuZF93cml0ZV9jaGFuZ2UK KyAqCSAgU2VyaWFsaXplIGEgbWVzc2FnZSB0byBhIGZpbGUgZm9yIHRoZSBnaXZlbiB0cmFuc2Fj dGlvbi4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG8gc3RyZWFtX3dyaXRlX2No YW5nZSBleGNlcHQgdGhhdCBpdCB3aWxsIG9wZW4gdGhlCisgKiB0YXJnZXQgZmlsZSBpZiBub3Qg YWxyZWFkeSBiZWZvcmUgd3JpdGluZyB0aGUgbWVzc2FnZSBhbmQgY2xvc2UgdGhlIGZpbGUgYXQK KyAqIHRoZSBlbmQuCisgKi8KK3N0YXRpYyB2b2lkCitzdHJlYW1fb3Blbl9hbmRfd3JpdGVfY2hh bmdlKFRyYW5zYWN0aW9uSWQgeGlkLCBjaGFyIGFjdGlvbiwgU3RyaW5nSW5mbyBzKQoreworCUFz c2VydCghaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pOworCisJaWYgKCFzdHJlYW1fZmQpCisJCXN0 cmVhbV9zdGFydF9pbnRlcm5hbCh4aWQsIGZhbHNlKTsKKworCXN0cmVhbV93cml0ZV9jaGFuZ2Uo YWN0aW9uLCBzKTsKKwlzdHJlYW1fc3RvcF9pbnRlcm5hbCh4aWQpOworfQorCisvKgogICogQ2xl YW51cCB0aGUgbWVtb3J5IGZvciBzdWJ4YWN0cyBhbmQgcmVzZXQgdGhlIHJlbGF0ZWQgdmFyaWFi bGVzLgogICovCiBzdGF0aWMgaW5saW5lIHZvaWQKQEAgLTM2MTAsMzcgKzQzODIsMTYgQEAgc3Rh cnRfYXBwbHkoWExvZ1JlY1B0ciBvcmlnaW5fc3RhcnRwb3MpCiAJUEdfRU5EX1RSWSgpOwogfQog Ci0vKiBMb2dpY2FsIFJlcGxpY2F0aW9uIEFwcGx5IHdvcmtlciBlbnRyeSBwb2ludCAqLworLyoK KyAqIENvbW1vbiBpbml0aWFsaXphdGlvbiBmb3IgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgcGFy YWxsZWwgYXBwbHkgd29ya2VyLgorICoKKyAqIEluaXRpYWxpemUgdGhlIGRhdGFiYXNlIGNvbm5l Y3Rpb24sIGluLW1lbW9yeSBzdWJzY3JpcHRpb24gYW5kIG5lY2Vzc2FyeQorICogY29uZmlnIG9w dGlvbnMuCisgKi8KIHZvaWQKLUFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKK0luaXRp YWxpemVBcHBseVdvcmtlcih2b2lkKQogewotCWludAkJCXdvcmtlcl9zbG90ID0gRGF0dW1HZXRJ bnQzMihtYWluX2FyZyk7CiAJTWVtb3J5Q29udGV4dCBvbGRjdHg7Ci0JY2hhcgkJb3JpZ2lubmFt ZVtOQU1FREFUQUxFTl07Ci0JWExvZ1JlY1B0cglvcmlnaW5fc3RhcnRwb3MgPSBJbnZhbGlkWExv Z1JlY1B0cjsKLQljaGFyCSAgICpteXNsb3RuYW1lID0gTlVMTDsKLQlXYWxSY3ZTdHJlYW1PcHRp b25zIG9wdGlvbnM7Ci0JaW50CQkJc2VydmVyX3ZlcnNpb247Ci0KLQkvKiBBdHRhY2ggdG8gc2xv dCAqLwotCWxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaCh3b3JrZXJfc2xvdCk7Ci0KLQkvKiBTZXR1 cCBzaWduYWwgaGFuZGxpbmcgKi8KLQlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JD b25maWdSZWxvYWQpOwotCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7Ci0JQmFja2dyb3VuZFdvcmtl clVuYmxvY2tTaWduYWxzKCk7Ci0KLQkvKgotCSAqIFdlIGRvbid0IGN1cnJlbnRseSBuZWVkIGFu eSBSZXNvdXJjZU93bmVyIGluIGEgd2FscmVjZWl2ZXIgcHJvY2VzcywgYnV0Ci0JICogaWYgd2Ug ZGlkLCB3ZSBjb3VsZCBjYWxsIENyZWF0ZUF1eFByb2Nlc3NSZXNvdXJjZU93bmVyIGhlcmUuCi0J ICovCi0KLQkvKiBJbml0aWFsaXNlIHN0YXRzIHRvIGEgc2FuaXNoIHZhbHVlICovCi0JTXlMb2dp Y2FsUmVwV29ya2VyLT5sYXN0X3NlbmRfdGltZSA9IE15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9y ZWN2X3RpbWUgPQotCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnJlcGx5X3RpbWUgPSBHZXRDdXJyZW50 VGltZXN0YW1wKCk7Ci0KLQkvKiBMb2FkIHRoZSBsaWJwcS1zcGVjaWZpYyBmdW5jdGlvbnMgKi8K LQlsb2FkX2ZpbGUoImxpYnBxd2FscmVjZWl2ZXIiLCBmYWxzZSk7CiAKIAkvKiBSdW4gYXMgcmVw bGljYSBzZXNzaW9uIHJlcGxpY2F0aW9uIHJvbGUuICovCiAJU2V0Q29uZmlnT3B0aW9uKCJzZXNz aW9uX3JlcGxpY2F0aW9uX3JvbGUiLCAicmVwbGljYSIsCkBAIC0zNjY4LDkgKzQ0MTksMTAgQEAg QXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCWlmICghTXlTdWJzY3JpcHRpb24pCiAJ ewogCQllcmVwb3J0KExPRywKLQkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5 IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uICV1IHdpbGwgbm90ICIKLQkJCQkJCSJzdGFydCBiZWNh dXNlIHRoZSBzdWJzY3JpcHRpb24gd2FzIHJlbW92ZWQgZHVyaW5nIHN0YXJ0dXAiLAotCQkJCQkJ TXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCkpKTsKKwkJLyogdHJhbnNsYXRvcjogJXMgaXMgdGhl IG5hbWUgb2YgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgKi8KKwkJCQkoZXJybXNnKCIlcyBm b3Igc3Vic2NyaXB0aW9uICV1IHdpbGwgbm90IHN0YXJ0IGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlv biB3YXMgcmVtb3ZlZCBkdXJpbmcgc3RhcnR1cCIsCisJCQkJCQlnZXRfd29ya2VyX25hbWUoKSwg TXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCkpKTsKKwogCQlwcm9jX2V4aXQoMCk7CiAJfQogCkBA IC0zNjgwLDExICs0NDMyLDExIEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAlp ZiAoIU15U3Vic2NyaXB0aW9uLT5lbmFibGVkKQogCXsKIAkJZXJlcG9ydChMT0csCi0JCQkJKGVy cm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBc IiVzXCIgd2lsbCBub3QgIgotCQkJCQkJInN0YXJ0IGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3 YXMgZGlzYWJsZWQgZHVyaW5nIHN0YXJ0dXAiLAotCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUp KSk7CisJCS8qIHRyYW5zbGF0b3I6IGZpcnN0ICVzIGlzIHRoZSBuYW1lIG9mIGxvZ2ljYWwgcmVw bGljYXRpb24gd29ya2VyICovCisJCQkJKGVycm1zZygiJXMgZm9yIHN1YnNjcmlwdGlvbiBcIiVz XCIgd2lsbCBub3Qgc3RhcnQgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9uIHdhcyBkaXNhYmxlZCBk dXJpbmcgc3RhcnR1cCIsCisJCQkJCQlnZXRfd29ya2VyX25hbWUoKSwgTXlTdWJzY3JpcHRpb24t Pm5hbWUpKSk7CiAKLQkJcHJvY19leGl0KDApOworCQlhcHBseV93b3JrZXJfZXhpdCgpOwogCX0K IAogCS8qIFNldHVwIHN5bmNocm9ub3VzIGNvbW1pdCBhY2NvcmRpbmcgdG8gdGhlIHVzZXIncyB3 aXNoZXMgKi8KQEAgLTM2OTksMTMgKzQ0NTEsNDkgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1h aW5fYXJnKQogCWlmIChhbV90YWJsZXN5bmNfd29ya2VyKCkpCiAJCWVyZXBvcnQoTE9HLAogCQkJ CShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gdGFibGUgc3luY2hyb25pemF0aW9uIHdvcmtl ciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiwgdGFibGUgXCIlc1wiIGhhcyBzdGFydGVkIiwKLQkJ CQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lLCBnZXRfcmVsX25hbWUoTXlMb2dpY2FsUmVwV29ya2Vy LT5yZWxpZCkpKSk7CisJCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSwKKwkJCQkJCWdldF9yZWxf bmFtZShNeUxvZ2ljYWxSZXBXb3JrZXItPnJlbGlkKSkpKTsKIAllbHNlCiAJCWVyZXBvcnQoTE9H LAotCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJz Y3JpcHRpb24gXCIlc1wiIGhhcyBzdGFydGVkIiwKLQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1l KSkpOworCQkvKiB0cmFuc2xhdG9yOiBmaXJzdCAlcyBpcyB0aGUgbmFtZSBvZiBsb2dpY2FsIHJl cGxpY2F0aW9uIHdvcmtlciAqLworCQkJCShlcnJtc2coIiVzIGZvciBzdWJzY3JpcHRpb24gXCIl c1wiIGhhcyBzdGFydGVkIiwKKwkJCQkJCWdldF93b3JrZXJfbmFtZSgpLCBNeVN1YnNjcmlwdGlv bi0+bmFtZSkpKTsKIAogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworfQorCisvKiBMb2dp Y2FsIFJlcGxpY2F0aW9uIEFwcGx5IHdvcmtlciBlbnRyeSBwb2ludCAqLwordm9pZAorQXBwbHlX b3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQoreworCWludAkJCXdvcmtlcl9zbG90ID0gRGF0dW1H ZXRJbnQzMihtYWluX2FyZyk7CisJY2hhcgkJb3JpZ2lubmFtZVtOQU1FREFUQUxFTl07CisJWExv Z1JlY1B0cglvcmlnaW5fc3RhcnRwb3MgPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwljaGFyCSAgICpt eXNsb3RuYW1lID0gTlVMTDsKKwlXYWxSY3ZTdHJlYW1PcHRpb25zIG9wdGlvbnM7CisJaW50CQkJ c2VydmVyX3ZlcnNpb247CisKKwkvKiBBdHRhY2ggdG8gc2xvdCAqLworCWxvZ2ljYWxyZXBfd29y a2VyX2F0dGFjaCh3b3JrZXJfc2xvdCk7CisKKwkvKiBTZXR1cCBzaWduYWwgaGFuZGxpbmcgKi8K KwlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOworCXBxc2ln bmFsKFNJR1RFUk0sIGRpZSk7CisJQmFja2dyb3VuZFdvcmtlclVuYmxvY2tTaWduYWxzKCk7CisK KwkvKgorCSAqIFdlIGRvbid0IGN1cnJlbnRseSBuZWVkIGFueSBSZXNvdXJjZU93bmVyIGluIGEg d2FscmVjZWl2ZXIgcHJvY2VzcywgYnV0CisJICogaWYgd2UgZGlkLCB3ZSBjb3VsZCBjYWxsIENy ZWF0ZUF1eFByb2Nlc3NSZXNvdXJjZU93bmVyIGhlcmUuCisJICovCisKKwkvKiBJbml0aWFsaXNl IHN0YXRzIHRvIGEgc2FuaXNoIHZhbHVlICovCisJTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3Nl bmRfdGltZSA9IE15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9yZWN2X3RpbWUgPQorCQlNeUxvZ2lj YWxSZXBXb3JrZXItPnJlcGx5X3RpbWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisKKwkvKiBM b2FkIHRoZSBsaWJwcS1zcGVjaWZpYyBmdW5jdGlvbnMgKi8KKwlsb2FkX2ZpbGUoImxpYnBxd2Fs cmVjZWl2ZXIiLCBmYWxzZSk7CisKKwlJbml0aWFsaXplQXBwbHlXb3JrZXIoKTsKIAogCS8qIENv bm5lY3QgdG8gdGhlIG9yaWdpbiBhbmQgc3RhcnQgdGhlIHJlcGxpY2F0aW9uLiAqLwogCWVsb2co REVCVUcxLCAiY29ubmVjdGluZyB0byBwdWJsaXNoZXIgdXNpbmcgY29ubmVjdGlvbiBzdHJpbmcg XCIlc1wiIiwKQEAgLTM3MTUsMjAgKzQ1MDMsMTUgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1h aW5fYXJnKQogCXsKIAkJc3RhcnRfdGFibGVfc3luYygmb3JpZ2luX3N0YXJ0cG9zLCAmbXlzbG90 bmFtZSk7CiAKLQkJLyoKLQkJICogQWxsb2NhdGUgdGhlIG9yaWdpbiBuYW1lIGluIGxvbmctbGl2 ZWQgY29udGV4dCBmb3IgZXJyb3IgY29udGV4dAotCQkgKiBtZXNzYWdlLgotCQkgKi8KIAkJUmVw bGljYXRpb25PcmlnaW5OYW1lRm9yTG9naWNhbFJlcChNeVN1YnNjcmlwdGlvbi0+b2lkLAogCQkJ CQkJCQkJCSAgIE15TG9naWNhbFJlcFdvcmtlci0+cmVsaWQsCiAJCQkJCQkJCQkJICAgb3JpZ2lu bmFtZSwKIAkJCQkJCQkJCQkgICBzaXplb2Yob3JpZ2lubmFtZSkpOwotCQlhcHBseV9lcnJvcl9j YWxsYmFja19hcmcub3JpZ2luX25hbWUgPSBNZW1vcnlDb250ZXh0U3RyZHVwKEFwcGx5Q29udGV4 dCwKLQkJCQkJCQkJCQkJCQkJCQkgICBvcmlnaW5uYW1lKTsKKwkJc2V0X2FwcGx5X2Vycm9yX2Nv bnRleHRfb3JpZ2luKG9yaWdpbm5hbWUpOwogCX0KIAllbHNlCiAJewotCQkvKiBUaGlzIGlzIG1h aW4gYXBwbHkgd29ya2VyICovCisJCS8qIFRoaXMgaXMgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIg Ki8KIAkJUmVwT3JpZ2luSWQgb3JpZ2luaWQ7CiAJCVRpbWVMaW5lSUQJc3RhcnRwb2ludFRMSTsK IAkJY2hhcgkgICAqZXJyOwpAQCAtMzc1Miw3ICs0NTM1LDcgQEAgQXBwbHlXb3JrZXJNYWluKERh dHVtIG1haW5fYXJnKQogCQlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fYnlfbmFtZShvcmlnaW5uYW1l LCB0cnVlKTsKIAkJaWYgKCFPaWRJc1ZhbGlkKG9yaWdpbmlkKSkKIAkJCW9yaWdpbmlkID0gcmVw bG9yaWdpbl9jcmVhdGUob3JpZ2lubmFtZSk7Ci0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChv cmlnaW5pZCk7CisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwgMCk7CiAJCXJl cGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW5pZDsKIAkJb3JpZ2luX3N0YXJ0cG9zID0g cmVwbG9yaWdpbl9zZXNzaW9uX2dldF9wcm9ncmVzcyhmYWxzZSk7CiAJCUNvbW1pdFRyYW5zYWN0 aW9uQ29tbWFuZCgpOwpAQCAtMzc3MCwxMiArNDU1Myw3IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1 bSBtYWluX2FyZykKIAkJICovCiAJCSh2b2lkKSB3YWxyY3ZfaWRlbnRpZnlfc3lzdGVtKExvZ1Jl cFdvcmtlcldhbFJjdkNvbm4sICZzdGFydHBvaW50VExJKTsKIAotCQkvKgotCQkgKiBBbGxvY2F0 ZSB0aGUgb3JpZ2luIG5hbWUgaW4gbG9uZy1saXZlZCBjb250ZXh0IGZvciBlcnJvciBjb250ZXh0 Ci0JCSAqIG1lc3NhZ2UuCi0JCSAqLwotCQlhcHBseV9lcnJvcl9jYWxsYmFja19hcmcub3JpZ2lu X25hbWUgPSBNZW1vcnlDb250ZXh0U3RyZHVwKEFwcGx5Q29udGV4dCwKLQkJCQkJCQkJCQkJCQkJ CQkgICBvcmlnaW5uYW1lKTsKKwkJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfb3JpZ2luKG9yaWdp bm5hbWUpOwogCX0KIAogCS8qCkBAIC0zNzkzLDEzICs0NTcxLDM2IEBAIEFwcGx5V29ya2VyTWFp bihEYXR1bSBtYWluX2FyZykKIAogCXNlcnZlcl92ZXJzaW9uID0gd2FscmN2X3NlcnZlcl92ZXJz aW9uKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4pOwogCW9wdGlvbnMucHJvdG8ubG9naWNhbC5wcm90 b192ZXJzaW9uID0KKwkJc2VydmVyX3ZlcnNpb24gPj0gMTYwMDAwID8gTE9HSUNBTFJFUF9QUk9U T19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0gOgogCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNTAw MDAgPyBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNIDoKIAkJc2VydmVyX3Zl cnNpb24gPj0gMTQwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lPTl9OVU0gOgog CQlMT0dJQ0FMUkVQX1BST1RPX1ZFUlNJT05fTlVNOwogCiAJb3B0aW9ucy5wcm90by5sb2dpY2Fs LnB1YmxpY2F0aW9uX25hbWVzID0gTXlTdWJzY3JpcHRpb24tPnB1YmxpY2F0aW9uczsKIAlvcHRp b25zLnByb3RvLmxvZ2ljYWwuYmluYXJ5ID0gTXlTdWJzY3JpcHRpb24tPmJpbmFyeTsKLQlvcHRp b25zLnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nID0gTXlTdWJzY3JpcHRpb24tPnN0cmVhbTsKKwor CS8qCisJICogQXNzaWduIHRoZSBhcHByb3ByaWF0ZSBvcHRpb24gdmFsdWUgZm9yIHN0cmVhbWlu ZyBvcHRpb24gYWNjb3JkaW5nIHRvCisJICogdGhlICdzdHJlYW1pbmcnIG1vZGUgYW5kIHRoZSBw dWJsaXNoZXIncyBhYmlsaXR5IHRvIHN1cHBvcnQgdGhhdCBtb2RlLgorCSAqLworCWlmIChzZXJ2 ZXJfdmVyc2lvbiA+PSAxNjAwMDAgJiYKKwkJTXlTdWJzY3JpcHRpb24tPnN0cmVhbSA9PSBMT0dJ Q0FMUkVQX1NUUkVBTV9QQVJBTExFTCkKKwl7CisJCW9wdGlvbnMucHJvdG8ubG9naWNhbC5zdHJl YW1pbmdfc3RyID0gInBhcmFsbGVsIjsKKwkJTXlMb2dpY2FsUmVwV29ya2VyLT5wYXJhbGxlbF9h cHBseSA9IHRydWU7CisJfQorCWVsc2UgaWYgKHNlcnZlcl92ZXJzaW9uID49IDE0MDAwMCAmJgor CQkJIE15U3Vic2NyaXB0aW9uLT5zdHJlYW0gIT0gTE9HSUNBTFJFUF9TVFJFQU1fT0ZGKQorCXsK KwkJb3B0aW9ucy5wcm90by5sb2dpY2FsLnN0cmVhbWluZ19zdHIgPSAib24iOworCQlNeUxvZ2lj YWxSZXBXb3JrZXItPnBhcmFsbGVsX2FwcGx5ID0gZmFsc2U7CisJfQorCWVsc2UKKwl7CisJCW9w dGlvbnMucHJvdG8ubG9naWNhbC5zdHJlYW1pbmdfc3RyID0gTlVMTDsKKwkJTXlMb2dpY2FsUmVw V29ya2VyLT5wYXJhbGxlbF9hcHBseSA9IGZhbHNlOworCX0KKwogCW9wdGlvbnMucHJvdG8ubG9n aWNhbC50d29waGFzZSA9IGZhbHNlOwogCW9wdGlvbnMucHJvdG8ubG9naWNhbC5vcmlnaW4gPSBw c3RyZHVwKE15U3Vic2NyaXB0aW9uLT5vcmlnaW4pOwogCkBAIC0zODk3LDYgKzQ2OTgsMTUgQEAg SXNMb2dpY2FsV29ya2VyKHZvaWQpCiB9CiAKIC8qCisgKiBJcyBjdXJyZW50IHByb2Nlc3MgYSBs b2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlcj8KKyAqLworYm9vbAorSXNM b2dpY2FsUGFyYWxsZWxBcHBseVdvcmtlcih2b2lkKQoreworCXJldHVybiBJc0xvZ2ljYWxXb3Jr ZXIoKSAmJiBhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKTsKK30KKworLyoKICAqIFN0YXJ0IHNr aXBwaW5nIGNoYW5nZXMgb2YgdGhlIHRyYW5zYWN0aW9uIGlmIHRoZSBnaXZlbiBMU04gbWF0Y2hl cyB0aGUKICAqIExTTiBzcGVjaWZpZWQgYnkgc3Vic2NyaXB0aW9uJ3Mgc2tpcGxzbi4KICAqLwpA QCAtMzk1OCw3ICs0NzY4LDcgQEAgY2xlYXJfc3Vic2NyaXB0aW9uX3NraXBfbHNuKFhMb2dSZWNQ dHIgZmluaXNoX2xzbikKIAlYTG9nUmVjUHRyCW15c2tpcGxzbiA9IE15U3Vic2NyaXB0aW9uLT5z a2lwbHNuOwogCWJvb2wJCXN0YXJ0ZWRfdHggPSBmYWxzZTsKIAotCWlmIChsaWtlbHkoWExvZ1Jl Y1B0cklzSW52YWxpZChteXNraXBsc24pKSkKKwlpZiAobGlrZWx5KFhMb2dSZWNQdHJJc0ludmFs aWQobXlza2lwbHNuKSkgfHwgYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCiAJCXJldHVybjsK IAogCWlmICghSXNUcmFuc2FjdGlvblN0YXRlKCkpCkBAIC00MDMwLDcgKzQ4NDAsNyBAQCBjbGVh cl9zdWJzY3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0ciBmaW5pc2hfbHNuKQogfQogCiAvKiBF cnJvciBjYWxsYmFjayB0byBnaXZlIG1vcmUgY29udGV4dCBpbmZvIGFib3V0IHRoZSBjaGFuZ2Ug YmVpbmcgYXBwbGllZCAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIGFwcGx5X2Vycm9yX2NhbGxiYWNr KHZvaWQgKmFyZykKIHsKIAlBcHBseUVycm9yQ2FsbGJhY2tBcmcgKmVycmFyZyA9ICZhcHBseV9l cnJvcl9jYWxsYmFja19hcmc7CkBAIC00MDU4LDIzICs0ODY4LDQ3IEBAIGFwcGx5X2Vycm9yX2Nh bGxiYWNrKHZvaWQgKmFyZykKIAkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAogCQkJCQkgICBM U05fRk9STUFUX0FSR1MoZXJyYXJnLT5maW5pc2hfbHNuKSk7CiAJfQotCWVsc2UgaWYgKGVycmFy Zy0+cmVtb3RlX2F0dG51bSA8IDApCi0JCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRh dGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIG1lc3NhZ2UgdHlwZSBcIiVz XCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgaW4gdHJhbnNhY3Rp b24gJXUsIGZpbmlzaGVkIGF0ICVYLyVYIiwKLQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAot CQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCi0JCQkJICAg ZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1v dGVyZWwucmVsbmFtZSwKLQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQsCi0JCQkJICAgTFNOX0ZP Uk1BVF9BUkdTKGVycmFyZy0+ZmluaXNoX2xzbikpOwogCWVsc2UKLQkJZXJyY29udGV4dCgicHJv Y2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcg bWVzc2FnZSB0eXBlIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMu JXNcIiBjb2x1bW4gXCIlc1wiIGluIHRyYW5zYWN0aW9uICV1LCBmaW5pc2hlZCBhdCAlWC8lWCIs Ci0JCQkJICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKLQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2Vf dHlwZShlcnJhcmctPmNvbW1hbmQpLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNw bmFtZSwKLQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCi0JCQkJICAgZXJy YXJnLT5yZWwtPnJlbW90ZXJlbC5hdHRuYW1lc1tlcnJhcmctPnJlbW90ZV9hdHRudW1dLAotCQkJ CSAgIGVycmFyZy0+cmVtb3RlX3hpZCwKLQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJyYXJnLT5m aW5pc2hfbHNuKSk7CisJeworCQlpZiAoZXJyYXJnLT5yZW1vdGVfYXR0bnVtIDwgMCkKKwkJewor CQkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQoZXJyYXJnLT5maW5pc2hfbHNuKSkKKwkJCQllcnJj b250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIl c1wiIGR1cmluZyBtZXNzYWdlIHR5cGUgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVs YXRpb24gXCIlcy4lc1wiIGluIHRyYW5zYWN0aW9uICV1IiwKKwkJCQkJCSAgIGVycmFyZy0+b3Jp Z2luX25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1h bmQpLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAg ZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZW1vdGVf eGlkKTsKKwkJCWVsc2UKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZv ciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBtZXNzYWdlIHR5cGUgXCIlc1wiIGZv ciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGluIHRyYW5zYWN0aW9uICV1 LCBmaW5pc2hlZCBhdCAlWC8lWCIsCisJCQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAorCQkJ CQkJICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKKwkJCQkJCSAg IGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5y ZW1vdGVyZWwucmVsbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCwKKwkJCQkJCSAg IExTTl9GT1JNQVRfQVJHUyhlcnJhcmctPmZpbmlzaF9sc24pKTsKKwkJfQorCQllbHNlCisJCXsK KwkJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKGVycmFyZy0+ZmluaXNoX2xzbikpCisJCQkJZXJy Y29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwi JXNcIiBkdXJpbmcgbWVzc2FnZSB0eXBlIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJl bGF0aW9uIFwiJXMuJXNcIiBjb2x1bW4gXCIlc1wiIGluIHRyYW5zYWN0aW9uICV1IiwKKwkJCQkJ CSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlw ZShlcnJhcmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3Bu YW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAg ZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5hdHRuYW1lc1tlcnJhcmctPnJlbW90ZV9hdHRudW1dLAor CQkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkKTsKKwkJCWVsc2UKKwkJCQllcnJjb250ZXh0KCJw cm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmlu ZyBtZXNzYWdlIHR5cGUgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIl cy4lc1wiIGNvbHVtbiBcIiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUsIGZpbmlzaGVkIGF0ICVYLyVY IiwKKwkJCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVwX21l c3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90 ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAor CQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5hdHRuYW1lc1tlcnJhcmctPnJlbW90ZV9h dHRudW1dLAorCQkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAorCQkJCQkJICAgTFNOX0ZPUk1B VF9BUkdTKGVycmFyZy0+ZmluaXNoX2xzbikpOworCQl9CisJfQogfQogCiAvKiBTZXQgdHJhbnNh Y3Rpb24gaW5mb3JtYXRpb24gb2YgYXBwbHkgZXJyb3IgY2FsbGJhY2sgKi8KQEAgLTQxNDQsMyAr NDk3OCw1MyBAQCBBdEVPWGFjdF9Mb2dpY2FsUmVwV29ya2Vycyhib29sIGlzQ29tbWl0KQogCS8q IFRoZSBMaXN0IHN0b3JhZ2Ugd2lsbCBiZSByZWNsYWltZWQgYXV0b21hdGljYWxseSBpbiB4YWN0 IGNsZWFudXAuICovCiAJb25fY29tbWl0X3dha2V1cF93b3JrZXJzX3N1YmlkcyA9IE5JTDsKIH0K KworLyoKKyAqIEFsbG9jYXRlIHRoZSBvcmlnaW4gbmFtZSBpbiBsb25nLWxpdmVkIGNvbnRleHQg Zm9yIGVycm9yIGNvbnRleHQgbWVzc2FnZS4KKyAqLwordm9pZAorc2V0X2FwcGx5X2Vycm9yX2Nv bnRleHRfb3JpZ2luKGNoYXIgKm9yaWdpbm5hbWUpCit7CisJYXBwbHlfZXJyb3JfY2FsbGJhY2tf YXJnLm9yaWdpbl9uYW1lID0gTWVtb3J5Q29udGV4dFN0cmR1cChBcHBseUNvbnRleHQsCisJCQkJ CQkJCQkJCQkJCQkgICBvcmlnaW5uYW1lKTsKK30KKworLyoKKyAqIFJldHVybiB0aGUgYWN0aW9u IHRvIGJlIHRha2VuIGZvciB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb24uICp3aW5mbyBpcworICogYXNz aWduZWQgdG8gdGhlIGRlc3RpbmF0aW9uIHBhcmFsbGVsIHdvcmtlciBpbmZvIHdoZW4gdGhlIGxl YWRlciBhcHBseQorICogd29ya2VyIGhhcyB0byBwYXNzIGFsbCB0aGUgdHJhbnNhY3Rpb24ncyBj aGFuZ2VzIHRvIHRoZSBwYXJhbGxlbCBhcHBseQorICogd29ya2VyLgorICovCitzdGF0aWMgVHJh bnNBcHBseUFjdGlvbgorZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihUcmFuc2FjdGlvbklk IHhpZCwgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKip3aW5mbykKK3sKKwkqd2luZm8gPSBOVUxM OworCisJaWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCXsKKwkJcmV0dXJuIFRSQU5T X1BBUkFMTEVMX0FQUExZOworCX0KKwllbHNlIGlmIChpbl9yZW1vdGVfdHJhbnNhY3Rpb24pCisJ eworCQlyZXR1cm4gVFJBTlNfTEVBREVSX0FQUExZOworCX0KKworCS8qCisJICogQ2hlY2sgaWYg d2UgYXJlIHByb2Nlc3NpbmcgdGhpcyB0cmFuc2FjdGlvbiB1c2luZyBhIHBhcmFsbGVsIGFwcGx5 CisJICogd29ya2VyLgorCSAqLworCSp3aW5mbyA9IHBhX2ZpbmRfd29ya2VyKHhpZCk7CisKKwlp ZiAoISp3aW5mbykKKwl7CisJCXJldHVybiBUUkFOU19MRUFERVJfU0VSSUFMSVpFOworCX0KKwll bHNlIGlmICgoKndpbmZvKS0+c2VyaWFsaXplX2NoYW5nZXMpCisJeworCQlyZXR1cm4gVFJBTlNf TEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFOworCX0KKwllbHNlCisJeworCQlyZXR1cm4gVFJBTlNf TEVBREVSX1NFTkRfVE9fUEFSQUxMRUw7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggODc2YWRhYi4uMTljMTBjMCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYworKysgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCkBAIC0xOCw2ICsxOCw3IEBACiAj aW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX3N1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgorI2luY2x1 ZGUgImNvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVj dXRvci5oIgogI2luY2x1ZGUgImZtZ3IuaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIK QEAgLTI5MCw3ICsyOTEsNyBAQCBwYXJzZV9vdXRwdXRfcGFyYW1ldGVycyhMaXN0ICpvcHRpb25z LCBQR091dHB1dERhdGEgKmRhdGEpCiAJYm9vbAkJb3JpZ2luX29wdGlvbl9naXZlbiA9IGZhbHNl OwogCiAJZGF0YS0+YmluYXJ5ID0gZmFsc2U7Ci0JZGF0YS0+c3RyZWFtaW5nID0gZmFsc2U7CisJ ZGF0YS0+c3RyZWFtaW5nID0gTE9HSUNBTFJFUF9TVFJFQU1fT0ZGOwogCWRhdGEtPm1lc3NhZ2Vz ID0gZmFsc2U7CiAJZGF0YS0+dHdvX3BoYXNlID0gZmFsc2U7CiAKQEAgLTM2OSw3ICszNzAsNyBA QCBwYXJzZV9vdXRwdXRfcGFyYW1ldGVycyhMaXN0ICpvcHRpb25zLCBQR091dHB1dERhdGEgKmRh dGEpCiAJCQkJCQkgZXJybXNnKCJjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0aW9ucyIpKSk7 CiAJCQlzdHJlYW1pbmdfZ2l2ZW4gPSB0cnVlOwogCi0JCQlkYXRhLT5zdHJlYW1pbmcgPSBkZWZH ZXRCb29sZWFuKGRlZmVsKTsKKwkJCWRhdGEtPnN0cmVhbWluZyA9IGRlZkdldFN0cmVhbWluZ01v ZGUoZGVmZWwpOwogCQl9CiAJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgInR3b19w aGFzZSIpID09IDApCiAJCXsKQEAgLTQ2MSwxMyArNDYyLDIwIEBAIHBnb3V0cHV0X3N0YXJ0dXAo TG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBPdXRwdXRQbHVnaW5PcHRpb25zICpvcHQsCiAJ CSAqIHdlIG9ubHkgYWxsb3cgaXQgd2l0aCBzdWZmaWNpZW50IHZlcnNpb24gb2YgdGhlIHByb3Rv Y29sLCBhbmQgd2hlbgogCQkgKiB0aGUgb3V0cHV0IHBsdWdpbiBzdXBwb3J0cyBpdC4KIAkJICov Ci0JCWlmICghZGF0YS0+c3RyZWFtaW5nKQorCQlpZiAoZGF0YS0+c3RyZWFtaW5nID09IExPR0lD QUxSRVBfU1RSRUFNX09GRikKIAkJCWN0eC0+c3RyZWFtaW5nID0gZmFsc2U7Ci0JCWVsc2UgaWYg KGRhdGEtPnByb3RvY29sX3ZlcnNpb24gPCBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9WRVJTSU9O X05VTSkKKwkJZWxzZSBpZiAoZGF0YS0+c3RyZWFtaW5nID09IExPR0lDQUxSRVBfU1RSRUFNX09O ICYmCisJCQkJIGRhdGEtPnByb3RvY29sX3ZlcnNpb24gPCBMT0dJQ0FMUkVQX1BST1RPX1NUUkVB TV9WRVJTSU9OX05VTSkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCQkgZXJybXNnKCJyZXF1ZXN0ZWQgcHJvdG9f dmVyc2lvbj0lZCBkb2VzIG5vdCBzdXBwb3J0IHN0cmVhbWluZywgbmVlZCAlZCBvciBoaWdoZXIi LAogCQkJCQkJCWRhdGEtPnByb3RvY29sX3ZlcnNpb24sIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFN X1ZFUlNJT05fTlVNKSkpOworCQllbHNlIGlmIChkYXRhLT5zdHJlYW1pbmcgPT0gTE9HSUNBTFJF UF9TVFJFQU1fUEFSQUxMRUwgJiYKKwkJCQkgZGF0YS0+cHJvdG9jb2xfdmVyc2lvbiA8IExPR0lD QUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNKQorCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJ CSBlcnJtc2coInJlcXVlc3RlZCBwcm90b192ZXJzaW9uPSVkIGRvZXMgbm90IHN1cHBvcnQgcGFy YWxsZWwgc3RyZWFtaW5nLCBuZWVkICVkIG9yIGhpZ2hlciIsCisJCQkJCQkJZGF0YS0+cHJvdG9j b2xfdmVyc2lvbiwgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0p KSk7CiAJCWVsc2UgaWYgKCFjdHgtPnN0cmVhbWluZykKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJ CShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLApAQCAtMTg0MSw2ICsx ODQ5LDggQEAgcGdvdXRwdXRfc3RyZWFtX2Fib3J0KHN0cnVjdCBMb2dpY2FsRGVjb2RpbmdDb250 ZXh0ICpjdHgsCiAJCQkJCSAgWExvZ1JlY1B0ciBhYm9ydF9sc24pCiB7CiAJUmVvcmRlckJ1ZmZl clRYTiAqdG9wdHhuOworCVBHT3V0cHV0RGF0YSAqZGF0YSA9IChQR091dHB1dERhdGEgKikgY3R4 LT5vdXRwdXRfcGx1Z2luX3ByaXZhdGU7CisJYm9vbAkJd3JpdGVfYWJvcnRfaW5mbyA9IChkYXRh LT5zdHJlYW1pbmcgPT0gTE9HSUNBTFJFUF9TVFJFQU1fUEFSQUxMRUwpOwogCiAJLyoKIAkgKiBU aGUgYWJvcnQgc2hvdWxkIGhhcHBlbiBvdXRzaWRlIHN0cmVhbWluZyBibG9jaywgZXZlbiBmb3Ig c3RyZWFtZWQKQEAgLTE4NTQsNyArMTg2NCw5IEBAIHBnb3V0cHV0X3N0cmVhbV9hYm9ydChzdHJ1 Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCUFzc2VydChyYnR4bl9pc19zdHJlYW1l ZCh0b3B0eG4pKTsKIAogCU91dHB1dFBsdWdpblByZXBhcmVXcml0ZShjdHgsIHRydWUpOwotCWxv Z2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KGN0eC0+b3V0LCB0b3B0eG4tPnhpZCwgdHhuLT54 aWQpOworCWxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KGN0eC0+b3V0LCB0b3B0eG4tPnhp ZCwgdHhuLT54aWQsIGFib3J0X2xzbiwKKwkJCQkJCQkJICB0eG4tPnhhY3RfdGltZS5hYm9ydF90 aW1lLCB3cml0ZV9hYm9ydF9pbmZvKTsKKwogCU91dHB1dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7 CiAKIAljbGVhbnVwX3JlbF9zeW5jX2NhY2hlKHRvcHR4bi0+eGlkLCBmYWxzZSk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKaW5kZXggNDNmYmJkYi4uMzk1YjJjZiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgImNv bW1hbmRzL2FzeW5jLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0 LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgogI2luY2x1ZGUgInJl cGxpY2F0aW9uL3dhbHNlbmRlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3Zhcmlh YmxlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKQEAgLTY1Nyw2ICs2NTgsOSBAQCBwcm9j c2lnbmFsX3NpZ3VzcjFfaGFuZGxlcihTSUdOQUxfQVJHUykKIAlpZiAoQ2hlY2tQcm9jU2lnbmFs KFBST0NTSUdfTE9HX01FTU9SWV9DT05URVhUKSkKIAkJSGFuZGxlTG9nTWVtb3J5Q29udGV4dElu dGVycnVwdCgpOwogCisJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1BBUkFMTEVMX0FQUExZ X01FU1NBR0UpKQorCQlIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZUludGVycnVwdCgpOworCiAJ aWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0RBVEFCQVNFKSkK IAkJUmVjb3ZlcnlDb25mbGljdEludGVycnVwdChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0RB VEFCQVNFKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMKaW5kZXggMjBkY2NhMy4uZWU5Yjg5YSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYworKysgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jCkBAIC0xMTE3LDYgKzExMTcsNDUgQEAgVW5sb2NrU2hh cmVkT2JqZWN0Rm9yU2Vzc2lvbihPaWQgY2xhc3NpZCwgT2lkIG9iamlkLCB1aW50MTYgb2Jqc3Vi aWQsCiAJTG9ja1JlbGVhc2UoJnRhZywgbG9ja21vZGUsIHRydWUpOwogfQogCisvKgorICoJCUxv Y2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lvbgorICoKKyAqIE9idGFpbiBhIHNlc3Npb24tbGV2 ZWwgbG9jayBvbiBhIHRyYW5zYWN0aW9uIGJlaW5nIGFwcGxpZWQgb24gYSBsb2dpY2FsCisgKiBy ZXBsaWNhdGlvbiBzdWJzY3JpYmVyLiBTZWUgTG9ja1JlbGF0aW9uSWRGb3JTZXNzaW9uIGZvciBu b3RlcyBhYm91dAorICogc2Vzc2lvbi1sZXZlbCBsb2Nrcy4KKyAqLwordm9pZAorTG9ja0FwcGx5 VHJhbnNhY3Rpb25Gb3JTZXNzaW9uKE9pZCBzdWJvaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCB1aW50 MTYgb2JqaWQsCisJCQkJCQkJICAgTE9DS01PREUgbG9ja21vZGUpCit7CisJTE9DS1RBRwkJdGFn OworCisJU0VUX0xPQ0tUQUdfQVBQTFlfVFJBTlNBQ1RJT04odGFnLAorCQkJCQkJCQkgIE15RGF0 YWJhc2VJZCwKKwkJCQkJCQkJICBzdWJvaWQsCisJCQkJCQkJCSAgeGlkLAorCQkJCQkJCQkgIG9i amlkKTsKKworCSh2b2lkKSBMb2NrQWNxdWlyZSgmdGFnLCBsb2NrbW9kZSwgdHJ1ZSwgZmFsc2Up OworfQorCisvKgorICoJCVVubG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uCisgKi8KK3Zv aWQKK1VubG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uKE9pZCBzdWJvaWQsIFRyYW5zYWN0 aW9uSWQgeGlkLCB1aW50MTYgb2JqaWQsCisJCQkJCQkJCSBMT0NLTU9ERSBsb2NrbW9kZSkKK3sK KwlMT0NLVEFHCQl0YWc7CisKKwlTRVRfTE9DS1RBR19BUFBMWV9UUkFOU0FDVElPTih0YWcsCisJ CQkJCQkJCSAgTXlEYXRhYmFzZUlkLAorCQkJCQkJCQkgIHN1Ym9pZCwKKwkJCQkJCQkJICB4aWQs CisJCQkJCQkJCSAgb2JqaWQpOworCisJTG9ja1JlbGVhc2UoJnRhZywgbG9ja21vZGUsIHRydWUp OworfQogCiAvKgogICogQXBwZW5kIGEgZGVzY3JpcHRpb24gb2YgYSBsb2NrYWJsZSBvYmplY3Qg dG8gYnVmLgpAQCAtMTIwMiw2ICsxMjQxLDEzIEBAIERlc2NyaWJlTG9ja1RhZyhTdHJpbmdJbmZv IGJ1ZiwgY29uc3QgTE9DS1RBRyAqdGFnKQogCQkJCQkJCSB0YWctPmxvY2t0YWdfZmllbGQzLAog CQkJCQkJCSB0YWctPmxvY2t0YWdfZmllbGQ0KTsKIAkJCWJyZWFrOworCQljYXNlIExPQ0tUQUdf QVBQTFlfVFJBTlNBQ1RJT046CisJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwKKwkJCQkJCQkgXygi cmVtb3RlIHRyYW5zYWN0aW9uICV1IG9mIHN1YnNjcmlwdGlvbiAldSBvZiBkYXRhYmFzZSAldSIp LAorCQkJCQkJCSB0YWctPmxvY2t0YWdfZmllbGQzLAorCQkJCQkJCSB0YWctPmxvY2t0YWdfZmll bGQyLAorCQkJCQkJCSB0YWctPmxvY2t0YWdfZmllbGQxKTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0 OgogCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsCiAJCQkJCQkJIF8oInVucmVjb2duaXplZCBsb2Nr dGFnIHR5cGUgJWQiKSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBi L3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRleCAzMTQ3OWU4Li4yMjRhYjI5IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNv cC9wb3N0Z3Jlcy5jCkBAIC0zMzkxLDYgKzMzOTEsOSBAQCBQcm9jZXNzSW50ZXJydXB0cyh2b2lk KQogCiAJaWYgKExvZ01lbW9yeUNvbnRleHRQZW5kaW5nKQogCQlQcm9jZXNzTG9nTWVtb3J5Q29u dGV4dEludGVycnVwdCgpOworCisJaWYgKFBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZykKKwkJ SGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VzKCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMgYi9zcmMvYmFja2VuZC91dGlscy9h Y3Rpdml0eS93YWl0X2V2ZW50LmMKaW5kZXggZjk1NzRlOC4uNmU0NTk5MiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwpAQCAtMjMwLDYgKzIzMCw5IEBAIHBnc3RhdF9n ZXRfd2FpdF9hY3Rpdml0eShXYWl0RXZlbnRBY3Rpdml0eSB3KQogCQljYXNlIFdBSVRfRVZFTlRf TE9HSUNBTF9MQVVOQ0hFUl9NQUlOOgogCQkJZXZlbnRfbmFtZSA9ICJMb2dpY2FsTGF1bmNoZXJN YWluIjsKIAkJCWJyZWFrOworCQljYXNlIFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBM WV9NQUlOOgorCQkJZXZlbnRfbmFtZSA9ICJMb2dpY2FsUGFyYWxsZWxBcHBseU1haW4iOworCQkJ YnJlYWs7CiAJCWNhc2UgV0FJVF9FVkVOVF9SRUNPVkVSWV9XQUxfU1RSRUFNOgogCQkJZXZlbnRf bmFtZSA9ICJSZWNvdmVyeVdhbFN0cmVhbSI7CiAJCQlicmVhazsKQEAgLTM4OCw2ICszOTEsOSBA QCBwZ3N0YXRfZ2V0X3dhaXRfaXBjKFdhaXRFdmVudElQQyB3KQogCQljYXNlIFdBSVRfRVZFTlRf SEFTSF9HUk9XX0JVQ0tFVFNfUkVJTlNFUlQ6CiAJCQlldmVudF9uYW1lID0gIkhhc2hHcm93QnVj a2V0c1JlaW5zZXJ0IjsKIAkJCWJyZWFrOworCQljYXNlIFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJB TExFTF9BUFBMWV9TVEFURV9DSEFOR0U6CisJCQlldmVudF9uYW1lID0gIkxvZ2ljYWxQYXJhbGxl bEFwcGx5U3RhdGVDaGFuZ2UiOworCQkJYnJlYWs7CiAJCWNhc2UgV0FJVF9FVkVOVF9MT0dJQ0FM X1NZTkNfREFUQToKIAkJCWV2ZW50X25hbWUgPSAiTG9naWNhbFN5bmNEYXRhIjsKIAkJCWJyZWFr OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xvY2tmdW5jcy5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2xvY2tmdW5jcy5jCmluZGV4IDNjY2U0YmQuLmM4YWFjMDYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9sb2NrZnVuY3MuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMKQEAgLTM3LDEwICszNywxMSBAQCBjb25zdCBjaGFyICpj b25zdCBMb2NrVGFnVHlwZU5hbWVzW10gPSB7CiAJInNwZWN0b2tlbiIsCiAJIm9iamVjdCIsCiAJ InVzZXJsb2NrIiwKLQkiYWR2aXNvcnkiCisJImFkdmlzb3J5IiwKKwkiYXBwbHl0cmFuc2FjdGlv biIKIH07CiAKLVN0YXRpY0Fzc2VydERlY2wobGVuZ3Rob2YoTG9ja1RhZ1R5cGVOYW1lcykgPT0g KExPQ0tUQUdfQURWSVNPUlkgKyAxKSwKK1N0YXRpY0Fzc2VydERlY2wobGVuZ3Rob2YoTG9ja1Rh Z1R5cGVOYW1lcykgPT0gKExPQ0tUQUdfTEFTVF9UWVBFICsgMSksCiAJCQkJICJhcnJheSBsZW5n dGggbWlzbWF0Y2giKTsKIAogLyogVGhpcyBtdXN0IG1hdGNoIGVudW0gUHJlZGljYXRlTG9ja1Rh cmdldFR5cGUgKHByZWRpY2F0ZV9pbnRlcm5hbHMuaCkgKi8KQEAgLTMxMiw2ICszMTMsMTcgQEAg cGdfbG9ja19zdGF0dXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQludWxsc1s4XSA9IHRydWU7CiAJ CQkJbnVsbHNbOV0gPSB0cnVlOwogCQkJCWJyZWFrOworCQkJY2FzZSBMT0NLVEFHX0FQUExZX1RS QU5TQUNUSU9OOgorCQkJCXZhbHVlc1sxXSA9IE9iamVjdElkR2V0RGF0dW0oaW5zdGFuY2UtPmxv Y2t0YWcubG9ja3RhZ19maWVsZDEpOworCQkJCXZhbHVlc1s4XSA9IE9iamVjdElkR2V0RGF0dW0o aW5zdGFuY2UtPmxvY2t0YWcubG9ja3RhZ19maWVsZDIpOworCQkJCXZhbHVlc1s2XSA9IE9iamVj dElkR2V0RGF0dW0oaW5zdGFuY2UtPmxvY2t0YWcubG9ja3RhZ19maWVsZDMpOworCQkJCXZhbHVl c1s5XSA9IEludDE2R2V0RGF0dW0oaW5zdGFuY2UtPmxvY2t0YWcubG9ja3RhZ19maWVsZDQpOwor CQkJCW51bGxzWzJdID0gdHJ1ZTsKKwkJCQludWxsc1szXSA9IHRydWU7CisJCQkJbnVsbHNbNF0g PSB0cnVlOworCQkJCW51bGxzWzVdID0gdHJ1ZTsKKwkJCQludWxsc1s3XSA9IHRydWU7CisJCQkJ YnJlYWs7CiAJCQljYXNlIExPQ0tUQUdfT0JKRUNUOgogCQkJY2FzZSBMT0NLVEFHX1VTRVJMT0NL OgogCQkJY2FzZSBMT0NLVEFHX0FEVklTT1JZOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMu YwppbmRleCA2ODMyOGIxLi45MjU0NWI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9t aXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMu YwpAQCAtMzAwMyw2ICszMDAzLDE4IEBAIHN0cnVjdCBjb25maWdfaW50IENvbmZpZ3VyZU5hbWVz SW50W10gPQogCX0sCiAKIAl7CisJCXsibWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1 YnNjcmlwdGlvbiIsCisJCQlQR0NfU0lHSFVQLAorCQkJUkVQTElDQVRJT05fU1VCU0NSSUJFUlMs CisJCQlnZXR0ZXh0X25vb3AoIk1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIGFwcGx5IHdvcmtl cnMgcGVyIHN1YnNjcmlwdGlvbi4iKSwKKwkJCU5VTEwsCisJCX0sCisJCSZtYXhfcGFyYWxsZWxf YXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uLAorCQkyLCAwLCBNQVhfUEFSQUxMRUxfV09S S0VSX0xJTUlULAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKKworCXsKIAkJeyJsb2dfcm90YXRp b25fYWdlIiwgUEdDX1NJR0hVUCwgTE9HR0lOR19XSEVSRSwKIAkJCWdldHRleHRfbm9vcCgiU2V0 cyB0aGUgYW1vdW50IG9mIHRpbWUgdG8gd2FpdCBiZWZvcmUgZm9yY2luZyAiCiAJCQkJCQkgImxv ZyBmaWxlIHJvdGF0aW9uLiIpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9w b3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3Fs LmNvbmYuc2FtcGxlCmluZGV4IDVhZmRlYjAuLmMyYWRhOTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91 dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTM1OSw2ICszNTksNyBAQAogI21h eF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgPSA0CSMgdGFrZW4gZnJvbSBtYXhfd29ya2Vy X3Byb2Nlc3NlcwogCQkJCQkjIChjaGFuZ2UgcmVxdWlyZXMgcmVzdGFydCkKICNtYXhfc3luY193 b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAyCSMgdGFrZW4gZnJvbSBtYXhfbG9naWNhbF9yZXBs aWNhdGlvbl93b3JrZXJzCisjbWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlw dGlvbiA9IDIJIyB0YWtlbiBmcm9tIG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMKIAog CiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCAzMDcxOGRkLi41ZTgwMGRj IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMKQEAgLTQ1MzMsNyArNDUzMyw3IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJj aGl2ZSAqZm91dCkKIAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNDAwMDApCiAJCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIHMuc3Vic3RyZWFtLFxuIik7CiAJZWxzZQotCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBmYWxzZSBBUyBzdWJzdHJlYW0sXG4iKTsKKwkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgJ2YnIEFTIHN1YnN0cmVhbSxcbiIpOwogCiAJaWYg KGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTUwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihx dWVyeSwKQEAgLTQ2NzAsOCArNDY3MCwxMCBAQCBkdW1wU3Vic2NyaXB0aW9uKEFyY2hpdmUgKmZv dXQsIGNvbnN0IFN1YnNjcmlwdGlvbkluZm8gKnN1YmluZm8pCiAJaWYgKHN0cmNtcChzdWJpbmZv LT5zdWJiaW5hcnksICJ0IikgPT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIs IGJpbmFyeSA9IHRydWUiKTsKIAotCWlmIChzdHJjbXAoc3ViaW5mby0+c3Vic3RyZWFtLCAiZiIp ICE9IDApCisJaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJzdHJlYW0sICJ0IikgPT0gMCkKIAkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIHN0cmVhbWluZyA9IG9uIik7CisJZWxzZSBpZiAo c3RyY21wKHN1YmluZm8tPnN1YnN0cmVhbSwgInAiKSA9PSAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZl clN0cihxdWVyeSwgIiwgc3RyZWFtaW5nID0gcGFyYWxsZWwiKTsKIAogCWlmIChzdHJjbXAoc3Vi aW5mby0+c3VidHdvcGhhc2VzdGF0ZSwgdHdvX3BoYXNlX2Rpc2FibGVkKSAhPSAwKQogCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgdHdvX3BoYXNlID0gb24iKTsKZGlmZiAtLWdpdCBh L3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKaW5kZXgg NTIzZmFiNi4uNjY1NWYwNyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysr IGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTY1MDIsMTEgKzY1MDIsMjQgQEAgZGVzY3Jp YmVTdWJzY3JpcHRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSkKIAl7CiAJ CS8qIEJpbmFyeSBtb2RlIGFuZCBzdHJlYW1pbmcgYXJlIG9ubHkgc3VwcG9ydGVkIGluIHYxNCBh bmQgaGlnaGVyICovCiAJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE0MDAwMCkKKwkJewogCQkJYXBw ZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKLQkJCQkJCQkgICIsIHN1YmJpbmFyeSBBUyBcIiVzXCJcbiIK LQkJCQkJCQkgICIsIHN1YnN0cmVhbSBBUyBcIiVzXCJcbiIsCi0JCQkJCQkJICBnZXR0ZXh0X25v b3AoIkJpbmFyeSIpLAotCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJTdHJlYW1pbmciKSk7CisJCQkJ CQkJICAiLCBzdWJiaW5hcnkgQVMgXCIlc1wiXG4iLAorCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJC aW5hcnkiKSk7CisKKwkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE2MDAwMCkKKwkJCQlhcHBlbmRQ UUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJCQkgICIsIChDQVNFIHN1YnN0cmVhbVxuIgorCQkJCQkJ CQkgICIgICAgV0hFTiAnZicgVEhFTiAnb2ZmJ1xuIgorCQkJCQkJCQkgICIgICAgV0hFTiAndCcg VEhFTiAnb24nXG4iCisJCQkJCQkJCSAgIiAgICBXSEVOICdwJyBUSEVOICdwYXJhbGxlbCdcbiIK KwkJCQkJCQkJICAiICAgRU5EKSBBUyBcIiVzXCJcbiIsCisJCQkJCQkJCSAgZ2V0dGV4dF9ub29w KCJTdHJlYW1pbmciKSk7CisJCQllbHNlCisJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJ CQkJCQkJICAiLCBzdWJzdHJlYW0gQVMgXCIlc1wiXG4iLAorCQkJCQkJCQkgIGdldHRleHRfbm9v cCgiU3RyZWFtaW5nIikpOworCQl9CiAKIAkJLyogVHdvX3BoYXNlIGFuZCBkaXNhYmxlX29uX2Vy cm9yIGFyZSBvbmx5IHN1cHBvcnRlZCBpbiB2MTUgYW5kIGhpZ2hlciAqLwogCQlpZiAocHNldC5z dmVyc2lvbiA+PSAxNTAwMDApCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1 YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAppbmRl eCBlYjRlZWI0Li5iMGYyYTE3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1 YnNjcmlwdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgK QEAgLTgwLDcgKzgwLDggQEAgQ0FUQUxPRyhwZ19zdWJzY3JpcHRpb24sNjEwMCxTdWJzY3JpcHRp b25SZWxhdGlvbklkKSBCS0lfU0hBUkVEX1JFTEFUSU9OIEJLSV9ST1cKIAlib29sCQlzdWJiaW5h cnk7CQkvKiBUcnVlIGlmIHRoZSBzdWJzY3JpcHRpb24gd2FudHMgdGhlCiAJCQkJCQkJCSAqIHB1 Ymxpc2hlciB0byBzZW5kIGRhdGEgaW4gYmluYXJ5ICovCiAKLQlib29sCQlzdWJzdHJlYW07CQkv KiBTdHJlYW0gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLiAqLworCWNoYXIJCXN1YnN0cmVhbTsJ CS8qIFN0cmVhbSBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuIFNlZQorCQkJCQkJCQkgKiBMT0dJ Q0FMUkVQX1NUUkVBTV94eHggY29uc3RhbnRzLiAqLwogCiAJY2hhcgkJc3VidHdvcGhhc2VzdGF0 ZTsJLyogU3RyZWFtIHR3by1waGFzZSB0cmFuc2FjdGlvbnMgKi8KIApAQCAtMTI0LDcgKzEyNSw4 IEBAIHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlvbgogCWJvb2wJCWVuYWJsZWQ7CQkvKiBJbmRp Y2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBpcyBlbmFibGVkICovCiAJYm9vbAkJYmluYXJ5OwkJ CS8qIEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0aW9uIHdhbnRzIGRhdGEgaW4KIAkJCQkJCQkJ ICogYmluYXJ5IGZvcm1hdCAqLwotCWJvb2wJCXN0cmVhbTsJCQkvKiBBbGxvdyBzdHJlYW1pbmcg aW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLiAqLworCWNoYXIJCXN0cmVhbTsJCQkvKiBBbGxvdyBz dHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLgorCQkJCQkJCQkgKiBTZWUgTE9HSUNB TFJFUF9TVFJFQU1feHh4IGNvbnN0YW50cy4gKi8KIAljaGFyCQl0d29waGFzZXN0YXRlOwkvKiBB bGxvdyBzdHJlYW1pbmcgdHdvLXBoYXNlIHRyYW5zYWN0aW9ucyAqLwogCWJvb2wJCWRpc2FibGVv bmVycjsJLyogSW5kaWNhdGVzIGlmIHRoZSBzdWJzY3JpcHRpb24gc2hvdWxkIGJlCiAJCQkJCQkJ CSAqIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQgaWYgYSB3b3JrZXIgZXJyb3IKQEAgLTEzNyw2ICsx MzksMjEgQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJCQkJCQkJCSAqIHNwZWNpZmll ZCBvcmlnaW4gKi8KIH0gU3Vic2NyaXB0aW9uOwogCisvKiBEaXNhbGxvdyBzdHJlYW1pbmcgaW4t cHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLiAqLworI2RlZmluZSBMT0dJQ0FMUkVQX1NUUkVBTV9PRkYg J2YnCisKKy8qCisgKiBTdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIGFyZSB3cml0 dGVuIHRvIGEgdGVtcG9yYXJ5IGZpbGUgYW5kCisgKiBhcHBsaWVkIG9ubHkgYWZ0ZXIgdGhlIHRy YW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiB1cHN0cmVhbS4KKyAqLworI2RlZmluZSBMT0dJQ0FM UkVQX1NUUkVBTV9PTiAndCcKKworLyoKKyAqIFN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2Fj dGlvbnMgYXJlIGFwcGxpZWQgaW1tZWRpYXRlbHkgdmlhIGEgcGFyYWxsZWwKKyAqIGFwcGx5IHdv cmtlci4KKyAqLworI2RlZmluZSBMT0dJQ0FMUkVQX1NUUkVBTV9QQVJBTExFTCAncCcKKwogZXh0 ZXJuIFN1YnNjcmlwdGlvbiAqR2V0U3Vic2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5n X29rKTsKIGV4dGVybiB2b2lkIEZyZWVTdWJzY3JpcHRpb24oU3Vic2NyaXB0aW9uICpzdWIpOwog ZXh0ZXJuIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlvbihPaWQgc3ViaWQpOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5oIGIvc3JjL2luY2x1ZGUvY29t bWFuZHMvc3Vic2NyaXB0aW9uY21kcy5oCmluZGV4IGY1OWFhZjQuLjIxNGRjNmMgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuaAorKysgYi9zcmMvaW5j bHVkZS9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmgKQEAgLTI2LDQgKzI2LDYgQEAgZXh0ZXJu IHZvaWQgRHJvcFN1YnNjcmlwdGlvbihEcm9wU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwgYm9vbCBp c1RvcExldmVsKTsKIGV4dGVybiBPYmplY3RBZGRyZXNzIEFsdGVyU3Vic2NyaXB0aW9uT3duZXIo Y29uc3QgY2hhciAqbmFtZSwgT2lkIG5ld093bmVySWQpOwogZXh0ZXJuIHZvaWQgQWx0ZXJTdWJz Y3JpcHRpb25Pd25lcl9vaWQoT2lkIHN1YmlkLCBPaWQgbmV3T3duZXJJZCk7CiAKK2V4dGVybiBj aGFyIGRlZkdldFN0cmVhbWluZ01vZGUoRGVmRWxlbSAqZGVmKTsKKwogI2VuZGlmCQkJCQkJCS8q IFNVQlNDUklQVElPTkNNRFNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vbG9naWNhbGxhdW5jaGVyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1 bmNoZXIuaAppbmRleCBlMTY2MWI2Li5jODU1OTNhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9sb2dpY2FsbGF1bmNoZXIuaApAQCAtMTQsNiArMTQsNyBAQAogCiBleHRlcm4gUEdETExJTVBP UlQgaW50IG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM7CiBleHRlcm4gUEdETExJTVBP UlQgaW50IG1heF9zeW5jX3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbjsKK2V4dGVybiBQR0RMTElN UE9SVCBpbnQgbWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbjsKIAog ZXh0ZXJuIHZvaWQgQXBwbHlMYXVuY2hlclJlZ2lzdGVyKHZvaWQpOwogZXh0ZXJuIHZvaWQgQXBw bHlMYXVuY2hlck1haW4oRGF0dW0gbWFpbl9hcmcpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vbG9naWNhbHByb3RvLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dp Y2FscHJvdG8uaAppbmRleCBkNjQyNjQzLi4wZWEyZGY1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9sb2dpY2FscHJvdG8uaApAQCAtMzIsMTIgKzMyLDE3IEBACiAgKgogICogTE9HSUNBTFJFUF9Q Uk9UT19UV09QSEFTRV9WRVJTSU9OX05VTSBpcyB0aGUgbWluaW11bSBwcm90b2NvbCB2ZXJzaW9u IHdpdGgKICAqIHN1cHBvcnQgZm9yIHR3by1waGFzZSBjb21taXQgZGVjb2RpbmcgKGF0IHByZXBh cmUgdGltZSkuIEludHJvZHVjZWQgaW4gUEcxNS4KKyAqCisgKiBMT0dJQ0FMUkVQX1BST1RPX1NU UkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTSBpcyB0aGUgbWluaW11bSBwcm90b2NvbCB2ZXJzaW9u CisgKiB3aGVyZSB3ZSBzdXBwb3J0IGFwcGx5aW5nIGxhcmdlIHN0cmVhbWluZyB0cmFuc2FjdGlv bnMgaW4gcGFyYWxsZWwuCisgKiBJbnRyb2R1Y2VkIGluIFBHMTYuCiAgKi8KICNkZWZpbmUgTE9H SUNBTFJFUF9QUk9UT19NSU5fVkVSU0lPTl9OVU0gMQogI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RP X1ZFUlNJT05fTlVNIDEKICNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lPTl9O VU0gMgogI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNIDMKLSNk ZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19NQVhfVkVSU0lPTl9OVU0gTE9HSUNBTFJFUF9QUk9UT19U V09QSEFTRV9WRVJTSU9OX05VTQorI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJB TExFTF9WRVJTSU9OX05VTSA0CisjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fTUFYX1ZFUlNJT05f TlVNIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNCiAKIC8qCiAg KiBMb2dpY2FsIG1lc3NhZ2UgdHlwZXMKQEAgLTE3NSw2ICsxODAsMTcgQEAgdHlwZWRlZiBzdHJ1 Y3QgTG9naWNhbFJlcFJvbGxiYWNrUHJlcGFyZWRUeG5EYXRhCiAJY2hhcgkJZ2lkW0dJRFNJWkVd OwogfSBMb2dpY2FsUmVwUm9sbGJhY2tQcmVwYXJlZFR4bkRhdGE7CiAKKy8qCisgKiBUcmFuc2Fj dGlvbiBwcm90b2NvbCBpbmZvcm1hdGlvbiBmb3Igc3RyZWFtIGFib3J0LgorICovCit0eXBlZGVm IHN0cnVjdCBMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhCit7CisJVHJhbnNhY3Rpb25JZCB4aWQ7 CisJVHJhbnNhY3Rpb25JZCBzdWJ4aWQ7CisJWExvZ1JlY1B0cglhYm9ydF9sc247CisJVGltZXN0 YW1wVHogYWJvcnRfdGltZTsKK30gTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YTsKKwogZXh0ZXJu IHZvaWQgbG9naWNhbHJlcF93cml0ZV9iZWdpbihTdHJpbmdJbmZvIG91dCwgUmVvcmRlckJ1ZmZl clRYTiAqdHhuKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfcmVhZF9iZWdpbihTdHJpbmdJbmZv IGluLAogCQkJCQkJCQkgIExvZ2ljYWxSZXBCZWdpbkRhdGEgKmJlZ2luX2RhdGEpOwpAQCAtMjQ2 LDkgKzI2MiwxMyBAQCBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX3N0cmVhbV9jb21taXQo U3RyaW5nSW5mbyBvdXQsIFJlb3JkZXJCdWZmZXJUWE4gKnR4bgogZXh0ZXJuIFRyYW5zYWN0aW9u SWQgbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBpbiwKIAkJCQkJCQkJ CQkJCSAgIExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRfZGF0YSk7CiBleHRlcm4gdm9pZCBs b2dpY2FscmVwX3dyaXRlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25J ZCB4aWQsCi0JCQkJCQkJCQkJICBUcmFuc2FjdGlvbklkIHN1YnhpZCk7Ci1leHRlcm4gdm9pZCBs b2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gaW4sIFRyYW5zYWN0aW9uSWQg KnhpZCwKLQkJCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqc3VieGlkKTsKKwkJCQkJCQkJCQkgIFRy YW5zYWN0aW9uSWQgc3VieGlkLAorCQkJCQkJCQkJCSAgWExvZ1JlY1B0ciBhYm9ydF9sc24sCisJ CQkJCQkJCQkJICBUaW1lc3RhbXBUeiBhYm9ydF90aW1lLAorCQkJCQkJCQkJCSAgYm9vbCB3cml0 ZV9hYm9ydF9pbmZvKTsKK2V4dGVybiB2b2lkIGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQo U3RyaW5nSW5mbyBpbiwKKwkJCQkJCQkJCQkgTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSAqYWJv cnRfZGF0YSwKKwkJCQkJCQkJCQkgYm9vbCByZWFkX2Fib3J0X2luZm8pOwogZXh0ZXJuIGNoYXIg KmxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbik7CiAKICNl bmRpZgkJCQkJCQkvKiBMT0dJQ0FMX1BST1RPX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xv Z2ljYWx3b3JrZXIuaAppbmRleCBlNDg0NjYyLi4zOTU4OGRhIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vbG9naWNhbHdvcmtlci5oCkBAIC0xMiw5ICsxMiwxOCBAQAogI2lmbmRlZiBMT0dJQ0FM V09SS0VSX0gKICNkZWZpbmUgTE9HSUNBTFdPUktFUl9ICiAKKyNpbmNsdWRlIDxzaWduYWwuaD4K KworZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBQYXJhbGxlbEFwcGx5 TWVzc2FnZVBlbmRpbmc7CisKIGV4dGVybiB2b2lkIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWlu X2FyZyk7CitleHRlcm4gdm9pZCBQYXJhbGxlbEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2Fy Zyk7CiAKIGV4dGVybiBib29sIElzTG9naWNhbFdvcmtlcih2b2lkKTsKK2V4dGVybiBib29sIElz TG9naWNhbFBhcmFsbGVsQXBwbHlXb3JrZXIodm9pZCk7CisKK2V4dGVybiB2b2lkIEhhbmRsZVBh cmFsbGVsQXBwbHlNZXNzYWdlSW50ZXJydXB0KHZvaWQpOworZXh0ZXJuIHZvaWQgSGFuZGxlUGFy YWxsZWxBcHBseU1lc3NhZ2VzKHZvaWQpOwogCiBleHRlcm4gdm9pZCBMb2dpY2FsUmVwV29ya2Vy c1dha2V1cEF0Q29tbWl0KE9pZCBzdWJpZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL29yaWdpbi5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmgKaW5k ZXggMzc4NWY5NS4uNTMxMzUxMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v b3JpZ2luLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmgKQEAgLTUzLDcg KzUzLDcgQEAgZXh0ZXJuIFhMb2dSZWNQdHIgcmVwbG9yaWdpbl9nZXRfcHJvZ3Jlc3MoUmVwT3Jp Z2luSWQgbm9kZSwgYm9vbCBmbHVzaCk7CiAKIGV4dGVybiB2b2lkIHJlcGxvcmlnaW5fc2Vzc2lv bl9hZHZhbmNlKFhMb2dSZWNQdHIgcmVtb3RlX2NvbW1pdCwKIAkJCQkJCQkJCSAgIFhMb2dSZWNQ dHIgbG9jYWxfY29tbWl0KTsKLWV4dGVybiB2b2lkIHJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChS ZXBPcmlnaW5JZCBub2RlKTsKK2V4dGVybiB2b2lkIHJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChS ZXBPcmlnaW5JZCBub2RlLCBpbnQgYWNxdWlyZWRfYnkpOwogZXh0ZXJuIHZvaWQgcmVwbG9yaWdp bl9zZXNzaW9uX3Jlc2V0KHZvaWQpOwogZXh0ZXJuIFhMb2dSZWNQdHIgcmVwbG9yaWdpbl9zZXNz aW9uX2dldF9wcm9ncmVzcyhib29sIGZsdXNoKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vcGdvdXRwdXQuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0 LmgKaW5kZXggNjYzMzExYS4uYjRhODAxNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vcGdvdXRwdXQuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5o CkBAIC0yNiw3ICsyNiw3IEBAIHR5cGVkZWYgc3RydWN0IFBHT3V0cHV0RGF0YQogCUxpc3QJICAg KnB1YmxpY2F0aW9uX25hbWVzOwogCUxpc3QJICAgKnB1YmxpY2F0aW9uczsKIAlib29sCQliaW5h cnk7Ci0JYm9vbAkJc3RyZWFtaW5nOworCWNoYXIJCXN0cmVhbWluZzsKIAlib29sCQltZXNzYWdl czsKIAlib29sCQl0d29fcGhhc2U7CiAJY2hhcgkgICAqb3JpZ2luOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vcmVvcmRlcmJ1ZmZlci5oCmluZGV4IGE0MmExMjAuLmY2YzRkZDcgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaAorKysgYi9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKQEAgLTMxNiw2ICszMTYsNyBAQCB0eXBlZGVm IHN0cnVjdCBSZW9yZGVyQnVmZmVyVFhOCiAJewogCQlUaW1lc3RhbXBUeiBjb21taXRfdGltZTsK IAkJVGltZXN0YW1wVHogcHJlcGFyZV90aW1lOworCQlUaW1lc3RhbXBUeiBhYm9ydF90aW1lOwog CX0JCQl4YWN0X3RpbWU7CiAKIAkvKgpAQCAtNjc4LDcgKzY3OSw4IEBAIGV4dGVybiB2b2lkIFJl b3JkZXJCdWZmZXJBc3NpZ25DaGlsZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4 aWQsCiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQ29tbWl0Q2hpbGQoUmVvcmRlckJ1ZmZlciAq cmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgc3VieGlkLCBY TG9nUmVjUHRyIGNvbW1pdF9sc24sCiAJCQkJCQkJCQkgWExvZ1JlY1B0ciBlbmRfbHNuKTsKLWV4 dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rp b25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKTsKK2V4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJBYm9y dChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAor CQkJCQkJCSAgIFRpbWVzdGFtcFR6IGFib3J0X3RpbWUpOwogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1 ZmZlckFib3J0T2xkKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIG9sZGVzdFJ1bm5p bmdYaWQpOwogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckZvcmdldChSZW9yZGVyQnVmZmVyICpy YiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKTsKIGV4dGVybiB2b2lkIFJlb3Jk ZXJCdWZmZXJJbnZhbGlkYXRlKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwg WExvZ1JlY1B0ciBsc24pOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fs cmVjZWl2ZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgKaW5kZXgg ZmQ2MTM2OC4uZGVjZmZlMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fs cmVjZWl2ZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oCkBA IC0xODIsNyArMTgyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAkJCXVpbnQzMgkJcHJvdG9fdmVyc2lv bjsJLyogTG9naWNhbCBwcm90b2NvbCB2ZXJzaW9uICovCiAJCQlMaXN0CSAgICpwdWJsaWNhdGlv bl9uYW1lczsJLyogU3RyaW5nIGxpc3Qgb2YgcHVibGljYXRpb25zICovCiAJCQlib29sCQliaW5h cnk7IC8qIEFzayBwdWJsaXNoZXIgdG8gdXNlIGJpbmFyeSAqLwotCQkJYm9vbAkJc3RyZWFtaW5n OwkvKiBTdHJlYW1pbmcgb2YgbGFyZ2UgdHJhbnNhY3Rpb25zICovCisJCQljaGFyCSAgICpzdHJl YW1pbmdfc3RyOwkvKiBTdHJlYW1pbmcgb2YgbGFyZ2UgdHJhbnNhY3Rpb25zICovCiAJCQlib29s CQl0d29waGFzZTsJLyogU3RyZWFtaW5nIG9mIHR3by1waGFzZSB0cmFuc2FjdGlvbnMgYXQKIAkJ CQkJCQkJCSAqIHByZXBhcmUgdGltZSAqLwogCQkJY2hhcgkgICAqb3JpZ2luOyAvKiBPbmx5IHB1 Ymxpc2ggZGF0YSBvcmlnaW5hdGluZyBmcm9tIHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93 b3JrZXJfaW50ZXJuYWwuaAppbmRleCAyYTNlYzVjLi5kYjg5MWVlIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApAQCAtMTcsOCArMTcsMTMgQEAKICNpbmNsdWRl ICJhY2Nlc3MveGxvZ2RlZnMuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5o IgogI2luY2x1ZGUgImRhdGF0eXBlL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oIgorI2luY2x1ZGUgInN0 b3JhZ2UvYnVmZmlsZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmlsZXNldC5oIgogI2luY2x1ZGUg InN0b3JhZ2UvbG9jay5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2htX21xLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9zaG1fdG9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCiAKIApAQCAtNTMs MTMgKzU4LDI0IEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBXb3JrZXIKIAogCS8qCiAJICog VXNlZCB0byBjcmVhdGUgdGhlIGNoYW5nZXMgYW5kIHN1YnhhY3QgZmlsZXMgZm9yIHRoZSBzdHJl YW1pbmcKLQkgKiB0cmFuc2FjdGlvbnMuICBVcG9uIHRoZSBhcnJpdmFsIG9mIHRoZSBmaXJzdCBz dHJlYW1pbmcgdHJhbnNhY3Rpb24sIHRoZQotCSAqIGZpbGVzZXQgd2lsbCBiZSBpbml0aWFsaXpl ZCwgYW5kIGl0IHdpbGwgYmUgZGVsZXRlZCB3aGVuIHRoZSB3b3JrZXIKLQkgKiBleGl0cy4gIFVu ZGVyIHRoaXMsIHNlcGFyYXRlIGJ1ZmZpbGVzIHdvdWxkIGJlIGNyZWF0ZWQgZm9yIGVhY2gKLQkg KiB0cmFuc2FjdGlvbiB3aGljaCB3aWxsIGJlIGRlbGV0ZWQgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9u IGlzIGZpbmlzaGVkLgorCSAqIHRyYW5zYWN0aW9ucy4gIFVwb24gdGhlIGFycml2YWwgb2YgdGhl IGZpcnN0IHN0cmVhbWluZyB0cmFuc2FjdGlvbiBvcgorCSAqIHdoZW4gdGhlIGZpcnN0LXRpbWUg bGVhZGVyIGFwcGx5IHdvcmtlciB0aW1lcyBvdXQgd2hpbGUgc2VuZGluZyBjaGFuZ2VzCisJICog dG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgdGhlIGZpbGVzZXQgd2lsbCBiZSBpbml0aWFs aXplZCwgYW5kIGl0CisJICogd2lsbCBiZSBkZWxldGVkIHdoZW4gdGhlIHdvcmtlciBleGl0cy4g IFVuZGVyIHRoaXMsIHNlcGFyYXRlIGJ1ZmZpbGVzCisJICogd291bGQgYmUgY3JlYXRlZCBmb3Ig ZWFjaCB0cmFuc2FjdGlvbiB3aGljaCB3aWxsIGJlIGRlbGV0ZWQgYWZ0ZXIgdGhlCisJICogdHJh bnNhY3Rpb24gaXMgZmluaXNoZWQuCiAJICovCiAJRmlsZVNldCAgICAqc3RyZWFtX2ZpbGVzZXQ7 CiAKKwkvKgorCSAqIFBJRCBvZiBsZWFkZXIgYXBwbHkgd29ya2VyIGlmIHRoaXMgc2xvdCBpcyB1 c2VkIGZvciBhIHBhcmFsbGVsIGFwcGx5CisJICogd29ya2VyLCBJbnZhbGlkUGlkIG90aGVyd2lz ZS4KKwkgKi8KKwlwaWRfdAkJYXBwbHlfbGVhZGVyX3BpZDsKKworCS8qIEluZGljYXRlcyB3aGV0 aGVyIGFwcGx5IGNhbiBiZSBwZXJmb3JtZWQgaW4gcGFyYWxsZWwuICovCisJYm9vbAkJcGFyYWxs ZWxfYXBwbHk7CisKIAkvKiBTdGF0cy4gKi8KIAlYTG9nUmVjUHRyCWxhc3RfbHNuOwogCVRpbWVz dGFtcFR6IGxhc3Rfc2VuZF90aW1lOwpAQCAtNjgsOSArODQsMTM4IEBAIHR5cGVkZWYgc3RydWN0 IExvZ2ljYWxSZXBXb3JrZXIKIAlUaW1lc3RhbXBUeiByZXBseV90aW1lOwogfSBMb2dpY2FsUmVw V29ya2VyOwogCisvKgorICogU3RhdGUgb2YgdGhlIHRyYW5zYWN0aW9uIGluIHBhcmFsbGVsIGFw cGx5IHdvcmtlci4KKyAqCisgKiBUaGUgZW51bSB2YWx1ZXMgbXVzdCBoYXZlIHRoZSBzYW1lIG9y ZGVyIGFzIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZQorICogdHJhbnNpdGlvbnMuCisgKi8KK3R5cGVk ZWYgZW51bSBQYXJhbGxlbFRyYW5zU3RhdGUKK3sKKwlQQVJBTExFTF9UUkFOU19VTktOT1dOLAor CVBBUkFMTEVMX1RSQU5TX1NUQVJURUQsCisJUEFSQUxMRUxfVFJBTlNfRklOSVNIRUQKK30gUGFy YWxsZWxUcmFuc1N0YXRlOworCisvKgorICogU3RhdGUgb2YgZmlsZXNldCB1c2VkIHRvIGNvbW11 bmljYXRlIGNoYW5nZXMgZnJvbSBsZWFkZXIgdG8gcGFyYWxsZWwKKyAqIGFwcGx5IHdvcmtlci4K KyAqCisgKiBGU19FTVBUWSBpbmRpY2F0ZXMgYW4gaW5pdGlhbCBzdGF0ZSB3aGVyZSB0aGUgbGVh ZGVyIGRvZXNuJ3QgbmVlZCB0byB1c2UKKyAqIHRoZSBmaWxlIHRvIGNvbW11bmljYXRlIHdpdGgg dGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqCisgKiBGU19TRVJJQUxJWkVfSU5fUFJPR1JF U1MgaW5kaWNhdGVzIHRoYXQgdGhlIGxlYWRlciBpcyBzZXJpYWxpemluZyBjaGFuZ2VzCisgKiB0 byB0aGUgZmlsZS4KKyAqCisgKiBGU19TRVJJQUxJWkVfRE9ORSBpbmRpY2F0ZXMgdGhhdCB0aGUg bGVhZGVyIGhhcyBzZXJpYWxpemVkIGFsbCBjaGFuZ2VzIHRvCisgKiB0aGUgZmlsZS4KKyAqCisg KiBGU19SRUFEWSBpbmRpY2F0ZXMgdGhhdCBpdCBpcyBub3cgb2sgZm9yIGEgcGFyYWxsZWwgYXBw bHkgd29ya2VyIHRvCisgKiByZWFkIHRoZSBmaWxlLgorICovCit0eXBlZGVmIGVudW0gUGFydGlh bEZpbGVTZXRTdGF0ZQoreworCUZTX0VNUFRZLAorCUZTX1NFUklBTElaRV9JTl9QUk9HUkVTUywK KwlGU19TRVJJQUxJWkVfRE9ORSwKKwlGU19SRUFEWQorfSBQYXJ0aWFsRmlsZVNldFN0YXRlOwor CisvKgorICogU3RydWN0IGZvciBzaGFyaW5nIGluZm9ybWF0aW9uIGJldHdlZW4gbGVhZGVyIGFw cGx5IHdvcmtlciBhbmQgcGFyYWxsZWwKKyAqIGFwcGx5IHdvcmtlcnMuCisgKi8KK3R5cGVkZWYg c3RydWN0IFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQKK3sKKwlzbG9ja190CQltdXRleDsKKwor CVRyYW5zYWN0aW9uSWQgeGlkOworCisJLyoKKwkgKiBTdGF0ZSB1c2VkIHRvIGVuc3VyZSBjb21t aXQgb3JkZXJpbmcuCisJICoKKwkgKiBUaGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdpbGwgc2V0 IGl0IHRvIFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVEIGFmdGVyCisJICogaGFuZGxpbmcgdGhlIHRy YW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kcyB3aGlsZSB0aGUgYXBwbHkgbGVhZGVyIHdpbGwKKwkg KiB3YWl0IGZvciBpdCB0byBiZWNvbWUgUEFSQUxMRUxfVFJBTlNfRklOSVNIRUQgYmVmb3JlIHBy b2NlZWRpbmcgaW4KKwkgKiB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZHMgKGUuZy4gU1RSRUFN X0NPTU1JVC9TVFJFQU1fUFJFUEFSRS8KKwkgKiBTVFJFQU1fQUJPUlQpLgorCSAqLworCVBhcmFs bGVsVHJhbnNTdGF0ZSB4YWN0X3N0YXRlOworCisJLyogSW5mb3JtYXRpb24gZnJvbSB0aGUgY29y cmVzcG9uZGluZyBMb2dpY2FsUmVwV29ya2VyIHNsb3QuICovCisJdWludDE2CQlsb2dpY2FscmVw X3dvcmtlcl9nZW5lcmF0aW9uOworCWludAkJCWxvZ2ljYWxyZXBfd29ya2VyX3Nsb3Rfbm87CisK KwkvKgorCSAqIEluZGljYXRlcyB3aGV0aGVyIHRoZXJlIGFyZSBwZW5kaW5nIHN0cmVhbWluZyBi bG9ja3MgaW4gdGhlIHF1ZXVlLiBUaGUKKwkgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCBj aGVjayBpdCBiZWZvcmUgc3RhcnRpbmcgdG8gd2FpdC4KKwkgKi8KKwlwZ19hdG9taWNfdWludDMy IHBlbmRpbmdfc3RyZWFtX2NvdW50OworCisJLyoKKwkgKiBYYWN0TGFzdENvbW1pdEVuZCBmcm9t IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuIFRoaXMgaXMgcmVxdWlyZWQgYnkKKwkgKiB0aGUg bGVhZGVyIHdvcmtlciBzbyBpdCBjYW4gdXBkYXRlIHRoZSBsc25fbWFwcGluZ3MuCisJICovCisJ WExvZ1JlY1B0cglsYXN0X2NvbW1pdF9lbmQ7CisKKwkvKgorCSAqIEFmdGVyIGVudGVyaW5nIFBB UlRJQUxfU0VSSUFMSVpFIG1vZGUsIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwKKwkgKiBz ZXJpYWxpemUgY2hhbmdlcyB0byB0aGUgZmlsZSwgYW5kIHNoYXJlIHRoZSBmaWxlc2V0IHdpdGgg dGhlIHBhcmFsbGVsCisJICogYXBwbHkgd29ya2VyIHdoZW4gcHJvY2Vzc2luZyB0aGUgdHJhbnNh Y3Rpb24gZmluaXNoIGNvbW1hbmQuIFRoZW4gdGhlCisJICogcGFyYWxsZWwgYXBwbHkgd29ya2Vy IHdpbGwgYXBwbHkgYWxsIHRoZSBzcG9vbGVkIG1lc3NhZ2VzLgorCSAqCisJICogRmlsZVNldCBp cyB1c2VkIGhlcmUgaW5zdGVhZCBvZiBTaGFyZWRGaWxlU2V0IGJlY2F1c2Ugd2UgbmVlZCBpdCB0 bworCSAqIHN1cnZpdmUgYWZ0ZXIgcmVsZWFzaW5nIHRoZSBzaGFyZWQgbWVtb3J5IHNvIHRoYXQg dGhlIGxlYWRlciBhcHBseQorCSAqIHdvcmtlciBjYW4gcmUtdXNlIHRoZSBzYW1lIGZpbGVzZXQg Zm9yIHRoZSBuZXh0IHN0cmVhbWluZyB0cmFuc2FjdGlvbi4KKwkgKi8KKwlQYXJ0aWFsRmlsZVNl dFN0YXRlIGZpbGVzZXRfc3RhdGU7CisJRmlsZVNldAkJZmlsZXNldDsKK30gUGFyYWxsZWxBcHBs eVdvcmtlclNoYXJlZDsKKworLyoKKyAqIEluZm9ybWF0aW9uIHdoaWNoIGlzIHVzZWQgdG8gbWFu YWdlIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKi8KK3R5cGVkZWYgc3RydWN0IFBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvCit7CisJLyoKKwkgKiBUaGlzIHF1ZXVlIGlzIHVzZWQgdG8gc2Vu ZCBjaGFuZ2VzIGZyb20gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgdG8gdGhlCisJICogcGFyYWxs ZWwgYXBwbHkgd29ya2VyLgorCSAqLworCXNobV9tcV9oYW5kbGUgKm1xX2hhbmRsZTsKKworCS8q CisJICogVGhpcyBxdWV1ZSBpcyB1c2VkIHRvIHRyYW5zZmVyIGVycm9yIG1lc3NhZ2VzIGZyb20g dGhlIHBhcmFsbGVsIGFwcGx5CisJICogd29ya2VyIHRvIHRoZSBsZWFkZXIgYXBwbHkgd29ya2Vy LgorCSAqLworCXNobV9tcV9oYW5kbGUgKmVycm9yX21xX2hhbmRsZTsKKworCWRzbV9zZWdtZW50 ICpkc21fc2VnOworCisJLyoKKwkgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgbGVhZGVyIGFwcGx5 IHdvcmtlciBuZWVkcyB0byBzZXJpYWxpemUgdGhlCisJICogcmVtYWluaW5nIGNoYW5nZXMgdG8g YSBmaWxlIGR1ZSB0byB0aW1lb3V0IHdoZW4gYXR0ZW1wdGluZyB0byBzZW5kIGRhdGEKKwkgKiB0 byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHZpYSBzaGFyZWQgbWVtb3J5LgorCSAqLworCWJv b2wJCXNlcmlhbGl6ZV9jaGFuZ2VzOworCisJLyoKKwkgKiBUcnVlIGlmIHRoZSB3b3JrZXIgaXMg YmVpbmcgdXNlZCB0byBwcm9jZXNzIGEgcGFyYWxsZWwgYXBwbHkKKwkgKiB0cmFuc2FjdGlvbi4g RmFsc2UgaW5kaWNhdGVzIHRoaXMgd29ya2VyIGlzIGF2YWlsYWJsZSBmb3IgcmUtdXNlLgorCSAq LworCWJvb2wJCWluX3VzZTsKKworCVBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKnNoYXJlZDsK K30gUGFyYWxsZWxBcHBseVdvcmtlckluZm87CisKIC8qIE1haW4gbWVtb3J5IGNvbnRleHQgZm9y IGFwcGx5IHdvcmtlci4gUGVybWFuZW50IGR1cmluZyB3b3JrZXIgbGlmZXRpbWUuICovCiBleHRl cm4gUEdETExJTVBPUlQgTWVtb3J5Q29udGV4dCBBcHBseUNvbnRleHQ7CiAKK2V4dGVybiBQR0RM TElNUE9SVCBNZW1vcnlDb250ZXh0IEFwcGx5TWVzc2FnZUNvbnRleHQ7CisKK2V4dGVybiBQR0RM TElNUE9SVCBFcnJvckNvbnRleHRDYWxsYmFjayAqYXBwbHlfZXJyb3JfY29udGV4dF9zdGFjazsK KworZXh0ZXJuIFBHRExMSU1QT1JUIFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKk15UGFyYWxs ZWxTaGFyZWQ7CisKIC8qIGxpYnBxcmVjZWl2ZXIgY29ubmVjdGlvbiAqLwogZXh0ZXJuIFBHRExM SU1QT1JUIHN0cnVjdCBXYWxSZWNlaXZlckNvbm4gKkxvZ1JlcFdvcmtlcldhbFJjdkNvbm47CiAK QEAgLTg0LDkgKzIyOSwxMSBAQCBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2go aW50IHNsb3QpOwogZXh0ZXJuIExvZ2ljYWxSZXBXb3JrZXIgKmxvZ2ljYWxyZXBfd29ya2VyX2Zp bmQoT2lkIHN1YmlkLCBPaWQgcmVsaWQsCiAJCQkJCQkJCQkJCQlib29sIG9ubHlfcnVubmluZyk7 CiBleHRlcm4gTGlzdCAqbG9naWNhbHJlcF93b3JrZXJzX2ZpbmQoT2lkIHN1YmlkLCBib29sIG9u bHlfcnVubmluZyk7Ci1leHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRi aWQsIE9pZCBzdWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwKLQkJCQkJCQkJCSBPaWQgdXNlcmlk LCBPaWQgcmVsaWQpOworZXh0ZXJuIGJvb2wgbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE9pZCBk YmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1Ym5hbWUsCisJCQkJCQkJCQkgT2lkIHVzZXJp ZCwgT2lkIHJlbGlkLAorCQkJCQkJCQkJIGRzbV9oYW5kbGUgc3Vid29ya2VyX2RzbSk7CiBleHRl cm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKTsKK2V4 dGVybiB2b2lkIGxvZ2ljYWxyZXBfcGFfd29ya2VyX3N0b3AoaW50IHNsb3Rfbm8sIHVpbnQxNiBn ZW5lcmF0aW9uKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX3dha2V1cChPaWQgc3Vi aWQsIE9pZCByZWxpZCk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl93YWtldXBfcHRy KExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcik7CiAKQEAgLTEwMywxMCArMjUwLDc4IEBAIGV4dGVy biB2b2lkIHByb2Nlc3Nfc3luY2luZ190YWJsZXMoWExvZ1JlY1B0ciBjdXJyZW50X2xzbik7CiBl eHRlcm4gdm9pZCBpbnZhbGlkYXRlX3N5bmNpbmdfdGFibGVfc3RhdGVzKERhdHVtIGFyZywgaW50 IGNhY2hlaWQsCiAJCQkJCQkJCQkJCXVpbnQzMiBoYXNodmFsdWUpOwogCitleHRlcm4gdm9pZCBz dHJlYW1fc3RhcnRfaW50ZXJuYWwoVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgZmlyc3Rfc2VnbWVu dCk7CitleHRlcm4gdm9pZCBzdHJlYW1fc3RvcF9pbnRlcm5hbChUcmFuc2FjdGlvbklkIHhpZCk7 CisKKy8qIENvbW1vbiBzdHJlYW1pbmcgZnVuY3Rpb24gdG8gYXBwbHkgYWxsIHRoZSBzcG9vbGVk IG1lc3NhZ2VzICovCitleHRlcm4gdm9pZCBhcHBseV9zcG9vbGVkX21lc3NhZ2VzKEZpbGVTZXQg KnN0cmVhbV9maWxlc2V0LCBUcmFuc2FjdGlvbklkIHhpZCwKKwkJCQkJCQkJICAgWExvZ1JlY1B0 ciBsc24pOworCitleHRlcm4gdm9pZCBhcHBseV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpOworCitl eHRlcm4gdm9pZCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQpOworCitleHRlcm4gdm9p ZCBzdHJlYW1fY2xlYW51cF9maWxlcyhPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkKTsKKwor ZXh0ZXJuIHZvaWQgSW5pdGlhbGl6ZUFwcGx5V29ya2VyKHZvaWQpOworCitleHRlcm4gdm9pZCBz dG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9sc24sIFhMb2dSZWNQdHIgbG9j YWxfbHNuKTsKKworLyogRnVuY3Rpb24gZm9yIGFwcGx5IGVycm9yIGNhbGxiYWNrICovCitleHRl cm4gdm9pZCBhcHBseV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpOworZXh0ZXJuIHZvaWQgc2V0 X2FwcGx5X2Vycm9yX2NvbnRleHRfb3JpZ2luKGNoYXIgKm9yaWdpbm5hbWUpOworCisvKiBQYXJh bGxlbCBhcHBseSB3b3JrZXIgc2V0dXAgYW5kIGludGVyYWN0aW9ucyAqLworZXh0ZXJuIHZvaWQg cGFfYWxsb2NhdGVfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiBQYXJhbGxlbEFw cGx5V29ya2VySW5mbyAqcGFfZmluZF93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQpOworZXh0ZXJu IHZvaWQgcGFfZGV0YWNoX2FsbF9lcnJvcl9tcSh2b2lkKTsKKworZXh0ZXJuIGJvb2wgcGFfc2Vu ZF9kYXRhKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU2l6ZSBuYnl0ZXMsCisJCQkJ CQkgY29uc3Qgdm9pZCAqZGF0YSk7CitleHRlcm4gdm9pZCBwYV9zd2l0Y2hfdG9fcGFydGlhbF9z ZXJpYWxpemUoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLAorCQkJCQkJCQkJCSAgIGJv b2wgc3RyZWFtX2xvY2tlZCk7CisKK2V4dGVybiB2b2lkIHBhX3NldF94YWN0X3N0YXRlKFBhcmFs bGVsQXBwbHlXb3JrZXJTaGFyZWQgKndzaGFyZWQsCisJCQkJCQkJICBQYXJhbGxlbFRyYW5zU3Rh dGUgaW5feGFjdCk7CitleHRlcm4gdm9pZCBwYV9zZXRfc3RyZWFtX2FwcGx5X3dvcmtlcihQYXJh bGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pOworCitleHRlcm4gdm9pZCBwYV9zdGFydF9zdWJ0 cmFucyhUcmFuc2FjdGlvbklkIGN1cnJlbnRfeGlkLAorCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCB0 b3BfeGlkKTsKK2V4dGVybiB2b2lkIHBhX3Jlc2V0X3N1YnRyYW5zKHZvaWQpOworZXh0ZXJuIHZv aWQgcGFfc3RyZWFtX2Fib3J0KExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEgKmFib3J0X2RhdGEp OworZXh0ZXJuIHZvaWQgcGFfc2V0X2ZpbGVzZXRfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNo YXJlZCAqd3NoYXJlZCwKKwkJCQkJCQkJIFBhcnRpYWxGaWxlU2V0U3RhdGUgZmlsZXNldF9zdGF0 ZSk7CisKK2V4dGVybiB2b2lkIHBhX2xvY2tfc3RyZWFtKFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NL TU9ERSBsb2NrbW9kZSk7CitleHRlcm4gdm9pZCBwYV91bmxvY2tfc3RyZWFtKFRyYW5zYWN0aW9u SWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9kZSk7CisKK2V4dGVybiB2b2lkIHBhX2xvY2tfdHJhbnNh Y3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKK2V4dGVybiB2b2lk IHBhX3VubG9ja190cmFuc2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwgTE9DS01PREUgbG9ja21v ZGUpOworCitleHRlcm4gdm9pZCBwYV9kZWNyX2FuZF93YWl0X3N0cmVhbV9ibG9jayh2b2lkKTsK KworZXh0ZXJuIHZvaWQgcGFfeGFjdF9maW5pc2goUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndp bmZvLAorCQkJCQkJICAgWExvZ1JlY1B0ciByZW1vdGVfbHNuKTsKKworI2RlZmluZSBpc1BhcmFs bGVsQXBwbHlXb3JrZXIod29ya2VyKSAoKHdvcmtlciktPmFwcGx5X2xlYWRlcl9waWQgIT0gSW52 YWxpZFBpZCkKKwogc3RhdGljIGlubGluZSBib29sCiBhbV90YWJsZXN5bmNfd29ya2VyKHZvaWQp CiB7CiAJcmV0dXJuIE9pZElzVmFsaWQoTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxpZCk7CiB9CiAK K3N0YXRpYyBpbmxpbmUgYm9vbAorYW1fbGVhZGVyX2FwcGx5X3dvcmtlcih2b2lkKQoreworCXJl dHVybiAoIWFtX3RhYmxlc3luY193b3JrZXIoKSAmJgorCQkJIWlzUGFyYWxsZWxBcHBseVdvcmtl cihNeUxvZ2ljYWxSZXBXb3JrZXIpKTsKK30KKworc3RhdGljIGlubGluZSBib29sCithbV9wYXJh bGxlbF9hcHBseV93b3JrZXIodm9pZCkKK3sKKwlyZXR1cm4gaXNQYXJhbGxlbEFwcGx5V29ya2Vy KE15TG9naWNhbFJlcFdvcmtlcik7Cit9CisKICNlbmRpZgkJCQkJCQkvKiBXT1JLRVJfSU5URVJO QUxfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmggYi9zcmMvaW5j bHVkZS9zdG9yYWdlL2xtZ3IuaAppbmRleCA5OTVjOGU4Li40ZWU5MWUzIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9zdG9yYWdlL2xtZ3IuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2xtZ3Iu aApAQCAtMTA3LDYgKzEwNywxMSBAQCBleHRlcm4gdm9pZCBMb2NrU2hhcmVkT2JqZWN0Rm9yU2Vz c2lvbihPaWQgY2xhc3NpZCwgT2lkIG9iamlkLCB1aW50MTYgb2Jqc3ViaWQsCiBleHRlcm4gdm9p ZCBVbmxvY2tTaGFyZWRPYmplY3RGb3JTZXNzaW9uKE9pZCBjbGFzc2lkLCBPaWQgb2JqaWQsIHVp bnQxNiBvYmpzdWJpZCwKIAkJCQkJCQkJCQkgTE9DS01PREUgbG9ja21vZGUpOwogCitleHRlcm4g dm9pZCBMb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24oT2lkIHN1Ym9pZCwgVHJhbnNhY3Rp b25JZCB4aWQsIHVpbnQxNiBvYmppZCwKKwkJCQkJCQkJCQkgICBMT0NLTU9ERSBsb2NrbW9kZSk7 CitleHRlcm4gdm9pZCBVbmxvY2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lvbihPaWQgc3Vib2lk LCBUcmFuc2FjdGlvbklkIHhpZCwgdWludDE2IG9iamlkLAorCQkJCQkJCQkJCQkgTE9DS01PREUg bG9ja21vZGUpOworCiAvKiBEZXNjcmliZSBhIGxvY2t0YWcgZm9yIGVycm9yIG1lc3NhZ2VzICov CiBleHRlcm4gdm9pZCBEZXNjcmliZUxvY2tUYWcoU3RyaW5nSW5mbyBidWYsIGNvbnN0IExPQ0tU QUcgKnRhZyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG9jay5oIGIvc3Jj L2luY2x1ZGUvc3RvcmFnZS9sb2NrLmgKaW5kZXggOWE3MTkzNC4uMTkwYmRkYiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9sb2NrLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9s b2NrLmgKQEAgLTE0OSwxMCArMTQ5LDEyIEBAIHR5cGVkZWYgZW51bSBMb2NrVGFnVHlwZQogCUxP Q0tUQUdfU1BFQ1VMQVRJVkVfVE9LRU4sCS8qIHNwZWN1bGF0aXZlIGluc2VydGlvbiBYaWQgYW5k IHRva2VuICovCiAJTE9DS1RBR19PQkpFQ1QsCQkJCS8qIG5vbi1yZWxhdGlvbiBkYXRhYmFzZSBv YmplY3QgKi8KIAlMT0NLVEFHX1VTRVJMT0NLLAkJCS8qIHJlc2VydmVkIGZvciBvbGQgY29udHJp Yi91c2VybG9jayBjb2RlICovCi0JTE9DS1RBR19BRFZJU09SWQkJCS8qIGFkdmlzb3J5IHVzZXIg bG9ja3MgKi8KKwlMT0NLVEFHX0FEVklTT1JZLAkJCS8qIGFkdmlzb3J5IHVzZXIgbG9ja3MgKi8K KwlMT0NLVEFHX0FQUExZX1RSQU5TQUNUSU9OCS8qIHRyYW5zYWN0aW9uIGJlaW5nIGFwcGxpZWQg b24gYSBsb2dpY2FsCisJCQkJCQkJCSAqIHJlcGxpY2F0aW9uIHN1YnNjcmliZXIgKi8KIH0gTG9j a1RhZ1R5cGU7CiAKLSNkZWZpbmUgTE9DS1RBR19MQVNUX1RZUEUJTE9DS1RBR19BRFZJU09SWQor I2RlZmluZSBMT0NLVEFHX0xBU1RfVFlQRQlMT0NLVEFHX0FQUExZX1RSQU5TQUNUSU9OCiAKIGV4 dGVybiBQR0RMTElNUE9SVCBjb25zdCBjaGFyICpjb25zdCBMb2NrVGFnVHlwZU5hbWVzW107CiAK QEAgLTI3OCw2ICsyODAsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgTE9DS1RBRwogCSAobG9ja3RhZyku bG9ja3RhZ190eXBlID0gTE9DS1RBR19BRFZJU09SWSwgXAogCSAobG9ja3RhZykubG9ja3RhZ19s b2NrbWV0aG9kaWQgPSBVU0VSX0xPQ0tNRVRIT0QpCiAKKy8qCisgKiBJRCBpbmZvIGZvciBhIHJl bW90ZSB0cmFuc2FjdGlvbiBvbiBhIGxvZ2ljYWwgcmVwbGljYXRpb24gc3Vic2NyaWJlciBpczog REIKKyAqIE9JRCArIFNVQlNDUklQVElPTiBPSUQgKyBUUkFOU0FDVElPTiBJRCArIE9CSklECisg Ki8KKyNkZWZpbmUgU0VUX0xPQ0tUQUdfQVBQTFlfVFJBTlNBQ1RJT04obG9ja3RhZyxkYm9pZCxz dWJvaWQseGlkLG9iamlkKSBcCisJKChsb2NrdGFnKS5sb2NrdGFnX2ZpZWxkMSA9IChkYm9pZCks IFwKKwkgKGxvY2t0YWcpLmxvY2t0YWdfZmllbGQyID0gKHN1Ym9pZCksIFwKKwkgKGxvY2t0YWcp LmxvY2t0YWdfZmllbGQzID0gKHhpZCksIFwKKwkgKGxvY2t0YWcpLmxvY2t0YWdfZmllbGQ0ID0g KG9iamlkKSwgXAorCSAobG9ja3RhZykubG9ja3RhZ190eXBlID0gTE9DS1RBR19BUFBMWV9UUkFO U0FDVElPTiwgXAorCSAobG9ja3RhZykubG9ja3RhZ19sb2NrbWV0aG9kaWQgPSBERUZBVUxUX0xP Q0tNRVRIT0QpCiAKIC8qCiAgKiBQZXItbG9ja2VkLW9iamVjdCBsb2NrIGluZm9ybWF0aW9uOgpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggYi9zcmMvaW5jbHVk ZS9zdG9yYWdlL3Byb2NzaWduYWwuaAppbmRleCA0NWUyZjFmLi45MDVhZjIyIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2NzaWduYWwuaApAQCAtMzUsNiArMzUsNyBAQCB0eXBlZGVmIGVudW0KIAlQUk9DU0lH X1dBTFNORF9JTklUX1NUT1BQSU5HLAkvKiBhc2sgd2Fsc2VuZGVycyB0byBwcmVwYXJlIGZvciBz aHV0ZG93biAgKi8KIAlQUk9DU0lHX0JBUlJJRVIsCQkJLyogZ2xvYmFsIGJhcnJpZXIgaW50ZXJy dXB0ICAqLwogCVBST0NTSUdfTE9HX01FTU9SWV9DT05URVhULCAvKiBhc2sgYmFja2VuZCB0byBs b2cgdGhlIG1lbW9yeSBjb250ZXh0cyAqLworCVBST0NTSUdfUEFSQUxMRUxfQVBQTFlfTUVTU0FH RSwgLyogTWVzc2FnZSBmcm9tIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgKi8KIAogCS8qIFJlY292 ZXJ5IGNvbmZsaWN0IHJlYXNvbnMgKi8KIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0RBVEFC QVNFLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCmluZGV4IGY1MzI1NGEuLjZjYWNkNmUgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaAorKysgYi9zcmMvaW5jbHVkZS91dGls cy93YWl0X2V2ZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAgdHlwZWRlZiBlbnVtCiAJV0FJVF9FVkVO VF9DSEVDS1BPSU5URVJfTUFJTiwKIAlXQUlUX0VWRU5UX0xPR0lDQUxfQVBQTFlfTUFJTiwKIAlX QUlUX0VWRU5UX0xPR0lDQUxfTEFVTkNIRVJfTUFJTiwKKwlXQUlUX0VWRU5UX0xPR0lDQUxfUEFS QUxMRUxfQVBQTFlfTUFJTiwKIAlXQUlUX0VWRU5UX1JFQ09WRVJZX1dBTF9TVFJFQU0sCiAJV0FJ VF9FVkVOVF9TWVNMT0dHRVJfTUFJTiwKIAlXQUlUX0VWRU5UX1dBTF9SRUNFSVZFUl9NQUlOLApA QCAtMTA1LDYgKzEwNiw3IEBAIHR5cGVkZWYgZW51bQogCVdBSVRfRVZFTlRfSEFTSF9HUk9XX0JV Q0tFVFNfQUxMT0NBVEUsCiAJV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19FTEVDVCwKIAlX QUlUX0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX1JFSU5TRVJULAorCVdBSVRfRVZFTlRfTE9HSUNB TF9QQVJBTExFTF9BUFBMWV9TVEFURV9DSEFOR0UsCiAJV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNf REFUQSwKIAlXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19TVEFURV9DSEFOR0UsCiAJV0FJVF9FVkVO VF9NUV9JTlRFUk5BTCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vi c2NyaXB0aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91 dAppbmRleCBjMTNkMjE4Li4xZWQ2ZjRjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9z dWJzY3JpcHRpb24ub3V0CkBAIC0xMTcsNyArMTE3LDcgQEAgSElOVDogIFRvIGluaXRpYXRlIHJl cGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3Qs IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25z CiAgICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVk IHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwg RGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAg IENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KLSByZWdyZXNzX3Rlc3RzdWI0IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYg ICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgbm9uZSAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJu YW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViNCB8IHJlZ3Jl c3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBv ZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG5vbmUgICB8 IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAog KDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViNCBTRVQgKG9yaWdp biA9IGFueSk7CkBAIC0xMjUsNyArMTI1LDcgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nf dGVzdHN1YjQgU0VUIChvcmlnaW4gPSBhbnkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3lu Y2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04g CiAtLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YjQgfCByZWdy ZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwg ZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAg fCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAK KyByZWdyZXNzX3Rlc3RzdWI0IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAg fCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJl Z3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIERST1AgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfdGVzdHN1YjM7CkBAIC0xMzgsNyArMTM4LDcgQEAgRVJST1I6ICBpbnZhbGlkIGNvbm5l Y3Rpb24gc3RyaW5nIHN5bnRheDogbWlzc2luZyAiPSIgYWZ0ZXIgImZvb2JhciIgaW4gY29ubmVj dGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25z CiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBE aXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAg Q29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1l PXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19z dWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAg ICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2Zm ICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSBy b3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIFBVQkxJQ0FUSU9O IHRlc3RwdWIyLCB0ZXN0cHViMyBXSVRIIChyZWZyZXNoID0gZmFsc2UpOwpAQCAtMTU4LDcgKzE1 OCw3IEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0tJUCAobHNuID0gJzAv MTIzNDUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vi c2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAg fCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3 by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMg Y29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jl c3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYg ICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg YW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0 MiB8IDAvMTIzNDUKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2Vy IHwgZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBvZmYgICAgICAgfCBk ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAg ICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAwLzEyMzQ1CiAoMSByb3cp CiAKIC0tIG9rIC0gd2l0aCBsc24gPSBOT05FCkBAIC0xNzAsNyArMTcwLDcgQEAgRVJST1I6ICBp bnZhbGlkIFdBTCBsb2NhdGlvbiAoTFNOKTogMC8wCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNhdGlvbiAgICAgfCBC aW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8 IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgICBDb25uaW5mbyAgICAgICAg ICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSBy ZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0 ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAg IHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFt ZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNz X3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAg ICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFu eSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDIg fCAwLzAKICgxIHJvdykKIAogQkVHSU47CkBAIC0yMDUsNyArMjA1LDcgQEAgSElOVDogIEF2YWls YWJsZSB2YWx1ZXM6IGxvY2FsLCByZW1vdGVfd3JpdGUsIHJlbW90ZV9hcHBseSwgb24sIG9mZi4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRp b25zCiAgICAgICAgIE5hbWUgICAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBF bmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1w aGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29t bWl0IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWJfZm9vIHwg cmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9 IHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBhbnkgICAgfCBsb2NhbCAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QyIHwgMC8wCisgcmVncmVzc190ZXN0c3ViX2ZvbyB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9u X3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IG9mZiAgICAg ICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgbG9jYWwg ICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMAogKDEgcm93 KQogCiAtLSByZW5hbWUgYmFjayB0byBrZWVwIHRoZSByZXN0IHNpbXBsZQpAQCAtMjQyLDcgKzI0 Miw3IEBAIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkg Y3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJl YW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5 bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNO IAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jl c3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCB0ICAgICAgfCBm ICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8 IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAor IHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWJ9ICAgfCB0ICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVn cmVzc190ZXN0c3ViIFNFVCAoYmluYXJ5ID0gZmFsc2UpOwpAQCAtMjUxLDEzICsyNTEsMTMgQEAg QUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUp OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMK ICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8 IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERp c2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBD b25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9 cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1 YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAg ICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYg ICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJv dykKIAogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViOwotLS0gZmFpbCAtIHN0cmVh bWluZyBtdXN0IGJlIGJvb2xlYW4KKy0tIGZhaWwgLSBzdHJlYW1pbmcgbXVzdCBiZSBib29sZWFu IG9yICdwYXJhbGxlbCcKIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5F Q1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBX SVRIIChjb25uZWN0ID0gZmFsc2UsIHN0cmVhbWluZyA9IGZvbyk7Ci1FUlJPUjogIHN0cmVhbWlu ZyByZXF1aXJlcyBhIEJvb2xlYW4gdmFsdWUKK0VSUk9SOiAgc3RyZWFtaW5nIHJlcXVpcmVzIGEg Qm9vbGVhbiB2YWx1ZSBvciAicGFyYWxsZWwiCiAtLSBub3cgaXQgd29ya3MKIENSRUFURSBTVUJT Q1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2UsIHN0cmVh bWluZyA9IHRydWUpOwogV0FSTklORzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlz IG5vdCBjb25uZWN0ZWQKQEAgLTI2Niw3ICsyNjYsMTUgQEAgSElOVDogIFRvIGluaXRpYXRlIHJl cGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3Qs IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25z CiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBE aXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAg Q29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHQgICAgICAgICB8IGQgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1l PXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19z dWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9uICAg ICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2Zm ICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisoMSBy b3cpCisKK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcg PSBwYXJhbGxlbCk7CitcZFJzKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0 IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdv LXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBj b21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlw dGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxsZWwgIHwg ZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAg ICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAog QUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9IGZhbHNl KTsKQEAgLTI3NSw3ICsyODMsNyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3Vi IFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcg fCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9u b3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vi c2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBmICAgICAg ICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAg ICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jl c3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3Rw dWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2Rv ZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiAtLSBmYWlsIC0gcHVibGljYXRpb24gYWxyZWFk eSBleGlzdHMKQEAgLTI5Myw3ICszMDEsNyBAQCBFUlJPUjogIHB1YmxpY2F0aW9uICJ0ZXN0cHVi MSIgaXMgYWxyZWFkeSBpbiBzdWJzY3JpcHRpb24gInJlZ3Jlc3NfdGVzdHN1YiIKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAg ICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAg ICAgICAgUHVibGljYXRpb24gICAgICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFz ZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0 IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jl c3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIsdGVzdHB1YjEsdGVzdHB1 YjJ9IHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViLHRlc3RwdWIxLHRlc3RwdWIyfSB8IGYgICAgICB8IG9m ZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwg b2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAo MSByb3cpCiAKIC0tIGZhaWwgLSBwdWJsaWNhdGlvbiB1c2VkIG1vcmUgdGhlbiBvbmNlCkBAIC0z MTEsNyArMzE5LDcgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBEUk9QIFBV QkxJQ0FUSU9OIHRlc3RwdWIxLCB0ZXN0cHViMiBXSVRIIChyZWYKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwg ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFy eSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3Jp Z2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwg U2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3Vi IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYg ICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg YW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0 IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYg ICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJu YW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIERST1AgU1VCU0NSSVBU SU9OIHJlZ3Jlc3NfdGVzdHN1YjsKQEAgLTM1MCw3ICszNTgsNyBAQCBISU5UOiAgVG8gaW5pdGlh dGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24g c2xvdCwgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlw dGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5h YmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1p dCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAg ICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgZiAgICAgICAgIHwgcCAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdy ZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwg b2ZmICAgICAgIHwgcCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAg fCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAK ICgxIHJvdykKIAogLS1mYWlsIC0gYWx0ZXIgb2YgdHdvX3BoYXNlIG9wdGlvbiBub3Qgc3VwcG9y dGVkLgpAQCAtMzYyLDcgKzM3MCw3IEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3Rz dWIgU0VUIChzdHJlYW1pbmcgPSB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWlu ZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hy b25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAt LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19z dWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHQgICAg ICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2Zm ICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVn cmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVz dHB1Yn0gICB8IGYgICAgICB8IG9uICAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAgICAg ICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3Nf ZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNz X3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKQEAgLTM3NSw3ICszODMsNyBAQCBISU5U OiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUg cmVwbGljYXRpb24gc2xvdCwgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0 IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdv LXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBj b21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlw dGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgdCAgICAgICAgIHwg cCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAg ICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rl c3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAg IHwgZiAgICAgIHwgb24gICAgICAgIHwgcCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1 YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwpAQCAtMzkxLDcgKzM5OSw3IEBAIEhJTlQ6ICBUbyBp bml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNh dGlvbiBzbG90LCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vi c2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAg fCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2Ug Y29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8 ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3Vz ZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAg ICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8 IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAg ICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFu eSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8 IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAo ZGlzYWJsZV9vbl9lcnJvciA9IHRydWUpOwpAQCAtMzk5LDcgKzQwNyw3IEBAIEFMVEVSIFNVQlND UklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChkaXNhYmxlX29uX2Vycm9yID0gdHJ1ZSk7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAg ICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVi bGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJs ZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5p bmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQot IHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgdCAg ICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2Ny aXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAg fCBkICAgICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAg ICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQog CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9O RSk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbAppbmRleCBlYWVhZGU4Li43OTkx YWJmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5zcWwKQEAgLTE2Nyw3ICsxNjcs NyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0g Tk9ORSk7CiAKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjsKIAotLS0gZmFpbCAt IHN0cmVhbWluZyBtdXN0IGJlIGJvb2xlYW4KKy0tIGZhaWwgLSBzdHJlYW1pbmcgbXVzdCBiZSBi b29sZWFuIG9yICdwYXJhbGxlbCcKIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3Vi IENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVz dHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2UsIHN0cmVhbWluZyA9IGZvbyk7CiAKIC0tIG5vdyBp dCB3b3JrcwpAQCAtMTc1LDYgKzE3NSwxMCBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nf dGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQgogCiBc ZFJzKwogCitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5n ID0gcGFyYWxsZWwpOworCitcZFJzKworCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0 c3ViIFNFVCAoc3RyZWFtaW5nID0gZmFsc2UpOwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nf dGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1 X3N0cmVhbS5wbAppbmRleCBlMjU5YzEwLi45MWU4YWE4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAxNV9zdHJlYW0ucGwKQEAgLTgsNiArOCwxMjggQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAor IyBDaGVjayB0aGF0IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaGFzIGZpbmlzaGVkIGFwcGx5 aW5nIHRoZSBzdHJlYW1pbmcKKyMgdHJhbnNhY3Rpb24uCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9n Cit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJHR5cGUp ID0gQF87CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2Fp dF9mb3JfbG9nKAorCQkJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/IGZpbmlzaGVkIHByb2Nlc3Np bmcgdGhlIFNUUkVBTSAkdHlwZSBjb21tYW5kLywKKwkJCSRvZmZzZXQpOworCX0KK30KKworIyBD b21tb24gdGVzdCBzdGVwcyBmb3IgYm90aCB0aGUgc3RyZWFtaW5nPW9uIGFuZCBzdHJlYW1pbmc9 cGFyYWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfcHVibGlz aGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBfOworCisJ IyBJbnRlcmxlYXZlIGEgcGFpciBvZiB0cmFuc2FjdGlvbnMsIGVhY2ggZXhjZWVkaW5nIHRoZSA2 NGtCIGxpbWl0LgorCW15ICRpbiAgPSAnJzsKKwlteSAkb3V0ID0gJyc7CisKKwlteSAkb2Zmc2V0 ID0gMDsKKworCW15ICR0aW1lciA9IElQQzo6UnVuOjp0aW1lb3V0KCRQb3N0Z3JlU1FMOjpUZXN0 OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsKKworCW15ICRoID0gJG5vZGVfcHVibGlzaGVyLT5i YWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgXCRpbiwgXCRvdXQsICR0aW1lciwKKwkJb25fZXJy b3Jfc3RvcCA9PiAwKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9u LgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJJGluIC49IHF7 CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQg YiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgbW9kKGEsMykgPSAwOworCX07CisJJGgtPnB1bXBfbmI7CisKKwkkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDk5 OTkpIHMoaSk7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDUwMDA7CisJQ09NTUlU OworCX0pOworCisJJGluIC49IHF7CisJQ09NTUlUOworCVxxCisJfTsKKwkkaC0+ZmluaXNoOyAg ICAjIGVycm9ycyBtYWtlIHRoZSBuZXh0IHRlc3QgZmFpbCwgc28gaWdub3JlIHRoZW0gaGVyZQor CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNr X3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdD T01NSVQnKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5 KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAorCQkn Y2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJyk7CisKKwkjIFRlc3Qg dGhlIHN0cmVhbWluZyBpbiBiaW5hcnkgbW9kZQorCSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCQkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUIChiaW5hcnkg PSBvbikiKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRv ZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBJbnNlcnQsIHVwZGF0 ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KKwkkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDUwMDEsIDEwMDAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBX SEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykg PSAwOworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9m ZnNldCwgJGlzX3BhcmFsbGVsLCAnQ09NTUlUJyk7CisKKwkkcmVzdWx0ID0KKwkgICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDY2 Njd8NjY2N3w2NjY3KSwKKwkJJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZh dWx0cycpOworCisJIyBDaGFuZ2UgdGhlIGxvY2FsIHZhbHVlcyBvZiB0aGUgZXh0cmEgY29sdW1u cyBvbiB0aGUgc3Vic2NyaWJlciwKKwkjIHVwZGF0ZSBwdWJsaXNoZXIsIGFuZCBjaGVjayB0aGF0 IHN1YnNjcmliZXIgcmV0YWlucyB0aGUgZXhwZWN0ZWQKKwkjIHZhbHVlcy4gVGhpcyBpcyB0byBl bnN1cmUgdGhhdCBub24tc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyBiZWhhdmUKKwkjIHByb3Blcmx5 IGFmdGVyIGEgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgorCSRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiVVBEQVRFIHRlc3RfdGFiIFNFVCBjID0gJ2Vwb2NoJzo6dGlt ZXN0YW1wdHogKyA5ODc2NTQzMjEgKiBpbnRlcnZhbCAnMXMnIgorCSk7CisKKwkjIENoZWNrIHRo ZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2Ny aWJlci0+bG9nZmlsZTsKKworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJCSJVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYTo6dGV4dCkiKTsKKworCSRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9s b2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnQ09NTUlUJyk7CisK KwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJT RUxFQ1QgY291bnQoKiksIGNvdW50KGV4dHJhY3QoZXBvY2ggZnJvbSBjKSA9IDk4NzY1NDMyMSks IGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiCisJKTsKKwlpcygkcmVzdWx0LCBxcSg2NjY3 fDY2Njd8NjY2NyksCisJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWxseSBjaGFu Z2VkIGRhdGEnKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChh ID4gMikiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwor fQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdy ZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+ aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0yNiwxNyArMTQ4LDI3IEBA ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDEs ICdmb28nKSwgKDIsICdiYXInKSIpOwogCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiXzIgKGEgaW50KSIpOworCiAjIFNldHVwIHN0 cnVjdHVyZSBvbiBzdWJzY3JpYmVyCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKIAkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiIChhIGludCBwcmltYXJ5IGtleSwgYiB0ZXh0 LCBjIHRpbWVzdGFtcHR6IERFRkFVTFQgbm93KCksIGQgYmlnaW50IERFRkFVTFQgOTk5KSIKICk7 CiAKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxF IHRlc3RfdGFiXzIgKGEgaW50KSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIkNSRUFURSBVTklRVUUgSU5ERVggaWR4X3RhYiBvbiB0ZXN0X3RhYl8yKGEpIik7 CisKICMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbgogbXkgJHB1Ymxpc2hlcl9jb25uc3RyID0g JG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4gJyBkYm5hbWU9cG9zdGdyZXMnOwogJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9w dWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CisJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZP UiBUQUJMRSB0ZXN0X3RhYiwgdGVzdF90YWJfMiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3Vi JzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJl YW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJT04g dGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0k YXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbikiCiApOwpA QCAtNDksNiArMTgxLDQzIEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8 MiksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKK3Rl c3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUs IDApOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVz aW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBw bGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorKTsK KworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlND UklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCwgYmluYXJ5ID0gb2ZmKSIp OworCiskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VM RUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNh dGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAg b3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBh ZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOworCisjIFdlIG5lZWQgdG8gY2hlY2sgREVCVUcg bG9ncyB0byBlbnN1cmUgdGhhdCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGhhcworIyBhcHBs aWVkIHRoZSB0cmFuc2FjdGlvbi4gU28sIGJ1bXAgdXAgdGhlIGxvZyB2ZXJib3NpdHkuCiskbm9k ZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVz c2FnZXMgPSBkZWJ1ZzEiKTsKKyRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKworIyBSdW4gYSBx dWVyeSB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcmVsb2FkIGhhcyB0YWtlbiBlZmZlY3QuCiskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXtTRUxFQ1QgMX0pOworCit0ZXN0 X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAx KTsKKworIyBUZXN0IHRoYXQgdGhlIGRlYWRsb2NrIGlzIGRldGVjdGVkIGFtb25nIHRoZSBsZWFk ZXIgYW5kIHBhcmFsbGVsIGFwcGx5CisjIHdvcmtlcnMuCisKKyRub2RlX3N1YnNjcmliZXItPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAiZGVhZGxvY2tfdGltZW91dCA9IDEwbXMiKTsK KyRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKworIyBSdW4gYSBxdWVyeSB0byBtYWtlIHN1cmUg dGhhdCB0aGUgcmVsb2FkIGhhcyB0YWtlbiBlZmZlY3QuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgcXtTRUxFQ1QgMX0pOworCiAjIEludGVybGVhdmUgYSBwYWlyIG9m IHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcgdGhlIDY0a0IgbGltaXQuCiBteSAkaW4gID0g Jyc7CiBteSAkb3V0ID0gJyc7CkBAIC01OCw3MyArMjI3LDkwIEBAIG15ICR0aW1lciA9IElQQzo6 UnVuOjp0aW1lb3V0KCRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsK IG15ICRoID0gJG5vZGVfcHVibGlzaGVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgXCRp biwgXCRvdXQsICR0aW1lciwKIAlvbl9lcnJvcl9zdG9wID0+IDApOwogCisjIENvbmZpcm0gaWYg YSBkZWFkbG9jayBiZXR3ZWVuIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCB0aGUgcGFyYWxs ZWwgYXBwbHkKKyMgd29ya2VyIGNhbiBiZSBkZXRlY3RlZC4KKworbXkgJG9mZnNldCA9IC1zICRu b2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKICRpbiAuPSBxewogQkVHSU47Ci1JTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMs IDUwMDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEs MikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworSU5TRVJU IElOVE8gdGVzdF90YWJfMiBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBz KGkpOwogfTsKICRoLT5wdW1wX25iOwogCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkn cG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDk5OTkpIHMoaSk7Ci1ERUxFVEUg RlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gNTAwMDsKLUNPTU1JVDsKLX0pOworIyBFbnN1cmUgdGhh dCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGV4ZWN1dGVzIHRoZSBpbnNlcnQgY29tbWFuZCBi ZWZvcmUgdGhlCisjIGxlYWRlciB3b3JrZXIuCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9s b2coCisJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/IGFwcGxpZWQgWzAtOV0rIGNoYW5nZXMgaW4g dGhlIHN0cmVhbWluZyBjaHVuay8sCisJJG9mZnNldCk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3RhYl8yIHZhbHVlcygxKSIpOwog CiAkaW4gLj0gcXsKIENPTU1JVDsKIFxxCiB9OwotJGgtPmZpbmlzaDsgICAgIyBlcnJvcnMgbWFr ZSB0aGUgbmV4dCB0ZXN0IGZhaWwsIHNvIGlnbm9yZSB0aGVtIGhlcmUKKyRoLT5maW5pc2g7CiAK KyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci9FUlJPUjogKCBbQS1aMC05XSs6KT8g ZGVhZGxvY2sgZGV0ZWN0ZWQvLAorCSRvZmZzZXQpOworCisjIEluIG9yZGVyIGZvciB0aGUgdHdv IHRyYW5zYWN0aW9ucyB0byBiZSBjb21wbGV0ZWQgbm9ybWFsbHkgd2l0aG91dCBjYXVzaW5nCisj IGNvbmZsaWN0cyBkdWUgdG8gdGhlIHVuaXF1ZSBpbmRleCwgd2UgdGVtcG9yYXJpbHkgZHJvcCBp dC4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCBp ZHhfdGFiIik7CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUg YXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0g OTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksICdj aGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKKyAgJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0 X3RhYl8yIik7CitpcygkcmVzdWx0LCBxcSg1MDAxKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJz Y3JpYmVyIGFmdGVyIGRyb3BwaW5nIGluZGV4Jyk7CiAKLSMgVGVzdCB0aGUgc3RyZWFtaW5nIGlu IGJpbmFyeSBtb2RlCisjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4K KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FURSBUQUJMRSB0 ZXN0X3RhYl8yIik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFNVQlND UklQVElPTiB0YXBfc3ViIFNFVCAoYmluYXJ5ID0gb24pIik7CisJIkNSRUFURSBVTklRVUUgSU5E RVggaWR4X3RhYiBvbiB0ZXN0X3RhYl8yKGEpIik7CiAKLSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRl bGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDEw MDAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIp ID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLUNPTU1JVDsK LX0pOworIyBDb25maXJtIGlmIGEgZGVhZGxvY2sgYmV0d2VlbiB0d28gcGFyYWxsZWwgYXBwbHkg d29ya2VycyBjYW4gYmUgZGV0ZWN0ZWQuCiAKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7CisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4K KyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwogCi0kcmVzdWx0ID0KLSAg JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgq KSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQs IHFxKDY2Njd8NjY2N3w2NjY3KSwgJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBk ZWZhdWx0cycpOworJGluIC49IHF7CitCRUdJTjsKK0lOU0VSVCBJTlRPIHRlc3RfdGFiXzIgU0VM RUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsKK307CiskaC0+cHVtcF9u YjsKKworIyBFbnN1cmUgdGhhdCB0aGUgZmlyc3QgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGV4ZWN1 dGVzIHRoZSBpbnNlcnQgY29tbWFuZAorIyBiZWZvcmUgdGhlIHNlY29uZCBvbmUuCiskbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/IGFwcGxp ZWQgWzAtOV0rIGNoYW5nZXMgaW4gdGhlIHN0cmVhbWluZyBjaHVuay8sCisJJG9mZnNldCk7CiAK LSMgQ2hhbmdlIHRoZSBsb2NhbCB2YWx1ZXMgb2YgdGhlIGV4dHJhIGNvbHVtbnMgb24gdGhlIHN1 YnNjcmliZXIsCi0jIHVwZGF0ZSBwdWJsaXNoZXIsIGFuZCBjaGVjayB0aGF0IHN1YnNjcmliZXIg cmV0YWlucyB0aGUgZXhwZWN0ZWQKLSMgdmFsdWVzLiBUaGlzIGlzIHRvIGVuc3VyZSB0aGF0IG5v bi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zIGJlaGF2ZQotIyBwcm9wZXJseSBhZnRlciBhIHN0cmVh bWluZyB0cmFuc2FjdGlvbi4KLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAotCSJVUERBVEUgdGVzdF90YWIgU0VUIGMgPSAnZXBvY2gnOjp0aW1lc3RhbXB0eiArIDk4NzY1 NDMyMSAqIGludGVydmFsICcxcyciCi0pOwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKLQkiVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGE6OnRleHQpIik7CisJIklO U0VSVCBJTlRPIHRlc3RfdGFiXzIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAw MCkgcyhpKSIpOwogCiskaW4gLj0gcXsKK0NPTU1JVDsKK1xxCit9OworJGgtPmZpbmlzaDsKKwor JG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBk ZWFkbG9jayBkZXRlY3RlZC8sCisJJG9mZnNldCk7CisKKyMgSW4gb3JkZXIgZm9yIHRoZSB0d28g dHJhbnNhY3Rpb25zIHRvIGJlIGNvbXBsZXRlZCBub3JtYWxseSB3aXRob3V0IGNhdXNpbmcKKyMg Y29uZmxpY3RzIGR1ZSB0byB0aGUgdW5pcXVlIGluZGV4LCB3ZSB0ZW1wb3JhcmlseSBkcm9wIGl0 LgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVYIGlk eF90YWIiKTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBh cHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOwogCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoZXh0cmFjdChlcG9jaCBmcm9t IGMpID0gOTg3NjU0MzIxKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIKLSk7Ci1pcygk cmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCi0JJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFp biBsb2NhbGx5IGNoYW5nZWQgZGF0YScpOworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfMiIp OworaXMoJHJlc3VsdCwgcXEoMTAwMDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIg YWZ0ZXIgZHJvcHBpbmcgaW5kZXgnKTsKIAogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2Rl X3B1Ymxpc2hlci0+c3RvcDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAx Nl9zdHJlYW1fc3VieGFjdC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1f c3VieGFjdC5wbAppbmRleCA2NDlkZDk1Li4yZjAxNDhjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCkBAIC04LDYgKzgsNzMgQEAgdXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2Ug VGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGF0IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaGFz IGZpbmlzaGVkIGFwcGx5aW5nIHRoZSBzdHJlYW1pbmcKKyMgdHJhbnNhY3Rpb24uCitzdWIgY2hl Y2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19w YXJhbGxlbCwgJHR5cGUpID0gQF87CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVf c3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCQkJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/IGZp bmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNUUkVBTSAkdHlwZSBjb21tYW5kLywKKwkJCSRvZmZzZXQp OworCX0KK30KKworIyBDb21tb24gdGVzdCBzdGVwcyBmb3IgYm90aCB0aGUgc3RyZWFtaW5nPW9u IGFuZCBzdHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlt eSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFs bGVsKSA9IEBfOworCisJbXkgJG9mZnNldCA9IDA7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVy IGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmls ZTsKKworCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBzb21lIHJvd3MuCisJJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcygz LCA1KSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwy KSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCVNBVkVQ T0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDYsIDgpIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0g bWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBt b2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoOSwgMTEpIHMoaSk7CisJVVBE QVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUg RlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHMzOworCUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMTIsIDE0KSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBt b2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwor CVNBVkVQT0lOVCBzNDsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1LCAxNykgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIg U0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFi IFdIRVJFIG1vZChhLDMpID0gMDsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2Rl X3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJ0NPTU1JVCcpOworCisJbXkgJHJl c3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsK KwlpcygkcmVzdWx0LCBxcSgxMnwxMnwxMiksCisJCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8g c3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxv Y2FsIGRlZmF1bHRzJworCSk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSAoYSA+IDIpIik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKK30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9 IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJs aXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzcsNiArMTA0 LDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQ VUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9 ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1 c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJT Q1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRp b25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBv bikiCiApOwpAQCAtNDksNDEgKzEyMCwzNCBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50 KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3Vs dCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJl cicpOwogCi0jIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgc29tZSByb3dzLgotJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1 KSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0g MDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLVNBVkVQT0lOVCBz MTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoNiwgOCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBX SEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9 IDA7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDksIDExKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFi IFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFi IFdIRVJFIG1vZChhLDMpID0gMDsKLVNBVkVQT0lOVCBzMzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTIsIDE0KSBzKGkp OwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURF TEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLVNBVkVQT0lOVCBzNDsKLUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMTUsIDE3KSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJF IG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsK LUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVz dF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDEyfDEyfDEyKSwKLQknY2hlY2sgZGF0YSB3YXMgY29w aWVkIHRvIHN1YnNjcmliZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29u dGFpbiBsb2NhbCBkZWZhdWx0cycKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5v ZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0 YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0 YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBw YXJhbGxlbCkiKTsKKworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3Jl cycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hF UkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7 IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRv IHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKKworIyBXZSBuZWVkIHRvIGNo ZWNrIERFQlVHIGxvZ3MgdG8gZW5zdXJlIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBo YXMKKyMgYXBwbGllZCB0aGUgdHJhbnNhY3Rpb24uIFNvLCBidW1wIHVwIHRoZSBsb2cgdmVyYm9z aXR5LgorJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJs b2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisK KyMgUnVuIGEgcXVlcnkgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHJlbG9hZCBoYXMgdGFrZW4gZWZm ZWN0LgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7U0VMRUNUIDF9 KTsKKwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAk YXBwbmFtZSwgMSk7CisKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXIt PnN0b3A7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1f ZGRsLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwKaW5kZXgg MmZiZDY0My4uNjI2Njc2YSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3 X3N0cmVhbV9kZGwucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9k ZGwucGwKQEAgLTIsNiArMiw5IEBACiAjIENvcHlyaWdodCAoYykgMjAyMS0yMDIzLCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAogCiAjIFRlc3Qgc3RyZWFtaW5nIG9mIGxhcmdl IHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBzdWJ0cmFuc2FjdGlvbnMKKyMKKyMgVGhpcyBmaWxl IGlzIG1haW5seSB0byB0ZXN0IHRoZSBEREwvRE1MIGludGVyYWN0aW9uIG9mIHRoZSBwdWJsaXNo ZXIgc2lkZSwKKyMgc28gd2UgZGlkbid0IGFkZCBhIHBhcmFsbGVsIGFwcGx5IHZlcnNpb24gZm9y IHRoZSB0ZXN0cyBpbiB0aGlzIGZpbGUuCiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzOwogdXNl IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwKaW5kZXggMTcwZWUxMC4uZGNlMTRiMSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fi b3J0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9h Ym9ydC5wbApAQCAtOCw2ICs4LDEyNCBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsK IHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisjIENoZWNr IHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBoYXMgZmluaXNoZWQgYXBwbHlpbmcgdGhl IHN0cmVhbWluZworIyB0cmFuc2FjdGlvbi4KK3N1YiBjaGVja19wYXJhbGxlbF9sb2cKK3sKKwlt eSAoJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAkdHlwZSkgPSBAXzsK KworCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9s b2coCisJCQlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8gZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUg U1RSRUFNICR0eXBlIGNvbW1hbmQvLAorCQkJJG9mZnNldCk7CisJfQorfQorCisjIENvbW1vbiB0 ZXN0IHN0ZXBzIGZvciBib3RoIHRoZSBzdHJlYW1pbmc9b24gYW5kIHN0cmVhbWluZz1wYXJhbGxl bCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRu b2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwlteSAkb2Zm c2V0ID0gMDsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRv ZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBzdHJlYW1lZCB0cmFu c2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xMQkFDS3MKKwkkbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3Rh YiBWQUxVRVMgKDMsIG1kNSgzOjp0ZXh0KSk7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFZBTFVFUyAoNCwgbWQ1KDQ6OnRleHQpKTsKKwlTQVZFUE9JTlQgczI7CisJSU5T RVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg1LCBtZDUoNTo6dGV4dCkpOworCVNBVkVQT0lOVCBz MzsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDYsIG1kNSg2Ojp0ZXh0KSk7CisJUk9M TEJBQ0sgVE8gczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg3LCBtZDUoNzo6dGV4 dCkpOworCVJPTExCQUNLIFRPIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOCwg bWQ1KDg6OnRleHQpKTsKKwlTQVZFUE9JTlQgczQ7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFM VUVTICg5LCBtZDUoOTo6dGV4dCkpOworCVNBVkVQT0lOVCBzNTsKKwlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBWQUxVRVMgKDEwLCBtZDUoMTA6OnRleHQpKTsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxs ZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJ0NPTU1JVCcp OworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOworCWlz KCRyZXN1bHQsIHFxKDZ8MCksCisJCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJl ZmxlY3RlZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVm YXVsdHMnCisJKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgor CSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBzdHJlYW1lZCB0 cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmliZXIgcmVjZWl2aW5nIG91dCBvZiBvcmRlcgorCSMgc3Vi dHJhbnNhY3Rpb24gUk9MTEJBQ0tzCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdw b3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgxMSwg bWQ1KDExOjp0ZXh0KSk7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZB TFVFUyAoMTIsIG1kNSgxMjo6dGV4dCkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBWQUxVRVMgKDEzLCBtZDUoMTM6OnRleHQpKTsKKwlTQVZFUE9JTlQgczM7CisJSU5T RVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgxNCwgbWQ1KDE0Ojp0ZXh0KSk7CisJUkVMRUFTRSBz MjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDE1LCBtZDUoMTU6OnRleHQpKTsKKwlS T0xMQkFDSyBUTyBzMTsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNj cmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJ0NPTU1JVCcpOworCisJJHJlc3VsdCA9CisJ ICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDd8MCksCisJ CSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVy Jyk7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0 ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgc3RyZWFtZWQgdHJhbnNhY3Rp b24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyByb2xsYmFjaworCSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFZBTFVFUyAoMTYsIG1kNSgxNjo6dGV4dCkpOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQg SU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDE3LCBtZDUoMTc6OnRleHQpKTsKKwlTQVZFUE9JTlQgczI7 CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgxOCwgbWQ1KDE4Ojp0ZXh0KSk7CisJUk9M TEJBQ0s7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRp c19wYXJhbGxlbCwgJ0FCT1JUJyk7CisKKwkkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9N IHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoN3wwKSwgJ2NoZWNrIHJvbGxiYWNrIHdhcyBy ZWZsZWN0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVz dF90YWIgV0hFUkUgKGEgPiAyKSIpOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJs aXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5v ZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM2 LDYgKzE1NCwxMCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJD UkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFw cG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj IFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVB VEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFw cGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFt aW5nID0gb24pIgogKTsKQEAgLTQ4LDgxICsxNzAsMzMgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVD VCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnww KSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBz dHJlYW1lZCB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xMQkFDS3MKLSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRP IHRlc3RfdGFiIFZBTFVFUyAoMywgbWQ1KDM6OnRleHQpKTsKLVNBVkVQT0lOVCBzMTsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoNCwgbWQ1KDQ6OnRleHQpKTsKLVNBVkVQT0lOVCBzMjsK LUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoNSwgbWQ1KDU6OnRleHQpKTsKLVNBVkVQT0lO VCBzMzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoNiwgbWQ1KDY6OnRleHQpKTsKLVJP TExCQUNLIFRPIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg3LCBtZDUoNzo6dGV4 dCkpOwotUk9MTEJBQ0sgVE8gczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDgsIG1k NSg4Ojp0ZXh0KSk7Ci1TQVZFUE9JTlQgczQ7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMg KDksIG1kNSg5Ojp0ZXh0KSk7Ci1TQVZFUE9JTlQgczU7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBW QUxVRVMgKDEwLCBtZDUoMTA6OnRleHQpKTsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQo YykgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoNnwwKSwKLQknY2hlY2sgcm9sbGJh Y2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlciBhbmQgZXh0cmEgY29s dW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlz aGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7CisKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFs bGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQg PSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZS T00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1l JyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCi0jIHN0cmVhbWVkIHRyYW5zYWN0aW9u IHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgb3V0IG9mIG9yZGVyIHN1YnRyYW5zYWN0aW9uCi0j IFJPTExCQUNLcwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsK LUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgxMSwgbWQ1KDExOjp0ZXh0KSk7 Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDEyLCBtZDUoMTI6 OnRleHQpKTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMTMs IG1kNSgxMzo6dGV4dCkpOwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFM VUVTICgxNCwgbWQ1KDE0Ojp0ZXh0KSk7Ci1SRUxFQVNFIHMyOwotSU5TRVJUIElOVE8gdGVzdF90 YWIgVkFMVUVTICgxNSwgbWQ1KDE1Ojp0ZXh0KSk7Ci1ST0xMQkFDSyBUTyBzMTsKLUNPTU1JVDsK LX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0k cmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEo N3wwKSwKLQknY2hlY2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vi c2NyaWJlcicpOwotCi0jIHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNl aXZpbmcgcm9sbGJhY2sKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jlcycs IHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMTYsIG1kNSgxNjo6dGV4 dCkpOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgxNywgbWQ1 KDE3Ojp0ZXh0KSk7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMg KDE4LCBtZDUoMTg6OnRleHQpKTsKLVJPTExCQUNLOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBG Uk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSg3fDApLCAnY2hlY2sgcm9sbGJhY2sgd2Fz IHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9 IHBhcmFsbGVsKSIpOworCiskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3Rn cmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBX SEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5n JzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkg dG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOworCisjIFdlIG5lZWQgdG8g Y2hlY2sgREVCVUcgbG9ncyB0byBlbnN1cmUgdGhhdCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy IGhhcworIyBhcHBsaWVkIHRoZSB0cmFuc2FjdGlvbi4gU28sIGJ1bXAgdXAgdGhlIGxvZyB2ZXJi b3NpdHkuCiskbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywg ImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKyRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsK KworIyBSdW4gYSBxdWVyeSB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcmVsb2FkIGhhcyB0YWtlbiBl ZmZlY3QuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXtTRUxFQ1Qg MX0pOworCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIs ICRhcHBuYW1lLCAxKTsKIAogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hl ci0+c3RvcDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1f c3VieGFjdF9kZGxfYWJvcnQucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFt X3N1YnhhY3RfZGRsX2Fib3J0LnBsCmluZGV4IDk2MmUzNDcuLmIzMDIyM2QgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwK KysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9y dC5wbApAQCAtMyw2ICszLDkgQEAKIAogIyBUZXN0IHN0cmVhbWluZyBvZiB0cmFuc2FjdGlvbiB3 aXRoIHN1YnRyYW5zYWN0aW9ucywgRERMcywgRE1McywgYW5kCiAjIHJvbGxiYWNrcworIworIyBU aGlzIGZpbGUgaXMgbWFpbmx5IHRvIHRlc3QgdGhlIERETC9ETUwgaW50ZXJhY3Rpb24gb2YgdGhl IHB1Ymxpc2hlciBzaWRlLAorIyBzbyB3ZSBkaWRuJ3QgYWRkIGEgcGFyYWxsZWwgYXBwbHkgdmVy c2lvbiBmb3IgdGhlIHRlc3RzIGluIHRoaXMgZmlsZS4KIHVzZSBzdHJpY3Q7CiB1c2Ugd2Fybmlu Z3M7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsIGIvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwKaW5kZXggOGUzZTc0Yi4uZTYyNGViZSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUu cGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwK QEAgLTUsNiArNSw4IEBACiAjCiAjIEluY2x1ZGVzIHRlc3RzIGZvciBvcHRpb25zIDJQQyAobm90 LXN0cmVhbWluZykgYW5kIGFsc28gZm9yIDJQQyAoc3RyZWFtaW5nKS4KICMKKyMgVHdvLXBoYXNl IGFuZCBwYXJhbGxlbCBhcHBseSB3aWxsIGJlIHRlc3RlZCBpbiAwMjNfdHdvcGhhc2Vfc3RyZWFt LCBzbyB3ZQorIyBkaWRuJ3QgYWRkIGEgcGFyYWxsZWwgYXBwbHkgdmVyc2lvbiBmb3IgdGhlIHRl c3RzIGluIHRoaXMgZmlsZS4KIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3M7CiB1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6Q2x1c3RlcjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAyM190d29waGFzZV9zdHJlYW0ucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdv cGhhc2Vfc3RyZWFtLnBsCmluZGV4IDdjZDgwMTcuLjc1Y2E4MzcgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKKysrIGIvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbApAQCAtOCw2ICs4LDI4OSBAQCB1 c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGls czsKIHVzZSBUZXN0OjpNb3JlOwogCisjIENoZWNrIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5IHdv cmtlciBoYXMgZmluaXNoZWQgYXBwbHlpbmcgdGhlIHN0cmVhbWluZworIyB0cmFuc2FjdGlvbi4K K3N1YiBjaGVja19wYXJhbGxlbF9sb2cKK3sKKwlteSAoJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNl dCwgJGlzX3BhcmFsbGVsLCAkdHlwZSkgPSBAXzsKKworCWlmICgkaXNfcGFyYWxsZWwpCisJewor CQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJCQlxci9ERUJVRzogKCBbQS1aMC05 XSs6KT8gZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFNICR0eXBlIGNvbW1hbmQvLAorCQkJ JG9mZnNldCk7CisJfQorfQorCisjIENvbW1vbiB0ZXN0IHN0ZXBzIGZvciBib3RoIHRoZSBzdHJl YW1pbmc9b24gYW5kIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWlu ZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAk aXNfcGFyYWxsZWwpID0gQF87CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCSMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQu CisJIyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9uLgorCSMgMi4gVGhl biBkbyBjb21taXQgcHJlcGFyZWQuCisJIworCSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0 ZWQgb24gc3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQuCisJIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cg b24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIGNoZWNr IHRoYXQgMlBDIGdldHMgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyCisJIyBJbnNlcnQsIHVwZGF0 ZSBhbmQgZGVsZXRlIHNvbWUgcm93cy4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJ J3Bvc3RncmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNSkgcyhpKTsKKwkJVVBEQVRF IHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVMRVRFIEZS T00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0 ZXN0X3ByZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRv ZmZzZXQsICRpc19wYXJhbGxlbCwgJ1BSRVBBUkUnKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2Fj dGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJbXkgJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCop IEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2Fj dGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIDJQQyB0cmFuc2FjdGlvbiBn ZXRzIGNvbW1pdHRlZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKworCSRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNh Y3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMp LCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoNHw0fDQp LAorCQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwg YW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCSRyZXN1bHQg PSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJh bnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgLyBST0xMQkFDSyBQUkVQQVJF RC4KKwkjIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxp Y2F0ZWQgb24gc3Vic2NyaWJlci4KKwkjIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgor CSMgMy4gRG8gcm9sbGJhY2sgcHJlcGFyZWQuCisJIworCSMgRXhwZWN0IGRhdGEgcm9sbHMgYmFj ayBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93cy4KKwkjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisKKwkjIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJv d3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisKKwkjIENo ZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVf c3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRl IHNvbWUgcm93cy4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywg cXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNSkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNF VCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVk X3RhYic7fSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19w YXJhbGxlbCwgJ1BSRVBBUkUnKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBw cmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFy ZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJl ZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGFib3J0ZWQKKwkk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiUk9MTEJBQ0sgUFJFUEFS RUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRl ZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkg RlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwKKwkJJ1Jvd3MgaW5zZXJ0 ZWQgYnkgMlBDIGFyZSByb2xsZWQgYmFjaywgbGVhdmluZyBvbmx5IHRoZSBvcmlnaW5hbCAyIHJv d3MnCisJKTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlz KCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyJyk7 CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBDaGVjayB0aGF0IDJQQyBD T01NSVQgUFJFUEFSRUQgaXMgZGVjb2RlZCBwcm9wZXJseSBvbiBjcmFzaCByZXN0YXJ0LgorCSMg MS4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBzb21lIHJvd3MuCisJIyAyLiBUaGVuIHNlcnZl ciBjcmFzaGVzIGJlZm9yZSB0aGUgMlBDIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KKwkjIDMu IEFmdGVyIHNlcnZlcnMgYXJlIHJlc3RhcnRlZCB0aGUgcGVuZGluZyB0cmFuc2FjdGlvbiBpcyBj b21taXR0ZWQuCisJIworCSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2Ny aWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQuCisJIyBOb3RlOiBib3RoIHB1Ymxpc2hlciBhbmQg c3Vic2NyaWJlciBkbyBjcmFzaC9yZXN0YXJ0LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZz ZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUpIHMo aSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7 CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBU UkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfc3Vic2NyaWJlci0+ c3RvcCgnaW1tZWRpYXRlJyk7CisJJG5vZGVfcHVibGlzaGVyLT5zdG9wKCdpbW1lZGlhdGUnKTsK KworCSRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CisJJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CisK KwkjIFdlIGRvbid0IHRyeSB0byBjaGVjayB0aGUgbG9nIGZvciBwYXJhbGxlbCBvcHRpb24gaGVy ZSBhcyB0aGUgc3Vic2NyaWJlcgorCSMgbWF5IGhhdmUgc3RvcHBlZCBhZnRlciBmaW5pc2hpbmcg dGhlIHByZXBhcmUgYW5kIGJlZm9yZSBsb2dnaW5nIHRoZQorCSMgYXBwcm9wcmlhdGUgbWVzc2Fn ZS4KKworCSMgY29tbWl0IHBvc3QgdGhlIHJlc3RhcnQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7 Iik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMg Y2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJsZQorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50 KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSg0fDR8NCksCisJCSdS b3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0 cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisJIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJl Zm9yZSBST0xMQkFDSyBQUkVQQVJFRC4KKwkjIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAy IHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KKwkjIDIuIERhdGEgaXMg c3RyZWFtZWQgdXNpbmcgMlBDLgorCSMgMy4gQSBzaW5nbGUgcm93IElOU0VSVCBpcyBkb25lIHdo aWNoIGlzIGFmdGVyIHRoZSBQUkVQQVJFLgorCSMgNC4gVGhlbiBkbyBhIFJPTExCQUNLIFBSRVBB UkVELgorCSMKKwkjIEV4cGVjdCB0aGUgMlBDIGRhdGEgcm9sbHMgYmFjayBsZWF2aW5nIG9ubHkg MyByb3dzIG9uIHRoZSBzdWJzY3JpYmVyCisJIyAodGhlIG9yaWdpbmFsIDIgKyBpbnNlcnRlZCAx KS4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIEZpcnN0LCBkZWxldGUg dGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKKwkkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgYSA+IDI7Iik7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBv bi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgVGhlbiBp bnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIHNvbWUgcm93cy4KKwkkbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNSkgcyhp KTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsK KwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQQVJFIFRS QU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1 YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJ1BSRVBBUkUnKTsKKworCSMgY2hlY2sg dGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJJHJl c3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNU IGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSks ICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIEluc2VydCBh IGRpZmZlcmVudCByZWNvcmQgKG5vdyB3ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0 aW9uKQorCSMgTm90ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mg c28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXRlIHByaW1hcnkga2V5CisJ JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIklOU0VSVCBJTlRPIHRl c3RfdGFiIFZBTFVFUyAoOTk5OTksICdmb29iYXInKSIpOworCisJIyAyUEMgdHJhbnNhY3Rpb24g Z2V0cyBhYm9ydGVkCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IlJPTExCQUNLIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5z YWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlciwKKwkjIGJ1dCB0aGUgZXh0cmEgSU5TRVJU IG91dHNpZGUgb2YgdGhlIDJQQyBzdGlsbCB3YXMgcmVwbGljYXRlZAorCSRyZXN1bHQgPSAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBx cSgzfDN8MyksCisJCSdjaGVjayB0aGUgb3V0c2lkZSBpbnNlcnQgd2FzIGNvcGllZCB0byBzdWJz Y3JpYmVyJyk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlp cygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicp OworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgRG8gSU5TRVJUIGFmdGVy IHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgQ09NTUlUIFBSRVBBUkVELgorCSMgMS4gVGFibGUgaXMg ZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVy LgorCSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCisJIyAzLiBBIHNpbmdsZSByb3cg SU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCisJIyA0LiBUaGVuIGRv IGEgQ09NTUlUIFBSRVBBUkVELgorCSMKKwkjIEV4cGVjdCAyUEMgZGF0YSArIHRoZSBleHRyYSBy b3cgYXJlIG9uIHRoZSBzdWJzY3JpYmVyCisJIyAodGhlIDMzMzQgKyBpbnNlcnRlZCAxID0gMzMz NSkuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRl IHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFi IFdIRVJFIGEgPiAyOyIpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cg b24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIFRoZW4g aW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBzb21lIHJvd3MuCisJJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUpIHMo aSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7 CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBU UkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9z dWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdQUkVQQVJFJyk7CisKKwkjIGNoZWNr IHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCSRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVD VCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEp LCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJIyBJbnNlcnQg YSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2Fj dGlvbikKKwkjIE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwgaG9sZHMgcm93IGxvY2tz IHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBzZXBhcmFyZSBwcmltYXJ5IGtleQor CSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKKworCSMgMlBDIHRyYW5zYWN0aW9u IGdldHMgY29tbWl0dGVkCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFu c2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQo YyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSg1fDV8 NSksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyAoYXMgd2VsbCBhcyBvdXRzaWRlIGluc2VydCkg aGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBs b2NhbCBkZWZhdWx0cycKKwkpOworCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFj dHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24g c3Vic2NyaWJlcicpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUg YSA+IDI7Iik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK K30KKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBTZXR1cAogIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtNDgsNiArMzMxLDEwIEBAICRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZP UiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAn b24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsICIKIAlDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIK QEAgLTY0LDIzNiArMzUxLDM4IEBAIG15ICR0d29waGFzZV9xdWVyeSA9CiAkbm9kZV9zdWJzY3Jp YmVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsICR0d29waGFzZV9xdWVyeSkKICAgb3Ig ZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Igc3Vic2NyaWJlciB0byBlbmFibGUgdHdv cGhhc2UiOwogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIENoZWNrIGluaXRp YWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKIG15ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0 ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdh cyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCi0jIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCi0jIDEuIERhdGEgaXMg c3RyZWFtZWQgYXMgYSAyUEMgdHJhbnNhY3Rpb24uCi0jIDIuIFRoZW4gZG8gY29tbWl0IHByZXBh cmVkLgotIwotIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNp ZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQot IyBjaGVjayB0aGF0IDJQQyBnZXRzIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcgotIyBJbnNlcnQs IHVwZGF0ZSBhbmQgZGVsZXRlIHNvbWUgcm93cy4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1KSBzKGkpOwotCVVQREFU RSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZS T00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rl c3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0 YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7 Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmli ZXInKTsKLQotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKLSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJl ZF90YWInOyIpOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBw bmFtZSwgMCk7CiAKLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vi c2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3Rf dGFiIik7Ci1pcygkcmVzdWx0LCBxcSg0fDR8NCksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhh dmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9j YWwgZGVmYXVsdHMnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBU ZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hF UkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7 IgogKTsKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0 LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFSRSAvIFJPTExC QUNLIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNo IGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNp bmcgMlBDLgotIyAzLiBEbyByb2xsYmFjayBwcmVwYXJlZC4KLSMKLSMgRXhwZWN0IGRhdGEgcm9s bHMgYmFjayBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93cy4KLSMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3Ig MiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMgVGhl biBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIHNvbWUgcm93cy4KLSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1KSBzKGkp OwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0J REVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNB Q1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHBy ZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRf eGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9u IHN1YnNjcmliZXInKTsKLQotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCi0kbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJST0xMQkFDSyBQUkVQQVJFRCAndGVz dF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJz Y3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs Ci0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90 YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgYXJl IHJvbGxlZCBiYWNrLCBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93cycpOwotCi0kcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBj b3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0 cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwotIyBDaGVjayB0aGF0IDJQQyBDT01NSVQgUFJFUEFSRUQgaXMgZGVj b2RlZCBwcm9wZXJseSBvbiBjcmFzaCByZXN0YXJ0LgotIyAxLiBpbnNlcnQsIHVwZGF0ZSBhbmQg ZGVsZXRlIHNvbWUgcm93cy4KLSMgMi4gVGhlbiBzZXJ2ZXIgY3Jhc2hlcyBiZWZvcmUgdGhlIDJQ QyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCi0jIDMuIEFmdGVyIHNlcnZlcnMgYXJlIHJlc3Rh cnRlZCB0aGUgcGVuZGluZyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCi0jCi0jIEV4cGVjdCBh bGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0 LgotIyBOb3RlOiBib3RoIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlciBkbyBjcmFzaC9yZXN0YXJ0 LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0kbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNSkgcyhpKTsK LQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURF TEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNU SU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX3N1YnNjcmliZXItPnN0b3AoJ2lt bWVkaWF0ZScpOwotJG5vZGVfcHVibGlzaGVyLT5zdG9wKCdpbW1lZGlhdGUnKTsKLQotJG5vZGVf cHVibGlzaGVyLT5zdGFydDsKLSRub2RlX3N1YnNjcmliZXItPnN0YXJ0OwogCi0jIGNvbW1pdCBw b3N0IHRoZSByZXN0YXJ0Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAot CSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLSRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlz aWJsZQotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAot CSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFi Iik7Ci1pcygkcmVzdWx0LCBxcSg0fDR8NCksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUg Y29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwg ZGVmYXVsdHMnCi0pOwotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIERvIElO U0VSVCBhZnRlciB0aGUgUFJFUEFSRSBidXQgYmVmb3JlIFJPTExCQUNLIFBSRVBBUkVELgotIyAx LiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9u IHN1YnNjcmliZXIuCi0jIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBBIHNp bmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCi0jIDQu IFRoZW4gZG8gYSBST0xMQkFDSyBQUkVQQVJFRC4KLSMKLSMgRXhwZWN0IHRoZSAyUEMgZGF0YSBy b2xscyBiYWNrIGxlYXZpbmcgb25seSAzIHJvd3Mgb24gdGhlIHN1YnNjcmliZXIKLSMgKHRoZSBv cmlnaW5hbCAyICsgaW5zZXJ0ZWQgMSkuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj Ci0KLSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSBy ZXBsaWNhdGVkKQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVU RSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwotCi0jIFRoZW4gaW5zZXJ0LCB1cGRhdGUg YW5kIGRlbGV0ZSBzb21lIHJvd3MuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9z dGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNSkgcyhpKTsKLQlVUERBVEUgdGVzdF90 YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBh cmVkX3RhYic7fSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBz dWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJl c3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7Ci0K LSMgSW5zZXJ0IGEgZGlmZmVyZW50IHJlY29yZCAobm93IHdlIGFyZSBvdXRzaWRlIG9mIHRoZSAy UEMgdHJhbnNhY3Rpb24pCi0jIE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwgaG9sZHMg cm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBzZXBhcmF0ZSBwcmlt YXJ5IGtleQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiSU5TRVJU IElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5OSwgJ2Zvb2JhcicpIik7Ci0KLSMgMlBDIHRyYW5z YWN0aW9uIGdldHMgYWJvcnRlZAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKLQkiUk9MTEJBQ0sgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLQotJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRy YW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlciwKLSMgYnV0IHRoZSBleHRyYSBJTlNF UlQgb3V0c2lkZSBvZiB0aGUgMlBDIHN0aWxsIHdhcyByZXBsaWNhdGVkCi0kcmVzdWx0ID0gJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFx KDN8M3wzKSwgJ2NoZWNrIHRoZSBvdXRzaWRlIGluc2VydCB3YXMgY29waWVkIHRvIHN1YnNjcmli ZXInKTsKLQotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1 bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQ QVJFIGJ1dCBiZWZvcmUgQ09NTUlUIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJh Y2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIuIERh dGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRv bmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCi0jIDQuIFRoZW4gZG8gYSBDT01NSVQgUFJF UEFSRUQuCi0jCi0jIEV4cGVjdCAyUEMgZGF0YSArIHRoZSBleHRyYSByb3cgYXJlIG9uIHRoZSBz dWJzY3JpYmVyCi0jICh0aGUgMzMzNCArIGluc2VydGVkIDEgPSAzMzM1KS4KLSMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBm b3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMg VGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIHNvbWUgcm93cy4KLSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1KSBz KGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7 Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJB TlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGlu IHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFy ZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVk IG9uIHN1YnNjcmliZXInKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxsZWwp Iik7CiAKLSMgSW5zZXJ0IGEgZGlmZmVyZW50IHJlY29yZCAobm93IHdlIGFyZSBvdXRzaWRlIG9m IHRoZSAyUEMgdHJhbnNhY3Rpb24pCi0jIE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwg aG9sZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBzZXBhcmFy ZSBwcmltYXJ5IGtleQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQki SU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5OSwgJ2Zvb2JhcicpIik7Ciskbm9kZV9w dWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAk b2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0g JyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJU aW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2lu ZyBTVUJTQ1JJUFRJT04iOwogCi0jIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGNvbW1pdHRlZAotJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQ09NTUlUIFBSRVBBUkVEICd0 ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisjIFdlIG5lZWQgdG8gY2hlY2sgREVCVUcgbG9ncyB0byBl bnN1cmUgdGhhdCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGhhcworIyBhcHBsaWVkIHRoZSB0 cmFuc2FjdGlvbi4gU28sIGJ1bXAgdXAgdGhlIGxvZyB2ZXJib3NpdHkuCiskbm9kZV9zdWJzY3Jp YmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBk ZWJ1ZzEiKTsKKyRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKIAotJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKyMgUnVuIGEgcXVlcnkgdG8gbWFrZSBzdXJlIHRo YXQgdGhlIHJlbG9hZCBoYXMgdGFrZW4gZWZmZWN0LgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsIHF7U0VMRUNUIDF9KTsKIAotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9u IGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50 KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDV8NXw1KSwKLQknUm93 cyBpbnNlcnRlZCBieSAyUEMgKGFzIHdlbGwgYXMgb3V0c2lkZSBpbnNlcnQpIGhhdmUgY29tbWl0 dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVs dHMnCi0pOwotCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJl c3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOwor dGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFt ZSwgMSk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgY2hlY2sgYWxsIHRo ZSBjbGVhbnVwCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBi L3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDUwZDg2Y2IuLjIzYmFmZWMg MTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xNDczLDYgKzE0NzMsNyBAQCBMb2dpY2Fs UmVwUmVsSWQKIExvZ2ljYWxSZXBSZWxNYXBFbnRyeQogTG9naWNhbFJlcFJlbGF0aW9uCiBMb2dp Y2FsUmVwUm9sbGJhY2tQcmVwYXJlZFR4bkRhdGEKK0xvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEK IExvZ2ljYWxSZXBUdXBsZURhdGEKIExvZ2ljYWxSZXBUeXAKIExvZ2ljYWxSZXBXb3JrZXIKQEAg LTE4NzYsNiArMTg3Nyw5IEBAIFBhZ2VYTG9nUmVjUHRyCiBQYWdldGFibGVFbnRyeQogUGFpcnMK IFBhcmFsbGVsQXBwZW5kU3RhdGUKK1BhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeQorUGFyYWxsZWxB cHBseVdvcmtlckluZm8KK1BhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQKIFBhcmFsbGVsQml0bWFw SGVhcFN0YXRlCiBQYXJhbGxlbEJsb2NrVGFibGVTY2FuRGVzYwogUGFyYWxsZWxCbG9ja1RhYmxl U2NhbldvcmtlcgpAQCAtMTg5NSw2ICsxODk5LDcgQEAgUGFyYWxsZWxTbG90UmVzdWx0SGFuZGxl cgogUGFyYWxsZWxTdGF0ZQogUGFyYWxsZWxUYWJsZVNjYW5EZXNjCiBQYXJhbGxlbFRhYmxlU2Nh bkRlc2NEYXRhCitQYXJhbGxlbFRyYW5zU3RhdGUKIFBhcmFsbGVsVmFjdXVtU3RhdGUKIFBhcmFs bGVsV29ya2VyQ29udGV4dAogUGFyYWxsZWxXb3JrZXJJbmZvCkBAIC0xOTI0LDYgKzE5MjksNyBA QCBQYXJzZXJTdGF0ZQogUGFydENsYXVzZUluZm8KIFBhcnRDbGF1c2VNYXRjaFN0YXR1cwogUGFy dENsYXVzZVRhcmdldAorUGFydGlhbEZpbGVTZXRTdGF0ZQogUGFydGl0aW9uQm91bmRJbmZvCiBQ YXJ0aXRpb25Cb3VuZEluZm9EYXRhCiBQYXJ0aXRpb25Cb3VuZFNwZWMKQEAgLTI3NzQsNiArMjc4 MCw3IEBAIFRvY0VudHJ5CiBUb2tlbkF1eERhdGEKIFRva2VuaXplZEF1dGhMaW5lCiBUcmFja0l0 ZW0KK1RyYW5zQXBwbHlBY3Rpb24KIFRyYW5zSW52YWxpZGF0aW9uSW5mbwogVHJhbnNTdGF0ZQog VHJhbnNhY3Rpb25JZAotLSAKMi43LjIud2luZG93cy4xCgo= --_006_OS3PR01MB5718AE486227CE3ACB844C5E94F89OS3PR01MB5718jpnp_ Content-Type: application/octet-stream; name="v76-0002-Add-GUC-stream_serialize_threshold-and-test-seri.patch" Content-Description: v76-0002-Add-GUC-stream_serialize_threshold-and-test-seri.patch Content-Disposition: attachment; filename="v76-0002-Add-GUC-stream_serialize_threshold-and-test-seri.patch"; size=12800; creation-date="Sat, 07 Jan 2023 05:42:45 GMT"; modification-date="Sat, 07 Jan 2023 05:42:56 GMT" Content-Transfer-Encoding: base64 RnJvbSBlODBiNmRmOTdiNGMxYjFjYjQ4ZDJjNWJjMjA1MWUzODM0MWFmZTIyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IEthcGlsYSA8YWthcGlsYUBwb3N0Z3Jlc3FsLm9yZz4K RGF0ZTogTW9uLCAyIEphbiAyMDIzIDE1OjM3OjI1ICswNTMwClN1YmplY3Q6IFtQQVRDSCB2NzYg 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 aWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IGFiOTI3ZjguLmI4OTQ0MjcgMTAwNjQ0Ci0t 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_OS3PR01MB5718AE486227CE3ACB844C5E94F89OS3PR01MB5718jpnp_ Content-Type: application/octet-stream; name="v76-0003-Stop-extra-worker-if-GUC-was-changed.patch" Content-Description: v76-0003-Stop-extra-worker-if-GUC-was-changed.patch Content-Disposition: attachment; filename="v76-0003-Stop-extra-worker-if-GUC-was-changed.patch"; size=4294; creation-date="Sat, 07 Jan 2023 05:42:45 GMT"; modification-date="Sat, 07 Jan 2023 05:42:57 GMT" Content-Transfer-Encoding: base64 RnJvbSA3MzlkM2ExMjc3MmI1OGQ1ZjA5YWZiMjBlNTljZTAyZGFjZjdiYWY1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBzaGVybG9ja2NwcCA8c2hlcmxvY2tjcHBAZm94bWFpbC5jb20+ CkRhdGU6IFNhdCwgMTcgRGVjIDIwMjIgMjA6NDM6MjEgKzA4MDAKU3ViamVjdDogW1BBVENIIHY3 NiAzLzVdIFN0b3AgZXh0cmEgd29ya2VyIGlmIEdVQyB3YXMgY2hhbmdlZAoKSWYgdGhlIG1heF9w 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 bG9naWNhbC93b3JrZXIuYwppbmRleCBiODk0NDI3Li4xZGI2ZmJkIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTM2MzMsNiArMzYzMywxMyBAQCBMb2dpY2Fs UmVwQXBwbHlMb29wKFhMb2dSZWNQdHIgbGFzdF9yZWNlaXZlZCkKIAkJewogCQkJQ29uZmlnUmVs b2FkUGVuZGluZyA9IGZhbHNlOwogCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CisK KwkJCS8qCisJCQkgKiBUcnkgdG8gc3RvcCBmcmVlIHdvcmtlcnMgaW4gdGhlIHBvb2wgaW4gY2Fz ZSB0aGUKKwkJCSAqIG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24g aXMgY2hhbmdlZCB0byBhCisJCQkgKiBsb3dlciB2YWx1ZS4KKwkJCSAqLworCQkJcGFfc3RvcF9p ZGxlX3dvcmtlcnMoKTsKIAkJfQogCiAJCWlmIChyYyAmIFdMX1RJTUVPVVQpCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IGE2ODI3OTEuLmYzYjJmMmQgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCisrKyBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBAIC0yNzgsNiArMjc4 LDcgQEAgZXh0ZXJuIHZvaWQgc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfb3JpZ2luKGNoYXIgKm9y aWdpbm5hbWUpOwogLyogUGFyYWxsZWwgYXBwbHkgd29ya2VyIHNldHVwIGFuZCBpbnRlcmFjdGlv bnMgKi8KIGV4dGVybiB2b2lkIHBhX2FsbG9jYXRlX3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCk7 CiBleHRlcm4gUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKnBhX2ZpbmRfd29ya2VyKFRyYW5zYWN0 aW9uSWQgeGlkKTsKK2V4dGVybiB2b2lkIHBhX3N0b3BfaWRsZV93b3JrZXJzKHZvaWQpOwogZXh0 ZXJuIHZvaWQgcGFfZGV0YWNoX2FsbF9lcnJvcl9tcSh2b2lkKTsKIAogZXh0ZXJuIGJvb2wgcGFf c2VuZF9kYXRhKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU2l6ZSBuYnl0ZXMsCi0t IAoyLjcuMi53aW5kb3dzLjEKCg== --_006_OS3PR01MB5718AE486227CE3ACB844C5E94F89OS3PR01MB5718jpnp_ Content-Type: application/octet-stream; name="v76-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v76-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v76-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=21629; creation-date="Sat, 07 Jan 2023 05:42:45 GMT"; modification-date="Sat, 07 Jan 2023 05:42:57 GMT" Content-Transfer-Encoding: base64 RnJvbSBjOTFiYjc4MzIzNWVhYzhkMDY0ODQxODU1M2Q3ZTFkMzUwNzcxN2FjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBTdW4sIDExIERlYyAyMDIyIDE5OjE2OjM0ICswODAwClN1YmplY3Q6IFtQQVRDSCB2 NzYgNC81XSBSZXRyeSB0byBhcHBseSBzdHJlYW1pbmcgeGFjdCBvbmx5IGluIGFwcGx5IHdvcmtl 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 ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDFkYjZmYmQuLjZhNDc0ODUgMTAw 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 aXplZCBpbiBwYXJhbGxlbC4gKi8KQEAgLTE5NjQsNiArMTk4MSwxMCBAQCBhcHBseV9oYW5kbGVf c3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJCWJyZWFrOwogCX0KIAorCS8qIFJlc2V0IHRo ZSByZXRyeSBmbGFnLiAqLworCWlmICh0b3BsZXZlbF94YWN0KQorCQlzZXRfc3Vic2NyaXB0aW9u X3JldHJ5KGZhbHNlKTsKKwogCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwogfQog CkBAIC0yMjQ2LDYgKzIyNjcsOSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJ bmZvIHMpCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXpl ZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKGNvbW1pdF9kYXRhLmVu ZF9sc24pOwogCisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlv bl9yZXRyeShmYWxzZSk7CisKIAlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5V TEwpOwogCiAJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CkBAIC00MzQyLDIwICs0 MzY2LDI4IEBAIHN0YXJ0X3RhYmxlX3N5bmMoWExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zLCBj aGFyICoqbXlzbG90bmFtZSkKIAl9CiAJUEdfQ0FUQ0goKTsKIAl7CisJCS8qCisJCSAqIEVtaXQg dGhlIGVycm9yIG1lc3NhZ2UsIGFuZCByZWNvdmVyIGZyb20gdGhlIGVycm9yIHN0YXRlIHRvIGFu IGlkbGUKKwkJICogc3RhdGUKKwkJICovCisJCUhPTERfSU5URVJSVVBUUygpOworCisJCUVtaXRF cnJvclJlcG9ydCgpOworCQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKKwkJRmx1c2hFcnJv clN0YXRlKCk7CisKKwkJUkVTVU1FX0lOVEVSUlVQVFMoKTsKKworCQkvKiBSZXBvcnQgdGhlIHdv cmtlciBmYWlsZWQgZHVyaW5nIHRhYmxlIHN5bmNocm9uaXphdGlvbiAqLworCQlwZ3N0YXRfcmVw b3J0X3N1YnNjcmlwdGlvbl9lcnJvcihNeVN1YnNjcmlwdGlvbi0+b2lkLCBmYWxzZSk7CisKIAkJ aWYgKE15U3Vic2NyaXB0aW9uLT5kaXNhYmxlb25lcnIpCi0JCQlEaXNhYmxlU3Vic2NyaXB0aW9u QW5kRXhpdCgpOwotCQllbHNlCi0JCXsKLQkJCS8qCi0JCQkgKiBSZXBvcnQgdGhlIHdvcmtlciBm YWlsZWQgZHVyaW5nIHRhYmxlIHN5bmNocm9uaXphdGlvbi4gQWJvcnQKLQkJCSAqIHRoZSBjdXJy ZW50IHRyYW5zYWN0aW9uIHNvIHRoYXQgdGhlIHN0YXRzIG1lc3NhZ2UgaXMgc2VudCBpbiBhbgot CQkJICogaWRsZSBzdGF0ZS4KLQkJCSAqLwotCQkJQWJvcnRPdXRPZkFueVRyYW5zYWN0aW9uKCk7 Ci0JCQlwZ3N0YXRfcmVwb3J0X3N1YnNjcmlwdGlvbl9lcnJvcihNeVN1YnNjcmlwdGlvbi0+b2lk LCBmYWxzZSk7CisJCQlEaXNhYmxlU3Vic2NyaXB0aW9uT25FcnJvcigpOwogCi0JCQlQR19SRV9U SFJPVygpOwotCQl9CisJCS8qIFNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwkJc2V0X3N1YnNjcmlw dGlvbl9yZXRyeSh0cnVlKTsKKworCQlwcm9jX2V4aXQoMCk7CiAJfQogCVBHX0VORF9UUlkoKTsK IApAQCAtNDM4MCwyMCArNDQxMiwyNyBAQCBzdGFydF9hcHBseShYTG9nUmVjUHRyIG9yaWdpbl9z dGFydHBvcykKIAl9CiAJUEdfQ0FUQ0goKTsKIAl7CisJCS8qCisJCSAqIEVtaXQgdGhlIGVycm9y IG1lc3NhZ2UsIGFuZCByZWNvdmVyIGZyb20gdGhlIGVycm9yIHN0YXRlIHRvIGFuIGlkbGUKKwkJ ICogc3RhdGUKKwkJICovCisJCUhPTERfSU5URVJSVVBUUygpOworCisJCUVtaXRFcnJvclJlcG9y dCgpOworCQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKKwkJRmx1c2hFcnJvclN0YXRlKCk7 CisKKwkJUkVTVU1FX0lOVEVSUlVQVFMoKTsKKworCQkvKiBSZXBvcnQgdGhlIHdvcmtlciBmYWls ZWQgd2hpbGUgYXBwbHlpbmcgY2hhbmdlcyAqLworCQlwZ3N0YXRfcmVwb3J0X3N1YnNjcmlwdGlv bl9lcnJvcihNeVN1YnNjcmlwdGlvbi0+b2lkLAorCQkJCQkJCQkJCSAhYW1fdGFibGVzeW5jX3dv cmtlcigpKTsKKwogCQlpZiAoTXlTdWJzY3JpcHRpb24tPmRpc2FibGVvbmVycikKLQkJCURpc2Fi bGVTdWJzY3JpcHRpb25BbmRFeGl0KCk7Ci0JCWVsc2UKLQkJewotCQkJLyoKLQkJCSAqIFJlcG9y dCB0aGUgd29ya2VyIGZhaWxlZCB3aGlsZSBhcHBseWluZyBjaGFuZ2VzLiBBYm9ydCB0aGUKLQkJ CSAqIGN1cnJlbnQgdHJhbnNhY3Rpb24gc28gdGhhdCB0aGUgc3RhdHMgbWVzc2FnZSBpcyBzZW50 IGluIGFuCi0JCQkgKiBpZGxlIHN0YXRlLgotCQkJICovCi0JCQlBYm9ydE91dE9mQW55VHJhbnNh Y3Rpb24oKTsKLQkJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vic2NyaXB0 aW9uLT5vaWQsICFhbV90YWJsZXN5bmNfd29ya2VyKCkpOworCQkJRGlzYWJsZVN1YnNjcmlwdGlv bk9uRXJyb3IoKTsKIAotCQkJUEdfUkVfVEhST1coKTsKLQkJfQorCQkvKiBTZXQgdGhlIHJldHJ5 IGZsYWcuICovCisJCXNldF9zdWJzY3JpcHRpb25fcmV0cnkodHJ1ZSk7CiAJfQogCVBHX0VORF9U UlkoKTsKIH0KQEAgLTQ2NjksMzkgKzQ3MDgsMjAgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1h aW5fYXJnKQogfQogCiAvKgotICogQWZ0ZXIgZXJyb3IgcmVjb3ZlcnksIGRpc2FibGUgdGhlIHN1 YnNjcmlwdGlvbiBpbiBhIG5ldyB0cmFuc2FjdGlvbgotICogYW5kIGV4aXQgY2xlYW5seS4KKyAq IERpc2FibGUgdGhlIHN1YnNjcmlwdGlvbiBpbiBhIG5ldyB0cmFuc2FjdGlvbi4KICAqLwogc3Rh dGljIHZvaWQKLURpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KHZvaWQpCitEaXNhYmxlU3Vic2Ny aXB0aW9uT25FcnJvcih2b2lkKQogewotCS8qCi0JICogRW1pdCB0aGUgZXJyb3IgbWVzc2FnZSwg YW5kIHJlY292ZXIgZnJvbSB0aGUgZXJyb3Igc3RhdGUgdG8gYW4gaWRsZQotCSAqIHN0YXRlCi0J ICovCi0JSE9MRF9JTlRFUlJVUFRTKCk7Ci0KLQlFbWl0RXJyb3JSZXBvcnQoKTsKLQlBYm9ydE91 dE9mQW55VHJhbnNhY3Rpb24oKTsKLQlGbHVzaEVycm9yU3RhdGUoKTsKLQotCVJFU1VNRV9JTlRF UlJVUFRTKCk7Ci0KLQkvKiBSZXBvcnQgdGhlIHdvcmtlciBmYWlsZWQgZHVyaW5nIGVpdGhlciB0 YWJsZSBzeW5jaHJvbml6YXRpb24gb3IgYXBwbHkgKi8KLQlwZ3N0YXRfcmVwb3J0X3N1YnNjcmlw dGlvbl9lcnJvcihNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLAotCQkJCQkJCQkJICFhbV90YWJs ZXN5bmNfd29ya2VyKCkpOwotCiAJLyogRGlzYWJsZSB0aGUgc3Vic2NyaXB0aW9uICovCiAJU3Rh cnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlEaXNhYmxlU3Vic2NyaXB0aW9uKE15U3Vic2NyaXB0 aW9uLT5vaWQpOwogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyogTm90aWZ5IHRo ZSBzdWJzY3JpcHRpb24gaGFzIGJlZW4gZGlzYWJsZWQgYW5kIGV4aXQgKi8KKwkvKiBOb3RpZnkg dGhlIHN1YnNjcmlwdGlvbiBoYXMgYmVlbiBkaXNhYmxlZCAqLwogCWVyZXBvcnQoTE9HLAogCQkJ ZXJybXNnKCJzdWJzY3JpcHRpb24gXCIlc1wiIGhhcyBiZWVuIGRpc2FibGVkIGJlY2F1c2Ugb2Yg YW4gZXJyb3IiLAogCQkJCSAgIE15U3Vic2NyaXB0aW9uLT5uYW1lKSk7Ci0KLQlwcm9jX2V4aXQo MCk7CiB9CiAKIC8qCkBAIC01MDQ0LDMgKzUwNjQsNzEgQEAgZ2V0X3RyYW5zYWN0aW9uX2FwcGx5 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_OS3PR01MB5718AE486227CE3ACB844C5E94F89OS3PR01MB5718jpnp_--