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=-8.2 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham 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 61A87C433E1 for ; Thu, 9 Jul 2020 10:58:27 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 20951205CB for ; Thu, 9 Jul 2020 10:58:27 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="MxSUDXKe" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 20951205CB Authentication-Results: mail.kernel.org; dmarc=none (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=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=Dasb50X9uPzy5to1vR2QGAdLobVJQeWkB2nMIiScrzc=; b=MxSUDXKeHHZ0TA4H/0qKqjBBW uidAF81/9ItxBAKxqOh9raFOsCL8GcA8g7lfGgxIMOaHcNxTO7MI8b+Ow9XhgIfXQ+oTGHSN6tod5 4sqconmnwkib17XLW6t1zliSFYBf0UZgk0QTuRXgXT8SbXXktTzqV0Pinpce0wou8iz0U6UZoPN9Z eI1DKDqjuTXkK3OEYSGacJ0XQHfx4HpAjM7HBR93k3/OmugX81W61sPAh+RFWjDvzt/YP7NxKEzMA 6C9L+JWiPdGRRjwjusMZenPDx9w+hGq4yyb5vPzIj6fVjToyrjQyUThJ6oELI48EyqTFTxlf94bvM bvVxXe0/A==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jtUEf-0003JN-G2; Thu, 09 Jul 2020 10:57:01 +0000 Received: from foss.arm.com ([217.140.110.172]) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jtUEa-0003HL-Ld for linux-arm-kernel@lists.infradead.org; Thu, 09 Jul 2020 10:56:58 +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 B1A571FB; Thu, 9 Jul 2020 03:56:45 -0700 (PDT) Received: from [10.37.8.195] (unknown [10.37.8.195]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id A6E483F887; Thu, 9 Jul 2020 03:56:43 -0700 (PDT) Subject: Re: [PATCH] arm64/alternatives: use subsections for replacement sequences To: Ard Biesheuvel , linux-arm-kernel@lists.infradead.org References: <20200630081921.13443-1-ardb@kernel.org> From: Alexandru Elisei Message-ID: <45e53113-75bb-9e7b-cd81-72d782bbb57d@arm.com> Date: Thu, 9 Jul 2020 11:57:29 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <20200630081921.13443-1-ardb@kernel.org> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200709_065656_820816_5D9ACC3C X-CRM114-Status: GOOD ( 42.37 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mark.rutland@arm.com, anders.roxell@linaro.org, arnd@arndb.de, Suzuki K Poulose , catalin.marinas@arm.com, James Morse , Andre Przywara , will@kernel.org, Dave P Martin Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGksCgpJIHRoaW5rIHRoaXMgcGF0Y2ggYnJlYWtzIHBzZXVkby1OTUlzLiBJIGJpc2VjdGVkIHRo ZSBmb2xsb3dpbmcgc3BsYXQgdG8gdGhpcyBjb21taXQ6CgpbwqDCoMKgIDAuMDAyMTAzXSBVbmFi bGUgdG8gaGFuZGxlIGtlcm5lbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYXQgdmlydHVhbCBh ZGRyZXNzCjAwMDAwMDAwMDAwMDAxMzAKW8KgwqDCoCAwLjAwMjEyNF0gTWVtIGFib3J0IGluZm86 ClvCoMKgwqAgMC4wMDIxMjRdwqDCoCBFU1IgPSAweDk2MDAwMDA0ClvCoMKgwqAgMC4wMDIxMzVd wqDCoCBFQyA9IDB4MjU6IERBQlQgKGN1cnJlbnQgRUwpLCBJTCA9IDMyIGJpdHMKW8KgwqDCoCAw LjAwMjEzNV3CoMKgIFNFVCA9IDAsIEZuViA9IDAKW8KgwqDCoCAwLjAwMjE0Nl3CoMKgIEVBID0g MCwgUzFQVFcgPSAwClvCoMKgwqAgMC4wMDIxNDZdIERhdGEgYWJvcnQgaW5mbzoKW8KgwqDCoCAw LjAwMjE1NF3CoMKgIElTViA9IDAsIElTUyA9IDB4MDAwMDAwMDQKW8KgwqDCoCAwLjAwMjE1Nl3C oMKgIENNID0gMCwgV25SID0gMApbwqDCoMKgIDAuMDAyMTY0XSBbMDAwMDAwMDAwMDAwMDEzMF0g dXNlciBhZGRyZXNzIGJ1dCBhY3RpdmVfbW0gaXMgc3dhcHBlcgpbwqDCoMKgIDAuMDAyMTY3XSBJ bnRlcm5hbCBlcnJvcjogT29wczogOTYwMDAwMDQgWyMxXSBQUkVFTVBUIFNNUApbwqDCoMKgIDAu MDAyMTc0XSBNb2R1bGVzIGxpbmtlZCBpbjoKW8KgwqDCoCAwLjAwMjE4NF0gQ1BVOiAwIFBJRDog MCBDb21tOiBzd2FwcGVyLzAgTm90IHRhaW50ZWQKNS44LjAtcmMxLTAwMDI0LWdmN2I5M2Q0Mjk0 NWMtZGlydHkgIzEzNQpbwqDCoMKgIDAuMDAyMTg4XSBIYXJkd2FyZSBuYW1lOiBGVlAgQmFzZSAo RFQpClvCoMKgwqAgMC4wMDIxOTRdIHBzdGF0ZTogMDAwMDAzYzkgKG56Y3YgREFJRiAtUEFOIC1V QU8gQlRZUEU9LS0pClvCoMKgwqAgMC4wMDIyMDRdIHBjIDogd29ya19wZW5kaW5nKzB4MzJjLzB4 MzQ4ClvCoMKgwqAgMC4wMDIyMTBdIGxyIDogZWwxX2lycSsweGNjLzB4MTgwClvCoMKgwqAgMC4w MDIyMTRdIHNwIDogZmZmZmQ3YzVkY2VkM2Q5MApbwqDCoMKgIDAuMDAyMjIwXSBwbXJfc2F2ZTog MDAwMDAwZjAKW8KgwqDCoCAwLjAwMjIyNF0geDI5OiBmZmZmZDdjNWRjZWQzZWMwIHgyODogZmZm ZmQ3YzVkY2VlMmUwMApbwqDCoMKgIDAuMDAyMjMxXSB4Mjc6IGZmZmZkN2M1ZGNlZTJlMDAgeDI2 OiBmZmZmMjg0MmEyY2U5MDAwClvCoMKgwqAgMC4wMDIyNDJdIHgyNTogZmZmZjgwMDAxMDAwMDAw MCB4MjQ6IDAwMDAwMDAwMDAwMDAwMDEKW8KgwqDCoCAwLjAwMjI0NF0geDIzOiAzYzJkZDIyNWVl NzdiNjVmIHgyMjogMjU3NmQ0YzMxZTY5ODcxMgpbwqDCoMKgIDAuMDAyMjU0XSB4MjE6IDAwMDAw MDAwMDAwMDA0MDIgeDIwOiAwMDAwMDAwMDAwMDAwMGYwClvCoMKgwqAgMC4wMDIyNjRdIHgxOTog ZmZmZmQ3YzVkY2VkM2Q5MCB4MTg6IDAwMDAwMDAwMDAwMDAwMjAKW8KgwqDCoCAwLjAwMjI3NF0g eDE3OiAwMDAwMDAwMDY2ZjJkODYwIHgxNjogMDAwMDAwMDAwMDAwMDAwMQpbwqDCoMKgIDAuMDAy Mjc0XSB4MTU6IDAwMDAwMDAwMDAwMDAwMDAgeDE0OiAwMDAwMDAwMDAwMDAwMDAwClvCoMKgwqAg MC4wMDIyODRdIHgxMzogMDAwMDAwMDBmYTgzYjJkYSB4MTI6IDAwMDAwMDAwMDAwMDAwMDAKW8Kg wqDCoCAwLjAwMjI5NV0geDExOiAwMDAwMDAwMDAwMDAwMDAwIHgxMDogM2MyZGQyMjVlZTc3YjY1 ZgpbwqDCoMKgIDAuMDAyMzA2XSB4OSA6IDI1NzZkNGMzMWU2OTg3MTIgeDggOiBmZmZmZDdjNWRj ZWUzYmQ4ClvCoMKgwqAgMC4wMDIzMTRdIHg3IDogMDAwMDAwMDAwMDAwYmE1ZSB4NiA6IDAwMDAw MDAwZmZmZWRiMDgKW8KgwqDCoCAwLjAwMjMxNl0geDUgOiAwMDAwMDAwMGZmZmZmZmZmIHg0IDog ZmZmZjI4NDJhMmNlOTAwMApbwqDCoMKgIDAuMDAyMzI3XSB4MyA6IDAwMDAwMDAwMDAwMDAwZjAg eDIgOiAwMDAwMDAwMDAwMDAwMGYwClvCoMKgwqAgMC4wMDIzMzhdIHgxIDogZmZmZjI4NDJhMmNl OTAwMCB4MCA6IDAwMDAwMDAwMDAwMDAwZjAKW8KgwqDCoCAwLjAwMjM0NF0gQ2FsbCB0cmFjZToK W8KgwqDCoCAwLjAwMjM0OF3CoCB3b3JrX3BlbmRpbmcrMHgzMmMvMHgzNDgKW8KgwqDCoCAwLjAw MjM1NF3CoCBkb19pZGxlKzB4MjMwLzB4MzBjClvCoMKgwqAgMC4wMDIzNjRdwqAgY3B1X3N0YXJ0 dXBfZW50cnkrMHgyNC8weDgwClvCoMKgwqAgMC4wMDIzNzBdwqAgcmVzdF9pbml0KzB4ZDgvMHhl OApbwqDCoMKgIDAuMDAyMzgwXcKgIGFyY2hfY2FsbF9yZXN0X2luaXQrMHgxMC8weDFjClvCoMKg wqAgMC4wMDIzODRdwqAgc3RhcnRfa2VybmVsKzB4NGI4LzB4NGYwClvCoMKgwqAgMC4wMDIzOTRd IENvZGU6IGQ1MDMzZjlmIGQ1MThkMDNmIGQ1MDMyMDFmIGQ1MDMyMDFmIChhOTQ0MDgwMSkKW8Kg wqDCoCAwLjAwMjQwNF0gLS0tWyBlbmQgdHJhY2UgMDhiMzRlNDljODhlMDI1MiBdLS0tClvCoMKg wqAgMC4wMDI0MTNdIEtlcm5lbCBwYW5pYyAtIG5vdCBzeW5jaW5nOiBBdHRlbXB0ZWQgdG8ga2ls bCB0aGUgaWRsZSB0YXNrIQpbwqDCoMKgIDAuMDAyNDE0XSBTTVA6IHN0b3BwaW5nIHNlY29uZGFy eSBDUFVzClvCoMKgwqAgMC4wMDI0MzRdIC0tLVsgZW5kIEtlcm5lbCBwYW5pYyAtIG5vdCBzeW5j aW5nOiBBdHRlbXB0ZWQgdG8ga2lsbCB0aGUgaWRsZQp0YXNrISBdLS0tCgpUaGUgY29uZmlnIEkg dXNlZCBpcyBkZWZjb25maWcgKyBwc2V1ZG8tTk1JcyBlbmFibGVkIChDT05GSUdfQVJNNjRfUFNF VURPX05NST15Cm9yLCBpbiBtZW51Y29uZmlnLCBLZXJuZWwgZmVhdHVyZXMgLT4gU3VwcG9ydCBm b3IgTk1JLWxpa2UgaW50ZXJydXB0cykuIFRoZQpjb21waWxlciB0aGF0IEkgdXNlZDoKCiQgYWFy Y2g2NC1saW51eC1nbnUtZ2NjIC0tdmVyc2lvbgphYXJjaDY0LWxpbnV4LWdudS1nY2MgKEdDQykg MTAuMS4wCkNvcHlyaWdodCAoQykgMjAyMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K VGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRp b25zLsKgIFRoZXJlIGlzIE5PCndhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgoKVGhlIGtlcm5lbCB3YXMgcnVu IG9uIHRoZSBtb2RlbC4gQ29tbWFuZCBsaW5lIHRvIGxhdW5jaCB0aGUgbW9kZWw6CgokTU9ERUwg LS1hcHBsaWNhdGlvbiBjbHVzdGVyMC4qPSRQQVlMT0FEIC0tY29uZmlnLWZpbGUgJENPTkZJRyBc CsKgwqDCoCAtQyBicC5wbDAxMV91YXJ0MC5vdXRfZmlsZT0kTE9HRklMRQoKQ29uZmlnIGZpbGU6 CgpicC5kcmFtX3NpemU9OApicC5wbDAxMV91YXJ0MC51bmJ1ZmZlcmVkX291dHB1dD0xCmJwLnBs MDExX3VhcnQwLnVudGltZWRfZmlmb3M9dHJ1ZQpicC5yZWZjb3VudGVyLm5vbl9hcmNoX3N0YXJ0 X2F0X2RlZmF1bHQ9MQpicC5zZWN1cmVfbWVtb3J5PTAKYnAuc21zY185MWMxMTEuZW5hYmxlZD0w CmJwLnZlX3N5c3JlZ3MubW1iU2l0ZURlZmF1bHQ9MApjYWNoZV9zdGF0ZV9tb2RlbGxlZD1mYWxz ZQpjbHVzdGVyMC5OVU1fQ09SRVM9NApjbHVzdGVyMC5hbXVfaGFzX2V4dGVybmFsX2ludGVyZmFj ZT0xCmNsdXN0ZXIwLmNwdTAuQ09ORklHNjQ9MQpjbHVzdGVyMC5jcHUwLmNyeXB0b19zaGEzPTEK Y2x1c3RlcjAuY3B1MC5jcnlwdG9fc2hhNTEyPTEKY2x1c3RlcjAuY3B1MC5jcnlwdG9fc20zPTEK Y2x1c3RlcjAuY3B1MC5jcnlwdG9fc200PTEKY2x1c3RlcjAuY3B1MC5lbmFibGVfY3JjMzI9MQpj bHVzdGVyMC5oYXNfMTZrX2dyYW51bGU9MQpjbHVzdGVyMC5oYXNfNGtfZ3JhbnVsZT0xCmNsdXN0 ZXIwLmhhc182NGtfZ3JhbnVsZT0xCmNsdXN0ZXIwLmhhc19hbXU9MQpjbHVzdGVyMC5oYXNfYXJt X3Y4LTE9MQpjbHVzdGVyMC5oYXNfYXJtX3Y4LTI9MQpjbHVzdGVyMC5oYXNfYXJtX3Y4LTM9MQpj bHVzdGVyMC5oYXNfYXJtX3Y4LTQ9MQpjbHVzdGVyMC5oYXNfYXJtX3Y4LTU9MQpjbHVzdGVyMC5o YXNfYnJhbmNoX3RhcmdldF9leGNlcHRpb249MQpjbHVzdGVyMC5oYXNfY2NpZHg9MQpjbHVzdGVy MC5oYXNfZGF0YV9hbGlnbm1lbnRfZmxhZz0xCmNsdXN0ZXIwLmhhc19mcDE2PTEKY2x1c3RlcjAu aGFzX2xhcmdlX3N5c3RlbV9leHQ9MQpjbHVzdGVyMC5oYXNfbGFyZ2VfdmE9MQpjbHVzdGVyMC5o YXNfbGRtX3N0bV9vcmRlcmluZ19jb250cm9sPTEKY2x1c3RlcjAuaGFzX2xyY3BjPTEKY2x1c3Rl cjAuaGFzX21wYW09MQpjbHVzdGVyMC5oYXNfcmFzPTEKY2x1c3RlcjAuaGFzX3Jhc19kb3VibGVf ZmF1bHQ9MQpjbHVzdGVyMC5oYXNfcm5kcj0xCmNsdXN0ZXIwLmhhc19lbDM9McKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgIyAoYm9vbMKgICwgaW5pdC10aW1lKQpkZWZhdWx0ID0gJzEnwqDCoMKgwqDCoCA6IEltcGxl bWVudHMgRUwzCmdpY19kaXN0cmlidXRvci5HSVRTX0JBU0VSMC10eXBlPTEKZ2ljX2Rpc3RyaWJ1 dG9yLklUUy1jb3VudD0xCmdpY19kaXN0cmlidXRvci5JVFMtaGFyZHdhcmUtY29sbGVjdGlvbi1j b3VudD0xCmdpY19kaXN0cmlidXRvci5kaXJlY3QtbHBpLXN1cHBvcnQ9MQpwY3RsLnN0YXJ0dXA9 MC4qLiouKgoKSSB3cmFwcGVkIHRoZSBrZXJuZWwgd2l0aCBib290d3JhcHBlciwgd2l0aCB0aGlz IHBhdGNoIG9uIHRvcCB0byBjbGVhciBTQ1JfRUwzLkZJUQphbmQgbWFrZSBwc2V1ZG8tTk1JcyB3 b3JrOgoKZGlmZiAtLWdpdCBhL2FyY2gvYWFyY2g2NC9ib290LlMgYi9hcmNoL2FhcmNoNjQvYm9v dC5TCmluZGV4IDc0NzA1Y2RlZDMzOC4uMjFlNzJmMzM2MDU3IDEwMDY0NAotLS0gYS9hcmNoL2Fh cmNoNjQvYm9vdC5TCisrKyBiL2FyY2gvYWFyY2g2NC9ib290LlMKQEAgLTUxLDYgKzUxLDcgQEAg X3N0YXJ0OgrCoCNpZm5kZWYgS0VSTkVMXzMyCsKgwqDCoMKgwqDCoMKgIG9ycsKgwqDCoMKgIHgw LCB4MCwgIygxIDw8IDEwKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8vIDY0LWJpdCBFTDIK wqAjZW5kaWYKK8KgwqDCoMKgwqDCoCBvcnLCoMKgwqDCoCB4MCwgeDAsICMoMSA8PCAyKcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLy8gUm91dGUgRklRcyB0byBFTDMKwqDCoMKgwqDCoMKg wqAgbXNywqDCoMKgwqAgc2NyX2VsMywgeDAKwqAKwqDCoMKgwqDCoMKgwqAgbXNywqDCoMKgwqAg Y3B0cl9lbDMsIHh6csKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvLyBEaXNh YmxlIGNvcHJvLiB0cmFwcyB0byBFTDMKZGlmZiAtLWdpdCBhL2FyY2gvYWFyY2g2NC9pbmNsdWRl L2FzbS9naWMtdjMuaCBiL2FyY2gvYWFyY2g2NC9pbmNsdWRlL2FzbS9naWMtdjMuaAppbmRleCBl NzQzYzAyZmZlNWUuLmVhNzg2Mjc0NTg3MiAxMDA2NDQKLS0tIGEvYXJjaC9hYXJjaDY0L2luY2x1 ZGUvYXNtL2dpYy12My5oCisrKyBiL2FyY2gvYWFyY2g2NC9pbmNsdWRlL2FzbS9naWMtdjMuaApA QCAtMzIsNCArMzIsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2ljX3dyaXRlX2ljY19jdGxyKHVp bnQzMl90IHZhbCkKwqDCoMKgwqDCoMKgwqAgYXNtIHZvbGF0aWxlICgibXNyICIgSUNDX0NUTFJf RUwzICIsICUwIiA6IDogInIiICh2YWwpKTsKwqB9CsKgCitzdGF0aWMgaW5saW5lIHZvaWQgZ2lj X3dyaXRlX2ljY19wbXIodWludDY0X3QgdmFsKQoreworwqDCoMKgwqDCoMKgIGFzbSB2b2xhdGls ZSAoIm1zciAiIElDQ19QTVJfRUwxICIsICUwIiA6IDogInIiICh2YWwpKTsKK30KKwrCoCNlbmRp ZgpkaWZmIC0tZ2l0IGEvZ2ljLXYzLmMgYi9naWMtdjMuYwppbmRleCBjMmY2NmJhZTRjMzUuLjVh ZWI1MWExYTdiZSAxMDA2NDQKLS0tIGEvZ2ljLXYzLmMKKysrIGIvZ2ljLXYzLmMKQEAgLTEyMiw2 ICsxMjIsOSBAQCB2b2lkIGdpY19zZWN1cmVfaW5pdCh2b2lkKQrCoMKgwqDCoMKgwqDCoCBnaWNf d3JpdGVfaWNjX3NyZShzcmUpOwrCoMKgwqDCoMKgwqDCoCBpc2IoKTsKwqAKK8KgwqDCoMKgwqDC oCBnaWNfd3JpdGVfaWNjX3BtcigweGZmKTsKK8KgwqDCoMKgwqDCoCBpc2IoKTsKKwrCoMKgwqDC oMKgwqDCoCBnaWNfd3JpdGVfaWNjX2N0bHIoMCk7CsKgwqDCoMKgwqDCoMKgIGlzYigpOwrCoH0K CkJvb3R3cmFwcGVyIGNvbW1hbmQgbGluZToKCi4vY29uZmlndXJlIFwKwqDCoMKgIC0taG9zdD1h YXJjaDY0LWxpbnV4LWdudSBcCsKgwqDCoCAtLXdpdGgta2VybmVsLWRpcj0ke0hPU1RfS0VSTkVM X0RJUn0gXArCoMKgwqAgLS13aXRoLWR0Yj0ke0hPU1RfS0VSTkVMX0RJUn0vYXJjaC9hcm02NC9i b290L2R0cy9hcm0vYmFzZV9naWN2My5kdGIgXArCoMKgwqAgLS13aXRoLWNtZGxpbmU9ImVhcmx5 Y29uPXBsMDExLDB4MWMwOTAwMDAgY29uc29sZT10dHlBTUEwCmlycWNoaXAuZ2ljdjNfcHNldWRv X25taT0xIiBcCsKgwqDCoCAtLWVuYWJsZS1naWN2MyBcCsKgwqDCoCAtLWVuYWJsZS1wc2NpIFwK wqDCoMKgIC0td2l0aC1pbml0cmQ9JHtIT1NUX0JVSUxEUk9PVF9ESVJ9L291dHB1dC9pbWFnZXMv cm9vdGZzLmNwaW8uZ3oKCkkgd2FzIGFsc28gYWJsZSB0byByZXByb2R1Y2UgaXQgb24gbXkgcm9j a3BybzY0LCBidXQgSSB3YXMgdXNpbmcgdGhlIHBzZXVkby1OTUkKc2VyaWVzIHRoYXQgYWxsb3dz IHRoZW0gdG8gYmUgdXNlZCBvbiB0aGUgYm9hcmQgWzFdIGFuZCBhIG1vZGlmaWVkIGR0YiB0byBy ZW1vdmUKdGhlIGJpZyBjb3Jlcy4gSSBjYW4gcG9zdCB0aGUgbG9nICsgd2hhdGV2ZXIgZWxzZSBp cyBuZWVkIHRvIHJlcHJvZHVjZSBpdCwgaWYKYW55b25lIHRoaW5rcyB0aGF0IHdvdWxkIGhlbHAu CgpbMV0gaHR0cHM6Ly9saXN0cy5pbmZyYWRlYWQub3JnL3BpcGVybWFpbC9saW51eC1hcm0ta2Vy bmVsLzIwMjAtSnVuZS81ODAxNDMuaHRtbAoKVGhhbmtzLAoKQWxleAoKT24gNi8zMC8yMCA5OjE5 IEFNLCBBcmQgQmllc2hldXZlbCB3cm90ZToKPiBXaGVuIGJ1aWxkaW5nIHZlcnkgbGFyZ2Uga2Vy bmVscywgdGhlIGxvZ2ljIHRoYXQgZW1pdHMgcmVwbGFjZW1lbnQKPiBzZXF1ZW5jZXMgZm9yIGFs dGVybmF0aXZlcyBmYWlscyB3aGVuIHJlbGF0aXZlIGJyYW5jaGVzIGFyZSBwcmVzZW50Cj4gaW4g dGhlIGNvZGUgdGhhdCBpcyBlbWl0dGVkIGludG8gdGhlIC5hbHRpbnN0cl9yZXBsYWNlbWVudCBz ZWN0aW9uCj4gYW5kIHBhdGNoZWQgaW4gYXQgdGhlIG9yaWdpbmFsIHNpdGUgYW5kIGZpeGVkIHVw LiBUaGUgcmVhc29uIGlzIHRoYXQKPiB0aGUgbGlua2VyIHdpbGwgaW5zZXJ0IHZlbmVlcnMgaWYg cmVsYXRpdmUgYnJhbmNoZXMgZ28gb3V0IG9mIHJhbmdlLAo+IGFuZCBkdWUgdG8gdGhlIHJlbGF0 aXZlIGRpc3RhbmNlIG9mIHRoZSAuYWx0aW5zdHJfcmVwbGFjZW1lbnQgZnJvbQo+IHRoZSAudGV4 dCBzZWN0aW9uIHdoZXJlIGl0cyBicmFuY2ggdGFyZ2V0cyB1c3VhbGx5IGxpdmUsIHZlbmVlcnMK PiBtYXkgYmUgZW1pdHRlZCBhdCB0aGUgZW5kIG9mIHRoZSAuYWx0aW5zdHJfcmVwbGFjZW1lbnQg c2VjdGlvbiwgd2l0aAo+IHRoZSByZWxhdGl2ZSBicmFuY2hlcyBpbiB0aGUgc2VxdWVuY2UgcG9p bnRlZCBhdCB0aGUgdmVuZWVycyBpbnN0ZWFkCj4gb2YgdGhlIGFjdHVhbCB0YXJnZXQuCj4KPiBU aGUgYWx0ZXJuYXRpdmVzIHBhdGNoaW5nIGxvZ2ljIHdpbGwgYXR0ZW1wdCB0byBmaXggdXAgdGhl IGJyYW5jaCB0bwo+IHBvaW50IHRvIGl0cyBvcmlnaW5hbCB0YXJnZXQsIHdoaWNoIHdpbGwgYmUg dGhlIHZlbmVlciBpbiB0aGlzIGNhc2UsCj4gYnV0IGdpdmVuIHRoYXQgdGhlIHBhdGNoIHNpdGUg aXMgbGlrZWx5IHRvIGJlIGZhciBhd2F5IGFzIHdlbGwsIGl0Cj4gd2lsbCBiZSBvdXQgb2YgcmFu Z2UgYW5kIHNvIHBhdGNoaW5nIHdpbGwgZmFpbC4gVGhlcmUgYXJlIG90aGVyIGNhc2VzCj4gd2hl cmUgdGhlc2UgdmVuZWVycyBhcmUgcHJvYmxlbWF0aWMsIGUuZy4sIHdoZW4gdGhlIHRhcmdldCBv ZiB0aGUKPiBicmFuY2ggaXMgaW4gLnRleHQgd2hpbGUgdGhlIHBhdGNoIHNpdGUgaXMgaW4gLmlu aXQudGV4dCwgaW4gd2hpY2gKPiBjYXNlIHB1dHRpbmcgdGhlIHJlcGxhY2VtZW50IHNlcXVlbmNl IGluc2lkZSAudGV4dCBtYXkgbm90IGhlbHAgZWl0aGVyLgo+Cj4gU28gbGV0J3MgdXNlIHN1YnNl Y3Rpb25zIHRvIGVtaXQgdGhlIHJlcGxhY2VtZW50IGNvZGUgYXMgY2xvc2VseSBhcwo+IHBvc3Np YmxlIHRvIHRoZSBwYXRjaCBzaXRlLCB0byBlbnN1cmUgdGhhdCB2ZW5lZXJzIGFyZSBvbmx5IGxp a2VseSB0bwo+IGJlIGVtaXR0ZWQgaWYgdGhleSBhcmUgcmVxdWlyZWQgYXQgdGhlIHBhdGNoIHNp dGUgYXMgd2VsbCwgaW4gd2hpY2gKPiBjYXNlIHRoZXkgd2lsbCBiZSBpbiByYW5nZSBmb3IgdGhl IHJlcGxhY2VtZW50IHNlcXVlbmNlIGJvdGggYmVmb3JlCj4gYW5kIGFmdGVyIGl0IGlzIHRyYW5z cG9ydGVkIHRvIHRoZSBwYXRjaCBzaXRlLgo+Cj4gVGhpcyB3aWxsIHByZXZlbnQgYWx0ZXJuYXRp dmUgc2VxdWVuY2VzIGluIG5vbi1pbml0IGNvZGUgZnJvbSBiZWluZwo+IHJlbGVhc2VkIGZyb20g bWVtb3J5IGFmdGVyIGJvb3QsIGJ1dCB0aGlzIGlzIHRvbGVyYWJsZSBnaXZlbiB0aGF0IHRoZQo+ IGVudGlyZSBzZWN0aW9uIGlzIG9ubHkgNTEyIEtCIG9uIGFuIGFsbHllc2NvbmZpZyBidWlsZCAo d2hpY2ggd2VpZ2hzIGluCj4gYXQgNTAwKyBNQiBmb3IgdGhlIGVudGlyZSBJbWFnZSkuIEFsc28s IG5vdGUgdGhhdCBtb2R1bGVzIHRvZGF5IGNhcnJ5Cj4gdGhlIHJlcGxhY2VtZW50IHNlcXVlbmNl cyBpbiBub24taW5pdCBzZWN0aW9ucyBhcyB3ZWxsLCBhbmQgYW55IG9mCj4gdGhvc2UgdGhhdCB0 YXJnZXQgaW5pdCBjb2RlIHdpbGwgYmUgZW1pdHRlZCBpbnRvIGluaXQgc2VjdGlvbnMgYWZ0ZXIK PiB0aGlzIGNoYW5nZS4KPgo+IFRoaXMgZml4ZXMgYW4gZWFybHkgY3Jhc2ggd2hlbiBib290aW5n IGFuIGFsbHllc2NvbmZpZyBrZXJuZWwgb24gYQo+IHN5c3RlbSB3aGVyZSBhbnkgb2YgdGhlIGFs dGVybmF0aXZlcyBzZXF1ZW5jZXMgY29udGFpbmluZyByZWxhdGl2ZQo+IGJyYW5jaGVzIGFyZSBh Y3RpdmF0ZWQgYXQgYm9vdCAoZS5nLiwgQVJNNjRfSEFTX1BBTiBvbiBUWDIpCj4KPiBDYzogU3V6 dWtpIEsgUG91bG9zZSA8c3V6dWtpLnBvdWxvc2VAYXJtLmNvbT4KPiBDYzogSmFtZXMgTW9yc2Ug PGphbWVzLm1vcnNlQGFybS5jb20+Cj4gQ2M6IEFuZHJlIFByenl3YXJhIDxhbmRyZS5wcnp5d2Fy YUBhcm0uY29tPgo+IENjOiBEYXZlIFAgTWFydGluIDxkYXZlLm1hcnRpbkBhcm0uY29tPgo+IFNp Z25lZC1vZmYtYnk6IEFyZCBCaWVzaGV1dmVsIDxhcmRiQGtlcm5lbC5vcmc+Cj4gLS0tCj4gIGFy Y2gvYXJtNjQvaW5jbHVkZS9hc20vYWx0ZXJuYXRpdmUuaCB8IDE2ICsrKysrKysrLS0tLS0tLS0K PiAgYXJjaC9hcm02NC9rZXJuZWwvdm1saW51eC5sZHMuUyAgICAgIHwgIDMgLS0tCj4gIDIgZmls ZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1n aXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2FsdGVybmF0aXZlLmggYi9hcmNoL2FybTY0L2lu Y2x1ZGUvYXNtL2FsdGVybmF0aXZlLmgKPiBpbmRleCA1ZTVkYzA1ZDYzYTAuLjEyZjBlYjU2YTFj YyAxMDA2NDQKPiAtLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2FsdGVybmF0aXZlLmgKPiAr KysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2FsdGVybmF0aXZlLmgKPiBAQCAtNzMsMTEgKzcz LDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhcHBseV9hbHRlcm5hdGl2ZXNfbW9kdWxlKHZvaWQg KnN0YXJ0LCBzaXplX3QgbGVuZ3RoKSB7IH0KPiAgCSIucHVzaHNlY3Rpb24gLmFsdGluc3RydWN0 aW9ucyxcImFcIlxuIgkJCQlcCj4gIAlBTFRJTlNUUl9FTlRSWShmZWF0dXJlKQkJCQkJCVwKPiAg CSIucG9wc2VjdGlvblxuIgkJCQkJCQlcCj4gLQkiLnB1c2hzZWN0aW9uIC5hbHRpbnN0cl9yZXBs YWNlbWVudCwgXCJhXCJcbiIJCQlcCj4gKwkiLnN1YnNlY3Rpb24gMVxuIgkJCQkJCVwKPiAgCSI2 NjM6XG5cdCIJCQkJCQkJXAo+ICAJbmV3aW5zdHIgIlxuIgkJCQkJCQlcCj4gIAkiNjY0OlxuXHQi CQkJCQkJCVwKPiAtCSIucG9wc2VjdGlvblxuXHQiCQkJCQkJXAo+ICsJIi5wcmV2aW91c1xuXHQi CQkJCQkJCVwKPiAgCSIub3JnCS4gLSAoNjY0Yi02NjNiKSArICg2NjJiLTY2MWIpXG5cdCIJCQlc Cj4gIAkiLm9yZwkuIC0gKDY2MmItNjYxYikgKyAoNjY0Yi02NjNiKVxuIgkJCVwKPiAgCSIuZW5k aWZcbiIKPiBAQCAtMTE3LDkgKzExNyw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhcHBseV9hbHRl cm5hdGl2ZXNfbW9kdWxlKHZvaWQgKnN0YXJ0LCBzaXplX3QgbGVuZ3RoKSB7IH0KPiAgNjYyOgku cHVzaHNlY3Rpb24gLmFsdGluc3RydWN0aW9ucywgImEiCj4gIAlhbHRpbnN0cnVjdGlvbl9lbnRy eSA2NjFiLCA2NjNmLCBcY2FwLCA2NjJiLTY2MWIsIDY2NGYtNjYzZgo+ICAJLnBvcHNlY3Rpb24K PiAtCS5wdXNoc2VjdGlvbiAuYWx0aW5zdHJfcmVwbGFjZW1lbnQsICJheCIKPiArCS5zdWJzZWN0 aW9uIDEKPiAgNjYzOglcaW5zbjIKPiAtNjY0OgkucG9wc2VjdGlvbgo+ICs2NjQ6CS5wcmV2aW91 cwo+ICAJLm9yZwkuIC0gKDY2NGItNjYzYikgKyAoNjYyYi02NjFiKQo+ICAJLm9yZwkuIC0gKDY2 MmItNjYxYikgKyAoNjY0Yi02NjNiKQo+ICAJLmVuZGlmCj4gQEAgLTE2MCw3ICsxNjAsNyBAQCBz dGF0aWMgaW5saW5lIHZvaWQgYXBwbHlfYWx0ZXJuYXRpdmVzX21vZHVsZSh2b2lkICpzdGFydCwg c2l6ZV90IGxlbmd0aCkgeyB9Cj4gIAkucHVzaHNlY3Rpb24gLmFsdGluc3RydWN0aW9ucywgImEi Cj4gIAlhbHRpbnN0cnVjdGlvbl9lbnRyeSA2NjNmLCA2NjFmLCBcY2FwLCA2NjRmLTY2M2YsIDY2 MmYtNjYxZgo+ICAJLnBvcHNlY3Rpb24KPiAtCS5wdXNoc2VjdGlvbiAuYWx0aW5zdHJfcmVwbGFj ZW1lbnQsICJheCIKPiArCS5zdWJzZWN0aW9uIDEKPiAgCS5hbGlnbiAyCS8qIFNvIEdBUyBrbm93 cyBsYWJlbCA2NjEgaXMgc3VpdGFibHkgYWxpZ25lZCAqLwo+ICA2NjE6Cj4gIC5lbmRtCj4gQEAg LTE3OSw5ICsxNzksOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXBwbHlfYWx0ZXJuYXRpdmVzX21v ZHVsZSh2b2lkICpzdGFydCwgc2l6ZV90IGxlbmd0aCkgeyB9Cj4gIC5tYWNybyBhbHRlcm5hdGl2 ZV9lbHNlCj4gIDY2MjoKPiAgCS5pZiAuTGFzbV9hbHRfbW9kZT09MAo+IC0JLnB1c2hzZWN0aW9u IC5hbHRpbnN0cl9yZXBsYWNlbWVudCwgImF4Igo+ICsJLnN1YnNlY3Rpb24gMQo+ICAJLmVsc2UK PiAtCS5wb3BzZWN0aW9uCj4gKwkucHJldmlvdXMKPiAgCS5lbmRpZgo+ICA2NjM6Cj4gIC5lbmRt Cj4gQEAgLTE5Miw3ICsxOTIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXBwbHlfYWx0ZXJuYXRp dmVzX21vZHVsZSh2b2lkICpzdGFydCwgc2l6ZV90IGxlbmd0aCkgeyB9Cj4gIC5tYWNybyBhbHRl cm5hdGl2ZV9lbmRpZgo+ICA2NjQ6Cj4gIAkuaWYgLkxhc21fYWx0X21vZGU9PTAKPiAtCS5wb3Bz ZWN0aW9uCj4gKwkucHJldmlvdXMKPiAgCS5lbmRpZgo+ICAJLm9yZwkuIC0gKDY2NGItNjYzYikg KyAoNjYyYi02NjFiKQo+ICAJLm9yZwkuIC0gKDY2MmItNjYxYikgKyAoNjY0Yi02NjNiKQo+IGRp ZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC92bWxpbnV4Lmxkcy5TIGIvYXJjaC9hcm02NC9r ZXJuZWwvdm1saW51eC5sZHMuUwo+IGluZGV4IDY4MjdkYTdmM2FhNS4uNTQyM2ZmZTBhOTg3IDEw MDY0NAo+IC0tLSBhL2FyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlMKPiArKysgYi9hcmNo L2FybTY0L2tlcm5lbC92bWxpbnV4Lmxkcy5TCj4gQEAgLTE2NSw5ICsxNjUsNiBAQCBTRUNUSU9O Uwo+ICAJCSooLmFsdGluc3RydWN0aW9ucykKPiAgCQlfX2FsdF9pbnN0cnVjdGlvbnNfZW5kID0g LjsKPiAgCX0KPiAtCS5hbHRpbnN0cl9yZXBsYWNlbWVudCA6IHsKPiAtCQkqKC5hbHRpbnN0cl9y ZXBsYWNlbWVudCkKPiAtCX0KPiAgCj4gIAkuID0gQUxJR04oU0VHTUVOVF9BTElHTik7Cj4gIAlf X2luaXR0ZXh0X2VuZCA9IC47CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVs QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==