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=-4.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=no 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 C1A87C433E0 for ; Sat, 4 Jul 2020 03:34:31 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 96B27208C7 for ; Sat, 4 Jul 2020 03:34:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1593833671; bh=eTy2eFqdtYkG5FT9y7JyU5E4q34c6fUXRLFGwI6SVv0=; h=From:To:Cc:Subject:Date:List-ID:From; b=brPUbewcSZCITI45QDvEW+iTleWZ2MsfgCSgvViGJdWgpaUGY9QFE+WS/RTVTJ8GM s/nWiv6O4uk5R7CcyR2+9qfXTp/6jZBqqT/eDQLBzAOdwcrlQRuFRsR4+BX8zYMDY0 dzWfTZvq4bhPCKNU/DkuZS6jS3v8aLEizq+zlqYw= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726676AbgGDDeb (ORCPT ); Fri, 3 Jul 2020 23:34:31 -0400 Received: from mail.kernel.org ([198.145.29.99]:48114 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726501AbgGDDeb (ORCPT ); Fri, 3 Jul 2020 23:34:31 -0400 Received: from localhost.localdomain (89.208.247.74.16clouds.com [89.208.247.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 9E73B20899; Sat, 4 Jul 2020 03:34:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1593833670; bh=eTy2eFqdtYkG5FT9y7JyU5E4q34c6fUXRLFGwI6SVv0=; h=From:To:Cc:Subject:Date:From; b=Mip3htu2BiZjSdSMqYC7r5gtY2NOS7SFQXicW+fYddcldPhpvpkhMnVfYk4CTMtZW c21VJrSu4B4Gba8KFXGPr3bXEO7K21LYFcGlFORoj0pmEO2oEnVJMAkLnN8FG0AK/u oHlNwdAlCXEzWmYSgHlnC9f0NvEufYf+6F9b7fMA= From: guoren@kernel.org To: palmerdabbelt@google.com, paul.walmsley@sifive.com, anup@brainfault.org, greentime.hu@sifive.com, zong.li@sifive.com, me@packi.ch, bjorn.topel@gmail.com, atish.patra@wdc.com Cc: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-csky@vger.kernel.org, guoren@kernel.org, Guo Ren Subject: [PATCH V1 0/5] riscv: Add k/uprobe supported Date: Sat, 4 Jul 2020 03:34:14 +0000 Message-Id: <1593833659-26224-1-git-send-email-guoren@kernel.org> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-csky-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-csky@vger.kernel.org From: Guo Ren The patchset includes kprobe/uprobe support and some related fixups. Patrick provides HAVE_REGS_AND_STACK_ACCESS_API support and some kprobe's code. The framework of k/uprobe is from csky but also refers to other arches'. There is no single step exception in riscv ISA, so utilize ebreak to simulate. Some pc related instructions couldn't be executed out of line and some system/fence instructions couldn't be a trace site at all. So we give out a reject list and simulate list in decode-insn.c. You could use uprobe to test simulate code like this: echo 'p:enter_current_state_one /hello:0x6e4 a0=%a0 a1=%a1' >> /sys/kernel/debug/tracing/uprobe_events echo 1 > /sys/kernel/debug/tracing/events/uprobes/enable /hello ^C cat /sys/kernel/debug/tracing/trace tracer: nop entries-in-buffer/entries-written: 1/1 #P:1 _-----=> irqs-off / _----=> need-resched | / _---=> hardirq/softirq || / _--=> preempt-depth ||| / delay TASK-PID CPU# |||| TIMESTAMP FUNCTION | | | |||| | | hello-94 [000] d... 55.404242: enter_current_state_one: (0x106e4) a0=0x1 a1=0x3fffa8ada8 Be care /hello:0x6e4 is the file offset in elf and it relate to 0x106e4 in memory and hello is your target elf program. Try kprobe like this: echo 'p:myprobe _do_fork dfd=%a0 filename=%a1 flags=%a2 mode=+4($stack)' > /sys/kernel/debug/tracing/kprobe_events echo 'r:myretprobe _do_fork $retval' >> /sys/kernel/debug/tracing/kprobe_event echo 1 >/sys/kernel/debug/tracing/events/kprobes/enable cat /sys/kernel/debug/tracing/trace tracer: nop entries-in-buffer/entries-written: 2/2 #P:1 _-----=> irqs-off / _----=> need-resched | / _---=> hardirq/softirq || / _--=> preempt-depth ||| / delay TASK-PID CPU# |||| TIMESTAMP FUNCTION | | | |||| | | sh-92 [000] .n.. 131.804230: myprobe: (_do_fork+0x0/0x2e6) dfd=0xffffffe03929fdf8 filename=0x0 flags=0x101000 mode=0x1200000ffffffe0 sh-92 [000] d... 131.806607: myretprobe: (__do_sys_clone+0x70/0x82 <- _do_fork) arg1=0x5f cat /sys/kernel/debug/tracing/trace Guo Ren (4): riscv: Fixup __vdso_gettimeofday broke dynamic ftrace riscv: Fixup compile error BUILD_BUG_ON failed riscv: Add kprobes supported riscv: Add uprobes supported Patrick Stählin (1): RISC-V: Implement ptrace regs and stack API arch/riscv/Kconfig | 6 + arch/riscv/include/asm/kprobes.h | 40 +++ arch/riscv/include/asm/probes.h | 24 ++ arch/riscv/include/asm/processor.h | 1 + arch/riscv/include/asm/ptrace.h | 29 ++ arch/riscv/include/asm/thread_info.h | 4 +- arch/riscv/include/asm/uprobes.h | 40 +++ arch/riscv/kernel/Makefile | 1 + arch/riscv/kernel/patch.c | 8 +- arch/riscv/kernel/probes/Makefile | 5 + arch/riscv/kernel/probes/decode-insn.c | 48 +++ arch/riscv/kernel/probes/decode-insn.h | 18 + arch/riscv/kernel/probes/kprobes.c | 471 ++++++++++++++++++++++++++ arch/riscv/kernel/probes/kprobes_trampoline.S | 93 +++++ arch/riscv/kernel/probes/simulate-insn.c | 85 +++++ arch/riscv/kernel/probes/simulate-insn.h | 47 +++ arch/riscv/kernel/probes/uprobes.c | 186 ++++++++++ arch/riscv/kernel/ptrace.c | 99 ++++++ arch/riscv/kernel/signal.c | 3 + arch/riscv/kernel/traps.c | 19 ++ arch/riscv/kernel/vdso/Makefile | 3 + arch/riscv/mm/fault.c | 11 + 22 files changed, 1238 insertions(+), 3 deletions(-) create mode 100644 arch/riscv/include/asm/probes.h create mode 100644 arch/riscv/include/asm/uprobes.h create mode 100644 arch/riscv/kernel/probes/Makefile create mode 100644 arch/riscv/kernel/probes/decode-insn.c create mode 100644 arch/riscv/kernel/probes/decode-insn.h create mode 100644 arch/riscv/kernel/probes/kprobes.c create mode 100644 arch/riscv/kernel/probes/kprobes_trampoline.S create mode 100644 arch/riscv/kernel/probes/simulate-insn.c create mode 100644 arch/riscv/kernel/probes/simulate-insn.h create mode 100644 arch/riscv/kernel/probes/uprobes.c -- 2.7.4 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=-4.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=no 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 E73B6C433DF for ; Sat, 4 Jul 2020 03:34:48 +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 9D0CB208D5 for ; Sat, 4 Jul 2020 03:34:48 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="xvKCOcT3"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="Mip3htu2" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9D0CB208D5 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-riscv-bounces+linux-riscv=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:MIME-Version:Message-Id:Date:Subject:To:From: 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=mllmTegI1/bYptojxpAeVLgmQz1UyQSe8Aef/iDSMfw=; b=xvKCOcT3ZlBdKx9njX2M36u+MJ mogy6q04B05KL5htGR3VtCVtQi5LRlEkl9ctR5BCGdVzbgv8CXpe+oVqLUf42xgtZZTNtPp4BH3YQ Nqqc+deYe3ZKWP8rqUv82/SlWzZx38t42pkA2pqtSyeZtVlS59A707aOQE/piXCCCRLCILoTiYczp A+IROeDaqyk56STOdInUdOv3jKy5T3jtKVllW3zSlFe7fGaGRRRmrydmIhqoSMzm0rsG0OzxaLdp6 l4oKuFpSltCu+mxS7FAj2hCEH2DoEyUbf2geLOcok36HfXYy1mlWadsYmfODWZ109ZkU5uOCFMbWb ZBfknK1A==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jrYwl-0007nX-No; Sat, 04 Jul 2020 03:34:35 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jrYwh-0007n9-Uc for linux-riscv@lists.infradead.org; Sat, 04 Jul 2020 03:34:32 +0000 Received: from localhost.localdomain (89.208.247.74.16clouds.com [89.208.247.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 9E73B20899; Sat, 4 Jul 2020 03:34:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1593833670; bh=eTy2eFqdtYkG5FT9y7JyU5E4q34c6fUXRLFGwI6SVv0=; h=From:To:Cc:Subject:Date:From; b=Mip3htu2BiZjSdSMqYC7r5gtY2NOS7SFQXicW+fYddcldPhpvpkhMnVfYk4CTMtZW c21VJrSu4B4Gba8KFXGPr3bXEO7K21LYFcGlFORoj0pmEO2oEnVJMAkLnN8FG0AK/u oHlNwdAlCXEzWmYSgHlnC9f0NvEufYf+6F9b7fMA= From: guoren@kernel.org To: palmerdabbelt@google.com, paul.walmsley@sifive.com, anup@brainfault.org, greentime.hu@sifive.com, zong.li@sifive.com, me@packi.ch, bjorn.topel@gmail.com, atish.patra@wdc.com Subject: [PATCH V1 0/5] riscv: Add k/uprobe supported Date: Sat, 4 Jul 2020 03:34:14 +0000 Message-Id: <1593833659-26224-1-git-send-email-guoren@kernel.org> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200703_233432_237640_FA92F982 X-CRM114-Status: UNSURE ( 9.58 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-riscv@lists.infradead.org, Guo Ren , guoren@kernel.org, linux-kernel@vger.kernel.org, linux-csky@vger.kernel.org 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 RnJvbTogR3VvIFJlbiA8Z3VvcmVuQGxpbnV4LmFsaWJhYmEuY29tPgoKVGhlIHBhdGNoc2V0IGlu Y2x1ZGVzIGtwcm9iZS91cHJvYmUgc3VwcG9ydCBhbmQgc29tZSByZWxhdGVkIGZpeHVwcy4KUGF0 cmljayBwcm92aWRlcyBIQVZFX1JFR1NfQU5EX1NUQUNLX0FDQ0VTU19BUEkgc3VwcG9ydCBhbmQg c29tZQprcHJvYmUncyBjb2RlLiBUaGUgZnJhbWV3b3JrIG9mIGsvdXByb2JlIGlzIGZyb20gY3Nr eSBidXQgYWxzbyByZWZlcnMKdG8gb3RoZXIgYXJjaGVzJy4KClRoZXJlIGlzIG5vIHNpbmdsZSBz dGVwIGV4Y2VwdGlvbiBpbiByaXNjdiBJU0EsIHNvIHV0aWxpemUgZWJyZWFrIHRvCnNpbXVsYXRl LiBTb21lIHBjIHJlbGF0ZWQgaW5zdHJ1Y3Rpb25zIGNvdWxkbid0IGJlIGV4ZWN1dGVkIG91dCBv ZiBsaW5lCmFuZCBzb21lIHN5c3RlbS9mZW5jZSBpbnN0cnVjdGlvbnMgY291bGRuJ3QgYmUgYSB0 cmFjZSBzaXRlIGF0IGFsbC4KU28gd2UgZ2l2ZSBvdXQgYSByZWplY3QgbGlzdCBhbmQgc2ltdWxh dGUgbGlzdCBpbiBkZWNvZGUtaW5zbi5jLgoKWW91IGNvdWxkIHVzZSB1cHJvYmUgdG8gdGVzdCBz aW11bGF0ZSBjb2RlIGxpa2UgdGhpczoKCiBlY2hvICdwOmVudGVyX2N1cnJlbnRfc3RhdGVfb25l IC9oZWxsbzoweDZlNCBhMD0lYTAgYTE9JWExJyA+PiAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5n L3Vwcm9iZV9ldmVudHMKIGVjaG8gMSA+IC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvZXZlbnRz L3Vwcm9iZXMvZW5hYmxlCiAvaGVsbG8KIF5DCiBjYXQgL3N5cy9rZXJuZWwvZGVidWcvdHJhY2lu Zy90cmFjZQogdHJhY2VyOiBub3AKCiBlbnRyaWVzLWluLWJ1ZmZlci9lbnRyaWVzLXdyaXR0ZW46 IDEvMSAgICNQOjEKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8tLS0tLT0+IGlycXMt b2ZmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfLS0tLT0+IG5lZWQtcmVzY2hlZAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAvIF8tLS09PiBoYXJkaXJxL3NvZnRpcnEKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHx8IC8gXy0tPT4gcHJlZW1wdC1kZXB0aAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgfHx8IC8gICAgIGRlbGF5CiAgICAgICAgICAgVEFTSy1QSUQg ICBDUFUjICB8fHx8ICAgIFRJTUVTVEFNUCAgRlVOQ1RJT04KICAgICAgICAgICAgICB8IHwgICAg ICAgfCAgIHx8fHwgICAgICAgfCAgICAgICAgIHwKICAgICAgICAgIGhlbGxvLTk0ICAgIFswMDBd IGQuLi4gICAgNTUuNDA0MjQyOiBlbnRlcl9jdXJyZW50X3N0YXRlX29uZTogKDB4MTA2ZTQpIGEw PTB4MSBhMT0weDNmZmZhOGFkYTgKCkJlIGNhcmUgL2hlbGxvOjB4NmU0IGlzIHRoZSBmaWxlIG9m ZnNldCBpbiBlbGYgYW5kIGl0IHJlbGF0ZSB0byAweDEwNmU0CmluIG1lbW9yeSBhbmQgaGVsbG8g aXMgeW91ciB0YXJnZXQgZWxmIHByb2dyYW0uCgpUcnkga3Byb2JlIGxpa2UgdGhpczoKCiBlY2hv ICdwOm15cHJvYmUgX2RvX2ZvcmsgZGZkPSVhMCBmaWxlbmFtZT0lYTEgZmxhZ3M9JWEyIG1vZGU9 KzQoJHN0YWNrKScgPiAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL2twcm9iZV9ldmVudHMKIGVj aG8gJ3I6bXlyZXRwcm9iZSBfZG9fZm9yayAkcmV0dmFsJyA+PiAvc3lzL2tlcm5lbC9kZWJ1Zy90 cmFjaW5nL2twcm9iZV9ldmVudAoKIGVjaG8gMSA+L3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9l dmVudHMva3Byb2Jlcy9lbmFibGUKIGNhdCAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL3RyYWNl CiB0cmFjZXI6IG5vcAoKIGVudHJpZXMtaW4tYnVmZmVyL2VudHJpZXMtd3JpdHRlbjogMi8yICAg I1A6MQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXy0tLS0tPT4gaXJxcy1vZmYKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAvIF8tLS0tPT4gbmVlZC1yZXNjaGVkCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IC8gXy0tLT0+IGhhcmRpcnEvc29mdGlycQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgfHwgLyBfLS09PiBwcmVlbXB0LWRlcHRoCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8fHwgLyAgICAgZGVsYXkKICAgICAgICAgICBUQVNLLVBJRCAgIENQVSMg IHx8fHwgICAgVElNRVNUQU1QICBGVU5DVElPTgogICAgICAgICAgICAgIHwgfCAgICAgICB8ICAg fHx8fCAgICAgICB8ICAgICAgICAgfAogICAgICAgICAgICAgc2gtOTIgICAgWzAwMF0gLm4uLiAg IDEzMS44MDQyMzA6IG15cHJvYmU6IChfZG9fZm9yaysweDAvMHgyZTYpIGRmZD0weGZmZmZmZmUw MzkyOWZkZjggZmlsZW5hbWU9MHgwIGZsYWdzPTB4MTAxMDAwIG1vZGU9MHgxMjAwMDAwZmZmZmZm ZTAKICAgICAgICAgICAgIHNoLTkyICAgIFswMDBdIGQuLi4gICAxMzEuODA2NjA3OiBteXJldHBy b2JlOiAoX19kb19zeXNfY2xvbmUrMHg3MC8weDgyIDwtIF9kb19mb3JrKSBhcmcxPTB4NWYKIGNh dCAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL3RyYWNlCgpHdW8gUmVuICg0KToKICByaXNjdjog Rml4dXAgX192ZHNvX2dldHRpbWVvZmRheSBicm9rZSBkeW5hbWljIGZ0cmFjZQogIHJpc2N2OiBG aXh1cCBjb21waWxlIGVycm9yIEJVSUxEX0JVR19PTiBmYWlsZWQKICByaXNjdjogQWRkIGtwcm9i ZXMgc3VwcG9ydGVkCiAgcmlzY3Y6IEFkZCB1cHJvYmVzIHN1cHBvcnRlZAoKUGF0cmljayBTdMOk aGxpbiAoMSk6CiAgUklTQy1WOiBJbXBsZW1lbnQgcHRyYWNlIHJlZ3MgYW5kIHN0YWNrIEFQSQoK IGFyY2gvcmlzY3YvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNiArCiBh cmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2twcm9iZXMuaCAgICAgICAgICAgICAgfCAgNDAgKysrCiBh cmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Byb2Jlcy5oICAgICAgICAgICAgICAgfCAgMjQgKysKIGFy Y2gvcmlzY3YvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmggICAgICAgICAgICB8ICAgMSArCiBhcmNo L3Jpc2N2L2luY2x1ZGUvYXNtL3B0cmFjZS5oICAgICAgICAgICAgICAgfCAgMjkgKysKIGFyY2gv cmlzY3YvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaCAgICAgICAgICB8ICAgNCArLQogYXJjaC9y aXNjdi9pbmNsdWRlL2FzbS91cHJvYmVzLmggICAgICAgICAgICAgIHwgIDQwICsrKwogYXJjaC9y aXNjdi9rZXJuZWwvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGFyY2gvcmlz Y3Yva2VybmVsL3BhdGNoLmMgICAgICAgICAgICAgICAgICAgICB8ICAgOCArLQogYXJjaC9yaXNj di9rZXJuZWwvcHJvYmVzL01ha2VmaWxlICAgICAgICAgICAgIHwgICA1ICsKIGFyY2gvcmlzY3Yv a2VybmVsL3Byb2Jlcy9kZWNvZGUtaW5zbi5jICAgICAgICB8ICA0OCArKysKIGFyY2gvcmlzY3Yv a2VybmVsL3Byb2Jlcy9kZWNvZGUtaW5zbi5oICAgICAgICB8ICAxOCArCiBhcmNoL3Jpc2N2L2tl cm5lbC9wcm9iZXMva3Byb2Jlcy5jICAgICAgICAgICAgfCA0NzEgKysrKysrKysrKysrKysrKysr KysrKysrKysKIGFyY2gvcmlzY3Yva2VybmVsL3Byb2Jlcy9rcHJvYmVzX3RyYW1wb2xpbmUuUyB8 ICA5MyArKysrKwogYXJjaC9yaXNjdi9rZXJuZWwvcHJvYmVzL3NpbXVsYXRlLWluc24uYyAgICAg IHwgIDg1ICsrKysrCiBhcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMvc2ltdWxhdGUtaW5zbi5oICAg ICAgfCAgNDcgKysrCiBhcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMvdXByb2Jlcy5jICAgICAgICAg ICAgfCAxODYgKysrKysrKysrKwogYXJjaC9yaXNjdi9rZXJuZWwvcHRyYWNlLmMgICAgICAgICAg ICAgICAgICAgIHwgIDk5ICsrKysrKwogYXJjaC9yaXNjdi9rZXJuZWwvc2lnbmFsLmMgICAgICAg ICAgICAgICAgICAgIHwgICAzICsKIGFyY2gvcmlzY3Yva2VybmVsL3RyYXBzLmMgICAgICAgICAg ICAgICAgICAgICB8ICAxOSArKwogYXJjaC9yaXNjdi9rZXJuZWwvdmRzby9NYWtlZmlsZSAgICAg ICAgICAgICAgIHwgICAzICsKIGFyY2gvcmlzY3YvbW0vZmF1bHQuYyAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAxMSArCiAyMiBmaWxlcyBjaGFuZ2VkLCAxMjM4IGluc2VydGlvbnMoKyksIDMg ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9w cm9iZXMuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvcmlzY3YvaW5jbHVkZS9hc20vdXByb2Jl cy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9yaXNjdi9rZXJuZWwvcHJvYmVzL01ha2VmaWxl CiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9yaXNjdi9rZXJuZWwvcHJvYmVzL2RlY29kZS1pbnNu LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMvZGVjb2RlLWlu c24uaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvcmlzY3Yva2VybmVsL3Byb2Jlcy9rcHJvYmVz LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMva3Byb2Jlc190 cmFtcG9saW5lLlMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMv c2ltdWxhdGUtaW5zbi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9yaXNjdi9rZXJuZWwvcHJv YmVzL3NpbXVsYXRlLWluc24uaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvcmlzY3Yva2VybmVs L3Byb2Jlcy91cHJvYmVzLmMKCi0tIAoyLjcuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNj dkBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4v bGlzdGluZm8vbGludXgtcmlzY3YK