From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C24DAC64EC7 for ; Sat, 25 Feb 2023 07:33:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229538AbjBYHdd (ORCPT ); Sat, 25 Feb 2023 02:33:33 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35660 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229638AbjBYHdc (ORCPT ); Sat, 25 Feb 2023 02:33:32 -0500 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 800FB18B3F; Fri, 24 Feb 2023 23:33:28 -0800 (PST) Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31P5xjGU010540; Sat, 25 Feb 2023 07:33:18 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=corp-2022-7-12; bh=99vsHyCIAt1SFK4fTk/OKtC/rA8u9ipd9dMur3jo+Og=; b=ZtwKl3T3jNu7uwc22OR0LxXOgcNRKv3t84BliiatMGpvyRIbRm4LVj3dYuBJb0vSWd8k 8W+qVvPe0j1vg37bW/60KCD7BNRE89IYOcxBgmpg5afB4KB6BJB54bmwFPN4wtkaOmOw SuovMRk4v4nYQXchgEplE6X3Ni/8xu7dkcL42F8yqWIoVqyrgX8e/a6bulwaeIEHIdvL 4OavOvmAaVwM3HNr5qJ9JV0q8Fdeym/g8wbCuZ9yRO0JdwmVyJO6a9Abk099yTW6cO/W t5GP/lVw9brMssqncKD3fAvvTQ9htY7wvCoF/nV2Vq1a9mMiajaohlW4iSfRgDJaL5n7 CQ== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3nybakg3bu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 25 Feb 2023 07:33:18 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 31P65DkK031695; Sat, 25 Feb 2023 07:33:17 GMT Received: from nam04-mw2-obe.outbound.protection.outlook.com (mail-mw2nam04lp2177.outbound.protection.outlook.com [104.47.73.177]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3ny8s9pd70-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 25 Feb 2023 07:33:17 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=A47nU8XNBcVkJQIclZfFAp10vqfu8I/1CtQBF531I/vrS66YvbnrTOUxgG3jAr+7FE3dCHuBPJw5MDutZfl/EQxkKaKYGxHxr5GsdIYz8+5BQvhUFBv2+qLPs0DHqOF+QwVMkKRHsZ1LygRZpwd/4bzNk0begs8gDqsKX31dQjNXVCILVbolUJzxlpSbE6ULO1+rtvGASxHVBLWaw0bCHV6NrmHill6iVTHvFUiZROV05qJZCaJQKfyAFa5a/pjrjWZI8rSr75jv3KUwG1ECZg7OW9o11gW127cCWBnU+WQkFEJs6AU7ObEchMZRizNQAdY9NSl12b2T7EUP+GecbQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=99vsHyCIAt1SFK4fTk/OKtC/rA8u9ipd9dMur3jo+Og=; b=ORe3L2veinhsa3M6W0p+XkAxG1yhO9h6APyXn3LXwACO24dMFinsLuP6F5gpWiDVZO0F24En2351ug57lRSo+zlLOtR8NEUTxYtSkHZJLY6dJa5im2ilXVSowNLyi8R15euBCRpJ3vP0wypnzg90sWz0OM9qIFIrmjEHasFAAisdFT0lm6SUcoFlW7QnmEkNWWNGZX7BQOOBHj5YXmcLkTroR/eezw7qm9V3t9/KhyHASZjO3c6iC40ZKnEVlmzytNpzlZm5P0ZuiatP1xqiu/PVruBWTMiGIZJX6iFqOOmz15+nc2udJyJPneo3L4+cbvY+hz7zPtxNrGUFZuaz5w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=99vsHyCIAt1SFK4fTk/OKtC/rA8u9ipd9dMur3jo+Og=; b=OFsxoA3NvJ9EehbO32MK8UXp7IezGKQ9sh3BkssL8rGcnFaM1No99GbGWqGUR9r5k8fblh97eBNwqABtBZnxCEy9KYEyK8Bsr3jjANhuqoJVT6ecBE60te456IOsMffZ1TXG17yz42JapHnWofDtudPAX6UGln/WL51rJG16ctM= Received: from CH2PR10MB4312.namprd10.prod.outlook.com (2603:10b6:610:7b::9) by CO1PR10MB4738.namprd10.prod.outlook.com (2603:10b6:303:93::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.12; Sat, 25 Feb 2023 07:33:13 +0000 Received: from CH2PR10MB4312.namprd10.prod.outlook.com ([fe80::2b08:15c4:ba38:6b44]) by CH2PR10MB4312.namprd10.prod.outlook.com ([fe80::2b08:15c4:ba38:6b44%9]) with mapi id 15.20.6156.011; Sat, 25 Feb 2023 07:33:13 +0000 From: Allison Henderson To: "djwong@kernel.org" CC: Catherine Hoang , "david@fromorbit.com" , "willy@infradead.org" , "linux-xfs@vger.kernel.org" , Chandan Babu , "linux-fsdevel@vger.kernel.org" , "hch@infradead.org" Subject: Re: [PATCH 11/14] xfs: document metadata file repair Thread-Topic: [PATCH 11/14] xfs: document metadata file repair Thread-Index: AQHZHJ6Rf5xalZgUr0WLzesAmkp6Zq7fnZcA Date: Sat, 25 Feb 2023 07:33:13 +0000 Message-ID: <828eda5432b98c45dd499f0ca43b6749fd647f0c.camel@oracle.com> References: <167243825144.682859.12802259329489258661.stgit@magnolia> <167243825317.682859.9494221661454675689.stgit@magnolia> In-Reply-To: <167243825317.682859.9494221661454675689.stgit@magnolia> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.44.4-0ubuntu1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CH2PR10MB4312:EE_|CO1PR10MB4738:EE_ x-ms-office365-filtering-correlation-id: 51f3d459-b566-4d10-96eb-08db17028d9f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Xu0YaOvZwxe+z25QnZ0AHCrSJIpJCax65k0tL3fQJz1imwSymizi0b0K/yqIshnXPNQkZlO7jqQARZIf1wBak7SbfSWIX29Sg/qfCPGTtFJXHPNkitj7lyTt9PoqH39i8oN5lajCa/1CCS74vzPnhN8tMNBITUpUkEpTdoywD+W/jcKeWp02xQY9U6sfVPwm+3A53gj+i1QlEB3hoHd9qc87HTcEVEtB3PM/AWY9gMOeebq8SOWqKF0E8ycZ9eqPcAIrlkKlkto+PRtYmjgMQEbq1+B6T82EMIRFi8VgwQ62eOIsWFNAejWTnTx2dFqfmyQ8DmyCNSmAfpC/un5JjAQe7PlL2yoDn6znqKiSVNAu67I/w3ScfqysinSKzcuSkEEGSP9CEJQRRi/sRdTCxA8iCyjUlKwXo4Uw1zDu6/Uvw6iW+5wrDFUGyH+BHJPSFRPd2MspkoLq3O2i7A6nT60E51yEumTQKilDpRTRq4gSXsvwzcsW3u+tmjyITS6lYUVDpFX03kusVUZi4asMjF4Hca4mt4gQ6o9+yCc9AFXAGViLlCTyl41fHSRbrqDh2yLdisb8ifLf5hJq2+cK7bU0+piW8Ov3QmeroHYh8pC2FY3RVgb69b0TmUqaZxNcUC3pr95sqWm8Xlb+UEDiBWgkyA//jtJvd5jrjqw9FRa0F5GODQt+M2VvjMdULArr x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR10MB4312.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(136003)(346002)(376002)(396003)(39860400002)(366004)(451199018)(316002)(38070700005)(41300700001)(186003)(26005)(30864003)(8936002)(2616005)(44832011)(5660300002)(122000001)(966005)(6486002)(54906003)(6512007)(6506007)(8676002)(64756008)(76116006)(6916009)(91956017)(66446008)(66476007)(66556008)(4326008)(66946007)(71200400001)(83380400001)(38100700002)(86362001)(478600001)(36756003)(2906002)(4001150100001)(579004)(559001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?aHg0WC9CZFdVNnlUT0ZHTnc4ZVdoK1VmNEdNNUVjSDJWZUk4a25ISlFkaGdq?= =?utf-8?B?MXpndTQ0NW1RNHFDYmtnYXdIcGdKK2Z0ZFBScVVsSElYR0dpMGN2L1ZSTXYr?= =?utf-8?B?WjZRc05WRHpmR05hdTRYY0U1TG9oaWVqK0JQcDk2WEtRcit4L2ZUcFBoYTN3?= =?utf-8?B?WHpXWGRQa3Zzd203dGZXNnU4ZnBSYmNOdjhGUTErUEt6MkZPZXdSam5jWFk3?= =?utf-8?B?VG9uRXJnVGNKTUJCSDBNS3RTRlJLOFJ6aFRLYzZ5a0xGUTVOdXBGU3kzTTZl?= =?utf-8?B?bGlqZ0JFeFEwVUR5N0MySEZ4d0pvQXp3WTNQMTczSmluczNrVU5iUi9ncEJO?= =?utf-8?B?dm1zTGdMSmdvV0NsYmVnbC80L2xvMFROUWhlUm41Q1JZWjRibnhKQStnMHRw?= =?utf-8?B?ZW1tdnBwUWVWb3RrcEJNRmNnVDFEdFNZdXhIdDh5cm8xYm16VXAzMFRaRGFQ?= =?utf-8?B?TjRybDR4NnlnQ0JvMnV4ZmlKd1RFb2VBYWlQKzZlLzRteXhiNDhZekh6cFhp?= =?utf-8?B?RUJHT1pZMG9waVU0YlhPNGVON05kWHQ2T2w3Vk9nbVV4bS9DbkJMbXo0MzdV?= =?utf-8?B?ZlNqc2pDcEtjeG95TlZGODB2OXNqZW9jREJRQmc5UnV3NDBsVWhVeFpIQVlp?= =?utf-8?B?TTFkUXJVVnNseURJL1NOWG5QUVh0VDVXcW9KUGRwYUZEK1RIQWRwcUMxOVVm?= =?utf-8?B?ZmlNbzlQdVMxbnhKWUMwSmlqNTQ4N0pmUjFXZjdKSDdzTS9Ed2RyaEFwdHA5?= =?utf-8?B?aGdTd0MzNTVoeVc4VWhmclJSRTVOVm91QzRtNUQzWndjaEpkbUZIU002TWQ0?= =?utf-8?B?Qy9BRWhUdURIRENWNEZYNGEzZzFzalVjOEpUczNvcGVKRVpNYVJkWVJLazRX?= =?utf-8?B?SGVrcXltR3hFNmtVVHU5VmhwYkY4MWNXMVVWUHhCeStDUjk5VkNiN0ZQVlMr?= =?utf-8?B?eXVLRm8vT3dQakZIb1NYZHBJemw0cTRiZWJweHovLzBlOGQ1Y0owSnJKMmZj?= =?utf-8?B?VjgzdmdKWUo1OGpMNnAybHR4K1NTN1A0Z0pGWUR3a1ozaXgyKzB1WXNVUE5V?= =?utf-8?B?OGVra1RhdStUUnFZRCtBbGVZTWp0aEZPbnBXLzdNYmhBd3dHUXZmclpCUmYy?= =?utf-8?B?QWtacGlOWFQ0c05MZUhKQk1mbm8vLzRiMFpVcHVnK0gvd3gybU1SNE02d0N1?= =?utf-8?B?ZDh1TnRyMkJPZHNQUzkrZDFZSWo0VzJOVUx3ZTdBY3JFRXRCcTVabmlLQTVw?= =?utf-8?B?cmwyNHN5d0tyaXd0T0pjRTYxWEFPakJpektJSTY5RmdIZER4WkZmWXIvenFa?= =?utf-8?B?cGF1NkZ0ejVtK3I3UE56ZE5xcTlWcmR3bWJCOUVCUUcrQ2VpOGNzZnJ0anJu?= =?utf-8?B?dXg2cTFzZTRseEN1NmJETHNsOXAxZHB3a2ZiQTByQTVTL0ZjN3lyZUVvdnpy?= =?utf-8?B?cERQc3ZlZ3R1eHNWV3Q1SWdCWE1STXhiMFBtd3lKcTNJZ1VqS2xDQ3d0MUx5?= =?utf-8?B?MkE1VS9RQU9GUnovc1lnWjZta2RqZnE0SExlaWFzNDYrOUNSTVQ1YXRpdG1y?= =?utf-8?B?ZEpBcHBROG1qbWNGNFlDT3llT0FXWGRFWFpXSFV0SWtTRjlpNE1aY1hUNG5a?= =?utf-8?B?aEFtTVM5K0xvSk51MDhFNWJ5czdhVERheGxFc3d2b1Rjb1ZWMGgwYklYNzNp?= =?utf-8?B?OGhFY2YwOURoS2ZtOFN4V0cyWXBxQUxYeTAzUWNkZEwxOFZwL0g4T00vYU8z?= =?utf-8?B?ZzdyRVcwM0lENk1jdWw5L2dmY1ZYWG55ZFR4aStMTDhGaXN4dVNpYzViR3Ur?= =?utf-8?B?cnhFZkxLdmhhb1RZeXdxQWRyd0pCMHMrZlhXY0hsVVVvK3BKMHZjRkdVeExk?= =?utf-8?B?UmFGNlVqbktDMkt6dHQ5RmpndkxiNk1BaGJ0ZXRScWs4WFgvUVFoNFFwR3Vs?= =?utf-8?B?aDI2WmFSQ0FSa29rdGpDYXFERVpQYUJBY2dWcXl1T0J5RldyYWNWSVE2Mmdt?= =?utf-8?B?b0VDV0dXUmlhNUo5REFBaWtVUHZKNW4yVWpIUW1mZ09yY2RodUV2MXhML25n?= =?utf-8?B?ZUZCRU13Wk1qbkhLWGNicWpPZ0ZhQWtmNStZR0FPQW1DT2t1Yk5tK1Z5bGZa?= =?utf-8?B?L0Nmang3aGUwRk9kMjZPZFNaWDYxVyt5WXo3dyt0ZjdBZExXdTM4SUp6RDFy?= =?utf-8?Q?5t+l3Yo3+GaACV7U4GYJhOQ=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <7671247B82A1EB498D4D1CD2DED41AD6@namprd10.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: TRWcvLEUBbIN1/7YA/2abFojkG2aPJoxlmC+f3i+NbYheQMNR1Rcss4U0kAB1JGtKMyVRZkd7IajQTSLnW4uMyKQgZv8SeKAxRp/pN6eLjE0ds8ERzgMEjgafVHLNkRJMZfNItAqFq1yCB49pfP2gAoYktakQfHCCD0b7xMbRKjucKpqNnuvgEZcsletZ1B5y20Zww+adwpw+/PqhXHUky+iFlg5vuZVDCgzJQGQgnpjWFo8+c68quTb4lgg5MukJNKqJZSk9j4AlpkmdHBQZ8L2hUitGRtUMxdhlQvUAaIic5OL6ygd7eEk6z+zK8jJ5tNCkmYMI4ikqPzjYHIKbUYUkY1p+Jj6tjGGcRXBExISQyUIQsFxk+LoWK6WVxY/VBZ+XeXMynuFGBzrYghvrTw7+n0hMsY4KcZzQLNo/apDnL9enQb5WtoZUnWgRIhCZPedtnLhz1lRMf9UwVFKheqQ3jxRspEwqgpqbpgCqxcxobfMvZzHdV5r2RmRsb34xgu08JqFXclFsJ8m5wlbbmYQYcQgDqqlAcB2NX0FOLX5tmU9zC5e61qKJ00vW7xUmIb9+wGNl/lJ3NEtV0nrYYlBA3TfMjJI3QNoB9ZJy2/aA53XvalhVe7iqiuEW1hXRK3qeBhXfpPhgj403Skr/TwxIpwlr31DMK0qbatlYwh2f9lx01FBdahwVQSoef+rWh0bd8dU2EkeYWpCWXheuMsfIAR6xDq1kGA7zG4oupWwZJX/zhffu28BOvytqavotG+xUse2E0yVzbV4US50SzR4PR7PLpV0/dL7yFjEtAePuiqK2MHCMhQj2cWhNB0BvO1cmLTIsPZJ4DS6PQ1gaGkpakDaDmQkytebuc/b5uA= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH2PR10MB4312.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 51f3d459-b566-4d10-96eb-08db17028d9f X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Feb 2023 07:33:13.6008 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: E2hygDa3uuo7peMeolBIaKlcYg/UVLYsD6u9cG3ReGjjB7UGfBmVIDY4suW9LudiIfA6XVqnFHWMWjT0xMKKUMLMMmXBfqMUowDgRylwhNQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR10MB4738 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.170.22 definitions=2023-02-25_04,2023-02-24_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxlogscore=999 mlxscore=0 adultscore=0 bulkscore=0 malwarescore=0 phishscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2302250059 X-Proofpoint-GUID: 5arwX665UdX7BcU-UYTQBkqIvb8cS5qZ X-Proofpoint-ORIG-GUID: 5arwX665UdX7BcU-UYTQBkqIvb8cS5qZ Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org T24gRnJpLCAyMDIyLTEyLTMwIGF0IDE0OjEwIC0wODAwLCBEYXJyaWNrIEouIFdvbmcgd3JvdGU6 DQo+IEZyb206IERhcnJpY2sgSi4gV29uZyA8ZGp3b25nQGtlcm5lbC5vcmc+DQo+IA0KPiBGaWxl LWJhc2VkIG1ldGFkYXRhIChzdWNoIGFzIHhhdHRycyBhbmQgZGlyZWN0b3JpZXMpIGNhbiBiZSBl eHRyZW1lbHkNCj4gbGFyZ2UuwqAgVG8gcmVkdWNlIHRoZSBtZW1vcnkgcmVxdWlyZW1lbnRzIGFu ZCBtYXhpbWl6ZSBjb2RlIHJldXNlLCBpdA0KPiBpcw0KPiB2ZXJ5IGNvbnZlbmllbnQgdG8gY3Jl YXRlIGEgdGVtcG9yYXJ5IGZpbGUsIHVzZSB0aGUgcmVndWxhciBkaXIvYXR0cg0KPiBjb2RlIHRv IHN0b3JlIHNhbHZhZ2VkIGluZm9ybWF0aW9uLCBhbmQgdGhlbiBhdG9taWNhbGx5IHN3YXAgdGhl DQo+IGV4dGVudHMNCj4gYmV0d2VlbiB0aGUgZmlsZSBiZWluZyByZXBhaXJlZCBhbmQgdGhlIHRl bXBvcmFyeSBmaWxlLsKgIFJlY29yZCB0aGUNCj4gaGlnaA0KPiBsZXZlbCBjb25jZXB0cyBiZWhp bmQgaG93IHRlbXBvcmFyeSBmaWxlcyBhbmQgYXRvbWljIGNvbnRlbnQgc3dhcHBpbmcNCj4gc2hv dWxkIHdvcmssIGFuZCB0aGVuIHByZXNlbnQgc29tZSBjYXNlIHN0dWRpZXMgb2Ygd2hhdCB0aGUg YWN0dWFsDQo+IHJlcGFpciBmdW5jdGlvbnMgZG8uDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBEYXJy aWNrIEouIFdvbmcgPGRqd29uZ0BrZXJuZWwub3JnPg0KPiAtLS0NCj4gwqAuLi4vZmlsZXN5c3Rl bXMveGZzLW9ubGluZS1mc2NrLWRlc2lnbi5yc3TCoMKgwqDCoMKgwqDCoMKgIHzCoCA1NzQNCj4g KysrKysrKysrKysrKysrKysrKysNCj4gwqAxIGZpbGUgY2hhbmdlZCwgNTc0IGluc2VydGlvbnMo KykNCj4gDQo+IA0KPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy94ZnMt b25saW5lLWZzY2stZGVzaWduLnJzdA0KPiBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMveGZz LW9ubGluZS1mc2NrLWRlc2lnbi5yc3QNCj4gaW5kZXggYzBmMDhhNzczZjA4Li5lMzI1MDZhY2I2 NmYgMTAwNjQ0DQo+IC0tLSBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMveGZzLW9ubGluZS1m c2NrLWRlc2lnbi5yc3QNCj4gKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy94ZnMtb25s aW5lLWZzY2stZGVzaWduLnJzdA0KPiBAQCAtMzI1Miw2ICszMjUyLDggQEAgUHJvcG9zZWQgcGF0 Y2hzZXRzIGluY2x1ZGUgZml4aW5nDQo+IMKgYGRpciBpZ2V0IHVzYWdlDQo+IMKgPA0KPiBodHRw czovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9kandvbmcveGZzLWxp bnV4LmdpdC8NCj4gbG9nLz9oPXNjcnViLWRpci1pZ2V0LWZpeGVzPmBfLg0KPiDCoA0KPiArLi4g X2lsb2NraW5nOg0KPiArDQpobW0sIHRoaXMgbGl0dGxlICBwYXJ0IGxvb2sgbGlrZSBtYXliZSBp dCB3YXMgc3VwcG9zZWQgdG8gZ28gaW4gdGhlDQpsYXN0IHBhdGNoPw0KDQo+IMKgTG9ja2luZyBJ bm9kZXMNCj4gwqBeXl5eXl5eXl5eXl5eXg0KPiDCoA0KPiBAQCAtMzY5NSwzICszNjk3LDU3NSBA QCBUaGUgcHJvcG9zZWQgcGF0Y2hzZXQgaXMgdGhlDQo+IMKgYHJtYXAgcmVwYWlyDQo+IMKgPA0K PiBodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9kandvbmcv eGZzLWxpbnV4LmdpdC8NCj4gbG9nLz9oPXJlcGFpci1ybWFwLWJ0cmVlPmBfDQo+IMKgc2VyaWVz Lg0KPiArDQo+ICtTdGFnaW5nIFJlcGFpcnMgd2l0aCBUZW1wb3JhcnkgRmlsZXMgb24gRGlzaw0K PiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gKw0KPiAr WEZTIHN0b3JlcyBhIHN1YnN0YW50aWFsIGFtb3VudCBvZiBtZXRhZGF0YSBpbiBmaWxlIGZvcmtz Og0KPiBkaXJlY3RvcmllcywNCj4gK2V4dGVuZGVkIGF0dHJpYnV0ZXMsIHN5bWJvbGljIGxpbmsg dGFyZ2V0cywgZnJlZSBzcGFjZSBiaXRtYXBzIGFuZA0KPiBzdW1tYXJ5DQo+ICtpbmZvcm1hdGlv biBmb3IgdGhlIHJlYWx0aW1lIHZvbHVtZSwgYW5kIHF1b3RhIHJlY29yZHMuDQo+ICtGaWxlIGZv cmtzIG1hcCA2NC1iaXQgbG9naWNhbCBmaWxlIGZvcmsgc3BhY2UgZXh0ZW50cyB0byBwaHlzaWNh bA0KPiBzdG9yYWdlIHNwYWNlDQo+ICtleHRlbnRzLCBzaW1pbGFyIHRvIGhvdyBhIG1lbW9yeSBt YW5hZ2VtZW50IHVuaXQgbWFwcyA2NC1iaXQgdmlydHVhbA0KPiBhZGRyZXNzZXMNCj4gK3RvIHBo eXNpY2FsIG1lbW9yeSBhZGRyZXNzZXMuDQo+ICtUaGVyZWZvcmUsIGZpbGUtYmFzZWQgdHJlZSBz dHJ1Y3R1cmVzIChzdWNoIGFzIGRpcmVjdG9yaWVzIGFuZA0KPiBleHRlbmRlZA0KPiArYXR0cmli dXRlcykgdXNlIGJsb2NrcyBtYXBwZWQgaW4gdGhlIGZpbGUgZm9yayBvZmZzZXQgYWRkcmVzcyBz cGFjZQ0KPiB0aGF0IHBvaW50DQo+ICt0byBvdGhlciBibG9ja3MgbWFwcGVkIHdpdGhpbiB0aGF0 IHNhbWUgYWRkcmVzcyBzcGFjZSwgYW5kIGZpbGUtDQo+IGJhc2VkIGxpbmVhcg0KPiArc3RydWN0 dXJlcyAoc3VjaCBhcyBiaXRtYXBzIGFuZCBxdW90YSByZWNvcmRzKSBjb21wdXRlIGFycmF5IGVs ZW1lbnQNCj4gb2Zmc2V0cyBpbg0KPiArdGhlIGZpbGUgZm9yayBvZmZzZXQgYWRkcmVzcyBzcGFj ZS4NCj4gKw0KDQoNCj4gK0luIHRoZSBpbml0aWFsIGl0ZXJhdGlvbiBvZiBmaWxlIG1ldGFkYXRh IHJlcGFpciwgdGhlIGRhbWFnZWQNCj4gbWV0YWRhdGEgYmxvY2tzDQo+ICt3b3VsZCBiZSBzY2Fu bmVkIGZvciBzYWx2YWdlYWJsZSBkYXRhOyB0aGUgZXh0ZW50cyBpbiB0aGUgZmlsZSBmb3JrDQo+ IHdvdWxkIGJlDQo+ICtyZWFwZWQ7IGFuZCB0aGVuIGEgbmV3IHN0cnVjdHVyZSB3b3VsZCBiZSBi dWlsdCBpbiBpdHMgcGxhY2UuDQo+ICtUaGlzIHN0cmF0ZWd5IGRpZCBub3Qgc3Vydml2ZSB0aGUg aW50cm9kdWN0aW9uIG9mIHRoZSBhdG9taWMgcmVwYWlyDQo+IHJlcXVpcmVtZW50DQo+ICtleHBy ZXNzZWQgZWFybGllciBpbiB0aGlzIGRvY3VtZW50Lg0KPiArVGhlIHNlY29uZCBpdGVyYXRpb24g ZXhwbG9yZWQgYnVpbGRpbmcgYSBzZWNvbmQgc3RydWN0dXJlIGF0IGEgaGlnaA0KPiBvZmZzZXQN Cj4gK2luIHRoZSBmb3JrIGZyb20gdGhlIHNhbHZhZ2UgZGF0YSwgcmVhcGluZyB0aGUgb2xkIGV4 dGVudHMsIGFuZA0KPiB1c2luZyBhDQo+ICtgYENPTExBUFNFX1JBTkdFYGAgb3BlcmF0aW9uIHRv IHNsaWRlIHRoZSBuZXcgZXh0ZW50cyBpbnRvIHBsYWNlLg0KPiArVGhpcyBoYWQgbWFueSBkcmF3 YmFja3M6DQo+ICsNCj4gKy0gQXJyYXkgc3RydWN0dXJlcyBhcmUgbGluZWFybHkgYWRkcmVzc2Vk LCBhbmQgdGhlIHJlZ3VsYXINCj4gZmlsZXN5c3RlbSBjb2RlYmFzZQ0KPiArwqAgZG9lcyBub3Qg aGF2ZSB0aGUgY29uY2VwdCBvZiBhIGxpbmVhciBvZmZzZXQgdGhhdCBjb3VsZCBiZSBhcHBsaWVk DQo+IHRvIHRoZQ0KPiArwqAgcmVjb3JkIG9mZnNldCBjb21wdXRhdGlvbiB0byBidWlsZCBhbiBh bHRlcm5hdGUgY29weS4NCj4gKw0KPiArLSBFeHRlbmRlZCBhdHRyaWJ1dGVzIGFyZSBhbGxvd2Vk IHRvIHVzZSB0aGUgZW50aXJlIGF0dHIgZm9yayBvZmZzZXQNCj4gYWRkcmVzcw0KPiArwqAgc3Bh Y2UuDQo+ICsNCj4gKy0gRXZlbiBpZiByZXBhaXIgY291bGQgYnVpbGQgYW4gYWx0ZXJuYXRlIGNv cHkgb2YgYSBkYXRhIHN0cnVjdHVyZQ0KPiBpbiBhDQo+ICvCoCBkaWZmZXJlbnQgcGFydCBvZiB0 aGUgZm9yayBhZGRyZXNzIHNwYWNlLCB0aGUgYXRvbWljIHJlcGFpciBjb21taXQNCj4gK8KgIHJl cXVpcmVtZW50IG1lYW5zIHRoYXQgb25saW5lIHJlcGFpciB3b3VsZCBoYXZlIHRvIGJlIGFibGUg dG8NCj4gcGVyZm9ybSBhIGxvZw0KPiArwqAgYXNzaXN0ZWQgYGBDT0xMQVBTRV9SQU5HRWBgIG9w ZXJhdGlvbiB0byBlbnN1cmUgdGhhdCB0aGUgb2xkDQo+IHN0cnVjdHVyZSB3YXMNCj4gK8KgIGNv bXBsZXRlbHkgcmVwbGFjZWQuDQo+ICsNCj4gKy0gQSBjcmFzaCBhZnRlciBjb25zdHJ1Y3Rpb24g b2YgdGhlIHNlY29uZGFyeSB0cmVlIGJ1dCBiZWZvcmUgdGhlDQo+IHJhbmdlDQo+ICvCoCBjb2xs YXBzZSB3b3VsZCBsZWF2ZSB1bnJlYWNoYWJsZSBibG9ja3MgaW4gdGhlIGZpbGUgZm9yay4NCj4g K8KgIFRoaXMgd291bGQgbGlrZWx5IGNvbmZ1c2UgdGhpbmdzIGZ1cnRoZXIuDQo+ICsNCj4gKy0g UmVhcGluZyBibG9ja3MgYWZ0ZXIgYSByZXBhaXIgaXMgbm90IGEgc2ltcGxlIG9wZXJhdGlvbiwg YW5kDQo+IGluaXRpYXRpbmcgYQ0KPiArwqAgcmVhcCBvcGVyYXRpb24gZnJvbSBhIHJlc3RhcnRl ZCByYW5nZSBjb2xsYXBzZSBvcGVyYXRpb24gZHVyaW5nDQo+IGxvZyByZWNvdmVyeQ0KPiArwqAg aXMgZGF1bnRpbmcuDQo+ICsNCj4gKy0gRGlyZWN0b3J5IGVudHJ5IGJsb2NrcyBhbmQgcXVvdGEg cmVjb3JkcyByZWNvcmQgdGhlIGZpbGUgZm9yaw0KPiBvZmZzZXQgaW4gdGhlDQo+ICvCoCBoZWFk ZXIgYXJlYSBvZiBlYWNoIGJsb2NrLg0KPiArwqAgQW4gYXRvbWljIHJhbmdlIGNvbGxhcHNlIG9w ZXJhdGlvbiB3b3VsZCBoYXZlIHRvIHJld3JpdGUgdGhpcyBwYXJ0DQo+IG9mIGVhY2gNCj4gK8Kg IGJsb2NrIGhlYWRlci4NCj4gK8KgIFJld3JpdGluZyBhIHNpbmdsZSBmaWVsZCBpbiBibG9jayBo ZWFkZXJzIGlzIG5vdCBhIGh1Z2UgcHJvYmxlbSwNCj4gYnV0IGl0J3MNCj4gK8KgIHNvbWV0aGlu ZyB0byBiZSBhd2FyZSBvZi4NCj4gKw0KPiArLSBFYWNoIGJsb2NrIGluIGEgZGlyZWN0b3J5IG9y IGV4dGVuZGVkIGF0dHJpYnV0ZXMgYnRyZWUgaW5kZXgNCj4gY29udGFpbnMgc2libGluZw0KPiAr wqAgYW5kIGNoaWxkIGJsb2NrIHBvaW50ZXJzLg0KPiArwqAgV2VyZSB0aGUgYXRvbWljIGNvbW1p dCB0byB1c2UgYSByYW5nZSBjb2xsYXBzZSBvcGVyYXRpb24sIGVhY2gNCj4gYmxvY2sgd291bGQN Cj4gK8KgIGhhdmUgdG8gYmUgcmV3cml0dGVuIHZlcnkgY2FyZWZ1bGx5IHRvIHByZXNlcnZlIHRo ZSBncmFwaA0KPiBzdHJ1Y3R1cmUuDQo+ICvCoCBEb2luZyB0aGlzIGFzIHBhcnQgb2YgYSByYW5n ZSBjb2xsYXBzZSBtZWFucyByZXdyaXRpbmcgYSBsYXJnZQ0KPiBudW1iZXIgb2YNCj4gK8KgIGJs b2NrcyByZXBlYXRlZGx5LCB3aGljaCBpcyBub3QgY29uZHVjaXZlIHRvIHF1aWNrIHJlcGFpcnMu DQo+ICsNCj4gK1RoZSB0aGlyZCBpdGVyYXRpb24gb2YgdGhlIGRlc2lnbiBmb3IgZmlsZSBtZXRh ZGF0YSByZXBhaXIgd2VudCBmb3INCj4gYSB0b3RhbGx5DQo+ICtuZXcgc3RyYXRlZ3kgLS3CoA0K QWxsIHRoZSBhYm92ZSBsb29rcyBsaWtlIHNvbWV0aGluZyB0aGF0IGNvdWxkIGJlIGN1bGxlZCBv ciBzaWRlIGJhcmVkLg0KSSBrbm93IHlvdSByZWFsbHkgbGlrZSB0aGVzZSwgYnV0IEkgdGhpbmsg dGhlIGV4dHJhIGRpYWxvZyBpcyB3aHkNCnBlb3BsZSBhcmUgaGF2aW5nIGEgaGFyZCB0aW1lIGdl dHRpbmcgdGhyb3VnaCBpdC4gDQoNCj4gY3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUgaW4gdGhlIFhG UyBmaWxlc3lzdGVtLCB3cml0ZSBhIG5ldw0KIlRoZSBjdXJyZW50IGRlc2lnbiBmb3IgbWV0YWRh dGEgcmVwYWlyIGNyZWF0ZXMgYSB0ZW1wb3JhcnkgZmlsZS4uLiINCg0KPiArc3RydWN0dXJlIGF0 IHRoZSBjb3JyZWN0IG9mZnNldHMgaW50byB0aGUgdGVtcG9yYXJ5IGZpbGUsIGFuZA0KPiBhdG9t aWNhbGx5IHN3YXANCj4gK3RoZSBmb3JrIG1hcHBpbmdzIChhbmQgaGVuY2UgdGhlIGZvcmsgY29u dGVudHMpIHRvIGNvbW1pdCB0aGUNCj4gcmVwYWlyLg0KPiArT25jZSB0aGUgcmVwYWlyIGlzIGNv bXBsZXRlLCB0aGUgb2xkIGZvcmsgY2FuIGJlIHJlYXBlZCBhcw0KPiBuZWNlc3Nhcnk7IGlmIHRo ZQ0KPiArc3lzdGVtIGdvZXMgZG93biBkdXJpbmcgdGhlIHJlYXAsIHRoZSBpdW5saW5rIGNvZGUg d2lsbCBkZWxldGUgdGhlDQo+IGJsb2Nrcw0KPiArZHVyaW5nIGxvZyByZWNvdmVyeS4NCj4gKw0K PiArKipOb3RlKio6IEFsbCBzcGFjZSB1c2FnZSBhbmQgaW5vZGUgaW5kaWNlcyBpbiB0aGUgZmls ZXN5c3RlbSAqbXVzdCoNCj4gYmUNCj4gK2NvbnNpc3RlbnQgdG8gdXNlIGEgdGVtcG9yYXJ5IGZp bGUgc2FmZWx5IQ0KPiArVGhpcyBkZXBlbmRlbmN5IGlzIHRoZSByZWFzb24gd2h5IG9ubGluZSBy ZXBhaXIgY2FuIG9ubHkgdXNlDQo+IHBhZ2VhYmxlIGtlcm5lbA0KPiArbWVtb3J5IHRvIHN0YWdl IG9uZGlzayBzcGFjZSB1c2FnZSBpbmZvcm1hdGlvbi4NCj4gKw0KPiArU3dhcHBpbmcgZXh0ZW50 cyB3aXRoIGEgdGVtcG9yYXJ5IGZpbGUgc3RpbGwgcmVxdWlyZXMgYSByZXdyaXRlIG9mDQo+IHRo ZSBvd25lcg0KPiArZmllbGQgb2YgdGhlIGJsb2NrIGhlYWRlcnMsIGJ1dCB0aGlzIGlzICptdWNo KiBzaW1wbGVyIHRoYW4gbW92aW5nDQo+IHRyZWUgYmxvY2tzDQo+ICtpbmRpdmlkdWFsbHkuDQo+ ICtGdXJ0aGVybW9yZSwgdGhlIGJ1ZmZlciB2ZXJpZmllcnMgZG8gbm90IHZlcmlmeSBvd25lciBm aWVsZHMgKHNpbmNlDQo+IHRoZXkgYXJlDQo+ICtub3QgYXdhcmUgb2YgdGhlIGlub2RlIHRoYXQg b3ducyB0aGUgYmxvY2spLCB3aGljaCBtYWtlcyByZWFwaW5nIG9mDQo+IG9sZCBmaWxlDQo+ICti bG9ja3MgbXVjaCBzaW1wbGVyLg0KPiArRXh0ZW50IHN3YXBwaW5nIHJlcXVpcmVzIHRoYXQgQUcg c3BhY2UgbWV0YWRhdGEgYW5kIHRoZSBmaWxlIGZvcmsNCj4gbWV0YWRhdGEgb2YNCj4gK3RoZSBm aWxlIGJlaW5nIHJlcGFpcmVkIGFyZSBhbGwgY29uc2lzdGVudCB3aXRoIHJlc3BlY3QgdG8gZWFj aA0KPiBvdGhlciwgYnV0DQo+ICt0aGF0J3MgYWxyZWFkeSBhIHJlcXVpcmVtZW50IGZvciBjb3Jy ZWN0IG9wZXJhdGlvbiBvZiBmaWxlcyBpbg0KPiBnZW5lcmFsLg0KPiArVGhlcmUgaXMsIGhvd2V2 ZXIsIGEgc2xpZ2h0IGRvd25zaWRlIC0tIGlmIHRoZSBzeXN0ZW0gY3Jhc2hlcyBkdXJpbmcNCj4g dGhlIHJlYXANCj4gK3BoYXNlIGFuZCB0aGUgZm9yayBleHRlbnRzIGFyZSBjcm9zc2xpbmtlZCwg dGhlIGl1bmxpbmsgcHJvY2Vzc2luZw0KPiB3aWxsIGZhaWwNCj4gK2JlY2F1c2UgZnJlZWluZyBz cGFjZSB3aWxsIGZpbmQgdGhlIGV4dHJhIHJldmVyc2UgbWFwcGluZ3MgYW5kDQo+IGFib3J0Lg0K PiArDQo+ICtUZW1wb3JhcnkgZmlsZXMgY3JlYXRlZCBmb3IgcmVwYWlyIGFyZSBzaW1pbGFyIHRv IGBgT19UTVBGSUxFYGANCj4gZmlsZXMgY3JlYXRlZA0KPiArYnkgdXNlcnNwYWNlLg0KPiArVGhl eSBhcmUgbm90IGxpbmtlZCBpbnRvIGEgZGlyZWN0b3J5IGFuZCB0aGUgZW50aXJlIGZpbGUgd2ls bCBiZQ0KPiByZWFwZWQgd2hlbg0KPiArdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoZSBmaWxlIGlz IGxvc3QuDQo+ICtUaGUga2V5IGRpZmZlcmVuY2VzIGFyZSB0aGF0IHRoZXNlIGZpbGVzIG11c3Qg aGF2ZSBubyBhY2Nlc3MNCj4gcGVybWlzc2lvbiBvdXRzaWRlDQo+ICt0aGUga2VybmVsIGF0IGFs bCwgdGhleSBtdXN0IGJlIHNwZWNpYWxseSBtYXJrZWQgdG8gcHJldmVudCB0aGVtDQo+IGZyb20g YmVpbmcNCj4gK29wZW5lZCBieSBoYW5kbGUsIGFuZCB0aGV5IG11c3QgbmV2ZXIgYmUgbGlua2Vk IGludG8gdGhlIGRpcmVjdG9yeQ0KPiB0cmVlLg0KPiArDQo+ICtVc2luZyBhIFRlbXBvcmFyeSBG aWxlDQo+ICtgYGBgYGBgYGBgYGBgYGBgYGBgYGBgDQo+ICsNCj4gK09ubGluZSByZXBhaXIgY29k ZSBzaG91bGQgdXNlIHRoZSBgYHhyZXBfdGVtcGZpbGVfY3JlYXRlYGAgZnVuY3Rpb24NCj4gdG8g Y3JlYXRlIGENCj4gK3RlbXBvcmFyeSBmaWxlIGluc2lkZSB0aGUgZmlsZXN5c3RlbS4NCj4gK1Ro aXMgYWxsb2NhdGVzIGFuIGlub2RlLCBtYXJrcyB0aGUgaW4tY29yZSBpbm9kZSBwcml2YXRlLCBh bmQNCj4gYXR0YWNoZXMgaXQgdG8NCj4gK3RoZSBzY3J1YiBjb250ZXh0Lg0KPiArVGhlc2UgZmls ZXMgYXJlIGhpZGRlbiBmcm9tIHVzZXJzcGFjZSwgbWF5IG5vdCBiZSBhZGRlZCB0byB0aGUNCj4g ZGlyZWN0b3J5IHRyZWUsDQo+ICthbmQgbXVzdCBiZSBrZXB0IHByaXZhdGUuDQo+ICsNCj4gK1Rl bXBvcmFyeSBmaWxlcyBvbmx5IHVzZSB0d28gaW5vZGUgbG9ja3M6IHRoZSBJT0xPQ0sgYW5kIHRo ZSBJTE9DSy4NCj4gK1RoZSBNTUFQTE9DSyBpcyBub3QgbmVlZGVkIGhlcmUsIGJlY2F1c2UgdGhl cmUgbXVzdCBub3QgYmUgcGFnZQ0KPiBmYXVsdHMgZnJvbQ0KPiArdXNlcnNwYWNlIGZvciBkYXRh IGZvcmsgYmxvY2tzLg0KPiArVGhlIHVzYWdlIHBhdHRlcm5zIG9mIHRoZXNlIHR3byBsb2NrcyBh cmUgdGhlIHNhbWUgYXMgZm9yIGFueSBvdGhlcg0KPiBYRlMgZmlsZSAtLQ0KPiArYWNjZXNzIHRv IGZpbGUgZGF0YSBhcmUgY29udHJvbGxlZCB2aWEgdGhlIElPTE9DSywgYW5kIGFjY2VzcyB0bw0K PiBmaWxlIG1ldGFkYXRhDQo+ICthcmUgY29udHJvbGxlZCB2aWEgdGhlIElMT0NLLg0KPiArTG9j a2luZyBoZWxwZXJzIGFyZSBwcm92aWRlZCBzbyB0aGF0IHRoZSB0ZW1wb3JhcnkgZmlsZSBhbmQg aXRzIGxvY2sNCj4gc3RhdGUgY2FuDQo+ICtiZSBjbGVhbmVkIHVwIGJ5IHRoZSBzY3J1YiBjb250 ZXh0Lg0KPiArVG8gY29tcGx5IHdpdGggdGhlIG5lc3RlZCBsb2NraW5nIHN0cmF0ZWd5IGxhaWQg b3V0IGluIHRoZQ0KPiA6cmVmOmBpbm9kZQ0KPiArbG9ja2luZzxpbG9ja2luZz5gIHNlY3Rpb24s IGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgc2NydWIgZnVuY3Rpb25zDQo+IHVzZSB0aGUNCj4gK3hy ZXBfdGVtcGZpbGVfaWxvY2sqX25vd2FpdCBsb2NrIGhlbHBlcnMuDQo+ICsNCj4gK0RhdGEgY2Fu IGJlIHdyaXR0ZW4gdG8gYSB0ZW1wb3JhcnkgZmlsZSBieSB0d28gbWVhbnM6DQo+ICsNCj4gKzEu IGBgeHJlcF90ZW1wZmlsZV9jb3B5aW5gYCBjYW4gYmUgdXNlZCB0byBzZXQgdGhlIGNvbnRlbnRz IG9mIGENCj4gcmVndWxhcg0KPiArwqDCoCB0ZW1wb3JhcnkgZmlsZSBmcm9tIGFuIHhmaWxlLg0K PiArDQo+ICsyLiBUaGUgcmVndWxhciBkaXJlY3RvcnksIHN5bWJvbGljIGxpbmssIGFuZCBleHRl bmRlZCBhdHRyaWJ1dGUNCj4gZnVuY3Rpb25zIGNhbg0KPiArwqDCoCBiZSB1c2VkIHRvIHdyaXRl IHRvIHRoZSB0ZW1wb3JhcnkgZmlsZS4NCj4gKw0KPiArT25jZSBhIGdvb2QgY29weSBvZiBhIGRh dGEgZmlsZSBoYXMgYmVlbiBjb25zdHJ1Y3RlZCBpbiBhIHRlbXBvcmFyeQ0KPiBmaWxlLCBpdA0K PiArbXVzdCBiZSBjb252ZXllZCB0byB0aGUgZmlsZSBiZWluZyByZXBhaXJlZCwgd2hpY2ggaXMg dGhlIHRvcGljIG9mDQo+IHRoZSBuZXh0DQo+ICtzZWN0aW9uLg0KPiArDQo+ICtUaGUgcHJvcG9z ZWQgcGF0Y2hlcyBhcmUgaW4gdGhlDQo+ICtgcmVhbHRpbWUgc3VtbWFyeSByZXBhaXINCj4gKzwN Cj4gaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvZGp3b25n L3hmcy1saW51eC5naXQvDQo+IGxvZy8/aD1yZXBhaXItcnRzdW1tYXJ5PmBfDQo+ICtzZXJpZXMu DQo+ICsNCj4gK0F0b21pYyBFeHRlbnQgU3dhcHBpbmcNCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCj4gKw0KPiArT25jZSByZXBhaXIgYnVpbGRzIGEgdGVtcG9yYXJ5IGZpbGUgd2l0aCBhIG5l dyBkYXRhIHN0cnVjdHVyZQ0KPiB3cml0dGVuIGludG8NCj4gK2l0LCBpdCBtdXN0IGNvbW1pdCB0 aGUgbmV3IGNoYW5nZXMgaW50byB0aGUgZXhpc3RpbmcgZmlsZS4NCj4gK0l0IGlzIG5vdCBwb3Nz aWJsZSB0byBzd2FwIHRoZSBpbnVtYmVycyBvZiB0d28gZmlsZXMsIHNvIGluc3RlYWQgdGhlDQo+ IG5ldw0KPiArbWV0YWRhdGEgbXVzdCByZXBsYWNlIHRoZSBvbGQuDQo+ICtUaGlzIHN1Z2dlc3Rz IHRoZSBuZWVkIGZvciB0aGUgYWJpbGl0eSB0byBzd2FwIGV4dGVudHMsIGJ1dCB0aGUNCj4gZXhp c3RpbmcgZXh0ZW50DQo+ICtzd2FwcGluZyBjb2RlIHVzZWQgYnkgdGhlIGZpbGUgZGVmcmFnbWVu dGluZyB0b29sIGBgeGZzX2ZzcmBgIGlzIG5vdA0KPiBzdWZmaWNpZW50DQo+ICtmb3Igb25saW5l IHJlcGFpciBiZWNhdXNlOg0KPiArDQo+ICthLiBXaGVuIHRoZSByZXZlcnNlLW1hcHBpbmcgYnRy ZWUgaXMgZW5hYmxlZCwgdGhlIHN3YXAgY29kZSBtdXN0DQo+IGtlZXAgdGhlDQo+ICvCoMKgIHJl dmVyc2UgbWFwcGluZyBpbmZvcm1hdGlvbiB1cCB0byBkYXRlIHdpdGggZXZlcnkgZXhjaGFuZ2Ug b2YNCj4gbWFwcGluZ3MuDQo+ICvCoMKgIFRoZXJlZm9yZSwgaXQgY2FuIG9ubHkgZXhjaGFuZ2Ug b25lIG1hcHBpbmcgcGVyIHRyYW5zYWN0aW9uLCBhbmQNCj4gZWFjaA0KPiArwqDCoCB0cmFuc2Fj dGlvbiBpcyBpbmRlcGVuZGVudC4NCj4gKw0KPiArYi4gUmV2ZXJzZS1tYXBwaW5nIGlzIGNyaXRp Y2FsIGZvciB0aGUgb3BlcmF0aW9uIG9mIG9ubGluZSBmc2NrLCBzbw0KPiB0aGUgb2xkDQo+ICvC oMKgIGRlZnJhZ21lbnRhdGlvbiBjb2RlICh3aGljaCBzd2FwcGVkIGVudGlyZSBleHRlbnQgZm9y a3MgaW4gYQ0KPiBzaW5nbGUNCj4gK8KgwqAgb3BlcmF0aW9uKSBpcyBub3QgdXNlZnVsIGhlcmUu DQo+ICsNCj4gK2MuIERlZnJhZ21lbnRhdGlvbiBpcyBhc3N1bWVkIHRvIG9jY3VyIGJldHdlZW4g dHdvIGZpbGVzIHdpdGgNCj4gaWRlbnRpY2FsDQo+ICvCoMKgIGNvbnRlbnRzLg0KPiArwqDCoCBG b3IgdGhpcyB1c2UgY2FzZSwgYW4gaW5jb21wbGV0ZSBleGNoYW5nZSB3aWxsIG5vdCByZXN1bHQg aW4gYQ0KPiB1c2VyLXZpc2libGUNCj4gK8KgwqAgY2hhbmdlIGluIGZpbGUgY29udGVudHMsIGV2 ZW4gaWYgdGhlIG9wZXJhdGlvbiBpcyBpbnRlcnJ1cHRlZC4NCj4gKw0KPiArZC4gT25saW5lIHJl cGFpciBuZWVkcyB0byBzd2FwIHRoZSBjb250ZW50cyBvZiB0d28gZmlsZXMgdGhhdCBhcmUgYnkN Cj4gZGVmaW5pdGlvbg0KPiArwqDCoCAqbm90KiBpZGVudGljYWwuDQo+ICvCoMKgIEZvciBkaXJl Y3RvcnkgYW5kIHhhdHRyIHJlcGFpcnMsIHRoZSB1c2VyLXZpc2libGUgY29udGVudHMgbWlnaHQN Cj4gYmUgdGhlDQo+ICvCoMKgIHNhbWUsIGJ1dCB0aGUgY29udGVudHMgb2YgaW5kaXZpZHVhbCBi bG9ja3MgbWF5IGJlIHZlcnkNCj4gZGlmZmVyZW50Lg0KPiArDQo+ICtlLiBPbGQgYmxvY2tzIGlu IHRoZSBmaWxlIG1heSBiZSBjcm9zcy1saW5rZWQgd2l0aCBhbm90aGVyIHN0cnVjdHVyZQ0KPiBh bmQgbXVzdA0KPiArwqDCoCBub3QgcmVhcHBlYXIgaWYgdGhlIHN5c3RlbSBnb2VzIGRvd24gbWlk LXJlcGFpci4NCj4gKw0KPiArVGhlc2UgcHJvYmxlbXMgYXJlIG92ZXJjb21lIGJ5IGNyZWF0aW5n IGEgbmV3IGRlZmVycmVkIG9wZXJhdGlvbiBhbmQNCj4gYSBuZXcgdHlwZQ0KPiArb2YgbG9nIGlu dGVudCBpdGVtIHRvIHRyYWNrIHRoZSBwcm9ncmVzcyBvZiBhbiBvcGVyYXRpb24gdG8gZXhjaGFu Z2UNCj4gdHdvIGZpbGUNCj4gK3Jhbmdlcy4NCj4gK1RoZSBuZXcgZGVmZXJyZWQgb3BlcmF0aW9u IHR5cGUgY2hhaW5zIHRvZ2V0aGVyIHRoZSBzYW1lDQo+IHRyYW5zYWN0aW9ucyB1c2VkIGJ5DQo+ ICt0aGUgcmV2ZXJzZS1tYXBwaW5nIGV4dGVudCBzd2FwIGNvZGUuDQo+ICtUaGUgbmV3IGxvZyBp dGVtIHJlY29yZHMgdGhlIHByb2dyZXNzIG9mIHRoZSBleGNoYW5nZSB0byBlbnN1cmUgdGhhdA0K PiBvbmNlIGFuDQo+ICtleGNoYW5nZSBiZWdpbnMsIGl0IHdpbGwgYWx3YXlzIHJ1biB0byBjb21w bGV0aW9uLCBldmVuIHRoZXJlIGFyZQ0KPiAraW50ZXJydXB0aW9ucy4NCj4gKw0KPiArVGhlIHBy b3Bvc2VkIHBhdGNoc2V0IGlzIHRoZQ0KPiArYGF0b21pYyBleHRlbnQgc3dhcA0KPiArPA0KPiBo dHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9kandvbmcveGZz LWxpbnV4LmdpdC8NCj4gbG9nLz9oPWF0b21pYy1maWxlLXVwZGF0ZXM+YF8NCj4gK3Nlcmllcy4N Cj4gKw0KPiArVXNpbmcgTG9nLUluY29tcGF0aWJsZSBGZWF0dXJlIEZsYWdzDQo+ICtgYGBgYGBg YGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGANCj4gKw0KPiArU3RhcnRpbmcgd2l0aCBYRlMg djUsIHRoZSBzdXBlcmJsb2NrIGNvbnRhaW5zIGENCj4gYGBzYl9mZWF0dXJlc19sb2dfaW5jb21w YXRgYA0KPiArZmllbGQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgbG9nIGNvbnRhaW5zIHJlY29yZHMg dGhhdCBtaWdodCBub3QNCj4gcmVhZGFibGUgYnkgYWxsDQo+ICtrZXJuZWxzIHRoYXQgY291bGQg bW91bnQgdGhpcyBmaWxlc3lzdGVtLg0KDQoNCj4gK0luIHNob3J0LCBsb2cgaW5jb21wYXQgZmVh dHVyZXMgcHJvdGVjdCB0aGUgbG9nIGNvbnRlbnRzIGFnYWluc3QNCj4ga2VybmVscyB0aGF0DQo+ ICt3aWxsIG5vdCB1bmRlcnN0YW5kIHRoZSBjb250ZW50cy4NCj4gK1VubGlrZSB0aGUgb3RoZXIg c3VwZXJibG9jayBmZWF0dXJlIGJpdHMsIGxvZyBpbmNvbXBhdCBiaXRzIGFyZQ0KPiBlcGhlbWVy YWwNCj4gK2JlY2F1c2UgYW4gZW1wdHkgKGNsZWFuKSBsb2cgZG9lcyBub3QgbmVlZCBwcm90ZWN0 aW9uLg0KPiArVGhlIGxvZyBjbGVhbnMgaXRzZWxmIGFmdGVyIGl0cyBjb250ZW50cyBoYXZlIGJl ZW4gY29tbWl0dGVkIGludG8NCj4gdGhlDQo+ICtmaWxlc3lzdGVtLCBlaXRoZXIgYXMgcGFydCBv ZiBhbiB1bm1vdW50IG9yIGJlY2F1c2UgdGhlIHN5c3RlbSBpcw0KPiBvdGhlcndpc2UNCj4gK2lk bGUuDQo+ICtCZWNhdXNlIHVwcGVyIGxldmVsIGNvZGUgY2FuIGJlIHdvcmtpbmcgb24gYSB0cmFu c2FjdGlvbiBhdCB0aGUgc2FtZQ0KPiB0aW1lIHRoYXQNCj4gK3RoZSBsb2cgY2xlYW5zIGl0c2Vs ZiwgaXQgaXMgbmVjZXNzYXJ5IGZvciB1cHBlciBsZXZlbCBjb2RlIHRvDQo+IGNvbW11bmljYXRl IHRvDQo+ICt0aGUgbG9nIHdoZW4gaXQgaXMgZ29pbmcgdG8gdXNlIGEgbG9nIGluY29tcGF0aWJs ZSBmZWF0dXJlLg0KPiArDQo+ICtUaGUgbG9nIGNvb3JkaW5hdGVzIGFjY2VzcyB0byBpbmNvbXBh dGlibGUgZmVhdHVyZXMgdGhyb3VnaCB0aGUgdXNlDQo+IG9mIG9uZQ0KPiArYGBzdHJ1Y3Qgcndf c2VtYXBob3JlYGAgZm9yIGVhY2ggZmVhdHVyZS4NCj4gK1RoZSBsb2cgY2xlYW5pbmcgY29kZSB0 cmllcyB0byB0YWtlIHRoaXMgcndzZW0gaW4gZXhjbHVzaXZlIG1vZGUgdG8NCj4gY2xlYXIgdGhl DQo+ICtiaXQ7IGlmIHRoZSBsb2NrIGF0dGVtcHQgZmFpbHMsIHRoZSBmZWF0dXJlIGJpdCByZW1h aW5zIHNldC4NCj4gK0ZpbGVzeXN0ZW0gY29kZSBzaWduYWxzIGl0cyBpbnRlbnRpb24gdG8gdXNl IGEgbG9nIGluY29tcGF0IGZlYXR1cmUNCj4gaW4gYQ0KPiArdHJhbnNhY3Rpb24gYnkgY2FsbGlu ZyBgYHhsb2dfdXNlX2luY29tcGF0X2ZlYXRgYCwgd2hpY2ggdGFrZXMgdGhlDQo+IHJ3c2VtIGlu DQo+ICtzaGFyZWQgbW9kZS4NCj4gK1RoZSBjb2RlIHN1cHBvcnRpbmcgYSBsb2cgaW5jb21wYXQg ZmVhdHVyZSBzaG91bGQgY3JlYXRlIHdyYXBwZXINCj4gZnVuY3Rpb25zIHRvDQo+ICtvYnRhaW4g dGhlIGxvZyBmZWF0dXJlIGFuZCBjYWxsIGBgeGZzX2FkZF9pbmNvbXBhdF9sb2dfZmVhdHVyZWBg IHRvDQo+IHNldCB0aGUNCj4gK2ZlYXR1cmUgYml0cyBpbiB0aGUgcHJpbWFyeSBzdXBlcmJsb2Nr Lg0KPiArVGhlIHN1cGVyYmxvY2sgdXBkYXRlIGlzIHBlcmZvcm1lZCB0cmFuc2FjdGlvbmFsbHks IHNvIHRoZSB3cmFwcGVyDQo+IHRvIG9idGFpbg0KPiArbG9nIGFzc2lzdGFuY2UgbXVzdCBiZSBj YWxsZWQganVzdCBwcmlvciB0byB0aGUgY3JlYXRpb24gb2YgdGhlDQo+IHRyYW5zYWN0aW9uDQo+ ICt0aGF0IHVzZXMgdGhlIGZ1bmN0aW9uYWxpdHkuDQo+ICtGb3IgYSBmaWxlIG9wZXJhdGlvbiwg dGhpcyBzdGVwIG11c3QgaGFwcGVuIGFmdGVyIHRha2luZyB0aGUgSU9MT0NLDQo+IGFuZCB0aGUN Cj4gK01NQVBMT0NLLCBidXQgYmVmb3JlIGFsbG9jYXRpbmcgdGhlIHRyYW5zYWN0aW9uLg0KPiAr V2hlbiB0aGUgdHJhbnNhY3Rpb24gaXMgY29tcGxldGUsIHRoZSBgYHhsb2dfZHJvcF9pbmNvbXBh dF9mZWF0YGANCj4gZnVuY3Rpb24NCj4gK2lzIGNhbGxlZCB0byByZWxlYXNlIHRoZSBmZWF0dXJl Lg0KPiArVGhlIGZlYXR1cmUgYml0IHdpbGwgbm90IGJlIGNsZWFyZWQgZnJvbSB0aGUgc3VwZXJi bG9jayB1bnRpbCB0aGUNCj4gbG9nIGJlY29tZXMNCj4gK2NsZWFuLg0KV2hpbGUgdGhpcyBzZWN0 aW9uIGRvZXMgbWFrZSBzZW5zZSwgaXQgZG9lc250IHJlYWxseSBzZWVtIGxpa2UgaXQncw0Kc3Bl Y2lmaWMgdG8gb2ZzY2sgZWl0aGVyLiAgUHB0cnMgYW5kIHBvc3NpYmx5IG90aGVyIGZ1dHVyZSBm ZWF0dXJlcyB1c2UNCnRoZSBzYW1lIGluY29tcGF0IGJpdCBsb2dpYywgYnV0IHRoZSBpbXBsZW1l bnRhdGlvbiBpcyBwcmV0dHkgZGlzam9pbnQNCmFuZCBJIHdvdWxkbnQgcmVhbGx5IGNvbnNpZGVy IGl0IHBhcnQgb2YgdGhhdCBmZWF0dXJlLiAgU28gSSB3b3VsZA0KZWl0aGVyIHJlbW92ZSB0aGlz IHBhcnQsIG9yIG1vdmUgaXQgdG8gaXRzIG93biBzZWN0aW9uLiAgVGhlbiBJIHdvdWxkDQpqdXN0 IGdpdmUgYSBxdWljayBibHVyYiBoZXJlIGFib3V0IGhvdyBvZnNjayB1c2VzIGl0Og0KDQoiU2lu Y2UgYXRvbWljIGV4dGVudCBzd2FwIHdpbGwgaW50cm9kdWNlIGEgbmV3IHR5cGUgb2YgbG9nIGl0 ZW0sIGl0DQp3aWxsIGFsc28gYWRkIGEgbmV3IFhGU19TQl9GRUFUX0lOQ09NUEFUX0xPR19BVE9N SUNfU1dBUCBiaXQiDQoNCj4gKw0KPiArTG9nLWFzc2lzdGVkIGV4dGVuZGVkIGF0dHJpYnV0ZSB1 cGRhdGVzIGFuZCBhdG9taWMgZXh0ZW50IHN3YXBzIGJvdGgNCj4gdXNlIGxvZw0KPiAraW5jb21w YXQgZmVhdHVyZXMgYW5kIHByb3ZpZGUgY29udmVuaWVuY2Ugd3JhcHBlcnMgYXJvdW5kIHRoZQ0K PiBmdW5jdGlvbmFsaXR5Lg0KDQoiRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaW5jb21wYXQgYml0 cywgc2VlLi4uLiINCg0KPiArDQo+ICtNZWNoYW5pY3Mgb2YgYW4gQXRvbWljIEV4dGVudCBTd2Fw DQo+ICtgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgDQo+ICsNCj4gK1N3YXBwaW5n IGVudGlyZSBmaWxlIGZvcmtzIGlzIGEgY29tcGxleCB0YXNrLg0KPiArVGhlIGdvYWwgaXMgdG8g ZXhjaGFuZ2UgYWxsIGZpbGUgZm9yayBtYXBwaW5ncyBiZXR3ZWVuIHR3byBmaWxlIGZvcmsNCj4g b2Zmc2V0DQo+ICtyYW5nZXMuDQo+ICtUaGVyZSBhcmUgbGlrZWx5IHRvIGJlIG1hbnkgZXh0ZW50 IG1hcHBpbmdzIGluIGVhY2ggZm9yaywgYW5kIHRoZQ0KPiBlZGdlcyBvZg0KPiArdGhlIG1hcHBp bmdzIGFyZW4ndCBuZWNlc3NhcmlseSBhbGlnbmVkLg0KPiArRnVydGhlcm1vcmUsIHRoZXJlIG1h eSBiZSBvdGhlciB1cGRhdGVzIHRoYXQgbmVlZCB0byBoYXBwZW4gYWZ0ZXINCj4gdGhlIHN3YXAs DQo+ICtzdWNoIGFzIGV4Y2hhbmdpbmcgZmlsZSBzaXplcywgaW5vZGUgZmxhZ3MsIG9yIGNvbnZl cnNpb24gb2YgZm9yaw0KPiBkYXRhIHRvIGxvY2FsDQo+ICtmb3JtYXQuDQo+ICtUaGlzIGlzIHJv dWdobHkgdGhlIGZvcm1hdCBvZiB0aGUgbmV3IGRlZmVycmVkIGV4dGVudCBzd2FwIHdvcmsNCj4g aXRlbToNCj4gKw0KPiArLi4gY29kZS1ibG9jazo6IGMNCj4gKw0KPiArwqDCoMKgwqDCoMKgwqBz dHJ1Y3QgeGZzX3N3YXBleHRfaW50ZW50IHsNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIElu b2RlcyBwYXJ0aWNpcGF0aW5nIGluIHRoZSBvcGVyYXRpb24uICovDQo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoCBzdHJ1Y3QgeGZzX2lub2RlwqDCoMKgICpzeGlfaXAxOw0KPiArwqDCoMKgwqDCoMKg wqDCoMKgwqAgc3RydWN0IHhmc19pbm9kZcKgwqDCoCAqc3hpX2lwMjsNCj4gKw0KPiArwqDCoMKg wqDCoMKgwqDCoMKgwqAgLyogRmlsZSBvZmZzZXQgcmFuZ2UgaW5mb3JtYXRpb24uICovDQo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoCB4ZnNfZmlsZW9mZl90wqDCoMKgwqDCoMKgIHN4aV9zdGFydG9m ZjE7DQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCB4ZnNfZmlsZW9mZl90wqDCoMKgwqDCoMKgIHN4 aV9zdGFydG9mZjI7DQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCB4ZnNfZmlsYmxrc190wqDCoMKg wqDCoMKgIHN4aV9ibG9ja2NvdW50Ow0KPiArDQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBT ZXQgdGhlc2UgZmlsZSBzaXplcyBhZnRlciB0aGUgb3BlcmF0aW9uLCB1bmxlc3MNCj4gbmVnYXRp dmUuICovDQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCB4ZnNfZnNpemVfdMKgwqDCoMKgwqDCoMKg wqAgc3hpX2lzaXplMTsNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHhmc19mc2l6ZV90wqDCoMKg wqDCoMKgwqDCoCBzeGlfaXNpemUyOw0KPiArDQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBY RlNfU1dBUF9FWFRfKiBsb2cgb3BlcmF0aW9uIGZsYWdzICovDQo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoCB1aW50NjRfdMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3hpX2ZsYWdzOw0KPiArwqDCoMKg wqDCoMKgwqB9Ow0KPiArDQo+ICtUaGUgbmV3IGxvZyBpbnRlbnQgaXRlbSBjb250YWlucyBlbm91 Z2ggaW5mb3JtYXRpb24gdG8gdHJhY2sgdHdvDQo+IGxvZ2ljYWwgZm9yaw0KPiArb2Zmc2V0IHJh bmdlczogYGAoaW5vZGUxLCBzdGFydG9mZjEsIGJsb2NrY291bnQpYGAgYW5kIGBgKGlub2RlMiwN Cj4gc3RhcnRvZmYyLA0KPiArYmxvY2tjb3VudClgYC4NCj4gK0VhY2ggc3RlcCBvZiBhIHN3YXAg b3BlcmF0aW9uIGV4Y2hhbmdlcyB0aGUgbGFyZ2VzdCBmaWxlIHJhbmdlDQo+IG1hcHBpbmcgcG9z c2libGUNCj4gK2Zyb20gb25lIGZpbGUgdG8gdGhlIG90aGVyLg0KPiArQWZ0ZXIgZWFjaCBzdGVw IGluIHRoZSBzd2FwIG9wZXJhdGlvbiwgdGhlIHR3byBzdGFydG9mZiBmaWVsZHMgYXJlDQo+IGlu Y3JlbWVudGVkDQo+ICthbmQgdGhlIGJsb2NrY291bnQgZmllbGQgaXMgZGVjcmVtZW50ZWQgdG8g cmVmbGVjdCB0aGUgcHJvZ3Jlc3MNCj4gbWFkZS4NCj4gK1RoZSBmbGFncyBmaWVsZCBjYXB0dXJl cyBiZWhhdmlvcmFsIHBhcmFtZXRlcnMgc3VjaCBhcyBzd2FwcGluZyB0aGUNCj4gYXR0ciBmb3Jr DQo+ICtpbnN0ZWFkIG9mIHRoZSBkYXRhIGZvcmsgYW5kIG90aGVyIHdvcmsgdG8gYmUgZG9uZSBh ZnRlciB0aGUgZXh0ZW50DQo+IHN3YXAuDQo+ICtUaGUgdHdvIGlzaXplIGZpZWxkcyBhcmUgdXNl ZCB0byBzd2FwIHRoZSBmaWxlIHNpemUgYXQgdGhlIGVuZCBvZg0KPiB0aGUgb3BlcmF0aW9uDQo+ ICtpZiB0aGUgZmlsZSBkYXRhIGZvcmsgaXMgdGhlIHRhcmdldCBvZiB0aGUgc3dhcCBvcGVyYXRp b24uDQo+ICsNCj4gK1doZW4gdGhlIGV4dGVudCBzd2FwIGlzIGluaXRpYXRlZCwgdGhlIHNlcXVl bmNlIG9mIG9wZXJhdGlvbnMgaXMgYXMNCj4gZm9sbG93czoNCj4gKw0KPiArMS4gQ3JlYXRlIGEg ZGVmZXJyZWQgd29yayBpdGVtIGZvciB0aGUgZXh0ZW50IHN3YXAuDQo+ICvCoMKgIEF0IHRoZSBz dGFydCwgaXQgc2hvdWxkIGNvbnRhaW4gdGhlIGVudGlyZXR5IG9mIHRoZSBmaWxlIHJhbmdlcw0K PiB0byBiZQ0KPiArwqDCoCBzd2FwcGVkLg0KPiArDQo+ICsyLiBDYWxsIGBgeGZzX2RlZmVyX2Zp bmlzaGBgwqANClRoaXMgc2VlbXMgbGlrZSB0aGlzIHNob3VsZCBiZSBzb21lIHNvcnQgb2YgZGVm ZXIgc3RhcnQgd3JhcHBlciwgbm90DQpmaW5pc2guICBJdCB3b3VsZCBhbHNvIGhlbHAgdG8gaGF2 ZSBhIGxpbmsgb3IgZnVuY3Rpb24gbmFtZSB0byBzZWUgdGhlDQpjb2RlIGl0IGlzIHRyeWluZyB0 byBkZXNjcmliZQ0KDQo+IHRvIHN0YXJ0IHByb2Nlc3Npbmcgb2YgdGhlIGV4Y2hhbmdlLg0KPiAr wqDCoCBUaGlzIHdpbGwgbG9nIGFuIGV4dGVudCBzd2FwIGludGVudCBpdGVtIHRvIHRoZSB0cmFu c2FjdGlvbiBmb3INCj4gdGhlIGRlZmVycmVkDQo+ICvCoMKgIGV4dGVudCBzd2FwIHdvcmsgaXRl bS4NCj4gKw0KPiArMy4gVW50aWwgYGBzeGlfYmxvY2tjb3VudGBgIG9mIHRoZSBkZWZlcnJlZCBl eHRlbnQgc3dhcCB3b3JrIGl0ZW0gaXMNCj4gemVybywNCj4gKw0KPiArwqDCoCBhLiBSZWFkIHRo ZSBibG9jayBtYXBzIG9mIGJvdGggZmlsZSByYW5nZXMgc3RhcnRpbmcgYXQNCj4gYGBzeGlfc3Rh cnRvZmYxYGAgYW5kDQo+ICvCoMKgwqDCoMKgIGBgc3hpX3N0YXJ0b2ZmMmBgLCByZXNwZWN0aXZl bHksIGFuZCBjb21wdXRlIHRoZSBsb25nZXN0DQo+IGV4dGVudCB0aGF0IGNhbg0KPiArwqDCoMKg wqDCoCBiZSBzd2FwcGVkIGluIGEgc2luZ2xlIHN0ZXAuDQo+ICvCoMKgwqDCoMKgIFRoaXMgaXMg dGhlIG1pbmltdW0gb2YgdGhlIHR3byBgYGJyX2Jsb2NrY291bnRgYCBzIGluIHRoZQ0KPiBtYXBw aW5ncy4NCj4gK8KgwqDCoMKgwqAgS2VlcCBhZHZhbmNpbmcgdGhyb3VnaCB0aGUgZmlsZSBmb3Jr cyB1bnRpbCBhdCBsZWFzdCBvbmUgb2YNCj4gdGhlIG1hcHBpbmdzDQo+ICvCoMKgwqDCoMKgIGNv bnRhaW5zIHdyaXR0ZW4gYmxvY2tzLg0KPiArwqDCoMKgwqDCoCBNdXR1YWwgaG9sZXMsIHVud3Jp dHRlbiBleHRlbnRzLCBhbmQgZXh0ZW50IG1hcHBpbmdzIHRvIHRoZQ0KPiBzYW1lIHBoeXNpY2Fs DQo+ICvCoMKgwqDCoMKgIHNwYWNlIGFyZSBub3QgZXhjaGFuZ2VkLg0KPiArDQo+ICvCoMKgwqDC oMKgIEZvciB0aGUgbmV4dCBmZXcgc3RlcHMsIHRoaXMgZG9jdW1lbnQgd2lsbCByZWZlciB0byB0 aGUNCj4gbWFwcGluZyB0aGF0IGNhbWUNCj4gK8KgwqDCoMKgwqAgZnJvbSBmaWxlIDEgYXMgIm1h cDEiLCBhbmQgdGhlIG1hcHBpbmcgdGhhdCBjYW1lIGZyb20gZmlsZSAyDQo+IGFzICJtYXAyIi4N Cj4gKw0KPiArwqDCoCBiLiBDcmVhdGUgYSBkZWZlcnJlZCBibG9jayBtYXBwaW5nIHVwZGF0ZSB0 byB1bm1hcCBtYXAxIGZyb20gZmlsZQ0KPiAxLg0KPiArDQo+ICvCoMKgIGMuIENyZWF0ZSBhIGRl ZmVycmVkIGJsb2NrIG1hcHBpbmcgdXBkYXRlIHRvIHVubWFwIG1hcDIgZnJvbSBmaWxlDQo+IDIu DQo+ICsNCj4gK8KgwqAgZC4gQ3JlYXRlIGEgZGVmZXJyZWQgYmxvY2sgbWFwcGluZyB1cGRhdGUg dG8gbWFwIG1hcDEgaW50byBmaWxlDQo+IDIuDQo+ICsNCj4gK8KgwqAgZS4gQ3JlYXRlIGEgZGVm ZXJyZWQgYmxvY2sgbWFwcGluZyB1cGRhdGUgdG8gbWFwIG1hcDIgaW50byBmaWxlDQo+IDEuDQo+ ICsNCj4gK8KgwqAgZi4gTG9nIHRoZSBibG9jaywgcXVvdGEsIGFuZCBleHRlbnQgY291bnQgdXBk YXRlcyBmb3IgYm90aCBmaWxlcy4NCj4gKw0KPiArwqDCoCBnLiBFeHRlbmQgdGhlIG9uZGlzayBz aXplIG9mIGVpdGhlciBmaWxlIGlmIG5lY2Vzc2FyeS4NCj4gKw0KPiArwqDCoCBoLiBMb2cgYW4g ZXh0ZW50IHN3YXAgZG9uZSBsb2cgaXRlbSBmb3IgdGhlIGV4dGVudCBzd2FwIGludGVudA0KPiBs b2cgaXRlbQ0KPiArwqDCoMKgwqDCoCB0aGF0IHdhcyByZWFkIGF0IHRoZSBzdGFydCBvZiBzdGVw IDMuDQo+ICsNCj4gK8KgwqAgaS4gQ29tcHV0ZSB0aGUgYW1vdW50IG9mIGZpbGUgcmFuZ2UgdGhh dCBoYXMganVzdCBiZWVuIGNvdmVyZWQuDQo+ICvCoMKgwqDCoMKgIFRoaXMgcXVhbnRpdHkgaXMg YGAobWFwMS5icl9zdGFydG9mZiArIG1hcDEuYnJfYmxvY2tjb3VudCAtDQo+ICvCoMKgwqDCoMKg IHN4aV9zdGFydG9mZjEpYGAsIGJlY2F1c2Ugc3RlcCAzYSBjb3VsZCBoYXZlIHNraXBwZWQgaG9s ZXMuDQo+ICsNCj4gK8KgwqAgai4gSW5jcmVhc2UgdGhlIHN0YXJ0aW5nIG9mZnNldHMgb2YgYGBz eGlfc3RhcnRvZmYxYGAgYW5kDQo+IGBgc3hpX3N0YXJ0b2ZmMmBgDQo+ICvCoMKgwqDCoMKgIGJ5 IHRoZSBudW1iZXIgb2YgYmxvY2tzIGNvbXB1dGVkIGluIHRoZSBwcmV2aW91cyBzdGVwLCBhbmQN Cj4gZGVjcmVhc2UNCj4gK8KgwqDCoMKgwqAgYGBzeGlfYmxvY2tjb3VudGBgIGJ5IHRoZSBzYW1l IHF1YW50aXR5Lg0KPiArwqDCoMKgwqDCoCBUaGlzIGFkdmFuY2VzIHRoZSBjdXJzb3IuDQo+ICsN Cj4gK8KgwqAgay4gTG9nIGEgbmV3IGV4dGVudCBzd2FwIGludGVudCBsb2cgaXRlbSByZWZsZWN0 aW5nIHRoZSBhZHZhbmNlZA0KPiBzdGF0ZSBvZg0KPiArwqDCoMKgwqDCoCB0aGUgd29yayBpdGVt Lg0KPiArDQo+ICvCoMKgIGwuIFJldHVybiB0aGUgcHJvcGVyIGVycm9yIGNvZGUgKEVBR0FJTikg dG8gdGhlIGRlZmVycmVkDQo+IG9wZXJhdGlvbiBtYW5hZ2VyDQo+ICvCoMKgwqDCoMKgIHRvIGlu Zm9ybSBpdCB0aGF0IHRoZXJlIGlzIG1vcmUgd29yayB0byBiZSBkb25lLg0KPiArwqDCoMKgwqDC oCBUaGUgb3BlcmF0aW9uIG1hbmFnZXIgY29tcGxldGVzIHRoZSBkZWZlcnJlZCB3b3JrIGluIHN0 ZXBzIDNiLQ0KPiAzZSBiZWZvcmUNCj4gK8KgwqDCoMKgwqAgbW92aW5nIGJhY2sgdG8gdGhlIHN0 YXJ0IG9mIHN0ZXAgMy4NCj4gKw0KPiArNC4gUGVyZm9ybSBhbnkgcG9zdC1wcm9jZXNzaW5nLg0K PiArwqDCoCBUaGlzIHdpbGwgYmUgZGlzY3Vzc2VkIGluIG1vcmUgZGV0YWlsIGluIHN1YnNlcXVl bnQgc2VjdGlvbnMuDQo+ICsNCj4gK0lmIHRoZSBmaWxlc3lzdGVtIGdvZXMgZG93biBpbiB0aGUg bWlkZGxlIG9mIGFuIG9wZXJhdGlvbiwgbG9nDQo+IHJlY292ZXJ5IHdpbGwNCj4gK2ZpbmQgdGhl IG1vc3QgcmVjZW50IHVuZmluaXNoZWQgZXh0ZW50IHN3YXAgbG9nIGludGVudCBpdGVtIGFuZA0K PiByZXN0YXJ0IGZyb20NCj4gK3RoZXJlLg0KPiArVGhpcyBpcyBob3cgZXh0ZW50IHN3YXBwaW5n IGd1YXJhbnRlZXMgdGhhdCBhbiBvdXRzaWRlIG9ic2VydmVyIHdpbGwNCj4gZWl0aGVyIHNlZQ0K PiArdGhlIG9sZCBicm9rZW4gc3RydWN0dXJlIG9yIHRoZSBuZXcgb25lLCBhbmQgbmV2ZXIgYSBt aXNtYXNoIG9mDQo+IGJvdGguDQo+ICsNCj4gK0V4dGVudCBTd2FwcGluZyB3aXRoIFJlZ3VsYXIg VXNlciBGaWxlcw0KPiArYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgDQo+ ICsNCj4gK0FzIG1lbnRpb25lZCBlYXJsaWVyLCBYRlMgaGFzIGxvbmcgaGFkIHRoZSBhYmlsaXR5 IHRvIHN3YXAgZXh0ZW50cw0KPiBiZXR3ZWVuDQo+ICtmaWxlcywgd2hpY2ggaXMgdXNlZCBhbG1v c3QgZXhjbHVzaXZlbHkgYnkgYGB4ZnNfZnNyYGAgdG8gZGVmcmFnbWVudA0KPiBmaWxlcy4NCj4g K1RoZSBlYXJsaWVzdCBmb3JtIG9mIHRoaXMgd2FzIHRoZSBmb3JrIHN3YXAgbWVjaGFuaXNtLCB3 aGVyZSB0aGUNCj4gZW50aXJlDQo+ICtjb250ZW50cyBvZiBkYXRhIGZvcmtzIGNvdWxkIGJlIGV4 Y2hhbmdlZCBiZXR3ZWVuIHR3byBmaWxlcyBieQ0KPiBleGNoYW5naW5nIHRoZQ0KPiArcmF3IGJ5 dGVzIGluIGVhY2ggaW5vZGUgZm9yaydzIGltbWVkaWF0ZSBhcmVhLg0KPiArV2hlbiBYRlMgdjUg Y2FtZSBhbG9uZyB3aXRoIHNlbGYtZGVzY3JpYmluZyBtZXRhZGF0YSwgdGhpcyBvbGQNCj4gbWVj aGFuaXNtIGdyZXcNCj4gK3NvbWUgbG9nIHN1cHBvcnQgdG8gY29udGludWUgcmV3cml0aW5nIHRo ZSBvd25lciBmaWVsZHMgb2YgQk1CVA0KPiBibG9ja3MgZHVyaW5nDQo+ICtsb2cgcmVjb3Zlcnku DQo+ICtXaGVuIHRoZSByZXZlcnNlIG1hcHBpbmcgYnRyZWUgd2FzIGxhdGVyIGFkZGVkIHRvIFhG UywgdGhlIG9ubHkgd2F5DQo+IHRvIG1haW50YWluDQo+ICt0aGUgY29uc2lzdGVuY3kgb2YgdGhl IGZvcmsgbWFwcGluZ3Mgd2l0aCB0aGUgcmV2ZXJzZSBtYXBwaW5nIGluZGV4DQo+IHdhcyB0bw0K PiArZGV2ZWxvcCBhbiBpdGVyYXRpdmUgbWVjaGFuaXNtIHRoYXQgdXNlZCBkZWZlcnJlZCBibWFw IGFuZCBybWFwDQo+IG9wZXJhdGlvbnMgdG8NCj4gK3N3YXAgbWFwcGluZ3Mgb25lIGF0IGEgdGlt ZS4NCj4gK1RoaXMgbWVjaGFuaXNtIGlzIGlkZW50aWNhbCB0byBzdGVwcyAyLTMgZnJvbSB0aGUg cHJvY2VkdXJlIGFib3ZlDQo+IGV4Y2VwdCBmb3INCj4gK3RoZSBuZXcgdHJhY2tpbmcgaXRlbXMs IGJlY2F1c2UgdGhlIGF0b21pYyBleHRlbnQgc3dhcCBtZWNoYW5pc20gaXMNCj4gYW4NCj4gK2l0 ZXJhdGlvbiBvZiBhbiBleGlzdGluZyBtZWNoYW5pc20gYW5kIG5vdCBzb21ldGhpbmcgdG90YWxs eSBub3ZlbC4NCj4gK0ZvciB0aGUgbmFycm93IGNhc2Ugb2YgZmlsZSBkZWZyYWdtZW50YXRpb24s IHRoZSBmaWxlIGNvbnRlbnRzIG11c3QNCj4gYmUNCj4gK2lkZW50aWNhbCwgc28gdGhlIHJlY292 ZXJ5IGd1YXJhbnRlZXMgYXJlIG5vdCBtdWNoIG9mIGEgZ2Fpbi4NCj4gKw0KPiArQXRvbWljIGV4 dGVudCBzd2FwcGluZyBpcyBtdWNoIG1vcmUgZmxleGlibGUgdGhhbiB0aGUgZXhpc3RpbmcNCj4g c3dhcGV4dA0KPiAraW1wbGVtZW50YXRpb25zIGJlY2F1c2UgaXQgY2FuIGd1YXJhbnRlZSB0aGF0 IHRoZSBjYWxsZXIgbmV2ZXIgc2Vlcw0KPiBhIG1peCBvZg0KPiArb2xkIGFuZCBuZXcgY29udGVu dHMgZXZlbiBhZnRlciBhIGNyYXNoLCBhbmQgaXQgY2FuIG9wZXJhdGUgb24gdHdvDQo+IGFyYml0 cmFyeQ0KPiArZmlsZSBmb3JrIHJhbmdlcy4NCj4gK1RoZSBleHRyYSBmbGV4aWJpbGl0eSBlbmFi bGVzIHNldmVyYWwgbmV3IHVzZSBjYXNlczoNCj4gKw0KPiArLSAqKkF0b21pYyBjb21taXQgb2Yg ZmlsZSB3cml0ZXMqKjogQSB1c2Vyc3BhY2UgcHJvY2VzcyBvcGVucyBhIGZpbGUNCj4gdGhhdCBp dA0KPiArwqAgd2FudHMgdG8gdXBkYXRlLg0KPiArwqAgTmV4dCwgaXQgb3BlbnMgYSB0ZW1wb3Jh cnkgZmlsZSBhbmQgY2FsbHMgdGhlIGZpbGUgY2xvbmUgb3BlcmF0aW9uDQo+IHRvIHJlZmxpbmsN Cj4gK8KgIHRoZSBmaXJzdCBmaWxlJ3MgY29udGVudHMgaW50byB0aGUgdGVtcG9yYXJ5IGZpbGUu DQo+ICvCoCBXcml0ZXMgdG8gdGhlIG9yaWdpbmFsIGZpbGUgc2hvdWxkIGluc3RlYWQgYmUgd3Jp dHRlbiB0byB0aGUNCj4gdGVtcG9yYXJ5IGZpbGUuDQo+ICvCoCBGaW5hbGx5LCB0aGUgcHJvY2Vz cyBjYWxscyB0aGUgYXRvbWljIGV4dGVudCBzd2FwIHN5c3RlbSBjYWxsDQo+ICvCoCAoYGBGSUVY Q0hBTkdFX1JBTkdFYGApIHRvIGV4Y2hhbmdlIHRoZSBmaWxlIGNvbnRlbnRzLCB0aGVyZWJ5DQo+ IGNvbW1pdHRpbmcgYWxsDQo+ICvCoCBvZiB0aGUgdXBkYXRlcyB0byB0aGUgb3JpZ2luYWwgZmls ZSwgb3Igbm9uZSBvZiB0aGVtLg0KPiArDQo+ICstICoqVHJhbnNhY3Rpb25hbCBmaWxlIHVwZGF0 ZXMqKjogVGhlIHNhbWUgbWVjaGFuaXNtIGFzIGFib3ZlLCBidXQNCj4gdGhlIGNhbGxlcg0KPiAr wqAgb25seSB3YW50cyB0aGUgY29tbWl0IHRvIG9jY3VyIGlmIHRoZSBvcmlnaW5hbCBmaWxlJ3Mg Y29udGVudHMNCj4gaGF2ZSBub3QNCj4gK8KgIGNoYW5nZWQuDQo+ICvCoCBUbyBtYWtlIHRoaXMg aGFwcGVuLCB0aGUgY2FsbGluZyBwcm9jZXNzIHNuYXBzaG90cyB0aGUgZmlsZQ0KPiBtb2RpZmlj YXRpb24gYW5kDQo+ICvCoCBjaGFuZ2UgdGltZXN0YW1wcyBvZiB0aGUgb3JpZ2luYWwgZmlsZSBi ZWZvcmUgcmVmbGlua2luZyBpdHMgZGF0YQ0KPiB0byB0aGUNCj4gK8KgIHRlbXBvcmFyeSBmaWxl Lg0KPiArwqAgV2hlbiB0aGUgcHJvZ3JhbSBpcyByZWFkeSB0byBjb21taXQgdGhlIGNoYW5nZXMs IGl0IHBhc3NlcyB0aGUNCj4gdGltZXN0YW1wcw0KPiArwqAgaW50byB0aGUga2VybmVsIGFzIGFy Z3VtZW50cyB0byB0aGUgYXRvbWljIGV4dGVudCBzd2FwIHN5c3RlbQ0KPiBjYWxsLg0KPiArwqAg VGhlIGtlcm5lbCBvbmx5IGNvbW1pdHMgdGhlIGNoYW5nZXMgaWYgdGhlIHByb3ZpZGVkIHRpbWVz dGFtcHMNCj4gbWF0Y2ggdGhlDQo+ICvCoCBvcmlnaW5hbCBmaWxlLg0KPiArDQo+ICstICoqRW11 bGF0aW9uIG9mIGF0b21pYyBibG9jayBkZXZpY2Ugd3JpdGVzKio6IEV4cG9ydCBhIGJsb2NrIGRl dmljZQ0KPiB3aXRoIGENCj4gK8KgIGxvZ2ljYWwgc2VjdG9yIHNpemUgbWF0Y2hpbmcgdGhlIGZp bGVzeXN0ZW0gYmxvY2sgc2l6ZSB0byBmb3JjZQ0KPiBhbGwgd3JpdGVzDQo+ICvCoCB0byBiZSBh bGlnbmVkIHRvIHRoZSBmaWxlc3lzdGVtIGJsb2NrIHNpemUuDQo+ICvCoCBTdGFnZSBhbGwgd3Jp dGVzIHRvIGEgdGVtcG9yYXJ5IGZpbGUsIGFuZCB3aGVuIHRoYXQgaXMgY29tcGxldGUsDQo+IGNh bGwgdGhlDQo+ICvCoCBhdG9taWMgZXh0ZW50IHN3YXAgc3lzdGVtIGNhbGwgd2l0aCBhIGZsYWcg dG8gaW5kaWNhdGUgdGhhdCBob2xlcw0KPiBpbiB0aGUNCj4gK8KgIHRlbXBvcmFyeSBmaWxlIHNo b3VsZCBiZSBpZ25vcmVkLg0KPiArwqAgVGhpcyBlbXVsYXRlcyBhbiBhdG9taWMgZGV2aWNlIHdy aXRlIGluIHNvZnR3YXJlLCBhbmQgY2FuIHN1cHBvcnQNCj4gYXJiaXRyYXJ5DQo+ICvCoCBzY2F0 dGVyZWQgd3JpdGVzLg0KTW1tLCB0aGlzIHNlY3Rpb24gaGVyZSBJIHdvdWxkIGVpdGhlciBsZXQg Z28gb3IgbW92ZS4gIFNpbmNlIHdlJ3JlIG5vdA0KcmVhbGx5IHRhbGtpbmcgYWJvdXQgb2ZzYyBh bnltb3JlLCBpdCdzIG1vcmUgbGlrZSBhbiAiZXh0cmEgdXNlIGNhc2UiDQpzZWN0aW9uLiAgU2lk ZSB1c2VzIGFyZSBncmVhdCBhbmQgYWxsLCBidXQgdGhleSdyZSBnZW5lcmFsbHkgbm90IHdvcnRo DQp0aGUgaW1wbGVtZW50YXRpb24gb24gdGhlaXIgb3duLCBzbyBJIHRoaW5rIHdlIHdhbnQgdG8g a2VlcCByZWFkZXJzDQpmb2N1c2VkIG9uIHRoZSBtYWluIG9mc2NrIGZlYXR1cmUgYW5kIGl0J3Mg bWVjaGFuaWNzLiAgT25jZSB3ZSBnZXQgdGhhdA0Kb3V0IG9mIHRoZSB3YXksIHdlIGNhbiBjb21l IGJhY2sgYW5kIHRvdWNoIG9uIGdvb2RpZXMgbGF0ZXIgYXQgdGhlIGVuZA0Kb2YgdGhlIGRvY3Vt ZW50LiAgDQoNCj4gKw0KPiArUHJlcGFyYXRpb24gZm9yIEV4dGVudCBTd2FwcGluZw0KPiArYGBg YGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYA0KPiArDQo+ICtUaGVyZSBhcmUgYSBmZXcgdGhp bmdzIHRoYXQgbmVlZCB0byBiZSB0YWtlbiBjYXJlIG9mIGJlZm9yZQ0KPiBpbml0aWF0aW5nIGFu DQo+ICthdG9taWMgZXh0ZW50IHN3YXAgb3BlcmF0aW9uLg0KPiArRmlyc3QsIHJlZ3VsYXIgZmls ZXMgcmVxdWlyZSB0aGUgcGFnZSBjYWNoZSB0byBiZSBmbHVzaGVkIHRvIGRpc2sNCj4gYmVmb3Jl IHRoZQ0KPiArb3BlcmF0aW9uIGJlZ2lucywgYW5kIGRpcmVjdGlvIHdyaXRlcyB0byBiZSBxdWll c2NlZC4NCj4gK0xpa2UgYW55IGZpbGVzeXN0ZW0gb3BlcmF0aW9uLCBleHRlbnQgc3dhcHBpbmcg bXVzdCBkZXRlcm1pbmUgdGhlDQo+IG1heGltdW0NCj4gK2Ftb3VudCBvZiBkaXNrIHNwYWNlIGFu ZCBxdW90YSB0aGF0IGNhbiBiZSBjb25zdW1lZCBvbiBiZWhhbGYgb2YNCj4gYm90aCBmaWxlcyBp bg0KPiArdGhlIG9wZXJhdGlvbiwgYW5kIHJlc2VydmUgdGhhdCBxdWFudGl0eSBvZiByZXNvdXJj ZXMgdG8gYXZvaWQgYW4NCj4gdW5yZWNvdmVyYWJsZQ0KPiArb3V0IG9mIHNwYWNlIGZhaWx1cmUg b25jZSBpdCBzdGFydHMgZGlydHlpbmcgbWV0YWRhdGEuDQo+ICtUaGUgcHJlcGFyYXRpb24gc3Rl cCBzY2FucyB0aGUgcmFuZ2VzIG9mIGJvdGggZmlsZXMgdG8gZXN0aW1hdGU6DQo+ICsNCj4gKy0g RGF0YSBkZXZpY2UgYmxvY2tzIG5lZWRlZCB0byBoYW5kbGUgdGhlIHJlcGVhdGVkIHVwZGF0ZXMg dG8gdGhlDQo+IGZvcmsNCj4gK8KgIG1hcHBpbmdzLg0KPiArLSBDaGFuZ2UgaW4gZGF0YSBhbmQg cmVhbHRpbWUgYmxvY2sgY291bnRzIGZvciBib3RoIGZpbGVzLg0KPiArLSBJbmNyZWFzZSBpbiBx dW90YSB1c2FnZSBmb3IgYm90aCBmaWxlcywgaWYgdGhlIHR3byBmaWxlcyBkbyBub3QNCj4gc2hh cmUgdGhlDQo+ICvCoCBzYW1lIHNldCBvZiBxdW90YSBpZHMuDQo+ICstIFRoZSBudW1iZXIgb2Yg ZXh0ZW50IG1hcHBpbmdzIHRoYXQgd2lsbCBiZSBhZGRlZCB0byBlYWNoIGZpbGUuDQo+ICstIFdo ZXRoZXIgb3Igbm90IHRoZXJlIGFyZSBwYXJ0aWFsbHkgd3JpdHRlbiByZWFsdGltZSBleHRlbnRz Lg0KPiArwqAgVXNlciBwcm9ncmFtcyBtdXN0IG5ldmVyIGJlIGFibGUgdG8gYWNjZXNzIGEgcmVh bHRpbWUgZmlsZSBleHRlbnQNCj4gdGhhdCBtYXBzDQo+ICvCoCB0byBkaWZmZXJlbnQgZXh0ZW50 cyBvbiB0aGUgcmVhbHRpbWUgdm9sdW1lLCB3aGljaCBjb3VsZCBoYXBwZW4gaWYNCj4gdGhlDQo+ ICvCoCBvcGVyYXRpb24gZmFpbHMgdG8gcnVuIHRvIGNvbXBsZXRpb24uDQo+ICsNCj4gK1RoZSBu ZWVkIGZvciBwcmVjaXNlIGVzdGltYXRpb24gaW5jcmVhc2VzIHRoZSBydW4gdGltZSBvZiB0aGUg c3dhcA0KPiBvcGVyYXRpb24sDQo+ICtidXQgaXQgaXMgdmVyeSBpbXBvcnRhbnQgdG8gbWFpbnRh aW4gY29ycmVjdCBhY2NvdW50aW5nLg0KPiArVGhlIGZpbGVzeXN0ZW0gbXVzdCBub3QgcnVuIGNv bXBsZXRlbHkgb3V0IG9mIGZyZWUgc3BhY2UsIG5vciBjYW4NCj4gdGhlIGV4dGVudA0KPiArc3dh cCBldmVyIGFkZCBtb3JlIGV4dGVudCBtYXBwaW5ncyB0byBhIGZvcmsgdGhhbiBpdCBjYW4gc3Vw cG9ydC4NCj4gK1JlZ3VsYXIgdXNlcnMgYXJlIHJlcXVpcmVkIHRvIGFiaWRlIHRoZSBxdW90YSBs aW1pdHMsIHRob3VnaA0KPiBtZXRhZGF0YSByZXBhaXJzDQo+ICttYXkgZXhjZWVkIHF1b3RhIHRv IHJlc29sdmUgaW5jb25zaXN0ZW50IG1ldGFkYXRhIGVsc2V3aGVyZS4NCj4gKw0KPiArU3BlY2lh bCBGZWF0dXJlcyBmb3IgU3dhcHBpbmcgTWV0YWRhdGEgRmlsZSBFeHRlbnRzDQo+ICtgYGBgYGBg YGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGANCj4gKw0KPiArRXh0 ZW5kZWQgYXR0cmlidXRlcywgc3ltYm9saWMgbGlua3MsIGFuZCBkaXJlY3RvcmllcyBjYW4gc2V0 IHRoZQ0KPiBmb3JrIGZvcm1hdCB0bw0KPiArImxvY2FsIiBhbmQgdHJlYXQgdGhlIGZvcmsgYXMg YSBsaXRlcmFsIGFyZWEgZm9yIGRhdGEgc3RvcmFnZS4NCj4gK01ldGFkYXRhIHJlcGFpcnMgbXVz dCB0YWtlIGV4dHJhIHN0ZXBzIHRvIHN1cHBvcnQgdGhlc2UgY2FzZXM6DQo+ICsNCj4gKy0gSWYg Ym90aCBmb3JrcyBhcmUgaW4gbG9jYWwgZm9ybWF0IGFuZCB0aGUgZm9yayBhcmVhcyBhcmUgbGFy Z2UNCj4gZW5vdWdoLCB0aGUNCj4gK8KgIHN3YXAgaXMgcGVyZm9ybWVkIGJ5IGNvcHlpbmcgdGhl IGluY29yZSBmb3JrIGNvbnRlbnRzLCBsb2dnaW5nDQo+IGJvdGggZm9ya3MsDQo+ICvCoCBhbmQg Y29tbWl0dGluZy4NCj4gK8KgIFRoZSBhdG9taWMgZXh0ZW50IHN3YXAgbWVjaGFuaXNtIGlzIG5v dCBuZWNlc3NhcnksIHNpbmNlIHRoaXMgY2FuDQo+IGJlIGRvbmUNCj4gK8KgIHdpdGggYSBzaW5n bGUgdHJhbnNhY3Rpb24uDQo+ICsNCj4gKy0gSWYgYm90aCBmb3JrcyBtYXAgYmxvY2tzLCB0aGVu IHRoZSByZWd1bGFyIGF0b21pYyBleHRlbnQgc3dhcCBpcw0KPiB1c2VkLg0KPiArDQo+ICstIE90 aGVyd2lzZSwgb25seSBvbmUgZm9yayBpcyBpbiBsb2NhbCBmb3JtYXQuDQo+ICvCoCBUaGUgY29u dGVudHMgb2YgdGhlIGxvY2FsIGZvcm1hdCBmb3JrIGFyZSBjb252ZXJ0ZWQgdG8gYSBibG9jayB0 bw0KPiBwZXJmb3JtIHRoZQ0KPiArwqAgc3dhcC4NCj4gK8KgIFRoZSBjb252ZXJzaW9uIHRvIGJs b2NrIGZvcm1hdCBtdXN0IGJlIGRvbmUgaW4gdGhlIHNhbWUNCj4gdHJhbnNhY3Rpb24gdGhhdA0K PiArwqAgbG9ncyB0aGUgaW5pdGlhbCBleHRlbnQgc3dhcCBpbnRlbnQgbG9nIGl0ZW0uDQo+ICvC oCBUaGUgcmVndWxhciBhdG9taWMgZXh0ZW50IHN3YXAgaXMgdXNlZCB0byBleGNoYW5nZSB0aGUg bWFwcGluZ3MuDQo+ICvCoCBTcGVjaWFsIGZsYWdzIGFyZSBzZXQgb24gdGhlIHN3YXAgb3BlcmF0 aW9uIHNvIHRoYXQgdGhlDQo+IHRyYW5zYWN0aW9uIGNhbiBiZQ0KPiArwqAgcm9sbGVkIG9uZSBt b3JlIHRpbWUgdG8gY29udmVydCB0aGUgc2Vjb25kIGZpbGUncyBmb3JrIGJhY2sgdG8NCj4gbG9j YWwgZm9ybWF0DQo+ICvCoCBpZiBwb3NzaWJsZS4NCkkgZmVlbCBsaWtlIHRoZXJlJ3MgcHJvYmFi bHkgYSBmdW5jdGlvbiBuYW1lIG9yIGxpbmsgdGhhdCBjb3VsZCBnbyB3aXRoDQp0aGlzDQoNCj4g Kw0KPiArRXh0ZW5kZWQgYXR0cmlidXRlcyBhbmQgZGlyZWN0b3JpZXMgc3RhbXAgdGhlIG93bmlu ZyBpbm9kZSBpbnRvDQo+IGV2ZXJ5IGJsb2NrLA0KPiArYnV0IHRoZSBidWZmZXIgdmVyaWZpZXJz IGRvIG5vdCBhY3R1YWxseSBjaGVjayB0aGUgaW5vZGUgbnVtYmVyIQ0KPiArQWx0aG91Z2ggdGhl cmUgaXMgbm8gdmVyaWZpY2F0aW9uLCBpdCBpcyBzdGlsbCBpbXBvcnRhbnQgdG8gbWFpbnRhaW4N Cj4gK3JlZmVyZW50aWFsIGludGVncml0eSwgc28gcHJpb3IgdG8gcGVyZm9ybWluZyB0aGUgZXh0 ZW50IHN3YXAsDQo+IG9ubGluZSByZXBhaXINCj4gK3dhbGtzIGV2ZXJ5IGJsb2NrIGluIHRoZSBu ZXcgZGF0YSBzdHJ1Y3R1cmUgdG8gdXBkYXRlIHRoZSBvd25lcg0KPiBmaWVsZCBhbmQgZmx1c2gN Cj4gK3RoZSBidWZmZXIgdG8gZGlzay4NCj4gKw0KPiArQWZ0ZXIgYSBzdWNjZXNzZnVsIHN3YXAg b3BlcmF0aW9uLCB0aGUgcmVwYWlyIG9wZXJhdGlvbiBtdXN0IHJlYXANCj4gdGhlIG9sZCBmb3Jr DQo+ICtibG9ja3MgYnkgcHJvY2Vzc2luZyBlYWNoIGZvcmsgbWFwcGluZyB0aHJvdWdoIHRoZSBz dGFuZGFyZA0KPiA6cmVmOmBmaWxlIGV4dGVudA0KPiArcmVhcGluZyA8cmVhcGluZz5gIG1lY2hh bmlzbSB0aGF0IGlzIGRvbmUgcG9zdC1yZXBhaXIuDQo+ICtJZiB0aGUgZmlsZXN5c3RlbSBzaG91 bGQgZ28gZG93biBkdXJpbmcgdGhlIHJlYXAgcGFydCBvZiB0aGUgcmVwYWlyLA0KPiB0aGUNCj4g K2l1bmxpbmsgcHJvY2Vzc2luZyBhdCB0aGUgZW5kIG9mIHJlY292ZXJ5IHdpbGwgZnJlZSBib3Ro IHRoZQ0KPiB0ZW1wb3JhcnkgZmlsZSBhbmQNCj4gK3doYXRldmVyIGJsb2NrcyB3ZXJlIG5vdCBy ZWFwZWQuDQo+ICtIb3dldmVyLCB0aGlzIGl1bmxpbmsgcHJvY2Vzc2luZyBvbWl0cyB0aGUgY3Jv c3MtbGluayBkZXRlY3Rpb24gb2YNCj4gb25saW5lDQo+ICtyZXBhaXIsIGFuZCBpcyBub3QgY29t cGxldGVseSBmb29scHJvb2YuDQo+ICsNCj4gK1N3YXBwaW5nIFRlbXBvcmFyeSBGaWxlIEV4dGVu dHMNCj4gK2BgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGANCj4gKw0KPiArVG8gcmVwYWly IGEgbWV0YWRhdGEgZmlsZSwgb25saW5lIHJlcGFpciBwcm9jZWVkcyBhcyBmb2xsb3dzOg0KPiAr DQo+ICsxLiBDcmVhdGUgYSB0ZW1wb3JhcnkgcmVwYWlyIGZpbGUuDQo+ICsNCj4gKzIuIFVzZSB0 aGUgc3RhZ2luZyBkYXRhIHRvIHdyaXRlIG91dCBuZXcgY29udGVudHMgaW50byB0aGUgdGVtcG9y YXJ5DQo+IHJlcGFpcg0KPiArwqDCoCBmaWxlLg0KPiArwqDCoCBUaGUgc2FtZSBmb3JrIG11c3Qg YmUgd3JpdHRlbiB0byBhcyBpcyBiZWluZyByZXBhaXJlZC4NCj4gKw0KPiArMy4gQ29tbWl0IHRo ZSBzY3J1YiB0cmFuc2FjdGlvbiwgc2luY2UgdGhlIHN3YXAgZXN0aW1hdGlvbiBzdGVwIG11c3QN Cj4gYmUNCj4gK8KgwqAgY29tcGxldGVkIGJlZm9yZSB0cmFuc2FjdGlvbiByZXNlcnZhdGlvbnMg YXJlIG1hZGUuDQo+ICsNCj4gKzQuIENhbGwgYGB4cmVwX3RlbXBzd2FwX3RyYW5zX2FsbG9jYGAg dG8gYWxsb2NhdGUgYSBuZXcgc2NydWINCj4gdHJhbnNhY3Rpb24gd2l0aA0KPiArwqDCoCB0aGUg YXBwcm9wcmlhdGUgcmVzb3VyY2UgcmVzZXJ2YXRpb25zLCBsb2NrcywgYW5kIGZpbGwgb3V0IGEN Cj4gYGBzdHJ1Y3QNCj4gK8KgwqAgeGZzX3N3YXBleHRfcmVxYGAgd2l0aCB0aGUgZGV0YWlscyBv ZiB0aGUgc3dhcCBvcGVyYXRpb24uDQo+ICsNCj4gKzUuIENhbGwgYGB4cmVwX3RlbXBzd2FwX2Nv bnRlbnRzYGAgdG8gc3dhcCB0aGUgY29udGVudHMuDQo+ICsNCj4gKzYuIENvbW1pdCB0aGUgdHJh bnNhY3Rpb24gdG8gY29tcGxldGUgdGhlIHJlcGFpci4NCkhlcmUgdG9vLiAgQSByZWZlcmVuY2Ug dG8gdGhlIGNvZGUgd291bGQgaGVscCB0byBiZSBhYmxlIHRvIHNlZSBpdCBzaWRlDQpieSBzaWRl DQoNCj4gKw0KPiArLi4gX3J0c3VtbWFyeToNCj4gKw0KPiArQ2FzZSBTdHVkeTogUmVwYWlyaW5n IHRoZSBSZWFsdGltZSBTdW1tYXJ5IEZpbGUNCj4gK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eDQo+ICsNCj4gK0luIHRoZSAicmVhbHRpbWUiIHNlY3Rpb24g b2YgYW4gWEZTIGZpbGVzeXN0ZW0sIGZyZWUgc3BhY2UgaXMNCj4gdHJhY2tlZCB2aWEgYQ0KPiAr Yml0bWFwLCBzaW1pbGFyIHRvIFVuaXggRkZTLg0KPiArRWFjaCBiaXQgaW4gdGhlIGJpdG1hcCBy ZXByZXNlbnRzIG9uZSByZWFsdGltZSBleHRlbnQsIHdoaWNoIGlzIGENCj4gbXVsdGlwbGUgb2YN Cj4gK3RoZSBmaWxlc3lzdGVtIGJsb2NrIHNpemUgYmV0d2VlbiA0S2lCIGFuZCAxR2lCIGluIHNp emUuDQo+ICtUaGUgcmVhbHRpbWUgc3VtbWFyeSBmaWxlIGluZGV4ZXMgdGhlIG51bWJlciBvZiBm cmVlIGV4dGVudHMgb2YgYQ0KPiBnaXZlbiBzaXplIHRvDQo+ICt0aGUgb2Zmc2V0IG9mIHRoZSBi bG9jayB3aXRoaW4gdGhlIHJlYWx0aW1lIGZyZWUgc3BhY2UgYml0bWFwIHdoZXJlDQo+IHRob3Nl IGZyZWUNCj4gK2V4dGVudHMgYmVnaW4uDQo+ICtJbiBvdGhlciB3b3JkcywgdGhlIHN1bW1hcnkg ZmlsZSBoZWxwcyB0aGUgYWxsb2NhdG9yIGZpbmQgZnJlZQ0KPiBleHRlbnRzIGJ5DQo+ICtsZW5n dGgsIHNpbWlsYXIgdG8gd2hhdCB0aGUgZnJlZSBzcGFjZSBieSBjb3VudCAoY250YnQpIGJ0cmVl IGRvZXMNCj4gZm9yIHRoZSBkYXRhDQo+ICtzZWN0aW9uLg0KPiArDQo+ICtUaGUgc3VtbWFyeSBm aWxlIGl0c2VsZiBpcyBhIGZsYXQgZmlsZSAod2l0aCBubyBibG9jayBoZWFkZXJzIG9yDQo+IGNo ZWNrc3VtcyEpDQo+ICtwYXJ0aXRpb25lZCBpbnRvIGBgbG9nMih0b3RhbCBydCBleHRlbnRzKWBg IHNlY3Rpb25zIGNvbnRhaW5pbmcNCj4gZW5vdWdoIDMyLWJpdA0KPiArY291bnRlcnMgdG8gbWF0 Y2ggdGhlIG51bWJlciBvZiBibG9ja3MgaW4gdGhlIHJ0IGJpdG1hcC4NCj4gK0VhY2ggY291bnRl ciByZWNvcmRzIHRoZSBudW1iZXIgb2YgZnJlZSBleHRlbnRzIHRoYXQgc3RhcnQgaW4gdGhhdA0K PiBiaXRtYXAgYmxvY2sNCj4gK2FuZCBjYW4gc2F0aXNmeSBhIHBvd2VyLW9mLXR3byBhbGxvY2F0 aW9uIHJlcXVlc3QuDQo+ICsNCj4gK1RvIGNoZWNrIHRoZSBzdW1tYXJ5IGZpbGUgYWdhaW5zdCB0 aGUgYml0bWFwOg0KPiArDQo+ICsxLiBUYWtlIHRoZSBJTE9DSyBvZiBib3RoIHRoZSByZWFsdGlt ZSBiaXRtYXAgYW5kIHN1bW1hcnkgZmlsZXMuDQo+ICsNCj4gKzIuIEZvciBlYWNoIGZyZWUgc3Bh Y2UgZXh0ZW50IHJlY29yZGVkIGluIHRoZSBiaXRtYXA6DQo+ICsNCj4gK8KgwqAgYS4gQ29tcHV0 ZSB0aGUgcG9zaXRpb24gaW4gdGhlIHN1bW1hcnkgZmlsZSB0aGF0IGNvbnRhaW5zIGENCj4gY291 bnRlciB0aGF0DQo+ICvCoMKgwqDCoMKgIHJlcHJlc2VudHMgdGhpcyBmcmVlIGV4dGVudC4NCj4g Kw0KPiArwqDCoCBiLiBSZWFkIHRoZSBjb3VudGVyIGZyb20gdGhlIHhmaWxlLg0KPiArDQo+ICvC oMKgIGMuIEluY3JlbWVudCBpdCwgYW5kIHdyaXRlIGl0IGJhY2sgdG8gdGhlIHhmaWxlLg0KPiAr DQo+ICszLiBDb21wYXJlIHRoZSBjb250ZW50cyBvZiB0aGUgeGZpbGUgYWdhaW5zdCB0aGUgb25k aXNrIGZpbGUuDQo+ICsNCj4gK1RvIHJlcGFpciB0aGUgc3VtbWFyeSBmaWxlLCB3cml0ZSB0aGUg eGZpbGUgY29udGVudHMgaW50byB0aGUNCj4gdGVtcG9yYXJ5IGZpbGUNCj4gK2FuZCB1c2UgYXRv bWljIGV4dGVudCBzd2FwIHRvIGNvbW1pdCB0aGUgbmV3IGNvbnRlbnRzLg0KPiArVGhlIHRlbXBv cmFyeSBmaWxlIGlzIHRoZW4gcmVhcGVkLg0KPiArDQo+ICtUaGUgcHJvcG9zZWQgcGF0Y2hzZXQg aXMgdGhlDQo+ICtgcmVhbHRpbWUgc3VtbWFyeSByZXBhaXINCj4gKzwNCj4gaHR0cHM6Ly9naXQu a2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvZGp3b25nL3hmcy1saW51eC5naXQv DQo+IGxvZy8/aD1yZXBhaXItcnRzdW1tYXJ5PmBfDQpJIHRoaW5rIHRoaXMgaXMgdGhlIHNhbWUg bGluayBhcyB0aGUgbGFzdC4gIERpZCB5b3UgbWVhbiB0byBoYXZlIGENCmRpZmZlcmVudCBsaW5r IGhlcmU/DQoNCj4gK3Nlcmllcy4NCj4gKw0KPiArQ2FzZSBTdHVkeTogU2FsdmFnaW5nIEV4dGVu ZGVkIEF0dHJpYnV0ZXMNCj4gK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eDQo+ICsNCj4gK0luIFhGUywgZXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgaW1wbGVtZW50ZWQg YXMgYSBuYW1lc3BhY2VkIG5hbWUtDQo+IHZhbHVlIHN0b3JlLg0KPiArVmFsdWVzIGFyZSBsaW1p dGVkIGluIHNpemUgdG8gNjRLaUIsIGJ1dCB0aGVyZSBpcyBubyBsaW1pdCBpbiB0aGUNCj4gbnVt YmVyIG9mDQo+ICtuYW1lcy4NCj4gK1RoZSBhdHRyaWJ1dGUgZm9yayBpcyB1bnBhcnRpdGlvbmVk LCB3aGljaCBtZWFucyB0aGF0IHRoZSByb290IG9mDQo+IHRoZSBhdHRyaWJ1dGUNCj4gK3N0cnVj dHVyZSBpcyBhbHdheXMgaW4gbG9naWNhbCBibG9jayB6ZXJvLCBidXQgYXR0cmlidXRlIGxlYWYN Cj4gYmxvY2tzLCBkYWJ0cmVlDQo+ICtpbmRleCBibG9ja3MsIGFuZCByZW1vdGUgdmFsdWUgYmxv Y2tzIGFyZSBpbnRlcm1peGVkLg0KPiArQXR0cmlidXRlIGxlYWYgYmxvY2tzIGNvbnRhaW4gdmFy aWFibGUtc2l6ZWQgcmVjb3JkcyB0aGF0IGFzc29jaWF0ZQ0KPiArdXNlci1wcm92aWRlZCBuYW1l cyB3aXRoIHRoZSB1c2VyLXByb3ZpZGVkIHZhbHVlcy4NCj4gK1ZhbHVlcyBsYXJnZXIgdGhhbiBh IGJsb2NrIGFyZSBhbGxvY2F0ZWQgc2VwYXJhdGUgZXh0ZW50cyBhbmQNCj4gd3JpdHRlbiB0aGVy ZS4NCj4gK0lmIHRoZSBsZWFmIGluZm9ybWF0aW9uIGV4cGFuZHMgYmV5b25kIGEgc2luZ2xlIGJs b2NrLCBhDQo+IGRpcmVjdG9yeS9hdHRyaWJ1dGUNCj4gK2J0cmVlIChgYGRhYnRyZWVgYCkgaXMg Y3JlYXRlZCB0byBtYXAgaGFzaGVzIG9mIGF0dHJpYnV0ZSBuYW1lcyB0bw0KPiBlbnRyaWVzDQo+ ICtmb3IgZmFzdCBsb29rdXAuDQo+ICsNCj4gK1NhbHZhZ2luZyBleHRlbmRlZCBhdHRyaWJ1dGVz IGlzIGRvbmUgYXMgZm9sbG93czoNCj4gKw0KPiArMS4gV2FsayB0aGUgYXR0ciBmb3JrIG1hcHBp bmdzIG9mIHRoZSBmaWxlIGJlaW5nIHJlcGFpcmVkIHRvIGZpbmQNCj4gdGhlIGF0dHJpYnV0ZQ0K PiArwqDCoCBsZWFmIGJsb2Nrcy4NCj4gK8KgwqAgV2hlbiBvbmUgaXMgZm91bmQsDQo+ICsNCj4g K8KgwqAgYS4gV2FsayB0aGUgYXR0ciBsZWFmIGJsb2NrIHRvIGZpbmQgY2FuZGlkYXRlIGtleXMu DQo+ICvCoMKgwqDCoMKgIFdoZW4gb25lIGlzIGZvdW5kLA0KPiArDQo+ICvCoMKgwqDCoMKgIDEu IENoZWNrIHRoZSBuYW1lIGZvciBwcm9ibGVtcywgYW5kIGlnbm9yZSB0aGUgbmFtZSBpZiB0aGVy ZQ0KPiBhcmUuDQo+ICsNCj4gK8KgwqDCoMKgwqAgMi4gUmV0cmlldmUgdGhlIHZhbHVlLg0KPiAr wqDCoMKgwqDCoMKgwqDCoCBJZiB0aGF0IHN1Y2NlZWRzLCBhZGQgdGhlIG5hbWUgYW5kIHZhbHVl IHRvIHRoZSBzdGFnaW5nDQo+IHhmYXJyYXkgYW5kDQo+ICvCoMKgwqDCoMKgwqDCoMKgIHhmYmxv Yi4NCj4gKw0KPiArMi4gSWYgdGhlIG1lbW9yeSB1c2FnZSBvZiB0aGUgeGZhcnJheSBhbmQgeGZi bG9iIGV4Y2VlZCBhIGNlcnRhaW4NCj4gYW1vdW50IG9mDQo+ICvCoMKgIG1lbW9yeSBvciB0aGVy ZSBhcmUgbm8gbW9yZSBhdHRyIGZvcmsgYmxvY2tzIHRvIGV4YW1pbmUsIHVubG9jaw0KPiB0aGUg ZmlsZSBhbmQNCj4gK8KgwqAgYWRkIHRoZSBzdGFnZWQgZXh0ZW5kZWQgYXR0cmlidXRlcyB0byB0 aGUgdGVtcG9yYXJ5IGZpbGUuDQo+ICsNCj4gKzMuIFVzZSBhdG9taWMgZXh0ZW50IHN3YXBwaW5n IHRvIGV4Y2hhbmdlIHRoZSBuZXcgYW5kIG9sZCBleHRlbmRlZA0KPiBhdHRyaWJ1dGUNCj4gK8Kg wqAgc3RydWN0dXJlcy4NCj4gK8KgwqAgVGhlIG9sZCBhdHRyaWJ1dGUgYmxvY2tzIGFyZSBub3cg YXR0YWNoZWQgdG8gdGhlIHRlbXBvcmFyeSBmaWxlLg0KPiArDQo+ICs0LiBSZWFwIHRoZSB0ZW1w b3JhcnkgZmlsZS4NCj4gKw0KPiArVGhlIHByb3Bvc2VkIHBhdGNoc2V0IGlzIHRoZQ0KPiArYGV4 dGVuZGVkIGF0dHJpYnV0ZSByZXBhaXINCj4gKzwNCj4gaHR0cHM6Ly9naXQua2VybmVsLm9yZy9w dWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvZGp3b25nL3hmcy1saW51eC5naXQvDQo+IGxvZy8/aD1y ZXBhaXIteGF0dHJzPmBfDQo+ICtzZXJpZXMuDQoNCkkgdGhpbmsgaXQgbW9zdGx5IGxvb2tzIGdv b2QsIGN1bGxpbmcgYW5kIGxpbmsgc3VnZ2VzdGlvbnMgYXNpZGUuDQoNCkFsbGlzb24NCg0KPiAN Cg0K