From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR04-DB3-obe.outbound.protection.outlook.com (EUR04-DB3-obe.outbound.protection.outlook.com [40.107.6.60]) by mx.groups.io with SMTP id smtpd.web09.29547.1618219152584969784 for ; Mon, 12 Apr 2021 02:19:13 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=QYvGPDul; spf=pass (domain: arm.com, ip: 40.107.6.60, mailfrom: sami.mujawar@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=gKM5b01d66+f55i79yR53rAQtn8qPLLKJQPtZOBO664=; b=QYvGPDulttAp8uDqTeqKPF9cG6wd2XaqQJes29L+t+2qayXjYmFA/dBFIcCtERCxRdAtnJqXTry/Mks7RL4zUG5tzkz2KZI4MG41uBe/IKvE1JmK6Ftjc/mD7V2WcpW1KbS12iIuAR9QAw70ZRSO4DjL6gIlGJd7bNRcaJdtmTU= Received: from AM6PR10CA0013.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:209:89::26) by PAXPR08MB6971.eurprd08.prod.outlook.com (2603:10a6:102:1da::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.17; Mon, 12 Apr 2021 09:19:08 +0000 Received: from AM5EUR03FT041.eop-EUR03.prod.protection.outlook.com (2603:10a6:209:89:cafe::6b) by AM6PR10CA0013.outlook.office365.com (2603:10a6:209:89::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.17 via Frontend Transport; Mon, 12 Apr 2021 09:19:08 +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 AM5EUR03FT041.mail.protection.outlook.com (10.152.17.186) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.17 via Frontend Transport; Mon, 12 Apr 2021 09:19:07 +0000 Received: ("Tessian outbound 82c2d58b350b:v90"); Mon, 12 Apr 2021 09:19:07 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 738f76a12f0c0d7f X-CR-MTA-TID: 64aa7808 Received: from ef97de742ec2.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 066DC583-2EFF-462D-AF8A-C1F768E8F9D2.1; Mon, 12 Apr 2021 09:18:41 +0000 Received: from EUR05-DB8-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id ef97de742ec2.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 12 Apr 2021 09:18:41 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=d5k/PedY4im6M+CbdLUAl/U5Am5di/rtAU7GXyqBa43ulTuGpIddZNMol4li3MZ4mD7FJXQMZHY5FFMp3TazJruP9kft7J0600877cCIFl5mC5z2smg1qJ8K3OthfZ8pWYhC+1Y6iIDVyXTpuL3nxMROaV0gfW2ulOfaZ3fP0Mrd8uaisDfwZY+KaK0p+/obA+B/keyaUjW7uj13hP1LeZTpIxJPIjFWYlz3j2/2FEuaO9UkB88jNk/jRFouoQxiY1Q50WNZfNErEepOPB5WUC5sHwJE3tFgsdR3HnWZM4KIJ0kVB3DJu58C9yOVNUHTwh8nv/Y6aRt0o3jVbuxBSw== 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=gKM5b01d66+f55i79yR53rAQtn8qPLLKJQPtZOBO664=; b=ZYNFHugkNNU+QQ/0Qz9pbmmj/jDocc4bxqnUVNoMaZkD31VrwBNB4DpQxbCSUZ2Uh3APruTf194rucXe9+nZRACgZfMGiG+fFygP6pJnbx6Qxumfwog4ULibTZohbMCI6OPwMGThbt+vpgB7bF0R0oGfHTKlr0Q3v6spx4GSF4D8ZGr+ROST+9wOjHWWKs4s4U4yyfD3u31g+YlLjRG1SVGMg7G3bfgn3nq8Cq07h0f3LdfT9zf6kkx6/w2UkKtF+G+BirBMq5xDUTB0Ls+M47JjmJsliniCnN6wiaofAqVC+zBacb1nuwDuWz57C2t2Pl/0tGQK0h67ZYBjaXChWA== 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=gKM5b01d66+f55i79yR53rAQtn8qPLLKJQPtZOBO664=; b=QYvGPDulttAp8uDqTeqKPF9cG6wd2XaqQJes29L+t+2qayXjYmFA/dBFIcCtERCxRdAtnJqXTry/Mks7RL4zUG5tzkz2KZI4MG41uBe/IKvE1JmK6Ftjc/mD7V2WcpW1KbS12iIuAR9QAw70ZRSO4DjL6gIlGJd7bNRcaJdtmTU= Received: from AM6PR08MB3784.eurprd08.prod.outlook.com (2603:10a6:20b:85::25) by AM6PR08MB3366.eurprd08.prod.outlook.com (2603:10a6:20b:47::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.21; Mon, 12 Apr 2021 09:18:39 +0000 Received: from AM6PR08MB3784.eurprd08.prod.outlook.com ([fe80::253a:c74d:3408:25ce]) by AM6PR08MB3784.eurprd08.prod.outlook.com ([fe80::253a:c74d:3408:25ce%6]) with mapi id 15.20.4020.022; Mon, 12 Apr 2021 09:18:38 +0000 From: "Sami Mujawar" To: Chandni Cherukuri , "devel@edk2.groups.io" CC: Ard Biesheuvel , Leif Lindholm , nd , Samer El-Haj-Mahmoud , Pierre Gondois Subject: Re: [edk2-platforms][PATCH V2 4/7] Platform/ARM/Morello: Add Configuration Manager for Morello Thread-Topic: [edk2-platforms][PATCH V2 4/7] Platform/ARM/Morello: Add Configuration Manager for Morello Thread-Index: AQHXJwReUqS22exxZkun/ATJTlPUEaqwvFwA Date: Mon, 12 Apr 2021 09:18:38 +0000 Message-ID: <6610ABB5-9546-414E-86CB-F70C3C68CA07@arm.com> References: <20210401143537.4799-1-chandni.cherukuri@arm.com> <20210401143537.4799-5-chandni.cherukuri@arm.com> In-Reply-To: <20210401143537.4799-5-chandni.cherukuri@arm.com> Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Microsoft-MacOutlook/16.47.21031401 Authentication-Results-Original: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; x-originating-ip: [81.131.179.80] x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: 1406608b-020f-4a12-3953-08d8fd94067d x-ms-traffictypediagnostic: AM6PR08MB3366:|PAXPR08MB6971: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:6790;OLM:6790; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: 2JvUJ9LZzQzEHgu/QGgOAMIthGFIKB1K6OCZxN4bjTgzoKh8IA72mgLe5ZwBS3szObuBOporKCDBLjkN9ObQOChLtzyYoLUMppPg0hq0pDSex+7yrcVHtyteXRVQzEbgaC29n8Zk8OWEMXx26eqeH4xFEpL5YJ7emKEJasxsnXzKjZg3djyMw01oW79CYtozEtHY/GZMYHzRxsQj9kBfrF1dAJBUIjaGHTG7/eFTkKrmMwMlAnGsaQerzycI/ELG1yn9oilXYNyXiMWollnUrqr3uIQEC3vEdXIZOxuAzXD1c71Fu3SIvgr0qENqrn9tZsjC1+3WM7ULhHZ06e5pPLx7QlCtEYzIKZc5VpoohCgvlq2qVrqxsryOVxvbNZa4/rAkvvwNY9WWDzn+LMlbJRweu4jLMhhOIA1v10EbWNcj/1+3eYV4AdD390XCLD0Equ21G7XwRpE8To/GkFSJWqabGmNzCRIZAheCNYL10unEK60vFv6quRgAjidPatAGnSI2SUUyUwCt05rinGjUAPdLihto8bowylmPhG7a3c2pdtMnTo3xZuw2pH0UsgPdSfskAvp3lcQphMvsvbkxhnNmjMtQXN/CZcTfYF8gnXuHloVWyWnqDO4O+u/xVKoUuL7Sfqsrr31ip1Nunw5d94RjGHUaYNM69kuyoBWBECC9p2nNgM7UHoUGh9/dQG5W8whx9l/dWKSPZRlRZScKhzXBgn2oazelXArUQuRZ1ogxwlj7I/JwzTMhdqiohj75 X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR08MB3784.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(39860400002)(366004)(346002)(136003)(376002)(396003)(86362001)(110136005)(26005)(6506007)(54906003)(66476007)(4326008)(66946007)(186003)(36756003)(91956017)(2906002)(30864003)(83380400001)(5660300002)(71200400001)(19627235002)(478600001)(6486002)(33656002)(6512007)(66446008)(64756008)(66556008)(38100700002)(8936002)(76116006)(966005)(8676002)(316002)(2616005)(45980500001)(569008);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?WlNnYisvdmQ0K1pHZXdMYmZKeURrbEZnV0hHMWNyMGkrUE5ZOEhPYTBQUVNC?= =?utf-8?B?VVNXSUUrQ1ZlVGpTWndsZ2owZlIraVEzQUZhOW10YkNuSVo3eU5jZWxjRWJV?= =?utf-8?B?QW9NQ1NEK0tCSkphNFZoSENBZmwydDU2UlVSaTB2TG9HOXM5SWVuYnBzV3ZT?= =?utf-8?B?VDdtdzFudkllbDNDMTJJWjM3UE9jcjFBcHF6c1Y5Q3hVa1V5LzhCZGN0SGwy?= =?utf-8?B?ZUlZWWVHdThuSGFKTDFrUUg5MEEvaldSMU1VcWJRbzRmNnluWFVmcXBHZXhs?= =?utf-8?B?Sk9XZU9BNSs0VTZoOHJ1QmQvZWszVzg0K3luYi9PaGd1Ulh6WTVtMDBpenNK?= =?utf-8?B?NmE5K0tEL3NoMlNnbkxKZTJLZFRuanliR0FxTm9aOEFuenFBNERwVzBMbDhu?= =?utf-8?B?eHFzQmFZeVJNQXl6MnVraTZHczVLL0hpSFpEWW9LTG9takFJc0ljZDBYM2RB?= =?utf-8?B?eG8zaDNVakwvd2tyOEIvdUNQUXJZTlZ0c0x2VDk4R25UVE4vVTRHN1RJU0Rj?= =?utf-8?B?RHVQaVJsWlZPblRRZFdUU3pkWDRPQk9lTVRocnBLenQ4dElBa2ExYjE1dW03?= =?utf-8?B?aHRFQ1oxYW0ydHlPc3Y0ajJBbHJoS1hPN01WdTlqOHJkK2hFUk5MNGF2dnQ2?= =?utf-8?B?Tm0yeStLbEIwbGxwcW5INHhHb0FTMFcxSmU2WU12U2dWMjBSZkJ3b0R3blk0?= =?utf-8?B?cHJJTWZWc3pZNTBMRmpUZkVPdjN1Zi9Gc1Z0QzlRMFFuc2ZHZmRMNVhGK0Jw?= =?utf-8?B?ZHJSY21MN2NhWjR6dlo1aGtxcmhLQXZ4T1F2ekRMVVROUFl6VXdoTkJnMjVl?= =?utf-8?B?MU54dWdpTmErOTh4a3l3T1orS3Z4Ri9UcmpoS2N6a1pFM3FvR0pEdDRURHgy?= =?utf-8?B?d1UrbDVMWGRLcURhVXFHZ0cycisvb0MwOWJUSlB0aUk4cWVOSjZBZmUwZFBH?= =?utf-8?B?eXE0SjkwZXFtL1JBblFtVmJDRUloRkEyOHhsNU5sa1R4cUNrbmdicUZHbXRv?= =?utf-8?B?Z29qL1NMc3J6aU9oTmZpQ1RDTEJlcHFTaisvWWNqUVIra2U5Q1JyWk96bmpI?= =?utf-8?B?bHhYY09JK0FVNklhSUl4ZWljeDNGUlJDdUszeG80Rm1abnZsZkk4cWdTNzJV?= =?utf-8?B?SlB4K21JcVB4VEt2anJ3RytvSUFaZ1ROM0JFRTZTbVg3SDlwdmI3WGo4UE03?= =?utf-8?B?U1JEckRiZEtQTVZqREh6K3k4a0dzckJOUUdZcGVJUVV4S0FaYnhibVBRVXJz?= =?utf-8?B?THdpdW1BYnIranc0aWxISUREWWRSdm9RVzRueCt5d1lDakJGdE1hbzE1c1F3?= =?utf-8?B?RmZtTitRU0JPU3RKRkZPRmp1TFdxZjNNN2RibElxMzlkemVIY3A1SEtLRFRJ?= =?utf-8?B?MktyYVVxUHVReXpDUlhqVHlmWnZzVHBlRnFiWHBiSlM0RlAvWnRPRm1oQ3Vv?= =?utf-8?B?bXNEVTJIajBUNW1oSC9TTE5BM0NNTkRBZVpOdlFWay9IQ0RrV3hTTWt0N05l?= =?utf-8?B?WWpCblVVbGl3VXJ5VGE0Mk5SVWtxMXltTlIvcEpBaVNWcjZKM3JuN2o1Mkwz?= =?utf-8?B?VzlQU2lSc0FOMmNPWWZ1Ly9PQ2FyMHZTNjdvMGR1UW5BT0NCNlE4YTduRW4y?= =?utf-8?B?UGUzTU56cmR0NERYYWlPUGhNemFzbkFtNkZtL0VPN1hib2FabVo1NkIyWndL?= =?utf-8?B?UGZpNmRFektiTWxCM3IwcFVOV2dyOWF0ODVUVVlzZXBhczdTRy8rRHluUElT?= =?utf-8?Q?ToAS34i/lkBa/+CyrlRKDsvj72hRqETPu7mYJgz?= MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3366 Original-Authentication-Results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; Return-Path: Sami.Mujawar@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT041.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 8ff52812-c149-4a30-dc9e-08d8fd93f53f X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6+YPjBjE+NJNrpO3kMVCzX9ADWSqFJkh9HTCpd9hwrrzRBLxqQccEZFuXNSDQ/jJ+eNnBoozfr7GrFKgCGKY4/+QXjQKcCoSPwTVUQuEILqb07BafXDuZD7mXy0/RK7XZHgzcmfJ56LV2B0I0MVRC4Ee3NGW3nxp+QhemeUr780MdexfIS4Ca25AWPfjeG1M1ZZdaCuqHifh8iI6ohbdO++fgctBSQJdhhUFgt1zoElJY+BlJmng1iy6bnVH/zPpLkr9LT0XM6bPOiAHdrtS1PGHPRfi3+HJtVbF2gReQZYNfuVcDcHKmH8w894jFwyRbipDjHcDkNS5o6jESM09sVVlg9pElqRl3afZKv3kanOZWUVXkBbheR+uIVOniIww6t9SaVOyJubtJPKdSwjJDibxdbrMpuot6Ow55nZKSrJ361MwB3w4izzjDXqqK8f68tANhsr0uwu+lTDu1r5ybEwNQw+0bbPh6ts9kt34gYkkj+KLq5Dyarv44C5HBQx+kPUTuFq0qqo9u9Dn5dLri41I4Le0KbvrPa/0xiDJJxCWrn3IXYoQ2CJlqW7i6NQVnA4gELJhCQI4TOxQ9VTCMAYqtsQFmbOTkQBDPHif9FAO8qSHDJhtG23d1U8yr1hSwQqeWSEx/KTJ4w/ceaUaSYdlgBP5oPbvinSIAL3OfiNIY7fxDevKM+EfVIy372zOWxXqgAem9oUTl8ma9H4K1jphZvkcBeJClDd192QrodY= 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)(396003)(376002)(346002)(136003)(39860400002)(46966006)(36840700001)(8936002)(110136005)(356005)(54906003)(8676002)(81166007)(82740400003)(2906002)(966005)(26005)(19627235002)(316002)(6512007)(36860700001)(86362001)(82310400003)(4326008)(6486002)(70206006)(6506007)(186003)(36756003)(70586007)(47076005)(33656002)(2616005)(336012)(478600001)(30864003)(83380400001)(5660300002)(579004)(559001);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Apr 2021 09:19:07.8082 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1406608b-020f-4a12-3953-08d8fd94067d 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: AM5EUR03FT041.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB6971 Content-Language: en-GB Content-Type: text/plain; charset="utf-8" Content-ID: <3EF5AEF0B0C85347A6BDC82EE59B3B83@eurprd08.prod.outlook.com> Content-Transfer-Encoding: base64 SGkgQ2hhbmRuaSwNCg0KUGxlYXNlIGZpbmQgbXkgcmVzcG9uc2UgaW5saW5lIG1hcmtlZCBbU0FN SV0uDQoNClJlZ2FyZHMsDQoNClNhbWkgTXVqYXdhcg0KDQrvu79PbiAwMS8wNC8yMDIxLCAxNToz NiwgIkNoYW5kbmkgQ2hlcnVrdXJpIiA8Y2hhbmRuaS5jaGVydWt1cmlAYXJtLmNvbT4gd3JvdGU6 DQoNCiAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIGNvbmZpZ3VyYXRpb24gbWFuYWdlciBm b3IgTW9yZWxsbw0KICAgIHBsYXRmb3JtLiBJdCBlbmFibGVzIHN1cHBvcnQgZm9yIGdlbmVyYXRp bmcgdGhlIGZvbGxvd2luZw0KICAgIEFDUEkgdGFibGVzIGZvciBNb3JlbGxvIEZWUCBQbGF0Zm9y bToNCiAgICAgICAgICAgICAgIDEuIEZBRFQNCiAgICAgICAgICAgICAgIDIuIERTRFQNCiAgICAg ICAgICAgICAgIDMuIEdURFQNCiAgICAgICAgICAgICAgIDQuIE1BRFQNCiAgICAgICAgICAgICAg IDUuIFNQQ1INCiAgICAgICAgICAgICAgIDYuIERCRzINCiAgICAgICAgICAgICAgIDcuIFBQVFQN CiAgICAgICAgICAgICAgIDguIElPUlQNCiAgICAgICAgICAgICAgIDkuIE1DRkcNCiAgICAgICAg ICAgICAgMTAuIFNTRFQNCg0KICAgIFN0cnVjdHVyZXMgaGF2ZSBiZWVuIGNyZWF0ZWQgdG8gYWRk IENvbW1vbiBQbGF0Zm9ybSBpbmZvcm1hdGlvbg0KICAgIGFuZCBGVlAvVGVzdGNoaXAgcGxhdGZv cm0gc3BlY2lmaWMgaW5mb3JtYXRpb24gc28gdGhhdCB0aGUNCiAgICBzYW1lIER4ZSBpcyB1c2Fi bGUgZm9yIGFsbCB2YXJpYW50cyBvZiB0aGUgcGxhdGZvcm0uDQoNCiAgICBDby1hdXRob3JlZC1i eTogSmVzc2ljYSBDbGFya2UgPGpydGMyN0BqcnRjMjcuY29tPg0KICAgIFNpZ25lZC1vZmYtYnk6 IENoYW5kbmkgQ2hlcnVrdXJpIDxjaGFuZG5pLmNoZXJ1a3VyaUBhcm0uY29tPg0KICAgIC0tLQ0K ICAgICBQbGF0Zm9ybS9BUk0vTW9yZWxsby9Db25maWd1cmF0aW9uTWFuYWdlci9Db25maWd1cmF0 aW9uTWFuYWdlckZ2cC5kc2MuaW5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE2ICsNCiAg ICAgUGxhdGZvcm0vQVJNL01vcmVsbG8vQ29uZmlndXJhdGlvbk1hbmFnZXIvQ29uZmlndXJhdGlv bk1hbmFnZXJEeGUvQ29uZmlndXJhdGlvbk1hbmFnZXJEeGVGdnAuaW5mIHwgICA5NCArKw0KICAg ICBQbGF0Zm9ybS9BUk0vTW9yZWxsby9Db25maWd1cmF0aW9uTWFuYWdlci9Db25maWd1cmF0aW9u TWFuYWdlckR4ZS9Db25maWd1cmF0aW9uTWFuYWdlci5oICAgICAgICAgfCAgMjgxICsrKysrDQog ICAgIFBsYXRmb3JtL0FSTS9Nb3JlbGxvL0NvbmZpZ3VyYXRpb25NYW5hZ2VyL0NvbmZpZ3VyYXRp b25NYW5hZ2VyRHhlL0NvbmZpZ3VyYXRpb25NYW5hZ2VyRnZwLmggICAgICB8ICAxMjIgKysNCiAg ICAgUGxhdGZvcm0vQVJNL01vcmVsbG8vQ29uZmlndXJhdGlvbk1hbmFnZXIvQ29uZmlndXJhdGlv bk1hbmFnZXJEeGUvUGxhdGZvcm0uaCAgICAgICAgICAgICAgICAgICAgIHwgICA5MSArKw0KICAg ICBQbGF0Zm9ybS9BUk0vTW9yZWxsby9Db25maWd1cmF0aW9uTWFuYWdlci9Db25maWd1cmF0aW9u TWFuYWdlckR4ZS9Db25maWd1cmF0aW9uTWFuYWdlci5jICAgICAgICAgfCAxMTcyICsrKysrKysr KysrKysrKysrKysrDQogICAgIFBsYXRmb3JtL0FSTS9Nb3JlbGxvL0NvbmZpZ3VyYXRpb25NYW5h Z2VyL0NvbmZpZ3VyYXRpb25NYW5hZ2VyRHhlL0NvbmZpZ3VyYXRpb25NYW5hZ2VyRnZwLmMgICAg ICB8ICA2MDIgKysrKysrKysrKw0KICAgICBQbGF0Zm9ybS9BUk0vTW9yZWxsby9Db25maWd1cmF0 aW9uTWFuYWdlci9Db25maWd1cmF0aW9uTWFuYWdlckR4ZS9Bc2xUYWJsZXMvRHNkdEZ2cC5hc2wg ICAgICAgICAgfCAgIDk4ICsrDQogICAgIFBsYXRmb3JtL0FSTS9Nb3JlbGxvL0NvbmZpZ3VyYXRp b25NYW5hZ2VyL0NvbmZpZ3VyYXRpb25NYW5hZ2VyRHhlL0FzbFRhYmxlcy9Tc2R0UGNpRnZwLmFz bCAgICAgICB8ICAxMzAgKysrDQogICAgIDkgZmlsZXMgY2hhbmdlZCwgMjYwNiBpbnNlcnRpb25z KCspDQoNCiAgICBkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vQVJNL01vcmVsbG8vQ29uZmlndXJhdGlv bk1hbmFnZXIvQ29uZmlndXJhdGlvbk1hbmFnZXJGdnAuZHNjLmluYyBiL1BsYXRmb3JtL0FSTS9N b3JlbGxvL0NvbmZpZ3VyYXRpb25NYW5hZ2VyL0NvbmZpZ3VyYXRpb25NYW5hZ2VyRnZwLmRzYy5p bmMNCiAgICBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgIGluZGV4IDAwMDAwMDAwMDAwMC4uNzE5 MTY3ODNjMjRjDQogICAgLS0tIC9kZXYvbnVsbA0KICAgICsrKyBiL1BsYXRmb3JtL0FSTS9Nb3Jl bGxvL0NvbmZpZ3VyYXRpb25NYW5hZ2VyL0NvbmZpZ3VyYXRpb25NYW5hZ2VyRnZwLmRzYy5pbmMN CiAgICBAQCAtMCwwICsxLDE2IEBADQogICAgKyMjIEBmaWxlDQogICAgKyMgIGRzYyBpbmNsdWRl IGZpbGUgZm9yIENvbmZpZ3VyYXRpb24gTWFuYWdlcg0KICAgICsjDQogICAgKyMgIENvcHlyaWdo dCAoYykgMjAyMSwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KICAgICsj DQogICAgKyMgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQog ICAgKyMNCiAgICArIyMNCiAgICArDQogICAgK1tEZWZpbmVzXQ0KICAgICsNCiAgICArW0J1aWxk T3B0aW9uc10NCiAgICArDQogICAgK1tDb21wb25lbnRzLmNvbW1vbl0NCiAgICArICAjIENvbmZp Z3VyYXRpb24gTWFuYWdlcg0KICAgICsgIFBsYXRmb3JtL0FSTS9Nb3JlbGxvL0NvbmZpZ3VyYXRp b25NYW5hZ2VyL0NvbmZpZ3VyYXRpb25NYW5hZ2VyRHhlL0NvbmZpZ3VyYXRpb25NYW5hZ2VyRHhl RnZwLmluZg0KICAgIGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9BUk0vTW9yZWxsby9Db25maWd1cmF0 aW9uTWFuYWdlci9Db25maWd1cmF0aW9uTWFuYWdlckR4ZS9Db25maWd1cmF0aW9uTWFuYWdlckR4 ZUZ2cC5pbmYgYi9QbGF0Zm9ybS9BUk0vTW9yZWxsby9Db25maWd1cmF0aW9uTWFuYWdlci9Db25m aWd1cmF0aW9uTWFuYWdlckR4ZS9Db25maWd1cmF0aW9uTWFuYWdlckR4ZUZ2cC5pbmYNCiAgICBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgIGluZGV4IDAwMDAwMDAwMDAwMC4uNmZjMzA3ZGYwMTRj DQogICAgLS0tIC9kZXYvbnVsbA0KICAgICsrKyBiL1BsYXRmb3JtL0FSTS9Nb3JlbGxvL0NvbmZp Z3VyYXRpb25NYW5hZ2VyL0NvbmZpZ3VyYXRpb25NYW5hZ2VyRHhlL0NvbmZpZ3VyYXRpb25NYW5h Z2VyRHhlRnZwLmluZg0KICAgIEBAIC0wLDAgKzEsOTQgQEANCiAgICArIyMgQGZpbGUNCiAgICAr IyAgQ29uZmlndXJhdGlvbiBNYW5hZ2VyIER4ZQ0KICAgICsjDQogICAgKyMgIENvcHlyaWdodCAo YykgMjAyMSwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KICAgICsjDQog ICAgKyMgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQogICAg KyMjDQogICAgKw0KICAgICtbRGVmaW5lc10NCiAgICArICBJTkZfVkVSU0lPTiAgICAgICAgICAg ICAgICAgICAgPSAweDAwMDEwMDFCDQogICAgKyAgQkFTRV9OQU1FICAgICAgICAgICAgICAgICAg ICAgID0gQ29uZmlndXJhdGlvbk1hbmFnZXJEeGUNCiAgICArICBGSUxFX0dVSUQgICAgICAgICAg ICAgICAgICAgICAgPSA2RjlDM0I0Ny02RjdELTQ0QjYtODdFNS00QjdGNDRBNjAxNDcNCiAgICAr ICBNT0RVTEVfVFlQRSAgICAgICAgICAgICAgICAgICAgPSBEWEVfRFJJVkVSDQogICAgKyAgVkVS U0lPTl9TVFJJTkcgICAgICAgICAgICAgICAgID0gMS4wDQogICAgKyAgRU5UUllfUE9JTlQgICAg ICAgICAgICAgICAgICAgID0gQ29uZmlndXJhdGlvbk1hbmFnZXJEeGVJbml0aWFsaXplDQogICAg Kw0KICAgICsjDQogICAgKyMgVGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBpcyBmb3IgcmVmZXJl bmNlIG9ubHkgYW5kIG5vdCByZXF1aXJlZCBieSB0aGUgYnVpbGQgdG9vbHMuDQogICAgKyMNCiAg ICArIyAgVkFMSURfQVJDSElURUNUVVJFUyAgICAgICAgICAgPSBBQVJDSDY0DQogICAgKyMNCiAg ICArDQogICAgK1tTb3VyY2VzXQ0KICAgICsgIEFzbFRhYmxlcy9Ec2R0RnZwLmFzbA0KICAgICsg IEFzbFRhYmxlcy9Tc2R0UGNpRnZwLmFzbA0KICAgICsgIENvbmZpZ3VyYXRpb25NYW5hZ2VyLmMN CiAgICArICBDb25maWd1cmF0aW9uTWFuYWdlci5oDQogICAgKyAgQ29uZmlndXJhdGlvbk1hbmFn ZXJGdnAuYw0KICAgICsgIENvbmZpZ3VyYXRpb25NYW5hZ2VyRnZwLmgNCiAgICArICBQbGF0Zm9y bS5oDQogICAgKw0KICAgICtbUGFja2FnZXNdDQogICAgKyAgQXJtUGtnL0FybVBrZy5kZWMNCiAg ICArICBBcm1QbGF0Zm9ybVBrZy9Bcm1QbGF0Zm9ybVBrZy5kZWMNCiAgICArICBEeW5hbWljVGFi bGVzUGtnL0R5bmFtaWNUYWJsZXNQa2cuZGVjDQogICAgKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVs ZVBrZy5kZWMNCiAgICArICBNZGVQa2cvTWRlUGtnLmRlYw0KICAgICsgIFBsYXRmb3JtL0FSTS9N b3JlbGxvL01vcmVsbG9QbGF0Zm9ybS5kZWMNCiAgICArDQogICAgK1tMaWJyYXJ5Q2xhc3Nlc10N CiAgICArICBVZWZpRHJpdmVyRW50cnlQb2ludA0KICAgICsNCiAgICArW1Byb3RvY29sc10NCiAg ICArICBnRWRraWlDb25maWd1cmF0aW9uTWFuYWdlclByb3RvY29sR3VpZA0KICAgICsNCiAgICAr W0ZpeGVkUGNkXQ0KICAgICsgIGdBcm1Nb3JlbGxvVG9rZW5TcGFjZUd1aWQuUGNkUGNpQnVzQ291 bnQNCiAgICArICBnQXJtTW9yZWxsb1Rva2VuU3BhY2VHdWlkLlBjZFBjaUJ1c01heA0KICAgICsg IGdBcm1Nb3JlbGxvVG9rZW5TcGFjZUd1aWQuUGNkUGNpQnVzTWluDQogICAgKyAgZ0FybU1vcmVs bG9Ub2tlblNwYWNlR3VpZC5QY2RQY2lFeHByZXNzQmFzZUFkZHJlc3MNCiAgICArICBnQXJtTW9y ZWxsb1Rva2VuU3BhY2VHdWlkLlBjZFBjaUlvQmFzZQ0KICAgICsgIGdBcm1Nb3JlbGxvVG9rZW5T cGFjZUd1aWQuUGNkUGNpSW9NYXhCYXNlDQogICAgKyAgZ0FybU1vcmVsbG9Ub2tlblNwYWNlR3Vp ZC5QY2RQY2lJb1NpemUNCiAgICArICBnQXJtTW9yZWxsb1Rva2VuU3BhY2VHdWlkLlBjZFBjaUlv VHJhbnNsYXRpb24NCiAgICArICBnQXJtTW9yZWxsb1Rva2VuU3BhY2VHdWlkLlBjZFBjaU1taW8z MkJhc2UNCiAgICArICBnQXJtTW9yZWxsb1Rva2VuU3BhY2VHdWlkLlBjZFBjaU1taW8zMk1heEJh c2UNCiAgICArICBnQXJtTW9yZWxsb1Rva2VuU3BhY2VHdWlkLlBjZFBjaU1taW8zMlNpemUNCiAg ICArICBnQXJtTW9yZWxsb1Rva2VuU3BhY2VHdWlkLlBjZFBjaU1taW8zMlRyYW5zbGF0aW9uDQog ICAgKyAgZ0FybU1vcmVsbG9Ub2tlblNwYWNlR3VpZC5QY2RQY2lNbWlvNjRCYXNlDQogICAgKyAg Z0FybU1vcmVsbG9Ub2tlblNwYWNlR3VpZC5QY2RQY2lNbWlvNjRNYXhCYXNlDQogICAgKyAgZ0Fy bU1vcmVsbG9Ub2tlblNwYWNlR3VpZC5QY2RQY2lNbWlvNjRTaXplDQogICAgKyAgZ0FybU1vcmVs bG9Ub2tlblNwYWNlR3VpZC5QY2RQY2lNbWlvNjRUcmFuc2xhdGlvbg0KICAgICsNCiAgICArICBn QXJtTW9yZWxsb1Rva2VuU3BhY2VHdWlkLlBjZFZpcnRpb0Jsa0Jhc2VBZGRyZXNzDQogICAgKyAg Z0FybU1vcmVsbG9Ub2tlblNwYWNlR3VpZC5QY2RWaXJ0aW9CbGtJbnRlcnJ1cHQNCiAgICArICBn QXJtTW9yZWxsb1Rva2VuU3BhY2VHdWlkLlBjZFZpcnRpb0Jsa1NpemUNCiAgICArDQogICAgKyAg IyMgUEwwMTEgU2VyaWFsIERlYnVnIFVBUlQNCiAgICArICBnQXJtUGxhdGZvcm1Ub2tlblNwYWNl R3VpZC5QY2RTZXJpYWxEYmdSZWdpc3RlckJhc2UNCiAgICArICBnQXJtUGxhdGZvcm1Ub2tlblNw YWNlR3VpZC5QY2RTZXJpYWxEYmdVYXJ0QmF1ZFJhdGUNCiAgICArICBnQXJtUGxhdGZvcm1Ub2tl blNwYWNlR3VpZC5QY2RTZXJpYWxEYmdVYXJ0Q2xrSW5Ieg0KICAgICsNCiAgICArICBnQXJtUGxh dGZvcm1Ub2tlblNwYWNlR3VpZC5QTDAxMVVhcnRDbGtJbkh6DQogICAgKyAgZ0FybVBsYXRmb3Jt VG9rZW5TcGFjZUd1aWQuUEwwMTFVYXJ0SW50ZXJydXB0DQogICAgKw0KICAgICsgIGdBcm1Ub2tl blNwYWNlR3VpZC5QY2RBcm1BcmNoVGltZXJIeXBJbnRyTnVtDQogICAgKyAgZ0FybVRva2VuU3Bh Y2VHdWlkLlBjZEFybUFyY2hUaW1lckludHJOdW0NCiAgICArICBnQXJtVG9rZW5TcGFjZUd1aWQu UGNkQXJtQXJjaFRpbWVyU2VjSW50ck51bQ0KICAgICsgIGdBcm1Ub2tlblNwYWNlR3VpZC5QY2RB cm1BcmNoVGltZXJWaXJ0SW50ck51bQ0KICAgICsNCiAgICArICAjIFNCU0EgR2VuZXJpYyBXYXRj aGRvZw0KICAgICsgIGdBcm1Ub2tlblNwYWNlR3VpZC5QY2RHZW5lcmljV2F0Y2hkb2dDb250cm9s QmFzZQ0KICAgICsgIGdBcm1Ub2tlblNwYWNlR3VpZC5QY2RHZW5lcmljV2F0Y2hkb2dFbDJJbnRy TnVtDQogICAgKyAgZ0FybVRva2VuU3BhY2VHdWlkLlBjZEdlbmVyaWNXYXRjaGRvZ1JlZnJlc2hC YXNlDQogICAgKw0KICAgICsgIGdBcm1Ub2tlblNwYWNlR3VpZC5QY2RHaWNEaXN0cmlidXRvckJh c2UNCiAgICArICBnQXJtVG9rZW5TcGFjZUd1aWQuUGNkR2ljSW50ZXJydXB0SW50ZXJmYWNlQmFz ZQ0KICAgICsgIGdBcm1Ub2tlblNwYWNlR3VpZC5QY2RHaWNSZWRpc3RyaWJ1dG9yc0Jhc2UNCiAg ICArDQogICAgKyAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNlcmlhbFJlZ2lz dGVyQmFzZQ0KICAgICsgIGdFZmlNZGVQa2dUb2tlblNwYWNlR3VpZC5QY2RVYXJ0RGVmYXVsdEJh dWRSYXRlDQogICAgKw0KICAgICtbRGVwZXhdDQogICAgKyAgVFJVRQ0KICAgIGRpZmYgLS1naXQg YS9QbGF0Zm9ybS9BUk0vTW9yZWxsby9Db25maWd1cmF0aW9uTWFuYWdlci9Db25maWd1cmF0aW9u TWFuYWdlckR4ZS9Db25maWd1cmF0aW9uTWFuYWdlci5oIGIvUGxhdGZvcm0vQVJNL01vcmVsbG8v Q29uZmlndXJhdGlvbk1hbmFnZXIvQ29uZmlndXJhdGlvbk1hbmFnZXJEeGUvQ29uZmlndXJhdGlv bk1hbmFnZXIuaA0KICAgIG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQogICAgaW5kZXggMDAwMDAwMDAw MDAwLi5mZWE0YTBlZmQyNGENCiAgICAtLS0gL2Rldi9udWxsDQogICAgKysrIGIvUGxhdGZvcm0v QVJNL01vcmVsbG8vQ29uZmlndXJhdGlvbk1hbmFnZXIvQ29uZmlndXJhdGlvbk1hbmFnZXJEeGUv Q29uZmlndXJhdGlvbk1hbmFnZXIuaA0KICAgIEBAIC0wLDAgKzEsMjgxIEBADQogICAgKy8qKiBA ZmlsZQ0KICAgICsNCiAgICArICBDb3B5cmlnaHQgKGMpIDIwMjEsIEFSTSBMaW1pdGVkLiBBbGwg cmlnaHRzIHJlc2VydmVkLjxCUj4NCiAgICArDQogICAgKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCiAgICArDQogICAgKyAgQHBhciBHbG9zc2FyeToNCiAg ICArICAgIC0gQ20gb3IgQ00gICAtIENvbmZpZ3VyYXRpb24gTWFuYWdlcg0KICAgICsgICAgLSBP Ymogb3IgT0JKIC0gT2JqZWN0DQogICAgKyoqLw0KICAgICsNCiAgICArI2lmbmRlZiBDT05GSUdV UkFUSU9OX01BTkFHRVJfSF8NCiAgICArI2RlZmluZSBDT05GSUdVUkFUSU9OX01BTkFHRVJfSF8N CiAgICArDQogICAgKy8qKiBUaGUgY29uZmlndXJhdGlvbiBtYW5hZ2VyIHZlcnNpb24uDQogICAg KyovDQogICAgKyNkZWZpbmUgQ09ORklHVVJBVElPTl9NQU5BR0VSX1JFVklTSU9OIENSRUFURV9S RVZJU0lPTiAoMSwgMCkNCiAgICArDQogICAgKy8qKiBUaGUgT0VNIElEDQogICAgKyovDQogICAg KyNkZWZpbmUgQ0ZHX01HUl9PRU1fSUQgICAgICAgIHsgJ0EnLCAnUicsICdNJywgJ0wnLCAnVCcs ICdEJyB9DQogICAgKyNkZWZpbmUgQ0ZHX01HUl9PRU1fUkVWSVNJT04gIDB4MjAxODExMDENCiAg ICArDQogICAgKy8qKiBBIGhlbHBlciBtYWNybyBmb3IgbWFwcGluZyBhIHJlZmVyZW5jZSB0b2tl bg0KICAgICsqLw0KICAgICsjZGVmaW5lIFJFRkVSRU5DRV9UT0tFTihGaWVsZCkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogICAgKyAgKENNX09CSkVDVF9UT0tFTikoKFVJ TlQ4KikmQ29tbW9uUGxhdGZvcm1JbmZvICsgICAgICAgICAgICAgICAgIFwNCiAgICArICAgIE9G RlNFVF9PRiAoRURLSUlfQ09NTU9OX1BMQVRGT1JNX1JFUE9TSVRPUllfSU5GTywgRmllbGQpKQ0K ICAgICsNCiAgICArLyoqIEEgaGVscGVyIG1hY3JvIHRoYXQgY29uc3RydWN0cyB0aGUgTVBJRCBi YXNlZCBvbiB0aGUNCiAgICArICAgIEFmZjAsIEFmZjEsIEFmZjIsIEFmZjMgdmFsdWVzDQogICAg KyovDQogICAgKyNkZWZpbmUgR0VUX01QSUQzKEFmZjMsIEFmZjIsIEFmZjEsIEFmZjApICAgICAg ICAgICAgICAgICAgICAgICAgIFwNCiAgICArICAoKChBZmYzIyNVTEwpIDw8IDMyKSB8ICgoQWZm MikgPDwgMTYpIHwgKChBZmYxKSA8PCA4KSB8IChBZmYwKSkNCiAgICArDQogICAgKy8qKiBBIGhl bHBlciBtYWNybyBmb3IgcG9wdWxhdGluZyB0aGUgR0lDIENQVSBpbmZvcm1hdGlvbg0KICAgICsq Lw0KICAgICsjZGVmaW5lIEdJQ0NfRU5UUlkoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXA0KICAgICsgICAgICAgICAgQ1BVSW50ZXJmYWNlTnVt YmVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KICAgICsg ICAgICAgICAgTXBpZHIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXA0KICAgICsgICAgICAgICAgUG11SXJxLCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KICAgICsgICAgICAgICAg VkdpY0lycSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KICAgICsgICAgICAgICAgR2ljUmVkaXN0QmFzZSwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KICAgICsgICAgICAgICAgRW5lcmd5RWZm aWNpZW5jeSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K ICAgICsgICAgICAgICAgU3BlSXJxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXA0KICAgICsgICAgICAgICAgUHJveGltaXR5RG9tYWluLCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KICAgICsgICAg ICAgICAgQ2xvY2tEb21haW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXA0KICAgICsgICAgICAgICAgKSB7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KICAgICsgICAgQ1BVSW50ZXJm YWNlTnVtYmVyLCAgICAgICAvKiBVSU5UMzIgIENQVUludGVyZmFjZU51bWJlciAgICAgICAgICAg Ki8gXA0KICAgICsgICAgQ1BVSW50ZXJmYWNlTnVtYmVyLCAgICAgICAvKiBVSU5UMzIgIEFjcGlQ cm9jZXNzb3JVaWQgICAgICAgICAgICAgKi8gXA0KICAgICsgICAgRUZJX0FDUElfNl8yX0dJQ19F TkFCTEVELCAvKiBVSU5UMzIgIEZsYWdzICAgICAgICAgICAgICAgICAgICAgICAgKi8gXA0KICAg ICsgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiBVSU5UMzIgIFBhcmtpbmdQcm90b2Nv bFZlcnNpb24gICAgICAgKi8gXA0KICAgICsgICAgUG11SXJxLCAgICAgICAgICAgICAgICAgICAv KiBVSU5UMzIgIFBlcmZvcm1hbmNlSW50ZXJydXB0R3NpdiAgICAgKi8gXA0KICAgICsgICAgMCwg ICAgICAgICAgICAgICAgICAgICAgICAvKiBVSU5UNjQgIFBhcmtlZEFkZHJlc3MgICAgICAgICAg ICAgICAgKi8gXA0KICAgICsgICAgRml4ZWRQY2RHZXQ2NCAoICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KICAgICsgICAgICBQY2RHaWNJbnRl cnJ1cHRJbnRlcmZhY2VCYXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XA0KICAgICsgICAgICApLCAgICAgICAgICAgICAgICAgICAgICAvKiBVSU5UNjQgIFBoeXNpY2Fs QmFzZUFkZHJlc3MgICAgICAgICAgKi8gXA0KICAgICsgICAgMCwgICAgICAgICAgICAgICAgICAg ICAgICAvKiBVSU5UNjQgIEdJQ1YgICAgICAgICAgICAgICAgICAgICAgICAgKi8gXA0KICAgICsg ICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiBVSU5UNjQgIEdJQ0ggICAgICAgICAgICAg ICAgICAgICAgICAgKi8gXA0KICAgICsgICAgVkdpY0lycSwgICAgICAgICAgICAgICAgICAvKiBV SU5UMzIgIFZHSUNNYWludGVuYW5jZUludGVycnVwdCAgICAgKi8gXA0KICAgICsgICAgR2ljUmVk aXN0QmFzZSwgICAgICAgICAgICAvKiBVSU5UNjQgIEdJQ1JCYXNlQWRkcmVzcyAgICAgICAgICAg ICAgKi8gXA0KICAgICsgICAgTXBpZHIsICAgICAgICAgICAgICAgICAgICAvKiBVSU5UNjQgIE1Q SURSICAgICAgICAgICAgICAgICAgICAgICAgKi8gXA0KICAgICsgICAgRW5lcmd5RWZmaWNpZW5j eSwgICAgICAgICAvKiBVSU5UOCAgIFByb2Nlc3NvclBvd2VyRWZmaWNpZW5jeUNsYXNzKi8gXA0K ICAgICsgICAgU3BlSXJxLCAgICAgICAgICAgICAgICAgICAvKiBVSU5UMTYgIFNwZU92ZXJmbG93 SW50ZXJydXB0ICAgICAgICAgKi8gXA0KICAgICsgICAgUHJveGltaXR5RG9tYWluLCAgICAgICAg ICAvKiBVSU5UMzIgIFByb3hpbWl0eURvbWFpbiAgICAgICAgICAgICAgKi8gXA0KICAgICsgICAg Q2xvY2tEb21haW4sICAgICAgICAgICAgICAvKiBVSU5UMzIgIENsb2NrRG9tYWluICAgICAgICAg ICAgICAgICAgKi8gXA0KICAgICsgICAgRUZJX0FDUElfNl8zX0dJQ0NfRU5BQkxFRCwvKiBVSU5U MzIgIEZsYWdzICAgICAgICAgICAgICAgICAgICAgICAgKi8gXA0KICAgICsgICAgfQ0KICAgICsN CiAgICArLyoqIEEgaGVscGVyIG1hY3JvIGZvciBwb3B1bGF0aW5nIHRoZSBQcm9jZXNzb3IgSGll cmFyY2h5IE5vZGUgZmxhZ3MNCiAgICArKi8NCiAgICArI2RlZmluZSBQUk9DX05PREVfRkxBR1Mo ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KICAgICsg ICAgICAgICAgUGh5c2ljYWxQYWNrYWdlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcDQogICAgKyAgICAgICAgICBBY3BpUHJvY2Vzc29ySWRWYWxpZCwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCiAgICArICAgICAgICAgIFBy b2Nlc3NvcklzVGhyZWFkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXA0KICAgICsgICAgICAgICAgTm9kZUlzTGVhZiwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogICAgKyAgICAgICAgICBJZGVudGljYWxJbXBs ZW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCiAgICAr ICAgICAgICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXA0KICAgICsgICggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogICAgKyAgICBQaHlzaWNh bFBhY2thZ2UgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwNCiAgICArICAgIChBY3BpUHJvY2Vzc29ySWRWYWxpZCA8PCAxKSB8ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KICAgICsgICAgKFByb2Nlc3NvcklzVGhyZWFk IDw8IDIpIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogICAg KyAgICAoTm9kZUlzTGVhZiA8PCAzKSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwNCiAgICArICAgIChJZGVudGljYWxJbXBsZW1lbnRhdGlvbiA8PCA0 KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KICAgICsgICkNCiAgICAr DQogICAgKy8qKiBBIGhlbHBlciBtYWNybyBmb3IgcG9wdWxhdGluZyB0aGUgQ2FjaGUgVHlwZSBT dHJ1Y3R1cmUncyBhdHRyaWJ1dGVzDQogICAgKyovDQogICAgKyNkZWZpbmUgQ0FDSEVfQVRUUklC VVRFUyggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCiAg ICArICAgICAgICAgIEFsbG9jYXRpb25UeXBlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXA0KICAgICsgICAgICAgICAgQ2FjaGVUeXBlLCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogICAgKyAgICAgICAg ICBXcml0ZVBvbGljeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwNCiAgICArICAgICAgICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KICAgICsgICggICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQog ICAgKyAgICBBbGxvY2F0aW9uVHlwZSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwNCiAgICArICAgIChDYWNoZVR5cGUgPDwgMikgfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KICAgICsgICAgKFdy aXRlUG9saWN5IDw8IDQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQogICAgKyAgKQ0KICAgICsNCiAgICArLyoqIEEgZnVuY3Rpb24gdGhhdCBwcmVw YXJlcyBDb25maWd1cmF0aW9uIE1hbmFnZXIgT2JqZWN0cyBmb3IgcmV0dXJuaW5nLg0KICAgICsN CiAgICArICBAcGFyYW0gW2luXSAgVGhpcyAgICAgICAgUG9pbnRlciB0byB0aGUgQ29uZmlndXJh dGlvbiBNYW5hZ2VyIFByb3RvY29sLg0KICAgICsgIEBwYXJhbSBbaW5dICBDbU9iamVjdElkICBU aGUgQ29uZmlndXJhdGlvbiBNYW5hZ2VyIE9iamVjdCBJRC4NCiAgICArICBAcGFyYW0gW2luXSAg VG9rZW4gICAgICAgQSB0b2tlbiBmb3IgaWRlbnRpZnlpbmcgdGhlIG9iamVjdC4NCiAgICArICBA cGFyYW0gW291dF0gQ21PYmplY3QgICAgUG9pbnRlciB0byB0aGUgQ29uZmlndXJhdGlvbiBNYW5h Z2VyIE9iamVjdA0KICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yIGRl c2NyaWJpbmcgdGhlIHJlcXVlc3RlZCBPYmplY3QuDQogICAgKw0KICAgICsgIEByZXR2YWwgRUZJ X1NVQ0NFU1MgICAgICAgICAgIFN1Y2Nlc3MuDQogICAgKyAgQHJldHZhbCBFRklfSU5WQUxJRF9Q QVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZC4NCiAgICArICBAcmV0dmFsIEVGSV9OT1Rf Rk9VTkQgICAgICAgICBUaGUgcmVxdWlyZWQgb2JqZWN0IGluZm9ybWF0aW9uIGlzIG5vdCBmb3Vu ZC4NCiAgICArKiovDQogICAgK3R5cGVkZWYgRUZJX1NUQVRVUyAoKkNNX09CSkVDVF9IQU5ETEVS X1BST0MpICgNCiAgICArICBJTiAgQ09OU1QgRURLSUlfQ09ORklHVVJBVElPTl9NQU5BR0VSX1BS T1RPQ09MICAqIENPTlNUIFRoaXMsDQogICAgKyAgSU4gIENPTlNUIENNX09CSkVDVF9JRCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbU9iamVjdElkLA0KICAgICsgIElOICBDT05T VCBDTV9PQkpFQ1RfVE9LRU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9rZW4sDQog ICAgKyAgSU4gIE9VVCAgIENNX09CSl9ERVNDUklQVE9SICAgICAgICAgICAgICAgICAgICAgKiBD T05TVCBDbU9iamVjdA0KICAgICsgICk7DQogICAgKw0KICAgICsvKiogQSBoZWxwZXIgZnVuY3Rp b24gZm9yIHJldHVybmluZyB0aGUgQ29uZmlndXJhdGlvbiBNYW5hZ2VyIE9iamVjdHMuDQogICAg Kw0KICAgICsgIEBwYXJhbSBbaW5dICAgICAgIENtT2JqZWN0SWQgICAgIFRoZSBDb25maWd1cmF0 aW9uIE1hbmFnZXIgT2JqZWN0IElELg0KICAgICsgIEBwYXJhbSBbaW5dICAgICAgIE9iamVjdCAg ICAgICAgIFBvaW50ZXIgdG8gdGhlIE9iamVjdChzKS4NCiAgICArICBAcGFyYW0gW2luXSAgICAg ICBPYmplY3RTaXplICAgICBUb3RhbCBzaXplIG9mIHRoZSBPYmplY3QocykuDQogICAgKyAgQHBh cmFtIFtpbl0gICAgICAgT2JqZWN0Q291bnQgICAgTnVtYmVyIG9mIE9iamVjdHMuDQogICAgKyAg QHBhcmFtIFtpbiwgb3V0XSAgQ21PYmplY3REZXNjICAgUG9pbnRlciB0byB0aGUgQ29uZmlndXJh dGlvbiBNYW5hZ2VyIE9iamVjdA0KICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRlc2NyaXB0b3IgZGVzY3JpYmluZyB0aGUgcmVxdWVzdGVkIE9iamVjdC4NCiAgICArDQog ICAgKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgU3VjY2Vzcy4NCiAgICArKiovDQog ICAgK0VGSV9TVEFUVVMNCiAgICArRUZJQVBJDQogICAgK0hhbmRsZUNtT2JqZWN0ICgNCiAgICAr ICBJTiAgQ09OU1QgQ01fT0JKRUNUX0lEICAgICAgICAgICAgICAgIENtT2JqZWN0SWQsDQogICAg KyAgSU4gICAgICAgIFZPSUQgICAgICAgICAgICAgICAgKiAgICAgICBPYmplY3QsDQogICAgKyAg SU4gIENPTlNUIFVJTlROICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RTaXplLA0KICAgICsg IElOICBDT05TVCBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0Q291bnQsDQogICAg KyAgSU4gIE9VVCAgIENNX09CSl9ERVNDUklQVE9SICAgKiBDT05TVCBDbU9iamVjdERlc2MNCiAg ICArICApOw0KICAgICsNCiAgICArLyoqIEEgaGVscGVyIGZ1bmN0aW9uIGZvciByZXR1cm5pbmcg dGhlIENvbmZpZ3VyYXRpb24gTWFuYWdlciBPYmplY3RzIHRoYXQNCiAgICArICAgIG1hdGNoIHRo ZSB0b2tlbi4NCiAgICArDQogICAgKyAgQHBhcmFtIFtpbl0gIFRoaXMgICAgICAgICAgICAgICBQ b2ludGVyIHRvIHRoZSBDb25maWd1cmF0aW9uIE1hbmFnZXIgUHJvdG9jb2wuDQogICAgKyAgQHBh cmFtIFtpbl0gIENtT2JqZWN0SWQgICAgICAgICBUaGUgQ29uZmlndXJhdGlvbiBNYW5hZ2VyIE9i amVjdCBJRC4NCiAgICArICBAcGFyYW0gW2luXSAgT2JqZWN0ICAgICAgICAgICAgIFBvaW50ZXIg dG8gdGhlIE9iamVjdChzKS4NCiAgICArICBAcGFyYW0gW2luXSAgT2JqZWN0U2l6ZSAgICAgICAg IFRvdGFsIHNpemUgb2YgdGhlIE9iamVjdChzKS4NCiAgICArICBAcGFyYW0gW2luXSAgT2JqZWN0 Q291bnQgICAgICAgIE51bWJlciBvZiBPYmplY3RzLg0KICAgICsgIEBwYXJhbSBbaW5dICBUb2tl biAgICAgICAgICAgICAgQSB0b2tlbiBpZGVudGlmeWluZyB0aGUgb2JqZWN0Lg0KICAgICsgIEBw YXJhbSBbaW5dICBIYW5kbGVyUHJvYyAgICAgICAgQSBoYW5kbGVyIGZ1bmN0aW9uIHRvIHNlYXJj aCB0aGUgb2JqZWN0DQogICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZl cmVuY2VkIGJ5IHRoZSB0b2tlbi4NCiAgICArICBAcGFyYW0gW2luLCBvdXRdICBDbU9iamVjdERl c2MgIFBvaW50ZXIgdG8gdGhlIENvbmZpZ3VyYXRpb24gTWFuYWdlciBPYmplY3QNCiAgICArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IgZGVzY3JpYmluZyB0aGUg cmVxdWVzdGVkIE9iamVjdC4NCiAgICArDQogICAgKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAg ICAgICAgU3VjY2Vzcy4NCiAgICArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBh cmFtZXRlciBpcyBpbnZhbGlkLg0KICAgICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAg IFRoZSByZXF1aXJlZCBvYmplY3QgaW5mb3JtYXRpb24gaXMgbm90IGZvdW5kLg0KICAgICsqKi8N CiAgICArRUZJX1NUQVRVUw0KICAgICtFRklBUEkNCiAgICArSGFuZGxlQ21PYmplY3RSZWZCeVRv a2VuICgNCiAgICArICBJTiAgQ09OU1QgRURLSUlfQ09ORklHVVJBVElPTl9NQU5BR0VSX1BST1RP Q09MICAqIENPTlNUIFRoaXMsDQogICAgKyAgSU4gIENPTlNUIENNX09CSkVDVF9JRCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBDbU9iamVjdElkLA0KICAgICsgIElOICAgICAgICBW T0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICAgICAgT2JqZWN0LA0KICAg ICsgIElOICBDT05TVCBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT2JqZWN0U2l6ZSwNCiAgICArICBJTiAgQ09OU1QgVUlOVE4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE9iamVjdENvdW50LA0KICAgICsgIElOICBDT05TVCBDTV9P QkpFQ1RfVE9LRU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9rZW4sDQogICAgKyAg SU4gIENPTlNUIENNX09CSkVDVF9IQU5ETEVSX1BST0MgICAgICAgICAgICAgICAgICAgICAgICBI YW5kbGVyUHJvYywNCiAgICArICBJTiAgT1VUICAgQ01fT0JKX0RFU0NSSVBUT1IgICAgICAgICAg ICAgICAgICAgICAqIENPTlNUIENtT2JqZWN0RGVzYw0KICAgICsgICk7DQogICAgKw0KICAgICsv KiogVGhlIG51bWJlciBvZiBDUFVzDQogICAgKyovDQogICAgKyNkZWZpbmUgUExBVF9DUFVfQ09V TlQgICAgICAgICAgICAgIDQNCiAgICArDQogICAgKy8qKiBUaGUgbnVtYmVyIG9mIHBsYXRmb3Jt IGdlbmVyaWMgdGltZXIgYmxvY2tzDQogICAgKyovDQogICAgKyNkZWZpbmUgUExBVF9HVEJMT0NL X0NPVU5UICAgICAgICAgIDENCiAgICArDQogICAgKy8qKiBUaGUgbnVtYmVyIG9mIHRpbWVyIGZy YW1lcyBwZXIgZ2VuZXJpYyB0aW1lciBibG9jaw0KICAgICsqLw0KICAgICsjZGVmaW5lIFBMQVRf R1RGUkFNRV9DT1VOVCAgICAgICAgICAyDQogICAgKw0KICAgICsvKiogVGhlIG51bWJlciBvZiBQ cm9jZXNzb3IgSGllcmFyY2h5IE5vZGVzDQogICAgKyAgICAtIG9uZSBwYWNrYWdlIG5vZGUNCiAg ICArICAgIC0gdHdvIGNsdXN0ZXIgbm9kZXMNCiAgICArICAgIC0gdHdvIGNvcmVzIGluIGNsdXN0 ZXIgMA0KICAgICsgICAgLSB0d28gY29yZXMgaW4gY2x1c3RlciAxDQogICAgKyovDQogICAgKyNk ZWZpbmUgUExBVF9QUk9DX0hJRVJBUkNIWV9OT0RFX0NPVU5UICA3DQogICAgKw0KICAgICsvKiog VGhlIG51bWJlciBvZiB1bmlxdWUgY2FjaGUgc3RydWN0dXJlczoNCiAgICArICAgIC0gY2x1c3Rl ciBMMyB1bmlmaWVkIGNhY2hlDQogICAgKyAgICAtIGNvcmUgTDEgaW5zdHJ1Y3Rpb24gY2FjaGUN CiAgICArICAgIC0gY29yZSBMMSBkYXRhIGNhY2hlDQogICAgKyAgICAtIGNvcmUgTDIgY2FjaGUN CiAgICArICAgIC0gc2xjIHVuaWZpZWQgY2FjaGUNCiAgICArKi8NCiAgICArI2RlZmluZSBQTEFU X0NBQ0hFX0NPVU5UICAgICAgICAgICAgICAgIDUNCiAgICArDQogICAgKy8qKiBUaGUgbnVtYmVy IG9mIHJlc291cmNlcyBwcml2YXRlIHRvIHRoZSBjbHVzdGVyDQogICAgKyAgICAtIEwzIGNhY2hl DQogICAgKyovDQogICAgKyNkZWZpbmUgQ0xVU1RFUl9SRVNPVVJDRV9DT1VOVCAgMQ0KICAgICsN CiAgICArLyoqIFRoZSBudW1iZXIgb2YgcmVzb3VyY2VzIHByaXZhdGUgdG8gJ2NvcmUgaW5zdGFu Y2UNCiAgICArICAgIC0gTDEgZGF0YSBjYWNoZQ0KICAgICsgICAgLSBMMSBpbnN0cnVjdGlvbiBj YWNoZQ0KICAgICsgICAgLSBMMiBjYWNoZQ0KICAgICsqLw0KICAgICsjZGVmaW5lIENPUkVfUkVT T1VSQ0VfQ09VTlQgIDMNCiAgICArDQogICAgKy8qKiBUaGUgbnVtYmVyIG9mIHJlc291cmNlcyBw cml2YXRlIHRvIFNvQw0KICAgICsgICAgLSBzbGMgY2FjaGUNCiAgICArKi8NCiAgICArI2RlZmlu ZSBTT0NfUkVTT1VSQ0VfQ09VTlQgIDENCiAgICArDQogICAgKy8qKiBBIHN0cnVjdHVyZSBkZXNj cmliaW5nIHRoZSBwbGF0Zm9ybSBjb25maWd1cmF0aW9uDQogICAgKyAgICBtYW5hZ2VyIHJlcG9z aXRvcnkgaW5mb3JtYXRpb24NCiAgICArKi8NCiAgICArdHlwZWRlZiBzdHJ1Y3QgQ29tbW9uUGxh dGZvcm1SZXBvc2l0b3J5SW5mbyB7DQogICAgKyAgLy8vIENvbmZpZ3VyYXRpb24gTWFuYWdlciBJ bmZvcm1hdGlvbg0KICAgICsgIENNX1NURF9PQkpfQ09ORklHVVJBVElPTl9NQU5BR0VSX0lORk8g Q21JbmZvOw0KICAgICsNCiAgICArICAvLy8gQm9vdCBhcmNoaXRlY3R1cmUgaW5mb3JtYXRpb24N CiAgICArICBDTV9BUk1fQk9PVF9BUkNIX0lORk8gICAgICAgICAgICAgICAgIEJvb3RBcmNoSW5m bzsNCiAgICArDQogICAgKyNpZmRlZiBIRUFETEVTU19QTEFURk9STQ0KICAgICsgIC8vLyBGaXhl ZCBmZWF0dXJlIGZsYWcgaW5mb3JtYXRpb24NCiAgICArICBDTV9BUk1fRklYRURfRkVBVFVSRV9G TEFHUyAgICAgICAgICAgIEZpeGVkRmVhdHVyZUZsYWdzOw0KICAgICsjZW5kaWYNCiAgICArDQog ICAgKyAgLy8vIFBvd2VyIG1hbmFnZW1lbnQgcHJvZmlsZSBpbmZvcm1hdGlvbg0KICAgICsgIENN X0FSTV9QT1dFUl9NQU5BR0VNRU5UX1BST0ZJTEVfSU5GTyAgUG1Qcm9maWxlSW5mbzsNCiAgICAr DQogICAgKyAgLy8vIEdJQyBDUFUgaW50ZXJmYWNlIGluZm9ybWF0aW9uDQogICAgKyAgQ01fQVJN X0dJQ0NfSU5GTyAgICAgICAgICAgICAgICAgICAgICBHaWNDSW5mb1tQTEFUX0NQVV9DT1VOVF07 DQogICAgKw0KICAgICsgIC8vLyBHSUMgZGlzdHJpYnV0b3IgaW5mb3JtYXRpb24NCiAgICArICBD TV9BUk1fR0lDRF9JTkZPICAgICAgICAgICAgICAgICAgICAgIEdpY0RJbmZvOw0KICAgICsNCiAg ICArICAvLy8gR0lDIFJlZGlzdHJpYnV0b3IgaW5mb3JtYXRpb24NCiAgICArICBDTV9BUk1fR0lD X1JFRElTVF9JTkZPICAgICAgICAgICAgICAgIEdpY1JlZGlzdEluZm87DQogICAgKw0KICAgICsg IC8vLyBHZW5lcmljIHRpbWVyIGluZm9ybWF0aW9uDQogICAgKyAgQ01fQVJNX0dFTkVSSUNfVElN RVJfSU5GTyAgICAgICAgICAgICBHZW5lcmljVGltZXJJbmZvOw0KICAgICsNCiAgICArICAvLy8g R2VuZXJpYyB0aW1lciBibG9jayBpbmZvcm1hdGlvbg0KICAgICsgIENNX0FSTV9HVEJMT0NLX0lO Rk8gICAgICAgICAgICAgICAgICAgR1RCbG9ja0luZm9bUExBVF9HVEJMT0NLX0NPVU5UXTsNCiAg ICArDQogICAgKyAgLy8vIEdlbmVyaWMgdGltZXIgZnJhbWUgaW5mb3JtYXRpb24NCiAgICArICBD TV9BUk1fR1RCTE9DS19USU1FUl9GUkFNRV9JTkZPICAgICAgIEdUQmxvY2swVGltZXJJbmZvW1BM QVRfR1RGUkFNRV9DT1VOVF07DQogICAgKw0KICAgICsgIC8vLyBXYXRjaGRvZyBpbmZvcm1hdGlv bg0KICAgICsgIENNX0FSTV9HRU5FUklDX1dBVENIRE9HX0lORk8gICAgICAgICAgV2F0Y2hkb2c7 DQogICAgKw0KICAgICsgIC8qKiBTZXJpYWwgcG9ydCBpbmZvcm1hdGlvbiBmb3IgdGhlDQogICAg KyAgICAgIHNlcmlhbCBwb3J0IGNvbnNvbGUgcmVkaXJlY3Rpb24gcG9ydA0KICAgICsgICovDQog ICAgKyAgQ01fQVJNX1NFUklBTF9QT1JUX0lORk8gICAgICAgICAgICAgICBTcGNyU2VyaWFsUG9y dDsNCiAgICArDQogICAgKyAgLy8vIFNlcmlhbCBwb3J0IGluZm9ybWF0aW9uIGZvciB0aGUgREJH MiBVQVJUIHBvcnQNCiAgICArICBDTV9BUk1fU0VSSUFMX1BPUlRfSU5GTyAgICAgICAgICAgICAg IERiZ1NlcmlhbFBvcnQ7DQogICAgKw0KICAgICsgIC8vIFByb2Nlc3NvciB0b3BvbG9neSBpbmZv cm1hdGlvbg0KICAgICsgIENNX0FSTV9QUk9DX0hJRVJBUkNIWV9JTkZPICAgICAgICAgICAgUHJv Y0hpZXJhcmNoeUluZm9bUExBVF9QUk9DX0hJRVJBUkNIWV9OT0RFX0NPVU5UXTsNCiAgICArDQog ICAgKyAgLy8gQ2FjaGUgaW5mb3JtYXRpb24NCiAgICArICBDTV9BUk1fQ0FDSEVfSU5GTyAgICAg ICAgICAgICAgICAgICAgIENhY2hlSW5mb1tQTEFUX0NBQ0hFX0NPVU5UXTsNCiAgICArDQogICAg KyAgLy8gQ2x1c3RlciBwcml2YXRlIHJlc291cmNlcw0KICAgICsgIENNX0FSTV9PQkpfUkVGICAg ICAgICAgICAgICAgICAgICAgICAgQ2x1c3RlclJlc291cmNlc1tDTFVTVEVSX1JFU09VUkNFX0NP VU5UXTsNCiAgICArDQogICAgKyAgLy8gQ29yZSBwcml2YXRlIHJlc291cmNlcw0KICAgICsgIENN X0FSTV9PQkpfUkVGICAgICAgICAgICAgICAgICAgICAgICAgQ29yZVJlc291cmNlc1tDT1JFX1JF U09VUkNFX0NPVU5UXTsNCiAgICArDQogICAgKyAgLy8gU29DIFJlc291cmNlcw0KICAgICsgIENN X0FSTV9PQkpfUkVGICAgICAgICAgICAgICAgICAgICAgICAgU29jUmVzb3VyY2VzW1NPQ19SRVNP VVJDRV9DT1VOVF07DQogICAgKw0KICAgICt9IEVES0lJX0NPTU1PTl9QTEFURk9STV9SRVBPU0lU T1JZX0lORk87DQogICAgKw0KICAgICsjZW5kaWYgLy8gQ09ORklHVVJBVElPTl9NQU5BR0VSX0hf DQogICAgZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0FSTS9Nb3JlbGxvL0NvbmZpZ3VyYXRpb25NYW5h Z2VyL0NvbmZpZ3VyYXRpb25NYW5hZ2VyRHhlL0NvbmZpZ3VyYXRpb25NYW5hZ2VyRnZwLmggYi9Q bGF0Zm9ybS9BUk0vTW9yZWxsby9Db25maWd1cmF0aW9uTWFuYWdlci9Db25maWd1cmF0aW9uTWFu YWdlckR4ZS9Db25maWd1cmF0aW9uTWFuYWdlckZ2cC5oDQogICAgbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCiAgICBpbmRleCAwMDAwMDAwMDAwMDAuLjQ2MjhiN2E4NzlhYQ0KICAgIC0tLSAvZGV2L251 bGwNCiAgICArKysgYi9QbGF0Zm9ybS9BUk0vTW9yZWxsby9Db25maWd1cmF0aW9uTWFuYWdlci9D b25maWd1cmF0aW9uTWFuYWdlckR4ZS9Db25maWd1cmF0aW9uTWFuYWdlckZ2cC5oDQogICAgQEAg LTAsMCArMSwxMjIgQEANCiAgICArLyoqIEBmaWxlDQogICAgKw0KICAgICsgIENvcHlyaWdodCAo YykgMjAyMSwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KICAgICsNCiAg ICArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KICAgICsN CiAgICArICBAcGFyIEdsb3NzYXJ5Og0KICAgICsgICAgLSBDbSBvciBDTSAgIC0gQ29uZmlndXJh dGlvbiBNYW5hZ2VyDQogICAgKyAgICAtIE9iaiBvciBPQkogLSBPYmplY3QNCiAgICArKiovDQog ICAgKw0KICAgICsjaWZuZGVmIEZWUF9DT05GSUdVUkFUSU9OX01BTkFHRVJfSF8NCiAgICArI2Rl ZmluZSBGVlBfQ09ORklHVVJBVElPTl9NQU5BR0VSX0hfDQogICAgKw0KICAgICsjaW5jbHVkZSAi Q29uZmlndXJhdGlvbk1hbmFnZXIuaCINCiAgICArDQogICAgKy8qKiBUaGUgbnVtYmVyIG9mIEFD UEkgdGFibGVzIHRvIGluc3RhbGwNCiAgICArKi8NCiAgICArI2RlZmluZSBQTEFUX0FDUElfVEFC TEVfQ09VTlQgICAgICAgMTANCiAgICArDQogICAgKy8qKiBBIGhlbHBlciBtYWNybyBmb3IgbWFw cGluZyBhIHJlZmVyZW5jZSB0b2tlbg0KICAgICsqLw0KICAgICsjZGVmaW5lIFJFRkVSRU5DRV9U T0tFTl9GVlAoRmllbGQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogICAgKyAg KENNX09CSkVDVF9UT0tFTikoKFVJTlQ4KikmTW9yZWxsb0Z2cFJlcG9zaXRvcnlJbmZvICsgICAg ICAgICAgIFwNCiAgICArICAgIE9GRlNFVF9PRiAoRURLSUlfRlZQX1BMQVRGT1JNX1JFUE9TSVRP UllfSU5GTywgRmllbGQpKQ0KICAgICsNCiAgICArLyoqIEMgYXJyYXkgY29udGFpbmluZyB0aGUg Y29tcGlsZWQgQU1MIHRlbXBsYXRlLg0KICAgICsgICAgVGhlc2Ugc3ltYm9scyBhcmUgZGVmaW5l ZCBpbiB0aGUgYXV0byBnZW5lcmF0ZWQgQyBmaWxlDQogICAgKyAgICBjb250YWluaW5nIHRoZSBB TUwgYnl0ZWNvZGUgYXJyYXkuDQogICAgKyovDQogICAgK2V4dGVybiBDSEFSOCAgZHNkdGZ2cF9h bWxfY29kZVtdOw0KICAgICtleHRlcm4gQ0hBUjggIHNzZHRwY2lmdnBfYW1sX2NvZGVbXTsNCiAg ICArDQogICAgKy8qKiBBIHN0cnVjdHVyZSBkZXNjcmliaW5nIHRoZSBGVlAgUGxhdGZvcm0gc3Bl Y2lmaWMgaW5mb3JtYXRpb24NCiAgICArKi8NCiAgICArdHlwZWRlZiBzdHJ1Y3QgRnZwUGxhdGZv cm1SZXBvc2l0b3J5SW5mbyB7DQogICAgKyAgLy8vIExpc3Qgb2YgQUNQSSB0YWJsZXMNCiAgICAr ICBDTV9TVERfT0JKX0FDUElfVEFCTEVfSU5GTyAgICAgICAgICAgIENtQWNwaVRhYmxlTGlzdFtQ TEFUX0FDUElfVEFCTEVfQ09VTlRdOw0KICAgICsNCiAgICArICAvLy8gR0lDIElUUyBpbmZvcm1h dGlvbg0KICAgICsgIENNX0FSTV9HSUNfSVRTX0lORk8gICAgICAgICAgICAgICAgICAgR2ljSXRz SW5mb1syXTsNCiAgICArDQogICAgKyAgLy8vIElUUyBHcm91cCBub2RlDQogICAgKyAgQ01fQVJN X0lUU19HUk9VUF9OT0RFICAgICAgICAgICAgICAgICBJdHNHcm91cEluZm9bMl07DQogICAgKw0K ICAgICsgIC8vLyBJVFMgSWRlbnRpZmllciBhcnJheQ0KICAgICsgIENNX0FSTV9JVFNfSURFTlRJ RklFUiAgICAgICAgICAgICAgICAgSXRzSWRlbnRpZmllckFycmF5WzJdOw0KICAgICsNCiAgICAr ICAvLy8gU01NVXYzIG5vZGUNCiAgICArICBDTV9BUk1fU01NVVYzX05PREUgICAgICAgICAgICAg ICAgICAgIFNtbXVWM0luZm9bMV07DQogICAgKw0KICAgICsgIC8vLyBQQ0kgUm9vdCBjb21wbGV4 IG5vZGUNCiAgICArICBDTV9BUk1fUk9PVF9DT01QTEVYX05PREUgICAgICAgICAgICAgIFJvb3RD b21wbGV4SW5mb1sxXTsNCiAgICArDQogICAgKyAgLy8vIEFycmF5IG9mIERldmljZUlEIG1hcHBp bmcNCiAgICArICBDTV9BUk1fSURfTUFQUElORyAgICAgICAgICAgICAgICAgICAgIERldmljZUlk TWFwcGluZ1syXVsyXTsNCiAgICArDQogICAgKyAgLy8vIFBDSSBjb25maWd1cmF0aW9uIHNwYWNl IGluZm9ybWF0aW9uDQogICAgKyAgQ01fQVJNX1BDSV9DT05GSUdfU1BBQ0VfSU5GTyAgICAgICAg ICBQY2lDb25maWdJbmZvWzFdOw0KICAgICsNCiAgICArfSBFREtJSV9GVlBfUExBVEZPUk1fUkVQ T1NJVE9SWV9JTkZPOw0KICAgICsNCiAgICArLyoqIEEgc3RydWN0dXJlIGRlc2NyaWJpbmcgdGhl IHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24NCiAgICArICAgIG1hbmFnZXIgcmVwb3NpdG9yeSBpbmZv cm1hdGlvbg0KICAgICsqLw0KICAgICt0eXBlZGVmIHN0cnVjdCBQbGF0Zm9ybVJlcG9zaXRvcnlJ bmZvIHsNCiAgICArDQogICAgKyAgLy8vIENvbW1vbiBpbmZvcm1hdGlvbg0KICAgICsgIEVES0lJ X0NPTU1PTl9QTEFURk9STV9SRVBPU0lUT1JZX0lORk8gICAqIENvbW1vblBsYXRSZXBvSW5mbzsN CiAgICArDQogICAgKyAgLy8vIEZWUCBQbGF0Zm9ybSBzcGVjaWZpYyBpbmZvcm1hdGlvbg0KICAg ICsgIEVES0lJX0ZWUF9QTEFURk9STV9SRVBPU0lUT1JZX0lORk8gICAgICAqIEZ2cFBsYXRSZXBv SW5mbzsNCiAgICArDQogICAgK30gRURLSUlfUExBVEZPUk1fUkVQT1NJVE9SWV9JTkZPOw0KICAg ICsNCiAgICArZXh0ZXJuIEVES0lJX0NPTU1PTl9QTEFURk9STV9SRVBPU0lUT1JZX0lORk8gQ29t bW9uUGxhdGZvcm1JbmZvOw0KICAgICsNCiAgICArLyoqIFJldHVybiBwbGF0Zm9ybSBzcGVjaWZp YyBBUk0gbmFtZXNwYWNlIG9iamVjdC4NCiAgICArDQogICAgKyAgQHBhcmFtIFtpbl0gICAgICBU aGlzICAgICAgICBQb2ludGVyIHRvIHRoZSBDb25maWd1cmF0aW9uIE1hbmFnZXIgUHJvdG9jb2wu DQogICAgKyAgQHBhcmFtIFtpbl0gICAgICBDbU9iamVjdElkICBUaGUgQ29uZmlndXJhdGlvbiBN YW5hZ2VyIE9iamVjdCBJRC4NCiAgICArICBAcGFyYW0gW2luXSAgICAgIFRva2VuICAgICAgIEFu IG9wdGlvbmFsIHRva2VuIGlkZW50aWZ5aW5nIHRoZSBvYmplY3QuIElmDQogICAgKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQgdGhpcyBtdXN0IGJlIENNX05VTExfVE9LRU4u DQogICAgKyAgQHBhcmFtIFtpbiwgb3V0XSBDbU9iamVjdCAgICBQb2ludGVyIHRvIHRoZSBDb25m aWd1cmF0aW9uIE1hbmFnZXIgT2JqZWN0DQogICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkZXNjcmlwdG9yIGRlc2NyaWJpbmcgdGhlIHJlcXVlc3RlZCBPYmplY3QuDQogICAgKw0K ICAgICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFN1Y2Nlc3MuDQogICAgKyAgQHJl dHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZC4NCiAgICAr ICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcmVxdWlyZWQgb2JqZWN0IGluZm9y bWF0aW9uIGlzIG5vdCBmb3VuZC4NCiAgICArKiovDQogICAgK0VGSV9TVEFUVVMNCiAgICArRUZJ QVBJDQogICAgK0dldEFybU5hbWVTcGFjZU9iamVjdFBsYXQgKA0KICAgICsgIElOICBDT05TVCBF REtJSV9DT05GSUdVUkFUSU9OX01BTkFHRVJfUFJPVE9DT0wgICogQ09OU1QgVGhpcywNCiAgICAr ICBJTiAgQ09OU1QgQ01fT0JKRUNUX0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IENtT2JqZWN0SWQsDQogICAgKyAgSU4gIENPTlNUIENNX09CSkVDVF9UT0tFTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBUb2tlbiBPUFRJT05BTCwNCiAgICArICBJTiAgT1VUICAgQ01f T0JKX0RFU0NSSVBUT1IgICAgICAgICAgICAgICAgICAgICAqIENPTlNUIENtT2JqZWN0DQogICAg KyAgKTsNCiAgICArDQogICAgKy8qKiBSZXR1cm4gcGxhdGZvcm0gc3BlY2lmaWMgc3RhbmRhcmQg bmFtZXNwYWNlIG9iamVjdC4NCiAgICArDQogICAgKyAgQHBhcmFtIFtpbl0gICAgICBUaGlzICAg ICAgICBQb2ludGVyIHRvIHRoZSBDb25maWd1cmF0aW9uIE1hbmFnZXIgUHJvdG9jb2wuDQogICAg KyAgQHBhcmFtIFtpbl0gICAgICBDbU9iamVjdElkICBUaGUgQ29uZmlndXJhdGlvbiBNYW5hZ2Vy IE9iamVjdCBJRC4NCiAgICArICBAcGFyYW0gW2luXSAgICAgIFRva2VuICAgICAgIEFuIG9wdGlv bmFsIHRva2VuIGlkZW50aWZ5aW5nIHRoZSBvYmplY3QuIElmDQogICAgKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnVzZWQgdGhpcyBtdXN0IGJlIENNX05VTExfVE9LRU4uDQogICAg KyAgQHBhcmFtIFtpbiwgb3V0XSBDbU9iamVjdCAgICBQb2ludGVyIHRvIHRoZSBDb25maWd1cmF0 aW9uIE1hbmFnZXIgT2JqZWN0DQogICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk ZXNjcmlwdG9yIGRlc2NyaWJpbmcgdGhlIHJlcXVlc3RlZCBPYmplY3QuDQogICAgKw0KICAgICsg IEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFN1Y2Nlc3MuDQogICAgKyAgQHJldHZhbCBF RklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZC4NCiAgICArICBAcmV0 dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcmVxdWlyZWQgb2JqZWN0IGluZm9ybWF0aW9u IGlzIG5vdCBmb3VuZC4NCiAgICArKiovDQogICAgK0VGSV9TVEFUVVMNCiAgICArRUZJQVBJDQog ICAgK0dldFN0YW5kYXJkTmFtZVNwYWNlT2JqZWN0UGxhdCAoDQogICAgKyAgSU4gIENPTlNUIEVE S0lJX0NPTkZJR1VSQVRJT05fTUFOQUdFUl9QUk9UT0NPTCAgKiBDT05TVCBUaGlzLA0KICAgICsg IElOICBDT05TVCBDTV9PQkpFQ1RfSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Q21PYmplY3RJZCwNCiAgICArICBJTiAgQ09OU1QgQ01fT0JKRUNUX1RPS0VOICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFRva2VuIE9QVElPTkFMLA0KICAgICsgIElOICBPVVQgICBDTV9P QkpfREVTQ1JJUFRPUiAgICAgICAgICAgICAgICAgICAgICogQ09OU1QgQ21PYmplY3QNCiAgICAr ICApOw0KICAgICsNCiAgICArI2VuZGlmIC8vIEZWUF9DT05GSUdVUkFUSU9OX01BTkFHRVJfSF8N CiAgICBkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vQVJNL01vcmVsbG8vQ29uZmlndXJhdGlvbk1hbmFn ZXIvQ29uZmlndXJhdGlvbk1hbmFnZXJEeGUvUGxhdGZvcm0uaCBiL1BsYXRmb3JtL0FSTS9Nb3Jl bGxvL0NvbmZpZ3VyYXRpb25NYW5hZ2VyL0NvbmZpZ3VyYXRpb25NYW5hZ2VyRHhlL1BsYXRmb3Jt LmgNCiAgICBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgIGluZGV4IDAwMDAwMDAwMDAwMC4uZTZh ZjZlMTcwZTRhDQogICAgLS0tIC9kZXYvbnVsbA0KICAgICsrKyBiL1BsYXRmb3JtL0FSTS9Nb3Jl bGxvL0NvbmZpZ3VyYXRpb25NYW5hZ2VyL0NvbmZpZ3VyYXRpb25NYW5hZ2VyRHhlL1BsYXRmb3Jt LmgNCiAgICBAQCAtMCwwICsxLDkxIEBADQogICAgKy8qKiBAZmlsZQ0KICAgICsNCiAgICArICBD b3B5cmlnaHQgKGMpIDIwMjEsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4N CiAgICArDQogICAgKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRl bnQNCiAgICArKiovDQogICAgKw0KICAgICsjaWZuZGVmIFBMQVRGT1JNX0hfDQogICAgKyNkZWZp bmUgUExBVEZPUk1fSF8NCiAgICArDQogICAgKyNkZWZpbmUgRU5BQkxFX01FTV9NQVBQRURfVElN RVINCiAgICArDQogICAgKyNpZmRlZiBFTkFCTEVfTUVNX01BUFBFRF9USU1FUg0KICAgICsvLyBS RUZDTEsgQ05UQ29udHJvbA0KICAgICsjZGVmaW5lIE1PUkVMTE9fU1lTVEVNX1RJTUVSX0JBU0Vf QUREUkVTUyAgIDB4MkE0MzAwMDANCiAgICArLy8gUkVGQ0xLIENOVFJlYWQNCiAgICArI2RlZmlu ZSBNT1JFTExPX0NOVF9SRUFEX0JBU0VfQUREUkVTUyAgICAgICAweDJBODAwMDAwDQogICAgKyNl bHNlDQogICAgKyNkZWZpbmUgTU9SRUxMT19TWVNURU1fVElNRVJfQkFTRV9BRERSRVNTICAgMHhG RkZGRkZGRkZGRkZGRkZGDQogICAgKyNkZWZpbmUgTU9SRUxMT19DTlRfUkVBRF9CQVNFX0FERFJF U1MgICAgICAgMHhGRkZGRkZGRkZGRkZGRkZGDQogICAgKyNlbmRpZg0KICAgICsNCiAgICArLy8g R1QgQmxvY2sgVGltZXINCiAgICArLy8gQVBfUkVGQ0xLIENOVENUTA0KICAgICsjZGVmaW5lIE1P UkVMTE9fR1RfQkxPQ0tfQ1RMX0JBU0UgICAgICAgICAgIDB4MkE4MTAwMDANCiAgICArI2RlZmlu ZSBNT1JFTExPX1RJTUVSX0ZSQU1FU19DT1VOVCAgICAgICAgICAyDQogICAgKw0KICAgICsvLyBH VCBCbG9jayBUaW1lciBGcmFtZXMNCiAgICArLy8gQVBfUkVGQ0xLX05TIENOVEJhc2UwDQogICAg KyNkZWZpbmUgTU9SRUxMT19HVF9CTE9DS19GUkFNRTBfQ1RMX0JBU0UgICAgICAweDJBODMwMDAw DQogICAgKyNkZWZpbmUgTU9SRUxMT19HVF9CTE9DS19GUkFNRTBfQ1RMX0VMMF9CQVNFICAweEZG RkZGRkZGRkZGRkZGRkYNCiAgICArI2RlZmluZSBNT1JFTExPX0dUX0JMT0NLX0ZSQU1FMF9HU0lW ICAgICAgICAgIDkyDQogICAgKw0KICAgICsvLyBBUF9SRUZDTEtfUyBDTlRCYXNlMQ0KICAgICsj ZGVmaW5lIE1PUkVMTE9fR1RfQkxPQ0tfRlJBTUUxX0NUTF9CQVNFICAgICAgMHgyQTgyMDAwMA0K ICAgICsjZGVmaW5lIE1PUkVMTE9fR1RfQkxPQ0tfRlJBTUUxX0NUTF9FTDBfQkFTRSAgMHhGRkZG RkZGRkZGRkZGRkZGDQogICAgKyNkZWZpbmUgTU9SRUxMT19HVF9CTE9DS19GUkFNRTFfR1NJViAg ICAgICAgICA5MQ0KICAgICsNCiAgICArI2RlZmluZSBHVERUX1RJTUVSX0VER0VfVFJJR0dFUkVE ICAgXA0KICAgICsgICAgICAgICAgRUZJX0FDUElfNl8zX0dURFRfVElNRVJfRkxBR19USU1FUl9J TlRFUlJVUFRfTU9ERQ0KICAgICsjZGVmaW5lIEdURFRfVElNRVJfTEVWRUxfVFJJR0dFUkVEICAw DQogICAgKyNkZWZpbmUgR1REVF9USU1FUl9BQ1RJVkVfTE9XICAgICAgIFwNCiAgICArICAgICAg ICAgIEVGSV9BQ1BJXzZfM19HVERUX1RJTUVSX0ZMQUdfVElNRVJfSU5URVJSVVBUX1BPTEFSSVRZ DQogICAgKyNkZWZpbmUgR1REVF9USU1FUl9BQ1RJVkVfSElHSCAgICAgIDANCiAgICArI2RlZmlu ZSBHVERUX1RJTUVSX1NBVkVfQ09OVEVYVCAgICAgXA0KICAgICsgICAgICAgICAgRUZJX0FDUElf Nl8zX0dURFRfVElNRVJfRkxBR19BTFdBWVNfT05fQ0FQQUJJTElUWQ0KICAgICsjZGVmaW5lIEdU RFRfVElNRVJfTE9TRV9DT05URVhUICAgICAwDQogICAgKw0KICAgICsjZGVmaW5lIE1PUkVMTE9f R1REVF9HVElNRVJfRkxBR1MgICAgICAgKEdURFRfVElNRVJfTE9TRV9DT05URVhUICAgfCBcDQog ICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1REVF9USU1FUl9B Q1RJVkVfTE9XICAgfCBcDQogICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR1REVF9USU1FUl9MRVZFTF9UUklHR0VSRUQpDQogICAgKw0KICAgICsvLyBHVCBCbG9j ayBUaW1lciBGbGFncw0KICAgICsjZGVmaW5lIEdUWF9USU1FUl9FREdFX1RSSUdHRVJFRCAgICBc DQogICAgKyAgICAgICAgICBFRklfQUNQSV82XzNfR1REVF9HVF9CTE9DS19USU1FUl9GTEFHX1RJ TUVSX0lOVEVSUlVQVF9NT0RFDQogICAgKyNkZWZpbmUgR1RYX1RJTUVSX0xFVkVMX1RSSUdHRVJF RCAgIDANCiAgICArI2RlZmluZSBHVFhfVElNRVJfQUNUSVZFX0xPVyAgICAgICAgXA0KICAgICsg ICAgICAgICAgRUZJX0FDUElfNl8zX0dURFRfR1RfQkxPQ0tfVElNRVJfRkxBR19USU1FUl9JTlRF UlJVUFRfUE9MQVJJVFkNCiAgICArI2RlZmluZSBHVFhfVElNRVJfQUNUSVZFX0hJR0ggICAgICAg MA0KICAgICsNCiAgICArI2RlZmluZSBNT1JFTExPX0dUWF9USU1FUl9GTEFHUyAgICAgICAgIChH VFhfVElNRVJfQUNUSVZFX0hJR0ggfCBcDQogICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR1RYX1RJTUVSX0xFVkVMX1RSSUdHRVJFRCkNCiAgICArDQogICAgKyNk ZWZpbmUgR1RYX1RJTUVSX1NFQ1VSRSAgICAgICAgICAgIFwNCiAgICArICAgICAgICAgIEVGSV9B Q1BJXzZfM19HVERUX0dUX0JMT0NLX0NPTU1PTl9GTEFHX1NFQ1VSRV9USU1FUg0KICAgICsjZGVm aW5lIEdUWF9USU1FUl9OT05fU0VDVVJFICAgICAgICAwDQogICAgKyNkZWZpbmUgR1RYX1RJTUVS X1NBVkVfQ09OVEVYVCAgICAgIFwNCiAgICArICAgICAgICAgIEVGSV9BQ1BJXzZfM19HVERUX0dU X0JMT0NLX0NPTU1PTl9GTEFHX0FMV0FZU19PTl9DQVBBQklMSVRZDQogICAgKyNkZWZpbmUgR1RY X1RJTUVSX0xPU0VfQ09OVEVYVCAgICAgIDANCiAgICArDQogICAgKyNkZWZpbmUgTU9SRUxMT19H VFhfQ09NTU9OX0ZMQUdTX1MgICAgICAoR1RYX1RJTUVSX1NBVkVfQ09OVEVYVCAgICAgIHwgXA0K ICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUWF9USU1FUl9T RUNVUkUpDQogICAgKyNkZWZpbmUgTU9SRUxMT19HVFhfQ09NTU9OX0ZMQUdTX05TICAgICAoR1RY X1RJTUVSX1NBVkVfQ09OVEVYVCAgICAgIHwgXA0KICAgICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdUWF9USU1FUl9OT05fU0VDVVJFKQ0KICAgICsNCiAgICArLy8g V2F0Y2hkb2cNCiAgICArI2RlZmluZSBTQlNBX1dBVENIRE9HX0VER0VfVFJJR0dFUkVEICAgXA0K ICAgICsgICAgICAgICAgRUZJX0FDUElfNl8zX0dURFRfU0JTQV9HRU5FUklDX1dBVENIRE9HX0ZM QUdfVElNRVJfSU5URVJSVVBUX01PREUNCiAgICArI2RlZmluZSBTQlNBX1dBVENIRE9HX0xFVkVM X1RSSUdHRVJFRCAgMA0KICAgICsjZGVmaW5lIFNCU0FfV0FUQ0hET0dfQUNUSVZFX0xPVyAgICAg ICBcDQogICAgKyAgICAgICAgICBFRklfQUNQSV82XzNfR1REVF9TQlNBX0dFTkVSSUNfV0FUQ0hE T0dfRkxBR19USU1FUl9JTlRFUlJVUFRfUE9MQVJJVFkNCiAgICArI2RlZmluZSBTQlNBX1dBVENI RE9HX0FDVElWRV9ISUdIICAgICAgMA0KICAgICsjZGVmaW5lIFNCU0FfV0FUQ0hET0dfU0VDVVJF ICAgICAgICAgICBcDQogICAgKyAgICAgICAgICBFRklfQUNQSV82XzNfR1REVF9TQlNBX0dFTkVS SUNfV0FUQ0hET0dfRkxBR19TRUNVUkVfVElNRVINCiAgICArI2RlZmluZSBTQlNBX1dBVENIRE9H X05PTl9TRUNVUkUgICAgICAgMA0KICAgICsNCiAgICArI2RlZmluZSBNT1JFTExPX1NCU0FfV0FU Q0hET0dfRkxBR1MgICAgICAgIChTQlNBX1dBVENIRE9HX05PTl9TRUNVUkUgICAgICAgfCBcDQog ICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0JTQV9XQVRD SERPR19BQ1RJVkVfSElHSCAgICB8IFwNCiAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTQlNBX1dBVENIRE9HX0xFVkVMX1RSSUdHRVJFRCkNCiAgICArDQog ICAgKyNlbmRpZiAvLyBQTEFURk9STV9IXw0KICAgIGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9BUk0v TW9yZWxsby9Db25maWd1cmF0aW9uTWFuYWdlci9Db25maWd1cmF0aW9uTWFuYWdlckR4ZS9Db25m aWd1cmF0aW9uTWFuYWdlci5jIGIvUGxhdGZvcm0vQVJNL01vcmVsbG8vQ29uZmlndXJhdGlvbk1h bmFnZXIvQ29uZmlndXJhdGlvbk1hbmFnZXJEeGUvQ29uZmlndXJhdGlvbk1hbmFnZXIuYw0KICAg IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQogICAgaW5kZXggMDAwMDAwMDAwMDAwLi42NWYwYmNmYzE1 ZDQNCiAgICAtLS0gL2Rldi9udWxsDQogICAgKysrIGIvUGxhdGZvcm0vQVJNL01vcmVsbG8vQ29u ZmlndXJhdGlvbk1hbmFnZXIvQ29uZmlndXJhdGlvbk1hbmFnZXJEeGUvQ29uZmlndXJhdGlvbk1h bmFnZXIuYw0KICAgIEBAIC0wLDAgKzEsMTE3MiBAQA0KICAgICsvKiogQGZpbGUNCiAgICArICBD b25maWd1cmF0aW9uIE1hbmFnZXIgRHhlDQogICAgKw0KICAgICsgIENvcHlyaWdodCAoYykgMjAy MSwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KICAgICsNCiAgICArICBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KICAgICsNCiAgICAr ICBAcGFyIEdsb3NzYXJ5Og0KICAgICsgICAgLSBDbSBvciBDTSAgIC0gQ29uZmlndXJhdGlvbiBN YW5hZ2VyDQogICAgKyAgICAtIE9iaiBvciBPQkogLSBPYmplY3QNCiAgICArKiovDQogICAgKw0K ICAgICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9EZWJ1Z1BvcnQyVGFibGUuaD4NCiAgICAr I2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvU2VyaWFsUG9ydENvbnNvbGVSZWRpcmVjdGlvblRh YmxlLmg+DQogICAgKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQogICAgKyNpbmNsdWRl IDxMaWJyYXJ5L1VlZmlCb290U2VydmljZXNUYWJsZUxpYi5oPg0KICAgICsjaW5jbHVkZSA8UHJv dG9jb2wvQ29uZmlndXJhdGlvbk1hbmFnZXJQcm90b2NvbC5oPg0KICAgICsNCiAgICArI2luY2x1 ZGUgIkNvbmZpZ3VyYXRpb25NYW5hZ2VyRnZwLmgiDQogICAgKyNpbmNsdWRlICJDb25maWd1cmF0 aW9uTWFuYWdlci5oIg0KICAgICsjaW5jbHVkZSAiUGxhdGZvcm0uaCINCiAgICArDQogICAgK2V4 dGVybiBFREtJSV9QTEFURk9STV9SRVBPU0lUT1JZX0lORk8gTW9yZWxsb1JlcG9zaXRvcnlJbmZv Ow0KICAgICsNCiAgICArLy8gVGhlIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24gcmVwb3NpdG9yeSBp bmZvcm1hdGlvbi4NCiAgICArRURLSUlfQ09NTU9OX1BMQVRGT1JNX1JFUE9TSVRPUllfSU5GTyBD b21tb25QbGF0Zm9ybUluZm8gPSB7DQogICAgKyAgLy8gQ29uZmlndXJhdGlvbiBNYW5hZ2VyIGlu Zm9ybWF0aW9uDQogICAgKyAgeyBDT05GSUdVUkFUSU9OX01BTkFHRVJfUkVWSVNJT04sIENGR19N R1JfT0VNX0lEIH0sDQogICAgKw0KICAgICsgIC8vIEJvb3QgYXJjaGl0ZWN0dXJlIGluZm9ybWF0 aW9uDQogICAgKyAgeyBFRklfQUNQSV82XzNfQVJNX1BTQ0lfQ09NUExJQU5UIH0sICAgICAgICAg ICAgICAvLyBCb290QXJjaEZsYWdzDQogICAgKw0KICAgICsjaWZkZWYgSEVBRExFU1NfUExBVEZP Uk0NCiAgICArICAvLyBGaXhlZCBmZWF0dXJlIGZsYWcgaW5mb3JtYXRpb24NCiAgICArICB7IEVG SV9BQ1BJXzZfM19IRUFETEVTUyB9LCAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpeGVkIGZl YXR1cmUgZmxhZ3MNCiAgICArI2VuZGlmDQogICAgKw0KICAgICsgIC8vIFBvd2VyIG1hbmFnZW1l bnQgcHJvZmlsZSBpbmZvcm1hdGlvbg0KICAgICsgIHsgRUZJX0FDUElfNl8zX1BNX1BST0ZJTEVf RU5URVJQUklTRV9TRVJWRVIgfSwgICAgLy8gUG93ZXJNYW5hZ2VtZW50IFByb2ZpbGUNCiAgICAr DQogICAgKyAgLyogR0lDIENQVSBJbnRlcmZhY2UgaW5mb3JtYXRpb24NCiAgICArICAgICBHSUNf RU5UUlkgKENQVUludGVyZmFjZU51bWJlciwgTXBpZHIsIFBtdUlycSwgVkdpY0lycSwgR2ljUmVk aXN0QmFzZSwNCiAgICArICAgICAgICAgICAgICAgIEVuZXJneUVmZmljaWVuY3ksIFNwZUlycSwg UHJveGltaXR5RG9tYWluLCBDbG9ja0RvbWFpbikNCiAgICArICAqLw0KICAgICsgIHsNCiAgICAr ICAgIEdJQ0NfRU5UUlkgKDAsIEdFVF9NUElEMyAoMHgwLCAweDAsIDB4MCwgMHgwKSwgMjMsIDI1 LCAwLCAwLCAyMSwgMCwgMCksDQogICAgKyAgICBHSUNDX0VOVFJZICgxLCBHRVRfTVBJRDMgKDB4 MCwgMHgwLCAweDEsIDB4MCksIDIzLCAyNSwgMCwgMCwgMjEsIDAsIDApLA0KICAgICsgICAgR0lD Q19FTlRSWSAoMiwgR0VUX01QSUQzICgweDAsIDB4MSwgMHgwLCAweDApLCAyMywgMjUsIDAsIDAs IDIxLCAwLCAwKSwNCiAgICArICAgIEdJQ0NfRU5UUlkgKDMsIEdFVF9NUElEMyAoMHgwLCAweDEs IDB4MSwgMHgwKSwgMjMsIDI1LCAwLCAwLCAyMSwgMCwgMCksDQogICAgKyAgfSwNCiAgICArDQog ICAgKyAgLy8gR0lDIERpc3RyaWJ1dG9yIEluZm8NCiAgICArICB7DQogICAgKyAgICBGaXhlZFBj ZEdldDY0IChQY2RHaWNEaXN0cmlidXRvckJhc2UpLCAgLy8gVUlOVDY0ICBQaHlzaWNhbEJhc2VB ZGRyZXNzDQogICAgKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ly8gVUlOVDMyICBTeXN0ZW1WZWN0b3JCYXNlDQogICAgKyAgICAzICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLy8gVUlOVDggICBHaWNWZXJzaW9uDQogICAgKyAgfSwNCiAg ICArDQogICAgKyAgLy8gR0lDIFJlLURpc3RyaWJ1dG9yIEluZm8NCiAgICArICB7DQogICAgKyAg ICAvLyBVSU5UNjQgIERpc2NvdmVyeVJhbmdlQmFzZUFkZHJlc3MNCiAgICArICAgIEZpeGVkUGNk R2V0NjQgKFBjZEdpY1JlZGlzdHJpYnV0b3JzQmFzZSksDQogICAgKyAgICAvLyBVSU5UMzIgIERp c2NvdmVyeVJhbmdlTGVuZ3RoDQogICAgKyAgICBTSVpFXzFNQg0KICAgICsgIH0sDQogICAgKw0K ICAgICsgIC8vIEdlbmVyaWMgVGltZXIgSW5mbw0KICAgICsgIHsNCiAgICArICAgIC8vIFRoZSBw aHlzaWNhbCBiYXNlIGFkZHJlc3MgZm9yIHRoZSBjb3VudGVyIGNvbnRyb2wgZnJhbWUNCiAgICAr ICAgIE1PUkVMTE9fU1lTVEVNX1RJTUVSX0JBU0VfQUREUkVTUywNCiAgICArICAgIC8vIFRoZSBw aHlzaWNhbCBiYXNlIGFkZHJlc3MgZm9yIHRoZSBjb3VudGVyIHJlYWQgZnJhbWUNCiAgICArICAg IE1PUkVMTE9fQ05UX1JFQURfQkFTRV9BRERSRVNTLA0KICAgICsgICAgLy8gVGhlIHNlY3VyZSBQ TDEgdGltZXIgaW50ZXJydXB0DQogICAgKyAgICBGaXhlZFBjZEdldDMyIChQY2RBcm1BcmNoVGlt ZXJTZWNJbnRyTnVtKSwNCiAgICArICAgIC8vIFRoZSBzZWN1cmUgUEwxIHRpbWVyIGZsYWdzDQog ICAgKyAgICBNT1JFTExPX0dURFRfR1RJTUVSX0ZMQUdTLA0KICAgICsgICAgLy8gVGhlIG5vbi1z ZWN1cmUgUEwxIHRpbWVyIGludGVycnVwdA0KICAgICsgICAgRml4ZWRQY2RHZXQzMiAoUGNkQXJt QXJjaFRpbWVySW50ck51bSksDQogICAgKyAgICAvLyBUaGUgbm9uLXNlY3VyZSBQTDEgdGltZXIg ZmxhZ3MNCiAgICArICAgIE1PUkVMTE9fR1REVF9HVElNRVJfRkxBR1MsDQogICAgKyAgICAvLyBU aGUgdmlydHVhbCB0aW1lciBpbnRlcnJ1cHQNCiAgICArICAgIEZpeGVkUGNkR2V0MzIgKFBjZEFy bUFyY2hUaW1lclZpcnRJbnRyTnVtKSwNCiAgICArICAgIC8vIFRoZSB2aXJ0dWFsIHRpbWVyIGZs YWdzDQogICAgKyAgICBNT1JFTExPX0dURFRfR1RJTUVSX0ZMQUdTLA0KICAgICsgICAgLy8gVGhl IG5vbi1zZWN1cmUgUEwyIHRpbWVyIGludGVycnVwdA0KICAgICsgICAgRml4ZWRQY2RHZXQzMiAo UGNkQXJtQXJjaFRpbWVySHlwSW50ck51bSksDQogICAgKyAgICAvLyBUaGUgbm9uLXNlY3VyZSBQ TDIgdGltZXIgZmxhZ3MNCiAgICArICAgIE1PUkVMTE9fR1REVF9HVElNRVJfRkxBR1MNCiAgICAr ICB9LA0KICAgICsNCiAgICArICAvLyBHZW5lcmljIFRpbWVyIEJsb2NrIEluZm9ybWF0aW9uDQog ICAgKyAgew0KICAgICsgICAgew0KICAgICsgICAgIC8vIFRoZSBwaHlzaWNhbCBiYXNlIGFkZHJl c3MgZm9yIHRoZSBHVCBCbG9jayBUaW1lciBzdHJ1Y3R1cmUNCiAgICArICAgICAgTU9SRUxMT19H VF9CTE9DS19DVExfQkFTRSwNCiAgICArICAgICAgLy8gVGhlIG51bWJlciBvZiB0aW1lciBmcmFt ZXMgaW1wbGVtZW50ZWQgaW4gdGhlIEdUIEJsb2NrDQogICAgKyAgICAgIE1PUkVMTE9fVElNRVJf RlJBTUVTX0NPVU5ULA0KICAgICsgICAgICAvLyBSZWZlcmVuY2UgdG9rZW4gZm9yIHRoZSBHVCBC bG9jayB0aW1lciBmcmFtZSBsaXN0DQogICAgKyAgICAgIFJFRkVSRU5DRV9UT0tFTiAoR1RCbG9j azBUaW1lckluZm8pDQogICAgKyAgICB9DQogICAgKyAgfSwNCiAgICArDQogICAgKyAgLy8gR1Qg QmxvY2sgVGltZXIgRnJhbWVzDQogICAgKyAgew0KICAgICsgICAgLy8gRnJhbWUgMA0KICAgICsg ICAgew0KICAgICsgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v IFVJTlQ4ICAgRnJhbWVOdW1iZXINCiAgICArICAgICAgTU9SRUxMT19HVF9CTE9DS19GUkFNRTBf Q1RMX0JBU0UsICAgICAvLyBVSU5UNjQgIFBoeXNpY2FsQWRkcmVzc0NudEJhc2UNCiAgICArICAg ICAgTU9SRUxMT19HVF9CTE9DS19GUkFNRTBfQ1RMX0VMMF9CQVNFLCAvLyBVSU5UNjQgIFBoeXNp Y2FsQWRkcmVzc0NudEVMMEJhc2UNCiAgICArICAgICAgTU9SRUxMT19HVF9CTE9DS19GUkFNRTBf R1NJViwgICAgICAgICAvLyBVSU5UMzIgIFBoeXNpY2FsVGltZXJHU0lWDQogICAgKyAgICAgIE1P UkVMTE9fR1RYX1RJTUVSX0ZMQUdTLCAgICAgICAgICAgICAgLy8gVUlOVDMyICBQaHlzaWNhbFRp bWVyRmxhZ3MNCiAgICArICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAvLyBVSU5UMzIgIFZpcnR1YWxUaW1lckdTSVYNCiAgICArICAgICAgMCwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvLyBVSU5UMzIgIFZpcnR1YWxUaW1lckZsYWdzDQogICAg KyAgICAgIE1PUkVMTE9fR1RYX0NPTU1PTl9GTEFHU19OUyAgICAgICAgICAgLy8gVUlOVDMyICBD b21tb25GbGFncw0KICAgICsgICAgfSwNCiAgICArICAgIC8vIEZyYW1lIDENCiAgICArICAgIHsN CiAgICArICAgICAgMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVSU5U OCAgIEZyYW1lTnVtYmVyDQogICAgKyAgICAgIE1PUkVMTE9fR1RfQkxPQ0tfRlJBTUUxX0NUTF9C QVNFLCAgICAgLy8gVUlOVDY0ICBQaHlzaWNhbEFkZHJlc3NDbnRCYXNlDQogICAgKyAgICAgIE1P UkVMTE9fR1RfQkxPQ0tfRlJBTUUxX0NUTF9FTDBfQkFTRSwgLy8gVUlOVDY0ICBQaHlzaWNhbEFk ZHJlc3NDbnRFTDBCYXNlDQogICAgKyAgICAgIE1PUkVMTE9fR1RfQkxPQ0tfRlJBTUUxX0dTSVYs ICAgICAgICAgLy8gVUlOVDMyICBQaHlzaWNhbFRpbWVyR1NJVg0KICAgICsgICAgICBNT1JFTExP X0dUWF9USU1FUl9GTEFHUywgICAgICAgICAgICAgIC8vIFVJTlQzMiAgUGh5c2ljYWxUaW1lckZs YWdzDQogICAgKyAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g VUlOVDMyICBWaXJ0dWFsVGltZXJHU0lWDQogICAgKyAgICAgIDAsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLy8gVUlOVDMyICBWaXJ0dWFsVGltZXJGbGFncw0KICAgICsgICAg ICBNT1JFTExPX0dUWF9DT01NT05fRkxBR1NfUyAgICAgICAgICAgIC8vIFVJTlQzMiAgQ29tbW9u RmxhZ3MNCiAgICArICAgIH0sDQogICAgKyAgfSwNCiAgICArDQogICAgKyAgLy8gV2F0Y2hkb2cg SW5mbw0KICAgICsgIHsNCiAgICArICAgIC8vIFRoZSBwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2Yg dGhlIFNCU0EgV2F0Y2hkb2cgY29udHJvbCBmcmFtZQ0KICAgICsgICAgRml4ZWRQY2RHZXQ2NCAo UGNkR2VuZXJpY1dhdGNoZG9nQ29udHJvbEJhc2UpLA0KICAgICsgICAgLy8gVGhlIHBoeXNpY2Fs IGJhc2UgYWRkcmVzcyBvZiB0aGUgU0JTQSBXYXRjaGRvZyByZWZyZXNoIGZyYW1lDQogICAgKyAg ICBGaXhlZFBjZEdldDY0IChQY2RHZW5lcmljV2F0Y2hkb2dSZWZyZXNoQmFzZSksDQogICAgKyAg ICAvLyBUaGUgd2F0Y2hkb2cgaW50ZXJydXB0DQogICAgKyAgICBGaXhlZFBjZEdldDMyIChQY2RH ZW5lcmljV2F0Y2hkb2dFbDJJbnRyTnVtKSwNCiAgICArICAgIC8vIFRoZSB3YXRjaGRvZyBmbGFn cw0KICAgICsgICAgTU9SRUxMT19TQlNBX1dBVENIRE9HX0ZMQUdTDQogICAgKyAgfSwNCiAgICAr DQogICAgKyAgLy8gU1BDUiBTZXJpYWwgUG9ydA0KICAgICsgIHsNCiAgICArICAgIEZpeGVkUGNk R2V0NjQgKFBjZFNlcmlhbFJlZ2lzdGVyQmFzZSksICAgICAgICAgICAgICAgICAgLy8gQmFzZUFk ZHJlc3MNCiAgICArICAgIEZpeGVkUGNkR2V0MzIgKFBMMDExVWFydEludGVycnVwdCksICAgICAg ICAgICAgICAgICAgICAgLy8gSW50ZXJydXB0DQogICAgKyAgICBGaXhlZFBjZEdldDY0IChQY2RV YXJ0RGVmYXVsdEJhdWRSYXRlKSwgICAgICAgICAgICAgICAgIC8vIEJhdWRSYXRlDQogICAgKyAg ICBGaXhlZFBjZEdldDMyIChQTDAxMVVhcnRDbGtJbkh6KSwgICAgICAgICAgICAgICAgICAgICAg IC8vIENsb2NrDQogICAgKyAgICBFRklfQUNQSV9EQkcyX1BPUlRfU1VCVFlQRV9TRVJJQUxfQVJN X1NCU0FfR0VORVJJQ19VQVJUIC8vIFBvcnQgc3VidHlwZQ0KW1NBTUldIFRoZSBwYXRjaCBhdCBo dHRwczovL2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvdG9waWMvODE5MTczODcjNzM3ODcgd2lsbCB1 cGRhdGUgdGhlIFNzZHRTZXJpYWxQb3J0IGdlbmVyYXRvciB0byB1c2UgJ0FSTUhCMDAwJyBhcyB0 aGUgX0hJRCBmb3IgU0JTQSBVQVJUcy4NCklmIGFuIE9TIGRvZXMgbm90IGltcGxlbWVudCBhbiBT QlNBIFVBUlQgZHJpdmVyLCB0aGlzIGRlc2NyaXB0aW9uIG9mIFVBUlQgd2lsbCBub3Qgd29yay4g Q2FuIHlvdSBjaGVjayBpZiB0aGlzIFVBUlQgaXMgUEwwMTEgYW5kIGlmIHNvLCBjaGFuZ2UgdGhl IFBvcnQgc3VidHlwZSB0byBQTDAxMSwgcGxlYXNlPw0KVGhlIHNhbWUgd291bGQgYXBwbHkgZm9y IHRoZSBTZXJpYWwgcG9ydCBkZXNjcmliZWQgYmVsb3cuDQpbL1NBTUldDQogICAgKyAgfSwNCiAg ICArDQogICAgKyAgLy8gRGVidWcgU2VyaWFsIFBvcnQNCiAgICArICB7DQogICAgKyAgICBGaXhl ZFBjZEdldDY0IChQY2RTZXJpYWxEYmdSZWdpc3RlckJhc2UpLCAgICAgICAgICAgICAgIC8vIEJh c2VBZGRyZXNzDQogICAgKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8vIEludGVycnVwdCAtdW51c2VkDQogICAgKyAgICBGaXhlZFBj ZEdldDY0IChQY2RTZXJpYWxEYmdVYXJ0QmF1ZFJhdGUpLCAgICAgICAgICAgICAgIC8vIEJhdWRS YXRlDQogICAgKyAgICBGaXhlZFBjZEdldDMyIChQY2RTZXJpYWxEYmdVYXJ0Q2xrSW5IeiksICAg ICAgICAgICAgICAgIC8vIENsb2NrDQogICAgKyAgICBFRklfQUNQSV9EQkcyX1BPUlRfU1VCVFlQ RV9TRVJJQUxfQVJNX1NCU0FfR0VORVJJQ19VQVJUIC8vIFBvcnQgc3VidHlwZQ0KICAgICsgIH0s DQogICAgKw0KICAgICsgIC8vIFByb2Nlc3NvciBIaWVyYXJjaHkgTm9kZXMNCiAgICArICB7DQog ICAgKyAgICAvLyBQYWNrYWdlDQogICAgKyAgICB7DQogICAgKyAgICAgIC8vIENNX09CSkVDVF9U T0tFTiAgVG9rZW4NCiAgICArICAgICAgUkVGRVJFTkNFX1RPS0VOIChQcm9jSGllcmFyY2h5SW5m b1swXSksDQogICAgKyAgICAgIC8vIFVJTlQzMiAgRmxhZ3MNCiAgICArICAgICAgUFJPQ19OT0RF X0ZMQUdTICgNCiAgICArICAgICAgICBFRklfQUNQSV82XzNfUFBUVF9QQUNLQUdFX1BIWVNJQ0FM LA0KICAgICsgICAgICAgIEVGSV9BQ1BJXzZfM19QUFRUX1BST0NFU1NPUl9JRF9JTlZBTElELA0K ICAgICsgICAgICAgIEVGSV9BQ1BJXzZfM19QUFRUX1BST0NFU1NPUl9JU19OT1RfVEhSRUFELA0K ICAgICsgICAgICAgIEVGSV9BQ1BJXzZfM19QUFRUX05PREVfSVNfTk9UX0xFQUYsDQogICAgKyAg ICAgICAgRUZJX0FDUElfNl8zX1BQVFRfSU1QTEVNRU5UQVRJT05fSURFTlRJQ0FMDQogICAgKyAg ICAgICksDQogICAgKyAgICAgIC8vIENNX09CSkVDVF9UT0tFTiAgUGFyZW50VG9rZW4NCiAgICAr ICAgICAgQ01fTlVMTF9UT0tFTiwNCiAgICArICAgICAgLy8gQ01fT0JKRUNUX1RPS0VOICBHaWND VG9rZW4NCiAgICArICAgICAgQ01fTlVMTF9UT0tFTiwNCiAgICArICAgICAgLy8gVUlOVDMyICBO b09mUHJpdmF0ZVJlc291cmNlcw0KICAgICsgICAgICBTT0NfUkVTT1VSQ0VfQ09VTlQsDQogICAg KyAgICAgIC8vIENNX09CSkVDVF9UT0tFTiAgUHJpdmF0ZVJlc291cmNlc0FycmF5VG9rZW4NCiAg ICArICAgICAgUkVGRVJFTkNFX1RPS0VOIChTb2NSZXNvdXJjZXMpDQogICAgKyAgICB9LA0KICAg ICsNCiAgICArICAgIC8vIENsdXN0ZXIwDQogICAgKyAgICB7DQogICAgKyAgICAgIC8vIENNX09C SkVDVF9UT0tFTiAgVG9rZW4NCiAgICArICAgICAgUkVGRVJFTkNFX1RPS0VOIChQcm9jSGllcmFy Y2h5SW5mb1sxXSksDQogICAgKyAgICAgIC8vIFVJTlQzMiAgRmxhZ3MNCiAgICArICAgICAgUFJP Q19OT0RFX0ZMQUdTICgNCiAgICArICAgICAgICBFRklfQUNQSV82XzNfUFBUVF9QQUNLQUdFX05P VF9QSFlTSUNBTCwNCiAgICArICAgICAgICBFRklfQUNQSV82XzNfUFBUVF9QUk9DRVNTT1JfSURf SU5WQUxJRCwNCiAgICArICAgICAgICBFRklfQUNQSV82XzNfUFBUVF9QUk9DRVNTT1JfSVNfTk9U X1RIUkVBRCwNCiAgICArICAgICAgICBFRklfQUNQSV82XzNfUFBUVF9OT0RFX0lTX05PVF9MRUFG LA0KICAgICsgICAgICAgIEVGSV9BQ1BJXzZfM19QUFRUX0lNUExFTUVOVEFUSU9OX0lERU5USUNB TA0KICAgICsgICAgICApLA0KICAgICsgICAgICAvLyBDTV9PQkpFQ1RfVE9LRU4gIFBhcmVudFRv a2VuDQogICAgKyAgICAgIFJFRkVSRU5DRV9UT0tFTiAoUHJvY0hpZXJhcmNoeUluZm9bMF0pLCAv LyAtPiBQYWNrYWdlDQogICAgKyAgICAgIC8vIENNX09CSkVDVF9UT0tFTiAgR2ljQ1Rva2VuDQog ICAgKyAgICAgIENNX05VTExfVE9LRU4sDQogICAgKyAgICAgIC8vIFVJTlQzMiAgTm9PZlByaXZh dGVSZXNvdXJjZXMNCiAgICArICAgICAgQ0xVU1RFUl9SRVNPVVJDRV9DT1VOVCwNCiAgICArICAg ICAgLy8gQ01fT0JKRUNUX1RPS0VOICBQcml2YXRlUmVzb3VyY2VzQXJyYXlUb2tlbg0KICAgICsg ICAgICBSRUZFUkVOQ0VfVE9LRU4gKENsdXN0ZXJSZXNvdXJjZXMpDQogICAgKyAgICB9LA0KICAg ICsgICAgLy8gQ2x1c3RlcjENCiAgICArICAgIHsNCiAgICArICAgICAgLy8gQ01fT0JKRUNUX1RP S0VOICBUb2tlbg0KICAgICsgICAgICBSRUZFUkVOQ0VfVE9LRU4gKFByb2NIaWVyYXJjaHlJbmZv WzJdKSwNCiAgICArICAgICAgLy8gVUlOVDMyICBGbGFncw0KICAgICsgICAgICBQUk9DX05PREVf RkxBR1MgKA0KICAgICsgICAgICAgIEVGSV9BQ1BJXzZfM19QUFRUX1BBQ0tBR0VfTk9UX1BIWVNJ Q0FMLA0KICAgICsgICAgICAgIEVGSV9BQ1BJXzZfM19QUFRUX1BST0NFU1NPUl9JRF9JTlZBTElE LA0KICAgICsgICAgICAgIEVGSV9BQ1BJXzZfM19QUFRUX1BST0NFU1NPUl9JU19OT1RfVEhSRUFE LA0KICAgICsgICAgICAgIEVGSV9BQ1BJXzZfM19QUFRUX05PREVfSVNfTk9UX0xFQUYsDQogICAg KyAgICAgICAgRUZJX0FDUElfNl8zX1BQVFRfSU1QTEVNRU5UQVRJT05fSURFTlRJQ0FMDQogICAg KyAgICAgICksDQogICAgKyAgICAgIC8vIENNX09CSkVDVF9UT0tFTiAgUGFyZW50VG9rZW4NCiAg ICArICAgICAgUkVGRVJFTkNFX1RPS0VOIChQcm9jSGllcmFyY2h5SW5mb1swXSksIC8vIC0+IFBh Y2thZ2UNCiAgICArICAgICAgLy8gQ01fT0JKRUNUX1RPS0VOICBHaWNDVG9rZW4NCiAgICArICAg ICAgQ01fTlVMTF9UT0tFTiwNCiAgICArICAgICAgLy8gVUlOVDMyICBOb09mUHJpdmF0ZVJlc291 cmNlcw0KICAgICsgICAgICBDTFVTVEVSX1JFU09VUkNFX0NPVU5ULA0KICAgICsgICAgICAvLyBD TV9PQkpFQ1RfVE9LRU4gIFByaXZhdGVSZXNvdXJjZXNBcnJheVRva2VuDQogICAgKyAgICAgIFJF RkVSRU5DRV9UT0tFTiAoQ2x1c3RlclJlc291cmNlcykNCiAgICArICAgIH0sDQogICAgKyAgICAv LyBDbHVzdGVyMCAtIENwdTANCiAgICArICAgIHsNCiAgICArICAgICAgLy8gQ01fT0JKRUNUX1RP S0VOICBUb2tlbg0KICAgICsgICAgICBSRUZFUkVOQ0VfVE9LRU4gKFByb2NIaWVyYXJjaHlJbmZv WzNdKSwNCiAgICArICAgICAgLy8gVUlOVDMyICBGbGFncw0KICAgICsgICAgICBQUk9DX05PREVf RkxBR1MgKA0KICAgICsgICAgICAgIEVGSV9BQ1BJXzZfM19QUFRUX1BBQ0tBR0VfTk9UX1BIWVNJ Q0FMLA0KICAgICsgICAgICAgIEVGSV9BQ1BJXzZfM19QUFRUX1BST0NFU1NPUl9JRF9WQUxJRCwN CiAgICArICAgICAgICBFRklfQUNQSV82XzNfUFBUVF9QUk9DRVNTT1JfSVNfTk9UX1RIUkVBRCwN CiAgICArICAgICAgICBFRklfQUNQSV82XzNfUFBUVF9OT0RFX0lTX0xFQUYsDQogICAgKyAgICAg ICAgRUZJX0FDUElfNl8zX1BQVFRfSU1QTEVNRU5UQVRJT05fTk9UX0lERU5USUNBTA0KICAgICsg ICAgICApLA0KICAgICsgICAgICAvLyBDTV9PQkpFQ1RfVE9LRU4gIFBhcmVudFRva2VuDQogICAg KyAgICAgIFJFRkVSRU5DRV9UT0tFTiAoUHJvY0hpZXJhcmNoeUluZm9bMV0pLCAvLyAtPiAnY2x1 c3RlciBpbiBDbHVzdGVyMA0KICAgICsgICAgICAvLyBDTV9PQkpFQ1RfVE9LRU4gIEdpY0NUb2tl bg0KICAgICsgICAgICBSRUZFUkVOQ0VfVE9LRU4gKEdpY0NJbmZvWzBdKSwNCiAgICArICAgICAg Ly8gVUlOVDMyICBOb09mUHJpdmF0ZVJlc291cmNlcw0KICAgICsgICAgICBDT1JFX1JFU09VUkNF X0NPVU5ULA0KICAgICsgICAgICAvLyBDTV9PQkpFQ1RfVE9LRU4gIFByaXZhdGVSZXNvdXJjZXNB cnJheVRva2VuDQogICAgKyAgICAgIFJFRkVSRU5DRV9UT0tFTiAoQ29yZVJlc291cmNlcykNCiAg ICArICAgIH0sDQogICAgKyAgICAvLyBDbHVzdGVyMCAtIENwdTENCiAgICArICAgIHsNCiAgICAr ICAgICAgLy8gQ01fT0JKRUNUX1RPS0VOICBUb2tlbg0KICAgICsgICAgICBSRUZFUkVOQ0VfVE9L RU4gKFByb2NIaWVyYXJjaHlJbmZvWzRdKSwNCiAgICArICAgICAgLy8gVUlOVDMyICBGbGFncw0K ICAgICsgICAgICBQUk9DX05PREVfRkxBR1MgKA0KICAgICsgICAgICAgIEVGSV9BQ1BJXzZfM19Q UFRUX1BBQ0tBR0VfTk9UX1BIWVNJQ0FMLA0KICAgICsgICAgICAgIEVGSV9BQ1BJXzZfM19QUFRU X1BST0NFU1NPUl9JRF9WQUxJRCwNCiAgICArICAgICAgICBFRklfQUNQSV82XzNfUFBUVF9QUk9D RVNTT1JfSVNfTk9UX1RIUkVBRCwNCiAgICArICAgICAgICBFRklfQUNQSV82XzNfUFBUVF9OT0RF X0lTX0xFQUYsDQogICAgKyAgICAgICAgRUZJX0FDUElfNl8zX1BQVFRfSU1QTEVNRU5UQVRJT05f Tk9UX0lERU5USUNBTA0KICAgICsgICAgICApLA0KICAgICsgICAgICAvLyBDTV9PQkpFQ1RfVE9L RU4gIFBhcmVudFRva2VuDQogICAgKyAgICAgIFJFRkVSRU5DRV9UT0tFTiAoUHJvY0hpZXJhcmNo eUluZm9bMV0pLCAvLyAtPiAnY2x1c3RlciBpbiBDbHVzdGVyMA0KICAgICsgICAgICAvLyBDTV9P QkpFQ1RfVE9LRU4gIEdpY0NUb2tlbg0KICAgICsgICAgICBSRUZFUkVOQ0VfVE9LRU4gKEdpY0NJ bmZvWzFdKSwNCiAgICArICAgICAgLy8gVUlOVDMyICBOb09mUHJpdmF0ZVJlc291cmNlcw0KICAg ICsgICAgICBDT1JFX1JFU09VUkNFX0NPVU5ULA0KICAgICsgICAgICAvLyBDTV9PQkpFQ1RfVE9L RU4gIFByaXZhdGVSZXNvdXJjZXNBcnJheVRva2VuDQogICAgKyAgICAgIFJFRkVSRU5DRV9UT0tF TiAoQ29yZVJlc291cmNlcykNCiAgICArICAgIH0sDQogICAgKyAgICAvLyBDbHVzdGVyMSAtIENw dTANCiAgICArICAgIHsNCiAgICArICAgICAgLy8gQ01fT0JKRUNUX1RPS0VOICBUb2tlbg0KICAg ICsgICAgICBSRUZFUkVOQ0VfVE9LRU4gKFByb2NIaWVyYXJjaHlJbmZvWzNdKSwNCiAgICArICAg ICAgLy8gVUlOVDMyICBGbGFncw0KICAgICsgICAgICBQUk9DX05PREVfRkxBR1MgKA0KICAgICsg ICAgICAgIEVGSV9BQ1BJXzZfM19QUFRUX1BBQ0tBR0VfTk9UX1BIWVNJQ0FMLA0KICAgICsgICAg ICAgIEVGSV9BQ1BJXzZfM19QUFRUX1BST0NFU1NPUl9JRF9WQUxJRCwNCiAgICArICAgICAgICBF RklfQUNQSV82XzNfUFBUVF9QUk9DRVNTT1JfSVNfTk9UX1RIUkVBRCwNCiAgICArICAgICAgICBF RklfQUNQSV82XzNfUFBUVF9OT0RFX0lTX0xFQUYsDQogICAgKyAgICAgICAgRUZJX0FDUElfNl8z X1BQVFRfSU1QTEVNRU5UQVRJT05fTk9UX0lERU5USUNBTA0KICAgICsgICAgICApLA0KICAgICsg ICAgICAvLyBDTV9PQkpFQ1RfVE9LRU4gIFBhcmVudFRva2VuDQogICAgKyAgICAgIFJFRkVSRU5D RV9UT0tFTiAoUHJvY0hpZXJhcmNoeUluZm9bMl0pLCAvLyAtPiAnY2x1c3RlciBpbiBDbHVzdGVy MQ0KICAgICsgICAgICAvLyBDTV9PQkpFQ1RfVE9LRU4gIEdpY0NUb2tlbg0KICAgICsgICAgICBS RUZFUkVOQ0VfVE9LRU4gKEdpY0NJbmZvWzJdKSwNCiAgICArICAgICAgLy8gVUlOVDMyICBOb09m UHJpdmF0ZVJlc291cmNlcw0KICAgICsgICAgICBDT1JFX1JFU09VUkNFX0NPVU5ULA0KICAgICsg ICAgICAvLyBDTV9PQkpFQ1RfVE9LRU4gIFByaXZhdGVSZXNvdXJjZXNBcnJheVRva2VuDQogICAg KyAgICAgIFJFRkVSRU5DRV9UT0tFTiAoQ29yZVJlc291cmNlcykNCiAgICArICAgIH0sDQogICAg Kw0KICAgICsgICAgLy8gQ2x1c3RlcjEgLSBDcHUxDQogICAgKyAgICB7DQogICAgKyAgICAgIC8v IENNX09CSkVDVF9UT0tFTiAgVG9rZW4NCiAgICArICAgICAgUkVGRVJFTkNFX1RPS0VOIChQcm9j SGllcmFyY2h5SW5mb1s0XSksDQogICAgKyAgICAgIC8vIFVJTlQzMiAgRmxhZ3MNCiAgICArICAg ICAgUFJPQ19OT0RFX0ZMQUdTICgNCiAgICArICAgICAgICBFRklfQUNQSV82XzNfUFBUVF9QQUNL QUdFX05PVF9QSFlTSUNBTCwNCiAgICArICAgICAgICBFRklfQUNQSV82XzNfUFBUVF9QUk9DRVNT T1JfSURfVkFMSUQsDQogICAgKyAgICAgICAgRUZJX0FDUElfNl8zX1BQVFRfUFJPQ0VTU09SX0lT X05PVF9USFJFQUQsDQogICAgKyAgICAgICAgRUZJX0FDUElfNl8zX1BQVFRfTk9ERV9JU19MRUFG LA0KICAgICsgICAgICAgIEVGSV9BQ1BJXzZfM19QUFRUX0lNUExFTUVOVEFUSU9OX05PVF9JREVO VElDQUwNCiAgICArICAgICAgKSwNCiAgICArICAgICAgLy8gQ01fT0JKRUNUX1RPS0VOICBQYXJl bnRUb2tlbg0KICAgICsgICAgICBSRUZFUkVOQ0VfVE9LRU4gKFByb2NIaWVyYXJjaHlJbmZvWzJd KSwgLy8gLT4gJ2NsdXN0ZXIgaW4gQ2x1c3RlcjENCiAgICArICAgICAgLy8gQ01fT0JKRUNUX1RP S0VOICBHaWNDVG9rZW4NCiAgICArICAgICAgUkVGRVJFTkNFX1RPS0VOIChHaWNDSW5mb1szXSks DQogICAgKyAgICAgIC8vIFVJTlQzMiAgTm9PZlByaXZhdGVSZXNvdXJjZXMNCiAgICArICAgICAg Q09SRV9SRVNPVVJDRV9DT1VOVCwNCiAgICArICAgICAgLy8gQ01fT0JKRUNUX1RPS0VOICBQcml2 YXRlUmVzb3VyY2VzQXJyYXlUb2tlbg0KICAgICsgICAgICBSRUZFUkVOQ0VfVE9LRU4gKENvcmVS ZXNvdXJjZXMpDQogICAgKyAgICB9LA0KICAgICsgIH0sDQogICAgKw0KICAgICsgIC8vIENhY2hl IGluZm9ybWF0aW9uDQogICAgKyAgew0KICAgICsgICAgLy8gJ2NsdXN0ZXIncyBMMyBjYWNoZQ0K ICAgICsgICAgew0KICAgICsgICAgICBSRUZFUkVOQ0VfVE9LRU4gKENhY2hlSW5mb1swXSksICAv LyBDTV9PQkpFQ1RfVE9LRU4gIFRva2VuDQogICAgKyAgICAgIENNX05VTExfVE9LRU4sICAgICAg ICAgICAgICAgICAgIC8vIENNX09CSkVDVF9UT0tFTiAgTmV4dExldmVsT2ZDYWNoZVRva2VuDQog ICAgKyAgICAgIFNJWkVfMU1CLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVJTlQzMiAgU2l6 ZQ0KICAgICsgICAgICAyMDQ4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVSU5UMzIg IE51bWJlck9mU2V0cw0KICAgICsgICAgICA4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAvLyBVSU5UMzIgIEFzc29jaWF0aXZpdHkNCiAgICArICAgICAgQ0FDSEVfQVRUUklCVVRFUyAo ICAgICAgICAgICAgICAgLy8gVUlOVDggICBBdHRyaWJ1dGVzDQogICAgKyAgICAgICAgRUZJX0FD UElfNl8zX0NBQ0hFX0FUVFJJQlVURVNfQUxMT0NBVElPTl9SRUFELA0KICAgICsgICAgICAgIEVG SV9BQ1BJXzZfM19DQUNIRV9BVFRSSUJVVEVTX0NBQ0hFX1RZUEVfVU5JRklFRCwNCiAgICArICAg ICAgICBFRklfQUNQSV82XzNfQ0FDSEVfQVRUUklCVVRFU19XUklURV9QT0xJQ1lfV1JJVEVfQkFD Sw0KICAgICsgICAgICApLA0KICAgICsgICAgICA2NCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvLyBVSU5UMTYgIExpbmVTaXplDQogICAgKyAgICB9LA0KICAgICsgICAgLy8gJ2NvcmUn cyBMMSBpbnN0cnVjdGlvbiBjYWNoZQ0KICAgICsgICAgew0KICAgICsgICAgICBSRUZFUkVOQ0Vf VE9LRU4gKENhY2hlSW5mb1sxXSksICAvLyBDTV9PQkpFQ1RfVE9LRU4gIFRva2VuDQogICAgKyAg ICAgIFJFRkVSRU5DRV9UT0tFTiAoQ2FjaGVJbmZvWzNdKSwgIC8vIENNX09CSkVDVF9UT0tFTiAg TmV4dExldmVsT2ZDYWNoZVRva2VuDQogICAgKyAgICAgIFNJWkVfNjRLQiwgICAgICAgICAgICAg ICAgICAgICAgIC8vIFVJTlQzMiAgU2l6ZQ0KICAgICsgICAgICAyNTYsICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvLyBVSU5UMzIgIE51bWJlck9mU2V0cw0KICAgICsgICAgICA0LCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVSU5UMzIgIEFzc29jaWF0aXZpdHkNCiAgICAr ICAgICAgQ0FDSEVfQVRUUklCVVRFUyAoICAgICAgICAgICAgICAgLy8gVUlOVDggICBBdHRyaWJ1 dGVzDQogICAgKyAgICAgICAgRUZJX0FDUElfNl8zX0NBQ0hFX0FUVFJJQlVURVNfQUxMT0NBVElP Tl9SRUFELA0KICAgICsgICAgICAgIEVGSV9BQ1BJXzZfM19DQUNIRV9BVFRSSUJVVEVTX0NBQ0hF X1RZUEVfSU5TVFJVQ1RJT04sDQogICAgKyAgICAgICAgRUZJX0FDUElfNl8zX0NBQ0hFX0FUVFJJ QlVURVNfV1JJVEVfUE9MSUNZX1dSSVRFX0JBQ0sNCiAgICArICAgICAgKSwNCiAgICArICAgICAg NjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVUlOVDE2ICBMaW5lU2l6ZQ0KICAg ICsgICAgfSwNCiAgICArICAgIC8vICdjb3JlJ3MgTDEgZGF0YSBjYWNoZQ0KICAgICsgICAgew0K ICAgICsgICAgICBSRUZFUkVOQ0VfVE9LRU4gKENhY2hlSW5mb1syXSksICAvLyBDTV9PQkpFQ1Rf VE9LRU4gIFRva2VuDQogICAgKyAgICAgIFJFRkVSRU5DRV9UT0tFTiAoQ2FjaGVJbmZvWzNdKSwg IC8vIENNX09CSkVDVF9UT0tFTiAgTmV4dExldmVsT2ZDYWNoZVRva2VuDQogICAgKyAgICAgIFNJ WkVfNjRLQiwgICAgICAgICAgICAgICAgICAgICAgIC8vIFVJTlQzMiAgU2l6ZQ0KICAgICsgICAg ICAyNTYsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVSU5UMzIgIE51bWJlck9mU2V0 cw0KICAgICsgICAgICA0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVSU5UMzIg IEFzc29jaWF0aXZpdHkNCiAgICArICAgICAgQ0FDSEVfQVRUUklCVVRFUyAoICAgICAgICAgICAg ICAgLy8gVUlOVDggICBBdHRyaWJ1dGVzDQogICAgKyAgICAgICAgRUZJX0FDUElfNl8zX0NBQ0hF X0FUVFJJQlVURVNfQUxMT0NBVElPTl9SRUFEX1dSSVRFLA0KICAgICsgICAgICAgIEVGSV9BQ1BJ XzZfM19DQUNIRV9BVFRSSUJVVEVTX0NBQ0hFX1RZUEVfREFUQSwNCiAgICArICAgICAgICBFRklf QUNQSV82XzNfQ0FDSEVfQVRUUklCVVRFU19XUklURV9QT0xJQ1lfV1JJVEVfQkFDSw0KICAgICsg ICAgICApLA0KICAgICsgICAgICA2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBV SU5UMTYgIExpbmVTaXplDQogICAgKyAgICB9LA0KICAgICsgICAgLy8gY29yZXMncyBMMiBjYWNo ZQ0KICAgICsgICAgew0KICAgICsgICAgICBSRUZFUkVOQ0VfVE9LRU4gKENhY2hlSW5mb1szXSks ICAvLyBDTV9PQkpFQ1RfVE9LRU4gIFRva2VuDQogICAgKyAgICAgIENNX05VTExfVE9LRU4sICAg ICAgICAgICAgICAgICAgIC8vIENNX09CSkVDVF9UT0tFTiAgTmV4dExldmVsT2ZDYWNoZVRva2Vu DQogICAgKyAgICAgIFNJWkVfMU1CLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVJTlQzMiAg U2l6ZQ0KICAgICsgICAgICAyMDQ4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVSU5U MzIgIE51bWJlck9mU2V0cw0KICAgICsgICAgICA4LCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvLyBVSU5UMzIgIEFzc29jaWF0aXZpdHkNCiAgICArICAgICAgQ0FDSEVfQVRUUklCVVRF UyAoICAgICAgICAgICAgICAgLy8gVUlOVDggICBBdHRyaWJ1dGVzDQogICAgKyAgICAgICAgRUZJ X0FDUElfNl8zX0NBQ0hFX0FUVFJJQlVURVNfQUxMT0NBVElPTl9SRUFELA0KICAgICsgICAgICAg IEVGSV9BQ1BJXzZfM19DQUNIRV9BVFRSSUJVVEVTX0NBQ0hFX1RZUEVfVU5JRklFRCwNCiAgICAr ICAgICAgICBFRklfQUNQSV82XzNfQ0FDSEVfQVRUUklCVVRFU19XUklURV9QT0xJQ1lfV1JJVEVf QkFDSw0KICAgICsgICAgICApLA0KICAgICsgICAgICA2NCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvLyBVSU5UMTYgIExpbmVTaXplDQogICAgKyAgICB9LA0KICAgICsgICAgLy8gc2xj IGNhY2hlDQogICAgKyAgICB7DQogICAgKyAgICAgIFJFRkVSRU5DRV9UT0tFTiAoQ2FjaGVJbmZv WzRdKSwgIC8vIENNX09CSkVDVF9UT0tFTiAgVG9rZW4NCiAgICArICAgICAgQ01fTlVMTF9UT0tF TiwgICAgICAgICAgICAgICAgICAgLy8gQ01fT0JKRUNUX1RPS0VOICBOZXh0TGV2ZWxPZkNhY2hl VG9rZW4NCiAgICArICAgICAgU0laRV84TUIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gVUlO VDMyICBTaXplDQogICAgKyAgICAgIDQwOTYsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v IFVJTlQzMiAgTnVtYmVyT2ZTZXRzDQogICAgKyAgICAgIDE2LCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8vIFVJTlQzMiAgQXNzb2NpYXRpdml0eQ0KICAgICsgICAgICBDQUNIRV9BVFRS SUJVVEVTICggICAgICAgICAgICAgICAvLyBVSU5UOCAgIEF0dHJpYnV0ZXMNCiAgICArICAgICAg ICBFRklfQUNQSV82XzNfQ0FDSEVfQVRUUklCVVRFU19BTExPQ0FUSU9OX1JFQUQsDQogICAgKyAg ICAgICAgRUZJX0FDUElfNl8zX0NBQ0hFX0FUVFJJQlVURVNfQ0FDSEVfVFlQRV9VTklGSUVELA0K ICAgICsgICAgICAgIEVGSV9BQ1BJXzZfM19DQUNIRV9BVFRSSUJVVEVTX1dSSVRFX1BPTElDWV9X UklURV9CQUNLDQogICAgKyAgICAgICksDQogICAgKyAgICAgIDY0ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8vIFVJTlQxNiAgTGluZVNpemUNCiAgICArICAgIH0sDQogICAgKyAgfSwN CiAgICArICAvLyBSZXNvdXJjZXMgcHJpdmF0ZSB0byB0aGUgJ2NsdXN0ZXIgKHNoYXJlZCBhbW9u ZyBjb3JlcykgaW4gQ2x1c3Rlcg0KICAgICsgIHsNCiAgICArICAgIHsgUkVGRVJFTkNFX1RPS0VO IChDYWNoZUluZm9bMF0pIH0gIC8vIC0+ICdjbHVzdGVyJ3MgTDMgY2FjaGUgaW4gQ2x1c3Rlcg0K ICAgICsgIH0sDQogICAgKyAgLy8gUmVzb3VyY2VzIHByaXZhdGUgdG8gZWFjaCBpbmRpdmlkdWFs ICdjb3JlIGluc3RhbmNlIGluIENsdXN0ZXINCiAgICArICB7DQogICAgKyAgICB7IFJFRkVSRU5D RV9UT0tFTiAoQ2FjaGVJbmZvWzFdKSB9LCAvLyAtPiAnY29yZSdzIEwxIEktY2FjaGUgaW4gQ2x1 c3Rlcg0KICAgICsgICAgeyBSRUZFUkVOQ0VfVE9LRU4gKENhY2hlSW5mb1syXSkgfSwgLy8gLT4g J2NvcmUncyBMMSBELWNhY2hlIGluIENsdXN0ZXINCiAgICArICAgIHsgUkVGRVJFTkNFX1RPS0VO IChDYWNoZUluZm9bM10pIH0gIC8vIC0+ICdjb3JlJ3MgTDIgY2FjaGUgaW4gQ2x1c3Rlcg0KICAg ICsgIH0sDQogICAgKw0KICAgICsgIC8vIFJlc291cmNlcyBwcml2YXRlIHRvIHRoZSBTb0MNCiAg ICArICB7DQogICAgKyAgICB7IFJFRkVSRU5DRV9UT0tFTiAoQ2FjaGVJbmZvWzRdKSB9ICAvLyAt PiBzbGMgZm9yIFNvQw0KICAgICsgIH0sDQogICAgK307DQogICAgKw0KICAgICsvKiogQSBoZWxw ZXIgZnVuY3Rpb24gZm9yIHJldHVybmluZyB0aGUgQ29uZmlndXJhdGlvbiBNYW5hZ2VyIE9iamVj dHMuDQogICAgKw0KICAgICsgIEBwYXJhbSBbaW5dICAgICAgIENtT2JqZWN0SWQgICAgIFRoZSBD b25maWd1cmF0aW9uIE1hbmFnZXIgT2JqZWN0IElELg0KICAgICsgIEBwYXJhbSBbaW5dICAgICAg IE9iamVjdCAgICAgICAgIFBvaW50ZXIgdG8gdGhlIE9iamVjdChzKS4NCiAgICArICBAcGFyYW0g W2luXSAgICAgICBPYmplY3RTaXplICAgICBUb3RhbCBzaXplIG9mIHRoZSBPYmplY3QocykuDQog ICAgKyAgQHBhcmFtIFtpbl0gICAgICAgT2JqZWN0Q291bnQgICAgTnVtYmVyIG9mIE9iamVjdHMu DQogICAgKyAgQHBhcmFtIFtpbiwgb3V0XSAgQ21PYmplY3REZXNjICAgUG9pbnRlciB0byB0aGUg Q29uZmlndXJhdGlvbiBNYW5hZ2VyIE9iamVjdA0KICAgICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRlc2NyaXB0b3IgZGVzY3JpYmluZyB0aGUgcmVxdWVzdGVkIE9iamVjdC4N CiAgICArDQogICAgKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgU3VjY2Vzcy4NCiAg ICArKiovDQogICAgK0VGSV9TVEFUVVMNCiAgICArRUZJQVBJDQogICAgK0hhbmRsZUNtT2JqZWN0 ICgNCiAgICArICBJTiAgQ09OU1QgQ01fT0JKRUNUX0lEICAgICAgICAgICAgICAgIENtT2JqZWN0 SWQsDQogICAgKyAgSU4gICAgICAgIFZPSUQgICAgICAgICAgICAgICAgKiAgICAgICBPYmplY3Qs DQogICAgKyAgSU4gIENPTlNUIFVJTlROICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RTaXpl LA0KICAgICsgIElOICBDT05TVCBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0Q291 bnQsDQogICAgKyAgSU4gIE9VVCAgIENNX09CSl9ERVNDUklQVE9SICAgKiBDT05TVCBDbU9iamVj dERlc2MNCiAgICArICApDQogICAgK3sNCiAgICArICBDbU9iamVjdERlc2MtPk9iamVjdElkID0g Q21PYmplY3RJZDsNCiAgICArICBDbU9iamVjdERlc2MtPlNpemUgPSBPYmplY3RTaXplOw0KICAg ICsgIENtT2JqZWN0RGVzYy0+RGF0YSA9IChWT0lEKilPYmplY3Q7DQogICAgKyAgQ21PYmplY3RE ZXNjLT5Db3VudCA9IE9iamVjdENvdW50Ow0KICAgICsgIERFQlVHICgoDQogICAgKyAgICBERUJV R19JTkZPLA0KICAgICsgICAgIklORk86IENtT2JqZWN0SWQgPSAleCwgUHRyID0gMHglcCwgU2l6 ZSA9ICVkLCBDb3VudCA9ICVkXG4iLA0KICAgICsgICAgQ21PYmplY3RJZCwNCiAgICArICAgIENt T2JqZWN0RGVzYy0+RGF0YSwNCiAgICArICAgIENtT2JqZWN0RGVzYy0+U2l6ZSwNCiAgICArICAg IENtT2JqZWN0RGVzYy0+Q291bnQNCiAgICArICAgICkpOw0KICAgICsgIHJldHVybiBFRklfU1VD Q0VTUzsNCiAgICArfQ0KICAgICsNCiAgICArLyoqIEEgaGVscGVyIGZ1bmN0aW9uIGZvciByZXR1 cm5pbmcgdGhlIENvbmZpZ3VyYXRpb24gTWFuYWdlciBPYmplY3RzIHRoYXQNCiAgICArICAgIG1h dGNoIHRoZSB0b2tlbi4NCiAgICArDQogICAgKyAgQHBhcmFtIFtpbl0gIFRoaXMgICAgICAgICAg ICAgICBQb2ludGVyIHRvIHRoZSBDb25maWd1cmF0aW9uIE1hbmFnZXIgUHJvdG9jb2wuDQogICAg KyAgQHBhcmFtIFtpbl0gIENtT2JqZWN0SWQgICAgICAgICBUaGUgQ29uZmlndXJhdGlvbiBNYW5h Z2VyIE9iamVjdCBJRC4NCiAgICArICBAcGFyYW0gW2luXSAgT2JqZWN0ICAgICAgICAgICAgIFBv aW50ZXIgdG8gdGhlIE9iamVjdChzKS4NCiAgICArICBAcGFyYW0gW2luXSAgT2JqZWN0U2l6ZSAg ICAgICAgIFRvdGFsIHNpemUgb2YgdGhlIE9iamVjdChzKS4NCiAgICArICBAcGFyYW0gW2luXSAg T2JqZWN0Q291bnQgICAgICAgIE51bWJlciBvZiBPYmplY3RzLg0KICAgICsgIEBwYXJhbSBbaW5d ICBUb2tlbiAgICAgICAgICAgICAgQSB0b2tlbiBpZGVudGlmeWluZyB0aGUgb2JqZWN0Lg0KICAg ICsgIEBwYXJhbSBbaW5dICBIYW5kbGVyUHJvYyAgICAgICAgQSBoYW5kbGVyIGZ1bmN0aW9uIHRv IHNlYXJjaCB0aGUgb2JqZWN0DQogICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZWZlcmVuY2VkIGJ5IHRoZSB0b2tlbi4NCiAgICArICBAcGFyYW0gW2luLCBvdXRdICBDbU9i amVjdERlc2MgIFBvaW50ZXIgdG8gdGhlIENvbmZpZ3VyYXRpb24gTWFuYWdlciBPYmplY3QNCiAg ICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IgZGVzY3JpYmlu ZyB0aGUgcmVxdWVzdGVkIE9iamVjdC4NCiAgICArDQogICAgKyAgQHJldHZhbCBFRklfU1VDQ0VT UyAgICAgICAgICAgU3VjY2Vzcy4NCiAgICArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRF UiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkLg0KICAgICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAg ICAgICAgIFRoZSByZXF1aXJlZCBvYmplY3QgaW5mb3JtYXRpb24gaXMgbm90IGZvdW5kLg0KICAg ICsqKi8NCiAgICArRUZJX1NUQVRVUw0KICAgICtFRklBUEkNCiAgICArSGFuZGxlQ21PYmplY3RS ZWZCeVRva2VuICgNCiAgICArICBJTiAgQ09OU1QgRURLSUlfQ09ORklHVVJBVElPTl9NQU5BR0VS X1BST1RPQ09MICAqIENPTlNUIFRoaXMsDQogICAgKyAgSU4gIENPTlNUIENNX09CSkVDVF9JRCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbU9iamVjdElkLA0KICAgICsgIElOICAg ICAgICBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICAgICAgT2JqZWN0 LA0KICAgICsgIElOICBDT05TVCBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT2JqZWN0U2l6ZSwNCiAgICArICBJTiAgQ09OU1QgVUlOVE4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdENvdW50LA0KICAgICsgIElOICBDT05T VCBDTV9PQkpFQ1RfVE9LRU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9rZW4sDQog ICAgKyAgSU4gIENPTlNUIENNX09CSkVDVF9IQU5ETEVSX1BST0MgICAgICAgICAgICAgICAgICAg ICAgICBIYW5kbGVyUHJvYywNCiAgICArICBJTiAgT1VUICAgQ01fT0JKX0RFU0NSSVBUT1IgICAg ICAgICAgICAgICAgICAgICAqIENPTlNUIENtT2JqZWN0RGVzYw0KICAgICsgICkNCiAgICArew0K ICAgICsgIEVGSV9TVEFUVVMgIFN0YXR1czsNCiAgICArICBDbU9iamVjdERlc2MtPk9iamVjdElk ID0gQ21PYmplY3RJZDsNCiAgICArICBpZiAoVG9rZW4gPT0gQ01fTlVMTF9UT0tFTikgew0KICAg ICsgICAgQ21PYmplY3REZXNjLT5TaXplID0gT2JqZWN0U2l6ZTsNCiAgICArICAgIENtT2JqZWN0 RGVzYy0+RGF0YSA9IChWT0lEKilPYmplY3Q7DQogICAgKyAgICBDbU9iamVjdERlc2MtPkNvdW50 ID0gT2JqZWN0Q291bnQ7DQogICAgKyAgICBTdGF0dXMgPSBFRklfU1VDQ0VTUzsNCiAgICArICB9 IGVsc2Ugew0KICAgICsgICAgU3RhdHVzID0gSGFuZGxlclByb2MgKFRoaXMsIENtT2JqZWN0SWQs IFRva2VuLCBDbU9iamVjdERlc2MpOw0KICAgICsgIH0NCiAgICArDQogICAgKyAgREVCVUcgKCgN CiAgICArICAgIERFQlVHX0lORk8sDQogICAgKyAgICAiSU5GTzogVG9rZW4gPSAweCVwLCBDbU9i amVjdElkID0gJXgsIFB0ciA9IDB4JXAsIFNpemUgPSAlZCwgQ291bnQgPSAlZFxuIiwNCiAgICAr ICAgIChWT0lEKilUb2tlbiwNCiAgICArICAgIENtT2JqZWN0SWQsDQogICAgKyAgICBDbU9iamVj dERlc2MtPkRhdGEsDQogICAgKyAgICBDbU9iamVjdERlc2MtPlNpemUsDQogICAgKyAgICBDbU9i amVjdERlc2MtPkNvdW50DQogICAgKyAgICApKTsNCiAgICArICByZXR1cm4gU3RhdHVzOw0KICAg ICt9DQogICAgKw0KICAgICsvKiogQSBoZWxwZXIgZnVuY3Rpb24gZm9yIHJldHVybmluZyBDb25m aWd1cmF0aW9uIE1hbmFnZXIgT2JqZWN0KHMpIHJlZmVyZW5jZWQNCiAgICArICAgIGJ5IHRva2Vu IHdoZW4gdGhlIGVudGlyZSBwbGF0Zm9ybSByZXBvc2l0b3J5IGlzIGluIHNjb3BlIGFuZCB0aGUN CiAgICArICAgIENNX05VTExfVE9LRU4gdmFsdWUgaXMgbm90IGFsbG93ZWQuDQogICAgKw0KICAg ICsgIEBwYXJhbSBbaW5dICBUaGlzICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgQ29uZmln dXJhdGlvbiBNYW5hZ2VyIFByb3RvY29sLg0KICAgICsgIEBwYXJhbSBbaW5dICBDbU9iamVjdElk ICAgICAgICAgVGhlIENvbmZpZ3VyYXRpb24gTWFuYWdlciBPYmplY3QgSUQuDQogICAgKyAgQHBh cmFtIFtpbl0gIFRva2VuICAgICAgICAgICAgICBBIHRva2VuIGlkZW50aWZ5aW5nIHRoZSBvYmpl Y3QuDQogICAgKyAgQHBhcmFtIFtpbl0gIEhhbmRsZXJQcm9jICAgICAgICBBIGhhbmRsZXIgZnVu Y3Rpb24gdG8gc2VhcmNoIHRoZSBvYmplY3QocykNCiAgICArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJlZmVyZW5jZWQgYnkgdGhlIHRva2VuLg0KICAgICsgIEBwYXJhbSBbaW4s IG91dF0gIENtT2JqZWN0RGVzYyAgUG9pbnRlciB0byB0aGUgQ29uZmlndXJhdGlvbiBNYW5hZ2Vy IE9iamVjdA0KICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRv ciBkZXNjcmliaW5nIHRoZSByZXF1ZXN0ZWQgT2JqZWN0Lg0KICAgICsNCiAgICArICBAcmV0dmFs IEVGSV9TVUNDRVNTICAgICAgICAgICBTdWNjZXNzLg0KICAgICsgIEByZXR2YWwgRUZJX0lOVkFM SURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQuDQogICAgKyAgQHJldHZhbCBFRklf Tk9UX0ZPVU5EICAgICAgICAgVGhlIHJlcXVpcmVkIG9iamVjdCBpbmZvcm1hdGlvbiBpcyBub3Qg Zm91bmQuDQogICAgKyoqLw0KICAgICtTVEFUSUMNCiAgICArRUZJX1NUQVRVUw0KICAgICtFRklB UEkNCiAgICArSGFuZGxlQ21PYmplY3RTZWFyY2hQbGF0Zm9ybVJlcG8gKA0KICAgICsgIElOICBD T05TVCBFREtJSV9DT05GSUdVUkFUSU9OX01BTkFHRVJfUFJPVE9DT0wgICogQ09OU1QgVGhpcywN CiAgICArICBJTiAgQ09OU1QgQ01fT0JKRUNUX0lEICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIENtT2JqZWN0SWQsDQogICAgKyAgSU4gIENPTlNUIENNX09CSkVDVF9UT0tFTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBUb2tlbiwNCiAgICArICBJTiAgQ09OU1QgQ01fT0JK RUNUX0hBTkRMRVJfUFJPQyAgICAgICAgICAgICAgICAgICAgICAgIEhhbmRsZXJQcm9jLA0KICAg ICsgIElOICBPVVQgICBDTV9PQkpfREVTQ1JJUFRPUiAgICAgICAgICAgICAgICAgICAgICogQ09O U1QgQ21PYmplY3REZXNjDQogICAgKyAgKQ0KICAgICt7DQogICAgKyAgRUZJX1NUQVRVUyAgU3Rh dHVzOw0KICAgICsgIENtT2JqZWN0RGVzYy0+T2JqZWN0SWQgPSBDbU9iamVjdElkOw0KICAgICsg IGlmIChUb2tlbiA9PSBDTV9OVUxMX1RPS0VOKSB7DQogICAgKyAgICBERUJVRyAoKA0KICAgICsg ICAgICBERUJVR19FUlJPUiwNCiAgICArICAgICAgIkVSUk9SOiBDTV9OVUxMX1RPS0VOIHZhbHVl IGlzIG5vdCBhbGxvd2VkIHdoZW4gc2VhcmNoaW5nIg0KICAgICsgICAgICAiIHRoZSBlbnRpcmUg cGxhdGZvcm0gcmVwb3NpdG9yeS5cbiINCiAgICArICAgICAgKSk7DQogICAgKyAgICByZXR1cm4g RUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KICAgICsgIH0NCiAgICArDQogICAgKyAgU3RhdHVzID0g SGFuZGxlclByb2MgKFRoaXMsIENtT2JqZWN0SWQsIFRva2VuLCBDbU9iamVjdERlc2MpOw0KICAg ICsgIERFQlVHICgoDQogICAgKyAgICBERUJVR19JTkZPLA0KICAgICsgICAgIklORk86IFRva2Vu ID0gMHglcCwgQ21PYmplY3RJZCA9ICV4LCBQdHIgPSAweCVwLCBTaXplID0gJWQsIENvdW50ID0g JWRcbiIsDQogICAgKyAgICBDbU9iamVjdElkLA0KICAgICsgICAgKFZPSUQqKVRva2VuLA0KICAg ICsgICAgQ21PYmplY3REZXNjLT5EYXRhLA0KICAgICsgICAgQ21PYmplY3REZXNjLT5TaXplLA0K ICAgICsgICAgQ21PYmplY3REZXNjLT5Db3VudA0KICAgICsgICAgKSk7DQogICAgKyAgcmV0dXJu IFN0YXR1czsNCiAgICArfQ0KICAgICsNCiAgICArLyoqIEluaXRpYWxpemUgdGhlIFBsYXRmb3Jt IENvbmZpZ3VyYXRpb24gUmVwb3NpdG9yeS4NCiAgICArDQogICAgKyAgQHBhcmFtIFtpbl0gIFBs YXRmb3JtUmVwbyAgUG9pbnRlciB0byB0aGUgUGxhdGZvcm0gQ29uZmlndXJhdGlvbiBSZXBvc2l0 b3J5Lg0KICAgICsNCiAgICArICBAcmV0dmFsDQogICAgKyAgICBFRklfU1VDQ0VTUyAgIFN1Y2Nl c3MNCiAgICArKiovDQogICAgK1NUQVRJQw0KICAgICtFRklfU1RBVFVTDQogICAgK0VGSUFQSQ0K ICAgICtJbml0aWFsaXplUGxhdGZvcm1SZXBvc2l0b3J5ICgNCiAgICArICBJTiAgRURLSUlfUExB VEZPUk1fUkVQT1NJVE9SWV9JTkZPICAqIENPTlNUIFBsYXRmb3JtUmVwbw0KICAgICsgICkNCiAg ICArew0KICAgICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCiAgICArfQ0KICAgICsNCiAgICArLyoq IFJldHVybiBhIEdUIEJsb2NrIHRpbWVyIGZyYW1lIGluZm8gbGlzdC4NCiAgICArDQogICAgKyAg QHBhcmFtIFtpbl0gICAgICBUaGlzICAgICAgICBQb2ludGVyIHRvIHRoZSBDb25maWd1cmF0aW9u IE1hbmFnZXIgUHJvdG9jb2wuDQogICAgKyAgQHBhcmFtIFtpbl0gICAgICBDbU9iamVjdElkICBU aGUgQ29uZmlndXJhdGlvbiBNYW5hZ2VyIE9iamVjdCBJRC4NCiAgICArICBAcGFyYW0gW2luXSAg ICAgIFRva2VuICAgICAgIEEgdG9rZW4gZm9yIGlkZW50aWZ5aW5nIHRoZSBvYmplY3QNCiAgICAr ICBAcGFyYW0gW2luLCBvdXRdIENtT2JqZWN0ICAgIFBvaW50ZXIgdG8gdGhlIENvbmZpZ3VyYXRp b24gTWFuYWdlciBPYmplY3QNCiAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl c2NyaXB0b3IgZGVzY3JpYmluZyB0aGUgcmVxdWVzdGVkIE9iamVjdC4NCiAgICArDQogICAgKyAg QHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgU3VjY2Vzcy4NCiAgICArICBAcmV0dmFsIEVG SV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkLg0KICAgICsgIEByZXR2 YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSByZXF1aXJlZCBvYmplY3QgaW5mb3JtYXRpb24g aXMgbm90IGZvdW5kLg0KICAgICsqKi8NCiAgICArRUZJX1NUQVRVUw0KICAgICtFRklBUEkNCiAg ICArR2V0R1RCbG9ja1RpbWVyRnJhbWVJbmZvICgNCiAgICArICBJTiAgQ09OU1QgRURLSUlfQ09O RklHVVJBVElPTl9NQU5BR0VSX1BST1RPQ09MICAqIENPTlNUIFRoaXMsDQogICAgKyAgSU4gIENP TlNUIENNX09CSkVDVF9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbU9iamVj dElkLA0KICAgICsgIElOICBDT05TVCBDTV9PQkpFQ1RfVE9LRU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgVG9rZW4sDQogICAgKyAgSU4gIE9VVCAgIENNX09CSl9ERVNDUklQVE9SICAg ICAgICAgICAgICAgICAgICAgKiBDT05TVCBDbU9iamVjdA0KICAgICsgICkNCiAgICArew0KICAg ICsgIEVES0lJX0NPTU1PTl9QTEFURk9STV9SRVBPU0lUT1JZX0lORk8gICAqIFBsYXRmb3JtUmVw bzsNCiAgICArDQogICAgKyAgaWYgKChUaGlzID09IE5VTEwpIHx8IChDbU9iamVjdCA9PSBOVUxM KSkgew0KICAgICsgICAgQVNTRVJUIChUaGlzICE9IE5VTEwpOw0KICAgICsgICAgQVNTRVJUIChD bU9iamVjdCAhPSBOVUxMKTsNCiAgICArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7 DQogICAgKyAgfQ0KICAgICsNCiAgICArICBQbGF0Zm9ybVJlcG8gPSBUaGlzLT5QbGF0UmVwb0lu Zm8tPkNvbW1vblBsYXRSZXBvSW5mbzsNCiAgICArDQogICAgKyAgaWYgKFRva2VuICE9IChDTV9P QkpFQ1RfVE9LRU4pJlBsYXRmb3JtUmVwby0+R1RCbG9jazBUaW1lckluZm8pIHsNCiAgICArICAg IHJldHVybiBFRklfTk9UX0ZPVU5EOw0KICAgICsgIH0NCiAgICArDQogICAgKyAgQ21PYmplY3Qt Pk9iamVjdElkID0gQ21PYmplY3RJZDsNCiAgICArICBDbU9iamVjdC0+U2l6ZSA9IHNpemVvZiAo UGxhdGZvcm1SZXBvLT5HVEJsb2NrMFRpbWVySW5mbyk7DQogICAgKyAgQ21PYmplY3QtPkRhdGEg PSAoVk9JRCopJlBsYXRmb3JtUmVwby0+R1RCbG9jazBUaW1lckluZm87DQogICAgKyAgQ21PYmpl Y3QtPkNvdW50ID0gQVJSQVlfU0laRSAoUGxhdGZvcm1SZXBvLT5HVEJsb2NrMFRpbWVySW5mbyk7 DQogICAgKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KICAgICt9DQogICAgKw0KICAgICsvKiogUmV0 dXJuIEdJQyBDUFUgSW50ZXJmYWNlIEluZm8uDQogICAgKw0KICAgICsgIEBwYXJhbSBbaW5dICAg ICAgVGhpcyAgICAgICAgICAgUG9pbnRlciB0byB0aGUgQ29uZmlndXJhdGlvbiBNYW5hZ2VyIFBy b3RvY29sLg0KICAgICsgIEBwYXJhbSBbaW5dICAgICAgQ21PYmplY3RJZCAgICAgVGhlIE9iamVj dCBJRCBvZiB0aGUgQ00gb2JqZWN0IHJlcXVlc3RlZA0KICAgICsgIEBwYXJhbSBbaW5dICAgICAg U2VhcmNoVG9rZW4gICAgQSB1bmlxdWUgdG9rZW4gZm9yIGlkZW50aWZ5aW5nIHRoZSByZXF1ZXN0 ZWQNCiAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENNX0FSTV9HSUNDX0lO Rk8gb2JqZWN0Lg0KICAgICsgIEBwYXJhbSBbaW4sIG91dF0gQ21PYmplY3QgICAgICAgUG9pbnRl ciB0byB0aGUgQ29uZmlndXJhdGlvbiBNYW5hZ2VyIE9iamVjdA0KICAgICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRvciBkZXNjcmliaW5nIHRoZSByZXF1ZXN0ZWQg T2JqZWN0Lg0KICAgICsNCiAgICArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgIFN1 Y2Nlc3MuDQogICAgKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgICBBIHBhcmFtZXRl ciBpcyBpbnZhbGlkLg0KICAgICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgICAgVGhl IHJlcXVpcmVkIG9iamVjdCBpbmZvcm1hdGlvbiBpcyBub3QgZm91bmQuDQogICAgKyoqLw0KICAg ICtFRklfU1RBVFVTDQogICAgK0VGSUFQSQ0KICAgICtHZXRHaWNDSW5mbyAoDQogICAgKyAgSU4g IENPTlNUIEVES0lJX0NPTkZJR1VSQVRJT05fTUFOQUdFUl9QUk9UT0NPTCAgKiBDT05TVCBUaGlz LA0KICAgICsgIElOICBDT05TVCBDTV9PQkpFQ1RfSUQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgQ21PYmplY3RJZCwNCiAgICArICBJTiAgQ09OU1QgQ01fT0JKRUNUX1RPS0VOICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlYXJjaFRva2VuLA0KICAgICsgIElOICBPVVQg ICBDTV9PQkpfREVTQ1JJUFRPUiAgICAgICAgICAgICAgICAgICAgICogQ09OU1QgQ21PYmplY3QN CiAgICArICApDQogICAgK3sNCiAgICArICBFREtJSV9DT01NT05fUExBVEZPUk1fUkVQT1NJVE9S WV9JTkZPICAqIFBsYXRmb3JtUmVwbzsNCiAgICArICBVSU5UMzIgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE9iakluZGV4Ow0KICAgICsNCiAgICArICBpZiAoKFRoaXMgPT0gTlVM TCkgfHwgKENtT2JqZWN0ID09IE5VTEwpKSB7DQogICAgKyAgICBBU1NFUlQgKFRoaXMgIT0gTlVM TCk7DQogICAgKyAgICBBU1NFUlQgKENtT2JqZWN0ICE9IE5VTEwpOw0KICAgICsgICAgcmV0dXJu IEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCiAgICArICB9DQogICAgKw0KICAgICsgIFBsYXRmb3Jt UmVwbyA9IFRoaXMtPlBsYXRSZXBvSW5mby0+Q29tbW9uUGxhdFJlcG9JbmZvOw0KICAgICsNCiAg ICArICBmb3IgKE9iakluZGV4ID0gMDsgT2JqSW5kZXggPCBQTEFUX0NQVV9DT1VOVDsgT2JqSW5k ZXgrKykgew0KICAgICsgICAgaWYgKFNlYXJjaFRva2VuID09IChDTV9PQkpFQ1RfVE9LRU4pJlBs YXRmb3JtUmVwby0+R2ljQ0luZm9bT2JqSW5kZXhdKSB7DQogICAgKyAgICAgIENtT2JqZWN0LT5P YmplY3RJZCA9IENtT2JqZWN0SWQ7DQogICAgKyAgICAgIENtT2JqZWN0LT5TaXplID0gc2l6ZW9m IChQbGF0Zm9ybVJlcG8tPkdpY0NJbmZvW09iakluZGV4XSk7DQogICAgKyAgICAgIENtT2JqZWN0 LT5EYXRhID0gKFZPSUQqKSZQbGF0Zm9ybVJlcG8tPkdpY0NJbmZvW09iakluZGV4XTsNCiAgICAr ICAgICAgQ21PYmplY3QtPkNvdW50ID0gMTsNCiAgICArICAgICAgcmV0dXJuIEVGSV9TVUNDRVNT Ow0KICAgICsgICAgfQ0KICAgICsgIH0NCiAgICArDQogICAgKyAgcmV0dXJuIEVGSV9OT1RfRk9V TkQ7DQogICAgK30NCiAgICArDQogICAgKy8qKiBSZXR1cm4gYSBsaXN0IG9mIENvbmZpZ3VyYXRp b24gTWFuYWdlciBvYmplY3QgcmVmZXJlbmNlcyBwb2ludGVkIHRvIGJ5IHRoZQ0KICAgICsgICAg Z2l2ZW4gaW5wdXQgdG9rZW4uDQogICAgKw0KICAgICsgIEBwYXJhbSBbaW5dICAgICAgVGhpcyAg ICAgICAgICAgUG9pbnRlciB0byB0aGUgQ29uZmlndXJhdGlvbiBNYW5hZ2VyIFByb3RvY29sLg0K ICAgICsgIEBwYXJhbSBbaW5dICAgICAgQ21PYmplY3RJZCAgICAgVGhlIE9iamVjdCBJRCBvZiB0 aGUgQ00gb2JqZWN0IHJlcXVlc3RlZA0KICAgICsgIEBwYXJhbSBbaW5dICAgICAgU2VhcmNoVG9r ZW4gICAgQSB1bmlxdWUgdG9rZW4gZm9yIGlkZW50aWZ5aW5nIHRoZSByZXF1ZXN0ZWQNCiAgICAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENNX0FSTV9PQkpfUkVGIGxpc3QuDQog ICAgKyAgQHBhcmFtIFtpbiwgb3V0XSBDbU9iamVjdCAgICAgICBQb2ludGVyIHRvIHRoZSBDb25m aWd1cmF0aW9uIE1hbmFnZXIgT2JqZWN0DQogICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkZXNjcmlwdG9yIGRlc2NyaWJpbmcgdGhlIHJlcXVlc3RlZCBPYmplY3QuDQogICAg Kw0KICAgICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgU3VjY2Vzcy4NCiAgICAr ICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgIEEgcGFyYW1ldGVyIGlzIGludmFsaWQu DQogICAgKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgICBUaGUgcmVxdWlyZWQgb2Jq ZWN0IGluZm9ybWF0aW9uIGlzIG5vdCBmb3VuZC4NCiAgICArKiovDQogICAgK0VGSV9TVEFUVVMN CiAgICArRUZJQVBJDQogICAgK0dldENtT2JqUmVmcyAoDQogICAgKyAgSU4gIENPTlNUIEVES0lJ X0NPTkZJR1VSQVRJT05fTUFOQUdFUl9QUk9UT0NPTCAgKiBDT05TVCBUaGlzLA0KICAgICsgIElO ICBDT05TVCBDTV9PQkpFQ1RfSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ21P YmplY3RJZCwNCiAgICArICBJTiAgQ09OU1QgQ01fT0JKRUNUX1RPS0VOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFNlYXJjaFRva2VuLA0KICAgICsgIElOICBPVVQgICBDTV9PQkpfREVT Q1JJUFRPUiAgICAgICAgICAgICAgICAgICAgICogQ09OU1QgQ21PYmplY3QNCiAgICArICApDQog ICAgK3sNCiAgICArICBFREtJSV9DT01NT05fUExBVEZPUk1fUkVQT1NJVE9SWV9JTkZPICAqIENv bW1vblBsYXRSZXBvOw0KICAgICsNCiAgICArICBpZiAoKFRoaXMgPT0gTlVMTCkgfHwgKENtT2Jq ZWN0ID09IE5VTEwpKSB7DQogICAgKyAgICBBU1NFUlQgKFRoaXMgIT0gTlVMTCk7DQogICAgKyAg ICBBU1NFUlQgKENtT2JqZWN0ICE9IE5VTEwpOw0KICAgICsgICAgcmV0dXJuIEVGSV9JTlZBTElE X1BBUkFNRVRFUjsNCiAgICArICB9DQogICAgKw0KICAgICsgIENvbW1vblBsYXRSZXBvID0gVGhp cy0+UGxhdFJlcG9JbmZvLT5Db21tb25QbGF0UmVwb0luZm87DQogICAgKw0KICAgICsgIGlmIChT ZWFyY2hUb2tlbiA9PSAoQ01fT0JKRUNUX1RPS0VOKSZDb21tb25QbGF0UmVwby0+Q2x1c3RlclJl c291cmNlcykgew0KICAgICsgICAgQ21PYmplY3QtPlNpemUgPSBzaXplb2YgKENvbW1vblBsYXRS ZXBvLT5DbHVzdGVyUmVzb3VyY2VzKTsNCiAgICArICAgIENtT2JqZWN0LT5EYXRhID0gKFZPSUQq KSZDb21tb25QbGF0UmVwby0+Q2x1c3RlclJlc291cmNlczsNCiAgICArICAgIENtT2JqZWN0LT5D b3VudCA9IEFSUkFZX1NJWkUgKENvbW1vblBsYXRSZXBvLT5DbHVzdGVyUmVzb3VyY2VzKTsNCiAg ICArICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCiAgICArICB9DQogICAgKyAgaWYgKFNlYXJjaFRv a2VuID09IChDTV9PQkpFQ1RfVE9LRU4pJkNvbW1vblBsYXRSZXBvLT5Db3JlUmVzb3VyY2VzKSB7 DQogICAgKyAgICBDbU9iamVjdC0+U2l6ZSA9IHNpemVvZiAoQ29tbW9uUGxhdFJlcG8tPkNvcmVS ZXNvdXJjZXMpOw0KICAgICsgICAgQ21PYmplY3QtPkRhdGEgPSAoVk9JRCopJkNvbW1vblBsYXRS ZXBvLT5Db3JlUmVzb3VyY2VzOw0KICAgICsgICAgQ21PYmplY3QtPkNvdW50ID0gQVJSQVlfU0la RSAoQ29tbW9uUGxhdFJlcG8tPkNvcmVSZXNvdXJjZXMpOw0KICAgICsgICAgcmV0dXJuIEVGSV9T VUNDRVNTOw0KICAgICsgIH0NCiAgICArICBpZiAoU2VhcmNoVG9rZW4gPT0gKENNX09CSkVDVF9U T0tFTikmQ29tbW9uUGxhdFJlcG8tPlNvY1Jlc291cmNlcykgew0KICAgICsgICAgQ21PYmplY3Qt PlNpemUgPSBzaXplb2YgKENvbW1vblBsYXRSZXBvLT5Tb2NSZXNvdXJjZXMpOw0KICAgICsgICAg Q21PYmplY3QtPkRhdGEgPSAoVk9JRCopJkNvbW1vblBsYXRSZXBvLT5Tb2NSZXNvdXJjZXM7DQog ICAgKyAgICBDbU9iamVjdC0+Q291bnQgPSBBUlJBWV9TSVpFIChDb21tb25QbGF0UmVwby0+U29j UmVzb3VyY2VzKTsNCiAgICArICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCiAgICArICB9DQogICAg Kw0KICAgICsgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KICAgICt9DQogICAgKw0KICAgICsvKiog UmV0dXJuIGEgc3RhbmRhcmQgbmFtZXNwYWNlIG9iamVjdC4NCiAgICArDQogICAgKyAgQHBhcmFt IFtpbl0gICAgICBUaGlzICAgICAgICBQb2ludGVyIHRvIHRoZSBDb25maWd1cmF0aW9uIE1hbmFn ZXIgUHJvdG9jb2wuDQogICAgKyAgQHBhcmFtIFtpbl0gICAgICBDbU9iamVjdElkICBUaGUgQ29u ZmlndXJhdGlvbiBNYW5hZ2VyIE9iamVjdCBJRC4NCiAgICArICBAcGFyYW0gW2luXSAgICAgIFRv a2VuICAgICAgIEFuIG9wdGlvbmFsIHRva2VuIGlkZW50aWZ5aW5nIHRoZSBvYmplY3QuIElmDQog ICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQgdGhpcyBtdXN0IGJlIENN X05VTExfVE9LRU4uDQogICAgKyAgQHBhcmFtIFtpbiwgb3V0XSBDbU9iamVjdCAgICBQb2ludGVy IHRvIHRoZSBDb25maWd1cmF0aW9uIE1hbmFnZXIgT2JqZWN0DQogICAgKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yIGRlc2NyaWJpbmcgdGhlIHJlcXVlc3RlZCBPYmpl Y3QuDQogICAgKw0KICAgICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFN1Y2Nlc3Mu DQogICAgKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52 YWxpZC4NCiAgICArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcmVxdWlyZWQg b2JqZWN0IGluZm9ybWF0aW9uIGlzIG5vdCBmb3VuZC4NCiAgICArKiovDQogICAgK0VGSV9TVEFU VVMNCiAgICArRUZJQVBJDQogICAgK0dldFN0YW5kYXJkTmFtZVNwYWNlT2JqZWN0ICgNCiAgICAr ICBJTiAgQ09OU1QgRURLSUlfQ09ORklHVVJBVElPTl9NQU5BR0VSX1BST1RPQ09MICAqIENPTlNU IFRoaXMsDQogICAgKyAgSU4gIENPTlNUIENNX09CSkVDVF9JRCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBDbU9iamVjdElkLA0KICAgICsgIElOICBDT05TVCBDTV9PQkpFQ1RfVE9L RU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9rZW4gT1BUSU9OQUwsDQogICAgKyAg SU4gIE9VVCAgIENNX09CSl9ERVNDUklQVE9SICAgICAgICAgICAgICAgICAgICAgKiBDT05TVCBD bU9iamVjdA0KICAgICsgICkNCiAgICArew0KICAgICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KICAgICsgIEVES0lJX0NPTU1PTl9QTEFURk9STV9S RVBPU0lUT1JZX0lORk8gICogQ29tbW9uUGxhdFJlcG87DQogICAgKw0KICAgICsgIGlmICgoVGhp cyA9PSBOVUxMKSB8fCAoQ21PYmplY3QgPT0gTlVMTCkpIHsNCiAgICArICAgIEFTU0VSVCAoVGhp cyAhPSBOVUxMKTsNCiAgICArICAgIEFTU0VSVCAoQ21PYmplY3QgIT0gTlVMTCk7DQogICAgKyAg ICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KICAgICsgIH0NCiAgICArDQogICAgKyAg U3RhdHVzID0gRUZJX05PVF9GT1VORDsNCltTQU1JXSBEbyB3ZSBuZWVkIHRoaXMgaW5pdGlhbGlz YXRpb24/DQpbL1NBTUldDQogICAgKyAgQ29tbW9uUGxhdFJlcG8gPSBUaGlzLT5QbGF0UmVwb0lu Zm8tPkNvbW1vblBsYXRSZXBvSW5mbzsNCiAgICArDQogICAgKyAgLy9GaXJzdCBzZWFyY2ggdGhl IEZWUC9Tb0MgcGxhdGZvcm0gc3BlY2lmaWMgb2JqZWN0cyBhbmQgZW50ZXIgdGhlIGJlbG93DQog ICAgKyAgLy9pZiBjb25kaXRpb24gb25seSB3aGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBFRklf Tk9UX0ZPVU5EIHN0YXR1cy4NCiAgICArICBTdGF0dXMgPSBHZXRTdGFuZGFyZE5hbWVTcGFjZU9i amVjdFBsYXQgKFRoaXMsIENtT2JqZWN0SWQsIFRva2VuLCBDbU9iamVjdCk7DQogICAgKw0KICAg ICsgIGlmIChTdGF0dXMgPT0gRUZJX05PVF9GT1VORCkgew0KICAgICsgICAgc3dpdGNoIChHRVRf Q01fT0JKRUNUX0lEIChDbU9iamVjdElkKSkgew0KICAgICsgICAgICBjYXNlIEVTdGRPYmpDZmdN Z3JJbmZvOg0KICAgICsgICAgICAgIFN0YXR1cyA9IEhhbmRsZUNtT2JqZWN0ICgNCiAgICArICAg ICAgICAgICAgICAgICAgIENtT2JqZWN0SWQsDQogICAgKyAgICAgICAgICAgICAgICAgICAmQ29t bW9uUGxhdFJlcG8tPkNtSW5mbywNCiAgICArICAgICAgICAgICAgICAgICAgIHNpemVvZiAoQ29t bW9uUGxhdFJlcG8tPkNtSW5mbyksDQogICAgKyAgICAgICAgICAgICAgICAgICAxLA0KICAgICsg ICAgICAgICAgICAgICAgICAgQ21PYmplY3QNCiAgICArICAgICAgICAgICAgICAgICAgICk7DQog ICAgKyAgICAgICAgYnJlYWs7DQogICAgKw0KICAgICsgICAgICBkZWZhdWx0OiB7DQogICAgKyAg ICAgICAgU3RhdHVzID0gRUZJX05PVF9GT1VORDsNCiAgICArICAgICAgICBERUJVRyAoKA0KICAg ICsgICAgICAgICAgREVCVUdfRVJST1IsDQogICAgKyAgICAgICAgICAiRVJST1I6IE9iamVjdCAw eCV4LiBTdGF0dXMgPSAlclxuIiwNCiAgICArICAgICAgICAgIENtT2JqZWN0SWQsDQogICAgKyAg ICAgICAgICBTdGF0dXMNCiAgICArICAgICAgICAgICkpOw0KICAgICsgICAgICAgIGJyZWFrOw0K ICAgICsgICAgICB9DQogICAgKyAgICB9IC8vc3dpdGNoDQogICAgKyAgfQ0KICAgICsNCiAgICAr ICByZXR1cm4gU3RhdHVzOw0KICAgICt9DQogICAgKw0KICAgICsvKiogUmV0dXJuIGFuIEFSTSBu YW1lc3BhY2Ugb2JqZWN0Lg0KICAgICsNCiAgICArICBAcGFyYW0gW2luXSAgICAgIFRoaXMgICAg ICAgIFBvaW50ZXIgdG8gdGhlIENvbmZpZ3VyYXRpb24gTWFuYWdlciBQcm90b2NvbC4NCiAgICAr ICBAcGFyYW0gW2luXSAgICAgIENtT2JqZWN0SWQgIFRoZSBDb25maWd1cmF0aW9uIE1hbmFnZXIg T2JqZWN0IElELg0KICAgICsgIEBwYXJhbSBbaW5dICAgICAgVG9rZW4gICAgICAgQW4gb3B0aW9u YWwgdG9rZW4gaWRlbnRpZnlpbmcgdGhlIG9iamVjdC4gSWYNCiAgICArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVudXNlZCB0aGlzIG11c3QgYmUgQ01fTlVMTF9UT0tFTi4NCiAgICAr ICBAcGFyYW0gW2luLCBvdXRdIENtT2JqZWN0ICAgIFBvaW50ZXIgdG8gdGhlIENvbmZpZ3VyYXRp b24gTWFuYWdlciBPYmplY3QNCiAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl c2NyaXB0b3IgZGVzY3JpYmluZyB0aGUgcmVxdWVzdGVkIE9iamVjdC4NCiAgICArDQogICAgKyAg QHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgU3VjY2Vzcy4NCiAgICArICBAcmV0dmFsIEVG SV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkLg0KICAgICsgIEByZXR2 YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSByZXF1aXJlZCBvYmplY3QgaW5mb3JtYXRpb24g aXMgbm90IGZvdW5kLg0KICAgICsqKi8NCiAgICArRUZJX1NUQVRVUw0KICAgICtFRklBUEkNCiAg ICArR2V0QXJtTmFtZVNwYWNlT2JqZWN0ICgNCiAgICArICBJTiAgQ09OU1QgRURLSUlfQ09ORklH VVJBVElPTl9NQU5BR0VSX1BST1RPQ09MICAqIENPTlNUIFRoaXMsDQogICAgKyAgSU4gIENPTlNU IENNX09CSkVDVF9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbU9iamVjdElk LA0KICAgICsgIElOICBDT05TVCBDTV9PQkpFQ1RfVE9LRU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVG9rZW4gT1BUSU9OQUwsDQogICAgKyAgSU4gIE9VVCAgIENNX09CSl9ERVNDUklQ VE9SICAgICAgICAgICAgICAgICAgICAgKiBDT05TVCBDbU9iamVjdA0KICAgICsgICkNCiAgICAr ew0KICAgICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVz Ow0KICAgICsgIEVES0lJX0NPTU1PTl9QTEFURk9STV9SRVBPU0lUT1JZX0lORk8gICogQ29tbW9u UGxhdFJlcG87DQogICAgKw0KICAgICsgIGlmICgoVGhpcyA9PSBOVUxMKSB8fCAoQ21PYmplY3Qg PT0gTlVMTCkpIHsNCiAgICArICAgIEFTU0VSVCAoVGhpcyAhPSBOVUxMKTsNCiAgICArICAgIEFT U0VSVCAoQ21PYmplY3QgIT0gTlVMTCk7DQogICAgKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFS QU1FVEVSOw0KICAgICsgIH0NCiAgICArICBDb21tb25QbGF0UmVwbyA9IFRoaXMtPlBsYXRSZXBv SW5mby0+Q29tbW9uUGxhdFJlcG9JbmZvOw0KICAgICsgIFN0YXR1cyA9IEVGSV9OT1RfRk9VTkQ7 DQpbU0FNSV0gRG8gd2UgbmVlZCB0aGlzIGluaXRpYWxpc2F0aW9uPyANClsvU0FNSV0NCiAgICAr DQogICAgKyAgLy9GaXJzdCBzZWFyY2ggdGhlIEZWUC9Tb0MgcGxhdGZvcm0gc3BlY2lmaWMgb2Jq ZWN0cyBhbmQgZW50ZXIgdGhlIGJlbG93DQogICAgKyAgLy9pZiBjb25kaXRpb24gb25seSB3aGVu IHRoaXMgZnVuY3Rpb24gcmV0dXJuIEVGSV9OT1RfRk9VTkQgc3RhdHVzLg0KICAgICsgIFN0YXR1 cyA9IEdldEFybU5hbWVTcGFjZU9iamVjdFBsYXQgKFRoaXMsIENtT2JqZWN0SWQsIFRva2VuLCBD bU9iamVjdCk7DQogICAgKw0KICAgICsgIGlmIChTdGF0dXMgPT0gRUZJX05PVF9GT1VORCkgew0K ICAgICsgICAgc3dpdGNoIChHRVRfQ01fT0JKRUNUX0lEIChDbU9iamVjdElkKSkgew0KICAgICsg ICAgICBjYXNlIEVBcm1PYmpCb290QXJjaEluZm86DQogICAgKyAgICAgICAgU3RhdHVzID0gSGFu ZGxlQ21PYmplY3QgKA0KICAgICsgICAgICAgICAgICAgICAgICAgQ21PYmplY3RJZCwNCiAgICAr ICAgICAgICAgICAgICAgICAgICZDb21tb25QbGF0UmVwby0+Qm9vdEFyY2hJbmZvLA0KICAgICsg ICAgICAgICAgICAgICAgICAgc2l6ZW9mIChDb21tb25QbGF0UmVwby0+Qm9vdEFyY2hJbmZvKSwN CiAgICArICAgICAgICAgICAgICAgICAgIDEsDQogICAgKyAgICAgICAgICAgICAgICAgICBDbU9i amVjdA0KICAgICsgICAgICAgICAgICAgICAgICAgKTsNCiAgICArICAgICAgYnJlYWs7DQogICAg Kw0KICAgICsjaWZkZWYgSEVBRExFU1NfUExBVEZPUk0NCiAgICArICAgICAgY2FzZSBFQXJtT2Jq Rml4ZWRGZWF0dXJlRmxhZ3M6DQogICAgKyAgICAgICAgU3RhdHVzID0gSGFuZGxlQ21PYmplY3Qg KA0KICAgICsgICAgICAgICAgICAgICAgICAgQ21PYmplY3RJZCwNCiAgICArICAgICAgICAgICAg ICAgICAgICZDb21tb25QbGF0UmVwby0+Rml4ZWRGZWF0dXJlRmxhZ3MsDQogICAgKyAgICAgICAg ICAgICAgICAgICBzaXplb2YgKENvbW1vblBsYXRSZXBvLT5GaXhlZEZlYXR1cmVGbGFncyksDQog ICAgKyAgICAgICAgICAgICAgICAgICAxLA0KICAgICsgICAgICAgICAgICAgICAgICAgQ21PYmpl Y3QNCiAgICArICAgICAgICAgICAgICAgICAgICk7DQogICAgKyAgICAgIGJyZWFrOw0KICAgICsj ZW5kaWYNCiAgICArICAgICAgY2FzZSBFQXJtT2JqUG93ZXJNYW5hZ2VtZW50UHJvZmlsZUluZm86 DQogICAgKyAgICAgICAgU3RhdHVzID0gSGFuZGxlQ21PYmplY3QgKA0KICAgICsgICAgICAgICAg ICAgICAgICAgQ21PYmplY3RJZCwNCiAgICArICAgICAgICAgICAgICAgICAgICZDb21tb25QbGF0 UmVwby0+UG1Qcm9maWxlSW5mbywNCiAgICArICAgICAgICAgICAgICAgICAgIHNpemVvZiAoQ29t bW9uUGxhdFJlcG8tPlBtUHJvZmlsZUluZm8pLA0KICAgICsgICAgICAgICAgICAgICAgICAgMSwN CiAgICArICAgICAgICAgICAgICAgICAgIENtT2JqZWN0DQogICAgKyAgICAgICAgICAgICAgICAg ICApOw0KICAgICsgICAgICBicmVhazsNCiAgICArDQogICAgKyAgICAgIGNhc2UgRUFybU9iakdl bmVyaWNUaW1lckluZm86DQogICAgKyAgICAgICAgU3RhdHVzID0gSGFuZGxlQ21PYmplY3QgKA0K ICAgICsgICAgICAgICAgICAgICAgICAgQ21PYmplY3RJZCwNCiAgICArICAgICAgICAgICAgICAg ICAgICZDb21tb25QbGF0UmVwby0+R2VuZXJpY1RpbWVySW5mbywNCiAgICArICAgICAgICAgICAg ICAgICAgIHNpemVvZiAoQ29tbW9uUGxhdFJlcG8tPkdlbmVyaWNUaW1lckluZm8pLA0KICAgICsg ICAgICAgICAgICAgICAgICAgMSwNCiAgICArICAgICAgICAgICAgICAgICAgIENtT2JqZWN0DQog ICAgKyAgICAgICAgICAgICAgICAgICApOw0KICAgICsgICAgICBicmVhazsNCiAgICArDQogICAg KyAgICAgIGNhc2UgRUFybU9ialBsYXRmb3JtR2VuZXJpY1dhdGNoZG9nSW5mbzoNCiAgICArICAg ICAgICBTdGF0dXMgPSBIYW5kbGVDbU9iamVjdCAoDQogICAgKyAgICAgICAgICAgICAgICAgICBD bU9iamVjdElkLA0KICAgICsgICAgICAgICAgICAgICAgICAgJkNvbW1vblBsYXRSZXBvLT5XYXRj aGRvZywNCiAgICArICAgICAgICAgICAgICAgICAgIHNpemVvZiAoQ29tbW9uUGxhdFJlcG8tPldh dGNoZG9nKSwNCiAgICArICAgICAgICAgICAgICAgICAgIDEsDQogICAgKyAgICAgICAgICAgICAg ICAgICBDbU9iamVjdA0KICAgICsgICAgICAgICAgICAgICAgICAgKTsNCiAgICArICAgICAgYnJl YWs7DQogICAgKw0KICAgICsgICAgICBjYXNlIEVBcm1PYmpQbGF0Zm9ybUdUQmxvY2tJbmZvOg0K ICAgICsgICAgICAgIFN0YXR1cyA9IEhhbmRsZUNtT2JqZWN0ICgNCiAgICArICAgICAgICAgICAg ICAgICAgIENtT2JqZWN0SWQsDQogICAgKyAgICAgICAgICAgICAgICAgICBDb21tb25QbGF0UmVw by0+R1RCbG9ja0luZm8sDQogICAgKyAgICAgICAgICAgICAgICAgICBzaXplb2YgKENvbW1vblBs YXRSZXBvLT5HVEJsb2NrSW5mbyksDQogICAgKyAgICAgICAgICAgICAgICAgICAxLA0KICAgICsg ICAgICAgICAgICAgICAgICAgQ21PYmplY3QNCiAgICArICAgICAgICAgICAgICAgICAgICk7DQog ICAgKyAgICAgIGJyZWFrOw0KICAgICsNCiAgICArICAgICAgY2FzZSBFQXJtT2JqR1RCbG9ja1Rp bWVyRnJhbWVJbmZvOg0KICAgICsgICAgICAgIFN0YXR1cyA9IEhhbmRsZUNtT2JqZWN0UmVmQnlU b2tlbiAoDQogICAgKyAgICAgICAgICAgICAgICAgICBUaGlzLA0KICAgICsgICAgICAgICAgICAg ICAgICAgQ21PYmplY3RJZCwNCiAgICArICAgICAgICAgICAgICAgICAgIENvbW1vblBsYXRSZXBv LT5HVEJsb2NrMFRpbWVySW5mbywNCiAgICArICAgICAgICAgICAgICAgICAgIHNpemVvZiAoQ29t bW9uUGxhdFJlcG8tPkdUQmxvY2swVGltZXJJbmZvKSwNCiAgICArICAgICAgICAgICAgICAgICAg IEFSUkFZX1NJWkUgKENvbW1vblBsYXRSZXBvLT5HVEJsb2NrMFRpbWVySW5mbyksDQogICAgKyAg ICAgICAgICAgICAgICAgICBUb2tlbiwNCiAgICArICAgICAgICAgICAgICAgICAgIEdldEdUQmxv Y2tUaW1lckZyYW1lSW5mbywNCiAgICArICAgICAgICAgICAgICAgICAgIENtT2JqZWN0DQogICAg KyAgICAgICAgICAgICAgICAgICApOw0KICAgICsgICAgICBicmVhazsNCiAgICArDQogICAgKyAg ICAgIGNhc2UgRUFybU9iakdpY0NJbmZvOg0KICAgICsgICAgICAgIFN0YXR1cyA9IEhhbmRsZUNt T2JqZWN0UmVmQnlUb2tlbiAoDQogICAgKyAgICAgICAgICAgICAgICAgICBUaGlzLA0KICAgICsg ICAgICAgICAgICAgICAgICAgQ21PYmplY3RJZCwNCiAgICArICAgICAgICAgICAgICAgICAgIENv bW1vblBsYXRSZXBvLT5HaWNDSW5mbywNCiAgICArICAgICAgICAgICAgICAgICAgIHNpemVvZiAo Q29tbW9uUGxhdFJlcG8tPkdpY0NJbmZvKSwNCiAgICArICAgICAgICAgICAgICAgICAgIFBMQVRf Q1BVX0NPVU5ULA0KICAgICsgICAgICAgICAgICAgICAgICAgVG9rZW4sDQogICAgKyAgICAgICAg ICAgICAgICAgICBHZXRHaWNDSW5mbywNCiAgICArICAgICAgICAgICAgICAgICAgIENtT2JqZWN0 DQogICAgKyAgICAgICAgICAgICAgICAgICApOw0KICAgICsgICAgICBicmVhazsNCiAgICArDQog ICAgKyAgICAgIGNhc2UgRUFybU9iakdpY0RJbmZvOg0KICAgICsgICAgICAgIFN0YXR1cyA9IEhh bmRsZUNtT2JqZWN0ICgNCiAgICArICAgICAgICAgICAgICAgICAgIENtT2JqZWN0SWQsDQogICAg KyAgICAgICAgICAgICAgICAgICAmQ29tbW9uUGxhdFJlcG8tPkdpY0RJbmZvLA0KICAgICsgICAg ICAgICAgICAgICAgICAgc2l6ZW9mIChDb21tb25QbGF0UmVwby0+R2ljREluZm8pLA0KICAgICsg ICAgICAgICAgICAgICAgICAgMSwNCiAgICArICAgICAgICAgICAgICAgICAgIENtT2JqZWN0DQog ICAgKyAgICAgICAgICAgICAgICAgICApOw0KICAgICsgICAgICBicmVhazsNCiAgICArDQogICAg KyAgICAgIGNhc2UgRUFybU9iakdpY1JlZGlzdHJpYnV0b3JJbmZvOg0KICAgICsgICAgICAgIFN0 YXR1cyA9IEhhbmRsZUNtT2JqZWN0ICgNCiAgICArICAgICAgICAgICAgICAgICAgIENtT2JqZWN0 SWQsDQogICAgKyAgICAgICAgICAgICAgICAgICAmQ29tbW9uUGxhdFJlcG8tPkdpY1JlZGlzdElu Zm8sDQogICAgKyAgICAgICAgICAgICAgICAgICBzaXplb2YgKENvbW1vblBsYXRSZXBvLT5HaWNS ZWRpc3RJbmZvKSwNCiAgICArICAgICAgICAgICAgICAgICAgIDEsDQogICAgKyAgICAgICAgICAg ICAgICAgICBDbU9iamVjdA0KICAgICsgICAgICAgICAgICAgICAgICAgKTsNCiAgICArICAgICAg YnJlYWs7DQogICAgKw0KICAgICsgICAgICBjYXNlIEVBcm1PYmpTZXJpYWxDb25zb2xlUG9ydElu Zm86DQogICAgKyAgICAgICAgU3RhdHVzID0gSGFuZGxlQ21PYmplY3QgKA0KICAgICsgICAgICAg ICAgICAgICAgICAgQ21PYmplY3RJZCwNCiAgICArICAgICAgICAgICAgICAgICAgICZDb21tb25Q bGF0UmVwby0+U3BjclNlcmlhbFBvcnQsDQogICAgKyAgICAgICAgICAgICAgICAgICBzaXplb2Yg KENvbW1vblBsYXRSZXBvLT5TcGNyU2VyaWFsUG9ydCksDQogICAgKyAgICAgICAgICAgICAgICAg ICAxLA0KICAgICsgICAgICAgICAgICAgICAgICAgQ21PYmplY3QNCiAgICArICAgICAgICAgICAg ICAgICAgICk7DQogICAgKyAgICAgIGJyZWFrOw0KICAgICsNCiAgICArICAgICAgY2FzZSBFQXJt T2JqU2VyaWFsRGVidWdQb3J0SW5mbzoNCiAgICArICAgICAgICBTdGF0dXMgPSBIYW5kbGVDbU9i amVjdCAoDQogICAgKyAgICAgICAgICAgICAgICAgICBDbU9iamVjdElkLA0KICAgICsgICAgICAg ICAgICAgICAgICAgJkNvbW1vblBsYXRSZXBvLT5EYmdTZXJpYWxQb3J0LA0KICAgICsgICAgICAg ICAgICAgICAgICAgc2l6ZW9mIChDb21tb25QbGF0UmVwby0+RGJnU2VyaWFsUG9ydCksDQogICAg KyAgICAgICAgICAgICAgICAgICAxLA0KICAgICsgICAgICAgICAgICAgICAgICAgQ21PYmplY3QN CiAgICArICAgICAgICAgICAgICAgICAgICk7DQogICAgKyAgICAgIGJyZWFrOw0KICAgICsNCiAg ICArICAgICAgY2FzZSBFQXJtT2JqUHJvY0hpZXJhcmNoeUluZm86DQogICAgKyAgICAgICAgU3Rh dHVzID0gSGFuZGxlQ21PYmplY3QgKA0KICAgICsgICAgICAgICAgICAgICAgICAgQ21PYmplY3RJ ZCwNCiAgICArICAgICAgICAgICAgICAgICAgIENvbW1vblBsYXRSZXBvLT5Qcm9jSGllcmFyY2h5 SW5mbywNCiAgICArICAgICAgICAgICAgICAgICAgIHNpemVvZiAoQ29tbW9uUGxhdFJlcG8tPlBy b2NIaWVyYXJjaHlJbmZvKSwNCiAgICArICAgICAgICAgICAgICAgICAgIFBMQVRfUFJPQ19ISUVS QVJDSFlfTk9ERV9DT1VOVCwNCiAgICArICAgICAgICAgICAgICAgICAgIENtT2JqZWN0DQogICAg KyAgICAgICAgICAgICAgICAgICApOw0KICAgICsgICAgICBicmVhazsNCiAgICArDQogICAgKyAg ICAgIGNhc2UgRUFybU9iakNhY2hlSW5mbzoNCiAgICArICAgICAgICBTdGF0dXMgPSBIYW5kbGVD bU9iamVjdCAoDQogICAgKyAgICAgICAgICAgICAgICAgICBDbU9iamVjdElkLA0KICAgICsgICAg ICAgICAgICAgICAgICAgQ29tbW9uUGxhdFJlcG8tPkNhY2hlSW5mbywNCiAgICArICAgICAgICAg ICAgICAgICAgIHNpemVvZiAoQ29tbW9uUGxhdFJlcG8tPkNhY2hlSW5mbyksDQogICAgKyAgICAg ICAgICAgICAgICAgICBBUlJBWV9TSVpFIChDb21tb25QbGF0UmVwby0+Q2FjaGVJbmZvKSwNCiAg ICArICAgICAgICAgICAgICAgICAgIENtT2JqZWN0DQogICAgKyAgICAgICAgICAgICAgICAgICAp Ow0KICAgICsgICAgICBicmVhazsNCiAgICArDQogICAgKyAgICAgIGNhc2UgRUFybU9iakNtUmVm Og0KICAgICsgICAgICAgIFN0YXR1cyA9IEhhbmRsZUNtT2JqZWN0U2VhcmNoUGxhdGZvcm1SZXBv ICgNCiAgICArICAgICAgICAgICAgICAgICAgIFRoaXMsDQogICAgKyAgICAgICAgICAgICAgICAg ICBDbU9iamVjdElkLA0KICAgICsgICAgICAgICAgICAgICAgICAgVG9rZW4sDQogICAgKyAgICAg ICAgICAgICAgICAgICBHZXRDbU9ialJlZnMsDQogICAgKyAgICAgICAgICAgICAgICAgICBDbU9i amVjdA0KICAgICsgICAgICAgICAgICAgICAgICAgKTsNCiAgICArICAgICAgYnJlYWs7DQogICAg Kw0KICAgICsgICAgICBkZWZhdWx0OiB7DQogICAgKyAgICAgICAgU3RhdHVzID0gRUZJX05PVF9G T1VORDsNCiAgICArICAgICAgICBERUJVRyAoKA0KICAgICsgICAgICAgICAgREVCVUdfSU5GTywN CiAgICArICAgICAgICAgICJJTkZPOiBPYmplY3QgMHgleC4gU3RhdHVzID0gJXJcbiIsDQogICAg KyAgICAgICAgICBDbU9iamVjdElkLA0KICAgICsgICAgICAgICAgU3RhdHVzDQogICAgKyAgICAg ICAgICApKTsNCiAgICArICAgICAgICBicmVhazsNCiAgICArICAgICAgfQ0KICAgICsgICAgfS8v c3dpdGNoDQogICAgKyAgfQ0KICAgICsgIHJldHVybiBTdGF0dXM7DQogICAgK30NCiAgICArDQog ICAgKy8qKiBSZXR1cm4gYW4gT0VNIG5hbWVzcGFjZSBvYmplY3QuDQogICAgKw0KICAgICsgIEBw YXJhbSBbaW5dICAgICAgVGhpcyAgICAgICAgUG9pbnRlciB0byB0aGUgQ29uZmlndXJhdGlvbiBN YW5hZ2VyIFByb3RvY29sLg0KICAgICsgIEBwYXJhbSBbaW5dICAgICAgQ21PYmplY3RJZCAgVGhl IENvbmZpZ3VyYXRpb24gTWFuYWdlciBPYmplY3QgSUQuDQogICAgKyAgQHBhcmFtIFtpbl0gICAg ICBUb2tlbiAgICAgICBBbiBvcHRpb25hbCB0b2tlbiBpZGVudGlmeWluZyB0aGUgb2JqZWN0LiBJ Zg0KICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkIHRoaXMgbXVzdCBi ZSBDTV9OVUxMX1RPS0VOLg0KICAgICsgIEBwYXJhbSBbaW4sIG91dF0gQ21PYmplY3QgICAgUG9p bnRlciB0byB0aGUgQ29uZmlndXJhdGlvbiBNYW5hZ2VyIE9iamVjdA0KICAgICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRvciBkZXNjcmliaW5nIHRoZSByZXF1ZXN0ZWQg T2JqZWN0Lg0KICAgICsNCiAgICArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBTdWNj ZXNzLg0KICAgICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlz IGludmFsaWQuDQogICAgKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgVGhlIHJlcXVp cmVkIG9iamVjdCBpbmZvcm1hdGlvbiBpcyBub3QgZm91bmQuDQogICAgKyoqLw0KICAgICtFRklf U1RBVFVTDQogICAgK0VGSUFQSQ0KICAgICtHZXRPZW1OYW1lU3BhY2VPYmplY3QgKA0KICAgICsg IElOICBDT05TVCBFREtJSV9DT05GSUdVUkFUSU9OX01BTkFHRVJfUFJPVE9DT0wgICogQ09OU1Qg VGhpcywNCiAgICArICBJTiAgQ09OU1QgQ01fT0JKRUNUX0lEICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIENtT2JqZWN0SWQsDQogICAgKyAgSU4gIENPTlNUIENNX09CSkVDVF9UT0tF TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb2tlbiBPUFRJT05BTCwNCiAgICArICBJ TiAgT1VUICAgQ01fT0JKX0RFU0NSSVBUT1IgICAgICAgICAgICAgICAgICAgICAqIENPTlNUIENt T2JqZWN0DQogICAgKyAgKQ0KICAgICt7DQogICAgKyAgRUZJX1NUQVRVUyAgU3RhdHVzOw0KICAg ICsNCiAgICArICBTdGF0dXMgPSBFRklfU1VDQ0VTUzsNCiAgICArICBpZiAoKFRoaXMgPT0gTlVM TCkgfHwgKENtT2JqZWN0ID09IE5VTEwpKSB7DQogICAgKyAgICBBU1NFUlQgKFRoaXMgIT0gTlVM TCk7DQogICAgKyAgICBBU1NFUlQgKENtT2JqZWN0ICE9IE5VTEwpOw0KICAgICsgICAgcmV0dXJu IEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCiAgICArICB9DQogICAgKw0KICAgICsgIHN3aXRjaCAo R0VUX0NNX09CSkVDVF9JRCAoQ21PYmplY3RJZCkpIHsNCiAgICArICAgIGRlZmF1bHQ6IHsNCiAg ICArICAgICAgU3RhdHVzID0gRUZJX05PVF9GT1VORDsNCiAgICArICAgICAgREVCVUcgKCgNCiAg ICArICAgICAgICBERUJVR19FUlJPUiwNCiAgICArICAgICAgICAiRVJST1I6IE9iamVjdCAweCV4 LiBTdGF0dXMgPSAlclxuIiwNCiAgICArICAgICAgICBDbU9iamVjdElkLA0KICAgICsgICAgICAg IFN0YXR1cw0KICAgICsgICAgICAgICkpOw0KICAgICsgICAgICBicmVhazsNCiAgICArICAgIH0N CiAgICArICB9DQogICAgKw0KICAgICsgIHJldHVybiBTdGF0dXM7DQogICAgK30NCiAgICArDQog ICAgKy8qKiBUaGUgR2V0T2JqZWN0IGZ1bmN0aW9uIGRlZmluZXMgdGhlIGludGVyZmFjZSBpbXBs ZW1lbnRlZCBieSB0aGUNCiAgICArICAgIENvbmZpZ3VyYXRpb24gTWFuYWdlciBQcm90b2NvbCBm b3IgcmV0dXJuaW5nIHRoZSBDb25maWd1cmF0aW9uDQogICAgKyAgICBNYW5hZ2VyIE9iamVjdHMu DQogICAgKw0KICAgICsgIEBwYXJhbSBbaW5dICAgICAgVGhpcyAgICAgICAgUG9pbnRlciB0byB0 aGUgQ29uZmlndXJhdGlvbiBNYW5hZ2VyIFByb3RvY29sLg0KICAgICsgIEBwYXJhbSBbaW5dICAg ICAgQ21PYmplY3RJZCAgVGhlIENvbmZpZ3VyYXRpb24gTWFuYWdlciBPYmplY3QgSUQuDQogICAg KyAgQHBhcmFtIFtpbl0gICAgICBUb2tlbiAgICAgICBBbiBvcHRpb25hbCB0b2tlbiBpZGVudGlm eWluZyB0aGUgb2JqZWN0LiBJZg0KICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dW51c2VkIHRoaXMgbXVzdCBiZSBDTV9OVUxMX1RPS0VOLg0KICAgICsgIEBwYXJhbSBbaW4sIG91 dF0gQ21PYmplY3QgICAgUG9pbnRlciB0byB0aGUgQ29uZmlndXJhdGlvbiBNYW5hZ2VyIE9iamVj dA0KICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRvciBkZXNjcmli aW5nIHRoZSByZXF1ZXN0ZWQgT2JqZWN0Lg0KICAgICsNCiAgICArICBAcmV0dmFsIEVGSV9TVUND RVNTICAgICAgICAgICBTdWNjZXNzLg0KICAgICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1F VEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQuDQogICAgKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5E ICAgICAgICAgVGhlIHJlcXVpcmVkIG9iamVjdCBpbmZvcm1hdGlvbiBpcyBub3QgZm91bmQuDQog ICAgKyoqLw0KICAgICtFRklfU1RBVFVTDQogICAgK0VGSUFQSQ0KICAgICtNb3JlbGxvUGxhdGZv cm1HZXRPYmplY3QgKA0KICAgICsgIElOICBDT05TVCBFREtJSV9DT05GSUdVUkFUSU9OX01BTkFH RVJfUFJPVE9DT0wgICogQ09OU1QgVGhpcywNCiAgICArICBJTiAgQ09OU1QgQ01fT0JKRUNUX0lE ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENtT2JqZWN0SWQsDQogICAgKyAgSU4g IENPTlNUIENNX09CSkVDVF9UT0tFTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb2tl biBPUFRJT05BTCwNCiAgICArICBJTiAgT1VUICAgQ01fT0JKX0RFU0NSSVBUT1IgICAgICAgICAg ICAgICAgICAgICAqIENPTlNUIENtT2JqZWN0DQogICAgKyAgKQ0KICAgICt7DQogICAgKyAgRUZJ X1NUQVRVUyAgU3RhdHVzOw0KICAgICsNCiAgICArICBpZiAoKFRoaXMgPT0gTlVMTCkgfHwgKENt T2JqZWN0ID09IE5VTEwpKSB7DQogICAgKyAgICBBU1NFUlQgKFRoaXMgIT0gTlVMTCk7DQogICAg KyAgICBBU1NFUlQgKENtT2JqZWN0ICE9IE5VTEwpOw0KICAgICsgICAgcmV0dXJuIEVGSV9JTlZB TElEX1BBUkFNRVRFUjsNCiAgICArICB9DQogICAgKw0KICAgICsgIHN3aXRjaCAoR0VUX0NNX05B TUVTUEFDRV9JRCAoQ21PYmplY3RJZCkpIHsNCiAgICArICAgIGNhc2UgRU9iak5hbWVTcGFjZVN0 YW5kYXJkOg0KICAgICsgICAgICBTdGF0dXMgPSBHZXRTdGFuZGFyZE5hbWVTcGFjZU9iamVjdCAo VGhpcywgQ21PYmplY3RJZCwgVG9rZW4sIENtT2JqZWN0KTsNCiAgICArICAgICAgYnJlYWs7DQog ICAgKyAgICBjYXNlIEVPYmpOYW1lU3BhY2VBcm06DQogICAgKyAgICAgIFN0YXR1cyA9IEdldEFy bU5hbWVTcGFjZU9iamVjdCAoVGhpcywgQ21PYmplY3RJZCwgVG9rZW4sIENtT2JqZWN0KTsNCiAg ICArICAgICAgYnJlYWs7DQogICAgKyAgICBjYXNlIEVPYmpOYW1lU3BhY2VPZW06DQogICAgKyAg ICAgIFN0YXR1cyA9IEdldE9lbU5hbWVTcGFjZU9iamVjdCAoVGhpcywgQ21PYmplY3RJZCwgVG9r ZW4sIENtT2JqZWN0KTsNCiAgICArICAgICAgYnJlYWs7DQogICAgKyAgICBkZWZhdWx0OiB7DQog ICAgKyAgICAgIFN0YXR1cyA9IEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCiAgICArICAgICAgREVC VUcgKCgNCiAgICArICAgICAgICBERUJVR19FUlJPUiwNCiAgICArICAgICAgICAiRVJST1I6IFVu a25vd24gTmFtZXNwYWNlIE9iamVjdCA9IDB4JXguIFN0YXR1cyA9ICVyXG4iLA0KICAgICsgICAg ICAgIENtT2JqZWN0SWQsDQogICAgKyAgICAgICAgU3RhdHVzDQogICAgKyAgICAgICAgKSk7DQog ICAgKyAgICAgIGJyZWFrOw0KICAgICsgICAgfQ0KICAgICsgIH0NCiAgICArDQogICAgKyAgcmV0 dXJuIFN0YXR1czsNCiAgICArfQ0KICAgICsNCiAgICArLyoqIFRoZSBTZXRPYmplY3QgZnVuY3Rp b24gZGVmaW5lcyB0aGUgaW50ZXJmYWNlIGltcGxlbWVudGVkIGJ5IHRoZQ0KICAgICsgICAgQ29u ZmlndXJhdGlvbiBNYW5hZ2VyIFByb3RvY29sIGZvciB1cGRhdGluZyB0aGUgQ29uZmlndXJhdGlv bg0KICAgICsgICAgTWFuYWdlciBPYmplY3RzLg0KICAgICsNCiAgICArICBAcGFyYW0gW2luXSAg ICAgIFRoaXMgICAgICAgIFBvaW50ZXIgdG8gdGhlIENvbmZpZ3VyYXRpb24gTWFuYWdlciBQcm90 b2NvbC4NCiAgICArICBAcGFyYW0gW2luXSAgICAgIENtT2JqZWN0SWQgIFRoZSBDb25maWd1cmF0 aW9uIE1hbmFnZXIgT2JqZWN0IElELg0KICAgICsgIEBwYXJhbSBbaW5dICAgICAgVG9rZW4gICAg ICAgQW4gb3B0aW9uYWwgdG9rZW4gaWRlbnRpZnlpbmcgdGhlIG9iamVjdC4gSWYNCiAgICArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZCB0aGlzIG11c3QgYmUgQ01fTlVMTF9U T0tFTi4NCiAgICArICBAcGFyYW0gW2luXSAgICAgIENtT2JqZWN0ICAgIFBvaW50ZXIgdG8gdGhl IENvbmZpZ3VyYXRpb24gTWFuYWdlciBPYmplY3QNCiAgICArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRlc2NyaXB0b3IgZGVzY3JpYmluZyB0aGUgT2JqZWN0Lg0KICAgICsNCiAgICAr ICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRl ZC4NCiAgICArKiovDQogICAgK0VGSV9TVEFUVVMNCiAgICArRUZJQVBJDQogICAgK01vcmVsbG9Q bGF0Zm9ybVNldE9iamVjdCAoDQogICAgKyAgSU4gIENPTlNUIEVES0lJX0NPTkZJR1VSQVRJT05f TUFOQUdFUl9QUk9UT0NPTCAgKiBDT05TVCBUaGlzLA0KICAgICsgIElOICBDT05TVCBDTV9PQkpF Q1RfSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ21PYmplY3RJZCwNCiAgICAr ICBJTiAgQ09OU1QgQ01fT0JKRUNUX1RPS0VOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFRva2VuIE9QVElPTkFMLA0KICAgICsgIElOICAgICAgICBDTV9PQkpfREVTQ1JJUFRPUiAgICAg ICAgICAgICAgICAgICAgICogQ09OU1QgQ21PYmplY3QNCiAgICArICApDQogICAgK3sNCiAgICAr ICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KICAgICt9DQogICAgKw0KICAgICsvKiogQSBzdHJ1 Y3R1cmUgZGVzY3JpYmluZyB0aGUgY29uZmlndXJhdGlvbiBtYW5hZ2VyIHByb3RvY29sIGludGVy ZmFjZS4NCiAgICArKi8NCiAgICArU1RBVElDDQogICAgK0NPTlNUDQogICAgK0VES0lJX0NPTkZJ R1VSQVRJT05fTUFOQUdFUl9QUk9UT0NPTCBNb3JlbGxvUGxhdGZvcm1Db25maWdNYW5hZ2VyUHJv dG9jb2wgPSB7DQogICAgKyAgQ1JFQVRFX1JFVklTSU9OKDEsMCksDQogICAgKyAgTW9yZWxsb1Bs YXRmb3JtR2V0T2JqZWN0LA0KICAgICsgIE1vcmVsbG9QbGF0Zm9ybVNldE9iamVjdCwNCiAgICAr ICAmTW9yZWxsb1JlcG9zaXRvcnlJbmZvDQogICAgK307DQogICAgKw0KICAgICsvKioNCiAgICAr ICBFbnRyeXBvaW50IG9mIENvbmZpZ3VyYXRpb24gTWFuYWdlciBEeGUuDQogICAgKw0KICAgICsg IEBwYXJhbSAgSW1hZ2VIYW5kbGUNCiAgICArICBAcGFyYW0gIFN5c3RlbVRhYmxlDQogICAgKw0K ICAgICsgIEByZXR1cm4gRUZJX1NVQ0NFU1MNCiAgICArICBAcmV0dXJuIEVGSV9MT0FEX0VSUk9S DQogICAgKyAgQHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUw0KICAgICsNCiAgICArKiovDQog ICAgK0VGSV9TVEFUVVMNCiAgICArRUZJQVBJDQogICAgK0NvbmZpZ3VyYXRpb25NYW5hZ2VyRHhl SW5pdGlhbGl6ZSAoDQogICAgKyAgSU4gRUZJX0hBTkRMRSAgICAgICAgICBJbWFnZUhhbmRsZSwN CiAgICArICBJTiBFRklfU1lTVEVNX1RBQkxFICAqIFN5c3RlbVRhYmxlDQogICAgKyAgKQ0KICAg ICt7DQogICAgKyAgRUZJX1NUQVRVUyAgICAgICAgIFN0YXR1czsNCiAgICArDQogICAgKyAgLy8g SW5pdGlhbGl6ZSB0aGUgUGxhdGZvcm0gQ29uZmlndXJhdGlvbiBSZXBvc2l0b3J5IGJlZm9yZSBp bnN0YWxsaW5nIHRoZQ0KICAgICsgIC8vIENvbmZpZ3VyYXRpb24gTWFuYWdlciBQcm90b2NvbA0K ICAgICsgIFN0YXR1cyA9IEluaXRpYWxpemVQbGF0Zm9ybVJlcG9zaXRvcnkgKA0KICAgICsgICAg ICAgICAgICAgTW9yZWxsb1BsYXRmb3JtQ29uZmlnTWFuYWdlclByb3RvY29sLlBsYXRSZXBvSW5m bw0KICAgICsgICAgICAgICAgICAgKTsNCiAgICArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7 DQogICAgKyAgICBERUJVRyAoKA0KICAgICsgICAgICBERUJVR19FUlJPUiwNCiAgICArICAgICAg IkVSUk9SOiBGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgUGxhdGZvcm0gQ29uZmlndXJhdGlvbiBS ZXBvc2l0b3J5LiIgXA0KICAgICsgICAgICAiIFN0YXR1cyA9ICVyXG4iLA0KICAgICsgICAgICBT dGF0dXMNCiAgICArICAgICAgKSk7DQogICAgKyAgfQ0KICAgICsNCiAgICArICBTdGF0dXMgPSBn QlMtPkluc3RhbGxQcm90b2NvbEludGVyZmFjZSAoDQogICAgKyAgICAgICAgICAgICAgICAgICZJ bWFnZUhhbmRsZSwNCiAgICArICAgICAgICAgICAgICAgICAgJmdFZGtpaUNvbmZpZ3VyYXRpb25N YW5hZ2VyUHJvdG9jb2xHdWlkLA0KICAgICsgICAgICAgICAgICAgICAgICBFRklfTkFUSVZFX0lO VEVSRkFDRSwNCiAgICArICAgICAgICAgICAgICAgICAgKFZPSUQqKSZNb3JlbGxvUGxhdGZvcm1D b25maWdNYW5hZ2VyUHJvdG9jb2wNCiAgICArICAgICAgICAgICAgICAgICAgKTsNCiAgICArICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQogICAgKyAgICBERUJVRyAoKA0KICAgICsgICAgICBE RUJVR19FUlJPUiwNCiAgICArICAgICAgIkVSUk9SOiBGYWlsZWQgdG8gZ2V0IEluc3RhbGwgQ29u ZmlndXJhdGlvbiBNYW5hZ2VyIFByb3RvY29sLiIgXA0KICAgICsgICAgICAiIFN0YXR1cyA9ICVy XG4iLA0KICAgICsgICAgICBTdGF0dXMNCiAgICArICAgICAgKSk7DQogICAgKyAgICBnb3RvIGVy cm9yX2hhbmRsZXI7DQogICAgKyAgfQ0KICAgICsNCiAgICArZXJyb3JfaGFuZGxlcjoNCiAgICAr ICByZXR1cm4gU3RhdHVzOw0KICAgICt9DQogICAgZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0FSTS9N b3JlbGxvL0NvbmZpZ3VyYXRpb25NYW5hZ2VyL0NvbmZpZ3VyYXRpb25NYW5hZ2VyRHhlL0NvbmZp Z3VyYXRpb25NYW5hZ2VyRnZwLmMgYi9QbGF0Zm9ybS9BUk0vTW9yZWxsby9Db25maWd1cmF0aW9u TWFuYWdlci9Db25maWd1cmF0aW9uTWFuYWdlckR4ZS9Db25maWd1cmF0aW9uTWFuYWdlckZ2cC5j DQogICAgbmV3IGZpbGUgbW9kZSAxMDA2NDQNCiAgICBpbmRleCAwMDAwMDAwMDAwMDAuLmMyNjVk ZDJkMGIxNQ0KICAgIC0tLSAvZGV2L251bGwNCiAgICArKysgYi9QbGF0Zm9ybS9BUk0vTW9yZWxs by9Db25maWd1cmF0aW9uTWFuYWdlci9Db25maWd1cmF0aW9uTWFuYWdlckR4ZS9Db25maWd1cmF0 aW9uTWFuYWdlckZ2cC5jDQogICAgQEAgLTAsMCArMSw2MDIgQEANCiAgICArLyoqIEBmaWxlDQog ICAgKyAgQ29uZmlndXJhdGlvbiBNYW5hZ2VyIER4ZQ0KICAgICsNCiAgICArICBDb3B5cmlnaHQg KGMpIDIwMjEsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCiAgICArDQog ICAgKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCiAgICAr DQogICAgKyAgQHBhciBHbG9zc2FyeToNCiAgICArICAgIC0gQ20gb3IgQ00gICAtIENvbmZpZ3Vy YXRpb24gTWFuYWdlcg0KICAgICsgICAgLSBPYmogb3IgT0JKIC0gT2JqZWN0DQogICAgKyoqLw0K ICAgICsNCiAgICArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvRGVidWdQb3J0MlRhYmxlLmg+ DQogICAgKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0lvUmVtYXBwaW5nVGFibGUuaD4NCiAg ICArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvTWVtb3J5TWFwcGVkQ29uZmlndXJhdGlvblNw YWNlQWNjZXNzVGFibGUuaD4NCiAgICArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvU2VyaWFs UG9ydENvbnNvbGVSZWRpcmVjdGlvblRhYmxlLmg+DQogICAgKyNpbmNsdWRlIDxMaWJyYXJ5L0Rl YnVnTGliLmg+DQogICAgKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlCb290U2VydmljZXNUYWJsZUxp Yi5oPg0KICAgICsjaW5jbHVkZSA8UHJvdG9jb2wvQ29uZmlndXJhdGlvbk1hbmFnZXJQcm90b2Nv bC5oPg0KICAgICsNCiAgICArI2luY2x1ZGUgIkNvbmZpZ3VyYXRpb25NYW5hZ2VyRnZwLmgiDQog ICAgKyNpbmNsdWRlICJQbGF0Zm9ybS5oIg0KICAgICsNCiAgICArRURLSUlfRlZQX1BMQVRGT1JN X1JFUE9TSVRPUllfSU5GTyBNb3JlbGxvRnZwUmVwb3NpdG9yeUluZm8gPSB7DQogICAgKyAgLy8g QUNQSSBUYWJsZSBMaXN0DQogICAgKyAgew0KICAgICsgICAgLy8gRkFEVCBUYWJsZQ0KICAgICsg ICAgew0KICAgICsgICAgICBFRklfQUNQSV82XzNfRklYRURfQUNQSV9ERVNDUklQVElPTl9UQUJM RV9TSUdOQVRVUkUsDQogICAgKyAgICAgIEVGSV9BQ1BJXzZfM19GSVhFRF9BQ1BJX0RFU0NSSVBU SU9OX1RBQkxFX1JFVklTSU9OLA0KICAgICsgICAgICBDUkVBVEVfU1REX0FDUElfVEFCTEVfR0VO X0lEIChFU3RkQWNwaVRhYmxlSWRGYWR0KSwNCiAgICArICAgICAgTlVMTA0KICAgICsgICAgfSwN CiAgICArICAgIC8vIEdURFQgVGFibGUNCiAgICArICAgIHsNCiAgICArICAgICAgRUZJX0FDUElf Nl8zX0dFTkVSSUNfVElNRVJfREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFLA0KICAgICsgICAg ICBFRklfQUNQSV82XzNfR0VORVJJQ19USU1FUl9ERVNDUklQVElPTl9UQUJMRV9SRVZJU0lPTiwN CiAgICArICAgICAgQ1JFQVRFX1NURF9BQ1BJX1RBQkxFX0dFTl9JRCAoRVN0ZEFjcGlUYWJsZUlk R3RkdCksDQogICAgKyAgICAgIE5VTEwNCiAgICArICAgIH0sDQogICAgKyAgICAvLyBNQURUIFRh YmxlDQogICAgKyAgICB7DQogICAgKyAgICAgIEVGSV9BQ1BJXzZfM19NVUxUSVBMRV9BUElDX0RF U0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRSwNCiAgICArICAgICAgRUZJX0FDUElfNl8zX01VTFRJ UExFX0FQSUNfREVTQ1JJUFRJT05fVEFCTEVfUkVWSVNJT04sDQogICAgKyAgICAgIENSRUFURV9T VERfQUNQSV9UQUJMRV9HRU5fSUQgKEVTdGRBY3BpVGFibGVJZE1hZHQpLA0KICAgICsgICAgICBO VUxMDQogICAgKyAgICB9LA0KICAgICsgICAgLy8gU1BDUiBUYWJsZQ0KICAgICsgICAgew0KICAg ICsgICAgICBFRklfQUNQSV82XzNfU0VSSUFMX1BPUlRfQ09OU09MRV9SRURJUkVDVElPTl9UQUJM RV9TSUdOQVRVUkUsDQogICAgKyAgICAgIEVGSV9BQ1BJX1NFUklBTF9QT1JUX0NPTlNPTEVfUkVE SVJFQ1RJT05fVEFCTEVfUkVWSVNJT04sDQogICAgKyAgICAgIENSRUFURV9TVERfQUNQSV9UQUJM RV9HRU5fSUQgKEVTdGRBY3BpVGFibGVJZFNwY3IpLA0KICAgICsgICAgICBOVUxMDQogICAgKyAg ICB9LA0KICAgICsgICAgLy8gRFNEVCBUYWJsZQ0KICAgICsgICAgew0KICAgICsgICAgICBFRklf QUNQSV82XzNfRElGRkVSRU5USUFURURfU1lTVEVNX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVS RSwNCiAgICArICAgICAgMCwgLy8gVW51c2VkDQogICAgKyAgICAgIENSRUFURV9TVERfQUNQSV9U QUJMRV9HRU5fSUQgKEVTdGRBY3BpVGFibGVJZERzZHQpLA0KICAgICsgICAgICAoRUZJX0FDUElf REVTQ1JJUFRJT05fSEVBREVSKilkc2R0ZnZwX2FtbF9jb2RlDQogICAgKyAgICB9LA0KICAgICsg ICAgLy8gREJHMiBUYWJsZQ0KICAgICsgICAgew0KICAgICsgICAgICBFRklfQUNQSV82XzNfREVC VUdfUE9SVF8yX1RBQkxFX1NJR05BVFVSRSwNCiAgICArICAgICAgRUZJX0FDUElfREJHMl9ERUJV R19ERVZJQ0VfSU5GT1JNQVRJT05fU1RSVUNUX1JFVklTSU9OLA0KICAgICsgICAgICBDUkVBVEVf U1REX0FDUElfVEFCTEVfR0VOX0lEIChFU3RkQWNwaVRhYmxlSWREYmcyKSwNCiAgICArICAgICAg TlVMTA0KICAgICsgICAgfSwNCiAgICArICAgIC8vIFBQVFQgVGFibGUNCiAgICArICAgIHsNCiAg ICArICAgICAgRUZJX0FDUElfNl8zX1BST0NFU1NPUl9QUk9QRVJUSUVTX1RPUE9MT0dZX1RBQkxF X1NUUlVDVFVSRV9TSUdOQVRVUkUsDQogICAgKyAgICAgIEVGSV9BQ1BJXzZfM19QUk9DRVNTT1Jf UFJPUEVSVElFU19UT1BPTE9HWV9UQUJMRV9SRVZJU0lPTiwNCiAgICArICAgICAgQ1JFQVRFX1NU RF9BQ1BJX1RBQkxFX0dFTl9JRCAoRVN0ZEFjcGlUYWJsZUlkUHB0dCksDQogICAgKyAgICAgIE5V TEwNCiAgICArICAgIH0sDQogICAgKyAgICAvLyBJT1JUIFRhYmxlDQogICAgKyAgICB7DQogICAg KyAgICAgIEVGSV9BQ1BJXzZfM19JT19SRU1BUFBJTkdfVEFCTEVfU0lHTkFUVVJFLA0KICAgICsg ICAgICBFRklfQUNQSV9JT19SRU1BUFBJTkdfVEFCTEVfUkVWSVNJT04sDQogICAgKyAgICAgIENS RUFURV9TVERfQUNQSV9UQUJMRV9HRU5fSUQgKEVTdGRBY3BpVGFibGVJZElvcnQpLA0KICAgICsg ICAgICBOVUxMDQogICAgKyAgICB9LA0KICAgICsgICAgLy8gUENJIE1DRkcgVGFibGUNCiAgICAr ICAgIHsNCiAgICArICAgICAgRUZJX0FDUElfNl8zX1BDSV9FWFBSRVNTX01FTU9SWV9NQVBQRURf Q09ORklHVVJBVElPTl9TUEFDRV9CQVNFX0FERFJFU1NfREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFU VVJFLA0KICAgICsgICAgICBFRklfQUNQSV9NRU1PUllfTUFQUEVEX0NPTkZJR1VSQVRJT05fU1BB Q0VfQUNDRVNTX1RBQkxFX1JFVklTSU9OLA0KICAgICsgICAgICBDUkVBVEVfU1REX0FDUElfVEFC TEVfR0VOX0lEIChFU3RkQWNwaVRhYmxlSWRNY2ZnKSwNCiAgICArICAgICAgTlVMTCwNCiAgICAr ICAgIH0sDQogICAgKyAgICAvLyBTU0RUIHRhYmxlIGRlc2NyaWJpbmcgdGhlIFBDSSByb290IGNv bXBsZXgNCiAgICArICAgIHsNCiAgICArICAgICAgRUZJX0FDUElfNl8zX1NFQ09OREFSWV9TWVNU RU1fREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFLA0KICAgICsgICAgICAwLCAvLyBVbnVzZWQN CiAgICArICAgICAgQ1JFQVRFX1NURF9BQ1BJX1RBQkxFX0dFTl9JRCAoRVN0ZEFjcGlUYWJsZUlk U3NkdCksDQogICAgKyAgICAgIChFRklfQUNQSV9ERVNDUklQVElPTl9IRUFERVIqKXNzZHRwY2lm dnBfYW1sX2NvZGUNCiAgICArICAgIH0sDQogICAgKyAgfSwNCiAgICArDQogICAgKyAgLy8gR0lD IElUUw0KICAgICsgIHsNCiAgICArICAgIC8vIEdJQyBJVFMgLSBQQ0llIFRDVQ0KICAgICsgICAg ew0KICAgICsgICAgICAvLyBUaGUgR0lDIElUUyBJRC4NCiAgICArICAgICAgMCwNCiAgICArICAg ICAgLy8gVGhlIHBoeXNpY2FsIGFkZHJlc3MgZm9yIHRoZSBJbnRlcnJ1cHQgVHJhbnNsYXRpb24g U2VydmljZQ0KICAgICsgICAgICAweDMwMDYwMDAwLA0KICAgICsgICAgICAvL1Byb3hpbWl0eSBE b21haW4NCiAgICArICAgICAgMA0KICAgICsgICAgfSwNCiAgICArICAgIC8vIEdJQyBJVFMgLSBQ Q0llIFJDDQogICAgKyAgICB7DQogICAgKyAgICAgIC8vIFRoZSBHSUMgSVRTIElELg0KICAgICsg ICAgICAxLA0KICAgICsgICAgICAvLyBUaGUgcGh5c2ljYWwgYWRkcmVzcyBmb3IgdGhlIEludGVy cnVwdCBUcmFuc2xhdGlvbiBTZXJ2aWNlDQogICAgKyAgICAgIDB4MzAwQTAwMDAsDQogICAgKyAg ICAgIC8vUHJveGltaXR5IERvbWFpbg0KICAgICsgICAgICAwDQogICAgKyAgICB9LA0KICAgICsg IH0sDQogICAgKw0KICAgICsgIC8vIElUUyBncm91cCBub2RlDQogICAgKyAgew0KICAgICsgICAg ew0KICAgICsgICAgICAvLyBSZWZlcmVuY2UgdG9rZW4gZm9yIHRoaXMgSW9ydCBub2RlDQogICAg KyAgICAgIFJFRkVSRU5DRV9UT0tFTl9GVlAgKEl0c0dyb3VwSW5mb1swXSksDQogICAgKyAgICAg IC8vIFRoZSBudW1iZXIgb2YgSVRTIGlkZW50aWZpZXJzIGluIHRoZSBJVFMgbm9kZS4NCiAgICAr ICAgICAgMSwNCiAgICArICAgICAgLy8gUmVmZXJlbmNlIHRva2VuIGZvciB0aGUgSVRTIGlkZW50 aWZpZXIgYXJyYXkNCiAgICArICAgICAgUkVGRVJFTkNFX1RPS0VOX0ZWUCAoSXRzSWRlbnRpZmll ckFycmF5WzBdKQ0KICAgICsgICAgfSwNCiAgICArICAgIHsNCiAgICArICAgICAgLy8gUmVmZXJl bmNlIHRva2VuIGZvciB0aGlzIElvcnQgbm9kZQ0KICAgICsgICAgICBSRUZFUkVOQ0VfVE9LRU5f RlZQIChJdHNHcm91cEluZm9bMV0pLA0KICAgICsgICAgICAvLyBUaGUgbnVtYmVyIG9mIElUUyBp ZGVudGlmaWVycyBpbiB0aGUgSVRTIG5vZGUuDQogICAgKyAgICAgIDEsDQogICAgKyAgICAgIC8v IFJlZmVyZW5jZSB0b2tlbiBmb3IgdGhlIElUUyBpZGVudGlmaWVyIGFycmF5DQogICAgKyAgICAg IFJFRkVSRU5DRV9UT0tFTl9GVlAgKEl0c0lkZW50aWZpZXJBcnJheVsxXSkNCiAgICArICAgIH0s DQogICAgKyAgfSwNCiAgICArDQogICAgKyAgLy8gSVRTIGlkZW50aWZpZXIgYXJyYXkNCiAgICAr ICB7DQogICAgKyAgICB7DQogICAgKyAgICAgIC8vIFRoZSBJVFMgSWRlbnRpZmllcg0KICAgICsg ICAgICAwDQogICAgKyAgICB9LA0KICAgICsgICAgew0KICAgICsgICAgICAvLyBUaGUgSVRTIElk ZW50aWZpZXINCiAgICArICAgICAgMQ0KICAgICsgICAgfSwNCiAgICArICB9LA0KICAgICsNCiAg ICArICAvLyBTTU1VdjMgTm9kZQ0KICAgICsgIHsNCiAgICArICAgIHsNCiAgICArICAgICAgLy8g UmVmZXJlbmNlIHRva2VuIGZvciB0aGlzIElvcnQgbm9kZQ0KICAgICsgICAgICBSRUZFUkVOQ0Vf VE9LRU5fRlZQIChTbW11VjNJbmZvWzBdKSwNCiAgICArICAgICAgLy8gTnVtYmVyIG9mIElEIG1h cHBpbmdzDQogICAgKyAgICAgIDIsDQogICAgKyAgICAgIC8vIFJlZmVyZW5jZSB0b2tlbiBmb3Ig dGhlIElEIG1hcHBpbmcgYXJyYXkNCiAgICArICAgICAgUkVGRVJFTkNFX1RPS0VOX0ZWUCAoRGV2 aWNlSWRNYXBwaW5nWzBdWzBdKSwNCiAgICArICAgICAgLy8gU01NVSBCYXNlIEFkZHJlc3MNCiAg ICArICAgICAgMHg0RjQwMDAwMCwNCiAgICArICAgICAgLy8gU01NVSBmbGFncw0KICAgICsgICAg ICBFRklfQUNQSV9JT1JUX1NNTVV2M19GTEFHX0NPSEFDX09WRVJSSURFLA0KICAgICsgICAgICAv LyBWQVRPUyBhZGRyZXNzDQogICAgKyAgICAgIDAsDQogICAgKyAgICAgIC8vIE1vZGVsDQogICAg KyAgICAgIEVGSV9BQ1BJX0lPUlRfU01NVXYzX01PREVMX0dFTkVSSUMsDQogICAgKyAgICAgIC8v IEdTSVYgb2YgdGhlIEV2ZW50IGludGVycnVwdCBpZiBTUEkgYmFzZWQNCiAgICArICAgICAgMHgx MEIsDQogICAgKyAgICAgIC8vIFBSSSBJbnRlcnJ1cHQgaWYgU1BJIGJhc2VkDQogICAgKyAgICAg IDAsDQogICAgKyAgICAgIC8vIEdFUlIgaW50ZXJydXB0IGlmIEdTSVYgYmFzZWQNCiAgICArICAg ICAgMHgxMEQsDQogICAgKyAgICAgIC8vIFN5bmMgaW50ZXJydXB0IGlmIEdTSVYgYmFzZWQNCiAg ICArICAgICAgMHgxMEMsDQogICAgKyAgICAgIC8vIFByb3hpbWl0eSBkb21haW4gZmxhZywgaWdu b3JlZCBpbiB0aGlzIGNhc2UNCiAgICArICAgICAgMCwNCiAgICArICAgICAgLy8gSW5kZXggaW50 byB0aGUgYXJyYXkgb2YgSUQgbWFwcGluZywgaWdub3JlZCBhcyBTTU1VDQogICAgKyAgICAgIC8v IGNvbnRyb2wgaW50ZXJydXB0cyBhcmUgR1NJViBiYXNlZA0KW1NBTUldIEkgdGhpbmsgdGhpcyBj b21tZW50IG5lZWRzIHRvIGJlIHVwZGF0ZWQuIEFjY29yZGluZyB0byB0aGUgSU9SVCBzcGVjaWZp Y2F0aW9uICdJZiBhbGwgdGhlIFNNTVUgY29udHJvbCBpbnRlcnJ1cHRzIGFyZSBHU0lWIGJhc2Vk LCB0aGlzIGZpZWxkIGlzIGlnbm9yZWQuJw0KWy9TQU1JXQ0KICAgICsgICAgICAxDQogICAgKyAg ICB9LA0KICAgICsgIH0sDQogICAgKw0KICAgICsgIC8vIFJvb3QgQ29tcGxleCBub2RlIGluZm8N CiAgICArICB7DQogICAgKyAgICB7DQogICAgKyAgICAgIC8vIFJlZmVyZW5jZSB0b2tlbiBmb3Ig dGhpcyBJb3J0IG5vZGUNCiAgICArICAgICAgUkVGRVJFTkNFX1RPS0VOX0ZWUCAoUm9vdENvbXBs ZXhJbmZvWzBdKSwNCiAgICArICAgICAgLy8gTnVtYmVyIG9mIElEIG1hcHBpbmdzDQogICAgKyAg ICAgIDEsDQogICAgKyAgICAgIC8vIFJlZmVyZW5jZSB0b2tlbiBmb3IgdGhlIElEIG1hcHBpbmcg YXJyYXkNCiAgICArICAgICAgUkVGRVJFTkNFX1RPS0VOX0ZWUCAoRGV2aWNlSWRNYXBwaW5nWzFd WzBdKSwNCiAgICArDQogICAgKyAgICAgIC8vIE1lbW9yeSBhY2Nlc3MgcHJvcGVydGllcyA6IENh Y2hlIGNvaGVyZW50IGF0dHJpYnV0ZXMNCiAgICArICAgICAgRUZJX0FDUElfSU9SVF9NRU1fQUND RVNTX1BST1BfQ0NBLA0KICAgICsgICAgICAvLyBNZW1vcnkgYWNjZXNzIHByb3BlcnRpZXMgOiBB bGxvY2F0aW9uIGhpbnRzDQogICAgKyAgICAgIDAsDQogICAgKyAgICAgIC8vIE1lbW9yeSBhY2Nl c3MgcHJvcGVydGllcyA6IE1lbW9yeSBhY2Nlc3MgZmxhZ3MNCiAgICArICAgICAgMCwNCiAgICAr ICAgICAgLy8gQVRTIGF0dHJpYnV0ZXMNCiAgICArICAgICAgRUZJX0FDUElfSU9SVF9ST09UX0NP TVBMRVhfQVRTX1NVUFBPUlRFRCwNCiAgICArICAgICAgLy8gUENJIHNlZ21lbnQgbnVtYmVyDQog ICAgKyAgICAgIDAsDQogICAgKyAgICAgIC8vIE1lbW9yeSBhZGRyZXNzIHNpemUgbGltaXQNCiAg ICArICAgICAgNDINCiAgICArICAgIH0sDQogICAgKyAgfSwNCiAgICArDQogICAgKyAgLy8gQXJy YXkgb2YgRGV2aWNlIElEIG1hcHBpbmdzDQogICAgKyAgew0KICAgICsgICAgLy8gRGV2aWNlSWRN YXBwaW5nWzBdWzBdIC0gWzBdWzFdDQogICAgKyAgICB7DQogICAgKyAgICAgIC8qIE1hcHBpbmcg U01NVXYzIC0+IElUUyBHcm91cA0KICAgICsgICAgICAqLw0KICAgICsNCiAgICArICAgICAgLy8g U01NVXYzIGRldmljZSBJRCBtYXBwaW5nDQogICAgKyAgICAgIHsNCiAgICArICAgICAgICAvLyBJ bnB1dCBiYXNlDQogICAgKyAgICAgICAgMHgwLA0KICAgICsgICAgICAgIC8vIE51bWJlciBvZiBp bnB1dCBJRHMNCiAgICArICAgICAgICAweDAwMDBGRkZGLA0KICAgICsgICAgICAgIC8vIE91dHB1 dCBCYXNlDQogICAgKyAgICAgICAgMHgwLA0KICAgICsgICAgICAgIC8vIE91dHB1dCByZWZlcmVu Y2UNCiAgICArICAgICAgICBSRUZFUkVOQ0VfVE9LRU5fRlZQIChJdHNHcm91cEluZm9bMV0pLA0K ICAgICsgICAgICAgIC8vIEZsYWdzDQogICAgKyAgICAgICAgMA0KICAgICsgICAgICB9LA0KICAg ICsgICAgICAvLyBTTU1VdjMgZGV2aWNlIElEIG1hcHBpbmcNCiAgICArICAgICAgew0KICAgICsg ICAgICAgIC8vIElucHV0IGJhc2UNCiAgICArICAgICAgICAweDAsDQogICAgKyAgICAgICAgLy8g TnVtYmVyIG9mIGlucHV0IElEcw0KICAgICsgICAgICAgIDB4MDAwMDAwMDEsDQogICAgKyAgICAg ICAgLy8gT3V0cHV0IEJhc2UNCiAgICArICAgICAgICAweDAsDQogICAgKyAgICAgICAgLy8gT3V0 cHV0IHJlZmVyZW5jZSB0b2tlbiBmb3IgdGhlIElPUlQgbm9kZQ0KICAgICsgICAgICAgIFJFRkVS RU5DRV9UT0tFTl9GVlAgKEl0c0dyb3VwSW5mb1swXSksDQogICAgKyAgICAgICAgLy8gRmxhZ3MN CiAgICArICAgICAgICBFRklfQUNQSV9JT1JUX0lEX01BUFBJTkdfRkxBR1NfU0lOR0xFDQogICAg KyAgICAgIH0NCiAgICArICAgIH0sDQogICAgKyAgICAvLyBEZXZpY2VJZE1hcHBpbmdbMV1bMF0N CiAgICArICAgIHsNCiAgICArICAgICAgLy8gTWFwcGluZyBmb3IgIFJvb3RDb21wbGV4IC0+IFNN TVV2Mw0KICAgICsNCiAgICArICAgICAgLy8gRGV2aWNlIElEIG1hcHBpbmcgZm9yIFJvb3QgY29t cGxleCBub2RlDQogICAgKyAgICAgIHsNCiAgICArICAgICAgICAvLyBJbnB1dCBiYXNlDQogICAg KyAgICAgICAgMHgwLA0KICAgICsgICAgICAgIC8vIE51bWJlciBvZiBpbnB1dCBJRHMNCiAgICAr ICAgICAgICAweDAwMDBGRkZGLA0KICAgICsgICAgICAgIC8vIE91dHB1dCBCYXNlDQogICAgKyAg ICAgICAgMHgwLA0KICAgICsgICAgICAgIC8vIE91dHB1dCByZWZlcmVuY2UNCiAgICArICAgICAg ICBSRUZFUkVOQ0VfVE9LRU5fRlZQIChTbW11VjNJbmZvWzBdKSwNCiAgICArICAgICAgICAvLyBG bGFncw0KICAgICsgICAgICAgIDANCiAgICArICAgICAgfSwNCiAgICArICAgIH0sDQogICAgKyAg fSwNCiAgICArICAvLyBQQ0kgQ29uZmlndXJhdGlvbiBTcGFjZSBJbmZvDQogICAgKyAgew0KICAg ICsgICAgLy8gUENJZSBFQ0FNDQogICAgKyAgICB7DQogICAgKyAgICAgIEZpeGVkUGNkR2V0NjQg KFBjZFBjaUV4cHJlc3NCYXNlQWRkcmVzcyksICAvLyBCYXNlIEFkZHJlc3MNCiAgICArICAgICAg MHgwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZWdtZW50IEdy b3VwIE51bWJlcg0KICAgICsgICAgICBGaXhlZFBjZEdldDMyIChQY2RQY2lCdXNNaW4pLCAgICAg ICAgICAgICAgLy8gU3RhcnQgQnVzIE51bWJlcg0KICAgICsgICAgICBGaXhlZFBjZEdldDMyIChQ Y2RQY2lCdXNNYXgpICAgICAgICAgICAgICAgLy8gRW5kIEJ1cyBOdW1iZXINCiAgICArICAgIH0s DQogICAgKyAgfSwNCiAgICArfTsNCiAgICArDQogICAgK0VES0lJX1BMQVRGT1JNX1JFUE9TSVRP UllfSU5GTyBNb3JlbGxvUmVwb3NpdG9yeUluZm8gPSB7DQogICAgKyAgJkNvbW1vblBsYXRmb3Jt SW5mbywNCiAgICArICAmTW9yZWxsb0Z2cFJlcG9zaXRvcnlJbmZvDQogICAgK307DQogICAgKw0K ICAgICsvKiogUmV0dXJuIGEgZGV2aWNlIElkIG1hcHBpbmcgYXJyYXkuDQogICAgKw0KICAgICsg IEBwYXJhbSBbaW5dICAgICAgVGhpcyAgICAgICAgUG9pbnRlciB0byB0aGUgQ29uZmlndXJhdGlv biBNYW5hZ2VyIFByb3RvY29sLg0KICAgICsgIEBwYXJhbSBbaW5dICAgICAgQ21PYmplY3RJZCAg VGhlIENvbmZpZ3VyYXRpb24gTWFuYWdlciBPYmplY3QgSUQuDQogICAgKyAgQHBhcmFtIFtpbl0g ICAgICBUb2tlbiAgICAgICBBIHRva2VuIGZvciBpZGVudGlmeWluZyB0aGUgb2JqZWN0DQogICAg KyAgQHBhcmFtIFtpbiwgb3V0XSBDbU9iamVjdCAgICBQb2ludGVyIHRvIHRoZSBDb25maWd1cmF0 aW9uIE1hbmFnZXIgT2JqZWN0DQogICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl c2NyaXB0b3IgZGVzY3JpYmluZyB0aGUgcmVxdWVzdGVkIE9iamVjdC4NCiAgICArDQogICAgKyAg QHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgU3VjY2Vzcy4NCiAgICArICBAcmV0dmFsIEVG SV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkLg0KICAgICsgIEByZXR2 YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSByZXF1aXJlZCBvYmplY3QgaW5mb3JtYXRpb24g aXMgbm90IGZvdW5kLg0KICAgICsqKi8NCiAgICArRUZJX1NUQVRVUw0KICAgICtFRklBUEkNCiAg ICArR2V0RGV2aWNlSWRNYXBwaW5nQXJyYXkgKA0KICAgICsgIElOICBDT05TVCBFREtJSV9DT05G SUdVUkFUSU9OX01BTkFHRVJfUFJPVE9DT0wgICogQ09OU1QgVGhpcywNCiAgICArICBJTiAgQ09O U1QgQ01fT0JKRUNUX0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENtT2JqZWN0 SWQsDQogICAgKyAgSU4gIENPTlNUIENNX09CSkVDVF9UT0tFTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBUb2tlbiwNCiAgICArICBJTiAgT1VUICAgQ01fT0JKX0RFU0NSSVBUT1IgICAg ICAgICAgICAgICAgICAgICAqIENPTlNUIENtT2JqZWN0DQogICAgKyAgKQ0KICAgICt7DQogICAg KyAgRURLSUlfRlZQX1BMQVRGT1JNX1JFUE9TSVRPUllfSU5GTyAgICAgKiBQbGF0Zm9ybVJlcG87 DQogICAgKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudDsN CiAgICArDQogICAgKyAgaWYgKChUaGlzID09IE5VTEwpIHx8IChDbU9iamVjdCA9PSBOVUxMKSkg ew0KICAgICsgICAgQVNTRVJUIChUaGlzICE9IE5VTEwpOw0KICAgICsgICAgQVNTRVJUIChDbU9i amVjdCAhPSBOVUxMKTsNCiAgICArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQog ICAgKyAgfQ0KICAgICsNCiAgICArICBQbGF0Zm9ybVJlcG8gPSBUaGlzLT5QbGF0UmVwb0luZm8t PkZ2cFBsYXRSZXBvSW5mbzsNCiAgICArDQogICAgKyAgREVCVUcgKChERUJVR19JTkZPLCAiRGV2 aWNlSWRNYXBwaW5nIC0gVG9rZW4gPSAlcFxuIikpOw0KICAgICsNCiAgICArICBpZiAoVG9rZW4g PT0gKENNX09CSkVDVF9UT0tFTikmUGxhdGZvcm1SZXBvLT5EZXZpY2VJZE1hcHBpbmdbMF1bMF0p IHsNCiAgICArICAgIENvdW50ID0gMjsNCiAgICArICAgIERFQlVHICgoREVCVUdfSU5GTywgIkRl dmljZUlkTWFwcGluZyAtIEZvdW5kIERldmljZUlkTWFwcGluZ1swXVswXVxuIikpOw0KICAgICsg IH0gZWxzZSBpZiAoVG9rZW4gPT0NCiAgICArICAgICAgICAgICAgIChDTV9PQkpFQ1RfVE9LRU4p JlBsYXRmb3JtUmVwby0+RGV2aWNlSWRNYXBwaW5nWzFdWzBdKSB7DQogICAgKyAgICBDb3VudCAg PSAxOw0KICAgICsgICAgREVCVUcgKChERUJVR19JTkZPLCAiRGV2aWNlSWRNYXBwaW5nIC0gRm91 bmQgRGV2aWNlSWRNYXBwaW5nWzFdWzBdXG4iKSk7DQogICAgKyAgfSBlbHNlIHsNCiAgICArICAg IERFQlVHICgoREVCVUdfSU5GTywgIkRldmljZUlkTWFwcGluZyAtIE5vdCBGb3VuZFxuIikpOw0K ICAgICsgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQogICAgKyAgfQ0KICAgICsNCiAgICArICBD bU9iamVjdC0+RGF0YSA9IChWT0lEKilUb2tlbjsNCiAgICArICBDbU9iamVjdC0+T2JqZWN0SWQg PSBDbU9iamVjdElkOw0KICAgICsgIENtT2JqZWN0LT5Db3VudCA9IENvdW50Ow0KICAgICsgIENt T2JqZWN0LT5TaXplID0gQ291bnQgKiBzaXplb2YgKENNX0FSTV9JRF9NQVBQSU5HKTsNCiAgICAr DQogICAgKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KICAgICt9DQogICAgKw0KICAgICsvKiogUmV0 dXJuIGFuIElUUyBpZGVudGlmaWVyIGFycmF5Lg0KICAgICsNCiAgICArICBAcGFyYW0gW2luXSAg ICAgIFRoaXMgICAgICAgIFBvaW50ZXIgdG8gdGhlIENvbmZpZ3VyYXRpb24gTWFuYWdlciBQcm90 b2NvbC4NCiAgICArICBAcGFyYW0gW2luXSAgICAgIENtT2JqZWN0SWQgIFRoZSBDb25maWd1cmF0 aW9uIE1hbmFnZXIgT2JqZWN0IElELg0KICAgICsgIEBwYXJhbSBbaW5dICAgICAgVG9rZW4gICAg ICAgQSB0b2tlbiBmb3IgaWRlbnRpZnlpbmcgdGhlIG9iamVjdA0KICAgICsgIEBwYXJhbSBbaW4s IG91dF0gQ21PYmplY3QgICAgUG9pbnRlciB0byB0aGUgQ29uZmlndXJhdGlvbiBNYW5hZ2VyIE9i amVjdA0KICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yIGRlc2Ny aWJpbmcgdGhlIHJlcXVlc3RlZCBPYmplY3QuDQogICAgKw0KICAgICsgIEByZXR2YWwgRUZJX1NV Q0NFU1MgICAgICAgICAgIFN1Y2Nlc3MuDQogICAgKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJB TUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZC4NCiAgICArICBAcmV0dmFsIEVGSV9OT1RfRk9V TkQgICAgICAgICBUaGUgcmVxdWlyZWQgb2JqZWN0IGluZm9ybWF0aW9uIGlzIG5vdCBmb3VuZC4N CiAgICArKiovDQogICAgK0VGSV9TVEFUVVMNCiAgICArRUZJQVBJDQogICAgK0dldEl0c0lkZW50 aWZpZXJBcnJheSAoDQogICAgKyAgSU4gIENPTlNUIEVES0lJX0NPTkZJR1VSQVRJT05fTUFOQUdF Ul9QUk9UT0NPTCAgKiBDT05TVCBUaGlzLA0KICAgICsgIElOICBDT05TVCBDTV9PQkpFQ1RfSUQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ21PYmplY3RJZCwNCiAgICArICBJTiAg Q09OU1QgQ01fT0JKRUNUX1RPS0VOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRva2Vu LA0KICAgICsgIElOICBPVVQgICBDTV9PQkpfREVTQ1JJUFRPUiAgICAgICAgICAgICAgICAgICAg ICogQ09OU1QgQ21PYmplY3QNCiAgICArICApDQogICAgK3sNCiAgICArICBFREtJSV9GVlBfUExB VEZPUk1fUkVQT1NJVE9SWV9JTkZPICAgICAqIFBsYXRmb3JtUmVwbzsNCiAgICArICBVSU5UTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvdW50Ow0KICAgICsgIFVJTlROICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXg7DQogICAgKw0KICAgICsgIGlm ICgoVGhpcyA9PSBOVUxMKSB8fCAoQ21PYmplY3QgPT0gTlVMTCkpIHsNCiAgICArICAgIEFTU0VS VCAoVGhpcyAhPSBOVUxMKTsNCiAgICArICAgIEFTU0VSVCAoQ21PYmplY3QgIT0gTlVMTCk7DQog ICAgKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KICAgICsgIH0NCiAgICArDQog ICAgKyAgUGxhdGZvcm1SZXBvID0gVGhpcy0+UGxhdFJlcG9JbmZvLT5GdnBQbGF0UmVwb0luZm87 DQogICAgKw0KICAgICsgIENvdW50ID0gQVJSQVlfU0laRSAoUGxhdGZvcm1SZXBvLT5JdHNJZGVu dGlmaWVyQXJyYXkpOw0KICAgICsNCiAgICArICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBDb3Vu dDsgSW5kZXgrKykgew0KICAgICsgICAgaWYgKFRva2VuID09IChDTV9PQkpFQ1RfVE9LRU4pJlBs YXRmb3JtUmVwby0+SXRzSWRlbnRpZmllckFycmF5W0luZGV4XSkgew0KICAgICsgICAgICBDbU9i amVjdC0+T2JqZWN0SWQgPSBDbU9iamVjdElkOw0KICAgICsgICAgICBDbU9iamVjdC0+U2l6ZSA9 IHNpemVvZiAoUGxhdGZvcm1SZXBvLT5JdHNJZGVudGlmaWVyQXJyYXlbMF0pOw0KICAgICsgICAg ICBDbU9iamVjdC0+RGF0YSA9IChWT0lEKikmUGxhdGZvcm1SZXBvLT5JdHNJZGVudGlmaWVyQXJy YXlbSW5kZXhdOw0KICAgICsgICAgICBDbU9iamVjdC0+Q291bnQgPSAxOw0KICAgICsgICAgICBy ZXR1cm4gRUZJX1NVQ0NFU1M7DQogICAgKyAgICB9DQogICAgKyAgfQ0KICAgICsNCiAgICArICBy ZXR1cm4gRUZJX05PVF9GT1VORDsNCiAgICArfQ0KICAgICsNCiAgICArLyoqIFJldHVybiBhbiBJ VFMgZ3JvdXAgaW5mby4NCiAgICArDQogICAgKyAgQHBhcmFtIFtpbl0gICAgICBUaGlzICAgICAg ICBQb2ludGVyIHRvIHRoZSBDb25maWd1cmF0aW9uIE1hbmFnZXIgUHJvdG9jb2wuDQogICAgKyAg QHBhcmFtIFtpbl0gICAgICBDbU9iamVjdElkICBUaGUgQ29uZmlndXJhdGlvbiBNYW5hZ2VyIE9i amVjdCBJRC4NCiAgICArICBAcGFyYW0gW2luXSAgICAgIFRva2VuICAgICAgIEEgdG9rZW4gZm9y IGlkZW50aWZ5aW5nIHRoZSBvYmplY3QNCiAgICArICBAcGFyYW0gW2luLCBvdXRdIENtT2JqZWN0 ICAgIFBvaW50ZXIgdG8gdGhlIENvbmZpZ3VyYXRpb24gTWFuYWdlciBPYmplY3QNCiAgICArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRvciBkZXNjcmliaW5nIHRoZSByZXF1 ZXN0ZWQgT2JqZWN0Lg0KICAgICsNCiAgICArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAg ICBTdWNjZXNzLg0KICAgICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1l dGVyIGlzIGludmFsaWQuDQogICAgKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgVGhl IHJlcXVpcmVkIG9iamVjdCBpbmZvcm1hdGlvbiBpcyBub3QgZm91bmQuDQogICAgKyoqLw0KICAg ICtFRklfU1RBVFVTDQogICAgK0VGSUFQSQ0KICAgICtHZXRJdHNHcm91cEluZm8gKA0KICAgICsg IElOICBDT05TVCBFREtJSV9DT05GSUdVUkFUSU9OX01BTkFHRVJfUFJPVE9DT0wgICogQ09OU1Qg VGhpcywNCiAgICArICBJTiAgQ09OU1QgQ01fT0JKRUNUX0lEICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIENtT2JqZWN0SWQsDQogICAgKyAgSU4gIENPTlNUIENNX09CSkVDVF9UT0tF TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb2tlbiwNCiAgICArICBJTiAgT1VUICAg Q01fT0JKX0RFU0NSSVBUT1IgICAgICAgICAgICAgICAgICAgICAqIENPTlNUIENtT2JqZWN0DQog ICAgKyAgKQ0KICAgICt7DQogICAgKyAgRURLSUlfRlZQX1BMQVRGT1JNX1JFUE9TSVRPUllfSU5G TyAgICAgKiBQbGF0Zm9ybVJlcG87DQogICAgKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBDb3VudDsNCiAgICArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEluZGV4Ow0KICAgICsNCiAgICArICBpZiAoKFRoaXMgPT0gTlVMTCkgfHwg KENtT2JqZWN0ID09IE5VTEwpKSB7DQogICAgKyAgICBBU1NFUlQgKFRoaXMgIT0gTlVMTCk7DQog ICAgKyAgICBBU1NFUlQgKENtT2JqZWN0ICE9IE5VTEwpOw0KICAgICsgICAgcmV0dXJuIEVGSV9J TlZBTElEX1BBUkFNRVRFUjsNCiAgICArICB9DQogICAgKw0KICAgICsgIFBsYXRmb3JtUmVwbyA9 IFRoaXMtPlBsYXRSZXBvSW5mby0+RnZwUGxhdFJlcG9JbmZvOw0KICAgICsNCiAgICArICBDb3Vu dCA9IEFSUkFZX1NJWkUgKFBsYXRmb3JtUmVwby0+SXRzR3JvdXBJbmZvKTsNCiAgICArDQogICAg KyAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgQ291bnQ7IEluZGV4KyspIHsNCiAgICArICAgIGlm IChUb2tlbiA9PSAoQ01fT0JKRUNUX1RPS0VOKSZQbGF0Zm9ybVJlcG8tPkl0c0dyb3VwSW5mb1tJ bmRleF0pIHsNCiAgICArICAgICAgQ21PYmplY3QtPk9iamVjdElkID0gQ21PYmplY3RJZDsNCiAg ICArICAgICAgQ21PYmplY3QtPlNpemUgPSBzaXplb2YgKFBsYXRmb3JtUmVwby0+SXRzR3JvdXBJ bmZvWzBdKTsNCiAgICArICAgICAgQ21PYmplY3QtPkRhdGEgPSAoVk9JRCopJlBsYXRmb3JtUmVw by0+SXRzR3JvdXBJbmZvW0luZGV4XTsNCiAgICArICAgICAgQ21PYmplY3QtPkNvdW50ID0gMTsN CiAgICArICAgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KICAgICsgICAgfQ0KICAgICsgIH0NCiAg ICArDQogICAgKyAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQogICAgK30NCiAgICArDQogICAgKy8q KiBSZXR1cm4gcGxhdGZvcm0gc3BlY2lmaWMgQVJNIG5hbWVzcGFjZSBvYmplY3QuDQogICAgKw0K ICAgICsgIEBwYXJhbSBbaW5dICAgICAgVGhpcyAgICAgICAgUG9pbnRlciB0byB0aGUgQ29uZmln dXJhdGlvbiBNYW5hZ2VyIFByb3RvY29sLg0KICAgICsgIEBwYXJhbSBbaW5dICAgICAgQ21PYmpl Y3RJZCAgVGhlIENvbmZpZ3VyYXRpb24gTWFuYWdlciBPYmplY3QgSUQuDQogICAgKyAgQHBhcmFt IFtpbl0gICAgICBUb2tlbiAgICAgICBBbiBvcHRpb25hbCB0b2tlbiBpZGVudGlmeWluZyB0aGUg b2JqZWN0LiBJZg0KICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkIHRo aXMgbXVzdCBiZSBDTV9OVUxMX1RPS0VOLg0KICAgICsgIEBwYXJhbSBbaW4sIG91dF0gQ21PYmpl Y3QgICAgUG9pbnRlciB0byB0aGUgQ29uZmlndXJhdGlvbiBNYW5hZ2VyIE9iamVjdA0KICAgICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRvciBkZXNjcmliaW5nIHRoZSBy ZXF1ZXN0ZWQgT2JqZWN0Lg0KICAgICsNCiAgICArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAg ICAgICBTdWNjZXNzLg0KICAgICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFy YW1ldGVyIGlzIGludmFsaWQuDQogICAgKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAg VGhlIHJlcXVpcmVkIG9iamVjdCBpbmZvcm1hdGlvbiBpcyBub3QgZm91bmQuDQogICAgKyoqLw0K ICAgICtFRklfU1RBVFVTDQogICAgK0VGSUFQSQ0KICAgICtHZXRBcm1OYW1lU3BhY2VPYmplY3RQ bGF0ICgNCiAgICArICBJTiAgQ09OU1QgRURLSUlfQ09ORklHVVJBVElPTl9NQU5BR0VSX1BST1RP Q09MICAqIENPTlNUIFRoaXMsDQogICAgKyAgSU4gIENPTlNUIENNX09CSkVDVF9JRCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBDbU9iamVjdElkLA0KICAgICsgIElOICBDT05TVCBD TV9PQkpFQ1RfVE9LRU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9rZW4gT1BUSU9O QUwsDQogICAgKyAgSU4gIE9VVCAgIENNX09CSl9ERVNDUklQVE9SICAgICAgICAgICAgICAgICAg ICAgKiBDT05TVCBDbU9iamVjdA0KICAgICsgICkNCiAgICArew0KICAgICsgIEVGSV9TVEFUVVMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KICAgICsgIEVES0lJX0ZWUF9QTEFU Rk9STV9SRVBPU0lUT1JZX0lORk8gICogUGxhdGZvcm1SZXBvOw0KICAgICsNCiAgICArICBpZiAo KFRoaXMgPT0gTlVMTCkgfHwgKENtT2JqZWN0ID09IE5VTEwpKSB7DQogICAgKyAgICBBU1NFUlQg KFRoaXMgIT0gTlVMTCk7DQogICAgKyAgICBBU1NFUlQgKENtT2JqZWN0ICE9IE5VTEwpOw0KICAg ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCiAgICArICB9DQogICAgKyAgUGxh dGZvcm1SZXBvID0gVGhpcy0+UGxhdFJlcG9JbmZvLT5GdnBQbGF0UmVwb0luZm87DQogICAgKyAg U3RhdHVzID0gRUZJX05PVF9GT1VORDsNCltTQU1JXSBDYW4gU3RhdHVzID0gRUZJX05PVF9GT1VO RCBiZSBtb3ZlZCB0byBkZWZhdWx0IGNhc2UgaW4gc3dpdGNoIHt9IGJlbG93PyANClsvU0FNSV0N CiAgICArDQogICAgKyAgc3dpdGNoIChHRVRfQ01fT0JKRUNUX0lEIChDbU9iamVjdElkKSkgew0K ICAgICsgICAgY2FzZSBFQXJtT2JqR2ljSXRzSW5mbzoNCiAgICArICAgICAgU3RhdHVzID0gSGFu ZGxlQ21PYmplY3QgKA0KICAgICsgICAgICAgICAgICAgICAgIENtT2JqZWN0SWQsDQogICAgKyAg ICAgICAgICAgICAgICAgJlBsYXRmb3JtUmVwby0+R2ljSXRzSW5mbywNCiAgICArICAgICAgICAg ICAgICAgICBzaXplb2YgKFBsYXRmb3JtUmVwby0+R2ljSXRzSW5mbyksDQogICAgKyAgICAgICAg ICAgICAgICAgQVJSQVlfU0laRSAoUGxhdGZvcm1SZXBvLT5HaWNJdHNJbmZvKSwNCiAgICArICAg ICAgICAgICAgICAgICBDbU9iamVjdA0KICAgICsgICAgICAgICAgICAgICAgICk7DQogICAgKyAg ICAgIGJyZWFrOw0KICAgICsNCiAgICArICAgIGNhc2UgRUFybU9ialNtbXVWMzoNCiAgICArICAg ICAgU3RhdHVzID0gSGFuZGxlQ21PYmplY3QgKA0KICAgICsgICAgICAgICAgICAgICAgIENtT2Jq ZWN0SWQsDQogICAgKyAgICAgICAgICAgICAgICAgUGxhdGZvcm1SZXBvLT5TbW11VjNJbmZvLA0K ICAgICsgICAgICAgICAgICAgICAgIHNpemVvZiAoUGxhdGZvcm1SZXBvLT5TbW11VjNJbmZvKSwN CiAgICArICAgICAgICAgICAgICAgICAxLA0KICAgICsgICAgICAgICAgICAgICAgIENtT2JqZWN0 DQogICAgKyAgICAgICAgICAgICAgICAgKTsNCiAgICArICAgICAgYnJlYWs7DQogICAgKw0KICAg ICsgICAgY2FzZSBFQXJtT2JqSXRzR3JvdXA6DQogICAgKyAgICAgIFN0YXR1cyA9IEhhbmRsZUNt T2JqZWN0UmVmQnlUb2tlbiAoDQogICAgKyAgICAgICAgICAgICAgICAgVGhpcywNCiAgICArICAg ICAgICAgICAgICAgICBDbU9iamVjdElkLA0KICAgICsgICAgICAgICAgICAgICAgIFBsYXRmb3Jt UmVwby0+SXRzR3JvdXBJbmZvLA0KICAgICsgICAgICAgICAgICAgICAgIHNpemVvZiAoUGxhdGZv cm1SZXBvLT5JdHNHcm91cEluZm8pLA0KICAgICsgICAgICAgICAgICAgICAgIEFSUkFZX1NJWkUg KFBsYXRmb3JtUmVwby0+SXRzR3JvdXBJbmZvKSwNCiAgICArICAgICAgICAgICAgICAgICBUb2tl biwNCiAgICArICAgICAgICAgICAgICAgICBHZXRJdHNHcm91cEluZm8sDQogICAgKyAgICAgICAg ICAgICAgICAgQ21PYmplY3QNCiAgICArICAgICAgICAgICAgICAgICApOw0KICAgICsgICAgICBi cmVhazsNCiAgICArDQogICAgKyAgICBjYXNlIEVBcm1PYmpHaWNJdHNJZGVudGlmaWVyQXJyYXk6 DQogICAgKyAgICAgIFN0YXR1cyA9IEhhbmRsZUNtT2JqZWN0UmVmQnlUb2tlbiAoDQogICAgKyAg ICAgICAgICAgICAgICAgVGhpcywNCiAgICArICAgICAgICAgICAgICAgICBDbU9iamVjdElkLA0K ICAgICsgICAgICAgICAgICAgICAgIFBsYXRmb3JtUmVwby0+SXRzSWRlbnRpZmllckFycmF5LA0K ICAgICsgICAgICAgICAgICAgICAgIHNpemVvZiAoUGxhdGZvcm1SZXBvLT5JdHNJZGVudGlmaWVy QXJyYXkpLA0KICAgICsgICAgICAgICAgICAgICAgIEFSUkFZX1NJWkUgKFBsYXRmb3JtUmVwby0+ SXRzSWRlbnRpZmllckFycmF5KSwNCiAgICArICAgICAgICAgICAgICAgICBUb2tlbiwNCiAgICAr ICAgICAgICAgICAgICAgICBHZXRJdHNJZGVudGlmaWVyQXJyYXksDQogICAgKyAgICAgICAgICAg ICAgICAgQ21PYmplY3QNCiAgICArICAgICAgICAgICAgICAgICApOw0KICAgICsgICAgICBicmVh azsNCiAgICArDQogICAgKyAgICBjYXNlIEVBcm1PYmpSb290Q29tcGxleDoNCiAgICArICAgICAg U3RhdHVzID0gSGFuZGxlQ21PYmplY3QgKA0KICAgICsgICAgICAgICAgICAgICAgIENtT2JqZWN0 SWQsDQogICAgKyAgICAgICAgICAgICAgICAgUGxhdGZvcm1SZXBvLT5Sb290Q29tcGxleEluZm8s DQogICAgKyAgICAgICAgICAgICAgICAgc2l6ZW9mIChQbGF0Zm9ybVJlcG8tPlJvb3RDb21wbGV4 SW5mbyksDQogICAgKyAgICAgICAgICAgICAgICAgMSwNCiAgICArICAgICAgICAgICAgICAgICBD bU9iamVjdA0KICAgICsgICAgICAgICAgICAgICAgICk7DQogICAgKyAgICAgIGJyZWFrOw0KICAg ICsNCiAgICArICAgIGNhc2UgRUFybU9iaklkTWFwcGluZ0FycmF5Og0KICAgICsgICAgICBTdGF0 dXMgPSBIYW5kbGVDbU9iamVjdFJlZkJ5VG9rZW4gKA0KICAgICsgICAgICAgICAgICAgICAgIFRo aXMsDQogICAgKyAgICAgICAgICAgICAgICAgQ21PYmplY3RJZCwNCiAgICArICAgICAgICAgICAg ICAgICBQbGF0Zm9ybVJlcG8tPkRldmljZUlkTWFwcGluZywNCiAgICArICAgICAgICAgICAgICAg ICBzaXplb2YgKFBsYXRmb3JtUmVwby0+RGV2aWNlSWRNYXBwaW5nKSwNCiAgICArICAgICAgICAg ICAgICAgICBBUlJBWV9TSVpFIChQbGF0Zm9ybVJlcG8tPkRldmljZUlkTWFwcGluZyksDQogICAg KyAgICAgICAgICAgICAgICAgVG9rZW4sDQogICAgKyAgICAgICAgICAgICAgICAgR2V0RGV2aWNl SWRNYXBwaW5nQXJyYXksDQogICAgKyAgICAgICAgICAgICAgICAgQ21PYmplY3QNCiAgICArICAg ICAgICAgICAgICAgICApOw0KICAgICsgICAgICBicmVhazsNCiAgICArDQogICAgKyAgICBjYXNl IEVBcm1PYmpQY2lDb25maWdTcGFjZUluZm86DQogICAgKyAgICAgIFN0YXR1cyA9IEhhbmRsZUNt T2JqZWN0ICgNCiAgICArICAgICAgICAgICAgICAgICBDbU9iamVjdElkLA0KICAgICsgICAgICAg ICAgICAgICAgIFBsYXRmb3JtUmVwby0+UGNpQ29uZmlnSW5mbywNCiAgICArICAgICAgICAgICAg ICAgICBzaXplb2YgKFBsYXRmb3JtUmVwby0+UGNpQ29uZmlnSW5mbyksDQogICAgKyAgICAgICAg ICAgICAgICAgMSwNCiAgICArICAgICAgICAgICAgICAgICBDbU9iamVjdA0KICAgICsgICAgICAg ICAgICAgICAgICk7DQogICAgKyAgICAgIGJyZWFrOw0KICAgICsNCiAgICArICAgIGRlZmF1bHQ6 IHsNCiAgICArICAgICAgYnJlYWs7DQogICAgKyAgICB9DQogICAgKyAgfS8vc3dpdGNoDQogICAg KyAgcmV0dXJuIFN0YXR1czsNCiAgICArfQ0KICAgICsNCiAgICArLyoqIFJldHVybiBwbGF0Zm9y bSBzcGVjaWZpYyBzdGFuZGFyZCBuYW1lc3BhY2Ugb2JqZWN0Lg0KICAgICsNCiAgICArICBAcGFy YW0gW2luXSAgICAgIFRoaXMgICAgICAgIFBvaW50ZXIgdG8gdGhlIENvbmZpZ3VyYXRpb24gTWFu YWdlciBQcm90b2NvbC4NCiAgICArICBAcGFyYW0gW2luXSAgICAgIENtT2JqZWN0SWQgIFRoZSBD b25maWd1cmF0aW9uIE1hbmFnZXIgT2JqZWN0IElELg0KICAgICsgIEBwYXJhbSBbaW5dICAgICAg VG9rZW4gICAgICAgQW4gb3B0aW9uYWwgdG9rZW4gaWRlbnRpZnlpbmcgdGhlIG9iamVjdC4gSWYN CiAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZCB0aGlzIG11c3QgYmUg Q01fTlVMTF9UT0tFTi4NCiAgICArICBAcGFyYW0gW2luLCBvdXRdIENtT2JqZWN0ICAgIFBvaW50 ZXIgdG8gdGhlIENvbmZpZ3VyYXRpb24gTWFuYWdlciBPYmplY3QNCiAgICArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IgZGVzY3JpYmluZyB0aGUgcmVxdWVzdGVkIE9i amVjdC4NCiAgICArDQogICAgKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgU3VjY2Vz cy4NCiAgICArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBp bnZhbGlkLg0KICAgICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSByZXF1aXJl ZCBvYmplY3QgaW5mb3JtYXRpb24gaXMgbm90IGZvdW5kLg0KICAgICsqKi8NCiAgICArRUZJX1NU QVRVUw0KICAgICtFRklBUEkNCiAgICArR2V0U3RhbmRhcmROYW1lU3BhY2VPYmplY3RQbGF0ICgN CiAgICArICBJTiAgQ09OU1QgRURLSUlfQ09ORklHVVJBVElPTl9NQU5BR0VSX1BST1RPQ09MICAq IENPTlNUIFRoaXMsDQogICAgKyAgSU4gIENPTlNUIENNX09CSkVDVF9JRCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBDbU9iamVjdElkLA0KICAgICsgIElOICBDT05TVCBDTV9PQkpF Q1RfVE9LRU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9rZW4gT1BUSU9OQUwsDQog ICAgKyAgSU4gIE9VVCAgIENNX09CSl9ERVNDUklQVE9SICAgICAgICAgICAgICAgICAgICAgKiBD T05TVCBDbU9iamVjdA0KICAgICsgICkNCiAgICArew0KICAgICsgIEVGSV9TVEFUVVMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KICAgICsgIEVES0lJX0ZWUF9QTEFURk9STV9S RVBPU0lUT1JZX0lORk8gICogUGxhdGZvcm1SZXBvOw0KICAgICsNCiAgICArICBpZiAoKFRoaXMg PT0gTlVMTCkgfHwgKENtT2JqZWN0ID09IE5VTEwpKSB7DQogICAgKyAgICBBU1NFUlQgKFRoaXMg IT0gTlVMTCk7DQogICAgKyAgICBBU1NFUlQgKENtT2JqZWN0ICE9IE5VTEwpOw0KICAgICsgICAg cmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCiAgICArICB9DQogICAgKw0KICAgICsgIFN0 YXR1cyA9IEVGSV9OT1RfRk9VTkQ7DQpbU0FNSV0gQ2FuIFN0YXR1cyA9IEVGSV9OT1RfRk9VTkQg YmUgbW92ZWQgdG8gZGVmYXVsdCBjYXNlIGluIHN3aXRjaCB7fSBiZWxvdz8gDQpbL1NBTUldDQog ICAgKyAgUGxhdGZvcm1SZXBvID0gVGhpcy0+UGxhdFJlcG9JbmZvLT5GdnBQbGF0UmVwb0luZm87 DQogICAgKw0KICAgICsgIHN3aXRjaCAoR0VUX0NNX09CSkVDVF9JRCAoQ21PYmplY3RJZCkpIHsN CiAgICArICAgIGNhc2UgRVN0ZE9iakFjcGlUYWJsZUxpc3Q6DQogICAgKyAgICAgIFN0YXR1cyA9 IEhhbmRsZUNtT2JqZWN0ICgNCiAgICArICAgICAgICAgICAgICAgICBDbU9iamVjdElkLA0KICAg ICsgICAgICAgICAgICAgICAgIFBsYXRmb3JtUmVwby0+Q21BY3BpVGFibGVMaXN0LA0KICAgICsg ICAgICAgICAgICAgICAgIHNpemVvZiAoUGxhdGZvcm1SZXBvLT5DbUFjcGlUYWJsZUxpc3QpLA0K ICAgICsgICAgICAgICAgICAgICAgIEFSUkFZX1NJWkUgKFBsYXRmb3JtUmVwby0+Q21BY3BpVGFi bGVMaXN0KSwNCiAgICArICAgICAgICAgICAgICAgICBDbU9iamVjdA0KICAgICsgICAgICAgICAg ICAgICAgICk7DQogICAgKyAgICAgIGJyZWFrOw0KICAgICsNCiAgICArICAgIGRlZmF1bHQ6IHsN CiAgICArICAgICAgYnJlYWs7DQogICAgKyAgICB9DQogICAgKyAgfQ0KICAgICsNCiAgICArICBy ZXR1cm4gU3RhdHVzOw0KICAgICt9DQogICAgZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0FSTS9Nb3Jl bGxvL0NvbmZpZ3VyYXRpb25NYW5hZ2VyL0NvbmZpZ3VyYXRpb25NYW5hZ2VyRHhlL0FzbFRhYmxl cy9Ec2R0RnZwLmFzbCBiL1BsYXRmb3JtL0FSTS9Nb3JlbGxvL0NvbmZpZ3VyYXRpb25NYW5hZ2Vy L0NvbmZpZ3VyYXRpb25NYW5hZ2VyRHhlL0FzbFRhYmxlcy9Ec2R0RnZwLmFzbA0KICAgIG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQogICAgaW5kZXggMDAwMDAwMDAwMDAwLi4yNjA3MmE5NWRiNzYNCiAg ICAtLS0gL2Rldi9udWxsDQogICAgKysrIGIvUGxhdGZvcm0vQVJNL01vcmVsbG8vQ29uZmlndXJh dGlvbk1hbmFnZXIvQ29uZmlndXJhdGlvbk1hbmFnZXJEeGUvQXNsVGFibGVzL0RzZHRGdnAuYXNs DQogICAgQEAgLTAsMCArMSw5OCBAQA0KICAgICsvKiogQGZpbGUNCiAgICArICBEaWZmZXJlbnRp YXRlZCBTeXN0ZW0gRGVzY3JpcHRpb24gVGFibGUgRmllbGRzIChEU0RUKQ0KICAgICsNCiAgICAr ICBDb3B5cmlnaHQgKGMpIDIwMjEsIEFSTSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0K ICAgICsNCiAgICArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVu dA0KICAgICsqKi8NCiAgICArDQogICAgKyNpbmNsdWRlICJDb25maWd1cmF0aW9uTWFuYWdlci5o Ig0KICAgICsNCiAgICArRGVmaW5pdGlvbkJsb2NrKCJEc2R0LmFtbCIsICJEU0RUIiwgMSwgIkFS TUxURCIsICJNT1JFTExPIiwgQ0ZHX01HUl9PRU1fUkVWSVNJT04pIHsNCiAgICArICBTY29wZShf U0IpIHsNCiAgICArICAgIERldmljZShDUDAwKSB7IC8vIENsdXN0ZXIgMCwgQ3B1IDANCiAgICAr ICAgICAgTmFtZShfSElELCAiQUNQSTAwMDciKQ0KICAgICsgICAgICBOYW1lKF9VSUQsIDApDQog ICAgKyAgICAgIE5hbWUoX1NUQSwgMHhGKQ0KICAgICsgICAgfQ0KICAgICsNCiAgICArICAgIERl dmljZShDUDAxKSB7IC8vIENsdXN0ZXIgMCwgQ3B1IDENCiAgICArICAgICAgTmFtZShfSElELCAi QUNQSTAwMDciKQ0KICAgICsgICAgICBOYW1lKF9VSUQsIDEpDQogICAgKyAgICAgIE5hbWUoX1NU QSwgMHhGKQ0KICAgICsgICAgfQ0KICAgICsNCiAgICArICAgIERldmljZShDUDAyKSB7IC8vIENs dXN0ZXIgMSwgQ3B1IDANCiAgICArICAgICAgTmFtZShfSElELCAiQUNQSTAwMDciKQ0KICAgICsg ICAgICBOYW1lKF9VSUQsIDIpDQogICAgKyAgICAgIE5hbWUoX1NUQSwgMHhGKQ0KICAgICsgICAg fQ0KICAgICsNCiAgICArICAgIERldmljZShDUDAzKSB7IC8vIENsdXN0ZXIgMSwgQ3B1IDENCiAg ICArICAgICAgTmFtZShfSElELCAiQUNQSTAwMDciKQ0KICAgICsgICAgICBOYW1lKF9VSUQsIDMp DQogICAgKyAgICAgIE5hbWUoX1NUQSwgMHhGKQ0KICAgICsgICAgfQ0KICAgICsNCiAgICArICAg IC8vIFZJUlRJTyBESVNLDQogICAgKyAgICBEZXZpY2UoVlIwMCkgew0KICAgICsgICAgICBOYW1l KF9ISUQsICJMTlJPMDAwNSIpDQogICAgKyAgICAgIE5hbWUoX1VJRCwgMCkNCiAgICArDQogICAg KyAgICAgIE5hbWUoX0NSUywgUmVzb3VyY2VUZW1wbGF0ZSgpIHsNCiAgICArICAgICAgICBNZW1v cnkzMkZpeGVkKA0KICAgICsgICAgICAgICAgUmVhZFdyaXRlLA0KICAgICsgICAgICAgICAgRml4 ZWRQY2RHZXQzMihQY2RWaXJ0aW9CbGtCYXNlQWRkcmVzcyksDQogICAgKyAgICAgICAgICBGaXhl ZFBjZEdldDMyKFBjZFZpcnRpb0Jsa1NpemUpDQogICAgKyAgICAgICAgKQ0KICAgICsgICAgICAg IEludGVycnVwdChSZXNvdXJjZUNvbnN1bWVyLCBMZXZlbCwgQWN0aXZlSGlnaCwgRXhjbHVzaXZl KSB7DQogICAgKyAgICAgICAgICBGaXhlZFBjZEdldDMyKFBjZFZpcnRpb0Jsa0ludGVycnVwdCkN CiAgICArICAgICAgICB9DQogICAgKyAgICAgIH0pDQogICAgKyAgICB9DQogICAgKw0KICAgICsg ICAgLy8gVklSVElPIE5FVA0KICAgICsgICAgRGV2aWNlKFZSMDEpIHsNCiAgICArICAgICAgTmFt ZShfSElELCAiTE5STzAwMDUiKQ0KICAgICsgICAgICBOYW1lKF9VSUQsIDEpDQogICAgKw0KICAg ICsgICAgICBOYW1lKF9DUlMsIFJlc291cmNlVGVtcGxhdGUoKSB7DQogICAgKyAgICAgICAgTWVt b3J5MzJGaXhlZChSZWFkV3JpdGUsIDB4MUMxODAwMDAsIDB4MDAwMDAyMDApDQogICAgKyAgICAg ICAgSW50ZXJydXB0KFJlc291cmNlQ29uc3VtZXIsIExldmVsLCBBY3RpdmVIaWdoLCBFeGNsdXNp dmUpIHsgMTM0IH0NCiAgICArICAgICAgfSkNCiAgICArICAgIH0NCiAgICArDQogICAgKyAgICAv LyBWSVJUSU8gUkFORE9NDQogICAgKyAgICBEZXZpY2UoVlIwMikgew0KICAgICsgICAgICBOYW1l KF9ISUQsICJMTlJPMDAwNSIpDQogICAgKyAgICAgIE5hbWUoX1VJRCwgMikNCiAgICArDQogICAg KyAgICAgIE5hbWUoX0NSUywgUmVzb3VyY2VUZW1wbGF0ZSgpIHsNCiAgICArICAgICAgICBNZW1v cnkzMkZpeGVkKFJlYWRXcml0ZSwgMHgxQzE5MDAwMCwgMHgwMDAwMDIwMCkNCiAgICArICAgICAg ICBJbnRlcnJ1cHQoUmVzb3VyY2VDb25zdW1lciwgTGV2ZWwsIEFjdGl2ZUhpZ2gsIEV4Y2x1c2l2 ZSkgeyAxMzMgfQ0KICAgICsgICAgICB9KQ0KICAgICsgICAgfQ0KICAgICsNCiAgICArICAgIC8v IFZJUlRJTyBQOSBEZXZpY2UNCiAgICArICAgIERldmljZShWUjAzKSB7DQogICAgKyAgICAgIE5h bWUoX0hJRCwgIkxOUk8wMDA1IikNCiAgICArICAgICAgTmFtZShfVUlELCAzKQ0KICAgICsNCiAg ICArICAgICAgTmFtZShfQ1JTLCBSZXNvdXJjZVRlbXBsYXRlKCkgew0KICAgICsgICAgICAgIE1l bW9yeTMyRml4ZWQoUmVhZFdyaXRlLCAweDFDMUEwMDAwLCAweDAwMDAwMjAwKQ0KICAgICsgICAg ICAgIEludGVycnVwdChSZXNvdXJjZUNvbnN1bWVyLCBMZXZlbCwgQWN0aXZlSGlnaCwgRXhjbHVz aXZlKSB7IDEzNSB9DQogICAgKyAgICAgIH0pDQogICAgKyAgICB9DQogICAgKw0KICAgICsgICAg Ly8gU01DOTFYDQogICAgKyAgICBEZXZpY2UoTkVUMCkgew0KICAgICsgICAgICBOYW1lKF9ISUQs ICJMTlJPMDAwMyIpDQogICAgKyAgICAgIE5hbWUoX1VJRCwgMCkNCiAgICArDQogICAgKyAgICAg IE5hbWUoX0NSUywgUmVzb3VyY2VUZW1wbGF0ZSgpIHsNCiAgICArICAgICAgICBNZW1vcnkzMkZp eGVkKFJlYWRXcml0ZSwgMHgxRDEwMDAwMCwgMHgwMDAwMTAwMCkNCiAgICArICAgICAgICBJbnRl cnJ1cHQoUmVzb3VyY2VDb25zdW1lciwgTGV2ZWwsIEFjdGl2ZUhpZ2gsIEV4Y2x1c2l2ZSkgeyAx MzAgfQ0KICAgICsgICAgICB9KQ0KICAgICsgICAgfQ0KICAgICsgIH0gLy8gU2NvcGUoX1NCKQ0K ICAgICt9DQogICAgZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0FSTS9Nb3JlbGxvL0NvbmZpZ3VyYXRp b25NYW5hZ2VyL0NvbmZpZ3VyYXRpb25NYW5hZ2VyRHhlL0FzbFRhYmxlcy9Tc2R0UGNpRnZwLmFz bCBiL1BsYXRmb3JtL0FSTS9Nb3JlbGxvL0NvbmZpZ3VyYXRpb25NYW5hZ2VyL0NvbmZpZ3VyYXRp b25NYW5hZ2VyRHhlL0FzbFRhYmxlcy9Tc2R0UGNpRnZwLmFzbA0KICAgIG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQogICAgaW5kZXggMDAwMDAwMDAwMDAwLi5iZGYyZjA2YWVkNjkNCiAgICAtLS0gL2Rl di9udWxsDQogICAgKysrIGIvUGxhdGZvcm0vQVJNL01vcmVsbG8vQ29uZmlndXJhdGlvbk1hbmFn ZXIvQ29uZmlndXJhdGlvbk1hbmFnZXJEeGUvQXNsVGFibGVzL1NzZHRQY2lGdnAuYXNsDQogICAg QEAgLTAsMCArMSwxMzAgQEANCiAgICArLyoqIEBmaWxlDQogICAgKyAgU2Vjb25kYXJ5IFN5c3Rl bSBEZXNjcmlwdGlvbiBUYWJsZSAoU1NEVCkNCiAgICArDQogICAgKyAgQ29weXJpZ2h0IChjKSAy MDIxLCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQogICAgKw0KICAgICsg IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQogICAgKyoqLw0K ICAgICsNCiAgICArI2luY2x1ZGUgIkNvbmZpZ3VyYXRpb25NYW5hZ2VyLmgiDQogICAgKw0KICAg ICsjZGVmaW5lIExOS19ERVZJQ0UoVW5pcXVlX0lkLCBMaW5rX05hbWUsIGlycSkgICAgICAgICAg ICAgICAgICAgICAgICAgICBcDQogICAgKyAgRGV2aWNlKExpbmtfTmFtZSkgeyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCiAgICArICBOYW1lKF9I SUQsIEVJU0FJRCgiUE5QMEMwRiIpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KICAgICsgIE5hbWUoX1VJRCwgVW5pcXVlX0lkKSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogICAgKyAgTmFtZShfUFJTLCBSZXNvdXJj ZVRlbXBsYXRlKCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCiAg ICArICAgIEludGVycnVwdChSZXNvdXJjZVByb2R1Y2VyLCBMZXZlbCwgQWN0aXZlSGlnaCwgRXhj bHVzaXZlKSB7IGlycSB9ICAgXA0KICAgICsgICAgfSkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogICAgKyAgTWV0aG9k IChfQ1JTLCAwKSB7IFJldHVybiAoX1BSUykgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwNCiAgICArICBNZXRob2QgKF9TUlMsIDEpIHsgfSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KICAgICsgIE1ldGhvZCAoX0RJUykgeyB9 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQog ICAgK30NCiAgICArDQogICAgKyNkZWZpbmUgUFJUX0VOVFJZKEFkZHJlc3MsIFBpbiwgTGluaykg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogICAg KyAgUGFja2FnZSAoNCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogICAgKyAgICBBZGRyZXNzLCAgLyog dXNlcyB0aGUgc2FtZSBmb3JtYXQgYXMgX0FEUiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcDQogICAgKyAgICBQaW4sICAgICAgLyogVGhlIFBDSSBwaW4gbnVtYmVy IG9mIHRoZSBkZXZpY2UgKDAtSU5UQSwgMS1JTlRCLCAyLUlOVEMsIDMtSU5URCkgICovICBcDQog ICAgKyAgICBMaW5rLCAgICAgLyogSW50ZXJydXB0IGFsbG9jYXRlZCB2aWEgTGluayBkZXZpY2Ug ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogICAgKyAgICBaZXJvICAgICAg LyogZ2xvYmFsIHN5c3RlbSBpbnRlcnJ1cHQgbnVtYmVyIChubyB1c2VkKSAqLyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcDQogICAgK30NCiAgICArDQogICAgKyNkZWZpbmUgUk9PVF9QUlRf RU5UUlkoUGluLCBMaW5rKSAgIFBSVF9FTlRSWSgweDAwMDBGRkZGLCBQaW4sIExpbmspICAvLyBE ZXZpY2UgMCBmb3IgQnJpZGdlLg0KICAgICsNCiAgICArRGVmaW5pdGlvbkJsb2NrKCJTc2R0UGNp LmFtbCIsICJTU0RUIiwgMSwgIkFSTUxURCIsICJNT1JFTExPIiwNCiAgICArICAgICAgICAgICAg ICAgIENGR19NR1JfT0VNX1JFVklTSU9OKQ0KICAgICt7DQogICAgKyAgU2NvcGUgKF9TQikgew0K ICAgICsgICAgLy8NCiAgICArICAgIC8vIFBDSSBSb290IENvbXBsZXgNCiAgICArICAgIC8vDQog ICAgKyAgICBMTktfREVWSUNFKDEsIExOS0EsIDIwMSkNCiAgICArICAgIExOS19ERVZJQ0UoMiwg TE5LQiwgMjAyKQ0KICAgICsgICAgTE5LX0RFVklDRSgzLCBMTktDLCAyMDMpDQogICAgKyAgICBM TktfREVWSUNFKDQsIExOS0QsIDIwNCkNCiAgICArDQogICAgKyAgICAvLyBQQ0kgUm9vdCBDb21w bGV4DQogICAgKyAgICBEZXZpY2UoUENJMCkgew0KICAgICsgICAgICBOYW1lIChfSElELCBFSVNB SUQoIlBOUDBBMDgiKSkgLy8gUENJIEV4cHJlc3MgUm9vdCBCcmlkZ2UNCiAgICArICAgICAgTmFt ZSAoX0NJRCwgRUlTQUlEKCJQTlAwQTAzIikpIC8vIENvbXBhdGlibGUgUENJIFJvb3QgQnJpZGdl DQogICAgKyAgICAgIE5hbWUgKF9TRUcsIFplcm8pICAgICAgICAgICAgICAvLyBQQ0kgU2VnbWVu dCBHcm91cCBudW1iZXINCiAgICArICAgICAgTmFtZSAoX0JCTiwgWmVybykgICAgICAgICAgICAg IC8vIFBDSSBCYXNlIEJ1cyBOdW1iZXINCiAgICArICAgICAgTmFtZSAoX0NDQSwgMSkgICAgICAg ICAgICAgICAgIC8vIENhY2hlIENvaGVyZW5jeSBBdHRyaWJ1dGUNCiAgICArDQogICAgKyAgICAg IC8vIFJvb3QgQ29tcGxleCAwDQogICAgKyAgICAgIERldmljZSAoUlAwKSB7DQogICAgKyAgICAg ICAgTmFtZShfQURSLCAweEYwMDAwMDAwKSAgICAvLyBEZXYgMCwgRnVuYyAwDQogICAgKyAgICAg IH0NCiAgICArDQogICAgKyAgICAgIC8vIFBDSSBSb3V0aW5nIFRhYmxlDQogICAgKyAgICAgIE5h bWUoX1BSVCwgUGFja2FnZSgpIHsNCiAgICArICAgICAgICBST09UX1BSVF9FTlRSWSgwLCBMTktB KSwgICAvLyBJTlRBDQogICAgKyAgICAgICAgUk9PVF9QUlRfRU5UUlkoMSwgTE5LQiksICAgLy8g SU5UQg0KICAgICsgICAgICAgIFJPT1RfUFJUX0VOVFJZKDIsIExOS0MpLCAgIC8vIElOVEMNCiAg ICArICAgICAgICBST09UX1BSVF9FTlRSWSgzLCBMTktEKSwgICAvLyBJTlREDQogICAgKyAgICAg IH0pDQogICAgKw0KICAgICsgICAgICAvLyBSb290IGNvbXBsZXggcmVzb3VyY2VzDQogICAgKyAg ICAgIE1ldGhvZCAoX0NSUywgMCwgU2VyaWFsaXplZCkgew0KICAgICsgICAgICAgIE5hbWUgKFJC VUYsIFJlc291cmNlVGVtcGxhdGUgKCkgew0KICAgICsgICAgICAgICAgV29yZEJ1c051bWJlciAo ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCdXMgbnVtYmVycyBhc3NpZ25lZCB0byB0 aGlzIHJvb3QNCiAgICArICAgICAgICAgICAgUmVzb3VyY2VQcm9kdWNlciwNCiAgICArICAgICAg ICAgICAgTWluRml4ZWQsDQogICAgKyAgICAgICAgICAgIE1heEZpeGVkLA0KICAgICsgICAgICAg ICAgICBQb3NEZWNvZGUsDQogICAgKyAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8vIEFkZHJlc3NHcmFudWxhcml0eQ0KICAgICsgICAgICAgICAg ICBGaXhlZFBjZEdldDMyIChQY2RQY2lCdXNNaW4pLCAgICAgICAgICAgICAvLyBBZGRyZXNzTWlu aW11bSAtIE1pbmltdW0gQnVzIE51bWJlcg0KICAgICsgICAgICAgICAgICBGaXhlZFBjZEdldDMy IChQY2RQY2lCdXNNYXgpLCAgICAgICAgICAgICAvLyBBZGRyZXNzTWF4aW11bSAtIE1heGltdW0g QnVzIE51bWJlcg0KICAgICsgICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvLyBBZGRyZXNzVHJhbnNsYXRpb24gLSBTZXQgdG8gMA0KICAgICsgICAg ICAgICAgICBGaXhlZFBjZEdldDMyIChQY2RQY2lCdXNDb3VudCkgICAgICAgICAgICAvLyBSYW5n ZUxlbmd0aCAtIE51bWJlciBvZiBCdXNzZXMNCiAgICArICAgICAgICAgICkNCiAgICArDQogICAg KyAgICAgICAgICBEV29yZE1lbW9yeSAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v IDMyLWJpdCBCQVIgV2luZG93cw0KICAgICsgICAgICAgICAgICBSZXNvdXJjZVByb2R1Y2VyLA0K ICAgICsgICAgICAgICAgICBQb3NEZWNvZGUsDQogICAgKyAgICAgICAgICAgIE1pbkZpeGVkLA0K ICAgICsgICAgICAgICAgICBNYXhGaXhlZCwNCiAgICArICAgICAgICAgICAgQ2FjaGVhYmxlLA0K ICAgICsgICAgICAgICAgICBSZWFkV3JpdGUsDQogICAgKyAgICAgICAgICAgIDB4MDAwMDAwMDAs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR3JhbnVsYXJpdHkNCiAgICArICAgICAg ICAgICAgRml4ZWRQY2RHZXQzMiAoUGNkUGNpTW1pbzMyQmFzZSksICAgICAgICAvLyBNaW4gQmFz ZSBBZGRyZXNzDQogICAgKyAgICAgICAgICAgIEZpeGVkUGNkR2V0MzIgKFBjZFBjaU1taW8zMk1h eEJhc2UpLCAgICAgLy8gTWF4IEJhc2UgQWRkcmVzcw0KICAgICsgICAgICAgICAgICBGaXhlZFBj ZEdldDMyIChQY2RQY2lNbWlvMzJUcmFuc2xhdGlvbiksIC8vIFRyYW5zbGF0ZQ0KICAgICsgICAg ICAgICAgICBGaXhlZFBjZEdldDMyIChQY2RQY2lNbWlvMzJTaXplKSAgICAgICAgIC8vIExlbmd0 aA0KICAgICsgICAgICAgICAgKQ0KICAgICsNCiAgICArICAgICAgICAgIFFXb3JkTWVtb3J5ICgg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNjQtYml0IEJBUiBXaW5kb3dzDQogICAg KyAgICAgICAgICAgIFJlc291cmNlUHJvZHVjZXIsDQogICAgKyAgICAgICAgICAgIFBvc0RlY29k ZSwNCiAgICArICAgICAgICAgICAgTWluRml4ZWQsDQogICAgKyAgICAgICAgICAgIE1heEZpeGVk LA0KICAgICsgICAgICAgICAgICBDYWNoZWFibGUsDQogICAgKyAgICAgICAgICAgIFJlYWRXcml0 ZSwNCiAgICArICAgICAgICAgICAgMHgwMDAwMDAwMCwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvLyBHcmFudWxhcml0eQ0KICAgICsgICAgICAgICAgICBGaXhlZFBjZEdldDY0IChQY2RQ Y2lNbWlvNjRCYXNlKSwgICAgICAgIC8vIE1pbiBCYXNlIEFkZHJlc3MNCiAgICArICAgICAgICAg ICAgRml4ZWRQY2RHZXQ2NCAoUGNkUGNpTW1pbzY0TWF4QmFzZSksICAgICAvLyBNYXggQmFzZSBB ZGRyZXNzDQogICAgKyAgICAgICAgICAgIEZpeGVkUGNkR2V0NjQgKFBjZFBjaU1taW82NFRyYW5z bGF0aW9uKSwgLy8gVHJhbnNsYXRlDQogICAgKyAgICAgICAgICAgIEZpeGVkUGNkR2V0NjQgKFBj ZFBjaU1taW82NFNpemUpICAgICAgICAgLy8gTGVuZ3RoDQogICAgKyAgICAgICAgICApDQogICAg Kw0KICAgICsgICAgICAgICAgRFdvcmRJbyAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvLyBJTyB3aW5kb3cNCiAgICArICAgICAgICAgICAgUmVzb3VyY2VQcm9kdWNlciwNCiAg ICArICAgICAgICAgICAgTWluRml4ZWQsDQogICAgKyAgICAgICAgICAgIE1heEZpeGVkLA0KICAg ICsgICAgICAgICAgICBQb3NEZWNvZGUsDQogICAgKyAgICAgICAgICAgIEVudGlyZVJhbmdlLA0K ICAgICsgICAgICAgICAgICAweDAwMDAwMDAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC8vIEdyYW51bGFyaXR5DQogICAgKyAgICAgICAgICAgIEZpeGVkUGNkR2V0MzIgKFBjZFBjaUlv QmFzZSksICAgICAgICAgICAgLy8gTWluIEJhc2UgQWRkcmVzcw0KICAgICsgICAgICAgICAgICBG aXhlZFBjZEdldDMyIChQY2RQY2lJb01heEJhc2UpLCAgICAgICAgIC8vIE1heCBCYXNlIEFkZHJl c3MNCiAgICArICAgICAgICAgICAgRml4ZWRQY2RHZXQzMiAoUGNkUGNpSW9UcmFuc2xhdGlvbiks ICAgICAvLyBUcmFuc2xhdGUNCiAgICArICAgICAgICAgICAgRml4ZWRQY2RHZXQzMiAoUGNkUGNp SW9TaXplKSwgICAgICAgICAgICAvLyBMZW5ndGgNCiAgICArICAgICAgICAgICAgLA0KICAgICsg ICAgICAgICAgICAsDQogICAgKyAgICAgICAgICAgICwNCiAgICArICAgICAgICAgICAgVHlwZVRy YW5zbGF0aW9uDQogICAgKyAgICAgICAgICApDQogICAgKyAgICAgICAgfSkgLy8gTmFtZShSQlVG KQ0KICAgICsgICAgICAgIFJldHVybiAoUkJVRikNCiAgICArICAgICAgfSAvLyBNZXRob2QgKF9D UlMpDQogICAgKyAgICB9IC8vIERldmljZSAoUENJMCkNCiAgICArICB9IC8vIF9TQg0KICAgICt9 IC8vIERCDQogICAgLS0gDQogICAgMi4xNy4xDQoNCg0K