From mboxrd@z Thu Jan 1 00:00:00 1970 From: Warner Losh Subject: Re: [PATCH 03/12] libfdt: Safer access to strings section Date: Sat, 14 Apr 2018 08:42:23 -0600 Message-ID: References: <20180325232523.13469-1-david@gibson.dropbear.id.au> <20180325232523.13469-4-david@gibson.dropbear.id.au> <20180403150224.GD1984@umbus.fritz.box> <20180410052254.GK3361@umbus.fritz.box> <20180412043919.GH9425@umbus.fritz.box> <20180413165319.GF10996@bill-the-cat.ec.rr.com> <20180414034305.GV9425@umbus.fritz.box> Mime-Version: 1.0 Content-Transfer-Encoding: base64 Return-path: DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bsdimp-com.20150623.gappssmtp.com; s=20150623; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=ed7U1jjxMDWO8cszRRCVihnP+L7NjyjjNsdSEetZKLM=; b=nYHB4Z4SAr4l3uZJN9j/z22EVV0uz64FvzYNXWVGs7+JG5ugCj+tqTJOI5v19cxfqd 1eNHQDsany1CK4qaajDvFY+/6Kdkreo1vSS/FGqv2N0ur4O23XeoliK8jSbsMOS4v1ep QLJc+4mhnI6x1bDyDS719WBWJIt0npiSu10QC+Ee05N2bxGiib8uGmWfNMmZdWp9XGyw 2Dlm/bbHevadQoAbGvithdbay1d7yFbB6/NV2MKMo/6R7FiwfYwWdARR7yMK96TDqiLx zYsb2nFbgQbbJ6p73CpaUCX3IWWfkoe7h+cNNaaXYMKlLbIooI4RUZv180cIf/RJGTxf IisA== In-Reply-To: <20180414034305.GV9425@umbus.fritz.box> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Content-Type: text/plain; charset="us-ascii" To: David Gibson Cc: aik@ozlabs.ru, Tom Rini , Devicetree Compiler , U-Boot Mailing List T24gRnJpLCBBcHIgMTMsIDIwMTggYXQgOTo0MyBQTSwgRGF2aWQgR2lic29uIDxkYXZpZEBnaWJz b24uZHJvcGJlYXIuaWQuYXU+Cndyb3RlOgoKPiBPbiBGcmksIEFwciAxMywgMjAxOCBhdCAxMjo1 MzoxOVBNIC0wNDAwLCBUb20gUmluaSB3cm90ZToKPiA+IE9uIFRodSwgQXByIDEyLCAyMDE4IGF0 IDAyOjM5OjE5UE0gKzEwMDAsIERhdmlkIEdpYnNvbiB3cm90ZToKPiA+ID4gT24gVHVlLCBBcHIg MTAsIDIwMTggYXQgMTA6NDI6NDVBTSAtMDQwMCwgU2ltb24gR2xhc3Mgd3JvdGU6Cj4gPiA+ID4g K1UtQm9vdCwgVG9tLCBNYXNhaGlybwo+ID4gPiA+Cj4gPiA+ID4gSGkgRGF2aWQsCj4gPiA+ID4K PiA+ID4gPiBPbiAxMCBBcHJpbCAyMDE4IGF0IDAxOjIyLCBEYXZpZCBHaWJzb24gPGRhdmlkQGdp YnNvbi5kcm9wYmVhci5pZC5hdT4KPiB3cm90ZToKPiA+ID4gPiA+IE9uIFdlZCwgQXByIDA0LCAy MDE4IGF0IDAxOjIxOjEwQU0gKzA4MDAsIFNpbW9uIEdsYXNzIHdyb3RlOgo+ID4gPiA+ID4+IEhp IERhdmlkLAo+ID4gPiA+ID4+Cj4gPiA+ID4gPj4gT24gMyBBcHJpbCAyMDE4IGF0IDIzOjAyLCBE YXZpZCBHaWJzb24gPAo+IGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4gd3JvdGU6Cj4gPiA+ ID4gPj4gPgo+ID4gPiA+ID4+ID4gT24gRnJpLCBNYXIgMzAsIDIwMTggYXQgMDQ6NDI6MjFQTSAr MDgwMCwgU2ltb24gR2xhc3Mgd3JvdGU6Cj4gPiA+ID4gPj4gPiA+IEhpIERhdmlkLAo+ID4gPiA+ ID4+ID4gPgo+ID4gPiA+ID4+ID4gPiBPbiAyNiBNYXJjaCAyMDE4IGF0IDA3OjI1LCBEYXZpZCBH aWJzb24gPAo+IGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4gd3JvdGU6Cj4gPiA+ID4gPj4g PiA+ID4gZmR0X3N0cmluZygpIGlzIHVzZWQgdG8gcmV0cmlldmUgc3RyaW5ncyBmcm9tIGEgRFQg YmxvYidzCj4gc3RyaW5ncyBzZWN0aW9uLgo+ID4gPiA+ID4+ID4gPiA+IEl0J3MgcmFyZWx5IHVz ZWQgZGlyZWN0bHksIGJ1dCBpcyB3aWRlbHkgdXNlZCBpbnRlcm5hbGx5Lgo+ID4gPiA+ID4+ID4g PiA+Cj4gPiA+ID4gPj4gPiA+ID4gSG93ZXZlciwgaXQgZG9lc24ndCBkbyBhbnkgYm91bmRzIGNo ZWNraW5nLCB3aGljaCBtZWFucyBpbgo+IHRoZSBjYXNlIG9mIGEKPiA+ID4gPiA+PiA+ID4gPiBj b3JydXB0ZWQgYmxvYiBpdCBjb3VsZCBhY2Nlc3MgYmFkIG1lbW9yeSwgd2hpY2ggbGliZmR0IGlz Cj4gc3VwcG9zZWQgdG8KPiA+ID4gPiA+PiA+ID4gPiBhdm9pZC4KPiA+ID4gPiA+PiA+ID4gPgo+ ID4gPiA+ID4+ID4gPiA+IFRoaXMgd3JpdGUgYSBzYWZlIGFsdGVybmF0aXZlIHRvIGZkdF9zdHJp bmcsCj4gZmR0X2dldF9zdHJpbmcoKS4gIEl0IGNoZWNrcwo+ID4gPiA+ID4+ID4gPiA+IGJvdGgg dGhhdCB0aGUgZ2l2ZW4gb2Zmc2V0IGlzIHdpdGhpbiB0aGUgc3RyaW5nIHNlY3Rpb24gYW5kCj4g dGhhdCB0aGUgc3RyaW5nCj4gPiA+ID4gPj4gPiA+ID4gaXQgcG9pbnRzIHRvIGlzIHByb3Blcmx5 IFwwIHRlcm1pbmF0ZWQgd2l0aGluIHRoZSBzZWN0aW9uLgo+IEl0IGFsc28gcmV0dXJucwo+ID4g PiA+ID4+ID4gPiA+IHRoZSBzdHJpbmcncyBsZW5ndGggYXMgYSBjb252ZW5pZW5jZSAoc2luY2Ug aXQgbmVlZHMgdG8KPiBkZXRlcm1pbmUgdG8gZG8gdGhlCj4gPiA+ID4gPj4gPiA+ID4gY2hlY2tz IGFueXdheSkuCj4gPiA+ID4gPj4gPiA+ID4KPiA+ID4gPiA+PiA+ID4gPiBmZHRfc3RyaW5nKCkg aXMgcmV3cml0dGVuIGluIHRlcm1zIG9mIGZkdF9nZXRfc3RyaW5nKCkgZm9yCj4gY29tcGF0aWJp bGl0eS4KPiA+ID4gPiA+PiA+ID4gPgo+ID4gPiA+ID4+ID4gPiA+IE1vc3Qgb2YgdGhlIGRpZmYg aGVyZSBpcyBhY3R1YWxseSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlLgo+ID4gPiA+ID4+ID4gPiA+ Cj4gPiA+ID4gPj4gPiA+ID4gU2lnbmVkLW9mZi1ieTogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJz b24uZHJvcGJlYXIuaWQuYXU+Cj4gPiA+ID4gPj4gPiA+ID4gLS0tCj4gPiA+ID4gPj4gPiA+ID4g IGxpYmZkdC9mZHRfcm8uYyAgICAgICAgICB8IDYxCj4gKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystLQo+ID4gPiA+ID4+ID4gPiA+ICBsaWJmZHQvbGliZmR0LmggICAgICAgICAg fCAxOCArKysrKysrKysrLQo+ID4gPiA+ID4+ID4gPiA+ICBsaWJmZHQvdmVyc2lvbi5sZHMgICAg ICAgfCAgMiArLQo+ID4gPiA+ID4+ID4gPiA+ICB0ZXN0cy8uZ2l0aWdub3JlICAgICAgICAgfCAg MSArCj4gPiA+ID4gPj4gPiA+ID4gIHRlc3RzL01ha2VmaWxlLnRlc3RzICAgICB8ICAyICstCj4g PiA+ID4gPj4gPiA+ID4gIHRlc3RzL3J1bl90ZXN0cy5zaCAgICAgICB8ICAxICsKPiA+ID4gPiA+ PiA+ID4gPiAgdGVzdHMvdGVzdGRhdGEuaCAgICAgICAgIHwgIDEgKwo+ID4gPiA+ID4+ID4gPiA+ ICB0ZXN0cy90ZXN0dXRpbHMuYyAgICAgICAgfCAxMSArKysrKy0tCj4gPiA+ID4gPj4gPiA+ID4g IHRlc3RzL3RyZWVzLlMgICAgICAgICAgICB8IDI2ICsrKysrKysrKysrKysrKysKPiA+ID4gPiA+ PiA+ID4gPiAgdGVzdHMvdHJ1bmNhdGVkX3N0cmluZy5jIHwgNzkKPiArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ID4gPiA+PiA+ID4gPiAgMTAgZmls ZXMgY2hhbmdlZCwgMTkzIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCj4gPiA+ID4gPj4g PiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy90cnVuY2F0ZWRfc3RyaW5nLmMKPiA+ID4g PiA+PiA+ID4KPiA+ID4gPiA+PiA+ID4gU2ltaWxhciBjb2RlLXNpemUgcXVlc2l0b24gaGVyZS4g SXQgbG9va3MgbGlrZSBhIGxvdCBvZgo+IGNoZWNraW5nIGNvZGUuCj4gPiA+ID4gPj4gPiA+IENh biB3ZSBoYXZlIGFuIG9wdGlvbiB0byByZW1vdmUgaXQ/Cj4gPiA+ID4gPj4gPgo+ID4gPiA+ID4+ ID4gQWdhaW4sIEknbSBkaXNpbmNsaW5lZCB3aXRob3V0IGEgY29uY3JldGUgZXhhbXBsZSBvZiBh Cj4gcHJvYmxlbS4gIEZ3aXcKPiA+ID4gPiA+PiA+IHRoZSBjb2RlIHNpemUgY2hhbmdlIGlzICsy NzYgYnl0ZXMgb24gbXkgc2V0dXAuCj4gPiA+ID4gPj4KPiA+ID4gPiA+PiBUaGF0IG1pZ2h0IG5v dCBzb3VuZCBsaWtlIGEgbG90LCBidXQgdGhlIG92ZXJoZWFkIG9mIERUIGluIFUtQm9vdAo+IGlz Cj4gPiA+ID4gPj4gYWJvdXQgM0tCLCBzbyB0aGlzIGFkZHMgbmVhcmx5IDEwJS4KPiA+ID4gPiA+ Cj4gPiA+ID4gPiBIbS4gIEFuZCBob3cgbXVjaCBpcyBpdCBjb21wYXJlZCB0byB0aGUgd2hvbGUg VS1Cb290IGJsb2I/Cj4gPiA+ID4gPgo+ID4gPiA+ID4+IFRoZSBzcGVjaWZpYyBwcm9ibGVtIGlz IHRoYXQgd2hlbiBVLUJvb3QgU1BMIGdldHMgdG9vIGJpZyBib2FyZHMKPiBkb24ndAo+ID4gPiA+ ID4+IGJvb3QuIEJlY2F1c2Ugd2UgdGFrZSB0aGUgdXBzdHJlYW0gbGliZmR0IHRoaXMgd2lsbCBh ZmZlY3QgVS1Cb290Lgo+ID4gPiA+ID4+Cj4gPiA+ID4gPj4gRG8geW91IGhhdmUgYW55IHRob3Vn aHRzIG9uIGhvdyB3ZSBjb3VsZCBhdm9pZCB0aGlzIHNpemUgaW5jcmVhc2U/Cj4gPiA+ID4gPgo+ ID4gPiA+ID4gU28sIGFnYWluLCBJJ20gdmVyeSBkaXNpbmNsaW5lZCB0byBwcmlvcml0aXplIHNp emUgb3ZlciBtZW1vcnkKPiBzYWZldHkKPiA+ID4gPiA+IHdpdGhvdXQgYSAqY29uY3JldGUqIGV4 YW1wbGUuICBpLmUuICJXZSBoaXQgdGhpcyBzcGVjaWZpYyBwcm9ibGVtCj4gd2l0aAo+ID4gPiA+ ID4gc2l6ZSBvbiB0aGlzIHNwZWNpZmljIGJvYXJkIHRoYXQgd2Ugd2VyZSByZWFsbHkgdXNpbmci IHJhdGhlciB0aGFuCj4gPiA+ID4gPiBqdXN0ICJpdCBtaWdodCBiZSBhIHByb2JsZW0iLgo+ID4g PiA+ID4KPiA+ID4gPiA+IElNTywgdGhpbmtpbmcgb2YgaXQgaW4gdGVybXMgb2YgdGhlICJpbmNy ZWFzZSIgaXMgdGhlIHdyb25nIHdheQo+ID4gPiA+ID4gYXJvbmQuICBJZiBzaXplIGlzIHJlYWxs eSBhIHByb2JsZW0gZm9yIHlvdSwgeW91IHdhbnQgdG8gY29uc2lkZXIKPiBob3cKPiA+ID4gPiA+ IHlvdSBjYW4gcmVkdWNlIGl0IGluIGFueSB3YXksIG5vdCBqdXN0IHJvbGxpbmcgYmFjayB0aGUg bW9zdCByZWNlbnQKPiA+ID4gPiA+IGNoYW5nZXMuICBUaGUgbW9zdCBvYnZpb3VzIG9uZSB0byBt ZSB3b3VsZCBiZSB0byB0cnkKPiA+ID4gPiA+IC1mZnVuY3Rpb24tc2VjdGlvbnMgdG8gZXhjbHVk ZSBhbnkgZnVuY3Rpb25zIHRoYXQgYXJlbid0IGFjdHVhbGx5Cj4gdXNlZAo+ID4gPiA+ID4gYnkg dS1ib290IChpZiB0aGlzIGlzIGhlbHBmdWwgYW5kIHRoZSBjb21waWxlcidzIGFuIGlzc3VlLCBJ J2QgYmUKPiA+ID4gPiA+IHdpbGxpbmcgdG8gY29uc2lkZXIgc3BsaXR0aW5nIHVwIGxpYmZkdCBp bnRvIGEgYnVuY2ggbW9yZSBDIGZpbGVzKS4KPiA+ID4gPgo+ID4gPiA+IEFjdHVhbGx5IFUtQm9v dCBkb2VzIHVzZSB0aGF0IG9wdGlvbi4gQmVsaWV2ZSBtZSwgYSBsb3Qgb2Ygd29yayBoYXMKPiA+ ID4gPiBnb25lIGludG8gbWFraW5nIHRoaXMgc21hbGwuIFRoZXJlIGlzIGNvbnN0YW50IHByZXNz dXJlIHRvCj4gPiA+ID4gcmVkdWNlL3JldGFpbiB0aGUgc2l6ZSBpbiBTUEwgc28gdGhhdCB3ZSBj YW4gc3RheSBiZWxvdyBsaW1pdHMuIEUuZy4KPiA+ID4gPiBmaXJlZmx5LXJrMzI4OCBoYXMgYSAz MEtCIGxpbWl0IGZvciBTUEwuIEN1cnJlbnQgcHJvYmxlbXMgYXJlIHRoZQo+ID4gPiA+IDY0LWJp dCBBbGx3aW5uZXIgcGFydHMgd2hpY2ggYXJlIHJpZ2h0IHVwIGFnYWluc3QgdGhlIGxpbWl0IGF0 Cj4gPiA+ID4gcHJlc2VudC4KPiA+ID4gPgo+ID4gPiA+IEFsc28sIE1hc2FoaXJvIHJlY2VudGx5 IGRpZCBzb21lIHdvcmsgdG8gbWFrZSBVLUJvb3QncyB2ZXJzaW9uIG9mCj4gPiA+ID4gbGliZmR0 IHRoZSBzYW1lIGFzIGlzIHVzZWQgYnkgTGludXgsIHNvIGFueSBjaGFuZ2VzIHdpbGwgaW1wYWN0 IHVzCj4gPiA+ID4gcXVpdGUgcXVpY2tseS4KPiA+ID4KPiA+ID4gSG0sIG9rLCBwb2ludCB0YWtl bi4KPiA+ID4KPiA+ID4gSSBkaWQgc29tZSBxdWljayBoYWNrcyBhbmQgSSB0aGluayBpdCB3b3Vs ZG4ndCBiZSB0b28gaGFyZCB0byBhZGQgYQo+ID4gPiAiLURVTlNBRkUiIG9yIHNpbWlsYXIgb3B0 aW9uIHRoYXQgd291bGQgdHVybiBvZmYgbW9zdCBvZiB0aGUgY2hlY2tpbmcKPiA+ID4gYW5kIHNh dmUgYSBzdWJzdGFudGlhbCBhbW91bnQgb2YgY29kZS4KPiA+ID4KPiA+ID4gSSBkb24ndCByZWFs bHkgaGF2ZSB0aW1lIHRvIHBvbGlzaCB0aGlzIHVwIG15c2VsZiwgYnV0IEknZCBiZSBoYXBweSB0 bwo+ID4gPiBtZXJnZSBwYXRjaGVzIHRoYXQgYWRkIHNvbWV0aGluZyBsaWtlIHRoaXMuICBJIGFt IGRpc2luY2xpbmVkIHRvIGhvbGQKPiA+ID4gdXAgdGhpcyBzYWZldHkgd29yayBmb3IgaXQsIHRo b3VnaC4KPiA+ID4KPiA+ID4gSWYgc29tZW9uZSB0YWNrbGVzIHRoaXMsIEknZCBzdWdnZXN0IDQg bGV2ZWxzIG9mICJ1bnNhZmV0eSI6Cj4gPiA+Cj4gPiA+IDEpIFNhZmUuICBUaGUgZGVmYXVsdCwg YXMgbm93LCBmdWxsIGNoZWNraW5nIGFuZCBzYWZldHkgd2hlcmV2ZXIKPiBwb3NzaWJsZQo+ID4g Pgo+ID4gPiAyKSBSZW1vdmUgImFzc2VydCJzLiAgUmVtb3ZlIGFsbCBjaGVja3MgdGhhdCByZXN1 bHQgaW4KPiA+ID4gICAgLUZEVF9FUlJfSU5URVJOQUwuICBUaGVzZSBhcmUgYmFzaWNhbGx5IHN1 cHBvc2VkIHRvIGJlIGFzc2VydCgpcywKPiA+ID4gICAgYnV0IEkgZG9uJ3Qgd2FudCB0byByZWx5 IG9uIGFzc2VydCgpIGFzIGFuIGV4dGVybmFsIGRlcGVuZGVuY3kuCj4gPiA+ICAgIFRlc3RzdWl0 ZSBzaG91bGQgc3RpbGwgcGFzcyBpbiBmdWxsIHdpdGggdGhpcyBjaGFuZ2UKPiA+ID4KPiA+ID4g MykgUmVtb3ZlIHNhZmV0eSBhZ2FpbnN0IGEgY29ycnVwdGVkIGZkdC4gIFRoaXMgd291bGQgcmVt b3ZlIGJhc2ljYWxseQo+ID4gPiAgICBhbGwgdGhlIGV4dHJhIGNoZWNraW5nIGluIHRoaXMgc2Vy aWVzLCBwbHVzIHdoYXQgd2FzIGFscmVhZHkKPiA+ID4gICAgdGhlcmUuICBmZHRfb2Zmc2V0X3B0 cigpIHdvdWxkIGJlY29tZSBhIG5vLW9wLiAgQSBoYW5kZnVsIG9mIHRlc3RzCj4gPiA+ICAgIHRo YXQgZXhwbGljaXRseSBjaGVjayBhZ2FpbnN0IGJyb2tlbiB0cmVlcyB3b3VsZCBuZWVkIHRvIGJl IHNraXBwZWQKPiA+ID4gICAgaW4gdGhpcyBtb2RlLgo+ID4gPgo+ID4gPiA0KSBSZW1vdmUgc2Fm ZXR5IGFnYWluc3QgYmFkIHBhcmFtZXRlcnMuICBBbGwgb2YgdGhlIGFib3ZlIGFuZCBhbHNvCj4g PiA+ICAgIHJlbW92ZSBzYW5pdHkgY2hlY2tzIG9mIGFyZ3VtZW50cy4gIEEgcmF0aGVyIGxhcmdl ciBudW1iZXIgb2YgdGVzdHMKPiA+ID4gICAgd291bGQgbmVlZCB0byBiZSBza2lwcGVkIGhlcmUu Cj4gPgo+ID4gSSdtIGhvbmVzdGx5IGEgbGl0dGxlIGJpdCB0b3JuIG9uIHRoaXMuCj4KPiBUb3Ju IG9uIHdoYXQgYXNwZWN0LCBleGFjdGx5Pwo+Cj4gPiBJIGd1ZXNzIHRoZSBmdW5kYW1lbnRhbAo+ ID4gcXVlc3Rpb24gaXMsIHdoYXQgY2FuIHRoZSBib290bG9hZGVyIGRvIGlmIHRoZSBEVEIgaXMg c29tZWhvdyB3cm9uZz8KPgo+IERlcGVuZHMgYSBsb3Qgb24gdGhlIGRldGFpbHMgb2YgdGhlIGJv b3Rsb2FkZXIuCgoKVXN1YWxseSBhIGJvb3QgbG9hZGVyIGNhbiBvbmx5IGRvIGJpbmFyeSB0aGlu Z3M6IGVpdGhlciB1c2UgaXQgb3Igbm90IHVzZQppdC4gSWYgaXQgaXMgY29ycnVwdCwgdGhlcmUn cyB1c3VhbGx5IG5vdCBlbm91Z2ggcm9vbSBmb3Igc2VsZi1oZWFsaW5nCmNvZGUuIFRoZXJlIG1h eSBiZSByb29tIGZvciBmYWxsaW5nIGJhY2sgdG8gYSBzZWNvbmQsIGJhY2t1cCBjb3B5LiBIb3dl dmVyLAphbnkgZGF0YSBjb3JydXB0aW9uIHRoYXQgd291bGQgdGFrZSBvdXQgdGhlIGZpcnN0IGNv cHkgbWF5IGFsc28gdGFrZSBvdXQKdGhlIHNlY29uZCwgc28gdGhhdCdzIGEgY3JhcCBzaG9vdC4K Cj4gSQo+ID4ga2luZCBvZiBmZWVsIGxpa2UgaXQncyBtb3N0IGltcG9ydGFudCB0byBiZSBhYmxl IHRvIGRldGVjdCBwcm9ibGVtcwo+ID4gd2l0aGluIHRoZSB0cmVlIGFuZCBoYXZlIGEgY2F0Y2hh YmxlIGVycm9yIHJhdGhlciB0aGFuIGFzc3VtZSB0aGUgaW5wdXQKPiA+IGlzIGdvb2QsIGJlIGlu Y29ycmVjdCBhYm91dCB0aGF0IGFuZCBnbyBvZmYgaW4gdGhlIHdlZWRzIGFuZCBwb3NzaWJseQo+ ID4gaGFuZy4KPgo+IEkgYWJzb2x1dGVseSBhZ3JlZSwgd2hpY2ggaXMgd2h5IEkgd2FudCBzYWZl dHkgaW4gdGhlIGZhY2Ugb2YgYQo+IGNvcnJ1cHRlZCB0cmVlIHRvIGJlIHRoZSBkZWZhdWx0IGJl aGF2aW91ci4gIEJ1dCBwZW9wbGUgYXJlIHRlbGxpbmcgbWUKPiB0aGF0IHNpemUgaXMgdml0YWxs eSBpbXBvcnRhbnQsIGFuZCB0aGVyZSdzIG5vdCBhIHdob2xlIGxvdCB0aGF0IGNvdWxkCj4gYmUg Y3V0IG90aGVyIHRoYW4gdGhlIGNoZWNraW5nL3NhZmV0eSBjb2RlLgoKCkl0IGRvZXNuJ3QgbWF0 dGVyIGhvdyBzYWZlIGl0IGlzIGlmIHRoZSBjb2RlIGRvZXNuJ3QgZml0LiBTb21ldGltZXMgeW91 CmhhdmUgdG8gZ2l2ZSB1cCBzYWZldHkgZm9yIGZ1bmN0aW9uYWxpdHkgaW4gY29uc3RyYWluZWQg ZW52aXJvbm1lbnRzLiBUaG9zZQpjb25zdHJhaW5lZCBlbnZpcm9ubWVudHMgb2Z0ZW4gaGF2ZSB0 byBhc3N1bWUgdGhlIGJlc3QuIFRoZSBjb2RlIG9mdGVuCmlzbid0IHNpZ25lZCBvciBoYXMgbm8g c3Ryb25nZXIgcHJvdGVjdGlvbnMgdGhhbiBhIHNpbXBsZSBjaGVja3N1bS4gVGhlcmUKaXNuJ3Qg cm9vbSBmb3IgdGhhdCBzdHVmZiB0aWwgdGhlIGxhdGVyIGxheWVycy4gSWYgeW91ciBjb2RlIGRv ZXNuJ3QgZml0LCBhCmxpYmZkdGxpdGUgd2lsbCBoYXBwZW4gYW5kIHRoYXQgd2lsbCBsaWtlbHkg YmUgZXZlbiB3b3JzZSBiZWNhdXNlIGl0CmRvZXNuJ3QgaGF2ZSB0aGUgdGVzdGluZyBjb3ZlcmFn ZSBsaWJmZHQgaGFzLiBCZXR0ZXIgdG8gaGF2ZSBhbiBpZmRlZiB0bwp0dXJuIG9mZiB0aGUgc2Fu aXR5IGNoZWNrcyB0aGFuIGEgd2hvbGUgbmV3IGNvZGViYXNlLgoKSSBiYXNlIHRoaXMgcHJlZGlj dGlvbiBvbiB3b3JraW5nIG9uIGJvb3QgbG9hZGVycyB0aGF0IGFyZSBjb25zdHJhaW5lZDoKY29k ZSBnZXRzIGZvcmtlZCB0byBkZWFsIHdpdGggdGhlIHNtYWxsZXIgc3BhY2UsIGFuZCBidWdzIGlu dHJvZHVjZWQgaW50bwp0aGUgZm9ya2VkIGNvZGUuIEl0J3MgbXVjaCBiZXR0ZXIgdG8gdXNlIGEg Y29tbW9uIGNvZGUgYmFzZSB3aXRoIHBhcnRzCiNpZmRlZidkIG91dCB0aGFuIHRvIG1haW50YWlu IHR3byBjb2RlIGJhc2VzLi4uLgoKV2FybmVyCgpbWyBzb3JyeSBpZiB5b3Ugc2VlIHRoaXMgdHdp Y2UsIHRoZSBtYWlsaW5nIGxpc3QgZGlkbid0IGxpa2UgdGhlIG90aGVyCm1haWxlciBJIHVzZWQg dG8gcmVwbHksIGhvcGVmdWxseSB0aGlzIG9uZSBpcyBiZXR0ZXIgXV0KX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KVS1Cb290IG1haWxpbmcgbGlzdApVLUJv b3RAbGlzdHMuZGVueC5kZQpodHRwczovL2xpc3RzLmRlbnguZGUvbGlzdGluZm8vdS1ib290Cg==