From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18764 invoked by alias); 20 Apr 2015 19:09:54 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 18751 invoked by uid 89); 20 Apr 2015 19:09:54 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL,BAYES_00,MIME_BASE64_BLANKS,SPF_PASS,T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: mailapp01.imgtec.com Received: from mailapp01.imgtec.com (HELO mailapp01.imgtec.com) (195.59.15.196) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 20 Apr 2015 19:09:52 +0000 Received: from KLMAIL01.kl.imgtec.org (unknown [192.168.5.35]) by Websense Email Security Gateway with ESMTPS id EA9CAE64A58AC; Mon, 20 Apr 2015 20:09:44 +0100 (IST) Received: from LEMAIL01.le.imgtec.org (192.168.152.62) by KLMAIL01.kl.imgtec.org (192.168.5.35) with Microsoft SMTP Server (TLS) id 14.3.195.1; Mon, 20 Apr 2015 20:09:48 +0100 Received: from LEMAIL01.le.imgtec.org ([fe80::5ae:ee16:f4b9:cda9]) by LEMAIL01.le.imgtec.org ([fe80::5ae:ee16:f4b9:cda9%17]) with mapi id 14.03.0210.002; Mon, 20 Apr 2015 20:09:47 +0100 From: Matthew Fortune To: Sameera Deshpande , "clm@codesourcery.com" CC: Richard Sandiford , "gcc-patches@gcc.gnu.org" , "echristo@gmail.com" Subject: RE: [PATCH][MIPS] Enable load-load/store-store bonding Date: Mon, 20 Apr 2015 19:09:00 -0000 Message-ID: <6D39441BF12EF246A7ABCE6654B023532103246C@LEMAIL01.le.imgtec.org> References: <38C8F1E431EDD94A82971C543A11B4FEE0A588@PUMAIL01.pu.imgtec.org> <8761ju8c2k.fsf@talisman.default> <38C8F1E431EDD94A82971C543A11B4FEE0C46D@PUMAIL01.pu.imgtec.org> <5519336F.4020609@imgtec.com> <55348A22.5050704@imgtec.com> In-Reply-To: <55348A22.5050704@imgtec.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-IsSubscribed: yes X-SW-Source: 2015-04/txt/msg01087.txt.bz2 U2FtZWVyYSBEZXNocGFuZGUgPFNhbWVlcmEuRGVzaHBhbmRlQGltZ3RlYy5j b20+IHdyaXRlczoNCj4gR2VudGxlIHJlbWluZGVyIQ0KDQpUaGFua3MgU2Ft ZWVyYS4gSnVzdCBhIGNvdXBsZSBvZiBjb21tZW50cyBpbmxpbmUgYmVsb3cg YW5kIGEgcXVlc3Rpb24NCmZvciBDYXRoZXJpbmUgYXQgdGhlIGVuZC4NCg0K PiAtIFRoYW5rcyBhbmQgcmVnYXJkcywNCj4gICAgU2FtZWVyYSBELg0KPiAN Cj4gT24gTW9uZGF5IDMwIE1hcmNoIDIwMTUgMDQ6NTggUE0sIHNhbWVlcmEg d3JvdGU6DQo+ID4gSGkhDQo+ID4NCj4gPiBTb3JyeSBmb3IgZGVsYXkgaW4g c2VuZGluZyB0aGlzIHBhdGNoIGZvciByZXZpZXcuDQo+ID4gUGxlYXNlIGZp bmQgYXR0YWNoZWQgdXBkYXRlZCBwYXRjaC4NCj4gPg0KPiA+IEluIFA1NjAw LCAyIGNvbnNlY3V0aXZlIGxvYWRzL3N0b3JlcyBvZiBzYW1lIHR5cGUgd2hp Y2ggYWNjZXNzDQo+ID4gY29udGlndW91cyBtZW1vcnkgbG9jYXRpb25zIGFy ZSBib25kZWQgdG9nZXRoZXIgYnkgaW5zdHJ1Y3Rpb24gaXNzdWUNCj4gPiB1 bml0IHRvIGRpc3BhdGNoIHNpbmdsZSBsb2FkL3N0b3JlIGluc3RydWN0aW9u IHdoaWNoIGFjY2Vzc2VzIGJvdGgNCj4gbG9jYXRpb25zLiBUaGlzIGFsbG93 cyAyWCBpbXByb3ZlbWVudCBpbiBtZW1vcnkgaW50ZW5zaXZlIGNvZGUuIFRo aXMNCj4gb3B0aW1pemF0aW9uIGNhbiBiZSBwZXJmb3JtZWQgZm9yIExILCBT SCwgTFcsIFNXLCBMV0MsIFNXQywgTERDLCBTREMNCj4gaW5zdHJ1Y3Rpb25z Lg0KPiA+DQo+ID4gVGhpcyBwYXRjaCBhZGRzIHBlZXBob2xlMiBwYXR0ZXJu cyB0byBpZGVudGlmeSBzdWNoIGxvYWRzL3N0b3JlcywgYW5kDQo+ID4gcHV0 IHRoZW0gaW4gcGFyYWxsZWwsIHNvIHRoYXQgdGhlIHNjaGVkdWxlciB3aWxs IG5vdCBzcGxpdCBpdCAtDQo+IHRoZXJlYnkgZ3VhcmFudGVlaW5nIGgvdyBs ZXZlbCBsb2FkL3N0b3JlIGJvbmRpbmcuDQo+ID4NCj4gPiBUaGUgcGF0Y2gg aXMgdGVzdGVkIHdpdGggZGVqYWdudSBmb3IgY29ycmVjdG5lc3MsIGFuZCB0 ZXN0ZWQgb24NCj4gaGFyZHdhcmUgZm9yIHBlcmZvcm1hbmNlLg0KPiA+IE9r IGZvciB0cnVuaz8NCj4gPg0KPiA+IENoYW5nZWxvZzoNCj4gPiBnY2MvDQo+ ID4gICAgICAgICAgKiBjb25maWcvbWlwcy9taXBzLm1kIChKT0lOX01PREUp OiBOZXcgbW9kZSBpdGVyYXRvci4NCj4gPiAgICAgIChqb2luMl9sb2FkX1N0 b3JlPEpPSU5fTU9ERTptb2RlPik6IE5ldyBwYXR0ZXJuLg0KPiA+ICAgICAg KGpvaW4yX2xvYWRoaSk6IExpa2V3aXNlLg0KPiA+ICAgICAgKGRlZmluZV9w ZWVob2xlMik6IEFkZCBwZWVwaG9sZTIgcGF0dGVybnMgdG8gam9pbiAyIEhJ L1NJL1NGL0RGLQ0KPiBtb2RlDQo+ID4gICAgICBsb2FkLWxvYWQgYW5kIHN0 b3JlLXN0b3Jlcy4NCj4gPiAgICAgICogY29uZmlnL21pcHMvbWlwcy5vcHQg KG1sb2FkLXN0b3JlLXBhaXJzKTogTmV3IG9wdGlvbi4NCj4gPiAgICAgIChU QVJHRVRfTE9BRF9TVE9SRV9QQUlSUyk6IE5ldyBtYWNyby4NCj4gPiAgICAg ICpjb25maWcvbWlwcy9taXBzLmggKEVOQUJMRV9MRF9TVF9QQUlSUyk6IExp a2V3aXNlLg0KPiA+ICAgICAgKmNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmgg KG1pcHNfbG9hZF9zdG9yZV9ib25kaW5nX3ApOiBOZXcNCj4gcHJvdG90eXBl Lg0KPiA+ICAgICAgKmNvbmZpZy9taXBzL21pcHMuYyhtaXBzX2xvYWRfc3Rv cmVfYm9uZGluZ19wKTogTmV3IGZ1bmN0aW9uLg0KDQpJIGRvbid0IGtub3cg aWYgdGhpcyBoYXMgYmVlbiBjb3JydXB0ZWQgYnkgbWFpbCBjbGllbnRzIGJ1 dCBhIHNpbmdsZQ0Kc3BhY2UgYWZ0ZXIgJyonIGFuZCBhIHNwYWNlIGJlZm9y ZSAnKCcuIA0KDQo+ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbWlwcy9taXBz LXByb3Rvcy5oIGIvZ2NjL2NvbmZpZy9taXBzL21pcHMtcHJvdG9zLmgNCj5p bmRleCBiNDhlMDRmLi4yNDRlYjhkIDEwMDY0NA0KPi0tLSBhL2djYy9jb25m aWcvbWlwcy9taXBzLXByb3Rvcy5oDQo+KysrIGIvZ2NjL2NvbmZpZy9taXBz L21pcHMtcHJvdG9zLmgNCj5AQCAtMzYwLDYgKzM2MCw3IEBAIGV4dGVybiBi b29sIG1pcHNfZXBpbG9ndWVfdXNlcyAodW5zaWduZWQgaW50KTsNCj4gZXh0 ZXJuIHZvaWQgbWlwc19maW5hbF9wcmVzY2FuX2luc24gKHJ0eF9pbnNuICos IHJ0eCAqLCBpbnQpOw0KPiBleHRlcm4gaW50IG1pcHNfdHJhbXBvbGluZV9j b2RlX3NpemUgKHZvaWQpOw0KPiBleHRlcm4gdm9pZCBtaXBzX2Z1bmN0aW9u X3Byb2ZpbGVyIChGSUxFICopOw0KPitleHRlcm4gYm9vbCBtaXBzX2xvYWRf c3RvcmVfYm9uZGluZ19wIChydHggKiwgbWFjaGluZV9tb2RlLCBib29sKTsN Cj4gDQo+IHR5cGVkZWYgcnR4ICgqbXVsc2lkaTNfZ2VuX2ZuKSAocnR4LCBy dHgsIHJ0eCk7DQo+ICNpZmRlZiBSVFhfQ09ERQ0KPmRpZmYgLS1naXQgYS9n Y2MvY29uZmlnL21pcHMvbWlwcy5jIGIvZ2NjL2NvbmZpZy9taXBzL21pcHMu Yw0KPmluZGV4IDE3MzM0NTcuLjg1ZjA1OTEgMTAwNjQ0DQo+LS0tIGEvZ2Nj L2NvbmZpZy9taXBzL21pcHMuYw0KPisrKyBiL2djYy9jb25maWcvbWlwcy9t aXBzLmMNCj5AQCAtMTgyNDEsNiArMTgyNDEsNjQgQEAgdW1pcHNfbG9hZF9z dG9yZV9wYWlyX3BfMSAoYm9vbCBsb2FkX3AsIGJvb2wgc3dhcF9wLA0KPiAg IHJldHVybiB0cnVlOw0KPiB9DQo+IA0KPitib29sDQo+K21pcHNfbG9hZF9z dG9yZV9ib25kaW5nX3AgKHJ0eCAqb3BlcmFuZHMsIGVudW0gbWFjaGluZV9t b2RlIG1vZGUsIGJvb2wgbG9hZF9wKQ0KDQpSZW1vdmUgZW51bSBmcm9tIG1h Y2hpbmVfbW9kZS4NCg0KPit7DQo+KyAgcnR4IHJlZzEsIHJlZzIsIG1lbTEs IG1lbTIsIGJhc2UxLCBiYXNlMjsNCj4rICBlbnVtIHJlZ19jbGFzcyByYzEs IHJjMjsNCj4rICBIT1NUX1dJREVfSU5UIG9mZnNldDEsIG9mZnNldDI7DQo+ Kw0KPisgIGlmIChsb2FkX3ApDQo+KyAgICB7DQo+KyAgICAgIHJlZzEgPSBv cGVyYW5kc1swXTsNCj4rICAgICAgcmVnMiA9IG9wZXJhbmRzWzJdOw0KPisg ICAgICBtZW0xID0gb3BlcmFuZHNbMV07DQo+KyAgICAgIG1lbTIgPSBvcGVy YW5kc1szXTsNCj4rICAgIH0NCj4rICBlbHNlDQo+KyAgICB7DQo+KyAgICAg IHJlZzEgPSBvcGVyYW5kc1sxXTsNCj4rICAgICAgcmVnMiA9IG9wZXJhbmRz WzNdOw0KPisgICAgICBtZW0xID0gb3BlcmFuZHNbMF07DQo+KyAgICAgIG1l bTIgPSBvcGVyYW5kc1syXTsNCj4rICAgIH0NCj4rDQo+KyAgaWYgKG1pcHNf YWRkcmVzc19pbnNucyAoWEVYUCAobWVtMSwgMCksIG1vZGUsIGZhbHNlKSA9 PSAwDQo+KyAgICAgIHx8IG1pcHNfYWRkcmVzc19pbnNucyAoWEVYUCAobWVt MiwgMCksIG1vZGUsIGZhbHNlKSA9PSAwKQ0KPisgICAgcmV0dXJuIGZhbHNl Ow0KPisNCj4rICBtaXBzX3NwbGl0X3BsdXMgKFhFWFAgKG1lbTEsIDApLCAm YmFzZTEsICZvZmZzZXQxKTsNCj4rICBtaXBzX3NwbGl0X3BsdXMgKFhFWFAg KG1lbTIsIDApLCAmYmFzZTIsICZvZmZzZXQyKTsNCj4rDQo+KyAgLyogQmFz ZSByZWdzIGRvIG5vdCBtYXRjaC4gICovDQo+KyAgaWYgKCFSRUdfUCAoYmFz ZTEpIHx8ICFydHhfZXF1YWxfcCAoYmFzZTEsIGJhc2UyKSkNCj4rICAgIHJl dHVybiBmYWxzZTsNCj4rDQo+KyAgLyogRWl0aGVyIG9mIHRoZSBsb2FkcyBp cyBjbG9iYmVyaW5nIGJhc2UgcmVnaXN0ZXIuICAqLw0KPisgIGlmIChsb2Fk X3ANCj4rICAgICAgJiYgKFJFR05PIChyZWcxKSA9PSBSRUdOTyAoYmFzZTEp DQo+KwkgIHx8IChSRUdOTyAocmVnMikgPT0gUkVHTk8gKGJhc2UxKSkpKQ0K PisgICAgcmV0dXJuIGZhbHNlOw0KDQpDYW4geW91IGFkZCBhIGNvbW1lbnQg c2F5aW5nIHRoYXQgdGhpcyBjYXNlIGRvZXMgbm90IGdldCBib25kZWQgYnkN CmFueSBrbm93biBoYXJkd2FyZSBldmVuIHRob3VnaCBpdCBjb3VsZCBiZSB2 YWxpZCB0byBib25kIHRoZW0gaWYgaXQNCmlzIHRoZSBzZWNvbmQgbG9hZCB0 aGF0IGNsb2JiZXJzIHRoZSBiYXNlLg0KDQo+KyAgLyogTG9hZGluZyBpbiBz YW1lIHJlZ2lzdGVycy4gICovDQo+KyAgaWYgKGxvYWRfcA0KPisgICAgICAm JiBSRUdOTyAocmVnMSkgPT0gUkVHTk8gKHJlZzIpKQ0KPisgICAgcmV0dXJu IGZhbHNlOw0KPisNCj4rICAvKiBUaGUgbG9hZHMvc3RvcmVzIGFyZSBub3Qg b2Ygc2FtZSB0eXBlLiAgKi8NCj4rICByYzEgPSBSRUdOT19SRUdfQ0xBU1Mg KFJFR05PIChyZWcxKSk7DQo+KyAgcmMyID0gUkVHTk9fUkVHX0NMQVNTIChS RUdOTyAocmVnMikpOw0KPisgIGlmIChyYzEgIT0gcmMyDQo+KyAgICAgICYm ICFyZWdfY2xhc3Nfc3Vic2V0X3AgKHJjMSwgcmMyKQ0KPisgICAgICAmJiAh cmVnX2NsYXNzX3N1YnNldF9wIChyYzIsIHJjMSkpDQo+KyAgICByZXR1cm4g ZmFsc2U7DQo+Kw0KPisgIGlmIChhYnMgKG9mZnNldDEgLSBvZmZzZXQyKSAh PSBHRVRfTU9ERV9TSVpFIChtb2RlKSkNCj4rICAgIHJldHVybiBmYWxzZTsN Cj4rDQo+KyAgcmV0dXJuIHRydWU7DQo+K30NCj4rDQo+IC8qIE9QRVJBTkRT IGRlc2NyaWJlcyB0aGUgb3BlcmFuZHMgdG8gYSBwYWlyIG9mIFNFVHMsIGlu IHRoZSBvcmRlcg0KPiAgICBkZXN0MSwgc3JjMSwgZGVzdDIsIHNyYzIuICBS ZXR1cm4gdHJ1ZSBpZiB0aGUgb3BlcmFuZHMgY2FuIGJlIHVzZWQNCj4gICAg aW4gYW4gTFdQIG9yIFNXUCBpbnN0cnVjdGlvbjsgTE9BRF9QIHNheXMgd2hp Y2guICAqLw0KPmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL21pcHMvbWlwcy5o IGIvZ2NjL2NvbmZpZy9taXBzL21pcHMuaA0KPmluZGV4IGVjNjllZDUuLjFi ZDBkYWUgMTAwNjQ0DQo+LS0tIGEvZ2NjL2NvbmZpZy9taXBzL21pcHMuaA0K PisrKyBiL2djYy9jb25maWcvbWlwcy9taXBzLmgNCj5AQCAtMzE0NywzICsz MTQ3LDcgQEAgZXh0ZXJuIEdUWSgoKSkgc3RydWN0IHRhcmdldF9nbG9iYWxz ICptaXBzMTZfZ2xvYmFsczsNCj4gI2RlZmluZSBTVEFOREFSRF9TVEFSVEZJ TEVfUFJFRklYXzEgIi9saWI2NC8iDQo+ICNkZWZpbmUgU1RBTkRBUkRfU1RB UlRGSUxFX1BSRUZJWF8yICIvdXNyL2xpYjY0LyINCj4gI2VuZGlmDQo+Kw0K PisjZGVmaW5lIEVOQUJMRV9MRF9TVF9QQUlSUyBcDQo+KyAgKFRBUkdFVF9M T0FEX1NUT1JFX1BBSVJTICYmIFRVTkVfUDU2MDAgXA0KPisgICAmJiAhVEFS R0VUX01JQ1JPTUlQUyAmJiAhVEFSR0VUX0ZJWF8yNEspDQoNCkkndmUgYWxy ZWFkeSBmb3Jnb3R0ZW4gd2h5IHRoZXNlIGV4dHJhIG1pY3JvbWlwcy9maXgy NGsgY29uZGl0aW9ucw0Kd2VyZSByZXF1aXJlZC4gQ2FuIHlvdSBhZGQgYSBj b21tZW50Pw0KDQo+ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbWlwcy9taXBz Lm1kIGIvZ2NjL2NvbmZpZy9taXBzL21pcHMubWQNCj5pbmRleCAzNjcyYzBi Li5jZmRiNzUwIDEwMDY0NA0KPi0tLSBhL2djYy9jb25maWcvbWlwcy9taXBz Lm1kDQo+KysrIGIvZ2NjL2NvbmZpZy9taXBzL21pcHMubWQNCj5AQCAtNzU0 LDYgKzc1NCwxMSBAQA0KPiANCj4gKGRlZmluZV9tb2RlX2l0ZXJhdG9yIE1P VkVQMSBbU0kgU0ZdKQ0KPiAoZGVmaW5lX21vZGVfaXRlcmF0b3IgTU9WRVAy IFtTSSBTRl0pDQo+KyhkZWZpbmVfbW9kZV9pdGVyYXRvciBKT0lOX01PREUg W0hJDQo+KwkJCQkgU0kNCj4rCQkJCSAoU0YgIlRBUkdFVF9IQVJEX0ZMT0FU IikNCj4rCQkJCSAoREYgIlRBUkdFVF9IQVJEX0ZMT0FUDQo+KwkJCQkgICAg ICAmJiBUQVJHRVRfRE9VQkxFX0ZMT0FUIildKQ0KPiANCj4gOzsgVGhpcyBt b2RlIGl0ZXJhdG9yIGFsbG93cyA6SElMTyB0byBiZSB1c2VkIGFzIHRoZSBt b2RlIG9mIHRoZQ0KPiA7OyBjb25jYXRlbmF0ZWQgSEkgYW5kIExPIHJlZ2lz dGVycy4NCj5AQCAtNzQxOSw2ICs3NDI0LDEwOCBAQA0KPiAgIHsgcmV0dXJu IE1JUFNfQ0FMTCAoImphbCIsIG9wZXJhbmRzLCAwLCAtMSk7IH0NCj4gICBb KHNldF9hdHRyICJ0eXBlIiAiY2FsbCIpDQo+ICAgIChzZXRfYXR0ciAiaW5z bl9jb3VudCIgIjMiKV0pDQo+Kw0KPisoZGVmaW5lX2luc24gIipqb2luMl9s b2FkX3N0b3JlPEpPSU5fTU9ERTptb2RlPiINCj4rICBbKHNldCAobWF0Y2hf b3BlcmFuZDpKT0lOX01PREUgMCAibm9uaW1tZWRpYXRlX29wZXJhbmQiICI9 ZCxmLG0sbSIpDQo+KwkobWF0Y2hfb3BlcmFuZDpKT0lOX01PREUgMSAibm9u aW1tZWRpYXRlX29wZXJhbmQiICJtLG0sZCxmIikpDQo+KyAgIChzZXQgKG1h dGNoX29wZXJhbmQ6Sk9JTl9NT0RFIDIgIm5vbmltbWVkaWF0ZV9vcGVyYW5k IiAiPWQsZixtLG0iKQ0KPisJKG1hdGNoX29wZXJhbmQ6Sk9JTl9NT0RFIDMg Im5vbmltbWVkaWF0ZV9vcGVyYW5kIiAibSxtLGQsZiIpKV0NCj4rICAiRU5B QkxFX0xEX1NUX1BBSVJTICYmIHJlbG9hZF9jb21wbGV0ZWQiDQo+KyAgew0K PisgICAgYm9vbCBsb2FkX3AgPSAod2hpY2hfYWx0ZXJuYXRpdmUgPT0gMCB8 fCB3aGljaF9hbHRlcm5hdGl2ZSA9PSAxKTsNCj4rICAgIC8qIFJlZy1yZW5h bWluZyBwYXNzIHJldXNlcyBiYXNlIHJlZ2lzdGVyIGlmIGl0IGlzIGRlYWQg YWZ0ZXIgYm9uZGVkIGxvYWRzLg0KPisgICAgICAgSGFyZHdhcmUgZG9lcyBu b3QgYm9uZCB0aG9zZSBsb2FkcywgZXZlbiB3aGVuIHRoZXkgYXJlIGNvbnNl Y3V0aXZlLg0KPisgICAgICAgSG93ZXZlciwgb3JkZXIgb2YgdGhlIGxvYWRz IG5lZWQgdG8gYmUgY2hlY2tlZCBmb3IgY29ycmVjdG5lc3MuICAqLw0KPisg ICAgaWYgKCFsb2FkX3AgfHwgIXJlZ19vdmVybGFwX21lbnRpb25lZF9wIChv cGVyYW5kc1swXSwgb3BlcmFuZHNbMV0pKQ0KPisgICAgICB7DQo+KwlvdXRw dXRfYXNtX2luc24gKG1pcHNfb3V0cHV0X21vdmUgKG9wZXJhbmRzWzBdLCBv cGVyYW5kc1sxXSksDQo+KwkJCSBvcGVyYW5kcyk7DQo+KwlvdXRwdXRfYXNt X2luc24gKG1pcHNfb3V0cHV0X21vdmUgKG9wZXJhbmRzWzJdLCBvcGVyYW5k c1szXSksDQo+KwkJCSAmb3BlcmFuZHNbMl0pOw0KPisgICAgICB9DQo+KyAg ICBlbHNlDQo+KyAgICAgIHsNCj4rCW91dHB1dF9hc21faW5zbiAobWlwc19v dXRwdXRfbW92ZSAob3BlcmFuZHNbMl0sIG9wZXJhbmRzWzNdKSwNCj4rCQkJ ICZvcGVyYW5kc1syXSk7DQo+KwlvdXRwdXRfYXNtX2luc24gKG1pcHNfb3V0 cHV0X21vdmUgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSksDQo+KwkJCSBv cGVyYW5kcyk7DQo+KyAgICAgIH0NCj4rICAgIHJldHVybiAiIjsNCj4rICB9 DQo+KyAgWyhzZXRfYXR0ciAibW92ZV90eXBlIiAibG9hZCxmcGxvYWQsc3Rv cmUsZnBzdG9yZSIpDQo+KyAgIChzZXRfYXR0ciAiaW5zbl9jb3VudCIgIjIs MiwyLDIiKV0pDQo+Kw0KPis7OyAyIEhJL1NJL1NGL0RGIGxvYWRzIGFyZSBq b2luZWQuDQo+Kzs7IFA1NjAwIGRvZXMgbm90IHN1cHBvcnQgYm9uZGluZyBv ZiB0d28gTEJzLCBoZW5jZSBRSSBtb2RlIGlzIG5vdCBpbmNsdWRlZC4NCj4r KGRlZmluZV9wZWVwaG9sZTINCj4rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpK T0lOX01PREUgMCAicmVnaXN0ZXJfb3BlcmFuZCIpDQo+KwkobWF0Y2hfb3Bl cmFuZDpKT0lOX01PREUgMSAibm9uX3ZvbGF0aWxlX21lbV9vcGVyYW5kIikp DQo+KyAgIChzZXQgKG1hdGNoX29wZXJhbmQ6Sk9JTl9NT0RFIDIgInJlZ2lz dGVyX29wZXJhbmQiKQ0KPisJKG1hdGNoX29wZXJhbmQ6Sk9JTl9NT0RFIDMg Im5vbl92b2xhdGlsZV9tZW1fb3BlcmFuZCIpKV0NCg0KUGxlYXNlIGNhbiB5 b3UgY29tbWVudCB0aGF0IHRoZSBsb2FkcyBtdXN0IGJlIG5vbi12b2xhdGls ZSBhcyB0aGV5IG1heSBnZXQNCnJlLW9yZGVyZWQuDQoNCj4rICAiRU5BQkxF X0xEX1NUX1BBSVJTICYmDQoNCiYmIG9uIHRoZSBuZXh0IGxpbmUNCg0KPisg ICBtaXBzX2xvYWRfc3RvcmVfYm9uZGluZ19wIChvcGVyYW5kcywgPEpPSU5f TU9ERTpNT0RFPm1vZGUsIHRydWUpIg0KPisgIFsocGFyYWxsZWwgWyhzZXQg KG1hdGNoX2R1cCAwKQ0KPisJCSAgIChtYXRjaF9kdXAgMSkpDQo+KwkgICAg ICAoc2V0IChtYXRjaF9kdXAgMikNCj4rCQkgICAobWF0Y2hfZHVwIDMpKV0p XQ0KPisgICIiKQ0KPisNCj4rOzsgMiBISS9TSS9TRi9ERiBzdG9yZXMgYXJl IGpvaW5lZC4NCj4rOzsgUDU2MDAgZG9lcyBub3Qgc3VwcG9ydCBib25kaW5n IG9mIHR3byBTQnMsIGhlbmNlIFFJIG1vZGUgaXMgbm90IGluY2x1ZGVkLg0K PisoZGVmaW5lX3BlZXBob2xlMg0KPisgIFsoc2V0IChtYXRjaF9vcGVyYW5k OkpPSU5fTU9ERSAwICJtZW1vcnlfb3BlcmFuZCIpDQo+KwkobWF0Y2hfb3Bl cmFuZDpKT0lOX01PREUgMSAicmVnaXN0ZXJfb3BlcmFuZCIpKQ0KPisgICAo c2V0IChtYXRjaF9vcGVyYW5kOkpPSU5fTU9ERSAyICJtZW1vcnlfb3BlcmFu ZCIpDQo+KwkobWF0Y2hfb3BlcmFuZDpKT0lOX01PREUgMyAicmVnaXN0ZXJf b3BlcmFuZCIpKV0NCj4rICAiRU5BQkxFX0xEX1NUX1BBSVJTICYmDQoNCiYm IG9uIHRoZSBuZXh0IGxpbmUNCg0KPisgICBtaXBzX2xvYWRfc3RvcmVfYm9u ZGluZ19wIChvcGVyYW5kcywgPEpPSU5fTU9ERTpNT0RFPm1vZGUsIGZhbHNl KSINCj4rICBbKHBhcmFsbGVsIFsoc2V0IChtYXRjaF9kdXAgMCkNCj4rCQkg ICAobWF0Y2hfZHVwIDEpKQ0KPisJICAgICAgKHNldCAobWF0Y2hfZHVwIDIp DQo+KwkJICAgKG1hdGNoX2R1cCAzKSldKV0NCj4rICAiIikNCj4rDQo+Kyhk ZWZpbmVfaW5zbiAiKmpvaW4yX2xvYWRoaSINCj4rICBbKHNldCAobWF0Y2hf b3BlcmFuZDpTSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXIiKQ0KPisJKGFu eV9leHRlbmQ6U0kgKG1hdGNoX29wZXJhbmQ6SEkgMSAibm9uX3ZvbGF0aWxl X21lbV9vcGVyYW5kIiAibSIpKSkNCj4rICAgKHNldCAobWF0Y2hfb3BlcmFu ZDpTSSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXIiKQ0KPisJKGFueV9leHRl bmQ6U0kgKG1hdGNoX29wZXJhbmQ6SEkgMyAibm9uX3ZvbGF0aWxlX21lbV9v cGVyYW5kIiAibSIpKSldDQo+KyAgIkVOQUJMRV9MRF9TVF9QQUlSUyAmJiBy ZWxvYWRfY29tcGxldGVkIg0KPisgIHsNCj4rICAgIC8qIFJlZy1yZW5hbWlu ZyBwYXNzIHJldXNlcyBiYXNlIHJlZ2lzdGVyIGlmIGl0IGlzIGRlYWQgYWZ0 ZXIgYm9uZGVkIGxvYWRzLg0KPisgICAgICAgSGFyZHdhcmUgZG9lcyBub3Qg Ym9uZCB0aG9zZSBsb2FkcywgZXZlbiB3aGVuIHRoZXkgYXJlIGNvbnNlY3V0 aXZlLg0KPisgICAgICAgSG93ZXZlciwgb3JkZXIgb2YgdGhlIGxvYWRzIG5l ZWQgdG8gYmUgY2hlY2tlZCBmb3IgY29ycmVjdG5lc3MuICAqLw0KPisgICAg aWYgKCFyZWdfb3ZlcmxhcF9tZW50aW9uZWRfcCAob3BlcmFuZHNbMF0sIG9w ZXJhbmRzWzFdKSkNCj4rICAgICAgew0KPisJb3V0cHV0X2FzbV9pbnNuICgi bGg8dT5cdCUwLCUxIiwgb3BlcmFuZHMpOw0KPisJb3V0cHV0X2FzbV9pbnNu ICgibGg8dT5cdCUyLCUzIiwgb3BlcmFuZHMpOw0KPisgICAgICB9DQo+KyAg ICBlbHNlDQo+KyAgICAgIHsNCj4rCW91dHB1dF9hc21faW5zbiAoImxoPHU+ XHQlMiwlMyIsIG9wZXJhbmRzKTsNCj4rCW91dHB1dF9hc21faW5zbiAoImxo PHU+XHQlMCwlMSIsIG9wZXJhbmRzKTsNCj4rICAgICAgfQ0KPisNCj4rICAg IHJldHVybiAiIjsNCj4rICB9DQo+KyAgWyhzZXRfYXR0ciAibW92ZV90eXBl IiAibG9hZCIpDQo+KyAgIChzZXRfYXR0ciAiaW5zbl9jb3VudCIgIjIiKV0p DQo+Kw0KPisNCj4rOzsgMiAxNiBiaXQgaW50ZWdlciBsb2FkcyBhcmUgam9p bmVkLg0KDQoyIEhJIG1vZGUgbG9hZHMNCg0KPisoZGVmaW5lX3BlZXBob2xl Mg0KPisgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgInJlZ2lzdGVyX29w ZXJhbmQiKQ0KPisJKGFueV9leHRlbmQ6U0kgKG1hdGNoX29wZXJhbmQ6SEkg MSAibm9uX3ZvbGF0aWxlX21lbV9vcGVyYW5kIikpKQ0KPisgICAoc2V0ICht YXRjaF9vcGVyYW5kOlNJIDIgInJlZ2lzdGVyX29wZXJhbmQiKQ0KPisJKGFu eV9leHRlbmQ6U0kgKG1hdGNoX29wZXJhbmQ6SEkgMyAibm9uX3ZvbGF0aWxl X21lbV9vcGVyYW5kIikpKV0NCj4rICAiRU5BQkxFX0xEX1NUX1BBSVJTICYm DQo+KyAgIG1pcHNfbG9hZF9zdG9yZV9ib25kaW5nX3AgKG9wZXJhbmRzLCBI SW1vZGUsIHRydWUpIg0KPisgIFsocGFyYWxsZWwgWyhzZXQgKG1hdGNoX2R1 cCAwKQ0KPisJCSAgIChhbnlfZXh0ZW5kOlNJIChtYXRjaF9kdXAgMSkpKQ0K PisJICAgICAgKHNldCAobWF0Y2hfZHVwIDIpDQo+KwkJICAgKGFueV9leHRl bmQ6U0kgKG1hdGNoX2R1cCAzKSkpXSldDQo+KyAgIiIpDQo+Kw0KPiANCj4g OzsgU3luY2hyb25pemF0aW9uIGluc3RydWN0aW9ucy4NCj4gDQo+ZGlmZiAt LWdpdCBhL2djYy9jb25maWcvbWlwcy9taXBzLm9wdCBiL2djYy9jb25maWcv bWlwcy9taXBzLm9wdA0KPmluZGV4IDllODlhYTkuLmE5YmFlYmUgMTAwNjQ0 DQo+LS0tIGEvZ2NjL2NvbmZpZy9taXBzL21pcHMub3B0DQo+KysrIGIvZ2Nj L2NvbmZpZy9taXBzL21pcHMub3B0DQo+QEAgLTQxOCwzICs0MTgsNyBAQCBF bmFibGUgdXNlIG9mIG9kZC1udW1iZXJlZCBzaW5nbGUtcHJlY2lzaW9uIHJl Z2lzdGVycw0KPiANCj4gbm9hc21vcHQNCj4gRHJpdmVyDQo+Kw0KPittbG9h ZC1zdG9yZS1wYWlycw0KPitUYXJnZXQgUmVwb3J0IFZhcihUQVJHRVRfTE9B RF9TVE9SRV9QQUlSUykgSW5pdCgxKQ0KPitFbmFibGUgbG9hZC9zdG9yZSBi b25kaW5nLg0KDQpDYXRoZXJpbmU6IFdlIGhhdmUgdGhpcyBvcHRpb24gaW4g cGxhY2UganVzdCBhcyBhIGdldC1vdXQgY2xhdXNlIGlmDQp0aGVyZSBhcmUg YW55IHNpZGUgZWZmZWN0cyB0aGF0IGhhdmUgYmVlbiBtaXNzZWQgaW4gdGhp cyBwYXRjaCBzdWNoDQp0aGF0IHlvdSBjYW4gc3RpbGwgdHVuZSBmb3IgcDU2 MDAgYnV0IHdpdGggYm9uZGluZyBkaXNhYmxlZC4gRG8geW91DQp0aGluayB0 aGlzIGlzIE9LPyBJJ20gbm90IGNvbXBsZXRlbHkgYWdhaW5zdCB0aGlzIGJl aW5nIGVpdGhlcg0KdW5kb2N1bWVudGVkIG9yIHJlbW92ZWQgZW50aXJlbHku DQoNClNhbWVlcmE6IEFzc3VtaW5nIHdlIGtlZXAgaXQgdGhlbiBpdCBuZWVk cyBhZGRpbmcgdG8gdGhlIGludm9rZSBkb2MuDQoNClRoYW5rcywNCk1hdHRo ZXcNCg==