From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR01-HE1-obe.outbound.protection.outlook.com (EUR01-HE1-obe.outbound.protection.outlook.com [40.107.13.49]) by mx.groups.io with SMTP id smtpd.web10.4338.1619426639280004199 for ; Mon, 26 Apr 2021 01:44:00 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=P3isJA0a; spf=pass (domain: arm.com, ip: 40.107.13.49, mailfrom: jianyong.wu@arm.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MFrp9plNWa5gClGJZCy8wR+iZlIOK+mYV4Mmzbw5FLo=; b=P3isJA0aITzaN8H9z6JHCu3wR5NeiI5DIQwxk3bVI92yidVyOe63KYzsd/mr9HRK970w7zc125DSTGesEES9/PRRM4WAZgSfnjaZgN8GyvNEyZswLPZYdAR9FBY+8qJpxacLdRupoNVDZugboOuVBsQzLNN4nWuj+AdYOH2NkUY= Received: from AM6P194CA0057.EURP194.PROD.OUTLOOK.COM (2603:10a6:209:84::34) by AM9PR08MB6852.eurprd08.prod.outlook.com (2603:10a6:20b:30f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Mon, 26 Apr 2021 08:43:56 +0000 Received: from AM5EUR03FT054.eop-EUR03.prod.protection.outlook.com (2603:10a6:209:84:cafe::ef) by AM6P194CA0057.outlook.office365.com (2603:10a6:209:84::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.20 via Frontend Transport; Mon, 26 Apr 2021 08:43:56 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; edk2.groups.io; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;edk2.groups.io; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT054.mail.protection.outlook.com (10.152.16.212) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21 via Frontend Transport; Mon, 26 Apr 2021 08:43:56 +0000 Received: ("Tessian outbound 9bcb3c8d6cb1:v90"); Mon, 26 Apr 2021 08:43:56 +0000 X-CR-MTA-TID: 64aa7808 Received: from 2cd7f4a3db95.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 235158AA-9243-4A77-AE95-95233EA1D29F.1; Mon, 26 Apr 2021 08:43:49 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 2cd7f4a3db95.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 26 Apr 2021 08:43:49 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Rz22dUYlaJntcLA58/pbJ6t5cux2HpFmKrLWK57U626iDhfeCzI6CIPBNnvFpDQzmgFfsPKu3QU4b3h770cfwSPdW0z5SeqWPkrFE3f2c3EkDlZBj3zYdoK/zueoSSrW5fUGYm2I24ioM0GFHvxjZW6yeJAJh0FC14zRNZRpXpy8IqWd3/KL1Lfhcyp206k3K+TWnDuTaTAhhR3qhcs54cC8892Q4KRkiQJ+5+sGO1TIH3BEaWeD7MwROzDzgMA2xrAFGk2JK9aKnxuCniVDDZHxT0mdD377GOuyBGITuD5BYLKUMHjrAPArEqv+G2/mQSvAdCKGgnyhOf3VJIWtDA== 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-SenderADCheck; bh=MFrp9plNWa5gClGJZCy8wR+iZlIOK+mYV4Mmzbw5FLo=; b=NvPJPGK+u+Cgpql1oO6CYq35dWGOjYyrPxRmvHCBtm7nCnZBxJCSWcW7ygfW5d/7JWU6L7MaKZNwtHzwzQbvOwVLtxZSQYFB7ZK6U+APOvyO9kcGMgF4T6Nqndo9BmhpfvaB2NRwDK4gLtGMSDo1uMrIoWrxwHs6SM1fRreOjLbfgBYd2pYHEMVCHXItPNr2lXWKS4vuaH1DehkdjVdNXE1mhH9O3yKr5tvqwg+o0FkU/giS5jjd07kT4jp/24DdO68ny9PGdv9LBJSEweytxI2p9eTVcXcQbgnJeBOnujuM/HMvlI71UP07v32cLTdEyXg849XB/NPtE0kXlbtbXw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MFrp9plNWa5gClGJZCy8wR+iZlIOK+mYV4Mmzbw5FLo=; b=P3isJA0aITzaN8H9z6JHCu3wR5NeiI5DIQwxk3bVI92yidVyOe63KYzsd/mr9HRK970w7zc125DSTGesEES9/PRRM4WAZgSfnjaZgN8GyvNEyZswLPZYdAR9FBY+8qJpxacLdRupoNVDZugboOuVBsQzLNN4nWuj+AdYOH2NkUY= Received: from AM5PR0801MB2082.eurprd08.prod.outlook.com (2603:10a6:203:4b::8) by AM5PR0801MB1826.eurprd08.prod.outlook.com (2603:10a6:203:39::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.25; Mon, 26 Apr 2021 08:43:48 +0000 Received: from AM5PR0801MB2082.eurprd08.prod.outlook.com ([fe80::4c1b:cfd1:10c5:222d]) by AM5PR0801MB2082.eurprd08.prod.outlook.com ([fe80::4c1b:cfd1:10c5:222d%5]) with mapi id 15.20.4065.027; Mon, 26 Apr 2021 08:43:48 +0000 From: "Jianyong Wu" To: Laszlo Ersek , edk2-devel-groups-io CC: Justin He , Ard Biesheuvel , Leif Lindholm , Sami Mujawar Subject: Re: [PATCH v1 1/4] ArmVirtPkg: Library: Memory initialization for Cloud Hypervisor Thread-Topic: [PATCH v1 1/4] ArmVirtPkg: Library: Memory initialization for Cloud Hypervisor Thread-Index: AQHXN1ECpU7GvB7bAku0HzVP1MCBbarAkAmAgAXu9qA= Date: Mon, 26 Apr 2021 08:43:47 +0000 Message-ID: References: <20210422082440.172160-1-jianyong.wu@arm.com> <20210422082440.172160-2-jianyong.wu@arm.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: F1009C2BEA17C344BD77513891706FF5.0 x-checkrecipientchecked: true Authentication-Results-Original: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=arm.com; x-originating-ip: [203.126.0.111] x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: 25de17fd-fcd6-4af7-e7e0-08d9088f6da7 x-ms-traffictypediagnostic: AM5PR0801MB1826:|AM9PR08MB6852: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:9508;OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: wP8uQFMZRN6ArIGJxt/6JFgtHYi8c1zBY/0MPiPE3OLdBm/cygZNGAhndEXxFJCZ6LfEhyDGwex5FLo6VSGOPjEEtnKmq3AlPXrKsPnArFI2tTvqLKKSdc0P+JCnjWWDA94fxydLfyHmUFAR3zDqcjafF8oDoBDQr93NL+gFmA5u6hjEgfY9PJ3Ot2vSR8rvH5SHAZtwJPS93x9gLUZ4R6uuhpo9lr6gnWV5BGdSCK8RWasxzGEr2CkAzrYq0t1Urnk87zPbSGiaxIg8JN7S+puqjWD4RtWghUMPW2EW77XMWsYhWixMy15G26sYTp+PEZr6rH3dK7x/cdzRtEJtXbFXUiRotCqnoOLB5eGe0NAr80gZ43V12DyPmd9yy0RbwOEOl3XBujIMxfk2oGxjxZC/wYuhn4bxFVP8Z5VBvOfwPq7SKRJaQaUAW19FXveEJITzMlD1QK2mmn6Eao+Ksd1jiB5u7nr5eRx6c5FN6/XUVT5WpD3x+gYxJOSbVizSiYXEk4k5lUPxR7j5LEznMZ8hLeakKOIuTCLc2DszCni7EscJhSlmxJCZj5dxeDAtCxzeptgcu+8zzn/Zg0P910iKcTAyzVz3sOOEuandsNFRUnQbbinXoTkt/ou6VmwZlfZvnoOObidRfB0xQTV0eBTBVdMqXmOcU0Rnz2vTbat9aCGnC0wYbHvOLlFy+Oq/ X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM5PR0801MB2082.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(346002)(39860400002)(376002)(366004)(396003)(136003)(38100700002)(122000001)(86362001)(52536014)(83380400001)(9686003)(33656002)(2906002)(55016002)(5660300002)(8936002)(30864003)(186003)(316002)(110136005)(54906003)(7696005)(478600001)(71200400001)(66446008)(66476007)(64756008)(76116006)(66556008)(66946007)(6506007)(4326008)(53546011)(26005)(8676002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?OTdUNm54WXgvUWkrS0pXNU4ralorQU1HS3htdWRjcHo1bGpUeXRwVWhFK01k?= =?utf-8?B?aWI0TXdXNVpKSnpudkVLTDZPa2tTSVVUYVo4cXU4S1lRckU2RmpTVjlJbFRY?= =?utf-8?B?eU9Gb1RwTlQ3b0RZMnZTMmxQWkVOZWhNejN6bkordlI2dktSOEJjRC9HcnJR?= =?utf-8?B?MCtHMUw5SGNadWJ6ZzBlTEpzR3lPZWRUNUtpT2gxWXVrckE3OTJLTkVBNW5r?= =?utf-8?B?WE9uTm1IVnVuZDFqMnFaalRZd0Ftd0dLYTh5R1k2ckJQODRHRkQ3cC9oaTNW?= =?utf-8?B?VmdZWXpuQ1VrZkxyNDZvNTc0UlRQa1FiWkNSUStuNTQxMU5LV3RBclpZMmZU?= =?utf-8?B?WVk0bHR6RkFrTzgxTXUrdmdqTUIyK1d5VDNrRGhSOUFHanpzcWpvalV3aC9D?= =?utf-8?B?RzJ6MElsTGNETXVrNnczMDBTaC8xVC9PNXlwMXdsYjc1TlVNU0I4OUlWQWJW?= =?utf-8?B?SHE4ajRYNmdES0QyajJ6NDJYcHhUcDh1bmV3aE5Jb3oxUHdJcFdMTm5ZcjNH?= =?utf-8?B?V3ZHYXd0Tmpsd0VDUURqVjZqMHZ3QVlZMWppY2lYQnh4L1k1elYxTTlxS1Fv?= =?utf-8?B?Q2lNU09DZ25mand3QW5vbjJzaVpMdVhXVjhEWkY1Sk44M3pOYjlIOU8yK1Bk?= =?utf-8?B?Mm5wZHlyTTRFa2tjbzNDREllaTU1OXJiajYvRWRWWGJqbGFKNTh5WEl0TU9n?= =?utf-8?B?UzJ4WmtSSXR0cU1mQXR5Y05sZFRMVFBwYkljVXNpTTRQSFoybzIxaVpzR0lV?= =?utf-8?B?NUxZK052cjdkaEpBYU9wYkxmbjF0Z21mTkk4UmJ3N05lbU90REFiYkJFMUxJ?= =?utf-8?B?T0NIWW9nZ1NPVjh2Rk9yZ3hSR1ZlZzVENjV0aUtsblA4NXh3SmFxdHlNUnQ2?= =?utf-8?B?VDF3ZFM2MUJzdjJWTXpGMmVYWGEwKy94QjNpL3N1RUpzZi8vK0Z1YTlsY2pL?= =?utf-8?B?Z0lPRHV0Q1JPYU9GMjdFMzZWVytqY1pmb2NXcHk3c3FUZWY3MlJCQ21wTURi?= =?utf-8?B?TTVYTnZXWXFZVGdMTlVTM25PSi9JTXpzRXh2SEFodVZpTzVJeHpuWlhYa3Fy?= =?utf-8?B?TFJYeCsxYnZRVVRDaDVzRlZFa1dZVlhKRlJoQkhVMXBXTmFJYWhGNU10Ylhw?= =?utf-8?B?c0doZ2xIcjNRc253QmFtYmRQMXkvSmJkSDR2RzlRZVlsUGszL1FreGsySEJE?= =?utf-8?B?U1pYUVhkbGtrbGZTb01kMTBycFhlZlJpQ2VhRW1jWnlGa3NKTkk5ZlFFYU9Q?= =?utf-8?B?UmY4UHpKSnNPSFBRd2xpVGZQejlHQ1hWdnpyTUZFaFh5QUc5YUZENXRBd3dE?= =?utf-8?B?VWJEbThsbjViT3VKQUE3bCtEUzJQVjE1LzU5blpUcTBZamwxUWhmTmJpQ1JQ?= =?utf-8?B?dFpDUkpITmNZZ0prZmNXVE9LWmRDZXdLcUU4ZGFLRnhVdVp3aVZDNlN1UUJv?= =?utf-8?B?NGFBRDNBcmFvRy9pSFRBd3Y2aDV5aXF3Y2hKdUNMNU1lZGNxZGd0U3BYMGpt?= =?utf-8?B?bE5xbjF5RlR6K2pHOThPenUwME1ueWM0Y3E2RjR3cHlPTU5xcnY4YzJVck4v?= =?utf-8?B?d3JSbzd6LzFPMkpZSzd3Y0tpNXgvdXQ4ZDF0VW14TWZFcVhPbVVNb3ExRS9Z?= =?utf-8?B?Vk5hR0loaGdjM2NWd2RxVlAwQUZVN2p2MURndDBtTGJFT2YzcWZVelJzYWF5?= =?utf-8?B?ZDZHWGtOUStSbjhHSzF4NVZ5NjBZK2hhV2RTaDFlVjFnTjdKWDl3YW9WTVVX?= =?utf-8?Q?kbaQrcKxwmh3Bddh6aFZsmqMlZLW3+3SoG+J8wB?= MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB1826 Original-Authentication-Results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=arm.com; Return-Path: Jianyong.Wu@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT054.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: d0052330-75e1-4f19-0fd5-08d9088f68ca X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: u8TG4x4FTOw9J6SYVeee1P5XNza4V91+R+rNAzpgv47j2DOACFZmPMIQQy3YyOlO1AMLEQyy9QZ7jX4hqtd/anQzfuJZ/RB1VfjvStSotCGoqxDKe9djdmWzOyx35VuZVF8n+qeP72zjLkm8+RNBxW6Lsd/71ZQhHFKPglFBm58jVg6KBjfCIluQk0cN6HDm5UjW8k8+vxa6vEPY2R9tAirO6o9icvPHWw8eUabLMf+VosbiBEzj4QbNelzaVcPrbeB5U/KPXWabGAWhS4OqiGIgq+FIrRtMutW81HjjDuxwRAOY78vx53GqclyHWAg8Pf/BXCIdapSCuZKqY9etMXot0wUgiu6titL6JUoSiQXFmu8u+st0oyr1idvxNZ91HzocTs1eNziPiM8cO8VdXfksMBGguf+U9sDHp0/EMmw9pggnwv7Idi2RD05AI0vNI+Lz2RVcU+45qimUMDt8xaOgHHdp7/jD8JOHcDv9tl8dScMpogJ8IbZMyVaibssyOdYmdshKX2P1PYmJYugzBhW8SQzQrSap9FzXEKRoHaSrSo8pmKcLleSdoMmTkOu/pDNrOPpba87w/F1Al3L3EbhzbJ+uW3q+CsAKwRoGw5pooIdtzkkIQP9GqSA/vIVF2YLKJ8s6bQM9eeQgXCfStBzRd/DbTMFLwr9rFT+YXS2NT9rfQImMguGejOyCa++EpMejrJQEKkUjWBZOwRPewey9JGMHVsqtPHqkCEp71I7OFMJU6oiqrrBRcJVBfFK3UXqqWjQk8non4Wj4lKq9Qg== X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(4636009)(376002)(346002)(39860400002)(136003)(396003)(36840700001)(46966006)(36860700001)(7696005)(478600001)(83380400001)(52536014)(33656002)(30864003)(26005)(110136005)(86362001)(47076005)(4326008)(53546011)(2906002)(336012)(186003)(316002)(55016002)(9686003)(5660300002)(82310400003)(6506007)(54906003)(8936002)(8676002)(70586007)(70206006)(82740400003)(356005)(81166007)(34020700004);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2021 08:43:56.2112 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 25de17fd-fcd6-4af7-e7e0-08d9088f6da7 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM5EUR03FT054.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB6852 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTGFzemxvLA0KDQpUaGFua3MgZm9yIHlvdXIgdGltZSBvZiBjb21tZW50aW5nIG9uIG15ICJo b3JyaWJsZSIgcGF0Y2ggc2V0LiBJdCdzIHZlcnkgaGVscGZ1bC4gSSB3aWxsIHJlZmFjdG9yIHRo ZSBwYXRjaCBzZXQgYmFzZSBvbiB5b3VyIGNvbW1lbnRzIGFuZCByZXNlbmQgaXQgbGF0ZXIgbW9y ZSBjYXJlZnVsbHkuDQoNClRoYW5rcw0KSmlhbnlvbmcNCg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+IEZyb206IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+DQo+IFNl bnQ6IFRodXJzZGF5LCBBcHJpbCAyMiwgMjAyMSA5OjU3IFBNDQo+IFRvOiBKaWFueW9uZyBXdSA8 SmlhbnlvbmcuV3VAYXJtLmNvbT47IGVkazItZGV2ZWwtZ3JvdXBzLWlvDQo+IDxkZXZlbEBlZGsy Lmdyb3Vwcy5pbz4NCj4gQ2M6IEp1c3RpbiBIZSA8SnVzdGluLkhlQGFybS5jb20+OyBBcmQgQmll c2hldXZlbA0KPiA8YXJkYit0aWFub2NvcmVAa2VybmVsLm9yZz47IExlaWYgTGluZGhvbG0gPGxl aWZAbnV2aWFpbmMuY29tPjsgU2FtaQ0KPiBNdWphd2FyIDxTYW1pLk11amF3YXJAYXJtLmNvbT4N Cj4gU3ViamVjdDogUmU6IFtQQVRDSCB2MSAxLzRdIEFybVZpcnRQa2c6IExpYnJhcnk6IE1lbW9y eSBpbml0aWFsaXphdGlvbiBmb3INCj4gQ2xvdWQgSHlwZXJ2aXNvcg0KPg0KPiBIaSBKaWFueW9u ZywNCj4NCj4gT24gMDQvMjIvMjEgMTA6MjQsIEppYW55b25nIFd1IHdyb3RlOg0KPiA+IENsb3Vk IEh5cGVydmlzb3IgaXMga3ZtIGJhc2VkIFZNTSBpbXBsZW1lbnRlZCBpbiBydXN0Lg0KPiA+DQo+ ID4gVGhpcyBsaWJyYXJ5IHBvcHVsYXRlcyB0aGUgc3lzdGVtIG1lbW9yeSBtYXAgZm9yIHRoZSBD bG91ZCBIeXBlcnZpc29yDQo+ID4gdmlydHVhbCBwbGF0Zm9ybS4NCj4gPg0KPiA+IENjOiBMYXN6 bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPg0KPiA+IENjOiBBcmQgQmllc2hldXZlbCA8YXJk Yit0aWFub2NvcmVAa2VybmVsLm9yZz4NCj4gPiBDYzogTGVpZiBMaW5kaG9sbSA8bGVpZkBudXZp YWluYy5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogSmlhbnlvbmcgV3UgPGppYW55b25nLnd1QGFy bS5jb20+DQo+ID4gLS0tDQo+ID4gIEFybVZpcnRQa2cvTGlicmFyeS9DbGhWaXJ0TWVtSW5mb0xp Yi9DbGhWaXJ0TWVtSW5mb1BlaUxpYi5pbmYgICAgICAgICAgfA0KPiA0NyArKysrKysrKysNCj4g PiAgQXJtVmlydFBrZy9MaWJyYXJ5L0NsaFZpcnRNZW1JbmZvTGliL0NsaFZpcnRNZW1JbmZvTGli LmMgICAgICAgICAgICAgICB8ICA5NA0KPiArKysrKysrKysrKysrKysrKysNCj4gPg0KPiA+DQo+ IEFybVZpcnRQa2cvTGlicmFyeS9DbGhWaXJ0TWVtSW5mb0xpYi9DbGhWaXJ0TWVtSW5mb1BlaUxp YkNvbnN0cnVjdG9yLmMNCj4gPiB8IDEwMCArKysrKysrKysrKysrKysrKysrKw0KPiA+ICAzIGZp bGVzIGNoYW5nZWQsIDI0MSBpbnNlcnRpb25zKCspDQo+DQo+IGxldCdzIHNvcnQgb3V0IHRoZSBt ZXRhLXByb2JsZW1zIGZpcnN0Og0KPg0KPiAoMSkgeW91IG5lZWQgYSBGZWF0dXJlIFJlcXVlc3Qg QlogZm9yIHRoaXM7IDxodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvPi4NCj4gVGhlIGNv bW1pdCBtZXNzYWdlcyBzaG91bGQgcmVmZXJlbmNlIHRoZSBzcGVjaWZpYyBidWd6aWxsYSB0aWNr ZXQgVVJMLg0KPg0KPiAoMikgIkNsaCIgaXMgYSBjYXRhc3Ryb3BoaWNhbGx5IGJhZCBhYmJyZXZp YXRpb24uIFRoZSB3aG9sZSBwb2ludCBvZiB5b3VyIHdvcmsNCj4gaXMgdG8gYWRkIENsb3VkIEh5 cGVydmlzb3Igc3VwcG9ydCwgc28gd2h5IHRyYXNoIHRoZSBtb3N0IHJlbGV2YW50DQo+IGluZm9y bWF0aW9uIGluIHRoZSBmaWxlIG5hbWVzIHdpdGggYW4gaW5hbmUgYWJicmV2aWF0aW9uPw0KPg0K PiAoTm90IHRvIG1lbnRpb24gdGhhdCB0aGUgbmFtZSAiQ2xvdWQgSHlwZXJ2aXNvciIgaXRzZWxm IGlzIGFzIG5vbmRlc2NyaXB0IGFzDQo+IHBvc3NpYmxlLiA6LykNCj4NCj4gKDMpIEkgaGF2ZSBu b3QgcmVjZWl2ZWQgYSBjb3ZlciBsZXR0ZXIgKDAvNCkuIE5vdCBzdXJlIGlmIHlvdSBzZW50IG9u ZS4NCj4NCj4gKDQpIEkgZG9uJ3Qgc2VlIHRoZSBtZXNzYWdlcyBpbiBteSBlZGsyLWRldmVsIGZv bGRlciwgb3IgaW4gdGhlIG1haWxpbmcgbGlzdA0KPiBhcmNoaXZlcywgb3IgaW4gdGhlIG1lc3Nh Z2VzIGhlbGQgZm9yIG1vZGVyYXRpb24gYXQgdGhlIGdyb3Vwcy5pbyBXZWJVSS4NCj4NCj4gKDUp ICJDbG91ZCBIeXBlcnZpc29yIiBpcyBub3Qgc29tZXRoaW5nIHRoYXQgSSBjYW4ganVzdGlmaWFi bHkgc3BlbmQgbXVjaCB0aW1lDQo+IG9uLiBJJ20gd2lsbGluZyB0byByZXZpZXcgdGhpcyBzZXJp ZXMgYXQgdGhlIGxldmVsIGF0IHdoaWNoIEkndmUgcmV2aWV3ZWQgKGZvcg0KPiBleGFtcGxlKSBY ZW5QVkggb3IgQmh5dmUgaW4gdGhlIHBhc3QsIG1haW5seSBmb2N1c2luZyBvbiBzdHlsZSBhbmQN Cj4gcG90ZW50aWFsIHJlZ3Jlc3Npb25zLiBIb3dldmVyLCB0aGF0J3Mgbm90IGVub3VnaCBmb3Ig dGhlIGxvbmcgdGVybToNCj4gc29tZW9uZSBmcm9tIEFSTSAob3IgZWxzZXdoZXJlKSB3aWxsIGhh dmUgdG8gc3RlcCB1cCBmb3IgcGVybWFuZW50DQo+IHJldmlld2Vyc2hpcC4gUGxlYXNlIGFkZCBh IHBhdGNoIGZvciBleHRlbmRpbmcgIk1haW50YWluZXJzLnR4dCINCj4gYXBwcm9wcmlhdGVseS4g RXhhbXBsZSBzdWJzeXN0ZW1zOg0KPg0KPiAtIEFybVZpcnRQa2c6IG1vZHVsZXMgdXNlZCBvbiBY ZW4NCj4gLSBBcm1WaXJ0UGtnOiBLdm10b29sIGVtdWxhdGVkIHBsYXRmb3JtIHN1cHBvcnQNCj4g LSBPdm1mUGtnOiBiaHl2ZS1yZWxhdGVkIG1vZHVsZXMNCj4gLSBPdm1mUGtnOiBYZW4tcmVsYXRl ZCBtb2R1bGVzDQo+DQo+IFBsZWFzZSBrZWVwIHRoZSBzdWJzeXN0ZW0gdGl0bGVzIGFscGhhYmV0 aWNhbGx5IHNvcnRlZCBpbiB0aGUgZmlsZS4NCj4NCj4gUGxlYXNlIHJlc2VuZC4NCj4NCj4gKEkn bSBwb3N0aW5nIHRoZXNlIGNvbW1lbnRzIGF0IG9uY2UgYmVjYXVzZSB0aGV5IGFyZSB1bmRlcnN0 YW5kYWJsZSB0bw0KPiB0aGUgY29tbXVuaXR5IGV2ZW4gaW4gdGhlIGFic2VuY2Ugb2YgeW91ciBw YXRjaGVzIG9uIHRoZSBsaXN0LikNCj4NCj4gVGhhbmtzDQo+IExhc3psbw0KPg0KPiA+DQo+ID4g ZGlmZiAtLWdpdA0KPiA+IGEvQXJtVmlydFBrZy9MaWJyYXJ5L0NsaFZpcnRNZW1JbmZvTGliL0Ns aFZpcnRNZW1JbmZvUGVpTGliLmluZg0KPiA+IGIvQXJtVmlydFBrZy9MaWJyYXJ5L0NsaFZpcnRN ZW1JbmZvTGliL0NsaFZpcnRNZW1JbmZvUGVpTGliLmluZg0KPiA+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi4wNGNiMWYyYTU4MWENCj4gPiAtLS0gL2Rldi9u dWxsDQo+ID4gKysrIGIvQXJtVmlydFBrZy9MaWJyYXJ5L0NsaFZpcnRNZW1JbmZvTGliL0NsaFZp cnRNZW1JbmZvUGVpTGliLmluZg0KPiA+IEBAIC0wLDAgKzEsNDcgQEANCj4gPiArIy8qIEBmaWxl DQo+ID4gKyMNCj4gPiArIyAgQ29weXJpZ2h0IChjKSAyMDExLTIwMTUsIEFSTSBMaW1pdGVkLiBB bGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+ICsjICBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNywgTGlu YXJvIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4gKyMNCj4gPiArIyAgU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQgIyAjKi8NCj4gPiArDQo+ID4g K1tEZWZpbmVzXQ0KPiA+ICsgIElORl9WRVJTSU9OICAgICAgICAgICAgICAgICAgICA9IDB4MDAw MTAwMUENCj4gPiArICBCQVNFX05BTUUgICAgICAgICAgICAgICAgICAgICAgPSBDbGhWaXJ0TWVt SW5mb1BlaUxpYg0KPiA+ICsgIEZJTEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9IDNFMjlE OTQwLTA1OTEtRUU2QS1DQUQ0LTIyM0E5Q0Y1NUU3NQ0KPiA+ICsgIE1PRFVMRV9UWVBFICAgICAg ICAgICAgICAgICAgICA9IEJBU0UNCj4gPiArICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgICAg ICAgPSAxLjANCj4gPiArICBMSUJSQVJZX0NMQVNTICAgICAgICAgICAgICAgICAgPSBBcm1WaXJ0 TWVtSW5mb0xpYnxQRUlNDQo+ID4gKyAgQ09OU1RSVUNUT1IgICAgICAgICAgICAgICAgICAgID0g Q2xoVmlydE1lbUluZm9QZWlMaWJDb25zdHJ1Y3Rvcg0KPiA+ICsNCj4gPiArW1NvdXJjZXNdDQo+ ID4gKyAgQ2xoVmlydE1lbUluZm9MaWIuYw0KPiA+ICsgIENsaFZpcnRNZW1JbmZvUGVpTGliQ29u c3RydWN0b3IuYw0KPiA+ICsNCj4gPiArW1BhY2thZ2VzXQ0KPiA+ICsgIEFybVBrZy9Bcm1Qa2cu ZGVjDQo+ID4gKyAgQXJtVmlydFBrZy9Bcm1WaXJ0UGtnLmRlYw0KPiA+ICsgIEVtYmVkZGVkUGtn L0VtYmVkZGVkUGtnLmRlYw0KPiA+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ ID4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPiArDQo+ID4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4g PiArICBBcm1MaWINCj4gPiArICBCYXNlTWVtb3J5TGliDQo+ID4gKyAgRGVidWdMaWINCj4gPiAr ICBGZHRMaWINCj4gPiArICBQY2RMaWINCj4gPiArICBNZW1vcnlBbGxvY2F0aW9uTGliDQo+ID4g Kw0KPiA+ICtbUGNkXQ0KPiA+ICsgIGdBcm1Ub2tlblNwYWNlR3VpZC5QY2RGZEJhc2VBZGRyZXNz DQo+ID4gKyAgZ0FybVRva2VuU3BhY2VHdWlkLlBjZEZ2QmFzZUFkZHJlc3MNCj4gPiArICBnQXJt VG9rZW5TcGFjZUd1aWQuUGNkU3lzdGVtTWVtb3J5QmFzZQ0KPiA+ICsgIGdBcm1Ub2tlblNwYWNl R3VpZC5QY2RTeXN0ZW1NZW1vcnlTaXplDQo+ID4gKw0KPiA+ICtbRml4ZWRQY2RdDQo+ID4gKyAg Z0FybVRva2VuU3BhY2VHdWlkLlBjZEZkU2l6ZQ0KPiA+ICsgIGdBcm1Ub2tlblNwYWNlR3VpZC5Q Y2RGdlNpemUNCj4gPiArICBnQXJtVmlydFRva2VuU3BhY2VHdWlkLlBjZERldmljZVRyZWVJbml0 aWFsQmFzZUFkZHJlc3MNCj4gPiBkaWZmIC0tZ2l0IGEvQXJtVmlydFBrZy9MaWJyYXJ5L0NsaFZp cnRNZW1JbmZvTGliL0NsaFZpcnRNZW1JbmZvTGliLmMNCj4gPiBiL0FybVZpcnRQa2cvTGlicmFy eS9DbGhWaXJ0TWVtSW5mb0xpYi9DbGhWaXJ0TWVtSW5mb0xpYi5jDQo+ID4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjgyOWQ3ZDdhYTI1OQ0KPiA+IC0tLSAv ZGV2L251bGwNCj4gPiArKysgYi9Bcm1WaXJ0UGtnL0xpYnJhcnkvQ2xoVmlydE1lbUluZm9MaWIv Q2xoVmlydE1lbUluZm9MaWIuYw0KPiA+IEBAIC0wLDAgKzEsOTQgQEANCj4gPiArLyoqIEBmaWxl DQo+ID4gKw0KPiA+ICsgIENvcHlyaWdodCAoYykgMjAxNC0yMDE3LCBMaW5hcm8gTGltaXRlZC4g QWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPiArDQo+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2lu Y2x1ZGUgPEJhc2UuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvQXJtTGliLmg+DQo+ID4gKyNp bmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkv RGVidWdMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5o Pg0KPiA+ICsNCj4gPiArLy8gTnVtYmVyIG9mIFZpcnR1YWwgTWVtb3J5IE1hcCBEZXNjcmlwdG9y cw0KPiA+ICsjZGVmaW5lIE1BWF9WSVJUVUFMX01FTU9SWV9NQVBfREVTQ1JJUFRPUlMgICAgICAg ICAgNQ0KPiA+ICsNCj4gPiArLy8NCj4gPiArLy8gbWFjaC12aXJ0J3MgY29yZSBwZXJpcGhlcmFs cyBzdWNoIGFzIHRoZSBVQVJULCB0aGUgR0lDIGFuZCB0aGUgUlRDDQo+ID4gK2FyZSAvLyBhbGwg bWFwcGVkIGluIHRoZSAnbWlzY2VsbGFuZW91cyBkZXZpY2UgSS9PJyByZWdpb24sIHdoaWNoIHdl DQo+ID4gK2p1c3QgbWFwIC8vIGluIGl0cyBlbnRpcmV0eSByYXRoZXIgdGhhbiBkZXZpY2UgYnkg ZGV2aWNlLiBOb3RlIHRoYXQNCj4gPiAraXQgZG9lcyBub3QgLy8gY292ZXIgYW55IG9mIHRoZSBO T1IgZmxhc2ggYmFua3Mgb3IgUENJIHJlc291cmNlIHdpbmRvd3MuDQo+ID4gKy8vDQo+ID4gKyNk ZWZpbmUgTUFDSF9WSVJUX1BFUklQSF9CQVNFICAgICAgIDB4MDgwMDAwMDANCj4gPiArI2RlZmlu ZSBNQUNIX1ZJUlRfUEVSSVBIX1NJWkUgICAgICAgU0laRV8xMjhNQg0KPiA+ICsNCj4gPiArLy8N Cj4gPiArLy8gaW4gY2xvdWQtaHlwZXJ2aXNvciwgMHgwIH4gMHg4MDAwMDAwIGlzIHJlc2VydmVk IGFzIG5vcm1hbCBtZW1vcnkNCj4gPiArZm9yIFVFRkkgLy8NCj4gPiArI2RlZmluZSBDTEhfVUVG SV9NRU1fQkFTRSAgICAgICAweDANCj4gPiArI2RlZmluZSBDTEhfVUVGSV9NRU1fU0laRSAgICAg ICAweDA4MDAwMDAwDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBSZXR1cm4gdGhlIFZpcnR1YWwg TWVtb3J5IE1hcCBvZiB5b3VyIHBsYXRmb3JtDQo+ID4gKw0KPiA+ICsgIFRoaXMgVmlydHVhbCBN ZW1vcnkgTWFwIGlzIHVzZWQgYnkgTWVtb3J5SW5pdFBlaSBNb2R1bGUgdG8NCj4gPiArIGluaXRp YWxpemUgdGhlIE1NVSAgb24geW91ciBwbGF0Zm9ybS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW291 dF0gICBWaXJ0dWFsTWVtb3J5TWFwICAgIEFycmF5IG9mDQo+IEFSTV9NRU1PUllfUkVHSU9OX0RF U0NSSVBUT1INCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3Jp YmluZyBhIFBoeXNpY2FsLXRvLVZpcnR1YWwgTWVtb3J5DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG1hcHBpbmcuIFRoaXMgYXJyYXkgbXVzdCBiZSBlbmRlZCBieSBh DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHplcm8tZmlsbGVkIGVu dHJ5LiBUaGUgYWxsb2NhdGVkIG1lbW9yeQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB3aWxsIG5vdCBiZSBmcmVlZC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtWT0lE DQo+ID4gK0FybVZpcnRHZXRNZW1vcnlNYXAgKA0KPiA+ICsgIE9VVCBBUk1fTUVNT1JZX1JFR0lP Tl9ERVNDUklQVE9SICAgKipWaXJ0dWFsTWVtb3J5TWFwDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4g KyAgQVJNX01FTU9SWV9SRUdJT05fREVTQ1JJUFRPUiAgKlZpcnR1YWxNZW1vcnlUYWJsZTsNCj4g PiArDQo+ID4gKyAgQVNTRVJUIChWaXJ0dWFsTWVtb3J5TWFwICE9IE5VTEwpOw0KPiA+ICsNCj4g PiArICBWaXJ0dWFsTWVtb3J5VGFibGUgPSBBbGxvY2F0ZVBvb2wgKHNpemVvZg0KPiAoQVJNX01F TU9SWV9SRUdJT05fREVTQ1JJUFRPUikgKg0KPiA+ICsNCj4gPiArIE1BWF9WSVJUVUFMX01FTU9S WV9NQVBfREVTQ1JJUFRPUlMpOw0KPiA+ICsNCj4gPiArICBpZiAoVmlydHVhbE1lbW9yeVRhYmxl ID09IE5VTEwpIHsNCj4gPiArICAgIERFQlVHICgoREVCVUdfRVJST1IsICIlYTogRXJyb3I6IEZh aWxlZCBBbGxvY2F0ZVBvb2woKVxuIiwNCj4gX19GVU5DVElPTl9fKSk7DQo+ID4gKyAgICByZXR1 cm47DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLyBTeXN0ZW0gRFJBTQ0KPiA+ICsgIFZpcnR1 YWxNZW1vcnlUYWJsZVswXS5QaHlzaWNhbEJhc2UgPSBQY2RHZXQ2NA0KPiA+ICsgKFBjZFN5c3Rl bU1lbW9yeUJhc2UpOyAgVmlydHVhbE1lbW9yeVRhYmxlWzBdLlZpcnR1YWxCYXNlICA9DQo+IFZp cnR1YWxNZW1vcnlUYWJsZVswXS5QaHlzaWNhbEJhc2U7DQo+ID4gKyAgVmlydHVhbE1lbW9yeVRh YmxlWzBdLkxlbmd0aCAgICAgICA9IFBjZEdldDY0IChQY2RTeXN0ZW1NZW1vcnlTaXplKTsNCj4g PiArICBWaXJ0dWFsTWVtb3J5VGFibGVbMF0uQXR0cmlidXRlcyAgID0NCj4gQVJNX01FTU9SWV9S RUdJT05fQVRUUklCVVRFX1dSSVRFX0JBQ0s7DQo+ID4gKw0KPiA+ICsgIERFQlVHICgoREVCVUdf SU5GTywgIiVhOiBEdW1waW5nIFN5c3RlbSBEUkFNIE1lbW9yeSBNYXA6XG4iDQo+ID4gKyAgICAg ICJcdFBoeXNpY2FsQmFzZTogMHglbFhcbiINCj4gPiArICAgICAgIlx0VmlydHVhbEJhc2U6IDB4 JWxYXG4iDQo+ID4gKyAgICAgICJcdExlbmd0aDogMHglbFhcbiIsDQo+ID4gKyAgICAgIF9fRlVO Q1RJT05fXywNCj4gPiArICAgICAgVmlydHVhbE1lbW9yeVRhYmxlWzBdLlBoeXNpY2FsQmFzZSwN Cj4gPiArICAgICAgVmlydHVhbE1lbW9yeVRhYmxlWzBdLlZpcnR1YWxCYXNlLA0KPiA+ICsgICAg ICBWaXJ0dWFsTWVtb3J5VGFibGVbMF0uTGVuZ3RoKSk7DQo+ID4gKw0KPiA+ICsgIC8vIE1lbW9y eSBtYXBwZWQgcGVyaXBoZXJhbHMgKFVBUlQsIFJUQywgR0lDLCB2aXJ0aW8tbW1pbywgZXRjKQ0K PiA+ICsgVmlydHVhbE1lbW9yeVRhYmxlWzFdLlBoeXNpY2FsQmFzZSA9IE1BQ0hfVklSVF9QRVJJ UEhfQkFTRTsNCj4gPiArIFZpcnR1YWxNZW1vcnlUYWJsZVsxXS5WaXJ0dWFsQmFzZSAgPSBNQUNI X1ZJUlRfUEVSSVBIX0JBU0U7DQo+ID4gKyAgVmlydHVhbE1lbW9yeVRhYmxlWzFdLkxlbmd0aCAg ICAgICA9IE1BQ0hfVklSVF9QRVJJUEhfU0laRTsNCj4gPiArICBWaXJ0dWFsTWVtb3J5VGFibGVb MV0uQXR0cmlidXRlcyAgID0NCj4gQVJNX01FTU9SWV9SRUdJT05fQVRUUklCVVRFX0RFVklDRTsN Cj4gPiArDQo+ID4gKyAgLy8gTWFwIHRoZSBGViByZWdpb24gYXMgbm9ybWFsIGV4ZWN1dGFibGUg bWVtb3J5DQo+ID4gKyBWaXJ0dWFsTWVtb3J5VGFibGVbMl0uUGh5c2ljYWxCYXNlID0gUGNkR2V0 NjQgKFBjZEZ2QmFzZUFkZHJlc3MpOw0KPiA+ICsgVmlydHVhbE1lbW9yeVRhYmxlWzJdLlZpcnR1 YWxCYXNlICA9DQo+IFZpcnR1YWxNZW1vcnlUYWJsZVsyXS5QaHlzaWNhbEJhc2U7DQo+ID4gKyAg VmlydHVhbE1lbW9yeVRhYmxlWzJdLkxlbmd0aCAgICAgICA9IEZpeGVkUGNkR2V0MzIgKFBjZEZ2 U2l6ZSk7DQo+ID4gKyAgVmlydHVhbE1lbW9yeVRhYmxlWzJdLkF0dHJpYnV0ZXMgICA9DQo+IEFS TV9NRU1PUllfUkVHSU9OX0FUVFJJQlVURV9XUklURV9CQUNLOw0KPiA+ICsNCj4gPiArICAvLyBF bmQgb2YgVGFibGUNCj4gPiArICBaZXJvTWVtICgmVmlydHVhbE1lbW9yeVRhYmxlWzNdLCBzaXpl b2YNCj4gPiArIChBUk1fTUVNT1JZX1JFR0lPTl9ERVNDUklQVE9SKSk7DQo+ID4gKw0KPiA+ICsg ICpWaXJ0dWFsTWVtb3J5TWFwID0gVmlydHVhbE1lbW9yeVRhYmxlOyB9DQo+ID4gZGlmZiAtLWdp dA0KPiA+DQo+IGEvQXJtVmlydFBrZy9MaWJyYXJ5L0NsaFZpcnRNZW1JbmZvTGliL0NsaFZpcnRN ZW1JbmZvUGVpTGliQ29uc3RydWN0b3INCj4gPiAuYw0KPiA+DQo+IGIvQXJtVmlydFBrZy9MaWJy YXJ5L0NsaFZpcnRNZW1JbmZvTGliL0NsaFZpcnRNZW1JbmZvUGVpTGliQ29uc3RydWN0b3INCj4g PiAuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi41 Zjg5YjcwZGY5OTANCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrDQo+IGIvQXJtVmlydFBrZy9M aWJyYXJ5L0NsaFZpcnRNZW1JbmZvTGliL0NsaFZpcnRNZW1JbmZvUGVpTGliQ29uc3RydQ0KPiA+ ICsrKyBjdG9yLmMNCj4gPiBAQCAtMCwwICsxLDEwMCBAQA0KPiA+ICsvKiogQGZpbGUNCj4gPiAr DQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDE0LTIwMTcsIExpbmFybyBMaW1pdGVkLiBBbGwgcmln aHRzIHJlc2VydmVkLg0KPiA+ICsNCj4gPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE LTItQ2xhdXNlLVBhdGVudA0KPiA+ICsNCj4gPiArKiovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8 QmFzZS5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiA+ICsjaW5jbHVk ZSA8TGlicmFyeS9QY2RMaWIuaD4NCj4gPiArI2luY2x1ZGUgPGxpYmZkdC5oPg0KPiA+ICsNCj4g PiArUkVUVVJOX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArQ2xoVmlydE1lbUluZm9QZWlMaWJD b25zdHJ1Y3RvciAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIFZPSUQg ICAgICAgICAgKkRldmljZVRyZWVCYXNlOw0KPiA+ICsgIElOVDMyICAgICAgICAgTm9kZSwgUHJl djsNCj4gPiArICBVSU5UNjQgICAgICAgIE5ld0Jhc2UsIEN1ckJhc2U7DQo+ID4gKyAgVUlOVDY0 ICAgICAgICBOZXdTaXplLCBDdXJTaXplOw0KPiA+ICsgIENPTlNUIENIQVI4ICAgKlR5cGU7DQo+ ID4gKyAgSU5UMzIgICAgICAgICBMZW47DQo+ID4gKyAgQ09OU1QgVUlOVDY0ICAqUmVnUHJvcDsN Cj4gPiArICBSRVRVUk5fU1RBVFVTIFBjZFN0YXR1czsNCj4gPiArDQo+ID4gKyAgTmV3QmFzZSA9 IDA7DQo+ID4gKyAgTmV3U2l6ZSA9IDA7DQo+ID4gKw0KPiA+ICsgIERldmljZVRyZWVCYXNlID0g KFZPSUQgKikoVUlOVE4pUGNkR2V0NjQNCj4gPiArIChQY2REZXZpY2VUcmVlSW5pdGlhbEJhc2VB ZGRyZXNzKTsNCj4gPiArICBBU1NFUlQgKERldmljZVRyZWVCYXNlICE9IE5VTEwpOw0KPiA+ICsN Cj4gPiArICAvLw0KPiA+ICsgIC8vIE1ha2Ugc3VyZSB3ZSBoYXZlIGEgdmFsaWQgZGV2aWNlIHRy ZWUgYmxvYiAgLy8gIEFTU0VSVA0KPiA+ICsgKGZkdF9jaGVja19oZWFkZXIgKERldmljZVRyZWVC YXNlKSA9PSAwKTsNCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBMb29rIGZvciB0aGUgbG93 ZXN0IG1lbW9yeSBub2RlDQo+ID4gKyAgLy8NCj4gPiArICBmb3IgKFByZXYgPSAwOzsgUHJldiA9 IE5vZGUpIHsNCj4gPiArICAgIE5vZGUgPSBmZHRfbmV4dF9ub2RlIChEZXZpY2VUcmVlQmFzZSwg UHJldiwgTlVMTCk7DQo+ID4gKyAgICBpZiAoTm9kZSA8IDApIHsNCj4gPiArICAgICAgYnJlYWs7 DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8vIENoZWNrIGZvciBt ZW1vcnkgbm9kZQ0KPiA+ICsgICAgLy8NCj4gPiArICAgIFR5cGUgPSBmZHRfZ2V0cHJvcCAoRGV2 aWNlVHJlZUJhc2UsIE5vZGUsICJkZXZpY2VfdHlwZSIsICZMZW4pOw0KPiA+ICsgICAgaWYgKFR5 cGUgJiYgQXNjaWlTdHJuQ21wIChUeXBlLCAibWVtb3J5IiwgTGVuKSA9PSAwKSB7DQo+ID4gKyAg ICAgIC8vDQo+ID4gKyAgICAgIC8vIEdldCB0aGUgJ3JlZycgcHJvcGVydHkgb2YgdGhpcyBub2Rl LiBGb3Igbm93LCB3ZSB3aWxsIGFzc3VtZQ0KPiA+ICsgICAgICAvLyB0d28gOCBieXRlIHF1YW50 aXRpZXMgZm9yIGJhc2UgYW5kIHNpemUsIHJlc3BlY3RpdmVseS4NCj4gPiArICAgICAgLy8NCj4g PiArICAgICAgUmVnUHJvcCA9IGZkdF9nZXRwcm9wIChEZXZpY2VUcmVlQmFzZSwgTm9kZSwgInJl ZyIsICZMZW4pOw0KPiA+ICsgICAgICBpZiAoUmVnUHJvcCAhPSAwICYmIExlbiA9PSAoMiAqIHNp emVvZiAoVUlOVDY0KSkpIHsNCj4gPiArDQo+ID4gKyAgICAgICAgQ3VyQmFzZSA9IGZkdDY0X3Rv X2NwdSAoUmVhZFVuYWxpZ25lZDY0IChSZWdQcm9wKSk7DQo+ID4gKyAgICAgICAgQ3VyU2l6ZSA9 IGZkdDY0X3RvX2NwdSAoUmVhZFVuYWxpZ25lZDY0IChSZWdQcm9wICsgMSkpOw0KPiA+ICsNCj4g PiArICAgICAgICBERUJVRyAoKERFQlVHX0lORk8sICIlYTogU3lzdGVtIFJBTSBAIDB4JWx4IC0g MHglbHhcbiIsDQo+ID4gKyAgICAgICAgICBfX0ZVTkNUSU9OX18sIEN1ckJhc2UsIEN1ckJhc2Ug KyBDdXJTaXplIC0gMSkpOw0KPiA+ICsNCj4gPiArICAgICAgICBpZiAoTmV3QmFzZSA+IEN1ckJh c2UgfHwgTmV3QmFzZSA9PSAwKSB7DQo+ID4gKyAgICAgICAgICBOZXdCYXNlID0gQ3VyQmFzZTsN Cj4gPiArICAgICAgICAgIE5ld1NpemUgPSBDdXJTaXplOw0KPiA+ICsgICAgICAgIH0NCj4gPiAr ICAgICAgfSBlbHNlIHsNCj4gPiArICAgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IEZh aWxlZCB0byBwYXJzZSBGRFQgbWVtb3J5IG5vZGVcbiIsDQo+ID4gKyAgICAgICAgICBfX0ZVTkNU SU9OX18pKTsNCj4gPiArICAgICAgfQ0KPiA+ICsgICAgfQ0KPiA+ICsgIH0NCj4gPiArDQo+ID4g KyAgLy8NCj4gPiArICAvLyBNYWtlIHN1cmUgdGhlIHN0YXJ0IG9mIERSQU0gbWF0Y2hlcyBvdXIg ZXhwZWN0YXRpb24gIC8vICBBU1NFUlQNCj4gPiArIChGaXhlZFBjZEdldDY0IChQY2RTeXN0ZW1N ZW1vcnlCYXNlKSA9PSBOZXdCYXNlKTsgIFBjZFN0YXR1cyA9DQo+ID4gKyBQY2RTZXQ2NFMgKFBj ZFN5c3RlbU1lbW9yeVNpemUsIE5ld1NpemUpOyAgQVNTRVJUX1JFVFVSTl9FUlJPUg0KPiA+ICsg KFBjZFN0YXR1cyk7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gV2UgbmVlZCB0byBtYWtl IHN1cmUgdGhhdCB0aGUgbWFjaGluZSB3ZSBhcmUgcnVubmluZyBvbiBoYXMgYXQNCj4gPiArIGxl YXN0ICAvLyAxMjggTUIgb2YgbWVtb3J5IGNvbmZpZ3VyZWQsIGFuZCBpcyBjdXJyZW50bHkgZXhl Y3V0aW5nDQo+ID4gKyB0aGlzIGJpbmFyeSBmcm9tICAvLyBOT1IgZmxhc2guIFRoaXMgcHJldmVu dHMgYSBkZXZpY2UgdHJlZSBpbWFnZSBpbg0KPiA+ICsgRFJBTSBmcm9tIGdldHRpbmcgIC8vIGNs b2JiZXJlZCB3aGVuIG91ciBjYWxsZXIgaW5zdGFsbHMgcGVybWFuZW50DQo+ID4gKyBQRUkgUkFN LCBiZWZvcmUgd2UgaGF2ZSBhICAvLyBjaGFuY2Ugb2YgbWFya2luZyBpdHMgbG9jYXRpb24gYXMN Cj4gPiArIHJlc2VydmVkIG9yIGNvcHkgaXQgdG8gYSBmcmVzaGx5ICAvLyBhbGxvY2F0ZWQgYmxv Y2sgaW4gdGhlIHBlcm1hbmVudCBQRUkNCj4gUkFNIGluIHRoZSBwbGF0Zm9ybSBQRUlNLg0KPiA+ ICsgIC8vDQo+ID4gKyAgQVNTRVJUIChOZXdTaXplID49IFNJWkVfMTI4TUIpOw0KPiA+ICsgIEFT U0VSVCAoDQo+ID4gKyAgICAoKChVSU5UNjQpUGNkR2V0NjQgKFBjZEZkQmFzZUFkZHJlc3MpICsN Cj4gPiArICAgICAgKFVJTlQ2NClQY2RHZXQzMiAoUGNkRmRTaXplKSkgPD0gTmV3QmFzZSkgfHwN Cj4gPiArICAgICgoVUlOVDY0KVBjZEdldDY0IChQY2RGZEJhc2VBZGRyZXNzKSA+PSAoTmV3QmFz ZSArIE5ld1NpemUpKSk7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBSRVRVUk5fU1VDQ0VTUzsNCj4g PiArfQ0KPiA+DQoNCklNUE9SVEFOVCBOT1RJQ0U6IFRoZSBjb250ZW50cyBvZiB0aGlzIGVtYWls IGFuZCBhbnkgYXR0YWNobWVudHMgYXJlIGNvbmZpZGVudGlhbCBhbmQgbWF5IGFsc28gYmUgcHJp dmlsZWdlZC4gSWYgeW91IGFyZSBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCwgcGxlYXNlIG5v dGlmeSB0aGUgc2VuZGVyIGltbWVkaWF0ZWx5IGFuZCBkbyBub3QgZGlzY2xvc2UgdGhlIGNvbnRl bnRzIHRvIGFueSBvdGhlciBwZXJzb24sIHVzZSBpdCBmb3IgYW55IHB1cnBvc2UsIG9yIHN0b3Jl IG9yIGNvcHkgdGhlIGluZm9ybWF0aW9uIGluIGFueSBtZWRpdW0uIFRoYW5rIHlvdS4NCg==