From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id iTtuMq+N2GqwAwIAWB0awg (envelope-from ) for ; Wed, 21 Oct 2026 06:02:23 -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=NCbxRN8L; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id C8D0C1E051; Wed, 21 Oct 2026 06:02:23 -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 65C7D1E047 for ; Wed, 21 Oct 2026 06:02:21 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 63A974BA23CD for ; Wed, 21 Oct 2026 10:02:20 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 63A974BA23CD 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=NCbxRN8L Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.15]) by sourceware.org (Postfix) with ESMTPS id A56E74BA2E22 for ; Wed, 21 Oct 2026 10:01:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A56E74BA2E22 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 A56E74BA2E22 Authentication-Results: sourceware.org; arc=fail smtp.remote-ip=192.198.163.15 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1792576911; cv=fail; b=tAcYuRuErycm0ppiA9ll6DMALO8Az4VfKmFxLVnqPngEnQOTMm/R7XP4yApAh7dJCjLCCo63g9Jt4Fo1X1IAhssY0gM1+a1lRTKMivCJCffU7Lpu4CClgD43pqS9mXarMzEjV7u5girEFcDhkf5xJefKsKfDWajuPL3vtE1wkYU= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1792576911; c=relaxed/simple; bh=ckTHSHBArKbG1dD/5DS3StITrU/aMGL2/QWYkRqUYNc=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=C82Z46518TZ13qLEltrAsm7H6qF2pRpqViM1F1d4xfa0z8QIsX3BMxsur91rJTuGzMFZYRVtie5ZC4WBIf8+P/JW56o0LVvlRKFb1x/0W52M5Rprsk/0513pvvSiesDlwvMxngQ+Txk3bsSGgIKZYCSRh6To/aI8vxnv7y12glo= ARC-Authentication-Results: i=2; 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=NCbxRN8L DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A56E74BA2E22 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1792576911; x=1824112911; h=from:to:subject:date:message-id:references:in-reply-to: mime-version:content-transfer-encoding; bh=ckTHSHBArKbG1dD/5DS3StITrU/aMGL2/QWYkRqUYNc=; b=NCbxRN8LR9H0bdLMD4gSHAlpWMQi6OCF3fh0lUDXn4hTfnQgD9XG+cdK GY/pWpDY75vQImEEZSBpxq07u1l916JuoFs5UEK1qhSfW3KWZa75hmo6I byuWeLY9NjWDU77EEhJU0GRxUn+T7eKY4u5OvnUg3rj7yUOEnH/x+KQ9e qNA58+gFRzZKWd2F15H64RdqZgMKM7Bm3r2v2oRN3nISfGK60VsfVgZq2 zPh37Re7oHcAkaAud+dCZEc1RMJe7P6b1N1iTfxv/A5fd4pliOS3Pb3ff VTr6+V5abFgwzPAg5zihBNZzDY9U4KVybevABajygDdQfo8y4P+MNOElY w==; X-CSE-ConnectionGUID: iZuJ/EXEQvW/mTrYGdNmUw== X-CSE-MsgGUID: +M/+E3xlTVqxeHuUBj3p4Q== X-IronPort-AV: E=McAfee;i="6800,10657,11941"; a="1309509" X-IronPort-AV: E=Sophos;i="6.27,169,1787036400"; d="scan'208";a="1309509" Received: from fmviesa003.fm.intel.com ([10.60.135.143]) by fmvoesa109.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Oct 2026 03:01:49 -0700 X-CSE-ConnectionGUID: gmKDFFjQT4mFnCglkL+Y+A== X-CSE-MsgGUID: Fj+W/WchQHyQKJyl+n8NXA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.27,169,1787036400"; d="scan'208";a="3102874" Received: from orsmsx903.amr.corp.intel.com ([10.22.229.25]) by fmviesa003.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Oct 2026 03:01:48 -0700 Received: from ORSMSX903.amr.corp.intel.com (10.22.229.25) 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.49; Wed, 21 Oct 2026 03:01:33 -0700 Received: from ORSEDG902.ED.cps.intel.com (10.7.248.12) 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.49 via Frontend Transport; Wed, 21 Oct 2026 03:01:33 -0700 Received: from BYAPR05CU005.outbound.protection.outlook.com (52.101.85.33) by edgegateway.intel.com (134.134.137.112) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.49; Wed, 21 Oct 2026 03:01:32 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=f2WV/ZgchTYjmvVlBBSr0ZsurjsM6XPLFRnZftzX2X+bDqT/ojwSy+BxVcV+23cWbS2IzZbGhUg50rBo/gUCXwftU1yPo12O/O/NS1WJ8Np+Hz64fLEEWKB9c8FISxckZE5PO9383TgZSPfzxexpsPIDQCUTf6Ly6lsi4CmQ9vwKPAW8FtPdyLMx+gpjA025UIaSn6QauEWCHdFu0qPl5UGOfEZn8UkMwNutJoAQifVpoyYFvfRMNdmadRaKV24xev7B1Z8CrFldy4J3ZCRYXNJAeNCrdYNDb9LblK59wN5GuReb98/ecHB0fTtho0/Nm/R2lO2eF68IGikpiZfVCg== 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=rL6oXRKVG2cTTjRInagPEAjZK1Q+8iyaECCNMafW4XM=; b=jJhpl9of8qKYav41UDqo7YGxumBR5WNQpOp93BUXLNUJSu/lfzEzxoiUIxZD0VA2/SnddbEGaVsgGfPaL5rVFmOewqbzATgzx6i/fB0611QdxjtYTi0z8KZI38nimOuU6kMZ5Q0gGeisCkU7bGlOwEUHIjEGsXY0rhhpy74TEywgj5gqvNkoJYItF1LOz0zBBS9/fuBlLoHTzLz6g5cBwXfMJmeOxHhRXgmQKZchl0VyswwkxkpExsezyDIgopF6DCMg/kOYZMmOb+gc1eGS0ao1NuUNqkEGr+drBFYBHMviEp+wvjdy1KNbFBmAcvOa0EVVyROonHn4FotumXIPbQ== 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 DM8PR11MB5749.namprd11.prod.outlook.com (2603:10b6:8:10::15) by IA1PR11MB8198.namprd11.prod.outlook.com (2603:10b6:208:453::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.522.19; Wed, 21 Oct 2026 10:01:23 +0000 Received: from DM8PR11MB5749.namprd11.prod.outlook.com ([fe80::3085:48ed:687d:e6b6]) by DM8PR11MB5749.namprd11.prod.outlook.com ([fe80::3085:48ed:687d:e6b6%6]) with mapi id 15.21.0546.012; Wed, 21 Oct 2026 10:01:22 +0000 From: "Metzger, Markus T" To: "gdb-patches@sourceware.org" Subject: [PING v3][PATCH v2] gdb: fix breakpoints on inline functions qualified with source file name Thread-Topic: [PING v3][PATCH v2] gdb: fix breakpoints on inline functions qualified with source file name Thread-Index: AQHdYUMgT7EvF5Y6cE2FEm7aJL+hRA== Date: Wed, 21 Oct 2026 10:01:22 +0000 Message-ID: References: <20260813095614.3662164-1-markus.t.metzger@intel.com> <12dc314a-8ab4-4a26-871e-c7c62675f689@redhat.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM8PR11MB5749:EE_|IA1PR11MB8198:EE_ x-ms-office365-filtering-correlation-id: 79c141d7-39c1-4dba-e0e0-08df2f5a4306 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|376014|23010399003|366016|56012099006|38070700021|11063799006|4143699003|5023799004|261009223027099003|10067099003|22082099003|18002099003|6133799003|13003099007; x-microsoft-antispam-message-info: pifwoCf4nzW3omoL3vLCMcfr/bjWPbrj1WdX78/pkjjPNg4SRhbSG5SzSxhGO5jxVa44r3d8j2XoyYgbU2aGWZ3ZnMnZMA0/k4zpTyNmEuSZGUTg296NwP++AVj2K/S7hhEX01XibIhlBWc3bIqitH7OZ3j4xuM5W0UPfcBKzLkWQwIyN3k4D/uyCY7/76D2y5ShKOXuIGujecnLKg697E7Q4RsPBopR3yLHbkzrd6Yqnc0dHlwbCbev7xg4ubnY0JhFKtOJfqLK2i3lRtqcmA1zSTTz882+NO+sGP6VbuNmvw9gS9PDa0vGO32fvdOeu/t8ac3hsYt3F4wAaIsA/h8b20qAvSjToPV7KxDR/UC59MhF035We9h7tWRVgSDDb0H3/z/2/erKUac5K5BVcVNEuJwlSiWyT2xLmJ5QmivcOeGcVRq6tr7FBhyvlVdjU8YLve7XTeiRkzwxLGlKySmNtypsci00ZEz8Z5SZ0SNQsJzIBVSqsl9B/TIKg0yvHBehlox5Bw6p770iPGLAkFfWkl5mHYGKha6jQLhrDqsiPWUBPZfKR7rAWNCGc2zvwWf2xMJdURK9rpcgrErAfu4qKyQCgXtIlsZoye+io6EiyST3x/+WvKmpk7aHUf7lQfMJvc4KTZ4SGWNjRtcan6g9Fv549SzUtRxWrq9aQoyZkPMyvO4TIpsiuW0ZBGSnUTj/iOSBtbzMEQDzGiT2LZEj+D+KszuocN8SAGd0ifQ= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM8PR11MB5749.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(23010399003)(366016)(56012099006)(38070700021)(11063799006)(4143699003)(5023799004)(261009223027099003)(10067099003)(22082099003)(18002099003)(6133799003)(13003099007); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bS9BVVJkQ0ZQSmlhQTVBUW1mSHo1UmlNS1A1T3ZwblJqSElxYW5pUWNnbXE3?= =?utf-8?B?Ny9aKytrekp1Z1FldW9NTHNTOEhOZXBrNytOOUxsWGV1MFovOSsvcTZCdVZW?= =?utf-8?B?SFJaMFlVWmtQT3RzRzRRS3djYkhTMVpHZS9PWlBsek5oTituM3VJYUVESElh?= =?utf-8?B?R3JsekpIT0phTnp5QkR2b0VKSTVjMFEwUXo2SFVSaTR6MU9wWXIwRjkvYVBZ?= =?utf-8?B?ekgrR0VzMFQ3NmtJUkNqMUFKbVI5djQxQ1pNY0tZUGhjbE9wVGxVVTVEV0ha?= =?utf-8?B?dnRsbWRORSthVVc4aHZjRlBNRER5cFNxV2doVUFyZ0wrSE9ycWtZbHRrbGlp?= =?utf-8?B?WThvSGZ5Yi9PUzBUR0JiaEpBc3pXRmR0aFlLVmU3TkZhNUJabVBIRWRyWE5B?= =?utf-8?B?WGNXUkgwa2EzdjJOL2FUbWoxMDdEWkx6d045SlkxNjdEb3drNXBLRTlLMmo4?= =?utf-8?B?NnF1QlFYK1IwMDFPcCtpNEdqVUtZNGlJOTEwSmd4b1FVSGtQdUtlZ3NtMmh4?= =?utf-8?B?YUJmUmc0cXhVQm93K1BYR0lhME16MDJmSENXWTVsdXRYclJIbW9uV2MrbmJR?= =?utf-8?B?VHVUZ0k0dlJvR1lnNHplTlpaRk5Yb3d6U3czYkdXTzdpTUZJTWdsKzY2Zm5K?= =?utf-8?B?NTEvZVJlbXBmV1JaM0NOWWhsZWp2Q2FVOGplekxDTUFHVjkyMGY3UzFtWjdM?= =?utf-8?B?dSsrZUkwNnpJK2sra09UUFlUYzVTT0Y5SnZJYTR6bW5ET1ZTYmdheFFHSHNH?= =?utf-8?B?aUJhbXkxMlBkbnBzSjJiWExlTElhdlJWdzgyQmxJSDYzNXE3NmZhWmMzU2l0?= =?utf-8?B?Z1F3Mk5xbm1LdG8rUTVnQjJ3UzJTMEIzS1hBZE8xZ2pTUm5oRStKYnd4UEdX?= =?utf-8?B?V1hRT1hKb0gzQk1jc1F4aUVTZHROTHErakliRnJXMWZ6cWN1akdMZzJpR0d5?= =?utf-8?B?Nk15TG5SNXdXOUZPYTFLTGRyYWQvdmVzNEhlWmFLend2NHM0UHo1cDJteEI3?= =?utf-8?B?UlBaYk5xb2d1RGlsbG5SNmdQY0lJN0wxZWVKUG5ZdUdwczJuaUl2MEtETTJn?= =?utf-8?B?aFRvQWZvcWhpM3praW9oM3drS1RBbGpwRkFsRWVWOUM3TkJHcFNTQmVmanM4?= =?utf-8?B?Yzl4OHloQ1BPOWtNVTBYSFQ4YjFjb1FXNzJVVEFaS2daTEZJWmVjdFQ1Y2cv?= =?utf-8?B?Si9EdXo2eHdQN29RYzI5ckRkZ1FqUkhNQSsveFRPQk9NVWVMSWNkeFNoYVZB?= =?utf-8?B?OEl5UzBIbEVhMk1tNUtCWTZmV1JOWlZLbHZsR0EyR3hlT3pNWCtHTUJKaEhT?= =?utf-8?B?cDFsTDVQUFRKT204cUg0dU1jUXZSd3h0VkQwTWltWnNRWGsrS3FkTjUrK0d2?= =?utf-8?B?ZzlOL1NsL1htK3FCUTd2aTdxbER5a2w2Z1o2VnZKdXFQMHQ5cTluYTk2WldS?= =?utf-8?B?QjkrY1ZxRi9lYklzMlBORDYyQkVqdFBwVDlOdkR2Ujh4Tk9HZmY1Y251bTdq?= =?utf-8?B?NW8zSWpXR3NkaXFIRWZEa1ZjY0JyU2JQQi9EdjFHWTFrejE4S25aOENCSCtz?= =?utf-8?B?MUxrSDhWNzFQQTBqS3ZHbUdpN09tZGQxVHQxUy9IbzZkRnlJOFlOWE1GbWtE?= =?utf-8?B?Y3B4V25meHdzdHEwYjZQaUJONTVqSGw4VEZjUVBQdmZDeldIcXZCYjFNc3Fn?= =?utf-8?B?UzFnUG5YN1NCaFdkNnlqaXdqM3FNaDZqVmFOclFpQ3RHSmdWNjEwUFdkdE5X?= =?utf-8?B?R0NYY2cwbUtNZHhVVU8zOFpOd09NMXhSZ2N4NjYxWS9RSDlzRGhDWllrWEh6?= =?utf-8?B?UFhodmh6VGRiNThnSHhMS3psV0dhSCtxanp3YWhRY1IwcDAwM3B2Slo4TjJk?= =?utf-8?B?YkxTNldiSUJGRTAyUUNFb1IxckYvSytwZmtLZ1RPalhMQVovZlc0cDFIR0Jp?= =?utf-8?B?V1ZqQnM4VFJ6U0FKQlRIVkJqSkZGZnhVUEtWNERtOXo3eTc4SlFjQXRibVln?= =?utf-8?B?Y0kzM1VtTUtEY0o5NTBRZ2RHL2FHbXdscWM3cnRpaFhsQmNDZXpUOGxFSnNF?= =?utf-8?B?TUQxREFVVUpIZVNLMnE4UFZZNlFZdWZVS3Z2SWcvMUpYZGZVWCtjczU4WGlE?= =?utf-8?B?TlpYK1Fxa1hpRjA3WnQxaFZabGk3Mm9ZMVZpSEphaERpVXBhQ1hmQm1wcXlr?= =?utf-8?B?NDl5UGc2TnhDUVhiMDJLRnM5R21UaUdaSGNMdHdHUFdWemVyYTBCWWovZTd5?= =?utf-8?B?bTJ1cWpVcnZVQjM3K2g1YUc0UGtUellkT09rVDc5YXp2ellKY1hvdGp5eVpm?= =?utf-8?B?SXdIU1kyVmM5amh2UENtQzZPZ3RSdkVLRnowV01pdkw3MEdmNlNYZz09?= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: d4kHyQPfGmJwWv7+gSvh5ndAqBNbv/bN2TR5G6jauRIfsOpngxNmzadrk+udrka6CZOgZv4G+PnSPiRfuOv6Q1Sn8VWbb1CAMiogLg+tz/xoG4A4pdzFlfNUJBVXk540mqdJ7qwu9rxKrSHUm8j0BP+ukLIilWS5XOhSlzj110kTkyR2H+yz6zlYXQ97anGuIXVRooFf2Tbr7tH59/ibwZP7qAr9ZW6ev05ztShAOHaPE8uv+3Vj5EhcqCqYWUj+cSXx1EpLV/mGPjsKvQ3S0gkiJPuG2KuFg6sHYTXcxN6TdLFv895nJRau3L4XooEfnzC04nfiXMU23zu55wRqkQ== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM8PR11MB5749.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 79c141d7-39c1-4dba-e0e0-08df2f5a4306 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Oct 2026 10:01:22.7558 (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: R72wzfg+QwodJzP+mMUi+2Xuluxcz8b2jPBG9NZtqbst2DlGnEOUANtAS9Qw/F8Bb1CPglnPvuQUqd8Tqd9ZSLBXdV5zrwPi/5zyDlhtaoE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR11MB8198 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 S2luZGx5IHBpbmdpbmcuDQpNYXJrdXMuDQoNCj4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K PkZyb206IE1ldHpnZXIsIE1hcmt1cyBUIDxtYXJrdXMudC5tZXR6Z2VyQGludGVsLmNvbT4NCj5T ZW50OiBNb25kYXksIE9jdG9iZXIgNSwgMjAyNiAyOjU2IFBNDQo+VG86IGdkYi1wYXRjaGVzQHNv dXJjZXdhcmUub3JnDQo+U3ViamVjdDogW1BJTkcgdjJdW1BBVENIIHYyXSBnZGI6IGZpeCBicmVh a3BvaW50cyBvbiBpbmxpbmUgZnVuY3Rpb25zIHF1YWxpZmllZA0KPndpdGggc291cmNlIGZpbGUg bmFtZQ0KPg0KPktpbmRseSBwaW5naW5nLg0KPk1hcmt1cy4NCj4NCj4+LS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4+RnJvbTogTWV0emdlciwgTWFya3VzIFQgPG1hcmt1cy50Lm1ldHpnZXJA aW50ZWwuY29tPg0KPj5TZW50OiBXZWRuZXNkYXksIFNlcHRlbWJlciA5LCAyMDI2IDg6MTIgQU0N Cj4+VG86IGdkYi1wYXRjaGVzQHNvdXJjZXdhcmUub3JnDQo+PkNjOiBHdWluZXZlcmUgTGFyc2Vu IDxndWluZXZlcmVAcmVkaGF0LmNvbT4NCj4+U3ViamVjdDogW1BJTkddW1BBVENIIHYyXSBnZGI6 IGZpeCBicmVha3BvaW50cyBvbiBpbmxpbmUgZnVuY3Rpb25zIHF1YWxpZmllZA0KPj53aXRoIHNv dXJjZSBmaWxlIG5hbWUNCj4+DQo+PlRoYW5rcywgR3VpbmV2ZXJlLg0KPj4NCj4+S2luZGx5IHBp bmdpbmcgZm9yIGFuIGFwcHJvdmFsIHJldmlldy4NCj4+DQo+Pk1hcmt1cy4NCj4+DQo+Pj4tLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPj4+RnJvbTogR3VpbmV2ZXJlIExhcnNlbiA8Z3VpbmV2 ZXJlQHJlZGhhdC5jb20+DQo+Pj5TZW50OiBGcmlkYXksIEF1Z3VzdCAxNCwgMjAyNiAzOjU4IFBN DQo+Pj5UbzogTWV0emdlciwgTWFya3VzIFQgPG1hcmt1cy50Lm1ldHpnZXJAaW50ZWwuY29tPjsg Z2RiLQ0KPj4+cGF0Y2hlc0Bzb3VyY2V3YXJlLm9yZw0KPj4+U3ViamVjdDogUmU6IFtQQVRDSCB2 Ml0gZ2RiOiBmaXggYnJlYWtwb2ludHMgb24gaW5saW5lIGZ1bmN0aW9ucyBxdWFsaWZpZWQNCj53 aXRoDQo+Pj5zb3VyY2UgZmlsZSBuYW1lDQo+Pj4NCj4+Pk9uIDgvMTMvMjYgNjo1NiBBTSwgTWFy a3VzIE1ldHpnZXIgd3JvdGU6DQo+Pj4+IE9uICdicmVhayBmb28uW2hjXTpmb28nLCBHREIgb25s eSBzZWFyY2hlcyB0aGUgc3ltYm9scyBvZiBmb28uW2hjXSBvbiBmaWxlDQo+Pj4+IHNjb3BlLiAg SWYgZm9vIGhhcyBiZWVuIGlubGluZWQsIEdEQiB3b3VsZCBub3QgZmluZCBpdC4NCj4+Pj4NCj4+ Pj4gT24gJ2JyZWFrIGZvbycsIGhvd2V2ZXIsIEdEQiBhbHNvIHNlYXJjaGVzIGxvY2FsIGJsb2Nr cyBmb3IgaW5saW5lDQo+Pj4+IGZ1bmN0aW9uIHN5bWJvbHMgaW4gaXRlcmF0ZV9vdmVyX2FsbF9t YXRjaGluZ19zeW10YWJzKCksIHdoaWNoIGlzIGNhbGxlZA0KPj4+PiBpbmRpcmVjdGx5IGZyb20g YWRkX21hdGNoaW5nX3N5bWJvbHNfdG9faW5mbygpLg0KPj4+Pg0KPj4+PiBBZGQgdGhhdCBmdW5j dGlvbmFsaXR5IHRvIGFkZF9tYXRjaGluZ19zeW1ib2xzX3RvX2luZm8oKSBpbiBjYXNlIGl0IGlz DQo+Pj4+IGNhbGxlZCB3aXRoIGEgbGlzdCBvZiBmaWxlIHN5bXRhYnMgdG8gc2VhcmNoLg0KPj4+ Pg0KPj4+PiBBbHNvIGFkZCBpdGVyYXRlX292ZXJfbG9jYWxfYmxvY2tzKCkgYXMgaGVscGVyIGZ1 bmN0aW9uIHNpbWlsYXIgdG8NCj4+Pj4gaXRlcmF0ZV9vdmVyX2ZpbGVfYmxvY2tzKCkuDQo+Pj4+ IC0tLQ0KPj4+DQo+Pj5IaSBNYXJrdXMhDQo+Pj4NCj4+PkkgbG9va2VkIG92ZXIgdGhpcyBhbmQg YWxsIG15IHF1ZXN0aW9ucyBoYXZlIGJlZW4gc29sdmVkLg0KPj4+DQo+Pj5SZXZpZXdlZC1CeTog R3VpbmV2ZXJlIExhcnNlbiA8Z3VpbmV2ZXJlQHJlZGhhdC5jb20+DQo+Pj4NCj4+Pi0tDQo+Pj5D aGVlcnMsDQo+Pj5HdWluZXZlcmUgTGFyc2VuDQo+Pj5pdC9pdHMNCj4+PnNoZS9oZXIgKGRlcHJl Y2F0ZWQpDQo+Pj4NCj4+Pj4gICBnZGIvbGluZXNwZWMuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgNTEgKysrKysrKysrKysrKysrKy0tLS0tLS0tDQo+Pj4+ICAgZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9icmVhay1pbmxpbmUyLmMgICB8IDMzICsrKysrKysrKysrKysrKw0KPj4+PiAgIGdk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW5saW5lMi5leHAgfCAzMCArKysrKysrKysrKysr Kw0KPj4+PiAgIGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW5saW5lMi5oICAgfCAyOCAr KysrKysrKysrKysrDQo+Pj4+ICAgNCBmaWxlcyBjaGFuZ2VkLCAxMjYgaW5zZXJ0aW9ucygrKSwg MTYgZGVsZXRpb25zKC0pDQo+Pj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvYnJlYWstaW5saW5lMi5jDQo+Pj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW5saW5lMi5leHANCj4+Pj4gICBjcmVhdGUgbW9kZSAx MDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbmxpbmUyLmgNCj4+Pj4NCj4+Pj4g ZGlmZiAtLWdpdCBhL2dkYi9saW5lc3BlYy5jIGIvZ2RiL2xpbmVzcGVjLmMNCj4+Pj4gaW5kZXgg YjY1MDViYTI4M2QuLjk5NTk2OTBiNTdiIDEwMDY0NA0KPj4+PiAtLS0gYS9nZGIvbGluZXNwZWMu Yw0KPj4+PiArKysgYi9nZGIvbGluZXNwZWMuYw0KPj4+PiBAQCAtMzYzLDYgKzM2MywxMSBAQCBz dGF0aWMgdm9pZCBpdGVyYXRlX292ZXJfZmlsZV9ibG9ja3MNCj4+Pj4gICAgICBkb21haW5fc2Vh cmNoX2ZsYWdzIGRvbWFpbiwNCj4+Pj4gICAgICBmb3JfZWFjaF9zeW1ib2xfY2FsbGJhY2tfZnR5 cGUgY2FsbGJhY2spOw0KPj4+Pg0KPj4+PiArc3RhdGljIHZvaWQgaXRlcmF0ZV9vdmVyX2xvY2Fs X2Jsb2Nrcw0KPj4+PiArICAoY29uc3Qgc3ltdGFiICpzeW10YWIsIGNvbnN0IGxhbmd1YWdlX2Rl Zm4gKmxhbmd1YWdlLA0KPj4+PiArICAgY29uc3QgbG9va3VwX25hbWVfaW5mbyAmbmFtZSwgZG9t YWluX3NlYXJjaF9mbGFncyBkb21haW4sDQo+Pj4+ICsgICBmb3JfZWFjaF9zeW1ib2xfY2FsbGJh Y2tfZnR5cGUgY2FsbGJhY2spOw0KPj4+PiArDQo+Pj4+ICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6 ZV9kZWZhdWx0cyAoc3RydWN0IHN5bXRhYiAqKmRlZmF1bHRfc3ltdGFiLA0KPj4+PiAgIAkJCQkg aW50ICpkZWZhdWx0X2xpbmUpOw0KPj4+Pg0KPj4+PiBAQCAtMTE0NywyMyArMTE1MiwxNCBAQCBp dGVyYXRlX292ZXJfYWxsX21hdGNoaW5nX3N5bXRhYnMNCj4+Pj4NCj4+Pj4gICAJICAgICAgaWYg KGluY2x1ZGVfaW5saW5lKQ0KPj4+PiAgIAkJew0KPj4+PiAtCQkgIGNvbnN0IHN0cnVjdCBibG9j ayAqYmxvY2s7DQo+Pj4+IC0JCSAgaW50IGk7DQo+Pj4+IC0JCSAgY29uc3QgYmxvY2t2ZWN0b3Ig KmJ2ID0gc3ltdGFiLT5jb21wdW5pdCAoKS5ibG9ja3ZlY3RvciAoKTsNCj4+Pj4gLQ0KPj4+PiAt CQkgIGZvciAoaSA9IEZJUlNUX0xPQ0FMX0JMT0NLOyBpIDwgYnYtPm51bV9ibG9ja3MgKCk7IGkr KykNCj4+Pj4gKwkJICBhdXRvIGNhbGxiYWNrX2lubGluZWQgPSBbJl0gKGJsb2NrX3N5bWJvbCAq YnN5bSkNCj4+Pj4gICAJCSAgICB7DQo+Pj4+IC0JCSAgICAgIGJsb2NrID0gYnYtPmJsb2NrIChp KTsNCj4+Pj4gLQkJICAgICAgc3RhdGUtPmxhbmd1YWdlLT5mb3JfZWFjaF9zeW1ib2wNCj4+Pj4g LQkJCShibG9jaywgbG9va3VwX25hbWUsIGRvbWFpbiwNCj4+Pj4gLQkJCSBbJl0gKGJsb2NrX3N5 bWJvbCAqYnN5bSkNCj4+Pj4gLQkJCSB7DQo+Pj4+IC0JCQkgICAvKiBSZXN0cmljdCBjYWxscyB0 byBDQUxMQkFDSyB0byBzeW1ib2xzDQo+Pj4+IC0JCQkgICAgICByZXByZXNlbnRpbmcgaW5saW5l IHN5bWJvbHMgb25seS4gICovDQo+Pj4+IC0JCQkgICBpZiAoYnN5bS0+c3ltYm9sLT5pc19pbmxp bmVkICgpKQ0KPj4+PiAtCQkJICAgICBjYWxsYmFjayAoYnN5bSk7DQo+Pj4+IC0JCQkgfSk7DQo+ Pj4+IC0JCSAgICB9DQo+Pj4+ICsJCSAgICAgIGlmIChic3ltLT5zeW1ib2wtPmlzX2lubGluZWQg KCkpDQo+Pj4+ICsJCQljYWxsYmFjayAoYnN5bSk7DQo+Pj4+ICsJCSAgICB9Ow0KPj4+PiArCQkg ICAgaXRlcmF0ZV9vdmVyX2xvY2FsX2Jsb2NrcyAoc3ltdGFiLCBzdGF0ZS0+bGFuZ3VhZ2UsDQo+ Pj4+ICsJCQkJCSAgICAgICBsb29rdXBfbmFtZSwgZG9tYWluLA0KPj4+PiArCQkJCQkgICAgICAg Y2FsbGJhY2tfaW5saW5lZCk7DQo+Pj4+ICAgCQl9DQo+Pj4+DQo+Pj4+ICAgCSAgICAgIHJldHVy biBpdGVyYXRpb25fc3RhdHVzOjprZWVwX2dvaW5nOw0KPj4+PiBAQCAtMTIwMyw2ICsxMTk5LDIy IEBAIGl0ZXJhdGVfb3Zlcl9maWxlX2Jsb2Nrcw0KPj4+PiAgICAgICBjdXJyZW50X2xhbmd1YWdl LT5mb3JfZWFjaF9zeW1ib2wgKGJsb2NrLCBuYW1lLCBkb21haW4sIGNhbGxiYWNrKTsNCj4+Pj4g ICB9DQo+Pj4+DQo+Pj4+ICsvKiBJdGVyYXRlIG92ZXIgbG9jYWwgYmxvY2tzLiAgKi8NCj4+Pj4g Kw0KPj4+PiArc3RhdGljIHZvaWQNCj4+Pj4gK2l0ZXJhdGVfb3Zlcl9sb2NhbF9ibG9ja3MNCj4+ Pj4gKyAgKGNvbnN0IHN5bXRhYiAqc3ltdGFiLCBjb25zdCBsYW5ndWFnZV9kZWZuICpsYW5ndWFn ZSwNCj4+Pj4gKyAgIGNvbnN0IGxvb2t1cF9uYW1lX2luZm8gJm5hbWUsIGRvbWFpbl9zZWFyY2hf ZmxhZ3MgZG9tYWluLA0KPj4+PiArICAgZm9yX2VhY2hfc3ltYm9sX2NhbGxiYWNrX2Z0eXBlIGNh bGxiYWNrKQ0KPj4+PiArew0KPj4+PiArICBjb25zdCBibG9ja3ZlY3RvciAqYnYgPSBzeW10YWIt PmNvbXB1bml0ICgpLmJsb2NrdmVjdG9yICgpOw0KPj4+PiArICBmb3IgKGludCBpID0gRklSU1Rf TE9DQUxfQkxPQ0s7IGkgPCBidi0+bnVtX2Jsb2NrcyAoKTsgaSsrKQ0KPj4+PiArICAgIHsNCj4+ Pj4gKyAgICAgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2sgPSBidi0+YmxvY2sgKGkpOw0KPj4+ PiArICAgICAgbGFuZ3VhZ2UtPmZvcl9lYWNoX3N5bWJvbCAoYmxvY2ssIG5hbWUsIGRvbWFpbiwg Y2FsbGJhY2spOw0KPj4+PiArICAgIH0NCj4+Pj4gK30NCj4+Pj4gKw0KPj4+PiAgIC8qIEEgaGVs cGVyIGZvciBmaW5kX21ldGhvZC4gIFRoaXMgZmluZHMgYWxsIG1ldGhvZHMgaW4gdHlwZSBUIG9m DQo+Pj4+ICAgICAgbGFuZ3VhZ2UgVF9MQU5HIHdoaWNoIG1hdGNoIE5BTUUuICBJdCBhZGRzIG1h dGNoaW5nIHN5bWJvbCBuYW1lcw0KPj50bw0KPj4+PiAgICAgIFJFU1VMVF9OQU1FUywgYW5kIGFk ZHMgVCdzIGRpcmVjdCBzdXBlcmNsYXNzZXMgdG8gU1VQRVJDTEFTU0VTLiAgKi8NCj4+Pj4gQEAg LTQyNTMsNiArNDI2NSwxMSBAQCBhZGRfbWF0Y2hpbmdfc3ltYm9sc190b19pbmZvIChjb25zdCBj aGFyDQo+Pj4qbmFtZSwNCj4+Pj4gICAgICAgew0KPj4+PiAgICAgICAgIGluZm8tPmFkZF9zeW1i b2wgKGJzeW0pOw0KPj4+PiAgICAgICB9Ow0KPj4+PiArICBhdXRvIGFkZF9pbmxpbmVkX3N5bWJv bCA9IFsmXSAoYmxvY2tfc3ltYm9sICpic3ltKQ0KPj4+PiArICAgIHsNCj4+Pj4gKyAgICAgIGlm IChic3ltLT5zeW1ib2wtPmlzX2lubGluZWQgKCkpDQo+Pj4+ICsJaW5mby0+YWRkX3N5bWJvbCAo YnN5bSk7DQo+Pj4+ICsgICAgfTsNCj4+Pj4NCj4+Pj4gICAgIGZvciAoY29uc3QgYXV0byAmZWx0 IDogaW5mby0+ZmlsZV9zeW10YWJzKQ0KPj4+PiAgICAgICB7DQo+Pj4+IEBAIC00Mjc1LDYgKzQy OTIsOCBAQCBhZGRfbWF0Y2hpbmdfc3ltYm9sc190b19pbmZvIChjb25zdCBjaGFyDQo+Pj4qbmFt ZSwNCj4+Pj4gICAJICBnZGJfYXNzZXJ0ICghZWx0X3BzcGFjZS0+ZXhlY3V0aW5nX3N0YXJ0dXAp Ow0KPj4+PiAgIAkgIHNldF9jdXJyZW50X3Byb2dyYW1fc3BhY2UgKGVsdF9wc3BhY2UpOw0KPj4+ PiAgIAkgIGl0ZXJhdGVfb3Zlcl9maWxlX2Jsb2NrcyAoZWx0LCBsb29rdXBfbmFtZSwgU0VBUkNI X1ZGVCwNCj4+PmFkZF9zeW1ib2wpOw0KPj4+PiArCSAgaXRlcmF0ZV9vdmVyX2xvY2FsX2Jsb2Nr cyAoZWx0LCBpbmZvLT5zdGF0ZS0+bGFuZ3VhZ2UsIGxvb2t1cF9uYW1lLA0KPj4+PiArCQkJCSAg ICAgU0VBUkNIX1ZGVCwgYWRkX2lubGluZWRfc3ltYm9sKTsNCj4+Pj4NCj4+Pj4gICAJICAvKiBJ ZiBubyBuZXcgc3ltYm9scyB3ZXJlIGZvdW5kIGluIHRoaXMgaXRlcmF0aW9uIGFuZCB0aGlzIHN5 bXRhYg0KPj4+PiAgIAkgICAgIGlzIGluIGFzc2VtYmxlciwgd2UgbWlnaHQgYWN0dWFsbHkgYmUg bG9va2luZyBmb3IgYSBsYWJlbCBmb3INCj4+Pj4gZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvYnJlYWstaW5saW5lMi5jDQo+Pj5iL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJl YWstaW5saW5lMi5jDQo+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+Pj4+IGluZGV4IDAwMDAw MDAwMDAwLi43OTdhYjA3ZGEzMQ0KPj4+PiAtLS0gL2Rldi9udWxsDQo+Pj4+ICsrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW5saW5lMi5jDQo+Pj4+IEBAIC0wLDAgKzEsMzMgQEAN Cj4+Pj4gKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIu DQo+Pj4+ICsNCj4+Pj4gKyAgIENvcHlyaWdodCAyMDI2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLg0KPj4+PiArDQo+Pj4+ICsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KPj4+PiArICAgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkNCj4+Pj4gKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yDQo+Pj4+ICsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLg0KPj4+PiArDQo+Pj4+ICsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCj4+Pj4gKyAgIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQo+Pj4+ ICsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlDQo+Pj4+ICsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLg0KPj4+PiArDQo+Pj4+ICsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KPj4+PiArICAgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u DQo+Ki8NCj4+Pj4gKw0KPj4+PiArI2luY2x1ZGUgImJyZWFrLWlubGluZTIuaCINCj4+Pj4gKw0K Pj4+PiArc3RhdGljIGludA0KPj4+PiArdGVzdCAodm9pZCkNCj4+Pj4gK3sNCj4+Pj4gKyAgaW50 IGYgPSBmb28gKCk7DQo+Pj4+ICsgIGludCBiID0gYmFyICgpOw0KPj4+PiArICByZXR1cm4gZiAr IGI7DQo+Pj4+ICt9DQo+Pj4+ICsNCj4+Pj4gK2ludA0KPj4+PiArbWFpbiAodm9pZCkNCj4+Pj4g K3sNCj4+Pj4gKyAvKiBEb24ndCBtYWtlIGJyZWFrcG9pbnRzIG9uIGZvbyBhbmQgbWFpbiBiaW5k IHRvIHRoZSBzYW1lIGFkZHJlc3MuDQo+Ki8NCj4+Pj4gKyAgcmV0dXJuIHRlc3QgKCk7DQo+Pj4+ ICt9DQo+Pj4+IGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWlubGlu ZTIuZXhwDQo+Pj5iL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW5saW5lMi5leHANCj4+ Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+Pj4gaW5kZXggMDAwMDAwMDAwMDAuLmIxMGNkZWNl MTE4DQo+Pj4+IC0tLSAvZGV2L251bGwNCj4+Pj4gKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9icmVhay1pbmxpbmUyLmV4cA0KPj4+PiBAQCAtMCwwICsxLDMwIEBADQo+Pj4+ICsjICAgQ29w eXJpZ2h0IChDKSAyMDI2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KPj4+PiArIw0K Pj4+PiArIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQ0KPj4+PiArIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KPj4+PiArIyB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cg0KPj4+PiArIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KPj4+PiArIw0K Pj4+PiArIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwNCj4+Pj4gKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCj4+Pj4gKyMgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KPj4+PiArIyBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KPj4+PiArIw0KPj4+PiAr IyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQ0KPj4+PiArIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4NCj4+Pj4gKw0KPj4+PiArc3RhbmRhcmRf dGVzdGZpbGUNCj4+Pj4gKw0KPj4+PiAraWYge1twcmVwYXJlX2Zvcl90ZXN0aW5nICJmYWlsZWQg dG8gcHJlcGFyZSIgIiR0ZXN0ZmlsZSIgIiRzcmNmaWxlIl19IHsNCj4+Pj4gKyAgICByZXR1cm4N Cj4+Pj4gK30NCj4+Pj4gKw0KPj4+PiAraWYgeyFbcnVudG9fbWFpbl19IHsNCj4+Pj4gKyAgICBy ZXR1cm4NCj4+Pj4gK30NCj4+Pj4gKw0KPj4+PiArZ2RiX2JyZWFrcG9pbnQgIiR0ZXN0ZmlsZS5o OmZvbyIgLW1lc3NhZ2UgLWFsbG93LXBlbmRpbmcNCj4+Pj4gK2dkYl9icmVha3BvaW50IGJhciAt bWVzc2FnZSAtYWxsb3ctcGVuZGluZw0KPj4+PiArDQo+Pj4+ICtnZGJfY29udGludWVfdG9fYnJl YWtwb2ludCAiZm9vIiAiLipmb28uZW50cnkuKiINCj4+Pj4gK2dkYl9jb250aW51ZV90b19icmVh a3BvaW50ICJiYXIiICIuKmJhci5lbnRyeS4qIg0KPj4+PiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9icmVhay1pbmxpbmUyLmgNCj4+PmIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9icmVhay1pbmxpbmUyLmgNCj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+Pj4gaW5kZXgg MDAwMDAwMDAwMDAuLmU2MGQwNTRlODViDQo+Pj4+IC0tLSAvZGV2L251bGwNCj4+Pj4gKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbmxpbmUyLmgNCj4+Pj4gQEAgLTAsMCArMSwy OCBAQA0KPj4+PiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1 Z2dlci4NCj4+Pj4gKw0KPj4+PiArICAgQ29weXJpZ2h0IDIwMjYgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuDQo+Pj4+ICsNCj4+Pj4gKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQo+Pj4+ICsgICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQ0KPj4+PiArICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3INCj4+Pj4gKyAgIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uDQo+Pj4+ICsNCj4+Pj4gKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KPj4+PiArICAgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YN Cj4+Pj4gKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUNCj4+Pj4gKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuDQo+Pj4+ICsNCj4+Pj4gKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQo+Pj4+ICsgICBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4NCj4qLw0KPj4+PiArDQo+Pj4+ICtzdGF0aWMgaW5saW5lIGludCBfX2F0dHJpYnV0ZV9f KChhbHdheXNfaW5saW5lKSkNCj4+Pj4gK2ZvbyAodm9pZCkgLyogZm9vLmVudHJ5ICovDQo+Pj4+ ICt7IC8qIGZvby5lbnRyeSAqLw0KPj4+PiArICByZXR1cm4gNDI7IC8qIGZvby5lbnRyeSAqLw0K Pj4+PiArfQ0KPj4+PiArDQo+Pj4+ICtzdGF0aWMgaW5saW5lIGludCBfX2F0dHJpYnV0ZV9fKChh bHdheXNfaW5saW5lKSkNCj4+Pj4gK2JhciAodm9pZCkgLyogYmFyLmVudHJ5ICovDQo+Pj4+ICt7 IC8qIGJhci5lbnRyeSAqLw0KPj4+PiArICByZXR1cm4gNDI7IC8qIGJhci5lbnRyeSAqLw0KPj4+ PiArfQ0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQpJbnRlbCBE ZXV0c2NobGFuZCBHbWJIIA0KDQpSZWdpc3RlcmVkIEFkZHJlc3M6IERvcm5hY2hlciBTdHJhc3Nl IDEsIDg1NjIyIEZlbGRraXJjaGVuLCBHZXJtYW55IA0KDQpUZWw6ICs0OSAoODkpIDk5MTQzLTAg DQoNCnd3dy5pbnRlbC5kZSANCg0KTWFuYWdpbmcgRGlyZWN0b3JzOiBDYW5kaWNlIE1vb3JlLCBK ZWZmcmV5IFNjaG5laWRlcm1hbiwgUmFtYWNoYW5kcmFuIFNpdGFyYW1hbg0KDQpDaGFpcnBlcnNv biBvZiB0aGUgU3VwZXJ2aXNvcnkgQm9hcmQ6IFNvbmphIFBpZXJlcg0KDQpSZWdpc3RlcmVkIFNl YXQ6IE11bmljaCBDb21tZXJjaWFsIFJlZ2lzdGVyIEI6IEFtdHNnZXJpY2h0IE11bmljaCBIUkIg MTg2OTI4DQoNClRoaXMgZS1tYWlsIGFuZCBhbnkgYXR0YWNobWVudHMgbWF5IGNvbnRhaW4gY29u ZmlkZW50aWFsIG1hdGVyaWFsIGZvcg0KdGhlIHNvbGUgdXNlIG9mIHRoZSBpbnRlbmRlZCByZWNp cGllbnQocykuIEFueSByZXZpZXcgb3IgZGlzdHJpYnV0aW9uDQpieSBvdGhlcnMgaXMgc3RyaWN0 bHkgcHJvaGliaXRlZC4gSWYgeW91IGFyZSBub3QgdGhlIGludGVuZGVkDQpyZWNpcGllbnQsIHBs ZWFzZSBjb250YWN0IHRoZSBzZW5kZXIgYW5kIGRlbGV0ZSBhbGwgY29waWVzLgo=