From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-20.4 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,NICE_REPLY_A, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2B191C47082 for ; Tue, 8 Jun 2021 11:59:31 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id ED77E6124C for ; Tue, 8 Jun 2021 11:59:30 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org ED77E6124C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:Cc:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=UbZeCJMQjzan99ck6UrdnIAj+Kd9ZPUeG0vCKl4TMSY=; b=ePon3xkkjiQVCyG0+a7ZOvh75d WPZibgATTCXRke7zDIVwwIo3PUUI5oeCXEqF4d1+9G15tRTG6yVzILn4p/qGAw1lQWSDNkuUr0s4w h5Zz+zuB3HTE5lnqU+kr1VLyZIX2fZLmhOu3GEhrv3KpxASsq6HWb81vTqgVJVE4RYbTaxdx0c6HX cssEgfHgv+1jJov5q/KGUXKX8fjsP3NPWgQTgCLG89W43LMmmnIKWl7oR3NH3M8XsHgEVvasmqMFO V/f1yJl/bu1jQnNGIMRSbcEjC0ihC8QEhkzu0KQlQrDsZ5Uory+sTSasx2YcsCtOOuq8CxW04QEju 98bEZMVQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1lqaLt-0089cL-NV; Tue, 08 Jun 2021 11:57:03 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1lqa2h-0084U0-Mj; Tue, 08 Jun 2021 11:37:17 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id C287F1396; Tue, 8 Jun 2021 04:37:07 -0700 (PDT) Received: from [10.57.6.115] (unknown [10.57.6.115]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 5620B3F694; Tue, 8 Jun 2021 04:37:06 -0700 (PDT) Subject: Re: [PATCH v2 6/8] arm64: Import latest memcpy()/memmove() implementation To: Marek Szyprowski , will@kernel.org, catalin.marinas@arm.com, Neil Armstrong Cc: linux-arm-kernel@lists.infradead.org, mark.rutland@arm.com, linux-amlogic@lists.infradead.org, Bartlomiej Zolnierkiewicz References: <3c953af43506581b2422f61952261e76949ba711.1622128527.git.robin.murphy@arm.com> From: Robin Murphy Message-ID: <00519b97-7e09-49ed-817e-de234b0c1cd4@arm.com> Date: Tue, 8 Jun 2021 12:37:01 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: Content-Language: en-GB X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210608_043711_922515_CFF0F60B X-CRM114-Status: GOOD ( 33.39 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgTWFyZWssCgpPbiAyMDIxLTA2LTA4IDEyOjE1LCBNYXJlayBTenlwcm93c2tpIHdyb3RlOgo+ IEhpIFJvYmluLAo+IAo+IE9uIDI3LjA1LjIwMjEgMTc6MzQsIFJvYmluIE11cnBoeSB3cm90ZToK Pj4gSW1wb3J0IHRoZSBsYXRlc3QgaW1wbGVtZW50YXRpb24gb2YgbWVtY3B5KCksIGJhc2VkIG9u IHRoZQo+PiB1cHN0cmVhbSBjb2RlIG9mIHN0cmluZy9hYXJjaDY0L21lbWNweS5TIGF0IGNvbW1p dCBhZmQ2MjQ0IGZyb20KPj4gaHR0cHM6Ly9naXRodWIuY29tL0FSTS1zb2Z0d2FyZS9vcHRpbWl6 ZWQtcm91dGluZXMsIGFuZCBzdWJzdW1pbmcKPj4gbWVtbW92ZSgpIGluIHRoZSBwcm9jZXNzLgo+ Pgo+PiBOb3RlIHRoYXQgZm9yIHNpbXBsaWNpdHkgQXJtIGhhdmUgY2hvc2VuIHRvIGNvbnRyaWJ1 dGUgdGhpcyBjb2RlCj4+IHRvIExpbnV4IHVuZGVyIEdQTHYyIHJhdGhlciB0aGFuIHRoZSBvcmln aW5hbCBNSVQgbGljZW5zZS4KPj4KPj4gTm90ZSBhbHNvIHRoYXQgdGhlIG5lZWRzIG9mIHRoZSB1 c2VyY29weSByb3V0aW5lcyB2cy4gcmVndWxhciBtZW1jcHkoKQo+PiBoYXZlIG5vdyBkaXZlcmdl ZCBzbyBmYXIgdGhhdCB3ZSBhYmFuZG9uIHRoZSBzaGFyZWQgdGVtcGxhdGUgaWRlYQo+PiBhbmQg dGhlIGRhbWFnZSB3aGljaCB0aGF0IGluY3VycmVkIHRvIHRoZSB0dW5pbmcgb2YgTERQL1NUUCBs b29wcy4KPj4gV2UnbGwgYmUgYmFjayB0byB0YWNrbGUgdGhvc2Ugcm91dGluZXMgc2VwYXJhdGVs eSBpbiBmdXR1cmUuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IFJvYmluIE11cnBoeSA8cm9iaW4ubXVy cGh5QGFybS5jb20+Cj4gCj4gVGhpcyBwYXRjaCBsYW5kZWQgcmVjZW50bHkgaW4gbGludXgtbmV4 dCBhcyBjb21taXQgMjg1MTMzMDQwZTZjICgiYXJtNjQ6Cj4gSW1wb3J0IGxhdGVzdCBtZW1jcHko KS9tZW1tb3ZlKCkgaW1wbGVtZW50YXRpb24iKS4gU2FkbHkgaXQgY2F1c2VzCj4gc2VyaW91cyBp c3N1ZXMgb24gS2hhZGFzIFZJTTMgYm9hcmQuIFJldmVydGluZyBpdCBvbiB0b3Agb2YgbGludXgK PiBuZXh0LTIwMjEwNjA3ICh0b2dldGhlciB3aXRoIDZiOGY2NDg5NTllNSBhbmQgcmVzb2x2aW5n IHRoZSBjb25mbGljdCBpbgo+IHRoZSBNYWtlZmlsZSkgZml4ZXMgdGhlIGlzc3VlLiBIZXJlIGlz IHRoZSBrZXJuZWwgbG9nOgo+IAo+IFVuYWJsZSB0byBoYW5kbGUga2VybmVsIHBhZ2luZyByZXF1 ZXN0IGF0IHZpcnR1YWwgYWRkcmVzcyBmZmZmODAwMDEzNmJkMjA0Cj4gTWVtIGFib3J0IGluZm86 Cj4gICDCoCBFU1IgPSAweDk2MDAwMDYxCj4gICDCoCBFQyA9IDB4MjU6IERBQlQgKGN1cnJlbnQg RUwpLCBJTCA9IDMyIGJpdHMKPiAgIMKgIFNFVCA9IDAsIEZuViA9IDAKPiAgIMKgIEVBID0gMCwg UzFQVFcgPSAwCj4gRGF0YSBhYm9ydCBpbmZvOgo+ICAgwqAgSVNWID0gMCwgSVNTID0gMHgwMDAw MDA2MQoKVGhhdCdzIGFuIGFsaWdubWVudCBmYXVsdCwgd2hpY2ggaW1wbGllcyB3ZSdyZSBhY2Nl c3Npbmcgc29tZXRoaW5nIHdoaWNoIAppc24ndCBub3JtYWwgbWVtb3J5LgoKPiAgIMKgIENNID0g MCwgV25SID0gMQo+IHN3YXBwZXIgcGd0YWJsZTogNGsgcGFnZXMsIDQ4LWJpdCBWQXMsIHBnZHA9 MDAwMDAwMDAwOWRhNjAwMAo+IFtmZmZmODAwMDEzNmJkMjA0XSBwZ2Q9MTAwMDAwMDBmNDgwNjAw MywgcDRkPTEwMDAwMDAwZjQ4MDYwMDMsCj4gcHVkPTEwMDAwMDAwZjQ4MDUwMDMsIHBtZD0xMDAw MDAwMDAwMzY1MDAzLCBwdGU9MDA2ODAwMDBmZmUwMzcxMwo+IEludGVybmFsIGVycm9yOiBPb3Bz OiA5NjAwMDA2MSBbIzFdIFBSRUVNUFQgU01QCj4gTW9kdWxlcyBsaW5rZWQgaW46IGJyY21mbWFj IGJyY211dGlsIGNmZzgwMjExIGR3X2hkbWlfaTJzX2F1ZGlvCj4gbWVzb25fZ3hsIGhjaV91YXJ0 IGJ0cWNhIGJ0YmNtIGJsdWV0b290aCBwYW5mcm9zdCBlY2RoX2dlbmVyaWMgZWNjCj4gc25kX3Nv Y19tZXNvbl9heGdfc291bmRfY2FyZCBjcmN0MTBkaWZfY2Ugc25kX3NvY19tZXNvbl9jYXJkX3V0 aWxzCj4gcmZraWxsIHJ0Y19oeW04NTYzIGdwdV9zY2hlZCBkd21hY19nZW5lcmljIHJjX2toYWRh cyBtZXNvbl9neGJiX3dkdAo+IG1lc29uX2lyIHB3bV9tZXNvbiBzbmRfc29jX21lc29uX2F4Z190 ZG1pbiBzbmRfc29jX21lc29uX2cxMmFfdG9oZG1pdHgKPiBydGNfbWVzb25fdnJ0YyBzbmRfc29j X21lc29uX2F4Z190ZG1vdXQgc25kX3NvY19tZXNvbl9heGdfZnJkZHIKPiByZXNldF9tZXNvbl9h dWRpb19hcmIgc25kX3NvY19tZXNvbl9jb2RlY19nbHVlIGF4Z19hdWRpbyBtZXNvbl9ybmcKPiBz Y2xrX2RpdiBkd21hY19tZXNvbjhiIHNuZF9zb2NfbWVzb25fYXhnX3RvZGRyIG1kaW9fbXV4X21l c29uX2cxMmEKPiBjbGtfcGhhc2Ugc3RtbWFjX3BsYXRmb3JtIHJuZ19jb3JlIHNuZF9zb2NfbWVz b25fYXhnX2ZpZm8gbWVzb25fZHdfaGRtaQo+IHN0bW1hYyBtZXNvbl9kcm0gbWVzb25fY2FudmFz IGR3X2hkbWkgcGNzX3hwY3MgZGlzcGxheV9jb25uZWN0b3IKPiBzbmRfc29jX21lc29uX2F4Z190 ZG1faW50ZXJmYWNlIG52bWVtX21lc29uX2VmdXNlIGFkY19rZXlzCj4gc25kX3NvY19tZXNvbl9h eGdfdGRtX2Zvcm1hdHRlcgo+IENQVTogNCBQSUQ6IDEzNSBDb21tOiBrd29ya2VyLzQ6MyBOb3Qg dGFpbnRlZCA1LjEzLjAtcmM1LW5leHQtMjAyMTA2MDcKPiAjMTA0NDEKPiBIYXJkd2FyZSBuYW1l OiBLaGFkYXMgVklNMyAoRFQpCj4gV29ya3F1ZXVlOiBldmVudHMgcmVxdWVzdF9maXJtd2FyZV93 b3JrX2Z1bmMKPiBwc3RhdGU6IDIwMDAwMDA1IChuekN2IGRhaWYgLVBBTiAtVUFPIC1UQ08gQlRZ UEU9LS0pCj4gcGMgOiBfX21lbWNweSsweDJjLzB4MjYwCj4gbHIgOiBzZ19jb3B5X2J1ZmZlcisw eDkwLzB4MTE4Cj4gLi4uCj4gQ2FsbCB0cmFjZToKPiAgIMKgX19tZW1jcHkrMHgyYy8weDI2MAo+ ICAgwqBzZ19jb3B5X3RvX2J1ZmZlcisweDE0LzB4MjAKPiAgIMKgbWVzb25fbW1jX3N0YXJ0X2Nt ZCsweGY0LzB4MmM4Cj4gICDCoG1lc29uX21tY19yZXF1ZXN0KzB4NGMvMHhiOAo+ICAgwqBfX21t Y19zdGFydF9yZXF1ZXN0KzB4YTQvMHgyYTgKPiAgIMKgbW1jX3N0YXJ0X3JlcXVlc3QrMHg4MC8w eGE4Cj4gICDCoG1tY193YWl0X2Zvcl9yZXErMHg2OC8weGQ4Cj4gICDCoG1tY19pb19yd19leHRl bmRlZCsweDFkNC8weDJlMAo+ICAgwqBzZGlvX2lvX3J3X2V4dF9oZWxwZXIrMHhiMC8weDFlOAo+ ICAgwqBzZGlvX21lbWNweV90b2lvKzB4MjAvMHgyOAo+ICAgwqBicmNtZl9zZGlvZF9za2J1ZmZf d3JpdGUuaXNyYS4xOCsweDJjLzB4NjggW2JyY21mbWFjXQo+ICAgwqBicmNtZl9zZGlvZF9yYW1y dysweGUwLzB4MjMwIFticmNtZm1hY10KPiAgIMKgYnJjbWZfc2Rpb19maXJtd2FyZV9jYWxsYmFj aysweGE4LzB4N2M4IFticmNtZm1hY10KPiAgIMKgYnJjbWZfZndfcmVxdWVzdF9kb25lKzB4N2Mv MHgxMDAgW2JyY21mbWFjXQo+ICAgwqByZXF1ZXN0X2Zpcm13YXJlX3dvcmtfZnVuYysweDRjLzB4 ZDgKPiAgIMKgcHJvY2Vzc19vbmVfd29yaysweDJhOC8weDcxOAo+ICAgwqB3b3JrZXJfdGhyZWFk KzB4NDgvMHg0NjAKPiAgIMKga3RocmVhZCsweDEyYy8weDE2MAo+ICAgwqByZXRfZnJvbV9mb3Jr KzB4MTAvMHgxOAo+IENvZGU6IDU0MDAwMGMzIGE5NDAxYzI2IGE5N2YzNDhjIGE5MDAxYzA2IChh OTNmMzRhYykKPiAtLS1bIGVuZCB0cmFjZSBiZTgzZmEyODNkYzgyNDE1IF0tLS0KPiAKPiBJIGhv cGUgdGhhdCB0aGUgYWJvdmUgbG9nIGhlbHBzIGZpeGluZyB0aGUgaXNzdWUuIElJUkMgdGhlIFNE SENJIGRyaXZlcgo+IG9uIFZJTTMgYm9hcmQgdXNlcyBpbnRlcm5hbCBTUkFNIGZvciB0cmFuc2Zl cnJpbmcgZGF0YSAoaW5zdGVhZCBvZiBETUEpLAo+IHNvIHRoZSBpc3N1ZSBpcyBzb21laG93IHJl bGF0ZWQgdG8gdGhhdC4KCkRyaXZlcnMgc2hvdWxkbid0IGJlIHVzaW5nIG1lbWNweSgpIG9uIGlv bWVtIG1hcHBpbmdzLiBFdmVuIGlmIHRoZXkgCmhhcHBlbiB0byBoYXZlIGdvdCBhd2F5IHdpdGgg aXQgc29tZXRpbWVzIDspCgpUYWtpbmcgYSBxdWljayBsb29rIGF0IHRoYXQgZHJpdmVyLAoKCWhv c3QtPmJvdW5jZV9idWYgPSBob3N0LT5yZWdzICsgU0RfRU1NQ19TUkFNX0RBVEFfQlVGX09GRjsK CmlzIGNvbXBsZXRlbHkgYm9ndXMsIGFzIFNwYXJzZSB3aWxsIHJlYWRpbHkgcG9pbnQgb3V0LgoK Um9iaW4uCgo+PiAtLS0KPj4gICAgYXJjaC9hcm02NC9saWIvTWFrZWZpbGUgIHwgICAyICstCj4+ ICAgIGFyY2gvYXJtNjQvbGliL21lbWNweS5TICB8IDI3MiArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0KPj4gICAgYXJjaC9hcm02NC9saWIvbWVtbW92ZS5TIHwgMTg5IC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+PiAgICAzIGZpbGVzIGNoYW5nZWQsIDIzMCBpbnNl cnRpb25zKCspLCAyMzMgZGVsZXRpb25zKC0pCj4+ICAgIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNo L2FybTY0L2xpYi9tZW1tb3ZlLlMKPj4KPj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvbGliL01h a2VmaWxlIGIvYXJjaC9hcm02NC9saWIvTWFrZWZpbGUKPj4gaW5kZXggZDMxZTExNjlkOWI4Li4w MWM1OTZhYTUzOWMgMTAwNjQ0Cj4+IC0tLSBhL2FyY2gvYXJtNjQvbGliL01ha2VmaWxlCj4+ICsr KyBiL2FyY2gvYXJtNjQvbGliL01ha2VmaWxlCj4+IEBAIC0xLDcgKzEsNyBAQAo+PiAgICAjIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4+ICAgIGxpYi15CQk6PSBjbGVhcl91c2Vy Lm8gZGVsYXkubyBjb3B5X2Zyb21fdXNlci5vCQlcCj4+ICAgIAkJICAgY29weV90b191c2VyLm8g Y29weV9pbl91c2VyLm8gY29weV9wYWdlLm8JCVwKPj4gLQkJICAgY2xlYXJfcGFnZS5vIGNzdW0u byBtZW1jaHIubyBtZW1jcHkubyBtZW1tb3ZlLm8JXAo+PiArCQkgICBjbGVhcl9wYWdlLm8gY3N1 bS5vIG1lbWNoci5vIG1lbWNweS5vCQlcCj4+ICAgIAkJICAgbWVtc2V0Lm8gbWVtY21wLm8gc3Ry Y21wLm8gc3RybmNtcC5vIHN0cmxlbi5vCVwKPj4gICAgCQkgICBzdHJubGVuLm8gc3RyY2hyLm8g c3RycmNoci5vIHRpc2hpZnQubwo+PiAgICAKPj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvbGli L21lbWNweS5TIGIvYXJjaC9hcm02NC9saWIvbWVtY3B5LlMKPj4gaW5kZXggZGM4ZDJhMjE2YTZl Li4zMTA3M2E4MzA0ZmIgMTAwNjQ0Cj4+IC0tLSBhL2FyY2gvYXJtNjQvbGliL21lbWNweS5TCj4+ ICsrKyBiL2FyY2gvYXJtNjQvbGliL21lbWNweS5TCj4+IEBAIC0xLDY2ICsxLDI1MiBAQAo+PiAg ICAvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovCj4+ICAgIC8qCj4+ IC0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQVJNIEx0ZC4KPj4gLSAqIENvcHlyaWdodCAoQykgMjAx MyBMaW5hcm8uCj4+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTItMjAyMCwgQXJtIExpbWl0ZWQuCj4+ ICAgICAqCj4+IC0gKiBUaGlzIGNvZGUgaXMgYmFzZWQgb24gZ2xpYmMgY29ydGV4IHN0cmluZ3Mg d29yayBvcmlnaW5hbGx5IGF1dGhvcmVkIGJ5IExpbmFybwo+PiAtICogYmUgZm91bmQgQAo+PiAt ICoKPj4gLSAqIGh0dHA6Ly9iYXphYXIubGF1bmNocGFkLm5ldC9+bGluYXJvLXRvb2xjaGFpbi1k ZXYvY29ydGV4LXN0cmluZ3MvdHJ1bmsvCj4+IC0gKiBmaWxlcy9oZWFkOi9zcmMvYWFyY2g2NC8K Pj4gKyAqIEFkYXB0ZWQgZnJvbSB0aGUgb3JpZ2luYWwgYXQ6Cj4+ICsgKiBodHRwczovL2dpdGh1 Yi5jb20vQVJNLXNvZnR3YXJlL29wdGltaXplZC1yb3V0aW5lcy9ibG9iL21hc3Rlci9zdHJpbmcv YWFyY2g2NC9tZW1jcHkuUwo+PiAgICAgKi8KPj4gICAgCj4+ICAgICNpbmNsdWRlIDxsaW51eC9s aW5rYWdlLmg+Cj4+ICAgICNpbmNsdWRlIDxhc20vYXNzZW1ibGVyLmg+Cj4+IC0jaW5jbHVkZSA8 YXNtL2NhY2hlLmg+Cj4+ICAgIAo+PiAtLyoKPj4gLSAqIENvcHkgYSBidWZmZXIgZnJvbSBzcmMg dG8gZGVzdCAoYWxpZ25tZW50IGhhbmRsZWQgYnkgdGhlIGhhcmR3YXJlKQo+PiArLyogQXNzdW1w dGlvbnM6Cj4+ICsgKgo+PiArICogQVJNdjgtYSwgQUFyY2g2NCwgdW5hbGlnbmVkIGFjY2Vzc2Vz Lgo+PiAgICAgKgo+PiAtICogUGFyYW1ldGVyczoKPj4gLSAqCXgwIC0gZGVzdAo+PiAtICoJeDEg LSBzcmMKPj4gLSAqCXgyIC0gbgo+PiAtICogUmV0dXJuczoKPj4gLSAqCXgwIC0gZGVzdAo+PiAg ICAgKi8KPj4gLQkubWFjcm8gbGRyYjEgcmVnLCBwdHIsIHZhbAo+PiAtCWxkcmIgIFxyZWcsIFtc cHRyXSwgXHZhbAo+PiAtCS5lbmRtCj4+ICAgIAo+PiAtCS5tYWNybyBzdHJiMSByZWcsIHB0ciwg dmFsCj4+IC0Jc3RyYiBccmVnLCBbXHB0cl0sIFx2YWwKPj4gLQkuZW5kbQo+PiArI2RlZmluZSBM KGxhYmVsKSAuTCAjIyBsYWJlbAo+PiAgICAKPj4gLQkubWFjcm8gbGRyaDEgcmVnLCBwdHIsIHZh bAo+PiAtCWxkcmggIFxyZWcsIFtccHRyXSwgXHZhbAo+PiAtCS5lbmRtCj4+ICsjZGVmaW5lIGRz dGluCXgwCj4+ICsjZGVmaW5lIHNyYwl4MQo+PiArI2RlZmluZSBjb3VudAl4Mgo+PiArI2RlZmlu ZSBkc3QJeDMKPj4gKyNkZWZpbmUgc3JjZW5kCXg0Cj4+ICsjZGVmaW5lIGRzdGVuZAl4NQo+PiAr I2RlZmluZSBBX2wJeDYKPj4gKyNkZWZpbmUgQV9sdwl3Ngo+PiArI2RlZmluZSBBX2gJeDcKPj4g KyNkZWZpbmUgQl9sCXg4Cj4+ICsjZGVmaW5lIEJfbHcJdzgKPj4gKyNkZWZpbmUgQl9oCXg5Cj4+ ICsjZGVmaW5lIENfbAl4MTAKPj4gKyNkZWZpbmUgQ19sdwl3MTAKPj4gKyNkZWZpbmUgQ19oCXgx MQo+PiArI2RlZmluZSBEX2wJeDEyCj4+ICsjZGVmaW5lIERfaAl4MTMKPj4gKyNkZWZpbmUgRV9s CXgxNAo+PiArI2RlZmluZSBFX2gJeDE1Cj4+ICsjZGVmaW5lIEZfbAl4MTYKPj4gKyNkZWZpbmUg Rl9oCXgxNwo+PiArI2RlZmluZSBHX2wJY291bnQKPj4gKyNkZWZpbmUgR19oCWRzdAo+PiArI2Rl ZmluZSBIX2wJc3JjCj4+ICsjZGVmaW5lIEhfaAlzcmNlbmQKPj4gKyNkZWZpbmUgdG1wMQl4MTQK Pj4gICAgCj4+IC0JLm1hY3JvIHN0cmgxIHJlZywgcHRyLCB2YWwKPj4gLQlzdHJoIFxyZWcsIFtc cHRyXSwgXHZhbAo+PiAtCS5lbmRtCj4+ICsvKiBUaGlzIGltcGxlbWVudGF0aW9uIGhhbmRsZXMg b3ZlcmxhcHMgYW5kIHN1cHBvcnRzIGJvdGggbWVtY3B5IGFuZCBtZW1tb3ZlCj4+ICsgICBmcm9t IGEgc2luZ2xlIGVudHJ5IHBvaW50LiAgSXQgdXNlcyB1bmFsaWduZWQgYWNjZXNzZXMgYW5kIGJy YW5jaGxlc3MKPj4gKyAgIHNlcXVlbmNlcyB0byBrZWVwIHRoZSBjb2RlIHNtYWxsLCBzaW1wbGUg YW5kIGltcHJvdmUgcGVyZm9ybWFuY2UuCj4+ICAgIAo+PiAtCS5tYWNybyBsZHIxIHJlZywgcHRy LCB2YWwKPj4gLQlsZHIgXHJlZywgW1xwdHJdLCBcdmFsCj4+IC0JLmVuZG0KPj4gKyAgIENvcGll cyBhcmUgc3BsaXQgaW50byAzIG1haW4gY2FzZXM6IHNtYWxsIGNvcGllcyBvZiB1cCB0byAzMiBi eXRlcywgbWVkaXVtCj4+ICsgICBjb3BpZXMgb2YgdXAgdG8gMTI4IGJ5dGVzLCBhbmQgbGFyZ2Ug Y29waWVzLiAgVGhlIG92ZXJoZWFkIG9mIHRoZSBvdmVybGFwCj4+ICsgICBjaGVjayBpcyBuZWds aWdpYmxlIHNpbmNlIGl0IGlzIG9ubHkgcmVxdWlyZWQgZm9yIGxhcmdlIGNvcGllcy4KPj4gICAg Cj4+IC0JLm1hY3JvIHN0cjEgcmVnLCBwdHIsIHZhbAo+PiAtCXN0ciBccmVnLCBbXHB0cl0sIFx2 YWwKPj4gLQkuZW5kbQo+PiAtCj4+IC0JLm1hY3JvIGxkcDEgcmVnMSwgcmVnMiwgcHRyLCB2YWwK Pj4gLQlsZHAgXHJlZzEsIFxyZWcyLCBbXHB0cl0sIFx2YWwKPj4gLQkuZW5kbQo+PiAtCj4+IC0J Lm1hY3JvIHN0cDEgcmVnMSwgcmVnMiwgcHRyLCB2YWwKPj4gLQlzdHAgXHJlZzEsIFxyZWcyLCBb XHB0cl0sIFx2YWwKPj4gLQkuZW5kbQo+PiArICAgTGFyZ2UgY29waWVzIHVzZSBhIHNvZnR3YXJl IHBpcGVsaW5lZCBsb29wIHByb2Nlc3NpbmcgNjQgYnl0ZXMgcGVyIGl0ZXJhdGlvbi4KPj4gKyAg IFRoZSBkZXN0aW5hdGlvbiBwb2ludGVyIGlzIDE2LWJ5dGUgYWxpZ25lZCB0byBtaW5pbWl6ZSB1 bmFsaWduZWQgYWNjZXNzZXMuCj4+ICsgICBUaGUgbG9vcCB0YWlsIGlzIGhhbmRsZWQgYnkgYWx3 YXlzIGNvcHlpbmcgNjQgYnl0ZXMgZnJvbSB0aGUgZW5kLgo+PiArKi8KPj4gICAgCj4+ICtTWU1f RlVOQ19TVEFSVF9BTElBUyhfX21lbW1vdmUpCj4+ICtTWU1fRlVOQ19TVEFSVF9XRUFLX0FMSUFT X1BJKG1lbW1vdmUpCj4+ICAgIFNZTV9GVU5DX1NUQVJUX0FMSUFTKF9fbWVtY3B5KQo+PiAgICBT WU1fRlVOQ19TVEFSVF9XRUFLX1BJKG1lbWNweSkKPj4gLSNpbmNsdWRlICJjb3B5X3RlbXBsYXRl LlMiCj4+ICsJYWRkCXNyY2VuZCwgc3JjLCBjb3VudAo+PiArCWFkZAlkc3RlbmQsIGRzdGluLCBj b3VudAo+PiArCWNtcAljb3VudCwgMTI4Cj4+ICsJYi5oaQlMKGNvcHlfbG9uZykKPj4gKwljbXAJ Y291bnQsIDMyCj4+ICsJYi5oaQlMKGNvcHkzMl8xMjgpCj4+ICsKPj4gKwkvKiBTbWFsbCBjb3Bp ZXM6IDAuLjMyIGJ5dGVzLiAgKi8KPj4gKwljbXAJY291bnQsIDE2Cj4+ICsJYi5sbwlMKGNvcHkx NikKPj4gKwlsZHAJQV9sLCBBX2gsIFtzcmNdCj4+ICsJbGRwCURfbCwgRF9oLCBbc3JjZW5kLCAt MTZdCj4+ICsJc3RwCUFfbCwgQV9oLCBbZHN0aW5dCj4+ICsJc3RwCURfbCwgRF9oLCBbZHN0ZW5k LCAtMTZdCj4+ICAgIAlyZXQKPj4gKwo+PiArCS8qIENvcHkgOC0xNSBieXRlcy4gICovCj4+ICtM KGNvcHkxNik6Cj4+ICsJdGJ6CWNvdW50LCAzLCBMKGNvcHk4KQo+PiArCWxkcglBX2wsIFtzcmNd Cj4+ICsJbGRyCUFfaCwgW3NyY2VuZCwgLThdCj4+ICsJc3RyCUFfbCwgW2RzdGluXQo+PiArCXN0 cglBX2gsIFtkc3RlbmQsIC04XQo+PiArCXJldAo+PiArCj4+ICsJLnAyYWxpZ24gMwo+PiArCS8q IENvcHkgNC03IGJ5dGVzLiAgKi8KPj4gK0woY29weTgpOgo+PiArCXRiegljb3VudCwgMiwgTChj b3B5NCkKPj4gKwlsZHIJQV9sdywgW3NyY10KPj4gKwlsZHIJQl9sdywgW3NyY2VuZCwgLTRdCj4+ ICsJc3RyCUFfbHcsIFtkc3Rpbl0KPj4gKwlzdHIJQl9sdywgW2RzdGVuZCwgLTRdCj4+ICsJcmV0 Cj4+ICsKPj4gKwkvKiBDb3B5IDAuLjMgYnl0ZXMgdXNpbmcgYSBicmFuY2hsZXNzIHNlcXVlbmNl LiAgKi8KPj4gK0woY29weTQpOgo+PiArCWNiegljb3VudCwgTChjb3B5MCkKPj4gKwlsc3IJdG1w MSwgY291bnQsIDEKPj4gKwlsZHJiCUFfbHcsIFtzcmNdCj4+ICsJbGRyYglDX2x3LCBbc3JjZW5k LCAtMV0KPj4gKwlsZHJiCUJfbHcsIFtzcmMsIHRtcDFdCj4+ICsJc3RyYglBX2x3LCBbZHN0aW5d Cj4+ICsJc3RyYglCX2x3LCBbZHN0aW4sIHRtcDFdCj4+ICsJc3RyYglDX2x3LCBbZHN0ZW5kLCAt MV0KPj4gK0woY29weTApOgo+PiArCXJldAo+PiArCj4+ICsJLnAyYWxpZ24gNAo+PiArCS8qIE1l ZGl1bSBjb3BpZXM6IDMzLi4xMjggYnl0ZXMuICAqLwo+PiArTChjb3B5MzJfMTI4KToKPj4gKwls ZHAJQV9sLCBBX2gsIFtzcmNdCj4+ICsJbGRwCUJfbCwgQl9oLCBbc3JjLCAxNl0KPj4gKwlsZHAJ Q19sLCBDX2gsIFtzcmNlbmQsIC0zMl0KPj4gKwlsZHAJRF9sLCBEX2gsIFtzcmNlbmQsIC0xNl0K Pj4gKwljbXAJY291bnQsIDY0Cj4+ICsJYi5oaQlMKGNvcHkxMjgpCj4+ICsJc3RwCUFfbCwgQV9o LCBbZHN0aW5dCj4+ICsJc3RwCUJfbCwgQl9oLCBbZHN0aW4sIDE2XQo+PiArCXN0cAlDX2wsIENf aCwgW2RzdGVuZCwgLTMyXQo+PiArCXN0cAlEX2wsIERfaCwgW2RzdGVuZCwgLTE2XQo+PiArCXJl dAo+PiArCj4+ICsJLnAyYWxpZ24gNAo+PiArCS8qIENvcHkgNjUuLjEyOCBieXRlcy4gICovCj4+ ICtMKGNvcHkxMjgpOgo+PiArCWxkcAlFX2wsIEVfaCwgW3NyYywgMzJdCj4+ICsJbGRwCUZfbCwg Rl9oLCBbc3JjLCA0OF0KPj4gKwljbXAJY291bnQsIDk2Cj4+ICsJYi5scwlMKGNvcHk5NikKPj4g KwlsZHAJR19sLCBHX2gsIFtzcmNlbmQsIC02NF0KPj4gKwlsZHAJSF9sLCBIX2gsIFtzcmNlbmQs IC00OF0KPj4gKwlzdHAJR19sLCBHX2gsIFtkc3RlbmQsIC02NF0KPj4gKwlzdHAJSF9sLCBIX2gs IFtkc3RlbmQsIC00OF0KPj4gK0woY29weTk2KToKPj4gKwlzdHAJQV9sLCBBX2gsIFtkc3Rpbl0K Pj4gKwlzdHAJQl9sLCBCX2gsIFtkc3RpbiwgMTZdCj4+ICsJc3RwCUVfbCwgRV9oLCBbZHN0aW4s IDMyXQo+PiArCXN0cAlGX2wsIEZfaCwgW2RzdGluLCA0OF0KPj4gKwlzdHAJQ19sLCBDX2gsIFtk c3RlbmQsIC0zMl0KPj4gKwlzdHAJRF9sLCBEX2gsIFtkc3RlbmQsIC0xNl0KPj4gKwlyZXQKPj4g Kwo+PiArCS5wMmFsaWduIDQKPj4gKwkvKiBDb3B5IG1vcmUgdGhhbiAxMjggYnl0ZXMuICAqLwo+ PiArTChjb3B5X2xvbmcpOgo+PiArCS8qIFVzZSBiYWNrd2FyZHMgY29weSBpZiB0aGVyZSBpcyBh biBvdmVybGFwLiAgKi8KPj4gKwlzdWIJdG1wMSwgZHN0aW4sIHNyYwo+PiArCWNiegl0bXAxLCBM KGNvcHkwKQo+PiArCWNtcAl0bXAxLCBjb3VudAo+PiArCWIubG8JTChjb3B5X2xvbmdfYmFja3dh cmRzKQo+PiArCj4+ICsJLyogQ29weSAxNiBieXRlcyBhbmQgdGhlbiBhbGlnbiBkc3QgdG8gMTYt Ynl0ZSBhbGlnbm1lbnQuICAqLwo+PiArCj4+ICsJbGRwCURfbCwgRF9oLCBbc3JjXQo+PiArCWFu ZAl0bXAxLCBkc3RpbiwgMTUKPj4gKwliaWMJZHN0LCBkc3RpbiwgMTUKPj4gKwlzdWIJc3JjLCBz cmMsIHRtcDEKPj4gKwlhZGQJY291bnQsIGNvdW50LCB0bXAxCS8qIENvdW50IGlzIG5vdyAxNiB0 b28gbGFyZ2UuICAqLwo+PiArCWxkcAlBX2wsIEFfaCwgW3NyYywgMTZdCj4+ICsJc3RwCURfbCwg RF9oLCBbZHN0aW5dCj4+ICsJbGRwCUJfbCwgQl9oLCBbc3JjLCAzMl0KPj4gKwlsZHAJQ19sLCBD X2gsIFtzcmMsIDQ4XQo+PiArCWxkcAlEX2wsIERfaCwgW3NyYywgNjRdIQo+PiArCXN1YnMJY291 bnQsIGNvdW50LCAxMjggKyAxNgkvKiBUZXN0IGFuZCByZWFkanVzdCBjb3VudC4gICovCj4+ICsJ Yi5scwlMKGNvcHk2NF9mcm9tX2VuZCkKPj4gKwo+PiArTChsb29wNjQpOgo+PiArCXN0cAlBX2ws IEFfaCwgW2RzdCwgMTZdCj4+ICsJbGRwCUFfbCwgQV9oLCBbc3JjLCAxNl0KPj4gKwlzdHAJQl9s LCBCX2gsIFtkc3QsIDMyXQo+PiArCWxkcAlCX2wsIEJfaCwgW3NyYywgMzJdCj4+ICsJc3RwCUNf bCwgQ19oLCBbZHN0LCA0OF0KPj4gKwlsZHAJQ19sLCBDX2gsIFtzcmMsIDQ4XQo+PiArCXN0cAlE X2wsIERfaCwgW2RzdCwgNjRdIQo+PiArCWxkcAlEX2wsIERfaCwgW3NyYywgNjRdIQo+PiArCXN1 YnMJY291bnQsIGNvdW50LCA2NAo+PiArCWIuaGkJTChsb29wNjQpCj4+ICsKPj4gKwkvKiBXcml0 ZSB0aGUgbGFzdCBpdGVyYXRpb24gYW5kIGNvcHkgNjQgYnl0ZXMgZnJvbSB0aGUgZW5kLiAgKi8K Pj4gK0woY29weTY0X2Zyb21fZW5kKToKPj4gKwlsZHAJRV9sLCBFX2gsIFtzcmNlbmQsIC02NF0K Pj4gKwlzdHAJQV9sLCBBX2gsIFtkc3QsIDE2XQo+PiArCWxkcAlBX2wsIEFfaCwgW3NyY2VuZCwg LTQ4XQo+PiArCXN0cAlCX2wsIEJfaCwgW2RzdCwgMzJdCj4+ICsJbGRwCUJfbCwgQl9oLCBbc3Jj ZW5kLCAtMzJdCj4+ICsJc3RwCUNfbCwgQ19oLCBbZHN0LCA0OF0KPj4gKwlsZHAJQ19sLCBDX2gs IFtzcmNlbmQsIC0xNl0KPj4gKwlzdHAJRF9sLCBEX2gsIFtkc3QsIDY0XQo+PiArCXN0cAlFX2ws IEVfaCwgW2RzdGVuZCwgLTY0XQo+PiArCXN0cAlBX2wsIEFfaCwgW2RzdGVuZCwgLTQ4XQo+PiAr CXN0cAlCX2wsIEJfaCwgW2RzdGVuZCwgLTMyXQo+PiArCXN0cAlDX2wsIENfaCwgW2RzdGVuZCwg LTE2XQo+PiArCXJldAo+PiArCj4+ICsJLnAyYWxpZ24gNAo+PiArCj4+ICsJLyogTGFyZ2UgYmFj a3dhcmRzIGNvcHkgZm9yIG92ZXJsYXBwaW5nIGNvcGllcy4KPj4gKwkgICBDb3B5IDE2IGJ5dGVz IGFuZCB0aGVuIGFsaWduIGRzdCB0byAxNi1ieXRlIGFsaWdubWVudC4gICovCj4+ICtMKGNvcHlf bG9uZ19iYWNrd2FyZHMpOgo+PiArCWxkcAlEX2wsIERfaCwgW3NyY2VuZCwgLTE2XQo+PiArCWFu ZAl0bXAxLCBkc3RlbmQsIDE1Cj4+ICsJc3ViCXNyY2VuZCwgc3JjZW5kLCB0bXAxCj4+ICsJc3Vi CWNvdW50LCBjb3VudCwgdG1wMQo+PiArCWxkcAlBX2wsIEFfaCwgW3NyY2VuZCwgLTE2XQo+PiAr CXN0cAlEX2wsIERfaCwgW2RzdGVuZCwgLTE2XQo+PiArCWxkcAlCX2wsIEJfaCwgW3NyY2VuZCwg LTMyXQo+PiArCWxkcAlDX2wsIENfaCwgW3NyY2VuZCwgLTQ4XQo+PiArCWxkcAlEX2wsIERfaCwg W3NyY2VuZCwgLTY0XSEKPj4gKwlzdWIJZHN0ZW5kLCBkc3RlbmQsIHRtcDEKPj4gKwlzdWJzCWNv dW50LCBjb3VudCwgMTI4Cj4+ICsJYi5scwlMKGNvcHk2NF9mcm9tX3N0YXJ0KQo+PiArCj4+ICtM KGxvb3A2NF9iYWNrd2FyZHMpOgo+PiArCXN0cAlBX2wsIEFfaCwgW2RzdGVuZCwgLTE2XQo+PiAr CWxkcAlBX2wsIEFfaCwgW3NyY2VuZCwgLTE2XQo+PiArCXN0cAlCX2wsIEJfaCwgW2RzdGVuZCwg LTMyXQo+PiArCWxkcAlCX2wsIEJfaCwgW3NyY2VuZCwgLTMyXQo+PiArCXN0cAlDX2wsIENfaCwg W2RzdGVuZCwgLTQ4XQo+PiArCWxkcAlDX2wsIENfaCwgW3NyY2VuZCwgLTQ4XQo+PiArCXN0cAlE X2wsIERfaCwgW2RzdGVuZCwgLTY0XSEKPj4gKwlsZHAJRF9sLCBEX2gsIFtzcmNlbmQsIC02NF0h Cj4+ICsJc3Vicwljb3VudCwgY291bnQsIDY0Cj4+ICsJYi5oaQlMKGxvb3A2NF9iYWNrd2FyZHMp Cj4+ICsKPj4gKwkvKiBXcml0ZSB0aGUgbGFzdCBpdGVyYXRpb24gYW5kIGNvcHkgNjQgYnl0ZXMg ZnJvbSB0aGUgc3RhcnQuICAqLwo+PiArTChjb3B5NjRfZnJvbV9zdGFydCk6Cj4+ICsJbGRwCUdf bCwgR19oLCBbc3JjLCA0OF0KPj4gKwlzdHAJQV9sLCBBX2gsIFtkc3RlbmQsIC0xNl0KPj4gKwls ZHAJQV9sLCBBX2gsIFtzcmMsIDMyXQo+PiArCXN0cAlCX2wsIEJfaCwgW2RzdGVuZCwgLTMyXQo+ PiArCWxkcAlCX2wsIEJfaCwgW3NyYywgMTZdCj4+ICsJc3RwCUNfbCwgQ19oLCBbZHN0ZW5kLCAt NDhdCj4+ICsJbGRwCUNfbCwgQ19oLCBbc3JjXQo+PiArCXN0cAlEX2wsIERfaCwgW2RzdGVuZCwg LTY0XQo+PiArCXN0cAlHX2wsIEdfaCwgW2RzdGluLCA0OF0KPj4gKwlzdHAJQV9sLCBBX2gsIFtk c3RpbiwgMzJdCj4+ICsJc3RwCUJfbCwgQl9oLCBbZHN0aW4sIDE2XQo+PiArCXN0cAlDX2wsIENf aCwgW2RzdGluXQo+PiArCXJldAo+PiArCj4+ICAgIFNZTV9GVU5DX0VORF9QSShtZW1jcHkpCj4+ ICAgIEVYUE9SVF9TWU1CT0wobWVtY3B5KQo+PiAgICBTWU1fRlVOQ19FTkRfQUxJQVMoX19tZW1j cHkpCj4+ICAgIEVYUE9SVF9TWU1CT0woX19tZW1jcHkpCj4+ICtTWU1fRlVOQ19FTkRfQUxJQVNf UEkobWVtbW92ZSkKPj4gK0VYUE9SVF9TWU1CT0wobWVtbW92ZSkKPj4gK1NZTV9GVU5DX0VORF9B TElBUyhfX21lbW1vdmUpCj4+ICtFWFBPUlRfU1lNQk9MKF9fbWVtbW92ZSkKPj4gXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCj4+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2xpYi9tZW1tb3Zl LlMgYi9hcmNoL2FybTY0L2xpYi9tZW1tb3ZlLlMKPj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 Cj4+IGluZGV4IDEwMzVkY2U0YmRhZi4uMDAwMDAwMDAwMDAwCj4+IC0tLSBhL2FyY2gvYXJtNjQv bGliL21lbW1vdmUuUwo+PiArKysgL2Rldi9udWxsCj4+IEBAIC0xLDE4OSArMCwwIEBACj4+IC0v KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovCj4+IC0vKgo+PiAtICog Q29weXJpZ2h0IChDKSAyMDEzIEFSTSBMdGQuCj4+IC0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgTGlu YXJvLgo+PiAtICoKPj4gLSAqIFRoaXMgY29kZSBpcyBiYXNlZCBvbiBnbGliYyBjb3J0ZXggc3Ry aW5ncyB3b3JrIG9yaWdpbmFsbHkgYXV0aG9yZWQgYnkgTGluYXJvCj4+IC0gKiBiZSBmb3VuZCBA Cj4+IC0gKgo+PiAtICogaHR0cDovL2JhemFhci5sYXVuY2hwYWQubmV0L35saW5hcm8tdG9vbGNo YWluLWRldi9jb3J0ZXgtc3RyaW5ncy90cnVuay8KPj4gLSAqIGZpbGVzL2hlYWQ6L3NyYy9hYXJj aDY0Lwo+PiAtICovCj4+IC0KPj4gLSNpbmNsdWRlIDxsaW51eC9saW5rYWdlLmg+Cj4+IC0jaW5j bHVkZSA8YXNtL2Fzc2VtYmxlci5oPgo+PiAtI2luY2x1ZGUgPGFzbS9jYWNoZS5oPgo+PiAtCj4+ IC0vKgo+PiAtICogTW92ZSBhIGJ1ZmZlciBmcm9tIHNyYyB0byB0ZXN0IChhbGlnbm1lbnQgaGFu ZGxlZCBieSB0aGUgaGFyZHdhcmUpLgo+PiAtICogSWYgZGVzdCA8PSBzcmMsIGNhbGwgbWVtY3B5 LCBvdGhlcndpc2UgY29weSBpbiByZXZlcnNlIG9yZGVyLgo+PiAtICoKPj4gLSAqIFBhcmFtZXRl cnM6Cj4+IC0gKgl4MCAtIGRlc3QKPj4gLSAqCXgxIC0gc3JjCj4+IC0gKgl4MiAtIG4KPj4gLSAq IFJldHVybnM6Cj4+IC0gKgl4MCAtIGRlc3QKPj4gLSAqLwo+PiAtZHN0aW4JLnJlcQl4MAo+PiAt c3JjCS5yZXEJeDEKPj4gLWNvdW50CS5yZXEJeDIKPj4gLXRtcDEJLnJlcQl4Mwo+PiAtdG1wMXcJ LnJlcQl3Mwo+PiAtdG1wMgkucmVxCXg0Cj4+IC10bXAydwkucmVxCXc0Cj4+IC10bXAzCS5yZXEJ eDUKPj4gLXRtcDN3CS5yZXEJdzUKPj4gLWRzdAkucmVxCXg2Cj4+IC0KPj4gLUFfbAkucmVxCXg3 Cj4+IC1BX2gJLnJlcQl4OAo+PiAtQl9sCS5yZXEJeDkKPj4gLUJfaAkucmVxCXgxMAo+PiAtQ19s CS5yZXEJeDExCj4+IC1DX2gJLnJlcQl4MTIKPj4gLURfbAkucmVxCXgxMwo+PiAtRF9oCS5yZXEJ eDE0Cj4+IC0KPj4gLVNZTV9GVU5DX1NUQVJUX0FMSUFTKF9fbWVtbW92ZSkKPj4gLVNZTV9GVU5D X1NUQVJUX1dFQUtfUEkobWVtbW92ZSkKPj4gLQljbXAJZHN0aW4sIHNyYwo+PiAtCWIubG8JX19t ZW1jcHkKPj4gLQlhZGQJdG1wMSwgc3JjLCBjb3VudAo+PiAtCWNtcAlkc3RpbiwgdG1wMQo+PiAt CWIuaHMJX19tZW1jcHkJCS8qIE5vIG92ZXJsYXAuICAqLwo+PiAtCj4+IC0JYWRkCWRzdCwgZHN0 aW4sIGNvdW50Cj4+IC0JYWRkCXNyYywgc3JjLCBjb3VudAo+PiAtCWNtcAljb3VudCwgIzE2Cj4+ IC0JYi5sbwkuTHRhaWwxNSAgLypwcm9iYWJseSBub24tYWxpZ25tZW50IGFjY2Vzc2VzLiovCj4+ IC0KPj4gLQlhbmRzCXRtcDIsIHNyYywgIzE1ICAgICAvKiBCeXRlcyB0byByZWFjaCBhbGlnbm1l bnQuICAqLwo+PiAtCWIuZXEJLkxTcmNBbGlnbmVkCj4+IC0Jc3ViCWNvdW50LCBjb3VudCwgdG1w Mgo+PiAtCS8qCj4+IC0JKiBwcm9jZXNzIHRoZSBhbGlnbmVkIG9mZnNldCBsZW5ndGggdG8gbWFr ZSB0aGUgc3JjIGFsaWduZWQgZmlyc3RseS4KPj4gLQkqIHRob3NlIGV4dHJhIGluc3RydWN0aW9u cycgY29zdCBpcyBhY2NlcHRhYmxlLiBJdCBhbHNvIG1ha2UgdGhlCj4+IC0JKiBjb21pbmcgYWNj ZXNzZXMgYXJlIGJhc2VkIG9uIGFsaWduZWQgYWRkcmVzcy4KPj4gLQkqLwo+PiAtCXRiegl0bXAy LCAjMCwgMWYKPj4gLQlsZHJiCXRtcDF3LCBbc3JjLCAjLTFdIQo+PiAtCXN0cmIJdG1wMXcsIFtk c3QsICMtMV0hCj4+IC0xOgo+PiAtCXRiegl0bXAyLCAjMSwgMmYKPj4gLQlsZHJoCXRtcDF3LCBb c3JjLCAjLTJdIQo+PiAtCXN0cmgJdG1wMXcsIFtkc3QsICMtMl0hCj4+IC0yOgo+PiAtCXRiegl0 bXAyLCAjMiwgM2YKPj4gLQlsZHIJdG1wMXcsIFtzcmMsICMtNF0hCj4+IC0Jc3RyCXRtcDF3LCBb ZHN0LCAjLTRdIQo+PiAtMzoKPj4gLQl0YnoJdG1wMiwgIzMsIC5MU3JjQWxpZ25lZAo+PiAtCWxk cgl0bXAxLCBbc3JjLCAjLThdIQo+PiAtCXN0cgl0bXAxLCBbZHN0LCAjLThdIQo+PiAtCj4+IC0u TFNyY0FsaWduZWQ6Cj4+IC0JY21wCWNvdW50LCAjNjQKPj4gLQliLmdlCS5MY3B5X292ZXI2NAo+ PiAtCj4+IC0JLyoKPj4gLQkqIERlYWwgd2l0aCBzbWFsbCBjb3BpZXMgcXVpY2tseSBieSBkcm9w cGluZyBzdHJhaWdodCBpbnRvIHRoZQo+PiAtCSogZXhpdCBibG9jay4KPj4gLQkqLwo+PiAtLkx0 YWlsNjM6Cj4+IC0JLyoKPj4gLQkqIENvcHkgdXAgdG8gNDggYnl0ZXMgb2YgZGF0YS4gQXQgdGhp cyBwb2ludCB3ZSBvbmx5IG5lZWQgdGhlCj4+IC0JKiBib3R0b20gNiBiaXRzIG9mIGNvdW50IHRv IGJlIGFjY3VyYXRlLgo+PiAtCSovCj4+IC0JYW5kcwl0bXAxLCBjb3VudCwgIzB4MzAKPj4gLQli LmVxCS5MdGFpbDE1Cj4+IC0JY21wCXRtcDF3LCAjMHgyMAo+PiAtCWIuZXEJMWYKPj4gLQliLmx0 CTJmCj4+IC0JbGRwCUFfbCwgQV9oLCBbc3JjLCAjLTE2XSEKPj4gLQlzdHAJQV9sLCBBX2gsIFtk c3QsICMtMTZdIQo+PiAtMToKPj4gLQlsZHAJQV9sLCBBX2gsIFtzcmMsICMtMTZdIQo+PiAtCXN0 cAlBX2wsIEFfaCwgW2RzdCwgIy0xNl0hCj4+IC0yOgo+PiAtCWxkcAlBX2wsIEFfaCwgW3NyYywg Iy0xNl0hCj4+IC0Jc3RwCUFfbCwgQV9oLCBbZHN0LCAjLTE2XSEKPj4gLQo+PiAtLkx0YWlsMTU6 Cj4+IC0JdGJ6CWNvdW50LCAjMywgMWYKPj4gLQlsZHIJdG1wMSwgW3NyYywgIy04XSEKPj4gLQlz dHIJdG1wMSwgW2RzdCwgIy04XSEKPj4gLTE6Cj4+IC0JdGJ6CWNvdW50LCAjMiwgMmYKPj4gLQls ZHIJdG1wMXcsIFtzcmMsICMtNF0hCj4+IC0Jc3RyCXRtcDF3LCBbZHN0LCAjLTRdIQo+PiAtMjoK Pj4gLQl0YnoJY291bnQsICMxLCAzZgo+PiAtCWxkcmgJdG1wMXcsIFtzcmMsICMtMl0hCj4+IC0J c3RyaAl0bXAxdywgW2RzdCwgIy0yXSEKPj4gLTM6Cj4+IC0JdGJ6CWNvdW50LCAjMCwgLkxleGl0 ZnVuYwo+PiAtCWxkcmIJdG1wMXcsIFtzcmMsICMtMV0KPj4gLQlzdHJiCXRtcDF3LCBbZHN0LCAj LTFdCj4+IC0KPj4gLS5MZXhpdGZ1bmM6Cj4+IC0JcmV0Cj4+IC0KPj4gLS5MY3B5X292ZXI2NDoK Pj4gLQlzdWJzCWNvdW50LCBjb3VudCwgIzEyOAo+PiAtCWIuZ2UJLkxjcHlfYm9keV9sYXJnZQo+ PiAtCS8qCj4+IC0JKiBMZXNzIHRoYW4gMTI4IGJ5dGVzIHRvIGNvcHksIHNvIGhhbmRsZSA2NCBi eXRlcyBoZXJlIGFuZCB0aGVuIGp1bXAKPj4gLQkqIHRvIHRoZSB0YWlsLgo+PiAtCSovCj4+IC0J bGRwCUFfbCwgQV9oLCBbc3JjLCAjLTE2XQo+PiAtCXN0cAlBX2wsIEFfaCwgW2RzdCwgIy0xNl0K Pj4gLQlsZHAJQl9sLCBCX2gsIFtzcmMsICMtMzJdCj4+IC0JbGRwCUNfbCwgQ19oLCBbc3JjLCAj LTQ4XQo+PiAtCXN0cAlCX2wsIEJfaCwgW2RzdCwgIy0zMl0KPj4gLQlzdHAJQ19sLCBDX2gsIFtk c3QsICMtNDhdCj4+IC0JbGRwCURfbCwgRF9oLCBbc3JjLCAjLTY0XSEKPj4gLQlzdHAJRF9sLCBE X2gsIFtkc3QsICMtNjRdIQo+PiAtCj4+IC0JdHN0CWNvdW50LCAjMHgzZgo+PiAtCWIubmUJLkx0 YWlsNjMKPj4gLQlyZXQKPj4gLQo+PiAtCS8qCj4+IC0JKiBDcml0aWNhbCBsb29wLiBTdGFydCBh dCBhIG5ldyBjYWNoZSBsaW5lIGJvdW5kYXJ5LiBBc3N1bWluZwo+PiAtCSogNjQgYnl0ZXMgcGVy IGxpbmUgdGhpcyBlbnN1cmVzIHRoZSBlbnRpcmUgbG9vcCBpcyBpbiBvbmUgbGluZS4KPj4gLQkq Lwo+PiAtCS5wMmFsaWduCUwxX0NBQ0hFX1NISUZUCj4+IC0uTGNweV9ib2R5X2xhcmdlOgo+PiAt CS8qIHByZS1sb2FkIDY0IGJ5dGVzIGRhdGEuICovCj4+IC0JbGRwCUFfbCwgQV9oLCBbc3JjLCAj LTE2XQo+PiAtCWxkcAlCX2wsIEJfaCwgW3NyYywgIy0zMl0KPj4gLQlsZHAJQ19sLCBDX2gsIFtz cmMsICMtNDhdCj4+IC0JbGRwCURfbCwgRF9oLCBbc3JjLCAjLTY0XSEKPj4gLTE6Cj4+IC0JLyoK Pj4gLQkqIGludGVybGFjZSB0aGUgbG9hZCBvZiBuZXh0IDY0IGJ5dGVzIGRhdGEgYmxvY2sgd2l0 aCBzdG9yZSBvZiB0aGUgbGFzdAo+PiAtCSogbG9hZGVkIDY0IGJ5dGVzIGRhdGEuCj4+IC0JKi8K Pj4gLQlzdHAJQV9sLCBBX2gsIFtkc3QsICMtMTZdCj4+IC0JbGRwCUFfbCwgQV9oLCBbc3JjLCAj LTE2XQo+PiAtCXN0cAlCX2wsIEJfaCwgW2RzdCwgIy0zMl0KPj4gLQlsZHAJQl9sLCBCX2gsIFtz cmMsICMtMzJdCj4+IC0Jc3RwCUNfbCwgQ19oLCBbZHN0LCAjLTQ4XQo+PiAtCWxkcAlDX2wsIENf aCwgW3NyYywgIy00OF0KPj4gLQlzdHAJRF9sLCBEX2gsIFtkc3QsICMtNjRdIQo+PiAtCWxkcAlE X2wsIERfaCwgW3NyYywgIy02NF0hCj4+IC0Jc3Vicwljb3VudCwgY291bnQsICM2NAo+PiAtCWIu Z2UJMWIKPj4gLQlzdHAJQV9sLCBBX2gsIFtkc3QsICMtMTZdCj4+IC0Jc3RwCUJfbCwgQl9oLCBb ZHN0LCAjLTMyXQo+PiAtCXN0cAlDX2wsIENfaCwgW2RzdCwgIy00OF0KPj4gLQlzdHAJRF9sLCBE X2gsIFtkc3QsICMtNjRdIQo+PiAtCj4+IC0JdHN0CWNvdW50LCAjMHgzZgo+PiAtCWIubmUJLkx0 YWlsNjMKPj4gLQlyZXQKPj4gLVNZTV9GVU5DX0VORF9QSShtZW1tb3ZlKQo+PiAtRVhQT1JUX1NZ TUJPTChtZW1tb3ZlKQo+PiAtU1lNX0ZVTkNfRU5EX0FMSUFTKF9fbWVtbW92ZSkKPj4gLUVYUE9S VF9TWU1CT0woX19tZW1tb3ZlKQo+IAo+IEJlc3QgcmVnYXJkcwo+IAoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5n IGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5p bmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=