From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S265168AbTLaPPn (ORCPT ); Wed, 31 Dec 2003 10:15:43 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S265170AbTLaPPn (ORCPT ); Wed, 31 Dec 2003 10:15:43 -0500 Received: from parcelfarce.linux.theplanet.co.uk ([195.92.249.252]:57057 "EHLO www.linux.org.uk") by vger.kernel.org with ESMTP id S265168AbTLaPNs (ORCPT ); Wed, 31 Dec 2003 10:13:48 -0500 Message-ID: <3FF2E796.5060600@pobox.com> Date: Wed, 31 Dec 2003 10:13:26 -0500 From: Jeff Garzik User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030703 X-Accept-Language: en-us, en MIME-Version: 1.0 To: "Jon K. Akers" CC: Andrew Morton , linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: Re: 2.6.0-rc1-mm1 error in bond_main.c References: <6BE35B06920A7841A6F6AFFC7303CE5EB84C@mbi-10.mbi.ufl.edu> In-Reply-To: <6BE35B06920A7841A6F6AFFC7303CE5EB84C@mbi-10.mbi.ufl.edu> Content-Type: multipart/mixed; boundary="------------090402040308020707090800" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org This is a multi-part message in MIME format. --------------090402040308020707090800 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Jon K. Akers wrote: > Recieved the following error when compiling the bonding section of the network drivers as a module. > > CC [M] drivers/net/bonding/bond_main.o > drivers/net/bonding/bond_main.c: In function `bond_release': > drivers/net/bonding/bond_main.c:1660: error: structure has no member named `params' > drivers/net/bonding/bond_main.c:1661: error: structure has no member named `params' > make[3]: *** [drivers/net/bonding/bond_main.o] Error 1 > make[2]: *** [drivers/net/bonding] Error 2 > make[1]: *** [drivers/net] Error 2 > make: *** [drivers] Error 2 Fixed in my update: http://www.kernel.org/pub/linux/kernel/people/jgarzik/patchkits/2.6/2.6.0-rc1-netdrvr-exp1.patch.bz2 http://www.kernel.org/pub/linux/kernel/people/jgarzik/patchkits/2.6/2.6.0-rc1-netdrvr-exp1.log The broken-out patch that fixes this is attached. Jeff --------------090402040308020707090800 Content-Type: text/plain; name="patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="patch" IyBUaGlzIGlzIGEgQml0S2VlcGVyIGdlbmVyYXRlZCBwYXRjaCBmb3IgdGhlIGZvbGxvd2lu ZyBwcm9qZWN0OgojIFByb2plY3QgTmFtZTogTGludXgga2VybmVsIHRyZWUKIyBUaGlzIHBh dGNoIGZvcm1hdCBpcyBpbnRlbmRlZCBmb3IgR05VIHBhdGNoIGNvbW1hbmQgdmVyc2lvbiAy LjUgb3IgaGlnaGVyLgojIFRoaXMgcGF0Y2ggaW5jbHVkZXMgdGhlIGZvbGxvd2luZyBkZWx0 YXM6CiMJICAgICAgICAgICBDaGFuZ2VTZXQJMS4xNTkxICAtPiAxLjE1OTIgCiMJZHJpdmVy cy9uZXQvYm9uZGluZy9ib25kX21haW4uYwkxLjcxICAgIC0+IDEuNzIgICAKIwojIFRoZSBm b2xsb3dpbmcgaXMgdGhlIEJpdEtlZXBlciBDaGFuZ2VTZXQgTG9nCiMgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAwMy8xMi8zMAlqZ2FyemlrQHJl ZGhhdC5jb20JMS4xNDc0LjEzLjIzCiMgW25ldGRydnIgZTEwMF0gcmVtb3ZlIF9fZGV2aW5p dCBtYXJrZXJzLCBmaXhpbmcgb29wcwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiMgMDMvMTIvMjkJYWtwbUBvc2RsLm9yZwkxLjE0NzQuNDguMQoj IFtQQVRDSF0gdW5zaGFyZV9maWxlcwojIAojIEZyb206IENocmlzIFdyaWdodCA8Y2hyaXN3 QG9zZGwub3JnPgojIAojIEludHJvZHVjZSB1bnNoYXJlX2ZpbGVzIGFzIGEgaGVscGVyIGZv ciB1c2UgZHVyaW5nIGV4ZWN2ZSB0byBlbGltaW5hdGUKIyBwb3RlbnRpYWwgbGVhayBvZiB0 aGUgZXhlY3ZlJ2QgYmluYXJ5J3MgZmQuCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KIyAwMy8xMi8yOQlha3BtQG9zZGwub3JnCTEuMTQ3NC40OC4y CiMgW1BBVENIXSB1c2UgbmV3IHVuc2hhcmVfZmlsZXMgaGVscGVyCiMgCiMgRnJvbTogQ2hy aXMgV3JpZ2h0IDxjaHJpc3dAb3NkbC5vcmc+CiMgCiMgVXNlIHVuc2hhcmVfZmlsZXMgZHVy aW5nIGJpbmFyeSBsb2FkaW5nIHRvIGVsaW1pbmF0ZSBwb3RlbnRpYWwgbGVhayBvZgojIHRo ZSBiaW5hcnkncyBmZCBpbnN0YWxsZWQgZHVyaW5nIGV4ZWN2ZSgpLiAgQXMgaXMsIHRoaXMg YnJlYWtzCiMgYmluZm10X3NvbS5jCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KIyAwMy8xMi8yOQlha3BtQG9zZGwub3JnCTEuMTQ3NC40OC4zCiMg W1BBVENIXSBhZGQgc3RlYWxfbG9ja3MgaGVscGVyCiMgCiMgRnJvbTogQ2hyaXMgV3JpZ2h0 IDxjaHJpc3dAb3NkbC5vcmc+CiMgCiMgQWRkIHN0ZWFsX2xvY2tzIGhlbHBlciBmb3IgdXNl IGluIGNvbmp1bmN0aW9uIHdpdGggdW5zaGFyZV9maWxlcyB0byBtYWtlCiMgc3VyZSBQT1NJ WCBmaWxlIGxvY2sgc2VtYW50aWNzIGFyZW4ndCBicm9rZW4gZHVlIHRvIHVuc2hhcmVfZmls ZXMuCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAw My8xMi8yOQlha3BtQG9zZGwub3JnCTEuMTQ3NC40OC40CiMgW1BBVENIXSB1c2UgbmV3IHN0 ZWFsX2xvY2tzIGhlbHBlcgojIAojIEZyb206IENocmlzIFdyaWdodCA8Y2hyaXN3QG9zZGwu b3JnPgojIAojIFVzZSB0aGUgbmV3IHN0ZWFsX2xvY2tzIGhlbHBlciB0byBzdGVhbCB0aGUg bG9ja3MgZnJvbSB0aGUgb2xkIGZpbGVzIHN0cnVjdAojIGxlZnQgZnJvbSB1bnNoYXJlX2Zp bGVzKCkgd2hlbiB0aGUgbmV3IHVuc2hhcmVkIHN0cnVjdCBmaWxlcyBnZXRzIHVzZWQuCiMg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAwMy8xMi8y OQlha3BtQG9zZGwub3JnCTEuMTQ3NC40OC41CiMgW1BBVENIXSBmaXggdW5zaWduZWQgaXNz dWUgd2l0aCBlbnZfZW5kIC0gZW52X3N0YXJ0CiMgCiMgRnJvbTogQ2hyaXMgV3JpZ2h0IDxj aHJpc3dAb3NkbC5vcmc+CiMgCiMgRml4IGZvciBDQU4tMjAwMy0wNDYyOiAgQSByYWNlIGNv bmRpdGlvbiBpbiB0aGUgd2F5IGVudl9zdGFydCBhbmQKIyBlbnZfZW5kIHBvaW50ZXJzIGFy ZSBpbml0aWFsaXplZCBpbiB0aGUgZXhlY3ZlIHN5c3RlbSBjYWxsIGFuZCB1c2VkIGluCiMg ZnMvcHJvYy9iYXNlLmMgb24gTGludXggMi40IGFsbG93cyBsb2NhbCB1c2VycyB0byBjYXVz ZSBhIGRlbmlhbCBvZgojIHNlcnZpY2UgKGNyYXNoKS4KIyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIDAzLzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4x NDc0LjQ4LjYKIyBbUEFUQ0hdIGZpeCBzdWlkIGxlYWsgaW4gL3Byb2MKIyAKIyBGcm9tOiBD aHJpcyBXcmlnaHQgPGNocmlzd0Bvc2RsLm9yZz4KIyAKIyBGaXggZm9yIENBTi0yMDAzLTA1 MDE6IFRoZSAvcHJvYyBmaWxlc3lzdGVtIGluIExpbnV4IGFsbG93cyBsb2NhbCB1c2VycyB0 bwojIG9idGFpbiBzZW5zaXRpdmUgaW5mb3JtYXRpb24gYnkgb3BlbmluZyB2YXJpb3VzIGVu dHJpZXMgaW4gL3Byb2Mvc2VsZgojIGJlZm9yZSBleGVjdXRpbmcgYSBzZXR1aWQgcHJvZ3Jh bSwgd2hpY2ggY2F1c2VzIHRoZSBwcm9ncmFtIHRvIGZhaWwgdG8KIyBjaGFuZ2UgdGhlIG93 bmVyc2hpcCBhbmQgcGVybWlzc2lvbnMgb2YgdGhvc2UgZW50cmllcy4KIyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIDAzLzEyLzI5CWFrcG1Ab3Nk bC5vcmcJMS4xNDc0LjQ4LjcKIyBbUEFUQ0hdIG1ha2UgL3Byb2MvdHR5L2RyaXZlci8gU19J UlVTUiB8IFNfSVhVU1IgZm9yIHJvb3Qgb25seQojIAojIEZyb206IENocmlzIFdyaWdodCA8 Y2hyaXN3QG9zZGwub3JnPgojIAojIEZpeCBmb3IgQ0FOLTIwMDMtMDQ2MTogL3Byb2MvdHR5 L2RyaXZlci9zZXJpYWwgaW4gTGludXggMi40LnggcmV2ZWFscyB0aGUKIyBleGFjdCBudW1i ZXIgb2YgY2hhcmFjdGVycyB1c2VkIGluIHNlcmlhbCBsaW5rcywgd2hpY2ggY291bGQgYWxs b3cgbG9jYWwKIyB1c2VycyB0byBvYnRhaW4gcG90ZW50aWFsbHkgc2Vuc2l0aXZlIGluZm9y bWF0aW9uIHN1Y2ggYXMgdGhlIGxlbmd0aCBvZgojIHBhc3N3b3Jkcy4KIyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIDAzLzEyLzI5CWFrcG1Ab3Nk bC5vcmcJMS4xNDc0LjQ4LjgKIyBbUEFUQ0hdIGZ1dGV4IHVuaW5saW5pbmcKIyAKIyAgICAg ICAgICAgIHRleHQgICAgZGF0YSAgICAgYnNzICAgICBkZWMgICAgIGhleCBmaWxlbmFtZQoj IEJlZm9yZTogICAgNDY3NCAgICAxMDQwICAgIDQxMDAgICAgOTgxNCAgICAyNjU2IGtlcm5l bC9mdXRleC5vCiMgQWZ0ZXI6ICAgICA0MDk4ICAgIDExNzYgICAgNDEwMCAgICA5Mzc0ICAg IDI0OWUga2VybmVsL2Z1dGV4Lm8KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQojIDAzLzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4xNDc0LjQ4LjkKIyBb UEFUQ0hdIGlhMzIgTWVzc2FnZSBTaWduYWxsZWQgSW50ZXJydXB0IHN1cHBvcnQKIyAKIyBG cm9tOiBsb25nIDx0bG5ndXllbkBzbm9xdWFsbWllLmRwLmludGVsLmNvbT4KIyAKIyAKIyBB ZGQgc3VwcG9ydCBmb3IgTWVzc2FnZSBTaWduYWxsZWQgSW50ZXJydXB0IGRlbGl2ZXJ5IG9u IGlhMzIuCiMgCiMgV2l0aCBhIGZpeCBmcm9tIFp3YW5lIE13YWlrYW1ibyA8endhbmVAYXJt LmxpbnV4Lm9yZy51az4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQojIDAzLzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4xNDc0LjQ4LjEwCiMgW1BBVENI XSBFRkkgc3VwcG9ydCBmb3IgaWEzMgojIAojIEZyb206IE1hdHQgVG9sZW50aW5vIDxtZXRv bGVudEBzbm9xdWFsbWllLmRwLmludGVsLmNvbT4KIyAKIyBBdHRhY2hlZCBpcyBhIHBhdGNo IHRoYXQgZW5hYmxlcyBFRkkgYm9vdC11cCBzdXBwb3J0IGluIGlhMzIga2VybmVscy4KIyAK IyBJbiBvcmRlciB0byBjb250aW51ZSB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUga2VybmVs IHNob3VsZCBpbml0aWFsaXplIHVzaW5nCiMgRUZJIHRhYmxlcywgSSd2ZSB0ZW1wb3Jhcmls eSBhZGRlZCBhIGNoZWNrIG9uIHRoZSBMT0FERVJfVFlQRSBib290IHBhcmFtZXRlci4KIyAg QWx0aG91Z2ggSSBoYXZlbid0IHJlcXVlc3RlZCB0aGF0IGVsaWxvIGJlIGFzc2lnbmVkIGFu IGlkIGZvciB0aGlzIHlldCwgSSd2ZQojIHVzZWQgdGhpcyB0byBkZXRlcm1pbmUgd2hldGhl ciB0aGUga2VybmVsIHNob3VsZCB1c2UgdGhlIEVGSSBpbml0aWFsaXphdGlvbgojIHBhdGgg YXMgd2VsbCBhcyBhIGNoZWNrIHRvIHNlZSBpZiB0aGUgRUZJX1NZU1RBQiBib290IHBhcmFt ZXRlciBjb250YWlucwojIGFueXRoaW5nLiAgSWYgc29tZW9uZSBoYXMgYSBiZXR0ZXIgc3Vn Z2VzdGlvbiBmb3IgZGV0ZXJtaW5pbmcgdGhpcywgSSdtCiMgb3Blbi4uLgojIAojIFRoaXMg cGF0Y2ggYWxzbyB1c2VzIHRoZSBleGlzdGluZyBpb3JlbWFwcGluZyBmdW5jdGlvbnMgdG8g bWFwIHRoZSBlZmkgdGFibGVzCiMgaW50byBrZXJuZWwgdmlydHVhbCBhZGRyZXNzIHNwYWNl LiAgSSd2ZSBhZGRlZCBhbiBvcHRpb24gc3VjaCB0aGF0IEkgY291bGQKIyB1c2UgRGF2ZSBI YW5zZW4ncyBib290X2lvcmVtYXAoKSBiZWZvcmUgcGFnaW5nX2luaXQoKS4gIEFmdGVyIHBh Z2luZ19pbml0LCBJCiMgdGhlbiByZW1hcCB0aGUgZWZpIG1lbW1hcCB1c2luZyBidF9pb3Jl bWFwIGZvciB1c2UgbGF0ZXIuICBUaGlzIGhhcwojIGVsaW1pbmF0ZWQgdGhlIG5lZWQgZm9y IHNldmVyYWwgZnVuY3Rpb25zLi4udGhhbmtzIGZvciB0aGUgc3VnZ2VzdGlvbnMgYW5kCiMg dGhhbmtzIGZvciB5b3VyIGhlbHAgRGF2ZS4gIFN0aWxsIHRoaXMgY291bGQgdXNlIGEgbG9v ay1zZWUuCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K IyAwMy8xMi8yOQlha3BtQG9zZGwub3JnCTEuMTQ3NC40OC4xMQojIFtQQVRDSF0gY29tcGF0 X2lvY3RsIGZvciBpMmMKIyAKIyBGcm9tOiBCZW5qYW1pbiBIZXJyZW5zY2htaWR0IDxiZW5o QGtlcm5lbC5jcmFzaGluZy5vcmc+CiMgCiMgSSBuZWVkZWQgdGhvc2UgZm9yIHRoZSBHNSBv biBwcGM2NCwgc28gaGVyZSB0aGV5IGFyZSwgSSB3YXMgb25seQojIGFibGUgdG8gdGVzdCB0 aGUgU01CVVMgc3R1ZmYgdGhvdWdoLgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiMgMDMvMTIvMjkJYWtwbUBvc2RsLm9yZwkxLjE0NzQuNDguMTIK IyBbUEFUQ0hdIHNxcnQoKSBmaXhlcwojIAojIEl0IHR1cm5zIG91dCB0aGF0IHRoZSBpbnRf c3FydCgpIGZ1bmN0aW9uIGluIG9vbV9raWxsLmMgZ2V0cyBpdCB3cm9uZy4KIyAKIyBCdXQg ZmJfc3FydCgpIGluIGZibW9uLmMgZ2V0cyBpdHMgbWF0aCByaWdodC4gIE1vdmUgdGhhdCBm dW5jdGlvbiBpbnRvCiMgbGliL2ludF9zcXJ0LmMsIGFuZCBjb25zb2xpZGF0ZS4KIyAKIyAo b29tX2tpbGwuYyBmaXggZnJvbSBUaG9tYXMgU2NobGljaHRlciA8c2NobGljaHRAdW5pLW1h bm5oZWltLmRlPikKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQojIDAzLzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4xNDc0LjQ4LjEzCiMgW1BBVENIXSBz Y2FsZSB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBtaW5fZnJlZV9rYnl0ZXMKIyAKIyBUaGlzIHR1 bmFibGUgcmVmZXJzIHRvIHRoZSBhbW91bnQgb2YgZnJlZSBtZW1vcnkgd2hpY2ggdGhlIFZN IHdpbGwgYXR0ZW1wdCB0bwojIHN1c3RhaW4uICBJdCBpcyBtYWlubHkgbmVlZGVkIGZvciBh dG9taWMgYWxsb2NhdGlvbnMgKGVnLCBuZXR3b3JraW5nCiMgcmVjZWl2ZSkuCiMgCiMgSXQg aXMgY3VycmVudGx5IGhhcmR3aXJlZCB0byAxMDI0aywgd2hpY2ggaXMgZmFyIHRvbyBsYXJn ZSBmb3Igc21hbGwgbWFjaGluZXMKIyBhbmQgdG9vIHNtYWxsIGZvciBsYXJnZSBtYWNoaW5l cy4KIyAKIyBSZXdvcmsgaXQgdG8gYmUgMTI4ayBvbiB0aW55IG1hY2hpbmVzIGFuZCAxNk0g b24gaHVnZSBtYWNoaW5lcy4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQojIDAzLzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4xNDc0LjQ4LjE0CiMgW1BB VENIXSBVc2UgX19HRlBfUkVQRUFUIGZvciBjZHJvbSBidWZmZXIKIyAKIyBUaGUgY2Ryb20g ZHJpdmVyIGRvZXMgYW4gb3JkZXItNCBhbGxvY2F0aW9uIGFuZCB0aGUgb3BlbiB3aWxsIGZh aWwgaWYgdGhhdAojIGFsbG9jYXRpb24gZG9lcyBub3Qgc3VjY2VlZC4gIFRoaXMgaGFwcGVu ZWQgdG8gbWUgb24gYW4gdW5zdHJlc3NlZCA5MDBNQgojIG1hY2hpbmUuCiMgCiMgU28gYWRk IHRoZSBfX0dGUF9SRVBFQVQgZmxhZyBpbiB0aGVyZSAtIHRoaXMgd2lsbCBjYXVzZSB0aGUg cGFnZSBhbGxvY2F0b3IgdG8KIyBrZWVwIG9uIGZyZWVpbmcgcGFnZXMgdW50aWwgdGhlIGFs bG9jYXRpb24gc3VjY2VlZHMuCiMgCiMgSXQgY2FuIGluIHRoZW9yeSBsaXZlbG9jayBidXQg aW4gcHJhY3RpY2UgSSBleHBlY3QgaXQgaXMgT0s6IHRoZSB1c2VyIHNob3VsZAojIGp1c3Qg c3RvcCBydW5uaW5nIGRiZW5jaCBvciB3aGF0ZXZlciBpdCBpcyB3aGljaCBpcyBnb2JibGlu ZyBhbGwgdGhlIG1lbW9yeQojIGFuZCB0aGUgbW91bnQvb3BlbiB3aWxsIHRoZW4gc3VjY2Vl ZC4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIDAz LzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4xNDc0LjQ4LjE1CiMgW1BBVENIXSBtYWtlIG5hbWVf dG9fZGV2X3QgX19pbml0CiMgCiMgSXQgY2FsbHMgX19pbml0IGZ1bmN0aW9ucyBhbnl3YXku CiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAwMy8x Mi8yOQlha3BtQG9zZGwub3JnCTEuMTQ3NC40OC4xNgojIFtQQVRDSF0gZXh0MyBzY2hlZHVs aW5nIGxhdGVuY3kgZml4CiMgCiMgU29tZXRpbWVzIGtqb3VybmFsZCBoYXMgdG8gcmVmaWxl IGEgaHVnZSBudW1iZXIgb2YgYnVmZmVycywgYmVjYXVzZSBzb21lb25lCiMgZWxzZSB3cm90 ZSB0aGVtIG91dCBiZWZvcmVoYW5kIC0gdGhleSBhcmUgYWxsIGNsZWFuLgojIAojIFRoaXMg aGFwcGVucyB1bmRlciBhIGxvY2sgYW5kIHNjaGVkdWxpbmcgbGF0ZW5jaWVzIG9mIDg4IG1p bGxpc2Vjb25kcyBvbiBhCiMgMi43R0h4IENQVSB3ZXJlIG9ic2VydmVkLgojIAojIFRoZSBw YXRjaCBmb3J3YXJkLXBvcnRzIGEgbGl0dGxlIGJpdCBvZiB0aGUgMi40IGxvdy1sYXRlbmN5 IHBhdGNoIHRvIGZpeCB0aGlzCiMgcHJvYmxlbS4KIyAKIyBXb3JzdC1jYXNlIG9uIGV4dDMg aXMgbm93IHN1Yi1oYWxmLW1pbGxpc2Vjb25kLCBleGNlcHQgZm9yIHdoZW4gdGhlIFJDVQoj IGRlbnRyeSByZWFwaW5nIHNvZnRpcnEgY3V0cyBpbiA6KAojIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgMDMvMTIvMjkJYWtwbUBvc2RsLm9yZwkx LjE0NzQuNDguMTcKIyBbUEFUQ0hdIGNtcGNpLmM6IHJlbW92ZSBwb2ludGxlc3Mgc2V0X2Zz KCkKIyAKIyBJdCBpcyBkb2luZyBhIHNldF9mcyhLRVJORUxfRFMpIGZvciBubyBvYnZpb3Vz IHJlYXNvbi4KIyAKIyBTcG90dGVkIGJ5IG1hcmdpdHN3QHQtb25saW5lLmRlIChNYXJnaXQg U2NodWJlcnQtV2hpbGUpCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KIyAwMy8xMi8yOQlha3BtQG9zZGwub3JnCTEuMTQ3NC40OC4xOAojIFtQQVRD SF0gRml4IGRjYWNoZSBhbmQgaWNhY2hlIGJsb2F0IHdpdGggZGVlcCBkaXJlY3Rvcmllcwoj IAojIFRoaXMgZml4ZXMgdGhlIHJlY2VudGx5LXJlcG9ydGVkICJmc3N0cmVzcyBtZW1vcnkg bGVhayIgcHJvYmxlbS4gIEl0IGhhcyBiZWVuCiMgdGhlcmUgc2luY2UgTm92ZW1iZXIgMjAw Mi4KIyAKIyBzaHJpbmtfZGNhY2hlKCkgaGFzIGEgaGV1cmlzdGljIHRvIHByZXZlbnQgdGhl IGRjYWNoZSAoYW5kIGhlbmNlIGljYWNoZSkgZnJvbQojIGdldHRpbmcgc2hydW5rIHRvbyBm YXI6IGl0IHJlZnVzZXMgdG8gYWxsb3cgdGhlIGRjYWNoZSB0byBzaHJpbmsgYmVsb3cKIyAy Km5yX3VzZWQuCiMgCiMgUHJvYmxlbSBpcywgX2FsbF8gbm9uLWxlYWYgZGVudHJpZXMgKGRp cmVjdG9yaWVzKSBjb3VudCBhcyB1c2VkLiAgU28gd2hlbiB5b3UKIyBoYXZlIHJlYWxseSBk ZWVwIGRpcmVjdG9yeSBoaWVyYXJjaGllcyAoZnNzdHJlc3MgY3JlYXRlcyB0aGVzZSksIG5y X3VzZWQgaXMKIyByZWFsbHkgaGlnaCwgYW5kIHRoZXJlIGlzIG5vIHVwcGVyIGJvdW5kIHRv IHRoZSBhbW91bnQgb2YgcGlubmVkIGRjYWNoZS4KIyAKIyBUaGUgcGF0Y2gganVzdCByaXBz IG91dCB0aGUgaGV1cmlzdGljLiAgVGhpcyBtZWFucyB0aGF0IGRjYWNoZSAoYW5kIGhlbmNl CiMgaWNhY2hlIChhbmQgaGVuY2UgcGFnZWNhY2hlKSkgd2lsbCBiZSBzaHJ1bmsgbW9yZSBh Z2dyZXNzaXZlbHkuICBUaGlzIGNvdWxkCiMgYmUgYSBwcm9ibGVtLCBhbmQgdG9ucyBvZiB0 ZXN0aW5nIGlzIG5lZWRlZCAtIGEgbmV3IGhldXJpc3RpYyBtYXkgYmUgbmVlZGVkLgojIAoj IEhvd2V2ZXIgSSBhbSBub3QgYWJsZSB0byByZXByb2R1Y2UgdGhlIHByb2JsZW0gd2hpY2gg Y2F1c2UgbWUgdG8gYWRkIHRoaXMKIyBoZXVyaXN0aWMgaW4gdGhlIGZpcnN0IHBsYWNlOgoj IAojICAgIFNpbXBsZSB0ZXN0Y2FzZTogcnVuIGEgaHVnZSBgZGQnIHdoaWxlIHJ1bm5pbmcg YSBjb25jdXJyZW50IGB3YXRjaCAtbjEKIyAgICBjYXQgL3Byb2MvbWVtaW5mbycuICBUaGUg cHJvZ3JhbSB0ZXh0IGZvciBgY2F0JyBnZXRzIGxvYWRlZCBmcm9tIGRpc2sgb25jZQojICAg IHBlciBzZWNvbmQuCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KIyAwMy8xMi8yOQlha3BtQG9zZGwub3JnCTEuMTQ3NC40OC4xOQojIFtQQVRDSF0g TlNMIGNvbmZpZyBmaXhlcwojIAojIEZyb206IE9HQVdBIEhpcm9mdW1pIDxoaXJvZnVtaUBt YWlsLnBhcmtuZXQuY28uanA+CiMgCiMgLSB1c2UgInNlbGVjdCIgaW5zdGVhZCBvZiAiZGVw ZW5kIgojIAojIC0gcmVtb3ZlIHRoZSB1bnVzZWQgU01CX05MUwojIAojIC0gcmVtb3ZlIHVu bmVlZGVkICJkZWZhdWx0IHkiIG9mIENPTkZJR19OTFMKIyAKIyAtIHJldmVydCB0byBwb3N0 aW9uIG9mIG5scyBtZW51IChtaWRkbGUgb2YgZmlsZXNzeXRlbSBtZW51cyBpcyBzdHJhbmdl KQojIAojIC0gZml4ICIjaWZkZWYgQ09ORklHX05MUyIgb24gVURGIChzaG91bGQgdGhpcyBh ZGQgbmV3IG9uZSB0byBLY29uZmlnPykKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQojIDAzLzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4xNDc0LjQ4LjIw CiMgW1BBVENIXSBGaXggaW5pdF9pODIzNjUgc3lzZnMgb3JkZXJpbmcgb29wcwojIAojIEZy b206IFJ1c3NlbGwgS2luZyA8cm1rQGFybS5saW51eC5vcmcudWs+CiMgCiMgVGhpcyBvb3Bz IGhhcyBiZWVuIGNhdXNlZCBieSB0aGUgbmVlZCB0byByZWdpc3RlciB0aGUgY2xhc3MgYmVm b3JlCiMgcmVnaXN0ZXJpbmcgYW55IG9iamVjdHMgYWdhaW5zdCBpdC4gIFVuZm9ydHVuYXRl bHksIHRoZSBjbGFzcyBuZWVkcwojIHRvIGJlIHJlZ2lzdGVyZWQgYXN5bmNocm9ub3VzbHkg aW4gYSBzZXBhcmF0ZSB0aHJlYWQgdG8gYXZvaWQgZHJpdmVyCiMgbW9kZWwgZGVhZGxvY2sg d2l0aCB5ZW50YSB3aXRoIGNhcmRidXMgY2FyZHMgaW5zZXJ0ZWQgb3Igc3RhbmRhcmQKIyBQ Q01DSUEgY2FyZHMgbm90IGJlaW5nIGRldGVjdGVkIGNvcnJlY3RseSBkdWUgdG8gYSByYWNl LgojIAojIEkgdGhpbmsgdGhlIG9ubHkgcmVhbCBzb2x1dGlvbiBpcyB0byByZW1vdmUgdGhl IGNsYXNzX2RldmljZV9jcmVhdGVfZmlsZQojIGNhbGxzIGZyb20gYWxsIHNvY2tldCBkcml2 ZXJzLiAgVGhpcyBpcyBqdXN0IGEgc2ltcGxlIGNvbW1lbnRpbmcgb3V0IG9mCiMgdGhlIGNh bGxzLCBhbmQgc2hvdWxkIGJlIHN1aXRhYmxlIGZvciB0aGUgcmVtYWluZGVyIG9mIHRoZSAt dGVzdCBrZXJuZWxzLgojIAojIER1ZSB0byB0aGUgbnVtYmVyIG9mIGNhc2VzIHRoYXQgd2Un cmUgZW5jb3VudGVyaW5nIHdpdGggUENNQ0lBLCBJJ20KIyBiZWdpbm5pbmcgdG8gd29uZGVy IGlmIHRoZSBkcml2ZXIgbW9kZWwgY291bGQgYmUgZml4ZWQgdG8gYmUgbW9yZSBraW5kCiMg dG8gUENNQ0lBIGJ5IGF2b2lkaW5nIHNvbWUgb2YgdGhlc2Ugb3JkZXJpbmcgZGVwZW5kZW5j aWVzLiAgTm9uZSBvZiB0aGlzCiMgd291bGQgYmUgYSBwcm9ibGVtIGlmIHRoZSBkcml2ZXIg bW9kZWwgd291bGQgYWxsb3cgUENJIGRldmljZSBkcml2ZXJzIHRvCiMgcmVnaXN0ZXIgUENJ IGRldmljZXMgd2hpbGUgdGhlaXIgcHJvYmUgb3IgcmVtb3ZlIGZ1bmN0aW9ucyB3ZXJlIGV4 ZWN1dGluZy4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQojIDAzLzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4xNDc0LjQ4LjIxCiMgW1BBVENIXSBGaXgg cHJvY19waWRfbG9va3VwIHZzIGV4aXQgcmFjZQojIAojIEZyb206IE1hbmZyZWQgU3ByYXVs IDxtYW5mcmVkQGNvbG9yZnVsbGlmZS5jb20+CiMgCiMgRml4ZXMgYSByYWNlIGJldHdlZW4g cHJvY19waWRfbG9va3VwIGFuZCBzeXNfZXhpdC4KIyAKIyAtIFRoZSBpbm9kZXMgYW5kIGRl bnRyaWVzIGZvciAvcHJvYy88cGlkPi93aGF0ZXZlciBhcmUgY2FjaGVkIGluIHRoZSBkZW50 cnkKIyAgIGNhY2hlLiAgZF9yZXZhbGlkYXRlIGlzIHVzZWQgdG8gcHJvdGVjdCBhZ2FpbnN0 IHN0YWxlIGRhdGE6IGRfcmV2YWxpZGF0ZQojICAgcmV0dXJucyBpbnZhbGlkIGlmIHRoZSB0 YXNrIGV4aXRlZC4KIyAKIyAgIEFkZGl0aW9uYWxseSwgc3lzX2V4aXQgZmx1c2hlcyB0aGUg ZGVudHJpZXMgZm9yIHRoZSB0YXNrIHRoYXQgZGllZCAtCiMgICBvdGhlcndpc2UgdGhlIGRl bnRyaWVzIHdvdWxkIHN0YXkgYXJvdW5kIHVudGlsIHRoZXkgYXJyaXZlIGF0IHRoZSBlbmQg b2YKIyAgIHRoZSBMUlUsIHdoaWNoIGNvdWxkIHRha2Ugc29tZSB0aW1lLiAgQnV0IHRoZXJl IGlzIG9uZSByYWNlOgojIAojICAgLSBwcm9jX3BpZF9sb29rdXAgZmluZHMgYSB0YXNrIGFu ZCBwcmVwYXJlcyBuZXcgZGVudHJpZXMgZm9yIGl0LiBJdCBtdXN0IAojICAgICBkcm9wIGFs bCBsb2NrcyBmb3IgdGhhdCBvcGVyYXRpb24uCiMgICAtIHRoZSBwcm9jZXNzIGV4aXRzLCBh bmQgdGhlIC9wcm9jLyBkZW50cmllcyBhcmUgZmx1c2hlZC4gTm90aGluZwojICAgICBoYXBw ZW5zLCBiZWNhdXNlIHRoZXkgYXJlIG5vdCB5ZXQgaW4gdGhlIGhhc2ggdGFibGVzLgojICAg LSBwcm9jX3BpZF9sb29rdXAgYWRkcyB0aGUgdGFzayB0byB0aGUgZGVudHJ5IGNhY2hlLgoj IAojICAgUmVzdWx0OiBkZW50cnkgb2YgYSBkZWFkIHRhc2sgaW4gdGhlIGhhc2ggdGFibGVz LgojIAojICAgVGhlIHBhdGNoIGZpeGVzIHRoYXQgcHJvYmxlbSBieSBmbHVzaGluZyBhZ2Fp biBpZiBwcm9jX3BpZF9sb29rdXAgbm90aWNlcwojICAgdGhhdCB0aGUgdGhyZWFkIGV4aXRl ZCB3aGlsZSBpdCBjcmVhdGVkIHRoZSBkZW50cnkuICBUaGUgcGF0Y2ggc2hvdWxkIGdvCiMg ICBpbiwgYnV0IGl0J3Mgbm90IGNyaXRpY2FsLgojIAojIAojIC0gdGFzay0+cHJvY19kZW50 cnkgbXVzdCBiZSB0aGUgZGVudHJ5IG9mIC9wcm9jLzxwaWQ+LiAgVGhhdCB3YXkgc3lzX2V4 aXQKIyAgIGNhbiBmbHVzaCB0aGUgd2hvbGUgc3VidHJlZSBhdCBleGl0IHRpbWUuICBwcm9j X3Rhc2tfbG9va3VwIGlzIGEgZGlyZWN0CiMgICBjb3B5IG9mIHByb2NfcGlkX2xvb2t1cCBh bmQgaGFuZGxlcyAvcHJvYy88Pi90YXNrLzxwaWQ+LiAgSXQgY29udGFpbnMgdGhlCiMgICBs aW5lcyB0aGF0IHNldCB0YXNrLT5wcm9jX2RlbnRyeS4gIFRoaXMgaXMgYm9ndXMsIGFuZCBt dXN0IGJlIHJlbW92ZWQuCiMgCiMgICBUaGlzIGh1bmsgaXMgbXVjaCBtb3JlIGNyaXRpY2Fs LCBiZWNhdXNlIGNyZWF0ZXMgYSBkZS1mYWN0byBkZW50cnkgbGVhawojICAgKHRoZXkgYXJl IHJlY292ZXJlZCBhZnRlciBmbHVzaGluZyByZWFsIGRlbnRyaWVzIGZyb20gdGhlIGNhY2hl KS4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIDAz LzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4xNDc0LjQ4LjIyCiMgW1BBVENIXSBBZGQgYGdjYyAt T3MnIGNvbmZpZyBvcHRpb24KIyAKIyBGcm9tOiBBZHJpYW4gQnVuayA8YnVua0Bmcy50dW0u ZGU+CiMgCiMgQWxsb3cgdGhlIGtlcm5lbCB0byBiZSBidWlsdCB3aXRoIGAtT3MnLgojIAoj IEl0IHJlcXVpcmVzIENPTkZJR19FTUJFRERFRC4gIFRoaXMgaXMgdG8gbWFrZSBpdCAiaGFy ZCB0byBnZXQgYXQiIGJlY2F1c2UKIyBvbmUgZ2NjIHZlcnNpb24gKDMuMi54IEkgdGhpbmsp IGZyb20gUkg5IGdlbmVyYXRlcyBjcmFzaHkga2VybmVscyB3aXRoIHRoaXMKIyBvcHRpb24g c2V0LgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMg MDMvMTIvMjkJYWtwbUBvc2RsLm9yZwkxLjE0NzQuNDguMjMKIyBbUEFUQ0hdIEZpeCBzeXNl bnRlciBkaXNhYmxpbmcgaW4gdm04NiBtb2RlCiMgCiMgRnJvbTogQnJpYW4gR2Vyc3QgPGJn ZXJzdEBkaWRudGR1Y2sub3JnPgojIAojIFRoZSBjdXJyZW50IGNvZGUgZGlzYWJsZXMgc3lz ZW50ZXIgd2hlbiBmaXJzdCBlbnRlcmluZyB2bTg2IG1vZGUsIGJ1dCBkb2VzCiMgbm90IGRp c2FibGUgaXQgYWdhaW4gd2hlbiBjb21pbmcgYmFjayB0byBhIHZtODYgdGFzayBhZnRlciBh IHRhc2sgc3dpdGNoLgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiMgMDMvMTIvMjkJYWtwbUBvc2RsLm9yZwkxLjE0NzQuNDguMjQKIyBbUEFUQ0hd IHNlcmlhbCBjb25zb2xlIHJlZ2lzdHJhdGlvbiBidWdmaXgKIyAKIyBGcm9tOiBCam9ybiBI ZWxnYWFzIDxiam9ybi5oZWxnYWFzQGhwLmNvbT4KIyAKIyB1YXJ0X3NldF9vcHRpb25zKCkg Y2FuIGRlcmVmZXJlbmNlIGEgbnVsbCBwb2ludGVyLiAgVGhpcyBoYXBwZW5zIGlmIHlvdQoj IHNwZWNpZnkgYSBjb25zb2xlIHRoYXQgaGFzbid0IHByZXZpb3VzbHkgYmVlbiBzZXR1cCBi eSBlYXJseV9zZXJpYWxfc2V0dXAoKS4KIyAKIyBGb3IgZXhhbXBsZSwgb24gaWE2NCwgdGhl IEhDRFAgdHlwaWNhbGx5IHRlbGxzIHVzIGFib3V0IGxpbmUgMCwgc28gd2UgY2FsbHMKIyBl YXJseV9zZXJpYWxfc2V0dXAoKSBmb3IgaXQuICBJZiB0aGUgdXNlciBzcGVjaWZpZXMgImNv bnNvbGU9dHR5UzMiLCB3ZQojIG1hY2hpbmUtY2hlY2sgd2hlbiB0cnlpbmcgdG8gZm9sbG93 IHRoZSB1bmluaXRpYWxpemVkIHBvcnQtPm9wcyBwb2ludGVyLgojIAojIEl0J3Mgbm90IGVu dGlyZWx5IGNsZWFyIHRvIG1lIHdoZXRoZXIgd2Ugc2hvdWxkIHJldHVybiAwIG9yIC1FTk9E RVYgb3IKIyBzb21ldGhpbmcuICBUaGUgYWR2YW50YWdlIG9mIHJldHVybmluZyB6ZXJvIGlz IHRoYXQgaWYgdGhlIHVzZXIgc3BlY2lmaWVzCiMgImNvbnNvbGU9dHR5UzAiIGFuZCB3ZSBq dXN0IGxhY2sgdGhlIEhDRFAsIHRoZSBjb25zb2xlIGRvZXNuJ3Qgd29yayBhcyBlYXJseQoj IGFzIHVzdWFsLCBidXQgaXQgZG9lcyBzdGFydCB3b3JraW5nIGFmdGVyIHRoZSBzZXJpYWwg ZHJpdmVyIGRldGVjdHMgdGhlIHBvcnQKIyAodGhvdWdoIHRoZSBiYXVkL3Bhcml0eS9ldGMg ZnJvbSB0aGUgY29tbWFuZCBsaW5lIGFyZSBsb3N0KS4gIFJldHVybmluZwojIC1FTk9ERVYg c2VlbXMgdG8gcHJldmVudCBpdCBmcm9tIGV2ZXIgd29ya2luZy4KIyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIDAzLzEyLzI5CWFrcG1Ab3NkbC5v cmcJMS4xNDc0LjQ4LjI1CiMgW1BBVENIXSB2bXNjYW46IHJlc2V0IHJlZmlsbF9jb3VudGVy IGFmdGVyIHJlZmlsbGluZyB0aGUgaW5hY3RpdmUgbGlzdAojIAojIHpvbmUtPnJlZmlsbF9j b3VudGVyIGlzIG9ubHkgdGhlcmUgdG8gcHJvdmlkZSBkZWNlbnQgbGV2ZWxzIG9mIHdvcmsg YmF0Y2hpbmc6CiMgZG9uJ3QgY2FsbCByZWZpbGxfaW5hY3RpdmVfem9uZSgpIGp1c3QgZm9y IGEgY291cGxlIG9mIHBhZ2VzLgojIAojIEJ1dCB0aGUgbG9naWMgaW4gdGhlcmUgYWxsb3dz IGl0IHRvIGJ1aWxkIHVwIHRvIGh1Z2UgdmFsdWVzIGFuZCBpdCBjYW4KIyBvdmVyZmxvdyAo Z28gbmVnYXRpdmUpIHdoaWNoIHdpbGwgZGlzYWJsZSByZWZpbGxpbmcgYWx0b2dldGhlciB1 bnRpbCBpdCB3cmFwcwojIHBvc2l0aXZlIGFnYWluLgojIAojIEp1c3QgcmVzZXQgaXQgdG8g emVybyB3aGVuZXZlciB3ZSBkZWNpZGUgdG8gZG8gc29tZSByZWZpbGxpbmcuCiMgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAwMy8xMi8yOQlha3Bt QG9zZGwub3JnCTEuMTQ3NC40OC4yNgojIFtQQVRDSF0gQmUgdmVyYm9zZSBhYm91dCB0aGUg aWEzMiB0aW1lIHNvdXJjZQojIAojIEZyb206IGpvaG4gc3R1bHR6IDxqb2huc3R1bEB1cy5p Ym0uY29tPgojIAojIFRoZSBwYXRjaCBhcnJhbmdlcyBmb3IgZWFjaCB0aW1lc291cmNlIHR5 cGUgdG8gaGF2ZSBhIG5hbWUsIGFuZCB1c2VzIHRoYXQgdG8KIyB0ZWxsIHRoZSB1c2VyIHdo aWNoIHRpbWVzb3VyY2UgaXMgaW4gdXNlIGF0IGJvb3R1cCB0aW1lLgojIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgMDMvMTIvMjkJYWtwbUBvc2Rs Lm9yZwkxLjE0NzQuNDguMjcKIyBbUEFUQ0hdIEdldCBtb2Rwb3N0IHRvIHdvcmsgcHJvcGVy bHkgd2l0aCB2bWxpbnV4IGluIGEgZGlmZmVyZW50IGRpcmVjdG9yeQojIAojIEZyb206ICJC cnlhbiBPJ1N1bGxpdmFuIiA8Ym9zQHBhdGhzY2FsZS5jb20+CiMgCiMgVGhlIGN1cnJlbnQg dmVyc2lvbiBvZiBtb2Rwb3N0IGJyZWFrcyBpZiBpbnZva2VkIGZyb20gb3V0c2lkZSB0aGUg YnVpbGQKIyB0cmVlLiAgVGhpcyBwYXRjaCBmaXhlcyB0aGF0LCBhbmQgc2ltcGxpZmllcyB0 aGUgY29kZSBhIGJpdCB3aGlsZSBpdCdzIGF0CiMgaXQuCiMgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAwMy8xMi8yOQlha3BtQG9zZGwub3JnCTEu MTQ3NC40OC4yOAojIFtQQVRDSF0gUmVzdG9yZSAvcHJvYy9waWQvbWFwcyBmb3JtYXR0aW5n CiMgCiMgVGhlIHNlcV9maWxlIGNvbnZlcnNpb24gb2YgL3Byb2MvcGlkL21hcHMgY2F1c2Vk IGFsdGVyZWQgYmVoYXZpb3VyIHdpdGgKIyByZXNwZWN0IHRvIDIuNC4yMi4gIEJlZm9yZSB0 aGUgY29udmVyc2lvbiwgc3BhY2VzIGFuZCB0YWJzIGluIGZpbGVuYW1lcyB3ZXJlCiMgZGlz cGxheWVkIHZlcmJhdGltLiAgQWZ0ZXIgdGhlIGNvbnZlcnNpb24gdGhleSBhcmUgZXNjYXBl ZCBhcyBcMDQwLCBldGMuCiMgCiMgQWxzbywgaWYgdGhlIG1tYXBwZWQgZmlsZSBoYXMgYmVl biB1bmxpbmtlZCB0aGUgb3V0cHV0IGFwcGVhcnMgYXMKIyAKIyA0MDAxNzAwMC00MDAxODAw MCBydy1wIDAwMDAwMDAwIDAzOjAyIDE0MjU4MDAgICAgL2hvbWUvYWtwbS9mb29cMDQwKGRl bGV0ZWQpCiMgCiMgaW5zdGVhZCBvZgojIAojIDQwMDE3MDAwLTQwMDE4MDAwIHJ3LXAgMDAw MDAwMDAgMDM6MDIgMTQyNTgwMCAgICAvaG9tZS9ha3BtL2ZvbyAoZGVsZXRlZCkKIyAKIyBU aGlzIGNvdWxkIGJyZWFrIGFwcGxpY2F0aW9ucyB3aGljaCBwYXJzZSAvcHJvYy9waWQvbWFw cyAob25lIHBlcnNvbiBoYXMKIyByZXBvcnRlZCB0aGlzKS4KIyAKIyBUaGUgcGF0Y2ggcmVz dG9yZXMgdGhlIDIuNC4yMCBiZWhhdmlvdXIuCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAwMy8xMi8yOQlha3BtQG9zZGwub3JnCTEuMTQ3NC40 OC4yOQojIFtQQVRDSF0gaWEzMiBXUCB0ZXN0IGNsZWFudXAKIyAKIyBGcm9tOiBad2FuZSBN d2Fpa2FtYm8gPHp3YW5lQGFybS5saW51eC5vcmcudWs+CiMgCiMgTWFrZSB0aGUgdGVzdCB1 bmNvbmRpdGlvbmFsIC0gd2UgY2FuIGFsd2F5cyBydW4gaXQgbm93IHdlIGhhdmUgZml4bWFw CiMgc3VwcG9ydC4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQojIDAzLzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4xNDc0LjQ4LjMwCiMgW1BBVENIXSBG aXggZm9yIG1vcmUgdGhhbiAyNTYgQ1BVcwojIAojIEZyb206IFBhdWwgSmFja3NvbiA8cGpA c2dpLmNvbT4KIyAKIyBUaGUgcGF0Y2ggaXMgbmVlZGVkIHRvIGJ1aWxkIE5SX0NQVVMgPiAy NTYuCiMgCiMgV2l0aG91dCB0aGlzIGZpeCwgeW91IGdldCBjb21waWxlIGVycm9yczoKIyAg ICAgaW5jbHVkZS9saW51eC9jcHVtYXNrLmg6IEluIGZ1bmN0aW9uIGBuZXh0X29ubGluZV9j cHUnOgojICAgICBpbmNsdWRlL2xpbnV4L2NwdW1hc2suaDo1Njogc3RydWN0dXJlIGhhcyBu byBtZW1iZXIgbmFtZWQgYHZhbCcKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQojIDAzLzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4xNDc0LjQ4LjMxCiMg W1BBVENIXSBVc2UgTk9ERVNfU0hJRlQgdG8gY2FsY3VsYXRlIFpPTkVfU0hJRlQKIyAKIyBG cm9tOiBqYmFybmVzQHNnaS5jb20gKEplc3NlIEJhcm5lcykKIyAKIyBOb3cgdGhhdCB3ZSBo YXZlIGEgcHJvcGVyIE5PREVTX1NISUZUIHZhbHVlLCB3ZSBuZWVkIHRvIHVzZSBpdCB0byBk ZWZpbmUKIyBaT05FX1NISUZUIG90aGVyd2lzZSB3ZSdsbCBzcGlsbCBvdmVyIDggYml0cyBp ZiB3ZSBoYXZlIG1vcmUgdGhhbiA4NSBub2Rlcy4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIDAzLzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4xNDc0 LjQ4LjMyCiMgW1BBVENIXSBvcHRpbWl6ZSBpYTMyIG1lbW1vdmUKIyAKIyBGcm9tOiBNYW5m cmVkIFNwcmF1bCA8bWFuZnJlZEBjb2xvcmZ1bGxpZmUuY29tPgojIAojIFRoZSBtZW1tb3Zl IGltcGxlbWVudGF0aW9uIG9mIGkzODYgaXMgbm90IG9wdGltaXplZDogaXQgdXNlcyBtb3Zz Yiwgd2hpY2ggaXMKIyBmYXIgc2xvd2VyIHRoYW4gbW92c2QuICBUaGUgb3B0aW1pemF0aW9u IGlzIHRyaXZpYWw6IGlmIGRlc3QgaXMgbGVzcyB0aGFuCiMgc291cmNlLCB0aGVuIGNhbGwg bWVtY3B5KCkuICBtYXJrdyB0cmllZCBpdCBvbiBhIDR4WGVvbiB3aXRoIGRidDIsIGl0IHNh dmVkCiMgYXJvdW5kIDMwMCBtaWxsaW9uIGNwdSB0aWNrcyBpbiBjYWNoZV9mbHVzaGFycmF5 KCk6CiMgCiMgb3Byb2ZpbGUsIEdMT0JBTF9QT1dFUl9FVkVOVFMsIGNvdW50IDEwMGsKIyBC ZWZvcmU6CiMgYzAxNDRlZDEgPGNhY2hlX2ZsdXNoYXJyYXk+OiAvKiBjYWNoZV9mbHVzaGFy cmF5IHRvdGFsOiAgMjE4MjMgIDAuMDE2NSAqLwojICAgICAgNiA0LjVlLTA2IDpjMDE0NGY4 ZTogICAgICAgY21wICAgICVlc2ksJWVieAojICAgICAxMSA4LjNlLTA2IDpjMDE0NGY5MDog ICAgICAgamFlICAgIGMwMTQ0ZjllIDxjYWNoZV9mbHVzaGFycmF5KzB4Y2Q+CiMgICAgICAz IDIuM2UtMDYgOmMwMTQ0ZjkyOiAgICAgICBtb3YgICAgJWVieCwlZWRpCiMgICA3MzA1ICAw LjAwNTUgOmMwMTQ0Zjk0OiAgICAgICByZXB6IG1vdnNiICVkczooJWVzaSksJWVzOiglZWRp KQojICAgIDIwMSAxLjVlLTA0IDpjMDE0NGY5NjogICAgICAgYWRkICAgICQweDEwLCVlc3AK IyAKIyBBZnRlcjoKIyBjMDE0NGYxZCA8Y2FjaGVfZmx1c2hhcnJheT46IC8qIGNhY2hlX2Zs dXNoYXJyYXkgdG90YWw6ICAxNzk1OSAgMC4wMTM2ICovCiMgICAxMjcwIDkuNmUtMDQgOmMw MTQ0ZjFkOiAgICAgICBwdXNoICAgJWVicAojIFtzbmlwXQojICAgICAgNiA0LjZlLTA2IDpj MDE0NGZkYzogICAgICAgY21wICAgICVlc2ksJWVieAojICAgICAxMyA5LjllLTA2IDpjMDE0 NGZkZTogICAgICAgamFlICAgIGMwMTQ1MDAwIDxjYWNoZV9mbHVzaGFycmF5KzB4ZTM+CiMg ICAgICAyIDEuNWUtMDYgOmMwMTQ0ZmUwOiAgICAgICBtb3YgICAgJWVkeCwlZWF4CiMgICAg ICAxIDcuNmUtMDcgOmMwMTQ0ZmUyOiAgICAgICBtb3YgICAgJWVieCwlZWRpCiMgICAgIDEx IDguNGUtMDYgOmMwMTQ0ZmU0OiAgICAgICBzaHIgICAgJDB4MiwlZWF4CiMgICAgICAxIDcu NmUtMDcgOmMwMTQ0ZmU3OiAgICAgICBtb3YgICAgJWVheCwlZWN4CiMgICA0MTI5ICAwLjAw MzEgOmMwMTQ0ZmU5OiAgICAgICByZXB6IG1vdnNsICVkczooJWVzaSksJWVzOiglZWRpKQoj ICAgIDI2MSAyLjBlLTA0IDpjMDE0NGZlYjogICAgICAgdGVzdCAgICQweDIsJWRsCiMgICAg IDI3IDIuMWUtMDUgOmMwMTQ0ZmVlOiAgICAgICBqZSAgICAgYzAxNDRmZjIgPGNhY2hlX2Zs dXNoYXJyYXkrMHhkNT4KIyAgICAgICAgICAgICAgICA6YzAxNDRmZjA6ICAgICAgIG1vdnN3 ICAlZHM6KCVlc2kpLCVlczooJWVkaSkKIyAgICAgOTUgNy4yZS0wNSA6YzAxNDRmZjI6ICAg ICAgIHRlc3QgICAkMHgxLCVkbAojICAgICA5NiA3LjNlLTA1IDpjMDE0NGZmNTogICAgICAg amUgICAgIGMwMTQ0ZmY4IDxjYWNoZV9mbHVzaGFycmF5KzB4ZGI+CiMgICAgICAgICAgICAg ICAgOmMwMTQ0ZmY3OiAgICAgICBtb3ZzYiAgJWRzOiglZXNpKSwlZXM6KCVlZGkpCiMgICAg MTIxIDkuMmUtMDUgOmMwMTQ0ZmY4OiAgICAgICBhZGQgICAgJDB4MWMsJWVzcAojIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgMDMvMTIvMjkJYWtw bUBvc2RsLm9yZwkxLjE0NzQuNDguMzMKIyBbUEFUQ0hdIEZpeCB3cml0ZXYgYXRvbWljaXR5 IG9uIHBpcGUvZmlmbwojIAojIEZyb206IE9HQVdBIEhpcm9mdW1pIDxoaXJvZnVtaUBtYWls LnBhcmtuZXQuY28uanA+CiMgCiMgQ3VycmVudCB3cml0ZXYoKSBvZiBwaXBlL2ZpZm8gY2Fu IGJlIGludGVybGVhdmVkIHdpdGggZGF0YSBmcm9tIG90aGVyCiMgcHJvY2Vzc2VzIGRvaW5n IHdyaXRlcyBldmVuIHdoZW4gdGhlIHJlcXVlc3RzIHNpemUgaXMgPD0gUElQRV9CVUYuICBU aGVzZQojIHdyaXRlcyBzaG91bGQgaW4gZmFjdCBiZSBhdG9taWMuCiMgCiMgVGhlIHJlYWR2 KCkgc2lkZSBpcyBhbHNvIHN1cHBvcnRlZCBmb3Igc2FtZSBiZWhhdmlvciB3aXRoIHJlYWQo KS4gIEFuZCBpdAojIGlzIGZhc3Rlci4KIyAKIyByZWFkdi93cml0ZXYgdmVyc2lvbiBvZiBi d19waXBlIGluIExNYmVuY2gKIyAKIyAyLjYuMC10ZXN0OS1iazEyCiMgaGlyb2Z1bWlAZGV2 cm9uIChpNjg2LXBjLWxpbnV4LWdudSlbMTAxMF0kIC4vYndfcGlwZSAtbSA0MDk2IC1NIDUK IyBQaXBlIGJhbmR3aWR0aDogNDUuNTMgTUIvc2VjCiMgaGlyb2Z1bWlAZGV2cm9uIChpNjg2 LXBjLWxpbnV4LWdudSlbMTAwOV0kIC4vYndfcGlwZSAtbSAxMDI0IC1NIDUKIyBQaXBlIGJh bmR3aWR0aDogMjAuMDggTUIvc2VjCiMgCiMgMi42LjAtdGVzdDktYmsxMiArIHBhdGNoCiMg aGlyb2Z1bWlAZGV2cm9uIChpNjg2LXBjLWxpbnV4LWdudSlbMTAwMV0kIC4vYndfcGlwZSAt bSA0MDk2IC1NIDUKIyBQaXBlIGJhbmR3aWR0aDogNjUuOTggTUIvc2VjCiMgaGlyb2Z1bWlA ZGV2cm9uIChpNjg2LXBjLWxpbnV4LWdudSlbMTAwMl0kIC4vYndfcGlwZSAtbSAxMDI0IC1N IDUKIyBQaXBlIGJhbmR3aWR0aDogMzIuMTkgTUIvc2VjCiMgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAwMy8xMi8yOQlha3BtQG9zZGwub3JnCTEu MTQ3NC40OC4zNAojIFtQQVRDSF0gbG9ja2xlc3Mgc2Vtb3AKIyAKIyBGcm9tOiBNYW5mcmVk IFNwcmF1bCA8bWFuZnJlZEBjb2xvcmZ1bGxpZmUuY29tPgojIAojIGF0dGFjaGVkIGlzIHRo ZSBsb2NrbGVzcyBzZW1vcCBwYXRjaC4gSSBkaWQgYW5vdGhlciB0ZXN0IHJ1biB3aXRoIAoj IGlkbGU9cG9sbCBvbiBhbiBwZW50aXVtIElJSSwgYW5kIGl0IHJlbWFpbmVkIHVuY2hhbmdl ZDogOTkuOSUgZGlyZWN0IAojIGZhc3QgcGF0aCwgMC4xJSByYWNlIHdpdGggd2FrZXVwIGFn YWluc3Qgd3JpdGluZyB0aGUgZmluYWwgcmVzdWx0IGNvZGU6CiMgCiMgaHR0cDovL2toYWNr Lm9zZGwub3JnL3N0cC8yODI5MzYvZW52aXJvbm1lbnQvcHJvYy9zbGFiaW5mbwojIAojIFRo YXQgbWVhbnMgdGhlcmUgaXMgbm8gaW1tZWRpYXRlIG5lZWQgdG8gYWRkIHRoZSB0d28tc3Rh Z2UKIyBpbXBsZW1lbnRhdGlvbiB0byBmaW5pc2hfd2FpdC4KIyAKIyBJdCByZWR1Y2VzIHRo ZSBzcGlubG9jayBvcGVyYXRpb25zIG9uIHRoZSBzZW1hcGhvcmUgYXJyYXkgc3BpbmxvY2sg YnkgMS8zLgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiMgMDMvMTIvMjkJYWtwbUBvc2RsLm9yZwkxLjE0NzQuNDguMzUKIyBbUEFUQ0hdIHVzZSBh bGxvY19wZXJjcHUgaW4gcGVyY3B1X2NvdW50ZXJzCiMgCiMgRnJvbTogTWFydGluIEhpY2tz IDxtb3J0QHdpbGRvcGVuc291cmNlLmNvbT4KIyAKIyBPbmNlIE5SX0NQVVMgZXhjZWVkcyBh Ym91dCAzMDAgZXh0MiBhbmQgZXh0MyB3aWxsIG5vdCBjb21waWxlLCBiZWNhdXNlIHRoZQoj IHBlcmNwdSBjb3VudGVycyBpbiB0aGUgc3VwZXJibG9ja3MgYXJlIHNvIGh1Z2UgdGhhdCB0 aGV5IGNhbm5vdCBiZSBrbWFsbG9jZWQuCiMgCiMgRml4IHRoaXMgYnkgY29udmVydGluZyB0 aGUgcGVyY3B1X2NvdW50ZXIgbWVjaGFuaXNtIHRvIHVzZSBhbGxvY19wZXJjcHUoKQojIHJh dGhlciB0aGFuIGFuIE5SX0NQVVMtc2l6ZWQgYXJyYXkuCiMgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAwMy8xMi8yOQlha3BtQG9zZGwub3JnCTEu MTQ3NC40OC4zNgojIFtQQVRDSF0gZmluZF9idXNpZXN0X3F1ZXVlKCkgY29tbWVudGFyeSBm aXgKIyAKIyBGcm9tOiBJbmdvIE1vbG5hciA8bWluZ29AZWx0ZS5odT4KIyAKIyBDbGFyaWZ5 IGEgY29tbWVudCBpbiB0aGUgQ1BVIHNjaGVkdWxlci4KIyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIDAzLzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4x NDc0LjQ4LjM3CiMgW1BBVENIXSBmaXggU09VTkRfQ01QQ0kgQ29uZmlndXJlIGhlbHAgZW50 cnkKIyAKIyBGcm9tOiBBZHJpYW4gQnVuayA8YnVua0Bmcy50dW0uZGU+CiMgCiMgdGhlIGlz c3VlIGJlbG93IGlzIG9ubHkgYSBtaW5vciBkb2N1bWVudGF0aW9uIGZpeCwgYnV0IGl0IGhh cyBjb25mdXNlZAojIG1lIHdoZW4gY29uZmlndXJpbmcgYSBrZXJuZWwgZm9yIHN1Y2ggYSBj YXJkLgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMg MDMvMTIvMjkJYWtwbUBvc2RsLm9yZwkxLjE0NzQuNDguMzgKIyBbUEFUQ0hdIGVpY29uLyBh bmQgaGFyZHdhcmUvZWljb24vIGRyaXZlcnMgdXNpbmcgdGhlIHNhbWUgc3ltYm9scwojIAoj IEZyb206IEFkcmlhbiBCdW5rIDxidW5rQGZzLnR1bS5kZT4KIyAKIyBUaGUgbGVnYWN5IGVp Y29uIGRyaXZlciBpbiBkcml2ZXJzL2lzZG4vZWljb24gaXMgdGhlIG9sZCBvbmUgYW5kIHdp bGwgYmUKIyByZW1vdmVkIGFzIHNvb24gYXMgYWxsIGZlYXR1cmVzIHdlbnQgdG8gdGhlIG5l dyBkcml2ZXIuICBBbnl3YXkgdGhpcyBvbGQKIyBkcml2ZXIgd2FzIG5ldmVyIG1lYW50IHRv IGJlIG5vbi1tb2R1bGUuCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KIyAwMy8xMi8yOQlha3BtQG9zZGwub3JnCTEuMTQ3NC40OC4zOQojIFtQQVRD SF0gc2VxX2ZpbGUgdmVyc2lvbiBvZiAvcHJvYy9pbnRlcnJ1cHRzCiMgCiMgRnJvbTogY29y YmV0QGx3bi5uZXQgKEpvbmF0aGFuIENvcmJldCkKIyAKIyBUaGlzIGNvbnZlcnRzIGFsbCBh cmNoaXRlY3R1cmVzJyAvcHJvYy9pbnRlcnJ1cHRzIGltcGxlbWVudGF0aW9uIG92ZXIgdG8K IyBzZXFfZmlsZS4gIFdlIG5lZWQgdGhpcyBmb3IgU01QIG1hY2hpbmVzIHdpdGggcmlkaWN1 bG91cyBudW1iZXJzIG9mIENQVXMgYW5kCiMgaWYgeW91IGNvbnZlcnQgb25lIGFyY2gsIHlv dSBoYXZlIHRvIGNvbnZlcnQgdGhlbSBhbGwuLi4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIDAzLzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4xNDc0 LjQ4LjQwCiMgW1BBVENIXSBJbnRlbCA0NDBneCBQQ0kgSURzCiMgCiMgLSBBZGQgbWlzc2lu ZyBQQ0kgSUQKIyAKIyAtIEZvcndhcmQtcG9ydCBJUlEgcm91dGluZyB3b3JrYXJvdW5kIGZy b20gMi40LgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiMgMDMvMTIvMjkJYWtwbUBvc2RsLm9yZwkxLjE0NzQuNDguNDEKIyBbUEFUQ0hdIHN1cHBv cnQgY2VudHJpbm8gMUdIegojIAojIEZyb206IEplcmVteSBGaXR6aGFyZGluZ2UgPGplcmVt eUBnb29wLm9yZz4KIyAKIyBJJ3ZlIGJlZW4gZ2V0dGluZyBxdWl0ZSBhIGxvdCBvZiBwZW9w bGUgbWFpbGluZyBtZSBhYm91dCB0aGlzIENQVS4gIEl0CiMgc2VlbXMgVG9zaGliYSBoYXMg cmVsZWFzZWQgYSBtYWNoaW5lIHdpdGggaXQuICBJdCB3b3VsZCBiZSBuaWNlIGlmIHRoaXMK IyBwYXRjaCBnZXRzIGludG8gYSBrZXJuZWwgc29vbmlzaC4gIEl0J3MgdmVyeSBsb3ctaW1w YWN0LgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMg MDMvMTIvMjkJYWtwbUBvc2RsLm9yZwkxLjE0NzQuNDguNDIKIyBbUEFUQ0hdIGRvY3VtZW50 IGVsZXZhdG9yPSBwYXJhbWV0ZXIKIyAKIyBGcm9tOiBWYWxkaXMuS2xldG5pZWtzQHZ0LmVk dQojIAojIE5pY2sgd3JvdGUgYSBuaWNlIGFzLWlvc2NoZWQudHh0IGZpbGUsIGJ1dCBhcHBh cmVudGx5IG5vYm9keSB1cGRhdGVkIHRoZQojIGtlcm5lbC1wYXJhbWV0ZXJzLnR4dCBmaWxl Li4uCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAw My8xMi8yOQlha3BtQG9zZGwub3JnCTEuMTQ3NC40OC40MwojIFtQQVRDSF0gbWlzc2luZyBw YWRkaW5nIGluIGNwaW9fbWtmaWxlIGluIHVzci9nZW5faW5pdF9jcGlvLmMKIyAKIyBGcm9t OiBPbGFmIEhlcmluZyA8b2xoQHN1c2UuZGU+CiMgCiMgV2UgbmVlZCB0byB1cGRhdGUgYG9m ZnNldCcgaGVyZSBzbyB0aGF0IHRoZSBzdWJzZXF1ZW50IHB1c2hfcGFkKCkgKHdoaWNoCiMg dXNlcyBgb2Zmc2V0Jykgd2lsbCBkbyB0aGUgcmlnaHQgdGhpbmcuCiMgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAwMy8xMi8yOQlha3BtQG9zZGwu b3JnCTEuMTQ3NC40OC40NAojIFtQQVRDSF0gd2F0Y2hkb2cgd3JpdGUoKSByZXR1cm4gdmFs dWUgZml4ZXMKIyAKIyBGcm9tOiBnbGViQG5iYXNlLmNvLmlsIChHbGViIE5hdGFwb3YpCiMg CiMgVGhlcmUgaXMgaW5jb25zaXN0ZW5jeSBpbiBmb3BzLT53cml0ZSgpIGltcGxlbWVudGF0 aW9uIGluIGRpZmZlcmVudAojIHdhdGNoZG9nIGRyaXZlcnMuICBTb21lIG9mIHRoZW0gcmV0 dXJuIG51bWJlciBvZiBieXRlcyB3cml0dGVuIHdoaWxlIG90aGVycwojIHJldHVybiAxLgoj IAojIEkgdGhpbmsgdGhlIGNvcnJlY3QgaW1wbGVtZW50YXRpb24gc2hvdWxkIGFsd2F5cyBy ZXR1cm4gbnVtYmVyIG9mIGJ5dGVzCiMgd3JpdHRlbiAod2UgZXhhbWluZSBhbGwgdGhlIGJ1 ZmZlciBhZnRlciBhbGwpIG90aGVyd2lzZSAiZWNobyBWID4KIyAvZGV2L3dhdGNoZG9nIiBk b2Vzbid0IHdvcmsgYXMgZXhwZWN0ZWQgKGl0IGRvZXNuJ3Qgc3RvcCB3YXRjaGRvZykuCiMg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAwMy8xMi8y OQlha3BtQG9zZGwub3JnCTEuMTQ3NC40OC40NQojIFtQQVRDSF0gTWlub3IgYnVnIGZpeGVz IHRvIHRoZSBjb21wYXQgbGF5ZXIKIyAKIyBGcm9tOiBBcnVuIFNoYXJtYSA8YXJ1bi5zaGFy bWFAaW50ZWwuY29tPgojIAojIC0gU2V2ZXJhbCBpbnN0YW5jZXMgd2hlcmUgd2Ugd2VyZSB1 c2luZyBwaWRfdCBpbnN0ZWFkIG9mIHVpZF90CiMgCiMgLSBJZiB0aGUgY2FsbGVyIHBhc3Nl ZCBhIE5VTEwgYG9sZGFjdCcgcG9pbnRlciBpbnRvIHN5c19zaWdwcm9jbWFzayB0aGVuCiMg ICBkb24ndCB0cnkgdG8gd3JpdGUgdGhlIG9sZCBzaWdtYXNrIHRoZXJlLgojIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgMDMvMTIvMjkJYWtwbUBv c2RsLm9yZwkxLjE0NzQuNDguNDYKIyBbUEFUQ0hdIGlkZS10YXBlIHVwZGF0ZQojIAojIEZy b206IEJhcnRsb21pZWogWm9sbmllcmtpZXdpY3ogPEIuWm9sbmllcmtpZXdpY3pAZWxrYS5w dy5lZHUucGw+LAojICAgICAgIFN0dWFydCBIYXllcyA8c3R1YXJ0X2hheWVzQGRlbGwuY29t PgojIAojIC0gQ2hlY2sgZHJpdmUncyB3cml0ZSBwcm90ZWN0IGJpdCwgdHJ5IHRvIHJldHVy biBhcHByb3ByaWF0ZQojICAgZXJyb3JzIHdoZW4gYXR0ZW1wdGluZyB0byB3cml0ZSBhIHdy aXRlLXByb3RlY3RlZCB0YXBlLgojIAojIC0gTW92ZWQgImlkZXRhcGVfcmVhZF9wb3NpdGlv biIgY2FsbCBpbiBpZGV0YXBlX2NocmRldl9vcGVuCiMgICBhZnRlciB0aGUgIndhaXRfcmVh ZHkiIGNhbGwuCiMgCiMgLSBBZGRlZCBJREVUQVBFX01FRElVTV9QUkVTRU5UIGZsYWcgc28g ZHJpdmVyIHdvdWxkIGtub3cKIyAgIG5vdCB0byByZXdpbmQgdGFwZSBhZnRlciBlamVjdGlu ZyBpdC4KIyAKIyAtIEZpeGVkIGJ1ZyB3aXRoIGlkZV9hYm9ydF9waXBlbGluZSAoaXQgd2Fz IGRlbGV0aW5nIHN0YWdlcwojICAgZnJvbSB0YXBlLT5uZXh0X3N0YWdlIHRvIGVuZCwgaW5z dGVhZCBvZiBmcm9tCiMgICBuZXdfbGFzdF9zdGFnZS0+bmV4dCAodGFwZS0+bmV4dF9zdGFn ZSB3YXMgc2V0IHRvIE5VTEwKIyAgIGJ5IGlkZXRhcGVfZGlzY2FyZF9yZWFkX3BpcGVsaW5l IGJlZm9yZSBjYWxsaW5nISkuCiMgCiMgLSBNYWRlIGltcHJvdmVtZW50cyB0byBpZGV0YXBl X3dhaXRfcmVhZHkuCiMgCiMgLSBBZGRlZCBhIGZldyBjb21tZW50cyBoZXJlIGFuZCB0aGVy ZS4KIyAKIyAtIE1hZGUgTVRPRkZMIHVubG9jayB0YXBlIGRyaXZlIGRvb3IgYmVmb3JlIGF0 dGVtcHRpbmcgdG8gZWplY3QuCiMgCiMgLSBBZGRlZCBmaXhlcyB0byBnZXQgU2VhZ2F0ZSBT VFQzNDAxQSBUcmF2YW4gd29ya2luZzoKIyAgIEhhbmRsZSBkcml2ZXMgdGhhdCBkb24ndCBz dXBwb3J0IDAtbGVuZ3RoIHJlYWRzL3dyaXRlcyBpbmNyZWFzZWQgdGltZW91dAojICAgKHJl dGVuc2lvbiB0YWtlcyB+MTAgbWludXRlcyBiZWZvcmUgaXJxIGlzIHJldHVybmVkKS4KIyAg IEZpeGVkIHJlcXVlc3QgbW9kZSBwYWdlIHBhY2tldCBjb21tYW5kIGJ5dGUgMy4KIyAKIyBB bHNvIHJlbW92ZSBjb2RlIGRlcGVuZGluZyBvbiBOT19MT05HRVJfUkVRVUlSRUQgdG8gbWF0 Y2ggMi40LnggKG1lKS4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQojIDAzLzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4xNDc0LjQ4LjQ3CiMgW1BBVENI XSBQSUlYNSBEb2Vzbid0IHdvcmsgb24gSUE2NAojIAojIEZyb206IFBldGVyIENodWJiIDxw ZXRlcmNAZ2VsYXRvLnVuc3cuZWR1LmF1PgojIAojIFRoZSBQSUlYNSBJREUgY29udHJvbGxl ciBvbiBJMjAwMCBJQTY0IGJveGVuIHVzaW5nIHRoZSA0NjBHWCBjaGlwc2V0IHdpbGwKIyBo YW5nIG9uIHN0YXJ0dXAgaWYgYW4gb3JkaW5hcnkgaGFyZGRyaXZlIGlzIHBsdWdnZWQgaW50 byBpdCAoaXQgc2VlbXMgdG8KIyB3b3JraiBmb3IgdGhlIExTSTEyMCBhbmQgdGhlIENEUk9N IGRyaXZlcykuCiMgCiMgVGhpcyBpcyBiZWNhdXNlIHRoZSA0NjBHWCBjaGlwc2V0IGNvbnRh aW5zIGEgUENJIGV4cGFuc3Npb24gYnJpZGdlIHRoYXQKIyB3b3JrcyBsaWtlIHRoZSA0NTBO WCBQWEIsIGFuZCBoYXMgdGhlIHNhbWUgUENJIElEIChidXQgYSBsYXRlciByZXZpc2lvbiku CiMgVGhlIFBJSVggZHJpdmVyLCB0byB3b3JrIGFyb3VuZCBpbnRlcmFjdGlvbnMgYmV0d2Vl biBQSUlYNCBhbmQgdGhlIDQ1ME5YCiMgUFhCLCB0cmllcyB0byBkaXNhYmxlIERNQS4KIyAK IyBVbmZvcnR1bmF0ZWx5LCB0aGUgd2F5IGl0IHRyaWVzIHRvIGRpc2FibGUgRE1BIGRvZXNu J3Qgd29yaywgYW5kIHRoZSBoaWdoZXIKIyBsYXllcnMgdGhpbmsgdGhhdCBETUEgaXMgc3Rp bGwgb24sIGFuZCBzbyB0aW1lb3V0IHdhaXRpbmcgZm9yIERNQSwgYW5kIHRoZW4KIyBoYW5n IG9uIGJvb3R1cC4KIyAKIyBBIHNpbXBsZSB3b3JrYXJvdW5kIGlzIHRvIHRpZ2h0ZW4gdGhl IGNoZWNrIGZvciB0aGUgYnVnZ3kgY2hpcHNldCwgYXMgaW4KIyB0aGUgYXR0YWNoZWQgcGF0 Y2guICBIb3dldmVyLCBzb21lb25lIHdpdGggbW9yZSB0aW1lIChhbmQgd2hvIGFjdHVhbGx5 CiMgKnVuZGVyc3RhbmRzKiB0aGUgSURFIHN1YnN5c3RlbSkgbmVlZHMgdG8gZml4IHRoZSBy ZWFsIGJ1ZyBhcyB3ZWxsLgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiMgMDMvMTIvMjkJYWtwbUBvc2RsLm9yZwkxLjE0NzQuNDguNDgKIyBbUEFU Q0hdIENhbid0IGRpc2FibGUgSURFIERNQQojIAojIEZyb206IFBldGVyIENodWJiIDxwZXRl cmNAZ2VsYXRvLnVuc3cuZWR1LmF1PgojIAojIElmIHlvdSB0cnkgdG8gZGlzYWJsZSBJREUg RE1BIGZyb20gS2NvbmZpZywgeW91J2xsIGVuZCB1cCB3aXRoIGFuIHVuZGVmaW5lZAojIHN5 bWJvbCwgaWRlX2h3aWZfc2V0dXBfZG1hKCkuCiMgCiMgVGhlIGF0dGFjaGVkIHJhdGhlciB1 Z2x5IHBhdGNoIGZpeGVzIHRoZSBwcm9ibGVtIGJ5IGRlZmluaW5nIGEgZHVtbXkKIyBmdW5j dGlvbi4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoj IDAzLzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4xNDc0LjQ4LjQ5CiMgW1BBVENIXSBJREUgTU1J TyBmaXgKIyAKIyBGcm9tOiBBbGFuIENveCA8YWxhbkByZWRoYXQuY29tPgojIAojIElERSBj b3JlIGNvZGUgaGFkIHRoZSBtbWlvPT0yIChpb3JlbWFwKSBtb2RlIHN1cHBvcnRlZCBidXQg dHdvIHNtYWxsIGNoYW5nZXMKIyBoYWQgYmVlbiBtaXNzZWQgZm9yIGlkZS1kbWEuYy4gIFdp dGhvdXQgdGhpcyBmaXggbW1pbyBJREUgY29udHJvbGxlcnMgYm9tYiBpZgojIHlvdSBoYXZl IHBsZW50eSBvZiBtZW1vcnkgYXMgaXQgdXNlcyByZXF1ZXN0X21lbV9yZWdpb24gb24gYW4g aW9yZW1hcCByZXR1cm4uCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KIyAwMy8xMi8yOQlha3BtQG9zZGwub3JnCTEuMTQ3NC40OC41MAojIFtQQVRD SF0gSURFIGNhcGFiaWxpdHkgZWxldmF0aW9uIGZpeAojIAojIEZyb206IEFsYW4gQ294IDxh bGFuQHJlZGhhdC5jb20+CiMgCiMgQ2FwYWJpbGl0eSBlbGV2YXRpb24gYnVnIGluIDIuNi4w IElERS4gTG9uZyBmaXhlZCBpbiAyLjQueCwgdHJpdmlhbCB0byBjdXJlCiMgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAwMy8xMi8yOQlha3BtQG9z ZGwub3JnCTEuMTQ3NC40OC41MQojIFtQQVRDSF0gQWRkIGxpYi9wYXJzZXIuYyBrZXJuZWwt ZG9jCiMgCiMgRnJvbTogV2lsbCBEeXNvbiA8d2lsbF9keXNvbkBwb2JveC5jb20+CiMgCiMg QWRkIGRvY3VtZW50YXRpb24gYW5kIGNvbW1lbnRzIHRvIGxpYi9wYXJzZXIuYyBhbmQgaW5j bHVkZS9saW51eC9wYXJzZXIuaAojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiMgMDMvMTIvMjkJYWtwbUBvc2RsLm9yZwkxLjE0NzQuNDguNTIKIyBb UEFUQ0hdIGNwdW1hc2suaCByZW9yZwojIAojIEZyb206IFBhdWwgSmFja3NvbiA8cGpAc2dp LmNvbT4KIyAKIyBQdXNoIHRoZSBjcHVtYXNrIGltcGxlbWVudGF0aW9uIGZyb20gbGludXgv Y3B1bWFzay5oIGludG8gYXNtL2NwdW1hc2suaCwgc28KIyB0aGF0IGlhNjQgY2FuIGRvIHNw ZWNpYWwgdGhpbmdzIHdpdGhvdXQgYnJlYWtpbmcgc3BhcmM2NC4KIyAKIyAxKSBFYWNoIGFy Y2ggaGFzIGl0cyBvd24gaW5jbHVkZS9hc20tPGFyY2g+L2NwdW1hc2suaCBmaWxlCiMgCiMg MikgVGhhdCBhcmNoLXNwZWNpZmljIGhlYWRlciBmaWxlIGNhbiBpbmNsdWRlIDxhc20tZ2Vu ZXJpYy9jcHVtYXNrLmg+LAojICAgIGlmIGl0IHdhbnRzIHRvIG1ha2UgdXNlIG9mIHRoZSBn ZW5lcmljIGNwdW1hc2sgaW1wbGVtZW50YXRpb24uCiMgCiMgMykgVXNpbmcgY29kZSBzaG91 bGQgY29udGludWUgdG8gaW5jbHVkZSBsaW51eC9jcHVtYXNrLmgsIHdoaWNoCiMgICAgaW4g dHVybiBpbmNsdWRlcyBhc20vY3B1bWFzay5oLiAgU29tZSBjb21tb24gaW1wbGVtZW50YXRp b24KIyAgICBpbmRlcGVuZGVudCBjcHVtYXNrIHJlbGF0ZWQgaXRlbXMsIHN1Y2ggYXMgdGhl IGNwdV9vbmxpbmVfbWFwLAojICAgIGFyZSBkZWNsYXJlZCBkaXJlY3RseSBpbiBsaW51eC9j cHVtYXNrLmguCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KIyAwMy8xMi8yOQlha3BtQG9zZGwub3JnCTEuMTQ3NC40OC41MwojIFtQQVRDSF0gbmV3 IC9wcm9jL2lycSBjcHVtYXNrIGZvcm1hdDsgY29uc29saWRhdGUgY3B1bWFzayBkaXNwbGF5 IGFuZCBpbnB1dCBjb2RlCiMgCiMgRnJvbTogUGF1bCBKYWNrc29uIDxwakBzZ2kuY29tPgoj IAojIFRoaXMgcGF0Y2ggaXMgYSBmb2xsb3d1cCB0byBvbmUgZnJvbSBCaWxsIElyd2luLiAg T24gTm92CiMgMTcsIGhlIGhhZCBjb25zb2xpZGF0ZWQgdGhlIGhhbGYtZG96ZW4gY2h1bmtz IG9mIGNvZGUKIyB0aGF0IGRpc3BsYXllZCBjcHVtYXNrcyBpbiAvcHJvYy9pcnEvcHJvZl9j cHVfbWFzayBhbmQKIyAvcHJvYy9pcnEvPHBpZD4vc21wX2FmZmluaXR5IGludG8gYSBzaW5n bGUgcm91dGluZSwgd2hpY2ggaGUKIyBjYWxsZWQgZm9ybWF0X2NwdW1hc2soKS4KIyAKIyBJ IGJlbGlldmUgdGhhdCBBbmRyZXcgTW9ydG9uIGhhcyBhY2NlcHRlZCBCaWxsJ3MgcGF0Y2gg aW50bwojIGhpcyAyLjYuMC10ZXN0MTAtbW0xIHBhdGNoIHNldCBhcyB0aGUgImZvcm1hdF9j cHVtYXNrIiBwYXRjaC4KIyBJIGhvcGUgdGhhdCB0aGUgZm9sbG93aW5nIHBhdGNoIHdpbGwg cmVwbGFjZSBCaWxsJ3MgcGF0Y2guCiMgSSBsb29rIGZvcndhcmQgdG8gQmlsbCdzIGZlZWRi YWNrIG9uIHRoaXMgcGF0Y2guCiMgCiMgVGhlIGZvbGxvd2luZyBwYXRjaCBjYXJyaWVzIEJp bGwncyB3b3JrIGZ1cnRoZXI6CiMgCiMgIDEpIEl0IGFsc28gY29uc29saWRhdGVzIHRoZSBp bnB1dCBzaWRlICh3cml0ZSBzeXNjYWxscykuCiMgIDIpIEl0IGFkYXB0cyBhIG5ldyBmb3Jt YXQsIHNhbWUgb24gaW5wdXQgYW5kIG91dHB1dC4KIyAgMykgVGhlIGNvcmUgcm91dGluZXMg d29yayBmb3IgYW55IG11bHRpLXdvcmQgYml0bWFzaywKIyAgICAgbm90IGp1c3QgY3B1bWFz a3MuCiMgIDQpIFRoZSBjb3JlIHJvdXRpbmVzIGF2b2lkIG92ZXJydW5uaW5nIHRoZWlyIG91 dHB1dAojICAgICBidWZmZXJzLgojIAojIE5vdGUgZXNwLiBmb3IgRGF2aWQgTW9zYmVyZ2Vy OgojIAojICAgICBUaGUgc21hbGwgcGF0Y2ggSSBzZW50IHlvdSBhbmQgdGhlIGxpbnV4LWlh NjQgbGlzdAojICAgICB5ZXN0ZXJkYXkgZW50aXRsZWQ6ICJjaGVjayB1c2VyIGFjY2VzcyBv ayB3cml0aW5nCiMgICAgIC9wcm9jL2lycS88cGlkPi9zbXBfYWZmaW5pdHkiIGZvciBhcmNo IGlhNjQgb25seSBpcwojICAgICBfc2VwYXJhdGVfIGZyb20gdGhlIGZvbGxvd2luZyBwYXRj aC4gIE5laXRoZXIgcHJlc3VtZXMgdGhlCiMgICAgIG90aGVyLiAgSG93ZXZlciwgdGhleSBk byBjb2xsaWRlIG9uIG9uZSBsaW5lLiAgTGFzdCBvbmUgaW4KIyAgICAgaXMgYSBNb25rZXkn cyBVbmNsZSBhbmQgd2lsbCBuZWVkIGFuIHVwZGF0ZWQgcGF0Y2ggZnJvbSBtZQojICAgICAo b3Igb3RoZXJ3aXNlIG5lZWQgdG8gcmVzb2x2ZSB0aGUgb25lIG9idmlvdXMgY29sbGlzaW9u KS4KIyAKIyBEZXRhaWxzIG9mIHRoZSBmb2xsb3dpbmcgcGF0Y2g6CiMgCiMgQm90aCB0aGUg ZGlzcGxheSBhbmQgaW5wdXQgb2YgY3B1bWFza3Mgb24gOSBhcmNoJ3MgYXJlCiMgY29uc29s aWRhdGVkIGludG8gYSBzaW5nbGUgcGFpciBvZiByb3V0aW5lcywgd2hpY2ggdXNlIHRoZQoj IHNhbWUgZm9ybWF0IGZvciBpbnB1dCBhbmQgb3V0cHV0LCBhcyByZWNvbW1lbmRlZCBieSBU b255CiMgTHVjay4gIFRoZSB0d28gY29tbW9uIHJvdXRpbmVzIHdvcmsgb24gYW55IG11bHRp LXdvcmQgYml0bWFzawojIChhcnJheSBvZiB1bnNpZ25lZCBsb25ncykuICBBIHBhaXIgb2Yg dHJpdmlhbCBpbmxpbmUgd3JhcHBlcnMKIyBjcHVtYXNrX3NucHJpbnRmKCkgYW5kIGNwdW1h c2tfcGFyc2UoKSBoaWRlIHRoaXMgZ2VuZXJhbGl0eQojIGZvciB0aGUgY29tbW9uIGNhc2Ug b2YgY3B1bWFzayBpbnB1dCBhbmQgb3V0cHV0LgojIAojIE15IHJlYWwgbW90aXZhdGlvbiBm b3IgY29uc29saWRhdGluZyB0aGlzIGNvZGUgd2lsbCBiZWNvbWUKIyB2aXNpYmxlIGxhdGVy IC0gd2hlbiBJIHNlZWsgdG8gYWRkIGEgbm9kZW1hc2tfdCB0aGF0IHJlc2VtYmxlcwojIGNw dW1hc2tfdCAoanVzdCBhIGRpZmZlcmVudCBsZW5ndGgpLiAgVGhlc2UgY29tbW9uIHVuZGVy bHlpbmcKIyByb3V0aW5lcyB3aWxsIGJlIHVzZWQgdGhlcmUgYXMgd2VsbCwgZm9sbG93aW5n IHVwIG9uIGEgc3VnZ2VzdGlvbgojIG9mIENocmlzdG9waCBIZWxsd2lnIHRoYXQgSSBpbnZl c3RpZ2F0ZSBpbXBsZW1lbnRpbmcgbm9kZW1hc2tfdAojIGFzIGFuIEFEVCBzaGFyaW5nIGlu ZnJhc3RydWN0dXJlIHdpdGggY3B1bWFza190LiAgSG93ZXZlciwgSQojIGJlbGlldmUgdGhh dCB0aGlzIHBhdGNoIHN0YW5kcyBvbiBpdHMgb3duIG1lcml0LCBjb25zb2xpZGF0aW5nCiMg YSBjb3VwbGUgaHVuZHJlZCBsaW5lcyBvZiBkdXBsaWNhdGVkIGNvZGUsIGFuZCBtYWtpbmcg dGhlCiMgY3B1bWFzayBkaXNwbGF5IGZvcm1hdCB1c2FibGUgb24gdmVyeSBsYXJnZSBzeXN0 ZW1zLgojIAojIFRoZXJlIGFyZSB0d28gZXhjZXB0aW9ucyB0byB0aGUgY29uc29saWRhdGlv biAtIHRoZSBhbHBoYSBhbmQKIyBzcGFyYzY0IGFyY2gncyBtYW5pcHVsYXRlIGJhcmUgdW5z aWduZWQgbG9uZ3MsIG5vdCBjcHVtYXNrX3QncywKIyBvbiBpbnB1dCAod3JpdGUgc3lzY2Fs bCksIGFuZCBkbyBzdHVmZiB0aGF0IHdhcyBtb3JlIGZ1bmt5IHRoYW4KIyBJIGNvdWxkIG1h a2Ugc2Vuc2Ugb2YuICBTbyB0aGUgaW5wdXQgc2lkZSBvZiB0aGVzZSB0d28gYXJjaCdzCiMg d2FzIGxlZnQgYXMtaXMuICBJJ2Qgd2VsY29tZSBzb21lb25lIHdpdGggYWNjZXNzIHRvIGVp dGhlciBvZgojIHRoZXNlIHN5c3RlbXMgdG8gcHJvdmlkZSBhZGRpdGlvbmFsIHBhdGNoZXMu CiMgCiMgVGhlIG5ldyBmb3JtYXQgY29uc2lzdHMgb2YgbXVsdGlwbGUgMzIgYml0IHdvcmRz LCBzZXBhcmF0ZWQgYnkKIyBjb21tYXMsIGRpc3BsYXllZCBhbmQgaW5wdXQgaW4gaGV4LiAg VGhlIGZvbGxvd2luZyBjb21tZW50IGZyb20KIyB0aGlzIHBhdGNoIGRlc2NyaWJlcyB0aGlz IGZvcm1hdCBmdXJ0aGVyOgojIAojICogVGhlIGFzY2lpIHJlcHJlc2VudGF0aW9uIG9mIG11 bHRpLXdvcmQgYml0IG1hc2tzIGRpc3BsYXlzIGVhY2gKIyAqIDMyYml0IHdvcmQgaW4gaGV4 IChub3QgemVybyBmaWxsZWQpLCBhbmQgZm9yIG1hc2tzIGxvbmdlciB0aGFuCiMgKiBvbmUg d29yZCwgdXNlcyBhIGNvbW1hIHNlcGFyYXRvciBiZXR3ZWVuIHdvcmRzLiAgV29yZHMgYXJl CiMgKiBkaXNwbGF5ZWQgaW4gYmlnLWVuZGlhbiBvcmRlciBtb3N0IHNpZ25pZmljYW50IGZp cnN0LiAgQW5kIGhleAojICogZGlnaXRzIHdpdGhpbiBhIHdvcmQgYXJlIGFsc28gaW4gYmln LWVuZGlhbiBvcmRlciwgb2YgY291cnNlLgojICoKIyAqIEV4YW1wbGVzOgojICogICBBIG1h c2sgd2l0aCBqdXN0IGJpdCAwIHNldCBkaXNwbGF5cyBhcyAiMSIuCiMgKiAgIEEgbWFzayB3 aXRoIGp1c3QgYml0IDEyNyBzZXQgZGlzcGxheXMgYXMgIjgwMDAwMDAwLDAsMCwwIi4KIyAq ICAgQSBtYXNrIHdpdGgganVzdCBiaXQgNjQgc2V0IGRpc3BsYXlzIGFzICIxLDAsMCIuCiMg KiAgIEEgbWFzayB3aXRoIGJpdHMgMCwgMSwgMiwgNCwgOCwgMTYsIDMyIGFuZCA2NCBzZXQg ZGlzcGxheXMKIyAqICAgICBhcyAiMSwxLDEwMTE3Ii4gIFRoZSBmaXJzdCAiMSIgaXMgZm9y IGJpdCA2NCwgdGhlIHNlY29uZAojICogICAgIGZvciBiaXQgMzIsIHRoZSB0aGlyZCBmb3Ig Yml0IDE2LCBhbmQgc28gZm9ydGgsIHRvIHRoZQojICogICAgICI3Iiwgd2hpY2ggaXMgZm9y IGJpdHMgMiwgMSBhbmQgMC4KIyAqICAgQSBtYXNrIHdpdGggYml0cyAzMiB0aHJvdWdoIDM5 IHNldCBkaXNwbGF5cyBhcyAiZmYsMCIuCiMgCiMgVGhlIGVzc2VudGlhbCByZWFzb24gZm9y IGFkZGluZyB0aGUgY29tbWEgYnJlYWtzIHdhcyB0byBtYWtlCiMgdGhlIGxvbmcgbWFza3Mg ZnJvbSBvdXIgKFNHSSdzKSBiaWcgNTEyIENQVSBzeXN0ZW1zIHBhcnNhYmxlIGJ5CiMgaHVt YW5zLiAgQW4gdW5icm9rZW4gc3RyaW5nIG9mIDEyOCBoZXggZGlnaXRzIGlzIHByZXR0eSBk aWZmaWN1bHQKIyB0byByZWFkLiAgRm9yIHRob3NlIHdobyBhcmUgY29tcGlsaW5nIHN5c3Rl bXMgd2l0aCBDT05GSUdfTlJfQ1BVUwojIG9mIDMyIG9yIGxlc3MsIHRoZXJlIHNob3VsZCBi ZSBubyB2aXNpYmxlIGNoYW5nZSBpbiBmb3JtYXQuCiMgCiMgVGhlcmUgYXJlIG9mIGNvdXJz ZSBhIHRob3VzYW5kIHBvc3NpYmxlIG91dHB1dCBmb3JtYXRzIHRoYXQKIyBtZWV0IHNpbWls YXIgY3JpdGVyaWEuICBJZiBzb21lb25lIHdhbnRzIHRvIGxvYmJ5IGZvciBhbmQgc2Vlawoj IGNvbnNlbnN1cyBiZWhpbmQgYW5vdGhlciBzdWNoIGZvcm1hdCwgdGhhdCdzIGZpbmUuICBO b3cgdGhhdAojIHRoZSBmb3JtYXQgaXMgY29uc29saWRhdGVkIGludG8gYSBzaW5nbGUgcGFp ciBvZiByb3V0aW5lcywKIyBpdCBzaG91bGQgYmUgZWFzeSB0byBhZGFwdCB3aGF0ZXZlciB3 ZSBjaG9vc2UuCiMgCiMgSW50ZXJuYWxseSwgdGhlIGRpc3BsYXkgcm91dGluZSB1c2VzIHNu cHJpbnRmIHRvIHRyYWNrIHRoZQojIHJlbWFpbmluZyBzcGFjZSBpbiBpdHMgb3V0cHV0IGJ1 ZmZlciwgdG8gYXZvaWQgdGhlIHJpc2sgb2YKIyBvdmVycnVubmluZyBpdC4KIyAKIyBBIG5l dyBmaWxlLCBsaWIvbWFzay5jLCBpcyBhZGRlZCB0byB0aGUgbGliIGRpcmVjdG9yeSwgdG8K IyBob2xkIHRoZSB0d28gY29tbW9uIHJvdXRpbmVzLiAgSSBhbnRpY2lwYXRlIGFkZGluZyBh IGZldyBtb3JlCiMgY29tbW9uIHJvdXRpbmVzIGZvciBnZW5lcmljIHN1cHBvcnQgb2YgbXVs dGktd29yZCBiaXQgbWFza3MgdG8KIyBsaWIvbWFzay5jLCBpbiBzdWJzZXF1ZW50IHBhdGNo ZXMgdGhhdCB3aWxsIGFkZCBhIG5vZGVtYXNrX3QKIyB0eXBlIGFzIGFuIEFEVCBzaGFyaW5n IGltcGxlbWVudGF0aW9uIHdpdGggY3B1bWFza190LgojIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgMDMvMTIvMjkJYWtwbUBvc2RsLm9yZwkxLjE0 NzQuNDguNTQKIyBbUEFUQ0hdIEFkZCBzdXBwb3J0IGZvciBTR0kncyBJT0M0IGNoaXBzZXQK IyAKIyBGcm9tOiBBbmlrZXQgTWFsYXRwdXJlIDxhbmlrZXRAc2dpLmNvbT4KIyAKIyBBZGRz IHN1cHBvcnQgZm9yIHRoZSBJT0M0IElERSBwYXJ0LgojIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgMDMvMTIvMjkJYWtwbUBvc2RsLm9yZwkxLjE0 NzQuNDguNTUKIyBbUEFUQ0hdIFJlbW92ZSBDTE9ORV9GSUxFUyBmcm9tIGluaXQga2VybmVs IHRocmVhZCBjcmVhdGlvbgojIAojIEZyb206IEphbWVzIE1vcnJpcyA8am1vcnJpc0ByZWRo YXQuY29tPgojIAojIFRoZSBwYXRjaCBiZWxvdyByZW1vdmVzIHRoZSBDTE9ORV9GSUxFUyBm bGFnIGZyb20gdGhlIGtlcm5lbF90aHJlYWQoKSBjYWxsCiMgd2hpY2ggc3RhcnRzIGluaXQu CiMgCiMgVGhpcyBpcyB0byBwcmV2ZW50IG90aGVyIGtlcm5lbCB0aHJlYWRzIGZyb20gc2hh cmluZyBmaWxlIGRlc2NyaXB0b3JzCiMgb3BlbmVkIGJ5IGluaXQgKHRyeSAnbHNvZiAvZGV2 L2luaXRjdGwnIG9uIGEgMi42IHN5c3RlbSA6LSkuCiMgCiMgVGhlIHJlYXNvbiB0aGlzIHBh dGNoIGlzIGJlaW5nIHByb3Bvc2VkIGlzIHNvIHRoYXQgdXNlcm1vZGUgaGVscGVyIGFwcHMK IyBsYXVuY2hlZCB2aWEga2VybmVsIHRocmVhZHMgKGUuZy4gbW9kcHJvYmUsIGhvdHBsdWcp IGRvIG5vdCB0aGVuIGluaGVyaXQKIyBhbnkgc3VjaCBmaWxlIGRlc2NyaXB0b3JzLiAgVGhp cyBpcyBub3QgYSBwcm9ibGVtIGluIGl0c2VsZiBzbyBmYXIgKG90aGVyCiMgdGhhbiBiZWlu ZyBtZXNzeSksIGJ1dCBpdCBpcyBhIHByb2JsZW0gZm9yIFNFTGludXgsIHdoaWNoIHdpbGwg b3RoZXJ3aXNlCiMgbmVlZCB0byBncmFudCBhY2Nlc3MgdG8gL2Rldi9pbml0Y3RsIGJ5IG1v ZHByb2JlIGFuZCBob3RwbHVnLCBhIHNvbWV3aGF0CiMgdW5kZXNpcmFibGUgc2NlbmFyaW8u CiMgCiMgQXMgZmFyIGFzIEkgY2FuIHRlbGwsIHRoZXJlIGlzIG5vIHJlYXNvbiB3aHkgaW5p dCBuZWVkcyB0byBiZSBzcGF3bmVkIHdpdGgKIyBDTE9ORV9GSUxFUy4gIFBsZWFzZSBsZXQg bWUga25vdyBpZiB0aGVyZSBhcmUgYW55IG9iamVjdGlvbnMgdG8gdGhlCiMgY2hhbmdlLCB3 aGljaCBJIHdvdWxkIGxpa2UgdG8gcHJvcG9zZSBmb3IgMi42LjArIGFzIGEgY2xlYW51cC4K IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIDAzLzEy LzI5CWFrcG1Ab3NkbC5vcmcJMS4xNDc0LjQ4LjU2CiMgW1BBVENIXSBwYWdlZmF1bHQgYWNj b3VudGluZyBmaXgKIyAKIyBGcm9tOiBXaWxsaWFtIExlZSBJcndpbiBJSUkgPHdsaUBob2xv bW9ycGh5LmNvbT4KIyAKIyBPdXIgYWNjb3VudGluZyBvZiBtaW5vciBmYXVsdHMgdmVyc3Vz IG1ham9yIGZhdWx0cyBpcyBjdXJyZW50bHkgcXVpdGUgd3JvbmcuCiMgCiMgVG8gZml4IGl0 IHVwIHdlIG5lZWQgdG8gcHJvcGFnYXRlIHRoZSBhY3R1YWwgZmF1bHQgdHlwZSBiYWNrIHRv IHRoZQojIGhpZ2hlci1sZXZlbCBjb2RlLiAgUmVwdXJwb3NlIHRoZSBjdXJyZW50bHktdW51 c2VkIHRoaXJkIGFyZyB0byAtPm5vcGFnZQojIGZvciB0aGlzLgojIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgMDMvMTIvMjkJYWtwbUBvc2RsLm9y ZwkxLjE0NzQuNDguNTcKIyBbUEFUQ0hdIGZpeCBvb3BzIGluIHByb2Nfa2lsbF9pbm9kZXMo KQojIAojIHByb2Nfa2lsbF9pbm9kZXMoKSB3YWxrcyB0aGUgc19maWxlcyBsaXN0LCBwbGF5 aW5nIHdpdGggLT5mX2RlbnRyeS4KIyAKIyBCdXQgdGhlcmUgaXMgYSB3aW5kb3cgaW4gd2hp Y2ggX19mcHV0KCkgd2lsbCBsZWF2ZSBhIGZpbGUgb24gdGhhdCBsaXN0IHdpdGggYQojIG51 bGwgZl9kZW50cnkgYW5kIGZfdmZzbW50LgojIAojIEknbSBub3Qgc3VyZSBpdCB3YXMgZXZl ciBjb25maXJtZWQgdGhhdCB0aGlzIGZpeGVkIHRoZSByZXBvcnRlZCBvb3BzLCBidXQgaXQK IyBzZWVtcyBtdWNoIGJldHRlciB0byBzZXQgdGhvc2UgZmllbGRzIHRvIG51bGwgX2FmdGVy XyByZW1vdmluZyB0aGUgZmlscCBmcm9tCiMgdGhlIGxpc3QuCiMgCiMgKEFjdHVhbGx5LCB0 aGVyZSdzIG5vIG5lZWQgdG8gbnVsbCB0aG9zZSBwb2ludGVycyBvdXQgYXQgYWxsLiAgQnV0 IHdoYXRldmVyOwojIGl0IGNhdWdodCBhIGJ1ZykuCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAwMy8xMi8yOQlha3BtQG9zZGwub3JnCTEuMTQ3 NC40OC41OAojIFtQQVRDSF0gcmVtb3ZlIGxvY2tfa2VybmVsKCkgZnJvbSBwcm9jX2J1c19w Y2lfbHNlZWsoKQojIAojIFJlbW92ZSBwb2ludGxlc3MgbG9ja19rZXJuZWwoKSwgcmVwbGFj ZSB3aXRoIHRoZSBzdGFuZGFyZC1idXQtc3RpbGwtb2RkCiMgaV9zZW0tYmFzZWQgbHNlZWsg bG9ja2luZy4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQojIDAzLzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4xNDc0LjQ4LjU5CiMgW1BBVENIXSByZW1v dmUgaW5jbHVkZSByZWN1cnNpb24gZnJvbSBsaW51eC9wYWdlbWFwLmgKIyAKIyBGcm9tOiBB cm5hbGRvIENhcnZhbGhvIGRlIE1lbG8gPGFjbWVAY29uZWN0aXZhLmNvbS5icj4KIyAKIyBw YWdlbWFwLmgsIGRvIG5vdCBpbmNsdWRlIHRoeXNlbGYuCiMgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAwMy8xMi8yOQlha3BtQG9zZGwub3JnCTEu MTQ3NC40OC42MAojIFtQQVRDSF0gZXh0MzogYmRfY2xhaW0gZm9yIGpvdXJuYWwgZGV2aWNl CiMgCiMgRnJvbTogTmVpbCBCcm93biA8bmVpbGJAY3NlLnVuc3cuZWR1LmF1PgojIAojIENo YW5nZSBleHQzIHRvIHJ1biBiZF9jbGFpbSgpIGFnYWluc3QgZXh0ZXJuYWwgam91cm5hbCBk ZXZpY2VzLiBJdCBpcwojIHNpZ25pZmljYW50IG9ubHkgZm9yIHRob3NlIHdobyBoYXZlIGV4 dDMgam91cm5hbHMgb24gYSBzZXBhcmF0ZSBkZXZpY2UsIGFuZAojIGdldHMgZXhjbHVzaXZl IGFjY2VzcyB0byB0aGF0IGRldmljZS4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQojIDAzLzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4xNDc0LjQ4LjYx CiMgW1BBVENIXSBkbSBhbmQgYm91bmNlIGJ1ZmZlciBwYW5pYyBmaXgKIyAKIyBGcm9tOiBN YXJrIEhhdmVya2FtcCA8bWFya2hAb3NkbC5vcmc+CiMgCiMgQWJvdXQgdGhyZWUgd2Vla3Mg YWdvIG1hcmt3IGF0IG9zZGwgcG9zdGVkIGEgbWFpbCBhYm91dCBhIHBhbmljIHRoYXQgaGUK IyB3YXMgc2VlaW5nOgojIAojIGh0dHA6Ly9tYXJjLnRoZWFpbXNncm91cC5jb20vP2w9bGlu dXgta2VybmVsJm09MTA2NzM3MTc2NzE2NDc0Jnc9MgojIAojIEkgYmVsaWV2ZSB3aGF0IGlz IGhhcHBlbmluZywgaXMgdGhhdCB0aGUgZG0gX19jbG9uZV9hbmRfbWFwIGZ1bmN0aW9uIGlz CiMgZ2VuZXJhdGluZyBiaW8gc3RydWN0dXJlcyB3aXRoIHRoZSBiaV9pZHggZmllbGQgbm9u LXplcm8uICBXaGVuCiMgX19ibGtfcXVldWVfYm91bmNlIGNyZWF0ZXMgYSBuZXcgYmlvIHdp dGggYm91bmNlIHBhZ2VzLCBpdCBzZXRzIHRoZSBiaV9pZHgKIyBmaWVsZCB0byAwIHJhdGhl ciB0aGFuIHRoZSBiaV9pZHggb2YgdGhlIG9yaWdpbmFsLiAgVGhpcyBjYXVzZXMgdHJvdWJs ZSBzaW5jZQojIGJ2X3BhZ2UgcG9pbnRlcnMgd2lsbCBiZSBkZXJlZmVyZW5jZWQgbGF0ZXIg dGhhdCBhcmUgemVyby4gIFRoZSBmb2xsb3dpbmcKIyB1c2VzIHRoZSBvcmlnaW5hbCBiaW8g c3RydWN0dXJlJ3MgYmlfaWR4IGluIHRoZSBuZXcgYmlvIHN0cnVjdHVyZSBhbmQgaW4KIyBj b3B5X3RvX2hpZ2hfYmlvX2lycSBhbmQgYm91bmNlX2VuZF9pby4KIyAKIyBUaGlzIGhhcyBj bGVhcmVkIHVwIHRoZSBwYW5pYyB3aGVuIHVzaW5nIHRoZSB2b2x1bWUuCiMgCiMgKGFja2Vk IGJ5IEpvZSBUaG9ybmJlcikKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQojIDAzLzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4xNDc0LjQ4LjYyCiMgW1BB VENIXSBzdGF0ZnM2NCBmaXgKIyAKIyBGcm9tOiBBbmRpIEtsZWVuIDxha0BtdWMuZGU+CiMg CiMgSXQgZml4ZXMgdGhlIHN0YXRmczY0IGVtdWxhdGlvbiBvbiB4ODYtNjQuICBUaGUgcHJv YmxlbSBpcyB0aGF0IHg4Ni02NAojIG5lZWRzIGFuIF9fYXR0cmlidXRlX18oKGFsaWduZWQp KSBvbiB0aGUgY29tcGF0X3N0YXRmczY0IHN0cnVjdHVyZS4gIFRoZQojIGNvbmNsdXNpb24g bGFzdCB0aW1lIHRoaXMgd2FzIGRpc2N1c3NlZCB3YXMgdGhhdCB0aGUgc3RydWN0dXJlIHNo b3VsZCBiZQojIGR1cGxpY2F0ZWQuCiMgCiMgRXNzZW50aWFsbHkgaXQgaXMgdGhlIG9sZCBz aGFyZWQgc3RydWN0dXJlIGNvcGllZCB0byBldmVyeSB1c2VyIGFuZCB4ODYtNjQKIyB1c2Vz IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpLgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiMgMDMvMTIvMjkJYWtwbUBvc2RsLm9yZwkxLjE0NzQuNDgu NjMKIyBbUEFUQ0hdIEFkZCBhLm91dCBzdXBwb3J0IGZvciB4ODYtNjQKIyAKIyBGcm9tOiBB bmRpIEtsZWVuIDxha0BtdWMuZGU+CiMgCiMgQWRkIDMyYml0IGEub3V0IHN1cHBvcnQgZm9y IHg4Ni02NC4KIyAKIyBOb3QgZXhhY3RseSBhbiBpbXBvcnRhbnQgYnVnIGZpeCwgYnV0IG1h eWJlIGl0IHdpbGwgaGVscCBzb21lb25lLiAgVGhpcwojIHNob3VsZCBpbmNyZWFzZSB0aGUg Y3VycmVudCA5OCUgY29tcGF0aWJpbGl0eSB0byBpMzg2IHRvIHBlcmhhcHMgOTguMSUgQCkK IyAKIyBJIHRlc3RlZCBhbiBvbGQgYS5vdXQgU3VTRSA0LjIgaW5zdGFsbGF0aW9uIGluIGNo cm9vdCBhbmQgaXQgd29ya2VkLiAgSXQKIyBhbHNvIHJhbiBzb21lIHZlcnkgb2xkIGxpbnV4 IGJpbmFyaWVzIGZyb20gJzkyIGZvdW5kIG9uIGZ0cC5mdW5ldC5maS4gIFRoZQojIG9ubHkg cHJvZ3JhbSB0aGF0IGRpZG4ndCB3YXMgdGhlIFN1U0UgYS5vdXQgR05VIGVtYWNzLCBidXQg SSB3YXMgdG9vIGxhenkKIyB0byB0cmFjayB0aGF0IGRvd24uICBDb3JlIGR1bXBzIGFyZSBu b3Qgc3VwcG9ydGVkLgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiMgMDMvMTIvMjkJYWtwbUBvc2RsLm9yZwkxLjE0NzQuNDguNjQKIyBbUEFUQ0hd IENyaXRpY2FsIHg4Ni02NCBJT01NVSBmaXhlcyBmb3IgMi42LjAKIyAKIyBGcm9tOiBBbmRp IEtsZWVuIDxha0BtdWMuZGU+CiMgCiMgUGxlYXNlIGNvbnNpZGVyIGFwcGx5aW5nIHRoaXMg cGF0Y2gsIEkgd291bGQgY29uc2lkZXIgaXQgY3JpdGljYWwgZm9yIHg4Ni02NC4KIyAKIyBU aGUgMi42LjAgeDg2LTY0IElPTU1VIGNvZGUgdW5mb3J0dW5hdGVseSBoYWQgYSBmZXcgcHJv YmxlbXMsIGxlYWRpbmcKIyB0byBub24gYm9vdGluZyBzeXN0ZW1zIGFuZCBpbiBhIGZldyBj YXNlcyB0byBkYXRhIGNvcnJ1cHRpb24uCiMgCiMgSXQgZml4ZXMgYSB0d28gc2VyaW91cyBi dWdzIGluIGhhbmRsaW5nIHNwZWNpYWwga2luZHMgb2Ygc2NhdHRlciBnYXRoZXIKIyBsaXN0 cyBpbiBwY2lfbWFwX3NnLgojIAojIEFHUCB3YXMgY29tcGxldGVseSBicm9rZW4gd2l0aCBJ T01NVSBiZWNhdXNlIG9mIGEgd3JvbmcgI2lmZGVmLgojIEZpeCB0aGF0LgojIAojIE9uZSBU TEIgZmx1c2ggb3B0aW1pemF0aW9uIEkgZGlkIGEgbG9uZyB0aW1lIGFnbyBzZWVtcyB0byBi cmVhayBvbgojIHNvbWUgM3dhcmUgYm9hcmRzICh3aG8gcmVxdWlyZSBJT01NVSBiZWNhdXNl IHRoZXkgZG9uJ3Qgc3VwcG9ydCA2NGJpdAojIGFkZHJlc3NlcykuICBUaGUgYnJlYWthZ2Ug bGVhZCB0byBkYXRhIGNvcnJ1cHRpb24uIFRoaXMgcGF0Y2ggZGlhYmxlcwojIHRoZSBvcHRp bWl6YXRpb24gZm9yIG5vdyBhbmQgZml4ZXMgYSBwb3RlbnRpYWwgU01QIHJhY2UgaW4gdGhl IGZsdXNoCiMgY29kZSB0b28uIFRoZSBUTEIgZmx1c2ggaXMgZG9uZSBpbiBhIHNsb3dlciwg YnV0IG1vcmUgcmVsaWFibGUgd2F5CiMgbm93IHRvby4KIyAKIyBUaGlzIHBhdGNoIGZpeGVz IHRoZW0uIFBsZWFzZSBjb25zaWRlciBhcHBseWluZywgYmVjYXVzZSBzb21lIG9mIHRoZXNl CiMgcHJvYmxlbXMgaGl0IHF1aXRlIG1hbnkgcGVvcGxlLgojIAojIFRoaXMgYWxzbyBkaXNh YmxlcyB0aGUgSU9NTVVfREVCVUcgaW4gdGhlIGRlZmNvbmZpZy4gQSBsb3Qgb2YgcGVvcGxl IAojIHdlcmUgdXNpbmcgdGhlIElPTU1VIHdoZW4gdGhleSBkaWRuJ3QgbmVlZCB0bywgd2hp Y2ggbXVsdGlwbGllZCB0aGUKIyBwcm9ibGVtcy4KIyAKIyBJT01NVSBtZXJnZSBpcyBkaXNh YmxlZCBmb3Igbm93LiBUaGlzIHdhcyBhbiBleHBlcmltZW50YWwgb3B0aW1pemF0aW9uCiMg d2hpY2ggaGVscGVkIHdpdGggc29tZSBibG9jayBkZXZpY2VzLCBidXQgZm9yIHByb2R1Y3Rp b24gaXQgc2VlbXMgdG8KIyBiZSBiZXR0ZXIgdG8gZGlzYWJsZSBpdCBmb3Igbm93IGJlY2F1 c2UgdGhlcmUgYXJlIHNvbWUgcXVlc3Rpb25hYmxlCiMgY29ybmVyIGNhc2VzIHdoZW4gdGhl IElPTU1VIGFwZXJ0dXJlIGZyYWdtZW50cy4gVGhlIHNhbWUgaXMgZG9uZQojIGZvciBJT01N VSBTQUMgZm9yY2UsIHdoaWNoIHdhcyByZWxhdGVkIHRvIHRoYXQuIAojIAojIGkzODYgaGFz IHF1aXRlIGJyb2tlbiBzZW1hbnRpY3MgZm9yIHBjaV9hbGxvY19jb25zaXN0ZW50KCkuIEl0 IHVzZXMKIyB0aGUgc3RhbmRhcmQgZGV2aWNlIERNQSBtYXNrIGluc3RlYWQgb2YgdGhlIGNv bnNpc3RlbnQgbWFzay4gTWFrZSB1cwojIGJ1Zy10by1idWcgY29tcGF0aWJsZSBoZXJlLiBU aGlzIGZpeGVzIHByb2JsZW1zIHdpdGggc29tZSBzb3VuZAojIGRyaXZlcnMgdGhhdCBkb24n dCBzdXBwb3J0IGZ1bGwgMzJiaXQgYWRkcmVzc2luZy4KIyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIDAzLzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4x NDc0LjQ4LjY1CiMgW1BBVENIXSBGaXggQ1BVSUQgY29tcGlsYXRpb24gb24geDg2LTY0CiMg CiMgRnJvbTogQW5kaSBLbGVlbiA8YWtAbXVjLmRlPgojIAojIEEgbG90IG9mIHBlb3BsZSBo YXZlIHJ1biBpbnRvIHRoaXM6IHRoZSB4ODYtNjQgY3B1aWQgZHJpdmVyIGRpZG4ndAojIGNv bXBpbGUgYXMgbW9kdWxlLgojIAojIFVzaW5nIGEga2x1ZGdlIHN1Z2dlc3RlZCBieSBTYW0g UmF2bnNib3JnLgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiMgMDMvMTIvMjkJYWtwbUBvc2RsLm9yZwkxLjE0NzQuNDguNjYKIyBbUEFUQ0hdIEZp eCBzeXNycS10IG9uIHg4Ni02NAojIAojIEZyb206IEFuZGkgS2xlZW4gPGFrQG11Yy5kZT4K IyAKIyBGcm9tIEJhZGFyaSBQdWxhdmFydHkKIyAKIyBXaXRob3V0IHRoaXMgc3lzcnEtdCBz aG93cyB0aGUgc2FtZSBiYWNrdHJhY2UgZm9yIGFsbCBwcm9jZXNzZXMgb24geDg2LTY0CiMg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAwMy8xMi8y OQlha3BtQG9zZGwub3JnCTEuMTQ3NC40OC42NwojIFtQQVRDSF0gRml4IDMyYml0IHRydW5j YXRlIG9uIHg4Ni02NAojIAojIEZyb206IEFuZGkgS2xlZW4gPGFrQG11Yy5kZT4KIyAKIyBB bm90aGVyIHBvdGVudGlhbCBkYXRhIGNvcnJ1cHRpb24gZml4LgojIAojIFRoZSAzMmJpdCB0 cnVuY2F0ZTY0IG9uIHg4Ni02NCBkaWQgc2lsZW50bHkgdHJ1bmNhdGUKIyBvZmZzZXRzID4z MmJpdC4gVGhhdCBicm9rZSBteXNxbCBmb3IgZXhhbXBsZS4gRml4IHRoYXQuCiMgCiMgRnJv bSBDaHJpcyBXaWxzb24KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQojIDAzLzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4xNDc0LjQ4LjY4CiMgW1BBVENI XSBBZGQgbW9yZSBwYXJhbm9pZCBjaGVja2luZyBpbiB4ODYtNjQgcHJlZmV0Y2ggY2hlY2tl cgojIAojIEZyb206IEFuZGkgS2xlZW4gPGFrQG11Yy5kZT4KIyAKIyBNYWtlIHN1cmUgd2Ug bmV2ZXIgYWNjZXNzIGFueXRoaW5nIGluIGtlcm5lbCBtYXBwaW5nIHdoaWxlCiMgZG9pbmcg dGhlIHByZWZldGNoIHdvcmthcm91bmQgY2hlY2tzIG9uIHg4Ni02NC4KIyAKIyBPcmlnaW5h bGx5IHN1Z2dlc3RlZCBieSBKYW1pZSBMb2NraWVyLgojIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgMDMvMTIvMjkJYWtwbUBvc2RsLm9yZwkxLjE0 NzQuNDguNjkKIyBbUEFUQ0hdIE1lcmdlIGkzODYgZml4IGZvciBwYWdlIGZhdWx0IHRvIHg4 Ni02NAojIAojIEZyb206IEFuZGkgS2xlZW4gPGFrQG11Yy5kZT4KIyAKIyBNZXJnZSB0aGUg aTM4NiBmaXggZm9yIHRoZSBwYWdlIGZhdWx0IGZyb20gTGludXMgdG8geDg2LTY0CiMgKEkn bSBub3QgYWN0dWFsbHkgc3VyZSB3aGF0IGl0IGZpeGVzLCBidXQgaWYgaXQncyBnb29kIGZv ciAzMmJpdAojIGl0IGlzIGxpa2VseSBnb29kIGZvciA2NGJpdCB0b28pCiMgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAwMy8xMi8yOQlha3BtQG9z ZGwub3JnCTEuMTQ3NC40OC43MAojIFtQQVRDSF0gU2lnbmFsIGZpeGVzIGZvciB4ODYtNjQK IyAKIyBGcm9tOiBBbmRpIEtsZWVuIDxha0BtdWMuZGU+CiMgCiMgTWVyZ2Ugc2lnbmFsIHJh Y2UgZml4ZXMgZnJvbSBpMzg2IHRvIHg4Ni02NC4KIyAKIyBGaXggYSBidWcgaW4gc3lzdGVt IGNhbGwgcmVzdGFydCwgbm90ZWQgYnkgSm9obiBCbGFja3dvb2QuCiMgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAwMy8xMi8yOQlha3BtQG9zZGwu b3JnCTEuMTQ3NC40OC43MQojIFtQQVRDSF0gRG9uJ3QgcGFuaWMgaW4gbXBwYXJzZSBvbiB4 ODYtNjQKIyAKIyBGcm9tOiBBbmRpIEtsZWVuIDxha0BtdWMuZGU+CiMgCiMgTWVyZ2UgaTM4 NiBmaXguIERvbid0IHBhbmljIGluIE1QIHRhYmxlIHBhcnNpbmcgd2hlbiB0aGUgdGFibGUg aXMgYmFkLgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiMgMDMvMTIvMjkJYWtwbUBvc2RsLm9yZwkxLjE0NzQuNDguNzIKIyBbUEFUQ0hdIEZpeCAz MmJpdCBzaWdpbmZvIHByb2JsZW1zIG9uIHg4Ni02NAojIAojIEZyb206IEFuZGkgS2xlZW4g PGFrQG11Yy5kZT4KIyAKIyAzMmJpdCBzaWdpbmZvIHdvdWxkIHNvbWV0aW1lcyBnZXQgcGFz c2VkIGluY29ycmVjdGx5IG9uIHg4Ni02NC4gVGhpcwojIGNoYW5nZSBmaXhlcyB0aGUgY29u dmVyc2lvbiBmdW5jdGlvbiB0byBiZSBhIGJpdCBkdW1iZXIsIGJ1dCBtb3JlCiMgY29ycmVj dC4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIDAz LzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4xNDc0LjQ4LjczCiMgW1BBVENIXSByZW1vdmUgbW0t PnN3YXBfYWRkcmVzcwojIAojIEZyb206IFdpbGxpYW0gTGVlIElyd2luIElJSSA8d2xpQGhv bG9tb3JwaHkuY29tPgojIAojIFRoaXMgZmllbGQgaXMgMTAwJSB1bnVzZWQuIFRoaXMgcGF0 Y2ggcmVtb3ZlcyBpdC4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQojIDAzLzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4xNDc0LjQ4Ljc0CiMgW1BBVENI XSBzaXMgY29tcGFyaXNvbiAvIGFzc2lnbm1lbnQgb3BlcmF0b3IgZml4CiMgCiMgRnJvbTog R2VvZmZyZXkgTGVlIDxnbGVlQGdudXBpbGdyaW1zLm9yZz4KIyAKIyBUaGlzIGZpeGVzIHdo YXQgc2VlbXMgdG8gYmUgYW4gb2J2aW91cyA9IHZzID09IGJ1ZyBpbiB0aGUgaW5pdDMwMS5j IHNpcwojIGZpbGUuCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KIyAwMy8xMi8yOQlha3BtQG9zZGwub3JnCTEuMTQ3NC40OC43NQojIFtQQVRDSF0g Rml4IHBvc3NpYmxlIG9vcHMgaW4gdmZzX3F1b3RhX3N5bmMoKQojIAojIEZyb206IEphbiBL YXJhIDxqYWNrQHVjdy5jej4KIyAKIyBJJ20gc2VuZGluZyB5b3UgYSBmaXggb2YgcG9zc2li bGUgT29wcyBpbiB2ZnNfcXVvdGFfc3luYygpLiAgQWN0dWFsbHkKIyBub2JvZHkgaGFzIHJ1 biBpbnRvIHRoYXQgSSBmb3VuZCBpdCB3aGVuIEkgd2FzIGxvb2tpbmcgdGhyb3VnaCB0aGUg Y29kZS4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoj IDAzLzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4xNDc0LjQ4Ljc2CiMgW1BBVENIXSBFeHQzK3F1 b3RhIGRlYWRsb2NrIGZpeAojIAojIEZyb206IEphbiBLYXJhIDxqYWNrQHVjdy5jej4KIyAK IyBoZXJlJ3MgcGF0Y2ggd2hpY2ggc2hvdWxkIGZpeCBkZWFkbG9jayB3aXRoIHF1b3Rhcytl eHQzIHJlcG9ydGVkIGluIDIuNAojICh0aGUgc2FtZSBwcm9ibGVtIGV4aXN0ZWQgaW4gMi42 IGJ1dCBub2JvZHkgZm91bmQgaXQpLgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiMgMDMvMTIvMjkJYWtwbUBvc2RsLm9yZwkxLjE0NzQuNDguNzcK IyBbUEFUQ0hdIEJJTkZNVF9FTEY9bSBpcyBub3QgYW4gb3B0aW9uCiMgCiMgRnJvbTogZ2xl ZUBnbnVwaWxncmltcy5vcmcKIyAKIyBJIHRoaW5rIEFkcmlhbiBoYWQgZm9yZ290dGVuIHRv IHVwZGF0ZSB0aGUgaGVscCB0ZXh0LgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiMgMDMvMTIvMjkJYWtwbUBvc2RsLm9yZwkxLjE0NzQuNDguNzgK IyBbUEFUQ0hdIG1kOiBMaW1pdCBtYXhfc2VjdG9ycyBvbiBtZCB3aGVuIG1lcmdlX2J2ZWNf Zm4gZGVmaW5lZCBvbiB1bmRlcmx5aW5nIGRldmljZS4KIyAKIyBGcm9tOiBOZWlsQnJvd24g PG5laWxiQGNzZS51bnN3LmVkdS5hdT4KIyAKIyBBcyBubyBtZCBwZXJzb25hbGl0aWVzIGhv bm91ciB0aGUgbWVyZ2VfYnZlY19mbiBvZiB1bmRlcmx5aW5nIGRldmljZXMsCiMgd2UgbXVz dCBtYWtlIHN1cmUgbmV2ZXIgdG8gc3VibWl0IGEgYmlvIGxhcmdlciB0aGFuIDEgcGFnZSB3 aGVuIGEgCiMgbWVyZ2VfYnZlY19mbiBpcyBkZWZpbmVkLgojIAojIHJhaWQ1IGFscmVhZHkg ZG9lcyB0aGlzIChpdCBuZXZlciBzdWJtaXRzIGJpb3MgbGFyZ2VyIHRoYW4gb25lIHBhZ2Up LgojIFdpdGggdGhpcyBwYXRjaCwgYWxsIG90aGVyIHJhaWQgcGVyc29uYWxpdGllcyBsaW1p dCB0aGVpcgojIG1heF9zZWN0b3JzIHdoZW4gYSBtZXJnZV9idmVjX2ZuIGlzIHByZXNlbnQu CiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAwMy8x Mi8yOQlha3BtQG9zZGwub3JnCTEuMTQ3NC40OC43OQojIFtQQVRDSF0gbWQ6IHNldCByYV9w YWdlcyBmb3IgcmFpZDAvcmFpZDUgZGV2aWNlcyBwcm9wZXJseS4KIyAKIyBGcm9tOiBOZWls QnJvd24gPG5laWxiQGNzZS51bnN3LmVkdS5hdT4KIyAKIyBzdHJpcGUgdG8gYmUgZWZmZWN0 aXZlLiAgVGhpcyBwYXRjaCBzZXRzIHJhX3BhZ2VzCiMgYXBwcm9wcmlhdGVseS4KIyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIDAzLzEyLzI5CWFr cG1Ab3NkbC5vcmcJMS4xNDc0LjQ4LjgwCiMgW1BBVENIXSBFcnJvbm91cyB1c2Ugb2YgdGlj a191c2VjIGluIGRvX2dldHRpbWVvZmRheQojIAojIEZyb206IEpvZSBLb3J0eSA8am9lLmtv cnR5QGNjdXIuY29tPgojIAojIGRvX2dldHRpbWVvZmRheSgpIGlzIHVzaW5nIHRpY2tfdXNl YyB3aGljaCBpcyBkZWZpbmVkIGluIHRlcm1zIG9mIFVTRVJfSFoKIyBub3QgSFouCiMgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAwMy8xMi8yOQlh a3BtQG9zZGwub3JnCTEuMTQ3NC40OC44MQojIFtQQVRDSF0gZml4IEVMRiBleGVjIHdpdGgg aHVnZSBic3MKIyAKIyBGcm9tOiBSb2xhbmQgTWNHcmF0aCA8cm9sYW5kQHJlZGhhdC5jb20+ CiMgCiMgVGhlIGZvbGxvd2luZyB0ZXN0IHByb2dyYW0gd2lsbCBjcmFzaCBldmVyeSB0aW1l IGlmIGR5bmFtaWNhbGx5IGxpbmtlZC4KIyBJIHRoaW5rIHRoaXMgYml0ZXMgYWxsIDMyLWJp dCBwbGF0Zm9ybXMsIGluY2x1ZGluZyAzMi1iaXQgZXhlY3V0YWJsZXMgb24KIyA2NC1iaXQg cGxhdGZvcm1zIHRoYXQgc3VwcG9ydCB0aGVtIChhbmQgY291bGQgaW4gdGhlb3J5IGJpdGUg NjQtYml0CiMgcGxhdGZvcm1zIHdpdGggYnNzIHNpemVzIGJleW9uZCB0aGUgYm91bmRzIG9m IGNvbXByZWhlbnNpb24pLgojIAojIAl2b2xhdGlsZSBjaGFyIGh1Z2Vic3NbMTA4MDAwMDAw MF07CiMgCW1haW4oKSB7IHByaW50ZigiJXAuLiVwXG4iLCAmaHVnZWJzc1swXSwgJmh1Z2Vi c3Nbc2l6ZW9mIGh1Z2Vic3NdKTsKIyAJIHN5c3RlbSgiY2F0IC9wcm9jLyRQUElEL21hcHMi KTsKIyAJIGh1Z2Vic3Nbc2l6ZW9mIGh1Z2Vic3MgLSAxXSA9IDE7CiMgCSByZXR1cm4gMjM7 CiMgCX0KIyAKIyBUaGUgcHJvYmxlbSBpcyB0aGF0IHRoZSBrZXJuZWwgbWFwcyBsZC5zbyBh dCAweDQwMDAwMDAwIG9yIHNvbWUgc3VjaCBwbGFjZSwKIyBiZWZvcmUgaXQgbWFwcyB0aGUg YnNzLiAgSGVyZSB0aGUgYnNzIGlzIHNvIGxhcmdlIHRoYXQgaXQgb3ZlcmxhcHMgYW5kCiMg Y2xvYmJlcnMgdGhhdCBtYXBwaW5nLiAgSSd2ZSBjaGFuZ2VkIGl0IHRvIG1hcCB0aGUgYnNz IGJlZm9yZSBpdCBsb2FkcyB0aGUKIyBpbnRlcnByZXRlciwgc28gdGhhdCBwYXJ0IG9mIHRo ZSBhZGRyZXNzIHNwYWNlIGlzIHJlc2VydmVkIGJlZm9yZSBsZC5zbydzCiMgbWFwcGluZyAo d2hpY2ggZG9lc24ndCByZWFsbHkgY2FyZSB3aGVyZSBpdCBnb2VzKSBpcyBkb25lLgojIAoj IFRoaXMgcGF0Y2ggYWxzbyBhZGRzIGVycm9yIGNoZWNraW5nIHRvIHRoZSBic3Mgc2V0dXAg KGFuZCBpbnRlcnByZXRlcidzIGJzcwojIHNldHVwKS4gIFdpdGggdGhlIGFmb3JlbWVudGlv bmVkIGNoYW5nZSBidXQgbm8gZXJyb3IgY2hlY2tpbmcsICJ1bGltaXQgLXYKIyA2NTUzNjsg Li9odWdlYnNzIiB3aWxsIGNyYXNoIGluIHRoZSBzdG9yZSBhZnRlciB0aGUgYHN5c3RlbScg Y2FsbCwgYmVjYXVzZQojIHRoZSBrZXJuZWwgd2lsbCBoYXZlIGZhaWxlZCB0byBhbGxvY2F0 ZSB0aGUgYnNzIGFuZCBpZ25vcmVkIHRoZSBlcnJvciwgc28KIyB0aGUgcHJvZ3JhbSBydW5z IHdpdGhvdXQgdGhvc2UgcGFnZXMgYmVpbmcgbWFwcGVkIGF0IGFsbC4gIFdpdGggdGhpcyBj aGFuZ2UKIyBpdCBkaWVzIHdpdGggYSBTSUdLSUxMIGFzIGZvciBhIGZhaWx1cmUgdG8gc2V0 IHVwIHN0YWNrIHBhZ2VzLiAgSXQgbWlnaHQgYmUKIyBldmVuIGJldHRlciB0byB0cnkgdG8g ZGV0ZWN0IHRoZSBjYXNlIGVhcmxpZXIgc28gdGhhdCBleGVjdmUgY2FuIHJldHVybiBhbgoj IGVycm9yIGJlZm9yZSBpdCBoYXMgd2lwZWQgb3V0IHRoZSBhZGRyZXNzIHNwYWNlLiAgQnV0 IHRoYXQgc2VlbXMgbGlrZSBpdAojIHdvdWxkIGFsd2F5cyBiZSBmcmFnaWxlIGFuZCBtaXNz IHNvbWUgY29ybmVyIGNhc2VzLCBzbyBJIGRpZCBub3QgdHJ5IHRvIGFkZAojIHN1Y2ggY29t cGxleGl0eS4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQojIDAzLzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4xNDc0LjQ4LjgyCiMgW1BBVENIXSBPX0RJ UkVDVCBtZW1vcnkgbGVhayBmaXgKIyAKIyBGcm9tOiBCYWRhcmkgUHVsYXZhcnR5IDxwYmFk YXJpQHVzLmlibS5jb20+CiMgCiMgSSBmb3VuZCB0aGUgcHJvYmxlbSB3aXRoIE9fRElSRUNU IG1lbW9yeSBsZWFrLgojIAojIFRoZSBwcm9ibGVtIGlzLCB3aGVuIHdlIGFyZSBkb2luZyBE SU8gcmVhZCBhbmQgY3Jvc3NlZCB0aGUgZW5kIG9mIGZpbGUgLSB3ZQojIGRvbid0IHJlbGVh c2UgcmVmZXJlbmNlc3Mgb24gYWxsIHRoZSBwYWdlcyB3ZSBnb3QgZnJvbSBnZXRfdXNlcl9w YWdlcygpLgojIChzaW5jZSBpdCBpcyBhIHN1Y2Nlc3MgY2FzZSkuCiMgCiMgVGhlIGZpeCBp cyB0byBjYWxsIGRpb19jbGVhbnVwKCkgZXZlbiBmb3Igc3VjZXNzIGNhc2VzLgojIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgMDMvMTIvMjkJYWtw bUBvc2RsLm9yZwkxLjE0NzQuNDguODMKIyBbUEFUQ0hdIEpCRDogYl9jb21taXR0ZWRfZGF0 YSBsb2NraW5nIGZpeAojIAojIFRoZSBsb2NraW5nIHJ1bGVzIHNheSB0aGF0IGJfY29tbWl0 dGVkX2RhdGEgaXMgY292ZXJlZCBieQojIGpiZF9sb2NrX2JoX3N0YXRlKCksIHNvIGltcGxl bWVudCB0aGF0IGR1cmluZyB0aGUgc3RhcnQgb2YgY29tbWl0LCB3aGlsZQojIHRocm93aW5n IGF3YXkgdW51c2VkIHNoYWRvdyBidWZmZXJzLgojIAojIEkgZG9uJ3QgZXhwZWN0IHRoYXQg dGhlcmUgaXMgcmVhbGx5IGEgcmFjZSBoZXJlLCBidXQgdGhlbSdzIHRoZSBydWxlcy4KIyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIDAzLzEyLzI5 CWFrcG1Ab3NkbC5vcmcJMS4xNDc0LjQ4Ljg0CiMgW1BBVENIXSBkdmIgaTJjIHRpbWVvdXQg Zml4CiMgCiMgRnJvbTogR2VyZCBLbm9yciA8a3JheGVsQGJ5dGVzZXgub3JnPgojIAojIEJl bG93IGlzIGEgT2J2aW91c2x5Q29ycmVjdFt0bV0gcGF0Y2ggd2hpY2ggZml4ZXMgdGhlIGky YyBidXMgdGltZW91dAojIGhhbmRsaW5nIGluIHRoZSBzYWE3MTQ2IGRyaXZlci4KIyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIDAzLzEyLzI5CWFr cG1Ab3NkbC5vcmcJMS4xNDc0LjQ4Ljg1CiMgW1BBVENIXSBtb3JlIGNvcnJlY3QgZ2V0X2Nv bXBhdF90aW1lc3BlYyBpbnRlcmZhY2UKIyAKIyBGcm9tOiBKb2UgS29ydHkgPGpvZS5rb3J0 eUBjY3VyLmNvbT4KIyAKIyBUaGUgQVBJIGZvciBnZXRfY29tcGF0X3RpbWVzcGVjIC8gcHV0 X2NvbXBhdF90aW1lc3BlYyBpcyBpbmNvcnJlY3QsIGl0CiMgZm9yY2VzIGEgY2FsbGVyIHdp dGggY29uc3QgYXJncyB0byAoaW5jb3JyZWN0bHkpIGNhc3QuICBUaGUgcG9zaXggbWVzc2Fn ZQojIHF1ZXVlIHBhdGNoIGlzIG9uZSBzdWNoIGNhbGxlci4KIyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIDAzLzEyLzI5CWFrcG1Ab3NkbC5vcmcJ MS4xNDc0LjQ4Ljg2CiMgW1BBVENIXSBNQUlOVEFJTkVSUyB2Z2VyLnJ1dGdlcnMuZWR1CiMg CiMgRnJvbTogR2VlcnQgVXl0dGVyaG9ldmVuIDxnZWVydEBsaW51eC1tNjhrLm9yZz4KIyAK IyBNYWlsaW5nIGxpc3RzIGF0IHZnZXIucnV0Z2Vycy5lZHUgYXJlIG9ic29sZXRlLCB1c2Ug dmdlci5rZXJuZWwub3JnCiMgaW5zdGVhZC4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQojIDAzLzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4xNDc0LjQ4 Ljg3CiMgW1BBVENIXSBsaXN0X2VtcHR5X2NhcmVmdWwoKSBkb2N1bWVudGF0aW9uLgojIAoj IEZyb206IEluZ28gTW9sbmFyIDxtaW5nb0BlbHRlLmh1PgojIAojIEknZCBhbHNvIHN1Z2dl c3QgdGhlIGZvbGxvd2luZyBwYXRjaCBiZWxvdywgdG8gY2xhcmlmeSB0aGUgdXNlIG9mCiMg dW5zeW5jaHJvbml6ZWQgbGlzdF9lbXB0eSgpLiAgbGlzdF9lbXB0eV9jYXJlZnVsKCkgY2Fu IG9ubHkgYmUgc2FmZSBpbiB0aGUKIyB2ZXJ5IHNwZWNpZmljIGNhc2Ugb2YgIm9uZS1zaG90 IiBsaXN0IGVudHJpZXMgd2hpY2ggbWlnaHQgYmUgcmVtb3ZlZCBieQojIGFub3RoZXIgQ1BV LiAgKGJ1dCBub3RoaW5nIGVsc2UgY2FuIGhhcHBlbiB0byB0aGVtIGFuZCB0aGlzIGlzIHRo ZWlyIG9ubHkKIyBmaW5hbCBzdGF0ZS4pIGxpc3RfZW1wdHlfY2FyZWZ1bCgpIGlzIG90aGVy d2lzZSBjb21wbGV0ZWx5IHVuc3luY2hyb25pemVkCiMgb24gYm90aCB0aGUgY29tcGlsZXIg YW5kIENQVSBsZXZlbCBhbmQgaXMgbm90ICdTTVAgc2FmZScgaW4gYW55IHdheS4KIyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIDAzLzEyLzI5CWFr cG1Ab3NkbC5vcmcJMS4xNDc0LjQ4Ljg4CiMgW1BBVENIXSBDbGVhciBkaXJ0eSBiaXRzIGV0 YyBvbiBjb21wb3VuZCBmcmVlcwojIAojIEZyb206ICJNYXJ0aW4gSi4gQmxpZ2giIDxtYmxp Z2hAYXJhY25ldC5jb20+LAojICAgICAgIEd1aWxsYXVtZSBNb3JpbiA8Z3VpbGxhdW1lQG1v cmluZnIub3JnPgojIAojIFdlIG5lZWQgdG8gY2xlYXIgdGhlIHNvZnR3YXJlIGRpcnR5IGJp dCBvbiB0aGUgdGFpbCBwYWdlcyBvZiBhIGNvbXBvdW5kIHBhZ2UKIyB3aGVuIGZyZWVpbmcg aXQgdXAuCiMgCiMgVGhlIHRhaWwgcGFnZXMgY2FuIGJlY29tZSBkaXJ0aWVkIGJ5IG1tYXAn aW5nIC9kZXYvbWVtLCBhbmQgd3JpdGluZyBpbnRvCiMgYW55IGNsdXN0ZXJlZCBwYWdlIGdy b3VwICh0aGF0IGEgZHJpdmVyIG1pZ2h0IGhhdmUgY3JlYXRlZCBvciB3aGF0ZXZlcikuCiMg CiMgUGx1cyBpdCdzIGJldHRlciB0byBydW4gYWxsIHRoZXNlIHBhZ2VzIHRocm91Z2ggdGhl IGZyZWVfcGFnZXNfY2hlY2sgY2hlY2tzCiMgYW55d2F5LgojIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgMDMvMTIvMjkJYWtwbUBvc2RsLm9yZwkx LjE0NzQuNDguODkKIyBbUEFUQ0hdIEFsbG93IHVuaW1hcCBjaGFuZ2Ugb24gbm9uIGZnIGNv bnNvbGUKIyAKIyBGcm9tOiBLdXJ0IEdhcmxvZmYgPGdhcmxvZmZAc3VzZS5kZT4KIyAKIyBU aGUgY29tbWVudCBpbiBmcm9udCBvZiB2dF9pb2N0bCgpIHJlYWRzCiMgLyoKIyAgKiBXZSBo YW5kbGUgdGhlIGNvbnNvbGUtc3BlY2lmaWMgaW9jdGwncyBoZXJlLiAgV2UgYWxsb3cgdGhl CiMgICogY2FwYWJpbGl0eSB0byBtb2RpZnkgYW55IGNvbnNvbGUsIG5vdCBqdXN0IHRoZSBm Z19jb25zb2xlLj0yMAojICAqLwojIAojIFVuZm9ydHVuYXRlbHksIHRoaXMgZG9lcyBub3Qg YXBwbHkgdG8gUElPX1VOSU1BUENMUiwgbm9yCiMgR0lPXy9QSU9fVU5JTUFQLiBUaGV5IGFs d2F5cyBvcGVyYXRlIG9uIHRoZSBjdXJyZW50IGZvcmVncm91bmQKIyBjb25zb2xlLCB3aGlj aCBpcyBpbmNvbnNpc3RlbnQgYXQgbGVhc3QuIEZvciBtb3N0IGlvY3RscywgdGhlCiMgY29t bWVudCBpcyBhcHBsaWNhYmxlLgojIAojIEl0IGFsc28gY2F1c2VzIHByb2JsZW1zLCBhcyBz ZXRmb250IGNhbid0IGRvIHRoZSBmdWxsIGpvYiBvbgojIHRoZSBub24tZmcgY29uc29sZXMu IChPSywgb3VyIHNldGZvbnQgaXMgc2xpZ2h0bHkgY2hhbmdlZCB0bwojIGV2ZW4gdHJ5IGl0 IC4uLiBhcyB5b3Uga25vdy4pCiMgCiMgVGhlIGF0dGFjaGVkIHBhdGNoIGRvZXMgZml4IHRo aXMuCiMgCiMgSSBoYXZlIGEgc2ltaWxhciBwYXRjaCBmb3IgMi40LCBidXQgaXQgbmV2ZXIg Z290IG1lcmdlZCA6LSgKIyBiZWNhdXNlIG5vdCBtYW55IHBlb3BsZSBzZWVtIHRvIGNhcmUg YW5kIEkgc3VibWl0dGVkIGluIHRoZSBtaWRkbGUKIyBvZiB0aGUgMi40IHNlcmllcyAuLi4K IyBJdCBoYXMgYmVlbiBpbiBVbml0ZWRMaW51eC9TVVNFIGtlcm5lbHMgZm9yIGFnZXMsIHRo b3VnaC4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoj IDAzLzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4xNDc0LjQ4LjkwCiMgW1BBVENIXSBmaXggb3V0 ZGF0ZWQgY29tbWVudCBpbiBqaWZmaWVzLmgKIyAKIyBGcm9tOiBUaW0gU2NobWllbGF1IDx0 aW1AcGh5c2lrMy51bmktcm9zdG9jay5kZT4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQojIDAzLzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4xNDc0LjQ4 LjkxCiMgW1BBVENIXSBzbGFiIHJlY2xhaW0gYWNjb3VudGluZyBmaXgKIyAKIyBGcm9tOiBN YW5mcmVkIFNwcmF1bCA8bWFuZnJlZEBjb2xvcmZ1bGxpZmUuY29tPgojIAojIHNsYWJfcmVj bGFpbV9wYWdlcyBpcyBpbmNyZWFzZWQgZXZlbiBpZiBnZXRfZnJlZV9wYWdlcyBmYWlscy4g IFRoZSBhdHRhY2hlZAojIHBhdGNoIG1vdmVzIHRoZSB1cGRhdGUgdG8gdGhlIGNvcnJlY3Qg cG9zaXRpb24uCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KIyAwMy8xMi8yOQlha3BtQG9zZGwub3JnCTEuMTQ3NC40OC45MgojIFtQQVRDSF0gc3Ry dWN0X2NweSBjb21waWxhdGlvbiB3YXJuaW5nCiMgCiMgRnJvbTogSW5nbyBNb2xuYXIgPG1p bmdvQGVsdGUuaHU+CiMgCiMgaSd2ZSBhdHRhY2hlZCBhIG1pbm9yIGZpeCBmb3IgdGhlIDIu Ni4xIHRpbWVmcmFtZSAtIHdlIGNsZWFybHkgbWVhbnQKIyBfX3N0cnVjdF9jcHlfYnVnKCku ICBOZXdlc3QgdmVyc2lvbnMgb2YgZ2NjIHdhcm4gYWJvdXQgdGhpcy4KIyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIDAzLzEyLzI5CWFrcG1Ab3Nk bC5vcmcJMS4xNDc0LjQ4LjkzCiMgW1BBVENIXSBNb3JlIE1PRFVMRV9BTElBU2VzCiMgCiMg RnJvbTogUnVzdHkgUnVzc2VsbCA8cnVzdHlAcnVzdGNvcnAuY29tLmF1PgojICAgICAgIFN0 ZXZlIFlvdW5ncywgU3RlcGhlbiBIZW1taW5nZXIKIyAKIyBUaHJlZSBtb3JlIE1PRFVMRV9B TElBU2VzLiAgVHJpdmlhbCwgYnV0IHVzZWZ1bCBpZiBwZW9wbGUgd2FudCB0aGluZ3MKIyB0 byAianVzdCB3b3JrIiBpbiAyLjYuMC4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQojIDAzLzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4xNDc0LjQ4Ljk0 CiMgW1BBVENIXSBucl9zbGFiIGFjY291bnRpbmcgZml4CiMgCiMgRnJvbTogTWFuZnJlZCBT cHJhdWwgPG1hbmZyZWRAY29sb3JmdWxsaWZlLmNvbT4KIyAKIyBpZiBhbGxvY19zbGFibWdt dCBmYWlscywgdGhlbiBrbWVtX2ZyZWVwYWdlcygpIGNhbGxzIHN1Yl9wYWdlX3N0YXRlKCks CiMgYWx0b3VnaCBucl9zbGFiIHdhcyBub3QgeWV0IGluY3JlYXNlZC4gIFRoZSBhdHRhY2hl ZCBwYXRjaCBmaXhlcyB0aGF0IGJ5CiMgbW92aW5nIHRoZSBpbmNfcGFnZV9zdGF0ZSBpbnRv IGttZW1fZ2V0cGFnZXMoKS4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQojIDAzLzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4xNDc0LjQ4Ljk1CiMgW1BB VENIXSBpc2RuX3BwcF9jY3AuYyB1c2VzIHVuaW5pdGlhbGl6ZWQgc3BpbmxvY2sKIyAKIyBG cm9tOiBUb25uZXJyZSBBbmtsaW4gPHRodW5kZXJAa2VlcHNha2UuY2g+CiMgCiMgVGhpcyBz cGlubG9jayB3YXMgdXNlZCB1bmluaXRpYWxpemVkLiBHYXZlIG1lIGEgbG90IG9mIHdhcm5p bmdzLgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMg MDMvMTIvMjkJYWtwbUBvc2RsLm9yZwkxLjE0NzQuNDguOTYKIyBbUEFUQ0hdIGZpeCB1c2Vy c3BhY2UgY29tcGlsZXMgd2l0aCBuYmQuaAojIAojIEZyb206IFBhdWwgQ2xlbWVudHMgPFBh dWwuQ2xlbWVudHNAU3RlZWxFeWUuY29tPgojIAojIEEgcHJldmlvdXMgImNsZWFudXAiIG9u IHRoZSBuYmQuaCBoZWFkZXIgZmlsZSBicm9rZSB1c2Vyc3BhY2UgY29tcGlsZXMuCiMgSSd2 ZSBhZGRlZCBhbiAjaWZkZWYgX19LRVJORUxfXyBzbyB0aGF0IHVzZXJzcGFjZSBkb2Vzbid0 IG5lZWQgdG8gd29ycnkKIyBhYm91dCB0aGUgbmJkX2RldmljZSBzdHJ1Y3R1cmUsIHdoaWNo IGlzIG9ubHkgdXNlZCBpbi1rZXJuZWwuIFRoZSBwYXRjaAojIGFsbG93cyBtZSB0byBjb21w aWxlIG15IG5iZCB0b29scyB3aXRoIHRoZSAyLjYgbmJkLmguCiMgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAwMy8xMi8yOQlha3BtQG9zZGwub3Jn CTEuMTQ3NC40OC45NwojIFtQQVRDSF0gREFDOTYwIHJlcXVlc3QgcXVldWUgcGVyIGRpc2sK IyAKIyBGcm9tOiBEYXZlIE9saWVuIDxkbW9Ab3NkbC5vcmc+CiMgCiMgSGVyZSdzIGEgcGF0 Y2ggdGhhdCBjaGFuZ2VzIHRoZSBEQUM5NjAgZHJpdmVyIGZyb20gaGF2aW5nIG9uZSByZXF1 ZXN0CiMgcXVldWUgZm9yIEFMTCBkaXNrcyBvbiB0aGUgY29udHJvbGxlciwgdG8gaGF2aW5n IGEgcmVxdWVzdCBxdWV1ZSBmb3IKIyBlYWNoIGxvZ2ljYWwgZGlzay4gIFRoaXMgdHVybnMg b3V0IHRvIG1ha2UgbGl0dGxlIGRpZmZlcmVuY2UgZm9yIGRlYWRsaW5lCiMgc2NoZWR1bGVy LCBub3IgZm9yIEFTIHNjaGVkdWxlciB1bmRlciBsaWdodCBJTyBsb2FkLiAgQnV0IHVuZGVy IEFTCiMgc2NoZWR1bGVyIHdpdGggaGVhdnkgSU8sIGl0IG1ha2VzIGFib3V0IGEgNDAlIGRp ZmZlcmVuY2Ugb24gZGJ0MgojIHdvcmtsb2FkLiAgSGVyZSBhcmUgdGhlIG1lYXN1cmVkIG51 bWJlcnM6CiMgCiMgVGhlIDIuNi4wLXRlc3QxMS1EIGtlcm5lbCB2ZXJzaW9uIGluY2x1ZGVz IHRoaXMgbXV0bGktcXVldWUgcGF0Y2ggdG8gdGhlCiMgREFDOTYwIGRyaXZlci4KIyAKIyBG b3Igbm9uLWNhY2hlZCBkYnQyIHdvcmtsb2FkICAoaGVhdnkgSU8gbG9hZCkKIyAKIyBTY2hl ZHVsZXIJa2VybmVsL2RyaXZlcglOT1RQTShiaWdnZXIgaXMgYmV0dGVyKQojIEFTCQkyLjYu MC10ZXN0MTEtRCAgMTU5OAojIEFTCQkyLjYuMC10ZXN0MTEgICAgIDk3MwojIGRlYWRsaW5l CTIuNi4wLXRlc3QxMSAgICAxNjQwCiMgZGVhZGxpbmUJMi42LjAtdGVzdDExLUQgIDE2NDUK IyAKIyBGb3IgY2FjaGVkIGRidDIgd29ya2xvYWQgKGxpZ2h0ZXIgSU8gbG9hZCkKIyAKIyBB UwkJMi42LjAtdGVzdDExLUQgIDQ5OTMKIyBBUwkJMi42Li10ZXN0Ni1tbTQgIDQ5NzYsIDQ4 OTAsIDQ5NzIKIyBkZWFkbGluZQkyLjYuMC10ZXN0MTEtRCAgNDk5OAojIAojIENhbiB0aGlz IGJlIGluY2x1ZGVkIGluIDIuNi4wPyAgSSBrbm93IGl0J3Mgbm90IGEgImNyaXRpY2FsIHBh dGNoIgojIGluIHRoZSBzZW5zZSB0aGF0IHNvbWV0aGluZyB3b24ndCB3b3JrIHdpdGhvdXQg aXQuICBPbiB0aGUgb3RoZXIgaGFuZCwKIyB0aGUgY2hhbmdlIGlzIGlzb2xhdGVkIHRvIGEg ZHJpdmVyLgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiMgMDMvMTIvMjkJYWtwbUBvc2RsLm9yZwkxLjE0NzQuNDguOTgKIyBbUEFUQ0hdIHN5bmNo cm9uaXplIHVzZSBvZiBtbS0+Y29yZV93YWl0ZXJzCiMgCiMgRnJvbTogUm9sYW5kIE1jR3Jh dGggPHJvbGFuZEByZWRoYXQuY29tPgojIAojIEkgYmVsaWV2ZSBJIGhhdmUgaWRlbnRpZmll ZCBhIGZhaWx1cmUgbW9kZSB0aGF0IExpbnVzIHNhdyBhIGNvdXBsZSB3ZWVrcwojIGJhY2sg d2hlbiB0cmFja2luZyBkb3duIHNvbWUgb3RoZXIgZm9yay9leGl0IHNvcnRzIG9mIHJhY2Vz LiAgV2Ugc2F3IHRoaXMKIyBjb21lIHVwIG9uIHJhcmUgb2NjYXNpb25zIHdpdGggdGhlIFJI RUwzIGtlcm5lbCdzIGJhY2twb3J0IG9mIHRoZSBuZXcgY29kZQojICh3aGlsZSB0cnlpbmcg dG8gdHJhY2sgZG93biBvdGhlciByYWNlIGZhaWx1cmUgbW9kZXMgd2UgaGF2ZSB5ZXQgdG8g Zml4LCBzaWdoKS4KIyAKIyBJIGFtIHRhbGtpbmcgYWJvdXQgdGhlIGZvbGxvd2luZyBzY2Vu YXJpbzoKIyAKIyA+IEJ0dywgZXZlbiB3aXRoIHRoZSBmaXgsIGRvaW5nIGEgIndoaWxlIDog OyAuL2NyYXNoIHQgMTAgOyBkb25lIiB3aWxsCiMgPiBldmVudHVhbGx5IHJlc3VsdCBpbiBh IHN0dWNrIHByb2Nlc3M6CiMgPgojID4gCSAxNDE1IHR0eTEgICAgIEQgICAgICAwOjAwIC4v Y3Jhc2gKIyA+CiMgPiBUaGlzIGlzIHNvbWUga2luZCBvZiBkZWFkbG9jazogbW9zdCBvZiB0 aGUgZmlmdHkgdGhyZWFkcyBhcmUgaW4gIkQiCiMgPiBzdGF0ZSwgd2l0aCBhIHRyYWNlIHNv bWV0aGluZyBsaWtlCiMgPgojID4gCSBbPGMwMTFmYmUzPl0gc2NoZWR1bGUrMHgzNjAvMHg3 ZjgKIyA+IAkgWzxjMDEyMDUzOT5dIHdhaXRfZm9yX2NvbXBsZXRpb24rMHhkNC8weDFjMwoj ID4gCSBbPGMwMTI4YzllPl0gZG9fZXhpdCsweDYyNy8weDZhNAojID4gCSBbPGMwMTI4ZGRk Pl0gZG9fZ3JvdXBfZXhpdCsweDNkLzB4MTc3CiMgPiAJIFs8YzAxMzBjMTM+XSBkZXF1ZXVl X3NpZ25hbCsweDJkLzB4ODQKIyA+IAkgWzxjMDEzMzkxMT5dIGdldF9zaWduYWxfdG9fZGVs aXZlcisweDM5MC8weDU3NQojID4gCSBbPGMwMTBhNTQxPl0gZG9fc2lnbmFsKzB4NmMvMHhm MQojID4gCSBbPGMwMTIwMGJlPl0gZGVmYXVsdF93YWtlX2Z1bmN0aW9uKzB4MC8weDEyCiMg PiAJIFs8YzAxMjAwYmU+XSBkZWZhdWx0X3dha2VfZnVuY3Rpb24rMHgwLzB4MTIKIyA+IAkg WzxjMDEzZDUwZj5dIGRvX2Z1dGV4KzB4NmQvMHg3ZAojID4gCSBbPGMwMTNkNjM1Pl0gc3lz X2Z1dGV4KzB4MTE2LzB4MTJmCiMgPiAJIFs8YzAxMGE2MDE+XSBkb19ub3RpZnlfcmVzdW1l KzB4M2IvMHgzZAojID4gCSBbPGMwMTBhODJlPl0gd29ya19ub3RpZnlzaWcrMHgxMy8weDE1 CiMgPgojID4gZXhjZXB0IGZvciBvbmUgdGhhdCBpcyB0cnlpbmcgdG8gY29yZS1kdW1wOgoj ID4KIyA+IAkgWzxjMDEyMDUzOT5dIHdhaXRfZm9yX2NvbXBsZXRpb24rMHhkNC8weDFjMwoj ID4gCSBbPGMwMTIwMGJlPl0gZGVmYXVsdF93YWtlX2Z1bmN0aW9uKzB4MC8weDEyCiMgPiAJ IFs8YzAxMjAwYmU+XSBkZWZhdWx0X3dha2VfZnVuY3Rpb24rMHgwLzB4MTIKIyA+IAkgWzxj MDIxMDFhYT5dIHJ3c2VtX3dha2UrMHg4Ni8weDEyZAojID4gCSBbPGMwMTczOGFmPl0gY29y ZWR1bXBfd2FpdCsweGE4LzB4YWEKIyA+IAkgWzxjMDE3M2EyNj5dIGRvX2NvcmVkdW1wKzB4 MTc1LzB4MjZjCiMgPgojID4gYW5kIHRocmVlIHRoYXQgYXJlIGp1c3QgZG9pbmcgYSByZWd1 bGFyICJleGl0KCkiIHN5c3RlbSBjYWxsOgojID4KIyA+IAkgWzxjMDExZmJlMz5dIHNjaGVk dWxlKzB4MzYwLzB4N2Y4CiMgPiAJIFs8YzAxMWUxOWE+XSByZWNhbGNfdGFza19wcmlvKzB4 OTAvMHgxYWEKIyA+IAkgWzxjMDEyMDUzOT5dIHdhaXRfZm9yX2NvbXBsZXRpb24rMHhkNC8w eDFjMwojID4gCSBbPGMwMTIwMGJlPl0gZGVmYXVsdF93YWtlX2Z1bmN0aW9uKzB4MC8weDEy CiMgPiAJIFs8YzAxMjAwYmU+XSBkZWZhdWx0X3dha2VfZnVuY3Rpb24rMHgwLzB4MTIKIyA+ IAkgWzxjMDIxMDIwNz5dIHJ3c2VtX3dha2UrMHhlMy8weDEyZAojID4gCSBbPGMwMTI4Yzll Pl0gZG9fZXhpdCsweDYyNy8weDZhNAojID4gCSBbPGMwMTI4ZDRkPl0gbmV4dF90aHJlYWQr MHgwLzB4NTMKIyA+IAkgWzxjMDEwYTdlMz5dIHN5c2NhbGxfY2FsbCsweDcvMHhiCiMgPgoj ID4gSG93ZXZlciwgdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbSBpcyB0b3RhbGx5IHVuYWZmZWN0 ZWQgYnkgdGhpcyBkZWFkbG9jazoKIyA+IGl0J3Mgb25seSBkZWFkbG9ja2VkIHdpdGhpbmcg dGhlIHRocmVhZCBncm91cCBpdHNlbGYsIG5vYm9keSBlbHNlIGNhcmVzLgojIAojIFdoYXQg aGFwcGVucyBoZXJlIGlzIGEgcmFjZSBiZXR3ZWVuIGFuIGV4aXRpbmcgdGhyZWFkIGNoZWNr aW5nCiMgbW0tPmNvcmVfd2FpdGVycyBpbiBfX2V4aXRfbW0sIGFuZCB0aGUgdGhyZWFkIHRh a2luZyB0aGUgY29yZS1kdW1wIHNpZ25hbAojIChpbiBjb3JlZHVtcF93YWl0KSBleGFtaW5p bmcgdGhlIGZpcnN0IHRocmVhZCdzIC0+bW0gcG9pbnRlciBhbmQKIyBpbmNyZW1lbnRpbmcg bW0tPmNvcmVfd2FpdGVycyB0byBhY2NvdW50IGZvciBpdC4gIFRoZXJlIGlzIG5vCiMgc3lu Y2hyb25pemF0aW9uIGF0IGFsbCBpbiBfX2V4aXRfbW0ncyB1c2Ugb2YgbW0tPmNvcmVfd2Fp dGVycy4gIElmIHRoZQojIGNvcmVkdW1wX3dhaXQgdGhyZWFkIHJlYWRzIHRzay0+bW0gd2hl biB0c2sgaXMgaW4gX19leGl0X21tIGJldHdlZW4KIyBjaGVja2luZyBtbS0+Y29yZV93YWl0 ZXJzIGFuZCBjbGVhcmluZyB0c2stPm1tLCB0aGVuIGl0IHdpbGwgaW5jcmVtZW50CiMgbW0t PmNvcmVfd2FpdGVycyBhbmQgdGhlIHRvdGFsIGNvdW50IHdpbGwgbGF0ZXIgZXhjZWVkIHRo ZSBudW1iZXIgb2YKIyB0aHJlYWRzIHRoYXQgd2lsbCBldmVyIGRlY3JlbWVudCBpdCBhbmQg c3luY2hyb25pemUuICBIZW5jZSBpdCBibG9ja3MgZm9yZXZlci4KIyAKIyBUaGUgZm9sbG93 aW5nIHBhdGNoIGZpeGVzIHRoZSBwcm9ibGVtIGJ5IHVzaW5nIG1tLT5tbWFwX3NlbSBpbiBf X2V4aXRfbW0uCiMgVGhlIHJlYWQgbG9jayBtdXN0IGJlIGhlbGQgYXJvdW5kIGNoZWNraW5n IG1tLT5jb3JlX3dhaXRlcnMgYW5kIGNsZWFyaW5nCiMgdHNrLT5tbSBzbyB0aGF0IGNvcmVk dW1wX3dhaXQgKHdoaWNoIGdldHMgdGhlIHdyaXRlIGxvY2spIGNhbm5vdCBjb21lIGluCiMg YmV0d2VlbiBhbmQgZG8gYm9ndXMgYm9va2tlZXBpbmcuCiMgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAwMy8xMi8yOQlha3BtQG9zZGwub3JnCTEu MTQ3NC40OC45OQojIFtQQVRDSF0gUmVuYW1lIGxlZ2FjeV9idXMgdG8gcGxhdGZvcm1fYnVz CiMgCiMgRnJvbTogSmVmZiBHYXJ6aWsgPGpnYXJ6aWtAcG9ib3guY29tPgojIAojIEkndmUg c2VlbiB0aGlzIHBhdGNoIGZsb2F0aW5nIGFyb3VuZC4gIE5vdCBzdXJlIHRoZSBvcmlnaW4s IGJ1dCBpdCdzIAojIHN1cmZhY2VkIG9uIGxrbWwgYW5kIGFsc28gd2hlbiBJIHdhcyBwb2tp bmcgYXJvdW5kIGhhbmRoZWxkcy5vcmcgQ1ZTIGZvcgojIGlQQVEgcGF0Y2hlczogIG9uIG5v bi1QQ3MsIHBhcnRpY3VsYXJseSBzeXN0ZW0tb24tY2hpcCBkZXZpY2VzIGJ1dCBub3QKIyBq dXN0IHRoZXJlLCB5b3UgaGF2ZSBhIGN1c3RvbSAicGxhdGZvcm0gYnVzIiB0aGF0IGlzIHRo ZSByb290IG9mIHByZXR0eSAKIyBtdWNoIGFsbCBvdGhlciBkZXZpY2VzIGFuZCBidXNlcy4K IyAKIyBJdCdzIHNvbWV0aGluZyBJIHdhbnRlZCB0byBtYWtlIHN1cmUgcGVvcGxlIGRpZG4n dCBmb3JnZXQ7IHRvIG1ha2Ugc3VyZSAKIyB0aGUgbGVnYWN5X2J1cyBkaWRuJ3QgZ2V0ICJs ZWdhY2llZCBvdXQgb2YgZXhpc3RlbmNlLiIgIDstKQojIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgMDMvMTIvMjkJYWtwbUBvc2RsLm9yZwkxLjE0 NzQuNDguMTAwCiMgW1BBVENIXSBGaXggaW9jdGwgcmVsYXRlZCB3YXJuaW5ncyBpbiB1c2Vy c3BhY2UKIyAKIyBGcm9tOiBKb2hhbm5lcyBTdGV6ZW5iYWNoIDxqc0Bjb252ZXJnZW5jZS5k ZT4KIyAKIyB0aGUgcGF0Y2ggYmVsb3cgcmVtb3ZlcyB3YXJuaW5ncyBsaWtlOgojIAojICAg d2FybmluZzogc2lnbmVkIGFuZCB1bnNpZ25lZCB0eXBlIGluIGNvbmRpdGlvbmFsIGV4cHJl c3Npb24KIyAKIyB3aGVuIGNvbXBpbGluZyB1c2Vyc3BhY2UgYXBwbGljYXRpb25zIGFnYWlu c3QgYSBnbGliYyBidWlsdCB3aXRoIDIuNiBrZXJuZWwKIyBoZWFkZXJzIChsaWtlIG9uIERl YmlhbiB1bnN0YWJsZSkuCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KIyAwMy8xMi8yOQlha3BtQG9zZGwub3JnCTEuMTQ3NC40OC4xMDEKIyBbUEFU Q0hdIFdpbmJvbmQgdzgzNjI3aGYgZHJpdmVyCiMgCiMgRnJvbTogUOFkcmFpZyBCcmFkeSA8 UEBkcmFpZ0JyYWR5LmNvbT4KIyAKIyBXYXRjaGRvZyBkcml2ZXIgZm9yIHRoZSBXaW5ib25k IHc4MzYyN2hmIHdoaWNoIGlzIG9uIHRoZSBsYXN0IDMgbW90aGVyYm9hcmRzCiMgSSBnb3Qg aGVyZSBmb3IgdGVzdCAodHlhbiwgYWR2YW50ZWNoLCBmb3JjZSkuCiMgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAwMy8xMi8yOQlha3BtQG9zZGwu b3JnCTEuMTQ3NC40OC4xMDIKIyBbUEFUQ0hdIHVwZGF0ZSBzbjIgTUFJTlRBSU5FUlMgZmls ZSBlbnRyeQojIAojIEZyb206IGpiYXJuZXNAc2dpLmNvbSAoSmVzc2UgQmFybmVzKQojIAoj IEp1c3QgYSBxdWljayBwYXRjaCB0byBmaXggTUFJTlRBSU5FUlMgZm9yIHNuMi4KIyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIDAzLzEyLzI5CWFr cG1Ab3NkbC5vcmcJMS4xNDc0LjQ4LjEwMwojIFtQQVRDSF0gU0NDIHdhcm5pbmcgZml4CiMg CiMgRnJvbTogQWxhbiBDb3ggPGFsYW5AcmVkaGF0LmNvbT4KIyAKIyBKdXN0IGEgd2Fybmlu ZyBmaXggYW5kIGJlaGF2aW91ciB0aWR5LiBDaGFuZ2luZyB0aGUga2lzcy5taW50aW1lIHZh cmlhYmxlIGlzbid0CiMgZ29pbmcgdG8gd29yayBhcyBpdHMgZXhwb3NlZCB0byB1c2VyIHNw YWNlCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAw My8xMi8yOQlha3BtQG9zZGwub3JnCTEuMTQ3NC40OC4xMDQKIyBbUEFUQ0hdIGN5Y3hfZHJ2 IHdhcm5pbmcgZml4CiMgCiMgRnJvbTogQWxhbiBDb3ggPGFsYW5AcmVkaGF0LmNvbT4KIyAK IyBUeXBlIGVycm9ycywganVzdCBmaXhlcyBhIHdhcm5pbmcKIyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIDAzLzEyLzI5CWFrcG1Ab3NkbC5vcmcJ MS4xNDc0LjQ4LjEwNQojIFtQQVRDSF0gVklBIGF1ZGlvIGZpeGVzCiMgCiMgRnJvbTogQWxh biBDb3ggPGFsYW5AcmVkaGF0LmNvbT4KIyAKIyBWSUEgYXVkaW8gaGFkIGEgZml4IGZyb20g Mi40IG1pc3Npbmcgc28gYW55IHVzZXIgY291bGQgc3BhbSB0aGUgc3lzdGVtIGxvZy4gQWxz bwojIGluY2x1ZGUgYSBmaXggZm9yIGEgYnVnIHdoaWNoIGlzIHBlbmRpbmcgMi40IGZpeGlu ZyB0b28gYW5kIGNhdXNlcyBhIGJvZ3VzCiMgd2FybmluZyB0byBiZSBkaXNwbGF5ZWQgb24g Y2xvc2Ugb2YgYXVkaW8gZmlsZSBoYW5kbGUuCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAwMy8xMi8yOQlha3BtQG9zZGwub3JnCTEuMTQ3NC40 OC4xMDYKIyBbUEFUQ0hdIEtlcm5lbCBMb2NraW5nIERvY3VtZW50YXRpb24gdXBkYXRlCiMg CiMgRnJvbTogUnVzdHkgUnVzc2VsbCA8cnVzdHlAcnVzdGNvcnAuY29tLmF1PgojIAojIEVu dGlyZWx5IHJldmlzZWQsIGFuZCBsYXJnZWx5IHJld3JpdHRlbi4gIEhhcyBhIGNvbnRpbnVp bmcgZXhhbXBsZSBub3csIHdoaWNoCiMgSSB0aGluayBtYWtlcyB0aGluZ3MgY2xlYXJlci4g IEFsc28gY292ZXJzIFJlYWQgQ29weSBVcGRhdGUuICBUaGlzIHZlcnNpb24KIyBmdXJ0aGVy IGRlcHJlY2F0ZXMgcndsb2NrX3QsIHNodWZmbGVzIHNlY3Rpb25zIGZvciBiZXR0ZXIgb3Jn YW5pemF0aW9uLgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiMgMDMvMTIvMjkJYWtwbUBvc2RsLm9yZwkxLjE0NzQuNDguMTA3CiMgW1BBVENIXSBu YW1lX3RvX2Rldl90KCkgZml4CiMgCiMgRnJvbTogdmlyb0BwYXJjZWxmYXJjZS5saW51eC50 aGVwbGFuZXQuY28udWsKIyAKIyBXaGVuIHdlIHJlZ2lzdGVyIGRpc2tzLCB3ZSBtYW5nbGUg dGhlIGRpc2sgbmFtZXMgdGhhdCBjb250YWluIHNsYXNoZXMgKGUuZy4KIyBjY2lzcy9jMGQw KSByZXBsYWNpbmcgdGhlbSB3aXRoICchJyBpbiBjb3JyZXNwb25kaW5nIHN5c2ZzIG5hbWVz LiAgU28KIyBuYW1lX3RvX2Rldl90KCkgc2hvdWxkIG1hbmdsZSB0aGUgbmFtZSBpbiB0aGUg c2FtZSB3YXkgYmVmb3JlIGxvb2tpbmcgZm9yIGl0CiMgaW4gL3N5cy9ibG9jay4KIyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIDAzLzEyLzI5CWFr cG1Ab3NkbC5vcmcJMS4xNDc0LjQ4LjEwOAojIFtQQVRDSF0gZG06IGZpeCBibG9jayBkZXZp Y2UgcmVzaXppbmcKIyAKIyBGcm9tOiBKb2UgVGhvcm5iZXIgPHRob3JuYmVyQHNpc3RpbmEu Y29tPgojIAojIFdoZW4gc2V0dGluZyB0aGUgc2l6ZSBvZiBhIERldmljZS1NYXBwZXIgZGV2 aWNlIGluIHRoZSBnZW5kaXNrIGVudHJ5LCBhbHNvCiMgdHJ5IHRvIHNldCB0aGUgc2l6ZSBv ZiB0aGUgY29ycmVzcG9uZGluZyBibG9ja19kZXZpY2UgZW50cnkncyBpbm9kZS4gIFRoaXMg aXMKIyBuZWNlc3NhcnkgdG8gYWxsb3cgb25saW5lIGRldmljZS9maWxlc3lzdGVtIHJlc2l6 aW5nIHRvIHdvcmsgY29ycmVjdGx5LiAKIyBbS2V2aW4gQ29ycnldCiMgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAwMy8xMi8yOQlha3BtQG9zZGwu b3JnCTEuMTQ3NC40OC4xMDkKIyBbUEFUQ0hdIGRtOiByZW1vdmUgZHluYW1pYyB0YWJsZSBy ZXNpemluZwojIAojIEZyb206IEpvZSBUaG9ybmJlciA8dGhvcm5iZXJAc2lzdGluYS5jb20+ CiMgCiMgVGhlIGRtIHRhYmxlIHNpemUgaXMgYWx3YXlzIGtub3duIGluIGFkdmFuY2UsIHNv IHdlIGNhbiBzcGVjaWZ5IGl0IGluCiMgZG1fdGFibGVfY3JlYXRlKCksIHJhdGhlciB0aGFu IHJlbHlpbmcgb24gZHluYW1pYyByZXNpemluZy4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIDAzLzEyLzI5CWFrcG1Ab3NkbC5vcmcJMS4xNDc0 LjQ4LjExMAojIFtQQVRDSF0gZG06IG1ha2UgdjQgb2YgdGhlIGlvY3RsIGludGVyZmFjZSB0 aGUgZGVmYXVsdAojIAojIEZyb206IEpvZSBUaG9ybmJlciA8dGhvcm5iZXJAc2lzdGluYS5j b20+CiMgCiMgTWFrZSB0aGUgdmVyc2lvbi00IGlvY3RsIGludGVyZmFjZSB0aGUgZGVmYXVs dCBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24uCiMgSWYgeW91IGhhdmUgb3V0IG9mIGRh dGUgdG9vbHMgeW91IHdpbGwgbmVlZCB0byB1c2UgdGhlIHYxIGludGVyZmFjZS4KIyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIDAzLzEyLzI5CWFr cG1Ab3NkbC5vcmcJMS4xNDc0LjQ4LjExMQojIFtQQVRDSF0gZG06IHNldCBpbyByZXN0cmlj dGlvbiBkZWZhdWx0cwojIAojIEZyb206IEpvZSBUaG9ybmJlciA8dGhvcm5iZXJAc2lzdGlu YS5jb20+CiMgCiMgTWFrZSBzdXJlIHRoYXQgYSB0YXJnZXQgaGFzIGEgc2Vuc2libGUgc2V0 IG9mIGRlZmF1bHQgaW8gcmVzdHJpY3Rpb25zLgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgMDMvMTIvMjkJYWtwbUBvc2RsLm9yZwkxLjE0NzQu NDguMTEyCiMgW1BBVENIXSBkbTogZG1fdGFibGVfZXZlbnQoKSBzbGVlcCBvbiBzcGlubG9j ayBidWcKIyAKIyBGcm9tOiBKb2UgVGhvcm5iZXIgPHRob3JuYmVyQHNpc3RpbmEuY29tPgoj IAojIFlvdSBjYW4gbm8gbG9uZ2VyIGNhbGwgZG1fdGFibGVfZXZlbnQoKSBmcm9tIGludGVy cnVwdCBjb250ZXh0LgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiMgMDMvMTIvMjkJdG9ydmFsZHNAaG9tZS5vc2RsLm9yZwkxLjE0NzQuNDguMTEz CiMgTWVyZ2UgYms6Ly9rZXJuZWwuYmtiaXRzLm5ldC9kYXZlbS9uZXQtMi42CiMgaW50byBo b21lLm9zZGwub3JnOi9ob21lL3RvcnZhbGRzL3YyLjUvbGludXgKIyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIDAzLzEyLzI5CXRvcnZhbGRzQGhv bWUub3NkbC5vcmcJMS4xNDc0LjQ4LjExNAojIE1lcmdlIGJrOi8vYmsuYXJtLmxpbnV4Lm9y Zy51ay9saW51eC0yLjYtc2VyaWFsCiMgaW50byBob21lLm9zZGwub3JnOi9ob21lL3RvcnZh bGRzL3YyLjUvbGludXgKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQojIDAzLzEyLzI5CXRvcnZhbGRzQGhvbWUub3NkbC5vcmcJMS4xNDc0LjEuNTYK IyBNZXJnZSBpYTY0IGNvbmZsaWN0cwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiMgMDMvMTIvMjkJdG9ydmFsZHNAaG9tZS5vc2RsLm9yZwkxLjE0 NzQuMS41NwojIE1lcmdlIGJrOi8vZ2tlcm5lbC5ia2JpdHMubmV0L25ldC1kcml2ZXJzLTIu NQojIGludG8gaG9tZS5vc2RsLm9yZzovaG9tZS90b3J2YWxkcy92Mi41L2xpbnV4CiMgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAwMy8xMi8zMAlk YXZlbUBudXRzLm5pbmthLm5ldAkxLjE0NzQuMS41OAojIE1lcmdlIG51dHMubmlua2EubmV0 Oi9kaXNrMS9kYXZlbS9CSy9zcGFyY3dvcmstMi42CiMgaW50byBudXRzLm5pbmthLm5ldDov ZGlzazEvZGF2ZW0vQksvc3BhcmMtMi42CiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KIyAwMy8xMi8zMAlkYXZlbUBudXRzLm5pbmthLm5ldAkxLjE0 NzQuNDkuMQojIE1lcmdlIG51dHMubmlua2EubmV0Oi9kaXNrMS9kYXZlbS9CSy9uZXR3b3Jr LTIuNgojIGludG8gbnV0cy5uaW5rYS5uZXQ6L2Rpc2sxL2RhdmVtL0JLL25ldC0yLjYKIyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIDAzLzEyLzMw CWRhdmVtQG51dHMubmlua2EubmV0CTEuMTQ3NC40OS4yCiMgTWVyZ2UgbnV0cy5uaW5rYS5u ZXQ6L2Rpc2sxL2RhdmVtL0JLL25ldC0yLjYuMQojIGludG8gbnV0cy5uaW5rYS5uZXQ6L2Rp c2sxL2RhdmVtL0JLL25ldC0yLjYKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQojIDAzLzEyLzMwCWRhdmVtQG51dHMubmlua2EubmV0CTEuMTQ3NC4x LjU5CiMgW1NQQVJDNjRdOiBGaXggYnVpbGQgYWZ0ZXIgc2hvd19pbnRlcnJ1cHRzKCkgY2hh bmdlcy4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoj IDAzLzEyLzMwCWRhdmVtQG51dHMubmlua2EubmV0CTEuMTQ3NC4xLjYwCiMgW1NQQVJDMzJd OiBGaXggYnVpbGQgYWZ0ZXIgc2hvd19pbnRlcnJ1cHRzKCkgY2hhbmdlcy4KIyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIDAzLzEyLzMwCWJjb2xs aW5zQGRlYmlhbi5vcmcJMS4xNDc0LjEuNjEKIyBNZXJnZSBodHRwOi8vbGludXguYmtiaXRz Lm5ldC9saW51eC0yLjUKIyBpbnRvIGRlYmlhbi5vcmc6L3Vzci9zcmMva2VybmVsL2xpbnV4 LTIuNgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMg MDMvMTIvMzAJYmNvbGxpbnNAZGViaWFuLm9yZwkxLjE0NzQuMS42MgojIE1BSU5UQUlORVJT OgojICAgW0lFRUUxMzk0XTogVXBkYXRlIG1haW50YWluZXIgaW5mbwojIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgMDMvMTIvMzAJYmNvbGxpbnNA ZGViaWFuLm9yZwkxLjE0NzQuMS42MwojIHZpZGVvMTM5NC5jOgojICAgW0lFRUUxMzk0XQoj ICAgUGF0Y2ggZnJvbSBEYW1pZW4gRG91eGNoYW1wcyB0byBmaXggdmlkZW8xMzk0IHdoZW4g aW1hZ2Ugc2l6ZSBpcyBsZXNzIHRoYW4KIyAgIHBhZ2Ugc2l6ZS4KIyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIDAzLzEyLzMwCWFtaXIubm9hbUBp bnRlbC5jb20JMS4xNTkyCiMgW25ldGRydnIgYm9uZGluZ10gZml4IGJ1aWxkIGJyZWFrYWdl CiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwpkaWZm IC1OcnUgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jIGIvZHJpdmVycy9uZXQv Ym9uZGluZy9ib25kX21haW4uYwotLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFp bi5jCVdlZCBEZWMgMzEgMTA6MTM6MTEgMjAwMworKysgYi9kcml2ZXJzL25ldC9ib25kaW5n L2JvbmRfbWFpbi5jCVdlZCBEZWMgMzEgMTA6MTM6MTEgMjAwMwpAQCAtMTY1Nyw4ICsxNjU3 LDggQEAKIAkJYm9uZF9jaGFuZ2VfYWN0aXZlX3NsYXZlKGJvbmQsIE5VTEwpOwogCX0KIAot CWlmICgoYm9uZC0+cGFyYW1zLm1vZGUgPT0gQk9ORF9NT0RFX1RMQikgfHwKLQkgICAgKGJv bmQtPnBhcmFtcy5tb2RlID09IEJPTkRfTU9ERV9BTEIpKSB7CisJaWYgKChib25kX21vZGUg PT0gQk9ORF9NT0RFX1RMQikgfHwKKwkgICAgKGJvbmRfbW9kZSA9PSBCT05EX01PREVfQUxC KSkgewogCQkvKiBNdXN0IGJlIGNhbGxlZCBvbmx5IGFmdGVyIHRoZSBzbGF2ZSBoYXMgYmVl bgogCQkgKiBkZXRhY2hlZCBmcm9tIHRoZSBsaXN0IGFuZCB0aGUgY3Vycl9hY3RpdmVfc2xh dmUKIAkJICogaGFzIGJlZW4gY2xlYXJlZCAoaWYgb3VyX3NsYXZlID09IG9sZF9jdXJyZW50 KSwK --------------090402040308020707090800--