From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sender3-of-o90.zoho.com (sender3-of-o90.zoho.com [136.143.184.90]) by sourceware.org (Postfix) with ESMTPS id BD6663858409; Mon, 13 Dec 2021 01:39:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org BD6663858409 ARC-Seal: i=1; a=rsa-sha256; t=1639359574; cv=none; d=zohomail.com; s=zohoarc; b=h2mqGMqY4nLG3oWyX3rUvfiG0IRV9GOe6sHLHfX31/yLhySNmK5ESr+LnoGnEbhVvV4SJeYWUNLOptxBAIm7SG3gnvNPXw21trrT6FOQwThdEpZNjJ0ekQas8Np2yLQotCjhpqRdIys+DNfZMP2PpYiuOe6R9R1MHE5tpJnG4Cg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1639359574; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=br16xWbF043xUlQUnUPtaydOJ5xE3bQBM3bvHUzJRJ8=; b=eBnoZXOQz+v2m1/JKQjKU4HIFqUipSB+apgMh7Es2kufP6RNh9cnkx/DjqHiYHF/JnUYOjA0F2yJM8OvDUf1YbiW62y8WpRa3iQIhRZhmMaY9hCymT0XIwisiCEDLwYFcfdOZOItXNEpU+zKETJPLDKKBJ8WZ4ehNFnBYay2k8I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=zoho.com; spf=pass smtp.mailfrom=bouanto@zoho.com; dmarc=pass header.from= Received: from [192.168.1.174] (38.87.11.6 [38.87.11.6]) by mx.zohomail.com with SMTPS id 1639359570392231.33770814534853; Sun, 12 Dec 2021 17:39:30 -0800 (PST) Message-ID: <9e378de2a5b6e3dc7cc6268cb5a46121cae0516b.camel@zoho.com> Subject: Re: SV: [PATCH v2] jit: Add support for global rvalue initialization and ctors From: Antoni Boucher To: Petter Tomner , David Malcolm , "gcc-patches@gcc.gnu.org" , "jit@gcc.gnu.org" Date: Sun, 12 Dec 2021 20:39:28 -0500 In-Reply-To: References: <47b54ae597a44706aba180a05f1e5fe7@kth.se> , Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.42.2 MIME-Version: 1.0 Content-Transfer-Encoding: base64 X-ZohoMailClient: External X-Spam-Status: No, score=-10.4 required=5.0 tests=BAYES_00, BODY_8BITS, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, KAM_SHORT, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: jit@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Jit mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Dec 2021 01:39:46 -0000 WWVzLCB0aGlzIHBhdGNoIHdvcmtzIGZvciBydXN0Y19jb2RlZ2VuX2djYyBwZXJmZWN0bHkuCkl0 IGV2ZW4gZml4ZXMgb25lIGlzc3VlIHRoYXQgd2FzIGluIG15IHBhdGNoLCBzbyB0aGF0J3Mgbmlj ZSEKCkxlIHNhbWVkaSAxMSBkw6ljZW1icmUgMjAyMSDDoCAxNTozNSArMDAwMCwgUGV0dGVyIFRv bW5lciBhIMOpY3JpdMKgOgo+IEhpIQo+IAo+ID4gcy9hbiB1bmlvbi9hIHVuaW9uLwo+ID4gcy9h IHJ2YWx1ZS9hbiBydmFsdWUvCj4gCj4gSGVoIG5vIHdheSAuLi4gYW5kIEkgdGhvdWdoIEkga25l dyBFbmdsaXNoIGdyYW1tYXIgOikKPiAKPiBIYWQgdG8gbG9vayB0aGF0IHVwIHRvIHNlZSB3aGF0 IHRoZSBkZWFsIHdhcyBidXQgaXQgbWFrZXMgc2Vuc2UuIAo+IAo+IHl1bmlvbiwgYXJldmFsdWUu Cj4gCj4gPiBzL3dyb25nLWZpZWxkLW5hbWUvd3JvbmctZmllbGQtb2JqLwo+ID4gCj4gPiB0byBt YXRjaCB0aGUgc3RydWN0IGV4YW1wbGUgKGdpdmVuIHRoYXQgdGhlIGlzc3VlIGJlaW5nIHRlc3Rl ZCBmb3IKPiA+IGlzCj4gPiB0aGF0IGl0J3MgdGhlIHdyb25nIG9iamVjdCwgcmF0aGVyIHRoYW4g dGhlIHdyb25nIG5hbWUpLgo+IAo+IEluaXRpYWxseSwgYmVmb3JlIHN1Ym1pdHRpbmcgdG8gdGhl IGxpc3QsIEkgbWFkZSB0aGUgY29kZSBzdWNoIHRoYXQKPiB0aGUgZmllbGQgCj4gb2JqZWN0cyBk aWQgbm90IGhhdmUgdG8gYmUgdGhlIG9uZXMgdGhhdCB3ZXJlIHVzZWQgd2hlbiBjcmVhdGluZyB0 aGUgCj4gc3RydWN0IG9yIHVuaW9uLCBhbmQgZm9yZ290IGNoYW5naW5nIHRoZSB0ZXN0IG5hbWVz LiAKPiAKPiBJIGZpZ3VyZWQgaXQgcmVxdWlyZWQgdG9vIG11Y2ggc3RyaW5nIGNvbXBhcmVzIGZv ciB0aGUgZmllbGQgbmFtZXMKPiBhbmQgCj4gcG9pbnRlciBjb21wYXJlcyBmb3IgdGhlIGZpZWxk IG9iamVjdCB3ZXJlIG1vcmUgYXBwcm9wcmlhdGUuIFRvCj4gY3JlYXRlCj4gZHVtbXkgZmllbGQg b2JqZWN0cyB3ZXJlIGFsc28ga2luZGEgaGVhdnkuCj4gCj4gSSdsbCBhZGRyZXNzIHRoZSBwb2lu dHMuCj4gCj4gUmVnYXJkcywgUGV0dGVyCj4gCj4gCj4gRnLDpW46IERhdmlkIE1hbGNvbG0gPGRt YWxjb2xtQHJlZGhhdC5jb20+Cj4gU2tpY2thdDogZGVuIDkgZGVjZW1iZXIgMjAyMSAyMDozOQo+ IFRpbGw6IFBldHRlciBUb21uZXI7IGdjYy1wYXRjaGVzQGdjYy5nbnUub3JnOyBqaXRAZ2NjLmdu dS5vcmc7IEFudG9uaQo+IEJvdWNoZXIKPiDDhG1uZTogUmU6IFtQQVRDSCB2Ml0gaml0OiBBZGQg c3VwcG9ydCBmb3IgZ2xvYmFsIHJ2YWx1ZQo+IGluaXRpYWxpemF0aW9uIGFuZCBjdG9ycwo+IMKg wqDCoCAKPiBPbiBNb24sIDIwMjEtMTItMDYgYXQgMTA6NDcgKzAwMDAsIFBldHRlciBUb21uZXIg dmlhIEdjYy1wYXRjaGVzCj4gd3JvdGU6Cj4gPiBIaSEKPiA+IAo+ID4gQXR0YWNoZWQgaXMgYSBw YXRjaCB3aXRoIGNoYW5nZXMgaW4gbGluZSB3aXRoIHRoZSByZXZpZXcgb2YgdGhlCj4gPiBwcmlv cgo+ID4gcGF0Y2guCj4gPiBUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBpbml0aWFsaXphdGlv biBvZiBnbG9iYWwgdmFyaWFibGVzIHdpdGgKPiA+IHJ2YWx1ZXMgYXMgd2VsbAo+ID4gYXMgcnZh bHVlIGNvbnN0cnVjdG9ycyBmb3Igc3RydWN0cywgYXJyYXlzIGFuZCB1bmlvbnMuCj4gCj4gVGhh bmtzIGZvciB0aGUgdXBkYXRlZCBwYXRjaC4KPiAKPiBBbnRvbmk6IGRvZXMgdGhpcyBwYXRjaCB3 b3JrIGZvciB5b3UgZm9yIHlvdXIgcnVzdGMgcGx1Z2luPwo+IAo+ID4gCj4gPiBSZXZpZXc6IGh0 dHBzOi8vZ2NjLmdudS5vcmcvcGlwZXJtYWlsL2ppdC8yMDIxcTQvMDAxNDAwLmh0bWwKPiA+IAo+ ID4gVGhlIHBvaW50cyBoYXZlIGJlZW4gYWRkcmVzc2VkLCBleGNlcHQ6Cj4gPiAKPiA+ID4gQ2Fu IHRoZSB0eXBlIGJlIG1hZGUgY29uc3Q/Cj4gPiAKPiA+IEkgc3RhcnRlZCB0byBtYWtlIHR5cGVz X2tpbmRhX3NhbWVfaW50ZXJuYWwgKCkgdGFraW5nIGNvbnN0IGFyZ3MsCj4gPiBidXQgSQo+ID4g ZmVsdCB0aGUKPiA+IHBhdGNoIHdhcyBiYWxsb29uaW5nIGJlY2F1c2Ugc29tZSBzcHJlYWQgb3V0 IG1ldGhvZHMgbmVlZGVkIGEgY29uc3QKPiA+IHNpZ25hdHVyZSB0b28uIEkgY291bGQgc3VibWl0 IHRoYXQgaW4gYSBzZXBhcmF0ZSBwYXRjaC4KPiAKPiBGYWlyIGVub3VnaDsgZml4aW5nIHRoYXQg aXNuJ3QgYSBibG9ja2VyOyBpdCdzIGFscmVhZHkgYSBiaWcgcGF0Y2guCj4gCj4gPiAKPiA+IEkg YWxzbyBhZGRyZXNzZWQgYSBwcm9ibGVtIEFudG9uaSBmb3VuZDogCj4gPiBodHRwczovL2djYy5n bnUub3JnL3BpcGVybWFpbC9qaXQvMjAyMXE0LzAwMTM5OS5odG1sCj4gPiAKPiA+ICwgd2hlcmUg eW91IGNvdWxkIG5vdCBpbml0aWFsaXplIGdsb2JhbCBwb2ludGVyIHZhcmlhYmxlcyB0byBwb2lu dAo+ID4gdG8KPiA+IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBJIGRpZCB0aGF0IGJ5IAo+ID4g cmVtb3ZpbmcgYSByZWR1bmRhbnQgY2hlY2sgd2l0aCB2YWxpZGF0ZV92YXJfaGFzX2luaXQgKCks IHNpbmNlCj4gPiB0aGF0Cj4gPiB3YWxraW5nIGZ1bmN0aW9uIHdvdWxkCj4gPiBoYXZlIHRvIGJl IHF1aXRlIGNvbXBsZXggdG8gYWxsb3cgcG9pbnRlcnMgdG8gdW5pbml0aWFsaXplZAo+ID4gdmFy aWFibGVzLgo+ID4gCj4gPiBBbnk6Cj4gPiBjb25zdCBpbnQgZm9vOwo+ID4gaW50IGJhciA9IGZv bzsKPiA+IAo+ID4gd2lsbCBpbnN0ZWFkIGJlIHJlcG9ydGVkIGFzICJub3QgY29tcGlsZSB0aW1l IGNvbnN0YW50IiBpbnN0ZWFkIG9mCj4gPiBhCj4gPiBuaWNlIGVycm9yIG1lc3NhZ2Ugd2l0aCBu YW1lcy4KPiA+IAo+ID4gbWFrZSBjaGVjay1qaXQgcnVucyBmaW5lIG9uIGdudS1saW51eC14NjQg RGViaWFuLgo+IAo+IFZhcmlvdXMgcmV2aWV3IGNvbW1lbnRzIGlubGluZSBiZWxvdywgd2hpY2gg YXJlIG1vc3RseSBqdXN0IG5pdHM6Cj4gCj4gPiBGcm9tIGE0ZmVmMTMwOGVhYTcyY2U0ZWM1MWRi ZTVlZmNmYmJmMDMyZTk4NzAgTW9uIFNlcCAxNyAwMDowMDowMAo+ID4gMjAwMQo+ID4gRnJvbTog UGV0dGVyIFRvbW5lciA8dG9tbmVyQGt0aC5zZT4KPiA+IERhdGU6IE1vbiwgMjkgTm92IDIwMjEg MjA6NDQ6MDcgKzAxMDAKPiA+IFN1YmplY3Q6IFtQQVRDSF0gQWRkIHN1cHBvcnQgZm9yIGdsb2Jh bCBydmFsdWUgaW5pdGlhbGl6YXRpb24gYW5kCj4gPiBjb25zdHJ1Y3RvcnMKPiA+IAo+ID4gVGhp cyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGluaXRpYWxpemF0aW9uIG9mIGdsb2JhbCB2YXJpYWJs ZXMKPiA+IHdpdGggcnZhbHVlcyBhbmQgY3JlYXRpbmcgY29uc3RydWN0b3JzIGZvciBhcnJheSwg c3RydWN0IGFuZAo+ID4gdW5pb24gdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgYXMgcnZhbHVlcy4K PiA+IAo+ID4gU2lnbmVkLW9mZi1ieToKPiA+IDIwMjEtMTItMDbCoMKgwqAgUGV0dGVyIFRvbW5l csKgwqAgPHRvbW5lckBrdGguc2U+Cj4gCj4gWy4uLnNuaXAuLi5dCj4gCj4gPiBkaWZmIC0tZ2l0 IGEvZ2NjL2ppdC9kb2NzL3RvcGljcy9leHByZXNzaW9ucy5yc3QKPiA+IGIvZ2NjL2ppdC9kb2Nz L3RvcGljcy9leHByZXNzaW9ucy5yc3QKPiA+IGluZGV4IDM5NjI1OWVmMDdlLi41ZjY0Y2E2ODU5 NSAxMDA2NDQKPiA+IC0tLSBhL2djYy9qaXQvZG9jcy90b3BpY3MvZXhwcmVzc2lvbnMucnN0Cj4g PiArKysgYi9nY2Mvaml0L2RvY3MvdG9waWNzL2V4cHJlc3Npb25zLnJzdAo+ID4gQEAgLTEyNiw2 ICsxMjYsMTQ3IEBAIFNpbXBsZSBleHByZXNzaW9ucwo+ID4gwqDCoMKgwqAgdW5kZXJseWluZyBz dHJpbmcsIHNvIGl0IGlzIHZhbGlkIHRvIHBhc3MgaW4gYSBwb2ludGVyIHRvIGFuCj4gPiBvbi1z dGFjawo+ID4gwqDCoMKgwqAgYnVmZmVyLgo+ID4gwqAgCj4gPiArQ29uc3RydWN0b3IgZXhwcmVz c2lvbnMKPiA+ICsqKioqKioqKioqKioqKioqKioqKioqKgo+ID4gKwo+ID4gK8KgwqAgVGhlIGZv bGxvd2luZyBmdW5jdGlvbnMgbWFrZSBjb25zdHJ1Y3RvcnMgZm9yIGFycmF5LCBzdHJ1Y3QgYW5k Cj4gPiB1bmlvbgo+ID4gK8KgwqAgdHlwZXMuCj4gPiArCj4gPiArwqDCoCBUaGUgY29uc3RydWN0 b3IgcnZhbHVlIGNhbiBiZSB1c2VkIGZvciBhc3NpZ25tZW50IHRvIGxvY2Fscy4KPiA+ICvCoMKg IEl0IGNhbiBiZSB1c2VkIHRvIGluaXRpYWxpemUgZ2xvYmFsIHZhcmlhYmxlcyB3aXRoCj4gPiAr wqDCoCA6ZnVuYzpgZ2NjX2ppdF9nbG9iYWxfc2V0X2luaXRpYWxpemVyX3J2YWx1ZWAuIEl0IGNh biBhbHNvIGJlCj4gPiB1c2VkIGFzIGEKPiA+ICvCoMKgIHRlbXBvcmFyeSB2YWx1ZSBmb3IgZnVu Y3Rpb24gY2FsbHMgYW5kIHJldHVybiB2YWx1ZXMsIGJ1dCBpdHMKPiA+IGFkZHJlc3MKPiA+ICvC oMKgIGNhbid0IGJlIHRha2VuLgo+ID4gKwo+ID4gK8KgwqAgTm90ZSB0aGF0IGFycmF5cyBpbiBs aWJnY2NqaXQgZG9lcyBub3QgY29sbGFwc2UgdG8gcG9pbnRlcnMKPiA+IGxpa2UgaW4KPiAKPiBz L2RvZXMgbm90L2RvIG5vdC8KPiAKPiA+ICvCoMKgIEMuIEkuZS4gaWYgYW4gYXJyYXkgY29uc3Ry dWN0b3IgaXMgdXNlZCBhcyBlLmcuIGEgcmV0dXJuIHZhbHVlLAo+ID4gdGhlIHdob2xlCj4gPiAr wqDCoCBhcnJheSB3b3VsZCBiZSByZXR1cm5lZCBieSB2YWx1ZSAtIGFycmF5IGNvbnN0cnVjdG9y cyBjYW4gYmUKPiA+IGFzc2lnbmVkIHRvCj4gPiArwqDCoCBhcnJheSB2YXJpYWJsZXMuCj4gPiAr Cj4gPiArwqDCoCBUaGUgY29uc3RydWN0b3IgY2FuIGNvbnRhaW4gbmVzdGVkIGNvbnN0cnVjdG9y cy4KPiA+ICsKPiA+ICvCoMKgIE5vdGUgdGhhdCBhIHN0cmluZyBsaXRlcmFsIHJ2YWx1ZSBjYW4n dCBiZSB1c2VkIHRvIGNvbnN0cnVjdCBhCj4gPiBjaGFyIGFycmF5Lgo+ID4gK8KgwqAgSXQgbmVl ZCBvbmUgcnZhbHVlIGZvciBlYWNoIGNoYXIuCj4gCj4gcy9jaGFyIGFycmF5LsKgIEl0IG5lZWQg b25lIHJ2YWx1ZS9jaGFyIGFycmF5OyB0aGUgbGF0dGVyIG5lZWRzIG9uZQo+IHJ2YWx1ZS8KPiAK PiA+ICsKPiA+ICvCoMKgIFRoZXNlIGVudHJ5cG9pbnRzIHdlcmUgYWRkZWQgaW4gOnJlZjpgTElC R0NDSklUX0FCSV8xNmA7IHlvdQo+ID4gY2FuIHRlc3QgZm9yIGl0cwo+IAo+IHMvMTYvMTcvwqAg SSBiZWxpZXZlLgo+IAo+IHMvaXRzL3RoZWlyLwo+IAo+IAo+ID4gK8KgwqAgcHJlc2Vuc2UgdXNp bmc6Cj4gCj4gcy9wcmVzZW5zZS9wcmVzZW5jZS8KPiAKPiAoYW5kIGluIHZhcmlvdXMgb3RoZXIg cGxhY2VzIGJlbG93KQo+IAo+IAo+ID4gK8KgwqAgLi4gY29kZS1ibG9jazo6IGMKPiA+ICvCoMKg wqDCoCAjaWZkZWYgTElCR0NDSklUX0hBVkVfQ1RPUlMKPiA+ICsKPiA+ICsuLiBmdW5jdGlvbjo6 IGdjY19qaXRfcnZhbHVlICpcCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2NjX2ppdF9jb250 ZXh0X25ld19hcnJheV9jb25zdHJ1Y3RvciAoZ2NjX2ppdF9jb250ZXh0Cj4gPiAqY3R4dCxcCj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2NjX2ppdF9sb2Nh dGlvbgo+ID4gKmxvYyxcCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgZ2NjX2ppdF90eXBlCj4gPiAqdHlwZSxcCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgc2l6ZV90Cj4gPiBhcnJfbGVuZ3RoLFwKPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnY2Nfaml0X3J2YWx1ZQo+ID4gKip2 YWx1ZXMpCj4gPiArCj4gPiArwqDCoCBDcmVhdGUgYSBjb25zdHJ1Y3RvciBmb3IgYW4gYXJyYXkg YXMgYSBydmFsdWUuCj4gPiArCj4gPiArwqDCoCBSZXR1cm5zIE5VTEwgb24gZXJyb3IuIGBgdmFs dWVzYGAgYXJlIGNvcGllZCBhbmQKPiA+ICvCoMKgIGRvIG5vdCBoYXZlIHRvIG91dGxpdmUgdGhl IGNvbnRleHQuCj4gPiArCj4gPiArwqDCoCBgYHR5cGVgYCBzcGVjaWZpZXMgd2hhdCB0aGUgY29u c3RydWN0b3Igd2lsbCBidWlsZCBhbmQgaGFzIHRvCj4gPiBiZQo+ID4gK8KgwqAgYW4gYXJyYXku Cj4gPiArCj4gPiArwqDCoCBgYGFycl9sZW5ndGhgYCBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBl bGVtZW50cyBpbiBgYHZhbHVlc2BgCj4gPiBhbmQKPiA+ICvCoMKgIGl0IGNhbid0IGhhdmUgbW9y ZSBlbGVtZW50cyB0aGFuIHRoZSBhcnJheSB0eXBlLgo+IAo+IExldCdzIHJlbmFtZSB0aGlzIHRv IGBgbnVtX3ZhbHVlc2BgIChib3RoIGluIHRoZSBkb2NzLCBhbmQgaW4KPiBsaWJnY2NqaXQuYyBh bmQgLmgsIGluIGFsbCBvZiB0aGUgdmFyaW91cyBwbGFjZXMpLCBzaW5jZSB0aGlzIHdpbGwKPiBt YWtlCj4gaXQgY2xlYXJlciB0aGF0IHdlJ3JlIHRhbGtpbmcgYWJvdXQgdGhlIHNpemUgb2YgInZh bHVlcyIsIHJhdGhlciB0aGFuCj4gdGhhdCBvZiB0aGUgdHlwZS4KPiAKPiA+ICsKPiA+ICvCoMKg IEVhY2ggdmFsdWUgaW4gYGB2YWx1ZXNgYCBzZXRzIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGlu IHRoZQo+ID4gYXJyYXkuCj4gPiArwqDCoCBJZiB0aGUgYXJyYXkgdHlwZSBpdHNlbGYgaGFzIG1v cmUgZWxlbWVudHMgdGhhbiBgYHZhbHVlc2BgLCB0aGUKPiA+ICvCoMKgIGxlZnQtb3ZlciBlbGVt ZW50cyB3aWxsIGJlIHplcm9lZC4KPiA+ICsKPiA+ICvCoMKgIEVhY2ggdmFsdWUgaW4gYGB2YWx1 ZXNgYCBuZWVkIHRvIGJlIHRoZSBzYW1lIHVucXVhbGlmaWVkIHR5cGUKPiA+IGFzIHRoZQo+ID4g K8KgwqAgYXJyYXkgdHlwZSdzIGVsZW1lbnQgdHlwZS4KPiA+ICsKPiA+ICvCoMKgIElmIGBgYXJy X2xlbmd0aGBgIGlzIDAsIHRoZSBgYHZhbHVlc2BgIHBhcmFtZXRlciB3aWxsIGJlCj4gPiArwqDC oCBpZ25vcmVkIGFuZCB6ZXJvIGluaXRpYWxpemF0aW9uIHdpbGwgYmUgdXNlZC4KPiA+ICsKPiA+ ICvCoMKgIFRoaXMgZW50cnlwb2ludCB3YXMgYWRkZWQgaW4gOnJlZjpgTElCR0NDSklUX0FCSV8x N2A7IHlvdSBjYW4KPiA+IHRlc3QgZm9yIGl0cwo+ID4gK8KgwqAgcHJlc2Vuc2UgdXNpbmc6Cj4g PiArCj4gPiArwqDCoCAuLiBjb2RlLWJsb2NrOjogYwo+ID4gK8KgwqDCoMKgICNpZmRlZiBMSUJH Q0NKSVRfSEFWRV9DVE9SUwo+ID4gKwo+ID4gKy4uIGZ1bmN0aW9uOjogZ2NjX2ppdF9ydmFsdWUg KlwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBnY2Nfaml0X2NvbnRleHRfbmV3X3N0cnVjdF9j b25zdHJ1Y3RvciAoZ2NjX2ppdF9jb250ZXh0Cj4gPiAqY3R4dCxcCj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+ID4gZ2NjX2ppdF9sb2NhdGlvbiAqbG9j LFwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdjY19q aXRfdHlwZQo+ID4gKnR5cGUsXAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgc2l6ZV90Cj4gPiBhcnJfbGVuZ3RoLFwKPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdjY19qaXRfZmllbGQKPiA+ICoqZmllbGRzLFwK PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdjY19qaXRf cnZhbHVlCj4gPiAqKnZhbHVlKQo+ID4gKwo+ID4gKwo+ID4gK8KgwqAgQ3JlYXRlIGEgY29uc3Ry dWN0b3IgZm9yIGFuIHN0cnVjdCBhcyBhIHJ2YWx1ZS4KPiA+ICsKPiA+ICvCoMKgIFJldHVybnMg TlVMTCBvbiBlcnJvci4gVGhlIHR3byBwYXJhbWV0ZXIgYXJyYXlzIGFyZSBjb3BpZWQgYW5kCj4g PiArwqDCoCBkbyBub3QgaGF2ZSB0byBvdXRsaXZlIHRoZSBjb250ZXh0Lgo+ID4gKwo+ID4gK8Kg wqAgYGB0eXBlYGAgc3BlY2lmaWVzIHdoYXQgdGhlIGNvbnN0cnVjdG9yIHdpbGwgYnVpbGQgYW5k IGhhcyB0bwo+ID4gYmUKPiA+ICvCoMKgIGEgc3RydWN0Lgo+ID4gKwo+ID4gK8KgwqAgYGBhcnJf bGVuZ3RoYGAgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gYGB2YWx1ZXNgYC4K PiAKPiBBZ2FpbiwgbGV0J3MgbWFrZSB0aGlzICJudW1fdmFsdWVzIiBoZXJlIGFuZCBpbiB0aGUg LmMvLmgsIGZvcgo+IGNsYXJpdHkuCj4gCj4gCj4gWy4uLnNuaXAuLi5dCj4gCj4gPiBAQCAtNjAz LDYgKzc0NCwzOCBAQCBHbG9iYWwgdmFyaWFibGVzCj4gPiDCoCAKPiA+IMKgwqDCoMKgwqDCoMKg ICNpZmRlZiBMSUJHQ0NKSVRfSEFWRV9nY2Nfaml0X2dsb2JhbF9zZXRfaW5pdGlhbGl6ZXIKPiA+ IMKgIAo+ID4gKy4uIGZ1bmN0aW9uOjogZ2NjX2ppdF9sdmFsdWUgKlwKPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoCBnY2Nfaml0X2dsb2JhbF9zZXRfaW5pdGlhbGl6ZXJfcnZhbHVlIChnY2Nfaml0 X2x2YWx1ZQo+ID4gKmdsb2JhbCwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBnY2Nfaml0X3J2YWx1ZQo+ID4gKmluaXRfdmFsdWUpCj4gPiArCj4gPiArwqDC oCBTZXQgdGhlIGluaXRpYWwgdmFsdWUgb2YgYSBnbG9iYWwgd2l0aCBhbiBydmFsdWUuCj4gPiAr Cj4gPiArwqDCoCBUaGUgcnZhbHVlIG5lZWQgdG8gYmUgYSBjb25zdGFudCBleHByZXNzaW9uLCBl LmcuIG5vIGZ1bmN0aW9uCj4gPiBjYWxscy4KPiAKPiBzL25lZWQvbmVlZHMvCj4gCj4gWy4uLnNu aXAuLi5dCj4gCj4gPiArdm9pZAo+ID4gK3BsYXliYWNrOjpjb250ZXh0OjoKPiA+ICtnbG9iYWxf c2V0X2luaXRfcnZhbHVlIChsdmFsdWUqIHZhcmlhYmxlLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcnZhbHVlKiBpbml0KQo+ID4gK3sKPiA+ICvCoCB0cmVl IGlubmVyID0gdmFyaWFibGUtPmFzX3RyZWUgKCk7Cj4gPiArCj4gPiArwqAgLyogV2UgbmVlZCB0 byBmb2xkIGFsbCBleHByZXNzaW9ucyBhcyBtdWNoIGFzIHBvc3NpYmxlLsKgIFRoZQo+ID4gY29k ZQo+ID4gK8KgwqDCoMKgIGZvciBhIERFQ0xfSU5JVElBTCBvbmx5IGhhbmRsZXMgc29tZSBvcGVy YXRpb25zLAo+ID4gK8KgwqDCoMKgIGV0YyBhZGRpdGlvbiwgbWludXMsICdhZGRyZXNzIG9mJy7C oCBTZWUKPiA+IG91dHB1dF9hZGRyZXNzZWRfY29uc3RhbnRzICgpCj4gPiArwqDCoMKgwqAgaW4g dmFyYXNtLmMuwqAgKi8KPiA+ICvCoCB0cmVlIGluaXRfdHJlZSA9IGluaXQtPmFzX3RyZWUgKCk7 Cj4gPiArwqAgdHJlZSBmb2xkZWQgPSBmb2xkX2NvbnN0X3ZhciAoaW5pdF90cmVlKTsKPiA+ICsK PiA+ICvCoCBpZiAoIVRSRUVfQ09OU1RBTlQgKGZvbGRlZCkpCj4gPiArwqDCoMKgIHsKPiA+ICvC oMKgwqDCoMKgIHRyZWUgbmFtZSA9IERFQ0xfTkFNRSAoaW5uZXIpOwo+ID4gKwo+ID4gK8KgwqDC oMKgwqAgYWRkX2Vycm9yIChOVUxMLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJ1 bmFibGUgdG8gY29udmVydCBpbml0aWFsIHZhbHVlIGZvciB0aGUgZ2xvYmFsCj4gPiB2YXJpYWJs ZSAlcyIKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiIHRvIGEgY29tcGlsZS10aW1l IGNvbnN0YW50IiwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuYW1lICE9IE5VTExf VFJFRSA/IElERU5USUZJRVJfUE9JTlRFUiAobmFtZSkgOgo+ID4gTlVMTCk7Cj4gCj4gSXQncyBu b3Qgc2FmZSBpbiBnZW5lcmFsIHRvIHVzZSBOVUxMIHdpdGggJXMsIHNvIHRoaXMgbmVlZHMgdG8g YmUKPiBzcGxpdAo+IGludG8gc29tZXRoaW5nIGxpa2U6Cj4gCj4gwqDCoMKgwqDCoCBpZiAobmFt ZSkKPiDCoMKgwqDCoMKgwqDCoCBhZGRfZXJyb3IgKE5VTEwsCj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICJ1bmFibGUgdG8gY29udmVydCBpbml0aWFsIHZhbHVlIGZvciB0 aGUgZ2xvYmFsCj4gdmFyaWFibGUgJXMiCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICIgdG8gYSBjb21waWxlLXRpbWUgY29uc3RhbnQiLAo+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBJREVOVElGSUVSX1BPSU5URVIpOwo+IMKgwqDCoMKgwqAgZWxz ZQo+IMKgwqDCoMKgwqDCoMKgIGFkZF9lcnJvciAoTlVMTCwKPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgInVuYWJsZSB0byBjb252ZXJ0IGluaXRpYWwgdmFsdWUgZm9yIGds b2JhbAo+IHZhcmlhYmxlIgo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAi IHRvIGEgY29tcGlsZS10aW1lIGNvbnN0YW50Iik7Cj4gCj4gWy4uLnNuaXAuLi5dCj4gCj4gPiBk aWZmIC0tZ2l0IGEvZ2NjL2ppdC9saWJnY2NqaXQuaCBiL2djYy9qaXQvbGliZ2Njaml0LmgKPiA+ IGluZGV4IGExYzk0MzZjNTQ1Li45NjdkODg0M2E5OCAxMDA2NDQKPiA+IC0tLSBhL2djYy9qaXQv bGliZ2Njaml0LmgKPiA+ICsrKyBiL2djYy9qaXQvbGliZ2Njaml0LmgKPiA+IEBAIC04MTIsNiAr ODEyLDE1OSBAQCBnY2Nfaml0X2NvbnRleHRfbmV3X2dsb2JhbCAoZ2NjX2ppdF9jb250ZXh0Cj4g PiAqY3R4dCwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBnY2Nfaml0X3R5cGUgKnR5cGUsCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgY2hhciAqbmFtZSk7Cj4gPiDC oCAKPiA+ICsjZGVmaW5lIExJQkdDQ0pJVF9IQVZFX0NUT1JTCj4gPiArCj4gPiArLyogQ3JlYXRl IGEgY29uc3RydWN0b3IgZm9yIGFuIHN0cnVjdCBhcyBhIHJ2YWx1ZS4KPiAKPiBzL2FuIHN0cnVj dC9hIHN0cnVjdC8KPiAKPiBzL2EgcnZhbHVlL2FuIHJ2YWx1ZS8KPiAKPiBbLi4uc25pcC4uLl0K PiAKPiAKPiA+ICtleHRlcm4gZ2NjX2ppdF9ydmFsdWUgKgo+ID4gK2djY19qaXRfY29udGV4dF9u ZXdfc3RydWN0X2NvbnN0cnVjdG9yIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsCj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGdjY19qaXRfbG9jYXRpb24gKmxvYywKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2Nj X2ppdF90eXBlICp0eXBlLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzaXplX3QgYXJyX2xlbmd0aCwK PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2NjX2ppdF9maWVsZCAqKmZpZWxkcywKPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZ2NjX2ppdF9ydmFsdWUgKip2YWx1ZXMpOwo+ID4gKwo+ID4gKy8qIENyZWF0ZSBh IGNvbnN0cnVjdG9yIGZvciBhbiB1bmlvbiBhcyBhIHJ2YWx1ZS4KPiAKPiBzL2FuIHVuaW9uL2Eg dW5pb24vCj4gcy9hIHJ2YWx1ZS9hbiBydmFsdWUvCj4gCj4gWy4uLnNuaXAuLi5dCj4gCj4gPiAr LyogQ3JlYXRlIGEgY29uc3RydWN0b3IgZm9yIGFuIGFycmF5IGFzIGEgcnZhbHVlLgo+IAo+IHMv YSBydmFsdWUvYW4gcnZhbHVlLwo+IAo+IFsuLi5zbmlwLi4uXQo+IAo+ID4gZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvaml0LmRnL3Rlc3QtZXJyb3ItY3Rvci1hcnJheS13cm9uZy0KPiA+IHR5 cGUuYyBiL2djYy90ZXN0c3VpdGUvaml0LmRnL3Rlc3QtZXJyb3ItY3Rvci1hcnJheS13cm9uZy10 eXBlLmMKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAwMC4uMWNl ODNiMmVkNmMKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL2djYy90ZXN0c3VpdGUvaml0LmRn L3Rlc3QtZXJyb3ItY3Rvci1hcnJheS13cm9uZy10eXBlLmMKPiA+IEBAIC0wLDAgKzEsNTQgQEAK PiA+ICsvKgo+ID4gKwo+ID4gK8KgIFRlc3QgdGhhdCB0aGUgcHJvcGVyIGVycm9yIGlzIHRyaWdn ZXJlZCB3aGVuIHdlIGJ1aWxkIGEgY3Rvcgo+ID4gK8KgIGZvciBhbiBhcnJheSB0eXBlLCBidXQg aGFzIHRoZSB0eXBlIHdyb25nIG9uIGFuIGVsZW1lbnQuCj4gPiArCj4gPiArKi8KPiA+ICsKPiA+ ICsjaW5jbHVkZSA8c3RkbGliLmg+Cj4gPiArI2luY2x1ZGUgPHN0ZGlvLmg+Cj4gPiArCj4gPiAr I2luY2x1ZGUgImxpYmdjY2ppdC5oIgo+ID4gKyNpbmNsdWRlICJoYXJuZXNzLmgiCj4gPiArCj4g PiArdm9pZAo+ID4gK2NyZWF0ZV9jb2RlIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIHZvaWQgKnVz ZXJfZGF0YSkKPiA+ICt7Cj4gPiArwqAgZ2NjX2ppdF90eXBlICppbnRfdHlwZSA9IGdjY19qaXRf Y29udGV4dF9nZXRfdHlwZSAoY3R4dCwKPiA+ICvCoMKgwqAgR0NDX0pJVF9UWVBFX0lOVCk7Cj4g PiArwqAgZ2NjX2ppdF90eXBlICpmbG9hdF90eXBlID0gZ2NjX2ppdF9jb250ZXh0X2dldF90eXBl IChjdHh0LAo+ID4gK8KgwqDCoCBHQ0NfSklUX1RZUEVfRkxPQVQpOwo+ID4gKwo+ID4gK8KgIGdj Y19qaXRfdHlwZSAqYXJyX3R5cGUgPQo+ID4gK8KgwqDCoCBnY2Nfaml0X2NvbnRleHRfbmV3X2Fy cmF5X3R5cGUgKGN0eHQsIDAsIGludF90eXBlLCAxMCk7Cj4gPiArCj4gPiArwqAgZ2NjX2ppdF9y dmFsdWUgKmZydiA9IGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21fZG91YmxlCj4gPiAo Y3R4dCwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAKPiA+IGZsb2F0X3R5cGUsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDEyKTsKPiA+ICsK PiA+ICvCoCBnY2Nfaml0X3J2YWx1ZSAqY3RvciA9IGdjY19qaXRfY29udGV4dF9uZXdfYXJyYXlf Y29uc3RydWN0b3IKPiA+ICvCoMKgwqAgKGN0eHQsIDAsCj4gPiArwqDCoMKgwqAgYXJyX3R5cGUs Cj4gPiArwqDCoMKgwqAgMSwKPiA+ICvCoMKgwqDCoCAmZnJ2KTsKPiA+ICsKPiA+ICvCoCBDSEVD S19WQUxVRSAoY3RvciwgTlVMTCk7Cj4gPiArfQo+ID4gKwo+ID4gK3ZvaWQKPiA+ICt2ZXJpZnlf Y29kZSAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LCBnY2Nfaml0X3Jlc3VsdCAqcmVzdWx0KQo+ID4g K3sKPiA+ICvCoCAvKiBFbnN1cmUgdGhhdCB0aGUgYmFkIEFQSSB1c2FnZSBwcmV2ZW50cyB0aGUg QVBJIGdpdmluZyBhIGJvZ3VzCj4gPiArwqDCoMKgwqAgcmVzdWx0IGJhY2suwqAgKi8KPiA+ICvC oCBDSEVDS19WQUxVRSAocmVzdWx0LCBOVUxMKTsKPiA+ICsKPiA+ICvCoCAvKiBWZXJpZnkgdGhh dCB0aGUgY29ycmVjdCBlcnJvciBtZXNzYWdlIHdhcyBlbWl0dGVkLiAqLwo+ID4gK8KgIENIRUNL X1NUUklOR19WQUxVRSAoZ2NjX2ppdF9jb250ZXh0X2dldF9maXJzdF9lcnJvciAoY3R4dCksCj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJnY2Nfaml0X2NvbnRleHRf bmV3X2FycmF5X2NvbnN0cnVjdG9yOiBhcnJheQo+ID4gZWxlbWVudCAiCj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJ2YWx1ZSB0eXBlcyBkaWZmZXIgZnJvbSB0eXBl cyBpbiAndmFsdWVzJwo+ID4gKGVsZW1lbnQgIgo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAidHlwZTogaW50KSgndmFsdWVzJyB0eXBlOiBmbG9hdCkiKTsKPiA+ICvC oCBDSEVDS19TVFJJTkdfVkFMVUUgKGdjY19qaXRfY29udGV4dF9nZXRfZmlyc3RfZXJyb3IgKGN0 eHQpLAo+IAo+IExvb2tzIGxpa2UgYSBjb3B5JnBhc3RlIGVycm9yOiB0aGUgc2Vjb25kIENIRUNL X1NUUklOR19WQUxVRSBpcwo+IHByZXN1bWFibHkgbWVhbnQgdG8gY2hlY2sgZ2V0X2xhc3RfZXJy b3IgaGVyZSwgcmF0aGVyIHRoYW4gY2hlY2tpbmcKPiBnZXRfZmlyc3RfZXJyb3IgYWdhaW4sIHJp Z2h0Pwo+IAo+IE1pZ2h0IGJlIGdvb2QgdG8gaW50cm9kdWNlIGEgbWFjcm8sIHNheSwgRVhQRUNU RURfRVJST1JfTUVTU0FHRSwgdG8KPiBhdm9pZCByZXBlYXRpbmcgdGhlIHN0cmluZyBsaXRlcmFs LCB3aGljaCB3b3VsZCBtYWtlIHN1Y2ggY29weSZwYXN0ZQo+IGVycm9ycyBtb3JlIG9idmlvdXMg KGFuZCBhdm9pZCByZXBldGl0aW9uKSwgZm9yIGFsbCBvZiB0aGVzZSB2YXJpb3VzCj4gZXJyb3Ig Y2FzZXMuCj4gCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJnY2Nf aml0X2NvbnRleHRfbmV3X2FycmF5X2NvbnN0cnVjdG9yOiBhcnJheQo+ID4gZWxlbWVudCAiCj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJ2YWx1ZSB0eXBlcyBkaWZm ZXIgZnJvbSB0eXBlcyBpbiAndmFsdWVzJwo+ID4gKGVsZW1lbnQgIgo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAidHlwZTogaW50KSgndmFsdWVzJyB0eXBlOiBmbG9h dCkiKTsKPiA+ICt9Cj4gCj4gWy4uLnNuaXAuLi5dCj4gCj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9qaXQuZGcvdGVzdC1lcnJvci1jdG9yLXVuaW9uLXdyb25nLQo+ID4gZmllbGQtbmFt ZS5jIGIvZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvdGVzdC1lcnJvci1jdG9yLXVuaW9uLXdyb25nLQo+ ID4gZmllbGQtbmFtZS5jCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAw MDAwMDAuLjJiZjhlZTQwMjNlCj4gPiAtLS0gL2Rldi9udWxsCj4gPiArKysgYi9nY2MvdGVzdHN1 aXRlL2ppdC5kZy90ZXN0LWVycm9yLWN0b3ItdW5pb24td3JvbmctZmllbGQtbmFtZS5jCj4gCj4g cy93cm9uZy1maWVsZC1uYW1lL3dyb25nLWZpZWxkLW9iai8KPiAKPiB0byBtYXRjaCB0aGUgc3Ry dWN0IGV4YW1wbGUgKGdpdmVuIHRoYXQgdGhlIGlzc3VlIGJlaW5nIHRlc3RlZCBmb3IgaXMKPiB0 aGF0IGl0J3MgdGhlIHdyb25nIG9iamVjdCwgcmF0aGVyIHRoYW4gdGhlIHdyb25nIG5hbWUpLgo+ IAo+IAo+IFsuLi5zbmlwLi4uXQo+IAo+ID4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvaml0 LmRnL3Rlc3QtZXJyb3ItZ2xvYmFsLWluaXQtdG9vLXNtYWxsLQo+ID4gYXJyYXkuYyBiL2djYy90 ZXN0c3VpdGUvaml0LmRnL3Rlc3QtZXJyb3ItZ2xvYmFsLWluaXQtdG9vLXNtYWxsLQo+ID4gYXJy YXkuYwo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAwMDAwMDAwLi45OTZk OTU4Mzg2MAo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcv dGVzdC1lcnJvci1nbG9iYWwtaW5pdC10b28tc21hbGwtYXJyYXkuYwo+ID4gQEAgLTAsMCArMSw2 NSBAQAo+ID4gKy8qCj4gPiArCj4gPiArwqAgVGVzdCB0aGF0IHRoZSBwcm9wZXIgZXJyb3IgaXMg dHJpZ2dlcmVkIHdoZW4gd2UgaW5pdGlhbGl6ZQo+ID4gK8KgIGEgZ2xvYmFsIHdpdGggYW5vdGhl ciBub24tY29uc3QgZ2xvYmFsJ3MgcnZhbHVlLgo+IAo+IEkgdGhpbmsgdGhpcyBjb21tZW50IGlz IHdyb25nOyB0aGUgZmlsZW5hbWUgYW5kIGNvZGUgc3VnZ2VzdCB0aGlzIGlzCj4gdGVzdGluZyBz b21ldGhpbmcgZWxzZS7CoCBMb29rcyBsaWtlIGEgY29weSZwYXN0ZSBlcnJvciBmcm9tIHRoZQo+ IGNvbW1lbnQKPiBpbiB0ZXN0LWVycm9yLWdsb2JhbC1sdmFsdWUtaW5pdC5jCj4gCj4gPiArCj4g PiArwqAgVXNpbmcgZ2NjX2ppdF9nbG9iYWxfc2V0X2luaXRpYWxpemVyX3J2YWx1ZSgpCj4gPiAr Cj4gPiArKi8KPiA+ICsKPiA+ICsjaW5jbHVkZSA8c3RkbGliLmg+Cj4gPiArI2luY2x1ZGUgPHN0 ZGlvLmg+Cj4gPiArCj4gPiArI2luY2x1ZGUgImxpYmdjY2ppdC5oIgo+ID4gKyNpbmNsdWRlICJo YXJuZXNzLmgiCj4gPiArCj4gPiArdm9pZAo+ID4gK2NyZWF0ZV9jb2RlIChnY2Nfaml0X2NvbnRl eHQgKmN0eHQsIHZvaWQgKnVzZXJfZGF0YSkKPiA+ICt7IC8qIGZsb2F0IGZvb1sxXSA9IHsxLDJ9 OyAqLwo+ID4gKwo+ID4gK8KgIGdjY19qaXRfdHlwZSAqZmxvYXRfdHlwZSA9IGdjY19qaXRfY29u dGV4dF9nZXRfdHlwZSAoY3R4dCwKPiA+ICvCoMKgwqAgR0NDX0pJVF9UWVBFX0ZMT0FUKTsKPiA+ ICvCoCBnY2Nfaml0X3R5cGUgKmFycl90eXBlID0gZ2NjX2ppdF9jb250ZXh0X25ld19hcnJheV90 eXBlIChjdHh0LAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIDAsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAKPiA+IGZsb2F0X3R5cGUsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMSk7Cj4gPiArwqAgZ2NjX2ppdF9y dmFsdWUgKnJ2YWxfMSA9IGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21faW50ICgKPiA+ ICvCoMKgwqAgY3R4dCwgZmxvYXRfdHlwZSwgMSk7Cj4gPiArwqAgZ2NjX2ppdF9ydmFsdWUgKnJ2 YWxfMiA9IGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21faW50ICgKPiA+ICvCoMKgwqAg Y3R4dCwgZmxvYXRfdHlwZSwgMik7Cj4gPiArCj4gPiArwqAgZ2NjX2ppdF9ydmFsdWUgKnZhbHVl c1tdID0ge3J2YWxfMSwgcnZhbF8yfTsKPiA+ICsKPiA+ICvCoCBnY2Nfaml0X3J2YWx1ZSAqY3Rv ciA9IGdjY19qaXRfY29udGV4dF9uZXdfYXJyYXlfY29uc3RydWN0b3IKPiA+IChjdHh0LAo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAwLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+ID4gYXJyX3R5cGUsCj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDIsCj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgCj4gPiB2YWx1ZXMpOwo+ID4gK8KgIGlmICghY3RvcikKPiA+ICvCoMKgwqAgcmV0dXJu Owo+ID4gKwo+ID4gK8KgIGdjY19qaXRfbHZhbHVlICpmb28gPcKgIGdjY19qaXRfY29udGV4dF9u ZXdfZ2xvYmFsICgKPiA+ICvCoMKgwqAgY3R4dCwgTlVMTCwKPiA+ICvCoMKgwqAgR0NDX0pJVF9H TE9CQUxfRVhQT1JURUQsCj4gPiArwqDCoMKgIGFycl90eXBlLAo+ID4gK8KgwqDCoCAiZ2xvYmFs X2Zsb2F0YXJyXzEyIik7Cj4gPiArwqAgZ2NjX2ppdF9nbG9iYWxfc2V0X2luaXRpYWxpemVyX3J2 YWx1ZSAoZm9vLCBjdG9yKTsKPiA+ICt9Cj4gPiArCj4gPiArdm9pZAo+ID4gK3ZlcmlmeV9jb2Rl IChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIGdjY19qaXRfcmVzdWx0ICpyZXN1bHQpCj4gPiArewo+ ID4gK8KgIC8qIEVuc3VyZSB0aGF0IHRoZSBiYWQgQVBJIHVzYWdlIHByZXZlbnRzIHRoZSBBUEkg Z2l2aW5nIGEgYm9ndXMKPiA+ICvCoMKgwqDCoCByZXN1bHQgYmFjay7CoCAqLwo+ID4gK8KgIENI RUNLX1ZBTFVFIChyZXN1bHQsIE5VTEwpOwo+ID4gKwo+ID4gK8KgIC8qIFZlcmlmeSB0aGF0IHRo ZSBjb3JyZWN0IGVycm9yIG1lc3NhZ2Ugd2FzIGVtaXR0ZWQuICovCj4gPiArwqAgQ0hFQ0tfU1RS SU5HX1ZBTFVFIChnY2Nfaml0X2NvbnRleHRfZ2V0X2ZpcnN0X2Vycm9yIChjdHh0KSwKPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgImdjY19qaXRfY29udGV4dF9uZXdf YXJyYXlfY29uc3RydWN0b3I6IGFycmF5ICIKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgImNvbnN0cnVjdG9yIGhhcyBtb3JlIHZhbHVlcyB0aGFuIHRoZSBhcnJheQo+ ID4gdHlwZSdzICIKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgImxl bmd0aCAoYXJyYXkgdHlwZSBsZW5ndGg6IDEsIGNvbnN0cnVjdG9yCj4gPiBsZW5ndGg6IDIpIik7 Cj4gPiArwqAgQ0hFQ0tfU1RSSU5HX1ZBTFVFIChnY2Nfaml0X2NvbnRleHRfZ2V0X2xhc3RfZXJy b3IgKGN0eHQpLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiZ2Nj X2ppdF9jb250ZXh0X25ld19hcnJheV9jb25zdHJ1Y3RvcjogYXJyYXkgIgo+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiY29uc3RydWN0b3IgaGFzIG1vcmUgdmFsdWVz IHRoYW4gdGhlIGFycmF5Cj4gPiB0eXBlJ3MgIgo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAibGVuZ3RoIChhcnJheSB0eXBlIGxlbmd0aDogMSwgY29uc3RydWN0b3IK PiA+IGxlbmd0aDogMikiKTsKPiA+ICt9Cj4gCj4gWy4uLnNuaXAuLi5dCj4gCj4gPiBkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvdGVzdC1nbG9iYWwtaW5pdC1ydmFsdWUuYwo+ID4g Yi9nY2MvdGVzdHN1aXRlL2ppdC5kZy90ZXN0LWdsb2JhbC1pbml0LXJ2YWx1ZS5jCj4gPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMDAwMDAuLjIxNjc1YWM5YWNmCj4gPiAt LS0gL2Rldi9udWxsCj4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2ppdC5kZy90ZXN0LWdsb2JhbC1p bml0LXJ2YWx1ZS5jCj4gPiBAQCAtMCwwICsxLDE1NjMgQEAKPiA+ICsvKiBUaGlzIHRlc3RjYXNl IGNoZWNrcyB0aGF0Cj4gPiBnY2Nfaml0X2dsb2JhbF9zZXRfaW5pdGlhbGl6ZXJfcnZhbHVlKCkg d29ya3MKPiA+ICvCoMKgIHdpdGggcnZhbHVlcywgZXNwZWNpYWxseSB3aXRoCj4gPiBnY2Nfaml0 X2NvbnRleHRfbmV3XypfY29uc3RydWN0b3IoKSBmb3IKPiA+ICvCoMKgIHN0cnVjdCwgdW5pb25z IGFuZCBhcnJheXMuICovCj4gCj4gWy4uLnNuaXAuLi5dCj4gCj4gVGhlIG9yZGVyIGluIHdoaWNo IHlvdSBjcmVhdGUgdGhpbmdzIGluIGNyZWF0ZV9jb2RlIGlzbid0IHF1aXRlIHRoZQo+IHNhbWUg YXMgdGhlIG9yZGVyIGluIHdoaWNoIHlvdSBjaGVjayB0aGluZ3MgaW4gdmVyaWZ5X2NvZGUuwqAg SXMgaXQKPiBwb3NzaWJsZSB0byByZW9yZGVyIHRoaW5ncyBzbyB0aGF0IHRoZXNlIGFyZSBjb25z aXN0ZW50P8KgIFRoYXQgd291bGQKPiBtYWtlIGl0IGVhc2llciB0byBjb21wYXJlIHRoZSBsaWJn Y2NqaXQgY2FsbHMgd2l0aCB0aGUgZXhwZWN0ZWQKPiBiZWhhdmlvci4KPiAKPiBUaGFua3MgZm9y IGFsbCB0aGUgdGVzdCBjb3ZlcmFnZSwgQlRXIC0gYm90aCBvZiB2YWxpZCB1c2FnZSBhbmQKPiBl cnJvci0KPiBoYW5kbGluZyAtIGl0IG1ha2VzIG1lIG11Y2ggaGFwcGllciBhYm91dCB0aGUgcGF0 Y2guCj4gCj4gWy4uLnNuaXAuLi5dCj4gCj4gSSB3b3VsZCBzYXkgIk9LIGZvciB0cnVuaywgd2l0 aCB0aG9zZSBuaXRzIGZpeGVkIiwgYnV0IEkgd2FudCB0byBoZWFyCj4gQW50b25pJ3Mgb3Bpbmlv biBvbiB3aGV0aGVyIHRoaXMgd29ya3MgZm9yIGhpbSBmb3IgdGhlIHJ1c3RjIHBsdWdpbiwKPiBv cgo+IGlmIGhlIG5lZWRzIGZ1cnRoZXIgY2hhbmdlcy7CoCBBbnRvbmkgLSBkb2VzIHRoaXMgcGF0 Y2ggd29yayBmb3IgeW91Pwo+IAo+IFRoYW5rcyBhZ2FpbiBmb3IgdGhlIHBhdGNoOyB0aGlzIGlz IGxvb2tpbmcgY2xvc2UgdG8gcmVhZHk7IGhvcGUgdGhlCj4gYWJvdmUgbWFrZXMgc2Vuc2UuCj4g RGF2ZQo+IAo+IAo+IMKgwqDCoCAKCg==