From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by sourceware.org (Postfix) with ESMTPS id B1320385DC0B for ; Thu, 14 May 2020 08:47:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org B1320385DC0B IronPort-SDR: wj+lFKEFt4FtE/xBUdInse7u3ddFMfLgM0RlB/6WPfF9wTtzujgWrAtlyHMhoL8jkWp94jsMTV ov0IA5L5zcag== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 May 2020 01:47:56 -0700 IronPort-SDR: A89j3LveFN8+m0d0ET/7CyCCBz6+jYvygainh/mySSLcBaX8RECQYZ86jE6qKKRvgtmARs3AHh y5W+DkiIDzrw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,390,1583222400"; d="scan'208";a="287336383" Received: from orsmsx106.amr.corp.intel.com ([10.22.225.133]) by fmsmga004.fm.intel.com with ESMTP; 14 May 2020 01:47:56 -0700 Received: from orsmsx116.amr.corp.intel.com (10.22.240.14) by ORSMSX106.amr.corp.intel.com (10.22.225.133) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 14 May 2020 01:47:56 -0700 Received: from ORSEDG002.ED.cps.intel.com (10.7.248.5) by ORSMSX116.amr.corp.intel.com (10.22.240.14) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 14 May 2020 01:47:55 -0700 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.105) by edgegateway.intel.com (134.134.137.101) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 14 May 2020 01:47:55 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ey2Z+iopbbGFQtIg8yDFbyBDJBe0iop4BEq/Aus9QVMOqPfcCdHCgUkzB869ij+8mu4rxTzZI8LJs9m60KRtbNbTVfpBx2uouOlcGjJ6dGT+fEl1fLZUJlgMEuPGdIb6u7+LmhA1tCdEeUxPlFQ0/XPmLnOdkclavzPgAQjxLgPqOYERHXfYaMmgorMs4k8V2/V6o+fQC9sQBJorsDv9puFKYo2pk+jqj2Rzk77c/LVXAUc/NRNXK2/HTDG4hnxnWMpDPaLwfkwhsxe1D2OcVR8KJACRjxQ9DL1/jT1LScHcJOMpZ6aL+3gFM3H/1lnHnEsoljgPbwTQQBG5QnzeEg== 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=C5Lz8EJADBpmfRZgGH5qii60OnpKNePMSCRQIc3Nvuc=; b=k8uE6OjMMDyUhv3QjmvAIqEwlCwPnf1AdL4rJPDCPFaLbiTzo+9Qop6wTAP0DWG8JlcGaFk3Wq1WBdHucTHhARfkpS2IK7WyuYhsK8BZl3PhAoTYV35NHAH2xPjPHs0eXjERIf4+ugWj855C6+okNcKzLELQ4EXsk+XTJ4SEVI/qi7YcbNhzTcAnNlQXTDc5AuZQcPW4LWOh0FOfR3K2NcS9Bqhw65mumv/ZPMegG8SxEYH3xgUcGpfeAuS7RncQguXhfjf5vtMPZtTExNkTYMsPbnqy6NRhrIvxws14oUVFDuyzTltO7dWu8TaSH2EQgVeptAlMAH6dl9B5XxZAXQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from SN6PR11MB2893.namprd11.prod.outlook.com (2603:10b6:805:dc::23) by SN6PR11MB3181.namprd11.prod.outlook.com (2603:10b6:805:c3::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3000.24; Thu, 14 May 2020 08:47:54 +0000 Received: from SN6PR11MB2893.namprd11.prod.outlook.com ([fe80::7d45:d073:77a3:6bc]) by SN6PR11MB2893.namprd11.prod.outlook.com ([fe80::7d45:d073:77a3:6bc%6]) with mapi id 15.20.2979.033; Thu, 14 May 2020 08:47:54 +0000 From: "Aktemur, Tankut Baris" To: Pedro Alves CC: gdb-patches Subject: RE: [PATCH v8 6/6] gdb/infrun: handle already-exited threads when attempting to stop Thread-Topic: [PATCH v8 6/6] gdb/infrun: handle already-exited threads when attempting to stop Thread-Index: AQHWKWmp17dJiebYuE+sK8KwTCrokainNbFQ Date: Thu, 14 May 2020 08:47:53 +0000 Message-ID: References: <20200513205338.14233-1-palves@redhat.com> <20200513205338.14233-7-palves@redhat.com> In-Reply-To: <20200513205338.14233-7-palves@redhat.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.2.0.6 dlp-product: dlpe-windows dlp-reaction: no-action x-originating-ip: [134.191.221.98] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 3558819c-1ac1-4beb-2f45-08d7f7e37e11 x-ms-traffictypediagnostic: SN6PR11MB3181: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 040359335D x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: x5zTLMLCvOwM3zDa/FTA0dflZsvKOWG40x/R98muEAgHPf7wRrZ0brynJmOTK68uxpGBznF5k4q7NuecjeX6ZT0sanCQ/fowmFszDqQk1m/j2h5Z29z3HzLK2QG41LhFU7OtZ1ncmZgHme7XHdW1kLvaTZ/TvN25BggCHHiJELnwCBy9Li22mw42B/OFlUOShmnxv40uEETaz4WVxkE9WkNexQwyULtcD4qoRV9wWcSzar8McjC2wNnIJCJkAlaebVaKUWDFxNuCMftpRmKuJukr5aRhujIMpYAZcQeh8Rb53+wWN7UQLNG7zCX0fpfTkZHkSYOoFPPXMU5NTws6KBdZWqwHoxtj1NP/ttlqYOv2AOua1Rh64xE453/1J2oruVjjswQ0n4Qv57KyUVbq3AyNeu7ngdOJDjgZpJrdffOTyfe5mNpXTmeuunNGVLs3PgRY3Q3n/eFv5WNwpPRE/GRCXQ8/AihjNS6OSl8y0du/c8HMFe3r0bF5xLUVOku9qikTrs0O3nWnHBR9pT4o6jRQSRE6FKuZ8BS/W+512m3Svnel1hodgMQDnUSEffEz x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN6PR11MB2893.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(376002)(366004)(346002)(396003)(39860400002)(136003)(7696005)(33656002)(76116006)(66446008)(53546011)(6506007)(52536014)(26005)(186003)(66476007)(66946007)(8676002)(55016002)(478600001)(64756008)(8936002)(86362001)(66556008)(9686003)(71200400001)(4326008)(2906002)(6916009)(5660300002)(30864003)(316002)(2004002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: VvaskOwYtv9rSSUUa+3i9LobpfSJ7MySrSbE6v6YQUtaSAB81MtgM6qzJYl1dLGGwXfeY9nRGdM64zP/qV3QVH/EsPvNEhxBarpIu5qU1XYQidIHdfMMPTh/5sNacGu+v0YaTxhhQBfcdVUCaLlFdAW2mAjiAI/GuZB0qWIKLtM8u9CseAC9Rz8cnefuWkPxJdTG6/D1iRX34+f6oqYWEBg3eI5ui4NaLIvgFbqfwM93XlrfGGSx8lnmA1RIkQiIGzrkAPPaxPRfYa8uXhQry6XYLmUZ0iR9rR604pUELmGj7GmvUPwoUp+mluN3ihz7eK+mOcKByJlDXu6HWcu4RO/T7Ha1yrFrTG/EgWChPsArlPCSNdN73spUhs5AdmfcpV45CJ7jsCrZcN+WtAky7V55g9lTcVu0gEncMH4mlNw+LCrvbixLS/eDqScgkKp7iO3VGsOhZG2YFVZFGTSvXypTlbmUrORrE/mhF3V+6hJadC0GAGe8Z+VowMXInbp/ x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 3558819c-1ac1-4beb-2f45-08d7f7e37e11 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 May 2020 08:47:53.8967 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: iZwTqkS7+Fg5HOEcuaR9cBSiOLEd5eBzPy9PQYL22RHwuvwQAIcC8Roo7aAFtgFz8EIZpsURphqhxEKEkTNlS4mLB2p2KMaAZaMZ78fUBak= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR11MB3181 X-OriginatorOrg: intel.com Content-Transfer-Encoding: base64 X-Spam-Status: No, score=-10.5 required=5.0 tests=BAYES_00, DKIM_INVALID, DKIM_SIGNED, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_SHORT, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 May 2020 08:48:00 -0000 T24gV2VkbmVzZGF5LCBNYXkgMTMsIDIwMjAgMTA6NTQgUE0sIFBlZHJvIEFsdmVzIHdyb3RlOg0K PiANCj4gV2hlbiBhIHByb2Nlc3MgZXhpdHMgYW5kIHdlIGxlYXZlIHRoZSBwcm9jZXNzIGV4aXQg ZXZlbnQgcGVuZGluZywgd2UNCj4gbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBhdCBsZWFzdCBvbmUg dGhyZWFkIGlzIGxlZnQgbGlzdGVkIGluIHRoZQ0KPiBpbmZlcmlvcidzIHRocmVhZCBsaXN0LiAg VGhpcyBpcyBuZWNlc3NhcnkgaW4gb3JkZXIgdG8gbWFrZSBzdXJlIHdlDQo+IGhhdmUgYSB0aHJl YWQgdGhhdCB3ZSBjYW4gbGF0ZXIgcmVzdW1lLCBzbyB0aGUgcHJvY2VzcyBleGl0IGV2ZW50IGNh bg0KPiBiZSBjb2xsZWN0ZWQvcmVwb3J0ZWQuDQo+IA0KPiBXaGVuIG5hdGl2ZSBkZWJ1Z2dpbmcs IHRoZSBHTlUvTGludXggYmFjayBlbmQgYWxyZWFkeSBtYWtlcyBzdXJlIHRoYXQNCj4gdGhlIGxh c3QgTFdQIGlzbid0IGRlbGV0ZWQuDQo+IA0KPiBXaGVuIHJlbW90ZSBkZWJ1Z2dpbmcgYWdhaW5z dCBHTlUvTGludXggR0RCc2VydmVyLCB0aGUgR05VL0xpbnV4DQo+IEdEQnNlcnZlciBiYWNrZW5k IGFsc28gbWFrZXMgc3VyZSB0aGF0IHRoZSBsYXN0IHRocmVhZCBpc24ndCBkZWxldGVkDQo+IHVu dGlsIHRoZSBwcm9jZXNzIGV4aXQgZXZlbnQgaXMgcmVwb3J0ZWQgdG8gR0RCc2VydmVyIGNvcmUu DQo+IA0KPiBIb3dldmVyLCBiZXR3ZWVuIHRoZSBiYWNrZW5kIHJlcG9ydGluZyB0aGUgcHJvY2Vz cyBleGl0IGV2ZW50IHRvDQo+IEdEQnNlcnZlciBjb3JlLCBhbmQgR0RCIGNvbnN1bWluZyB0aGUg ZXZlbnQsIEdEQiBtYXkgdXBkYXRlIHRoZSB0aHJlYWQNCj4gbGlzdCBhbmQgZmluZCBubyB0aHJl YWQgbGVmdCBpbiB0aGUgcHJvY2Vzcy4gIFRoZSBwcm9jZXNzIGV4aXQgZXZlbnQNCj4gd2lsbCBi ZSBwZW5kaW5nIHNvbWV3aGVyZSBpbiBHREJzZXJ2ZXIncyBzdG9wIHJlcGx5IHF1ZXVlLCBvcg0K PiBnZGIvcmVtb3RlLmMncyBxdWV1ZSwgb3Igd2hhdGhldmVyIG90aGVyIGV2ZW50IHF1ZXVlIGlu YmV0d2Vlbg0KPiBHREJzZXJ2ZXIgYW5kIGluZnJ1bi5jJ3MgaGFuZGxlX2luZmVyaW9yX2V2ZW50 Lg0KPiANCj4gVGhpcyBwYXRjaCB0d2Vha3MgcmVtb3RlLmMncyB0YXJnZXRfdXBkYXRlX3RocmVh ZF9saXN0IGltcGxlbWVudGF0aW9uDQo+IHRvIGF2b2lkIGRlbGV0aW5nIHRoZSBsYXN0IHRocmVh ZCBvZiBhbiBpbmZlcmlvci4NCj4gDQo+IEluIHRoZSBwYXN0LCB0aGlzIGNhc2Ugb2YgaW5mZXJp b3Itd2l0aC1uby10aHJlYWRzIGxlYWQgdG8gYSBzcGVjaWFsDQoNCiJsZWFkIiAtPiAibGVkIj8N Cg0KPiBjYXNlIGF0IHRoZSBib3R0b20gb2YgaGFuZGxlX25vX3Jlc3VtZWQsIHdoZXJlIGl0IHJl YWRzOg0KPiANCj4gICAvKiBOb3RlIGhvd2V2ZXIgdGhhdCB3ZSBtYXkgZmluZCBubyByZXN1bWVk IHRocmVhZCBiZWNhdXNlIHRoZSB3aG9sZQ0KPiAgICAgIHByb2Nlc3MgZXhpdGVkIG1lYW53aGls ZSAodGh1cyB1cGRhdGluZyB0aGUgdGhyZWFkIGxpc3QgcmVzdWx0cw0KPiAgICAgIGluIGFuIGVt cHR5IHRocmVhZCBsaXN0KS4gIEluIHRoaXMgY2FzZSB3ZSBrbm93IHdlJ2xsIGJlIGdldHRpbmcN Cj4gICAgICBhIHByb2Nlc3MgZXhpdCBldmVudCBzaG9ydGx5LiAgKi8NCj4gICBmb3IgKGluZmVy aW9yICppbmYgOiBhbGxfbm9uX2V4aXRlZF9pbmZlcmlvcnMgKGVjcy0+dGFyZ2V0KSkNCj4gDQo+ IEluIGN1cnJlbnQgbWFzdGVyLCB0aGF0IGNvZGUgcGF0aCBpcyBzdGlsbCByZWFjaGVhYmxlIHdp dGggdGhlDQoNCiJyZWFjaGVhYmxlIiAtPiAicmVhY2hhYmxlIiANCg0KPiBnZGIudGhyZWFkcy9j b250aW51ZS1wZW5kaW5nLWFmdGVyLXF1ZXJ5LmV4cCB0ZXN0Y2FzZSwgd2hlbiB0ZXN0ZWQNCj4g YWdhaW5zdCBHREJzZXJ2ZXIsIHdpdGggIm1haW50IHNldCB0YXJnZXQtbm9uLXN0b3AiIGZvcmNl ZCAib24iLg0KPiANCj4gV2l0aCB0aGlzIHBhdGNoLCB0aGUgc2NlbmFyaW8gdGhhdCBsb29wIHdh cyBjb25jZXJuZWQgYWJvdXQgaXMgc3RpbGwNCj4gcHJvcGVybHkgaGFuZGxlZCwgYmVjYXVzZSB0 aGUgbG9vcCBhYm92ZSBpdCBmaW5kcyB0aGUgcHJvY2VzcydzIGxhc3QNCj4gdGhyZWFkIHdpdGgg ImV4ZWN1dGluZyIgc2V0IHRvIHRydWUsIGFuZCB0aHVzIHRoZSBoYW5kbGVfbm9fcmVzdW1lZA0K PiBmdW5jdGlvbiBzdGlsbCByZXR1cm5zIHRydWUuDQo+IA0KPiBTaW5jZSBHTlUvTGludXggbmF0 aXZlIGFuZCByZW1vdGUgYXJlIHRoZSBvbmx5IHRhcmdldHMgdGhhdCBzdXBwb3J0DQo+IG5vbi1z dG9wIG1vZGUsIGFuZCB3aXRoIHRoaXMgcGF0Y2gsIHdlIGFsd2F5cyBtYWtlIHN1cmUgdGhlIGlu ZmVyaW9yDQo+IGhhcyBhdCBsZWFzdCBvbmUgdGhyZWFkLCB0aGlzIHBhdGNoIGFsc28gcmVtb3Zl cyB0aGF0ICJpbmZlcmlvciB3aXRoDQo+IG5vIHRocmVhZHMiIHNwZWNpYWwgY2FzZSBoYW5kbGlu ZyBmcm9tIGhhbmRsZV9ub19yZXN1bWVkLg0KPiANCj4gU2luY2UgcmVtb3RlLmMgbm93IGhhcyBh IHNwZWNpYWwgY2FzZSB3aGVyZSB3ZSB0cmVhdCBhIHRocmVhZCB0aGF0IGhhcw0KPiBhbHJlYWR5 IGV4aXRlZCBhcyBpZiBpdCB3YXMgc3RpbGwgYWxpdmUsIHdlIG1pZ2h0IG5lZWQgdG8gdHdlYWsN Cj4gcmVtb3RlLmMncyB0YXJnZXRfdGhyZWFkX2FsaXZlIGltcGxlbWVudGF0aW9uIHRvIHJldHVy biB0cnVlIGZvciB0aGF0DQo+IHRocmVhZCB3aXRob3V0IHF1ZXJ5aW5nIHRoZSByZW1vdGUgc2lk ZSAod2hpY2ggd291bGQgc2F5ICJubywgbm90DQo+IGFsaXZlIikuICBBZnRlciBpbnNwZWN0aW5n IGFsbCB0aGUgdGFyZ2V0X3RocmVhZF9hbGl2ZSBjYWxscyBpbiB0aGUNCj4gY29kZWJhc2UsIGl0 IHNlZW1zIHRoYXQgb25seSB0aGUgb25lIGZyb20gcHJ1bmVfdGhyZWFkcyBjb3VsZCByZXN1bHQN Cj4gaW4gdGhhdCB0aHJlYWQgYmVpbmcgYWNjaWRlbnRhbHkgZGVsZXRlZC4gIFRoZXJlJ3Mgb25s eSBvbmUgY2FsbCB0bw0KDQoiYWNjaWRlbnRhbHkiIC0+ICJhY2NpZGVudGFsbHkiDQoNCj4gcHJ1 bmVfdGhyZWFkcyBpbiBHREIncyBjb21tb24gY29kZSwgc28gdGhpcyBwYXRjaCBoYW5kbGVzIHRo aXMgYnkNCj4gcmVwbGFjaW5nIHRoZSBwcnVuZV90aHJlYWRzIGNhbGwgd2l0aCBhIGRlbGV0ZV9l eGl0ZWRfdGhyZWFkcyBjYWxsLg0KPiBUaGlzIHNlZW1zIGxpa2UgYW4gaW1wcm92ZW1lbnQgYW55 d2F5LCBiZWNhdXNlIHdlJ2xsIHN0aWxsIGJlIGRvaW5nDQo+IHdoYXQgdGhlIGNvbW1lbnQgc3Vn Z2VzdHMgd2Ugd2FudCB0byBkbywgYW5kLCB3ZSBhdm9pZCByZW1vdGUgcHJvdG9jb2wNCj4gdHJh ZmZpYy4NCg0KVGhlIHdob2xlIGV4cGxhbmF0aW9uIGFib3ZlIGlzIHZlcnkgdXNlZnVsLiAgVGhh bmsgeW91Lg0KDQo+IGRpZmYgLS1naXQgYS9nZGIvaW5mcnVuLmMgYi9nZGIvaW5mcnVuLmMNCj4g aW5kZXggNjYwMmJjMjhkNWUuLmM5YTA5MmU0OTQzIDEwMDY0NA0KPiAtLS0gYS9nZGIvaW5mcnVu LmMNCj4gKysrIGIvZ2RiL2luZnJ1bi5jDQo+IEBAIC00NzkxLDcgKzQ3OTEsMTEgQEAgc3RvcF9h bGxfdGhyZWFkcyAodm9pZCkNCj4gIAl7DQo+ICAJICBpbnQgbmVlZF93YWl0ID0gMDsNCj4gDQo+ IC0JICB1cGRhdGVfdGhyZWFkX2xpc3QgKCk7DQo+ICsJICBmb3IgKGF1dG8gKnRhcmdldCA6IGFs bF9ub25fZXhpdGVkX3Byb2Nlc3NfdGFyZ2V0cyAoKSkNCj4gKwkgICAgew0KPiArCSAgICAgIHN3 aXRjaF90b190YXJnZXRfbm9fdGhyZWFkICh0YXJnZXQpOw0KPiArCSAgICAgIHVwZGF0ZV90aHJl YWRfbGlzdCAoKTsNCj4gKwkgICAgfQ0KDQpJJ20gZ2xhZCB0aGF0IHRoZSBhcnRpZmljaWFsIHRo cmVhZCBhZGRpdGlvbi9yZXN1cnJlY3Rpb24gcGllY2UgaXMgZ29uZQ0KYW5kIHRoZSB0aHJlYWQg bGlzdHMgYXJlIG5vdyB1cGRhdGVkIHN0cmFpZ2h0Zm9yd2FyZGx5LiAgSSdtIGFsc28gZ2xhZA0K dGhhdCBhbGxfbm9uX2V4aXRlZF9wcm9jZXNzX3RhcmdldHMgZm91bmQgaXRzZWxmIGFub3RoZXIg dXNlIDopLg0KDQo+ICsJCSAgLyogSWYgdGhlcmUgaXMgbm8gYXZhaWxhYmxlIHRocmVhZCwgdGhl IGV2ZW50IHdvdWxkDQo+ICsJCSAgICAgaGF2ZSB0byBiZSBhcHBlbmRlZCB0byBhIHBlci1pbmZl cmlvciBldmVudCBsaXN0LA0KPiArCQkgICAgIHdoaWNoLCBkb2VzIG5vdCBleGlzdCAoYW5kIGlm IGl0IGRpZCwgd2UnZCBoYXZlDQo+ICsJCSAgICAgdG8gYWRqdXN0IHJ1biBjb250cm9sIGNvbW1h bmQgdG8gYmUgYWJsZSB0bw0KPiArCQkgICAgIHJlc3VtZSBzdWNoIGFuIGluZmVyaW9yKS4gIFdl IGFzc2VydCBoZXJlIGluc3RlYWQNCj4gKwkJICAgICBvZiBnb2luZyBpbnRvIGFuIGluZmluaXRl IGxvb3AuICAqLw0KDQpKdXN0IGEgbml0OiBubyBjb21tYSBhZnRlciAid2hpY2giLg0KDQo+IGRp ZmYgLS1naXQgYS9nZGIvcmVtb3RlLmMgYi9nZGIvcmVtb3RlLmMNCj4gaW5kZXggNWRiNDA2ZTA0 NWMuLjhlMTJiYTk2MDNlIDEwMDY0NA0KPiAtLS0gYS9nZGIvcmVtb3RlLmMNCj4gKysrIGIvZ2Ri L3JlbW90ZS5jDQo+IEBAIC0zNzg1LDYgKzM3ODUsMTggQEAgcmVtb3RlX3RhcmdldDo6cmVtb3Rl X2dldF90aHJlYWRzX3dpdGhfcXRocmVhZGluZm8gKHRocmVhZHNfbGlzdGluZ19jb250ZXh0ICpj b24NCj4gICAgcmV0dXJuIDA7DQo+ICB9DQo+IA0KPiArLyogUmV0dXJuIHRydWUgaWYgSU5GIG9u bHkgaGFzIG9uZSBub24tZXhpdGVkIHRocmVhZC4gICovDQo+ICsNCj4gK3N0YXRpYyBib29sDQo+ ICtzaW5nbGVfbm9uX2V4aXRlZF90aHJlYWRfcCAoaW5mZXJpb3IgKmluZikNCg0KR2l2ZW4gdGhh dCB0aGUgcmV0dXJuIHR5cGUgaXMgYm9vbCBhbmQgbm90IGludCwgY2FuIHRoZSAnX3AnIGluIHRo ZSBuYW1lIGJlDQpkaXNjYXJkZWQgYW5kIGEgcXVlc3Rpb24gcGhyYXNlLCBsaWtlICdoYXNfc2lu Z2xlX25vbl9leGl0ZWRfdGhyZWFkJywgYmUNCnVzZWQ/DQoNCj4gK3sNCj4gKyAgaW50IGNvdW50 ID0gMDsNCj4gKyAgZm9yICh0aHJlYWRfaW5mbyAqdHAgQVRUUklCVVRFX1VOVVNFRCA6IGluZi0+ bm9uX2V4aXRlZF90aHJlYWRzICgpKQ0KPiArICAgIGlmICgrK2NvdW50ID4gMSkNCj4gKyAgICAg IGJyZWFrOw0KPiArICByZXR1cm4gY291bnQgPT0gMTsNCj4gK30NCj4gKw0KDQo+IGRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5tdWx0aS9tdWx0aS1leGl0LmV4cCBiL2dkYi90ZXN0c3Vp dGUvZ2RiLm11bHRpL211bHRpLWV4aXQuZXhwDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGlu ZGV4IDAwMDAwMDAwMDAwLi4zYzRlOTkxNjRlZA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLm11bHRpL211bHRpLWV4aXQuZXhwDQo+IEBAIC0wLDAgKzEsMTM4IEBA DQo+ICsjIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuDQo+ ICsNCj4gKyMgQ29weXJpZ2h0IDIwMjAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQo+ ICsNCj4gKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkNCj4gKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCj4gKyMgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3INCj4g KyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCj4gKyMNCj4gKyMgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws DQo+ICsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mDQo+ICsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCj4gKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4NCj4gKyMNCj4gKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCj4gKyMgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u DQo+ICsNCj4gKyMgVGVzdCByZWNlaXZpbmcgVEFSR0VUX1dBSVRLSU5EX0VYSVRFRCBldmVudHMg ZnJvbSBtdWx0aXBsZQ0KPiArIyBpbmZlcmlvcnMuICBJbiBhbGwgc3RvcC1tb2RlLCB1cG9uIHJl Y2VpdmluZyB0aGUgZXhpdCBldmVudCBmcm9tIG9uZQ0KPiArIyBvZiB0aGUgaW5mZXJpb3JzLCBH REIgd2lsbCB0cnkgdG8gc3RvcCB0aGUgb3RoZXIgaW5mZXJpb3IsIHRvby4gIFNvLA0KPiArIyBh IHN0b3AgcmVxdWVzdCB3aWxsIGJlIHNlbnQuICBSZWNlaXZpbmcgYSBUQVJHRVRfV0FJVEtJTkRf RVhJVEVEDQo+ICsjIHN0YXR1cyBraW5kIGFzIGEgcmVzcG9uc2UgdG8gdGhhdCBzdG9wIHJlcXVl c3QgaW5zdGVhZCBvZiBhDQo+ICsjIFRBUkdFVF9XQUlUS0lORF9TVE9QUEVEIHNob3VsZCBiZSBo YW5kbGVkIGJ5IEdEQiB3aXRob3V0IHByb2JsZW1zLg0KPiArDQo+ICtzdGFuZGFyZF90ZXN0Zmls ZQ0KPiArDQo+ICtpZiB7W3VzZV9nZGJfc3R1Yl19IHsNCj4gKyAgICByZXR1cm4gMA0KPiArfQ0K PiArDQo+ICtpZiB7W2J1aWxkX2V4ZWN1dGFibGUgImZhaWxlZCB0byBwcmVwYXJlIiAkdGVzdGZp bGUgJHNyY2ZpbGVdfSB7DQo+ICsgICAgcmV0dXJuIC0xDQo+ICt9DQo+ICsNCj4gKyMgV2UgYXJl IHRlc3RpbmcgR0RCJ3MgYWJpbGl0eSB0byBzdG9wIGFsbCB0aHJlYWRzLg0KPiArIyBIZW5jZSwg Z28gd2l0aCB0aGUgYWxsLXN0b3Atb24tdG9wLW9mLW5vbi1zdG9wIG1vZGUuDQo+ICtzYXZlX3Zh cnMgeyBHREJGTEFHUyB9IHsNCj4gKyAgICBhcHBlbmQgR0RCRkxBR1MgIiAtZXggXCJtYWludCBz ZXQgdGFyZ2V0LW5vbi1zdG9wIG9uXCIiDQo+ICsgICAgY2xlYW5fcmVzdGFydCAke2JpbmZpbGV9 DQo+ICt9DQo+ICsNCj4gK3dpdGhfdGVzdF9wcmVmaXggImluZiAxIiB7DQo+ICsgICAgZ2RiX2xv YWQgJGJpbmZpbGUNCj4gKw0KPiArICAgIGlmIHtbZ2RiX3N0YXJ0X2NtZF0gPCAwfSB7DQo+ICsJ ZmFpbCAiY291bGQgbm90IHN0YXJ0Ig0KPiArCXJldHVybiAtMQ0KPiArICAgIH0NCj4gKyAgICBn ZGJfdGVzdCAiIiAiLipyZWFrcG9pbnQgLiosIG1haW4gLioke3NyY2ZpbGV9LioiICJzdGFydCIN Cj4gK30NCg0KU2ltaWxhciB0byB3aGF0IHlvdSBkaWQgaW4gbXVsdGkta2lsbC5leHAsIHRvIGVs aW1pbmF0ZSBjb2RlIGR1cGxpY2F0aW9uLA0KdGhpcyAnd2l0aF90ZXN0X3ByZWZpeCcgY29kZSBi bG9jayBjYW4gYmUgcmVtb3ZlZCwgYW5kIHRoZSBzdGFydF9pbmZlcmlvcg0KcHJvY2VkdXJlIGNh biBiZSB1c2VkIGZvciBpbmZlcmlvciAxLCB0b28sIGJ5IC4uLg0KDQo+ICsNCj4gKyMgU3RhcnQg aW5mZXJpb3IgTlVNLg0KPiArDQo+ICtwcm9jIHN0YXJ0X2luZmVyaW9yIHtudW19IHsNCj4gKyAg ICBnbG9iYWwgc3JjZmlsZSBiaW5maWxlDQo+ICsNCj4gKyAgICBnZGJfdGVzdCAiYWRkLWluZmVy aW9yIiAiQWRkZWQgaW5mZXJpb3IgJG51bS4qIiBcDQo+ICsJImFkZCBlbXB0eSBpbmZlcmlvciAk bnVtIg0KPiArICAgIGdkYl90ZXN0ICJpbmZlcmlvciAkbnVtIiAiU3dpdGNoaW5nIHRvIGluZmVy aW9yICRudW0uKiIgXA0KPiArCSJzd2l0Y2ggdG8gaW5mZXJpb3IgJG51bSINCg0KLi4uIGd1YXJk aW5nIHRoZSBzdGF0ZW1lbnRzIGFib3ZlIHdpdGggJ2lmIHskbnVtICE9IDF9Jy4gIEFuZCB0aGVu IC4uLg0KDQo+ICsNCj4gKyAgICB3aXRoX3Rlc3RfcHJlZml4ICJpbmYgJG51bSIgew0KPiArCWdk Yl9sb2FkICRiaW5maWxlDQo+ICsNCj4gKwlpZiB7W2dkYl9zdGFydF9jbWRdIDwgMH0gew0KPiAr CSAgICBmYWlsICJjb3VsZCBub3Qgc3RhcnQiDQo+ICsJICAgIHJldHVybiAtMQ0KPiArCX0NCj4g KwlnZGJfdGVzdCAiIiAiLipyZWFrcG9pbnQgLiosIG1haW4gLioke3NyY2ZpbGV9LioiICJzdGFy dCINCj4gKyAgICB9DQo+ICsNCj4gKyAgICByZXR1cm4gMA0KPiArfQ0KPiArDQo+ICsjIFN1ZmZp Y2llbnQgaW5mZXJpb3JzIHRvIG1ha2Ugc3VyZSB0aGF0IGF0IGxlYXN0IHNvbWUgb3RoZXIgaW5m ZXJpb3INCj4gKyMgZXhpdHMgd2hpbGUgd2UncmUgaGFuZGxpbmcgYSBwcm9jZXNzIGV4aXQgZXZl bnQuDQo+ICtzZXQgTlVNX0lORlMgMTANCj4gKw0KPiArZm9yIHtzZXQgaSAyfSB7JGkgPD0gJE5V TV9JTkZTfSB7aW5jciBpfSB7DQoNCi4uLiB0aGlzIGxvb3AgY291bGQgc3RhcnQgZnJvbSAxLg0K DQo+ICsgICAgaWYge1tzdGFydF9pbmZlcmlvciAkaV0gPCAwfSB7DQo+ICsJcmV0dXJuIC0xDQo+ ICsgICAgfQ0KPiArfQ0KPiArDQo+ICsjIFdlIHdhbnQgdG8gY29udGludWUgYWxsIHByb2Nlc3Nl cy4NCj4gK2dkYl90ZXN0X25vX291dHB1dCAic2V0IHNjaGVkdWxlLW11bHRpcGxlIG9uIg0KPiAr DQo+ICsjIENoZWNrIHRoYXQgImNvbnRpbnVlIiBjb250aW51ZXMgdG8gdGhlIGVuZCBvZiBhbiBp bmZlcmlvciwgYXMgbWFueQ0KPiArIyB0aW1lcyBhcyB3ZSBoYXZlIGluZmVyaW9ycy4NCj4gKw0K PiArZm9yIHtzZXQgaSAxfSB7JGkgPD0gJE5VTV9JTkZTfSB7aW5jciBpfSB7DQo+ICsgICAgd2l0 aF90ZXN0X3ByZWZpeCAiaW5mICRpIiB7DQo+ICsJc2V0IGxpdmVfaW5mZXJpb3IgIiINCj4gKw0K PiArCSMgUGljayBhbnkgbGl2ZSBpbmZlcmlvci4NCj4gKwlnZGJfdGVzdF9tdWx0aXBsZSAiaW5m byBpbmZlcmlvcnMiICIiIHsNCj4gKwkgICAgLXJlICIoJGRlY2ltYWwpICpwcm9jZXNzLiokZ2Ri X3Byb21wdCAkIiB7DQo+ICsJCXNldCBsaXZlX2luZmVyaW9yICRleHBlY3Rfb3V0KDEsc3RyaW5n KQ0KPiArCSAgICB9DQo+ICsJfQ0KPiArDQo+ICsJaWYgeyRsaXZlX2luZmVyaW9yID09ICIifSB7 DQo+ICsJICAgIHJldHVybiAtMQ0KPiArCX0NCj4gKw0KPiArCWdkYl90ZXN0ICJpbmZlcmlvciAk bGl2ZV9pbmZlcmlvciIgXA0KPiArCSAgICAiLipTd2l0Y2hpbmcgdG8gaW5mZXJpb3IgJGxpdmVf aW5mZXJpb3IuKiIgXA0KPiArCSAgICAic3dpdGNoIHRvIGFub3RoZXIgaW5mZXJpb3IiDQo+ICsN Cj4gKwlzZXQgZXhpdGVkX2luZmVyaW9yICIiDQo+ICsNCj4gKwkjIFdlIHdhbnQgR0RCIHRvIGNv bXBsZXRlIHRoZSBjb21tYW5kIGFuZCByZXR1cm4gdGhlIHByb21wdA0KPiArCSMgaW5zdGVhZCBv ZiBnb2luZyBpbnRvIGFuIGluZmluaXRlIGxvb3AuDQo+ICsJZ2RiX3Rlc3RfbXVsdGlwbGUgImNv bnRpbnVlIiAiZmlyc3QgY29udGludWUiIHsNCg0KSnVzdCBhIG5pdDogTm93IHRoYXQgdGhlcmUg aXMgbm8gInNlY29uZCIgY29udGludWUsIHRoZSAiZmlyc3QiIGluIHRoZQ0KdGVzdCBuYW1lIGNh biBiZSBkaXNjYXJkZWQsIEkgdGhpbmsuICBIb3cgYWJvdXQganVzdCAiY29udGludWUiPw0KDQo+ ICsJICAgIC1yZSAiSW5mZXJpb3IgKCRkZWNpbWFsKSBcW15cblxyXF0rIGV4aXRlZCBub3JtYWxs eS4qJGdkYl9wcm9tcHQgJCIgew0KPiArCQlzZXQgZXhpdGVkX2luZmVyaW9yICRleHBlY3Rfb3V0 KDEsc3RyaW5nKQ0KPiArCQlwYXNzICRnZGJfdGVzdF9uYW1lDQo+ICsJICAgIH0NCj4gKwl9DQo+ ICsNCj4gKwlpZiB7JGV4aXRlZF9pbmZlcmlvciA9PSAiIn0gew0KPiArCSAgICByZXR1cm4gLTEN Cj4gKwl9DQo+ICsgICAgfQ0KPiArfQ0KPiArDQo+ICsjIEZpbmFsbHksIGNoZWNrIHRoYXQgd2Ug Y2FuIHJlLXJ1biBhbGwgaW5mZXJpb3JzLiAgTm90ZSB0aGF0IGlmIGFueQ0KPiArIyBpbmZlcmlv ciB3YXMgc3RpbGwgYWxpdmUgdGhpcyB3b3VsZCBjYXRjaCBpdCwgYXMgInJ1biIgd291bGQgcXVl cnkNCj4gKyMgIlN0YXJ0IGl0IGZyb20gdGhlIGJlZ2lubmluZz8iLg0KPiArDQo+ICtkZWxldGVf YnJlYWtwb2ludHMNCj4gKw0KPiArZm9yIHtzZXQgaSAxfSB7JGkgPD0gJE5VTV9JTkZTfSB7aW5j ciBpfSB7DQo+ICsgICAgd2l0aF90ZXN0X3ByZWZpeCAiaW5mICRpIiB7DQoNCkkgdGhpbmsgd2Ug bmVlZCB0byBzd2l0Y2ggdG8gaW5mZXJpb3IgJGkgaGVyZSwgb3RoZXJ3aXNlIHdlIHJlLXJ1bg0K dGhlIGxhdGVzdCBpbmZlcmlvciBmcm9tIHRoZSBwcmV2aW91cyBsb29wIGZvciB0ZW4gdGltZXMu DQoNCj4gKwlnZGJfdGVzdCAicnVuIiAiJGluZmVyaW9yX2V4aXRlZF9yZSBub3JtYWxseVxdIiBc DQo+ICsJICAgICJyZS1ydW4gaW5mZXJpb3IiDQo+ICsgICAgfQ0KPiArfQ0KDQo+IGRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5tdWx0aS9tdWx0aS1raWxsLmV4cCBiL2dkYi90ZXN0c3Vp dGUvZ2RiLm11bHRpL211bHRpLWtpbGwuZXhwDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGlu ZGV4IDAwMDAwMDAwMDAwLi43ZGVhYWRjNjhlOA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLm11bHRpL211bHRpLWtpbGwuZXhwDQo+IEBAIC0wLDAgKzEsMTI3IEBA DQo+ICsjIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuDQo+ ICsNCj4gKyMgQ29weXJpZ2h0IDIwMjAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQo+ ICsNCj4gKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkNCj4gKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCj4gKyMgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3INCj4g KyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCj4gKyMNCj4gKyMgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws DQo+ICsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mDQo+ICsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCj4gKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4NCj4gKyMNCj4gKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCj4gKyMgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u DQo+ICsNCj4gKyMgVGVzdCByZWNlaXZpbmcgVEFSR0VUX1dBSVRLSU5EX1NJR05BTExFRCBldmVu dHMgZnJvbSBtdWx0aXBsZQ0KPiArIyBpbmZlcmlvcnMuICBJbiBhbGwgc3RvcC1tb2RlLCB1cG9u IHJlY2VpdmluZyB0aGUgZXhpdCBldmVudCBmcm9tIG9uZQ0KPiArIyBvZiB0aGUgaW5mZXJpb3Jz LCBHREIgd2lsbCB0cnkgdG8gc3RvcCB0aGUgb3RoZXIgaW5mZXJpb3IsIHRvby4gIFNvLA0KPiAr IyBhIHN0b3AgcmVxdWVzdCB3aWxsIGJlIHNlbnQuICBSZWNlaXZpbmcgYSBUQVJHRVRfV0FJVEtJ TkRfU0lHTkFMTEVEDQo+ICsjIHN0YXR1cyBraW5kIGFzIGEgcmVzcG9uc2UgdG8gdGhhdCBzdG9w IHJlcXVlc3QgaW5zdGVhZCBvZiBhDQo+ICsjIFRBUkdFVF9XQUlUS0lORF9TVE9QUEVEIHNob3Vs ZCBiZSBoYW5kbGVkIGJ5IEdEQiB3aXRob3V0IHByb2JsZW1zLg0KPiArDQo+ICtzdGFuZGFyZF90 ZXN0ZmlsZQ0KPiArDQo+ICtpZiB7W3VzZV9nZGJfc3R1Yl19IHsNCj4gKyAgICByZXR1cm4gMA0K PiArfQ0KPiArDQo+ICtpZiB7W2J1aWxkX2V4ZWN1dGFibGUgImZhaWxlZCB0byBwcmVwYXJlIiAk dGVzdGZpbGUgJHNyY2ZpbGUge2RlYnVnfV19IHsNCj4gKyAgICByZXR1cm4gLTENCj4gK30NCj4g Kw0KPiArIyBXZSBhcmUgdGVzdGluZyBHREIncyBhYmlsaXR5IHRvIHN0b3AgYWxsIHRocmVhZHMu DQo+ICsjIEhlbmNlLCBnbyB3aXRoIHRoZSBhbGwtc3RvcC1vbi10b3Atb2Ytbm9uLXN0b3AgbW9k ZS4NCj4gK3NhdmVfdmFycyB7IEdEQkZMQUdTIH0gew0KPiArICAgIGFwcGVuZCBHREJGTEFHUyAi IC1leCBcIm1haW50IHNldCB0YXJnZXQtbm9uLXN0b3Agb25cIiINCj4gKyAgICBjbGVhbl9yZXN0 YXJ0ICR7YmluZmlsZX0NCj4gK30NCj4gKw0KPiArIyBTdGFydCBpbmZlcmlvciBOVU0gYW5kIHJl Y29yZCBpdHMgUElEIGluIHRoZSBURVNUUElEIGFycmF5Lg0KPiArDQo+ICtwcm9jIHN0YXJ0X2lu ZmVyaW9yIHtudW19IHsNCj4gKyAgICB3aXRoX3Rlc3RfcHJlZml4ICJzdGFydF9pbmZlcmlvciAk bnVtIiB7DQo+ICsJZ2xvYmFsIHRlc3RwaWQgYmluZmlsZSBzcmNmaWxlDQo+ICsNCj4gKwlpZiB7 JG51bSAhPSAxfSB7DQo+ICsJICAgIGdkYl90ZXN0ICJhZGQtaW5mZXJpb3IiICJBZGRlZCBpbmZl cmlvciAuKiIgXA0KPiArCQkiYWRkIGVtcHR5IGluZmVyaW9yIg0KPiArCSAgICBnZGJfdGVzdCAi aW5mZXJpb3IgJG51bSIgIlN3aXRjaGluZyB0byBpbmZlcmlvciAuKiIgXA0KPiArCQkic3dpdGNo IHRvIGluZmVyaW9yIg0KPiArCX0NCj4gKw0KPiArCWdkYl9sb2FkICRiaW5maWxlDQo+ICsNCj4g KwlnZGJfYnJlYWtwb2ludCAiaW5pdGlhbGl6ZWQiIHt0ZW1wb3Jhcnl9DQo+ICsJZ2RiX3J1bl9j bWQNCj4gKwlnZGJfdGVzdCAiIiAiLipyZWFrcG9pbnQgLiosIGluaXRpYWxpemVkIC4qJHtzcmNm aWxlfS4qIiAicnVuIg0KPiArDQo+ICsJc2V0IHRlc3RwaWQoJG51bSkgW2dldF9pbnRlZ2VyX3Zh bHVlb2YgInBpZCIgLTFdDQo+ICsJaWYgeyR0ZXN0cGlkKCRudW0pID09IC0xfSB7DQo+ICsJICAg IHJldHVybiAtMQ0KPiArCX0NCj4gKw0KPiArCXJldHVybiAwDQo+ICsgICAgfQ0KPiArfQ0KPiAr DQo+ICsjIFN1ZmZpY2llbnQgaW5mZXJpb3JzIHRvIG1ha2Ugc3VyZSB0aGF0IGF0IGxlYXN0IHNv bWUgb3RoZXIgaW5mZXJpb3INCj4gKyMgaXMga2lsbGVkIHdoaWxlIHdlJ3JlIGhhbmRsaW5nIGEg a2lsbGVkIGV2ZW50Lg0KPiArc2V0IE5VTV9JTkZTIDEwDQo+ICsNCj4gK2ZvciB7c2V0IGkgMX0g eyRpIDw9ICROVU1fSU5GU30ge2luY3IgaX0gew0KPiArICAgIGlmIHtbc3RhcnRfaW5mZXJpb3Ig JGldIDwgMH0gew0KPiArCXJldHVybiAtMQ0KPiArICAgIH0NCj4gK30NCj4gKw0KPiArIyBXZSB3 YW50IHRvIGNvbnRpbnVlIGFsbCBwcm9jZXNzZXMuDQo+ICtnZGJfdGVzdF9ub19vdXRwdXQgInNl dCBzY2hlZHVsZS1tdWx0aXBsZSBvbiINCj4gKw0KPiArIyBSZXN1bWUsIGJ1dCB0aGVuIGtpbGwg YWxsIGZyb20gb3V0c2lkZS4NCj4gK2dkYl90ZXN0X211bHRpcGxlICJjb250aW51ZSIgImNvbnRp bnVlIHByb2Nlc3NlcyIgew0KPiArICAgIC1yZSAiQ29udGludWluZy5cW1xyXG5cXSsiIHsNCj4g KwkjIEtpbGwgYWxsIHByb2Nlc3NlcyBhdCBvbmNlLg0KPiArDQo+ICsJc2V0IGtpbGxfY21kICJr aWxsIC05Ig0KPiArCWZvciB7c2V0IGkgMX0geyRpIDw9ICROVU1fSU5GU30ge2luY3IgaX0gew0K PiArCSAgICBhcHBlbmQga2lsbF9jbWQgIiAkdGVzdHBpZCgkaSkiDQo+ICsJfQ0KPiArDQo+ICsJ cmVtb3RlX2V4ZWMgdGFyZ2V0ICRraWxsX2NtZA0KPiArCWV4cF9jb250aW51ZQ0KPiArICAgIH0N Cj4gKyAgICAtcmUgIlByb2dyYW0gdGVybWluYXRlZCB3aXRoIHNpZ25hbC4qJGdkYl9wcm9tcHQi IHsNCg0KSSdtIG5vdCBzdXJlIGlmIGl0IHJlYWxseSBtYXR0ZXJzLCBidXQgZm9yIGNvbnNpc3Rl bmN5IHdpdGggdGhlIG90aGVyDQpzaW1pbGFyIHJlZ2V4cHMgaGVyZSBhbmQgbXVsdGktZXhpdC5l eHAsIGhvdyBhYm91dCBlbmRpbmcgdGhpcyByZWdleHANCndpdGggIiAkIj8gIFRoYXQgaXM6DQoN CiAgICAgICAtcmUgIlByb2dyYW0gdGVybWluYXRlZCB3aXRoIHNpZ25hbC4qJGdkYl9wcm9tcHQg JCIgew0KDQpUaGFua3MuDQotQmFyaXMNCg0KDQpJbnRlbCBEZXV0c2NobGFuZCBHbWJIClJlZ2lz dGVyZWQgQWRkcmVzczogQW0gQ2FtcGVvbiAxMC0xMiwgODU1NzkgTmV1YmliZXJnLCBHZXJtYW55 ClRlbDogKzQ5IDg5IDk5IDg4NTMtMCwgd3d3LmludGVsLmRlCk1hbmFnaW5nIERpcmVjdG9yczog Q2hyaXN0aW4gRWlzZW5zY2htaWQsIEdhcnkgS2Vyc2hhdwpDaGFpcnBlcnNvbiBvZiB0aGUgU3Vw ZXJ2aXNvcnkgQm9hcmQ6IE5pY29sZSBMYXUKUmVnaXN0ZXJlZCBPZmZpY2U6IE11bmljaApDb21t ZXJjaWFsIFJlZ2lzdGVyOiBBbXRzZ2VyaWNodCBNdWVuY2hlbiBIUkIgMTg2OTI4Cg==