From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id xY+iOmKW12kx4g4AWB0awg (envelope-from ) for ; Thu, 09 Apr 2026 08:06:58 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=Y5WJSj4o; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id DC7151E04F; Thu, 09 Apr 2026 08:06:58 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 5C21B1E04F for ; Thu, 09 Apr 2026 08:06:56 -0400 (EDT) Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id C629B4BA2E10 for ; Thu, 9 Apr 2026 12:06:55 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C629B4BA2E10 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=Y5WJSj4o Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.11]) by sourceware.org (Postfix) with ESMTPS id E31814BA2E05 for ; Thu, 9 Apr 2026 12:06:20 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E31814BA2E05 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org E31814BA2E05 Authentication-Results: server2.sourceware.org; arc=fail smtp.remote-ip=192.198.163.11 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1775736381; cv=fail; b=ocRhhHQpbQWTrrsL0Eq5MJFSEC0O8ctXRs0DlDOVS3Vj0HhjHkngsdtiAQ/sgW/N3qhUm8HhEElCojN4C4CCTl/nTzOtt3INFKcf829+pm87GFSB8ugcbI5jJN4uJkAy8vwvCpFM1P+Xy7nM+bSq2CKt5njyDLEi5y7x+q0r2AA= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1775736381; c=relaxed/simple; bh=fboDB8Pnj3DOdNorZy4DmGglBQGAPBLYDRiTxnWrsaI=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=CC1HnC52UBsb+/SugxaP9G8+BDZSxyrcdPs0j69E4Q0QuLEUyYa953Y8Hq79j5qyuCQ82fk2Ya0c0S4Kplyals5p4aIplasz4vsJjUPRvypxryqRpM+g0EeFhIuN0PrQ8tZB/gPTWOTNN1Xu2WS/41WPFguK7zM1+tKJTa06FAI= ARC-Authentication-Results: i=2; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E31814BA2E05 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1775736381; x=1807272381; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version:content-transfer-encoding; bh=fboDB8Pnj3DOdNorZy4DmGglBQGAPBLYDRiTxnWrsaI=; b=Y5WJSj4ob1ld1SlGhhKxfcdVhTyKrkZa9Zd76e5SKiTph9Kq5sUOqzFs cEZmkheLS4NuvsttQVDIMF0Pew4N2ES3y1WBby2aUWihsclmvpFRL2q0E 8mSV672gFqo39sFOaYZgS03ymw8c6hcjapblUUs9KKuzT/YkzAZTZ5mGm sx9TbHE2eUZMxkxB/AG61WnOInyab+hXRDPtIiua4sRLAKvbyqsR8n7UA V921BiOYGvsL48sPLtd7s85POsxqTcH5nuR1VriIk7TBGrA+1S0fhTXlT iA75nv+1FEaAXeoKxNqmZ1KckYCu9EZZTQjoRTEptf0Bv7KJGfeHCQmyT A==; X-CSE-ConnectionGUID: elGjx04kRf2ikAntwcxzIw== X-CSE-MsgGUID: Lnd1UfRvR6SCdITXS3S8xg== X-IronPort-AV: E=McAfee;i="6800,10657,11753"; a="87362711" X-IronPort-AV: E=Sophos;i="6.23,169,1770624000"; d="scan'208";a="87362711" Received: from fmviesa003.fm.intel.com ([10.60.135.143]) by fmvoesa105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Apr 2026 05:06:10 -0700 X-CSE-ConnectionGUID: SN1JL84FSc+eNgcSIGEXFQ== X-CSE-MsgGUID: Ixr75/GnRh2fzPqCTLczqQ== X-ExtLoop1: 1 Received: from orsmsx902.amr.corp.intel.com ([10.22.229.24]) by fmviesa003.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Apr 2026 05:06:10 -0700 Received: from ORSMSX903.amr.corp.intel.com (10.22.229.25) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Thu, 9 Apr 2026 05:06:09 -0700 Received: from ORSEDG903.ED.cps.intel.com (10.7.248.13) by ORSMSX903.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37 via Frontend Transport; Thu, 9 Apr 2026 05:06:09 -0700 Received: from DM5PR21CU001.outbound.protection.outlook.com (52.101.62.20) by edgegateway.intel.com (134.134.137.113) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Thu, 9 Apr 2026 05:06:09 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QlS/H1GXq6iBnFdWL/AvWKAAMU4RhTVXLoXyI2Sn9WOD6kyT/EwyyeX0BYRQUEJ/rIchpMdGsr4ZTdEwq1imTxIMe6odEsSxnMB0xkNhR+y11KWFmXPkqChcMblFC8e1gpvBgmrJENjcFzeQk6zBkHU16MwB5DoW+5hLLwgoMBhDS4lUARfUvh3U9hy/x8MCDFrvWxnm2Nfdi9tmtNUZuURkHDiv4iwmm2PdqoMxXyDL/v3R599dOuvuTcfc1OlYI/IsIGM0uGk7FDNWMKsIsOK20Satv+Dx9JXzYPw9ek3xABuxLt5LK6tknrwYOWcFSOqGovwM8CCSkjCKY+AhZw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=glhTQCT/rFbbIgo8n6JjiLGjCabYFJdlvziw9+k1ebw=; b=NNRViHkBRu/wnmeL9U64TMHrJbYbG6FwjS/7aFnVpTCMCdJbAfJC23vU244zE/eNP8WfWMqEuR2U9VaonQda/s9fsDosAkTqw7PQTiWmugqq4pWucqHK//VsWyr6w3hpKhkrKu5STjOaeCoSQB0WectLPtEJnqmCDfsmKxM9BJSbGZkH8cNBUwq5j50WMXEEcCc4DfYZA+U5IJOEIq4k+KtExT+JHETtlZZM69fAeSz9AvJoRa6GCDT+wwMJJYUxlcZmbd6SqwsEhb/5jPqivCFbgG/CJvCMIXiJH/FSJSj/VTWyGDFbpmywfkcvVBNnq2kD9DNcKHwCZLwqdIJWUg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from SN7PR11MB7638.namprd11.prod.outlook.com (2603:10b6:806:34b::22) by CY5PR11MB6259.namprd11.prod.outlook.com (2603:10b6:930:24::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.20; Thu, 9 Apr 2026 12:06:01 +0000 Received: from SN7PR11MB7638.namprd11.prod.outlook.com ([fe80::7a35:98d:f02c:b011]) by SN7PR11MB7638.namprd11.prod.outlook.com ([fe80::7a35:98d:f02c:b011%5]) with mapi id 15.20.9723.018; Thu, 9 Apr 2026 12:06:01 +0000 From: "Schimpe, Christina" To: "Schimpe, Christina" , "gdb-patches@sourceware.org" CC: "thiago.bauermann@linaro.org" Subject: RE: [PATCH v2 1/9] gdb: Generalize handling of the shadow stack pointer. Thread-Topic: [PATCH v2 1/9] gdb: Generalize handling of the shadow stack pointer. Thread-Index: AQHcyBk7qUaHaZzGxkO+/9djsF+K6g== Date: Thu, 9 Apr 2026 12:06:01 +0000 Message-ID: References: <20260123080532.878738-1-christina.schimpe@intel.com> <20260123080532.878738-2-christina.schimpe@intel.com> In-Reply-To: <20260123080532.878738-2-christina.schimpe@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SN7PR11MB7638:EE_|CY5PR11MB6259:EE_ x-ms-office365-filtering-correlation-id: f70e91ab-bb29-4b36-f8ab-08de96305df9 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|376014|366016|38070700021|13003099007|18002099003|22082099003|56012099003; x-microsoft-antispam-message-info: vnWkS+4tMxVGb2aQYHh28UrxMpPEAFCk8cZZAopb3CySMW9bpnC/4A1ON2qntC3WosO90sgzO5DIYmqrMnguW6SWWVxhHIJxXsJzMJfiUgW5GkOkOBleXBaxFDn7QvYznS346pR5ioHwjUyl3E8ANlCyQqT+AQwd5qpVH1MTe/ef5OMux6y8RFSnrRvBGuXr+c3Ps3oUMXTyL/fGv4LegJlMRkZc9jBqQ/XQna25jFQ1W2wLXWNlYQiluQxt4LjLWK2+XRDeaWF2CQhNXoUkqSL6dVX0giaqdn9nCWkex2nFu0uqdmkSd69K/PGA7nCbihbYTQX70/e7wkBHadDZaIjpzV5/hHEFBkn1+oMu7UhsDvr60Q+09zK7okIvL2BX7gohEUcKyhwPafu0FyZJlq5JwcFYtzOp2OVUtUZAIsVc5rzIBRW1vZnH8Dcyxa/iC9MYUm7RJfkywqtxpVZKG3/sn8zIYMctsW8Seu9olC1LH2vnh3a1AkNqCgaQzW++Di6UD6JIsnC+FLdX6jizJnDdi6FwmTpPZihvY2a1D2YnVBHBZ4LmR5+sNali4SxpDp+3Wq47OkCpNYPlvLa4LaI9dJg/bXU7cFW3WsrCPRjvNyhgoQisr2xXt1B4L8VuBoBwXNJIKRm34sBiSWTuuk0HsixdEsfhEl2SnguAVdLKZbYQE5BCzCTnIGXL+12+n0/cW0VYxnE5pASUdt8D074pu9ZFbz5u/zFQyLfkMrwuHgQTdpqmpGsE91woa67ifDREKTNbmGwAOyyZyCXSb9TEtRl/hUuzyQgtM6Eh/Zk= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN7PR11MB7638.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(366016)(38070700021)(13003099007)(18002099003)(22082099003)(56012099003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?em45YlZ2bUF0N0xOTjR1WDl5NE5xQ2NQUmgxQ25uVThLOXlSc2xOYUk0cVI0?= =?utf-8?B?OFNINEpxMnJYaGlRMGovSE5sT1cvQWVyOWFLUDYwRm5SV3I4NFM2dUJnSHhS?= =?utf-8?B?Z0lPSUcybXI5ZUxIem40MEJoQWZYS1JwdGFTOFYzZTVMZTkxallYZzRWamhi?= =?utf-8?B?NkRWQmEzRDgreHFxTUpOZEJnQm1VWWdvS2dScmF1bmVvdkZyc2IwZGNFbGI5?= =?utf-8?B?NDh3REdmQk1BUXh2TWVENWhwY0YxS3JkVEhOcXQwWk1uZ1UzVkhaUXFjS1hB?= =?utf-8?B?bHlMQ0VDNENDU3B5UERNUlBPSWdTLzd6aTl2Z2ZBWnZ5clo4MnA4eG5kUE9i?= =?utf-8?B?Tm1FYkJLZjZsZW9Pai9tVmJvUVgrU0ZJQTR1ZEtpcSsrd2JyRGNjSEdJWVlH?= =?utf-8?B?Wnc1SHNuOXAvanZnV0Q0OEZ6VUlNdjN1RzRrc0gyOC9oVlFNNGFKUnJnZFBR?= =?utf-8?B?UTdPWGM1b0I1OXZvU3BkZ2RPNFRPdHpKWW5LVlEwQkNzRWxCcWJsN3RSc0FW?= =?utf-8?B?TVRqYTRMZmZucUtSaXN4d0YxYlR4SzR3U3BVNUhIOGdRdjRQLzFENUxrUGUz?= =?utf-8?B?S01WckVTOVZmM1NsdDRzWE1JT2tnTWhsTzVsWUZNRkZYV3g5Q1gwUENpTFNk?= =?utf-8?B?cEE5UUpoT0NxcDZ1enJLTG1CVHRCVzgvellVdEdyZTRaVFhFNm92ZW1LZytx?= =?utf-8?B?MFRETlN3aUJFdmtWb0dzUHdnRHp5cnUrL2RqWVlIVjJ3Z1h5azJDc0EyUncx?= =?utf-8?B?WExNaWxiVTc4ZnNaaTBBb0NCcmZtVlVJdGQzT0RtZll2ZGJhbkRmUU0yUFgz?= =?utf-8?B?ZWxaSEY5SytqdUFFamk1WTRGbGRSNVluSGtrV3RUbkx6anB4V2NKY3RzcXhn?= =?utf-8?B?TmhIdGRWc3A0dTVEUzBzMTRiQ1R0bnhjcFJFUlRnS1hWV0laSmtGQ1YrZDcz?= =?utf-8?B?N3VtUU9aaUY1RU85YkFSeUJiREJZOVRSUWVXZnhDNElrWkpidUhqZ1p1MnFL?= =?utf-8?B?bjdxZ3B6cFg5K3E1Z1IraTNMNFpNVXBlZVYzUkQ3NmF4OXFZRlJ0N09PeXZD?= =?utf-8?B?eTl0dENVdnMzRE9MbUR6R2dPWEo0NThMblpQa0Z2Ly9pVXIyUFBKbjhPZExu?= =?utf-8?B?a3F0Wkt6d0xqbTZ2elNsZ3FIMnFxbjJhUUQvZEl2SkhINnd2ZWdXb3NhSFpN?= =?utf-8?B?REN1cTI2SkFSRldkQlhnS3kzQUtlMUF1ZlM3TnYyMEFYSDZLZFJ6cXB5TjFL?= =?utf-8?B?eGVrSjlvbHhselBXMFBlT3N2RFpPb3c2WGhXSk9SdGNtUk8yV3JKZTExZGFM?= =?utf-8?B?ZEVaMDhjL1BqMDd6amM4aGpqSGZidGxaTHF5QndLczdyQVBiby9ZQm02ampW?= =?utf-8?B?MEVaVnB2SnJ0cDFleFpZYmI5RGxBNlh6M096TVA1Z0toSmNPSGg4MDJ3anpS?= =?utf-8?B?ZW1SZFpHTVpFZWpUYklmK3VtRGtQajVvYks5YjZhSEZZaTZJNWkzR2RKQUtz?= =?utf-8?B?OVB0c1RlWlB0OWtYVm81d3h1U2ozMnVkcGZLNU9nY2Uvd2lIVlNUeEZ6Qzcr?= =?utf-8?B?MGZ4elFRU2U4cmMxWEpLSy9Nb0pBWWY5anF5dEk0dGtxeDhhcmovY3dSNVFx?= =?utf-8?B?dEpwMUJ3VWFWazFyZlZGNyt6Z1QzcHlQckVwMkI4UVgrQnB5ZzI0Y2pZdFhv?= =?utf-8?B?OStLdmx2SVFFZFhpUSs3alcxRks5SEdoaTZVdXIxbzNFRThyQ2JxWk4xZ2xE?= =?utf-8?B?UW9EeVdTOU5xR21KNmFxbXkwaHBnQ2JXRnNFQkxYMGdrUENNTW5wQTgwOFdG?= =?utf-8?B?eExWTFprUGFlSzVzR0x6VTdscjVXNEwvdk8zd1Y1NkgrRWRlSXluZlpTQjFZ?= =?utf-8?B?eEFoTFQ5eGFaRUpLdnd6RjBqVFY5bkJHWU9kQUNlTHhjVXRVdmdlZEZNc25n?= =?utf-8?B?cnhNajRUSktPNTAxTVk4b240N3pHeVRSOW5taHdTTGJDTEJObFdyN1U3cUNp?= =?utf-8?B?Ti9hanVZOUN5WlNsN01NN3QvSitiM2JSbC9wNzg5VXpsbmxzQ2YxZi9La2dL?= =?utf-8?B?Qm1hZVZVZk4rb3hRbkxWWm1UTHpJQ3ZPZW5NTnErWkJWcWJTdUFQUWxJZWNN?= =?utf-8?B?UzhTckdvYUc1QmxIR0xGQ1daZGFRNGU3eHRUaWQyeEZRTTc3SmoraS9CNXRq?= =?utf-8?B?TnhZNEhsWkFrUG9TZ0MwRUxCQjJTN1dmQW9SdE9nV2p2U0lqTUt0Um8yREJv?= =?utf-8?B?TU9VVkxCU3ZLakF3QXZWUWp4bGROeWlJQnhUNk9ibkN6Qk9YZStKcUw5aFZJ?= =?utf-8?B?bnFNT0NUcmlZK3Z0bm4zZ2hTSzBubTNWMTRxWjZkcGlSTVlnNk9CQT09?= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: rY19tEW/ZqQsfzNF0dWDDHGef314VcLHq5y6DHI7E/I1gDJbTywHXCiW7oEmCGSK/y93Tv1rUw89hUhXGEtGeAjgDwBwcPgzwEEdOuuUifbey3x5J9mYsCYAnGHrBnxlIH7Ehwu1CkpH7OPHVkX5JUZsPQXLEPb922g6mP0345CXqgUlMCPQmyucEJ5ehGyQkN28S+kHA55qLeJtA/x8nJAEXN9yU1uwciZ8k0GRHCEUwRUGwQ/Wg5r4AGUUNpKM3TfypcFFRJxPy8jXMse6tT26lILEGOpy6iK45CrxkO+HGLOqepWw4FNF6lxRhCRon0dCgXHjqbECImsf3HI0lQ== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN7PR11MB7638.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f70e91ab-bb29-4b36-f8ab-08de96305df9 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Apr 2026 12:06:01.2288 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: lnOjgUYojvo112ocv0ywaqVVbAYuLIm0BA+2m3Vsx1f9SG7SRzUsNA0xMjacapUe2YjeZ+OwzYJouVeVmzInSli5bBdfRawpdaKtvPues64= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR11MB6259 X-OriginatorOrg: intel.com Content-Transfer-Encoding: base64 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBDaHJpc3RpbmEgU2NoaW1wZSA8 Y2hyaXN0aW5hLnNjaGltcGVAaW50ZWwuY29tPg0KPiBTZW50OiBGcmVpdGFnLCAyMy4gSmFudWFy IDIwMjYgMDk6MDUNCj4gVG86IGdkYi1wYXRjaGVzQHNvdXJjZXdhcmUub3JnDQo+IENjOiB0aGlh Z28uYmF1ZXJtYW5uQGxpbmFyby5vcmcNCj4gU3ViamVjdDogW1BBVENIIHYyIDEvOV0gZ2RiOiBH ZW5lcmFsaXplIGhhbmRsaW5nIG9mIHRoZSBzaGFkb3cgc3RhY2sgcG9pbnRlci4NCj4gDQo+IFVu dGlsIG5vdywgaGFuZGxpbmcgb2YgdGhlIHNoYWRvdyBzdGFjayBwb2ludGVyIGhhcyBiZWVuIGRv bmUgaW4gdGhlIHRhcmdldA0KPiBkZXBlbmRlbnQgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBnZGJh cmNoIGhvb2sNCj4gJ2dkYmFyY2hfc2hhZG93X3N0YWNrX3B1c2gnLiAgQWxzbyBhbWQ2NCBhbmQg YWFyY2g2NCBsaW51eCBzcGVjaWZpYw0KPiB1bndpbmRlcnMgZm9yIHRoZSBzaGFkb3cgc3RhY2sg cG9pbnRlciBhcmUgaW1wbGVtZW50ZWQuDQo+IEluIGEgZm9sbG93aW5nIHBhdGNoIGEgY29tbWFu ZCBsaW5lIG9wdGlvbiAiLXNoYWRvdyIgd2lsbCBiZSBhZGRlZCB0byB0aGUNCj4gYmFja3RyYWNl IGNvbW1hbmQgdG8gcHJpbnQgdGhlIHNoYWRvdyBzdGFjayBiYWNrdHJhY2UuICBUaGlzIHJlcXVp cmVzIG1vcmUNCj4gdGFyZ2V0LWluZGVwZW5kZW50IGxvZ2ljIHRvIGhhbmRsZSB0aGUgc2hhZG93 IHN0YWNrIHBvaW50ZXIuICBUbyBhdm9pZCB0aGF0DQo+IHdlIGR1cGxpY2F0ZSB0aGUgbG9naWMs IGFkZCBuZXcgc291cmNlIGFuZCBoZWFkZXIgZmlsZXMgInNoYWRvdy1zdGFjayIgZm9yDQo+IHRo ZSBpbXBsZW1lbnRhdGlvbiBvZiBzaGFkb3dfc3RhY2tfcHVzaCBhbmQgc2hhZG93IHN0YWNrIHBv aW50ZXINCj4gdW53aW5kaW5nIGluIGEgdGFyZ2V0LWluZGVwZW5kZW50IHdheS4NCj4gLS0tDQo+ ICBnZGIvTWFrZWZpbGUuaW4gICAgICAgICAgIHwgICAyICsNCj4gIGdkYi9hYXJjaDY0LWxpbnV4 LXRkZXAuYyAgfCAgNTEgKy0tLS0tLS0tLS0tDQo+ICBnZGIvYWFyY2g2NC10ZGVwLmMgICAgICAg IHwgIDQ2ICsrKy0tLS0tLS0tDQo+ICBnZGIvYW1kNjQtbGludXgtdGRlcC5jICAgIHwgMTM1ICsr Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gIGdkYi9hbWQ2NC10ZGVwLmMgICAgICAg ICAgfCAgMjAgKysrKysNCj4gIGdkYi9nZGJhcmNoLWdlbi5jICAgICAgICAgfCAxMjYgKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0NCj4gIGdkYi9nZGJhcmNoLWdlbi5oICAgICAgICAgfCAg NjMgKysrKysrKysrKystLS0tDQo+ICBnZGIvZ2RiYXJjaF9jb21wb25lbnRzLnB5IHwgIDgxICsr KysrKysrKysrKysrKy0tLS0NCj4gIGdkYi9pbmZjYWxsLmMgICAgICAgICAgICAgfCAgIDQgKy0N Cj4gIGdkYi9saW51eC10ZGVwLmMgICAgICAgICAgfCAgIDkgKystDQo+ICBnZGIvc2hhZG93LXN0 YWNrLmMgICAgICAgIHwgMTY2DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrDQo+ICBnZGIvc2hhZG93LXN0YWNrLmggICAgICAgIHwgIDM4ICsrKysrKysrKw0KPiAgMTIg ZmlsZXMgY2hhbmdlZCwgNDczIGluc2VydGlvbnMoKyksIDI2OCBkZWxldGlvbnMoLSkgIGNyZWF0 ZSBtb2RlIDEwMDY0NA0KPiBnZGIvc2hhZG93LXN0YWNrLmMgIGNyZWF0ZSBtb2RlIDEwMDY0NCBn ZGIvc2hhZG93LXN0YWNrLmgNCj4gDQo+IGRpZmYgLS1naXQgYS9nZGIvTWFrZWZpbGUuaW4gYi9n ZGIvTWFrZWZpbGUuaW4gaW5kZXgNCj4gMTYxZTgxMjhlOTguLjdlODYyOTA0OGYzIDEwMDY0NA0K PiAtLS0gYS9nZGIvTWFrZWZpbGUuaW4NCj4gKysrIGIvZ2RiL01ha2VmaWxlLmluDQo+IEBAIC0x MTkxLDYgKzExOTEsNyBAQCBDT01NT05fU0ZJTEVTID0gXA0KPiAgCXNlbnRpbmVsLWZyYW1lLmMg XA0KPiAgCXNlci1ldmVudC5jIFwNCj4gIAlzZXJpYWwuYyBcDQo+ICsJc2hhZG93LXN0YWNrLmMg XA0KPiAgCXNraXAuYyBcDQo+ICAJc29saWIuYyBcDQo+ICAJc29saWItdGFyZ2V0LmMgXA0KPiBA QCAtMTY1Miw2ICsxNjUzLDcgQEAgSEZJTEVTX05PX1NSQ0RJUiA9IFwNCj4gIAlzZXJpYWwuaCBc DQo+ICAJc2VyLXRjcC5oIFwNCj4gIAlzZXItdW5peC5oIFwNCj4gKwlzaGFkb3ctc3RhY2suaCBc DQo+ICAJc2gtdGRlcC5oIFwNCj4gIAlzaW0tcmVnbm8uaCBcDQo+ICAJc2tpcC5oIFwNCj4gZGlm ZiAtLWdpdCBhL2dkYi9hYXJjaDY0LWxpbnV4LXRkZXAuYyBiL2dkYi9hYXJjaDY0LWxpbnV4LXRk ZXAuYyBpbmRleA0KPiBiODVjMjVlY2FlMS4uZjM3YjI4MDY3YjggMTAwNjQ0DQo+IC0tLSBhL2dk Yi9hYXJjaDY0LWxpbnV4LXRkZXAuYw0KPiArKysgYi9nZGIvYWFyY2g2NC1saW51eC10ZGVwLmMN Cj4gQEAgLTY0LDYgKzY0LDcgQEANCj4gICNpbmNsdWRlICJlbGYvY29tbW9uLmgiDQo+ICAjaW5j bHVkZSAiZWxmL2FhcmNoNjQuaCINCj4gICNpbmNsdWRlICJhcmNoL2FhcmNoNjQtaW5zbi5oIg0K PiArI2luY2x1ZGUgInNoYWRvdy1zdGFjay5oIg0KPiANCj4gIC8qIEZvciBzdGQ6OnBvdyAqLw0K PiAgI2luY2x1ZGUgPGNtYXRoPg0KPiBAQCAtMjYxNCw1NCArMjYxNSw2IEBAIGFhcmNoNjRfbGlu dXhfZ2V0X3NoYWRvd19zdGFja19wb2ludGVyDQo+IChnZGJhcmNoICpnZGJhcmNoLCByZWdjYWNo ZSAqcmVnY2FjaGUsDQo+ICAgIHJldHVybiBnY3NwcjsNCj4gIH0NCj4gDQo+IC0vKiBJbXBsZW1l bnQgR3VhcmRlZCBDb250cm9sIFN0YWNrIFBvaW50ZXIgUmVnaXN0ZXIgdW53aW5kaW5nLiAgRm9y IGVhY2gNCj4gLSAgIHByZXZpb3VzIEdDUyBwb2ludGVyIGNoZWNrIGlmIGl0cyBhZGRyZXNzIGlz IHN0aWxsIGluIHRoZSBHQ1MgbWVtb3J5DQo+IC0gICByYW5nZS4gIElmIGl0J3Mgb3V0c2lkZSB0 aGUgcmFuZ2Ugc2V0IHRoZSByZXR1cm5lZCB2YWx1ZSB0byB1bmF2YWlsYWJsZSwNCj4gLSAgIG90 aGVyd2lzZSByZXR1cm4gYSB2YWx1ZSBjb250YWluaW5nIHRoZSBuZXcgR0NTIHBvaW50ZXIuICAq Lw0KPiAtDQo+IC1zdGF0aWMgdmFsdWUgKg0KPiAtYWFyY2g2NF9saW51eF9kd2FyZjJfcHJldl9n Y3NwciAoY29uc3QgZnJhbWVfaW5mb19wdHIgJnRoaXNfZnJhbWUsDQo+IC0JCQkJIHZvaWQgKip0 aGlzX2NhY2hlLCBpbnQgcmVnbnVtKQ0KPiAtew0KPiAtICB2YWx1ZSAqdiA9IGZyYW1lX3Vud2lu ZF9nb3RfcmVnaXN0ZXIgKHRoaXNfZnJhbWUsIHJlZ251bSwgcmVnbnVtKTsNCj4gLSAgZ2RiX2Fz c2VydCAodiAhPSBudWxscHRyKTsNCj4gLQ0KPiAtICBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X2Zy YW1lX2FyY2ggKHRoaXNfZnJhbWUpOw0KPiAtDQo+IC0gIGlmICh2LT5lbnRpcmVseV9hdmFpbGFi bGUgKCkgJiYgIXYtPm9wdGltaXplZF9vdXQgKCkpDQo+IC0gICAgew0KPiAtICAgICAgaW50IHNp emUgPSByZWdpc3Rlcl9zaXplIChnZGJhcmNoLCByZWdudW0pOw0KPiAtICAgICAgYmZkX2VuZGlh biBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyIChnZGJhcmNoKTsNCj4gLSAgICAgIENP UkVfQUREUiBnY3NwciA9IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAodi0+Y29udGVudHNfYWxs ICgpLmRhdGEgKCksDQo+IC0JCQkJCQkgIHNpemUsIGJ5dGVfb3JkZXIpOw0KPiAtDQo+IC0gICAg ICAvKiBTdGFydGluZyB3aXRoIHY2LjEzLCB0aGUgTGludXgga2VybmVsIHN1cHBvcnRzIEd1YXJk ZWQgQ29udHJvbA0KPiAtCSBTdGFjay4gIFVzaW5nIC9wcm9jL1BJRC9zbWFwcyB3ZSBjYW4gb25s eSBjaGVjayBpZiB0aGUgY3VycmVudA0KPiAtCSBHQ1NQUiBwb2ludHMgdG8gR0NTIG1lbW9yeS4g IE9ubHkgaWYgdGhpcyBpcyB0aGUgY2FzZSBhIHZhbGlkDQo+IC0JIHByZXZpb3VzIEdDUyBwb2lu dGVyIGNhbiBiZSBjYWxjdWxhdGVkLiAgKi8NCj4gLSAgICAgIHN0ZDo6cGFpcjxDT1JFX0FERFIs IENPUkVfQUREUj4gcmFuZ2U7DQo+IC0gICAgICBpZiAobGludXhfYWRkcmVzc19pbl9zaGFkb3df c3RhY2tfbWVtX3JhbmdlIChnY3NwciwgJnJhbmdlKSkNCj4gLQl7DQo+IC0JICAvKiBUaGUgR0NT IGdyb3dzIGRvd253YXJkcy4gIFRvIGNvbXB1dGUgdGhlIHByZXZpb3VzIEdDUw0KPiBwb2ludGVy LA0KPiAtCSAgICAgd2UgbmVlZCB0byBpbmNyZW1lbnQgdGhlIEdDU1BSLiAgKi8NCj4gLQkgIENP UkVfQUREUiBuZXdfZ2NzcHIgPSBnY3NwciArIDg7DQo+IC0NCj4gLQkgIC8qIElmIE5FV19HQ1NQ UiBzdGlsbCBwb2ludHMgd2l0aGluIHRoZSBjdXJyZW50IEdDUyBtZW1vcnkgcmFuZ2UNCj4gLQkg ICAgIHdlIGNvbnNpZGVyIGl0IHRvIGJlIHZhbGlkLiAgKi8NCj4gLQkgIGlmIChuZXdfZ2NzcHIg PCByYW5nZS5zZWNvbmQpDQo+IC0JICAgIHJldHVybiBmcmFtZV91bndpbmRfZ290X2FkZHJlc3Mg KHRoaXNfZnJhbWUsIHJlZ251bSwNCj4gbmV3X2djc3ByKTsNCj4gLQl9DQo+IC0gICAgfQ0KPiAt DQo+IC0gIC8qIFJldHVybiBhIHZhbHVlIHdoaWNoIGlzIG1hcmtlZCBhcyB1bmF2YWlsYWJsZSBp biBjYXNlIHdlIGNvdWxkIG5vdA0KPiAtICAgICBjYWxjdWxhdGUgYSB2YWxpZCBwcmV2aW91cyBH Q1MgcG9pbnRlci4gICovDQo+IC0gIHZhbHVlICpyZXR2YWwNCj4gLSAgICA9IHZhbHVlOjphbGxv Y2F0ZV9yZWdpc3RlciAoZ2V0X25leHRfZnJhbWVfc2VudGluZWxfb2theSAodGhpc19mcmFtZSks DQo+IC0JCQkJcmVnbnVtLCByZWdpc3Rlcl90eXBlIChnZGJhcmNoLCByZWdudW0pKTsNCj4gLSAg cmV0dmFsLT5tYXJrX2J5dGVzX3VuYXZhaWxhYmxlICgwLCByZXR2YWwtPnR5cGUgKCktPmxlbmd0 aCAoKSk7DQo+IC0gIHJldHVybiByZXR2YWw7DQo+IC19DQo+IC0NCj4gIC8qIEFBcmNoNjQgTGlu dXggaW1wbGVtZW50YXRpb24gb2YgdGhlIHJlcG9ydF9zaWduYWxfaW5mbyBnZGJhcmNoDQo+ICAg ICBob29rLiAgRGlzcGxheXMgaW5mb3JtYXRpb24gYWJvdXQgcG9zc2libGUgbWVtb3J5IHRhZyB2 aW9sYXRpb25zLiAgKi8NCj4gDQo+IEBAIC0zMjQwLDcgKzMxOTMsNyBAQCBhYXJjaDY0X2xpbnV4 X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sDQo+IHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoKQ0KPiAgICAgIHsNCj4gICAgICAgIHNldF9nZGJhcmNoX2dldF9zaGFkb3dfc3RhY2tf cG9pbnRlciAoZ2RiYXJjaCwNCj4gDQo+IAlhYXJjaDY0X2xpbnV4X2dldF9zaGFkb3dfc3RhY2tf cG9pbnRlcik7DQo+IC0gICAgICB0ZGVwLT5mbl9wcmV2X2djc3ByID0gYWFyY2g2NF9saW51eF9k d2FyZjJfcHJldl9nY3NwcjsNCj4gKyAgICAgIHRkZXAtPmZuX3ByZXZfZ2NzcHIgPSBkd2FyZjJf cHJldl9zc3A7DQo+ICAgICAgfQ0KPiAgfQ0KPiANCj4gZGlmZiAtLWdpdCBhL2dkYi9hYXJjaDY0 LXRkZXAuYyBiL2dkYi9hYXJjaDY0LXRkZXAuYyBpbmRleA0KPiBmMWJkY2U0NTNkYi4uODM2YWY4 NjNkM2EgMTAwNjQ0DQo+IC0tLSBhL2dkYi9hYXJjaDY0LXRkZXAuYw0KPiArKysgYi9nZGIvYWFy Y2g2NC10ZGVwLmMNCj4gQEAgLTU3LDYgKzU3LDkgQEANCj4gDQo+ICAvKiBGb3IgaW5mZXJpb3Jf cHRpZCBhbmQgY3VycmVudF9pbmZlcmlvciAoKS4gICovICAjaW5jbHVkZSAiaW5mZXJpb3IuaCIN Cj4gKw0KPiArI2luY2x1ZGUgInNoYWRvdy1zdGFjay5oIg0KPiArDQo+ICAvKiBGb3Igc3RkOjpz cXJ0IGFuZCBzdGQ6OnBvdy4gICovDQo+ICAjaW5jbHVkZSA8Y21hdGg+DQo+IA0KPiBAQCAtMTg4 OSwyOSArMTg5Miw2IEBAIHBhc3NfaW5fdl92ZnBfY2FuZGlkYXRlIChzdHJ1Y3QgZ2RiYXJjaA0K PiAqZ2RiYXJjaCwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwNCj4gICAgICB9DQo+ICB9DQo+ IA0KPiAtLyogUHVzaCBMUl9WQUxVRSB0byB0aGUgR3VhcmRlZCBDb250cm9sIFN0YWNrLiAgKi8N Cj4gLQ0KPiAtc3RhdGljIHZvaWQNCj4gLWFhcmNoNjRfcHVzaF9nY3NfZW50cnkgKHJlZ2NhY2hl ICpyZWdzLCBDT1JFX0FERFIgbHJfdmFsdWUpIC17DQo+IC0gIGdkYmFyY2ggKmFyY2ggPSByZWdz LT5hcmNoICgpOw0KPiAtICBhYXJjaDY0X2dkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRl cDxhYXJjaDY0X2dkYmFyY2hfdGRlcD4NCj4gKGFyY2gpOw0KPiAtICBDT1JFX0FERFIgZ2NzX2Fk ZHI7DQo+IC0NCj4gLSAgcmVnaXN0ZXJfc3RhdHVzIHN0YXR1cyA9IHJlZ3MtPmNvb2tlZF9yZWFk ICh0ZGVwLT5nY3NfcmVnX2Jhc2UsDQo+ICZnY3NfYWRkcik7DQo+IC0gIGlmIChzdGF0dXMgIT0g UkVHX1ZBTElEKQ0KPiAtICAgIGVycm9yIChfKCJDYW4ndCByZWFkICRnY3Nwci4iKSk7DQo+IC0N Cj4gLSAgZ2NzX2FkZHIgLT0gODsNCj4gLSAgZ2RiX2J5dGUgYnVmWzhdOw0KPiAtICBzdG9yZV9p bnRlZ2VyIChidWYsIGdkYmFyY2hfYnl0ZV9vcmRlciAoYXJjaCksIGxyX3ZhbHVlKTsNCj4gLSAg aWYgKHRhcmdldF93cml0ZV9tZW1vcnkgKGdjc19hZGRyLCBidWYsIHNpemVvZiAoYnVmKSkgIT0g MCkNCj4gLSAgICBlcnJvciAoXygiQ2FuJ3Qgd3JpdGUgdG8gR3VhcmRlZCBDb250cm9sIFN0YWNr LiIpKTsNCj4gLQ0KPiAtICAvKiBVcGRhdGUgR0NTUFIuICAqLw0KPiAtICByZWdjYWNoZV9jb29r ZWRfd3JpdGVfdW5zaWduZWQgKHJlZ3MsIHRkZXAtPmdjc19yZWdfYmFzZSwgZ2NzX2FkZHIpOyAt fQ0KPiAtDQo+ICAvKiBSZW1vdmUgdGhlIG5ld2VzdCBlbnRyeSBmcm9tIHRoZSBHdWFyZGVkIENv bnRyb2wgU3RhY2suICAqLw0KPiANCj4gIHN0YXRpYyB2b2lkDQo+IEBAIC0xOTI5LDE1ICsxOTA5 LDYgQEAgYWFyY2g2NF9wb3BfZ2NzX2VudHJ5IChyZWdjYWNoZSAqcmVncykNCj4gICAgcmVnY2Fj aGVfY29va2VkX3dyaXRlX3Vuc2lnbmVkIChyZWdzLCB0ZGVwLT5nY3NfcmVnX2Jhc2UsIGdjc19h ZGRyICsgOCk7DQo+IH0NCj4gDQo+IC0vKiBJbXBsZW1lbnQgdGhlICJzaGFkb3dfc3RhY2tfcHVz aCIgZ2RiYXJjaCBtZXRob2QuICAqLw0KPiAtDQo+IC1zdGF0aWMgdm9pZA0KPiAtYWFyY2g2NF9z aGFkb3dfc3RhY2tfcHVzaCAoZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIG5ld19hZGRyLA0K PiAtCQkJICAgcmVnY2FjaGUgKnJlZ2NhY2hlKQ0KPiAtew0KPiAtICBhYXJjaDY0X3B1c2hfZ2Nz X2VudHJ5IChyZWdjYWNoZSwgbmV3X2FkZHIpOyAtfQ0KPiAtDQo+ICAvKiBJbXBsZW1lbnQgdGhl ICJwdXNoX2R1bW15X2NhbGwiIGdkYmFyY2ggbWV0aG9kLiAgKi8NCj4gDQo+ICBzdGF0aWMgQ09S RV9BRERSDQo+IEBAIC0zNjc5LDcgKzM2NTAsNyBAQCBhYXJjaDY0X2Rpc3BsYWNlZF9zdGVwX2Ig KGNvbnN0IGludCBpc19ibCwgY29uc3QNCj4gaW50MzJfdCBvZmZzZXQsDQo+ICAgICAgICBnZGJh cmNoX2dldF9zaGFkb3dfc3RhY2tfcG9pbnRlciAoZHNkLT5yZWdzLT5hcmNoICgpLCBkc2QtPnJl Z3MsDQo+ICAJCQkJCWdjc19pc19lbmFibGVkKTsNCj4gICAgICAgIGlmIChnY3NfaXNfZW5hYmxl ZCkNCj4gLQlhYXJjaDY0X3B1c2hfZ2NzX2VudHJ5IChkc2QtPnJlZ3MsIGRhdGEtPmluc25fYWRk ciArIDQpOw0KPiArCXNoYWRvd19zdGFja19wdXNoIChkc2QtPnJlZ3MsIGRhdGEtPmluc25fYWRk ciArIDQpOw0KPiAgICAgIH0NCj4gIH0NCj4gDQo+IEBAIC0zODQzLDcgKzM4MTQsNyBAQCBhYXJj aDY0X2Rpc3BsYWNlZF9zdGVwX290aGVycyAoY29uc3QgdWludDMyX3QNCj4gaW5zbiwNCj4gICAg ICAgIGdkYmFyY2hfZ2V0X3NoYWRvd19zdGFja19wb2ludGVyIChkc2QtPnJlZ3MtPmFyY2ggKCks IGRzZC0+cmVncywNCj4gIAkJCQkJZ2NzX2lzX2VuYWJsZWQpOw0KPiAgICAgICAgaWYgKGdjc19p c19lbmFibGVkKQ0KPiAtCWFhcmNoNjRfcHVzaF9nY3NfZW50cnkgKGRzZC0+cmVncywgZGF0YS0+ aW5zbl9hZGRyICsgNCk7DQo+ICsJc2hhZG93X3N0YWNrX3B1c2ggKGRzZC0+cmVncywgZGF0YS0+ aW5zbl9hZGRyICsgNCk7DQo+ICAgICAgfQ0KPiAgICBlbHNlDQo+ICAgICAgYWFyY2g2NF9lbWl0 X2luc24gKGRzZC0+aW5zbl9idWYsIGluc24pOyBAQCAtNDgxNyw2ICs0Nzg4LDEwIEBADQo+IGFh cmNoNjRfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJh cmNoX2xpc3QgKmFyY2hlcykNCj4gICAgLyogUmVnaXN0ZXIgYSBob29rIGZvciBjb252ZXJ0aW5n IGEgbWVtb3J5IHRhZyB0byBhIHN0cmluZy4gICovDQo+ICAgIHNldF9nZGJhcmNoX21lbXRhZ190 b19zdHJpbmcgKGdkYmFyY2gsIGFhcmNoNjRfbWVtdGFnX3RvX3N0cmluZyk7DQo+IA0KPiArICAv KiBBQXJjaDY0J3Mgc2hhZG93IHN0YWNrIHBvaW50ZXIgaXMgdGhlIEdDU1BSLiAgKi8gIGlmDQo+ ICsgKHRkZXAtPmhhc19nY3MgKCkpDQo+ICsgICAgc2V0X2dkYmFyY2hfc3NwX3JlZ251bSAoZ2Ri YXJjaCwgdGRlcC0+Z2NzX3JlZ19iYXNlKTsNCj4gKw0KPiAgICAvKiBBQkkgKi8NCj4gICAgc2V0 X2dkYmFyY2hfc2hvcnRfYml0IChnZGJhcmNoLCAxNik7DQo+ICAgIHNldF9nZGJhcmNoX2ludF9i aXQgKGdkYmFyY2gsIDMyKTsNCj4gQEAgLTQ4NzksOSArNDg1NCw2IEBAIGFhcmNoNjRfZ2RiYXJj aF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sDQo+IHN0cnVjdCBnZGJhcmNoX2xpc3Qg KmFyY2hlcykNCj4gDQo+ICAgIHNldF9nZGJhcmNoX2dldF9wY19hZGRyZXNzX2ZsYWdzIChnZGJh cmNoLA0KPiBhYXJjaDY0X2dldF9wY19hZGRyZXNzX2ZsYWdzKTsNCj4gDQo+IC0gIGlmICh0ZGVw LT5oYXNfZ2NzICgpKQ0KPiAtICAgIHNldF9nZGJhcmNoX3NoYWRvd19zdGFja19wdXNoIChnZGJh cmNoLA0KPiBhYXJjaDY0X3NoYWRvd19zdGFja19wdXNoKTsNCj4gLQ0KPiAgICB0ZGVzY191c2Vf cmVnaXN0ZXJzIChnZGJhcmNoLCB0ZGVzYywgc3RkOjptb3ZlICh0ZGVzY19kYXRhKSk7DQo+IA0K PiAgICAvKiBGZXRjaCB0aGUgdXBkYXRlZCBudW1iZXIgb2YgcmVnaXN0ZXJzIGFmdGVyIHdlJ3Jl IGRvbmUgYWRkaW5nIGFsbCBkaWZmIC0tDQo+IGdpdCBhL2dkYi9hbWQ2NC1saW51eC10ZGVwLmMg Yi9nZGIvYW1kNjQtbGludXgtdGRlcC5jIGluZGV4DQo+IDc3YzY5NzZlMDcxLi42NTZkYWEwZjBl ZSAxMDA2NDQNCj4gLS0tIGEvZ2RiL2FtZDY0LWxpbnV4LXRkZXAuYw0KPiArKysgYi9nZGIvYW1k NjQtbGludXgtdGRlcC5jDQo+IEBAIC00OCw4ICs0OCw2IEBADQo+ICAjaW5jbHVkZSAiYXJjaC9h bWQ2NC1saW51eC10ZGVzYy5oIg0KPiAgI2luY2x1ZGUgImluZmVyaW9yLmgiDQo+ICAjaW5jbHVk ZSAieDg2LXRkZXAuaCINCj4gLSNpbmNsdWRlICJkd2FyZjIvZnJhbWUuaCINCj4gLSNpbmNsdWRl ICJmcmFtZS11bndpbmQuaCINCj4gDQo+ICAvKiBUaGUgc3lzY2FsbCdzIFhNTCBmaWxlbmFtZSBm b3IgaTM4Ni4gICovICAjZGVmaW5lDQo+IFhNTF9TWVNDQUxMX0ZJTEVOQU1FX0FNRDY0ICJzeXNj YWxscy9hbWQ2NC1saW51eC54bWwiDQo+IEBAIC0xOTIzLDE4ICsxOTIxLDYgQEAgYW1kNjRfbGlu dXhfZ2V0X3Rsc19kdHZfYWRkciAoc3RydWN0IGdkYmFyY2gNCj4gKmdkYmFyY2gsIHB0aWRfdCBw dGlkLA0KPiAgICByZXR1cm4gZHR2X2FkZHI7DQo+ICB9DQo+IA0KPiAtLyogUmV0dXJuIHRoZSBu dW1iZXIgb2YgYnl0ZXMgcmVxdWlyZWQgdG8gdXBkYXRlIHRoZSBzaGFkb3cgc3RhY2sgcG9pbnRl cg0KPiAtICAgYnkgb25lIGVsZW1lbnQuICBGb3IgeDMyIHRoZSBzaGFkb3cgc3RhY2sgZWxlbWVu dHMgYXJlIHN0aWxsIDY0LWJpdA0KPiAtICAgYWxpZ25lZC4gIFRodXMsIGdkYmFyY2hfYWRkcl9i aXQgY2Fubm90IGJlIHVzZWQgdG8gY29tcHV0ZSB0aGUgbmV3DQo+IC0gICBzdGFjayBwb2ludGVy LiAgKi8NCj4gLQ0KPiAtc3RhdGljIGlubGluZSBpbnQNCj4gLWFtZDY0X2xpbnV4X3NoYWRvd19z dGFja19lbGVtZW50X3NpemVfYWxpZ25lZCAoZ2RiYXJjaCAqZ2RiYXJjaCkgLXsNCj4gLSAgY29u c3QgYmZkX2FyY2hfaW5mbyAqYmluZm8gPSBnZGJhcmNoX2JmZF9hcmNoX2luZm8gKGdkYmFyY2gp Ow0KPiAtICByZXR1cm4gKGJpbmZvLT5iaXRzX3Blcl93b3JkIC8gYmluZm8tPmJpdHNfcGVyX2J5 dGUpOyAtfQ0KPiAtDQo+ICAvKiBSZWFkIHRoZSBzaGFkb3cgc3RhY2sgcG9pbnRlciByZWdpc3Rl ciBhbmQgcmV0dXJuIGl0cyB2YWx1ZSwgaWYNCj4gICAgIHBvc3NpYmxlLiAgKi8NCj4gDQo+IEBA IC0xOTY2LDExNyArMTk1MiwxNSBAQCBhbWQ2NF9saW51eF9nZXRfc2hhZG93X3N0YWNrX3BvaW50 ZXINCj4gKGdkYmFyY2ggKmdkYmFyY2gsIHJlZ2NhY2hlICpyZWdjYWNoZSwNCj4gICAgcmV0dXJu IHNzcDsNCj4gIH0NCj4gDQo+IC0vKiBJZiBzaGFkb3cgc3RhY2sgaXMgZW5hYmxlZCwgcHVzaCB0 aGUgYWRkcmVzcyBORVdfQUREUiB0byB0aGUgc2hhZG93DQo+IC0gICBzdGFjayBhbmQgaW5jcmVt ZW50IHRoZSBzaGFkb3cgc3RhY2sgcG9pbnRlciBhY2NvcmRpbmdseS4gICovDQo+ICsvKiBSZXR1 cm4gdHJ1ZSBpZiBBRERSIHBvaW50cyB0byB0aGUgdG9wIG9mIGFuIGVtcHR5IHNoYWRvdyBzdGFj aywgZGVmaW5lZA0KPiBieQ0KPiArICAgUkFOR0UgW3N0YXJ0X2FkZHJlc3MsIGVuZF9hZGRyZXNz KS4gICovDQo+IA0KPiAtc3RhdGljIHZvaWQNCj4gLWFtZDY0X2xpbnV4X3NoYWRvd19zdGFja19w dXNoIChnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFINCj4gbmV3X2FkZHIsDQo+IC0JCQkgICAg ICAgcmVnY2FjaGUgKnJlZ2NhY2hlKQ0KPiAtew0KPiAtICBib29sIHNoYWRvd19zdGFja19lbmFi bGVkOw0KPiAtICBzdGQ6Om9wdGlvbmFsPENPUkVfQUREUj4gc3NwDQo+IC0gICAgPSBhbWQ2NF9s aW51eF9nZXRfc2hhZG93X3N0YWNrX3BvaW50ZXIgKGdkYmFyY2gsIHJlZ2NhY2hlLA0KPiAtCQkJ CQkgICAgc2hhZG93X3N0YWNrX2VuYWJsZWQpOw0KPiAtDQo+IC0gIC8qIEZvciBhbWQ2NC9MaW51 eCwgaWYgU1NQIGhhcyBhIHZhbHVlIHRoYXQgbWVhbnMgc2hhZG93IHN0YWNrIGlzDQo+IC0gICAg IGVuYWJsZWQuICAqLw0KPiAtICBpZiAoIXNzcC5oYXNfdmFsdWUgKCkpDQo+IC0gICAgcmV0dXJu Ow0KPiAtICBlbHNlDQo+IC0gICAgZ2RiX2Fzc2VydCAoc2hhZG93X3N0YWNrX2VuYWJsZWQpOw0K PiAtDQo+IC0gIC8qIFRoZSBzaGFkb3cgc3RhY2sgZ3Jvd3MgZG93bndhcmRzLiAgVG8gcHVzaCBh ZGRyZXNzZXMgdG8gdGhlIHN0YWNrLA0KPiAtICAgICB3ZSBuZWVkIHRvIGRlY3JlbWVudCBTU1Au ICAqLw0KPiAtICBjb25zdCBpbnQgZWxlbWVudF9zaXplDQo+IC0gICAgPSBhbWQ2NF9saW51eF9z aGFkb3dfc3RhY2tfZWxlbWVudF9zaXplX2FsaWduZWQgKGdkYmFyY2gpOw0KPiAtICBjb25zdCBD T1JFX0FERFIgbmV3X3NzcCA9ICpzc3AgLSBlbGVtZW50X3NpemU7DQo+IC0NCj4gLSAgLyogVXNp bmcgL3Byb2MvUElEL3NtYXBzIHdlIGNhbiBvbmx5IGNoZWNrIGlmIE5FV19TU1AgcG9pbnRzIHRv IHNoYWRvdw0KPiAtICAgICBzdGFjayBtZW1vcnkuICBJZiBpdCBkb2Vzbid0LCB3ZSBhc3N1bWUg dGhlIHN0YWNrIGlzIGZ1bGwuICAqLw0KPiAtICBzdGQ6OnBhaXI8Q09SRV9BRERSLCBDT1JFX0FE RFI+IG1lbXJhbmdlOw0KPiAtICBpZiAoIWxpbnV4X2FkZHJlc3NfaW5fc2hhZG93X3N0YWNrX21l bV9yYW5nZSAobmV3X3NzcCwgJm1lbXJhbmdlKSkNCj4gLSAgICBlcnJvciAoXygiTm8gc3BhY2Ug bGVmdCBvbiB0aGUgc2hhZG93IHN0YWNrLiIpKTsNCj4gLQ0KPiAtICAvKiBPbiB4ODYgdGhlcmUg Y2FuIGJlIGEgc2hhZG93IHN0YWNrIHRva2VuIGF0IGJpdCA2My4gIEZvciB4MzIsICB0aGUNCj4g LSAgICAgYWRkcmVzcyBzaXplIGlzIG9ubHkgMzIgYml0LiAgIEFsd2F5cyB3cml0ZSBiYWNrIHRo ZSBmdWxsIDggYnl0ZXMgdG8NCj4gLSAgICAgaW5jbHVkZSB0aGUgc2hhZG93IHN0YWNrIHRva2Vu LiAgKi8NCj4gLSAgY29uc3QgYmZkX2VuZGlhbiBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29y ZGVyIChnZGJhcmNoKTsNCj4gLSAgd3JpdGVfbWVtb3J5X3Vuc2lnbmVkX2ludGVnZXIgKG5ld19z c3AsIGVsZW1lbnRfc2l6ZSwgYnl0ZV9vcmRlciwNCj4gLQkJCQkgKFVMT05HRVNUKSBuZXdfYWRk cik7DQo+IC0NCj4gLSAgaTM4Nl9nZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXA8aTM4 Nl9nZGJhcmNoX3RkZXA+IChnZGJhcmNoKTsNCj4gLSAgZ2RiX2Fzc2VydCAodGRlcC0+c3NwX3Jl Z251bSA+IC0xKTsNCj4gLQ0KPiAtICByZWdjYWNoZV9yYXdfd3JpdGVfdW5zaWduZWQgKHJlZ2Nh Y2hlLCB0ZGVwLT5zc3BfcmVnbnVtLCBuZXdfc3NwKTsgLX0NCj4gLQ0KPiAtLyogSW1wbGVtZW50 IHNoYWRvdyBzdGFjayBwb2ludGVyIHVud2luZGluZy4gIEZvciBlYWNoIG5ldyBzaGFkb3cgc3Rh Y2sNCj4gLSAgIHBvaW50ZXIgY2hlY2sgaWYgaXRzIGFkZHJlc3MgaXMgc3RpbGwgaW4gdGhlIHNo YWRvdyBzdGFjayBtZW1vcnkgcmFuZ2UuDQo+IC0gICBJZiBpdCdzIG91dHNpZGUgdGhlIHJhbmdl IHNldCB0aGUgcmV0dXJuZWQgdmFsdWUgdG8gdW5hdmFpbGFibGUsDQo+IC0gICBvdGhlcndpc2Ug cmV0dXJuIGEgdmFsdWUgY29udGFpbmluZyB0aGUgbmV3IHNoYWRvdyBzdGFjayBwb2ludGVyLiAg Ki8NCj4gLQ0KPiAtc3RhdGljIHZhbHVlICoNCj4gLWFtZDY0X2xpbnV4X2R3YXJmMl9wcmV2X3Nz cCAoY29uc3QgZnJhbWVfaW5mb19wdHIgJnRoaXNfZnJhbWUsDQo+IC0JCQkgICAgIHZvaWQgKip0 aGlzX2NhY2hlLCBpbnQgcmVnbnVtKQ0KPiAtew0KPiAtICB2YWx1ZSAqdiA9IGZyYW1lX3Vud2lu ZF9nb3RfcmVnaXN0ZXIgKHRoaXNfZnJhbWUsIHJlZ251bSwgcmVnbnVtKTsNCj4gLSAgZ2RiX2Fz c2VydCAodiAhPSBudWxscHRyKTsNCj4gLQ0KPiAtICBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X2Zy YW1lX2FyY2ggKHRoaXNfZnJhbWUpOw0KPiAtDQo+IC0gIGlmICh2LT5lbnRpcmVseV9hdmFpbGFi bGUgKCkgJiYgIXYtPm9wdGltaXplZF9vdXQgKCkpDQo+IC0gICAgew0KPiAtICAgICAgaW50IHNp emUgPSByZWdpc3Rlcl9zaXplIChnZGJhcmNoLCByZWdudW0pOw0KPiAtICAgICAgYmZkX2VuZGlh biBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyIChnZGJhcmNoKTsNCj4gLSAgICAgIENP UkVfQUREUiBzc3AgPSBleHRyYWN0X3Vuc2lnbmVkX2ludGVnZXIgKHYtPmNvbnRlbnRzX2FsbCAo KS5kYXRhICgpLA0KPiAtCQkJCQkJc2l6ZSwgYnl0ZV9vcmRlcik7DQo+IC0NCj4gLSAgICAgIC8q IFVzaW5nIC9wcm9jL1BJRC9zbWFwcyB3ZSBjYW4gb25seSBjaGVjayBpZiB0aGUgY3VycmVudCBz aGFkb3cNCj4gLQkgc3RhY2sgcG9pbnRlciBTU1AgcG9pbnRzIHRvIHNoYWRvdyBzdGFjayBtZW1v cnkuICBPbmx5IGlmIHRoaXMgaXMNCj4gLQkgdGhlIGNhc2UgYSB2YWxpZCBwcmV2aW91cyBzaGFk b3cgc3RhY2sgcG9pbnRlciBjYW4gYmUNCj4gLQkgY2FsY3VsYXRlZC4gICovDQo+IC0gICAgICBz dGQ6OnBhaXI8Q09SRV9BRERSLCBDT1JFX0FERFI+IHJhbmdlOw0KPiAtICAgICAgaWYgKGxpbnV4 X2FkZHJlc3NfaW5fc2hhZG93X3N0YWNrX21lbV9yYW5nZSAoc3NwLCAmcmFuZ2UpKQ0KPiAtCXsN Cj4gLQkgIC8qIFRoZSBzaGFkb3cgc3RhY2sgZ3Jvd3MgZG93bndhcmRzLiAgVG8gY29tcHV0ZSB0 aGUgcHJldmlvdXMNCj4gLQkgICAgIHNoYWRvdyBzdGFjayBwb2ludGVyLCB3ZSBuZWVkIHRvIGlu Y3JlbWVudCBTU1AuICAqLw0KPiAtCSAgQ09SRV9BRERSIG5ld19zc3ANCj4gLQkgICAgPSBzc3Ag KyBhbWQ2NF9saW51eF9zaGFkb3dfc3RhY2tfZWxlbWVudF9zaXplX2FsaWduZWQNCj4gKGdkYmFy Y2gpOw0KPiAtDQo+IC0JICAvKiBUaGVyZSBjYW4gYmUgc2NlbmFyaW9zIHdoZXJlIHdlIGhhdmUg YSBzaGFkb3cgc3RhY2sgcG9pbnRlcg0KPiAtCSAgICAgYnV0IHRoZSBzaGFkb3cgc3RhY2sgaXMg ZW1wdHksIGFzIG5vIGNhbGwgaW5zdHJ1Y3Rpb24gaGFzDQo+IC0JICAgICBiZWVuIGV4ZWN1dGVk IHlldC4gIElmIE5FV19TU1AgcG9pbnRzIHRvIHRoZSBlbmQgb2Ygb3IgYmVmb3JlDQo+IC0JICAg ICAoPD0pIHRoZSBjdXJyZW50IHNoYWRvdyBzdGFjayBtZW1vcnkgcmFuZ2Ugd2UgY29uc2lkZXIN Cj4gLQkgICAgIE5FV19TU1AgYXMgdmFsaWQgKGJ1dCBlbXB0eSkuICAqLw0KPiAtCSAgaWYgKG5l d19zc3AgPD0gcmFuZ2Uuc2Vjb25kKQ0KPiAtCSAgICByZXR1cm4gZnJhbWVfdW53aW5kX2dvdF9h ZGRyZXNzICh0aGlzX2ZyYW1lLCByZWdudW0sIG5ld19zc3ApOw0KPiAtCX0NCj4gLSAgICB9DQo+ IC0NCj4gLSAgLyogUmV0dXJuIGEgdmFsdWUgd2hpY2ggaXMgbWFya2VkIGFzIHVuYXZhaWxhYmxl IGluIGNhc2Ugd2UgY291bGQgbm90DQo+IC0gICAgIGNhbGN1bGF0ZSBhIHZhbGlkIHByZXZpb3Vz IHNoYWRvdyBzdGFjayBwb2ludGVyLiAgKi8NCj4gLSAgdmFsdWUgKnJldHZhbA0KPiAtICAgID0g dmFsdWU6OmFsbG9jYXRlX3JlZ2lzdGVyIChnZXRfbmV4dF9mcmFtZV9zZW50aW5lbF9va2F5ICh0 aGlzX2ZyYW1lKSwNCj4gLQkJCQlyZWdudW0sIHJlZ2lzdGVyX3R5cGUgKGdkYmFyY2gsIHJlZ251 bSkpOw0KPiAtICByZXR2YWwtPm1hcmtfYnl0ZXNfdW5hdmFpbGFibGUgKDAsIHJldHZhbC0+dHlw ZSAoKS0+bGVuZ3RoICgpKTsNCj4gLSAgcmV0dXJuIHJldHZhbDsNCj4gLX0NCj4gLQ0KPiAtLyog SW1wbGVtZW50IHRoZSAiaW5pdF9yZWciIGR3YXJmMl9mcmFtZV9vcHMgbWV0aG9kLiAgKi8NCj4g LQ0KPiAtc3RhdGljIHZvaWQNCj4gLWFtZDY0X2luaXRfcmVnIChnZGJhcmNoICpnZGJhcmNoLCBp bnQgcmVnbnVtLCBkd2FyZjJfZnJhbWVfc3RhdGVfcmVnDQo+ICpyZWcsDQo+IC0JCWNvbnN0IGZy YW1lX2luZm9fcHRyICZ0aGlzX2ZyYW1lKQ0KPiArc3RhdGljIGJvb2wNCj4gK2FtZDY0X2xpbnV4 X3RvcF9hZGRyX2VtcHR5X3NoYWRvd19zdGFjaw0KPiArICAoZ2RiYXJjaCAqZ2RiYXJjaCwgY29u c3QgQ09SRV9BRERSIGFkZHIsDQo+ICsgICBjb25zdCBzdGQ6OnBhaXI8Q09SRV9BRERSLCBDT1JF X0FERFI+IHJhbmdlKQ0KPiAgew0KPiAtICBpZiAocmVnbnVtID09IGdkYmFyY2hfcGNfcmVnbnVt IChnZGJhcmNoKSkNCj4gLSAgICByZWctPmhvdyA9IERXQVJGMl9GUkFNRV9SRUdfUkE7DQo+IC0g IGVsc2UgaWYgKHJlZ251bSA9PSBnZGJhcmNoX3NwX3JlZ251bSAoZ2RiYXJjaCkpDQo+IC0gICAg cmVnLT5ob3cgPSBEV0FSRjJfRlJBTUVfUkVHX0NGQTsNCj4gLSAgZWxzZSBpZiAocmVnbnVtID09 IEFNRDY0X1BMM19TU1BfUkVHTlVNKQ0KPiAtICAgIHsNCj4gLSAgICAgIHJlZy0+aG93ID0gRFdB UkYyX0ZSQU1FX1JFR19GTjsNCj4gLSAgICAgIHJlZy0+bG9jLmZuID0gYW1kNjRfbGludXhfZHdh cmYyX3ByZXZfc3NwOw0KPiAtICAgIH0NCj4gKyAgcmV0dXJuIGFkZHIgPT0gcmFuZ2Uuc2Vjb25k Ow0KPiAgfQ0KPiANCj4gIHN0YXRpYyB2b2lkDQo+IEBAIC0yMTM3LDEwICsyMDIxLDExIEBAIGFt ZDY0X2xpbnV4X2luaXRfYWJpX2NvbW1vbiAoc3RydWN0DQo+IGdkYmFyY2hfaW5mbyBpbmZvLCBz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwNCj4gICAgc2V0X2dkYmFyY2hfcmVtb3ZlX25vbl9hZGRy ZXNzX2JpdHNfd2F0Y2hwb2ludA0KPiAgICAgIChnZGJhcmNoLCBhbWQ2NF9saW51eF9yZW1vdmVf bm9uX2FkZHJlc3NfYml0c193YXRjaHBvaW50KTsNCj4gDQo+IC0gIHNldF9nZGJhcmNoX3NoYWRv d19zdGFja19wdXNoIChnZGJhcmNoLA0KPiBhbWQ2NF9saW51eF9zaGFkb3dfc3RhY2tfcHVzaCk7 DQo+ICAgIHNldF9nZGJhcmNoX2dldF9zaGFkb3dfc3RhY2tfcG9pbnRlciAoZ2RiYXJjaCwNCj4g DQo+IAlhbWQ2NF9saW51eF9nZXRfc2hhZG93X3N0YWNrX3BvaW50ZXIpOw0KPiAtICBkd2FyZjJf ZnJhbWVfc2V0X2luaXRfcmVnIChnZGJhcmNoLCBhbWQ2NF9pbml0X3JlZyk7DQo+ICsNCj4gKyAg c2V0X2dkYmFyY2hfdG9wX2FkZHJfZW1wdHlfc2hhZG93X3N0YWNrDQo+ICsgICAgKGdkYmFyY2gs IGFtZDY0X2xpbnV4X3RvcF9hZGRyX2VtcHR5X3NoYWRvd19zdGFjayk7DQo+ICB9DQo+IA0KPiAg c3RhdGljIHZvaWQNCj4gZGlmZiAtLWdpdCBhL2dkYi9hbWQ2NC10ZGVwLmMgYi9nZGIvYW1kNjQt dGRlcC5jIGluZGV4DQo+IGZmMmU5ZGVlMTE3Li5kYjA0MTYxODEyMyAxMDA3NTUNCj4gLS0tIGEv Z2RiL2FtZDY0LXRkZXAuYw0KPiArKysgYi9nZGIvYW1kNjQtdGRlcC5jDQo+IEBAIC01MSw2ICs1 MSw4IEBADQo+ICAjaW5jbHVkZSAieDg2LXRkZXAuaCINCj4gICNpbmNsdWRlICJhbWQ2NC1yYXZl bnNjYXItdGhyZWFkLmgiDQo+ICAjaW5jbHVkZSAiZ2Ric3VwcG9ydC9zZWxmdGVzdC5oIg0KPiAr I2luY2x1ZGUgInNoYWRvdy1zdGFjay5oIg0KPiArI2luY2x1ZGUgImR3YXJmMi9mcmFtZS5oIg0K PiANCj4gIC8qIE5vdGUgdGhhdCB0aGUgQU1ENjQgYXJjaGl0ZWN0dXJlIHdhcyBwcmV2aW91c2x5 IGtub3duIGFzIHg4Ni02NC4NCj4gICAgIFRoZSBsYXR0ZXIgaXMgKGZvcmV2ZXIpIGVuZ3JhdmVk IGludG8gdGhlIGNhbm9uaWNhbCBzeXN0ZW0gbmFtZSBhcyBAQCAtDQo+IDM0OTEsNiArMzQ5Mywy MSBAQCBhbWQ2NF9pbl9pbmRpcmVjdF9icmFuY2hfdGh1bmsgKHN0cnVjdCBnZGJhcmNoDQo+ICpn ZGJhcmNoLCBDT1JFX0FERFIgcGMpDQo+ICAJCQkJICAgICAgIEFNRDY0X1JJUF9SRUdOVU0pOw0K PiAgfQ0KPiANCj4gK3N0YXRpYyB2b2lkDQo+ICthbWQ2NF9pbml0X3JlZyAoZ2RiYXJjaCAqZ2Ri YXJjaCwgaW50IHJlZ251bSwgZHdhcmYyX2ZyYW1lX3N0YXRlX3JlZw0KPiAqcmVnLA0KPiArCQlj b25zdCBmcmFtZV9pbmZvX3B0ciAmdGhpc19mcmFtZSkNCj4gK3sNCj4gKyAgaWYgKHJlZ251bSA9 PSBnZGJhcmNoX3BjX3JlZ251bSAoZ2RiYXJjaCkpDQo+ICsgICAgcmVnLT5ob3cgPSBEV0FSRjJf RlJBTUVfUkVHX1JBOw0KPiArICBlbHNlIGlmIChyZWdudW0gPT0gZ2RiYXJjaF9zcF9yZWdudW0g KGdkYmFyY2gpKQ0KPiArICAgIHJlZy0+aG93ID0gRFdBUkYyX0ZSQU1FX1JFR19DRkE7DQo+ICsg IGVsc2UgaWYgKHJlZ251bSA9PSBBTUQ2NF9QTDNfU1NQX1JFR05VTSkNCj4gKyAgICB7DQo+ICsg ICAgICByZWctPmhvdyA9IERXQVJGMl9GUkFNRV9SRUdfRk47DQo+ICsgICAgICByZWctPmxvYy5m biA9IGR3YXJmMl9wcmV2X3NzcDsNCj4gKyAgICB9DQo+ICt9DQo+ICsNCj4gIHZvaWQNCj4gIGFt ZDY0X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoLA0KPiAgCQljb25zdCB0YXJnZXRfZGVzYyAqZGVmYXVsdF90ZGVzYykNCj4gQEAgLTM2 NTAsNiArMzY2Nyw5IEBAIGFtZDY0X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8s IHN0cnVjdA0KPiBnZGJhcmNoICpnZGJhcmNoLA0KPiAgICBzZXRfZ2RiYXJjaF9pbl9pbmRpcmVj dF9icmFuY2hfdGh1bmsgKGdkYmFyY2gsDQo+ICAJCQkJCWFtZDY0X2luX2luZGlyZWN0X2JyYW5j aF90aHVuayk7DQo+IA0KPiArICBzZXRfZ2RiYXJjaF9zc3BfcmVnbnVtIChnZGJhcmNoLCB0ZGVw LT5zc3BfcmVnbnVtKTsNCj4gKyBkd2FyZjJfZnJhbWVfc2V0X2luaXRfcmVnIChnZGJhcmNoLCBh bWQ2NF9pbml0X3JlZyk7DQo+ICsNCj4gICAgcmVnaXN0ZXJfYW1kNjRfcmF2ZW5zY2FyX29wcyAo Z2RiYXJjaCk7ICB9DQo+IA0KPiBkaWZmIC0tZ2l0IGEvZ2RiL2dkYmFyY2gtZ2VuLmMgYi9nZGIv Z2RiYXJjaC1nZW4uYyBpbmRleA0KPiBmYjNkMDcwYjNjOS4uNzk0YmI0ZDUwZGMgMTAwNjQ0DQo+ IC0tLSBhL2dkYi9nZGJhcmNoLWdlbi5jDQo+ICsrKyBiL2dkYi9nZGJhcmNoLWdlbi5jDQo+IEBA IC04NSw2ICs4NSw3IEBAIHN0cnVjdCBnZGJhcmNoDQo+ICAgIGludCBwY19yZWdudW0gPSAtMTsN Cj4gICAgaW50IHBzX3JlZ251bSA9IC0xOw0KPiAgICBpbnQgZnAwX3JlZ251bSA9IC0xOw0KPiAr ICBpbnQgc3NwX3JlZ251bSA9IC0xOw0KPiAgICBnZGJhcmNoX2R3YXJmMl9yZWdfdG9fcmVnbnVt X2Z0eXBlICpkd2FyZjJfcmVnX3RvX3JlZ251bSA9DQo+IG5vX29wX3JlZ190b19yZWdudW07DQo+ ICAgIGdkYmFyY2hfcmVnaXN0ZXJfbmFtZV9mdHlwZSAqcmVnaXN0ZXJfbmFtZSA9IG51bGxwdHI7 DQo+ICAgIGdkYmFyY2hfcmVnaXN0ZXJfdHlwZV9mdHlwZSAqcmVnaXN0ZXJfdHlwZSA9IG51bGxw dHI7IEBAIC0yNTcsOCArMjU4LDEwDQo+IEBAIHN0cnVjdCBnZGJhcmNoDQo+ICAgIGdkYmFyY2hf cmVhZF9jb3JlX2ZpbGVfbWFwcGluZ3NfZnR5cGUgKnJlYWRfY29yZV9maWxlX21hcHBpbmdzID0N Cj4gZGVmYXVsdF9yZWFkX2NvcmVfZmlsZV9tYXBwaW5nczsNCj4gICAgZ2RiYXJjaF91c2VfdGFy Z2V0X2Rlc2NyaXB0aW9uX2Zyb21fY29yZWZpbGVfbm90ZXNfZnR5cGUNCj4gKnVzZV90YXJnZXRf ZGVzY3JpcHRpb25fZnJvbV9jb3JlZmlsZV9ub3RlcyA9DQo+IGRlZmF1bHRfdXNlX3RhcmdldF9k ZXNjcmlwdGlvbl9mcm9tX2NvcmVmaWxlX25vdGVzOw0KPiAgICBnZGJhcmNoX2NvcmVfcGFyc2Vf ZXhlY19jb250ZXh0X2Z0eXBlICpjb3JlX3BhcnNlX2V4ZWNfY29udGV4dCA9DQo+IGRlZmF1bHRf Y29yZV9wYXJzZV9leGVjX2NvbnRleHQ7DQo+IC0gIGdkYmFyY2hfc2hhZG93X3N0YWNrX3B1c2hf ZnR5cGUgKnNoYWRvd19zdGFja19wdXNoID0gbnVsbHB0cjsNCj4gICAgZ2RiYXJjaF9nZXRfc2hh ZG93X3N0YWNrX3BvaW50ZXJfZnR5cGUgKmdldF9zaGFkb3dfc3RhY2tfcG9pbnRlciA9DQo+IGRl ZmF1bHRfZ2V0X3NoYWRvd19zdGFja19wb2ludGVyOw0KPiArICBnZGJhcmNoX2FkZHJlc3NfaW5f c2hhZG93X3N0YWNrX21lbW9yeV9yYW5nZV9mdHlwZQ0KPiArICphZGRyZXNzX2luX3NoYWRvd19z dGFja19tZW1vcnlfcmFuZ2UgPSBudWxscHRyOw0KPiArIGdkYmFyY2hfdG9wX2FkZHJfZW1wdHlf c2hhZG93X3N0YWNrX2Z0eXBlDQo+ICp0b3BfYWRkcl9lbXB0eV9zaGFkb3dfc3RhY2sNCj4gKyA9 IG51bGxwdHI7ICBpbnQgc2hhZG93X3N0YWNrX2VsZW1lbnRfc2l6ZV9hbGlnbmVkID0gODsNCj4g IH07DQo+IA0KPiAgLyogQ3JlYXRlIGEgbmV3IGBgc3RydWN0IGdkYmFyY2gnJyBiYXNlZCBvbiBp bmZvcm1hdGlvbiBwcm92aWRlZCBieSBAQCAtDQo+IDM0NCw2ICszNDcsNyBAQCB2ZXJpZnlfZ2Ri YXJjaCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpDQo+ICAgIC8qIFNraXAgdmVyaWZ5IG9mIHBj X3JlZ251bSwgaW52YWxpZF9wID09IDAuICAqLw0KPiAgICAvKiBTa2lwIHZlcmlmeSBvZiBwc19y ZWdudW0sIGludmFsaWRfcCA9PSAwLiAgKi8NCj4gICAgLyogU2tpcCB2ZXJpZnkgb2YgZnAwX3Jl Z251bSwgaW52YWxpZF9wID09IDAuICAqLw0KPiArICAvKiBTa2lwIHZlcmlmeSBvZiBzc3BfcmVn bnVtLCBpbnZhbGlkX3AgPT0gMC4gICovDQo+ICAgIC8qIFNraXAgdmVyaWZ5IG9mIGR3YXJmMl9y ZWdfdG9fcmVnbnVtLCBpbnZhbGlkX3AgPT0gMC4gICovDQo+ICAgIGlmIChnZGJhcmNoLT5yZWdp c3Rlcl9uYW1lID09IDApDQo+ICAgICAgbG9nLnB1dHMgKCJcblx0cmVnaXN0ZXJfbmFtZSIpOw0K PiBAQCAtNTI3LDggKzUzMSwxMCBAQCB2ZXJpZnlfZ2RiYXJjaCAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gpDQo+ICAgIC8qIFNraXAgdmVyaWZ5IG9mIHJlYWRfY29yZV9maWxlX21hcHBpbmdzLCBp bnZhbGlkX3AgPT0gMC4gICovDQo+ICAgIC8qIFNraXAgdmVyaWZ5IG9mIHVzZV90YXJnZXRfZGVz Y3JpcHRpb25fZnJvbV9jb3JlZmlsZV9ub3RlcywgaW52YWxpZF9wID09DQo+IDAuICAqLw0KPiAg ICAvKiBTa2lwIHZlcmlmeSBvZiBjb3JlX3BhcnNlX2V4ZWNfY29udGV4dCwgaW52YWxpZF9wID09 IDAuICAqLw0KPiAtICAvKiBTa2lwIHZlcmlmeSBvZiBzaGFkb3dfc3RhY2tfcHVzaCwgaGFzIHBy ZWRpY2F0ZS4gICovDQo+ICAgIC8qIFNraXAgdmVyaWZ5IG9mIGdldF9zaGFkb3dfc3RhY2tfcG9p bnRlciwgaW52YWxpZF9wID09IDAuICAqLw0KPiArICAvKiBTa2lwIHZlcmlmeSBvZiBhZGRyZXNz X2luX3NoYWRvd19zdGFja19tZW1vcnlfcmFuZ2UsIGhhcw0KPiArIHByZWRpY2F0ZS4gICovDQo+ ICsgIC8qIFNraXAgdmVyaWZ5IG9mIHRvcF9hZGRyX2VtcHR5X3NoYWRvd19zdGFjaywgaGFzIHBy ZWRpY2F0ZS4gICovDQo+ICsgIC8qIFNraXAgdmVyaWZ5IG9mIHNoYWRvd19zdGFja19lbGVtZW50 X3NpemVfYWxpZ25lZCwgaW52YWxpZF9wID09IDAuDQo+ICsgKi8NCj4gICAgaWYgKCFsb2cuZW1w dHkgKCkpDQo+ICAgICAgaW50ZXJuYWxfZXJyb3IgKF8oInZlcmlmeV9nZGJhcmNoOiB0aGUgZm9s bG93aW5nIGFyZSBpbnZhbGlkIC4uLiVzIiksDQo+ICAJCSAgICBsb2cuY19zdHIgKCkpOw0KPiBA QCAtNzAxLDYgKzcwNyw5IEBAIGdkYmFyY2hfZHVtcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs IHN0cnVjdA0KPiB1aV9maWxlICpmaWxlKQ0KPiAgICBnZGJfcHJpbnRmIChmaWxlLA0KPiAgCSAg ICAgICJnZGJhcmNoX2R1bXA6IGZwMF9yZWdudW0gPSAlc1xuIiwNCj4gIAkgICAgICBwbG9uZ2Vz dCAoZ2RiYXJjaC0+ZnAwX3JlZ251bSkpOw0KPiArICBnZGJfcHJpbnRmIChmaWxlLA0KPiArCSAg ICAgICJnZGJhcmNoX2R1bXA6IHNzcF9yZWdudW0gPSAlc1xuIiwNCj4gKwkgICAgICBwbG9uZ2Vz dCAoZ2RiYXJjaC0+c3NwX3JlZ251bSkpOw0KPiAgICBnZGJfcHJpbnRmIChmaWxlLA0KPiAgCSAg ICAgICJnZGJhcmNoX2R1bXA6IGR3YXJmMl9yZWdfdG9fcmVnbnVtID0gPCVzPlxuIiwNCj4gIAkg ICAgICBob3N0X2FkZHJlc3NfdG9fc3RyaW5nIChnZGJhcmNoLT5kd2FyZjJfcmVnX3RvX3JlZ251 bSkpOyBAQA0KPiAtMTM4NSwxNSArMTM5NCwyNCBAQCBnZGJhcmNoX2R1bXAgKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoLCBzdHJ1Y3QNCj4gdWlfZmlsZSAqZmlsZSkNCj4gICAgZ2RiX3ByaW50ZiAo ZmlsZSwNCj4gIAkgICAgICAiZ2RiYXJjaF9kdW1wOiBjb3JlX3BhcnNlX2V4ZWNfY29udGV4dCA9 IDwlcz5cbiIsDQo+ICAJICAgICAgaG9zdF9hZGRyZXNzX3RvX3N0cmluZyAoZ2RiYXJjaC0+Y29y ZV9wYXJzZV9leGVjX2NvbnRleHQpKTsNCj4gLSAgZ2RiX3ByaW50ZiAoZmlsZSwNCj4gLQkgICAg ICAiZ2RiYXJjaF9kdW1wOiBnZGJhcmNoX3NoYWRvd19zdGFja19wdXNoX3AoKSA9ICVkXG4iLA0K PiAtCSAgICAgIGdkYmFyY2hfc2hhZG93X3N0YWNrX3B1c2hfcCAoZ2RiYXJjaCkpOw0KPiAtICBn ZGJfcHJpbnRmIChmaWxlLA0KPiAtCSAgICAgICJnZGJhcmNoX2R1bXA6IHNoYWRvd19zdGFja19w dXNoID0gPCVzPlxuIiwNCj4gLQkgICAgICBob3N0X2FkZHJlc3NfdG9fc3RyaW5nIChnZGJhcmNo LT5zaGFkb3dfc3RhY2tfcHVzaCkpOw0KPiAgICBnZGJfcHJpbnRmIChmaWxlLA0KPiAgCSAgICAg ICJnZGJhcmNoX2R1bXA6IGdldF9zaGFkb3dfc3RhY2tfcG9pbnRlciA9IDwlcz5cbiIsDQo+ICAJ ICAgICAgaG9zdF9hZGRyZXNzX3RvX3N0cmluZyAoZ2RiYXJjaC0+Z2V0X3NoYWRvd19zdGFja19w b2ludGVyKSk7DQo+ICsgIGdkYl9wcmludGYgKGZpbGUsDQo+ICsJICAgICAgImdkYmFyY2hfZHVt cDoNCj4gZ2RiYXJjaF9hZGRyZXNzX2luX3NoYWRvd19zdGFja19tZW1vcnlfcmFuZ2VfcCgpID0g JWRcbiIsDQo+ICsJICAgICAgZ2RiYXJjaF9hZGRyZXNzX2luX3NoYWRvd19zdGFja19tZW1vcnlf cmFuZ2VfcCAoZ2RiYXJjaCkpOw0KPiArICBnZGJfcHJpbnRmIChmaWxlLA0KPiArCSAgICAgICJn ZGJhcmNoX2R1bXA6IGFkZHJlc3NfaW5fc2hhZG93X3N0YWNrX21lbW9yeV9yYW5nZSA9DQo+IDwl cz5cbiIsDQo+ICsJICAgICAgaG9zdF9hZGRyZXNzX3RvX3N0cmluZw0KPiArKGdkYmFyY2gtPmFk ZHJlc3NfaW5fc2hhZG93X3N0YWNrX21lbW9yeV9yYW5nZSkpOw0KPiArICBnZGJfcHJpbnRmIChm aWxlLA0KPiArCSAgICAgICJnZGJhcmNoX2R1bXA6IGdkYmFyY2hfdG9wX2FkZHJfZW1wdHlfc2hh ZG93X3N0YWNrX3AoKSA9DQo+ICVkXG4iLA0KPiArCSAgICAgIGdkYmFyY2hfdG9wX2FkZHJfZW1w dHlfc2hhZG93X3N0YWNrX3AgKGdkYmFyY2gpKTsNCj4gKyAgZ2RiX3ByaW50ZiAoZmlsZSwNCj4g KwkgICAgICAiZ2RiYXJjaF9kdW1wOiB0b3BfYWRkcl9lbXB0eV9zaGFkb3dfc3RhY2sgPSA8JXM+ XG4iLA0KPiArCSAgICAgIGhvc3RfYWRkcmVzc190b19zdHJpbmcgKGdkYmFyY2gtDQo+ID50b3Bf YWRkcl9lbXB0eV9zaGFkb3dfc3RhY2spKTsNCj4gKyAgZ2RiX3ByaW50ZiAoZmlsZSwNCj4gKwkg ICAgICAiZ2RiYXJjaF9kdW1wOiBzaGFkb3dfc3RhY2tfZWxlbWVudF9zaXplX2FsaWduZWQgPSAl c1xuIiwNCj4gKwkgICAgICBwbG9uZ2VzdCAoZ2RiYXJjaC0+c2hhZG93X3N0YWNrX2VsZW1lbnRf c2l6ZV9hbGlnbmVkKSk7DQo+ICAgIGlmIChnZGJhcmNoLT5kdW1wX3RkZXAgIT0gTlVMTCkNCj4g ICAgICBnZGJhcmNoLT5kdW1wX3RkZXAgKGdkYmFyY2gsIGZpbGUpOyAgfSBAQCAtMjE0MSw2ICsy MTU5LDIzIEBADQo+IHNldF9nZGJhcmNoX2ZwMF9yZWdudW0gKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLA0KPiAgICBnZGJhcmNoLT5mcDBfcmVnbnVtID0gZnAwX3JlZ251bTsNCj4gIH0NCj4gDQo+ ICtpbnQNCj4gK2dkYmFyY2hfc3NwX3JlZ251bSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpIHsN Cj4gKyAgZ2RiX2Fzc2VydCAoZ2RiYXJjaCAhPSBOVUxMKTsNCj4gKyAgLyogU2tpcCB2ZXJpZnkg b2Ygc3NwX3JlZ251bSwgaW52YWxpZF9wID09IDAuICAqLw0KPiArICBpZiAoZ2RiYXJjaF9kZWJ1 ZyA+PSAyKQ0KPiArICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csICJnZGJhcmNoX3NzcF9yZWdu dW0gY2FsbGVkXG4iKTsNCj4gKyAgcmV0dXJuIGdkYmFyY2gtPnNzcF9yZWdudW07DQo+ICt9DQo+ ICsNCj4gK3ZvaWQNCj4gK3NldF9nZGJhcmNoX3NzcF9yZWdudW0gKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoLA0KPiArCQkJaW50IHNzcF9yZWdudW0pDQo+ICt7DQo+ICsgIGdkYmFyY2gtPnNzcF9y ZWdudW0gPSBzc3BfcmVnbnVtOw0KPiArfQ0KPiArDQo+ICBpbnQNCj4gIGdkYmFyY2hfZHdhcmYy X3JlZ190b19yZWdudW0gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBpbnQNCj4gZHdhcmYyX3Jl Z25yKSAgeyBAQCAtNTQ1NSw0MyArNTQ5MCw4NCBAQA0KPiBzZXRfZ2RiYXJjaF9jb3JlX3BhcnNl X2V4ZWNfY29udGV4dCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsDQo+ICAgIGdkYmFyY2gtPmNv cmVfcGFyc2VfZXhlY19jb250ZXh0ID0gY29yZV9wYXJzZV9leGVjX2NvbnRleHQ7ICB9DQo+IA0K PiArc3RkOjpvcHRpb25hbDxDT1JFX0FERFI+DQo+ICtnZGJhcmNoX2dldF9zaGFkb3dfc3RhY2tf cG9pbnRlciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHJlZ2NhY2hlDQo+ICsqcmVnY2FjaGUs IGJvb2wgJnNoYWRvd19zdGFja19lbmFibGVkKSB7DQo+ICsgIGdkYl9hc3NlcnQgKGdkYmFyY2gg IT0gTlVMTCk7DQo+ICsgIGdkYl9hc3NlcnQgKGdkYmFyY2gtPmdldF9zaGFkb3dfc3RhY2tfcG9p bnRlciAhPSBOVUxMKTsNCj4gKyAgaWYgKGdkYmFyY2hfZGVidWcgPj0gMikNCj4gKyAgICBnZGJf cHJpbnRmIChnZGJfc3RkbG9nLCAiZ2RiYXJjaF9nZXRfc2hhZG93X3N0YWNrX3BvaW50ZXINCj4g K2NhbGxlZFxuIik7DQo+ICsgIHJldHVybiBnZGJhcmNoLT5nZXRfc2hhZG93X3N0YWNrX3BvaW50 ZXIgKGdkYmFyY2gsIHJlZ2NhY2hlLA0KPiArc2hhZG93X3N0YWNrX2VuYWJsZWQpOyB9DQo+ICsN Cj4gK3ZvaWQNCj4gK3NldF9nZGJhcmNoX2dldF9zaGFkb3dfc3RhY2tfcG9pbnRlciAoc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2gsDQo+ICsNCj4gZ2RiYXJjaF9nZXRfc2hhZG93X3N0YWNrX3BvaW50 ZXJfZnR5cGUNCj4gK2dldF9zaGFkb3dfc3RhY2tfcG9pbnRlcikgew0KPiArICBnZGJhcmNoLT5n ZXRfc2hhZG93X3N0YWNrX3BvaW50ZXIgPSBnZXRfc2hhZG93X3N0YWNrX3BvaW50ZXI7IH0NCj4g Kw0KPiAgYm9vbA0KPiAtZ2RiYXJjaF9zaGFkb3dfc3RhY2tfcHVzaF9wIChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCkNCj4gK2dkYmFyY2hfYWRkcmVzc19pbl9zaGFkb3dfc3RhY2tfbWVtb3J5X3Jh bmdlX3AgKHN0cnVjdCBnZGJhcmNoDQo+ICsqZ2RiYXJjaCkNCj4gIHsNCj4gICAgZ2RiX2Fzc2Vy dCAoZ2RiYXJjaCAhPSBOVUxMKTsNCj4gLSAgcmV0dXJuIGdkYmFyY2gtPnNoYWRvd19zdGFja19w dXNoICE9IE5VTEw7DQo+ICsgIHJldHVybiBnZGJhcmNoLT5hZGRyZXNzX2luX3NoYWRvd19zdGFj a19tZW1vcnlfcmFuZ2UgIT0gTlVMTDsgfQ0KPiArDQo+ICtib29sDQo+ICtnZGJhcmNoX2FkZHJl c3NfaW5fc2hhZG93X3N0YWNrX21lbW9yeV9yYW5nZSAoc3RydWN0IGdkYmFyY2gNCj4gKmdkYmFy Y2gsDQo+ICtDT1JFX0FERFIgQUREUiwgc3RkOjpwYWlyPENPUkVfQUREUiwgQ09SRV9BRERSPiAq cmFuZ2UpIHsNCj4gKyAgZ2RiX2Fzc2VydCAoZ2RiYXJjaCAhPSBOVUxMKTsNCj4gKyAgZ2RiX2Fz c2VydCAoZ2RiYXJjaC0+YWRkcmVzc19pbl9zaGFkb3dfc3RhY2tfbWVtb3J5X3JhbmdlICE9IE5V TEwpOw0KPiArICBpZiAoZ2RiYXJjaF9kZWJ1ZyA+PSAyKQ0KPiArICAgIGdkYl9wcmludGYgKGdk Yl9zdGRsb2csDQo+ICsiZ2RiYXJjaF9hZGRyZXNzX2luX3NoYWRvd19zdGFja19tZW1vcnlfcmFu Z2UgY2FsbGVkXG4iKTsNCj4gKyAgcmV0dXJuIGdkYmFyY2gtPmFkZHJlc3NfaW5fc2hhZG93X3N0 YWNrX21lbW9yeV9yYW5nZSAoQUREUiwgcmFuZ2UpOw0KPiAgfQ0KPiANCj4gIHZvaWQNCj4gLWdk YmFyY2hfc2hhZG93X3N0YWNrX3B1c2ggKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FE RFINCj4gbmV3X2FkZHIsIHJlZ2NhY2hlICpyZWdjYWNoZSkNCj4gK3NldF9nZGJhcmNoX2FkZHJl c3NfaW5fc2hhZG93X3N0YWNrX21lbW9yeV9yYW5nZSAoc3RydWN0IGdkYmFyY2gNCj4gKmdkYmFy Y2gsDQo+ICsNCj4gZ2RiYXJjaF9hZGRyZXNzX2luX3NoYWRvd19zdGFja19tZW1vcnlfcmFuZ2Vf ZnR5cGUNCj4gK2FkZHJlc3NfaW5fc2hhZG93X3N0YWNrX21lbW9yeV9yYW5nZSkNCj4gK3sNCj4g KyAgZ2RiYXJjaC0+YWRkcmVzc19pbl9zaGFkb3dfc3RhY2tfbWVtb3J5X3JhbmdlID0NCj4gK2Fk ZHJlc3NfaW5fc2hhZG93X3N0YWNrX21lbW9yeV9yYW5nZTsNCj4gK30NCj4gKw0KPiArYm9vbA0K PiArZ2RiYXJjaF90b3BfYWRkcl9lbXB0eV9zaGFkb3dfc3RhY2tfcCAoc3RydWN0IGdkYmFyY2gg KmdkYmFyY2gpDQo+ICB7DQo+ICAgIGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0gTlVMTCk7DQo+IC0g IGdkYl9hc3NlcnQgKGdkYmFyY2gtPnNoYWRvd19zdGFja19wdXNoICE9IE5VTEwpOw0KPiArICBy ZXR1cm4gZ2RiYXJjaC0+dG9wX2FkZHJfZW1wdHlfc2hhZG93X3N0YWNrICE9IE5VTEw7IH0NCj4g Kw0KPiArYm9vbA0KPiArZ2RiYXJjaF90b3BfYWRkcl9lbXB0eV9zaGFkb3dfc3RhY2sgKHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoLCBjb25zdA0KPiArQ09SRV9BRERSIGFkZHIsIGNvbnN0IHN0ZDo6 cGFpcjxDT1JFX0FERFIsIENPUkVfQUREUj4gcmFuZ2UpIHsNCj4gKyAgZ2RiX2Fzc2VydCAoZ2Ri YXJjaCAhPSBOVUxMKTsNCj4gKyAgZ2RiX2Fzc2VydCAoZ2RiYXJjaC0+dG9wX2FkZHJfZW1wdHlf c2hhZG93X3N0YWNrICE9IE5VTEwpOw0KPiAgICBpZiAoZ2RiYXJjaF9kZWJ1ZyA+PSAyKQ0KPiAt ICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csICJnZGJhcmNoX3NoYWRvd19zdGFja19wdXNoIGNh bGxlZFxuIik7DQo+IC0gIGdkYmFyY2gtPnNoYWRvd19zdGFja19wdXNoIChnZGJhcmNoLCBuZXdf YWRkciwgcmVnY2FjaGUpOw0KPiArICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csICJnZGJhcmNo X3RvcF9hZGRyX2VtcHR5X3NoYWRvd19zdGFjaw0KPiArIGNhbGxlZFxuIik7ICByZXR1cm4gZ2Ri YXJjaC0+dG9wX2FkZHJfZW1wdHlfc2hhZG93X3N0YWNrIChnZGJhcmNoLA0KPiArIGFkZHIsIHJh bmdlKTsNCj4gIH0NCj4gDQo+ICB2b2lkDQo+IC1zZXRfZ2RiYXJjaF9zaGFkb3dfc3RhY2tfcHVz aCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsDQo+IC0JCQkgICAgICAgZ2RiYXJjaF9zaGFkb3df c3RhY2tfcHVzaF9mdHlwZQ0KPiBzaGFkb3dfc3RhY2tfcHVzaCkNCj4gK3NldF9nZGJhcmNoX3Rv cF9hZGRyX2VtcHR5X3NoYWRvd19zdGFjayAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsDQo+ICsN Cj4gZ2RiYXJjaF90b3BfYWRkcl9lbXB0eV9zaGFkb3dfc3RhY2tfZnR5cGUNCj4gK3RvcF9hZGRy X2VtcHR5X3NoYWRvd19zdGFjaykNCj4gIHsNCj4gLSAgZ2RiYXJjaC0+c2hhZG93X3N0YWNrX3B1 c2ggPSBzaGFkb3dfc3RhY2tfcHVzaDsNCj4gKyAgZ2RiYXJjaC0+dG9wX2FkZHJfZW1wdHlfc2hh ZG93X3N0YWNrID0NCj4gdG9wX2FkZHJfZW1wdHlfc2hhZG93X3N0YWNrOw0KPiAgfQ0KPiANCj4g LXN0ZDo6b3B0aW9uYWw8Q09SRV9BRERSPg0KPiAtZ2RiYXJjaF9nZXRfc2hhZG93X3N0YWNrX3Bv aW50ZXIgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCByZWdjYWNoZQ0KPiAqcmVnY2FjaGUsIGJv b2wgJnNoYWRvd19zdGFja19lbmFibGVkKQ0KPiAraW50DQo+ICtnZGJhcmNoX3NoYWRvd19zdGFj a19lbGVtZW50X3NpemVfYWxpZ25lZCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpDQo+ICB7DQo+ ICAgIGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0gTlVMTCk7DQo+IC0gIGdkYl9hc3NlcnQgKGdkYmFy Y2gtPmdldF9zaGFkb3dfc3RhY2tfcG9pbnRlciAhPSBOVUxMKTsNCj4gKyAgLyogU2tpcCB2ZXJp Znkgb2Ygc2hhZG93X3N0YWNrX2VsZW1lbnRfc2l6ZV9hbGlnbmVkLCBpbnZhbGlkX3AgPT0gMC4N Cj4gKyAqLw0KPiAgICBpZiAoZ2RiYXJjaF9kZWJ1ZyA+PSAyKQ0KPiAtICAgIGdkYl9wcmludGYg KGdkYl9zdGRsb2csICJnZGJhcmNoX2dldF9zaGFkb3dfc3RhY2tfcG9pbnRlciBjYWxsZWRcbiIp Ow0KPiAtICByZXR1cm4gZ2RiYXJjaC0+Z2V0X3NoYWRvd19zdGFja19wb2ludGVyIChnZGJhcmNo LCByZWdjYWNoZSwNCj4gc2hhZG93X3N0YWNrX2VuYWJsZWQpOw0KPiArICAgIGdkYl9wcmludGYg KGdkYl9zdGRsb2csICJnZGJhcmNoX3NoYWRvd19zdGFja19lbGVtZW50X3NpemVfYWxpZ25lZA0K PiArIGNhbGxlZFxuIik7ICByZXR1cm4gZ2RiYXJjaC0+c2hhZG93X3N0YWNrX2VsZW1lbnRfc2l6 ZV9hbGlnbmVkOw0KPiAgfQ0KPiANCj4gIHZvaWQNCj4gLXNldF9nZGJhcmNoX2dldF9zaGFkb3df c3RhY2tfcG9pbnRlciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsDQo+IC0NCj4gZ2RiYXJjaF9n ZXRfc2hhZG93X3N0YWNrX3BvaW50ZXJfZnR5cGUgZ2V0X3NoYWRvd19zdGFja19wb2ludGVyKQ0K PiArc2V0X2dkYmFyY2hfc2hhZG93X3N0YWNrX2VsZW1lbnRfc2l6ZV9hbGlnbmVkIChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCwNCj4gKwkJCQkJICAgICAgIGludA0KPiBzaGFkb3dfc3RhY2tfZWxl bWVudF9zaXplX2FsaWduZWQpDQo+ICB7DQo+IC0gIGdkYmFyY2gtPmdldF9zaGFkb3dfc3RhY2tf cG9pbnRlciA9IGdldF9zaGFkb3dfc3RhY2tfcG9pbnRlcjsNCj4gKyAgZ2RiYXJjaC0+c2hhZG93 X3N0YWNrX2VsZW1lbnRfc2l6ZV9hbGlnbmVkID0NCj4gKyBzaGFkb3dfc3RhY2tfZWxlbWVudF9z aXplX2FsaWduZWQ7DQo+ICB9DQo+IGRpZmYgLS1naXQgYS9nZGIvZ2RiYXJjaC1nZW4uaCBiL2dk Yi9nZGJhcmNoLWdlbi5oIGluZGV4DQo+IDdlYTk5NzEzNjJjLi5jYmU5NzBmZDcxNiAxMDA2NDQN Cj4gLS0tIGEvZ2RiL2dkYmFyY2gtZ2VuLmgNCj4gKysrIGIvZ2RiL2dkYmFyY2gtZ2VuLmgNCj4g QEAgLTI4Myw2ICsyODMsMTIgQEAgZXh0ZXJuIHZvaWQgc2V0X2dkYmFyY2hfcHNfcmVnbnVtIChz dHJ1Y3QNCj4gZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHBzX3JlZ251bSk7ICBleHRlcm4gaW50IGdk YmFyY2hfZnAwX3JlZ251bSAoc3RydWN0DQo+IGdkYmFyY2ggKmdkYmFyY2gpOyAgZXh0ZXJuIHZv aWQgc2V0X2dkYmFyY2hfZnAwX3JlZ251bSAoc3RydWN0IGdkYmFyY2gNCj4gKmdkYmFyY2gsIGlu dCBmcDBfcmVnbnVtKTsNCj4gDQo+ICsvKiBSZWdpc3RlciBudW1iZXIgZm9yIHRoZSBzaGFkb3cg c3RhY2sgcG9pbnRlci4gIEZvciBpbmZlcmlvciBjYWxscywgdGhlDQo+ICsgICBnZGJhcmNoIHZh bHVlIHNzcF9yZWdudW0gaGFzIHRvIGJlIHByb3ZpZGVkLiAqLw0KPiArDQo+ICtleHRlcm4gaW50 IGdkYmFyY2hfc3NwX3JlZ251bSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpOyBleHRlcm4gdm9p ZA0KPiArc2V0X2dkYmFyY2hfc3NwX3JlZ251bSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGlu dCBzc3BfcmVnbnVtKTsNCj4gKw0KPiAgLyogUHJvdmlkZSBhIGRlZmF1bHQgbWFwcGluZyBmcm9t IGEgRFdBUkYyIHJlZ2lzdGVyIG51bWJlciB0byBhIGdkYg0KPiBSRUdOVU0uDQo+ICAgICBSZXR1 cm4gLTEgZm9yIGJhZCBSRUdOVU0uICBOb3RlOiBTZXZlcmFsIHRhcmdldHMgZ2V0IHRoaXMgd3Jv bmcuICovDQo+IA0KPiBAQCAtMTc3MSwyMiArMTc3NywyMyBAQCBleHRlcm4gdm9pZA0KPiBzZXRf Z2RiYXJjaF9jb3JlX3BhcnNlX2V4ZWNfY29udGV4dCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs IGdkYmFyYw0KPiAgLyogU29tZSB0YXJnZXRzIHN1cHBvcnQgc3BlY2lhbCBoYXJkd2FyZS1hc3Np c3RlZCBjb250cm9sLWZsb3cgcHJvdGVjdGlvbg0KPiAgICAgdGVjaG5vbG9naWVzLiAgRm9yIGV4 YW1wbGUsIHRoZSBJbnRlbCBDb250cm9sLUZsb3cgRW5mb3JjZW1lbnQgVGVjaG5vbG9neQ0KPiAg ICAgKEludGVsIENFVCkgb24geDg2IHByb3ZpZGVzIGEgc2hhZG93IHN0YWNrIGFuZCBpbmRpcmVj dCBicmFuY2ggdHJhY2tpbmcuDQo+IC0gICBUbyBlbmFibGUgc2hhZG93IHN0YWNrIHN1cHBvcnQg Zm9yIGluZmVyaW9yIGNhbGxzIHRoZSBzaGFkb3dfc3RhY2tfcHVzaA0KPiAtICAgZ2RiYXJjaCBo b29rIGhhcyB0byBiZSBwcm92aWRlZC4gIFRoZSBnZXRfc2hhZG93X3N0YWNrX3BvaW50ZXIgZ2Ri YXJjaA0KPiAtICAgaG9vayBoYXMgdG8gYmUgcHJvdmlkZWQgdG8gZW5hYmxlIGRpc3BsYWNlZCBz dGVwcGluZy4NCj4gLQ0KPiAtICAgUHVzaCBORVdfQUREUiB0byB0aGUgc2hhZG93IHN0YWNrIGFu ZCB1cGRhdGUgdGhlIHNoYWRvdyBzdGFjaw0KPiBwb2ludGVyLiAqLw0KPiAtDQo+IC1leHRlcm4g Ym9vbCBnZGJhcmNoX3NoYWRvd19zdGFja19wdXNoX3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo KTsNCj4gLQ0KPiAtdHlwZWRlZiB2b2lkIChnZGJhcmNoX3NoYWRvd19zdGFja19wdXNoX2Z0eXBl KSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsDQo+IENPUkVfQUREUiBuZXdfYWRkciwgcmVnY2Fj aGUgKnJlZ2NhY2hlKTsgLWV4dGVybiB2b2lkDQo+IGdkYmFyY2hfc2hhZG93X3N0YWNrX3B1c2gg KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFINCj4gbmV3X2FkZHIsIHJlZ2NhY2hl ICpyZWdjYWNoZSk7IC1leHRlcm4gdm9pZA0KPiBzZXRfZ2RiYXJjaF9zaGFkb3dfc3RhY2tfcHVz aCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsDQo+IGdkYmFyY2hfc2hhZG93X3N0YWNrX3B1c2hf ZnR5cGUgKnNoYWRvd19zdGFja19wdXNoKTsNCj4gLQ0KPiAtLyogSWYgcG9zc2libGUsIHJldHVy biB0aGUgc2hhZG93IHN0YWNrIHBvaW50ZXIuICBJZiB0aGUgc2hhZG93IHN0YWNrDQo+ICsgICBG b3IgR0RCIHNoYWRvdyBzdGFjayBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvciB2YWx1 ZXMgbXVzdCBiZQ0KPiArICAgcHJvdmlkZWQ6DQo+ICsgICAtIGdldF9zaGFkb3dfc3RhY2tfcG9p bnRlcjogcmVxdWlyZWQgZm9yIGRpc3BsYWNlZCBzdGVwcGluZyBhbmQgaW5mZXJpb3INCj4gKyAg ICAgZnVuY3Rpb24gY2FsbHMNCj4gKyAgIC0gYWRkcmVzc19pbl9zaGFkb3dfc3RhY2tfbWVtb3J5 X3JhbmdlOiByZXF1aXJlZCBmb3Igc2hhZG93IHN0YWNrDQo+IHBvaW50ZXINCj4gKyAgICAgdW53 aW5kaW5nIGFuZCBpbmZlcmlvciBmdW5jdGlvbiBjYWxscw0KPiArICAgLSB0b3BfYWRkcl9lbXB0 eV9zaGFkb3dfc3RhY2s6IHJlcXVpcmVkIGZvciBzaGFkb3cgc3RhY2sgcG9pbnRlcg0KPiB1bndp bmRpbmcNCj4gKyAgIC0gc3NwX3JlZ251bTogcmVxdWlyZWQgZm9yIGluZmVyaW9yIGZ1bmN0aW9u IGNhbGxzLg0KPiArDQo+ICsgICBJZiB0aGUgc2hhZG93IHN0YWNrIGFsaWdubWVudCBpcyBub3Qg dGhlIHByZWRlZmF1bHQgb2YgOCBieXRlcywgY29uZmlndXJlDQo+ICsgICB0aGUgZ2RiYXJjaCB2 YWx1ZSBzaGFkb3dfc3RhY2tfZWxlbWVudF9zaXplX2FsaWduZWQuDQo+ICsNCj4gKyAgIElmIHBv c3NpYmxlLCByZXR1cm4gdGhlIHNoYWRvdyBzdGFjayBwb2ludGVyLiAgSWYgdGhlIHNoYWRvdyBz dGFjaw0KPiAgICAgZmVhdHVyZSBpcyBlbmFibGVkIHRoZW4gc2V0IFNIQURPV19TVEFDS19FTkFC TEVEIHRvIHRydWUsIG90aGVyd2lzZQ0KPiAgICAgc2V0IFNIQURPV19TVEFDS19FTkFCTEVEIHRv IGZhbHNlLiAgVGhpcyBob29rIGhhcyB0byBiZSBwcm92aWRlZCB0bw0KPiBlbmFibGUNCj4gLSAg IGRpc3BsYWNlZCBzdGVwcGluZyBmb3Igc2hhZG93IHN0YWNrIGVuYWJsZWQgcHJvZ3JhbXMuDQo+ ICsgICBkaXNwbGFjZWQgc3RlcHBpbmcgYW5kIGluZmVyaW9yIGZ1bmN0aW9uIGNhbGxzIGZvciBz aGFkb3cgc3RhY2sgZW5hYmxlZA0KPiArICAgcHJvZ3JhbXMuDQo+ICAgICBPbiBzb21lIGFyY2hp dGVjdHVyZXMsIHRoZSBzaGFkb3cgc3RhY2sgcG9pbnRlciBpcyBhdmFpbGFibGUgZXZlbiBpZiB0 aGUNCj4gICAgIGZlYXR1cmUgaXMgZGlzYWJsZWQuICBTbyBkZXBlbmRlbnQgb24gdGhlIHRhcmdl dCwgYW4gaW1wbGVtZW50YXRpb24gb2YNCj4gICAgIHRoaXMgZnVuY3Rpb24gbWF5IHJldHVybiBh IHZhbGlkIHNoYWRvdyBzdGFjayBwb2ludGVyLCBidXQgc2V0IEBAIC0xNzk1LDMNCj4gKzE4MDIs MzEgQEAgZXh0ZXJuIHZvaWQgc2V0X2dkYmFyY2hfc2hhZG93X3N0YWNrX3B1c2ggKHN0cnVjdCBn ZGJhcmNoDQo+ICpnZGJhcmNoLCBnZGJhcmNoX3NoYWQgIHR5cGVkZWYgc3RkOjpvcHRpb25hbDxD T1JFX0FERFI+DQo+IChnZGJhcmNoX2dldF9zaGFkb3dfc3RhY2tfcG9pbnRlcl9mdHlwZSkgKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoLA0KPiByZWdjYWNoZSAqcmVnY2FjaGUsIGJvb2wgJnNoYWRv d19zdGFja19lbmFibGVkKTsgIGV4dGVybg0KPiBzdGQ6Om9wdGlvbmFsPENPUkVfQUREUj4gZ2Ri YXJjaF9nZXRfc2hhZG93X3N0YWNrX3BvaW50ZXIgKHN0cnVjdA0KPiBnZGJhcmNoICpnZGJhcmNo LCByZWdjYWNoZSAqcmVnY2FjaGUsIGJvb2wgJnNoYWRvd19zdGFja19lbmFibGVkKTsNCj4gZXh0 ZXJuIHZvaWQgc2V0X2dkYmFyY2hfZ2V0X3NoYWRvd19zdGFja19wb2ludGVyIChzdHJ1Y3QgZ2Ri YXJjaA0KPiAqZ2RiYXJjaCwgZ2RiYXJjaF9nZXRfc2hhZG93X3N0YWNrX3BvaW50ZXJfZnR5cGUN Cj4gKmdldF9zaGFkb3dfc3RhY2tfcG9pbnRlcik7DQo+ICsNCj4gKy8qIFJldHVybnMgdHJ1ZSBp ZiBBRERSIGJlbG9uZ3MgdG8gYSBzaGFkb3cgc3RhY2sgbWVtb3J5IHJhbmdlLiAgSWYgdGhpcyBp cw0KPiArICAgdGhlIGNhc2UgYW5kIFJBTkdFIGlzIG5vbi1udWxsLCBhc3NpZ24gdGhlIHNoYWRv dyBzdGFjayBtZW1vcnkgcmFuZ2UgdG8NCj4gKyAgIFJBTkdFIFtzdGFydF9hZGRyZXNzLCBlbmRf YWRkcmVzcykuICBUaGlzIGhvb2sgaGFzIHRvIGJlIHByb3ZpZGVkIGZvcg0KPiArICAgc2hhZG93 IHN0YWNrIHBvaW50ZXIgdW53aW5kaW5nIGFuZCBpbmZlcmlvciBmdW5jdGlvbiBjYWxscy4gKi8N Cj4gKw0KPiArZXh0ZXJuIGJvb2wgZ2RiYXJjaF9hZGRyZXNzX2luX3NoYWRvd19zdGFja19tZW1v cnlfcmFuZ2VfcCAoc3RydWN0DQo+ICtnZGJhcmNoICpnZGJhcmNoKTsNCj4gKw0KPiArdHlwZWRl ZiBib29sIChnZGJhcmNoX2FkZHJlc3NfaW5fc2hhZG93X3N0YWNrX21lbW9yeV9yYW5nZV9mdHlw ZSkNCj4gKyhDT1JFX0FERFIgQUREUiwgc3RkOjpwYWlyPENPUkVfQUREUiwgQ09SRV9BRERSPiAq cmFuZ2UpOyBleHRlcm4NCj4gYm9vbA0KPiArZ2RiYXJjaF9hZGRyZXNzX2luX3NoYWRvd19zdGFj a19tZW1vcnlfcmFuZ2UgKHN0cnVjdCBnZGJhcmNoDQo+ICpnZGJhcmNoLA0KPiArQ09SRV9BRERS IEFERFIsIHN0ZDo6cGFpcjxDT1JFX0FERFIsIENPUkVfQUREUj4gKnJhbmdlKTsgZXh0ZXJuDQo+ IHZvaWQNCj4gK3NldF9nZGJhcmNoX2FkZHJlc3NfaW5fc2hhZG93X3N0YWNrX21lbW9yeV9yYW5n ZSAoc3RydWN0IGdkYmFyY2gNCj4gKypnZGJhcmNoLCBnZGJhcmNoX2FkZHJlc3NfaW5fc2hhZG93 X3N0YWNrX21lbW9yeV9yYW5nZV9mdHlwZQ0KPiArKmFkZHJlc3NfaW5fc2hhZG93X3N0YWNrX21l bW9yeV9yYW5nZSk7DQo+ICsNCj4gKy8qIFJldHVybiB0cnVlIGlmIEFERFIgcG9pbnRzIHRvIHRo ZSB0b3Agb2YgYW4gZW1wdHkgc2hhZG93IHN0YWNrLCBkZWZpbmVkDQo+IGJ5DQo+ICsgICBSQU5H RSBbc3RhcnRfYWRkcmVzcywgZW5kX2FkZHJlc3MpLiAgVGhpcyBob29rIGhhcyB0byBiZSBwcm92 aWRlZCB0bw0KPiBlbmFibGUNCj4gKyAgIHVud2luZGluZyBvZiB0aGUgc2hhZG93IHN0YWNrIHBv aW50ZXIuICovDQo+ICsNCj4gK2V4dGVybiBib29sIGdkYmFyY2hfdG9wX2FkZHJfZW1wdHlfc2hh ZG93X3N0YWNrX3AgKHN0cnVjdCBnZGJhcmNoDQo+ICsqZ2RiYXJjaCk7DQo+ICsNCj4gK3R5cGVk ZWYgYm9vbCAoZ2RiYXJjaF90b3BfYWRkcl9lbXB0eV9zaGFkb3dfc3RhY2tfZnR5cGUpIChzdHJ1 Y3QNCj4gK2dkYmFyY2ggKmdkYmFyY2gsIGNvbnN0IENPUkVfQUREUiBhZGRyLCBjb25zdCBzdGQ6 OnBhaXI8Q09SRV9BRERSLA0KPiArQ09SRV9BRERSPiByYW5nZSk7IGV4dGVybiBib29sIGdkYmFy Y2hfdG9wX2FkZHJfZW1wdHlfc2hhZG93X3N0YWNrDQo+ICsoc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2gsIGNvbnN0IENPUkVfQUREUiBhZGRyLCBjb25zdA0KPiArc3RkOjpwYWlyPENPUkVfQUREUiwg Q09SRV9BRERSPiByYW5nZSk7IGV4dGVybiB2b2lkDQo+ICtzZXRfZ2RiYXJjaF90b3BfYWRkcl9l bXB0eV9zaGFkb3dfc3RhY2sgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLA0KPiArZ2RiYXJjaF90 b3BfYWRkcl9lbXB0eV9zaGFkb3dfc3RhY2tfZnR5cGUNCj4gKyp0b3BfYWRkcl9lbXB0eV9zaGFk b3dfc3RhY2spOw0KPiArDQo+ICsvKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHJlcXVpcmVkIHRvIHVw ZGF0ZSB0aGUgc2hhZG93IHN0YWNrIHBvaW50ZXIgYnkgb25lDQo+ICsgICBlbGVtZW50LiAgSW4g Y2FzZSB0aGUgYWxpZ25tZW50IGlzIG5vdCB0aGUgcHJlZGVmYXVsdCAoOCBieXRlcyksIGNvbmZp Z3VyZQ0KPiArICAgdGhpcyB2YWx1ZS4gKi8NCj4gKw0KPiArZXh0ZXJuIGludCBnZGJhcmNoX3No YWRvd19zdGFja19lbGVtZW50X3NpemVfYWxpZ25lZCAoc3RydWN0IGdkYmFyY2gNCj4gKypnZGJh cmNoKTsgZXh0ZXJuIHZvaWQgc2V0X2dkYmFyY2hfc2hhZG93X3N0YWNrX2VsZW1lbnRfc2l6ZV9h bGlnbmVkDQo+ICsoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCBzaGFkb3dfc3RhY2tfZWxl bWVudF9zaXplX2FsaWduZWQpOw0KPiBkaWZmIC0tZ2l0IGEvZ2RiL2dkYmFyY2hfY29tcG9uZW50 cy5weSBiL2dkYi9nZGJhcmNoX2NvbXBvbmVudHMucHkNCj4gaW5kZXggZjQxOWQyMTY1NWUuLmQ0 NGU1OWE1MjNkIDEwMDY0NA0KPiAtLS0gYS9nZGIvZ2RiYXJjaF9jb21wb25lbnRzLnB5DQo+ICsr KyBiL2dkYi9nZGJhcmNoX2NvbXBvbmVudHMucHkNCj4gQEAgLTU0NCw2ICs1NDQsMTcgQEAgVmFs dWUoDQo+ICAgICAgaW52YWxpZD1GYWxzZSwNCj4gICkNCj4gDQo+ICtWYWx1ZSgNCj4gKyAgICBj b21tZW50PSIiIg0KPiArUmVnaXN0ZXIgbnVtYmVyIGZvciB0aGUgc2hhZG93IHN0YWNrIHBvaW50 ZXIuICBGb3IgaW5mZXJpb3IgY2FsbHMsIHRoZQ0KPiArZ2RiYXJjaCB2YWx1ZSBzc3BfcmVnbnVt IGhhcyB0byBiZSBwcm92aWRlZC4NCj4gKyIiIiwNCj4gKyAgICB0eXBlPSJpbnQiLA0KPiArICAg IG5hbWU9InNzcF9yZWdudW0iLA0KPiArICAgIHByZWRlZmF1bHQ9Ii0xIiwNCj4gKyAgICBpbnZh bGlkPUZhbHNlLA0KPiArKQ0KPiArDQo+ICBNZXRob2QoDQo+ICAgICAgY29tbWVudD0iIiINCj4g IFByb3ZpZGUgYSBkZWZhdWx0IG1hcHBpbmcgZnJvbSBhIERXQVJGMiByZWdpc3RlciBudW1iZXIg dG8gYSBnZGINCj4gUkVHTlVNLg0KPiBAQCAtMjgxMSwyNCArMjgyMiwyMyBAQCBNZXRob2QoDQo+ ICBTb21lIHRhcmdldHMgc3VwcG9ydCBzcGVjaWFsIGhhcmR3YXJlLWFzc2lzdGVkIGNvbnRyb2wt ZmxvdyBwcm90ZWN0aW9uDQo+IHRlY2hub2xvZ2llcy4gIEZvciBleGFtcGxlLCB0aGUgSW50ZWwg Q29udHJvbC1GbG93IEVuZm9yY2VtZW50IFRlY2hub2xvZ3kNCj4gKEludGVsIENFVCkgb24geDg2 IHByb3ZpZGVzIGEgc2hhZG93IHN0YWNrIGFuZCBpbmRpcmVjdCBicmFuY2ggdHJhY2tpbmcuDQo+ IC1UbyBlbmFibGUgc2hhZG93IHN0YWNrIHN1cHBvcnQgZm9yIGluZmVyaW9yIGNhbGxzIHRoZSBz aGFkb3dfc3RhY2tfcHVzaCAtDQo+IGdkYmFyY2ggaG9vayBoYXMgdG8gYmUgcHJvdmlkZWQuICBU aGUgZ2V0X3NoYWRvd19zdGFja19wb2ludGVyIGdkYmFyY2ggLQ0KPiBob29rIGhhcyB0byBiZSBw cm92aWRlZCB0byBlbmFibGUgZGlzcGxhY2VkIHN0ZXBwaW5nLg0KPiAtDQo+IC1QdXNoIE5FV19B RERSIHRvIHRoZSBzaGFkb3cgc3RhY2sgYW5kIHVwZGF0ZSB0aGUgc2hhZG93IHN0YWNrIHBvaW50 ZXIuDQo+IC0iIiIsDQo+IC0gICAgdHlwZT0idm9pZCIsDQo+IC0gICAgbmFtZT0ic2hhZG93X3N0 YWNrX3B1c2giLA0KPiAtICAgIHBhcmFtcz1bKCJDT1JFX0FERFIiLCAibmV3X2FkZHIiKSwgKCJy ZWdjYWNoZSAqIiwgInJlZ2NhY2hlIildLA0KPiAtICAgIHByZWRpY2F0ZT1UcnVlLA0KPiAtKQ0K PiArRm9yIEdEQiBzaGFkb3cgc3RhY2sgc3VwcG9ydCB0aGUgZm9sbG93aW5nIG1ldGhvZHMgb3Ig dmFsdWVzIG11c3QgYmUNCj4gK3Byb3ZpZGVkOg0KPiArLSBnZXRfc2hhZG93X3N0YWNrX3BvaW50 ZXI6IHJlcXVpcmVkIGZvciBkaXNwbGFjZWQgc3RlcHBpbmcgYW5kDQo+ICtpbmZlcmlvcg0KPiAr ICBmdW5jdGlvbiBjYWxscw0KPiArLSBhZGRyZXNzX2luX3NoYWRvd19zdGFja19tZW1vcnlfcmFu Z2U6IHJlcXVpcmVkIGZvciBzaGFkb3cgc3RhY2sNCj4gK3BvaW50ZXINCj4gKyAgdW53aW5kaW5n IGFuZCBpbmZlcmlvciBmdW5jdGlvbiBjYWxscw0KPiArLSB0b3BfYWRkcl9lbXB0eV9zaGFkb3df c3RhY2s6IHJlcXVpcmVkIGZvciBzaGFkb3cgc3RhY2sgcG9pbnRlcg0KPiArdW53aW5kaW5nDQo+ ICstIHNzcF9yZWdudW06IHJlcXVpcmVkIGZvciBpbmZlcmlvciBmdW5jdGlvbiBjYWxscy4NCj4g Kw0KPiArSWYgdGhlIHNoYWRvdyBzdGFjayBhbGlnbm1lbnQgaXMgbm90IHRoZSBwcmVkZWZhdWx0 IG9mIDggYnl0ZXMsDQo+ICtjb25maWd1cmUgdGhlIGdkYmFyY2ggdmFsdWUgc2hhZG93X3N0YWNr X2VsZW1lbnRfc2l6ZV9hbGlnbmVkLg0KPiANCj4gLU1ldGhvZCgNCj4gLSAgICBjb21tZW50PSIi Ig0KPiAgSWYgcG9zc2libGUsIHJldHVybiB0aGUgc2hhZG93IHN0YWNrIHBvaW50ZXIuICBJZiB0 aGUgc2hhZG93IHN0YWNrICBmZWF0dXJlIGlzDQo+IGVuYWJsZWQgdGhlbiBzZXQgU0hBRE9XX1NU QUNLX0VOQUJMRUQgdG8gdHJ1ZSwgb3RoZXJ3aXNlICBzZXQNCj4gU0hBRE9XX1NUQUNLX0VOQUJM RUQgdG8gZmFsc2UuICBUaGlzIGhvb2sgaGFzIHRvIGJlIHByb3ZpZGVkIHRvIGVuYWJsZSAtDQo+ IGRpc3BsYWNlZCBzdGVwcGluZyBmb3Igc2hhZG93IHN0YWNrIGVuYWJsZWQgcHJvZ3JhbXMuDQo+ ICtkaXNwbGFjZWQgc3RlcHBpbmcgYW5kIGluZmVyaW9yIGZ1bmN0aW9uIGNhbGxzIGZvciBzaGFk b3cgc3RhY2sgZW5hYmxlZA0KPiArcHJvZ3JhbXMuDQo+ICBPbiBzb21lIGFyY2hpdGVjdHVyZXMs IHRoZSBzaGFkb3cgc3RhY2sgcG9pbnRlciBpcyBhdmFpbGFibGUgZXZlbiBpZiB0aGUNCj4gZmVh dHVyZSBpcyBkaXNhYmxlZC4gIFNvIGRlcGVuZGVudCBvbiB0aGUgdGFyZ2V0LCBhbiBpbXBsZW1l bnRhdGlvbiBvZiAgdGhpcw0KPiBmdW5jdGlvbiBtYXkgcmV0dXJuIGEgdmFsaWQgc2hhZG93IHN0 YWNrIHBvaW50ZXIsIGJ1dCBzZXQgQEAgLTI4NDAsMw0KPiArMjg1MCw0NiBAQCBTSEFET1dfU1RB Q0tfRU5BQkxFRCB0byBmYWxzZS4NCj4gICAgICBwcmVkZWZhdWx0PSJkZWZhdWx0X2dldF9zaGFk b3dfc3RhY2tfcG9pbnRlciIsDQo+ICAgICAgaW52YWxpZD1GYWxzZSwNCj4gICkNCj4gKw0KPiAr RnVuY3Rpb24oDQo+ICsgICAgY29tbWVudD0iIiINCj4gK1JldHVybnMgdHJ1ZSBpZiBBRERSIGJl bG9uZ3MgdG8gYSBzaGFkb3cgc3RhY2sgbWVtb3J5IHJhbmdlLiAgSWYgdGhpcw0KPiAraXMgdGhl IGNhc2UgYW5kIFJBTkdFIGlzIG5vbi1udWxsLCBhc3NpZ24gdGhlIHNoYWRvdyBzdGFjayBtZW1v cnkgcmFuZ2UNCj4gK3RvIFJBTkdFIFtzdGFydF9hZGRyZXNzLCBlbmRfYWRkcmVzcykuICBUaGlz IGhvb2sgaGFzIHRvIGJlIHByb3ZpZGVkDQo+ICtmb3Igc2hhZG93IHN0YWNrIHBvaW50ZXIgdW53 aW5kaW5nIGFuZCBpbmZlcmlvciBmdW5jdGlvbiBjYWxscy4NCj4gKyIiIiwNCj4gKyAgICB0eXBl PSJib29sIiwNCj4gKyAgICBuYW1lPSJhZGRyZXNzX2luX3NoYWRvd19zdGFja19tZW1vcnlfcmFu Z2UiLA0KPiArICAgIHBhcmFtcz1bDQo+ICsgICAgICAgICgiQ09SRV9BRERSIiwgIkFERFIiKSwN Cj4gKyAgICAgICAgKCJzdGQ6OnBhaXI8Q09SRV9BRERSLCBDT1JFX0FERFI+ICoiLCAicmFuZ2Ui KQ0KPiArICAgIF0sDQo+ICsgICAgcHJlZGljYXRlPVRydWUsDQo+ICspDQo+ICsNCj4gK01ldGhv ZCgNCj4gKyAgICBjb21tZW50PSIiIg0KPiArUmV0dXJuIHRydWUgaWYgQUREUiBwb2ludHMgdG8g dGhlIHRvcCBvZiBhbiBlbXB0eSBzaGFkb3cgc3RhY2ssIGRlZmluZWQNCj4gK2J5IFJBTkdFIFtz dGFydF9hZGRyZXNzLCBlbmRfYWRkcmVzcykuICBUaGlzIGhvb2sgaGFzIHRvIGJlIHByb3ZpZGVk IHRvDQo+ICtlbmFibGUgdW53aW5kaW5nIG9mIHRoZSBzaGFkb3cgc3RhY2sgcG9pbnRlci4NCj4g KyIiIiwNCj4gKyAgICB0eXBlPSJib29sIiwNCj4gKyAgICBuYW1lPSJ0b3BfYWRkcl9lbXB0eV9z aGFkb3dfc3RhY2siLA0KPiArICAgIHBhcmFtcz1bDQo+ICsgICAgICAgICgiY29uc3QgQ09SRV9B RERSIiwgImFkZHIiKSwNCj4gKyAgICAgICAgKCJjb25zdCBzdGQ6OnBhaXI8Q09SRV9BRERSLCBD T1JFX0FERFI+IiwgInJhbmdlIikNCj4gKyAgICBdLA0KPiArICAgIHByZWRpY2F0ZT1UcnVlLA0K PiArKQ0KPiArDQo+ICtWYWx1ZSgNCj4gKyAgICBjb21tZW50PSIiIg0KPiArVGhlIG51bWJlciBv ZiBieXRlcyByZXF1aXJlZCB0byB1cGRhdGUgdGhlIHNoYWRvdyBzdGFjayBwb2ludGVyIGJ5IG9u ZQ0KPiArZWxlbWVudC4gIEluIGNhc2UgdGhlIGFsaWdubWVudCBpcyBub3QgdGhlIHByZWRlZmF1 bHQgKDggYnl0ZXMpLA0KPiArY29uZmlndXJlIHRoaXMgdmFsdWUuDQo+ICsiIiIsDQo+ICsgICAg dHlwZT0iaW50IiwNCj4gKyAgICBuYW1lPSJzaGFkb3dfc3RhY2tfZWxlbWVudF9zaXplX2FsaWdu ZWQiLA0KPiArICAgIHByZWRlZmF1bHQ9IjgiLA0KPiArICAgIGludmFsaWQ9RmFsc2UsDQo+ICsp DQo+IGRpZmYgLS1naXQgYS9nZGIvaW5mY2FsbC5jIGIvZ2RiL2luZmNhbGwuYyBpbmRleCBkY2Jh ZTY3OWQwNy4uZThmYmM3ZjMwZDANCj4gMTAwNjQ0DQo+IC0tLSBhL2dkYi9pbmZjYWxsLmMNCj4g KysrIGIvZ2RiL2luZmNhbGwuYw0KPiBAQCAtNDIsNiArNDIsNyBAQA0KPiAgI2luY2x1ZGUgInRo cmVhZC1mc20uaCINCj4gICNpbmNsdWRlIDxhbGdvcml0aG0+DQo+ICAjaW5jbHVkZSAiZ2Ric3Vw cG9ydC9zY29wZS1leGl0LmgiDQo+ICsjaW5jbHVkZSAic2hhZG93LXN0YWNrLmgiDQo+ICAjaW5j bHVkZSA8bGlzdD4NCj4gDQo+ICAvKiBUcnVlIGlmIHdlIGFyZSBkZWJ1Z2dpbmcgaW5mZXJpb3Ig Y2FsbHMuICAqLyBAQCAtMTQ2NCw4ICsxNDY1LDcgQEANCj4gY2FsbF9mdW5jdGlvbl9ieV9oYW5k X2R1bW15IChzdHJ1Y3QgdmFsdWUgKmZ1bmN0aW9uLA0KPiAgICAvKiBQdXNoIHRoZSByZXR1cm4g YWRkcmVzcyBvZiB0aGUgaW5mZXJpb3IgKGJwX2FkZHIpIHRvIHRoZSBzaGFkb3cgc3RhY2sNCj4g ICAgICAgYW5kIHVwZGF0ZSB0aGUgc2hhZG93IHN0YWNrIHBvaW50ZXIuICBBcyB3ZSBkb24ndCBl eGVjdXRlIGEgY2FsbA0KPiAgICAgICBpbnN0cnVjdGlvbiB0byBjYWxsIHRoZSBmdW5jdGlvbiB3 ZSBuZWVkIHRvIGhhbmRsZSB0aGlzIG1hbnVhbGx5LiAgKi8NCj4gLSAgaWYgKGdkYmFyY2hfc2hh ZG93X3N0YWNrX3B1c2hfcCAoZ2RiYXJjaCkpDQo+IC0gICAgZ2RiYXJjaF9zaGFkb3dfc3RhY2tf cHVzaCAoZ2RiYXJjaCwgYnBfYWRkciwgcmVnY2FjaGUpOw0KPiArICBzaGFkb3dfc3RhY2tfcHVz aCAocmVnY2FjaGUsIGJwX2FkZHIpOw0KPiANCj4gICAgLyogU2V0IHVwIGEgZnJhbWUgSUQgZm9y IHRoZSBkdW1teSBmcmFtZSBzbyB3ZSBjYW4gcGFzcyBpdCB0bw0KPiAgICAgICBzZXRfbW9tZW50 YXJ5X2JyZWFrcG9pbnQuICBXZSBuZWVkIHRvIGdpdmUgdGhlIGJyZWFrcG9pbnQgYSBmcmFtZSBk aWZmDQo+IC0tZ2l0IGEvZ2RiL2xpbnV4LXRkZXAuYyBiL2dkYi9saW51eC10ZGVwLmMgaW5kZXgg Y2NjN2ZhN2NmOWQuLjlkMmIzMmI2NDgxDQo+IDEwMDY0NA0KPiAtLS0gYS9nZGIvbGludXgtdGRl cC5jDQo+ICsrKyBiL2dkYi9saW51eC10ZGVwLmMNCj4gQEAgLTMwOTUsOCArMzA5NSwxMSBAQCBs aW51eF9hZGRyZXNzX2luX3NoYWRvd19zdGFja19tZW1fcmFuZ2UNCj4gDQo+ICAgIGlmIChpdCAh PSBzbWFwcy5lbmQgKCkpDQo+ICAgICAgew0KPiAtICAgICAgcmFuZ2UtPmZpcnN0ID0gaXQtPnN0 YXJ0X2FkZHJlc3M7DQo+IC0gICAgICByYW5nZS0+c2Vjb25kID0gaXQtPmVuZF9hZGRyZXNzOw0K PiArICAgICAgaWYgKHJhbmdlICE9IG51bGxwdHIpDQo+ICsJew0KPiArCSAgcmFuZ2UtPmZpcnN0 ID0gaXQtPnN0YXJ0X2FkZHJlc3M7DQo+ICsJICByYW5nZS0+c2Vjb25kID0gaXQtPmVuZF9hZGRy ZXNzOw0KPiArCX0NCj4gICAgICAgIHJldHVybiB0cnVlOw0KPiAgICAgIH0NCj4gDQo+IEBAIC0z MTQ2LDYgKzMxNDksOCBAQCBsaW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZv LCBzdHJ1Y3QNCj4gZ2RiYXJjaCAqZ2RiYXJjaCwNCj4gICAgc2V0X2dkYmFyY2hfZ2V0X3NpZ2lu Zm9fdHlwZSAoZ2RiYXJjaCwgbGludXhfZ2V0X3NpZ2luZm9fdHlwZSk7DQo+ICAgIHNldF9nZGJh cmNoX2NvcmVfcGFyc2VfZXhlY19jb250ZXh0IChnZGJhcmNoLA0KPiAgCQkJCSAgICAgICBsaW51 eF9jb3JlZmlsZV9wYXJzZV9leGVjX2NvbnRleHQpOw0KPiArICBzZXRfZ2RiYXJjaF9hZGRyZXNz X2luX3NoYWRvd19zdGFja19tZW1vcnlfcmFuZ2UNCj4gKyAgICAoZ2RiYXJjaCwgbGludXhfYWRk cmVzc19pbl9zaGFkb3dfc3RhY2tfbWVtX3JhbmdlKTsNCj4gIH0NCj4gDQo+ICBJTklUX0dEQl9G SUxFIChsaW51eF90ZGVwKQ0KPiBkaWZmIC0tZ2l0IGEvZ2RiL3NoYWRvdy1zdGFjay5jIGIvZ2Ri L3NoYWRvdy1zdGFjay5jIG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAw Li43N2Q3YzA3ZDk3MA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2dkYi9zaGFkb3ctc3RhY2su Yw0KPiBAQCAtMCwwICsxLDE2NiBAQA0KPiArLyogTWFuYWdlIGEgc2hhZG93IHN0YWNrIHBvaW50 ZXIgZm9yIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4NCj4gKw0KPiArICAgQ29weXJpZ2h0IChDKSAy MDI0LTIwMjYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQo+ICsgICBUaGlzIGZpbGUg aXMgcGFydCBvZiBHREIuDQo+ICsNCj4gKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQo+ICsgICBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQ0KPiArICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3INCj4gKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uDQo+ICsNCj4gKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KPiArICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCj4gKyAgIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCj4gKyAgIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQo+ICsNCj4gKyAgIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlDQo+ICsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlDQo+ICsg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8NCj4gKw0KPiArI2luY2x1ZGUgImRl ZnMuaCINCj4gKyNpbmNsdWRlICJhcmNoLXV0aWxzLmgiDQo+ICsjaW5jbHVkZSAiZ2RiY29yZS5o Ig0KPiArI2luY2x1ZGUgImV4dHJhY3Qtc3RvcmUtaW50ZWdlci5oIg0KPiArI2luY2x1ZGUgImZy YW1lLmgiDQo+ICsjaW5jbHVkZSAiZnJhbWUtdW53aW5kLmgiDQo+ICsjaW5jbHVkZSAic2hhZG93 LXN0YWNrLmgiDQo+ICsNCj4gK2NsYXNzIHJlZ2NhY2hlOw0KPiArDQo+ICtlbnVtIGNsYXNzIHNz cF91cGRhdGVfZGlyZWN0aW9uDQo+ICt7DQo+ICsgIC8qIFVwZGF0ZSBzc3AgdG93YXJkcyB0aGUg b2xkZXN0IChvdXRlcm1vc3QpIGVsZW1lbnQgb2YgdGhlIHNoYWRvdw0KPiArICAgICBzdGFjay4g ICovDQo+ICsgIG91dGVyID0gMCwNCj4gKw0KPiArICAvKiBVcGRhdGUgc3NwIHRvd2FyZHMgdGhl IG1vc3QgcmVjZW50IChpbm5lcm1vc3QpIGVsZW1lbnQgb2YgdGhlDQo+ICsgICAgIHNoYWRvdyBz dGFjay4gICovDQo+ICsgIGlubmVyDQo+ICt9Ow0KPiArDQo+ICsvKiBSZXR1cm4gYSBuZXcgc2hh ZG93IHN0YWNrIHBvaW50ZXIgd2hpY2ggaXMgaW5jcmVtZW50ZWQgb3IgZGVjcmVtZW50ZWQNCj4g KyAgIGJ5IG9uZSBlbGVtZW50IGRlcGVuZGVudCBvbiBESVJFQ1RJT04uICAqLw0KPiArDQo+ICtz dGF0aWMgQ09SRV9BRERSDQo+ICt1cGRhdGVfc2hhZG93X3N0YWNrX3BvaW50ZXIgKGdkYmFyY2gg KmdkYmFyY2gsIENPUkVfQUREUiBzc3AsDQo+ICsJCQkgICAgIGNvbnN0IHNzcF91cGRhdGVfZGly ZWN0aW9uIGRpcmVjdGlvbikgew0KPiArICBib29sIGluY3JlbWVudCA9IGdkYmFyY2hfc3RhY2tf Z3Jvd3NfZG93biAoZ2RiYXJjaCkNCj4gKwkJICAgPyBkaXJlY3Rpb24gPT0gc3NwX3VwZGF0ZV9k aXJlY3Rpb246Om91dGVyDQo+ICsJCSAgICAgOiBkaXJlY3Rpb24gPT0gc3NwX3VwZGF0ZV9kaXJl Y3Rpb246OmlubmVyOw0KPiArDQo+ICsgIGlmIChpbmNyZW1lbnQpDQo+ICsgICAgcmV0dXJuIHNz cCArIGdkYmFyY2hfc2hhZG93X3N0YWNrX2VsZW1lbnRfc2l6ZV9hbGlnbmVkIChnZGJhcmNoKTsN Cj4gKyAgZWxzZQ0KPiArICAgIHJldHVybiBzc3AgLSBnZGJhcmNoX3NoYWRvd19zdGFja19lbGVt ZW50X3NpemVfYWxpZ25lZCAoZ2RiYXJjaCk7IH0NCj4gKw0KPiArLyogU2VlIHNoYWRvdy1zdGFj ay5oLiAgKi8NCj4gKw0KPiArdm9pZCBzaGFkb3dfc3RhY2tfcHVzaCAocmVnY2FjaGUgKnJlZ2Nh Y2hlLCBjb25zdCBDT1JFX0FERFINCj4gbmV3X2FkZHIpIHsNCj4gKyAgZ2RiYXJjaCAqZ2RiYXJj aCA9IHJlZ2NhY2hlLT5hcmNoICgpOw0KPiArICBpZiAoIWdkYmFyY2hfYWRkcmVzc19pbl9zaGFk b3dfc3RhY2tfbWVtb3J5X3JhbmdlX3AgKGdkYmFyY2gpDQo+ICsgICAgICB8fCBnZGJhcmNoX3Nz cF9yZWdudW0gKGdkYmFyY2gpID09IC0xKQ0KPiArICAgIHJldHVybjsNCj4gKw0KPiArICBib29s IHNoYWRvd19zdGFja19lbmFibGVkOw0KPiArICBzdGQ6Om9wdGlvbmFsPENPUkVfQUREUj4gc3Nw DQo+ICsgICAgPSBnZGJhcmNoX2dldF9zaGFkb3dfc3RhY2tfcG9pbnRlciAoZ2RiYXJjaCwgcmVn Y2FjaGUsDQo+ICsJCQkJCXNoYWRvd19zdGFja19lbmFibGVkKTsNCj4gKyAgaWYgKCFzc3AuaGFz X3ZhbHVlICgpIHx8ICFzaGFkb3dfc3RhY2tfZW5hYmxlZCkNCj4gKyAgICByZXR1cm47DQo+ICsN Cj4gKyAgY29uc3QgQ09SRV9BRERSIG5ld19zc3ANCj4gKyAgICA9IHVwZGF0ZV9zaGFkb3dfc3Rh Y2tfcG9pbnRlciAoZ2RiYXJjaCwgKnNzcCwNCj4gKwkJCQkgICBzc3BfdXBkYXRlX2RpcmVjdGlv bjo6aW5uZXIpOw0KPiArDQo+ICsgIC8qIElmIE5FV19TU1AgZG9lcyBub3QgcG9pbnQgdG8gc2hh ZG93IHN0YWNrIG1lbW9yeSwgd2UgYXNzdW1lIHRoZQ0KPiArICAgICBzdGFjayBpcyBmdWxsLiAg Ki8NCj4gKyAgaWYgKCFnZGJhcmNoX2FkZHJlc3NfaW5fc2hhZG93X3N0YWNrX21lbW9yeV9yYW5n ZSAoZ2RiYXJjaCwNCj4gKwkJCQkJCSAgICAgbmV3X3NzcCwNCj4gKwkJCQkJCSAgICAgbnVsbHB0 cikpDQo+ICsgICAgZXJyb3IgKF8oIk5vIHNwYWNlIGxlZnQgb24gdGhlIHNoYWRvdyBzdGFjay4i KSk7DQo+ICsNCj4gKyAgLyogT24geDg2IHRoZXJlIGNhbiBiZSBhIHNoYWRvdyBzdGFjayB0b2tl biBhdCBiaXQgNjMuICBGb3IgeDMyLCB0aGUNCj4gKyAgICAgYWRkcmVzcyBzaXplIGlzIG9ubHkg MzIgYml0LiAgQWx3YXlzIHdyaXRlIGJhY2sgdGhlIGZ1bGwgZWxlbWVudA0KPiArICAgICBzaXpl IHRvIGluY2x1ZGUgdGhlIHNoYWRvdyBzdGFjayB0b2tlbi4gICovICBjb25zdCBpbnQNCj4gKyBl bGVtZW50X3NpemUNCj4gKyAgICA9IGdkYmFyY2hfc2hhZG93X3N0YWNrX2VsZW1lbnRfc2l6ZV9h bGlnbmVkIChnZGJhcmNoKTsNCj4gKw0KPiArICBjb25zdCBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIg PSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpOw0KPiArDQo+ICsgIHdyaXRlX21lbW9yeV91 bnNpZ25lZF9pbnRlZ2VyIChuZXdfc3NwLCBlbGVtZW50X3NpemUsIGJ5dGVfb3JkZXIsDQo+ICsJ CQkJIChVTE9OR0VTVCkgbmV3X2FkZHIpOw0KPiArDQo+ICsgIHJlZ2NhY2hlX3Jhd193cml0ZV91 bnNpZ25lZCAocmVnY2FjaGUsDQo+ICsJCQkgICAgICAgZ2RiYXJjaF9zc3BfcmVnbnVtIChnZGJh cmNoKSwNCj4gKwkJCSAgICAgICBuZXdfc3NwKTsNCj4gK30NCj4gKw0KPiArLyogU2VlIHNoYWRv dy1zdGFjay5oLiAgKi8NCj4gKw0KPiArdmFsdWUgKg0KPiArZHdhcmYyX3ByZXZfc3NwIChjb25z dCBmcmFtZV9pbmZvX3B0ciAmdGhpc19mcmFtZSwgdm9pZCAqKnRoaXNfY2FjaGUsDQo+ICsJCSBp bnQgcmVnbnVtKQ0KPiArew0KPiArICB2YWx1ZSAqdiA9IGZyYW1lX3Vud2luZF9nb3RfcmVnaXN0 ZXIgKHRoaXNfZnJhbWUsIHJlZ251bSwgcmVnbnVtKTsNCj4gKyAgZ2RiX2Fzc2VydCAodiAhPSBu dWxscHRyKTsNCj4gKw0KPiArICBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X2ZyYW1lX2FyY2ggKHRo aXNfZnJhbWUpOw0KPiArDQo+ICsgIGlmIChnZGJhcmNoX2FkZHJlc3NfaW5fc2hhZG93X3N0YWNr X21lbW9yeV9yYW5nZV9wIChnZGJhcmNoKQ0KPiArICAgICAgJiYgdi0+ZW50aXJlbHlfYXZhaWxh YmxlICgpICYmICF2LT5vcHRpbWl6ZWRfb3V0ICgpKQ0KPiArICAgIHsNCj4gKyAgICAgIGNvbnN0 IGludCBzaXplID0gcmVnaXN0ZXJfc2l6ZSAoZ2RiYXJjaCwgcmVnbnVtKTsNCj4gKyAgICAgIGJm ZF9lbmRpYW4gYnl0ZV9vcmRlciA9IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCk7DQo+ICsg ICAgICBDT1JFX0FERFIgc3NwID0gZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2VyDQo+ICsJKHYtPmNv bnRlbnRzX2FsbCAoKS5kYXRhICgpLCBzaXplLCBieXRlX29yZGVyKTsNCj4gKw0KPiArICAgICAg LyogT25seSBpZiB0aGUgY3VycmVudCBzaGFkb3cgc3RhY2sgcG9pbnRlciBTU1AgcG9pbnRzIHRv IHNoYWRvdw0KPiArCSBzdGFjayBtZW1vcnkgYSB2YWxpZCBwcmV2aW91cyBzaGFkb3cgc3RhY2sg cG9pbnRlciBjYW4gYmUNCj4gKwkgY2FsY3VsYXRlZC4gICovDQo+ICsgICAgICBzdGQ6OnBhaXI8 Q09SRV9BRERSLCBDT1JFX0FERFI+IHJhbmdlOw0KPiArICAgICAgaWYgKGdkYmFyY2hfYWRkcmVz c19pbl9zaGFkb3dfc3RhY2tfbWVtb3J5X3JhbmdlIChnZGJhcmNoLCBzc3AsDQo+ICZyYW5nZSkp DQo+ICsJew0KPiArCSAgLyogTm90ZSB0aGF0IGEgc2hhZG93IHN0YWNrIG1lbW9yeSByYW5nZSBj YW4gY2hhbmdlLCBkdWUgdG8NCj4gKwkgICAgIHNoYWRvdyBzdGFjayBzd2l0Y2hlcyBmb3IgaW5z dGFuY2Ugb24geDg2IGZvciBhbiBpbnRlci0NCj4gKwkgICAgIHByaXZpbGVnZSBmYXIgY2FsbCBv ciB3aGVuIGNhbGxpbmcgYW4gaW50ZXJydXB0L2V4Y2VwdGlvbg0KPiArCSAgICAgaGFuZGxlciBh dCBhIGhpZ2hlciBwcml2aWxlZ2UgbGV2ZWwuICBTaGFkb3cgc3RhY2sgZm9yDQo+ICsJICAgICB1 c2Vyc3BhY2UgaXMgc3VwcG9ydGVkIGZvciBhbWQ2NCBsaW51eCBzdGFydGluZyB3aXRoDQo+ICsJ ICAgICBMaW51eCBrZXJuZWwgdjYuNi4gIEhvd2V2ZXIsIHNoYWRvdyBzdGFjayBzd2l0Y2hlcyBh cmUgbm90DQo+ICsJICAgICBzdXBwb3J0ZWQgZHVlIHRvIG1pc3Npbmcga2VybmVsIHNwYWNlIHN1 cHBvcnQuICBXZSB0aGVyZWZvcmUNCj4gKwkgICAgIGltcGxlbWVudCB0aGlzIHVud2luZGVyIHdp dGhvdXQgc3VwcG9ydCBmb3Igc2hhZG93IHN0YWNrDQo+ICsJICAgICBzd2l0Y2hlcyBmb3Igbm93 LiAgKi8NCj4gKwkgIGNvbnN0IENPUkVfQUREUiBuZXdfc3NwDQo+ICsJICAgID0gdXBkYXRlX3No YWRvd19zdGFja19wb2ludGVyIChnZGJhcmNoLCBzc3AsDQo+ICsJCQkJCSAgIHNzcF91cGRhdGVf ZGlyZWN0aW9uOjpvdXRlcik7DQo+ICsNCj4gKwkgIC8qIE9uIHg4NiwgaWYgTkVXX1NTUCBwb2lu dHMgdG8gdGhlIGVuZCBvdXRzaWRlIG9mIFJBTkdFDQo+ICsJICAgICAoTkVXX1NTUCA9PSBSQU5H RS5TRUNPTkQpLCBpdCBpbmRpY2F0ZXMgdGhhdCBORVdfU1NQIGlzDQo+ICsJICAgICB2YWxpZCwg YnV0IHRoZSBzaGFkb3cgc3RhY2sgaXMgZW1wdHkuICBJbiBjb250cmFzdCwgZm9yDQo+ICsJICAg ICBBUk0ncyBHdWFyZGVkIENvbnRyb2wgU3RhY2ssIGlmIE5FV19TU1AgcG9pbnRzIHRvIHRoZSBl bmQNCj4gKwkgICAgIG9mIFJBTkdFLCBpdCBtZWFucyB0aGF0IHRoZSBzaGFkb3cgc3RhY2sgZmVh dHVyZSBpcw0KPiArCSAgICAgZGlzYWJsZWQuICAqLw0KPiArCSAgYm9vbCBpc190b3BfYWRkcl9l bXB0eV9zaGFkb3dfc3RhY2sNCj4gKwkgICAgPSBnZGJhcmNoX3RvcF9hZGRyX2VtcHR5X3NoYWRv d19zdGFja19wIChnZGJhcmNoKQ0KPiArCSAgICAgICYmIGdkYmFyY2hfdG9wX2FkZHJfZW1wdHlf c2hhZG93X3N0YWNrIChnZGJhcmNoLCBuZXdfc3NwLA0KPiArcmFuZ2UpOw0KPiArDQo+ICsJICAv KiBWYWxpZGF0ZSBORVdfU1NQLiAgVGhpcyBtYXkgZGVwZW5kIG9uIGJvdGgNCj4gKwkgICAgIElT X1RPUF9BRERSX0VNUFRZX1NIQURPV19TVEFDSyBhbmQgdGhlIGdkYmFyY2ggaG9vaw0KPiAoZS5n LiwgeDg2KSwNCj4gKwkgICAgIG9yIG9uIHRoZSBob29rIG9ubHkgKGUuZy4sIEFSTSkuICAqLw0K PiArCSAgaWYgKGlzX3RvcF9hZGRyX2VtcHR5X3NoYWRvd19zdGFjaw0KPiArCSAgICAgIHx8IGdk YmFyY2hfYWRkcmVzc19pbl9zaGFkb3dfc3RhY2tfbWVtb3J5X3JhbmdlIChnZGJhcmNoLA0KPiAr CQkJCQkJCSAgICAgICBuZXdfc3NwLA0KPiArCQkJCQkJCSAgICAgICAmcmFuZ2UpKQ0KPiArCSAg ICByZXR1cm4gZnJhbWVfdW53aW5kX2dvdF9hZGRyZXNzICh0aGlzX2ZyYW1lLCByZWdudW0sIG5l d19zc3ApOw0KPiArCX0NCj4gKyAgICB9DQo+ICsNCj4gKyAgLyogUmV0dXJuIGEgdmFsdWUgd2hp Y2ggaXMgbWFya2VkIGFzIHVuYXZhaWxhYmxlLCBpbiBjYXNlIHdlIGNvdWxkIG5vdA0KPiArICAg ICBjYWxjdWxhdGUgYSB2YWxpZCBwcmV2aW91cyBzaGFkb3cgc3RhY2sgcG9pbnRlci4gICovDQo+ ICsgIHZhbHVlICpyZXR2YWwNCj4gKyAgICA9IHZhbHVlOjphbGxvY2F0ZV9yZWdpc3RlciAoZ2V0 X25leHRfZnJhbWVfc2VudGluZWxfb2theSAodGhpc19mcmFtZSksDQo+ICsJCQkJcmVnbnVtLCBy ZWdpc3Rlcl90eXBlIChnZGJhcmNoLCByZWdudW0pKTsNCj4gKyAgcmV0dmFsLT5tYXJrX2J5dGVz X3VuYXZhaWxhYmxlICgwLCByZXR2YWwtPnR5cGUgKCktPmxlbmd0aCAoKSk7DQo+ICsgIHJldHVy biByZXR2YWw7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9nZGIvc2hhZG93LXN0YWNrLmggYi9nZGIv c2hhZG93LXN0YWNrLmggbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAu LjVmODM5NWVjMDQ3DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZ2RiL3NoYWRvdy1zdGFjay5o DQo+IEBAIC0wLDAgKzEsMzggQEANCj4gKy8qIERlZmluaXRpb25zIHRvIG1hbmFnZSBhIHNoYWRv dyBzdGFjayBwb2ludGVyIGZvciBHREIsIHRoZSBHTlUNCj4gZGVidWdnZXIuDQo+ICsNCj4gKyAg IENvcHlyaWdodCAoQykgMjAyNC0yMDI2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0K PiArDQo+ICsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuDQo+ICsNCj4gKyAgIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5DQo+ICsNCj4gKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQo+ICsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcg0KPiArICAgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCj4gKw0KPiArICAgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQo+ICsgICBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZg0KPiArICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQ0KPiArICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4NCj4gKw0KPiArICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCj4gKyAgIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUNCj4gKyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u ICAqLw0KPiArDQo+ICsjaWZuZGVmIEdEQl9TSEFET1dfU1RBQ0tfSA0KPiArI2RlZmluZSBHREJf U0hBRE9XX1NUQUNLX0gNCj4gKw0KPiArLyogSWYgc2hhZG93IHN0YWNrIGlzIGVuYWJsZWQsIHB1 c2ggdGhlIGFkZHJlc3MgTkVXX0FERFIgb24gdGhlIHNoYWRvdw0KPiArICAgc3RhY2sgYW5kIHVw ZGF0ZSB0aGUgc2hhZG93IHN0YWNrIHBvaW50ZXIgYWNjb3JkaW5nbHkuICAqLw0KPiArDQo+ICt2 b2lkIHNoYWRvd19zdGFja19wdXNoIChyZWdjYWNoZSAqcmVnY2FjaGUsIGNvbnN0IENPUkVfQURE Ug0KPiBuZXdfYWRkcik7DQo+ICsNCj4gKy8qIFVud2luZCB0aGUgcHJldmlvdXMgc2hhZG93IHN0 YWNrIHBvaW50ZXIgb2YgVEhJU19GUkFNRSdzIHNoYWRvdw0KPiBzdGFjaw0KPiArICAgcG9pbnRl ci4gIFJFR05VTSBpcyB0aGUgcmVnaXN0ZXIgbnVtYmVyIG9mIHRoZSBzaGFkb3cgc3RhY2sgcG9p bnRlci4NCj4gKyAgIFJldHVybiBhIHZhbHVlIHRoYXQgaXMgdW5hdmFpbGFibGUgaW4gY2FzZSB3 ZSBjYW5ub3QgdW53aW5kIHRoZQ0KPiArICAgcHJldmlvdXMgc2hhZG93IHN0YWNrIHBvaW50ZXIu ICBPdGhlcndpc2UsIHJldHVybiBhIHZhbHVlIGNvbnRhaW5pbmcNCj4gKyAgIHRoZSBwcmV2aW91 cyBzaGFkb3cgc3RhY2sgcG9pbnRlci4gICovDQo+ICsNCj4gK3ZhbHVlICpkd2FyZjJfcHJldl9z c3AgKGNvbnN0IGZyYW1lX2luZm9fcHRyICZ0aGlzX2ZyYW1lLA0KPiArCQkJdm9pZCAqKnRoaXNf Y2FjaGUsIGludCByZWdudW0pOw0KPiArDQo+ICsjZW5kaWYgLyogR0RCX1NIQURPV19TVEFDS19I ICovDQo+IC0tDQo+IDIuMzQuMQ0KDQpJIGZ1cnRoZXIgbm90aWNlZCB0aGF0IGZvciB0aGUgZ2Ri YXJjaCBtZXRob2QgIHRvcF9hZGRyX2VtcHR5X3NoYWRvd19zdGFjayB0aGUNCmdkYmFyY2ggcGFy YW1ldGVyIGlzIHVudXNlZCBmb3IgdGhlIGFhcmNoNjQgYW5kIHRoZSBhbWQ2NCBpbXBsZW1lbnRh dGlvbnMsIHNvIHdlDQpjb3VsZCBtYWtlIGl0IGEgZ2RiYXJjaCBmdW5jdGlvbi4NCg0KSSdsbCBj aGFuZ2UgdGhhdCBmb3IgdGhlIHYzIGlmIEkgZG9uJ3QgaGVhciBiYWNrIG90aGVyd2lzZS4NCg0K VGhhbmtzLA0KQ2hyaXN0aW5hDQpJbnRlbCBEZXV0c2NobGFuZCBHbWJIDQpSZWdpc3RlcmVkIEFk ZHJlc3M6IERvcm5hY2hlciBTdHJhc3NlIDEsIDg1NjIyIEZlbGRraXJjaGVuLCBHZXJtYW55DQpU ZWw6ICs0OSA4OSA5OTEgNDMwLCB3d3cuaW50ZWwuZGUNCk1hbmFnaW5nIERpcmVjdG9yczogSGFy cnkgRGVtYXMsIEplZmZyZXkgU2NobmVpZGVybWFuLCBZaW4gQ2hvbmcgU29ycmVsbA0KQ2hhaXJw ZXJzb24gb2YgdGhlIFN1cGVydmlzb3J5IEJvYXJkOiBOaWNvbGUgTGF1DQpSZWdpc3RlcmVkIFNl YXQ6IE11bmljaA0KQ29tbWVyY2lhbCBSZWdpc3RlcjogQW10c2dlcmljaHQgTXVlbmNoZW4gSFJC IDE4NjkyOAo=