From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f202.google.com (mail-pf1-f202.google.com [209.85.210.202]) (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 8040E42048 for ; Wed, 7 May 2025 03:42:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.202 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746589364; cv=none; b=gZLMPerPIHTpmC+UQ4cv8Pyp+29o3NjX4/rvvLDelHszriTcKe1wHKvHXiIvybfJ6w3LJDHjZHOGsIu/vT6ZRj+9kMwPVtfWmvz6DFTeR89jWZnJWOdY2WdJEXo8gka+VkOj7lKlcpagRjTDTMVDA9C/JOfraC0fxcfMXCAU3pE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746589364; c=relaxed/simple; bh=rYtMXE5cLE8zY8WFH+q8HO9qUi0HyYA+pRbraSnijIQ=; h=Date:Mime-Version:Message-ID:Subject:From:To:Cc:Content-Type; b=TBLvwduXs6W2GOdFeCmzZSSTt9CN9SUN30vv3QYjHumaiOLtmcjaSboK2oQSxPFyA6FU/3TKt60POgltCjuLtS8LHbOMQK/H2Z1418MoDfvbjZift8hOmBmuYo7dvwtkhwaVnl/N+dd8/N9K7Q9G8/WBWAOdE3CvLMTj+aY5ET0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--yepeilin.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=ZiWw+Mgc; arc=none smtp.client-ip=209.85.210.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--yepeilin.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="ZiWw+Mgc" Received: by mail-pf1-f202.google.com with SMTP id d2e1a72fcca58-736b431ee0dso4769037b3a.0 for ; Tue, 06 May 2025 20:42:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1746589363; x=1747194163; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:from:subject:message-id :mime-version:date:from:to:cc:subject:date:message-id:reply-to; bh=Zq7LU3JKFzJT28CjBFkNg7IAHXfKJMWuEZp8c2mW00c=; b=ZiWw+MgcD1Nb08cdPwB0eHuk1dY/6b6r3rDB/vlbqMzT1UxaMBhX/XkbLQubWTWCrk 2ZX+A2mX0jtzTySdZeB3q+SRy9aOAcLZ7oUMvoYZhIi9rdgzF/i4hLy50oTos3mMBzVl MQa4zwCE4Br6VkmUjpDJKpyhh01NhpkVDvc9A8vYGKott1jjX1NCX2R8z3V6Ug5vn8xz cQY2SHeZEDPLsG4sA0GAIuf/h5ZA9hP6YqZewQDjrYRqMiqEwQiX1WomDY69rg9caZdB 1JTNm64zHMnZEwnwB267MK9Ht7fY+3bPUvmAvc2peR0GbEP/GXtj9xWU38IerNUVCXC9 syag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746589363; x=1747194163; h=content-transfer-encoding:cc:to:from:subject:message-id :mime-version:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Zq7LU3JKFzJT28CjBFkNg7IAHXfKJMWuEZp8c2mW00c=; b=lN+kEhs9vI8jMVUCviPnUy5gOyze+juxV1VxsWFw2EfBiPE3J0MVszj7obwLuRrJ+D 9pyDE7oi77n5lkoGTTBSoKfADnAI1S4JWKyesSb9K19RcQNfzSsjJGzL+2aYCqX2RsD9 yJcK0XTktkStKdhyYsEYCO/T0niLulv62eV5KnyV7HZMVfsA/4OORcQ2pIImPZdUY+/k /98QlStXjS2daJ973aMq9ZrNkGPE4N/KGaCw7PS8niaIvUlewiJhpDZKmoaXkvyUK/In iM5oAncUEUpw/bM9BXc1dGXtzi3r3vtFND5V1Bh/ulST9DnVyqj05oxdP7qVUtHq74zY S4tA== X-Gm-Message-State: AOJu0YxClbbEeG9bPkDHgZnLF5jLa50asJVyDcZoVTGyR4w3EmA74C0c WpPgLCzms10yZSY3HGm2X3PZ6hTC/K3SsaBVO+yw1dl7qMBql+kAxzxMmDjNvpJhAzf6JqDlVM3 zKteiTxMl33bN+rIPUyYQy3MiLuI6Gh6V13SXXlAixgfsQ0g5rk5dxypin0E+u+qlEmvcN92FGs inLg8L+YXTDBf3v6ZvwDdKpBYPoXKsP+SMVXlOQNs= X-Google-Smtp-Source: AGHT+IFgAfqWvX5PEh1cmn/u8Yxf4LfZBK3LA1v4JaXGtqfLL/0kW1PeCJmxk05AdT4eeV56gWtBEcduQpTx6A== X-Received: from pgcl20.prod.google.com ([2002:a63:7014:0:b0:b16:7375:98d2]) (user=yepeilin job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a20:d70f:b0:1ee:c8e7:203c with SMTP id adf61e73a8af0-2148bf0678amr2882726637.24.1746589362544; Tue, 06 May 2025 20:42:42 -0700 (PDT) Date: Wed, 7 May 2025 03:42:29 +0000 Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 X-Mailer: git-send-email 2.49.0.967.g6a0df3ecc3-goog Message-ID: Subject: [PATCH bpf-next v2 0/8] bpf, riscv64: Support load-acquire and store-release instructions From: Peilin Ye To: bpf@vger.kernel.org Cc: Peilin Ye , linux-riscv@lists.infradead.org, Andrea Parri , "=?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?=" , Pu Lehui , Puranjay Mohan , Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , "Paul E. McKenney" , Song Liu , Yonghong Song , John Fastabend , KP Singh , Stanislav Fomichev , Hao Luo , Jiri Olsa , Luke Nelson , Xi Wang , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Mykola Lysenko , Shuah Khan , Josh Don , Barret Rhoden , Neel Natu , Benjamin Segall Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi all! Patchset [1] introduced BPF load-acquire (BPF_LOAD_ACQ) and store-release (BPF_STORE_REL) instructions, and added x86-64 and arm64 JIT compiler support. As a follow-up, this v2 patchset supports load-acquire and store-release instructions for the riscv64 JIT compiler, and introduces some related selftests/ changes. Specifically: * PATCH 1 makes insn_def_regno() handle load-acquires properly for bpf_jit_needs_zext() (true for riscv64) architectures * PATCH 2, 3 from Andrea Parri add the actual support to the riscv64 JIT compiler * PATCH 4 optimizes code emission by skipping redundant zext instructions inserted by the verifier * PATCH 5, 6 and 7 are minor selftest/ improvements * PATCH 8 enables (non-arena) load-acquire/store-release selftests for riscv64 v1: https://lore.kernel.org/bpf/cover.1745970908.git.yepeilin@google.com/ Changes since v1: * add Acked-by:, Reviewed-by: and Tested-by: tags from Lehui and Bj=C3=B6r= n * simplify code logic in PATCH 1 (Lehui) * in PATCH 3, avoid changing 'return 0;' to 'return ret;' at the end of bpf_jit_emit_insn() (Lehui) Please refer to individual patches for details. Thanks! [1] https://lore.kernel.org/all/cover.1741049567.git.yepeilin@google.com/ Andrea Parri (2): bpf, riscv64: Introduce emit_load_*() and emit_store_*() bpf, riscv64: Support load-acquire and store-release instructions Peilin Ye (6): bpf/verifier: Handle BPF_LOAD_ACQ instructions in insn_def_regno() bpf, riscv64: Skip redundant zext instruction after load-acquire selftests/bpf: Use CAN_USE_LOAD_ACQ_STORE_REL when appropriate selftests/bpf: Avoid passing out-of-range values to __retval() selftests/bpf: Verify zero-extension behavior in load-acquire tests selftests/bpf: Enable non-arena load-acquire/store-release selftests for riscv64 arch/riscv/net/bpf_jit.h | 15 + arch/riscv/net/bpf_jit_comp64.c | 332 ++++++++++++------ arch/riscv/net/bpf_jit_core.c | 3 +- kernel/bpf/verifier.c | 12 +- tools/testing/selftests/bpf/progs/bpf_misc.h | 5 +- .../bpf/progs/verifier_load_acquire.c | 48 ++- .../selftests/bpf/progs/verifier_precision.c | 5 +- .../bpf/progs/verifier_store_release.c | 39 +- 8 files changed, 313 insertions(+), 146 deletions(-) --=20 2.49.0.967.g6a0df3ecc3-goog 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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id E0944C369DC for ; Wed, 7 May 2025 03:43:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:From:Subject:Message-ID: Mime-Version:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: References:List-Owner; bh=8tsQTfv0H2LZO3hvannR3wMyRDMyHJ3wDGqtvcBONwM=; b=P65 UeWg1eYR49yGpInKOCavzUKrfQ/Y3e9srug1naJinYG6tTDpOA8+E45Th0fgV2T0OdGv54sfhVyiS yqB8KFXp8KMUV/1vabWvtLO6WJVr9a9n5D/+Ale6QYYw/CDeNHQZkbFHWcCCiL3m5zfV4kGxSb67g 93vHjwxfUltMNCBCJQWIk6RQNJPOTbtLjZimQjb2Z+C2qvN50pt5MilOHA628likokg9PXQAhwpme 5BrBr6eWpPE11NBBVJTlrqT8hQL/s/rj0WI20Pqg6ljnm3XyAipRZa2CcvN57IX4r6ifWCgjDA7vg MU4KwLanUD/XhrVLPeYvqFmYXRvfK3w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1uCVgH-0000000E5dH-25Jn; Wed, 07 May 2025 03:42:49 +0000 Received: from mail-pg1-x549.google.com ([2607:f8b0:4864:20::549]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1uCVgB-0000000E5cr-41YT for linux-riscv@lists.infradead.org; Wed, 07 May 2025 03:42:47 +0000 Received: by mail-pg1-x549.google.com with SMTP id 41be03b00d2f7-b115383fcecso3691860a12.1 for ; Tue, 06 May 2025 20:42:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1746589362; x=1747194162; darn=lists.infradead.org; h=content-transfer-encoding:cc:to:from:subject:message-id :mime-version:date:from:to:cc:subject:date:message-id:reply-to; bh=Zq7LU3JKFzJT28CjBFkNg7IAHXfKJMWuEZp8c2mW00c=; b=uGsB9beYj+Hv6AFfPhMMim0uYfSjXsYB/WnhnZSLZhD2HoUk/aP/isCWy2D621xjyS JTLZWnz6J3UrIOi7eZad6wPLQq6NfxHHSNi7SvVOz/M3rBSbLv1i6/2c9bm65amr8g+q 8LYsBsx/XjXfp5gGF1SobIxsr+5ohzj004QlVXqXiT52SyAIjUM+gFCrjQHcN0xFr1nJ QqQPWgIfw4DXWlHiya2iAZm5VcPV5SkNY36o3N9DarNfX340MklS5IluluyTurKnekWk fZQ9C1IGKS0l9ioBwVFBetWme1CMISOnRMkprCGW2ravcNmKEwYjS2slcr9JksGknrYV wV1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746589362; x=1747194162; h=content-transfer-encoding:cc:to:from:subject:message-id :mime-version:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Zq7LU3JKFzJT28CjBFkNg7IAHXfKJMWuEZp8c2mW00c=; b=KYF2ANkl7rgF6QOBvUqjVHDO8fseHLGGTXaqtQUG9X0VYcMpmEgPVnvdtroaExiHm7 98AGSQ5RHMOETEl0giVSydiPPZx1BUtWgSYh8iuSIw0E4PnhVusnzHEEgedPRzmxNgnh UYcTAHzw/yrNKCJ50KxPQsBOhEI3qJ/jJIshIgNp5sNDjlJaxsJUkDBNK63fFBYM2V3G wJ63q/AZ5RJrIubA9X1jxVYplhjioSazbI8bcDyiXfLbKEk8ym7ouyL4vHOYh3sKSgkM O2abLKX+o9F+LRdQOmz2iSCPyx/WgyVohetbPYcWnVqIQAikTUjXJfZrKYeIyuKWW7pB Bmyg== X-Forwarded-Encrypted: i=1; AJvYcCWQkgnwMt0+vymd0iXx/IHUwZgufDfLamVd5IOfirrnVeKTlAlzIkmfFdS8gmknTzf+hDGiBM4i0qGb1A==@lists.infradead.org X-Gm-Message-State: AOJu0YyiWHa94SVwQKwcZYvIp+gOpSABQe/siDJ+T71iOCVlPwdMxV5I +kAv5IlBvSjjdFcLtLeHyGBDAbw33PKXjIm+utbW3R2DIy5eqiPOG8tME5Cd/nIatI03JMCOf8l Xl/zVCkg7mQ== X-Google-Smtp-Source: AGHT+IFgAfqWvX5PEh1cmn/u8Yxf4LfZBK3LA1v4JaXGtqfLL/0kW1PeCJmxk05AdT4eeV56gWtBEcduQpTx6A== X-Received: from pgcl20.prod.google.com ([2002:a63:7014:0:b0:b16:7375:98d2]) (user=yepeilin job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a20:d70f:b0:1ee:c8e7:203c with SMTP id adf61e73a8af0-2148bf0678amr2882726637.24.1746589362544; Tue, 06 May 2025 20:42:42 -0700 (PDT) Date: Wed, 7 May 2025 03:42:29 +0000 Mime-Version: 1.0 X-Mailer: git-send-email 2.49.0.967.g6a0df3ecc3-goog Message-ID: Subject: [PATCH bpf-next v2 0/8] bpf, riscv64: Support load-acquire and store-release instructions From: Peilin Ye To: bpf@vger.kernel.org Cc: Peilin Ye , linux-riscv@lists.infradead.org, Andrea Parri , "=?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?=" , Pu Lehui , Puranjay Mohan , Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , "Paul E. McKenney" , Song Liu , Yonghong Song , John Fastabend , KP Singh , Stanislav Fomichev , Hao Luo , Jiri Olsa , Luke Nelson , Xi Wang , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Mykola Lysenko , Shuah Khan , Josh Don , Barret Rhoden , Neel Natu , Benjamin Segall X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250506_204244_032871_114AB6AE X-CRM114-Status: UNSURE ( 8.39 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org SGkgYWxsIQoKUGF0Y2hzZXQgWzFdIGludHJvZHVjZWQgQlBGIGxvYWQtYWNxdWlyZSAoQlBGX0xP QURfQUNRKSBhbmQKc3RvcmUtcmVsZWFzZSAoQlBGX1NUT1JFX1JFTCkgaW5zdHJ1Y3Rpb25zLCBh bmQgYWRkZWQgeDg2LTY0IGFuZCBhcm02NApKSVQgY29tcGlsZXIgc3VwcG9ydC4gIEFzIGEgZm9s bG93LXVwLCB0aGlzIHYyIHBhdGNoc2V0IHN1cHBvcnRzCmxvYWQtYWNxdWlyZSBhbmQgc3RvcmUt cmVsZWFzZSBpbnN0cnVjdGlvbnMgZm9yIHRoZSByaXNjdjY0IEpJVApjb21waWxlciwgYW5kIGlu dHJvZHVjZXMgc29tZSByZWxhdGVkIHNlbGZ0ZXN0cy8gY2hhbmdlcy4KClNwZWNpZmljYWxseToK CiAqIFBBVENIIDEgbWFrZXMgaW5zbl9kZWZfcmVnbm8oKSBoYW5kbGUgbG9hZC1hY3F1aXJlcyBw cm9wZXJseSBmb3IKICAgYnBmX2ppdF9uZWVkc196ZXh0KCkgKHRydWUgZm9yIHJpc2N2NjQpIGFy Y2hpdGVjdHVyZXMKICogUEFUQ0ggMiwgMyBmcm9tIEFuZHJlYSBQYXJyaSBhZGQgdGhlIGFjdHVh bCBzdXBwb3J0IHRvIHRoZSByaXNjdjY0CiAgIEpJVCBjb21waWxlcgogKiBQQVRDSCA0IG9wdGlt aXplcyBjb2RlIGVtaXNzaW9uIGJ5IHNraXBwaW5nIHJlZHVuZGFudCB6ZXh0CiAgIGluc3RydWN0 aW9ucyBpbnNlcnRlZCBieSB0aGUgdmVyaWZpZXIKICogUEFUQ0ggNSwgNiBhbmQgNyBhcmUgbWlu b3Igc2VsZnRlc3QvIGltcHJvdmVtZW50cwogKiBQQVRDSCA4IGVuYWJsZXMgKG5vbi1hcmVuYSkg bG9hZC1hY3F1aXJlL3N0b3JlLXJlbGVhc2Ugc2VsZnRlc3RzIGZvcgogICByaXNjdjY0Cgp2MTog aHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYnBmL2NvdmVyLjE3NDU5NzA5MDguZ2l0LnllcGVpbGlu QGdvb2dsZS5jb20vCkNoYW5nZXMgc2luY2UgdjE6CgogKiBhZGQgQWNrZWQtYnk6LCBSZXZpZXdl ZC1ieTogYW5kIFRlc3RlZC1ieTogdGFncyBmcm9tIExlaHVpIGFuZCBCasO2cm4KICogc2ltcGxp ZnkgY29kZSBsb2dpYyBpbiBQQVRDSCAxIChMZWh1aSkKICogaW4gUEFUQ0ggMywgYXZvaWQgY2hh bmdpbmcgJ3JldHVybiAwOycgdG8gJ3JldHVybiByZXQ7JyBhdCB0aGUgZW5kIG9mCiAgIGJwZl9q aXRfZW1pdF9pbnNuKCkgKExlaHVpKQoKUGxlYXNlIHJlZmVyIHRvIGluZGl2aWR1YWwgcGF0Y2hl cyBmb3IgZGV0YWlscy4gIFRoYW5rcyEKClsxXSBodHRwczovL2xvcmUua2VybmVsLm9yZy9hbGwv Y292ZXIuMTc0MTA0OTU2Ny5naXQueWVwZWlsaW5AZ29vZ2xlLmNvbS8KCkFuZHJlYSBQYXJyaSAo Mik6CiAgYnBmLCByaXNjdjY0OiBJbnRyb2R1Y2UgZW1pdF9sb2FkXyooKSBhbmQgZW1pdF9zdG9y ZV8qKCkKICBicGYsIHJpc2N2NjQ6IFN1cHBvcnQgbG9hZC1hY3F1aXJlIGFuZCBzdG9yZS1yZWxl YXNlIGluc3RydWN0aW9ucwoKUGVpbGluIFllICg2KToKICBicGYvdmVyaWZpZXI6IEhhbmRsZSBC UEZfTE9BRF9BQ1EgaW5zdHJ1Y3Rpb25zIGluIGluc25fZGVmX3JlZ25vKCkKICBicGYsIHJpc2N2 NjQ6IFNraXAgcmVkdW5kYW50IHpleHQgaW5zdHJ1Y3Rpb24gYWZ0ZXIgbG9hZC1hY3F1aXJlCiAg c2VsZnRlc3RzL2JwZjogVXNlIENBTl9VU0VfTE9BRF9BQ1FfU1RPUkVfUkVMIHdoZW4gYXBwcm9w cmlhdGUKICBzZWxmdGVzdHMvYnBmOiBBdm9pZCBwYXNzaW5nIG91dC1vZi1yYW5nZSB2YWx1ZXMg dG8gX19yZXR2YWwoKQogIHNlbGZ0ZXN0cy9icGY6IFZlcmlmeSB6ZXJvLWV4dGVuc2lvbiBiZWhh dmlvciBpbiBsb2FkLWFjcXVpcmUgdGVzdHMKICBzZWxmdGVzdHMvYnBmOiBFbmFibGUgbm9uLWFy ZW5hIGxvYWQtYWNxdWlyZS9zdG9yZS1yZWxlYXNlIHNlbGZ0ZXN0cwogICAgZm9yIHJpc2N2NjQK CiBhcmNoL3Jpc2N2L25ldC9icGZfaml0LmggICAgICAgICAgICAgICAgICAgICAgfCAgMTUgKwog YXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYyAgICAgICAgICAgICAgIHwgMzMyICsrKysr KysrKysrKy0tLS0tLQogYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMgICAgICAgICAgICAg ICAgIHwgICAzICstCiBrZXJuZWwvYnBmL3ZlcmlmaWVyLmMgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgMTIgKy0KIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfbWlzYy5o ICB8ICAgNSArLQogLi4uL2JwZi9wcm9ncy92ZXJpZmllcl9sb2FkX2FjcXVpcmUuYyAgICAgICAg IHwgIDQ4ICsrLQogLi4uL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHJlY2lzaW9uLmMg IHwgICA1ICstCiAuLi4vYnBmL3Byb2dzL3ZlcmlmaWVyX3N0b3JlX3JlbGVhc2UuYyAgICAgICAg fCAgMzkgKy0KIDggZmlsZXMgY2hhbmdlZCwgMzEzIGluc2VydGlvbnMoKyksIDE0NiBkZWxldGlv bnMoLSkKCi0tIAoyLjQ5LjAuOTY3Lmc2YTBkZjNlY2MzLWdvb2cKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1yaXNjdiBtYWlsaW5nIGxpc3QK bGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cg==