From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from APC01-TYZ-obe.outbound.protection.outlook.com (mail-tyzapc01on2093.outbound.protection.outlook.com [40.107.117.93]) by sourceware.org (Postfix) with ESMTPS id 53BD73858290 for ; Wed, 12 Oct 2022 19:23:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 53BD73858290 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=espressif.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=espressif.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gXbwByuODmZjH7pL0c+zMfMpggXQFDkDlodbxVlc4/hSYs7ctM96JFdwvUsXkIelMSFBTtukaF+twvyw4LBGm4ZzdeUdWOUhgSGC+WllwjkML7q/C0gUymBUPJwXmN0LnDp8gLn8peX+efvGVAtSkWXACNGWM9KO/bDQS4PEBUiEGh1xjNa7qa/z8R0Xuqxd9yRkJBNkocNsl2PJFPLqZHFdE17jAqx6otlNmghoM03qKMv+zwltVC525ST09fKvR8WjVJo8xOth/njnKKLLek6/2nwBwM5lpkw3/+WJ97u4Vvlv6iev/aQqicIk+NfUPyf3LEijVFogpgF3Sxqp/g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=9FQls+ojumi4nlSVzTSi7taj5YhvS/v6QgqVKC3NiBU=; b=dlIc+Xu3a7Edn66foLZHJD/uSmS4c4CgcDEPT8I/oUcKm8Ivb6FJvroSiHwvvoWJdeGZfOxZ22rLNlrH535rWbC1kqHJm6VOIJHPQDGGy8DLgAt0Mk3i3C6AI9oMaCvNLVcZQbUK+7VZQy9bmRHhIIwMeg+eaHPmYBaBZdv6352wAKIjF9Fceus1/MOkH7e0bDenwN5+WMoRCrj7CTrv+daBrX7wYd54SMvt7LISaWjCj6FpKRSIrfxcyTxakVBKr1QN/gr/nMOjn+u16WTHC/kNk+wZw9RL6YDNlr5fHG0ClrJkOJhbAuYgRg6h28WrDfMLTHpmbpIIB0u1C16qog== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=espressif.com; dmarc=pass action=none header.from=espressif.com; dkim=pass header.d=espressif.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=espressifsystems.onmicrosoft.com; s=selector1-espressifsystems-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9FQls+ojumi4nlSVzTSi7taj5YhvS/v6QgqVKC3NiBU=; b=FdORklMiPZUUsJc4cLfHJDfGT5TfNJ+PjTLgdca7iJ32AARBxr4cfU9qFFErw12pByGV9xFrSJsjx/dBneLduAmfoIOT6M11TpNM2VSmaiTos826R77qiSIjQgXgIcD1UwNr6auAO3CGUeYVLr+aqBbQs4y2T4UVAxc3jWzxuyc= Received: from TYZPR04MB5736.apcprd04.prod.outlook.com (2603:1096:400:1fa::7) by SI2PR04MB4170.apcprd04.prod.outlook.com (2603:1096:4:f8::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.21; Wed, 12 Oct 2022 19:23:47 +0000 Received: from TYZPR04MB5736.apcprd04.prod.outlook.com ([fe80::e64d:5c85:a83c:5898]) by TYZPR04MB5736.apcprd04.prod.outlook.com ([fe80::e64d:5c85:a83c:5898%4]) with mapi id 15.20.5709.015; Wed, 12 Oct 2022 19:23:47 +0000 From: Alexey Lapshin To: "gcc-patches@gcc.gnu.org" CC: Alexey Gerenkov , Anton Maklakov , Ivan Grokhotkov Subject: [PATCH] xtensa: Add workaround for pSRAM cache issue in ESP32 Thread-Topic: [PATCH] xtensa: Add workaround for pSRAM cache issue in ESP32 Thread-Index: AQHY3nAmwijFfLxPlEqUKtUd613CwQ== Date: Wed, 12 Oct 2022 19:23:46 +0000 Message-ID: <1d246717a8e33db0760aaa4d5ce614489b4dab80.camel@espressif.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=espressif.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TYZPR04MB5736:EE_|SI2PR04MB4170:EE_ x-ms-office365-filtering-correlation-id: 7560c21b-5bb8-43dc-484e-08daac8748e1 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: bttcJGvNamqP+XBebjXQthKWltiFCnLf/8C35fEzDsiYiY6JIBqkMntl87SpAJllpWvMLJlXzTCo3X/gC7AHVctQImnSMPfsddS3XDq1Q+Z4iRVb6FXvwGtTamjKrCMXCWAQTOObeI3R77ckEmfo4ltscwNDeCQJFD4tvfyAxQINx3uv/scoc19hAZFZ2q++0iLy4vr/2an5HstY8OHUqLbyR/B0EM6ZIISLhDCvXAQdOATM5Db0ABjdGv0hWPSTLSX0biYdulPSeUo2yEWgUzowNVetnrCJeLNGAixIG2JhJA38I9UmCbQWkcgfhorbCa3nua0xXBWSgM4Sw9FM/qeFNAx/IFDpTDnDKIXssD3Jd+WbxTkAelg6EyDVZwetVuoNUFTGhQ/Rfk9IvYzFEhwbEvRAP9EjTEKIZetpe1pN8P4NDu1jkibW2T7++hp+sye56kH562FmcXgHJKqgE8ESDa6foHr/s47xI2qANdh67D9WE+RUa52z9ob3pICjpI2Pk/6jvLXCP4fs4LxqB8+4d9xQHNITPjGJ+gJekyPPrT9lMAp6sXcMWzAJjd8RH/kaYI7w24GyJOngHfkLUnUOGlSJQ+4HJaw5OooFyd86OgXlKLyQw+1bPaMM5yD8NC1mGAZSB8ukBcKMmeKWqx6hDUoLLMuOIrXP2nl1pZLH8BakLhHfJ6xKaE4nkdPwv6N5FIlEUrk5AvDPXz8LP05QmSrUgR3VXXdIQV7L7FeOR4p6g0H+ErPoH25etmO3Wku4H8lJjJreK6KhYieZz+5RjIfT7kvtMfGS30gevVEOE25rqkRXzI63OnIIXpgc x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYZPR04MB5736.apcprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(396003)(366004)(346002)(136003)(39850400004)(376002)(451199015)(36756003)(478600001)(38100700002)(2906002)(5660300002)(8936002)(44832011)(41300700001)(30864003)(64756008)(66476007)(76116006)(91956017)(8676002)(66556008)(4326008)(66446008)(66946007)(122000001)(6916009)(54906003)(6512007)(316002)(83380400001)(71200400001)(26005)(186003)(38070700005)(2616005)(107886003)(6486002)(86362001)(53546011)(6506007)(2004002)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MmtyUExIYitFclBCaUJMZk9GdUNDOVZ4ckxUZ0RPWVNpclRGQWo0WVdRcWQz?= =?utf-8?B?RS9tT2s1TlFCU0dBYzhyOVc5SHVTREpnYjlRRzErOGs5cmRXR3lpU3pXSkE1?= =?utf-8?B?R1NmTHJLMjJTczZkT3QyeFlEdWRDNzlOSU1PREJycDQ2V1RGVHVwM2hZVEhI?= =?utf-8?B?MjFyWlB4azZlYXNSaHNRUW1HTVRRclNkRHBucTIxdnN0OXhERTdkY2tTL3VB?= =?utf-8?B?ajNYZmgzekNJM1AzazdKcXJiRm52eXoxdmxiQWRjTDlBSVdocCt6dStsWlMx?= =?utf-8?B?djQ4YWQ4S3BWZUtKM1hBSWlYenY3NHZVZ0VIZFk5SHAvMncvNE94ZkFSaUhi?= =?utf-8?B?NUZFZC9EeG05U3g3VEtGTlFBWUdxU3VpbTU2RmJDMzlqSEhlYlVHcTFkWTk0?= =?utf-8?B?aHhzQXIvMnk4aWVZVWZyb2ZZMnlpVkJiNEJGNXcyaDF6d25sQ0FFMEJFblA4?= =?utf-8?B?NDhhdlZzd0tLcHlZamxIVS9zNGtwWTl4V0t0b2JRNkpmSHVCK0FodFhZVklX?= =?utf-8?B?YWFwM1BzcitWbU1iN05qVjhtTUo0VFM2VklKOE9raGxtTWVpQ1NaSzJqa0JS?= =?utf-8?B?NnU3MVU5Rng4ZWpEcGJDd0dWNUYwd3hScmZLbS91NFRJYWpZZm1sQ2RnQ3Jn?= =?utf-8?B?M2VHMjgrZk9mcERXQkxiMUNmTllaNzhkZ0NFaDR3TmZkSjlJMFFYSDY3MGh6?= =?utf-8?B?TTJrMThYWTk0SVJUTzZFWUpXdnFTV1JvZE9KcmNNOGhXVUl2U2hhZVBOSTBt?= =?utf-8?B?TVVOczVkQWlsa0lvNm9Ccis1bzdQRUlCb3lpaXpUM05WL2hEMnVucTdiYWNC?= =?utf-8?B?RmtxcVMzVUxka3NyS0RsMXhFZmhVUnlvdXRrVGY4R2tMNVZReXNyWVZpUmQv?= =?utf-8?B?N1NsVmUyVVJINzJOanBwdVJaUUxweGxOcW4rc24vUkV5Z3ZoN3BsVUd0T1c2?= =?utf-8?B?UlBvUi9BOGFXeENsYm1HTzlnZGtzOENyY2grbUxvSFdZWmFKT3BWVUcxUW1H?= =?utf-8?B?RHp2bWhqeWFiditJc1BjRkttSVdqWlJmTVlqRkJkNkU1STArUGF5dlN3L2Fj?= =?utf-8?B?b0ZCdVBiS0VkVTRrN1pzUHNsU0JXZXF2VGgxMVNZSTdtQVgwZFhNUGFKVDRG?= =?utf-8?B?N2dWM0twWUJXTk9ZaUtFSWw2Zm9VVWlBNmN2RS82NHdFVXN4Vi9jV28vUDgv?= =?utf-8?B?b3FWZFVHTGNkaU1BbEFSa2llUDBvd25GdGRmM0x4TGhsNVZBZjdUVHltbmF4?= =?utf-8?B?N2pzMUNSWldsME5wNVpMbzNkTW5sVS92VHZlM3Vnb3dOQ2w1elFrSjVxdTVI?= =?utf-8?B?MnNpL0o4cDZDZkdTNlVOa0I5cVhoNTNrT216SVhHMlhyWWxvaXFZVGNGcXZV?= =?utf-8?B?dXR0RkxHeE9QZVdIcElhWE1oQXk4S1dRRndBL3BwdU5sYmZDeHN6alBURFVE?= =?utf-8?B?d3lwelBnZnoxdVhOZnRhTng5WVZGUTFuOVZxZThnVVlnUk1TdkFNaDd2QUpw?= =?utf-8?B?VjJzYlNycnEzZjlHeStDem50TWlyT0F1YUtCTUExUGQ1RGlzK0RHNlp1MytQ?= =?utf-8?B?T3lnbVVReTlqVitQSCs5SkwwZnJSNDkybXVBbUJFUEpjVXZBWHpPa2xwclJ1?= =?utf-8?B?Qk5nNEthRS9sVXNDVVF6ekRzSUd2NzdCUHd0K3N6TkVza0tudmpJaHRCNDRH?= =?utf-8?B?TGN4aksxdzZQaXV2WS9pbTlZdDdrdzlhUmFzM1cxMFptcUsxY0JJSFA1OVQ0?= =?utf-8?B?U1FWTWtLWHp2cDVoNnV2MVFKZ3ZJb1ZDdEIweDJsV2dWMit6SnNxeXNSd1Ja?= =?utf-8?B?MUZKUkI5ZnFFaUhMSkk0R2hLQ3Z5bk1wbUUwVjlIVjVDRkFONS9ob0hOK1R3?= =?utf-8?B?MldjU25VRmNEYVlkNlowblZ3eVYvbWNWMlltNTlJYllFK2QyYUhtT2Zud1VZ?= =?utf-8?B?T0JkWTdidXVwSHl1SjBGclNYNEJZVW9LVDZkRTFpNHQvTUc5ZnNjQ1lGa3lx?= =?utf-8?B?ZmlrNUQrTTcwNzZudkFuTHhZYitDdFpLUUtmNU8xcE50SGlvd0I5Skx4VHIv?= =?utf-8?B?aVZlYzFXbkgzdyt1OUp0dnRTT1BKSzE2TG9iSjMxSjhvcWJZV001emhhWHpC?= =?utf-8?B?Wjc1NnhjN1lpbnQvb2RTcVI3NG4vazNjVGtSa1p6TVh1akdjUlRTQmlya2pT?= =?utf-8?Q?sMHc8QJ4ssr0tmu2dy9bAxI=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <927362724E6D7C40977CAF1D632F1BDC@apcprd04.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: espressif.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYZPR04MB5736.apcprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7560c21b-5bb8-43dc-484e-08daac8748e1 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Oct 2022 19:23:46.9476 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 5faf27fd-3557-4294-9545-8ea74a409f39 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: F672z2x2gNwAces4Vp9+x6+5JpE13OC2QWSAnNwSKilKzQnPkqwngIPdZug4rvFVK7TKWg+ZXn53RQbYG5/25K9y2kdCd45wujQN7u4P4Zs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SI2PR04MB4170 X-Spam-Status: No, score=-13.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,GIT_PATCH_0,KAM_NUMSUBJECT,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: RnJvbSBhMmI0MjUwMzFmNWIwNmRkNTFjZDNjYTM0ZmU0ZjM2MjBiOTNhOTQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogSmVyb2VuIERvbWJ1cmcgPGplcm9lbkBlc3ByZXNzaWYuY29t Pg0KRGF0ZTogU2F0LCAxMiBBdWcgMjAxNyAyMzoxMDoxMiArMDgwMA0KU3ViamVjdDogW1BBVENI XSB4dGVuc2E6IEFkZCB3b3JrYXJvdW5kIGZvciBwU1JBTSBjYWNoZSBpc3N1ZSBpbiBFU1AzMg0K DQpYdGVuc2EgZG9lcyBhIGxvYWQvc3RvcmUgaW52ZXJzaW9uIHdoZW4gYSBsb2FkIGFuZCBhIHN0 b3JlIHRvIHRoZSBzYW1lDQphZGRyZXNzIGlzIGZvdW5kIGluIHRoZSA1IGFmZmVjdGVkIHN0YWdl cyBvZiB0aGUgcGlwZWxpbmU6IHdpdGggYSBsb2FkDQpkb25lDQpfYWZ0ZXJfIHRoZSBzdG9yZSBp biBjb2RlLCB0aGUgWHRlbnNhIHdpbGwgbW92ZSBpdCBfYmVmb3JlXyB0aGUgc3RvcmUNCmluDQpl eGVjdXRpb24uDQpVbmZvcnR1bmF0ZWx5LCB0aGUgRVNQMzIgcFNSQU0gY2FjaGUgbWVzc2VzIHVw IGhhbmRsaW5nIHRoZXNlDQp3aGVuIGFuIGludGVycnVwdCBoYXBwZW5zIGR1cmluZyB0aGVzZS4g VGhpcyByZW9yZyBzdGVwIGluc2VydHMgTk9Qcw0KYmV0d2VlbiBsb2FkcyBhbmQgc3RvcmVzIHNv IHRoaXMgbmV2ZXIgb2NjdXJzLg0KDQpXb3JrYXJvdW5kczoNCg0KICBFU1AzMl9QU1JBTV9GSVhf Tk9QUzoNCiAgIFRoZSBoYW5kbGluZyBpc3N1ZSBhbHNvIHNob3dzIHVwIHdoZW4gZG9pbmcgYSBz dG9yZSB0byBhbiA4IG9yIDE2LQ0KYml0DQogICBtZW1vcnkgbG9jYXRpb24gZm9sbG93ZWQgYnkg YSBsYXJnZXIgKDE2IG9yIDMyLWJpdCkgc2l6ZWQgbG9hZCBmcm9tDQp0aGF0DQogICBsb2NhdGlv biB3aXRoaW4gdGhlIHRpbWUgaXQgdGFrZXMgdG8gZ3JhYiBhIGNhY2hlIGxpbmUgZnJvbSBleHRl cm5hbA0KUkFNDQogICAod2hpY2ggaXMgYXQgbGVhc3QgODAgY3ljbGVzKS4gVGhlIGNhY2hlIHdp bGwgY29uZnVzZSB0aGUgbG9hZCBhbmQNCnN0b3JlLA0KICAgcmVzdWx0aW5nIGluIHRoZSBieXRl cyBub3Qgc2V0IGJ5IHRoZSBzdG9yZSB0byBiZSByZWFkIGFzIGdhcmJhZ2UuDQpUbyBmaXgNCiAg IHRoaXMsIHdlIGluc2VydCBhIG1lbW9yeSBiYXJyaWVyIHdpdGggTk9QIGluc3RydWN0aW9ucyBh ZnRlciBlYWNoDQo4LzE2LWJpdA0KICAgc3RvcmUgdGhhdCBpc24ndCBmb2xsb3dlZCBieSBhbm90 aGVyIHN0b3JlLg0KDQogIEVTUDMyX1BTUkFNX0ZJWF9NRU1XIChkZWZhdWx0KToNCiAgIEV4cGxp Y2l0bHkgaW5zZXJ0IGEgbWVtb3J5IGJhcnJpZXIgaW5zdGVhZCBvZiBub3BzLg0KICAgU2xvd2Vy IHRoYW4gbm9wcywgYnV0IGZhc3RlciB0aGFuIGp1c3QgYWRkaW5nIG1lbXdzIGV2ZXJ5d2hlcmUu DQoNCiAgRVNQMzJfUFNSQU1fRklYX0RVUExEU1Q6DQogICAgRXhwbGljaXRseSBpbnNlcnQgYSBs b2FkIGFmdGVyIGV2ZXJ5IHN0b3JlOg0KICAgIC0gSW5zdHJ1Y3Rpb24gaXMgczMyaToNCiAgICAg ICAgSW5zZXJ0IGwzMmkgZnJvbSB0aGF0IGFkZHJlc3MgdG8gdGhlIHNvdXJjZSByZWdpc3Rlcg0K aW1tZWRpYXRlbHkgYWZ0ZXIsDQogICAgICAgIHBsdXMgYSBkdXBsaWNhdGVkIHMzMmkgYWZ0ZXIg dGhhdC4NCiAgICAtIEluc3RydWN0aW9uIGlzIHM4aS9zMTZpOg0KICAgICAgICBOb3RlIGFuZCBp bnNlcnQgYSBtZW13IGJlZm9yZSBhIGxvYWQuDQogICAgICAgIChUaGUgc2FtZSBhcyBFU1AzMl9Q U1JBTV9GSVhfTUVNVykNCiAgICAtIElmIGFueSBvZiB0aGUgYXJncyBhcmUgdm9sYXRpbGUsIG5v IHRvdWNoOg0KICAgICAgICBUaGUgbWVtdyByZXN1bHRpbmcgZnJvbSB0aGF0IHdpbGwgZml4IGV2 ZXJ5dGhpbmcuDQotLS0NCiBnY2MvY29uZmlnLmdjYyAgICAgICAgICAgICAgICAgICAgICB8ICAg NSArDQogZ2NjL2NvbmZpZy94dGVuc2EvdC1lc3AzMi1wc3JhbS1maXggfCAgMjIgKysNCiBnY2Mv Y29uZmlnL3h0ZW5zYS94dGVuc2Etb3B0cy5oICAgICB8ICAzNCArKysNCiBnY2MvY29uZmlnL3h0 ZW5zYS94dGVuc2EuY2MgICAgICAgICB8IDQ0NCArKysrKysrKysrKysrKysrKysrKysrKysrKysr DQogZ2NjL2NvbmZpZy94dGVuc2EveHRlbnNhLmggICAgICAgICAgfCAgIDEgKw0KIGdjYy9jb25m aWcveHRlbnNhL3h0ZW5zYS5tZCAgICAgICAgIHwgIDQ2ICsrLQ0KIGdjYy9jb25maWcveHRlbnNh L3h0ZW5zYS5vcHQgICAgICAgIHwgIDMxICsrDQogNyBmaWxlcyBjaGFuZ2VkLCA1ODAgaW5zZXJ0 aW9ucygrKSwgMyBkZWxldGlvbnMoLSkNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL2NvbmZpZy94 dGVuc2EvdC1lc3AzMi1wc3JhbS1maXgNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL2NvbmZpZy94 dGVuc2EveHRlbnNhLW9wdHMuaA0KDQpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy5nY2MgYi9nY2Mv Y29uZmlnLmdjYw0KaW5kZXggZTczY2I4NDhjMmQuLmE0MDdlODQwN2YwIDEwMDY0NA0KLS0tIGEv Z2NjL2NvbmZpZy5nY2MNCisrKyBiL2djYy9jb25maWcuZ2NjDQpAQCAtMzQ1Nyw2ICszNDU3LDEx IEBAIHhzdG9ybXkxNi0qLWVsZikNCiAJZXh0cmFfb3B0aW9ucz1zdG9ybXkxNi9zdG9ybXkxNi5v cHQNCiAJdG1ha2VfZmlsZT0ic3Rvcm15MTYvdC1zdG9ybXkxNiINCiAJOzsNCit4dGVuc2EqLWVz cDMyLWVsZiopDQorCXRtX2ZpbGU9IiR7dG1fZmlsZX0gZWxmb3MuaCBuZXdsaWItc3RkaW50Lmgg eHRlbnNhL2VsZi5oIg0KKwl0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGV9IHh0ZW5zYS90LWVzcDMy LXBzcmFtLWZpeCINCisJZXh0cmFfb3B0aW9ucz0iJHtleHRyYV9vcHRpb25zfSB4dGVuc2EvZWxm Lm9wdCINCisJOzsNCiB4dGVuc2EqLSotZWxmKikNCiAJdG1fZmlsZT0iJHt0bV9maWxlfSBlbGZv cy5oIG5ld2xpYi1zdGRpbnQuaCB4dGVuc2EvZWxmLmgiDQogCWV4dHJhX29wdGlvbnM9IiR7ZXh0 cmFfb3B0aW9uc30geHRlbnNhL2VsZi5vcHQiDQpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy94dGVu c2EvdC1lc3AzMi1wc3JhbS1maXggYi9nY2MvY29uZmlnL3h0ZW5zYS90LQ0KZXNwMzItcHNyYW0t Zml4DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAuLjc4ZmU1NGQ0ODUy DQotLS0gL2Rldi9udWxsDQorKysgYi9nY2MvY29uZmlnL3h0ZW5zYS90LWVzcDMyLXBzcmFtLWZp eA0KQEAgLTAsMCArMSwyMiBAQA0KKyMgQ29weXJpZ2h0IChDKSAyMDIyIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLg0KKyMNCisjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdDQy4NCisjDQor IyBHQ0MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQ0KKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkNCisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9wdGlvbikNCisjIGFueSBsYXRlciB2ZXJzaW9u Lg0KKyMNCisjIEdDQyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLA0KKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YNCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuDQorIw0KKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCisjIGFsb25nIHdpdGggR0NDOyBz ZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlDQorIyA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uDQorDQorJChvdXRfb2JqZWN0X2ZpbGUpOiBndC14dGVuc2EuaA0KKw0KK01V TFRJTElCX09QVElPTlMgPSBtZml4LWVzcDMyLXBzcmFtLWNhY2hlLWlzc3VlDQorTVVMVElMSUJf RElSTkFNRVMgPSBlc3AzMi1wc3JhbQ0KZGlmZiAtLWdpdCBhL2djYy9jb25maWcveHRlbnNhL3h0 ZW5zYS1vcHRzLmgNCmIvZ2NjL2NvbmZpZy94dGVuc2EveHRlbnNhLW9wdHMuaA0KbmV3IGZpbGUg bW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwLi43M2MyMDE1YTAxNg0KLS0tIC9kZXYvbnVs bA0KKysrIGIvZ2NjL2NvbmZpZy94dGVuc2EveHRlbnNhLW9wdHMuaA0KQEAgLTAsMCArMSwzNCBA QA0KKy8qIERlZmluaXRpb25zIG9mIG9wdGlvbiBoYW5kbGluZyBmb3IgVGVuc2lsaWNhJ3MgWHRl bnNhIHRhcmdldA0KbWFjaGluZS4NCisgICBDb3B5cmlnaHQgKEMpIDIwMjIgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuDQorICAgQ29udHJpYnV0ZWQgYnkgRXNwcmVzc2lmIDxqZXJvZW5A ZXNwcmVzc2lmLmNvbT4NCisNCitUaGlzIGZpbGUgaXMgcGFydCBvZiBHQ0MuDQorDQorR0NDIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQg dW5kZXINCit0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieSB0aGUgRnJlZQ0KK1NvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyDQordmVyc2lvbi4NCisNCitHQ0MgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhP VVQgQU5ZDQorV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBN RVJDSEFOVEFCSUxJVFkgb3INCitGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCitmb3IgbW9yZSBkZXRhaWxzLg0KKw0K K1lvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlDQorYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5v dCBzZWUNCis8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLw0KKw0KKw0KKw0KKyNp Zm5kZWYgWFRFTlNBX09QVFNfSA0KKyNkZWZpbmUgWFRFTlNBX09QVFNfSA0KKw0KK2VudW0gZXNw MzJfcHNyYW1fZml4X3R5cGUNCit7DQorICBFU1AzMl9QU1JBTV9GSVhfRFVQTERTVCwNCisgIEVT UDMyX1BTUkFNX0ZJWF9NRU1XLA0KKyAgRVNQMzJfUFNSQU1fRklYX05PUFMNCit9Ow0KKw0KKw0K KyNlbmRpZiAvKiBYVEVOU0FfT1BUU19IICovDQpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy94dGVu c2EveHRlbnNhLmNjIGIvZ2NjL2NvbmZpZy94dGVuc2EveHRlbnNhLmNjDQppbmRleCA4MjhjNzY0 MmI3Yy4uNjFlZjE0YjFjNTcgMTAwNjQ0DQotLS0gYS9nY2MvY29uZmlnL3h0ZW5zYS94dGVuc2Eu Y2MNCisrKyBiL2djYy9jb25maWcveHRlbnNhL3h0ZW5zYS5jYw0KQEAgLTU1LDYgKzU1LDggQEAg YWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUNCiAjaW5j bHVkZSAiZHVtcGZpbGUuaCINCiAjaW5jbHVkZSAiaHctZG9sb29wLmgiDQogI2luY2x1ZGUgInJ0 bC1pdGVyLmgiDQorI2luY2x1ZGUgInRyZWUtcGFzcy5oIg0KKyNpbmNsdWRlICJjb250ZXh0Lmgi DQogI2luY2x1ZGUgImluc24tYXR0ci5oIg0KIA0KIC8qIFRoaXMgZmlsZSBzaG91bGQgYmUgaW5j bHVkZWQgbGFzdC4gICovDQpAQCAtMjYzNiw2ICsyNjM4LDQzNSBAQCB4dGVuc2FfcmV0dXJuX2lu X21zYiAoY29uc3RfdHJlZSB2YWx0eXBlKQ0KIH0NCiANCiANCisjZGVmaW5lIFVTRUZVTF9JTlNO X1AoSU5TTikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANClwNCisg IChOT05ERUJVR19JTlNOX1AgKElOU04pICYmIEdFVF9DT0RFIChQQVRURVJOIChJTlNOKSkgIT0g VVNFICAgICAgICANClwNCisgICAmJiBHRVRfQ09ERSAoUEFUVEVSTiAoSU5TTikpICE9IENMT0JC RVIpDQorDQorLyogSWYgSU5TTiBpcyBhIGRlbGF5ZWQgYnJhbmNoIHNlcXVlbmNlLCByZXR1cm4g dGhlIGZpcnN0IGluc3RydWN0aW9uDQorICAgaW4gdGhlIHNlcXVlbmNlLCBvdGhlcndpc2UgcmV0 dXJuIElOU04gaXRzZWxmLiAgKi8NCisjZGVmaW5lIFNFUV9CRUdJTihJTlNOKSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANClwNCisgIChJTlNOX1AgKElOU04p ICYmIEdFVF9DT0RFIChQQVRURVJOIChJTlNOKSkgPT0gU0VRVUVOQ0UgICAgICAgICAgICANClwN CisgICAgICAgPyBhc19hPHJ0eF9pbnNuICo+IChYVkVDRVhQIChQQVRURVJOIChJTlNOKSwgMCwg MCkpICAgICAgICAgICANClwNCisgICAgICAgOiAoSU5TTikpDQorDQorLyogTGlrZXdpc2UgZm9y IHRoZSBsYXN0IGluc3RydWN0aW9uIGluIGEgZGVsYXllZCBicmFuY2ggc2VxdWVuY2UuICAqLw0K KyNkZWZpbmUgU0VRX0VORChJTlNOKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIA0KXA0KKyAgKElOU05fUCAoSU5TTikgJiYgR0VUX0NPREUgKFBBVFRFUk4g KElOU04pKSA9PSBTRVFVRU5DRSA/DQphc19hPHJ0eF9pbnNuICo+ICAgXA0KKyAgICAgIChYVkVD RVhQIChQQVRURVJOIChJTlNOKSwgMCwgWFZFQ0xFTiAoUEFUVEVSTiAoSU5TTiksIDApIC0gMSkp IDoNCihJTlNOKSkNCisNCisNCisvKiBFeGVjdXRlIHRoZSBmb2xsb3dpbmcgbG9vcCBib2R5IHdp dGggU1VCSU5TTiBzZXQgdG8gZWFjaA0KaW5zdHJ1Y3Rpb24NCisgICBiZXR3ZWVuIFNFUV9CRUdJ TiAoSU5TTikgYW5kIFNFUV9FTkQgKElOU04pIGluY2x1c2l2ZS4gICovDQorI2RlZmluZSBGT1Jf RUFDSF9TVUJJTlNOKFNVQklOU04sIElOU04pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg DQpcDQorICBmb3IgKChTVUJJTlNOKSA9IFNFUV9CRUdJTiAoSU5TTik7IChTVUJJTlNOKSAhPSBO RVhUX0lOU04gKFNFUV9FTkQNCihJTlNOKSk7ICBcDQorICAgICAgIChTVUJJTlNOKSA9IE5FWFRf SU5TTiAoU1VCSU5TTikpDQorDQorDQorLyogWHRlbnNhIGRvZXMgYSBsb2FkL3N0b3JlIGludmVy c2lvbiB3aGVuIGEgbG9hZCBhbmQgYSBzdG9yZSB0byB0aGUNCnNhbWUNCisgICBhZGRyZXNzIGlz IGZvdW5kIGluIHRoZSA1IGFmZmVjdGVkIHN0YWdlcyBvZiB0aGUgcGlwZWxpbmU6IHdpdGggYQ0K bG9hZCBkb25lDQorICAgX2FmdGVyXyB0aGUgc3RvcmUgaW4gY29kZSwgdGhlIFh0ZW5zYSB3aWxs IG1vdmUgaXQgX2JlZm9yZV8gdGhlDQpzdG9yZSBpbg0KKyAgIGV4ZWN1dGlvbi4NCisgICBVbmZv cnR1bmF0ZWx5LCB0aGUgRVNQMzIgUFNSQU0gY2FjaGUgbWVzc2VzIHVwIGhhbmRsaW5nIHRoZXNl DQorICAgd2hlbiBhbiBpbnRlcnJ1cHQgaGFwcGVucyBkdXJpbmcgdGhlc2UuIFRoaXMgcmVvcmcg c3RlcCBpbnNlcnRzDQpOT1BzDQorICAgYmV0d2VlbiBsb2FkcyBhbmQgc3RvcmVzIHNvIHRoaXMg bmV2ZXIgb2NjdXJzLg0KKw0KKyAgIFRoZSBoYW5kbGluZyBpc3N1ZSBhbHNvIHNob3dzIHVwIHdo ZW4gZG9pbmcgYSBzdG9yZSB0byBhbiA4IG9yIDE2LQ0KYml0DQorICAgbWVtb3J5IGxvY2F0aW9u IGZvbGxvd2VkIGJ5IGEgbGFyZ2VyICgxNiBvciAzMi1iaXQpIHNpemVkIGxvYWQgZnJvbQ0KdGhh dA0KKyAgIGxvY2F0aW9uIHdpdGhpbiB0aGUgdGltZSBpdCB0YWtlcyB0byBncmFiIGEgY2FjaGVs aW5lIGZyb20gZXh0ZXJuYWwNClJBTQ0KKyAgICh3aGljaCBpcyBhdCBsZWFzdCA4MCBjeWNsZXMp LiBUaGUgY2FjaGUgd2lsbCBjb25mdXNlIHRoZSBsb2FkIGFuZA0Kc3RvcmUsDQorICAgcmVzdWx0 aW5nIGluIHRoZSBieXRlcyBub3Qgc2V0IGJ5IHRoZSBzdG9yZSB0byBiZSByZWFkIGFzIGdhcmJh Z2UuDQpUbyBmaXgNCisgICB0aGlzLCB3ZSBpbnNlcnQgYW1lbW9yeSBiYXJyaWVyIGFmdGVyIGVh Y2ggOC8xNi1iaXQgc3RvcmUgdGhhdA0KaXNuJ3QNCisgICBmb2xsb3dlZCBieSBhbm90aGVyIHN0 b3JlLiAgKi8NCisNCisvKiBBZmZlY3RlZCBwaWVjZSBvZiBwaXBlbGluZSBpcyA1IGVudHJpZXMg bG9uZzsNCisgICBUaGUgbG9hZC9zdG9yZSBpdHNlbGYgZmlsbHMgb25lLiAgKi8NCisjZGVmaW5l IExPQURfU1RPUkVfT0ZGIDQNCisNCitzdGF0aWMgaW50IGluc25zX3NpbmNlX3N0b3JlID0gMDsN CitzdGF0aWMgcnR4X2luc24gKnN0b3JlX2luc24gPSBOVUxMOw0KK3N0YXRpYyBydHhfaW5zbiAq bGFzdF9oaXFpX3N0b3JlID0gTlVMTDsNCisNCitzdGF0aWMgdm9pZA0KK2hhbmRsZV9maXhfcmVv cmdfaW5zbiAocnR4X2luc24gKmluc24pDQorew0KKyAgZW51bSBhdHRyX3R5cGUgYXR0cl90eXBl ID0gZ2V0X2F0dHJfdHlwZSAoaW5zbik7DQorICBpZiAoYXR0cl90eXBlID09IFRZUEVfU1RPUkUg fHwgYXR0cl90eXBlID09IFRZUEVfRlNUT1JFKQ0KKyAgICB7DQorICAgICAgcnR4IHggPSBYRVhQ IChQQVRURVJOIChpbnNuKSwgMCk7DQorICAgICAgLyogU3RvcmUgICovDQorICAgICAgaW5zbnNf c2luY2Vfc3RvcmUgPSAwOw0KKyAgICAgIHN0b3JlX2luc24gPSBpbnNuOw0KKyAgICAgIGlmIChh dHRyX3R5cGUgPT0gVFlQRV9TVE9SRQ0KKyAgICAgICAgICAmJiAoR0VUX01PREUgKHgpID09IEhJ bW9kZSB8fCBHRVRfTU9ERSAoeCkgPT0gUUltb2RlKSkNCisgICAgICAgIHsNCisgICAgICAgICAg LyogVGhpcyBpcyBhbiA4LzE2LWJpdCBzdG9yZSwgcmVjb3JkIGl0LiAgKi8NCisgICAgICAgICAg bGFzdF9oaXFpX3N0b3JlID0gaW5zbjsNCisgICAgICAgIH0NCisgICAgICBlbHNlDQorICAgICAg ICB7DQorICAgICAgICAgIC8qIDMyLWJpdCBzdG9yZS4gVGhpcyBzdG9yZSB1bmRvZXMgdGhlIHBv c3NpYmlsaXR5IG9mDQpiYWRuZXNzIGluDQorICAgICAgICAgICAgIGVhcmxpZXIgOC8xNi1iaXQg c3RvcmVzIGJlY2F1c2UgaXQgZm9yY2VzIHRob3NlIHN0b3JlcyB0bw0KKyAgICAgICAgICAgICBm aW5pc2guICAqLw0KKyAgICAgICAgICBsYXN0X2hpcWlfc3RvcmUgPSBOVUxMOw0KKyAgICAgICAg fQ0KKyAgICB9DQorICBlbHNlIGlmIChhdHRyX3R5cGUgPT0gVFlQRV9MT0FEIHx8IGF0dHJfdHlw ZSA9PSBUWVBFX0ZMT0FEKQ0KKyAgICB7DQorICAgICAgLyogTG9hZCAgKi8NCisgICAgICBpZiAo c3RvcmVfaW5zbikNCisgICAgICAgIHsNCisgICAgICAgICAgd2hpbGUgKGluc25zX3NpbmNlX3N0 b3JlKysgPCBMT0FEX1NUT1JFX09GRikNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICBl bWl0X2luc25fYmVmb3JlIChnZW5fbm9wICgpLCBpbnNuKTsNCisgICAgICAgICAgICB9DQorICAg ICAgICB9DQorICAgIH0NCisgIGVsc2UgaWYgKGF0dHJfdHlwZSA9PSBUWVBFX0pVTVAgfHwgYXR0 cl90eXBlID09IFRZUEVfQ0FMTCkNCisgICAgew0KKyAgICAgIGVudW0gYXR0cl9jb25kam1wIGF0 dHJfY29uZGptcCA9IGdldF9hdHRyX2NvbmRqbXAgKGluc24pOw0KKyAgICAgIGlmIChhdHRyX2Nv bmRqbXAgPT0gQ09OREpNUF9VTkNPTkQpDQorICAgICAgICB7DQorICAgICAgICAgIC8qIFBpcGVs aW5lIGdldHMgY2xlYXJlZDsgYW55IGxvYWQgaXMgaW5jb25zZXF1ZW50aWFsLiAgKi8NCisgICAg ICAgICAgc3RvcmVfaW5zbiA9IE5VTEw7DQorICAgICAgICB9DQorICAgIH0NCisgIGVsc2UNCisg ICAgew0KKyAgICAgIGluc25zX3NpbmNlX3N0b3JlKys7DQorICAgIH0NCisgIGlmIChhdHRyX3R5 cGUgPT0gVFlQRV9MT0FEIHx8IGF0dHJfdHlwZSA9PSBUWVBFX0ZMT0FEDQorICAgICAgfHwgYXR0 cl90eXBlID09IFRZUEVfSlVNUCB8fCBhdHRyX3R5cGUgPT0gVFlQRV9DQUxMKQ0KKyAgICB7DQor ICAgICAgaWYgKGxhc3RfaGlxaV9zdG9yZSkNCisgICAgICAgIHsNCisgICAgICAgICAgLyogTmVl ZCB0byBtZW1vcnkgYmFycmllciB0aGUgczhpL3MxNmkgaW5zdHJ1Y3Rpb24uICAqLw0KKyAgICAg ICAgICBlbWl0X2luc25fYWZ0ZXIgKGdlbl9tZW1vcnlfYmFycmllciAoKSwgbGFzdF9oaXFpX3N0 b3JlKTsNCisgICAgICAgICAgbGFzdF9oaXFpX3N0b3JlID0gTlVMTDsNCisgICAgICAgIH0NCisg ICAgfQ0KK30NCisNCitzdGF0aWMgdm9pZA0KK3h0ZW5zYV9wc3JhbV9jYWNoZV9maXhfbm9wX3Jl b3JnICgpDQorew0KKyAgcnR4X2luc24gKmluc24sICpzdWJpbnNuLCAqbmV4dF9pbnNuOw0KKyAg Zm9yIChpbnNuID0gZ2V0X2luc25zICgpOyBpbnNuICE9IDA7IGluc24gPSBuZXh0X2luc24pDQor ICAgIHsNCisgICAgICBuZXh0X2luc24gPSBORVhUX0lOU04gKGluc24pOw0KKyAgICAgIGludCBs ZW5ndGggPSBnZXRfYXR0cl9sZW5ndGggKGluc24pOw0KKw0KKyAgICAgIGlmIChVU0VGVUxfSU5T Tl9QIChpbnNuKSAmJiBsZW5ndGggPiAwKQ0KKyAgICAgICAgew0KKyAgICAgICAgICBGT1JfRUFD SF9TVUJJTlNOIChzdWJpbnNuLCBpbnNuKQ0KKyAgICAgICAgICB7DQorICAgICAgICAgICAgaGFu ZGxlX2ZpeF9yZW9yZ19pbnNuIChzdWJpbnNuKTsNCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0K KyAgICB9DQorfQ0KKw0KKy8qIEFsdGVybmF0aXZlIGZpeCB0byB4dGVuc2FfcHNyYW1fY2FjaGVf Zml4X3Jlb3JnLiBUcmllcyB0byBzb2x2ZSB0aGUNCjMyLWJpdA0KKyAgIGxvYWQvc3RvcmUgaW52 ZXJzaW9uIGJ5IGV4cGxpY2l0bHkgaW5zZXJ0aW5nIGEgbWVtb3J5IGJhcnJpZXINCmluc3RlYWQg b2YNCisgICBub3BzLg0KKyAgIFNsb3dlciB0aGFuIG5vcHMsIGJ1dCBmYXN0ZXIgdGhhbiBqdXN0 IGFkZGluZyBtZW13cyBldmVyeXdoZXJlLiAgKi8NCisNCitzdGF0aWMgdm9pZA0KK2hhbmRsZV9m aXhfcmVvcmdfbWVtdyAocnR4X2luc24gKmluc24pDQorew0KKyAgZW51bSBhdHRyX3R5cGUgYXR0 cl90eXBlID0gZ2V0X2F0dHJfdHlwZSAoaW5zbik7DQorICBydHggeCA9IFhFWFAgKFBBVFRFUk4g KGluc24pLCAwKTsNCisgIGlmIChhdHRyX3R5cGUgPT0gVFlQRV9TVE9SRSB8fCBhdHRyX3R5cGUg PT0gVFlQRV9GU1RPUkUpDQorICAgIHsNCisgICAgICAvKiBTdG9yZSAgKi8NCisgICAgICBpbnNu c19zaW5jZV9zdG9yZSA9IDA7DQorICAgICAgc3RvcmVfaW5zbiA9IGluc247DQorICAgICAgaWYg KGF0dHJfdHlwZSA9PSBUWVBFX1NUT1JFDQorICAgICAgICAgICYmIChHRVRfTU9ERSAoeCkgPT0g SEltb2RlIHx8IEdFVF9NT0RFICh4KSA9PSBRSW1vZGUpKQ0KKyAgICAgICAgew0KKyAgICAgICAg ICAvKiBUaGlzIGlzIGFuIDgvMTYtYml0IHN0b3JlLCByZWNvcmQgaXQgaWYgaXQncyBub3Qgdm9s YXRpbGUNCisgICAgICAgICAgICAgYWxyZWFkeS4gICovDQorICAgICAgICAgIGlmICghTUVNX1ZP TEFUSUxFX1AgKHgpKQ0KKyAgICAgICAgICAgIGxhc3RfaGlxaV9zdG9yZSA9IGluc247DQorICAg ICAgICB9DQorICAgIH0NCisgIGVsc2UgaWYgKGF0dHJfdHlwZSA9PSBUWVBFX0xPQUQgfHwgYXR0 cl90eXBlID09IFRZUEVfRkxPQUQpDQorICAgIHsNCisgICAgICAvKiBMb2FkICAqLw0KKyAgICAg IGlmIChNRU1fUCAoeCkgJiYgKCFNRU1fVk9MQVRJTEVfUCAoeCkpKQ0KKyAgICAgICAgew0KKyAg ICAgICAgICBpZiAoc3RvcmVfaW5zbikNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICBl bWl0X2luc25fYmVmb3JlIChnZW5fbWVtb3J5X2JhcnJpZXIgKCksIGluc24pOw0KKyAgICAgICAg ICAgICAgc3RvcmVfaW5zbiA9IE5VTEw7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAg ICB9DQorICBlbHNlIGlmIChhdHRyX3R5cGUgPT0gVFlQRV9KVU1QIHx8IGF0dHJfdHlwZSA9PSBU WVBFX0NBTEwpDQorICAgIHsNCisgICAgICBlbnVtIGF0dHJfY29uZGptcCBhdHRyX2NvbmRqbXAg PSBnZXRfYXR0cl9jb25kam1wIChpbnNuKTsNCisgICAgICBpZiAoYXR0cl9jb25kam1wID09IENP TkRKTVBfVU5DT05EKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAvKiBqdW1wIG9yIHJldHVybg0K KyAgICAgICAgICAgICBVbmNvbmRpdGlvbmFsIGp1bXBzIHNlZW0gdG8gbm90IGNsZWFyIHRoZSBw aXBlbGluZSwgYW5kDQp0aGVyZSBtYXkNCisgICAgICAgICAgICAgYmUgYSBsb2FkIGFmdGVyLiBO ZWVkIHRvIG1lbXcgaWYgZWFybGllciBjb2RlIGhhZCBhDQpzdG9yZS4gICovDQorICAgICAgICAg IGlmIChzdG9yZV9pbnNuKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgIGVtaXRfaW5z bl9iZWZvcmUgKGdlbl9tZW1vcnlfYmFycmllciAoKSwgaW5zbik7DQorICAgICAgICAgICAgICBz dG9yZV9pbnNuID0gTlVMTDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisg IGVsc2UNCisgICAgew0KKyAgICAgIGluc25zX3NpbmNlX3N0b3JlKys7DQorICAgIH0NCisgIGlm IChhdHRyX3R5cGUgPT0gVFlQRV9MT0FEIHx8IGF0dHJfdHlwZSA9PSBUWVBFX0ZMT0FEDQorICAg ICAgfHwgYXR0cl90eXBlID09IFRZUEVfSlVNUCB8fCBhdHRyX3R5cGUgPT0gVFlQRV9DQUxMKQ0K KyAgICB7DQorICAgICAgaWYgKGxhc3RfaGlxaV9zdG9yZSkNCisgICAgICAgIHsNCisgICAgICAg ICAgLyogTmVlZCB0byBtZW1vcnkgYmFycmllciB0aGUgczhpL3MxNmkgaW5zdHJ1Y3Rpb24uICAq Lw0KKyAgICAgICAgICBlbWl0X2luc25fYWZ0ZXIgKGdlbl9tZW1vcnlfYmFycmllciAoKSwgbGFz dF9oaXFpX3N0b3JlKTsNCisgICAgICAgICAgbGFzdF9oaXFpX3N0b3JlID0gTlVMTDsNCisgICAg ICAgIH0NCisgICAgfQ0KK30NCisNCitzdGF0aWMgdm9pZA0KK3h0ZW5zYV9wc3JhbV9jYWNoZV9m aXhfbWVtd19yZW9yZyAoKQ0KK3sNCisgIHJ0eF9pbnNuICppbnNuLCAqc3ViaW5zbiwgKm5leHRf aW5zbjsNCisgIGZvciAoaW5zbiA9IGdldF9pbnNucyAoKTsgaW5zbiAhPSAwOyBpbnNuID0gbmV4 dF9pbnNuKQ0KKyAgICB7DQorICAgICAgbmV4dF9pbnNuID0gTkVYVF9JTlNOIChpbnNuKTsNCisg ICAgICBpbnQgbGVuZ3RoID0gZ2V0X2F0dHJfbGVuZ3RoIChpbnNuKTsNCisNCisgICAgICBpZiAo VVNFRlVMX0lOU05fUCAoaW5zbikgJiYgbGVuZ3RoID4gMCkNCisgICAgICAgIHsNCisgICAgICAg ICAgRk9SX0VBQ0hfU1VCSU5TTiAoc3ViaW5zbiwgaW5zbikNCisgICAgICAgICAgew0KKyAgICAg ICAgICAgIGhhbmRsZV9maXhfcmVvcmdfbWVtdyAoc3ViaW5zbik7DQorICAgICAgICAgIH0NCisg ICAgICAgIH0NCisgICAgfQ0KK30NCisNCisvKiBBbHRlcm5hdGl2ZSBmaXggdG8geHRlbnNhX3Bz cmFtX2NhY2hlX2ZpeF9yZW9yZy4gVHJpZXMgdG8gc29sdmUgdGhlDQozMi1iaXQNCisgICBsb2Fk L3N0b3JlIGludmVyc2lvbiBieSBleHBsaWNpdGx5IGluc2VydGluZyBhIGxvYWQgYWZ0ZXIgZXZl cnkNCnN0b3JlLg0KKw0KKyAgRm9yIG5vdywgdGhlIGxvZ2ljIGlzOg0KKyAgLSBJbnN0cnVjdGlv biBpcyBzMzJpOg0KKyAgICAgIEluc2VydCBsMzJpIGZyb20gdGhhdCBhZGRyZXNzIHRvIHRoZSBz b3VyY2UgcmVnaXN0ZXIgaW1tZWRpYXRlbHkNCmFmdGVyLA0KKyAgICAgIHBsdXMgYSBkdXBsaWNh dGVkIHMzMmkgYWZ0ZXIgdGhhdC4NCisgIC0gSW5zdHJ1Y3Rpb24gaXMgczhpL3MxNmk6DQorICAg ICAgTm90ZSBhbmQgaW5zZXJ0IGEgbWVtdyBiZWZvcmUgYSBsb2FkLg0KKyAgICAgIChUaGUgc2Ft ZSBhcyB4dGVuc2FfcHNyYW1fY2FjaGVfZml4X3Jlb3JnKQ0KKyAgLSBJZiBhbnkgb2YgdGhlIGFy Z3MgYXJlIHZvbGF0aWxlLCBubyB0b3VjaDoNCisgICAgICBUaGUgbWVtdyByZXN1bHRpbmcgZnJv bSB0aGF0IHdpbGwgZml4IGV2ZXJ5dGhpbmcuDQorDQorICBOb3RlOiBkZWJ1Z19ydHgoaW5zbikg Y2FuIGR1bXAgYW4gaW5zbiBpbiBsaXNwLWxpa2UgZm9ybWF0Lg0KKyovDQorDQorc3RhdGljIHZv aWQNCitoYW5kbGVfZml4X2R1cGxkc3Rfc3RvcmUgKHJ0eF9pbnNuICppbnNuLCBlbnVtIGF0dHJf dHlwZSBhdHRyX3R5cGUpDQorew0KKyAgcnR4IHggPSBYRVhQIChQQVRURVJOIChpbnNuKSwgMCk7 DQorICAvKiBTdG9yZSAgKi8NCisgIGlmIChhdHRyX3R5cGUgPT0gVFlQRV9TVE9SRQ0KKyAgICAg ICYmIChHRVRfTU9ERSAoeCkgPT0gSEltb2RlIHx8IEdFVF9NT0RFICh4KSA9PSBRSW1vZGUpKQ0K KyAgICB7DQorICAgICAgLyogVGhpcyBpcyBhbiA4LzE2LWJpdCBzdG9yZSwgcmVjb3JkIGl0IGlm IGl0J3Mgbm90IHZvbGF0aWxlDQphbHJlYWR5LiAgKi8NCisgICAgICBpZiAoIU1FTV9WT0xBVElM RV9QICh4KSkNCisgICAgICAgIGxhc3RfaGlxaV9zdG9yZSA9IGluc247DQorICAgIH0NCisgIGVs c2UNCisgICAgew0KKyAgICAgIC8qIDMyLWJpdCBzdG9yZS4NCisgICAgICAgICBBZGQgYSBsb2Fk LWFmdGVyLXN0b3JlIHRvIGZpeCBwc3JhbSBpc3N1ZXMgKmlmKiB2YXIgaXMgbm90DQp2b2xhdGls ZSAqLw0KKyAgICAgIGlmIChNRU1fUCAoeCkgJiYgKCFNRU1fVk9MQVRJTEVfUCAoeCkpKQ0KKyAg ICAgICAgew0KKyAgICAgICAgICBydHggeSA9IFhFWFAgKFBBVFRFUk4gKGluc24pLCAxKTsNCisg ICAgICAgICAgaWYgKFJFR19QICh5KSAmJiBYSU5UICh5LCAwKSA9PSAxKQ0KKyAgICAgICAgICAg IHsNCisgICAgICAgICAgICAgIC8qIFN0b3JlIFNQIGluIG1lbT8gQ2FuJ3QgbW92c2kgdGhhdCBi YWNrLg0KKyAgICAgICAgICAgICAgICAgSW5zZXJ0IG1lbW9yeSBiYXJyaWVyIGluc3RlYWQuICAq Lw0KKyAgICAgICAgICAgICAgZW1pdF9pbnNuX2FmdGVyIChnZW5fbWVtb3J5X2JhcnJpZXIgKCks IGluc24pOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgZWxzZQ0KKyAgICAgICAgICAgIHsN CisgICAgICAgICAgICAgIC8qIEFkZCB0aGUgbG9hZC9zdG9yZS4NCisgICAgICAgICAgICAgICAg IE5vdGU6IHRoZSBpbnN0cnVjdGlvbnMgd2lsbCBiZSBhZGRlZCBpbiB0aGUgT1BQT1NJVEUNCm9y ZGVyIGFzDQorICAgICAgICAgICAgICAgICB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSBhZGRlZCBiZXR3 ZWVuIHRoZSBzMzJpIGFuZCB0aGUNCm5leHQNCisgICAgICAgICAgICAgICAgIGluc3RydWN0aW9u Og0KKyAgICAgICAgICAgICAgICAgMToNCisgICAgICAgICAgICAgICAgICAgczMyaShpbnNuKSwg czMyaTsNCisgICAgICAgICAgICAgICAgIDI6DQorICAgICAgICAgICAgICAgICAgIHMzMmkoaW5z biksIGwzMmksIHMzMmk7ICAqLw0KKyAgICAgICAgICAgICAgLyogU3RvcmUgYWdhaW4gICovDQor ICAgICAgICAgICAgICBlbWl0X2luc25fYWZ0ZXIgKGdlbl9tb3ZzaSAoeCwgeSksIGluc24pOw0K KyAgICAgICAgICAgICAgLyogTG9hZCAgKi8NCisgICAgICAgICAgICAgIGVtaXRfaW5zbl9hZnRl ciAoZ2VuX21vdnNpICh4LCB5KSwgaW5zbik7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0K KyAgICB9DQorfQ0KKw0KK3N0YXRpYyB2b2lkDQoraGFuZGxlX2ZpeF9kdXBsZHN0X3Jlb3JnIChy dHhfaW5zbiAqaW5zbikNCit7DQorICBlbnVtIGF0dHJfdHlwZSBhdHRyX3R5cGUgPSBnZXRfYXR0 cl90eXBlIChpbnNuKTsNCisgIGlmIChhdHRyX3R5cGUgPT0gVFlQRV9TVE9SRSB8fCBhdHRyX3R5 cGUgPT0gVFlQRV9GU1RPUkUpDQorICAgIHsNCisgICAgICBoYW5kbGVfZml4X2R1cGxkc3Rfc3Rv cmUgKGluc24sIGF0dHJfdHlwZSk7DQorICAgIH0NCisNCisgIGlmIChhdHRyX3R5cGUgPT0gVFlQ RV9MT0FEIHx8IGF0dHJfdHlwZSA9PSBUWVBFX0ZMT0FEDQorICAgICAgfHwgYXR0cl90eXBlID09 IFRZUEVfSlVNUCB8fCBhdHRyX3R5cGUgPT0gVFlQRV9DQUxMKQ0KKyAgICB7DQorICAgICAgaWYg KGxhc3RfaGlxaV9zdG9yZSkNCisgICAgICAgIHsNCisgICAgICAgICAgLyogTmVlZCB0byBtZW1v cnkgYmFycmllciB0aGUgczhpL3MxNmkgaW5zdHJ1Y3Rpb24uICAqLw0KKyAgICAgICAgICBlbWl0 X2luc25fYWZ0ZXIgKGdlbl9tZW1vcnlfYmFycmllciAoKSwgbGFzdF9oaXFpX3N0b3JlKTsNCisg ICAgICAgICAgbGFzdF9oaXFpX3N0b3JlID0gTlVMTDsNCisgICAgICAgIH0NCisgICAgfQ0KK30N CisNCitzdGF0aWMgdm9pZA0KK3h0ZW5zYV9wc3JhbV9jYWNoZV9maXhfZHVwbGRzdF9yZW9yZyAo KQ0KK3sNCisgIHJ0eF9pbnNuICppbnNuLCAqc3ViaW5zbiwgKm5leHRfaW5zbjsNCisgIGxhc3Rf aGlxaV9zdG9yZSA9IE5VTEw7DQorICBmb3IgKGluc24gPSBnZXRfaW5zbnMgKCk7IGluc24gIT0g MDsgaW5zbiA9IG5leHRfaW5zbikNCisgICAgew0KKyAgICAgIG5leHRfaW5zbiA9IE5FWFRfSU5T TiAoaW5zbik7DQorICAgICAgaW50IGxlbmd0aCA9IGdldF9hdHRyX2xlbmd0aCAoaW5zbik7DQor DQorICAgICAgaWYgKFVTRUZVTF9JTlNOX1AgKGluc24pICYmIGxlbmd0aCA+IDApDQorICAgICAg ICB7DQorICAgICAgICAgIEZPUl9FQUNIX1NVQklOU04gKHN1Ymluc24sIGluc24pDQorICAgICAg ICAgIHsNCisgICAgICAgICAgICBoYW5kbGVfZml4X2R1cGxkc3RfcmVvcmcgKGluc24pOw0KKyAg ICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCit9DQorDQorLyogRW1pdHMgYSBtZW13IGJl Zm9yZSBldmVyeSBsb2FkL3N0b3JlIGluc3RydWN0aW9uLg0KKyAgIEhhcmQtaGFuZGVkIGFwcHJv YWNoIHRvIGdldCByaWQgb2YgYW55IHBpcGVsaW5lL21lbW9yeSBpc3N1ZXMuLi4gDQoqLw0KK3N0 YXRpYyB2b2lkDQoreHRlbnNhX2luc2VydF9tZW13X3Jlb3JnICgpDQorew0KKyAgcnR4X2luc24g Kmluc24sICpzdWJpbnNuLCAqbmV4dF9pbnNuOw0KKyAgaW50IGhhZF9tZW13ID0gMDsNCisgIGZv ciAoaW5zbiA9IGdldF9pbnNucyAoKTsgaW5zbiAhPSAwOyBpbnNuID0gbmV4dF9pbnNuKQ0KKyAg ICB7DQorICAgICAgbmV4dF9pbnNuID0gTkVYVF9JTlNOIChpbnNuKTsNCisgICAgICBpbnQgbGVu Z3RoID0gZ2V0X2F0dHJfbGVuZ3RoIChpbnNuKTsNCisNCisgICAgICBpZiAoVVNFRlVMX0lOU05f UCAoaW5zbikgJiYgbGVuZ3RoID4gMCkNCisgICAgICAgIHsNCisgICAgICAgICAgRk9SX0VBQ0hf U1VCSU5TTiAoc3ViaW5zbiwgaW5zbikNCisgICAgICAgICAgew0KKyAgICAgICAgICAgIHJ0eCB4 ID0gWEVYUCAoUEFUVEVSTiAoc3ViaW5zbiksIDApOw0KKyAgICAgICAgICAgIGVudW0gYXR0cl90 eXBlIGF0dHJfdHlwZSA9IGdldF9hdHRyX3R5cGUgKHN1Ymluc24pOw0KKyAgICAgICAgICAgIGlm IChhdHRyX3R5cGUgPT0gVFlQRV9TVE9SRSkNCisgICAgICAgICAgICAgIHsNCisgICAgICAgICAg ICAgICAgaWYgKE1FTV9QICh4KSAmJiAoIU1FTV9WT0xBVElMRV9QICh4KSkpDQorICAgICAgICAg ICAgICAgICAgew0KKyAgICAgICAgICAgICAgICAgICAgZW1pdF9pbnNuX2FmdGVyIChnZW5fbWVt b3J5X2JhcnJpZXIgKCksIHN1Ymluc24pOw0KKyAgICAgICAgICAgICAgICAgIH0NCisgICAgICAg ICAgICAgICAgaGFkX21lbXcgPSAxOw0KKyAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGVs c2UgaWYgKGF0dHJfdHlwZSA9PSBUWVBFX0xPQUQpDQorICAgICAgICAgICAgICB7DQorICAgICAg ICAgICAgICAgIGlmIChNRU1fUCAoeCkgJiYgKCFNRU1fVk9MQVRJTEVfUCAoeCkpICYmICFoYWRf bWVtdykNCisgICAgICAgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgICAgICBlbWl0X2lu c25fYmVmb3JlIChnZW5fbWVtb3J5X2JhcnJpZXIgKCksIHN1Ymluc24pOw0KKyAgICAgICAgICAg ICAgICAgIH0NCisgICAgICAgICAgICAgICAgaGFkX21lbXcgPSAwOw0KKyAgICAgICAgICAgICAg fQ0KKyAgICAgICAgICAgIGVsc2UNCisgICAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAg aGFkX21lbXcgPSAwOw0KKyAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9 DQorICAgIH0NCit9DQorDQorc3RhdGljIHVuc2lnbmVkIGludA0KK3h0ZW5zYV9tYWNoaW5lX3Jl b3JnICh2b2lkKQ0KK3sNCisgIGlmIChUQVJHRVRfRVNQMzJfQUxXQVlTX01FTUJBUlJJRVIpDQor ICAgIHsNCisgICAgICB4dGVuc2FfaW5zZXJ0X21lbXdfcmVvcmcgKCk7DQorICAgIH0NCisgIGlm IChUQVJHRVRfRVNQMzJfUFNSQU1fRklYX0VOQSkNCisgICAgew0KKyAgICAgIGlmIChlc3AzMl9w c3JhbV9maXhfc3RyYXQgPT0gRVNQMzJfUFNSQU1fRklYX0RVUExEU1QpDQorICAgICAgICB7DQor ICAgICAgICAgIHh0ZW5zYV9wc3JhbV9jYWNoZV9maXhfZHVwbGRzdF9yZW9yZyAoKTsNCisgICAg ICAgIH0NCisgICAgICBlbHNlIGlmIChlc3AzMl9wc3JhbV9maXhfc3RyYXQgPT0gRVNQMzJfUFNS QU1fRklYX01FTVcpDQorICAgICAgICB7DQorICAgICAgICAgIHh0ZW5zYV9wc3JhbV9jYWNoZV9m aXhfbWVtd19yZW9yZyAoKTsNCisgICAgICAgIH0NCisgICAgICBlbHNlIGlmIChlc3AzMl9wc3Jh bV9maXhfc3RyYXQgPT0gRVNQMzJfUFNSQU1fRklYX05PUFMpDQorICAgICAgICB7DQorICAgICAg ICAgIHh0ZW5zYV9wc3JhbV9jYWNoZV9maXhfbm9wX3Jlb3JnICgpOw0KKyAgICAgICAgfQ0KKyAg ICAgIGVsc2UNCisgICAgICAgIHsNCisgICAgICAgICAgLyogZGVmYXVsdCB0byBtZW13IChub3Rl OiA1LjIueCBkZWZhdWx0ZWQgdG8gbm9wcykgICovDQorICAgICAgICAgIHh0ZW5zYV9wc3JhbV9j YWNoZV9maXhfbWVtd19yZW9yZyAoKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgcmV0dXJuIDA7 DQorfQ0KKw0KK25hbWVzcGFjZQ0KK3sNCisNCitjb25zdCBwYXNzX2RhdGEgcGFzc19kYXRhX3h0 ZW5zYV9wc3JhbV9ub3BzID0NCit7DQorICBSVExfUEFTUywgICAgICAgICAgIC8qIHR5cGUgKi8N CisgICJ4dGVuc2EtcHNyYW0tYWRqIiwgLyogbmFtZSAqLw0KKyAgT1BUR1JPVVBfTk9ORSwgICAg ICAvKiBvcHRpbmZvX2ZsYWdzICovDQorICBUVl9NQUNIX0RFUCwgICAgICAgIC8qIHR2X2lkICov DQorICAwLCAgICAgICAgICAgICAgICAgIC8qIHByb3BlcnRpZXNfcmVxdWlyZWQgKi8NCisgIDAs ICAgICAgICAgICAgICAgICAgLyogcHJvcGVydGllc19wcm92aWRlZCAqLw0KKyAgMCwgICAgICAg ICAgICAgICAgICAvKiBwcm9wZXJ0aWVzX2Rlc3Ryb3llZCAqLw0KKyAgMCwgICAgICAgICAgICAg ICAgICAvKiB0b2RvX2ZsYWdzX3N0YXJ0ICovDQorICAwLCAgICAgICAgICAgICAgICAgIC8qIHRv ZG9fZmxhZ3NfZmluaXNoICovDQorfTsNCisNCitjbGFzcyBwYXNzX3h0ZW5zYV9wc3JhbV9ub3Bz IDogcHVibGljIHJ0bF9vcHRfcGFzcw0KK3sNCitwdWJsaWM6DQorICBwYXNzX3h0ZW5zYV9wc3Jh bV9ub3BzIChnY2M6OmNvbnRleHQgKmN0eHQpDQorICAgIDogcnRsX29wdF9wYXNzIChwYXNzX2Rh dGFfeHRlbnNhX3BzcmFtX25vcHMsIGN0eHQpDQorICB7DQorICB9DQorDQorICAvKiBvcHRfcGFz cyBtZXRob2RzOiAqLw0KKyAgdmlydHVhbCB1bnNpZ25lZCBpbnQNCisgIGV4ZWN1dGUgKGZ1bmN0 aW9uICopDQorICB7DQorICAgIHJldHVybiB4dGVuc2FfbWFjaGluZV9yZW9yZyAoKTsNCisgIH0N CisNCit9OyAvKiBjbGFzcyBwYXNzX21pcHNfbWFjaGluZV9yZW9yZzIgICovDQorDQorfSAvKiBh bm9uIG5hbWVzcGFjZSAgKi8NCisNCitydGxfb3B0X3Bhc3MgKg0KK21ha2VfcGFzc194dGVuc2Ff cHNyYW1fbm9wcyAoZ2NjOjpjb250ZXh0ICpjdHh0KQ0KK3sNCisgIHJldHVybiBuZXcgcGFzc194 dGVuc2FfcHNyYW1fbm9wcyAoY3R4dCk7DQorfQ0KKw0KKw0KIHN0YXRpYyB2b2lkDQogeHRlbnNh X29wdGlvbl9vdmVycmlkZSAodm9pZCkNCiB7DQpAQCAtMjcwNyw2ICszMTM4LDE5IEBAIHh0ZW5z YV9vcHRpb25fb3ZlcnJpZGUgKHZvaWQpDQogICBpZiAoZmxhZ19waWMgJiYgIWZsYWdfcGllKQ0K ICAgICBmbGFnX3NobGliID0gMTsNCiANCisgIC8qIFJlZ2lzdGVyIG1hY2hpbmUgc3BlY2lmaWMg cmVvcmcgZm9yIG9wdGlvbmFsIG5vcCBpbnNlcnRpb24gdG8NCisgICAgIGZpeCBwc3JhbSBjYWNo ZSBidWcgb24gZXNwMzIgdjAvdjEgc2lsaWNvbiAgKi8NCisgIG9wdF9wYXNzICpuZXdfcGFzcyA9 IG1ha2VfcGFzc194dGVuc2FfcHNyYW1fbm9wcyAoZyk7DQorICBzdHJ1Y3QgcmVnaXN0ZXJfcGFz c19pbmZvIGluc2VydF9wYXNzX3h0ZW5zYV9wc3JhbV9ub3BzID0NCisgICAgew0KKyAgICAgIG5l d19wYXNzLAkJLyogcGFzcyAqLw0KKyAgICAgICJkYnIiLAkJCS8qIHJlZmVyZW5jZV9wYXNzX25h bWUgKi8NCisgICAgICAxLAkJCS8qIHJlZl9wYXNzX2luc3RhbmNlX251bWJlciAqLw0KKyAgICAg IFBBU1NfUE9TX0lOU0VSVF9BRlRFUgkvKiBwb19vcCAqLw0KKyAgICB9Ow0KKyAgcmVnaXN0ZXJf cGFzcyAoJmluc2VydF9wYXNzX3h0ZW5zYV9wc3JhbV9ub3BzKTsNCisNCisNCiAgIC8qIEhvdC9j b2xkIHBhcnRpdGlvbmluZyBkb2VzIG5vdCB3b3JrIG9uIHRoaXMgYXJjaGl0ZWN0dXJlLCBiZWNh dXNlDQpvZg0KICAgICAgY29uc3RhbnQgcG9vbHMgKHRoZSBsb2FkIGluc3RydWN0aW9uIGNhbm5v dCBuZWNlc3NhcmlseSByZWFjaA0KdGhhdCBmYXIpLg0KICAgICAgVGhlcmVmb3JlIGRpc2FibGUg aXQgb24gdGhpcyBhcmNoaXRlY3R1cmUuICAqLw0KZGlmZiAtLWdpdCBhL2djYy9jb25maWcveHRl bnNhL3h0ZW5zYS5oIGIvZ2NjL2NvbmZpZy94dGVuc2EveHRlbnNhLmgNCmluZGV4IDE2ZTNkNTVl ODk2Li4yMWMwMzhjYTNkNyAxMDA2NDQNCi0tLSBhL2djYy9jb25maWcveHRlbnNhL3h0ZW5zYS5o DQorKysgYi9nY2MvY29uZmlnL3h0ZW5zYS94dGVuc2EuaA0KQEAgLTIwLDYgKzIwLDcgQEAgYWxv bmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUNCiANCiAvKiBH ZXQgWHRlbnNhIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgKi8NCiAjaW5jbHVkZSAieHRlbnNhLWNv bmZpZy5oIg0KKyNpbmNsdWRlICJ4dGVuc2Etb3B0cy5oIg0KIA0KIC8qIEV4dGVybmFsIHZhcmlh YmxlcyBkZWZpbmVkIGluIHh0ZW5zYS5jYy4gICovDQogDQpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZp Zy94dGVuc2EveHRlbnNhLm1kIGIvZ2NjL2NvbmZpZy94dGVuc2EveHRlbnNhLm1kDQppbmRleCA2 MDgxMTBjMjBiYy4uZTgwMTM5ODdkYmYgMTAwNjQ0DQotLS0gYS9nY2MvY29uZmlnL3h0ZW5zYS94 dGVuc2EubWQNCisrKyBiL2djYy9jb25maWcveHRlbnNhL3h0ZW5zYS5tZA0KQEAgLTk3LDYgKzk3 LDEwIEBADQogICAidW5rbm93bixub25lLFFJLEhJLFNJLERJLFNGLERGLEJMIg0KICAgKGNvbnN0 X3N0cmluZyAidW5rbm93biIpKQ0KIA0KKyhkZWZpbmVfYXR0ciAiY29uZGptcCINCisgICJuYSxj b25kLHVuY29uZCINCisgIChjb25zdF9zdHJpbmcgIm5hIikpDQorDQogKGRlZmluZV9hdHRyICJs ZW5ndGgiICIiIChjb25zdF9pbnQgMSkpDQogDQogOzsgRGVzY3JpYmUgYSB1c2VyJ3MgYXNtIHN0 YXRlbWVudC4NCkBAIC0xMTUsMTQgKzExOSwzOCBAQA0KIDs7IHJlc2VydmF0aW9ucyBpbiB0aGUg cGlwZWxpbmUgZGVzY3JpcHRpb24gYmVsb3cuICBUaGUgWHRlbnNhIGNhbg0KIDs7IGlzc3VlIG9u ZSBpbnN0cnVjdGlvbiBwZXIgY3ljbGUsIHNvIGRlZmluaW5nIENQVSB1bml0cyBpcw0KdW5uZWNl c3NhcnkuDQogDQorKGRlZmluZV9jcHVfdW5pdCAibG9hZHN0b3JlIikNCisNCiAoZGVmaW5lX2lu c25fcmVzZXJ2YXRpb24gInh0ZW5zYV9hbnlfaW5zbiIgMQ0KLQkJCSAoZXFfYXR0ciAidHlwZSIN CiIhbG9hZCxmbG9hZCxyc3IsbXVsMTYsbXVsMzIsZm1hZGQsZmNvbnYiKQ0KKwkJCSAoZXFfYXR0 ciAidHlwZSINCiIhbG9hZCxmbG9hZCxzdG9yZSxmc3RvcmUscnNyLG11bDE2LG11bDMyLGZtYWRk LGZjb252IikNCisJCQkgIm5vdGhpbmciKQ0KKw0KKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAi eHRlbnNhX21lbW9yeV9sb2FkIiAyDQorCQkJIChhbmQgKG5vdCAobWF0Y2hfdGVzdA0KIlRBUkdF VF9FU1AzMl9QU1JBTV9GSVhfRU5BIikpDQorCQkJIChlcV9hdHRyICJ0eXBlIiAibG9hZCxmbG9h ZCIpKQ0KIAkJCSAibm90aGluZyIpDQogDQotKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ4dGVu c2FfbWVtb3J5IiAyDQotCQkJIChlcV9hdHRyICJ0eXBlIiAibG9hZCxmbG9hZCIpDQorKGRlZmlu ZV9pbnNuX3Jlc2VydmF0aW9uICJ4dGVuc2FfbWVtb3J5X3N0b3JlIiAxDQorCQkJIChhbmQgKG5v dCAobWF0Y2hfdGVzdA0KIlRBUkdFVF9FU1AzMl9QU1JBTV9GSVhfRU5BIikpDQorCQkJIChlcV9h dHRyICJ0eXBlIiAic3RvcmUsZnN0b3JlIikpDQogCQkJICJub3RoaW5nIikNCiANCis7OyBJZiBw c3JhbSBjYWNoZSBpc3N1ZSBuZWVkcyBmaXhpbmcsIGl0J3MgYmV0dGVyIHRvIGtlZXANCis7OyBz dG9yZXMgZmFyIGZyb20gbG9hZHMgZnJvbSB0aGUgc2FtZSBhZGRyZXNzLiBXZSBjYW5ub3QgZW5j b2RlDQorOzsgdGhhdCBiZWhhdmlvdXIgZW50aXJlbHkgaGVyZSAob3IgbWF5YmUgd2UgY2FuLCBi dXQgYXQgbGVhc3QNCis7OyBub3QgZWFzaWx5KSwgYnV0IHdlIGNhbiB0cnkgdG8gZ2V0IGV2ZXJ5 dGhpbmcgdGhhdCBzbWVsbHMgbGlrZQ0KKzs7IGxvYWQgb3Igc3RvcmUgdXAgdG8gYSBwaXBlbGlu ZSBsZW5ndGggYXBhcnQgZnJvbSBlYWNoIG90aGVyLg0KKw0KKyhkZWZpbmVfaW5zbl9yZXNlcnZh dGlvbiAieHRlbnNhX21lbW9yeV9sb2FkX3BzcmFtX2ZpeCIgMg0KKwkJCSAoYW5kIChtYXRjaF90 ZXN0DQoiVEFSR0VUX0VTUDMyX1BTUkFNX0ZJWF9FTkEiKQ0KKwkJCSAoZXFfYXR0ciAidHlwZSIg ImxvYWQsZmxvYWQiKSkNCisJCQkgImxvYWRzdG9yZSo1IikNCisNCisoZGVmaW5lX2luc25fcmVz ZXJ2YXRpb24gInh0ZW5zYV9tZW1vcnlfc3RvcmVfcHNyYW1fZml4IiAxDQorCQkJIChhbmQgKG1h dGNoX3Rlc3QNCiJUQVJHRVRfRVNQMzJfUFNSQU1fRklYX0VOQSIpDQorCQkJIChlcV9hdHRyICJ0 eXBlIiAic3RvcmUsZnN0b3JlIikpDQorCQkJICJsb2Fkc3RvcmUqNSIpDQorDQogKGRlZmluZV9p bnNuX3Jlc2VydmF0aW9uICJ4dGVuc2Ffc3JlZyIgMg0KIAkJCSAoZXFfYXR0ciAidHlwZSIgInJz ciIpDQogCQkJICJub3RoaW5nIikNCkBAIC0xNjE2LDYgKzE2NDQsNyBAQA0KIH0NCiAgIFsoc2V0 X2F0dHIgInR5cGUiCSJqdW1wLGp1bXAiKQ0KICAgIChzZXRfYXR0ciAibW9kZSIJIm5vbmUiKQ0K KyAgIChzZXRfYXR0ciAiY29uZGptcCIgImNvbmQiKQ0KICAgIChzZXRfYXR0ciAibGVuZ3RoIgki MywzIildKQ0KIA0KIChkZWZpbmVfaW5zbiAiKnVidHJ1ZSINCkBAIC0xNjMxLDYgKzE2NjAsNyBA QA0KIH0NCiAgIFsoc2V0X2F0dHIgInR5cGUiCSJqdW1wLGp1bXAiKQ0KICAgIChzZXRfYXR0ciAi bW9kZSIJIm5vbmUiKQ0KKyAgIChzZXRfYXR0ciAiY29uZGptcCIgImNvbmQiKQ0KICAgIChzZXRf YXR0ciAibGVuZ3RoIgkiMywzIildKQ0KIA0KIDs7IEJyYW5jaCBwYXR0ZXJucyBmb3IgYml0IHRl c3RpbmcNCkBAIC0xNjY1LDYgKzE2OTUsNyBAQA0KIH0NCiAgIFsoc2V0X2F0dHIgInR5cGUiCSJq dW1wIikNCiAgICAoc2V0X2F0dHIgIm1vZGUiCSJub25lIikNCisgICAoc2V0X2F0dHIgImNvbmRq bXAiICJjb25kIikNCiAgICAoc2V0X2F0dHIgImxlbmd0aCIJIjMiKV0pDQogDQogKGRlZmluZV9p bnNuICIqbWFza3RydWUiDQpAQCAtMTY4Niw2ICsxNzE3LDcgQEANCiB9DQogICBbKHNldF9hdHRy ICJ0eXBlIgkianVtcCIpDQogICAgKHNldF9hdHRyICJtb2RlIgkibm9uZSIpDQorICAgKHNldF9h dHRyICJjb25kam1wIiAiY29uZCIpDQogICAgKHNldF9hdHRyICJsZW5ndGgiCSIzIildKQ0KIA0K IChkZWZpbmVfaW5zbiAiKm1hc2t0cnVlX2JpdGNtcGwiDQpAQCAtMTcwNyw2ICsxNzM5LDcgQEAN CiB9DQogICBbKHNldF9hdHRyICJ0eXBlIgkianVtcCIpDQogICAgKHNldF9hdHRyICJtb2RlIgki bm9uZSIpDQorICAgKHNldF9hdHRyICJjb25kam1wIiAiY29uZCIpDQogICAgKHNldF9hdHRyICJs ZW5ndGgiCSIzIildKQ0KIA0KIChkZWZpbmVfaW5zbl9hbmRfc3BsaXQgIiptYXNrdHJ1ZV9jb25z dF9iaXRjbXBsIg0KQEAgLTE5MzIsNiArMTk2NSw3IEBADQogICAibG9vcFx0JTAsICVsMV9MRU5E Ig0KICAgWyhzZXRfYXR0ciAidHlwZSIJImp1bXAiKQ0KICAgIChzZXRfYXR0ciAibW9kZSIJIm5v bmUiKQ0KKyAgIChzZXRfYXR0ciAiY29uZGptcCIgImNvbmQiKQ0KICAgIChzZXRfYXR0ciAibGVu Z3RoIgkiMyIpXSkNCiANCiAoZGVmaW5lX2luc24gInplcm9fY29zdF9sb29wX2VuZCINCkBAIC0x OTQ5LDYgKzE5ODMsNyBAQA0KICAgIiMiDQogICBbKHNldF9hdHRyICJ0eXBlIgkianVtcCIpDQog ICAgKHNldF9hdHRyICJtb2RlIgkibm9uZSIpDQorICAgKHNldF9hdHRyICJjb25kam1wIiAiY29u ZCIpDQogICAgKHNldF9hdHRyICJsZW5ndGgiCSIwIildKQ0KIA0KIChkZWZpbmVfaW5zbiAibG9v cF9lbmQiDQpAQCAtMTk2OCw2ICsyMDAzLDcgQEANCiB9DQogICBbKHNldF9hdHRyICJ0eXBlIgki anVtcCIpDQogICAgKHNldF9hdHRyICJtb2RlIgkibm9uZSIpDQorICAgKHNldF9hdHRyICJjb25k am1wIiAiY29uZCIpDQogICAgKHNldF9hdHRyICJsZW5ndGgiCSIwIildKQ0KIA0KIChkZWZpbmVf c3BsaXQNCkBAIC0yMzAzLDYgKzIzMzksNyBAQA0KIH0NCiAgIFsoc2V0X2F0dHIgInR5cGUiCSJj YWxsIikNCiAgICAoc2V0X2F0dHIgIm1vZGUiCSJub25lIikNCisgICAoc2V0X2F0dHIgImNvbmRq bXAiICJ1bmNvbmQiKQ0KICAgIChzZXRfYXR0ciAibGVuZ3RoIgkiMyIpXSkNCiANCiAoZGVmaW5l X2V4cGFuZCAidW50eXBlZF9jYWxsIg0KQEAgLTIzNDcsNiArMjM4NCw3IEBADQogfQ0KICAgWyhz ZXRfYXR0ciAidHlwZSIJImp1bXAiKQ0KICAgIChzZXRfYXR0ciAibW9kZSIJIm5vbmUiKQ0KKyAg IChzZXRfYXR0ciAiY29uZGptcCIgInVuY29uZCIpDQogICAgKHNldCAoYXR0ciAibGVuZ3RoIikN CiAJKGlmX3RoZW5fZWxzZSAobWF0Y2hfdGVzdCAiVEFSR0VUX0RFTlNJVFkiKQ0KIAkJICAgICAg KGNvbnN0X2ludCAyKQ0KQEAgLTI2NTMsNiArMjY5MSw3IEBADQogfQ0KICAgWyhzZXRfYXR0ciAi dHlwZSIJImp1bXAiKQ0KICAgIChzZXRfYXR0ciAibW9kZSIJIm5vbmUiKQ0KKyAgIChzZXRfYXR0 ciAiY29uZGptcCIgImNvbmQiKQ0KICAgIChzZXRfYXR0ciAibGVuZ3RoIgkiMyIpXSkNCiANCiAo ZGVmaW5lX2luc24gIipib29sZmFsc2UiDQpAQCAtMjY3MSw2ICsyNzEwLDcgQEANCiB9DQogICBb KHNldF9hdHRyICJ0eXBlIgkianVtcCIpDQogICAgKHNldF9hdHRyICJtb2RlIgkibm9uZSIpDQor ICAgKHNldF9hdHRyICJjb25kam1wIiAiY29uZCIpDQogICAgKHNldF9hdHRyICJsZW5ndGgiCSIz IildKQ0KIA0KIAwNCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3h0ZW5zYS94dGVuc2Eub3B0DQpi L2djYy9jb25maWcveHRlbnNhL3h0ZW5zYS5vcHQNCmluZGV4IDA4MzM4ZTM5MDYwLi4zNjk2YTdk ZDVmZSAxMDA2NDQNCi0tLSBhL2djYy9jb25maWcveHRlbnNhL3h0ZW5zYS5vcHQNCisrKyBiL2dj Yy9jb25maWcveHRlbnNhL3h0ZW5zYS5vcHQNCkBAIC0xOCw2ICsxOCw5IEBADQogOyBhbG9uZyB3 aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQ0KIDsgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+Lg0KIA0KK0hlYWRlckluY2x1ZGUNCitjb25maWcveHRlbnNh L3h0ZW5zYS1vcHRzLmgNCisNCiBtY29uc3QxNg0KIFRhcmdldCBNYXNrKENPTlNUMTYpDQogVXNl IENPTlNUMTYgaW5zdHJ1Y3Rpb24gdG8gbG9hZCBjb25zdGFudHMuDQpAQCAtNjAsMyArNjMsMzEg QEAgVXNlIGNhbGwwIEFCSS4NCiBtYWJpPXdpbmRvd2VkDQogVGFyZ2V0IFJlamVjdE5lZ2F0aXZl IFZhcih4dGVuc2Ffd2luZG93ZWRfYWJpLCAxKQ0KIFVzZSB3aW5kb3dlZCByZWdpc3RlcnMgQUJJ Lg0KKw0KK21hbHdheXMtbWVtdw0KK1RhcmdldCBNYXNrKEVTUDMyX0FMV0FZU19NRU1CQVJSSUVS KQ0KK0Fsd2F5cyBlbWl0IGEgTUVNVyBiZWZvcmUgYSBsb2FkIGFuZCBhZnRlciBhIHN0b3JlIG9w ZXJhdGlvbi4gVXNlZCB0bw0KZGVidWcgbWVtb3J5IGNvaGVyZW5jeSBpc3N1ZXMuDQorDQorbWZp eC1lc3AzMi1wc3JhbS1jYWNoZS1pc3N1ZQ0KK1RhcmdldCBNYXNrKEVTUDMyX1BTUkFNX0ZJWF9F TkEpDQorV29yayBhcm91bmQgYSBQU1JBTSBjYWNoZSBpc3N1ZSBpbiB0aGUgRVNQMzIgRUNPMSBj aGlwcy4NCisNCittZml4LWVzcDMyLXBzcmFtLWNhY2hlLXN0cmF0ZWd5PQ0KK1RhcmdldCBSZWpl Y3ROZWdhdGl2ZSBKb2luZWRPck1pc3NpbmcgRW51bShlc3AzMl9wc3JhbV9maXhfdHlwZSkNClZh cihlc3AzMl9wc3JhbV9maXhfc3RyYXQpIEluaXQoRVNQMzJfUFNSQU1fRklYX01FTVcpDQorU3Bl Y2lmeSBhIHBzcmFtIGNhY2hlIGZpeCBzdHJhdGVneS4NCisNCitFbnVtDQorTmFtZShlc3AzMl9w c3JhbV9maXhfdHlwZSkgVHlwZShlbnVtIGVzcDMyX3BzcmFtX2ZpeF90eXBlKQ0KK1BzcmFtIGNh Y2hlIGZpeCBzdHJhdGVnaWVzIChmb3IgdXNlIHdpdGggLW1maXgtZXNwMzItcHNyYW0tY2FjaGUt DQpzdHJhdGVneT0gb3B0aW9uKToNCisNCitFbnVtVmFsdWUNCitFbnVtKGVzcDMyX3BzcmFtX2Zp eF90eXBlKSBTdHJpbmcoZHVwbGRzdCkNClZhbHVlKEVTUDMyX1BTUkFNX0ZJWF9EVVBMRFNUKQ0K K0ZpeCBlc3AzMiBwc3JhbSBjYWNoZSBpc3N1ZSBieSBkdXBsaWNhdGluZyBzdG9yZXMgYW5kIG5v bi13b3JkIGxvYWRzLg0KKw0KK0VudW1WYWx1ZQ0KK0VudW0oZXNwMzJfcHNyYW1fZml4X3R5cGUp IFN0cmluZyhtZW13KSBWYWx1ZShFU1AzMl9QU1JBTV9GSVhfTUVNVykNCitGaXggZXNwMzIgcHNy YW0gY2FjaGUgaXNzdWUgYnkgaW5zZXJ0aW5nIG1lbW9yeSBiYXJyaWVycyBpbiBjcml0aWNhbA0K cGxhY2VzLiBEZWZhdWx0IHdvcmthcm91bmQuDQorDQorRW51bVZhbHVlDQorRW51bShlc3AzMl9w c3JhbV9maXhfdHlwZSkgU3RyaW5nKG5vcHMpIFZhbHVlKEVTUDMyX1BTUkFNX0ZJWF9OT1BTKQ0K K0ZpeCBlc3AzMiBwc3JhbSBjYWNoZSBpc3N1ZSBieSBpbnNlcnRpbmcgTk9QcyBpbiBjcml0aWNh bCBwbGFjZXMuDQotLSANCjIuMzQuMQ0KDQo=