From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f181.google.com (mail-pl1-f181.google.com [209.85.214.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C9EB01847 for ; Mon, 20 May 2024 21:53:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.181 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716241982; cv=none; b=tdMdJEBRN48Rjr/2tbW98/pCXsuaofQtouBnQDWFEtO5TG+7efXKXFZbZwBpmscQJU8LJpdp+yUCGbeUECxhMsTQATrmq1z7tTAXF8D98vJmsXsV+1b2r3hLv5rbTLmQfYRH8/4OnT01m9AFGWVxlGt5xy1ZHGaPCZPaMssPlwU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716241982; c=relaxed/simple; bh=SJadZyYeqvD4BcUbbkPOv8iFm57f7rgqvKmEvJi8AqM=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=HK8yclhRknUJqS7paWpdEeO9WTBp2xcuTe2cZ1V0tGudYfjCKoxnWnTGAJm7WNxs8W3TyOFf9JVKCEyT9nlDjjwHJuC6Yw4ffRRnjZUCC88T4GlMApgu+ZF70QyOMj+A9PMsgi01swNGhXzBJR0Kp5knhOToPbRgB6tbXv3N1Zs= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=googlemail.com; spf=pass smtp.mailfrom=googlemail.com; dkim=pass (2048-bit key) header.d=googlemail.com header.i=@googlemail.com header.b=QSHr6bGF; arc=none smtp.client-ip=209.85.214.181 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=googlemail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=googlemail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=googlemail.com header.i=@googlemail.com header.b="QSHr6bGF" Received: by mail-pl1-f181.google.com with SMTP id d9443c01a7336-1ed0abbf706so21264835ad.2 for ; Mon, 20 May 2024 14:53:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20230601; t=1716241980; x=1716846780; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=/vWskpXNzxNtnQzRVqcAY8ey1nFXzxi3crSbI25m+TA=; b=QSHr6bGF3GnZoys9N7oHjeOfoGGHaQ6X+WHxkyvGJOjqt9AnbkKTwctVpA8y75blZs Vp/1kwlJyP04mxVGsM4D0DePFVxzYB17pIUlWJPUqomGkWaaAryonKkS/I6KezR1/TLF cjUFBko3+FUD2rU8muIZgR0MPNdmwELoRqXbC9bNXjA80QOnEJhEUFQmGBGsWpYVeMj2 S5C5niHz3yy+wsBldx6G5MqzZG2V4Dl+majNp+j5ehnN+V94u0JY+uA9k6YQ+QC2RqN4 gl/jbFnEq8DYSBiNGmXKnPM0LGOGUCQtmCymlb9yeF8jOpCTzbSmR/87ak5/gP3r9aG+ aPrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716241980; x=1716846780; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=/vWskpXNzxNtnQzRVqcAY8ey1nFXzxi3crSbI25m+TA=; b=cFVTD+9zlwuX5MM6+fAqGULgLx8BmCvTAq92T63RSJufFYRhdlFExpXglsM3WMLzuj rk1/Y9Hqwvo5JF1NmRHWxhExcf0E9Y4LmxBJIrE0tP9BQDUKsT9j3FoY+FWJKd948w56 6FYjBO7Q3GLi68FVdJ2yaANKIHkqdJaxfoRRijbIcm0EKi6McV/T7psuWhtm7kECB91o 35glycQB+E5k/HCzA6X4AXQ+06dfSxsQC72RCRbbNuW7XJDjQIpmUPYESJgHS4G77KE+ CHmkL7XOtYUzsMlC65M7vk1xpx/Om59od9TEaj9fiJz9NvSFaZ0g8Oq8J5Jk1R5Iagqs LEsQ== X-Gm-Message-State: AOJu0Yw1gOXlJqkjb95sA2/+EstrJ3sP4zZHfi6KUGBs3DfFp1D9zoXs I0QoYTOjen+oOCm0aXDrcK7MHIZFTWfUMsfAWYC5X5z4EDpDekfzjBZDk5Pw X-Google-Smtp-Source: AGHT+IEiOHXbwnlCTxA5hWZQFMd63KNQ995CsH4UziWHlnhPD88DXjoZHNxl6JhDZGymmc0LhoC9sQ== X-Received: by 2002:a17:902:82ca:b0:1e6:116b:b0d3 with SMTP id d9443c01a7336-1ef43d2ec00mr343736645ad.28.1716241979567; Mon, 20 May 2024 14:52:59 -0700 (PDT) Received: from ubuntu2310.lan (c-67-170-74-237.hsd1.wa.comcast.net. [67.170.74.237]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1ef0c138c04sm208265605ad.267.2024.05.20.14.52.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 May 2024 14:52:59 -0700 (PDT) From: Dave Thaler X-Google-Original-From: Dave Thaler To: bpf@vger.kernel.org Cc: bpf@ietf.org, Dave Thaler , Dave Thaler Subject: [PATCH bpf-next v2] bpf, docs: clarify sign extension of 64-bit use of 32-bit imm Date: Mon, 20 May 2024 14:52:55 -0700 Message-Id: <20240520215255.10595-1-dthaler1968@gmail.com> X-Mailer: git-send-email 2.40.1 Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit imm is defined as a 32-bit signed integer. {MOV, K, ALU64} says it does "dst = src" (where src is 'imm') and it does do dst = (s64)imm, which in that sense does sign extend imm. The MOVSX instruction is explained as sign extending, so added the example of {MOV, K, ALU64} to make this more clear. {JLE, K, JMP} says it does "PC += offset if dst <= src" (where src is 'imm', and the comparison is unsigned). This was apparently ambiguous to some readers as to whether the comparison was "dst <= (u64)(u32)imm" or "dst <= (u64)(s64)imm" so added an example to make this more clear. v1 -> v2: Address comments from Yonghong Signed-off-by: Dave Thaler --- .../bpf/standardization/instruction-set.rst | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/Documentation/bpf/standardization/instruction-set.rst b/Documentation/bpf/standardization/instruction-set.rst index 997560aba..7bb1281c5 100644 --- a/Documentation/bpf/standardization/instruction-set.rst +++ b/Documentation/bpf/standardization/instruction-set.rst @@ -385,6 +385,19 @@ The ``MOVSX`` instruction does a move operation with sign extension. operands into 64-bit operands. Unlike other arithmetic instructions, ``MOVSX`` is only defined for register source operands (``X``). +``{MOV, K, ALU64}`` means:: + + dst = (s64)imm + +``{MOV, X, ALU}`` means:: + + dst = (u32)src + +``{MOVSX, X, ALU}`` with 'offset' 8 means:: + + dst = (u32)(s32)(s8)src + + The ``NEG`` instruction is only defined when the source bit is clear (``K``). @@ -486,6 +499,10 @@ Example: where 's>=' indicates a signed '>=' comparison. +``{JLE, K, JMP}`` means:: + + if dst <= (u64)(s64)imm goto +offset + ``{JA, K, JMP32}`` means:: gotol +imm -- 2.40.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail.ietf.org (mail.ietf.org [50.223.129.194]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 783AA1386D5 for ; Mon, 20 May 2024 21:53:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=50.223.129.194 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716241995; cv=none; b=KD8QxLtlWKTFH4d7gJhztcX3Wptv0FuyM+U4REoDGD1GPk6OXD5Ffp4rd6QReK+Ky1w8C0FVobsvzXG7hffQJx/mZV38drnsE5PhTWBjDb6YfJnOadD02Xqzl+M8L/gEuxAS8zBRYapBFZXF0CWpvBJCIKvpcdBBfYoMEeaTC5A= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716241995; c=relaxed/simple; bh=choxlXEvdS4Hhw4ocXb+73Vp9jW0fn9Sd0zJ9jDl4fo=; h=To:Date:Message-Id:MIME-Version:CC:Subject:Content-Type:From; b=IuDN1TVIhLme2QKOavQtdgU1vQ0k0/UZyq2qalkrd3XxJp/TqKt+eFOKmZcnfcG83GPgFyX8PlIZM7WiLWc4HZ9FOr7GInLn//nAjaPjTRc3FgMGogm/1I8DBZTIFFa8kjhGmfv3IaO5vdkjXWp2gQLOPj17R3tCPzXAfT6ttlQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=dmarc.ietf.org; spf=pass smtp.mailfrom=ietf.org; dkim=pass (1024-bit key) header.d=ietf.org header.i=@ietf.org header.b=MtbgeSPZ; dkim=fail (1024-bit key) header.d=ietf.org header.i=@ietf.org header.b=MdKtQZ6u reason="signature verification failed"; dkim=fail (2048-bit key) header.d=googlemail.com header.i=@googlemail.com header.b=losTusdQ reason="signature verification failed"; arc=none smtp.client-ip=50.223.129.194 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=dmarc.ietf.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ietf.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ietf.org header.i=@ietf.org header.b="MtbgeSPZ"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ietf.org header.i=@ietf.org header.b="MdKtQZ6u"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=googlemail.com header.i=@googlemail.com header.b="losTusdQ" Received: from ietfa.amsl.com (localhost [IPv6:::1]) by ietfa.amsl.com (Postfix) with ESMTP id BA12FC18DBBF for ; Mon, 20 May 2024 14:53:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1716241992; bh=choxlXEvdS4Hhw4ocXb+73Vp9jW0fn9Sd0zJ9jDl4fo=; h=To:Date:CC:Subject:List-Id:List-Archive:List-Help:List-Owner: List-Post:List-Subscribe:List-Unsubscribe:From; b=MtbgeSPZbn+xzaiITE3qXxIqK0wlFSALlMoQWVdtyH7qqOi0S3Ge1TyH9lQ5A6jtP FaEbwuOsxOUzg2VsYVLLYJ2a5mLj7u8wslPnH3gyXKVvy6dxzvefHj9fB+evqkrDZS gkuVCnuXXI29E/7UCSwNUwpIwW1P3xkRcJwVaNW0= Received: from ietfa.amsl.com (localhost [IPv6:::1]) by ietfa.amsl.com (Postfix) with ESMTP id 96DFCC16943F for ; Mon, 20 May 2024 14:53:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1716241992; bh=choxlXEvdS4Hhw4ocXb+73Vp9jW0fn9Sd0zJ9jDl4fo=; h=From:To:Date:CC:Subject:List-Id:List-Archive:List-Help:List-Owner: List-Post:List-Subscribe:List-Unsubscribe; b=MdKtQZ6ujiU/xCdWdIt1jnifmtiqPJPoJwQ1UZ4LhPpfQG7GIeyjvfaPkn3aQJKis MRPwt6D7RupQ64zE11uBmsNGOWlxw7gYZmCZxW11ZNhKhnTeknMaDj7vB/15fhHDWR i7rdX+De45EZv6zUbFB5OfGoOrgESygzxXLNTRsc= Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 2F005C14F71E for ; Mon, 20 May 2024 14:53:04 -0700 (PDT) X-Virus-Scanned: amavisd-new at amsl.com X-Spam-Flag: NO X-Spam-Score: -1.845 X-Spam-Level: Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=googlemail.com Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id unxpZL3bM0uU for ; Mon, 20 May 2024 14:53:00 -0700 (PDT) Received: from mail-pl1-x636.google.com (mail-pl1-x636.google.com [IPv6:2607:f8b0:4864:20::636]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 5539BC14F609 for ; Mon, 20 May 2024 14:53:00 -0700 (PDT) Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-1ee7963db64so21605215ad.1 for ; Mon, 20 May 2024 14:53:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20230601; t=1716241979; x=1716846779; darn=ietf.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=/vWskpXNzxNtnQzRVqcAY8ey1nFXzxi3crSbI25m+TA=; b=losTusdQfHC1wN1MbOYUODKU9P0j7m9iUyDMgIXnCu8xeHeGupKISf4C+N+DFtSNFN MFhLnt0htP6jOqoWsA8yiwqQ/4B4wDrO2lmNy/oR68O4CJx1l1eiMJq/mZn3MiwVQyoV 0Rfz8nCG51KHZDGq7TcJKEum9RZiEISIZXAdIxiQP7WAqnO9EGGaJR3G7TJ0b5/RnvUk cYniKjZmImJbQa9wUsz042YPckVhdULM28SvFvADByn0nGA86q/yUifj2lQyTgDF9sKS 0j7Li9he3r7JY3B3jEgisuKeBmr2g+DucyjHJBeg23WHouC6zwCD+PdOddmFd4NkihHh VKFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716241979; x=1716846779; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=/vWskpXNzxNtnQzRVqcAY8ey1nFXzxi3crSbI25m+TA=; b=L8BnHWh0AyxJJ7dtyI58CvJVQKqAhwbdVZbOjvpmGw0iNDkyrEf04iTQ8Var3o81Ic PsRUJtI/hxPwHQxxZqNDa6FY1CcfQ4UvHKlkcXMvtydYC2D8LbUwOLRMpBsaZbPk8iJ/ giDa8p4/xninQgxNPmS3ZwW2reg2VAhKXCsO7XG7D5xRAKV4q8yNwctZr0DzOtjU8mWH EgHkZjuIg1iG9CzDsQfZRy2BikIi2/W93feDjJycB/5hAHfwgmiX1Jm2hIU4a6cDYxNo oK0WNbp3uTbJui922pHFDPybuPqZv71gwc9/j9TWc5D30vZvHWQx7pHw66aK04hSy97m 9sLA== X-Gm-Message-State: AOJu0YzbKSkrFK+huSNFSrlyfpfGxKGzPYZqYb61c2Gh56C3oWins9/C frK401ArP63HlaHSaHIBb5L+iCunpcmLmC6z2nC8YruPLdBYobtV X-Google-Smtp-Source: AGHT+IEiOHXbwnlCTxA5hWZQFMd63KNQ995CsH4UziWHlnhPD88DXjoZHNxl6JhDZGymmc0LhoC9sQ== X-Received: by 2002:a17:902:82ca:b0:1e6:116b:b0d3 with SMTP id d9443c01a7336-1ef43d2ec00mr343736645ad.28.1716241979567; Mon, 20 May 2024 14:52:59 -0700 (PDT) Received: from ubuntu2310.lan (c-67-170-74-237.hsd1.wa.comcast.net. [67.170.74.237]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1ef0c138c04sm208265605ad.267.2024.05.20.14.52.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 May 2024 14:52:59 -0700 (PDT) X-Google-Original-From: Dave Thaler To: bpf@vger.kernel.org Date: Mon, 20 May 2024 14:52:55 -0700 Message-ID: <20240520215255.10595-1-dthaler1968@gmail.com> X-Mailer: git-send-email 2.40.1 Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-ID-Hash: NWGJVTEDF4PWPVZG35T6RXBPNCZ26626 X-Message-ID-Hash: NWGJVTEDF4PWPVZG35T6RXBPNCZ26626 X-MailFrom: dthaler1968@googlemail.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: bpf@ietf.org, Dave Thaler , Dave Thaler X-Mailman-Version: 3.3.9rc4 Precedence: list Subject: =?utf-8?q?=5BBpf=5D_=5BPATCH_bpf-next_v2=5D_bpf=2C_docs=3A_clarify_sign_exte?= =?utf-8?q?nsion_of_64-bit_use_of_32-bit_imm?= Archived-At: List-Archive: List-Help: List-Owner: List-Post: X-Mailman-Copy: yes Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Original-From: Dave Thaler From: Dave Thaler Message-ID: <20240520215255.pHXUCs3RIaakLEXIJEFWFnFAHA-fWBjzjvX7svoYgos@z> aW1tIGlzIGRlZmluZWQgYXMgYSAzMi1iaXQgc2lnbmVkIGludGVnZXIuDQoNCntNT1YsIEssIEFM VTY0fSBzYXlzIGl0IGRvZXMgImRzdCA9IHNyYyIgKHdoZXJlIHNyYyBpcyAnaW1tJykgYW5kIGl0 DQpkb2VzIGRvIGRzdCA9IChzNjQpaW1tLCB3aGljaCBpbiB0aGF0IHNlbnNlIGRvZXMgc2lnbiBl eHRlbmQgaW1tLiBUaGUgTU9WU1gNCmluc3RydWN0aW9uIGlzIGV4cGxhaW5lZCBhcyBzaWduIGV4 dGVuZGluZywgc28gYWRkZWQgdGhlIGV4YW1wbGUgb2YNCntNT1YsIEssIEFMVTY0fSB0byBtYWtl IHRoaXMgbW9yZSBjbGVhci4NCg0Ke0pMRSwgSywgSk1QfSBzYXlzIGl0IGRvZXMgIlBDICs9IG9m ZnNldCBpZiBkc3QgPD0gc3JjIiAod2hlcmUgc3JjIGlzICdpbW0nLA0KYW5kIHRoZSBjb21wYXJp c29uIGlzIHVuc2lnbmVkKS4gVGhpcyB3YXMgYXBwYXJlbnRseSBhbWJpZ3VvdXMgdG8gc29tZQ0K cmVhZGVycyBhcyB0byB3aGV0aGVyIHRoZSBjb21wYXJpc29uIHdhcyAiZHN0IDw9ICh1NjQpKHUz MilpbW0iIG9yDQoiZHN0IDw9ICh1NjQpKHM2NClpbW0iIHNvIGFkZGVkIGFuIGV4YW1wbGUgdG8g bWFrZSB0aGlzIG1vcmUgY2xlYXIuDQoNCnYxIC0+IHYyOiBBZGRyZXNzIGNvbW1lbnRzIGZyb20g WW9uZ2hvbmcNCg0KU2lnbmVkLW9mZi1ieTogRGF2ZSBUaGFsZXIgPGR0aGFsZXIxOTY4QGdvb2ds ZW1haWwuY29tPg0KLS0tDQogLi4uL2JwZi9zdGFuZGFyZGl6YXRpb24vaW5zdHJ1Y3Rpb24tc2V0 LnJzdCAgICAgfCAxNyArKysrKysrKysrKysrKysrKw0KIDEgZmlsZSBjaGFuZ2VkLCAxNyBpbnNl cnRpb25zKCspDQoNCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2JwZi9zdGFuZGFyZGl6YXRp b24vaW5zdHJ1Y3Rpb24tc2V0LnJzdCBiL0RvY3VtZW50YXRpb24vYnBmL3N0YW5kYXJkaXphdGlv bi9pbnN0cnVjdGlvbi1zZXQucnN0DQppbmRleCA5OTc1NjBhYmEuLjdiYjEyODFjNSAxMDA2NDQN Ci0tLSBhL0RvY3VtZW50YXRpb24vYnBmL3N0YW5kYXJkaXphdGlvbi9pbnN0cnVjdGlvbi1zZXQu cnN0DQorKysgYi9Eb2N1bWVudGF0aW9uL2JwZi9zdGFuZGFyZGl6YXRpb24vaW5zdHJ1Y3Rpb24t c2V0LnJzdA0KQEAgLTM4NSw2ICszODUsMTkgQEAgVGhlIGBgTU9WU1hgYCBpbnN0cnVjdGlvbiBk b2VzIGEgbW92ZSBvcGVyYXRpb24gd2l0aCBzaWduIGV4dGVuc2lvbi4NCiBvcGVyYW5kcyBpbnRv IDY0LWJpdCBvcGVyYW5kcy4gIFVubGlrZSBvdGhlciBhcml0aG1ldGljIGluc3RydWN0aW9ucywN CiBgYE1PVlNYYGAgaXMgb25seSBkZWZpbmVkIGZvciByZWdpc3RlciBzb3VyY2Ugb3BlcmFuZHMg KGBgWGBgKS4NCiANCitgYHtNT1YsIEssIEFMVTY0fWBgIG1lYW5zOjoNCisNCisgIGRzdCA9IChz NjQpaW1tDQorDQorYGB7TU9WLCBYLCBBTFV9YGAgbWVhbnM6Og0KKw0KKyAgZHN0ID0gKHUzMilz cmMNCisNCitgYHtNT1ZTWCwgWCwgQUxVfWBgIHdpdGggJ29mZnNldCcgOCBtZWFuczo6DQorDQor ICBkc3QgPSAodTMyKShzMzIpKHM4KXNyYw0KKw0KKw0KIFRoZSBgYE5FR2BgIGluc3RydWN0aW9u IGlzIG9ubHkgZGVmaW5lZCB3aGVuIHRoZSBzb3VyY2UgYml0IGlzIGNsZWFyDQogKGBgS2BgKS4N CiANCkBAIC00ODYsNiArNDk5LDEwIEBAIEV4YW1wbGU6DQogDQogd2hlcmUgJ3M+PScgaW5kaWNh dGVzIGEgc2lnbmVkICc+PScgY29tcGFyaXNvbi4NCiANCitgYHtKTEUsIEssIEpNUH1gYCBtZWFu czo6DQorDQorICBpZiBkc3QgPD0gKHU2NCkoczY0KWltbSBnb3RvICtvZmZzZXQNCisNCiBgYHtK QSwgSywgSk1QMzJ9YGAgbWVhbnM6Og0KIA0KICAgZ290b2wgK2ltbQ0KLS0gDQoyLjQwLjENCg0K LS0gCkJwZiBtYWlsaW5nIGxpc3QgLS0gYnBmQGlldGYub3JnClRvIHVuc3Vic2NyaWJlIHNlbmQg YW4gZW1haWwgdG8gYnBmLWxlYXZlQGlldGYub3JnCg==