From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 56302 invoked by alias); 21 Jan 2019 15:05:22 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 56290 invoked by uid 89); 21 Jan 2019 15:05:21 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.6 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_LOTSOFHASH,KAM_SHORT,MIME_BASE64_BLANKS,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=Printing, 3.5, 45, chris X-HELO: EUR03-DB5-obe.outbound.protection.outlook.com Received: from mail-eopbgr40083.outbound.protection.outlook.com (HELO EUR03-DB5-obe.outbound.protection.outlook.com) (40.107.4.83) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 21 Jan 2019 15:05:14 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=p5jpR9X/wYgDphjeJ6VniJt/YqTO7pHGZcnJ5nOPUBQ=; b=HbHmgHy6zTHg3lpJA9UOnKHL54V7VcetbM2JBmBbB0v0L40ZSlx7IhaEjE+z+6rp9ODHS86aE9HI68jSjgdI+J6vkfCypjd0eIveWG3GfQ7UTqG170kO6F6TJvxNJtGwgkrI8/iDchcbkquNolKDIWq1YkiKtCbZ3gBTkEFemsw= Received: from VI1PR08MB3200.eurprd08.prod.outlook.com (52.133.15.152) by VI1PR08MB2687.eurprd08.prod.outlook.com (10.175.245.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1537.26; Mon, 21 Jan 2019 15:05:10 +0000 Received: from VI1PR08MB3200.eurprd08.prod.outlook.com ([fe80::8175:3279:122b:1c8e]) by VI1PR08MB3200.eurprd08.prod.outlook.com ([fe80::8175:3279:122b:1c8e%4]) with mapi id 15.20.1537.031; Mon, 21 Jan 2019 15:05:10 +0000 From: Richard Bunt To: "gdb-patches@sourceware.org" CC: nd Subject: [PATCH] Fortran function calls with arguments Date: Mon, 21 Jan 2019 15:05:00 -0000 Message-ID: <54c63938-aa98-b043-d6a7-b734699f6340@arm.com> authentication-results: spf=none (sender IP is ) smtp.mailfrom=Richard.Bunt@arm.com; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) Content-Type: text/plain; charset="utf-8" Content-ID: <45D04626EB31734AB8F19089747792BE@eurprd08.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-IsSubscribed: yes X-SW-Source: 2019-01/txt/msg00448.txt.bz2 UHJpb3IgdG8gdGhpcyBwYXRjaCwgY2FsbGluZyBmdW5jdGlvbnMgb24gdGhl IGluZmVyaW9yIHdpdGggYXJndW1lbnRzIGFuZA0KdGhlbiB1c2luZyB0aGVz ZSBhcmd1bWVudHMgd2l0aGluIGEgZnVuY3Rpb24gcmVzdWx0ZWQgaW4gYW4g aW52YWxpZA0KbWVtb3J5IGFjY2Vzcy4gVGhpcyBpcyBiZWNhdXNlIEZvcnRy YW4gYXJndW1lbnRzIGFyZSB0eXBpY2FsbHkgcGFzc2VkIGFzDQpwb2ludGVy cyB0byB2YWx1ZXMuDQoNCkl0IGlzIHBvc3NpYmxlIHRvIGNhbGwgRm9ydHJh biBmdW5jdGlvbnMsIGJ1dCBtZW1vcnkgbXVzdCBiZSBhbGxvY2F0ZWQgaW4N CnRoZSBpbmZlcmlvciwgc28gYSBwb2ludGVyIGNhbiBiZSBwYXNzZWQgdG8g dGhlIGZ1bmN0aW9uLCBhbmQgdGhlDQpsYW5ndWFnZSBtdXN0IGJlIHNldCB0 byBDIHRvIGVuYWJsZSBDLXN0eWxlIGNhc3RpbmcuIFRoaXMgaXMgY3VtYmVy c29tZQ0KYW5kIG5vdCBhIHBsZWFzYW50IGRlYnVnIGV4cGVyaWVuY2UuDQoN ClRoaXMgcGF0Y2ggaW1wbGVtZW50cyB0aGUgR05VIEZvcnRyYW4gYXJndW1l bnQgcGFzc2luZyBjb252ZW50aW9ucyB3aXRoDQpjYXZlYXRzLiBGaXJzdGx5 LCBpdCBkb2VzIG5vdCBoYW5kbGUgdGhlIFZBTFVFIGF0dHJpYnV0ZSBhcyB0 aGVyZSBpcw0KaW5zdWZmaWNpZW50IERXQVJGIGluZm9ybWF0aW9uIHRvIGRl dGVybWluZSB3aGVuIHRoaXMgaXMgdGhlIGNhc2UuDQpTZWNvbmRseSwgZnVu Y3Rpb25zIHdpdGggb3B0aW9uYWwgcGFyYW1ldGVycyBjYW4gb25seSBiZSBj YWxsZWQgd2l0aCBhbGwNCnBhcmFtZXRlcnMgcHJlc2VudC4gQm90aCB0aGVz ZSBjYXNlcyBhcmUgbWFya2VkIGFzIEtGQUlMUyBpbiB0aGUgdGVzdC4NCg0K U2luY2UgdGhlIEdOVSBGb3J0cmFuIGFyZ3VtZW50IHBhc3NpbmcgY29udmVu dGlvbiBoYXMgYmVlbiBpbXBsZW1lbnRlZCwNCnRoZXJlIGlzIG5vIGd1YXJh bnRlZSB0aGF0IHRoaXMgcGF0Y2ggd2lsbCB3b3JrIGNvcnJlY3RseSwgaW4g YWxsIGNhc2VzLA0Kd2l0aCBvdGhlciBjb21waWxlcnMuDQoNCkRlc3BpdGUg dGhlc2UgbGltaXRhdGlvbnMsIHRoaXMgcGF0Y2ggaW1wcm92ZXMgdGhlIGVh c2Ugd2l0aCB3aGljaA0KZnVuY3Rpb25zIGNhbiBiZSBjYWxsZWQgaW4gbWFu eSBjYXNlcywgd2l0aG91dCB0YWtpbmcgYXdheSB0aGUgZXhpc3RpbmcNCmFw cHJvYWNoIG9mIGNhbGxpbmcgd2l0aCB0aGUgbGFuZ3VhZ2Ugc2V0IHRvIEMu DQoNCkl0IHNob3VsZCBiZSBub3RlZCB0aGF0IGJ1Z3Mgd2VyZSBmb3VuZCB3 aXRoIHByaW50aW5nIGNvbXBsZXggbnVtYmVycw0Kd2hpbGUgZGV2ZWxvcGlu ZyB0aGlzIHBhdGNoLiBIb3dldmVyLCBmaXhpbmcgdGhpcyBpc3N1ZSB3YXMg Y29uc2lkZXJlZA0Kb3V0c2lkZSB0aGUgc2NvcGUgb2YgdGhpcyBwYXRjaC4g VGhlIHRlc3QgY2FzZSBmb3IgY2FsbGluZyBmdW5jdGlvbnMgd2l0aA0KY29t cGxleCBudW1iZXJzIHNob3VsZCByZW1haW4gYXMgYSBLRkFJTC4NCg0KUmVn cmVzc2lvbiB0ZXN0ZWQgb24geDg2XzY0LCBhYXJjaDY0IGFuZCBQT1dFUjkg d2l0aCBHQ0MgNy4zLjAuDQpSZWdyZXNzaW9uIHRlc3RlZCB3aXRoIEFkYSBv biB4ODZfNjQuDQpSZWdyZXNzaW9uIHRlc3RlZCB3aXRoIG5hdGl2ZS1leHRl bmRlZC1nZGJzZXJ2ZXIgdGFyZ2V0IGJvYXJkLg0KDQpnZGIvQ2hhbmdlTG9n Og0KMjAxOC0xMC0yNyAgUmljaGFyZCBCdW50ICA8cmljaGFyZC5idW50QGFy bS5jb20+DQoJRGlyayBTY2h1YmVydCAgPGRpcmsuc2NodWJlcnRAYXJtLmNv bT4NCglDaHJpcyBKYW51YXJ5ICA8Y2hyaXMuamFudWFyeUBhcm0uY29tPg0K DQoJKiBnZGIvZXZhbC5jIChldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQpOiBD YWxsIEZvcnRyYW4gYXJndW1lbnQNCgl3cmFwcGluZyBsb2dpYy4NCgkqIGdk Yi9mLWxhbmcuYyAoc3RydWN0IHZhbHVlKTogQSB2YWx1ZSB3aGljaCBjYW4g YmUgcGFzc2VkIGludG8gYQ0KCUZvcnRyYW4gZnVuY3Rpb24gY2FsbC4NCgko Zm9ydHJhbl9hcmd1bWVudF9jb252ZXJ0KTogV3JhcCBGb3J0cmFuIGFyZ3Vt ZW50cyBpbiBhIHBvaW50ZXINCgl3aGVyZSBhcHByb3ByaWF0ZS4NCgkoc3Ry dWN0IHR5cGUpOiBWYWx1ZSByZWFkeSBmb3IgYSBGb3J0cmFuIGZ1bmN0aW9u IGNhbGwuDQoJKGZvcnRyYW5fcHJlc2VydmVfYXJnX3BvaW50ZXIpOiBVbmRv IGNoZWNrX3R5cGVkZWYsIHRoZSBwb2ludGVyDQoJaXMgbmVlZGVkLg0KCSog Z2RiL2YtbGFuZy5oIChmb3J0cmFuX2FyZ3VtZW50X2NvbnZlcnQpOiBEZWNs YXJhdGlvbi4NCgkoZm9ydHJhbl9wcmVzZXJ2ZV9hcmdfcG9pbnRlcik6IERl Y2xhcmF0aW9uLg0KCSogZ2RiL2luZmNhbGwuYyAodmFsdWVfYXJnX2NvZXJj ZSk6IENhbGwgRm9ydHJhbiBhcmd1bWVudA0KCWxvZ2ljLg0KDQpnZGIvdGVz dHN1aXRlL0NoYW5nZUxvZzoNCjIwMTgtMTAtMjcgIFJpY2hhcmQgQnVudCAg PHJpY2hhcmQuYnVudEBhcm0uY29tPg0KDQoJKiBnZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL2Z1bmN0aW9uLWNhbGxzLmV4cDogTmV3IGZpbGUuDQoJKiBn ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Z1bmN0aW9uLWNhbGxzLmY5MDog TmV3IHRlc3QuDQotLS0NCiBnZGIvZXZhbC5jICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAxMyArLQ0KIGdkYi9mLWxhbmcuYyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQ4ICsrKysrKw0KIGdk Yi9mLWxhbmcuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICA1ICstDQogZ2RiL2luZmNhbGwuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDUgKy0NCiBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L2Z1bmN0aW9uLWNhbGxzLmV4cCB8IDEwNCArKysrKysrKysrKysNCiBnZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Z1bmN0aW9uLWNhbGxzLmY5MCB8IDI0 MiArKysrKysrKysrKysrKysrKysrKysrKysrKysNCiA2IGZpbGVzIGNoYW5n ZWQsIDQxNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQ0KIGNyZWF0 ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Z1bmN0 aW9uLWNhbGxzLmV4cA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL2Z1bmN0aW9uLWNhbGxzLmY5MA0KDQpkaWZmIC0t Z2l0IGEvZ2RiL2V2YWwuYyBiL2dkYi9ldmFsLmMNCmluZGV4IDQ3ZDA4YTY1 NmMwMjI5YWNlNWYyMDA0ZjczZWFiYjMwYzkwYTk2YTguLjA4M2U5NTMxZTEw M2JhOTk1OTEwYzI2YzEyZTQ5NjEwMjRkYWIzYjggMTAwNjQ0DQotLS0gYS9n ZGIvZXZhbC5jDQorKysgYi9nZGIvZXZhbC5jDQpAQCAtMTk4Nyw3ICsxOTg3 LDE4IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUg KmV4cGVjdF90eXBlLA0KIAkgIGFyZ3ZlY1swXSA9IGFyZzE7DQogCSAgdGVt ID0gMTsNCiAJICBmb3IgKDsgdGVtIDw9IG5hcmdzOyB0ZW0rKykNCi0JICAg IGFyZ3ZlY1t0ZW1dID0gZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24g KGV4cCwgcG9zLCBub3NpZGUpOw0KKwkgICAgew0KKwkgICAgICBhcmd2ZWNb dGVtXSA9IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAsIHBv cywgbm9zaWRlKTsNCisJICAgICAgLyogQXJndW1lbnRzIGluIEZvcnRyYW4g YXJlIHBhc3NlZCBieSBhZGRyZXNzLiAgQ29lcmNlIHRoZQ0KKwkJIGFyZ3Vt ZW50cyBoZXJlIHJhdGhlciB0aGFuIGluIHZhbHVlX2FyZ19jb2VyY2UgYXMg b3RoZXJ3aXNlDQorCQkgdGhlIGNhbGwgdG8gbWFsbG9jIHRvIHBsYWNlIHRo ZSBub24tbHZhbHVlIHBhcmFtZXRlcnMgaW4NCisJCSB0YXJnZXQgbWVtb3J5 IGlzIGhpdCBieSB0aGlzIEZvcnRyYW4gc3BlY2lmaWMgbG9naWMuICBUaGlz DQorCQkgcmVzdWx0cyBpbiBtYWxsb2MgYmVpbmcgY2FsbGVkIHdpdGggYSBw b2ludGVyIHRvIGFuIGludGVnZXINCisJCSBmb2xsb3dlZCBieSBhbiBhdHRl bXB0IHRvIG1hbGxvYyB0aGUgYXJndW1lbnRzIHRvIG1hbGxvYyBpbg0KKwkJ IHRhcmdldCBtZW1vcnkuICBJbmZpbml0ZSByZWN1cnNpb24gZW5zdWVzLiAg Ki8NCisJICAgICAgYXJndmVjW3RlbV0gPSBmb3J0cmFuX2FyZ3VtZW50X2Nv bnZlcnQgKGFyZ3ZlY1t0ZW1dLA0KKwkJVFlQRV9GSUVMRF9BUlRJRklDSUFM ICh2YWx1ZV90eXBlIChhcmcxKSwgdGVtLTEpKTsNCisJICAgIH0NCiAJICBh cmd2ZWNbdGVtXSA9IDA7CS8qIHNpZ25hbCBlbmQgb2YgYXJnbGlzdCAqLw0K IAkgIGlmIChub3NpZGUgPT0gRVZBTF9TS0lQKQ0KIAkgICAgcmV0dXJuIGV2 YWxfc2tpcF92YWx1ZSAoZXhwKTsNCmRpZmYgLS1naXQgYS9nZGIvZi1sYW5n LmMgYi9nZGIvZi1sYW5nLmMNCmluZGV4IDRmZjgyOGJhNzUzMDBhZTU2Njcz MTNlNzRjZmI5ZmNhZmZhOWRmMmYuLjBjMzExOGE1MTFkNTViMjBjYjI4N2E5 ZTY5ZmNjYjQ3NjU3OTM5MWMgMTAwNjQ0DQotLS0gYS9nZGIvZi1sYW5nLmMN CisrKyBiL2dkYi9mLWxhbmcuYw0KQEAgLTI3LDYgKzI3LDcgQEANCiAjaW5j bHVkZSAicGFyc2VyLWRlZnMuaCINCiAjaW5jbHVkZSAibGFuZ3VhZ2UuaCIN CiAjaW5jbHVkZSAidmFyb2JqLmgiDQorI2luY2x1ZGUgImdkYmNvcmUuaCIN CiAjaW5jbHVkZSAiZi1sYW5nLmgiDQogI2luY2x1ZGUgInZhbHByaW50Lmgi DQogI2luY2x1ZGUgInZhbHVlLmgiDQpAQCAtMzcxLDMgKzM3Miw1MCBAQCBf aW5pdGlhbGl6ZV9mX2xhbmd1YWdlICh2b2lkKQ0KIHsNCiAgIGZfdHlwZV9k YXRhID0gZ2RiYXJjaF9kYXRhX3JlZ2lzdGVyX3Bvc3RfaW5pdCAoYnVpbGRf Zm9ydHJhbl90eXBlcyk7DQogfQ0KKw0KKy8qIEVuc3VyZXMgdGhhdCBmdW5j dGlvbiBhcmd1bWVudCBWQUxVRSBpcyBpbiB0aGUgYXBwcm9wcmlhdGUgZm9y bSB0bw0KKyAgIHBhc3MgdG8gYSBGb3J0cmFuIGZ1bmN0aW9uLiAgUmV0dXJu cyBhIHBvc3NpYmx5IG5ldyB2YWx1ZSB0aGF0IHNob3VsZA0KKyAgIGJlIHVz ZWQgaW5zdGVhZCBvZiBWQUxVRS4NCisNCisgICBXaGVuIElTX0FSVElGSUNJ QUwgaXMgdHJ1ZSB0aGlzIGluZGljYXRlcyBhbiBhcnRpZmljaWFsIGFyZ3Vt ZW50LA0KKyAgIGUuZy4gaGlkZGVuIHN0cmluZyBsZW5ndGhzIHdoaWNoIHRo ZSBHTlUgRm9ydHJhbiBhcmd1bWVudCBwYXNzaW5nDQorICAgY29udmVudGlv biBzcGVjaWZpZXMgYXMgYmVpbmcgcGFzc2VkIGJ5IHZhbHVlLg0KKw0KKyAg IFdoZW4gSVNfQVJUSUZJQ0lBTCBpcyBmYWxzZSwgdGhlIGFyZ3VtZW50IGlz IHBhc3NlZCBieSBwb2ludGVyLiAgSWYgdGhlDQorICAgdmFsdWUgaXMgYWxy ZWFkeSBpbiB0YXJnZXQgbWVtb3J5IHRoZW4gcmV0dXJuIGEgdmFsdWUgdGhh dCBpcyBhIHBvaW50ZXINCisgICB0byBWQUxVRS4gIElmIFZBTFVFIGlzIG5v dCBpbiBtZW1vcnkgKGUuZy4gYW4gaW50ZWdlciBsaXRlcmFsKSwgYWxsb2Nh dGUNCisgICBzcGFjZSBpbiB0aGUgdGFyZ2V0LCBjb3B5IFZBTFVFIGluLCBh bmQgcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgaW4NCisgICBtZW1vcnkgY29w eS4gICovDQorc3RydWN0IHZhbHVlICoNCitmb3J0cmFuX2FyZ3VtZW50X2Nv bnZlcnQgKHN0cnVjdCB2YWx1ZSAqdmFsdWUsIGNvbnN0IGJvb2wgaXNfYXJ0 aWZpY2lhbCkNCit7DQorICBpZiAoIWlzX2FydGlmaWNpYWwpDQorICAgIHsN CisgICAgICBpZiAoVkFMVUVfTFZBTCAodmFsdWUpID09IG5vdF9sdmFsDQor CSAgfHwgVkFMVUVfTFZBTCAodmFsdWUpID09IGx2YWxfaW50ZXJuYWx2YXIp DQorCXsNCisJICBzdHJ1Y3QgdmFsdWUgKnZhbCA9IHZhbHVlX2NvcHkgKHZh bHVlKTsNCisJICBjb25zdCBpbnQgbGVuZ3RoID0gVFlQRV9MRU5HVEggKHZh bHVlX3R5cGUgKHZhbCkpOw0KKwkgIGNvbnN0IENPUkVfQUREUiBhZGRyDQor CSAgICA9IHZhbHVlX2FzX2xvbmcgKHZhbHVlX2FsbG9jYXRlX3NwYWNlX2lu X2luZmVyaW9yIChsZW5ndGgpKTsNCisJICBWQUxVRV9MVkFMICh2YWwpID0g bHZhbF9tZW1vcnk7DQorCSAgc2V0X3ZhbHVlX2FkZHJlc3MgKHZhbCwgYWRk cik7DQorCSAgd3JpdGVfbWVtb3J5IChhZGRyLCB2YWx1ZV9jb250ZW50cyAo dmFsKSwgbGVuZ3RoKTsNCisJICByZXR1cm4gdmFsdWVfYWRkciAodmFsKTsN CisJfQ0KKyAgICAgIGVsc2UNCisJcmV0dXJuIHZhbHVlX2FkZHIgKHZhbHVl KTsNCisgICAgfQ0KKyAgICByZXR1cm4gdmFsdWU7DQorfQ0KKw0KKy8qIEFs bCBhcmd1bWVudHMgaW4gRm9ydHJhbiBhcmUgcG9pbnRlcnMuICBJZiBpdCBp cyBhIHBvaW50ZXIsIHByZXNlcnZlIGl0IHNvDQorICAgdGhhdCB0aGUgYWRk cmVzcyBpcyBwYXNzZWQgcmF0aGVyIHRoYW4gdGhlIHZhbHVlLiAgKi8NCitz dHJ1Y3QgdHlwZSAqDQorZm9ydHJhbl9wcmVzZXJ2ZV9hcmdfcG9pbnRlciAo c3RydWN0IHZhbHVlICphcmcsDQorCQkJICAgICAgc3RydWN0IHR5cGUgKnR5 cGUpDQorew0KKyAgaWYgKFRZUEVfQ09ERSAodmFsdWVfdHlwZSAoYXJnKSkg PT0gVFlQRV9DT0RFX1BUUikNCisgICAgcmV0dXJuIHZhbHVlX3R5cGUgKGFy Zyk7DQorICByZXR1cm4gdHlwZTsNCit9DQpkaWZmIC0tZ2l0IGEvZ2RiL2Yt bGFuZy5oIGIvZ2RiL2YtbGFuZy5oDQppbmRleCBjYWIwNmY5ODA2ZDRiZWQx NWY3M2I0YzhkYTcxN2QxZWRlMmE3ZDVmLi5iY2NmMDgyZGFlNGMzMDZjNTdi NDlmNmE5MTMwNmZjNzZiYTNkZTU0IDEwMDY0NA0KLS0tIGEvZ2RiL2YtbGFu Zy5oDQorKysgYi9nZGIvZi1sYW5nLmgNCkBAIC03OCw0ICs3OCw3IEBAIHN0 cnVjdCBidWlsdGluX2ZfdHlwZQ0KIA0KIC8qIFJldHVybiB0aGUgRm9ydHJh biB0eXBlIHRhYmxlIGZvciB0aGUgc3BlY2lmaWVkIGFyY2hpdGVjdHVyZS4g ICovDQogZXh0ZXJuIGNvbnN0IHN0cnVjdCBidWlsdGluX2ZfdHlwZSAqYnVp bHRpbl9mX3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKTsNCi0NCitl eHRlcm4gc3RydWN0IHZhbHVlICpmb3J0cmFuX2FyZ3VtZW50X2NvbnZlcnQg KHN0cnVjdCB2YWx1ZSAqdmFsdWUsDQorCQkJCQkgICAgICAgY29uc3QgYm9v bCBpc19hcnRpZmljaWFsKTsNCitleHRlcm4gc3RydWN0IHR5cGUgKmZvcnRy YW5fcHJlc2VydmVfYXJnX3BvaW50ZXIgKHN0cnVjdCB2YWx1ZSAqYXJnLA0K KwkJCQkJCSAgc3RydWN0IHR5cGUgKnR5cGUpOw0KZGlmZiAtLWdpdCBhL2dk Yi9pbmZjYWxsLmMgYi9nZGIvaW5mY2FsbC5jDQppbmRleCAxNGIwY2JjNzE2 OTA3YWM3OTBmZDljNGZlZTg5MTcyZmEyYTMzMDIwLi4zNjcwNDhiNzQxMTkw MDQ4Njg1NWRkYWM1OTQ5YWE2NTVlYTc3ODUzIDEwMDY0NA0KLS0tIGEvZ2Ri L2luZmNhbGwuYw0KKysrIGIvZ2RiL2luZmNhbGwuYw0KQEAgLTMzLDYgKzMz LDcgQEANCiAjaW5jbHVkZSAiY29tbWFuZC5oIg0KICNpbmNsdWRlICJkdW1t eS1mcmFtZS5oIg0KICNpbmNsdWRlICJhZGEtbGFuZy5oIg0KKyNpbmNsdWRl ICJmLWxhbmcuaCINCiAjaW5jbHVkZSAiZ2RidGhyZWFkLmgiDQogI2luY2x1 ZGUgImV2ZW50LXRvcC5oIg0KICNpbmNsdWRlICJvYnNlcnZhYmxlLmgiDQpA QCAtMTI5LDcgKzEzMCw3IEBAIHNob3dfdW53aW5kX29uX3Rlcm1pbmF0aW5n X2V4Y2VwdGlvbl9wIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21f dHR5LA0KIH0NCiANCiAvKiBQZXJmb3JtIHRoZSBzdGFuZGFyZCBjb2VyY2lv bnMgdGhhdCBhcmUgc3BlY2lmaWVkDQotICAgZm9yIGFyZ3VtZW50cyB0byBi ZSBwYXNzZWQgdG8gQyBvciBBZGEgZnVuY3Rpb25zLg0KKyAgIGZvciBhcmd1 bWVudHMgdG8gYmUgcGFzc2VkIHRvIEMsIEFkYSBvciBGb3J0cmFuIGZ1bmN0 aW9ucy4NCiANCiAgICBJZiBQQVJBTV9UWVBFIGlzIG5vbi1OVUxMLCBpdCBp cyB0aGUgZXhwZWN0ZWQgcGFyYW1ldGVyIHR5cGUuDQogICAgSVNfUFJPVE9U WVBFRCBpcyBub24temVybyBpZiB0aGUgZnVuY3Rpb24gZGVjbGFyYXRpb24g aXMgcHJvdG90eXBlZC4NCkBAIC0xNDgsNiArMTQ5LDggQEAgdmFsdWVfYXJn X2NvZXJjZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCB2YWx1 ZSAqYXJnLA0KICAgLyogUGVyZm9ybSBhbnkgQWRhLXNwZWNpZmljIGNvZXJj aW9uIGZpcnN0LiAgKi8NCiAgIGlmIChjdXJyZW50X2xhbmd1YWdlLT5sYV9s YW5ndWFnZSA9PSBsYW5ndWFnZV9hZGEpDQogICAgIGFyZyA9IGFkYV9jb252 ZXJ0X2FjdHVhbCAoYXJnLCB0eXBlKTsNCisgIGVsc2UgaWYgKGN1cnJlbnRf bGFuZ3VhZ2UtPmxhX2xhbmd1YWdlID09IGxhbmd1YWdlX2ZvcnRyYW4pDQor ICAgIHR5cGUgPSBmb3J0cmFuX3ByZXNlcnZlX2FyZ19wb2ludGVyIChhcmcs IHR5cGUpOw0KIA0KICAgLyogRm9yY2UgdGhlIHZhbHVlIHRvIHRoZSB0YXJn ZXQgaWYgd2Ugd2lsbCBuZWVkIGl0cyBhZGRyZXNzLiAgQXQNCiAgICAgIHRo aXMgcG9pbnQsIHdlIGNvdWxkIGFsbG9jYXRlIGFyZ3VtZW50cyBvbiB0aGUg c3RhY2sgaW5zdGVhZCBvZg0KZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vZnVuY3Rpb24tY2FsbHMuZXhwIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9mdW5jdGlvbi1jYWxscy5leHANCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwLi5lNzUzMzY2NTFiMzk0NzUzNGU2YTExNzY2ZDRmZGM1 ZmE5Yjg3ZDVkDQotLS0gL2Rldi9udWxsDQorKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2Z1bmN0aW9uLWNhbGxzLmV4cA0KQEAgLTAsMCArMSwx MDQgQEANCisjIENvcHlyaWdodCAyMDE5IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLg0KKw0KKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCisj IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQorIyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcg0KKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4N CisjDQorIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisjIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mDQorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQorIyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKyMNCisjIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlDQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPiAuDQor DQorIyBFeGVyY2lzZSBwYXNzaW5nIGFuZCByZXR1cm5pbmcgYXJndW1lbnRz IGluIEZvcnRyYW4uIFRoaXMgdGVzdCBjYXNlDQorIyBpcyBiYXNlZCBvbiB0 aGUgR05VIEZvcnRyYW4gQXJndW1lbnQgcGFzc2luZyBjb252ZW50aW9ucy4N CisNCitpZiB7W3NraXBfZm9ydHJhbl90ZXN0c119IHsgcmV0dXJuIC0xIH0N CisNCitzdGFuZGFyZF90ZXN0ZmlsZSAiLmY5MCINCisNCitpZiB7W3ByZXBh cmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7 c3JjZmlsZX0ge2RlYnVnIGY5MH1dfSB7DQorICAgIHJldHVybiAtMQ0KK30N CisNCitpZiB7IVtydW50byBbZ2RiX2dldF9saW5lX251bWJlciAicG9zdF9p bml0Il1dfSB0aGVuIHsNCisgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8g YnJlYWtwb2ludCBwb3N0X2luaXQiDQorICAgIGNvbnRpbnVlDQorfQ0KKw0K KyMgVXNlIGluc3BpcmVkIGJ5IGdkYi5iYXNlL2NhbGxmdW5jcy5leHAuDQor Z2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgdW53aW5kb25zaWduYWwgb24iDQor DQorIyBCYXNlbGluZTogZnVuY3Rpb24gYW5kIHN1YnJvdXRpbmUgY2FsbCB3 aXRoIG5vIGFyZ3VtZW50cy4NCitnZGJfdGVzdCAicCBub19hcmcoKSIgIiA9 IC5UUlVFLiINCitnZGJfdGVzdF9ub19vdXRwdXQgImNhbGwgbm9fYXJnX3N1 YnJvdXRpbmUoKSINCisNCisjIEFyZ3VtZW50IGNsYXNzOiBsaXRlcmFsLCBp bmZlcmlvciB2YXJpYWJsZSwgY29udmVuaWVuY2UgdmFyaWFibGUsDQorIyBm dW5jdGlvbiBjYWxsIHJldHVybiB2YWx1ZSwgZnVuY3Rpb24uDQorIyBQYXJh Z3JhcGggMzogVmFyaWFibGVzIGFyZSBwYXNzZWQgYnkgcmVmZXJlbmNlLg0K K2dkYl90ZXN0ICJwIG9uZV9hcmcoLlRSVUUuKSIgIiA9IC5UUlVFLiINCitn ZGJfdGVzdCAicCBvbmVfYXJnKHVudHJ1ZSkiICIgPSAuRkFMU0UuIg0KK2dk Yl90ZXN0X25vX291dHB1dCAic2V0IFwkdmFyID0gLkZBTFNFLiINCitnZGJf dGVzdCAicCBvbmVfYXJnKFwkdmFyKSIgIiA9IC5GQUxTRS4iDQorZ2RiX3Rl c3QgInAgb25lX2FyZyhvbmVfYXJnKC5UUlVFLikpIiAiID0gLlRSVUUuIg0K K2dkYl90ZXN0ICJwIG9uZV9hcmcob25lX2FyZyguRkFMU0UuKSkiICIgPSAu RkFMU0UuIg0KK2dkYl90ZXN0X25vX291dHB1dCAiY2FsbCBydW4obm9fYXJn X3N1YnJvdXRpbmUpIg0KKw0KKyMgUmV0dXJuOiBjb25zdGFudC4NCitnZGJf dGVzdCAicCByZXR1cm5fY29uc3RhbnQoKSIgIiA9IDE3Ig0KKyMgUmV0dXJu IGRlcml2ZWQgdHlwZSBhbmQgY2FsbCBhIGZ1bmN0aW9uIGluIGEgbW9kdWxl Lg0KK2dkYl90ZXN0ICJwIGRlcml2ZWRfdHlwZXNfYW5kX21vZHVsZV9jYWxs czo6YnVpbGRfY2FydCg3LDgpIiBcDQorCSAiID0gXFxcKCB4ID0gNywgeSA9 IDggXFxcKSINCisNCisjIFR3byBoaWRkZW4gYXJndW1lbnRzLiAxLiByZXR1 cm5lZCBzdHJpbmcgYW5kIDIuIHN0cmluZyBsZW5ndGguDQorIyBQYXJhZ3Jh cGggMS4NCitnZGJfdGVzdCAicCByZXR1cm5fc3RyaW5nKHJldHVybmVkX3N0 cmluZ19kZWJ1Z2dlciwgNDApIiAiIg0KK2dkYl90ZXN0ICJwIHJldHVybmVk X3N0cmluZ19kZWJ1Z2dlciIgIidyZXR1cm5lZCBpbiBoaWRkZW4gZmlyc3Qg YXJndW1lbnQgICAgICAgJyINCisNCisjIEFyZ3VtZW50IHR5cGU6IHJlYWwo a2luZD00KSwgY29tcGxleCwgYXJyYXksIHBvaW50ZXIsIGRlcml2ZWQgdHlw ZSwNCisjIGRlcml2ZWQgdHlwZSB3aXRoIGFsbG9jYXRhYmxlLCBuZXN0ZWQg ZGVyaXZlZCB0eXBlLg0KKyMgUGFyYWdyYXBoIDQ6IHBvaW50ZXIuDQorZ2Ri X3Rlc3QgInAgcG9pbnRlcl9mdW5jdGlvbihpbnRfcG9pbnRlcikiICIgPSA4 NyINCisjIFBhcmFncmFwaCA0OiBhcnJheS4NCitnZGJfdGVzdCAiY2FsbCBh cnJheV9mdW5jdGlvbihpbnRlZ2VyX2FycmF5KSIgIiA9IDE3Ig0KK2dkYl90 ZXN0ICJwIGRlcml2ZWRfdHlwZXNfYW5kX21vZHVsZV9jYWxsczo6cGFzc19j YXJ0KGMpIiBcDQorCSAiID0gXFxcKCB4ID0gMiwgeSA9IDQgXFxcKSINCisj IEFsbG9jYXRhYmxlIGVsZW1lbnRzIGluIGEgZGVyaXZlZCB0eXBlLiBUZWNo bmljYWwgcmVwb3J0IElTTy9JRUMgMTU1ODEuDQorZ2RiX3Rlc3QgInAgZGVy aXZlZF90eXBlc19hbmRfbW9kdWxlX2NhbGxzOjpwYXNzX2NhcnRfbmQoY19u ZCkiICIgPSA0Ig0KK2dkYl90ZXN0ICJwIGRlcml2ZWRfdHlwZXNfYW5kX21v ZHVsZV9jYWxsczo6cGFzc19uZXN0ZWRfY2FydChuZXN0ZWRfYykiIFwNCisJ ICAiPSBcXFwoIGQgPSBcXFwoIHggPSAxLCB5ID0gMiBcXFwpLCB6ID0gMyBc XFwpIg0KKyMgUmVzdWx0IHdpdGhpbiBzb21lIHRvbGVyYW5jZS4NCitnZGJf dGVzdCAicCByZWFsNF9hcmd1bWVudChyZWFsNCkiICIgPSAzLiR7ZGVjaW1h bH0iDQorDQorIyBQcmludGluZyBjb21wbGV4IG51bWJlcnMgdGhyb3VnaCBH REIgZG9lc24ndCB3b3JrIGluIGdlbmVyYWwuDQorIyBQYXJhZ3JhcGggMi4N CitzZXR1cF9rZmFpbCAiZ2RiL05OTk4iICotKi0qDQorZ2RiX3Rlc3QgInAg Y29tcGxleF9hcmd1bWVudChmZnQpIiAiID0gKDIuJHtkZWNpbWFsfSwzLiR7 ZGVjaW1hbH0pIg0KKw0KKyMgRnVuY3Rpb24gd2l0aCBvcHRpb25hbCBhcmd1 bWVudHMuDQorIyBQYXJhZ3JhcGggMTA6IE9wdGlvbiByZWZlcmVuY2UgYXJn dW1lbnRzLg0KK2dkYl90ZXN0ICJwIHN1bV9zb21lKDEsMiwzKSIgIiA9IDYi DQorIyBUaGVyZSBpcyBjdXJyZW50bHkgbm8gbWVjaGFuaXNtIHRvIGNhbGwg YSBmdW5jdGlvbiB3aXRob3V0IGFsbA0KKyMgb3B0aW9uYWwgcGFyYW1ldGVy cyBwcmVzZW50Lg0KK3NldHVwX2tmYWlsICJnZGIvTk5OTiIgKi0qLSoNCitn ZGJfdGVzdCAicCBzdW1fc29tZSgxLDIpIiAiID0gMyINCisNCisjIFBhcmFn cmFwaCAxMDogb3B0aW9uYWwgdmFsdWUgYXJndW1lbnRzLiBUaGVyZSBpcyBp bnN1ZmZpY2llbnQgRFdBUkYNCisjIGluZm9ybWF0aW9uIHRvIHJlbGlhYmx5 IG1ha2UgdGhpcyBjYXNlIHdvcmsuDQorc2V0dXBfa2ZhaWwgImdkYi9OTk5O IiAqLSotKg0KK2dkYl90ZXN0ICJwIG9uZV9hcmdfdmFsdWUoMTApIiAiID0g MTAiDQorDQorIyBEV19BVF9hcnRpZmljaWFsIGZvcm1hbCBwYXJhbWV0ZXJz IG11c3QgYmUgcGFzc2VkIG1hbnVhbGx5LiBUaGlzDQorIyBhc3NlcnQgd2ls bCBmYWlsIGlmIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpcyB3cmFwcGVk IGluIGEgcG9pbnRlci4NCisjIFBhcmFncmFwaCA3OiBDaGFyYWN0ZXIgdHlw ZS4NCitnZGJfdGVzdCAicCBoaWRkZW5fc3RyaW5nX2xlbmd0aCgnYXJiaXRy YXJ5IHN0cmluZycsIDE2KSIgIiA9IDE2Ig0KKw0KKyMgU2V2ZXJhbCBhcmd1 bWVudHMuDQorZ2RiX3Rlc3QgInAgc2V2ZXJhbF9hcmd1bWVudHMoMiwgMywg NSkiICIgPSAxMCINCitnZGJfdGVzdCAicCBtaXhfb2Zfc2NhbGFyX2FyZ3Vt ZW50cyg1LCAuVFJVRS4sIDMuNSkiICIgPSA5Ig0KKw0KKyMgQ2FsbGluZyBv dGhlciBmdW5jdGlvbnM6IFJlY3Vyc2l2ZSBjYWxsLg0KK2dkYl90ZXN0ICJw IGZpYm9uYWNjaSg2KSIgIiA9IDgiDQpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9mdW5jdGlvbi1jYWxscy5mOTAgYi9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL2Z1bmN0aW9uLWNhbGxzLmY5MA0KbmV3IGZp bGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAuLjE5ZGJkNjVkZjYxZWM2NmRiNTEwOGUzMDE1 YjdiNTk0YWNiZTRjYWUNCi0tLSAvZGV2L251bGwNCisrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vZnVuY3Rpb24tY2FsbHMuZjkwDQpAQCAtMCww ICsxLDI0MiBAQA0KKyEgQ29weXJpZ2h0IDIwMTkgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuDQorIQ0KKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkNCishIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQorISB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcg0KKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4NCishDQorISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCishIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mDQorISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQorISBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKyENCishIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlDQorISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv PiAuDQorDQorISBTb3VyY2UgY29kZSBmb3IgZnVuY3Rpb24tY2FsbHMuZXhw Lg0KKw0KK3N1YnJvdXRpbmUgbm9fYXJnX3N1YnJvdXRpbmUoKQ0KK2VuZCBz dWJyb3V0aW5lDQorDQorbG9naWNhbCBmdW5jdGlvbiBub19hcmcoKQ0KKyAg ICBub19hcmcgPSAuVFJVRS4NCitlbmQgZnVuY3Rpb24NCisNCitzdWJyb3V0 aW5lIHJ1bihhKQ0KKyAgICBleHRlcm5hbCA6OiBhDQorICAgIGNhbGwgYSgp DQorZW5kIHN1YnJvdXRpbmUNCisNCitsb2dpY2FsIGZ1bmN0aW9uIG9uZV9h cmcoeCkNCisgICAgbG9naWNhbCwgaW50ZW50KGluKSA6OiB4DQorICAgIG9u ZV9hcmcgPSB4DQorZW5kIGZ1bmN0aW9uDQorDQoraW50ZWdlcihraW5kPTQp IGZ1bmN0aW9uIG9uZV9hcmdfdmFsdWUoeCkNCisgICAgaW50ZWdlcihraW5k PTQpLCB2YWx1ZSA6OiB4DQorICAgIG9uZV9hcmdfdmFsdWUgPSB4DQorZW5k IGZ1bmN0aW9uDQorDQoraW50ZWdlcihraW5kPTQpIGZ1bmN0aW9uIHNldmVy YWxfYXJndW1lbnRzKGEsIGIsIGMpDQorICAgIGludGVnZXIoa2luZD00KSwg aW50ZW50KGluKSA6OiBhDQorICAgIGludGVnZXIoa2luZD00KSwgaW50ZW50 KGluKSA6OiBiDQorICAgIGludGVnZXIoa2luZD00KSwgaW50ZW50KGluKSA6 OiBjDQorICAgIHNldmVyYWxfYXJndW1lbnRzID0gYSArIGIgKyBjDQorZW5k IGZ1bmN0aW9uDQorDQoraW50ZWdlcihraW5kPTQpIGZ1bmN0aW9uIG1peF9v Zl9zY2FsYXJfYXJndW1lbnRzKGEsIGIsIGMpDQorICAgIGludGVnZXIoa2lu ZD00KSwgaW50ZW50KGluKSA6OiBhDQorICAgIGxvZ2ljYWwoa2luZD00KSwg aW50ZW50KGluKSA6OiBiDQorICAgIHJlYWwoa2luZD04KSwgaW50ZW50KGlu KSA6OiBjDQorICAgIG1peF9vZl9zY2FsYXJfYXJndW1lbnRzID0gYSArIGZs b29yKGMpDQorICAgIGlmIChiKSB0aGVuDQorICAgICAgICBtaXhfb2Zfc2Nh bGFyX2FyZ3VtZW50cz1taXhfb2Zfc2NhbGFyX2FyZ3VtZW50cysxDQorICAg IGVuZCBpZg0KK2VuZCBmdW5jdGlvbg0KKw0KK3JlYWwoa2luZD00KSBmdW5j dGlvbiByZWFsNF9hcmd1bWVudChhKQ0KKyAgICByZWFsKGtpbmQ9NCksIGlu dGVudChpbikgOjogYQ0KKyAgICByZWFsNF9hcmd1bWVudCA9IGENCitlbmQg ZnVuY3Rpb24NCisNCitpbnRlZ2VyKGtpbmQ9NCkgZnVuY3Rpb24gcmV0dXJu X2NvbnN0YW50KCkNCisgICAgcmV0dXJuX2NvbnN0YW50ID0gMTcNCitlbmQg ZnVuY3Rpb24NCisNCitjaGFyYWN0ZXIoNDApIGZ1bmN0aW9uIHJldHVybl9z dHJpbmcoKQ0KKyAgICByZXR1cm5fc3RyaW5nPSdyZXR1cm5lZCBpbiBoaWRk ZW4gZmlyc3QgYXJndW1lbnQnDQorZW5kIGZ1bmN0aW9uDQorDQorcmVjdXJz aXZlIGZ1bmN0aW9uIGZpYm9uYWNjaShuKSByZXN1bHQoaXRlbSkNCisgICAg aW50ZWdlcihraW5kPTQpIDo6IGl0ZW0NCisgICAgaW50ZWdlcihraW5kPTQp LCBpbnRlbnQoaW4pIDo6IG4NCisgICAgc2VsZWN0IGNhc2UgKG4pDQorICAg ICAgICBjYXNlICgwOjEpDQorICAgICAgICAgICAgaXRlbSA9IG4NCisgICAg ICAgIGNhc2UgZGVmYXVsdA0KKyAgICAgICAgICAgIGl0ZW0gPSBmaWJvbmFj Y2kobi0xKSArIGZpYm9uYWNjaShuLTIpDQorICAgIGVuZCBzZWxlY3QNCitl bmQgZnVuY3Rpb24NCisNCitjb21wbGV4KGtpbmQ9MTYpIGZ1bmN0aW9uIGNv bXBsZXhfYXJndW1lbnQoYSkNCisgICAgY29tcGxleChraW5kPTE2KSwgaW50 ZW50KGluKSA6OiBhDQorICAgIGNvbXBsZXhfYXJndW1lbnQgPSBhDQorZW5k IGZ1bmN0aW9uDQorDQoraW50ZWdlcihraW5kPTQpIGZ1bmN0aW9uIGFycmF5 X2Z1bmN0aW9uKGEpDQorICAgIGludGVnZXIoa2luZD00KSwgZGltZW5zaW9u KDExKSA6OiBhDQorICAgIGFycmF5X2Z1bmN0aW9uID0gYSh1Ym91bmQoYSwg MSwgNCkpDQorZW5kIGZ1bmN0aW9uDQorDQoraW50ZWdlcihraW5kPTQpIGZ1 bmN0aW9uIHBvaW50ZXJfZnVuY3Rpb24oaW50X3BvaW50ZXIpDQorICAgIGlu dGVnZXIsIHBvaW50ZXIgOjogaW50X3BvaW50ZXINCisgICAgcG9pbnRlcl9m dW5jdGlvbiA9IGludF9wb2ludGVyDQorZW5kIGZ1bmN0aW9uDQorDQoraW50 ZWdlcihraW5kPTQpIGZ1bmN0aW9uIGhpZGRlbl9zdHJpbmdfbGVuZ3RoKHN0 cmluZykNCisgIGNoYXJhY3RlciooKikgOjogc3RyaW5nDQorICBoaWRkZW5f c3RyaW5nX2xlbmd0aCA9IGxlbihzdHJpbmcpDQorZW5kIGZ1bmN0aW9uDQor DQoraW50ZWdlcihraW5kPTQpIGZ1bmN0aW9uIHN1bV9zb21lKGEsIGIsIGMp DQorICAgIGludGVnZXIgOjogYSwgYg0KKyAgICBpbnRlZ2VyLCBvcHRpb25h bCA6OiBjDQorICAgIHN1bV9zb21lID0gYSArIGINCisgICAgaWYgKHByZXNl bnQoYykpIHRoZW4NCisgICAgICAgIHN1bV9zb21lID0gc3VtX3NvbWUgKyBj DQorICAgIGVuZCBpZg0KK2VuZCBmdW5jdGlvbg0KKw0KK21vZHVsZSBkZXJp dmVkX3R5cGVzX2FuZF9tb2R1bGVfY2FsbHMNCisgICAgdHlwZSBjYXJ0DQor ICAgICAgICBpbnRlZ2VyIDo6IHgNCisgICAgICAgIGludGVnZXIgOjogeQ0K KyAgICBlbmQgdHlwZQ0KKyAgICB0eXBlIGNhcnRfbmQNCisgICAgICAgIGlu dGVnZXIgOjogeA0KKyAgICAgICAgaW50ZWdlciwgYWxsb2NhdGFibGUgOjog ZCg6KQ0KKyAgICBlbmQgdHlwZQ0KKyAgICB0eXBlIG5lc3RlZF9jYXJ0XzNk DQorICAgICAgICB0eXBlKGNhcnQpIDo6IGQNCisgICAgICAgIGludGVnZXIg Ojogeg0KKyAgICBlbmQgdHlwZQ0KK2NvbnRhaW5zDQorICAgIHR5cGUoY2Fy dCkgZnVuY3Rpb24gcGFzc19jYXJ0KGMpDQorICAgICAgICB0eXBlKGNhcnQp IDo6IGMNCisgICAgICAgIHBhc3NfY2FydCA9IGMNCisgICAgZW5kIGZ1bmN0 aW9uDQorICAgIGludGVnZXIoa2luZD00KSBmdW5jdGlvbiBwYXNzX2NhcnRf bmQoYykNCisgICAgICAgIHR5cGUoY2FydF9uZCkgOjogYw0KKyAgICAgICAg cGFzc19jYXJ0X25kID0gdWJvdW5kKGMlZCwxLDQpDQorICAgIGVuZCBmdW5j dGlvbg0KKyAgICB0eXBlKG5lc3RlZF9jYXJ0XzNkKSBmdW5jdGlvbiBwYXNz X25lc3RlZF9jYXJ0KGMpDQorICAgICAgICB0eXBlKG5lc3RlZF9jYXJ0XzNk KSA6OiBjDQorICAgICAgICBwYXNzX25lc3RlZF9jYXJ0ID0gYw0KKyAgICBl bmQgZnVuY3Rpb24NCisgICAgdHlwZShjYXJ0KSBmdW5jdGlvbiBidWlsZF9j YXJ0KHgseSkNCisgICAgICAgIGludGVnZXIgOjogeCwgeQ0KKyAgICAgICAg YnVpbGRfY2FydCV4ID0geA0KKyAgICAgICAgYnVpbGRfY2FydCV5ID0geQ0K KyAgICBlbmQgZnVuY3Rpb24NCitlbmQgbW9kdWxlDQorDQorcHJvZ3JhbSBm dW5jdGlvbl9jYWxscw0KKyAgICB1c2UgZGVyaXZlZF90eXBlc19hbmRfbW9k dWxlX2NhbGxzDQorICAgIGltcGxpY2l0IG5vbmUNCisgICAgaW50ZXJmYWNl DQorICAgICAgICBsb2dpY2FsIGZ1bmN0aW9uIG5vX2FyZygpDQorICAgICAg ICBlbmQgZnVuY3Rpb24NCisgICAgICAgIGxvZ2ljYWwgZnVuY3Rpb24gb25l X2FyZyh4KQ0KKyAgICAgICAgICAgIGxvZ2ljYWwsIGludGVudChpbikgOjog eA0KKyAgICAgICAgZW5kIGZ1bmN0aW9uDQorICAgICAgICBpbnRlZ2VyKGtp bmQ9NCkgZnVuY3Rpb24gcG9pbnRlcl9mdW5jdGlvbihpbnRfcG9pbnRlcikN CisgICAgICAgICAgICBpbnRlZ2VyLCBwb2ludGVyIDo6IGludF9wb2ludGVy DQorICAgICAgICBlbmQgZnVuY3Rpb24NCisgICAgICAgIGludGVnZXIoa2lu ZD00KSBmdW5jdGlvbiBzZXZlcmFsX2FyZ3VtZW50cyhhLCBiLCBjKQ0KKyAg ICAgICAgICAgIGludGVnZXIoa2luZD00KSwgaW50ZW50KGluKSA6OiBhDQor ICAgICAgICAgICAgaW50ZWdlcihraW5kPTQpLCBpbnRlbnQoaW4pIDo6IGIN CisgICAgICAgICAgICBpbnRlZ2VyKGtpbmQ9NCksIGludGVudChpbikgOjog Yw0KKyAgICAgICAgZW5kIGZ1bmN0aW9uDQorICAgICAgICBjb21wbGV4KGtp bmQ9MTYpIGZ1bmN0aW9uIGNvbXBsZXhfYXJndW1lbnQoYSkNCisgICAgICAg ICAgICBjb21wbGV4KGtpbmQ9MTYpLCBpbnRlbnQoaW4pIDo6IGENCisgICAg ICAgIGVuZCBmdW5jdGlvbg0KKyAgICAgICAgICAgIHJlYWwoa2luZD00KSBm dW5jdGlvbiByZWFsNF9hcmd1bWVudChhKQ0KKyAgICAgICAgICAgIHJlYWwo a2luZD00KSwgaW50ZW50KGluKSA6OiBhDQorICAgICAgICBlbmQgZnVuY3Rp b24NCisgICAgICAgIGludGVnZXIoa2luZD00KSBmdW5jdGlvbiByZXR1cm5f Y29uc3RhbnQoKQ0KKyAgICAgICAgZW5kIGZ1bmN0aW9uDQorICAgICAgICBj aGFyYWN0ZXIoNDApIGZ1bmN0aW9uIHJldHVybl9zdHJpbmcoKQ0KKyAgICAg ICAgZW5kIGZ1bmN0aW9uDQorICAgICAgICBpbnRlZ2VyKGtpbmQ9NCkgZnVu Y3Rpb24gb25lX2FyZ192YWx1ZSh4KQ0KKyAgICAgICAgICAgIGludGVnZXIo a2luZD00KSwgdmFsdWUgOjogeA0KKyAgICAgICAgZW5kIGZ1bmN0aW9uDQor ICAgICAgICBpbnRlZ2VyKGtpbmQ9NCkgZnVuY3Rpb24gc3VtX3NvbWUoYSwg YiwgYykNCisgICAgICAgICAgICBpbnRlZ2VyIDo6IGEsIGINCisgICAgICAg ICAgICBpbnRlZ2VyLCBvcHRpb25hbCA6OiBjDQorICAgICAgICBlbmQgZnVu Y3Rpb24NCisgICAgICAgIGludGVnZXIoa2luZD00KSBmdW5jdGlvbiBtaXhf b2Zfc2NhbGFyX2FyZ3VtZW50cyhhLCBiLCBjKQ0KKyAgICAgICAgICAgIGlu dGVnZXIoa2luZD00KSwgaW50ZW50KGluKSA6OiBhDQorICAgICAgICAgICAg bG9naWNhbChraW5kPTQpLCBpbnRlbnQoaW4pIDo6IGINCisgICAgICAgICAg ICByZWFsKGtpbmQ9OCksIGludGVudChpbikgOjogYw0KKyAgICAgICAgZW5k IGZ1bmN0aW9uDQorICAgICAgICBpbnRlZ2VyKGtpbmQ9NCkgZnVuY3Rpb24g YXJyYXlfZnVuY3Rpb24oYSkNCisgICAgICAgICAgICBpbnRlZ2VyKGtpbmQ9 NCksIGRpbWVuc2lvbigxMSkgOjogYQ0KKyAgICAgICAgZW5kIGZ1bmN0aW9u DQorICAgICAgICBpbnRlZ2VyKGtpbmQ9NCkgZnVuY3Rpb24gaGlkZGVuX3N0 cmluZ19sZW5ndGgoc3RyaW5nKQ0KKyAgICAgICAgICAgIGNoYXJhY3Rlcioo KikgOjogc3RyaW5nDQorICAgICAgICBlbmQgZnVuY3Rpb24NCisgICAgZW5k IGludGVyZmFjZQ0KKyAgICBsb2dpY2FsIDo6IHVudHJ1ZSwgbm9fYXJnX3Jl dHVybg0KKyAgICBjb21wbGV4KGtpbmQ9MTYpIDo6IGZmdCwgZmZ0X3Jlc3Vs dA0KKyAgICBpbnRlZ2VyKGtpbmQ9NCksIGRpbWVuc2lvbiAoMTEpIDo6IGlu dGVnZXJfYXJyYXkNCisgICAgcmVhbChraW5kPTgpIDo6IHJlYWw4DQorICAg IHJlYWwoa2luZD00KSA6OiByZWFsNA0KKyAgICBpbnRlZ2VyLCBwb2ludGVy IDo6IGludF9wb2ludGVyDQorICAgIGludGVnZXIsIHRhcmdldCA6OiBwb2lu dGVlLCBzZXZlcmFsX2FyZ3VtZW50c19yZXR1cm4NCisgICAgaW50ZWdlcihr aW5kPTQpIDo6IGludGVnZXJfcmV0dXJuDQorICAgIHR5cGUoY2FydCkgOjog YywgY291dA0KKyAgICB0eXBlKGNhcnRfbmQpIDo6IGNfbmQNCisgICAgdHlw ZShuZXN0ZWRfY2FydF8zZCkgOjogbmVzdGVkX2MNCisgICAgY2hhcmFjdGVy KDQwKSA6OiByZXR1cm5lZF9zdHJpbmcsIHJldHVybmVkX3N0cmluZ19kZWJ1 Z2dlcg0KKyAgICByZWFsOCA9IDMuMDANCisgICAgcmVhbDQgPSA5LjMNCisg ICAgaW50ZWdlcl9hcnJheSA9IDE3DQorICAgIGZmdCA9IGNtcGx4KDIuMSwg My4zLCAxNikNCisgICAgcHJpbnQgKiwgZmZ0DQorICAgIHVudHJ1ZSA9IC5G QUxTRS4NCisgICAgaW50X3BvaW50ZXIgPT4gcG9pbnRlZQ0KKyAgICBwb2lu dGVlID0gODcNCisgICAgYyV4ID0gMg0KKyAgICBjJXkgPSA0DQorICAgIGNf bmQleCA9IDQNCisgICAgYWxsb2NhdGUoY19uZCVkKDQpKQ0KKyAgICBjX25k JWQgPSA2DQorICAgIG5lc3RlZF9jJXogPSAzDQorICAgIG5lc3RlZF9jJWQl eCA9IDENCisgICAgbmVzdGVkX2MlZCV5ID0gMg0KKyAgICAhIFVzZSBldmVy eXRoaW5nIHNvIGl0IGlzIG5vdCBlbGlkZWQgYnkgdGhlIGNvbXBpbGVyLg0K KyAgICBjYWxsIG5vX2FyZ19zdWJyb3V0aW5lKCkNCisgICAgbm9fYXJnX3Jl dHVybiA9IG5vX2FyZygpIC5BTkQuIG9uZV9hcmcoLkZBTFNFLikNCisgICAg c2V2ZXJhbF9hcmd1bWVudHNfcmV0dXJuID0gc2V2ZXJhbF9hcmd1bWVudHMo MSwyLDMpICsgcmV0dXJuX2NvbnN0YW50KCkNCisgICAgaW50ZWdlcl9yZXR1 cm4gPSBhcnJheV9mdW5jdGlvbihpbnRlZ2VyX2FycmF5KQ0KKyAgICBpbnRl Z2VyX3JldHVybiA9IG1peF9vZl9zY2FsYXJfYXJndW1lbnRzKDIsIHVudHJ1 ZSwgcmVhbDgpDQorICAgIHJlYWw0ID0gcmVhbDRfYXJndW1lbnQoMy40KQ0K KyAgICBpbnRlZ2VyX3JldHVybiA9IHBvaW50ZXJfZnVuY3Rpb24oaW50X3Bv aW50ZXIpDQorICAgIGMgPSBwYXNzX2NhcnQoYykNCisgICAgaW50ZWdlcl9y ZXR1cm4gPSBwYXNzX2NhcnRfbmQoY19uZCkNCisgICAgbmVzdGVkX2MgPSBw YXNzX25lc3RlZF9jYXJ0KG5lc3RlZF9jKQ0KKyAgICBpbnRlZ2VyX3JldHVy biA9IGhpZGRlbl9zdHJpbmdfbGVuZ3RoKCdzdHJpbmcgb2YgaW1wbGljaXQg bGVuZ3RoJykNCisgICAgY2FsbCBydW4obm9fYXJnX3N1YnJvdXRpbmUpDQor ICAgIGludGVnZXJfcmV0dXJuID0gb25lX2FyZ192YWx1ZSgxMCkNCisgICAg aW50ZWdlcl9yZXR1cm4gPSBzdW1fc29tZSgxLDIsMykNCisgICAgcmV0dXJu ZWRfc3RyaW5nID0gcmV0dXJuX3N0cmluZygpDQorICAgIGNvdXQgPSBidWls ZF9jYXJ0KDQsNSkNCisgICAgZmZ0X3Jlc3VsdCA9IGNvbXBsZXhfYXJndW1l bnQoZmZ0KQ0KKyAgICBwcmludCAqLCBjb3V0DQorICAgIHByaW50ICosIHNl dmVyYWxfYXJndW1lbnRzX3JldHVybg0KKyAgICBwcmludCAqLCBmZnRfcmVz dWx0DQorICAgIHByaW50ICosIHJlYWw0DQorICAgIHByaW50ICosIGludGVn ZXJfcmV0dXJuDQorICAgIHByaW50ICosIHJldHVybmVkX3N0cmluZ19kZWJ1 Z2dlcg0KKyAgICBkZWFsbG9jYXRlKGNfbmQlZCkgISBwb3N0X2luaXQNCitl bmQgcHJvZ3JhbQ0KLS0gDQoyLjcuNA0K