Return-Path: X-Original-To: apmail-directory-dev-archive@www.apache.org Delivered-To: apmail-directory-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 51A5510C17 for ; Sun, 1 Feb 2015 21:04:58 +0000 (UTC) Received: (qmail 23653 invoked by uid 500); 1 Feb 2015 21:04:59 -0000 Delivered-To: apmail-directory-dev-archive@directory.apache.org Received: (qmail 23594 invoked by uid 500); 1 Feb 2015 21:04:59 -0000 Mailing-List: contact dev-help@directory.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Apache Directory Developers List" Delivered-To: mailing list dev@directory.apache.org Received: (qmail 23584 invoked by uid 99); 1 Feb 2015 21:04:58 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 01 Feb 2015 21:04:58 +0000 X-ASF-Spam-Status: No, hits=-5.0 required=5.0 tests=RCVD_IN_DNSWL_HI,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of kai.zheng@intel.com designates 134.134.136.20 as permitted sender) Received: from [134.134.136.20] (HELO mga02.intel.com) (134.134.136.20) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 01 Feb 2015 21:04:33 +0000 Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga101.jf.intel.com with ESMTP; 01 Feb 2015 13:04:30 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.09,503,1418112000"; d="scan'208";a="679399929" Received: from kmsmsx151.gar.corp.intel.com ([172.21.73.86]) by orsmga002.jf.intel.com with ESMTP; 01 Feb 2015 13:04:29 -0800 Received: from shsmsx102.ccr.corp.intel.com (10.239.4.154) by KMSMSX151.gar.corp.intel.com (172.21.73.86) with Microsoft SMTP Server (TLS) id 14.3.195.1; Mon, 2 Feb 2015 05:04:27 +0800 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.91]) by shsmsx102.ccr.corp.intel.com ([169.254.2.124]) with mapi id 14.03.0195.001; Mon, 2 Feb 2015 05:04:25 +0800 From: "Zheng, Kai" To: Apache Directory Developers List Subject: RE: directory-kerberos git commit: Improved the Javadoc, added some missing parts. Thread-Topic: directory-kerberos git commit: Improved the Javadoc, added some missing parts. Thread-Index: AQHQPgK0L6UL2m+4T0CfaavJUM06SZzcR1nA Date: Sun, 1 Feb 2015 21:04:26 +0000 Message-ID: <8D5F7E3237B3ED47B84CF187BB17B66611A8CD9B@SHSMSX103.ccr.corp.intel.com> References: <29882cccc9df4164bedf155cad7bb2df@git.apache.org> <54CDF358.5040709@gmail.com> In-Reply-To: <54CDF358.5040709@gmail.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Virus-Checked: Checked by ClamAV on apache.org SGkgRW1tYW51ZWwsDQoNCj4+bWFraW5nIHRoZSBoZXgyYnl0ZXMoKSBtZXRob2QgYXMgZmFzdCBh cyBwb3NzaWJsZSwgcmVtb3ZpbmcgdGhlIGNhbGwgdG8gc3BsaXQoKSBhbmQgY2hhcltdIGNvcHks IA0KSXQncyBncmVhdCB0byBoYXZlIHRoZSBvcHRpbWl6YXRpb24sIHRob3VnaCBpdCdzIGN1cnJl bnRseSBvbmx5IGZvciB0ZXN0IGNvZGVzIGJ1dCBJIGd1ZXNzIHdlIG1heSBuZWVkIGl0IGluIHBy b2R1Y3Rpb24gY29kZXMgaW4gZnV0dXJlLg0KDQo+PmJ1dCBhdCB0aGUgc2FtZSB0aW1lLCB0aGUg bWFpbiBsb29wIGlzIG5vdCBvcHRpbWFsLCBhcyBJIGhhZCB0byBhZGQgYSB0ZXN0IHRvIGdldCBy aWQgb2YgdGhlIDIgZmlyc3QgY2hhcnMNCk1heWJlIHdlIGNhbiByZW1vdmUgdGhlIDIgZmlyc3Qg Y2hhcnMgZnJvbSBvdXIgdGVzdCBkYXRhIHNvIHdvbid0IGJvdGhlciBvbiB0aGVtIGF0IGFsbC4g DQoNClNvcnJ5IGJ1dCBJIGhhdmUgdG8gdGVsbCB5b3UgdGhhdCB0aGVyZSdyZSBzaW1pbGFyIGNv cHkgb2YgaXQgaW4ga2VyYnktdXRpbCBtb2R1bGUuIEl0J3MgZm9yIGFsbCB0aGUgcHJvamVjdHMu IEknbSBub3Qgc3VyZSBpZiB3ZSdkIGJldHRlciBvciBub3QNCkNvbnNvbGlkYXRlIHRoZW0gaW50 byBvbmUsIGJlY2F1c2Uga2VyYnktYXNuMSBub3QgcmVseWluZyBvbiBrZXJieS11dGlsIG1heSBi ZSBhIGdvb2QgaWRlYS4gSG93IGRvIHlvdSB0aGluayA/DQoNClJlZ2FyZHMsDQpLYWkNCg0KLS0t LS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IEVtbWFudWVsIEzDqWNoYXJueSBbbWFpbHRv OmVsZWNoYXJueUBnbWFpbC5jb21dIA0KU2VudDogU3VuZGF5LCBGZWJydWFyeSAwMSwgMjAxNSA1 OjM1IFBNDQpUbzogZGV2QGRpcmVjdG9yeS5hcGFjaGUub3JnDQpTdWJqZWN0OiBSZTogZGlyZWN0 b3J5LWtlcmJlcm9zIGdpdCBjb21taXQ6IEltcHJvdmVkIHRoZSBKYXZhZG9jLCBhZGRlZCBzb21l IG1pc3NpbmcgcGFydHMuDQoNCkhpIEtlcmJ5IGZlbGxvd3MsDQoNCkkgaGF2ZSBtYWRlIGEgc21h bGwgbWlzdGFrZSwgcHVzaGluZyBzb21lIGNvZGUgdGhhdCB3YXMgbm90IGludGVuZGVkIHRvIGJl IHB1c2hlZC4gVHlwaWNhbGx5LCB0aGlzIG1vZGlmaWNhdGlvbiBvZiB0aGUgVXRpbCBjbGFzcyB3 YXMgZG9uZSBsb2NhbGx5IGZvciB0aGUgZnVuIG9ubHkuDQoNCldlIGNhbiBrZWVwIGl0LCBidXQg SSB3b3VsZCByZWFsbHkgZG9uJ3QgbWluZCBpZiB3ZSBjb21lIGJhY2sgdG8gdGhlIG9yaWdpbmFs IGNvZGUgd2hpY2ggaXMgd2F5IG1vcmUgZGVuc2UuDQoNCihJIHBsYXllZCBhcm91bmQgdGhlIGlk ZWEgb2YgbWFraW5nIHRoZSBoZXgyYnl0ZXMoKSBtZXRob2QgYXMgZmFzdCBhcyBwb3NzaWJsZSwg cmVtb3ZpbmcgdGhlIGNhbGwgdG8gc3BsaXQoKSBhbmQgY2hhcltdIGNvcHksIGJ1dCBhdCB0aGUg c2FtZSB0aW1lLCB0aGUgbWFpbiBsb29wIGlzIG5vdCBvcHRpbWFsLCBhcyBJIGhhZCB0byBhZGQg YSB0ZXN0IHRvIGdldCByaWQgb2YgdGhlIDIgZmlyc3QgY2hhcnMsIHNvbWV0aGluZyB0aGF0IGNv dWxkIGhhdmUgYmVlbiBpbXByb3ZlZCB1c2luZyBhIGZvciAoaW50IGkgPSAyOyBpPGhleFN0ci5s ZW5ndGg7IGkrKykpDQoNClNvIGxldCBtZSBrbm93LCBJIGNhbiByZXZlcnQgaXQgYmFjayB0byB3 aGF0IGl0IHdhcyBiZWZvcmUuDQoNClNvcnJ5IGZvciB0aGUgbm9pc2UuLi4NCg0KTGUgMDEvMDIv MTUgMTA6MjksIGVsZWNoYXJueUBhcGFjaGUub3JnIGEgw6ljcml0IDoNCj4gUmVwb3NpdG9yeTog ZGlyZWN0b3J5LWtlcmJlcm9zDQo+IFVwZGF0ZWQgQnJhbmNoZXM6DQo+ICAgcmVmcy9oZWFkcy9t YXN0ZXIgYzY5ZjM4NTNiIC0+IDY4YjVmMWJiMg0KPg0KPg0KPiBJbXByb3ZlZCB0aGUgSmF2YWRv YywgYWRkZWQgc29tZSBtaXNzaW5nIHBhcnRzLg0KPg0KPiBQcm9qZWN0OiANCj4gaHR0cDovL2dp dC13aXAtdXMuYXBhY2hlLm9yZy9yZXBvcy9hc2YvZGlyZWN0b3J5LWtlcmJlcm9zL3JlcG8NCj4g Q29tbWl0OiANCj4gaHR0cDovL2dpdC13aXAtdXMuYXBhY2hlLm9yZy9yZXBvcy9hc2YvZGlyZWN0 b3J5LWtlcmJlcm9zL2NvbW1pdC82OGI1Zg0KPiAxYmINCj4gVHJlZTogDQo+IGh0dHA6Ly9naXQt d2lwLXVzLmFwYWNoZS5vcmcvcmVwb3MvYXNmL2RpcmVjdG9yeS1rZXJiZXJvcy90cmVlLzY4YjVm MWINCj4gYg0KPiBEaWZmOiANCj4gaHR0cDovL2dpdC13aXAtdXMuYXBhY2hlLm9yZy9yZXBvcy9h c2YvZGlyZWN0b3J5LWtlcmJlcm9zL2RpZmYvNjhiNWYxYg0KPiBiDQo+DQo+IEJyYW5jaDogcmVm cy9oZWFkcy9tYXN0ZXINCj4gQ29tbWl0OiA2OGI1ZjFiYjI3ODY1NmY0NTAxODk5ZGJiZjg3NzZm MDUxMjRiZWYwDQo+IFBhcmVudHM6IGM2OWYzODUNCj4gQXV0aG9yOiBFbW1hbnVlbCBMw4PCqWNo YXJueSA8ZWxlY2hhcm55QHN5bWFzLmNvbT4NCj4gQXV0aG9yZWQ6IFN1biBGZWIgMSAxMDoyODo1 MyAyMDE1ICswMTAwDQo+IENvbW1pdHRlcjogRW1tYW51ZWwgTMODwqljaGFybnkgPGVsZWNoYXJu eUBzeW1hcy5jb20+DQo+IENvbW1pdHRlZDogU3VuIEZlYiAxIDEwOjI4OjUzIDIwMTUgKzAxMDAN Cj4NCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAgLi4uL3Rlc3QvamF2YS9vcmcvYXBhY2hlL2tlcmJ5L2Fz bjEvVXRpbC5qYXZhICAgfCAxMDUgKysrKysrKysrKysrKysrKy0tLQ0KPiAgMSBmaWxlIGNoYW5n ZWQsIDkzIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQ0KPiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ DQo+DQo+IGh0dHA6Ly9naXQtd2lwLXVzLmFwYWNoZS5vcmcvcmVwb3MvYXNmL2RpcmVjdG9yeS1r ZXJiZXJvcy9ibG9iLzY4YjVmMWINCj4gYi9rZXJieS1hc24xL3NyYy90ZXN0L2phdmEvb3JnL2Fw YWNoZS9rZXJieS9hc24xL1V0aWwuamF2YQ0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IGRpZmYgLS1naXQg YS9rZXJieS1hc24xL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS9rZXJieS9hc24xL1V0aWwuamF2 YSANCj4gYi9rZXJieS1hc24xL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS9rZXJieS9hc24xL1V0 aWwuamF2YQ0KPiBpbmRleCA1ZjU4ZTFhLi40NDY5MTdhIDEwMDY0NA0KPiAtLS0gYS9rZXJieS1h c24xL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS9rZXJieS9hc24xL1V0aWwuamF2YQ0KPiArKysg Yi9rZXJieS1hc24xL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS9rZXJieS9hc24xL1V0aWwuamF2 YQ0KPiBAQCAtNTAsMjEgKzUwLDEwMiBAQCBwdWJsaWMgY2xhc3MgVXRpbCB7DQo+ICAgICAgICog MHgwMiAwMiAwMCA4MA0KPiAgICAgICAqLw0KPiAgICAgIHB1YmxpYyBzdGF0aWMgYnl0ZVtdIGhl eDJieXRlcyhTdHJpbmcgaGV4U3RyaW5nKSB7DQo+IC0gICAgICAgIGhleFN0cmluZyA9IGhleFN0 cmluZy50b1VwcGVyQ2FzZSgpOw0KPiAtICAgICAgICBTdHJpbmcgaGV4U3RyID0gaGV4U3RyaW5n Ow0KPiAtICAgICAgICBpZiAoaGV4U3RyaW5nLnN0YXJ0c1dpdGgoIjBYIikpIHsNCj4gLSAgICAg ICAgICAgIGhleFN0ciA9IGhleFN0cmluZy5zdWJzdHJpbmcoMik7DQo+ICsgICAgICAgIGlmICho ZXhTdHJpbmc9PW51bGwpIHsNCj4gKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1l bnRFeGNlcHRpb24oIkludmFsaWQgaGV4IHN0cmluZyB0byANCj4gKyBjb252ZXJ0IDogbnVsbCIp Ow0KPiAgICAgICAgICB9DQo+IC0gICAgICAgIFN0cmluZ1tdIGhleFBhcnRzID0gaGV4U3RyLnNw bGl0KCIgIik7DQo+ICsgICAgICAgIA0KPiArICAgICAgICBjaGFyW10gaGV4U3RyID0gaGV4U3Ry aW5nLnRvQ2hhckFycmF5KCk7DQo+ICANCj4gLSAgICAgICAgYnl0ZVtdIGJ5dGVzID0gbmV3IGJ5 dGVbaGV4UGFydHMubGVuZ3RoXTsNCj4gLSAgICAgICAgY2hhcltdIGhleFBhcnQ7DQo+IC0gICAg ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaGV4UGFydHMubGVuZ3RoOyArK2kpIHsNCj4gLSAgICAg ICAgICAgIGhleFBhcnQgPSBoZXhQYXJ0c1tpXS50b0NoYXJBcnJheSgpOw0KPiAtICAgICAgICAg ICAgaWYgKGhleFBhcnQubGVuZ3RoICE9IDIpIHsNCj4gLSAgICAgICAgICAgICAgICB0aHJvdyBu ZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIGhleCBzdHJpbmcgdG8gY29udmVy dCIpOw0KPiArICAgICAgICBpZiAoaGV4U3RyLmxlbmd0aCA8IDQpIHsNCj4gKyAgICAgICAgICAg IHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgaGV4IHN0cmluZyB0 byBjb252ZXJ0IDogbGVuZ3RoIGJlbG93IDQiKTsNCj4gKyAgICAgICAgfQ0KPiArICAgICAgICAN Cj4gKyAgICAgICAgaWYgKCggaGV4U3RyWzBdICE9ICcwJykgfHwgKChoZXhTdHJbMV0hPSd4Jykg JiYgKGhleFN0clsxXSE9J1gnKSkpIHsNCj4gKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2Fs QXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgaGV4IHN0cmluZyB0byBjb252ZXJ0IDogbm90IHN0 YXJ0aW5nIHdpdGggJzB4JyIpOw0KPiArICAgICAgICB9DQo+ICsgICAgICAgIA0KPiArICAgICAg ICBieXRlW10gYnl0ZXMgPSBuZXcgYnl0ZVsoaGV4U3RyLmxlbmd0aCAtIDEpLzNdOw0KPiArICAg ICAgICBpbnQgcG9zID0gMDsgDQo+ICsgICAgICAgIGJvb2xlYW4gaGlnaCA9IGZhbHNlOw0KPiAr ICAgICAgICBib29sZWFuIHByZWZpeCA9IHRydWU7DQo+ICsgICAgICAgIA0KPiArICAgICAgICBm b3IgKGNoYXIgYzpoZXhTdHIpIHsNCj4gKyAgICAgICAgICAgIGlmIChwcmVmaXgpIHsNCj4gKyAg ICAgICAgICAgICAgICBpZiAoKGMgPT0gJ3gnKXx8IChjPT0nWCcpKSB7DQo+ICsgICAgICAgICAg ICAgICAgICAgIHByZWZpeCA9IGZhbHNlOw0KPiArICAgICAgICAgICAgICAgIH0NCj4gKyAgICAg ICAgICAgICAgICANCj4gKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCj4gICAgICAgICAgICAg IH0NCj4gLSAgICAgICAgICAgIGJ5dGVzW2ldID0gKGJ5dGUpICgoSEVYX0NIQVJTX1NUUi5pbmRl eE9mKGhleFBhcnRbMF0pIDw8IDQpICsgSEVYX0NIQVJTX1NUUi5pbmRleE9mKGhleFBhcnRbMV0p KTsNCj4gKyAgICAgICAgICAgIA0KPiArICAgICAgICAgICAgc3dpdGNoIChjKSB7DQo+ICsgICAg ICAgICAgICAgICAgY2FzZSAnICcgOg0KPiArICAgICAgICAgICAgICAgICAgICBpZiAoaGlnaCkg ew0KPiArICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBoYWQgb25seSB0aGUgaGln aCBwYXJ0DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3Vt ZW50RXhjZXB0aW9uKCJJbnZhbGlkIGhleCBzdHJpbmcgdG8gY29udmVydCIpOw0KPiArICAgICAg ICAgICAgICAgICAgICB9DQo+ICsgICAgICAgICAgICAgICAgICAgIA0KPiArICAgICAgICAgICAg ICAgICAgICAvLyBBIGhleCBwYWlyIGhhcyBiZWVuIGRlY29kZWQNCj4gKyAgICAgICAgICAgICAg ICAgICAgcG9zKys7DQo+ICsgICAgICAgICAgICAgICAgICAgIGhpZ2ggPSBmYWxzZTsNCj4gKyAg ICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAgICAgICAgICAgIA0KPiArICAg ICAgICAgICAgICAgIGNhc2UgJzAnOiANCj4gKyAgICAgICAgICAgICAgICBjYXNlICcxJzogDQo+ ICsgICAgICAgICAgICAgICAgY2FzZSAnMic6IA0KPiArICAgICAgICAgICAgICAgIGNhc2UgJzMn OiANCj4gKyAgICAgICAgICAgICAgICBjYXNlICc0JzoNCj4gKyAgICAgICAgICAgICAgICBjYXNl ICc1JzogDQo+ICsgICAgICAgICAgICAgICAgY2FzZSAnNic6DQo+ICsgICAgICAgICAgICAgICAg Y2FzZSAnNyc6DQo+ICsgICAgICAgICAgICAgICAgY2FzZSAnOCc6DQo+ICsgICAgICAgICAgICAg ICAgY2FzZSAnOSc6DQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIChoaWdoKSB7DQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICBieXRlc1twb3NdICs9IChieXRlKShjIC0gJzAnKTsNCj4gKyAg ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5 dGVzW3Bvc10gPSAoYnl0ZSkoKGMgLSAnMCcpIDw8IDQpOw0KPiArICAgICAgICAgICAgICAgICAg ICB9DQo+ICsgICAgICAgICAgICAgICAgICAgIA0KPiArICAgICAgICAgICAgICAgICAgICBoaWdo ID0gIWhpZ2g7DQo+ICsgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICAgICAg ICAgICAgICANCj4gKyAgICAgICAgICAgICAgICBjYXNlICdhJyA6DQo+ICsgICAgICAgICAgICAg ICAgY2FzZSAnYicgOg0KPiArICAgICAgICAgICAgICAgIGNhc2UgJ2MnIDoNCj4gKyAgICAgICAg ICAgICAgICBjYXNlICdkJyA6DQo+ICsgICAgICAgICAgICAgICAgY2FzZSAnZScgOg0KPiArICAg ICAgICAgICAgICAgIGNhc2UgJ2YnIDoNCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgKGhpZ2gp IHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzW3Bvc10gKz0gKGJ5dGUpKGMgLSAn YScgKyAxMCk7DQo+ICsgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICBieXRlc1twb3NdID0gKGJ5dGUpKChjIC0gJ2EnICsgMTApIDw8IDQpOw0K PiArICAgICAgICAgICAgICAgICAgICB9DQo+ICsNCj4gKyAgICAgICAgICAgICAgICAgICAgaGln aCA9ICFoaWdoOw0KPiArICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gKw0KPiArICAgICAg ICAgICAgICAgIGNhc2UgJ0EnIDoNCj4gKyAgICAgICAgICAgICAgICBjYXNlICdCJyA6DQo+ICsg ICAgICAgICAgICAgICAgY2FzZSAnQycgOg0KPiArICAgICAgICAgICAgICAgIGNhc2UgJ0QnIDoN Cj4gKyAgICAgICAgICAgICAgICBjYXNlICdFJyA6DQo+ICsgICAgICAgICAgICAgICAgY2FzZSAn RicgOg0KPiArICAgICAgICAgICAgICAgICAgICBpZiAoaGlnaCkgew0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgYnl0ZXNbcG9zXSArPSAoYnl0ZSkoYyAtICdBJyArIDEwKTsNCj4gKyAgICAg ICAgICAgICAgICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVz W3Bvc10gPSAoYnl0ZSkoKGMgLSAnQScgKyAxMCkgPDwgNCk7DQo+ICsgICAgICAgICAgICAgICAg ICAgIH0NCj4gKw0KPiArICAgICAgICAgICAgICAgICAgICBoaWdoID0gIWhpZ2g7DQo+ICsgICAg ICAgICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICAgICAgICAgICAgICANCj4gKyAgICAg ICAgICAgICAgICBkZWZhdWx0IDoNCj4gKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEls bGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBoZXggc3RyaW5nIHRvIGNvbnZlcnQiKTsN Cj4gKyAgICAgICAgICAgIH0NCj4gKyAgICAgICAgfQ0KPiArICAgICAgICANCj4gKyAgICAgICAg aWYgKGhpZ2gpIHsNCj4gKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNl cHRpb24oIkludmFsaWQgaGV4IHN0cmluZyB0byANCj4gKyBjb252ZXJ0Iik7DQo+ICAgICAgICAg IH0NCj4gIA0KPiAgICAgICAgICByZXR1cm4gYnl0ZXM7DQo+DQoNCg==