From owner-freebsd-arm@freebsd.org Sun Jul 5 03:16:48 2015 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 88797AAE4 for ; Sun, 5 Jul 2015 03:16:48 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from kenobi.freebsd.org (kenobi.freebsd.org [IPv6:2001:1900:2254:206a::16:76]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 73E86350B for ; Sun, 5 Jul 2015 03:16:48 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from bugs.freebsd.org ([127.0.1.118]) by kenobi.freebsd.org (8.14.9/8.14.9) with ESMTP id t653GmUA065266 for ; Sun, 5 Jul 2015 03:16:48 GMT (envelope-from bugzilla-noreply@freebsd.org) From: bugzilla-noreply@freebsd.org To: freebsd-arm@FreeBSD.org Subject: [Bug 201078] [PATCH] Beaglebone Black Expand memory to 512MB in dts Date: Sun, 05 Jul 2015 03:16:48 +0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: Base System X-Bugzilla-Component: arm X-Bugzilla-Version: 11.0-CURRENT X-Bugzilla-Keywords: patch X-Bugzilla-Severity: Affects Only Me X-Bugzilla-Who: manu@bidouilliste.com X-Bugzilla-Status: Closed X-Bugzilla-Priority: --- X-Bugzilla-Assigned-To: freebsd-arm@FreeBSD.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: resolution bug_status Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: https://bugs.freebsd.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jul 2015 03:16:48 -0000 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=201078 Emmanuel Vadot changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |Works As Intended Status|New |Closed --- Comment #1 from Emmanuel Vadot --- I did some more test, the problem is only present when using a static dtb file. When using ubldr it detect the correct amount of memory but the kernel ignores it and use the memory section provided in the static dtb file. As someone said to me on irc, the static dtb file shouldn't be used anymore this bug can be closed. Sorry for the noise. Cheers, -- You are receiving this mail because: You are the assignee for the bug. From owner-freebsd-arm@freebsd.org Mon Jul 6 05:45:03 2015 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C0E54994BE5 for ; Mon, 6 Jul 2015 05:45:03 +0000 (UTC) (envelope-from russ.haley@gmail.com) Received: from mail-pd0-x22a.google.com (mail-pd0-x22a.google.com [IPv6:2607:f8b0:400e:c02::22a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 9A09D3C3F for ; Mon, 6 Jul 2015 05:45:03 +0000 (UTC) (envelope-from russ.haley@gmail.com) Received: by pdbep18 with SMTP id ep18so99442541pdb.1 for ; Sun, 05 Jul 2015 22:45:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=L+qjva1+N+ICoyELAQmF2LASjtaYyZfm+suu6fiDGhs=; b=CQgO0mB+TYwdwJwNye4x6iUZ4MKsnlyfzGeDq+BLhpbE+yiv1DRJzR4voTRlWb7E3d eYkV6wSXWMvl2vhROCIxiRoMbEcYGHC7JPqHvRMdcZbSnhMYL0lnjSw4Hbf3QACY4l3n G9TQUzC6y2P8+bI8x36gQEk1KWRM2KkYDMVhTAFK23vt5FLnBOi83kJUVFMTbYwOyU7A o35WvWeroJzn0XpRZe8UhjuRZJJYUBkVwfII1m6JdPFOe3tgFVcl0hExfHe32cBvMQxG 1Nm3wZ1qzCVEXXwgf10NZkfhoqeLwKzruQwljV1tyZSnDSGaQX3zJ2HgP0UTu2v0QELc fRCg== MIME-Version: 1.0 X-Received: by 10.68.88.33 with SMTP id bd1mr75254918pbb.124.1436161503012; Sun, 05 Jul 2015 22:45:03 -0700 (PDT) Received: by 10.66.144.195 with HTTP; Sun, 5 Jul 2015 22:45:02 -0700 (PDT) Date: Sun, 5 Jul 2015 22:45:02 -0700 Message-ID: Subject: make a simple device driver From: Russell Haley To: freebsd-arm Content-Type: text/plain; charset=UTF-8 X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jul 2015 05:45:03 -0000 Hello again, I'm still waiting to get my hands on my hummingboard but I started to look into device drivers by following the handbook. I have done the following on a source listing for CURRENT: 1) Created folder called echo_driver under /usr/src/sys/dev 2) Created new file called echo_driver.c with the code pasted from this handbook page: https://www.freebsd.org/doc/en/books/arch-handbook/driverbasics-char.html 3) created a make file with these contents: SRCS= echo_driver.c KMOD= echo_driver .include as per the Handbook https://www.freebsd.org/doc/en/books/arch-handbook/driverbasics-kld.html when I run make under /usr/src/sys/dev/echo_driver I get the following error: make: don't know how to make auto.obj.mk. Stop make: stopped in /usr/src/sys/dev/echo_driver I tried drilling through the makefile dependencies as best as I understood it and saw that /usr/src/share/mk contains the BSD make files (good to know!) and in the file auto.obj.mk is the first file in Makefile. Any help would be great. Thanks, Russ From owner-freebsd-arm@freebsd.org Mon Jul 6 09:14:29 2015 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 8A190729B5 for ; Mon, 6 Jul 2015 09:14:29 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: from phabric-backend.isc.freebsd.org (phabric-backend.isc.freebsd.org [IPv6:2001:4f8:3:ffe0:406a:0:50:2]) by mx1.freebsd.org (Postfix) with ESMTP id 680691E86 for ; Mon, 6 Jul 2015 09:14:29 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: by phabric-backend.isc.freebsd.org (Postfix, from userid 1346) id 648C3C023; Mon, 6 Jul 2015 09:14:29 +0000 (UTC) Date: Mon, 6 Jul 2015 09:14:29 +0000 To: freebsd-arm@freebsd.org From: "andrew (Andrew Turner)" Reply-to: D2378+327+81b4fa511783cd72@FreeBSD.org Subject: [Differential] [Updated] D2378: Introduce ITS support for ARM64 Message-ID: X-Priority: 3 Thread-Topic: D2378: Introduce ITS support for ARM64 X-Herald-Rules: <28>, <31>, <32>, <34>, <8> X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-Cc: X-Phabricator-Cc: X-Phabricator-Cc: X-Phabricator-Cc: X-Phabricator-Cc: X-Phabricator-Cc: X-Phabricator-Cc: In-Reply-To: References: Thread-Index: ZTc3NjU2YTNlNjQxNDIwYzYxMmJlZjFmYzJmIFWaRvU= Precedence: bulk X-Phabricator-Sent-This-Message: Yes X-Mail-Transport-Agent: MetaMTA X-Auto-Response-Suppress: All X-Phabricator-Mail-Tags: , MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="utf-8" X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.20 List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jul 2015 09:14:29 -0000 andrew added a comment. Can you upload a patch with more context? If you're not using arc https://wiki.freebsd.org/CodeReview explains how to do it with svn and git. INLINE COMMENTS sys/arm64/arm64/gic_v3_fdt.c:116 This is an odd place for the prototype. sys/arm64/arm64/gic_v3_fdt.c:140 You should be checking the return value, e.g. if (gic_v3_ofw_bus_attach(dev) != 0) { sys/arm64/arm64/gic_v3_fdt.c:199-200 Is this because it hasn't been added to the code, or because of that the fdt bindings say? sys/arm64/arm64/gic_v3_fdt.c:280 These should be collected at the start of the file. sys/arm64/arm64/gic_v3_fdt.c:299 Why is this here? Normally we put the probe function early on in the file. sys/arm64/arm64/gic_v3_its.c:671 Why do we need a full barrier, the comment should explain why. sys/arm64/arm64/gic_v3_its.c:818 Why do we need to flush the cache? sys/arm64/arm64/gic_v3_its.c:821 Why do we need a memory barrier? sys/arm64/arm64/gic_v3_its.c:1077-1080 Can you find out why? Marc Zyngier did the Linux driver and might be able to tell you why they have such a timeout. sys/arm64/arm64/gic_v3_its.c:162 Extra brace sys/arm64/arm64/gic_v3_its.c:686 Why do we need a full barrier here? The comment doesn't explain why. sys/arm64/arm64/gic_v3_its.c:840 Why do we need a cache wb or dsb? A comment explaining why would be useful. REVISION DETAIL https://reviews.freebsd.org/D2378 EMAIL PREFERENCES https://reviews.freebsd.org/settings/panel/emailpreferences/ To: zbb, imp, ian, emaste, manpages, andrew Cc: eadler, gnn, kib, emaste, andrew, freebsd-arm-list, imp From owner-freebsd-arm@freebsd.org Mon Jul 6 09:17:09 2015 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id CB76E98EF7 for ; Mon, 6 Jul 2015 09:17:09 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: from phabric-backend.isc.freebsd.org (phabric-backend.isc.freebsd.org [IPv6:2001:4f8:3:ffe0:406a:0:50:2]) by mx1.freebsd.org (Postfix) with ESMTP id B2EF71FE6 for ; Mon, 6 Jul 2015 09:17:09 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: by phabric-backend.isc.freebsd.org (Postfix, from userid 1346) id 951EEC6A9; Mon, 6 Jul 2015 09:17:09 +0000 (UTC) Date: Mon, 6 Jul 2015 09:17:09 +0000 To: freebsd-arm@freebsd.org From: "andrew (Andrew Turner)" Reply-to: D2378+327+81b4fa511783cd72@FreeBSD.org Subject: [Differential] [Commented On] D2378: Introduce ITS support for ARM64 Message-ID: <80abf2b86e82b00815355987e2961cae@localhost.localdomain> X-Priority: 3 Thread-Topic: D2378: Introduce ITS support for ARM64 X-Herald-Rules: <28>, <31>, <32>, <34>, <8> X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-Cc: X-Phabricator-Cc: X-Phabricator-Cc: X-Phabricator-Cc: X-Phabricator-Cc: X-Phabricator-Cc: X-Phabricator-Cc: In-Reply-To: References: Thread-Index: ZTc3NjU2YTNlNjQxNDIwYzYxMmJlZjFmYzJmIFWaR5U= Precedence: bulk X-Phabricator-Sent-This-Message: Yes X-Mail-Transport-Agent: MetaMTA X-Auto-Response-Suppress: All X-Phabricator-Mail-Tags: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="utf-8" X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.20 List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jul 2015 09:17:09 -0000 andrew added inline comments. INLINE COMMENTS sys/arm64/arm64/gic_v3_its.c:163 Ignore this, it was an old comment I missed REVISION DETAIL https://reviews.freebsd.org/D2378 EMAIL PREFERENCES https://reviews.freebsd.org/settings/panel/emailpreferences/ To: zbb, imp, ian, emaste, manpages, andrew Cc: eadler, gnn, kib, emaste, andrew, freebsd-arm-list, imp From owner-freebsd-arm@freebsd.org Mon Jul 6 10:06:46 2015 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6FF7699350B for ; Mon, 6 Jul 2015 10:06:46 +0000 (UTC) (envelope-from usenet@ulrich-grey.de) Received: from mo6-p00-ob.smtp.rzone.de (mo6-p00-ob.smtp.rzone.de [IPv6:2a01:238:20a:202:5300::6]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "*.smtp.rzone.de", Issuer "TeleSec ServerPass DE-2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 553A61E27 for ; Mon, 6 Jul 2015 10:06:44 +0000 (UTC) (envelope-from usenet@ulrich-grey.de) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1436177200; l=160462; s=domk; d=ulrich-grey.de; h=Content-Type:Mime-Version:Subject:To:From:Date; bh=dbKtppJ187fUSGOPyFjXtxRcgXFi8CPsgQxJOocGU2Q=; b=n0AgzWV4O67QVIFQKgVt4Jn6hJqqqHKh3Z8MdmqqyPYR55zycobrLKjEEiA8ASbhwSE 4CtilTp3QPSM1o2E4bN4v19+qWx52veOWi/Y7hQPAmNW1UQNkkPm9ikF4HZl/sSOV+Gkr zPib1T+nNCie3G7EzOM6Tk4frgpPl0WEI4Y= X-RZG-AUTH: :OX8Be0W8W+pMC3rDLL/lo2xV/LZTbZkYhOcjg8suic3iYr/B8J9Lzp3TJg47usv81TMr X-RZG-CLASS-ID: mo00 Received: from quad (p548684F7.dip0.t-ipconnect.de [84.134.132.247]) by smtp.strato.de (RZmta 37.8 DYNA|AUTH) with ESMTPSA id u01f4er66A6ak0Y (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (curve secp521r1 with 521 ECDH bits, eq. 15360 bits RSA)) (Client did not present a certificate) for ; Mon, 6 Jul 2015 12:06:36 +0200 (CEST) Date: Mon, 6 Jul 2015 10:06:35 +0000 From: Ulrich Grey To: freebsd-arm@freebsd.org Subject: Wandboard-quad hangs during port install Message-Id: <20150706100635.ea0a4250f78494f45ff9cd5c@ulrich-grey.de> Organization: - X-Mailer: Sylpheed 3.4.2 (GTK+ 2.24.25; armv6-portbld-freebsd11.0) Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Multipart=_Mon__6_Jul_2015_10_06_35_+0000_JoajtEIb+uD6jE1O" X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jul 2015 10:06:46 -0000 This is a multi-part message in MIME format. --Multipart=_Mon__6_Jul_2015_10_06_35_+0000_JoajtEIb+uD6jE1O Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Hello, I am running this snapshot image (11.0-CURRENT FreeBSD 11.0-CURRENT #0 r284969: Wed Jul 1) on a wandboard-quad. During installation of security/gcr the system hangs. Breaking to debugger shows this (see attached file): root@wqtest:/usr/local/DEVEL/ports/x11-toolkits/gtk30 # KDB: enter: Break to debugger [ thread pid 11 tid 100007 ] Stopped at $d.9: ldrb r15, [r15, r15, ror r15]! db> bt Tracing pid 11 tid 100007 td 0xc6c596a0 db_trace_self() at db_trace_self pc = 0xc2480e00 lr = 0xc2042320 (db_stack_trace+0x108) sp = 0xe1ac6958 fp = 0xe1ac6970 r10 = 0xc25d12b0 db_stack_trace() at db_stack_trace+0x108 pc = 0xc2042320 lr = 0xc2041db8 (db_command+0x388) sp = 0xe1ac6978 fp = 0xe1ac6a18 r4 = 0x00000000 r5 = 0x00000000 r6 = 0x00000000 r10 = 0xc25d12b0 db_command() at db_command+0x388 pc = 0xc2041db8 lr = 0xc2041a20 (db_command_loop+0x74) sp = 0xe1ac6a20 fp = 0xe1ac6a30 r4 = 0xc24ccf5f r5 = 0xc24de460 r6 = 0xc25d129c r7 = 0xe1ac6c10 r8 = 0xc25c8320 r9 = 0xc2577ad4 r10 = 0xc25c8324 db_command_loop() at db_command_loop+0x74 pc = 0xc2041a20 lr = 0xc20445e4 (db_trap+0x108) sp = 0xe1ac6a38 fp = 0xe1ac6b50 --More-- r4 = 0x00000000 r5 = 0xc25d12a8 r6 = 0xc25c8348 r10 = 0xc25c8324 db_trap() at db_trap+0x108 pc = 0xc20445e4 lr = 0xc21f26ac (kdb_trap+0x184) sp = 0xe1ac6b58 fp = 0xe1ac6b80 r4 = 0x00000000 r5 = 0x00000001 r6 = 0xc25c8348 r7 = 0xe1ac6c10 kdb_trap() at kdb_trap+0x184 pc = 0xc21f26ac lr = 0xc249ad90 (undefinedinstruction+0x3a8) sp = 0xe1ac6b88 fp = 0xe1ac6c08 r4 = 0x00000000 r5 = 0x00000000 r6 = 0xc249a938 r7 = 0xe7ffffff r8 = 0xc6c596a0 r9 = 0xc21f2004 r10 = 0xe1ac6c10 undefinedinstruction() at undefinedinstruction+0x3a8 pc = 0xc249ad90 lr = 0xc2482488 (exception_exit) sp = 0xe1ac6c10 fp = 0xe1ac6cb0 r4 = 0xc6b27400 r5 = 0xc6b27488 r6 = 0x00000114 r7 = 0x00040000 r8 = 0x00000001 r9 = 0xc257aaf8 --More-- r10 = 0x00000000 exception_exit() at exception_exit pc = 0xc2482488 lr = 0xc21f1fec (kdb_alt_break_internal+0x1c4) sp = 0xe1ac6ca0 fp = 0xe1ac6cb0 r0 = 0xc25c8334 r1 = 0x00000000 r2 = 0x00000001 r3 = 0xc24e0c51 r4 = 0xc6b27400 r5 = 0xc6b27488 r6 = 0x00000114 r7 = 0x00040000 r8 = 0x00000001 r9 = 0xc257aaf8 r10 = 0x00000000 r12 = 0x00000000 $a.10() at $a.10 pc = 0xc21f2008 lr = 0xc21f1e20 (kdb_alt_break+0x10) sp = 0xe1ac6cb8 fp = 0xe1ac6cb8 r4 = 0xc6b27400 r5 = 0xc6b27488 r6 = 0x00000114 r7 = 0x00040000 kdb_alt_break() at kdb_alt_break+0x10 pc = 0xc21f1e20 lr = 0xc207a06c (uart_intr_rxready+0x90) sp = 0xe1ac6cc0 fp = 0xe1ac6cd8 uart_intr_rxready() at uart_intr_rxready+0x90 pc = 0xc207a06c lr = 0xc207ac04 (uart_intr+0x120) --More-- sp = 0xe1ac6ce0 fp = 0xe1ac6d20 r4 = 0xc6b33b00 r5 = 0xc6b27400 r6 = 0xc6b27584 r10 = 0x00000000 uart_intr() at uart_intr+0x120 pc = 0xc207ac04 lr = 0xc216e64c (intr_event_handle+0x70) sp = 0xe1ac6d28 fp = 0xe1ac6d40 r4 = 0xc6b33b00 r5 = 0xe1ac6d60 r6 = 0x00000000 r7 = 0xc6b1d2c0 r8 = 0x00000000 r9 = 0xc6c596a0 r10 = 0x00000000 intr_event_handle() at intr_event_handle+0x70 pc = 0xc216e64c lr = 0xc24844c4 (arm_irq_handler+0x6c) sp = 0xe1ac6d48 fp = 0xe1ac6d58 r4 = 0xe1ac6d60 r5 = 0x0000003a r6 = 0xc25db8d4 r7 = 0xc25cf814 r8 = 0xc2589010 r9 = 0x00000000 arm_irq_handler() at arm_irq_handler+0x6c pc = 0xc24844c4 lr = 0xc2482488 (exception_exit) sp = 0xe1ac6d60 fp = 0xe1ac6df8 r4 = 0xc6c596a0 r5 = 0xc6b3496c --More-- r6 = 0xc6b34900 r7 = 0xc6b34910 exception_exit() at exception_exit pc = 0xc2482488 lr = 0xc2484e60 (spinlock_exit+0x10) sp = 0xe1ac6df0 fp = 0xe1ac6df8 r0 = 0x00000000 r1 = 0x000000c0 r2 = 0x600000d3 r3 = 0x60000013 r4 = 0xc6c596a0 r5 = 0xc6b3496c r6 = 0xc6b34900 r7 = 0xc6b34910 r8 = 0xc2589010 r9 = 0x00000000 r10 = 0x00000000 r12 = 0x00000001 spinlock_exit() at spinlock_exit+0x3c pc = 0xc2484e8c lr = 0xc216ef20 (ithread_loop+0x1f4) sp = 0xe1ac6e00 fp = 0xe1ac6e30 r4 = 0xc6b14a50 r10 = 0x00000000 ithread_loop() at ithread_loop+0x1f4 pc = 0xc216ef20 lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1ac6e38 fp = 0xe1ac6e50 r4 = 0xc6c596a0 r5 = 0xc6c56378 r6 = 0xc216ed2c r7 = 0xc6b14a50 r8 = 0xe1ac6e58 r9 = 0x00000000 --More-- r10 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1ac6e58 fp = 0x00000000 r4 = 0xc216ed2c r5 = 0xc6b14a50 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1ac6e58 fp = 0x00000000 --Multipart=_Mon__6_Jul_2015_10_06_35_+0000_JoajtEIb+uD6jE1O Content-Type: text/plain; name="script20150705.txt" Content-Disposition: attachment; filename="script20150705.txt" Content-Transfer-Encoding: 7bit U-Boot 2013.10 (Jul 01 2015 - 08:14:15) CPU: Freescale i.MX6Q rev1.2 at 792 MHz Reset cause: WDOG Board: Wandboard DRAM: 2 GiB NAND: 0 MiB MMC: FSL_SDHC: 0, FSL_SDHC: 1 Environment is in MMC.... *** Warning - bad CRC, using default environment In: serial Out: serial Err: serial Net: FEC [PRIME] reading uEnv.txt ** Unable to read file uEnv.txt ** Hit any key to stop autoboot: 3  2  1  0 Booting from: mmc 0 ubldr reading ubldr 260690 bytes read in 27 ms (9.2 MiB/s) ## Starting application at 0x12000094 ... Consoles: U-Boot console Compatible U-Boot API signature found @8f570ed8 FreeBSD/armv6 U-Boot loader, Revision 1.2 (root@releng2.nyi.freebsd.org, Wed Jul 1 08:32:43 UTC 2015) DRAM: 2048MB MMC: no card present MMC: no card present MMC: no card present MMC: no card present MMC: no card present MMC: no card present MMC: no card present MMC: no card present MMC: no card present MMC: no card present MMC: no card present MMC: no card present Number of U-Boot devices: 4 U-Boot env: loaderdev='mmc 0' Found U-Boot device: disk Checking unit=0 slice= partition=... good. |/-\|/-\|/ -\|/-\|/-\|/-\|/boot/kernel/kernel data=0x5a859c+0x3ba64 /-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\syms=[0x4+0x5c520|/-+0x4+0x582f9\|/] Hit [Enter] to boot immediately, or any other key for command prompt. Booting [/boot/kernel/kernel] in 9 seconds... Booting [/boot/kernel/kernel] in 8 seconds... Booting [/boot/kernel/kernel]... -\|/-\|/-\|/-\|/-\|/-\/boot/dtb/imx6q-wandboard.dtb |size=0x7a5e Loaded DTB from file 'imx6q-wandboard.dtb'. /-\|Kernel entry at 0x12200100... Kernel args: (null) KDB: debugger backends: ddb KDB: current backend: ddb Copyright (c) 1992-2015 The FreeBSD Project. Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD is a registered trademark of The FreeBSD Foundation. FreeBSD 11.0-CURRENT #0 r284969: Wed Jul 1 08:37:49 UTC 2015 root@releng2.nyi.freebsd.org:/usr/obj/arm.armv6/usr/src/sys/IMX6 arm FreeBSD clang version 3.6.1 (tags/RELEASE_361/final 237755) 20150525 CPU: Cortex A9-r2 rev 10 (Cortex-A core) Supported features: ARM_ISA THUMB2 JAZELLE THUMBEE ARMv4 Security_Ext WB disabled EABT branch prediction enabled LoUU:2 LoC:2 LoUIS:2 Cache level 1: 32KB/32B 4-way data cache WB Read-Alloc Write-Alloc 32KB/32B 4-way instruction cache Read-Alloc real memory = 2147483648 (2048 MB) avail memory = 2093948928 (1996 MB) FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs random: entropy device external interface ofwbus0: simplebus0: on ofwbus0 simplebus1: mem 0x2000000-0x20fffff on simplebus0 simplebus2: mem 0x2000000-0x203ffff on simplebus1 imx6_anatop0: mem 0x20c8000-0x20c8fff irq 81,86,159 on simplebus1 simplebus3: on simplebus1 simplebus4: mem 0x2100000-0x21fffff on simplebus0 ocotp0: mem 0x21bc000-0x21bffff on simplebus4 ccm0: mem 0x20c4000-0x20c7fff irq 119,120 on simplebus1 l2cache0: mem 0xa02000-0xa02fff irq 124 on simplebus0 l2cache0: Part number: 0x3, release: 0x7 l2cache0: L2 Cache enabled: 1024KB/32B 16 ways imx_iomux0: mem 0x20e0000-0x20e3fff on simplebus1 gic0: mem 0xa01000-0xa01fff,0xa00100-0xa001ff on ofwbus0 gic0: pn 0x390, arch 0x1, rev 0x2, implementer 0x43b irqs 160 imx_gpt0: mem 0x2098000-0x209bfff irq 87 on simplebus1 Event timer "iMXGPT" frequency 66000000 Hz quality 800 Timecounter "iMXGPT" frequency 66000000 Hz quality 1000 mp_tmr0: mem 0xa00600-0xa0061f irq 29 on simplebus0 Event timer "MPCore" frequency 492000000 Hz quality 1000 uart0: mem 0x2020000-0x2023fff irq 58 on simplebus2 uart0: console (115200,n,8,1) gpio0: mem 0x209c000-0x209ffff irq 98,99 on simplebus1 gpiobus0: on gpio0 gpioc0: on gpio0 gpio1: mem 0x20a0000-0x20a3fff irq 100,101 on simplebus1 gpiobus1: on gpio1 gpioc1: on gpio1 gpio2: mem 0x20a4000-0x20a7fff irq 102,103 on simplebus1 gpiobus2: on gpio2 gpioc2: on gpio2 gpio3: mem 0x20a8000-0x20abfff irq 104,105 on simplebus1 gpiobus3: on gpio3 gpioc3: on gpio3 gpio4: mem 0x20ac000-0x20affff irq 106,107 on simplebus1 gpiobus4: on gpio4 gpioc4: on gpio4 gpio5: mem 0x20b0000-0x20b3fff irq 108,109 on simplebus1 gpiobus5: on gpio5 gpioc5: on gpio5 gpio6: mem 0x20b4000-0x20b7fff irq 110,111 on simplebus1 gpiobus6: on gpio6 gpioc6: on gpio6 usbphy0: mem 0x20c9000-0x20c9fff irq 76 on simplebus1 usbphy1: mem 0x20ca000-0x20cafff irq 77 on simplebus1 ehci0: mem 0x2184000-0x21841ff irq 75 on simplebus4 ehci0: [GIANT-LOCKED] usbus0: EHCI version 1.0 usbus0 on ehci0 ehci1: mem 0x2184200-0x21843ff irq 72 on simplebus4 ehci1: [GIANT-LOCKED] usbus1: EHCI version 1.0 usbus1 on ehci1 ffec0: mem 0x2188000-0x218bfff irq 150,151 on simplebus4 miibus0: on ffec0 atphy0: PHY 1 on miibus0 atphy0: none, 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseSX-FDX, 1000baseT-FDX, 1000baseT-FDX-master, auto ffec0: Ethernet address: 00:1f:7b:b4:17:64 sdhci_imx0: mem 0x2190000-0x2193fff irq 54 on simplebus4 mmc0: on sdhci_imx0 sdhci_imx1: mem 0x2194000-0x2197fff irq 55 on simplebus4 sdhci_imx2: mem 0x2198000-0x219bfff irq 56 on simplebus4 mmc1: on sdhci_imx2 iichb0: mem 0x21a0000-0x21a3fff irq 68 on simplebus4 iicbus0: on iichb0 iic0: on iicbus0 iichb1: mem 0x21a4000-0x21a7fff irq 69 on simplebus4 iicbus1: on iichb1 iic1: on iicbus1 iicbus1: at addr 0xa uart1: mem 0x21ec000-0x21effff irq 60 on simplebus4 Timecounters tick every 2.000 msec usbus0: 480Mbps High Speed USB v2.0 usbus1: 480Mbps High Speed USB v2.0 mmc0: No compatible cards found on bus ugen1.1: at usbus0 uhub0: on usbus0 Freescale> at usbus1 uhub1: on usbus1 mmc1: CMD7 failed, RESULT: 1 sdhci_imx2-slot0: Got data interrupt 0x00000002, but there is no active command. sdhci_imx2-slot0: ============== REGISTER DUMP ============== sdhci_imx2-slot0: Sys addr: 0x00000000 | Version: 0x00000002 sdhci_imx2-slot0: Blk size: 0x00000040 | Blk cnt: 0x00000001 sdhci_imx2-slot0: Argument: 0x00010000 | Trn mode: 0x00000012 sdhci_imx2-slot0: Present: 0x00fd0000 | Host ctl: 0x00000001 sdhci_imx2-slot0: Power: 0x0000000d | Blk gap: 0x00000080 sdhci_imx2-slot0: Wake-up: 0x00000000 | Clock: 0x0000fa07 sdhci_imx2-slot0: Timeout: 0x00000006 | Int stat: 0x00000000 sdhci_imx2-slot0: Int enab: 0x017f00fb | Sig enab: 0x017f00fb sdhci_imx2-slot0: AC12 err: 0x00000000 | Slot int: 0x00000000 sdhci_imx2-slot0: Caps: 0x0377c800 | Max curr: 0x80000012 sdhci_imx2-slot0: =========================================== mmcsd0: 16GB at mmc1 50.0MHz/4bit/65535-block Release APs Root mount waiting for: usbus1 usbus0 uhub0: 1 port with 1 removable, self powered uhub1: 1 port with 1 removable, self powered ugen1.2: at usbus1 uhub2: on usbus1 Root mount waiting for: usbus1 uhub2: 4 ports with 3 removable, self powered Root mount waiting for: usbus1 Root mount waiting for: usbus1 ugen1.3: at usbus1 umass0: on usbus1 da0 at umass-sim0 bus 0 scbus0 target 0 lun 0 da0: Fixed Direct Access SPC-2 SCSI device da0: Serial Number 2HB50SN0 da0: 40.000MB/s transfers da0: 152627MB (312581808 512 byte sectors: 255H 63S/T 19457C) da0: quirks=0x2 ugen1.4: at usbus1 uhub3: on usbus1 uhub3: 4 ports with 4 removable, self powered ugen1.5: at usbus1 umass1: on usbus1 da1 at umass-sim1 bus 1 scbus1 target 0 lun 0 da1: Fixed Direct Access SCSI device da1: Serial Number 100 da1: 40.000MB/s transfers da1: 57231MB (117210240 512 byte sectors: 255H 63S/T 7296C) da1: quirks=0x2 Trying to mount root from ufs:/dev/mmcsd0s2a [rw,noatime]... warning: no time-of-day clock registered, system time will not be set accurately Setting hostuuid: e0afe926-2313-11e5-9cd1-001f7bb41764. Setting hostid: 0x9fccb438. No suitable dump device was found. Starting file system checks: /dev/mmcsd0s2a: FILE SYSTEM CLEAN; SKIPPING CHECKS /dev/mmcsd0s2a: clean, 3586731 free (139 frags, 448324 blocks, 0.0% fragmentation) Mounting local file systems:. Setting hostname: wqtest. Additional TCP/IP options: drop SYN+FIN packets=YES. Setting up harvesting:[HIGH_PERFORMANCE],[FS_ATIME],SWI,INTERRUPT,NET_NG,NET_ETHER,NET_TUN,MOUSE,KEYBOARD,ATTACH,CACHED Feeding entropy:random: unblocking device. . ffec0: link state changed to DOWN Starting Network: lo0 ffec0. lo0: flags=8049 metric 0 mtu 16384 options=600003 inet 127.0.0.1 netmask 0xff000000 inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2 groups: lo nd6 options=21 ffec0: flags=8843 metric 0 mtu 1500 options=80008 ether 00:1f:7b:b4:17:64 inet 192.168.0.201 netmask 0xffffff00 broadcast 192.168.0.255 media: Ethernet autoselect (none) status: no carrier nd6 options=29 ELF ldconfig path: /lib /usr/lib /usr/lib/compat Starting devd. add net default: gateway 192.168.0.155 Additional inet routing options: ignore ICMP redirect=YES log ICMP redirect=YES. add net fe80::: gateway ::1 add net ff02::: gateway ::1 add net ::ffff:0.0.0.0: gateway ::1 add net ::0.0.0.0: gateway ::1 Creating and/or trimming log files. Starting syslogd. ffec0: link state changed to UP Starting casperd. Clearing /tmp. Updating motd:. Mounting late file systems:. Starting ntpd. Performing sanity check on sshd configuration. Starting sshd. Starting cron. Starting background file system checks in 60 seconds. Sun Jul 5 13:03:18 UTC 2015 FreeBSD/arm (wqtest) (ttyu0) login: root Password: Jul 5 13:06:18 wqtest login: ROOT LOGIN (root) ON ttyu0 FreeBSD 11.0-CURRENT (IMX6) #0 r284969: Wed Jul 1 08:37:49 UTC 2015 Welcome to FreeBSD! Release Notes, Errata: https://www.FreeBSD.org/releases/ Security Advisories: https://www.FreeBSD.org/security/ FreeBSD Handbook: https://www.FreeBSD.org/handbook/ FreeBSD FAQ: https://www.FreeBSD.org/faq/ Questions List: https://lists.FreeBSD.org/mailman/listinfo/freebsd-questions/ FreeBSD Forums: https://forums.FreeBSD.org/ Documents installed with the system are in the /usr/local/share/doc/freebsd/ directory, or can be installed later with: pkg install en-freebsd-doc For other languages, replace "en" with a language code like de or fr. Show the version of FreeBSD installed: freebsd-version ; uname -a Please include that output and any error messages when posting questions. Introduction to manual pages: man man FreeBSD directory layout: man hier Edit /etc/motd to change this login announcement. .... .... root@wqtest:/usr/local/DEVEL/ports/x11-toolkits/gtk30 # KDB: enter: Break to debugger [ thread pid 11 tid 100007 ] Stopped at $d.9: ldrb r15, [r15, r15, ror r15]! db> bt Tracing pid 11 tid 100007 td 0xc6c596a0 db_trace_self() at db_trace_self pc = 0xc2480e00 lr = 0xc2042320 (db_stack_trace+0x108) sp = 0xe1ac6958 fp = 0xe1ac6970 r10 = 0xc25d12b0 db_stack_trace() at db_stack_trace+0x108 pc = 0xc2042320 lr = 0xc2041db8 (db_command+0x388) sp = 0xe1ac6978 fp = 0xe1ac6a18 r4 = 0x00000000 r5 = 0x00000000 r6 = 0x00000000 r10 = 0xc25d12b0 db_command() at db_command+0x388 pc = 0xc2041db8 lr = 0xc2041a20 (db_command_loop+0x74) sp = 0xe1ac6a20 fp = 0xe1ac6a30 r4 = 0xc24ccf5f r5 = 0xc24de460 r6 = 0xc25d129c r7 = 0xe1ac6c10 r8 = 0xc25c8320 r9 = 0xc2577ad4 r10 = 0xc25c8324 db_command_loop() at db_command_loop+0x74 pc = 0xc2041a20 lr = 0xc20445e4 (db_trap+0x108) sp = 0xe1ac6a38 fp = 0xe1ac6b50 --More-- r4 = 0x00000000 r5 = 0xc25d12a8 r6 = 0xc25c8348 r10 = 0xc25c8324 db_trap() at db_trap+0x108 pc = 0xc20445e4 lr = 0xc21f26ac (kdb_trap+0x184) sp = 0xe1ac6b58 fp = 0xe1ac6b80 r4 = 0x00000000 r5 = 0x00000001 r6 = 0xc25c8348 r7 = 0xe1ac6c10 kdb_trap() at kdb_trap+0x184 pc = 0xc21f26ac lr = 0xc249ad90 (undefinedinstruction+0x3a8) sp = 0xe1ac6b88 fp = 0xe1ac6c08 r4 = 0x00000000 r5 = 0x00000000 r6 = 0xc249a938 r7 = 0xe7ffffff r8 = 0xc6c596a0 r9 = 0xc21f2004 r10 = 0xe1ac6c10 undefinedinstruction() at undefinedinstruction+0x3a8 pc = 0xc249ad90 lr = 0xc2482488 (exception_exit) sp = 0xe1ac6c10 fp = 0xe1ac6cb0 r4 = 0xc6b27400 r5 = 0xc6b27488 r6 = 0x00000114 r7 = 0x00040000 r8 = 0x00000001 r9 = 0xc257aaf8 --More-- r10 = 0x00000000 exception_exit() at exception_exit pc = 0xc2482488 lr = 0xc21f1fec (kdb_alt_break_internal+0x1c4) sp = 0xe1ac6ca0 fp = 0xe1ac6cb0 r0 = 0xc25c8334 r1 = 0x00000000 r2 = 0x00000001 r3 = 0xc24e0c51 r4 = 0xc6b27400 r5 = 0xc6b27488 r6 = 0x00000114 r7 = 0x00040000 r8 = 0x00000001 r9 = 0xc257aaf8 r10 = 0x00000000 r12 = 0x00000000 $a.10() at $a.10 pc = 0xc21f2008 lr = 0xc21f1e20 (kdb_alt_break+0x10) sp = 0xe1ac6cb8 fp = 0xe1ac6cb8 r4 = 0xc6b27400 r5 = 0xc6b27488 r6 = 0x00000114 r7 = 0x00040000 kdb_alt_break() at kdb_alt_break+0x10 pc = 0xc21f1e20 lr = 0xc207a06c (uart_intr_rxready+0x90) sp = 0xe1ac6cc0 fp = 0xe1ac6cd8 uart_intr_rxready() at uart_intr_rxready+0x90 pc = 0xc207a06c lr = 0xc207ac04 (uart_intr+0x120) --More-- sp = 0xe1ac6ce0 fp = 0xe1ac6d20 r4 = 0xc6b33b00 r5 = 0xc6b27400 r6 = 0xc6b27584 r10 = 0x00000000 uart_intr() at uart_intr+0x120 pc = 0xc207ac04 lr = 0xc216e64c (intr_event_handle+0x70) sp = 0xe1ac6d28 fp = 0xe1ac6d40 r4 = 0xc6b33b00 r5 = 0xe1ac6d60 r6 = 0x00000000 r7 = 0xc6b1d2c0 r8 = 0x00000000 r9 = 0xc6c596a0 r10 = 0x00000000 intr_event_handle() at intr_event_handle+0x70 pc = 0xc216e64c lr = 0xc24844c4 (arm_irq_handler+0x6c) sp = 0xe1ac6d48 fp = 0xe1ac6d58 r4 = 0xe1ac6d60 r5 = 0x0000003a r6 = 0xc25db8d4 r7 = 0xc25cf814 r8 = 0xc2589010 r9 = 0x00000000 arm_irq_handler() at arm_irq_handler+0x6c pc = 0xc24844c4 lr = 0xc2482488 (exception_exit) sp = 0xe1ac6d60 fp = 0xe1ac6df8 r4 = 0xc6c596a0 r5 = 0xc6b3496c --More-- r6 = 0xc6b34900 r7 = 0xc6b34910 exception_exit() at exception_exit pc = 0xc2482488 lr = 0xc2484e60 (spinlock_exit+0x10) sp = 0xe1ac6df0 fp = 0xe1ac6df8 r0 = 0x00000000 r1 = 0x000000c0 r2 = 0x600000d3 r3 = 0x60000013 r4 = 0xc6c596a0 r5 = 0xc6b3496c r6 = 0xc6b34900 r7 = 0xc6b34910 r8 = 0xc2589010 r9 = 0x00000000 r10 = 0x00000000 r12 = 0x00000001 spinlock_exit() at spinlock_exit+0x3c pc = 0xc2484e8c lr = 0xc216ef20 (ithread_loop+0x1f4) sp = 0xe1ac6e00 fp = 0xe1ac6e30 r4 = 0xc6b14a50 r10 = 0x00000000 ithread_loop() at ithread_loop+0x1f4 pc = 0xc216ef20 lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1ac6e38 fp = 0xe1ac6e50 r4 = 0xc6c596a0 r5 = 0xc6c56378 r6 = 0xc216ed2c r7 = 0xc6b14a50 r8 = 0xe1ac6e58 r9 = 0x00000000 --More-- r10 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1ac6e58 fp = 0x00000000 r4 = 0xc216ed2c r5 = 0xc6b14a50 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1ac6e58 fp = 0x00000000 db> show all pcpu Current CPU: 0 cpuid = 0 dynamic pcpu = 0x15d800 curthread = 0xc6c596a0: pid 11 "swi4: clock (0)" curpcb = 0xe1ac6ea8 fpcurthread = 0xc729a9f0: pid 494 "ntpd" idlethread = 0xc6c5a6a0: tid 100003 "idle: cpu0" cpuid = 1 dynamic pcpu = 0x1f502800 curthread = 0xc6c5a350: pid 10 "idle: cpu1" curpcb = 0xe1abdea8 fpcurthread = 0xc729a9f0: pid 494 "ntpd" idlethread = 0xc6c5a350: tid 100004 "idle: cpu1" cpuid = 2 dynamic pcpu = 0x1f503800 curthread = 0xc6c5a9f0: pid 2 "rand_harvestq" curpcb = 0xe1ab7ea8 --More-- fpcurthread = none idlethread = 0xc6c5a000: tid 100005 "idle: cpu2" cpuid = 3 dynamic pcpu = 0x1f504800 curthread = 0xc6c599f0: pid 10 "idle: cpu3" curpcb = 0xe1ac3ea8 fpcurthread = 0xc729a9f0: pid 494 "ntpd" idlethread = 0xc6c599f0: tid 100006 "idle: cpu3" db> where Tracing pid 11 tid 100007 td 0xc6c596a0 db_trace_self() at db_trace_self pc = 0xc2480e00 lr = 0xc2042320 (db_stack_trace+0x108) sp = 0xe1ac6958 fp = 0xe1ac6970 r10 = 0xc25d12b0 db_stack_trace() at db_stack_trace+0x108 pc = 0xc2042320 lr = 0xc2041db8 (db_command+0x388) sp = 0xe1ac6978 fp = 0xe1ac6a18 r4 = 0x00000000 r5 = 0x00000000 r6 = 0x00000072 r10 = 0xc25d12b0 db_command() at db_command+0x388 pc = 0xc2041db8 lr = 0xc2041a20 (db_command_loop+0x74) sp = 0xe1ac6a20 fp = 0xe1ac6a30 r4 = 0xc24ccf5f r5 = 0xc24de460 r6 = 0xc25d129c r7 = 0xe1ac6c10 r8 = 0xc25c8320 r9 = 0xc2577ad4 r10 = 0xc25c8324 db_command_loop() at db_command_loop+0x74 pc = 0xc2041a20 lr = 0xc20445e4 (db_trap+0x108) sp = 0xe1ac6a38 fp = 0xe1ac6b50 --More-- r4 = 0x00000000 r5 = 0xc25d12a8 r6 = 0xc25c8348 r10 = 0xc25c8324 db_trap() at db_trap+0x108 pc = 0xc20445e4 lr = 0xc21f26ac (kdb_trap+0x184) sp = 0xe1ac6b58 fp = 0xe1ac6b80 r4 = 0x00000000 r5 = 0x00000001 r6 = 0xc25c8348 r7 = 0xe1ac6c10 kdb_trap() at kdb_trap+0x184 pc = 0xc21f26ac lr = 0xc249ad90 (undefinedinstruction+0x3a8) sp = 0xe1ac6b88 fp = 0xe1ac6c08 r4 = 0x00000000 r5 = 0x00000000 r6 = 0xc249a938 r7 = 0xe7ffffff r8 = 0xc6c596a0 r9 = 0xc21f2004 r10 = 0xe1ac6c10 undefinedinstruction() at undefinedinstruction+0x3a8 pc = 0xc249ad90 lr = 0xc2482488 (exception_exit) sp = 0xe1ac6c10 fp = 0xe1ac6cb0 r4 = 0xc6b27400 r5 = 0xc6b27488 r6 = 0x00000114 r7 = 0x00040000 r8 = 0x00000001 r9 = 0xc257aaf8 --More-- r10 = 0x00000000 exception_exit() at exception_exit pc = 0xc2482488 lr = 0xc21f1fec (kdb_alt_break_internal+0x1c4) sp = 0xe1ac6ca0 fp = 0xe1ac6cb0 r0 = 0xc25c8334 r1 = 0x00000000 r2 = 0x00000001 r3 = 0xc24e0c51 r4 = 0xc6b27400 r5 = 0xc6b27488 r6 = 0x00000114 r7 = 0x00040000 r8 = 0x00000001 r9 = 0xc257aaf8 r10 = 0x00000000 r12 = 0x00000000 $a.10() at $a.10 pc = 0xc21f2008 lr = 0xc21f1e20 (kdb_alt_break+0x10) sp = 0xe1ac6cb8 fp = 0xe1ac6cb8 r4 = 0xc6b27400 r5 = 0xc6b27488 r6 = 0x00000114 r7 = 0x00040000 kdb_alt_break() at kdb_alt_break+0x10 pc = 0xc21f1e20 lr = 0xc207a06c (uart_intr_rxready+0x90) sp = 0xe1ac6cc0 fp = 0xe1ac6cd8 uart_intr_rxready() at uart_intr_rxready+0x90 pc = 0xc207a06c lr = 0xc207ac04 (uart_intr+0x120) --More-- sp = 0xe1ac6ce0 fp = 0xe1ac6d20 r4 = 0xc6b33b00 r5 = 0xc6b27400 r6 = 0xc6b27584 r10 = 0x00000000 uart_intr() at uart_intr+0x120 pc = 0xc207ac04 lr = 0xc216e64c (intr_event_handle+0x70) sp = 0xe1ac6d28 fp = 0xe1ac6d40 r4 = 0xc6b33b00 r5 = 0xe1ac6d60 r6 = 0x00000000 r7 = 0xc6b1d2c0 r8 = 0x00000000 r9 = 0xc6c596a0 r10 = 0x00000000 intr_event_handle() at intr_event_handle+0x70 pc = 0xc216e64c lr = 0xc24844c4 (arm_irq_handler+0x6c) sp = 0xe1ac6d48 fp = 0xe1ac6d58 r4 = 0xe1ac6d60 r5 = 0x0000003a r6 = 0xc25db8d4 r7 = 0xc25cf814 r8 = 0xc2589010 r9 = 0x00000000 arm_irq_handler() at arm_irq_handler+0x6c pc = 0xc24844c4 lr = 0xc2482488 (exception_exit) sp = 0xe1ac6d60 fp = 0xe1ac6df8 r4 = 0xc6c596a0 r5 = 0xc6b3496c --More-- r6 = 0xc6b34900 r7 = 0xc6b34910 exception_exit() at exception_exit pc = 0xc2482488 lr = 0xc2484e60 (spinlock_exit+0x10) sp = 0xe1ac6df0 fp = 0xe1ac6df8 r0 = 0x00000000 r1 = 0x000000c0 r2 = 0x600000d3 r3 = 0x60000013 r4 = 0xc6c596a0 r5 = 0xc6b3496c r6 = 0xc6b34900 r7 = 0xc6b34910 r8 = 0xc2589010 r9 = 0x00000000 r10 = 0x00000000 r12 = 0x00000001 spinlock_exit() at spinlock_exit+0x3c pc = 0xc2484e8c lr = 0xc216ef20 (ithread_loop+0x1f4) sp = 0xe1ac6e00 fp = 0xe1ac6e30 r4 = 0xc6b14a50 r10 = 0x00000000 ithread_loop() at ithread_loop+0x1f4 pc = 0xc216ef20 lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1ac6e38 fp = 0xe1ac6e50 r4 = 0xc6c596a0 r5 = 0xc6c56378 r6 = 0xc216ed2c r7 = 0xc6b14a50 r8 = 0xe1ac6e58 r9 = 0x00000000 --More-- r10 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1ac6e58 fp = 0x00000000 r4 = 0xc216ed2c r5 = 0xc6b14a50 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1ac6e58 fp = 0x00000000 db> ps pid ppid pgrp uid state wmesg wchan cmd 13974 13973 93439 0 D+ getblk 0xe1b825e0 pkg-static 13973 13832 93439 0 S+ wait 0xc71d5a68 pkg-static 13832 98659 93439 0 S+ wait 0xcbfcc378 make 98659 8457 93439 0 S+ wait 0xc943e378 sh 8457 93131 93439 0 S+ wait 0xc72ada68 sh 93131 93439 93439 0 S+ wait 0xc8323000 sh 93439 629 93439 0 S+ wait 0xc8323a68 sh 629 628 629 0 S+ pause 0xc7063ad0 csh 628 612 628 1002 S+ wait 0xc71d56f0 su 612 611 612 1002 Ss+ pause 0xc71d53e0 csh 611 608 608 1002 S select 0xc70be2e4 sshd 608 524 608 0 Ss select 0xc7124624 sshd 572 571 572 0 S+ ttyin 0xc6b27270 csh 571 1 571 0 Ss+ wait 0xc71d76f0 login 528 1 528 0 Ss nanslp 0xc25ba2e1 cron 524 1 524 0 Ss select 0xc704f9a4 sshd 494 1 494 0 Ss (threaded) ntpd 100068 S select 0xc7050fa4 ntpd 437 1 437 0 Ss select 0xc70bcf64 casperd --More-- 436 1 436 0 Ss select 0xc70e67a4 casperd 335 1 335 0 Ss select 0xc704fc24 syslogd 264 1 264 0 Ss select 0xc70e63e4 devd 15 0 0 0 DL syncer 0xc25cc1f0 [syncer] 14 0 0 0 DL vlruwt 0xc7063378 [vnlru] 9 0 0 0 DL (threaded) [bufdaemon] 100045 D psleep 0xc25cbf90 [bufdaemon] 100056 D sdflush 0xc7151484 [/ worker] 8 0 0 0 DL pgzero 0xc25cf4c4 [pagezero] 7 0 0 0 DL psleep 0xc25cf3c0 [vmdaemon] 6 0 0 0 DL (threaded) [pagedaemon] 100042 D psleep 0xc25d64c4 [pagedaemon] 100048 D umarcl 0xc25cf2d4 [uma] 5 0 0 0 DL jobqueue 0xc6cf9c00 [mmcsd0: mmc/sd card] 4 0 0 0 DL waiting_ 0xc25d3804 [sctp_iterator] 13 0 0 0 DL (threaded) [usb] 100025 D - 0xc6d32ca4 [usbus0] 100026 D - 0xc6d32cd4 [usbus0] 100027 D - 0xc6d32d04 [usbus0] 100028 D - 0xc6d32d34 [usbus0] --More-- 100030 D - 0xc6d6bca4 [usbus1] 100031 D - 0xc6d6bcd4 [usbus1] 100032 D - 0xc6d6bd04 [usbus1] 100033 D - 0xc6d6bd34 [usbus1] 3 0 0 0 DL (threaded) [cam] 100019 D - 0xc25ae0c0 [doneq0] 100040 D - 0xc25ae2ac [scanner] 12 0 0 0 DL (threaded) [geom] 100013 D - 0xc25d1e70 [g_event] 100014 D - 0xc25d1e74 [g_up] 100015 D - 0xc25d1e78 [g_down] 11 0 0 0 RL (threaded) [intr] 100007 Run CPU 0 [swi4: clock (0)] 100008 I [swi4: clock (1)] 100009 I [swi4: clock (2)] 100010 I [swi4: clock (3)] 100011 I [swi1: netisr 0] 100012 I [swi3: vm] 100016 I [swi6: Giant taskq] 100018 I [swi5: fast taskq] --More-- 100021 I [swi6: task queue] 100023 I [swi0: uart uart] 100024 I [intr75: ehci0] 100029 I [intr72: ehci1] 100034 I [intr150: ffec0] 100035 I [intr54: sdhci_imx0] 100036 I [intr55: sdhci_imx1] 100037 I [intr56: sdhci_imx2] 10 0 0 0 RL (threaded) [idle] 100003 CanRun [idle: cpu0] 100004 Run CPU 1 [idle: cpu1] 100005 CanRun [idle: cpu2] 100006 Run CPU 3 [idle: cpu3] 2 0 0 0 RL CPU 2 [rand_harvestq] 1 0 1 0 SLs wait 0xc6c57000 [init] 0 0 0 0 DLs (threaded) [kernel] 100000 D swapin 0xc25d1e88 [swapper] 100017 D - 0xc6cf9480 [thread taskq] 100020 D - 0xc6cf9100 [kqueue taskq] 100022 D - 0xc6cf9000 [ffs_trim taskq] --More-- 100039 D - 0xc6cf9380 [CAM taskq] db> show threads 100081 (0xc72929f0) (stack 0xfaa5a000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xfaa5b790 fp = 0xfaa5b7c8 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xfaa5b7d0 fp = 0xfaa5b7e8 r4 = 0x00000000 r5 = 0x0356e677 r6 = 0xc72929f0 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0xe1b825e0 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc22031b0 (sleepq_wait+0x38) sp = 0xfaa5b7f0 fp = 0xfaa5b800 r4 = 0x00000060 r5 = 0xe1b825e0 r6 = 0xc72929f0 r7 = 0x00000000 r8 = 0xc25d2840 r9 = 0x00000000 sleepq_wait() at sleepq_wait+0x38 pc = 0xc22031b0 lr = 0xc218608c (sleeplk+0x2a8) sp = 0xfaa5b808 fp = 0xfaa5b850 r4 = 0xe1b825e0 r5 = 0x00000001 --More-- r6 = 0x00081900 r10 = 0xe1b825e0 sleeplk() at sleeplk+0x2a8 pc = 0xc218608c lr = 0xc21856fc (__lockmgr_args+0x728) sp = 0xfaa5b858 fp = 0xfaa5b8b8 r4 = 0x00081900 r5 = 0x00000001 r6 = 0xc72929f0 r7 = 0xe1b825f0 r8 = 0x00000000 r9 = 0xc9116df4 r10 = 0xe1b825e0 __lockmgr_args() at __lockmgr_args+0x728 pc = 0xc21856fc lr = 0xc2252348 (getblk+0x128) sp = 0xfaa5b8c0 fp = 0xfaa5b938 r4 = 0x00000000 r5 = 0x00000000 r6 = 0xc9116e04 r7 = 0x00000000 r8 = 0xc9116df4 r9 = 0xe1b82590 r10 = 0x00000000 getblk() at getblk+0x128 pc = 0xc2252348 lr = 0xc2253938 (breadn_flags+0x34) sp = 0xfaa5b940 fp = 0xfaa5b968 r4 = 0xfaa5ba48 r5 = 0xc9116d80 r6 = 0xfaa5b998 r7 = 0x00000000 --More-- r8 = 0x00000000 r9 = 0x00000000 r10 = 0xc71bd000 breadn_flags() at breadn_flags+0x34 pc = 0xc2253938 lr = 0xc241b1a4 (ffs_blkatoff+0x108) sp = 0xfaa5b970 fp = 0xfaa5b9b8 r4 = 0xfaa5ba48 r5 = 0x00000001 r6 = 0xfaa5b998 r7 = 0x00000000 r8 = 0x00000000 r9 = 0x00000000 ffs_blkatoff() at ffs_blkatoff+0x108 pc = 0xc241b1a4 lr = 0xc242b304 (ufs_lookup_ino+0x724) sp = 0xfaa5b9c0 fp = 0xfaa5ba88 r4 = 0xccf19e80 r5 = 0xccf19e80 r6 = 0x00000010 r7 = 0xc9116d80 r8 = 0x00000000 r9 = 0x00000400 r10 = 0x00000200 ufs_lookup_ino() at ufs_lookup_ino+0x724 pc = 0xc242b304 lr = 0xc24ae284 (VOP_CACHEDLOOKUP_APV+0x98) sp = 0xfaa5ba90 fp = 0xfaa5baa0 r4 = 0x00000000 r5 = 0xfaa5baac r6 = 0xc25a2724 r7 = 0x00000000 --More-- r8 = 0x00000002 r9 = 0x00000000 r10 = 0xfaa5bd70 VOP_CACHEDLOOKUP_APV() at VOP_CACHEDLOOKUP_APV+0x98 pc = 0xc24ae284 lr = 0xc225bdf0 (vfs_cache_lookup+0xe8) sp = 0xfaa5baa8 fp = 0xfaa5bad0 r4 = 0xfaa5bd50 r5 = 0xfaa5bd68 r6 = 0xc9116d80 r10 = 0xfaa5bd70 vfs_cache_lookup() at vfs_cache_lookup+0xe8 pc = 0xc225bdf0 lr = 0xc24ae120 (VOP_LOOKUP_APV+0x98) sp = 0xfaa5bad8 fp = 0xfaa5bae8 r4 = 0x00000000 r5 = 0xfaa5bb0c r6 = 0xc25a2724 r7 = 0xc25a6ac0 VOP_LOOKUP_APV() at VOP_LOOKUP_APV+0x98 pc = 0xc24ae120 lr = 0xc2264cc4 (lookup+0x540) sp = 0xfaa5baf0 fp = 0xfaa5bb38 r4 = 0xc9116d80 r5 = 0xfaa5bd00 r6 = 0x00080000 r10 = 0xfaa5bd70 lookup() at lookup+0x540 pc = 0xc2264cc4 lr = 0xc2264534 (namei+0x434) sp = 0xfaa5bb40 fp = 0xfaa5bbc8 --More-- r4 = 0xfaa5bd00 r5 = 0xfaa5bb68 r6 = 0xfaa5bd58 r7 = 0xc8721868 r8 = 0xfaa5bd70 r9 = 0x00000000 r10 = 0xfaa5bc84 namei() at namei+0x434 pc = 0xc2264534 lr = 0xc2283ec8 (vn_open_cred+0x98) sp = 0xfaa5bbd0 fp = 0xfaa5bcb8 r4 = 0xfaa5bd00 r5 = 0x00000000 r6 = 0x000001a4 r7 = 0x00100a02 r8 = 0x00000000 r9 = 0xfaa5bd70 r10 = 0xfaa5bc84 vn_open_cred() at vn_open_cred+0x98 pc = 0xc2283ec8 lr = 0xc2283e28 (vn_open+0x24) sp = 0xfaa5bcc0 fp = 0xfaa5bcc8 r4 = 0xc72929f0 r5 = 0x00000012 r6 = 0x000001a4 r7 = 0xfaa5bd00 r8 = 0x00000000 r9 = 0x20c4a700 r10 = 0xfaa5bcf0 vn_open() at vn_open+0x24 pc = 0xc2283e28 lr = 0xc227cfe4 (kern_openat+0x240) --More-- sp = 0xfaa5bcd0 fp = 0xfaa5bdc8 kern_openat() at kern_openat+0x240 pc = 0xc227cfe4 lr = 0xc227d23c (sys_openat+0x2c) sp = 0xfaa5bdd0 fp = 0xfaa5bdd8 r4 = 0xc72929f0 r5 = 0x000001a4 r6 = 0x60000013 r7 = 0x00000000 r8 = 0xfaa5bdf0 r9 = 0x00000000 r10 = 0xc728e000 sys_openat() at sys_openat+0x2c pc = 0xc227d23c lr = 0xc24994c8 (swi_handler+0x4b8) sp = 0xfaa5bde0 fp = 0xfaa5be50 swi_handler() at swi_handler+0x4b8 pc = 0xc24994c8 lr = 0xc2482418 (swi_exit) sp = 0xfaa5be58 fp = 0xbfbfda88 r4 = 0x20c3fc00 r5 = 0x000001a4 r6 = 0x20c3fd64 r7 = 0x000001f3 r8 = 0x20d81380 r9 = 0xffffffe2 r10 = 0x20c3fc00 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) --More-- sp = 0xfaa5be58 fp = 0xbfbfda88 100074 (0xc71d8350) (stack 0xfaa0b000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xfaa0cae8 fp = 0xfaa0cb20 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xfaa0cb28 fp = 0xfaa0cb40 r4 = 0x00000000 r5 = 0x000d6edc r6 = 0xc71d8350 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0x00000000 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc2203440 (sleepq_catch_signals+0xb4) sp = 0xfaa0cb48 fp = 0xfaa0cb90 r4 = 0xc71d8350 r5 = 0xc71d5a68 r6 = 0x0000006c r7 = 0x00000000 r8 = 0x00000032 r9 = 0xc71d5a68 sleepq_catch_signals() at sleepq_catch_signals+0xb4 pc = 0xc2203440 lr = 0xc2203314 (sleepq_wait_sig+0xc) sp = 0xfaa0cb98 fp = 0xfaa0cba0 --More-- r4 = 0xc71d8350 r5 = 0xc71d5a68 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r9 = 0x0000006c r10 = 0xc71d5b14 sleepq_wait_sig() at sleepq_wait_sig+0xc pc = 0xc2203314 lr = 0xc21b548c (_sleep+0x464) sp = 0xfaa0cba8 fp = 0xfaa0cc08 r4 = 0xc71d8350 r10 = 0xc71d5b14 _sleep() at _sleep+0x464 pc = 0xc21b548c lr = 0xc2165bcc (kern_wait6+0x7dc) sp = 0xfaa0cc10 fp = 0xfaa0cc98 r4 = 0x00000000 r5 = 0x00000000 r6 = 0x00000000 r7 = 0x00000000 r8 = 0xc71d8350 r9 = 0xc71d5b24 r10 = 0x00003696 kern_wait6() at kern_wait6+0x7dc pc = 0xc2165bcc lr = 0xc21652a8 (sys_wait4+0x84) sp = 0xfaa0cca0 fp = 0xfaa0cdd8 r4 = 0x00000030 r5 = 0x00000000 r6 = 0x00000000 r7 = 0xfaa0ccb4 --More-- r8 = 0xfaa0cdf8 r9 = 0x00000000 r10 = 0xc71d5a68 sys_wait4() at sys_wait4+0x84 pc = 0xc21652a8 lr = 0xc24994c8 (swi_handler+0x4b8) sp = 0xfaa0cde0 fp = 0xfaa0ce50 r4 = 0xc71d8350 r5 = 0xbfbff2ac r6 = 0x60000013 r7 = 0x00000000 r8 = 0xfaa0cdf0 r10 = 0xc71d5a68 swi_handler() at swi_handler+0x4b8 pc = 0xc24994c8 lr = 0xc2482418 (swi_exit) sp = 0xfaa0ce58 fp = 0xbfbff2d0 r4 = 0x00003696 r5 = 0xbfbff2ac r6 = 0x00000000 r7 = 0x00000007 r8 = 0x00000000 r9 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xfaa0ce58 fp = 0xbfbff2d0 100238 (0xcbfcf9f0) (stack 0xfb1cd000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) --More-- sp = 0xfb1ceae8 fp = 0xfb1ceb20 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xfb1ceb28 fp = 0xfb1ceb40 r4 = 0x00000000 r5 = 0x0091b04e r6 = 0xcbfcf9f0 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0x00000000 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc2203440 (sleepq_catch_signals+0xb4) sp = 0xfb1ceb48 fp = 0xfb1ceb90 r4 = 0xcbfcf9f0 r5 = 0xcbfcc378 r6 = 0x0000006c r7 = 0x00000000 r8 = 0x000000bb r9 = 0xcbfcc378 sleepq_catch_signals() at sleepq_catch_signals+0xb4 pc = 0xc2203440 lr = 0xc2203314 (sleepq_wait_sig+0xc) sp = 0xfb1ceb98 fp = 0xfb1ceba0 r4 = 0xcbfcf9f0 r5 = 0xcbfcc378 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r9 = 0x0000006c --More-- r10 = 0xcbfcc424 sleepq_wait_sig() at sleepq_wait_sig+0xc pc = 0xc2203314 lr = 0xc21b548c (_sleep+0x464) sp = 0xfb1ceba8 fp = 0xfb1cec08 r4 = 0xcbfcf9f0 r10 = 0xcbfcc424 _sleep() at _sleep+0x464 pc = 0xc21b548c lr = 0xc2165bcc (kern_wait6+0x7dc) sp = 0xfb1cec10 fp = 0xfb1cec98 r4 = 0x00000000 r5 = 0x00000007 r6 = 0x00000000 r7 = 0x00000000 r8 = 0xcbfcf9f0 r9 = 0xcbfcc434 r10 = 0x00000000 kern_wait6() at kern_wait6+0x7dc pc = 0xc2165bcc lr = 0xc21652a8 (sys_wait4+0x84) sp = 0xfb1ceca0 fp = 0xfb1cedd8 r4 = 0x00000030 r5 = 0x00000000 r6 = 0x00000000 r7 = 0xfb1cecb4 r8 = 0xfb1cedf8 r9 = 0x00000000 r10 = 0xcbfcc378 sys_wait4() at sys_wait4+0x84 --More-- pc = 0xc21652a8 lr = 0xc24994c8 (swi_handler+0x4b8) sp = 0xfb1cede0 fp = 0xfb1cee50 r4 = 0xcbfcf9f0 r5 = 0x0009ea80 r6 = 0x60000013 r7 = 0x00000000 r8 = 0xfb1cedf0 r10 = 0xcbfcc378 swi_handler() at swi_handler+0x4b8 pc = 0xc24994c8 lr = 0xc2482418 (swi_exit) sp = 0xfb1cee58 fp = 0xbfbfe280 r4 = 0x0009d3d0 r5 = 0x0009ea80 r6 = 0x00000001 r7 = 0x00000007 r8 = 0x00000000 r9 = 0x00000000 r10 = 0x0009c1a4 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xfb1cee58 fp = 0xbfbfe280 100143 (0xc94416a0) (stack 0xfae64000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xfae65ae8 fp = 0xfae65b20 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) --More-- sp = 0xfae65b28 fp = 0xfae65b40 r4 = 0x00000000 r5 = 0x003acb79 r6 = 0xc94416a0 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0x00000000 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc2203440 (sleepq_catch_signals+0xb4) sp = 0xfae65b48 fp = 0xfae65b90 r4 = 0xc94416a0 r5 = 0xc943e378 r6 = 0x0000006c r7 = 0x00000000 r8 = 0x0000009b r9 = 0xc943e378 sleepq_catch_signals() at sleepq_catch_signals+0xb4 pc = 0xc2203440 lr = 0xc2203314 (sleepq_wait_sig+0xc) sp = 0xfae65b98 fp = 0xfae65ba0 r4 = 0xc94416a0 r5 = 0xc943e378 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r9 = 0x0000006c r10 = 0xc943e424 sleepq_wait_sig() at sleepq_wait_sig+0xc pc = 0xc2203314 lr = 0xc21b548c (_sleep+0x464) --More-- sp = 0xfae65ba8 fp = 0xfae65c08 r4 = 0xc94416a0 r10 = 0xc943e424 _sleep() at _sleep+0x464 pc = 0xc21b548c lr = 0xc2165bcc (kern_wait6+0x7dc) sp = 0xfae65c10 fp = 0xfae65c98 r4 = 0x00000000 r5 = 0x00000007 r6 = 0x00000000 r7 = 0x00000000 r8 = 0xc94416a0 r9 = 0xc943e434 r10 = 0x00000000 kern_wait6() at kern_wait6+0x7dc pc = 0xc2165bcc lr = 0xc21652a8 (sys_wait4+0x84) sp = 0xfae65ca0 fp = 0xfae65dd8 r4 = 0x00000030 r5 = 0x00000000 r6 = 0x00000000 r7 = 0xfae65cb4 r8 = 0xfae65df8 r9 = 0x00000000 r10 = 0xc943e378 sys_wait4() at sys_wait4+0x84 pc = 0xc21652a8 lr = 0xc24994c8 (swi_handler+0x4b8) sp = 0xfae65de0 fp = 0xfae65e50 r4 = 0xc94416a0 r5 = 0x00000000 --More-- r6 = 0x60000013 r7 = 0x00000000 r8 = 0xfae65df0 r10 = 0xc943e378 swi_handler() at swi_handler+0x4b8 pc = 0xc24994c8 lr = 0xc2482418 (swi_exit) sp = 0xfae65e58 fp = 0xbfbfd1b0 r4 = 0x00000001 r5 = 0x00000000 r6 = 0xbfbfd140 r7 = 0x00000007 r8 = 0x00031d30 r9 = 0x00000001 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xfae65e58 fp = 0xbfbfd1b0 100088 (0xc709d350) (stack 0xfaa6c000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xfaa6dae8 fp = 0xfaa6db20 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xfaa6db28 fp = 0xfaa6db40 r4 = 0x00000000 r5 = 0x001fc47f r6 = 0xc709d350 r7 = 0xc25a5190 --More-- r8 = 0x00000000 r9 = 0x00000104 r10 = 0x00000000 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc2203440 (sleepq_catch_signals+0xb4) sp = 0xfaa6db48 fp = 0xfaa6db90 r4 = 0xc709d350 r5 = 0xc72ada68 r6 = 0x0000006c r7 = 0x00000000 r8 = 0x000000b2 r9 = 0xc72ada68 sleepq_catch_signals() at sleepq_catch_signals+0xb4 pc = 0xc2203440 lr = 0xc2203314 (sleepq_wait_sig+0xc) sp = 0xfaa6db98 fp = 0xfaa6dba0 r4 = 0xc709d350 r5 = 0xc72ada68 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r9 = 0x0000006c r10 = 0xc72adb14 sleepq_wait_sig() at sleepq_wait_sig+0xc pc = 0xc2203314 lr = 0xc21b548c (_sleep+0x464) sp = 0xfaa6dba8 fp = 0xfaa6dc08 r4 = 0xc709d350 r10 = 0xc72adb14 _sleep() at _sleep+0x464 --More-- pc = 0xc21b548c lr = 0xc2165bcc (kern_wait6+0x7dc) sp = 0xfaa6dc10 fp = 0xfaa6dc98 r4 = 0x00000000 r5 = 0x00000007 r6 = 0x00000000 r7 = 0x00000000 r8 = 0xc709d350 r9 = 0xc72adb24 r10 = 0x00000000 kern_wait6() at kern_wait6+0x7dc pc = 0xc2165bcc lr = 0xc21652a8 (sys_wait4+0x84) sp = 0xfaa6dca0 fp = 0xfaa6ddd8 r4 = 0x00000030 r5 = 0x00000000 r6 = 0x00000000 r7 = 0xfaa6dcb4 r8 = 0xfaa6ddf8 r9 = 0x00000000 r10 = 0xc72ada68 sys_wait4() at sys_wait4+0x84 pc = 0xc21652a8 lr = 0xc24994c8 (swi_handler+0x4b8) sp = 0xfaa6dde0 fp = 0xfaa6de50 r4 = 0xc709d350 r5 = 0x00000000 r6 = 0x60000013 r7 = 0x00000000 r8 = 0xfaa6ddf0 r10 = 0xc72ada68 swi_handler() at swi_handler+0x4b8 --More-- pc = 0xc24994c8 lr = 0xc2482418 (swi_exit) sp = 0xfaa6de58 fp = 0xbfbfde18 r4 = 0x00000001 r5 = 0x00000000 r6 = 0xbfbfdda8 r7 = 0x00000007 r8 = 0x00031d30 r9 = 0x00000001 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xfaa6de58 fp = 0xbfbfde18 100119 (0xc8310000) (stack 0xfae1c000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xfae1dae8 fp = 0xfae1db20 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xfae1db28 fp = 0xfae1db40 r4 = 0x00000000 r5 = 0x0048aacc r6 = 0xc8310000 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0x00000000 mi_switch() at mi_switch+0x140 --More-- pc = 0xc21b5af4 lr = 0xc2203440 (sleepq_catch_signals+0xb4) sp = 0xfae1db48 fp = 0xfae1db90 r4 = 0xc8310000 r5 = 0xc8323000 r6 = 0x0000006c r7 = 0x00000000 r8 = 0x00000030 r9 = 0xc8323000 sleepq_catch_signals() at sleepq_catch_signals+0xb4 pc = 0xc2203440 lr = 0xc2203314 (sleepq_wait_sig+0xc) sp = 0xfae1db98 fp = 0xfae1dba0 r4 = 0xc8310000 r5 = 0xc8323000 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r9 = 0x0000006c r10 = 0xc83230ac sleepq_wait_sig() at sleepq_wait_sig+0xc pc = 0xc2203314 lr = 0xc21b548c (_sleep+0x464) sp = 0xfae1dba8 fp = 0xfae1dc08 r4 = 0xc8310000 r10 = 0xc83230ac _sleep() at _sleep+0x464 pc = 0xc21b548c lr = 0xc2165bcc (kern_wait6+0x7dc) sp = 0xfae1dc10 fp = 0xfae1dc98 r4 = 0x00000000 r5 = 0x00000007 --More-- r6 = 0x00000000 r7 = 0x00000000 r8 = 0xc8310000 r9 = 0xc83230bc r10 = 0x00000000 kern_wait6() at kern_wait6+0x7dc pc = 0xc2165bcc lr = 0xc21652a8 (sys_wait4+0x84) sp = 0xfae1dca0 fp = 0xfae1ddd8 r4 = 0x00000030 r5 = 0x00000000 r6 = 0x00000000 r7 = 0xfae1dcb4 r8 = 0xfae1ddf8 r9 = 0x00000000 r10 = 0xc8323000 sys_wait4() at sys_wait4+0x84 pc = 0xc21652a8 lr = 0xc24994c8 (swi_handler+0x4b8) sp = 0xfae1dde0 fp = 0xfae1de50 r4 = 0xc8310000 r5 = 0x00000000 r6 = 0x60000013 r7 = 0x00000000 r8 = 0xfae1ddf0 r10 = 0xc8323000 swi_handler() at swi_handler+0x4b8 pc = 0xc24994c8 lr = 0xc2482418 (swi_exit) sp = 0xfae1de58 fp = 0xbfbfde88 r4 = 0x00000001 r5 = 0x00000000 --More-- r6 = 0xbfbfde18 r7 = 0x00000007 r8 = 0x00031d30 r9 = 0x00000001 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xfae1de58 fp = 0xbfbfde88 100104 (0xc83109f0) (stack 0xfadee000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xfadefae8 fp = 0xfadefb20 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xfadefb28 fp = 0xfadefb40 r4 = 0x00000000 r5 = 0x00808c32 r6 = 0xc83109f0 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0x00000000 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc2203440 (sleepq_catch_signals+0xb4) sp = 0xfadefb48 fp = 0xfadefb90 r4 = 0xc83109f0 r5 = 0xc8323a68 --More-- r6 = 0x0000006c r7 = 0x00000000 r8 = 0x00000052 r9 = 0xc8323a68 sleepq_catch_signals() at sleepq_catch_signals+0xb4 pc = 0xc2203440 lr = 0xc2203314 (sleepq_wait_sig+0xc) sp = 0xfadefb98 fp = 0xfadefba0 r4 = 0xc83109f0 r5 = 0xc8323a68 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r9 = 0x0000006c r10 = 0xc8323b14 sleepq_wait_sig() at sleepq_wait_sig+0xc pc = 0xc2203314 lr = 0xc21b548c (_sleep+0x464) sp = 0xfadefba8 fp = 0xfadefc08 r4 = 0xc83109f0 r10 = 0xc8323b14 _sleep() at _sleep+0x464 pc = 0xc21b548c lr = 0xc2165bcc (kern_wait6+0x7dc) sp = 0xfadefc10 fp = 0xfadefc98 r4 = 0x00000000 r5 = 0x00000007 r6 = 0x00000000 r7 = 0x00000000 r8 = 0xc83109f0 r9 = 0xc8323b24 r10 = 0x00000000 --More-- kern_wait6() at kern_wait6+0x7dc pc = 0xc2165bcc lr = 0xc21652a8 (sys_wait4+0x84) sp = 0xfadefca0 fp = 0xfadefdd8 r4 = 0x00000030 r5 = 0x00000000 r6 = 0x00000000 r7 = 0xfadefcb4 r8 = 0xfadefdf8 r9 = 0x00000000 r10 = 0xc8323a68 sys_wait4() at sys_wait4+0x84 pc = 0xc21652a8 lr = 0xc24994c8 (swi_handler+0x4b8) sp = 0xfadefde0 fp = 0xfadefe50 r4 = 0xc83109f0 r5 = 0x00000000 r6 = 0x60000013 r7 = 0x00000000 r8 = 0xfadefdf0 r10 = 0xc8323a68 swi_handler() at swi_handler+0x4b8 pc = 0xc24994c8 lr = 0xc2482418 (swi_exit) sp = 0xfadefe58 fp = 0xbfbff3e8 r4 = 0x00000001 r5 = 0x00000000 r6 = 0xbfbff378 r7 = 0x00000007 r8 = 0x00031d30 r9 = 0x00000001 r10 = 0x00000000 --More-- swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xfadefe58 fp = 0xbfbff3e8 100078 (0xc70c6350) (stack 0xfaa29000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xfaa2ac30 fp = 0xfaa2ac68 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xfaa2ac70 fp = 0xfaa2ac88 r4 = 0x00000000 r5 = 0x000155f0 r6 = 0xc70c6350 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0x00000000 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc2203440 (sleepq_catch_signals+0xb4) sp = 0xfaa2ac90 fp = 0xfaa2acd8 r4 = 0xc70c6350 r5 = 0xc7063ad0 r6 = 0x00000074 r7 = 0x00000000 r8 = 0x000000ea r9 = 0xc7063a68 sleepq_catch_signals() at sleepq_catch_signals+0xb4 --More-- pc = 0xc2203440 lr = 0xc2203314 (sleepq_wait_sig+0xc) sp = 0xfaa2ace0 fp = 0xfaa2ace8 r4 = 0xc70c6350 r5 = 0xc7063ad0 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r9 = 0x00000074 r10 = 0xc7063b14 sleepq_wait_sig() at sleepq_wait_sig+0xc pc = 0xc2203314 lr = 0xc21b548c (_sleep+0x464) sp = 0xfaa2acf0 fp = 0xfaa2ad50 r4 = 0xc70c6350 r10 = 0xc7063b14 _sleep() at _sleep+0x464 pc = 0xc21b548c lr = 0xc21aedc8 (kern_sigsuspend+0x120) sp = 0xfaa2ad58 fp = 0xfaa2adb0 r4 = 0xc70c6350 r5 = 0x00000100 r6 = 0xc24de586 r7 = 0xc7063ad0 r8 = 0x00000000 r9 = 0xc7063b14 r10 = 0xc7063a68 kern_sigsuspend() at kern_sigsuspend+0x120 pc = 0xc21aedc8 lr = 0xc21aec9c (sys_sigsuspend+0x40) sp = 0xfaa2adb8 fp = 0xfaa2add8 --More-- r4 = 0xc70c6350 r5 = 0xbfbff138 r6 = 0x60000013 r7 = 0x00000000 r8 = 0xfaa2adf0 r9 = 0x00000000 r10 = 0xc7063a68 sys_sigsuspend() at sys_sigsuspend+0x40 pc = 0xc21aec9c lr = 0xc24994c8 (swi_handler+0x4b8) sp = 0xfaa2ade0 fp = 0xfaa2ae50 r4 = 0xc70c6350 r10 = 0xc7063a68 swi_handler() at swi_handler+0x4b8 pc = 0xc24994c8 lr = 0xc2482418 (swi_exit) sp = 0xfaa2ae58 fp = 0xbfbff180 r4 = 0xbfbff138 r5 = 0xbfbff138 r6 = 0x00000101 r7 = 0x00000155 r8 = 0x00066938 r9 = 0x000545fc r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xfaa2ae58 fp = 0xbfbff180 100075 (0xc71d8000) (stack 0xfaa1b000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) --More-- sp = 0xfaa1cae8 fp = 0xfaa1cb20 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xfaa1cb28 fp = 0xfaa1cb40 r4 = 0x00000000 r5 = 0x0012ecd1 r6 = 0xc71d8000 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0x00000000 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc2203440 (sleepq_catch_signals+0xb4) sp = 0xfaa1cb48 fp = 0xfaa1cb90 r4 = 0xc71d8000 r5 = 0xc71d56f0 r6 = 0x0000006c r7 = 0x00000000 r8 = 0x000000a6 r9 = 0xc71d56f0 sleepq_catch_signals() at sleepq_catch_signals+0xb4 pc = 0xc2203440 lr = 0xc2203314 (sleepq_wait_sig+0xc) sp = 0xfaa1cb98 fp = 0xfaa1cba0 r4 = 0xc71d8000 r5 = 0xc71d56f0 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r9 = 0x0000006c --More-- r10 = 0xc71d579c sleepq_wait_sig() at sleepq_wait_sig+0xc pc = 0xc2203314 lr = 0xc21b548c (_sleep+0x464) sp = 0xfaa1cba8 fp = 0xfaa1cc08 r4 = 0xc71d8000 r10 = 0xc71d579c _sleep() at _sleep+0x464 pc = 0xc21b548c lr = 0xc2165bcc (kern_wait6+0x7dc) sp = 0xfaa1cc10 fp = 0xfaa1cc98 r4 = 0x00000000 r5 = 0x00000000 r6 = 0x00000000 r7 = 0x00000000 r8 = 0xc71d8000 r9 = 0xc71d57ac r10 = 0x00000275 kern_wait6() at kern_wait6+0x7dc pc = 0xc2165bcc lr = 0xc21652a8 (sys_wait4+0x84) sp = 0xfaa1cca0 fp = 0xfaa1cdd8 r4 = 0x00000032 r5 = 0x00000000 r6 = 0x00000000 r7 = 0xfaa1ccb4 r8 = 0xfaa1cdf8 r9 = 0x00000000 r10 = 0xc71d56f0 sys_wait4() at sys_wait4+0x84 --More-- pc = 0xc21652a8 lr = 0xc24994c8 (swi_handler+0x4b8) sp = 0xfaa1cde0 fp = 0xfaa1ce50 r4 = 0xc71d8000 r5 = 0x00000274 r6 = 0x60000013 r7 = 0x00000000 r8 = 0xfaa1cdf0 r10 = 0xc71d56f0 swi_handler() at swi_handler+0x4b8 pc = 0xc24994c8 lr = 0xc2482418 (swi_exit) sp = 0xfaa1ce58 fp = 0xbfbffc68 r4 = 0x00000275 r5 = 0x00000274 r6 = 0x00000000 r7 = 0x00000007 r8 = 0x00013170 r9 = 0x00000000 r10 = 0x20274618 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xfaa1ce58 fp = 0xbfbffc68 100076 (0xc70c69f0) (stack 0xfaa1e000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xfaa1fc30 fp = 0xfaa1fc68 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) --More-- sp = 0xfaa1fc70 fp = 0xfaa1fc88 r4 = 0x00000000 r5 = 0x00315140 r6 = 0xc70c69f0 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0x00000000 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc2203440 (sleepq_catch_signals+0xb4) sp = 0xfaa1fc90 fp = 0xfaa1fcd8 r4 = 0xc70c69f0 r5 = 0xc71d53e0 r6 = 0x00000074 r7 = 0x00000000 r8 = 0x000000b3 r9 = 0xc71d5378 sleepq_catch_signals() at sleepq_catch_signals+0xb4 pc = 0xc2203440 lr = 0xc2203314 (sleepq_wait_sig+0xc) sp = 0xfaa1fce0 fp = 0xfaa1fce8 r4 = 0xc70c69f0 r5 = 0xc71d53e0 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r9 = 0x00000074 r10 = 0xc71d5424 sleepq_wait_sig() at sleepq_wait_sig+0xc pc = 0xc2203314 lr = 0xc21b548c (_sleep+0x464) --More-- sp = 0xfaa1fcf0 fp = 0xfaa1fd50 r4 = 0xc70c69f0 r10 = 0xc71d5424 _sleep() at _sleep+0x464 pc = 0xc21b548c lr = 0xc21aedc8 (kern_sigsuspend+0x120) sp = 0xfaa1fd58 fp = 0xfaa1fdb0 r4 = 0xc70c69f0 r5 = 0x00000100 r6 = 0xc24de586 r7 = 0xc71d53e0 r8 = 0x00000000 r9 = 0xc71d5424 r10 = 0xc71d5378 kern_sigsuspend() at kern_sigsuspend+0x120 pc = 0xc21aedc8 lr = 0xc21aec9c (sys_sigsuspend+0x40) sp = 0xfaa1fdb8 fp = 0xfaa1fdd8 r4 = 0xc70c69f0 r5 = 0xbfbff1f0 r6 = 0x60000013 r7 = 0x00000000 r8 = 0xfaa1fdf0 r9 = 0x00000000 r10 = 0xc71d5378 sys_sigsuspend() at sys_sigsuspend+0x40 pc = 0xc21aec9c lr = 0xc24994c8 (swi_handler+0x4b8) sp = 0xfaa1fde0 fp = 0xfaa1fe50 r4 = 0xc70c69f0 r10 = 0xc71d5378 --More-- swi_handler() at swi_handler+0x4b8 pc = 0xc24994c8 lr = 0xc2482418 (swi_exit) sp = 0xfaa1fe58 fp = 0xbfbff238 r4 = 0xbfbff1f0 r5 = 0xbfbff1f0 r6 = 0x00000101 r7 = 0x00000155 r8 = 0x00066938 r9 = 0x000545fc r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xfaa1fe58 fp = 0xbfbff238 100080 (0xc729a000) (stack 0xfaa48000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xfaa49ac8 fp = 0xfaa49b00 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xfaa49b08 fp = 0xfaa49b20 r4 = 0x00000000 r5 = 0x000010b8 r6 = 0xc729a000 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0x00000000 --More-- mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc2203440 (sleepq_catch_signals+0xb4) sp = 0xfaa49b28 fp = 0xfaa49b70 r4 = 0xc729a000 r5 = 0xc70be2e4 r6 = 0x00000000 r7 = 0xc70be2d0 r8 = 0x00000006 r9 = 0xc728e378 sleepq_catch_signals() at sleepq_catch_signals+0xb4 pc = 0xc2203440 lr = 0xc2203314 (sleepq_wait_sig+0xc) sp = 0xfaa49b78 fp = 0xfaa49b80 r4 = 0xc258c830 r5 = 0xc70be2e4 r6 = 0xc729a000 r7 = 0xc70be2d0 r8 = 0x00000000 r9 = 0x00000000 r10 = 0xc25d2840 sleepq_wait_sig() at sleepq_wait_sig+0xc pc = 0xc2203314 lr = 0xc2143130 (_cv_wait_sig+0x1ec) sp = 0xfaa49b88 fp = 0xfaa49bc8 r4 = 0xc258c830 r10 = 0xc25d2840 _cv_wait_sig() at _cv_wait_sig+0x1ec pc = 0xc2143130 lr = 0xc2211f48 (seltdwait+0x15c) sp = 0xfaa49bd0 fp = 0xfaa49c08 --More-- r4 = 0xc70be2e0 r5 = 0xc70be2c0 r6 = 0xffffffff r7 = 0x00000023 r8 = 0xffffffff r9 = 0x20c0d210 r10 = 0x00000000 seltdwait() at seltdwait+0x15c pc = 0xc2211f48 lr = 0xc2211958 (kern_select+0x8a8) sp = 0xfaa49c10 fp = 0xfaa49da0 r4 = 0xfaa49c78 r5 = 0x00000400 r6 = 0x0000000a r7 = 0x00000004 r8 = 0xfaa49c6c r10 = 0x00000000 kern_select() at kern_select+0x8a8 pc = 0xc2211958 lr = 0xc2211de4 (sys_select+0x58) sp = 0xfaa49da8 fp = 0xfaa49dd8 r4 = 0xc729a000 r5 = 0x00000020 r6 = 0x00000000 r7 = 0x00000000 r8 = 0xfaa49df0 r9 = 0x00000000 r10 = 0xc728e378 sys_select() at sys_select+0x58 pc = 0xc2211de4 lr = 0xc24994c8 (swi_handler+0x4b8) sp = 0xfaa49de0 fp = 0xfaa49e50 --More-- r4 = 0xc729a000 r5 = 0x00000000 r6 = 0x60000013 r10 = 0xc728e378 swi_handler() at swi_handler+0x4b8 pc = 0xc24994c8 lr = 0xc2482418 (swi_exit) sp = 0xfaa49e58 fp = 0xbfbff7a8 r4 = 0x20c03300 r5 = 0x00000000 r6 = 0x0000000a r7 = 0x0000005d r8 = 0x00000000 r9 = 0x20c0d218 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xfaa49e58 fp = 0xbfbff7a8 100067 (0xc71e4350) (stack 0xfa9bd000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xfa9beaf8 fp = 0xfa9beb30 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xfa9beb38 fp = 0xfa9beb50 r4 = 0x00000000 r5 = 0x005a91d4 r6 = 0xc71e4350 r7 = 0xc25a5190 --More-- r8 = 0x00000000 r9 = 0x00000104 r10 = 0x00000000 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc2203440 (sleepq_catch_signals+0xb4) sp = 0xfa9beb58 fp = 0xfa9beba0 r4 = 0xc71e4350 r5 = 0xc7124624 r6 = 0x00000000 r7 = 0xc7124610 r8 = 0x00000062 r9 = 0xc71d66f0 sleepq_catch_signals() at sleepq_catch_signals+0xb4 pc = 0xc2203440 lr = 0xc2203314 (sleepq_wait_sig+0xc) sp = 0xfa9beba8 fp = 0xfa9bebb0 r4 = 0xc258c830 r5 = 0xc7124624 r6 = 0xc71e4350 r7 = 0xc7124610 r8 = 0x00000000 r9 = 0x00000000 r10 = 0xc25d2840 sleepq_wait_sig() at sleepq_wait_sig+0xc pc = 0xc2203314 lr = 0xc2143130 (_cv_wait_sig+0x1ec) sp = 0xfa9bebb8 fp = 0xfa9bebf8 r4 = 0xc258c830 r10 = 0xc25d2840 _cv_wait_sig() at _cv_wait_sig+0x1ec --More-- pc = 0xc2143130 lr = 0xc2211f48 (seltdwait+0x15c) sp = 0xfa9bec00 fp = 0xfa9bec38 r4 = 0xc7124620 r5 = 0xc7124600 r6 = 0xffffffff r7 = 0x00000023 r8 = 0xffffffff r9 = 0x00000000 r10 = 0xc71e4350 seltdwait() at seltdwait+0x15c pc = 0xc2211f48 lr = 0xc22125a4 (kern_poll+0x54c) sp = 0xfa9bec40 fp = 0xfa9bedb8 r4 = 0xc221a6ac r5 = 0xfa9bec80 r6 = 0xc7245bc0 r7 = 0x00000000 r8 = 0x00000000 r10 = 0xc71e4350 kern_poll() at kern_poll+0x54c pc = 0xc22125a4 lr = 0xc2212048 (sys_poll+0x7c) sp = 0xfa9bedc0 fp = 0xfa9bedd8 r4 = 0xc71e4350 r5 = 0xbfbff830 r6 = 0x60000013 r7 = 0x00000000 r8 = 0xfa9bedf0 r9 = 0x00000000 r10 = 0xc71d66f0 sys_poll() at sys_poll+0x7c --More-- pc = 0xc2212048 lr = 0xc24994c8 (swi_handler+0x4b8) sp = 0xfa9bede0 fp = 0xfa9bee50 swi_handler() at swi_handler+0x4b8 pc = 0xc24994c8 lr = 0xc2482418 (swi_exit) sp = 0xfa9bee58 fp = 0xbfbff828 r4 = 0x00000000 r5 = 0xbfbff830 r6 = 0x00000001 r7 = 0x000000d1 r8 = 0xffffffff r9 = 0x00000001 r10 = 0x00052268 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xfa9bee58 fp = 0xbfbff828 100065 (0xc709d9f0) (stack 0xfa96c000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xfa96db80 fp = 0xfa96dbb8 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xfa96dbc0 fp = 0xfa96dbd8 r4 = 0x00000000 r5 = 0x0003bf97 r6 = 0xc709d9f0 r7 = 0xc25a5190 --More-- r8 = 0x00000000 r9 = 0x00000104 r10 = 0x00000000 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc2203440 (sleepq_catch_signals+0xb4) sp = 0xfa96dbe0 fp = 0xfa96dc28 r4 = 0xc709d9f0 r5 = 0xc6b27270 r6 = 0x00000000 r7 = 0xc6b27204 r8 = 0x00000002 r9 = 0xc72ae378 sleepq_catch_signals() at sleepq_catch_signals+0xb4 pc = 0xc2203440 lr = 0xc2203314 (sleepq_wait_sig+0xc) sp = 0xfa96dc30 fp = 0xfa96dc38 r4 = 0xc258c830 r5 = 0xc6b27270 r6 = 0xc709d9f0 r7 = 0xc6b27204 r8 = 0x00000000 r9 = 0x00000000 r10 = 0xc25d2840 sleepq_wait_sig() at sleepq_wait_sig+0xc pc = 0xc2203314 lr = 0xc2143130 (_cv_wait_sig+0x1ec) sp = 0xfa96dc40 fp = 0xfa96dc80 r4 = 0xc258c830 r10 = 0xc25d2840 _cv_wait_sig() at _cv_wait_sig+0x1ec --More-- pc = 0xc2143130 lr = 0xc22211f8 (tty_wait+0x20) sp = 0xfa96dc88 fp = 0xfa96dc90 r4 = 0xc6b27200 r5 = 0x00000002 r6 = 0x00000001 r7 = 0x00000023 r8 = 0xc6b27228 r9 = 0x00000000 r10 = 0x00000001 tty_wait() at tty_wait+0x20 pc = 0xc22211f8 lr = 0xc222ab40 (ttydisc_read+0x2c0) sp = 0xfa96dc98 fp = 0xfa96dcc8 r4 = 0xc6b27200 r5 = 0xfa96ddb8 ttydisc_read() at ttydisc_read+0x2c0 pc = 0xc222ab40 lr = 0xc2224968 (ttydev_read+0xbc) sp = 0xfa96dcd0 fp = 0xfa96dcf8 r4 = 0xc6b27200 r5 = 0x00000001 r6 = 0xfa96ddb8 r7 = 0x00000000 r8 = 0x00000000 r9 = 0xc709d9f0 r10 = 0xfa96ddb8 ttydev_read() at ttydev_read+0xbc pc = 0xc2224968 lr = 0xc20b326c (devfs_read_f+0xb0) sp = 0xfa96dd00 fp = 0xfa96dd30 --More-- r4 = 0xc2592ab0 r5 = 0x00000001 r6 = 0xc7245b00 r7 = 0x00000003 devfs_read_f() at devfs_read_f+0xb0 pc = 0xc20b326c lr = 0xc22102ac (dofileread+0xb4) sp = 0xfa96dd38 fp = 0xfa96dd60 r4 = 0xc709d9f0 r5 = 0xc20b31bc r6 = 0xfa96ddb8 r7 = 0xc7245b00 r8 = 0x00000000 r9 = 0x00000000 r10 = 0x00000001 dofileread() at dofileread+0xb4 pc = 0xc22102ac lr = 0xc220ffe8 (kern_readv+0x78) sp = 0xfa96dd68 fp = 0xfa96dda8 r4 = 0xffffffff r5 = 0x00000000 r6 = 0x00000010 r7 = 0x00000000 r8 = 0xfa96ddb8 r9 = 0xc709d9f0 r10 = 0xc72ae378 kern_readv() at kern_readv+0x78 pc = 0xc220ffe8 lr = 0xc220ff60 (sys_read+0x4c) sp = 0xfa96ddb0 fp = 0xfa96ddd8 r4 = 0xc709d9f0 r5 = 0xbfbff486 --More-- r6 = 0x60000013 r7 = 0x00000000 r8 = 0xfa96ddf0 r9 = 0x00000000 sys_read() at sys_read+0x4c pc = 0xc220ff60 lr = 0xc24994c8 (swi_handler+0x4b8) sp = 0xfa96dde0 fp = 0xfa96de50 swi_handler() at swi_handler+0x4b8 pc = 0xc24994c8 lr = 0xc2482418 (swi_exit) sp = 0xfa96de58 fp = 0xbfbff478 r4 = 0x00000001 r5 = 0xbfbff486 r6 = 0x00000010 r7 = 0x00000003 r8 = 0x00066928 r9 = 0x00088d40 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xfa96de58 fp = 0xbfbff478 100049 (0xc71e5350) (stack 0xfa75c000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xfa75dae8 fp = 0xfa75db20 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) --More-- sp = 0xfa75db28 fp = 0xfa75db40 r4 = 0x00000000 r5 = 0x00433c34 r6 = 0xc71e5350 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0x00000000 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc2203440 (sleepq_catch_signals+0xb4) sp = 0xfa75db48 fp = 0xfa75db90 r4 = 0xc71e5350 r5 = 0xc71d76f0 r6 = 0x0000006c r7 = 0x00000000 r8 = 0x00000086 r9 = 0xc71d76f0 sleepq_catch_signals() at sleepq_catch_signals+0xb4 pc = 0xc2203440 lr = 0xc2203314 (sleepq_wait_sig+0xc) sp = 0xfa75db98 fp = 0xfa75dba0 r4 = 0xc71e5350 r5 = 0xc71d76f0 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r9 = 0x0000006c r10 = 0xc71d779c sleepq_wait_sig() at sleepq_wait_sig+0xc pc = 0xc2203314 lr = 0xc21b548c (_sleep+0x464) --More-- sp = 0xfa75dba8 fp = 0xfa75dc08 r4 = 0xc71e5350 r10 = 0xc71d779c _sleep() at _sleep+0x464 pc = 0xc21b548c lr = 0xc2165bcc (kern_wait6+0x7dc) sp = 0xfa75dc10 fp = 0xfa75dc98 r4 = 0x00000000 r5 = 0x00000000 r6 = 0x00000000 r7 = 0x00000000 r8 = 0xc71e5350 r9 = 0xc71d77ac r10 = 0x0000023c kern_wait6() at kern_wait6+0x7dc pc = 0xc2165bcc lr = 0xc21652a8 (sys_wait4+0x84) sp = 0xfa75dca0 fp = 0xfa75ddd8 r4 = 0x00000030 r5 = 0x00000000 r6 = 0x00000000 r7 = 0xfa75dcb4 r8 = 0xfa75ddf8 r9 = 0x00000000 r10 = 0xc71d76f0 sys_wait4() at sys_wait4+0x84 pc = 0xc21652a8 lr = 0xc24994c8 (swi_handler+0x4b8) sp = 0xfa75dde0 fp = 0xfa75de50 r4 = 0xc71e5350 r5 = 0x00014d00 --More-- r6 = 0x60000013 r7 = 0x00000000 r8 = 0xfa75ddf0 r10 = 0xc71d76f0 swi_handler() at swi_handler+0x4b8 pc = 0xc24994c8 lr = 0xc2482418 (swi_exit) sp = 0xfa75de58 fp = 0xbfbffe58 r4 = 0x0000023c r5 = 0x00014d00 r6 = 0x20862090 r7 = 0x00000007 r8 = 0x00014e3c r9 = 0x00000001 r10 = 0x0000c643 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xfa75de58 fp = 0xbfbffe58 100061 (0xc70c29f0) (stack 0xfa875000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xfa876c28 fp = 0xfa876c60 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xfa876c68 fp = 0xfa876c80 r4 = 0x00000000 r5 = 0x0002279d r6 = 0xc70c29f0 r7 = 0xc25a5190 --More-- r8 = 0x00000000 r9 = 0x00000104 r10 = 0x00000000 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc2203440 (sleepq_catch_signals+0xb4) sp = 0xfa876c88 fp = 0xfa876cd0 r4 = 0xc70c29f0 r5 = 0xc25ba2e1 r6 = 0x0000006c r7 = 0xe58fddff r8 = 0x00000043 r9 = 0xc72af378 sleepq_catch_signals() at sleepq_catch_signals+0xb4 pc = 0xc2203440 lr = 0xc2203a94 (sleepq_timedwait_sig+0xc) sp = 0xfa876cd8 fp = 0xfa876ce8 r4 = 0x00011d56 r5 = 0xc25ba2e1 r6 = 0x00000200 r7 = 0xe58fddff r8 = 0x00000000 r9 = 0x0000006c r10 = 0x00000000 sleepq_timedwait_sig() at sleepq_timedwait_sig+0xc pc = 0xc2203a94 lr = 0xc21b5344 (_sleep+0x31c) sp = 0xfa876cf0 fp = 0xfa876d50 r4 = 0x00011d56 r5 = 0xc25ba2e1 r6 = 0x00000200 r10 = 0x00000000 --More-- _sleep() at _sleep+0x31c pc = 0xc21b5344 lr = 0xc21c26ec (kern_nanosleep+0x1a0) sp = 0xfa876d58 fp = 0xfa876da8 r4 = 0xdcf99989 r5 = 0xbdcf9998 r6 = 0x00000000 r7 = 0xfa876dc0 r8 = 0x00011d56 r9 = 0xe58ed4af r10 = 0x0000003b kern_nanosleep() at kern_nanosleep+0x1a0 pc = 0xc21c26ec lr = 0xc21c2830 (sys_nanosleep+0x5c) sp = 0xfa876db0 fp = 0xfa876dd8 r4 = 0xfa876df8 r5 = 0x00000000 r6 = 0x60000013 r7 = 0x00000000 r8 = 0xfa876df0 r9 = 0x00000000 r10 = 0xc72af378 sys_nanosleep() at sys_nanosleep+0x5c pc = 0xc21c2830 lr = 0xc24994c8 (swi_handler+0x4b8) sp = 0xfa876de0 fp = 0xfa876e50 r4 = 0xc70c29f0 r5 = 0x00000000 swi_handler() at swi_handler+0x4b8 pc = 0xc24994c8 lr = 0xc2482418 (swi_exit) --More-- sp = 0xfa876e58 fp = 0xbfbffe20 r4 = 0x00000000 r5 = 0x00000000 r6 = 0x0000003c r7 = 0x000000f0 r8 = 0x000197e8 r9 = 0x00000013 r10 = 0x00019680 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xfa876e58 fp = 0xbfbffe20 100052 (0xc71e5000) (stack 0xfa77e000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xfa77fac8 fp = 0xfa77fb00 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xfa77fb08 fp = 0xfa77fb20 r4 = 0x00000000 r5 = 0x0002a3b2 r6 = 0xc71e5000 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0x00000000 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc2203440 (sleepq_catch_signals+0xb4) --More-- sp = 0xfa77fb28 fp = 0xfa77fb70 r4 = 0xc71e5000 r5 = 0xc704f9a4 r6 = 0x00000000 r7 = 0xc704f990 r8 = 0x0000005d r9 = 0xc71d7378 sleepq_catch_signals() at sleepq_catch_signals+0xb4 pc = 0xc2203440 lr = 0xc2203314 (sleepq_wait_sig+0xc) sp = 0xfa77fb78 fp = 0xfa77fb80 r4 = 0xc258c830 r5 = 0xc704f9a4 r6 = 0xc71e5000 r7 = 0xc704f990 r8 = 0x00000000 r9 = 0x00000000 r10 = 0xc25d2840 sleepq_wait_sig() at sleepq_wait_sig+0xc pc = 0xc2203314 lr = 0xc2143130 (_cv_wait_sig+0x1ec) sp = 0xfa77fb88 fp = 0xfa77fbc8 r4 = 0xc258c830 r10 = 0xc25d2840 _cv_wait_sig() at _cv_wait_sig+0x1ec pc = 0xc2143130 lr = 0xc2211f48 (seltdwait+0x15c) sp = 0xfa77fbd0 fp = 0xfa77fc08 r4 = 0xc704f9a0 r5 = 0xc704f980 r6 = 0xffffffff r7 = 0x00000023 --More-- r8 = 0xffffffff r9 = 0x20c0d148 r10 = 0x00000000 seltdwait() at seltdwait+0x15c pc = 0xc2211f48 lr = 0xc2211958 (kern_select+0x8a8) sp = 0xfa77fc10 fp = 0xfa77fda0 r4 = 0x00000000 r5 = 0x00000020 r6 = 0x00000005 r7 = 0x00000004 r8 = 0xfa77fc6c r10 = 0x00000000 kern_select() at kern_select+0x8a8 pc = 0xc2211958 lr = 0xc2211de4 (sys_select+0x58) sp = 0xfa77fda8 fp = 0xfa77fdd8 r4 = 0xc71e5000 r5 = 0x00000020 r6 = 0x00000000 r7 = 0x00000000 r8 = 0xfa77fdf0 r9 = 0x00000000 r10 = 0xc71d7378 sys_select() at sys_select+0x58 pc = 0xc2211de4 lr = 0xc24994c8 (swi_handler+0x4b8) sp = 0xfa77fde0 fp = 0xfa77fe50 r4 = 0xc71e5000 r5 = 0x00000000 r6 = 0x60000013 r10 = 0xc71d7378 --More-- swi_handler() at swi_handler+0x4b8 pc = 0xc24994c8 lr = 0xc2482418 (swi_exit) sp = 0xfa77fe58 fp = 0xbfbff880 r4 = 0x20c03300 r5 = 0x00000000 r6 = 0x00000007 r7 = 0x0000005d r8 = 0x00000000 r9 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xfa77fe58 fp = 0xbfbff880 100068 (0xc729a9f0) (stack 0xfa9de000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xfa9dfac8 fp = 0xfa9dfb00 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xfa9dfb08 fp = 0xfa9dfb20 r4 = 0x00000000 r5 = 0x0010658a r6 = 0xc729a9f0 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0x00000000 --More-- mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc2203440 (sleepq_catch_signals+0xb4) sp = 0xfa9dfb28 fp = 0xfa9dfb70 r4 = 0xc729a9f0 r5 = 0xc7050fa4 r6 = 0x00000000 r7 = 0xc7050f90 r8 = 0x000000ab r9 = 0xc7291000 sleepq_catch_signals() at sleepq_catch_signals+0xb4 pc = 0xc2203440 lr = 0xc2203314 (sleepq_wait_sig+0xc) sp = 0xfa9dfb78 fp = 0xfa9dfb80 r4 = 0xc258c830 r5 = 0xc7050fa4 r6 = 0xc729a9f0 r7 = 0xc7050f90 r8 = 0x00000000 r9 = 0x00000000 r10 = 0xc25d2840 sleepq_wait_sig() at sleepq_wait_sig+0xc pc = 0xc2203314 lr = 0xc2143130 (_cv_wait_sig+0x1ec) sp = 0xfa9dfb88 fp = 0xfa9dfbc8 r4 = 0xc258c830 r10 = 0xc25d2840 _cv_wait_sig() at _cv_wait_sig+0x1ec pc = 0xc2143130 lr = 0xc2211f48 (seltdwait+0x15c) sp = 0xfa9dfbd0 fp = 0xfa9dfc08 --More-- r4 = 0xc7050fa0 r5 = 0xc7050f80 r6 = 0xffffffff r7 = 0x00000023 r8 = 0xffffffff r9 = 0xbfbfedb4 r10 = 0x00000000 seltdwait() at seltdwait+0x15c pc = 0xc2211f48 lr = 0xc2211958 (kern_select+0x8a8) sp = 0xfa9dfc10 fp = 0xfa9dfda0 r4 = 0x00000000 r5 = 0x08000000 r6 = 0x0000001b r7 = 0x00000004 r8 = 0xfa9dfc6c r10 = 0x00000000 kern_select() at kern_select+0x8a8 pc = 0xc2211958 lr = 0xc2211de4 (sys_select+0x58) sp = 0xfa9dfda8 fp = 0xfa9dfdd8 r4 = 0xc729a9f0 r5 = 0x00000020 r6 = 0x00000000 r7 = 0x00000000 r8 = 0xfa9dfdf0 r9 = 0x00000000 r10 = 0xc7291000 sys_select() at sys_select+0x58 pc = 0xc2211de4 lr = 0xc24994c8 (swi_handler+0x4b8) sp = 0xfa9dfde0 fp = 0xfa9dfe50 --More-- r4 = 0xc729a9f0 r5 = 0x00000000 r6 = 0x60000013 r10 = 0xc7291000 swi_handler() at swi_handler+0x4b8 pc = 0xc24994c8 lr = 0xc2482418 (swi_exit) sp = 0xfa9dfe58 fp = 0xbfbfed68 r4 = 0x20c03300 r5 = 0x00000000 r6 = 0x0000001b r7 = 0x0000005d r8 = 0x00000000 r9 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xfa9dfe58 fp = 0xbfbfed68 100066 (0xc71e46a0) (stack 0xfa9ba000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xfa9bbac8 fp = 0xfa9bbb00 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xfa9bbb08 fp = 0xfa9bbb20 r4 = 0x00000000 r5 = 0x00031fae r6 = 0xc71e46a0 r7 = 0xc25a5190 --More-- r8 = 0x00000000 r9 = 0x00000104 r10 = 0x00000000 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc2203440 (sleepq_catch_signals+0xb4) sp = 0xfa9bbb28 fp = 0xfa9bbb70 r4 = 0xc71e46a0 r5 = 0xc70bcf64 r6 = 0x00000000 r7 = 0xc70bcf50 r8 = 0x000000ab r9 = 0xc71d6a68 sleepq_catch_signals() at sleepq_catch_signals+0xb4 pc = 0xc2203440 lr = 0xc2203314 (sleepq_wait_sig+0xc) sp = 0xfa9bbb78 fp = 0xfa9bbb80 r4 = 0xc258c830 r5 = 0xc70bcf64 r6 = 0xc71e46a0 r7 = 0xc70bcf50 r8 = 0x00000000 r9 = 0x00000000 r10 = 0xc25d2840 sleepq_wait_sig() at sleepq_wait_sig+0xc pc = 0xc2203314 lr = 0xc2143130 (_cv_wait_sig+0x1ec) sp = 0xfa9bbb88 fp = 0xfa9bbbc8 r4 = 0xc258c830 r10 = 0xc25d2840 _cv_wait_sig() at _cv_wait_sig+0x1ec --More-- pc = 0xc2143130 lr = 0xc2211f48 (seltdwait+0x15c) sp = 0xfa9bbbd0 fp = 0xfa9bbc08 r4 = 0xc70bcf60 r5 = 0xc70bcf40 r6 = 0xffffffff r7 = 0x00000023 r8 = 0xffffffff r9 = 0xbfbff998 r10 = 0x00000000 seltdwait() at seltdwait+0x15c pc = 0xc2211f48 lr = 0xc2211958 (kern_select+0x8a8) sp = 0xfa9bbc10 fp = 0xfa9bbda0 r4 = 0x00000000 r5 = 0x00000080 r6 = 0x00000007 r7 = 0x00000004 r8 = 0xfa9bbc6c r10 = 0x00000000 kern_select() at kern_select+0x8a8 pc = 0xc2211958 lr = 0xc2211de4 (sys_select+0x58) sp = 0xfa9bbda8 fp = 0xfa9bbdd8 r4 = 0xc71e46a0 r5 = 0x00000020 r6 = 0x00000000 r7 = 0x00000000 r8 = 0xfa9bbdf0 r9 = 0x00000000 r10 = 0xc71d6a68 sys_select() at sys_select+0x58 --More-- pc = 0xc2211de4 lr = 0xc24994c8 (swi_handler+0x4b8) sp = 0xfa9bbde0 fp = 0xfa9bbe50 r4 = 0xc71e46a0 r5 = 0xbfbff998 r6 = 0x60000013 r10 = 0xc71d6a68 swi_handler() at swi_handler+0x4b8 pc = 0xc24994c8 lr = 0xc2482418 (swi_exit) sp = 0xfa9bbe58 fp = 0xbfbffe28 r4 = 0x00000000 r5 = 0xbfbff998 r6 = 0x00000006 r7 = 0x0000005d r8 = 0x1ffffffc r9 = 0x00000006 r10 = 0x00000001 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xfa9bbe58 fp = 0xbfbffe28 100063 (0xc70c2350) (stack 0xfa8cb000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xfa8ccac8 fp = 0xfa8ccb00 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xfa8ccb08 fp = 0xfa8ccb20 --More-- r4 = 0x00000000 r5 = 0x00000000 r6 = 0xc70c2350 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0x00000000 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc2203440 (sleepq_catch_signals+0xb4) sp = 0xfa8ccb28 fp = 0xfa8ccb70 r4 = 0xc70c2350 r5 = 0xc70e67a4 r6 = 0x00000000 r7 = 0xc70e6790 r8 = 0x000000c3 r9 = 0xc72aea68 sleepq_catch_signals() at sleepq_catch_signals+0xb4 pc = 0xc2203440 lr = 0xc2203314 (sleepq_wait_sig+0xc) sp = 0xfa8ccb78 fp = 0xfa8ccb80 r4 = 0xc258c830 r5 = 0xc70e67a4 r6 = 0xc70c2350 r7 = 0xc70e6790 r8 = 0x00000000 r9 = 0x00000000 r10 = 0xc25d2840 sleepq_wait_sig() at sleepq_wait_sig+0xc pc = 0xc2203314 lr = 0xc2143130 (_cv_wait_sig+0x1ec) sp = 0xfa8ccb88 fp = 0xfa8ccbc8 --More-- r4 = 0xc258c830 r10 = 0xc25d2840 _cv_wait_sig() at _cv_wait_sig+0x1ec pc = 0xc2143130 lr = 0xc2211f48 (seltdwait+0x15c) sp = 0xfa8ccbd0 fp = 0xfa8ccc08 r4 = 0xc70e67a0 r5 = 0xc70e6780 r6 = 0xffffffff r7 = 0x00000023 r8 = 0xffffffff r9 = 0xbfbff844 r10 = 0x00000000 seltdwait() at seltdwait+0x15c pc = 0xc2211f48 lr = 0xc2211958 (kern_select+0x8a8) sp = 0xfa8ccc10 fp = 0xfa8ccda0 r4 = 0x00000000 r5 = 0x00000040 r6 = 0x00000006 r7 = 0x00000004 r8 = 0xfa8ccc6c r10 = 0x00000000 kern_select() at kern_select+0x8a8 pc = 0xc2211958 lr = 0xc2211de4 (sys_select+0x58) sp = 0xfa8ccda8 fp = 0xfa8ccdd8 r4 = 0xc70c2350 r5 = 0x00000020 r6 = 0x00000000 r7 = 0x00000000 r8 = 0xfa8ccdf0 r9 = 0x00000000 --More-- r10 = 0xc72aea68 sys_select() at sys_select+0x58 pc = 0xc2211de4 lr = 0xc24994c8 (swi_handler+0x4b8) sp = 0xfa8ccde0 fp = 0xfa8cce50 r4 = 0xc70c2350 r5 = 0xbfbff844 r6 = 0x60000013 r10 = 0xc72aea68 swi_handler() at swi_handler+0x4b8 pc = 0xc24994c8 lr = 0xc2482418 (swi_exit) sp = 0xfa8cce58 fp = 0xbfbff8e0 r4 = 0x00000013 r5 = 0xbfbff844 r6 = 0x00000000 r7 = 0x0000005d r8 = 0xbfbff8f8 r9 = 0x00000006 r10 = 0x00000005 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xfa8cce58 fp = 0xbfbff8e0 100054 (0xc71e49f0) (stack 0xfa789000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xfa78aac8 fp = 0xfa78ab00 sched_switch() at sched_switch+0x264 --More-- pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xfa78ab08 fp = 0xfa78ab20 r4 = 0x00000000 r5 = 0x0000ccf5 r6 = 0xc71e49f0 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0x00000000 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc2203440 (sleepq_catch_signals+0xb4) sp = 0xfa78ab28 fp = 0xfa78ab70 r4 = 0xc71e49f0 r5 = 0xc704fc24 r6 = 0x00000000 r7 = 0xc704fc10 r8 = 0x000000d8 r9 = 0xc71d7000 sleepq_catch_signals() at sleepq_catch_signals+0xb4 pc = 0xc2203440 lr = 0xc2203314 (sleepq_wait_sig+0xc) sp = 0xfa78ab78 fp = 0xfa78ab80 r4 = 0xc258c830 r5 = 0xc704fc24 r6 = 0xc71e49f0 r7 = 0xc704fc10 r8 = 0x00000000 r9 = 0x00000000 r10 = 0xc25d2840 sleepq_wait_sig() at sleepq_wait_sig+0xc --More-- pc = 0xc2203314 lr = 0xc2143130 (_cv_wait_sig+0x1ec) sp = 0xfa78ab88 fp = 0xfa78abc8 r4 = 0xc258c830 r10 = 0xc25d2840 _cv_wait_sig() at _cv_wait_sig+0x1ec pc = 0xc2143130 lr = 0xc2211f48 (seltdwait+0x15c) sp = 0xfa78abd0 fp = 0xfa78ac08 r4 = 0xc704fc20 r5 = 0xc704fc00 r6 = 0xffffffff r7 = 0x00000023 r8 = 0xffffffff r9 = 0x20816078 r10 = 0x00000000 seltdwait() at seltdwait+0x15c pc = 0xc2211f48 lr = 0xc2211958 (kern_select+0x8a8) sp = 0xfa78ac10 fp = 0xfa78ada0 r4 = 0x00000000 r5 = 0x00000080 r6 = 0x00000007 r7 = 0x00000004 r8 = 0xfa78ac6c r10 = 0x00000000 kern_select() at kern_select+0x8a8 pc = 0xc2211958 lr = 0xc2211de4 (sys_select+0x58) sp = 0xfa78ada8 fp = 0xfa78add8 r4 = 0xc71e49f0 r5 = 0x00000020 --More-- r6 = 0x00000000 r7 = 0x00000000 r8 = 0xfa78adf0 r9 = 0x00000000 r10 = 0xc71d7000 sys_select() at sys_select+0x58 pc = 0xc2211de4 lr = 0xc24994c8 (swi_handler+0x4b8) sp = 0xfa78ade0 fp = 0xfa78ae50 r4 = 0xc71e49f0 r5 = 0x0001a2a8 r6 = 0x60000013 r10 = 0xc71d7000 swi_handler() at swi_handler+0x4b8 pc = 0xc24994c8 lr = 0xc2482418 (swi_exit) sp = 0xfa78ae58 fp = 0xbfbffe18 r4 = 0x00000001 r5 = 0x0001a2a8 r6 = 0x0001b0b4 r7 = 0x0000005d r8 = 0x1ffffffc r9 = 0x0001b0b4 r10 = 0x0001a2a8 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xfa78ae58 fp = 0xbfbffe18 100059 (0xc729b000) (stack 0xfa7d9000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) --More-- sp = 0xfa7daab8 fp = 0xfa7daaf0 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xfa7daaf8 fp = 0xfa7dab10 r4 = 0x00000000 r5 = 0x000030b3 r6 = 0xc729b000 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0x00000000 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc2203440 (sleepq_catch_signals+0xb4) sp = 0xfa7dab18 fp = 0xfa7dab60 r4 = 0xc729b000 r5 = 0xc70e63e4 r6 = 0x00000000 r7 = 0x00011d87 r8 = 0x00000087 r9 = 0xc7291378 sleepq_catch_signals() at sleepq_catch_signals+0xb4 pc = 0xc2203440 lr = 0xc2203a94 (sleepq_timedwait_sig+0xc) sp = 0xfa7dab68 fp = 0xfa7dab78 r4 = 0xc70e63d0 r5 = 0xc70e63e4 r6 = 0xc258c830 r7 = 0x00011d87 r8 = 0xc25d2840 r9 = 0x00000000 --More-- r10 = 0x00000000 sleepq_timedwait_sig() at sleepq_timedwait_sig+0xc pc = 0xc2203a94 lr = 0xc2143758 (_cv_timedwait_sig_sbt+0x228) sp = 0xfa7dab80 fp = 0xfa7dabc8 r4 = 0xc70e63d0 r5 = 0xc70e63e4 r6 = 0xc258c830 r10 = 0x00000000 _cv_timedwait_sig_sbt() at _cv_timedwait_sig_sbt+0x228 pc = 0xc2143758 lr = 0xc2211f40 (seltdwait+0x154) sp = 0xfa7dabd0 fp = 0xfa7dac08 r4 = 0xc70e63e0 r5 = 0xc70e63c0 r6 = 0xc74b0204 r7 = 0x00000200 r8 = 0x00011d87 r9 = 0xbfbfdd70 r10 = 0x00000000 seltdwait() at seltdwait+0x154 pc = 0xc2211f40 lr = 0xc2211958 (kern_select+0x8a8) sp = 0xfa7dac10 fp = 0xfa7dada0 r4 = 0x00000000 r5 = 0x00000040 r6 = 0x00000006 r7 = 0x00000004 r8 = 0xfa7dac6c r10 = 0x00000000 kern_select() at kern_select+0x8a8 --More-- pc = 0xc2211958 lr = 0xc2211de4 (sys_select+0x58) sp = 0xfa7dada8 fp = 0xfa7dadd8 r4 = 0xc729b000 r5 = 0x00000020 r6 = 0xfa7dadb8 r7 = 0x00000000 r8 = 0xfa7dadf0 r9 = 0x00000000 r10 = 0xc7291378 sys_select() at sys_select+0x58 pc = 0xc2211de4 lr = 0xc24994c8 (swi_handler+0x4b8) sp = 0xfa7dade0 fp = 0xfa7dae50 r4 = 0xc729b000 r5 = 0x00000000 r6 = 0x60000013 r10 = 0xc7291378 swi_handler() at swi_handler+0x4b8 pc = 0xc24994c8 lr = 0xc2482418 (swi_exit) sp = 0xfa7dae58 fp = 0xbfbffe30 r4 = 0x00000000 r5 = 0x00000000 r6 = 0xbfbfdd70 r7 = 0x0000005d r8 = 0x00001fff r9 = 0x000ebde0 r10 = 0xbfbfdd70 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) --More-- sp = 0xfa7dae58 fp = 0xbfbffe30 100047 (0xc7048000) (stack 0xe1df9000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xe1dfad00 fp = 0xe1dfad38 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xe1dfad40 fp = 0xe1dfad58 r4 = 0x00000000 r5 = 0x00984386 r6 = 0xc7048000 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0x00000000 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc22039c8 (sleepq_timedwait+0x38) sp = 0xe1dfad60 fp = 0xe1dfad70 r4 = 0xc7048000 r5 = 0x00000000 r6 = 0xc25cc1f0 r7 = 0x00000000 r8 = 0xc25d2840 r9 = 0x00000000 sleepq_timedwait() at sleepq_timedwait+0x38 pc = 0xc22039c8 lr = 0xc2143444 (_cv_timedwait_sbt+0x228) sp = 0xe1dfad78 fp = 0xe1dfadc0 --More-- r4 = 0xc25cc228 r5 = 0xc25cc1f0 r6 = 0xc258c830 r10 = 0x00000000 _cv_timedwait_sbt() at _cv_timedwait_sbt+0x228 pc = 0xc2143444 lr = 0xc227a534 (sched_sync+0xb3c) sp = 0xe1dfadc8 fp = 0xe1dfae30 r4 = 0xc7048000 r5 = 0x00000004 r6 = 0x00000008 r7 = 0x00000000 r8 = 0x00000000 r9 = 0x0000000a r10 = 0xc25cc180 sched_sync() at sched_sync+0xb3c pc = 0xc227a534 lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1dfae38 fp = 0xe1dfae50 r4 = 0xc7048000 r5 = 0xc7063000 r6 = 0xc22799f8 r7 = 0x00000000 r8 = 0xe1dfae58 r9 = 0xc25d2210 r10 = 0xc25d2f9c fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1dfae58 fp = 0x00000000 r4 = 0xc22799f8 r5 = 0x00000000 --More-- r6 = 0xc6c5a6a0 r7 = 0x7ffb6c69 r8 = 0xc25c80d0 r10 = 0xc25d2f9c swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1dfae58 fp = 0x00000000 100046 (0xc7048350) (stack 0xe1df6000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xe1df7ce8 fp = 0xe1df7d20 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xe1df7d28 fp = 0xe1df7d40 r4 = 0x00000000 r5 = 0x000276a7 r6 = 0xc7048350 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0xc25cc214 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc22039c8 (sleepq_timedwait+0x38) sp = 0xe1df7d48 fp = 0xe1df7d58 r4 = 0xc7048350 r5 = 0x00000060 r6 = 0xc7063378 r7 = 0xfffffed8 --More-- r8 = 0x00000000 r9 = 0x00000060 sleepq_timedwait() at sleepq_timedwait+0x38 pc = 0xc22039c8 lr = 0xc21b546c (_sleep+0x444) sp = 0xe1df7d60 fp = 0xe1df7dc0 r4 = 0xc258c830 r5 = 0xc7063378 r6 = 0x00000100 r10 = 0xc25cc214 _sleep() at _sleep+0x444 pc = 0xc21b546c lr = 0xc227a758 (vnlru_proc+0xc4) sp = 0xe1df7dc8 fp = 0xe1df7e30 r4 = 0x00000004 r5 = 0x00000000 r6 = 0xc25cc1e0 r7 = 0xfffffed8 r8 = 0x00001cce r9 = 0xc7063378 r10 = 0xc25cc180 vnlru_proc() at vnlru_proc+0xc4 pc = 0xc227a758 lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1df7e38 fp = 0xe1df7e50 r4 = 0xc7048350 r5 = 0xc7063378 r6 = 0xc227a694 r7 = 0x00000000 r8 = 0xe1df7e58 r9 = 0xc25d2210 r10 = 0xc25d2f9c --More-- fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1df7e58 fp = 0x00000000 r4 = 0xc227a694 r5 = 0x00000000 r6 = 0xc6c5a6a0 r7 = 0x7ffb6c69 r8 = 0xc25c80d0 r10 = 0xc25d2f9c swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1df7e58 fp = 0x00000000 100045 (0xc70486a0) (stack 0xe1df3000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xe1df4d10 fp = 0xe1df4d48 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xe1df4d50 fp = 0xe1df4d68 r4 = 0x00000000 r5 = 0x00028131 r6 = 0xc70486a0 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0xc25cbe40 mi_switch() at mi_switch+0x140 --More-- pc = 0xc21b5af4 lr = 0xc22039c8 (sleepq_timedwait+0x38) sp = 0xe1df4d70 fp = 0xe1df4d80 r4 = 0xc70486a0 r5 = 0x00000054 r6 = 0xc25cbf90 r7 = 0xfffffed8 r8 = 0x00000000 r9 = 0x00000054 sleepq_timedwait() at sleepq_timedwait+0x38 pc = 0xc22039c8 lr = 0xc21b546c (_sleep+0x444) sp = 0xe1df4d88 fp = 0xe1df4de8 r4 = 0xc258c830 r5 = 0xc25cbf90 r6 = 0x00000100 r10 = 0xc25cbe40 _sleep() at _sleep+0x444 pc = 0xc21b546c lr = 0xc225a03c (buf_daemon+0x328) sp = 0xe1df4df0 fp = 0xe1df4e30 r4 = 0x0000038d r5 = 0xc25cbe50 r6 = 0x00000000 r7 = 0x00000000 r8 = 0xc25cbe40 r9 = 0xc25cbf80 r10 = 0x00000004 buf_daemon() at buf_daemon+0x328 pc = 0xc225a03c lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1df4e38 fp = 0xe1df4e50 --More-- r4 = 0xc70486a0 r5 = 0xc6c54000 r6 = 0xc2259d14 r7 = 0x00000000 r8 = 0xe1df4e58 r9 = 0xc25d2210 r10 = 0xc25d2f9c fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1df4e58 fp = 0x00000000 r4 = 0xc2259d14 r5 = 0x00000000 r6 = 0xc6c5a6a0 r7 = 0x7ffb6c69 r8 = 0xc25c80d0 r10 = 0xc25d2f9c swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1df4e58 fp = 0x00000000 100056 (0xc70c46a0) (stack 0xfa7ad000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xfa7aed08 fp = 0xfa7aed40 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xfa7aed48 fp = 0xfa7aed60 r4 = 0x00000000 r5 = 0x0004e495 --More-- r6 = 0xc70c46a0 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0xc7151400 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc22039c8 (sleepq_timedwait+0x38) sp = 0xfa7aed68 fp = 0xfa7aed78 r4 = 0xc70c46a0 r5 = 0x00000054 r6 = 0xc7151484 r7 = 0x7fffff6c r8 = 0x00000000 r9 = 0x00000054 sleepq_timedwait() at sleepq_timedwait+0x38 pc = 0xc22039c8 lr = 0xc21b546c (_sleep+0x444) sp = 0xfa7aed80 fp = 0xfa7aede0 r4 = 0xc258d600 r5 = 0xc7151484 r6 = 0x00000100 r10 = 0xc7151400 _sleep() at _sleep+0x444 pc = 0xc21b546c lr = 0xc23fd740 (softdep_flush+0x2e8) sp = 0xfa7aede8 fp = 0xfa7aee30 r4 = 0xc71ab2b0 r5 = 0x000000fa r6 = 0x00000000 r7 = 0x7fffff6c r8 = 0x00000001 r9 = 0xc71b9400 --More-- r10 = 0xc71ab308 softdep_flush() at softdep_flush+0x2e8 pc = 0xc23fd740 lr = 0xc216b014 (fork_exit+0xa4) sp = 0xfa7aee38 fp = 0xfa7aee50 r4 = 0xc70c46a0 r5 = 0xc6c54000 r6 = 0xc23fd458 r7 = 0xc71ab2b0 r8 = 0xfa7aee58 r9 = 0xc70486a0 r10 = 0xc25d2f9c fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xfa7aee58 fp = 0x00000000 r4 = 0xc23fd458 r5 = 0xc71ab2b0 r6 = 0xc6c5a350 r7 = 0x7ffb7a94 r8 = 0xc70489c8 r10 = 0xc25d2f9c swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xfa7aee58 fp = 0x00000000 100044 (0xc70489f0) (stack 0xe1df0000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xe1df1d10 fp = 0xe1df1d48 --More-- sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xe1df1d50 fp = 0xe1df1d68 r4 = 0x00000000 r5 = 0x000001ca r6 = 0xc70489f0 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0xc25d6480 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc22039c8 (sleepq_timedwait+0x38) sp = 0xe1df1d70 fp = 0xe1df1d80 r4 = 0xc70489f0 r5 = 0x00000000 r6 = 0xc25cf4c4 r7 = 0xfffea52b r8 = 0x00000000 r9 = 0x00000000 sleepq_timedwait() at sleepq_timedwait+0x38 pc = 0xc22039c8 lr = 0xc21b546c (_sleep+0x444) sp = 0xe1df1d88 fp = 0xe1df1de8 r4 = 0xc258c830 r5 = 0xc25cf4c4 r6 = 0x00000100 r10 = 0xc25d6480 _sleep() at _sleep+0x444 pc = 0xc21b546c lr = 0xc2474f24 (vm_pagezero+0x108) --More-- sp = 0xe1df1df0 fp = 0xe1df1e30 r4 = 0x0000012b r5 = 0xfffea520 r6 = 0x00000000 r7 = 0x00000100 r8 = 0xc25cf4c0 r9 = 0xc25d2210 r10 = 0xc25d2f9c vm_pagezero() at vm_pagezero+0x108 pc = 0xc2474f24 lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1df1e38 fp = 0xe1df1e50 r4 = 0xc70489f0 r5 = 0xc6c54378 r6 = 0xc2474e1c r7 = 0x00000000 r8 = 0xe1df1e58 r10 = 0xc25d2f9c fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1df1e58 fp = 0x00000000 r4 = 0xc2474e1c r5 = 0x00000000 r6 = 0xc6c5a6a0 r7 = 0x7ffb6c69 r8 = 0xc25c80d0 r10 = 0xc25d2f9c swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1df1e58 fp = 0x00000000 --More-- 100043 (0xc7049000) (stack 0xe1ded000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xe1deece8 fp = 0xe1deed20 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xe1deed28 fp = 0xe1deed40 r4 = 0x00000000 r5 = 0x00000000 r6 = 0xc7049000 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0xc25cf3d8 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc22031b0 (sleepq_wait+0x38) sp = 0xe1deed48 fp = 0xe1deed58 r4 = 0x00000074 r5 = 0xc25cf3c0 r6 = 0xc7049000 r7 = 0x00000000 r8 = 0x00000000 r9 = 0x00000074 sleepq_wait() at sleepq_wait+0x38 pc = 0xc22031b0 lr = 0xc21b5498 (_sleep+0x470) sp = 0xe1deed60 fp = 0xe1deedc0 r4 = 0xc7049000 r5 = 0xc25cf3c0 --More-- r6 = 0x00000000 r10 = 0xc25cf3d8 _sleep() at _sleep+0x470 pc = 0xc21b5498 lr = 0xc246b84c (vm_daemon+0x100) sp = 0xe1deedc8 fp = 0xe1deee30 r4 = 0xc25cf3e8 r5 = 0xc25cf3a0 r6 = 0x00000004 r7 = 0xc25cf3e8 r8 = 0xc25d2a24 r9 = 0x00000000 r10 = 0xc25d2f9c vm_daemon() at vm_daemon+0x100 pc = 0xc246b84c lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1deee38 fp = 0xe1deee50 r4 = 0xc7049000 r5 = 0xc6c546f0 r6 = 0xc246b74c r7 = 0x00000000 r8 = 0xe1deee58 r9 = 0xc25d2210 r10 = 0xc25d2f9c fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1deee58 fp = 0x00000000 r4 = 0xc246b74c r5 = 0x00000000 r6 = 0xc6c5a6a0 r7 = 0x7ffb6c69 --More-- r8 = 0xc25c80d0 r10 = 0xc25d2f9c swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1deee58 fp = 0x00000000 100042 (0xc7049350) (stack 0xe1dea000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xe1debcc0 fp = 0xe1debcf8 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xe1debd00 fp = 0xe1debd18 r4 = 0x00000000 r5 = 0x0005b049 r6 = 0xc7049350 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0xc25d6480 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc22039c8 (sleepq_timedwait+0x38) sp = 0xe1debd20 fp = 0xe1debd30 r4 = 0xc7049350 r5 = 0x00000054 r6 = 0xc25d64c4 r7 = 0xfffffed8 r8 = 0x00000000 r9 = 0x00000054 --More-- sleepq_timedwait() at sleepq_timedwait+0x38 pc = 0xc22039c8 lr = 0xc21b546c (_sleep+0x444) sp = 0xe1debd38 fp = 0xe1debd98 r4 = 0xc258c830 r5 = 0xc25d64c4 r6 = 0x00000100 r10 = 0xc25d6480 _sleep() at _sleep+0x444 pc = 0xc21b546c lr = 0xc246c540 (vm_pageout+0x268) sp = 0xe1debda0 fp = 0xe1debe30 r4 = 0xc25cf3a0 r5 = 0xc25cf3a0 r6 = 0xc25d6490 r7 = 0xc25d64c4 r8 = 0xc25d6340 r9 = 0x00000004 r10 = 0x00000000 vm_pageout() at vm_pageout+0x268 pc = 0xc246c540 lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1debe38 fp = 0xe1debe50 r4 = 0xc7049350 r5 = 0xc6c54a68 r6 = 0xc246c2d8 r7 = 0x00000000 r8 = 0xe1debe58 r9 = 0xc25d2210 r10 = 0xc25d2f9c fork_exit() at fork_exit+0xa4 --More-- pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1debe58 fp = 0x00000000 r4 = 0xc246c2d8 r5 = 0x00000000 r6 = 0xc6c5a6a0 r7 = 0x7ffb6c69 r8 = 0xc25c80d0 r10 = 0xc25d2f9c swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1debe58 fp = 0x00000000 100048 (0xc70c6000) (stack 0xe1dfc000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xe1dfdd20 fp = 0xe1dfdd58 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xe1dfdd60 fp = 0xe1dfdd78 r4 = 0x00000000 r5 = 0x00000000 r6 = 0xc70c6000 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0xc25cf2e0 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc22031b0 (sleepq_wait+0x38) --More-- sp = 0xe1dfdd80 fp = 0xe1dfdd90 r4 = 0x00000054 r5 = 0xc25cf2d4 r6 = 0xc70c6000 r7 = 0x00000000 r8 = 0x00000000 r9 = 0x00000054 sleepq_wait() at sleepq_wait+0x38 pc = 0xc22031b0 lr = 0xc21b5498 (_sleep+0x470) sp = 0xe1dfdd98 fp = 0xe1dfddf8 r4 = 0xc70c6000 r5 = 0xc25cf2d4 r6 = 0x00000000 r10 = 0xc25cf2e0 _sleep() at _sleep+0x470 pc = 0xc21b5498 lr = 0xc24478f4 (uma_reclaim_worker+0xd0) sp = 0xe1dfde00 fp = 0xe1dfde30 r4 = 0xc25cf2c0 r5 = 0x00000000 r6 = 0xc2447824 r7 = 0x00000000 r8 = 0xe1dfde58 r9 = 0xc25d2210 r10 = 0xc25d2f9c uma_reclaim_worker() at uma_reclaim_worker+0xd0 pc = 0xc24478f4 lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1dfde38 fp = 0xe1dfde50 r4 = 0xc70c6000 r5 = 0xc6c54a68 --More-- fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1dfde58 fp = 0x00000000 r4 = 0xc2447824 r5 = 0x00000000 r6 = 0xc6c5a6a0 r7 = 0x7ffb6c69 r8 = 0xc25c80d0 r10 = 0xc25d2f9c swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1dfde58 fp = 0x00000000 100041 (0xc70496a0) (stack 0xe1de7000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xe1de8c78 fp = 0xe1de8cb0 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xe1de8cb8 fp = 0xe1de8cd0 r4 = 0x00000000 r5 = 0x00003baf r6 = 0xc70496a0 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0xc6cf9c04 mi_switch() at mi_switch+0x140 --More-- pc = 0xc21b5af4 lr = 0xc22031b0 (sleepq_wait+0x38) sp = 0xe1de8cd8 fp = 0xe1de8ce8 r4 = 0x0000005c r5 = 0xc6cf9c00 r6 = 0xc70496a0 r7 = 0x00000000 r8 = 0x00000000 r9 = 0x0000005c sleepq_wait() at sleepq_wait+0x38 pc = 0xc22031b0 lr = 0xc21b5498 (_sleep+0x470) sp = 0xe1de8cf0 fp = 0xe1de8d50 r4 = 0xc70496a0 r5 = 0xc6cf9c00 r6 = 0x00000000 r10 = 0xc6cf9c04 _sleep() at _sleep+0x470 pc = 0xc21b5498 lr = 0xc206de18 (mmcsd_task+0x118) sp = 0xe1de8d58 fp = 0xe1de8e30 r4 = 0xc6cf9c00 r5 = 0xc6cf9c04 r6 = 0xc6cf9c20 r7 = 0x00000100 r8 = 0x00000000 r9 = 0x00000000 r10 = 0xc6cf9c14 mmcsd_task() at mmcsd_task+0x118 pc = 0xc206de18 lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1de8e38 fp = 0xe1de8e50 --More-- r4 = 0xc70496a0 r5 = 0xc6c55000 r6 = 0xc206dd00 r7 = 0xc6cf9c00 r8 = 0xe1de8e58 r9 = 0xc25d2210 r10 = 0xc25d2f9c fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1de8e58 fp = 0x00000000 r4 = 0xc206dd00 r5 = 0xc6cf9c00 r6 = 0xc6c5a6a0 r7 = 0x7ffb6c69 r8 = 0xc25c80d0 r10 = 0xc25d2f9c swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1de8e58 fp = 0x00000000 100038 (0xc6cfb9f0) (stack 0xe1dde000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xe1ddfd20 fp = 0xe1ddfd58 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xe1ddfd60 fp = 0xe1ddfd78 r4 = 0x00000000 r5 = 0x00000439 --More-- r6 = 0xc6cfb9f0 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0xc25d37cc mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc22031b0 (sleepq_wait+0x38) sp = 0xe1ddfd80 fp = 0xe1ddfd90 r4 = 0x00000000 r5 = 0xc25d3804 r6 = 0xc6cfb9f0 r7 = 0x00000000 r8 = 0x00000000 r9 = 0x00000000 sleepq_wait() at sleepq_wait+0x38 pc = 0xc22031b0 lr = 0xc21b5498 (_sleep+0x470) sp = 0xe1ddfd98 fp = 0xe1ddfdf8 r4 = 0xc6cfb9f0 r5 = 0xc25d3804 r6 = 0x00000000 r10 = 0xc25d37cc _sleep() at _sleep+0x470 pc = 0xc21b5498 lr = 0xc22e16a4 (sctp_iterator_thread+0xc0) sp = 0xe1ddfe00 fp = 0xe1ddfe30 r4 = 0xc25d37cc r5 = 0xc6c55378 r6 = 0xc22e15e4 r7 = 0x00000000 r8 = 0xe1ddfe58 r9 = 0xc25d2210 --More-- r10 = 0xc25d2f9c sctp_iterator_thread() at sctp_iterator_thread+0xc0 pc = 0xc22e16a4 lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1ddfe38 fp = 0xe1ddfe50 r4 = 0xc6cfb9f0 r10 = 0xc25d2f9c fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1ddfe58 fp = 0x00000000 r4 = 0xc22e15e4 r5 = 0x00000000 r6 = 0xc6c596a0 r7 = 0x7ffb6c1f r8 = 0xc25c80d0 r10 = 0xc25d2f9c swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1ddfe58 fp = 0x00000000 100025 (0xc6c5b6a0) (stack 0xf2e7a000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xf2e7bd48 fp = 0xf2e7bd80 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xf2e7bd88 fp = 0xf2e7bda0 --More-- r4 = 0x00000000 r5 = 0x00000000 r6 = 0xc6c5b6a0 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0xc6d32ea0 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc22031b0 (sleepq_wait+0x38) sp = 0xf2e7bda8 fp = 0xf2e7bdb8 r4 = 0x00000000 r5 = 0xc6d32ca4 r6 = 0xc6c5b6a0 r7 = 0x00000000 r8 = 0x00000000 r9 = 0xc25d2840 sleepq_wait() at sleepq_wait+0x38 pc = 0xc22031b0 lr = 0xc2142bac (_cv_wait+0x1e4) sp = 0xf2e7bdc0 fp = 0xf2e7bdf8 r4 = 0xc258c830 r5 = 0xc6d32ca4 r6 = 0xc6c5b6a0 r10 = 0xc6d32ea0 _cv_wait() at _cv_wait+0x1e4 pc = 0xc2142bac lr = 0xc209e09c (usb_process+0x180) sp = 0xf2e7be00 fp = 0xf2e7be30 r4 = 0xc6d32c9c r5 = 0xc6d32ca4 r6 = 0x00000000 r7 = 0x00000000 --More-- r8 = 0x00000001 r9 = 0xc6d32cac r10 = 0x00000000 usb_process() at usb_process+0x180 pc = 0xc209e09c lr = 0xc216b014 (fork_exit+0xa4) sp = 0xf2e7be38 fp = 0xf2e7be50 r4 = 0xc6c5b6a0 r5 = 0xc6c556f0 r6 = 0xc209df1c r7 = 0xc6d32c9c r8 = 0xf2e7be58 r9 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xf2e7be58 fp = 0x00000000 r4 = 0xc209df1c r5 = 0xc6d32c9c r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xf2e7be58 fp = 0x00000000 100026 (0xc6c5b350) (stack 0xf2e7d000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xf2e7ed48 fp = 0xf2e7ed80 --More-- sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xf2e7ed88 fp = 0xf2e7eda0 r4 = 0x00000000 r5 = 0x00000000 r6 = 0xc6c5b350 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0xc6d32ea0 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc22031b0 (sleepq_wait+0x38) sp = 0xf2e7eda8 fp = 0xf2e7edb8 r4 = 0x00000000 r5 = 0xc6d32cd4 r6 = 0xc6c5b350 r7 = 0x00000000 r8 = 0x00000000 r9 = 0xc25d2840 sleepq_wait() at sleepq_wait+0x38 pc = 0xc22031b0 lr = 0xc2142bac (_cv_wait+0x1e4) sp = 0xf2e7edc0 fp = 0xf2e7edf8 r4 = 0xc258c830 r5 = 0xc6d32cd4 r6 = 0xc6c5b350 r10 = 0xc6d32ea0 _cv_wait() at _cv_wait+0x1e4 pc = 0xc2142bac lr = 0xc209e09c (usb_process+0x180) --More-- sp = 0xf2e7ee00 fp = 0xf2e7ee30 r4 = 0xc6d32ccc r5 = 0xc6d32cd4 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000001 r9 = 0xc6d32cdc r10 = 0x00000000 usb_process() at usb_process+0x180 pc = 0xc209e09c lr = 0xc216b014 (fork_exit+0xa4) sp = 0xf2e7ee38 fp = 0xf2e7ee50 r4 = 0xc6c5b350 r5 = 0xc6c556f0 r6 = 0xc209df1c r7 = 0xc6d32ccc r8 = 0xf2e7ee58 r9 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xf2e7ee58 fp = 0x00000000 r4 = 0xc209df1c r5 = 0xc6d32ccc r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xf2e7ee58 fp = 0x00000000 --More-- 100027 (0xc6d666a0) (stack 0xf2e80000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xf2e81d48 fp = 0xf2e81d80 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xf2e81d88 fp = 0xf2e81da0 r4 = 0x00000000 r5 = 0x00019be8 r6 = 0xc6d666a0 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0xc6d32ea0 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc22031b0 (sleepq_wait+0x38) sp = 0xf2e81da8 fp = 0xf2e81db8 r4 = 0x00000000 r5 = 0xc6d32d04 r6 = 0xc6d666a0 r7 = 0x00000000 r8 = 0x00000000 r9 = 0xc25d2840 sleepq_wait() at sleepq_wait+0x38 pc = 0xc22031b0 lr = 0xc2142bac (_cv_wait+0x1e4) sp = 0xf2e81dc0 fp = 0xf2e81df8 r4 = 0xc258c830 r5 = 0xc6d32d04 --More-- r6 = 0xc6d666a0 r10 = 0xc6d32ea0 _cv_wait() at _cv_wait+0x1e4 pc = 0xc2142bac lr = 0xc209e09c (usb_process+0x180) sp = 0xf2e81e00 fp = 0xf2e81e30 r4 = 0xc6d32cfc r5 = 0xc6d32d04 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000001 r9 = 0xc6d32d0c r10 = 0x00000000 usb_process() at usb_process+0x180 pc = 0xc209e09c lr = 0xc216b014 (fork_exit+0xa4) sp = 0xf2e81e38 fp = 0xf2e81e50 r4 = 0xc6d666a0 r5 = 0xc6c556f0 r6 = 0xc209df1c r7 = 0xc6d32cfc r8 = 0xf2e81e58 r9 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xf2e81e58 fp = 0x00000000 r4 = 0xc209df1c r5 = 0xc6d32cfc r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 --More-- swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xf2e81e58 fp = 0x00000000 100028 (0xc6d66350) (stack 0xf2e83000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xf2e84d48 fp = 0xf2e84d80 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xf2e84d88 fp = 0xf2e84da0 r4 = 0x00000000 r5 = 0x00000000 r6 = 0xc6d66350 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0xc6d32ea0 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc22031b0 (sleepq_wait+0x38) sp = 0xf2e84da8 fp = 0xf2e84db8 r4 = 0x00000000 r5 = 0xc6d32d34 r6 = 0xc6d66350 r7 = 0x00000000 r8 = 0x00000000 r9 = 0xc25d2840 sleepq_wait() at sleepq_wait+0x38 --More-- pc = 0xc22031b0 lr = 0xc2142bac (_cv_wait+0x1e4) sp = 0xf2e84dc0 fp = 0xf2e84df8 r4 = 0xc258c830 r5 = 0xc6d32d34 r6 = 0xc6d66350 r10 = 0xc6d32ea0 _cv_wait() at _cv_wait+0x1e4 pc = 0xc2142bac lr = 0xc209e09c (usb_process+0x180) sp = 0xf2e84e00 fp = 0xf2e84e30 r4 = 0xc6d32d2c r5 = 0xc6d32d34 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000001 r9 = 0xc6d32d3c r10 = 0x00000000 usb_process() at usb_process+0x180 pc = 0xc209e09c lr = 0xc216b014 (fork_exit+0xa4) sp = 0xf2e84e38 fp = 0xf2e84e50 r4 = 0xc6d66350 r5 = 0xc6c556f0 r6 = 0xc209df1c r7 = 0xc6d32d2c r8 = 0xf2e84e58 r9 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xf2e84e58 fp = 0x00000000 --More-- r4 = 0xc209df1c r5 = 0xc6d32d2c r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xf2e84e58 fp = 0x00000000 100030 (0xc6d659f0) (stack 0xf2e9e000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xf2e9fd48 fp = 0xf2e9fd80 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xf2e9fd88 fp = 0xf2e9fda0 r4 = 0x00000000 r5 = 0x00000000 r6 = 0xc6d659f0 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0xc6d6bea0 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc22031b0 (sleepq_wait+0x38) sp = 0xf2e9fda8 fp = 0xf2e9fdb8 r4 = 0x00000000 r5 = 0xc6d6bca4 --More-- r6 = 0xc6d659f0 r7 = 0x00000000 r8 = 0x00000000 r9 = 0xc25d2840 sleepq_wait() at sleepq_wait+0x38 pc = 0xc22031b0 lr = 0xc2142bac (_cv_wait+0x1e4) sp = 0xf2e9fdc0 fp = 0xf2e9fdf8 r4 = 0xc258c830 r5 = 0xc6d6bca4 r6 = 0xc6d659f0 r10 = 0xc6d6bea0 _cv_wait() at _cv_wait+0x1e4 pc = 0xc2142bac lr = 0xc209e09c (usb_process+0x180) sp = 0xf2e9fe00 fp = 0xf2e9fe30 r4 = 0xc6d6bc9c r5 = 0xc6d6bca4 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000001 r9 = 0xc6d6bcac r10 = 0x00000000 usb_process() at usb_process+0x180 pc = 0xc209e09c lr = 0xc216b014 (fork_exit+0xa4) sp = 0xf2e9fe38 fp = 0xf2e9fe50 r4 = 0xc6d659f0 r5 = 0xc6c556f0 r6 = 0xc209df1c r7 = 0xc6d6bc9c r8 = 0xf2e9fe58 r9 = 0x00000000 --More-- fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xf2e9fe58 fp = 0x00000000 r4 = 0xc209df1c r5 = 0xc6d6bc9c r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xf2e9fe58 fp = 0x00000000 100031 (0xc6d656a0) (stack 0xf2ea1000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xf2ea2d48 fp = 0xf2ea2d80 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xf2ea2d88 fp = 0xf2ea2da0 r4 = 0x00000000 r5 = 0x00005c09 r6 = 0xc6d656a0 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0xc6d6bea0 mi_switch() at mi_switch+0x140 --More-- pc = 0xc21b5af4 lr = 0xc22031b0 (sleepq_wait+0x38) sp = 0xf2ea2da8 fp = 0xf2ea2db8 r4 = 0x00000000 r5 = 0xc6d6bcd4 r6 = 0xc6d656a0 r7 = 0x00000000 r8 = 0x00000000 r9 = 0xc25d2840 sleepq_wait() at sleepq_wait+0x38 pc = 0xc22031b0 lr = 0xc2142bac (_cv_wait+0x1e4) sp = 0xf2ea2dc0 fp = 0xf2ea2df8 r4 = 0xc258c830 r5 = 0xc6d6bcd4 r6 = 0xc6d656a0 r10 = 0xc6d6bea0 _cv_wait() at _cv_wait+0x1e4 pc = 0xc2142bac lr = 0xc209e09c (usb_process+0x180) sp = 0xf2ea2e00 fp = 0xf2ea2e30 r4 = 0xc6d6bccc r5 = 0xc6d6bcd4 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000001 r9 = 0xc6d6bcdc r10 = 0x00000000 usb_process() at usb_process+0x180 pc = 0xc209e09c lr = 0xc216b014 (fork_exit+0xa4) sp = 0xf2ea2e38 fp = 0xf2ea2e50 --More-- r4 = 0xc6d656a0 r5 = 0xc6c556f0 r6 = 0xc209df1c r7 = 0xc6d6bccc r8 = 0xf2ea2e58 r9 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xf2ea2e58 fp = 0x00000000 r4 = 0xc209df1c r5 = 0xc6d6bccc r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xf2ea2e58 fp = 0x00000000 100032 (0xc6d65350) (stack 0xf2ea4000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xf2ea5d48 fp = 0xf2ea5d80 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xf2ea5d88 fp = 0xf2ea5da0 r4 = 0x00000000 r5 = 0x0007d9c7 r6 = 0xc6d65350 r7 = 0xc25a5190 --More-- r8 = 0x00000000 r9 = 0x00000104 r10 = 0xc6d6bea0 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc22031b0 (sleepq_wait+0x38) sp = 0xf2ea5da8 fp = 0xf2ea5db8 r4 = 0x00000000 r5 = 0xc6d6bd04 r6 = 0xc6d65350 r7 = 0x00000000 r8 = 0x00000000 r9 = 0xc25d2840 sleepq_wait() at sleepq_wait+0x38 pc = 0xc22031b0 lr = 0xc2142bac (_cv_wait+0x1e4) sp = 0xf2ea5dc0 fp = 0xf2ea5df8 r4 = 0xc258c830 r5 = 0xc6d6bd04 r6 = 0xc6d65350 r10 = 0xc6d6bea0 _cv_wait() at _cv_wait+0x1e4 pc = 0xc2142bac lr = 0xc209e09c (usb_process+0x180) sp = 0xf2ea5e00 fp = 0xf2ea5e30 r4 = 0xc6d6bcfc r5 = 0xc6d6bd04 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000001 r9 = 0xc6d6bd0c r10 = 0x00000000 --More-- usb_process() at usb_process+0x180 pc = 0xc209e09c lr = 0xc216b014 (fork_exit+0xa4) sp = 0xf2ea5e38 fp = 0xf2ea5e50 r4 = 0xc6d65350 r5 = 0xc6c556f0 r6 = 0xc209df1c r7 = 0xc6d6bcfc r8 = 0xf2ea5e58 r9 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xf2ea5e58 fp = 0x00000000 r4 = 0xc209df1c r5 = 0xc6d6bcfc r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xf2ea5e58 fp = 0x00000000 100033 (0xc6d65000) (stack 0xf2ea7000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xf2ea8d48 fp = 0xf2ea8d80 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) --More-- sp = 0xf2ea8d88 fp = 0xf2ea8da0 r4 = 0x00000000 r5 = 0x001f0ced r6 = 0xc6d65000 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0xc6d6bea0 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc22031b0 (sleepq_wait+0x38) sp = 0xf2ea8da8 fp = 0xf2ea8db8 r4 = 0x00000000 r5 = 0xc6d6bd34 r6 = 0xc6d65000 r7 = 0x00000000 r8 = 0x00000000 r9 = 0xc25d2840 sleepq_wait() at sleepq_wait+0x38 pc = 0xc22031b0 lr = 0xc2142bac (_cv_wait+0x1e4) sp = 0xf2ea8dc0 fp = 0xf2ea8df8 r4 = 0xc258c830 r5 = 0xc6d6bd34 r6 = 0xc6d65000 r10 = 0xc6d6bea0 _cv_wait() at _cv_wait+0x1e4 pc = 0xc2142bac lr = 0xc209e09c (usb_process+0x180) sp = 0xf2ea8e00 fp = 0xf2ea8e30 r4 = 0xc6d6bd2c r5 = 0xc6d6bd34 --More-- r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000001 r9 = 0xc6d6bd3c r10 = 0x00000000 usb_process() at usb_process+0x180 pc = 0xc209e09c lr = 0xc216b014 (fork_exit+0xa4) sp = 0xf2ea8e38 fp = 0xf2ea8e50 r4 = 0xc6d65000 r5 = 0xc6c556f0 r6 = 0xc209df1c r7 = 0xc6d6bd2c r8 = 0xf2ea8e58 r9 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xf2ea8e58 fp = 0x00000000 r4 = 0xc209df1c r5 = 0xc6d6bd2c r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xf2ea8e58 fp = 0x00000000 100019 (0xc6cf6000) (stack 0xe1ae9000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) --More-- sp = 0xe1aead08 fp = 0xe1aead40 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xe1aead48 fp = 0xe1aead60 r4 = 0x00000000 r5 = 0x0000066d r6 = 0xc6cf6000 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0xc25ae080 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc22031b0 (sleepq_wait+0x38) sp = 0xe1aead68 fp = 0xe1aead78 r4 = 0x0000005c r5 = 0xc25ae0c0 r6 = 0xc6cf6000 r7 = 0x00000000 r8 = 0x00000000 r9 = 0x0000005c sleepq_wait() at sleepq_wait+0x38 pc = 0xc22031b0 lr = 0xc21b5498 (_sleep+0x470) sp = 0xe1aead80 fp = 0xe1aeade0 r4 = 0xc6cf6000 r5 = 0xc25ae0c0 r6 = 0x00000000 r10 = 0xc25ae080 _sleep() at _sleep+0x470 --More-- pc = 0xc21b5498 lr = 0xc2010940 (xpt_done_td+0xd8) sp = 0xe1aeade8 fp = 0xe1aeae30 r4 = 0xc25ae080 r5 = 0x00000001 r6 = 0xc25ae0c0 r7 = 0xe1aeadfc r8 = 0xc25ae090 r9 = 0x00000000 r10 = 0x00000004 xpt_done_td() at xpt_done_td+0xd8 pc = 0xc2010940 lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1aeae38 fp = 0xe1aeae50 r4 = 0xc6cf6000 r5 = 0xc6c55a68 r6 = 0xc2010868 r7 = 0xc25ae080 r8 = 0xe1aeae58 r9 = 0x00000000 r10 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1aeae58 fp = 0x00000000 r4 = 0xc2010868 r5 = 0xc25ae080 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit --More-- pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1aeae58 fp = 0x00000000 100040 (0xc70499f0) (stack 0xe1de4000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xe1de5cf8 fp = 0xe1de5d30 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xe1de5d38 fp = 0xe1de5d50 r4 = 0x00000000 r5 = 0x000065d0 r6 = 0xc70499f0 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0xc25ae300 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc22031b0 (sleepq_wait+0x38) sp = 0xe1de5d58 fp = 0xe1de5d68 r4 = 0x0000005c r5 = 0xc25ae2ac r6 = 0xc70499f0 r7 = 0x00000000 r8 = 0x00000000 r9 = 0x0000005c sleepq_wait() at sleepq_wait+0x38 pc = 0xc22031b0 lr = 0xc21b5498 (_sleep+0x470) --More-- sp = 0xe1de5d70 fp = 0xe1de5dd0 r4 = 0xc70499f0 r5 = 0xc25ae2ac r6 = 0x00000000 r10 = 0xc25ae300 _sleep() at _sleep+0x470 pc = 0xc21b5498 lr = 0xc2010d34 (xpt_scanner_thread+0xf4) sp = 0xe1de5dd8 fp = 0xe1de5e30 r4 = 0xc25ae310 r5 = 0xc24d503c r6 = 0xc25ae280 r7 = 0x00000000 r8 = 0x00000000 r9 = 0x00000004 r10 = 0x00000100 xpt_scanner_thread() at xpt_scanner_thread+0xf4 pc = 0xc2010d34 lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1de5e38 fp = 0xe1de5e50 r4 = 0xc70499f0 r5 = 0xc6c55a68 r6 = 0xc2010c40 r7 = 0x00000000 r8 = 0xe1de5e58 r9 = 0x00000000 r10 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1de5e58 fp = 0x00000000 --More-- r4 = 0xc2010c40 r5 = 0x00000000 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1de5e58 fp = 0x00000000 100013 (0xc6c58000) (stack 0xe1ad7000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xe1ad8d00 fp = 0xe1ad8d38 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xe1ad8d40 fp = 0xe1ad8d58 r4 = 0x00000000 r5 = 0x001257f7 r6 = 0xc6c58000 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0xc25b6f48 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc22031b0 (sleepq_wait+0x38) sp = 0xe1ad8d60 fp = 0xe1ad8d70 r4 = 0x0000005c r5 = 0xc25d1e70 --More-- r6 = 0xc6c58000 r7 = 0x00000000 r8 = 0x00000000 r9 = 0x0000005c sleepq_wait() at sleepq_wait+0x38 pc = 0xc22031b0 lr = 0xc21b5498 (_sleep+0x470) sp = 0xe1ad8d78 fp = 0xe1ad8dd8 r4 = 0xc6c58000 r5 = 0xc25d1e70 r6 = 0x00000000 r10 = 0xc25b6f48 _sleep() at _sleep+0x470 pc = 0xc21b5498 lr = 0xc2120fa8 (g_run_events+0x8c) sp = 0xe1ad8de0 fp = 0xe1ad8e30 r4 = 0x00000001 r5 = 0xc25b6f58 r6 = 0xc25d1e60 r7 = 0x00000000 r8 = 0x00000004 r9 = 0xc2581680 r10 = 0x00000000 g_run_events() at g_run_events+0x8c pc = 0xc2120fa8 lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1ad8e38 fp = 0xe1ad8e50 r4 = 0xc6c58000 r5 = 0xc6c56000 r6 = 0xc2123cbc r7 = 0x00000000 r8 = 0xe1ad8e58 r9 = 0x00000000 --More-- r10 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1ad8e58 fp = 0x00000000 r4 = 0xc2123cbc r5 = 0x00000000 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1ad8e58 fp = 0x00000000 100014 (0xc6cfb350) (stack 0xe1ada000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xe1adbd00 fp = 0xe1adbd38 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xe1adbd40 fp = 0xe1adbd58 r4 = 0x00000000 r5 = 0x00003543 r6 = 0xc6cfb350 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0xc25b6f94 --More-- mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc22031b0 (sleepq_wait+0x38) sp = 0xe1adbd60 fp = 0xe1adbd70 r4 = 0x0000005c r5 = 0xc25d1e74 r6 = 0xc6cfb350 r7 = 0x00000000 r8 = 0x00000000 r9 = 0x0000005c sleepq_wait() at sleepq_wait+0x38 pc = 0xc22031b0 lr = 0xc21b5498 (_sleep+0x470) sp = 0xe1adbd78 fp = 0xe1adbdd8 r4 = 0xc6cfb350 r5 = 0xc25d1e74 r6 = 0x00000000 r10 = 0xc25b6f94 _sleep() at _sleep+0x470 pc = 0xc21b5498 lr = 0xc2123784 (g_io_schedule_up+0x280) sp = 0xe1adbde0 fp = 0xe1adbe20 r4 = 0xc25b6fa4 r5 = 0x00000004 r6 = 0xc25b6f60 r7 = 0x00000000 r8 = 0xc25d1e74 r9 = 0xc24d503c r10 = 0x00000000 g_io_schedule_up() at g_io_schedule_up+0x280 pc = 0xc2123784 lr = 0xc2123dac (g_up_procbody+0x78) --More-- sp = 0xe1adbe28 fp = 0xe1adbe30 r4 = 0xc25b6fcc r5 = 0xc6c56000 r6 = 0xc2123d34 r7 = 0x00000000 r8 = 0xe1adbe58 r9 = 0x00000000 r10 = 0x00000000 g_up_procbody() at g_up_procbody+0x78 pc = 0xc2123dac lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1adbe38 fp = 0xe1adbe50 r4 = 0xc6cfb350 r10 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1adbe58 fp = 0x00000000 r4 = 0xc2123d34 r5 = 0x00000000 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1adbe58 fp = 0x00000000 100015 (0xc6cfb000) (stack 0xe1add000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) --More-- sp = 0xe1adecd8 fp = 0xe1aded10 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xe1aded18 fp = 0xe1aded30 r4 = 0x00000000 r5 = 0x00001e98 r6 = 0xc6cfb000 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0xc25b6f74 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc22031b0 (sleepq_wait+0x38) sp = 0xe1aded38 fp = 0xe1aded48 r4 = 0x0000005c r5 = 0xc25d1e78 r6 = 0xc6cfb000 r7 = 0x00000000 r8 = 0x00000000 r9 = 0x0000005c sleepq_wait() at sleepq_wait+0x38 pc = 0xc22031b0 lr = 0xc21b5498 (_sleep+0x470) sp = 0xe1aded50 fp = 0xe1adedb0 r4 = 0xc6cfb000 r5 = 0xc25d1e78 r6 = 0x00000000 r10 = 0xc25b6f74 _sleep() at _sleep+0x470 --More-- pc = 0xc21b5498 lr = 0xc2122ff4 (g_io_schedule_down+0x238) sp = 0xe1adedb8 fp = 0xe1adee20 r4 = 0xc25b6f84 r5 = 0x00000000 r6 = 0x00000004 r7 = 0x00000001 r8 = 0x00000000 r9 = 0xc25b6f60 r10 = 0xc6f97e80 g_io_schedule_down() at g_io_schedule_down+0x238 pc = 0xc2122ff4 lr = 0xc2123e28 (g_down_procbody+0x78) sp = 0xe1adee28 fp = 0xe1adee30 r4 = 0xc25b6fcc r5 = 0xc6c56000 r6 = 0xc2123db0 r7 = 0x00000000 r8 = 0xe1adee58 r9 = 0x00000000 r10 = 0x00000000 g_down_procbody() at g_down_procbody+0x78 pc = 0xc2123e28 lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1adee38 fp = 0xe1adee50 r4 = 0xc6cfb000 r10 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1adee58 fp = 0x00000000 --More-- r4 = 0xc2123db0 r5 = 0x00000000 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1adee58 fp = 0x00000000 100007 (0xc6c596a0) (stack 0xe1ac5000) db_trace_self() at db_trace_self pc = 0xc2480e00 lr = 0xc20478b4 (db_show_threads+0x80) sp = 0xe1ac6850 fp = 0xe1ac6970 r10 = 0xc25d12b0 db_show_threads() at db_show_threads+0x80 pc = 0xc20478b4 lr = 0xc2041db8 (db_command+0x388) sp = 0xe1ac6978 fp = 0xe1ac6a18 r4 = 0x00000000 r5 = 0x00000000 r6 = 0x00000065 r7 = 0xc2047834 r8 = 0x00000001 r9 = 0xc25775b8 db_command() at db_command+0x388 pc = 0xc2041db8 lr = 0xc2041a20 (db_command_loop+0x74) sp = 0xe1ac6a20 fp = 0xe1ac6a30 r4 = 0xc24ccf5f r5 = 0xc24de460 --More-- r6 = 0xc25d129c r7 = 0xe1ac6c10 r8 = 0xc25c8320 r9 = 0xc2577ad4 r10 = 0xc25c8324 db_command_loop() at db_command_loop+0x74 pc = 0xc2041a20 lr = 0xc20445e4 (db_trap+0x108) sp = 0xe1ac6a38 fp = 0xe1ac6b50 r4 = 0x00000000 r5 = 0xc25d12a8 r6 = 0xc25c8348 r10 = 0xc25c8324 db_trap() at db_trap+0x108 pc = 0xc20445e4 lr = 0xc21f26ac (kdb_trap+0x184) sp = 0xe1ac6b58 fp = 0xe1ac6b80 r4 = 0x00000000 r5 = 0x00000001 r6 = 0xc25c8348 r7 = 0xe1ac6c10 kdb_trap() at kdb_trap+0x184 pc = 0xc21f26ac lr = 0xc249ad90 (undefinedinstruction+0x3a8) sp = 0xe1ac6b88 fp = 0xe1ac6c08 r4 = 0x00000000 r5 = 0x00000000 r6 = 0xc249a938 r7 = 0xe7ffffff r8 = 0xc6c596a0 r9 = 0xc21f2004 r10 = 0xe1ac6c10 --More-- undefinedinstruction() at undefinedinstruction+0x3a8 pc = 0xc249ad90 lr = 0xc2482488 (exception_exit) sp = 0xe1ac6c10 fp = 0xe1ac6cb0 r4 = 0xc6b27400 r5 = 0xc6b27488 r6 = 0x00000114 r7 = 0x00040000 r8 = 0x00000001 r9 = 0xc257aaf8 r10 = 0x00000000 exception_exit() at exception_exit pc = 0xc2482488 lr = 0xc21f1fec (kdb_alt_break_internal+0x1c4) sp = 0xe1ac6ca0 fp = 0xe1ac6cb0 r0 = 0xc25c8334 r1 = 0x00000000 r2 = 0x00000001 r3 = 0xc24e0c51 r4 = 0xc6b27400 r5 = 0xc6b27488 r6 = 0x00000114 r7 = 0x00040000 r8 = 0x00000001 r9 = 0xc257aaf8 r10 = 0x00000000 r12 = 0x00000000 $a.10() at $a.10 pc = 0xc21f2008 lr = 0xc21f1e20 (kdb_alt_break+0x10) sp = 0xe1ac6cb8 fp = 0xe1ac6cb8 r4 = 0xc6b27400 r5 = 0xc6b27488 --More-- r6 = 0x00000114 r7 = 0x00040000 kdb_alt_break() at kdb_alt_break+0x10 pc = 0xc21f1e20 lr = 0xc207a06c (uart_intr_rxready+0x90) sp = 0xe1ac6cc0 fp = 0xe1ac6cd8 uart_intr_rxready() at uart_intr_rxready+0x90 pc = 0xc207a06c lr = 0xc207ac04 (uart_intr+0x120) sp = 0xe1ac6ce0 fp = 0xe1ac6d20 r4 = 0xc6b33b00 r5 = 0xc6b27400 r6 = 0xc6b27584 r10 = 0x00000000 uart_intr() at uart_intr+0x120 pc = 0xc207ac04 lr = 0xc216e64c (intr_event_handle+0x70) sp = 0xe1ac6d28 fp = 0xe1ac6d40 r4 = 0xc6b33b00 r5 = 0xe1ac6d60 r6 = 0x00000000 r7 = 0xc6b1d2c0 r8 = 0x00000000 r9 = 0xc6c596a0 r10 = 0x00000000 intr_event_handle() at intr_event_handle+0x70 pc = 0xc216e64c lr = 0xc24844c4 (arm_irq_handler+0x6c) sp = 0xe1ac6d48 fp = 0xe1ac6d58 r4 = 0xe1ac6d60 r5 = 0x0000003a --More-- r6 = 0xc25db8d4 r7 = 0xc25cf814 r8 = 0xc2589010 r9 = 0x00000000 arm_irq_handler() at arm_irq_handler+0x6c pc = 0xc24844c4 lr = 0xc2482488 (exception_exit) sp = 0xe1ac6d60 fp = 0xe1ac6df8 r4 = 0xc6c596a0 r5 = 0xc6b3496c r6 = 0xc6b34900 r7 = 0xc6b34910 exception_exit() at exception_exit pc = 0xc2482488 lr = 0xc2484e60 (spinlock_exit+0x10) sp = 0xe1ac6df0 fp = 0xe1ac6df8 r0 = 0x00000000 r1 = 0x000000c0 r2 = 0x600000d3 r3 = 0x60000013 r4 = 0xc6c596a0 r5 = 0xc6b3496c r6 = 0xc6b34900 r7 = 0xc6b34910 r8 = 0xc2589010 r9 = 0x00000000 r10 = 0x00000000 r12 = 0x00000001 spinlock_exit() at spinlock_exit+0x3c pc = 0xc2484e8c lr = 0xc216ef20 (ithread_loop+0x1f4) sp = 0xe1ac6e00 fp = 0xe1ac6e30 r4 = 0xc6b14a50 r10 = 0x00000000 --More-- ithread_loop() at ithread_loop+0x1f4 pc = 0xc216ef20 lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1ac6e38 fp = 0xe1ac6e50 r4 = 0xc6c596a0 r5 = 0xc6c56378 r6 = 0xc216ed2c r7 = 0xc6b14a50 r8 = 0xe1ac6e58 r9 = 0x00000000 r10 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1ac6e58 fp = 0x00000000 r4 = 0xc216ed2c r5 = 0xc6b14a50 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1ac6e58 fp = 0x00000000 100008 (0xc6c59350) (stack 0xe1ac8000) uart_sab82532_class() at 0 pc = 0x00000000 lr = 0xc2498d24 (fork_trampoline) sp = 0xe1ac9e58 fp = 0x00000000 100009 (0xc6c59000) (stack 0xe1acb000) uart_sab82532_class() at 0 --More-- pc = 0x00000000 lr = 0xc2498d24 (fork_trampoline) sp = 0xe1acce58 fp = 0x00000000 100010 (0xc6c589f0) (stack 0xe1ace000) uart_sab82532_class() at 0 pc = 0x00000000 lr = 0xc2498d24 (fork_trampoline) sp = 0xe1acfe58 fp = 0x00000000 100011 (0xc6c586a0) (stack 0xe1ad1000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xe1ad2da0 fp = 0xe1ad2dd8 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xe1ad2de0 fp = 0xe1ad2df8 r4 = 0x00000000 r5 = 0x00003581 r6 = 0xc6c586a0 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000109 r10 = 0x00000000 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc216eed0 (ithread_loop+0x1a4) sp = 0xe1ad2e00 fp = 0xe1ad2e30 r4 = 0xc6b14a10 r5 = 0xc6b3456c r6 = 0xc6b34500 r7 = 0xc6b34510 --More-- r8 = 0xc2589010 r9 = 0xc6b34510 ithread_loop() at ithread_loop+0x1a4 pc = 0xc216eed0 lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1ad2e38 fp = 0xe1ad2e50 r4 = 0xc6c586a0 r5 = 0xc6c56378 r6 = 0xc216ed2c r7 = 0xc6b14a10 r8 = 0xe1ad2e58 r9 = 0x00000000 r10 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1ad2e58 fp = 0x00000000 r4 = 0xc216ed2c r5 = 0xc6b14a10 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1ad2e58 fp = 0x00000000 100012 (0xc6c58350) (stack 0xe1ad4000) uart_sab82532_class() at 0 pc = 0x00000000 lr = 0xc2498d24 (fork_trampoline) sp = 0xe1ad5e58 fp = 0x00000000 --More-- 100016 (0xc6cf69f0) (stack 0xe1ae0000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xe1ae1da0 fp = 0xe1ae1dd8 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xe1ae1de0 fp = 0xe1ae1df8 r4 = 0x00000000 r5 = 0x00001417 r6 = 0xc6cf69f0 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000109 r10 = 0x00000000 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc216eed0 (ithread_loop+0x1a4) sp = 0xe1ae1e00 fp = 0xe1ae1e30 r4 = 0xc6b149b0 r5 = 0xc6b3436c r6 = 0xc6b34300 r7 = 0xc6b34310 r8 = 0xc2589010 r9 = 0xc6b34310 ithread_loop() at ithread_loop+0x1a4 pc = 0xc216eed0 lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1ae1e38 fp = 0xe1ae1e50 r4 = 0xc6cf69f0 r5 = 0xc6c56378 --More-- r6 = 0xc216ed2c r7 = 0xc6b149b0 r8 = 0xe1ae1e58 r9 = 0x00000000 r10 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1ae1e58 fp = 0x00000000 r4 = 0xc216ed2c r5 = 0xc6b149b0 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1ae1e58 fp = 0x00000000 100018 (0xc6cf6350) (stack 0xe1ae6000) uart_sab82532_class() at 0 pc = 0x00000000 lr = 0xc2498d24 (fork_trampoline) sp = 0xe1ae7e58 fp = 0x00000000 100021 (0xc6cf56a0) (stack 0xe1aef000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xe1af0da0 fp = 0xe1af0dd8 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) --More-- sp = 0xe1af0de0 fp = 0xe1af0df8 r4 = 0x00000000 r5 = 0x00000000 r6 = 0xc6cf56a0 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000109 r10 = 0x00000000 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc216eed0 (ithread_loop+0x1a4) sp = 0xe1af0e00 fp = 0xe1af0e30 r4 = 0xc6b14940 r5 = 0xc6b3406c r6 = 0xc6b34000 r7 = 0xc6b34010 r8 = 0xc2589010 r9 = 0xc6b34010 ithread_loop() at ithread_loop+0x1a4 pc = 0xc216eed0 lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1af0e38 fp = 0xe1af0e50 r4 = 0xc6cf56a0 r5 = 0xc6c56378 r6 = 0xc216ed2c r7 = 0xc6b14940 r8 = 0xe1af0e58 r9 = 0x00000000 r10 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) --More-- sp = 0xe1af0e58 fp = 0x00000000 r4 = 0xc216ed2c r5 = 0xc6b14940 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1af0e58 fp = 0x00000000 100023 (0xc6cf5000) (stack 0xe1af5000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xe1af6da0 fp = 0xe1af6dd8 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xe1af6de0 fp = 0xe1af6df8 r4 = 0x00000000 r5 = 0x0000563e r6 = 0xc6cf5000 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000109 r10 = 0x00000000 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc216eed0 (ithread_loop+0x1a4) sp = 0xe1af6e00 fp = 0xe1af6e30 --More-- r4 = 0xc6d23760 r5 = 0xc6b33a6c r6 = 0xc6b33a00 r7 = 0xc6b33a10 r8 = 0xc2589010 r9 = 0xc6b33a10 ithread_loop() at ithread_loop+0x1a4 pc = 0xc216eed0 lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1af6e38 fp = 0xe1af6e50 r4 = 0xc6cf5000 r5 = 0xc6c56378 r6 = 0xc216ed2c r7 = 0xc6d23760 r8 = 0xe1af6e58 r9 = 0x00000000 r10 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1af6e58 fp = 0x00000000 r4 = 0xc216ed2c r5 = 0xc6d23760 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1af6e58 fp = 0x00000000 100024 (0xc6c5b9f0) (stack 0xf2e77000) uart_sab82532_class() at 0 --More-- pc = 0x00000000 lr = 0xc2498d24 (fork_trampoline) sp = 0xf2e78e58 fp = 0x00000000 100029 (0xc6d66000) (stack 0xf2e9b000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xf2e9cda0 fp = 0xf2e9cdd8 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xf2e9cde0 fp = 0xf2e9cdf8 r4 = 0x00000000 r5 = 0x0019d89f r6 = 0xc6d66000 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000109 r10 = 0x00000000 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc216eed0 (ithread_loop+0x1a4) sp = 0xf2e9ce00 fp = 0xf2e9ce30 r4 = 0xc6d46850 r5 = 0xc6b3226c r6 = 0xc6b32200 r7 = 0xc6b32210 r8 = 0xc2589010 r9 = 0xc6b32210 ithread_loop() at ithread_loop+0x1a4 pc = 0xc216eed0 lr = 0xc216b014 (fork_exit+0xa4) --More-- sp = 0xf2e9ce38 fp = 0xf2e9ce50 r4 = 0xc6d66000 r5 = 0xc6c56378 r6 = 0xc216ed2c r7 = 0xc6d46850 r8 = 0xf2e9ce58 r9 = 0x00000000 r10 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xf2e9ce58 fp = 0x00000000 r4 = 0xc216ed2c r5 = 0xc6d46850 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xf2e9ce58 fp = 0x00000000 100034 (0xc6d649f0) (stack 0xe1dd1000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xe1dd2da0 fp = 0xe1dd2dd8 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xe1dd2de0 fp = 0xe1dd2df8 --More-- r4 = 0x00000000 r5 = 0x00014f36 r6 = 0xc6d649f0 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000109 r10 = 0x00000000 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc216eed0 (ithread_loop+0x1a4) sp = 0xe1dd2e00 fp = 0xe1dd2e30 r4 = 0xc6d46450 r5 = 0xc6b3216c r6 = 0xc6b32100 r7 = 0xc6b32110 r8 = 0xc2589010 r9 = 0xc6b32110 ithread_loop() at ithread_loop+0x1a4 pc = 0xc216eed0 lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1dd2e38 fp = 0xe1dd2e50 r4 = 0xc6d649f0 r5 = 0xc6c56378 r6 = 0xc216ed2c r7 = 0xc6d46450 r8 = 0xe1dd2e58 r9 = 0x00000000 r10 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1dd2e58 fp = 0x00000000 --More-- r4 = 0xc216ed2c r5 = 0xc6d46450 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1dd2e58 fp = 0x00000000 100035 (0xc6d646a0) (stack 0xe1dd4000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xe1dd5da0 fp = 0xe1dd5dd8 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xe1dd5de0 fp = 0xe1dd5df8 r4 = 0x00000000 r5 = 0x0000597c r6 = 0xc6d646a0 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000109 r10 = 0x00000000 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc216eed0 (ithread_loop+0x1a4) sp = 0xe1dd5e00 fp = 0xe1dd5e30 r4 = 0xc6d53e00 r5 = 0xc6e2816c --More-- r6 = 0xc6e28100 r7 = 0xc6e28110 r8 = 0xc2589010 r9 = 0xc6e28110 ithread_loop() at ithread_loop+0x1a4 pc = 0xc216eed0 lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1dd5e38 fp = 0xe1dd5e50 r4 = 0xc6d646a0 r5 = 0xc6c56378 r6 = 0xc216ed2c r7 = 0xc6d53e00 r8 = 0xe1dd5e58 r9 = 0x00000000 r10 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1dd5e58 fp = 0x00000000 r4 = 0xc216ed2c r5 = 0xc6d53e00 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1dd5e58 fp = 0x00000000 100036 (0xc6d64350) (stack 0xe1dd7000) uart_sab82532_class() at 0 pc = 0x00000000 lr = 0xc2498d24 (fork_trampoline) --More-- sp = 0xe1dd8e58 fp = 0x00000000 100037 (0xc6d64000) (stack 0xe1dda000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xe1ddbda0 fp = 0xe1ddbdd8 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xe1ddbde0 fp = 0xe1ddbdf8 r4 = 0x00000000 r5 = 0x00044f40 r6 = 0xc6d64000 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000109 r10 = 0x00000000 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc216eed0 (ithread_loop+0x1a4) sp = 0xe1ddbe00 fp = 0xe1ddbe30 r4 = 0xc6d53a50 r5 = 0xc6e27e6c r6 = 0xc6e27e00 r7 = 0xc6e27e10 r8 = 0xc2589010 r9 = 0xc6e27e10 ithread_loop() at ithread_loop+0x1a4 pc = 0xc216eed0 lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1ddbe38 fp = 0xe1ddbe50 --More-- r4 = 0xc6d64000 r5 = 0xc6c56378 r6 = 0xc216ed2c r7 = 0xc6d53a50 r8 = 0xe1ddbe58 r9 = 0x00000000 r10 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1ddbe58 fp = 0x00000000 r4 = 0xc216ed2c r5 = 0xc6d53a50 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1ddbe58 fp = 0x00000000 100003 (0xc6c5a6a0) (stack 0xe1ab9000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xe1abad50 fp = 0xe1abad88 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xe1abad90 fp = 0xe1abada8 r4 = 0x00000005 r5 = 0xe8f4c77f --More-- r6 = 0xc6c5a6a0 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000608 r10 = 0x00000001 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc21b351c (critical_exit+0x84) sp = 0xe1abadb0 fp = 0xe1abadb8 r4 = 0xc6c5a6a0 r5 = 0xc6c5a6a0 r6 = 0xc25c6616 r7 = 0xc25c6608 r8 = 0xc25c6604 r9 = 0xc25c65c8 critical_exit() at critical_exit+0x84 pc = 0xc21b351c lr = 0xc2484de0 (cpu_idle+0x8c) sp = 0xe1abadc0 fp = 0xe1abadc8 r4 = 0xc6c5a6a0 r10 = 0x00000001 cpu_idle() at cpu_idle+0x8c pc = 0xc2484de0 lr = 0xc21e031c (sched_idletd+0xc8) sp = 0xe1abadd0 fp = 0xe1abae30 r4 = 0xc25c6614 r10 = 0x00000001 sched_idletd() at sched_idletd+0xc8 pc = 0xc21e031c lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1abae38 fp = 0xe1abae50 --More-- r4 = 0xc6c5a6a0 r5 = 0xc6c566f0 r6 = 0xc21e0254 r7 = 0x00000000 r8 = 0xe1abae58 r9 = 0x00000000 r10 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1abae58 fp = 0x00000000 r4 = 0xc21e0254 r5 = 0x00000000 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1abae58 fp = 0x00000000 100004 (0xc6c5a350) (stack 0xe1abc000) savectx() at savectx+0x14 pc = 0xc2498d0c lr = 0xc2486a54 ($a.6+0x1c) sp = 0xe1abdcc8 fp = 0xe1abdcf0 $a.6() at $a.6+0x1c pc = 0xc2486a54 lr = 0xc216e64c (intr_event_handle+0x70) sp = 0xe1abdcf8 fp = 0xe1abdd10 r4 = 0xc6e25700 r5 = 0xe1abdd30 --More-- r6 = 0x00000000 r7 = 0xc7051e40 r8 = 0x00000000 r9 = 0xc6c5a350 r10 = 0x00000003 intr_event_handle() at intr_event_handle+0x70 pc = 0xc216e64c lr = 0xc24844c4 (arm_irq_handler+0x6c) sp = 0xe1abdd18 fp = 0xe1abdd28 r4 = 0xe1abdd30 r5 = 0x00000004 r6 = 0xc25db8d4 r7 = 0xc25cf814 r8 = 0xc25c6cc4 r9 = 0xc25c6c88 arm_irq_handler() at arm_irq_handler+0x6c pc = 0xc24844c4 lr = 0xc2482488 (exception_exit) sp = 0xe1abdd30 fp = 0xe1abddc8 r4 = 0xc6c5a350 r5 = 0xc6c5a350 r6 = 0xc25c6cd6 r7 = 0xc25c6cc8 exception_exit() at exception_exit pc = 0xc2482488 lr = 0xc2484de0 (cpu_idle+0x8c) sp = 0xe1abddc0 fp = 0xe1abddc8 r0 = 0x00000000 r1 = 0x000000c0 r2 = 0x600000d3 r3 = 0x60000013 r4 = 0xc6c5a350 r5 = 0xc6c5a350 --More-- r6 = 0xc25c6cd6 r7 = 0xc25c6cc8 r8 = 0xc25c6cc4 r9 = 0xc25c6c88 r10 = 0x00000003 r12 = 0x001cc37e cpu_idle() at cpu_idle+0xb8 pc = 0xc2484e0c lr = 0xc21e031c (sched_idletd+0xc8) sp = 0xe1abddd0 fp = 0xe1abde30 r4 = 0xc25c6cd4 r10 = 0x00000003 sched_idletd() at sched_idletd+0xc8 pc = 0xc21e031c lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1abde38 fp = 0xe1abde50 r4 = 0xc6c5a350 r5 = 0xc6c566f0 r6 = 0xc21e0254 r7 = 0x00000000 r8 = 0xe1abde58 r9 = 0x00000000 r10 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1abde58 fp = 0x00000000 r4 = 0xc21e0254 r5 = 0x00000000 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 --More-- swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1abde58 fp = 0x00000000 100005 (0xc6c5a000) (stack 0xe1abf000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xe1ac0d50 fp = 0xe1ac0d88 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xe1ac0d90 fp = 0xe1ac0da8 r4 = 0x00000005 r5 = 0xe9c85226 r6 = 0xc6c5a000 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000608 r10 = 0x00000001 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc21b351c (critical_exit+0x84) sp = 0xe1ac0db0 fp = 0xe1ac0db8 r4 = 0xc6c5a000 r5 = 0xc6c5a000 r6 = 0xc25c7396 r7 = 0xc25c7388 r8 = 0xc25c7384 r9 = 0xc25c7348 critical_exit() at critical_exit+0x84 --More-- pc = 0xc21b351c lr = 0xc2484de0 (cpu_idle+0x8c) sp = 0xe1ac0dc0 fp = 0xe1ac0dc8 r4 = 0xc6c5a000 r10 = 0x00000001 cpu_idle() at cpu_idle+0x8c pc = 0xc2484de0 lr = 0xc21e031c (sched_idletd+0xc8) sp = 0xe1ac0dd0 fp = 0xe1ac0e30 r4 = 0xc25c7394 r10 = 0x00000001 sched_idletd() at sched_idletd+0xc8 pc = 0xc21e031c lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1ac0e38 fp = 0xe1ac0e50 r4 = 0xc6c5a000 r5 = 0xc6c566f0 r6 = 0xc21e0254 r7 = 0x00000000 r8 = 0xe1ac0e58 r9 = 0x00000000 r10 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1ac0e58 fp = 0x00000000 r4 = 0xc21e0254 r5 = 0x00000000 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 --More-- swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1ac0e58 fp = 0x00000000 100006 (0xc6c599f0) (stack 0xe1ac2000) savectx() at savectx+0x14 pc = 0xc2498d0c lr = 0xc2486a54 ($a.6+0x1c) sp = 0xe1ac3cc8 fp = 0xe1ac3cf0 $a.6() at $a.6+0x1c pc = 0xc2486a54 lr = 0xc216e64c (intr_event_handle+0x70) sp = 0xe1ac3cf8 fp = 0xe1ac3d10 r4 = 0xc6e25700 r5 = 0xe1ac3d30 r6 = 0x00000000 r7 = 0xc7051e40 r8 = 0x00000000 r9 = 0xc6c599f0 r10 = 0x00000003 intr_event_handle() at intr_event_handle+0x70 pc = 0xc216e64c lr = 0xc24844c4 (arm_irq_handler+0x6c) sp = 0xe1ac3d18 fp = 0xe1ac3d28 r4 = 0xe1ac3d30 r5 = 0x00000004 r6 = 0xc25db8d4 r7 = 0xc25cf814 r8 = 0xc25c7a44 r9 = 0xc25c7a08 arm_irq_handler() at arm_irq_handler+0x6c --More-- pc = 0xc24844c4 lr = 0xc2482488 (exception_exit) sp = 0xe1ac3d30 fp = 0xe1ac3dc8 r4 = 0xc6c599f0 r5 = 0xc6c599f0 r6 = 0xc25c7a56 r7 = 0xc25c7a48 exception_exit() at exception_exit pc = 0xc2482488 lr = 0xc2484de0 (cpu_idle+0x8c) sp = 0xe1ac3dc0 fp = 0xe1ac3dc8 r0 = 0x00000000 r1 = 0x000000c0 r2 = 0x600000d3 r3 = 0x60000013 r4 = 0xc6c599f0 r5 = 0xc6c599f0 r6 = 0xc25c7a56 r7 = 0xc25c7a48 r8 = 0xc25c7a44 r9 = 0xc25c7a08 r10 = 0x00000003 r12 = 0x001cc0f4 cpu_idle() at cpu_idle+0xb8 pc = 0xc2484e0c lr = 0xc21e031c (sched_idletd+0xc8) sp = 0xe1ac3dd0 fp = 0xe1ac3e30 r4 = 0xc25c7a54 r10 = 0x00000003 sched_idletd() at sched_idletd+0xc8 pc = 0xc21e031c lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1ac3e38 fp = 0xe1ac3e50 --More-- r4 = 0xc6c599f0 r5 = 0xc6c566f0 r6 = 0xc21e0254 r7 = 0x00000000 r8 = 0xe1ac3e58 r9 = 0x00000000 r10 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1ac3e58 fp = 0x00000000 r4 = 0xc21e0254 r5 = 0x00000000 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1ac3e58 fp = 0x00000000 100002 (0xc6c5a9f0) (stack 0xe1ab6000) savectx() at savectx+0x14 pc = 0xc2498d0c lr = 0xc2486a54 ($a.6+0x1c) sp = 0xe1ab7c60 fp = 0xe1ab7c88 $a.6() at $a.6+0x1c pc = 0xc2486a54 lr = 0xc216e64c (intr_event_handle+0x70) sp = 0xe1ab7c90 fp = 0xe1ab7ca8 r4 = 0xc6e25700 r5 = 0xe1ab7cc8 --More-- r6 = 0x00000000 r7 = 0xc7051e40 r8 = 0x00000000 r9 = 0xc6c5a9f0 r10 = 0x00000000 intr_event_handle() at intr_event_handle+0x70 pc = 0xc216e64c lr = 0xc24844c4 (arm_irq_handler+0x6c) sp = 0xe1ab7cb0 fp = 0xe1ab7cc0 r4 = 0xe1ab7cc8 r5 = 0x00000004 r6 = 0xc25db8d4 r7 = 0xc25cf814 r8 = 0x00000000 r9 = 0x00000000 arm_irq_handler() at arm_irq_handler+0x6c pc = 0xc24844c4 lr = 0xc2482488 (exception_exit) sp = 0xe1ab7cc8 fp = 0xe1ab7d60 r4 = 0xc6c5a9f0 r5 = 0x00000023 r6 = 0xc6c5a9f0 r7 = 0x19999999 exception_exit() at exception_exit pc = 0xc2482488 lr = 0xc2484e60 (spinlock_exit+0x10) sp = 0xe1ab7d58 fp = 0xe1ab7d60 r0 = 0x00000000 r1 = 0x000000c0 r2 = 0x600000d3 r3 = 0x60000013 r4 = 0xc6c5a9f0 r5 = 0x00000023 --More-- r6 = 0xc6c5a9f0 r7 = 0x19999999 r8 = 0x00000000 r9 = 0x00000000 r10 = 0x00000000 r12 = 0x00000000 spinlock_exit() at spinlock_exit+0x3c pc = 0xc2484e8c lr = 0xc2203a80 (sleepq_timedwait+0xf0) sp = 0xe1ab7d68 fp = 0xe1ab7d78 r4 = 0xc6c5a9f0 r10 = 0x00000000 sleepq_timedwait() at sleepq_timedwait+0xf0 pc = 0xc2203a80 lr = 0xc21b546c (_sleep+0x444) sp = 0xe1ab7d80 fp = 0xe1ab7de0 r4 = 0x00000000 r5 = 0xc25b10d4 r6 = 0x00000004 r10 = 0x00000000 _sleep() at _sleep+0x444 pc = 0xc21b546c lr = 0xc2074fb0 (random_kthread+0x170) sp = 0xe1ab7de8 fp = 0xe1ab7e30 r4 = 0xc25b108c r5 = 0x00000000 r6 = 0xc25b1070 r7 = 0x00000020 r8 = 0x00004078 r9 = 0x00000004 r10 = 0xe1ab7e04 random_kthread() at random_kthread+0x170 --More-- pc = 0xc2074fb0 lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1ab7e38 fp = 0xe1ab7e50 r4 = 0xc6c5a9f0 r5 = 0xc6c56a68 r6 = 0xc2074e40 r7 = 0x00000000 r8 = 0xe1ab7e58 r9 = 0x00000000 r10 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1ab7e58 fp = 0x00000000 r4 = 0xc2074e40 r5 = 0x00000000 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1ab7e58 fp = 0x00000000 100001 (0xc6c5b000) (stack 0xe1aae000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xe1aafae8 fp = 0xe1aafb20 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) --More-- sp = 0xe1aafb28 fp = 0xe1aafb40 r4 = 0x00000000 r5 = 0x0001813d r6 = 0xc6c5b000 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0x00000000 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc2203440 (sleepq_catch_signals+0xb4) sp = 0xe1aafb48 fp = 0xe1aafb90 r4 = 0xc6c5b000 r5 = 0xc6c57000 r6 = 0x0000006c r7 = 0x00000000 r8 = 0x00000070 r9 = 0xc6c57000 sleepq_catch_signals() at sleepq_catch_signals+0xb4 pc = 0xc2203440 lr = 0xc2203314 (sleepq_wait_sig+0xc) sp = 0xe1aafb98 fp = 0xe1aafba0 r4 = 0xc6c5b000 r5 = 0xc6c57000 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r9 = 0x0000006c r10 = 0xc6c570ac sleepq_wait_sig() at sleepq_wait_sig+0xc pc = 0xc2203314 lr = 0xc21b548c (_sleep+0x464) --More-- sp = 0xe1aafba8 fp = 0xe1aafc08 r4 = 0xc6c5b000 r10 = 0xc6c570ac _sleep() at _sleep+0x464 pc = 0xc21b548c lr = 0xc2165bcc (kern_wait6+0x7dc) sp = 0xe1aafc10 fp = 0xe1aafc98 r4 = 0x00000000 r5 = 0x00000007 r6 = 0x00000000 r7 = 0x00000000 r8 = 0xc6c5b000 r9 = 0xc6c570bc r10 = 0x00000000 kern_wait6() at kern_wait6+0x7dc pc = 0xc2165bcc lr = 0xc21652a8 (sys_wait4+0x84) sp = 0xe1aafca0 fp = 0xe1aafdd8 r4 = 0x00000030 r5 = 0x00000000 r6 = 0x00000000 r7 = 0xe1aafcb4 r8 = 0xe1aafdf8 r9 = 0x00000000 r10 = 0xc6c57000 sys_wait4() at sys_wait4+0x84 pc = 0xc21652a8 lr = 0xc24994c8 (swi_handler+0x4b8) sp = 0xe1aafde0 fp = 0xe1aafe50 r4 = 0xc6c5b000 r5 = 0x00000000 --More-- r6 = 0x60000013 r7 = 0x00000000 r8 = 0xe1aafdf0 r10 = 0xc6c57000 swi_handler() at swi_handler+0x4b8 pc = 0xc24994c8 lr = 0xc2482418 (swi_exit) sp = 0xe1aafe58 fp = 0xbfbff930 r4 = 0x000439ec r5 = 0x00000000 r6 = 0x000e0740 r7 = 0x00000007 r8 = 0x00000004 r9 = 0xbfbff910 r10 = 0xbfbff908 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1aafe58 fp = 0xbfbff930 100000 (0xc25d2210) (stack 0xc2712000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xc2713d78 fp = 0xc2713db0 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xc2713db8 fp = 0xc2713dd0 r4 = 0x00000000 r5 = 0x0000b7d1 r6 = 0xc25d2210 r7 = 0xc25a5190 --More-- r8 = 0x00000000 r9 = 0x00000104 r10 = 0x00000000 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc22039c8 (sleepq_timedwait+0x38) sp = 0xc2713dd8 fp = 0xc2713de8 r4 = 0xc25d2210 r5 = 0x00000054 r6 = 0xc25d1e88 r7 = 0xfffff479 r8 = 0x00000000 r9 = 0x00000054 sleepq_timedwait() at sleepq_timedwait+0x38 pc = 0xc22039c8 lr = 0xc21b546c (_sleep+0x444) sp = 0xc2713df0 fp = 0xc2713e50 r4 = 0x00000009 r5 = 0xc25d1e88 r6 = 0x00000100 r10 = 0x00000000 _sleep() at _sleep+0x444 pc = 0xc21b546c lr = 0xc245025c (swapper+0x4f0) sp = 0xc2713e58 fp = 0xc2713ea0 r4 = 0xc25d2a24 r5 = 0x00000009 r6 = 0xfffff470 r7 = 0xc24f914c r8 = 0xc26aa000 r9 = 0x00000000 r10 = 0x80000000 --More-- swapper() at swapper+0x4f0 pc = 0xc245025c lr = 0xc20001f0 (_start+0xf0) sp = 0xc2713ea8 fp = 0x00000000 r4 = 0xc2000308 r5 = 0xc25e0000 r6 = 0x1204d0c0 r7 = 0x0085207a r8 = 0xc26aa000 r9 = 0x00000014 r10 = 0x00000060 _start() at _start+0xf0 pc = 0xc20001f0 lr = 0xc20001f0 (_start+0xf0) sp = 0xc2713ea8 fp = 0x00000000 100017 (0xc6cf66a0) (stack 0xe1ae3000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xe1ae4d10 fp = 0xe1ae4d48 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xe1ae4d50 fp = 0xe1ae4d68 r4 = 0x00000000 r5 = 0x0000573a r6 = 0xc6cf66a0 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0xc6cf9498 --More-- mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc22031b0 (sleepq_wait+0x38) sp = 0xe1ae4d70 fp = 0xe1ae4d80 r4 = 0x00000000 r5 = 0xc6cf9480 r6 = 0xc6cf66a0 r7 = 0x00000000 r8 = 0x00000000 r9 = 0x00000000 sleepq_wait() at sleepq_wait+0x38 pc = 0xc22031b0 lr = 0xc21b5498 (_sleep+0x470) sp = 0xe1ae4d88 fp = 0xe1ae4de8 r4 = 0xc6cf66a0 r5 = 0xc6cf9480 r6 = 0x00000000 r10 = 0xc6cf9498 _sleep() at _sleep+0x470 pc = 0xc21b5498 lr = 0xc2207c60 (taskqueue_thread_loop+0x1d8) sp = 0xe1ae4df0 fp = 0xe1ae4e30 r4 = 0xc6cf9480 r5 = 0xc6cf9498 r6 = 0xc24d503c r7 = 0x00000000 r8 = 0x00000100 r9 = 0x00000000 r10 = 0x00000000 taskqueue_thread_loop() at taskqueue_thread_loop+0x1d8 pc = 0xc2207c60 lr = 0xc216b014 (fork_exit+0xa4) --More-- sp = 0xe1ae4e38 fp = 0xe1ae4e50 r4 = 0xc6cf66a0 r5 = 0xc25d1e88 r6 = 0xc2207a88 r7 = 0xc25d3058 r8 = 0xe1ae4e58 r10 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1ae4e58 fp = 0x00000000 r4 = 0xc2207a88 r5 = 0xc25d3058 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1ae4e58 fp = 0x00000000 100020 (0xc6cf59f0) (stack 0xe1aec000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xe1aedd10 fp = 0xe1aedd48 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xe1aedd50 fp = 0xe1aedd68 r4 = 0x00000000 r5 = 0x00000000 --More-- r6 = 0xc6cf59f0 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0xc6cf9118 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc22031b0 (sleepq_wait+0x38) sp = 0xe1aedd70 fp = 0xe1aedd80 r4 = 0x00000000 r5 = 0xc6cf9100 r6 = 0xc6cf59f0 r7 = 0x00000000 r8 = 0x00000000 r9 = 0x00000000 sleepq_wait() at sleepq_wait+0x38 pc = 0xc22031b0 lr = 0xc21b5498 (_sleep+0x470) sp = 0xe1aedd88 fp = 0xe1aedde8 r4 = 0xc6cf59f0 r5 = 0xc6cf9100 r6 = 0x00000000 r10 = 0xc6cf9118 _sleep() at _sleep+0x470 pc = 0xc21b5498 lr = 0xc2207c60 (taskqueue_thread_loop+0x1d8) sp = 0xe1aeddf0 fp = 0xe1aede30 r4 = 0xc6cf9100 r5 = 0xc6cf9118 r6 = 0xc24d503c r7 = 0x00000000 r8 = 0x00000100 r9 = 0x00000000 --More-- r10 = 0x00000000 taskqueue_thread_loop() at taskqueue_thread_loop+0x1d8 pc = 0xc2207c60 lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1aede38 fp = 0xe1aede50 r4 = 0xc6cf59f0 r5 = 0xc25d1e88 r6 = 0xc2207a88 r7 = 0xc25d27a0 r8 = 0xe1aede58 r10 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1aede58 fp = 0x00000000 r4 = 0xc2207a88 r5 = 0xc25d27a0 r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1aede58 fp = 0x00000000 100022 (0xc6cf5350) (stack 0xe1af2000) cpu_switch() at cpu_switch+0x10 pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xe1af3d10 fp = 0xe1af3d48 sched_switch() at sched_switch+0x264 --More-- pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xe1af3d50 fp = 0xe1af3d68 r4 = 0x00000000 r5 = 0x00000000 r6 = 0xc6cf5350 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0xc6cf9018 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc22031b0 (sleepq_wait+0x38) sp = 0xe1af3d70 fp = 0xe1af3d80 r4 = 0x00000000 r5 = 0xc6cf9000 r6 = 0xc6cf5350 r7 = 0x00000000 r8 = 0x00000000 r9 = 0x00000000 sleepq_wait() at sleepq_wait+0x38 pc = 0xc22031b0 lr = 0xc21b5498 (_sleep+0x470) sp = 0xe1af3d88 fp = 0xe1af3de8 r4 = 0xc6cf5350 r5 = 0xc6cf9000 r6 = 0x00000000 r10 = 0xc6cf9018 _sleep() at _sleep+0x470 pc = 0xc21b5498 lr = 0xc2207c60 (taskqueue_thread_loop+0x1d8) sp = 0xe1af3df0 fp = 0xe1af3e30 --More-- r4 = 0xc6cf9000 r5 = 0xc6cf9018 r6 = 0xc24d503c r7 = 0x00000000 r8 = 0x00000100 r9 = 0x00000000 r10 = 0x00000000 taskqueue_thread_loop() at taskqueue_thread_loop+0x1d8 pc = 0xc2207c60 lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1af3e38 fp = 0xe1af3e50 r4 = 0xc6cf5350 r5 = 0xc25d1e88 r6 = 0xc2207a88 r7 = 0xc25d56ec r8 = 0xe1af3e58 r10 = 0x00000000 fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1af3e58 fp = 0x00000000 r4 = 0xc2207a88 r5 = 0xc25d56ec r6 = 0x00000000 r7 = 0x00000000 r8 = 0x00000000 r10 = 0x00000000 swi_exit() at swi_exit pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1af3e58 fp = 0x00000000 100039 (0xc6cfb6a0) (stack 0xe1de1000) cpu_switch() at cpu_switch+0x10 --More-- pc = 0xc2498c08 lr = 0xc21ddeb8 (sched_switch+0x264) sp = 0xe1de2d10 fp = 0xe1de2d48 sched_switch() at sched_switch+0x264 pc = 0xc21ddeb8 lr = 0xc21b5af4 (mi_switch+0x140) sp = 0xe1de2d50 fp = 0xe1de2d68 r4 = 0x00000000 r5 = 0x000002ab r6 = 0xc6cfb6a0 r7 = 0xc25a5190 r8 = 0x00000000 r9 = 0x00000104 r10 = 0xc6cf9398 mi_switch() at mi_switch+0x140 pc = 0xc21b5af4 lr = 0xc22031b0 (sleepq_wait+0x38) sp = 0xe1de2d70 fp = 0xe1de2d80 r4 = 0x00000000 r5 = 0xc6cf9380 r6 = 0xc6cfb6a0 r7 = 0x00000000 r8 = 0x00000000 r9 = 0x00000000 sleepq_wait() at sleepq_wait+0x38 pc = 0xc22031b0 lr = 0xc21b5498 (_sleep+0x470) sp = 0xe1de2d88 fp = 0xe1de2de8 r4 = 0xc6cfb6a0 r5 = 0xc6cf9380 r6 = 0x00000000 r10 = 0xc6cf9398 --More-- _sleep() at _sleep+0x470 pc = 0xc21b5498 lr = 0xc2207c60 (taskqueue_thread_loop+0x1d8) sp = 0xe1de2df0 fp = 0xe1de2e30 r4 = 0xc6cf9380 r5 = 0xc6cf9398 r6 = 0xc24d503c r7 = 0x00000000 r8 = 0x00000100 r9 = 0xc25d2210 r10 = 0xc25d2f9c taskqueue_thread_loop() at taskqueue_thread_loop+0x1d8 pc = 0xc2207c60 lr = 0xc216b014 (fork_exit+0xa4) sp = 0xe1de2e38 fp = 0xe1de2e50 r4 = 0xc6cfb6a0 r5 = 0xc25d1e88 r6 = 0xc2207a88 r7 = 0xc25ae328 r8 = 0xe1de2e58 r10 = 0xc25d2f9c fork_exit() at fork_exit+0xa4 pc = 0xc216b014 lr = 0xc2482418 (swi_exit) sp = 0xe1de2e58 fp = 0x00000000 r4 = 0xc2207a88 r5 = 0xc25ae328 r6 = 0xc6c596a0 r7 = 0x7ffb6c1f r8 = 0xc25c80d0 r10 = 0xc25d2f9c swi_exit() at swi_exit --More-- pc = 0xc2482418 lr = 0xc2482418 (swi_exit) sp = 0xe1de2e58 fp = 0x00000000 db> show reg spsr 0x60000193 r0 0xc25c8334 kdb_why r1 0 r2 0x1 r3 0xc24e0c51 $d.16+0x80 r4 0xc6b27400 r5 0xc6b27488 r6 0x114 $d.0+0x10 r7 0x40000 r8 0x1 r9 0xc257aaf8 uart_ipend_desc r10 0 r11 0xe1ac6cb0 r12 0 usr_sp 0xbfbff6c8 usr_lr 0x20247620 svc_sp 0xe1ac6ca0 svc_lr 0xc21f1fec kdb_alt_break_internal+0x1c4 pc 0xc21f2008 $a.10 und_sp 0xc270f000 --More-- abt_sp 0xc270b000 irq_sp 0xc2707000 $d.9: ldrb r15, [r15, r15, ror r15]! db> root@devel:/usr/local/DEVEL/LOG # root@devel:/usr/local/DEVEL/LOG # ^Dexit Script done on Mon Jul 6 09:25:59 2015 --Multipart=_Mon__6_Jul_2015_10_06_35_+0000_JoajtEIb+uD6jE1O-- From owner-freebsd-arm@freebsd.org Tue Jul 7 13:36:25 2015 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A9B8E9953D7 for ; Tue, 7 Jul 2015 13:36:25 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from kenobi.freebsd.org (kenobi.freebsd.org [IPv6:2001:1900:2254:206a::16:76]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 956ED1561 for ; Tue, 7 Jul 2015 13:36:25 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from bugs.freebsd.org ([127.0.1.118]) by kenobi.freebsd.org (8.14.9/8.14.9) with ESMTP id t67DaPWO002869 for ; Tue, 7 Jul 2015 13:36:25 GMT (envelope-from bugzilla-noreply@freebsd.org) From: bugzilla-noreply@freebsd.org To: freebsd-arm@FreeBSD.org Subject: [Bug 196398] [patch] Add new board - Gumstix Duovero Date: Tue, 07 Jul 2015 13:36:25 +0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: Base System X-Bugzilla-Component: arm X-Bugzilla-Version: 11.0-CURRENT X-Bugzilla-Keywords: X-Bugzilla-Severity: Affects Some People X-Bugzilla-Who: gjb@FreeBSD.org X-Bugzilla-Status: Closed X-Bugzilla-Priority: --- X-Bugzilla-Assigned-To: freebsd-arm@FreeBSD.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: resolution bug_status Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: https://bugs.freebsd.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jul 2015 13:36:25 -0000 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=196398 Glen Barber changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Status|New |Closed --- Comment #2 from Glen Barber --- Sorry this remained open so long. There is now support for the Gumstix board, and images are being produced with the weekly snapshot builds for both 11-CURRENT and 10-STABLE (and we will have images available for 10.2-RELEASE). Thank you for your submission. -- You are receiving this mail because: You are the assignee for the bug. From owner-freebsd-arm@freebsd.org Tue Jul 7 13:39:33 2015 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D995A995437 for ; Tue, 7 Jul 2015 13:39:33 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from kenobi.freebsd.org (kenobi.freebsd.org [IPv6:2001:1900:2254:206a::16:76]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id C593418AB for ; Tue, 7 Jul 2015 13:39:33 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from bugs.freebsd.org ([127.0.1.118]) by kenobi.freebsd.org (8.14.9/8.14.9) with ESMTP id t67DdXTV005316 for ; Tue, 7 Jul 2015 13:39:33 GMT (envelope-from bugzilla-noreply@freebsd.org) From: bugzilla-noreply@freebsd.org To: freebsd-arm@FreeBSD.org Subject: [Bug 185046] [armv6] issues with dhclient/sshd and jemalloc on raspberry pi and others Date: Tue, 07 Jul 2015 13:39:33 +0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: Base System X-Bugzilla-Component: arm X-Bugzilla-Version: 1.0-CURRENT X-Bugzilla-Keywords: X-Bugzilla-Severity: Affects Only Me X-Bugzilla-Who: gjb@FreeBSD.org X-Bugzilla-Status: Closed X-Bugzilla-Priority: Normal X-Bugzilla-Assigned-To: freebsd-arm@FreeBSD.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_status resolution Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: https://bugs.freebsd.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jul 2015 13:39:33 -0000 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=185046 Glen Barber changed: What |Removed |Added ---------------------------------------------------------------------------- Status|In Progress |Closed Resolution|--- |FIXED --- Comment #3 from Glen Barber --- Closing this based on the commit log in r259963. Thank you for the report. -- You are receiving this mail because: You are the assignee for the bug. From owner-freebsd-arm@freebsd.org Tue Jul 7 13:41:19 2015 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E4304995545 for ; Tue, 7 Jul 2015 13:41:19 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from kenobi.freebsd.org (kenobi.freebsd.org [IPv6:2001:1900:2254:206a::16:76]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D0C011AE2 for ; Tue, 7 Jul 2015 13:41:19 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from bugs.freebsd.org ([127.0.1.118]) by kenobi.freebsd.org (8.14.9/8.14.9) with ESMTP id t67DfJcY011400 for ; Tue, 7 Jul 2015 13:41:19 GMT (envelope-from bugzilla-noreply@freebsd.org) From: bugzilla-noreply@freebsd.org To: freebsd-arm@FreeBSD.org Subject: [Bug 178495] buildworld fail on arm/raspberry pi Date: Tue, 07 Jul 2015 13:41:20 +0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: Base System X-Bugzilla-Component: arm X-Bugzilla-Version: 10.0-CURRENT X-Bugzilla-Keywords: X-Bugzilla-Severity: Affects Only Me X-Bugzilla-Who: gjb@FreeBSD.org X-Bugzilla-Status: Closed X-Bugzilla-Priority: Normal X-Bugzilla-Assigned-To: freebsd-arm@FreeBSD.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_status resolution Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: https://bugs.freebsd.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jul 2015 13:41:20 -0000 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=178495 Glen Barber changed: What |Removed |Added ---------------------------------------------------------------------------- Status|In Progress |Closed Resolution|--- |FIXED --- Comment #4 from Glen Barber --- Closed as requested in followup. Thank you for your report. -- You are receiving this mail because: You are the assignee for the bug. From owner-freebsd-arm@freebsd.org Tue Jul 7 13:58:00 2015 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3216A995894 for ; Tue, 7 Jul 2015 13:58:00 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from kenobi.freebsd.org (kenobi.freebsd.org [IPv6:2001:1900:2254:206a::16:76]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 1E6B312C0 for ; Tue, 7 Jul 2015 13:58:00 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from bugs.freebsd.org ([127.0.1.118]) by kenobi.freebsd.org (8.14.9/8.14.9) with ESMTP id t67DvxQc031732 for ; Tue, 7 Jul 2015 13:57:59 GMT (envelope-from bugzilla-noreply@freebsd.org) From: bugzilla-noreply@freebsd.org To: freebsd-arm@FreeBSD.org Subject: [Bug 196407] kernel modules fail on arm after r276047 Date: Tue, 07 Jul 2015 13:58:00 +0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: Base System X-Bugzilla-Component: arm X-Bugzilla-Version: 11.0-CURRENT X-Bugzilla-Keywords: X-Bugzilla-Severity: Affects Many People X-Bugzilla-Who: gjb@FreeBSD.org X-Bugzilla-Status: Closed X-Bugzilla-Priority: --- X-Bugzilla-Assigned-To: freebsd-arm@FreeBSD.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: resolution bug_status Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: https://bugs.freebsd.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jul 2015 13:58:00 -0000 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=196407 Glen Barber changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Status|In Progress |Closed --- Comment #2 from Glen Barber --- Apparently resolved in r276525. Thank you for your submission. -- You are receiving this mail because: You are the assignee for the bug. From owner-freebsd-arm@freebsd.org Tue Jul 7 17:03:05 2015 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3DCBCA365 for ; Tue, 7 Jul 2015 17:03:05 +0000 (UTC) (envelope-from lists.br@gmail.com) Received: from mail-yk0-x234.google.com (mail-yk0-x234.google.com [IPv6:2607:f8b0:4002:c07::234]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 00593191B for ; Tue, 7 Jul 2015 17:03:04 +0000 (UTC) (envelope-from lists.br@gmail.com) Received: by ykdr198 with SMTP id r198so183386591ykd.3 for ; Tue, 07 Jul 2015 10:03:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=YskaAmJYEAfrCkZyOKrZrFecQDHM0Ap6CiAvNyUr8MM=; b=jK8drd7qgqUrKaj1zfuJSEMoVEyRbmMyCA7+CKsD5vkpdgbHGxCi1hoPNoPIIpUaOi 8LDS67SptYPS9/yRO9LeiY8J7BV2O2pZdpi/ElVIJKuOeNv8BBawSThjK15N454W0Vbw vcKdj6oLen1WYJczQuOHeTu4J983tqmwqban/ZaAdV/yBj4BeLUCSz+RxckW5jJkZ1WP HLcOVjJ7s+oiYnALEskdZxfQD9dRe+6sHU4f/u7G3k8G0ebrirtDuQBMgoqxqajUHj0L zfjlppC6a1z4uIZelCiTK4hjSBemWT0b+mP9GLh9cNZbSJuq1u3XFvvxwg/X9w+nR7Q2 ie8g== MIME-Version: 1.0 X-Received: by 10.129.53.74 with SMTP id c71mr5855371ywa.50.1436288584059; Tue, 07 Jul 2015 10:03:04 -0700 (PDT) Received: by 10.13.198.135 with HTTP; Tue, 7 Jul 2015 10:03:04 -0700 (PDT) In-Reply-To: <20150703234534.GA66208@chilled.skew.org> References: <20150703234534.GA66208@chilled.skew.org> Date: Tue, 7 Jul 2015 14:03:04 -0300 Message-ID: Subject: Re: cpsw0: Failed to read from PHY (on BBB w/11.0-CURRENT) From: Luiz Otavio O Souza To: Mike Brown Cc: "freebsd-arm@freebsd.org" Content-Type: text/plain; charset=UTF-8 X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jul 2015 17:03:05 -0000 On 3 July 2015 at 20:45, Mike Brown wrote: > I'm trying to get FreeBSD working on my BeagleBone Black rev. C. > > 10.1-STABLE (20150617 snapshot) wouldn't boot; it couldn't mount rootfs. > http://pastebin.com/7dPQFGH2 is the console log if anyone cares. > > I asked on Freenode #freebsd-embedded and was told to try 11-CURRENT > for now. Well, 11-current boots, but I can't get networking going. > ifconfig only shows the lo0 device, no cpsw0. The boot messages said: > > cpsw0: <3-port Switch Ethernet Subsystem> mem 0x4a100000-0x4a1007ff,0x4a101200-0x4a1012ff irq 40,41,42,43 on simplebus0 > cpsw0: CPSW SS Version 1.12 (0) > cpsw0: Initial queue size TX=128 RX=384 > cpsw0: Failed to read from PHY. > cpsw0: attaching PHYs failed > device_attach: cpsw0 attach returned 6 > > I get the same result regardless of whether an ethernet cable is plugged in. > > Is this expected, or is something wrong on my end? > > Let me know if you need any more info. Thanks! Hi, About the cpsw failure on -current, I've seen that before, this still need to be tracked down. Usually you can fix this error with a cold boot (remove the power for a few seconds). This happen randomly at boot (I haven't yet found a reliable way to reproduce this). Luiz From owner-freebsd-arm@freebsd.org Wed Jul 8 16:58:25 2015 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 80A8A996151 for ; Wed, 8 Jul 2015 16:58:25 +0000 (UTC) (envelope-from vandervelde.ag@gmail.com) Received: from mail-qg0-x233.google.com (mail-qg0-x233.google.com [IPv6:2607:f8b0:400d:c04::233]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3AF65190C for ; Wed, 8 Jul 2015 16:58:25 +0000 (UTC) (envelope-from vandervelde.ag@gmail.com) Received: by qgef3 with SMTP id f3so52985795qge.0 for ; Wed, 08 Jul 2015 09:58:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=subject:mime-version:content-type:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=jy6apkqb0mu+H5hjcHdIe9NMhquvFwCpOpuELhNXtmA=; b=Ljae5jWG/0knXPECoiBqxBA8DthBfRcUzggiqlOCEcHNXw1EobduziuPw8zYTKMvUn l+7to1qqJIhRJK2ifbwnIAFNT8ACLJb0BdDJDBARCVZe1ZDpyRHgLpRWLrZd2JJkLbFv vj9gYIcRtXPPPN/Whb2fCNsL544C/GTcPcrQWdFnK2usBYSWb00P5x/wa2P95yWh2Kxn 4lGvR1YjEwV2qt7WKhVE4VQQDjhS99ekRPNjFR0XyNDWFDT7ygzgjVDdyF6E6lraYu15 H28J8ppGrrYVLn3vBKRAemAfby9O3N892USXceAq39ByLw5v3FI0yBv0P5MF6+pzGxID QWGw== X-Received: by 10.140.134.69 with SMTP id 66mr18920288qhg.51.1436374704214; Wed, 08 Jul 2015 09:58:24 -0700 (PDT) Received: from noresult.ad.umassmed.edu ([146.189.163.113]) by smtp.gmail.com with ESMTPSA id 3sm1647637qhc.19.2015.07.08.09.58.23 (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 08 Jul 2015 09:58:23 -0700 (PDT) Subject: Re: STABLE "pfctl -s states" core dumps on Beaglebone Black (was -s rules) Mime-Version: 1.0 (Apple Message framework v1085) Content-Type: text/plain; charset=us-ascii From: Arjan van der Velde In-Reply-To: Date: Wed, 8 Jul 2015 12:58:21 -0400 Cc: freebsd-arm Content-Transfer-Encoding: 7bit Message-Id: <4493DFFB-BAF9-46E8-9DB4-0EDA8E2475C0@gmail.com> References: <55762A9C.7080504@gmail.com> To: Guy Yur X-Mailer: Apple Mail (2.1085) X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jul 2015 16:58:25 -0000 Great! Thanks. On Jun 30, 2015, at 2:10 PM, Guy Yur wrote: > Hi, > > On Tue, Jun 9, 2015 at 2:51 AM, Arjan van der Velde > wrote: >> Ok, I meant to say "pfctl -s states" here. Sorry for the confusion. >> >> -- Arjan >> >> >> On 06/08/2015 16:54, Arjan van der Velde wrote: >>> >>> Hello, >>> >>> I'm running stable on my BBB and I noticed that pfctl core dumps when >>> doing "pfctl -s rules". I am on: >>> >>> FreeBSD beaglebone 10.1-STABLE FreeBSD 10.1-STABLE #1 r283308 >>> >>> gdb doesn't seem to give me any useful information. >>> >>> dmesg shows: pid 4192 (pfctl), uid 0: exited on signal 10 (core dumped) >>> >>> and gdb: >>> > (snip) >>> >>> >>> Is this a known issue? How would I go about analyzing the cause of this? > > > The cause for the core dump is unaligned access when trying to > copy struct pf_addr in print_host(). > The compiler expects the struct to be aligned on 4 bytes > (it contains a union of a u_int32_t array) but it is not > since it is passed from inside pfsync_state struct which > size is not divisible by 4. > > On the BeagleBone Black strict alignment fault checking is enabled. > > Discussion on the issue: > https://lists.freebsd.org/pipermail/freebsd-arm/2014-January/007237.html > > I filed bug report 185617 with changes that will break KBI: > https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=185617 > > >>> >>> Thanks. >>> >>> -- Arjan > > Regards, > -- Guy From owner-freebsd-arm@freebsd.org Thu Jul 9 07:30:36 2015 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id CFC4399677B for ; Thu, 9 Jul 2015 07:30:36 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from kenobi.freebsd.org (kenobi.freebsd.org [IPv6:2001:1900:2254:206a::16:76]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id BC2D2122F for ; Thu, 9 Jul 2015 07:30:36 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from bugs.freebsd.org ([127.0.1.118]) by kenobi.freebsd.org (8.14.9/8.14.9) with ESMTP id t697UauD017201 for ; Thu, 9 Jul 2015 07:30:36 GMT (envelope-from bugzilla-noreply@freebsd.org) From: bugzilla-noreply@freebsd.org To: freebsd-arm@FreeBSD.org Subject: [Bug 201434] [PATCH] Bad management of PSR_A bit Date: Thu, 09 Jul 2015 07:30:36 +0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: Base System X-Bugzilla-Component: arm X-Bugzilla-Version: 11.0-CURRENT X-Bugzilla-Keywords: patch X-Bugzilla-Severity: Affects Some People X-Bugzilla-Who: soutade@gmail.com X-Bugzilla-Status: New X-Bugzilla-Priority: --- X-Bugzilla-Assigned-To: freebsd-arm@FreeBSD.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version rep_platform op_sys bug_status keywords bug_severity priority component assigned_to reporter attachments.created Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: https://bugs.freebsd.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jul 2015 07:30:36 -0000 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=201434 Bug ID: 201434 Summary: [PATCH] Bad management of PSR_A bit Product: Base System Version: 11.0-CURRENT Hardware: arm OS: Any Status: New Keywords: patch Severity: Affects Some People Priority: --- Component: arm Assignee: freebsd-arm@FreeBSD.org Reporter: soutade@gmail.com Keywords: patch Created attachment 158557 --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=158557&action=edit Clear PSR_A bit at startup (initarm) Sometimes at reboot, the PSR_A bit (CPSR register) is set. This bit mask further hardware bad accesses until it's cleared (going into userspace for me) leaving "Asynchronous External Abort" very late. In the ARM_NEW_PMAP code, we call enable_interrupts() in initarm() to force clearing this bit. Nevertheless, enable_interrupts() does a mask with ARM_CPSR_I32 and ARM_CPSR_F32 bits making the call useless. The attached patch correct it in ARM_NEW_PMAP and non ARM_NEW_PMAP code. -- You are receiving this mail because: You are the assignee for the bug. From owner-freebsd-arm@freebsd.org Fri Jul 10 08:28:05 2015 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 27D873CA5 for ; Fri, 10 Jul 2015 08:28:05 +0000 (UTC) (envelope-from ronald-lists@klop.ws) Received: from smarthost1.greenhost.nl (smarthost1.greenhost.nl [195.190.28.81]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D7877C52 for ; Fri, 10 Jul 2015 08:28:04 +0000 (UTC) (envelope-from ronald-lists@klop.ws) Received: from smtp.greenhost.nl ([213.108.104.138]) by smarthost1.greenhost.nl with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.72) (envelope-from ) id 1ZDTPh-0003hG-IR for freebsd-arm@freebsd.org; Fri, 10 Jul 2015 10:12:11 +0200 Content-Type: text/plain; charset=utf-8; format=flowed; delsp=yes Subject: executable gone after fsck - Fwd: Cron newsyslog References: <20150709200019.E7710D975C@sheeva.klop.ws> To: "freebsd-arm@freebsd.org" Date: Fri, 10 Jul 2015 10:12:04 +0200 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: "Ronald Klop" Message-ID: In-Reply-To: <20150709200019.E7710D975C@sheeva.klop.ws> User-Agent: Opera Mail/1.0 (Win32) X-Authenticated-As-Hash: 398f5522cb258ce43cb679602f8cfe8b62a256d1 X-Virus-Scanned: by clamav at smarthost1.samage.net X-Spam-Level: - X-Spam-Score: -1.5 X-Spam-Status: No, score=-1.5 required=5.0 tests=ALL_TRUSTED, BAYES_05, URIBL_BLOCKED autolearn=disabled version=3.3.2 X-Scan-Signature: a350ae07b5350cdad28cef237d2e7179 X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jul 2015 08:28:05 -0000 Hi, I used fsck after a panic on my sheevaplug. FreeBSD sheeva.klop.ws 11.0-CURRENT FreeBSD 11.0-CURRENT #8 r284499M: Wed Jun 17 12:54:02 CEST 2015 root@sjakie.klop.ws:/usr/obj-arm/arm.arm/usr/src-arm/sys/SHEEVAPLUG arm If I did not made a mistake somewhere I'm running with the unmapped i/o turned off. http://www.secnetix.de/olli/FreeBSD/svnews/index.py?r=283931 NB: In the case below bzip2 does not exist anymore. Which is not something _just_ written to disk. Unfortunately I don't have more information about the crash. Ronald. ------- Forwarded message ------- From: "Cron Daemon" To: root@klop.ws Cc: Subject: Cron newsyslog Date: Thu, 09 Jul 2015 22:00:10 +0200 newsyslog: execl(`/usr/bin/bzip2 -f /var/log/console.log.0'): No such file or directory newsyslog: `bzip2 -f /var/log/console.log.0' terminated with a non-zero status (1) From owner-freebsd-arm@freebsd.org Fri Jul 10 15:43:21 2015 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A5CED997329 for ; Fri, 10 Jul 2015 15:43:21 +0000 (UTC) (envelope-from leonardofogel@yahoo.com.br) Received: from nm20-vm3.bullet.mail.ne1.yahoo.com (nm20-vm3.bullet.mail.ne1.yahoo.com [98.138.91.150]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 741C41BE7 for ; Fri, 10 Jul 2015 15:43:20 +0000 (UTC) (envelope-from leonardofogel@yahoo.com.br) Received: from [98.138.100.111] by nm20.bullet.mail.ne1.yahoo.com with NNFMP; 10 Jul 2015 15:43:14 -0000 Received: from [98.138.87.3] by tm100.bullet.mail.ne1.yahoo.com with NNFMP; 10 Jul 2015 15:43:13 -0000 Received: from [127.0.0.1] by omp1003.mail.ne1.yahoo.com with NNFMP; 10 Jul 2015 15:43:13 -0000 X-Yahoo-Newman-Property: ymail-3 X-Yahoo-Newman-Id: 975372.51355.bm@omp1003.mail.ne1.yahoo.com Received: (qmail 51826 invoked by uid 60001); 10 Jul 2015 15:43:13 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com.br; s=s1024; t=1436542993; bh=OJ6tCKWhzO0wq/cDRYurTGc8P/b5s7lzVheVfYizb6E=; h=Message-ID:Date:From:Subject:To:MIME-Version:Content-Type:Content-Transfer-Encoding; b=XuJng8o9Q2sYQkmjN8GJnn7S8TvfP4WjG4gSMhtTr+RZUpFs+uodhajA+vVbVvD/YFje8GIb45jTHDopGbnU/r94Hr0W4LF7Hvbdl/jjEqN4zpSkM21uZuhgfNjQzXJuF9dGWVvRfMNYGlQxQy4H0IfyKijUTF292hhbls2Sp/c= X-YMail-OSG: f4H0Ap0VM1kOdB3guVoj7R0.1PqMGdyIpzKKmxv2.QazPTn AzwhChGnvSReQCupUd6Kli0SGV7CsWdu27Rrj0yt4FUA7pYyLOisfL1FAOV7 7c5A9wP_vE3jPnIZS4VPLscmotdPkD8GK64kY4RTjAQayqof0zqz2N0EccjK 88CgetpJHvRZ0._RB3eyxW7BYl8MaYxjSLAkVbcyycTHaTRBbxrd0I8KsuKe Kkwl6r0uN8zOak0hd.3fsy4iI7iD3FPsQhzmrtVprBuOVNpRIVKv1aFn5CdR L19R3vS_XiT8qIp5qeIErbpJLwROm_8E7xMLkdp8v34rc_bF6Wqwsf.9DFNE dhvzkMUQ_bFlzK4KVj9M_Ma3wQ1dchRzvcmbSduMQI3fskYBTewVcJ0LTnTh 8aY_dHv9BteuA7nqyg22C5VpLXn7PjrW85zY2LHHjpSqmutlf6WTlZt137Zl tC6WXDroCbFXG2.4YjhASztUjQtHHUC5dIwAveiWJj7f2W6Q3UUDbh2IYgo3 0.O0kVfZJdu.DYrq3aFQpNqibSj1_nPkB7MVs1gIwfzRb1FTcaA6ZcCSEoSI zBp0eWr10nEPrMARE Received: from [186.228.53.250] by web120803.mail.ne1.yahoo.com via HTTP; Fri, 10 Jul 2015 08:43:13 PDT X-Rocket-MIMEInfo: 002.001, SGkuDQpJJ3ZlIGJlZW4gdHJ5aW5nIHRvIGNyb3NzLWJ1aWxkIHRoZSBrZXJuZWwgYW5kIG1vZHVsZXMgdG8gQmVhZ2xlQm9uZSBCbGFjayBmcm9tIEZyZWVCU0QtMTAuMS1SRUxFQVNFLWkzODYgb24gYSBWaXJ0dWFsQm94IFZNLiBJJ3ZlIGluc3RhbGxlZCBzdm4gYW5kIGRvd25sb2FkZWQgQ1VSUkVOVCAocmV2aXNpb24gMjg1MzU4IG5vdykuIEhvd2V2ZXIsIHRoZSBidWlsZGluZyBvZiB0aGUgdG9vbGNoYWluIGZhaWxzOg0KDQokIGVudiBNQUtFT0JKRElSUFJFRklYPS9ob21lL2xmb2dlbC9vYmogbWFrZSABMAEBAQE- X-Mailer: YahooMailBasic/566 YahooMailWebService/0.8.203.802 Message-ID: <1436542993.46776.YahooMailBasic@web120803.mail.ne1.yahoo.com> Date: Fri, 10 Jul 2015 08:43:13 -0700 From: Leonardo Fogel Subject: How to Xbuild to BBB? To: freebsd-arm@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jul 2015 15:43:21 -0000 Hi. I've been trying to cross-build the kernel and modules to BeagleBone Black = from FreeBSD-10.1-RELEASE-i386 on a VirtualBox VM. I've installed svn and d= ownloaded CURRENT (revision 285358 now). However, the building of the toolc= hain fails: $ env MAKEOBJDIRPREFIX=3D/home/lfogel/obj make buildenv DESTDIR=3D/home/lfo= gel/dst KERNCONF=3DBEAGLEBONE TARGET=3Darm TARGET_ARCH=3Darmv6 Entering world for armv6:arm $ env MAKEOBJDIRPREFIX=3D/home/lfogel/obj make toolchain DESTDIR=3D/home/lf= ogel/dst KERNCONF=3DBEAGLEBONE TARGET=3Darm TARGET_ARCH=3Darmv6 (... stripped output) =3D=3D=3D> kerberos5/tools/asn1_compile (obj,depend,all,install) (... stripped output) cc -O -pipe -I/usr/home/lfogel/src/kerberos5/tools/asn1_compile/../../../= crypto/heimdal/lib/roken -I/usr/home/lfogel/src/kerberos5/tools/asn1_compil= e/../../../crypto/heimdal/lib/asn1 -I. -DHAVE_CONFIG_H -I/usr/home/lfogel/s= rc/kerberos5/tools/asn1_compile/../../include -std=3Dgnu99 -Qunused-argumen= ts -I/home/lfogel/obj/usr/home/lfogel/src/tmp/legacy/usr/include -static -= L/home/lfogel/obj/usr/home/lfogel/src/tmp/legacy/usr/lib -o asn1_compile as= n1parse.o gen.o gen_copy.o gen_decode.o gen_encode.o gen_free.o gen_glue.o = gen_length.o gen_seq.o gen_template.o hash.o lex.o main.o symbol.o /home/lf= ogel/obj/usr/home/lfogel/src/tmp/usr/home/lfogel/src/kerberos5/tools/asn1_c= ompile/../../lib/libroken/libroken.a -L/home/lfogel/obj/usr/home/lfogel/src= /tmp/usr/home/lfogel/src/kerberos5/lib/libvers -lvers -legacy make[5]: "/home/lfogel/obj/usr/home/lfogel/src/tmp/usr/home/lfogel/src/kerb= eros5/tools/asn1_compile/.depend" line 3: warning: Zero byte read from file= , skipping rest of line. make[5]: "/home/lfogel/obj/usr/home/lfogel/src/tmp/usr/home/lfogel/src/kerb= eros5/tools/asn1_compile/.depend" line 3: Need an operator make[5]: "/home/lfogel/obj/usr/home/lfogel/src/tmp/usr/home/lfogel/src/kerb= eros5/tools/asn1_compile/.depend" line 4: Need an operator make[5]: Fatal errors encountered -- cannot continue make[5]: stopped in /usr/home/lfogel/src/kerberos5/tools/asn1_compile *** Error code 1 I'd also tried different instructions that Google had suggested. They'd all= failed too. Please, could you kindly point me to right instructions on how= to cross-build to BBB? Thank you for your time. Leonardo From owner-freebsd-arm@freebsd.org Fri Jul 10 15:51:24 2015 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 1599499751B for ; Fri, 10 Jul 2015 15:51:24 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from mail-pd0-f181.google.com (mail-pd0-f181.google.com [209.85.192.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id E04BA106B for ; Fri, 10 Jul 2015 15:51:23 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: by pdjr16 with SMTP id r16so25037144pdj.3 for ; Fri, 10 Jul 2015 08:51:17 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:subject:mime-version:content-type:from :in-reply-to:date:cc:message-id:references:to; bh=nmCi7UqQOmOsDtuU631CE52ydmY6ykO32rGY7bHec9k=; b=aUfljq0TqpZ03rqZnli4YiMIqBY39Wl7pZNkXyix8Aj7pbscCPnjTrSLyx+aZd4NPg f+Wl/s6gxBgTNZJ3A4B+6SCN/eUIOSmPzTCHOPEpk6bM153yjSslIkA2xPIHgkctPPyu hQCPdA0IGp6qobtlBu/MxO3yzH2ZhIEpUO7PI8L01SQOfNqzl0eBN1BUYrjlbjT0gKQF nbdE3hC8cooyPALBwXtW8lHGQUIUYrPJc6OH1TwiZ86E+ROhT+gyR3fN26IX8y3KHrJP zV5bPPfZT/usccaNcurPKvYJvLcE7mg3q5Tew1fA54aGZQiR46Jy1Ov/xmWRYBQzuyIL XsiQ== X-Gm-Message-State: ALoCoQm6U8E1lUQPP7wQDT2nIPIpSy3dEFSeSJAEwXBDQyiQQXTfREK+mVJMkRD07bwg/aOTXKgR X-Received: by 10.70.44.199 with SMTP id g7mr43344573pdm.27.1436543477266; Fri, 10 Jul 2015 08:51:17 -0700 (PDT) Received: from [10.64.26.138] ([69.53.236.236]) by smtp.gmail.com with ESMTPSA id fr2sm10002485pdb.22.2015.07.10.08.51.15 (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 10 Jul 2015 08:51:16 -0700 (PDT) Sender: Warner Losh Subject: Re: How to Xbuild to BBB? Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2102\)) Content-Type: multipart/signed; boundary="Apple-Mail=_3ACF911A-44D1-495C-8E9E-480C3FCC9BD3"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Pgp-Agent: GPGMail 2.5 From: Warner Losh In-Reply-To: <1436542993.46776.YahooMailBasic@web120803.mail.ne1.yahoo.com> Date: Fri, 10 Jul 2015 09:51:16 -0600 Cc: freebsd-arm@freebsd.org Message-Id: <34801934-D06E-491D-B30D-EEBDE54E253F@bsdimp.com> References: <1436542993.46776.YahooMailBasic@web120803.mail.ne1.yahoo.com> To: Leonardo Fogel X-Mailer: Apple Mail (2.2102) X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jul 2015 15:51:24 -0000 --Apple-Mail=_3ACF911A-44D1-495C-8E9E-480C3FCC9BD3 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii Sure looks like that .depend file is AFU. Try removing it. If that = fails, try removing the entire obj tree. Try adding WITHOUT_KERBEROS=3Dy = if it keeps failing after that. Warner > On Jul 10, 2015, at 9:43 AM, Leonardo Fogel = wrote: >=20 > Hi. > I've been trying to cross-build the kernel and modules to BeagleBone = Black from FreeBSD-10.1-RELEASE-i386 on a VirtualBox VM. I've installed = svn and downloaded CURRENT (revision 285358 now). However, the building = of the toolchain fails: >=20 > $ env MAKEOBJDIRPREFIX=3D/home/lfogel/obj make buildenv = DESTDIR=3D/home/lfogel/dst KERNCONF=3DBEAGLEBONE TARGET=3Darm = TARGET_ARCH=3Darmv6 > Entering world for armv6:arm >=20 > $ env MAKEOBJDIRPREFIX=3D/home/lfogel/obj make toolchain = DESTDIR=3D/home/lfogel/dst KERNCONF=3DBEAGLEBONE TARGET=3Darm = TARGET_ARCH=3Darmv6 > (... stripped output) > =3D=3D=3D> kerberos5/tools/asn1_compile (obj,depend,all,install) > (... stripped output) > cc -O -pipe = -I/usr/home/lfogel/src/kerberos5/tools/asn1_compile/../../../crypto/heimda= l/lib/roken = -I/usr/home/lfogel/src/kerberos5/tools/asn1_compile/../../../crypto/heimda= l/lib/asn1 -I. -DHAVE_CONFIG_H = -I/usr/home/lfogel/src/kerberos5/tools/asn1_compile/../../include = -std=3Dgnu99 -Qunused-arguments = -I/home/lfogel/obj/usr/home/lfogel/src/tmp/legacy/usr/include -static = -L/home/lfogel/obj/usr/home/lfogel/src/tmp/legacy/usr/lib -o = asn1_compile asn1parse.o gen.o gen_copy.o gen_decode.o gen_encode.o = gen_free.o gen_glue.o gen_length.o gen_seq.o gen_template.o hash.o lex.o = main.o symbol.o = /home/lfogel/obj/usr/home/lfogel/src/tmp/usr/home/lfogel/src/kerberos5/too= ls/asn1_compile/../../lib/libroken/libroken.a = -L/home/lfogel/obj/usr/home/lfogel/src/tmp/usr/home/lfogel/src/kerberos5/l= ib/libvers -lvers -legacy > make[5]: = "/home/lfogel/obj/usr/home/lfogel/src/tmp/usr/home/lfogel/src/kerberos5/to= ols/asn1_compile/.depend" line 3: warning: Zero byte read from file, = skipping rest of line. > make[5]: = "/home/lfogel/obj/usr/home/lfogel/src/tmp/usr/home/lfogel/src/kerberos5/to= ols/asn1_compile/.depend" line 3: Need an operator > make[5]: = "/home/lfogel/obj/usr/home/lfogel/src/tmp/usr/home/lfogel/src/kerberos5/to= ols/asn1_compile/.depend" line 4: Need an operator > make[5]: Fatal errors encountered -- cannot continue > make[5]: stopped in /usr/home/lfogel/src/kerberos5/tools/asn1_compile > *** Error code 1 >=20 >=20 > I'd also tried different instructions that Google had suggested. = They'd all failed too. Please, could you kindly point me to right = instructions on how to cross-build to BBB? > Thank you for your time. > Leonardo >=20 > _______________________________________________ > freebsd-arm@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-arm > To unsubscribe, send any mail to "freebsd-arm-unsubscribe@freebsd.org" --Apple-Mail=_3ACF911A-44D1-495C-8E9E-480C3FCC9BD3 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP using GPGMail -----BEGIN PGP SIGNATURE----- Comment: GPGTools - https://gpgtools.org iQIcBAEBCgAGBQJVn+n0AAoJEGwc0Sh9sBEA4sEQAOEDZsCG1g2Gp2Eq/tb7QG2C dgrEakkuveiy+9iCDRlbQw6YYcMNozqBFB+zeTIHBr0jbGQ3SxVXWmfuNPdC0AkP Lsc9gcdDd6eK1BOiJ4oJJg1PHrljlsahVtHkZAS5D0Vp+TnLV4DNwO5oNW+lwTua x9Un5p7uYmaYEvcp2BUevb5xM8PVRHCO2V9tyUAunYp7XEuxCI5TH3hZeKCfS0sf vXsOzPQWYegB/L5KZS9LmLPEVqgh1HQ7l0y7O+y0EViIIVo8CmhKEkAAmI5zcqVR 2y+mX1CZfm0MpceQijbm6ydyI6w/SaRzEkkiJsTWeM4b5NcY9IHLrDHh+AiGBU2f 3AKNW8paIxKMuym174YQKRQKc0U3bG+Bd0tMJMZ8pUkiiHLyWqwTCK+Gr4GXguEf nszfzHSR5+kV9R+rjzL+HS/dwx+0YdElcRi1iyY1CuklmqYyetXpXqXRGRDFrov+ mMvZQwFtFcQk4iBncfz9En0OMxi9W/+Qbn5ga3+i+sufox5gF2H1P/IDZcP5/ppj CE7Hia/jD/v5UllKcJ3ZSFhZahN44Le8OcAJBHHDYwdWlrwhruPsD8R9YChkP++h am2qQwzz2YlhH+CoNjToGN/28e52zg/qvvxIJettkJK4noFrdBOSwWh0RGOvGidf FRn+YJCjKzW2dW23CTns =y1Ws -----END PGP SIGNATURE----- --Apple-Mail=_3ACF911A-44D1-495C-8E9E-480C3FCC9BD3-- From owner-freebsd-arm@freebsd.org Fri Jul 10 15:36:38 2015 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3CE2D9971D7 for ; Fri, 10 Jul 2015 15:36:38 +0000 (UTC) (envelope-from m.vale@live.com.au) Received: from COL004-OMC3S2.hotmail.com (col004-omc3s2.hotmail.com [65.55.34.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (Client CN "*.outlook.com", Issuer "MSIT Machine Auth CA 2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id CFDBA1920 for ; Fri, 10 Jul 2015 15:36:37 +0000 (UTC) (envelope-from m.vale@live.com.au) Received: from COL130-W16 ([65.55.34.135]) by COL004-OMC3S2.hotmail.com over TLS secured channel with Microsoft SMTPSVC(7.5.7601.23008); Fri, 10 Jul 2015 08:35:30 -0700 X-TMN: [0HLKP1OCh4NVMGjD+xOHTDx6r+cU8P/8] X-Originating-Email: [m.vale@live.com.au] Message-ID: Content-Type: multipart/mixed; boundary="_bbd834ec-684f-4050-82ae-b205d8a5c3e3_" From: Michael Vale To: "freebsd-arm@freebsd.org" Subject: FW: Cross Ports - working - find attached bsd.port.mk Date: Sat, 11 Jul 2015 02:05:30 +1030 Importance: Normal In-Reply-To: References: MIME-Version: 1.0 X-OriginalArrivalTime: 10 Jul 2015 15:35:30.0850 (UTC) FILETIME=[0DCE0020:01D0BB26] X-Mailman-Approved-At: Fri, 10 Jul 2015 17:05:53 +0000 X-Content-Filtered-By: Mailman/MimeDel 2.1.20 X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jul 2015 15:36:38 -0000 --_bbd834ec-684f-4050-82ae-b205d8a5c3e3_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable From: m.vale@live.com.au To: freebsd-mips@freebsd.org Subject: Cross Ports - working - find attached bsd.port.mk Date: Sat=2C 11 Jul 2015 02:01:24 +1030 =0A= =0A= =0A= Okay=2C So=2C I'm submitting my work on cross ports. Here's what works and what doesn't work Clang support is there but GNU configure tries to append -march=3Dmips32r2 = to the command which causes the compiler check to fail. GCC support is there=2C except when a GNU configure script tries to link -l= gcc_s - apparently Adrian and bapt were meant to have fixed this in -head= =2C but I updated and still had the problem. So an example of the ports I've tried and worked are: sysutils/busyboxsecurity/dropbear Now when running bmake X_BUILD_FOR=3Dmips on dropbear=2C it fails "installi= ng" files into the stage. But if you run bmake again without X_BUILD_FOR= =3Dmips it "installs" those files into stage and one can continue along wit= h bmake install. It is assumed that one has built a world with freebsd-wifi-build. An example of running a bmake is SRCDIR=3D/home/masked/work/src bmake X_BUILD_FOR=3Dmips = --_bbd834ec-684f-4050-82ae-b205d8a5c3e3_ Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="bsd.port.mk" Iy0qLSB0YWItd2lkdGg6IDQ7IC0qLQojIGV4OnRzPTQKIwojICRGcmVlQlNEOiBoZWFkL01rL2Jz ZC5wb3J0Lm1rIDM5MTI5NSAyMDE1LTA3LTA0IDA4OjU2OjU0WiBiYXB0ICQKIwkkTmV0QlNEOiAk CiMKIwlic2QucG9ydC5tayAtIDk0MDgyMCBKb3JkYW4gSy4gSHViYmFyZC4KIwlUaGlzIGZpbGUg aXMgaW4gdGhlIHB1YmxpYyBkb21haW4uCiMKIyBQbGVhc2UgdmlldyBtZSB3aXRoIDQgY29sdW1u IHRhYnMhCgojIFRoaXMgaXMgdGhlIG1hc3RlciBmaWxlIGZvciB0aGUgbW9zdCBjb21tb24gZWxl bWVudHMgdG8gYWxsIHBvcnQKIyBNYWtlZmlsZSBpbiB0aGUgcG9ydHMgc3lzdGVtLiAgRm9yIGEg bW9yZSBnZW5lcmFsIG92ZXJ2aWV3IG9mIGl0cwojIHVzZSBhbmQgaW1wb3J0YW5jZSwgc2VlIHRo ZSBQb3J0ZXIncyBIYW5kYm9vay4KCiMgVGhlcmUgYXJlIHR3byBkaWZmZXJlbnQgdHlwZXMgb2Yg Im1haW50YWluZXJzIiBpbiB0aGUgcG9ydHMgZnJhbWV3b3JrLgojIFRoZSBtYWludGFpbmVyIGFs aWFzIG9mIHRoZSBic2QucG9ydC5tayBmaWxlIGlzIGxpc3RlZCBiZWxvdyBpbiB0aGUKIyBGcmVl QlNEX01BSU5UQUlORVIgZW50cnkuICBZb3Ugc2hvdWxkIGNvbnN1bHQgdGhlbSBpZiB5b3UgaGF2 ZSBhbnkKIyBxdWVzdGlvbnMvc3VnZ2VzdGlvbnMgcmVnYXJkaW5nIHRoaXMgZmlsZS4KIwojIERP IE5PVCBDT01NSVQgQ0hBTkdFUyBUTyBUSElTIEZJTEUgQlkgWU9VUlNFTEYsIEVWRU4gSUYgWU9V IERJRCBOT1QgR0VUCiMgQSBSRVNQT05TRSBGUk9NIFRIRSBNQUlOVEFJTkVSKFMpIFdJVEhJTiBB IFJFQVNPTkFCTEUgVElNRUZSQU1FISBBTEwKIyBVTkFVVEhPUklTRUQgQ0hBTkdFUyBXSUxMIEJF IFVOQ09ORElUSU9OQUxMWSBSRVZFUlRFRCEKCkZyZWVCU0RfTUFJTlRBSU5FUj0JcG9ydG1nckBG cmVlQlNELm9yZwoKIyBGb3IgZWFjaCBwb3J0LCB0aGUgTUFJTlRBSU5FUiB2YXJpYWJsZSBpcyB3 aGF0IHlvdSBzaG91bGQgY29uc3VsdCBmb3IKIyBjb250YWN0IGluZm9ybWF0aW9uIG9uIHRoZSBw ZXJzb24ocykgdG8gY29udGFjdCBpZiB5b3UgaGF2ZSBxdWVzdGlvbnMvCiMgc3VnZ2VzdGlvbnMg YWJvdXQgdGhhdCBzcGVjaWZpYyBwb3J0LiAgQnkgZGVmYXVsdCAoaWYgbm8gTUFJTlRBSU5FUgoj IGlzIGxpc3RlZCksIGEgcG9ydCBpcyBtYWludGFpbmVkIGJ5IHRoZSBzdWJzY3JpYmVycyBvZiB0 aGUgcG9ydHNARnJlZUJTRC5vcmcKIyBtYWlsaW5nIGxpc3QsIGFuZCBhbnkgY29ycmVzcG9uZGVu Y2Ugc2hvdWxkIGJlIGRpcmVjdGVkIHRoZXJlLgojCiMgTUFJTlRBSU5FUgktIFRoZSBlLW1haWwg YWRkcmVzcyBvZiB0aGUgY29udGFjdCBwZXJzb24gZm9yIHRoaXMgcG9ydC4KIwkJCQkgIERlZmF1 bHQ6IHBvcnRzQEZyZWVCU0Qub3JnCiMKIyBUaGVzZSBhcmUgbWV0YS12YXJpYWJsZXMgdGhhdCBh cmUgYXV0b21hdGljYWxseSBzZXQgdG8gdGhlIHN5c3RlbQojIHlvdSBhcmUgcnVubmluZyBvbi4g IFRoZXNlIGFyZSBwcm92aWRlZCBpbiBjYXNlIHlvdSBuZWVkIHRvIHRha2UKIyBkaWZmZXJlbnQg YWN0aW9ucyBmb3IgZGlmZmVyZW50IHZhbHVlcy4KIwojIEFSQ0gJCQktIFRoZSBhcmNoaXRlY3R1 cmUgb2YgdGhlIHRhcmdldCBtYWNoaW5lLCBzdWNoIGFzIHdvdWxkIGJlCiMJCQkJICByZXR1cm5l ZCBieSAidW5hbWUgLXAiLgojIE9QU1lTCQkJLSBQb3J0YWJpbGl0eSBjbGF1c2UuICBUaGlzIGlz IHRoZSBvcGVyYXRpbmcgc3lzdGVtIHRoZQojCQkJCSAgbWFrZWZpbGUgaXMgYmVpbmcgdXNlZCBv bi4gIEF1dG9tYXRpY2FsbHkgc2V0IHRvCiMJCQkJICAiRnJlZUJTRCwiICJOZXRCU0QsIiBvciAi T3BlbkJTRCIgYXMgYXBwcm9wcmlhdGUuCiMgT1NSRUwJCQktIFRoZSByZWxlYXNlIHZlcnNpb24g KG51bWVyaWMpIG9mIHRoZSBvcGVyYXRpbmcgc3lzdGVtLgojIE9TVkVSU0lPTgkJLSBUaGUgdmFs dWUgb2YgX19GcmVlQlNEX3ZlcnNpb24uCiMKIyBUaGlzIGlzIHRoZSBiZWdpbm5pbmcgb2YgdGhl IGxpc3Qgb2YgYWxsIHZhcmlhYmxlcyB0aGF0IG5lZWQgdG8gYmUKIyBkZWZpbmVkIGluIGEgcG9y dCwgbGlzdGVkIGluIG9yZGVyIHRoYXQgdGhleSBzaG91bGQgYmUgaW5jbHVkZWQKIyB0byBmaXQg aW4gd2l0aCBleGlzdGluZyBjb252ZW50aW9ucy4gIChFeGNlcHRpb246IE1BSU5UQUlORVIgYWN0 dWFsbHkKIyBzaG91bGQgYXBwZWFyIGFmdGVyIEVYVFJBQ1RfT05MWSBhbmQgYmVmb3JlIE1BU1RF Ul9TSVRFX0JBQ0tVUCkuCiMKIyBUaGVzZSB2YXJpYWJsZXMgYXJlIHVzZWQgdG8gaWRlbnRpZnkg eW91ciBwb3J0LgojCiMgUE9SVE5BTUUJCS0gTmFtZSBvZiBzb2Z0d2FyZS4gIE1hbmRhdG9yeS4K IyBQT1JUVkVSU0lPTgktIFZlcnNpb24gb2Ygc29mdHdhcmUuICBNYW5kYXRvcnkgd2hlbiBubyBE SVNUVkVSU0lPTiBpcyBnaXZlbi4KIyBQT1JUUkVWSVNJT04JLSBWZXJzaW9uIG9mIHBvcnQuICBP cHRpb25hbC4gIENvbW1vbmx5IHVzZWQgdG8gaW5kaWNhdGUKIwkJCQkgIHRoYXQgYW4gdXBkYXRl IGhhcyBoYXBwZW5lZCB0aGF0IGFmZmVjdHMgdGhlIHBvcnQKIwkJCQkgIGZyYW1ld29yayBpdHNl bGYsIGJ1dCBub3QgdGhlIGRpc3RyaWJ1dGVkIHNvZnR3YXJlCiMJCQkJICAoZS5nLiwgbG9jYWwg cGF0Y2hlcyBvciBNYWtlZmlsZSBjaGFuZ2VzKS4KIyBQT1JURVBPQ0gJCS0gT3B0aW9uYWwuICBJ biBjZXJ0YWluIG9kZCBjYXNlcywgdGhlIFBPUlRSRVZJU0lPTiBsb2dpYwojCQkJCSAgY2FuIGJl IGZvb2xlZCBieSBwb3J0cyB0aGF0IGFwcGVhciB0byBnbyBiYWNrd2FyZHMKIwkJCQkgIG51bWVy aWNhbGx5IChlLmcuIGlmIHBvcnQtMC4zIGlzIG5ld2VyIHRoYW4gcG9ydC0xOTk4KS4KIwkJCQkg IEluIHRoaXMgY2FzZSwgaW5jcmVtZW50aW5nIFBPUlRFUE9DSCBmb3JjZXMgdGhlIHJldmlzaW9u LgojCQkJCSAgRGVmYXVsdDogMCAobm8gZWZmZWN0KS4KIyBQS0dOQU1FCQktIEFsd2F5cyBkZWZp bmVkIGFzCiMJCQkJICAke1BLR05BTUVQUkVGSVh9JHtQT1JUTkFNRX0ke1BLR05BTUVTVUZGSVh9 LSR7UE9SVFZFUlNJT059LgojCQkJCSAgRG8gbm90IGRlZmluZSB0aGlzIGluIHlvdXIgTWFrZWZp bGUuCiMgUEtHTkFNRVBSRUZJWAktIFByZWZpeCB0byBzcGVjaWZ5IHRoYXQgcG9ydCBpcyBsYW5n dWFnZS1zcGVjaWZpYywgZXRjLgojCQkJCSAgT3B0aW9uYWwuCiMgUEtHTkFNRVNVRkZJWAktIFN1 ZmZpeCB0byBzcGVjaWZ5IGNvbXBpbGF0aW9uIG9wdGlvbnMgb3IgYSB2ZXJzaW9uCiMJCQkJICBk ZXNpZ25hdG9yIChpbiBjYXNlIHRoZXJlIGFyZSBkaWZmZXJlbnQgdmVyc2lvbnMgb2YKIwkJCQkg IG9uZSBwb3J0IGFzIGlzIHRoZSBjYXNlIGZvciBUY2wpLgojCQkJCSAgT3B0aW9uYWwuCiMgUEtH VkVSU0lPTgktIEFsd2F5cyBkZWZpbmVkIGFzICR7UE9SVFZFUlNJT059LgojCQkJCSAgRG8gbm90 IGRlZmluZSB0aGlzIGluIHlvdXIgTWFrZWZpbGUuCiMgVU5JUVVFTkFNRQktIEEgbmFtZSBmb3Ig eW91ciBwb3J0IHRoYXQgaXMgZ2xvYmFsbHkgdW5pcXVlLiAgQnkgZGVmYXVsdCwKIwkJCQkgIHRo aXMgaXMgc2V0IHRvICR7TEFURVNUX0xJTkt9IHdoZW4gTEFURVNUX0xJTksgaXMgc2V0LAojCQkJ CSAgYW5kIHRvICR7UEtHTkFNRVBSRUZJWH0ke1BPUlROQU1FfSBvdGhlcndpc2UuCiMgRElTVFZF UlNJT04JLSBWZW5kb3IgdmVyc2lvbiBvZiB0aGUgZGlzdHJpYnV0aW9uLgojCQkJCSAgRGVmYXVs dDogJHtQT1JUVkVSU0lPTn0KIyBESVNUTkFNRQkJLSBOYW1lIG9mIHBvcnQgb3IgZGlzdHJpYnV0 aW9uIHVzZWQgaW4gZ2VuZXJhdGluZwojCQkJCSAgV1JLU1JDIGFuZCBESVNURklMRVMgYmVsb3cu CiMJCQkJICBEZWZhdWx0OgojCQkJCSAgJHtQT1JUTkFNRX0tJHtESVNUVkVSU0lPTlBSRUZJWH0k e0RJU1RWRVJTSU9OfSR7RElTVFZFUlNJT05TVUZGSVh9CiMgQ0FURUdPUklFUwktIEEgbGlzdCBv ZiBkZXNjcmlwdGl2ZSBjYXRlZ29yaWVzIGludG8gd2hpY2ggdGhpcyBwb3J0IGZhbGxzLgojCQkJ CSAgTWFuZGF0b3J5LgojCiMgVGhlc2UgdmFyaWFibGUgZGVzY3JpYmUgaG93IHRvIGZldGNoIGZp bGVzIHJlcXVpcmVkIGZvciBidWlsZGluZyB0aGUgcG9ydC4KIwojIERJU1RGSUxFUwkJLSBOYW1l KHMpIG9mIGFyY2hpdmUgZmlsZShzKSBjb250YWluaW5nIGRpc3RyaWJ1dGlvbi4KIwkJCQkgIFNl dCB0aGlzIHRvIGFuIGVtcHR5IHN0cmluZyBpZiB0aGUgcG9ydCBkb2Vzbid0IHJlcXVpcmUgaXQu CiMJCQkJICBEZWZhdWx0OiAke0RJU1ROQU1FfSR7RVhUUkFDVF9TVUZYfQojIEVYVFJBQ1RfU1VG WAktIFN1ZmZpeCBmb3IgYXJjaGl2ZSBuYW1lcwojCQkJCSAgWW91IG5ldmVyIGhhdmUgdG8gc2V0 IGJvdGggRElTVEZJTEVTIGFuZCBFWFRSQUNUX1NVRlguCiMJCQkJICBEZWZhdWx0OiAudGFyLmJ6 MiBpZiBVU0VTPXRhcjpiemlwMiBpcyBzZXQsIC50YXIueHogaWYKIwkJCQkgIFVTRVM9dGFyOnh6 IFVTRV9YWiBpcyBzZXQsIC50YXIuZ3ogb3RoZXJ3aXNlKS4KIyBNQVNURVJfU0lURVMJLSBQcmlt YXJ5IGxvY2F0aW9uKHMpIGZvciBkaXN0cmlidXRpb24gZmlsZXMgaWYgbm90IGZvdW5kCiMJCQkJ ICBsb2NhbGx5LiAgU2VlIGJzZC5zaXRlcy5tayBmb3IgY29tbW9uIGNob2ljZXMgZm9yCiMJCQkJ ICBNQVNURVJfU0lURVMuCiMgTUFTVEVSX1NJVEVfU1VCRElSCiMJCQkJLSBTdWJkaXJlY3Rvcnkg b2YgTUFTVEVSX1NJVEVTLiBXaWxsIHNvbWV0aW1lcyBuZWVkIHRvIGJlCiMJCQkJICBzZXQgdG8g JHtQT1JUTkFNRX0gZm9yIChlLmcuKSBNQVNURVJfU0lURV9TT1VSQ0VGT1JHRS4KIwkJCQkgIE9u bHkgZ3VhcmFudGVlZCB0byB3b3JrIGZvciBjaG9pY2VzIG9mICR7TUFTVEVSX1NJVEVTfQojCQkJ CSAgZGVmaW5lZCBpbiBic2Quc2l0ZXMubWsuCiMJCQkJICBEZWZhdWx0OiBub3Qgc2V0LgojIFBB VENIRklMRVMJLSBOYW1lKHMpIG9mIGFkZGl0aW9uYWwgZmlsZXMgdGhhdCBjb250YWluIGRpc3Ry aWJ1dGlvbgojCQkJCSAgcGF0Y2hlcy4gTWFrZSB3aWxsIGxvb2sgZm9yIHRoZW0gYXQgUEFUQ0hf U0lURVMgKHNlZSBiZWxvdykuCiMJCQkJICBUaGV5IHdpbGwgYXV0b21hdGljYWxseSBiZSB1bmNv bXByZXNzZWQgYmVmb3JlIHBhdGNoaW5nIGlmCiMJCQkJICB0aGUgbmFtZXMgZW5kIHdpdGggIi5n eiIsICIuYnoyIiBvciAiLloiLgojCQkJCSAgRm9yIGVhY2ggZmlsZSB5b3UgY2FuIG9wdGlvbmFs bHkgc3BlY2lmeSBhIHN0cmlwCiMJCQkJICBmbGFnIG9mIHBhdGNoKDEpIGFmdGVyIGEgY29sb24g aWYgaXQgaGFzIGEgZGlmZmVyZW50CiMJCQkJICBiYXNlIGRpcmVjdG9yeSwgZS5nLiAiZmlsZTEg ZmlsZTI6LXAxIGZpbGUzIi4KIwkJCQkgIFlvdSBjYW4gYWxzbyB1c2UgYSA6Z3JvdXAgYXQgdGhl IGVuZCBmb3IgbWF0Y2hpbmcgdXAgdG8KIwkJCQkgIGRpc3QgZmlsZSBncm91cHMuIFNlZSBQb3J0 ZXJzIEhhbmRib29rIGZvciBtb3JlIGluZm9ybWF0aW9uLgojCQkJCSAgU3ludGF4OiBQQVRDSEZJ TEVTPSBwYXRjaFs6LXBYXVs6Z3JvdXBdCiMJCQkJICBEZWZhdWx0OiBub3Qgc2V0LgojIFBBVENI X1NJVEVTCS0gUHJpbWFyeSBsb2NhdGlvbihzKSBmb3IgZGlzdHJpYnV0aW9uIHBhdGNoIGZpbGVz CiMJCQkJICBpZiBub3QgZm91bmQgbG9jYWxseS4KIyBESVNUX1NVQkRJUgktIFN1ZmZpeCB0byAk e0RJU1RESVJ9LiAgSWYgc2V0LCBhbGwgJHtESVNURklMRVN9IGFuZAojCQkJCSAgJHtQQVRDSEZJ TEVTfSB3aWxsIGJlIHB1dCBpbiB0aGlzIHN1YmRpcmVjdG9yeSBvZgojCQkJCSAgJHtESVNURElS fSAoc2VlIGJlbG93KS4gIEFsc28gdGhleSB3aWxsIGJlIGZldGNoZWQgaW4gdGhpcwojCQkJCSAg c3ViZGlyZWN0b3J5IGZyb20gRnJlZUJTRCBtaXJyb3Igc2l0ZXMuCiMgQUxMRklMRVMJCS0gQWxs IG9mICR7RElTVEZJTEVTfSBhbmQgJHtQQVRDSEZJTEVTfS4KIyBOT0ZFVENIRklMRVMJLSBJZiBz ZXQsIGRvbid0IGRvd25sb2FkIHRoZXNlIGZpbGVzIGZyb20gdGhlICR7TUFTVEVSX1NJVEVTfQoj CQkJCSAgb3IgJHtNQVNURVJfU0lURV9CQUNLVVB9IChidXQgZG8gZnJvbQojCQkJCSAgJHtNQVNU RVJfU0lURV9PVkVSUklERX0pCiMgRVhUUkFDVF9PTkxZCS0gSWYgc2V0LCBhIHN1YnNldCBvZiAk e0RJU1RGSUxFU30geW91IHdhbnQgdG8KIwkJCQkgIGFjdHVhbGx5IGV4dHJhY3QuCiMgQUxXQVlT X0tFRVBfRElTVEZJTEVTCiMJCQkJLSBJZiBzZXQsIHRoZSBwYWNrYWdlIGJ1aWxkaW5nIGNsdXN0 ZXIgd2lsbCBzYXZlIHRoZSBkaXN0ZmlsZXMKIwkJCQkgIGFsb25nIHdpdGggdGhlIHBhY2thZ2Vz LiBUaGlzIG1heSBiZSByZXF1aXJlZCB0byBjb21wbHkgd2l0aAojCQkJCSAgc29tZSBsaWNlbnNl cywgZS5nLiBHUEwgaW4gc29tZSBjYXNlcy4KIwkJCQkgIERlZmF1bHQ6IG5vdCBzZXQuCiMKIyAo Tk9URTogYnkgY29udmVudGlvbiwgdGhlIE1BSU5UQUlORVIgZW50cnkgKHNlZSBhYm92ZSkgc2hv dWxkIGdvIGhlcmUuKQojCiMgVGhlc2UgdmFyaWFibGVzIGFyZSB0eXBpY2FsbHkgc2V0IGluIC9l dGMvbWFrZS5jb25mIHRvIGluZGljYXRlCiMgdGhlIHVzZXIncyBwcmVmZXJyZWQgbG9jYXRpb24g dG8gZmV0Y2ggZmlsZXMgZnJvbS4gIFlvdSBzaG91bGQKIyByYXJlbHkgbmVlZCB0byBzZXQgdGhl c2UuCiMKIyBNQVNURVJfU0lURV9CQUNLVVAKIwkJCQktIEJhY2t1cCBsb2NhdGlvbihzKSBmb3Ig ZGlzdHJpYnV0aW9uIGZpbGVzIGFuZCBwYXRjaAojCQkJCSAgZmlsZXMgaWYgbm90IGZvdW5kIGxv Y2FsbHkgYW5kICR7TUFTVEVSX1NJVEVTfS8ke1BBVENIX1NJVEVTfQojCQkJCSAgRGVmYXVsdDoK IwkJCQkgIGh0dHA6Ly9kaXN0Y2FjaGUuRnJlZUJTRC5vcmcvcG9ydHMtZGlzdGZpbGVzLyR7RElT VF9TVUJESVJ9LwojIE1BU1RFUl9TSVRFX09WRVJSSURFCiMJCQkJLSBJZiBzZXQsIHByZXBlbmQg dGhlIE1BU1RFUl9TSVRFUyBzZXR0aW5nIHdpdGggdGhpcyB2YWx1ZS4KIyBNQVNURVJfU0lURV9G UkVFQlNECiMJCQkJLSBJZiBzZXQsIHByZXBlbmQgJHtNQVNURVJfU0lURV9CQUNLVVB9IGluIE1B U1RFUl9TSVRFUy4KIwojIFNldCB0aGVzZSBpZiB5b3VyIHBvcnQgc2hvdWxkIG5vdCBiZSBidWls dCB1bmRlciBjZXJ0YWluIGNpcmN1bXN0YW5jZXMuCiMgVGhlc2UgYXJlIHN0cmluZyB2YXJpYWJs ZXM7IHlvdSBzaG91bGQgc2V0IHRoZW0gdG8gdGhlIHJlYXNvbiB3aHkKIyB0aGV5IGFyZSBuZWNl c3NhcnkuCiMKIyBSRVNUUklDVEVECS0gUHJldmVudCB0aGUgZGlzdHJpYnV0aW9uIG9mIGRpc3Rm aWxlcyBhbmQgcGFja2FnZXMgdG8KIwkJCQkgIHRoZSBGVFAgc2l0ZXMgb3Igb24gQ0RST00gKGUu Zy4gZm9yYmlkZGVuIGJ5IGxpY2Vuc2UKIwkJCQkgIGNvbnNpZGVyYXRpb25zKS4KIyBOT19DRFJP TQkJLSBQYWNrYWdlcyBhbmQgZGlzdGZpbGVzIG1heSBub3QgZ28gb24gQ0RST00gKGUuZy4gbXVz dAojCQkJCSAgbm90IGJlIHJlLXNvbGQpIGJ1dCBjYW4gZ28gb24gRlRQIHNpdGVzLgojIE5PX1BB Q0tBR0UJLSBQb3J0IHNob3VsZCBub3QgYmUgcGFja2FnZWQgZm9yIGZ0cCBzaXRlcyBvciBDRFJP TXMsCiMJCQkJICBidXQgZGlzdGZpbGVzIGNhbiBiZSBwdXQgb24gZnRwIHNpdGVzIGFuZCBDRFJP TXMuCiMgRk9SQklEREVOCQktIFBhY2thZ2UgYnVpbGQgc2hvdWxkIG5vdCBiZSBhdHRlbXB0ZWQg YmVjYXVzZSBvZgojCQkJCSAgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLgojIExFR0FMX1RFWFQJ LSBQb3J0IGhhcyBsZWdhbCBpc3N1ZXMgKGUuZy4sIHNwZWNpYWwgcGVybWlzc2lvbiB0byBkaXN0 cmlidXRlLCBsYWNrcyBhIGxpY2Vuc2UpLgojIExFR0FMX1BBQ0tBR0UgLSBQb3J0IGhhcyBubyBs ZWdhbCBpc3N1ZXMgYnV0IGRlZmluZXMgTk9fUEFDS0FHRQojIElHTk9SRQkJLSBQYWNrYWdlIGJ1 aWxkIHNob3VsZCBiZSBza2lwcGVkIGVudGlyZWx5IChlLmcuCiMJCQkJICBiZWNhdXNlIG9mIHNl cmlvdXMgdW5maXhhYmxlIHByb2JsZW1zIGluIHRoZSBidWlsZCwKIwkJCQkgIGJlY2F1c2UgaXQg Y2Fubm90IGJlIG1hbnVhbGx5IGZldGNoZWQsIGV0YykuICBFcnJvcgojCQkJCSAgbG9ncyB3aWxs IG5vdCBhcHBlYXIgb24gcG9pbnR5aGF0LCBzbyB0aGlzIHNob3VsZCBiZQojCQkJCSAgdXNlZCBz cGFyaW5nbHkuCiMgQlJPS0VOCQktIFBvcnQgaXMgYmVsaWV2ZWQgdG8gYmUgYnJva2VuLiAgUGFj a2FnZSBidWlsZHMgY2FuCiMgCQkJCSAgc3RpbGwgYmUgYXR0ZW1wdGVkIHVzaW5nIFRSWUJST0tF TiB0byB0ZXN0IHRoaXMKIwkJCQkgIGFzc3VtcHRpb24uCiMgQlJPS0VOXyR7QVJDSH0gLSBQb3J0 IGlzIGJlbGlldmVkIHRvIGJlIGJyb2tlbiBvbiAke0FSQ0h9LiBQYWNrYWdlIGJ1aWxkcwojCQkJ CSAgY2FuIHN0aWxsIGJlIGF0dGVtcHRlZCB1c2luZyBUUllCUk9LRU4gdG8KIwkJCQkgIHRlc3Qg dGhpcyBhc3N1bXB0aW9uLgojIEJST0tFTl8ke09QU1lTfSAtIFBvcnQgaXMgYmVsaWV2ZWQgdG8g YmUgYnJva2VuIG9uICR7T1BTWVN9LiBQYWNrYWdlIGJ1aWxkcwojCQkJCSAgY2FuIHN0aWxsIGJl IGF0dGVtcHRlZCB1c2luZyBUUllCUk9LRU4gdG8KIwkJCQkgIHRlc3QgdGhpcyBhc3N1bXB0aW9u LgojIEJST0tFTl8ke09QU1lTfV8ke09TUkVMOlJ9IC0gIFBvcnQgaXMgYmVsaWV2ZWQgdG8gYmUg YnJva2VuIG9uIGEgc2luZ2xlCiMJCQkJICByZWxlYXNlIG9mICR7T1BTWVN9LCBlLmcgQlJPS0VO X0ZyZWVCU0RfOAojCQkJCSAgd291bGQgYWZmZWN0IGFsbCBwb2ludCByZWxlYXNlcyBvZiBGcmVl QlNEIDgKIwkJCQkgIHVubGVzcyBUUllCUk9LRU4gaXMgYWxzbyBzZXQuCiMgQlJPS0VOXyR7T1BT WVN9XyR7T1NSRUw6Un1fJHtBUkNIfSAtICBQb3J0IGlzIGJlbGlldmVkIHRvIGJlIGJyb2tlbiBv biBhCiMJCQkJICBzaW5nbGUgcmVsZWFzZSBvZiAke09QU1lTfSBhbmQgc3BlY2lmaWMgYXJjaGl0 ZWN0dXJlLAojCQkJCSAgZS5nIEJST0tFTl9GcmVlQlNEXzhfaTM4NiB3b3VsZCBhZmZlY3QgYWxs IHBvaW50CiMJCQkJICByZWxlYXNlcyBvZiBGcmVlQlNEIDggaW4gaTM4NgojCQkJCSAgdW5sZXNz IFRSWUJST0tFTiBpcyBhbHNvIHNldC4KIyBERVBSRUNBVEVECS0gUG9ydCBpcyBkZXByZWNhdGVk IHRvIGluc3RhbGwuIEFkdmlzb3J5IG9ubHkuCiMgRVhQSVJBVElPTl9EQVRFCiMJCQkJLSBJZiBE RVBSRUNBVEVEIGlzIHNldCwgZGV0ZXJtaW5lcyBhIGRhdGUgd2hlbgojCQkJCSAgdGhlIHBvcnQg aXMgcGxhbmVkIHRvIHJlbW92ZS4gVGhlIGRhdGUgZm9ybWF0IGlzCiMJCQkJICBJU08gODYwMSAo WVlZWS1NTS1ERCkuCiMKIyBESVNBQkxFX1ZVTE5FUkFCSUxJVElFUwojCQkJCS0gSWYgc2V0LCBk byBub3QgY2hlY2sgaWYgdGhlIHBvcnQgaXMgbGlzdGVkIGluIHRoZQojCQkJCSAgdnVsbmVyYWJp bGl0aWVzIGRhdGFiYXNlLgojCiMgSW4gYWRkaXRpb24gdG8gUkVTVFJJQ1RFRCBvciBOT19DRFJP TSwgaWYgb25seSBhIHN1YnNldCBvZiBkaXN0ZmlsZXMKIyBvciBwYXRjaGZpbGVzIGhhdmUgcmVk aXN0cmlidXRpb24gcmVzdHJpY3Rpb25zLCBzZXQgdGhlIGZvbGxvd2luZwojIHRvIHRoZSBsaXN0 IG9mIHN1Y2ggZmlsZXMuCiMKIyBSRVNUUklDVEVEX0ZJTEVTCiMJCQkJLSBMaXN0IG9mIGZpbGVz IHRoYXQgY2Fubm90IGJlIHJlZGlzdHJpYnV0ZWQuCiMJCQkJICBEZWZhdWx0OiAiJHtESVNURklM RVN9ICR7UEFUQ0hGSUxFU30iIGlmIFJFU1RSSUNURUQKIwkJCQkgIG9yIE5PX0NEUk9NIGlzIHNl dCwgZW1wdHkgb3RoZXJ3aXNlLgojCiMgVGhlc2UgdmFyaWFibGVzIGFyZSBib29sZWFucywgc28g eW91IGRvbid0IG5lZWQgdG8gc2V0IHRoZW0gdG8gdGhlIHJlYXNvbi4KIwojIElTX0lOVEVSQUNU SVZFCiMJCQkJLSBTZXQgdGhpcyBpZiB5b3VyIHBvcnQgbmVlZHMgdG8gaW50ZXJhY3Qgd2l0aCB0 aGUgdXNlcgojCQkJCSAgZHVyaW5nIGFueSBzdGVwIGluIGEgcGFja2FnZSBidWlsZC4gIFVzZXIg Y2FuIHRoZW4gZGVjaWRlCiMJCQkJICB0byBza2lwIHRoaXMgcG9ydCBieSBzZXR0aW5nICR7QkFU Q0h9LCBvciBjb21waWxpbmcgb25seQojCQkJCSAgdGhlIGludGVyYWN0aXZlIHBvcnRzIGJ5IHNl dHRpbmcgJHtJTlRFUkFDVElWRX0uCiMJCQkJICBEZWZhdWx0OiBub3Qgc2V0LgojIFVTRV9TVUJN QUtFCS0gU2V0IHRoaXMgaWYgeW91IHdhbnQgdGhhdCBlYWNoIG9mIHRoZSBwb3J0J3MgbWFpbiA3 IHRhcmdldHMKIwkJCQkgIChleHRyYWN0LCBwYXRjaCwgY29uZmlndXJlLCBidWlsZCwgc3RhZ2Us IGluc3RhbGwgYW5kCiMJCQkJICBwYWNrYWdlKSB0byBiZSBleGVjdXRlZCBpbiBhIHNlcGFyYXRl IG1ha2UoMSkgcHJvY2Vzcy4KIwkJCQkgIFVzZWZ1bCB3aGVuIG9uZSBvZiB0aGUgc3RhZ2VzIG5l ZWRzIHRvIGluZmx1ZW5jZSBtYWtlKDEpCiMJCQkJICB2YXJpYWJsZXMgb2YgdGhlIGxhdGVyIHN0 YWdlcyB1c2luZyAke1dSS0RJUn0vTWFrZWZpbGUuaW5jCiMJCQkJICBnZW5lcmF0ZWQgb24gdGhl IGZseS4KIwkJCQkgIERlZmF1bHQ6IG5vdCBzZXQuCiMKIyBOT19BUkNICQkJLSBTZXQgdGhpcyBp ZiBwb3J0IGlzIGFyY2hpdGVjdHVyZSBuZXV0cmFsLgojCiMgU2V0IHRoZXNlIGlmIHlvdXIgcG9y dCBvbmx5IG1ha2VzIHNlbnNlIHRvIGNlcnRhaW4gYXJjaGl0ZWN0dXJlcy4KIyBUaGV5IGFyZSBs aXN0cyBjb250YWluaW5nIG5hbWVzIGZvciB0aGVtIChlLmcuLCAiYW1kNjQgaTM4NiIpLgojIChE ZWZhdWx0czogbm90IHNldC4pCiMKIyBPTkxZX0ZPUl9BUkNIUwojCQkJCS0gT25seSBidWlsZCBw b3J0cyBpZiAke0FSQ0h9IG1hdGNoZXMgb25lIG9mIHRoZXNlLgojIE5PVF9GT1JfQVJDSFMJLSBP bmx5IGJ1aWxkIHBvcnRzIGlmICR7QVJDSH0gZG9lc24ndCBtYXRjaCBvbmUgb2YgdGhlc2UuCiMg T05MWV9GT1JfQVJDSFNfUkVBU09OCiMgT05MWV9GT1JfQVJDSFNfUkVBU09OXyR7QVJDSH0KIwkJ CQktIFJlYXNvbiB3aHkgaXQncyBvbmx5IGZvciAke09OTFlfRk9SX0FSQ0hTfXMKIyBOT1RfRk9S X0FSQ0hTX1JFQVNPTgojIE5PVF9GT1JfQVJDSFNfUkVBU09OXyR7QVJDSH0KIwkJCQktIFJlYXNv biB3aHkgaXQncyBub3QgZm9yICR7Tk9UX0ZPUl9BUkNIU31zCiMgSUEzMl9CSU5BUllfUE9SVAoj CQkJCS0gU2V0IHRoaXMgaW5zdGVhZCBvZiBPTkxZX0ZPUl9BUkNIUyBpZiB0aGUgZ2l2ZW4gcG9y dAojCQkJCSAgZmV0Y2hlcyBhbmQgaW5zdGFsbHMgY29tcGlsZWQgaTM4NiBiaW5hcmllcy4KIwoj IERlcGVuZGVuY3kgY2hlY2tpbmcuICBVc2UgdGhlc2UgaWYgeW91ciBwb3J0IHJlcXVpcmVzIGFu b3RoZXIgcG9ydAojIG5vdCBpbiB0aGUgbGlzdCBiZWxvdy4gIChEZWZhdWx0OiBlbXB0eS4pCiMK IyBFWFRSQUNUX0RFUEVORFMKIwkJCQktIEEgbGlzdCBvZiAicGF0aDpkaXJbOnRhcmdldF0iIHR1 cGxlcyBvZiBvdGhlciBwb3J0cyB0aGlzCiMJCQkJICBwYWNrYWdlIGRlcGVuZHMgb24gaW4gdGhl ICJleHRyYWN0IiBzdGFnZS4gICJwYXRoIiBpcwojCQkJCSAgdGhlIG5hbWUgb2YgYSBmaWxlIGlm IGl0IHN0YXJ0cyB3aXRoIGEgc2xhc2ggKC8pLCBhbgojCQkJCSAgZXhlY3V0YWJsZSBvdGhlcndp c2UuICBtYWtlIHdpbGwgdGVzdCBmb3IgdGhlIGV4aXN0ZW5jZQojCQkJCSAgKGlmIGl0IGlzIGEg ZnVsbCBwYXRobmFtZSkgb3Igc2VhcmNoIGZvciBpdCBpbiB5b3VyCiMJCQkJICAkUEFUSCAoaWYg aXQgaXMgYW4gZXhlY3V0YWJsZSkgYW5kIGdvIGludG8gImRpciIgdG8gZG8KIwkJCQkgIGEgIm1h a2UgYWxsIGluc3RhbGwiIGlmIGl0J3Mgbm90IGZvdW5kLiAgSWYgdGhlIHRoaXJkCiMJCQkJICBm aWVsZCAoInRhcmdldCIpIGV4aXN0cywgaXQgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YKIwkJCQkg ICR7REVQRU5EU19UQVJHRVR9LiAgVGhlIGZpcnN0IGZpZWxkIGFsc28gc3VwcG9ydHMgYQojCQkJ CSAgcGFja2FnZSBuYW1lIHdpdGggYSB2ZXJzaW9uIHJhbmdlLCBpbiB0aGUgZm9ybSBwYWNrYWdl Pj0xLjIKIwkJCQkgIGlmIGEgcGFydGljdWxhciB2ZXJzaW9uIGlzIGRlc2lyZWQuCiMgUEFUQ0hf REVQRU5EUwktIEEgbGlzdCBvZiAicGF0aDpkaXJbOnRhcmdldF0iIHR1cGxlcyBvZiBvdGhlciBw b3J0cyB0aGlzCiMJCQkJICBwYWNrYWdlIGRlcGVuZHMgb24gaW4gdGhlICJwYXRjaCIgc3RhZ2Uu ICAicGF0aCIgaXMgdGhlCiMJCQkJICBuYW1lIG9mIGEgZmlsZSBpZiBpdCBzdGFydHMgd2l0aCBh IHNsYXNoICgvKSwgYW4KIwkJCQkgIGV4ZWN1dGFibGUgb3RoZXJ3aXNlLiAgbWFrZSB3aWxsIHRl c3QgZm9yIHRoZSBleGlzdGVuY2UKIwkJCQkgIChpZiBpdCBpcyBhIGZ1bGwgcGF0aG5hbWUpIG9y IHNlYXJjaCBmb3IgaXQgaW4geW91cgojCQkJCSAgJFBBVEggKGlmIGl0IGlzIGFuIGV4ZWN1dGFi bGUpIGFuZCBnbyBpbnRvICJkaXIiIHRvIGRvCiMJCQkJICBhICJtYWtlIGFsbCBpbnN0YWxsIiBp ZiBpdCdzIG5vdCBmb3VuZC4gIElmIHRoZSB0aGlyZAojCQkJCSAgZmllbGQgKCJ0YXJnZXQiKSBl eGlzdHMsIGl0IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mCiMJCQkJICAke0RFUEVORFNfVEFSR0VU fS4gIFRoZSBmaXJzdCBmaWVsZCBhbHNvIHN1cHBvcnRzIGEKIwkJCQkgIHBhY2thZ2UgbmFtZSB3 aXRoIGEgdmVyc2lvbiByYW5nZSwgaW4gdGhlIGZvcm0gcGFja2FnZT49MS4yCiMJCQkJICBpZiBh IHBhcnRpY3VsYXIgdmVyc2lvbiBpcyBkZXNpcmVkLgojIEZFVENIX0RFUEVORFMJLSBBIGxpc3Qg b2YgInBhdGg6ZGlyWzp0YXJnZXRdIiB0dXBsZXMgb2Ygb3RoZXIgcG9ydHMgdGhpcwojCQkJCSAg cGFja2FnZSBkZXBlbmRzIGluIHRoZSAiZmV0Y2giIHN0YWdlLiAgInBhdGgiIGlzIHRoZQojCQkJ CSAgbmFtZSBvZiBhIGZpbGUgaWYgaXQgc3RhcnRzIHdpdGggYSBzbGFzaCAoLyksIGFuCiMJCQkJ ICBleGVjdXRhYmxlIG90aGVyd2lzZS4gIG1ha2Ugd2lsbCB0ZXN0IGZvciB0aGUKIwkJCQkgIGV4 aXN0ZW5jZSAoaWYgaXQgaXMgYSBmdWxsIHBhdGhuYW1lKSBvciBzZWFyY2ggZm9yCiMJCQkJICBp dCBpbiB5b3VyICRQQVRIIChpZiBpdCBpcyBhbiBleGVjdXRhYmxlKSBhbmQgZ28KIwkJCQkgIGlu dG8gImRpciIgdG8gZG8gYSAibWFrZSBhbGwgaW5zdGFsbCIgaWYgaXQncyBub3QKIwkJCQkgIGZv dW5kLiAgSWYgdGhlIHRoaXJkIGZpZWxkICgidGFyZ2V0IikgZXhpc3RzLCBpdCB3aWxsCiMJCQkJ ICBiZSB1c2VkIGluc3RlYWQgb2YgJHtERVBFTkRTX1RBUkdFVH0uICBUaGUgZmlyc3QgZmllbGQK IwkJCQkgIGFsc28gc3VwcG9ydHMgYSBwYWNrYWdlIG5hbWUgd2l0aCBhIHZlcnNpb24gcmFuZ2Us IGluCiMJCQkJICB0aGUgZm9ybSBwYWNrYWdlPj0xLjIgaWYgYSBwYXJ0aWN1bGFyIHZlcnNpb24g aXMgZGVzaXJlZC4KIyBCVUlMRF9ERVBFTkRTCS0gQSBsaXN0IG9mICJwYXRoOmRpcls6dGFyZ2V0 XSIgdHVwbGVzIG9mIG90aGVyIHBvcnRzIHRoaXMKIwkJCQkgIHBhY2thZ2UgZGVwZW5kcyB0byBi dWlsZCAoYmV0d2VlbiB0aGUgImV4dHJhY3QiIGFuZAojCQkJCSAgImJ1aWxkIiBzdGFnZXMsIGlu Y2x1c2l2ZSkuICBUaGUgdGVzdCBkb25lIHRvCiMJCQkJICBkZXRlcm1pbmUgdGhlIGV4aXN0ZW5j ZSBvZiB0aGUgZGVwZW5kZW5jeSBpcyB0aGUKIwkJCQkgIHNhbWUgYXMgRkVUQ0hfREVQRU5EUy4g IElmIHRoZSB0aGlyZCBmaWVsZCAoInRhcmdldCIpCiMJCQkJICBleGlzdHMsIGl0IHdpbGwgYmUg dXNlZCBpbnN0ZWFkIG9mICR7REVQRU5EU19UQVJHRVR9LgojIFJVTl9ERVBFTkRTCS0gQSBsaXN0 IG9mICJwYXRoOmRpcls6dGFyZ2V0XSIgdHVwbGVzIG9mIG90aGVyIHBvcnRzIHRoaXMKIwkJCQkg IHBhY2thZ2UgZGVwZW5kcyB0byBydW4uICBUaGUgdGVzdCBkb25lIHRvIGRldGVybWluZQojCQkJ CSAgdGhlIGV4aXN0ZW5jZSBvZiB0aGUgZGVwZW5kZW5jeSBpcyB0aGUgc2FtZSBhcwojCQkJCSAg RkVUQ0hfREVQRU5EUy4gIFRoaXMgd2lsbCBiZSBjaGVja2VkIGR1cmluZyB0aGUKIwkJCQkgICJp bnN0YWxsIiBzdGFnZSBhbmQgdGhlIG5hbWUgb2YgdGhlIGRlcGVuZGVuY3kgd2lsbAojCQkJCSAg YmUgcHV0IGludG8gdGhlIHBhY2thZ2UgYXMgd2VsbC4gIElmIHRoZSB0aGlyZCBmaWVsZAojCQkJ CSAgKCJ0YXJnZXQiKSBleGlzdHMsIGl0IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mCiMJCQkJICAk e0RFUEVORFNfVEFSR0VUfS4gIFRoZSBmaXJzdCBmaWVsZCBhbHNvIHN1cHBvcnRzIGEKIwkJCQkg IHBhY2thZ2UgbmFtZSB3aXRoIGEgdmVyc2lvbiByYW5nZSwgaW4gdGhlIGZvcm0gcGFja2FnZT49 MS4yCiMJCQkJICBpZiBhIHBhcnRpY3VsYXIgdmVyc2lvbiBpcyBkZXNpcmVkLgojIExJQl9ERVBF TkRTCS0gQSBsaXN0IG9mICJsaWI6ZGlyWzp0YXJnZXRdIiB0dXBsZXMgb2Ygb3RoZXIgcG9ydHMg dGhpcwojCQkJCSAgcGFja2FnZSBkZXBlbmRzIG9uLiAgImxpYiIgaXMgdGhlIG5hbWUgb2YgYSBz aGFyZWQgbGlicmFyeS4KIwkJCQkgIG1ha2Ugd2lsbCB1c2UgImxkY29uZmlnIC1yIiB0byBzZWFy Y2ggZm9yIHRoZSBsaWJyYXJ5LgojCQkJCSAgbGliIGNhbiBjb250YWluIGV4dGVuZGVkIHJlZ3Vs YXIgZXhwcmVzc2lvbnMuCiMgREVQRU5EU19UQVJHRVQKIwkJCQktIFRoZSBkZWZhdWx0IHRhcmdl dCB0byBleGVjdXRlIHdoZW4gYSBwb3J0IGlzIGNhbGxpbmcgYQojCQkJCSAgZGVwZW5kZW5jeS4K IwkJCQkgIERlZmF1bHQ6IGluc3RhbGwKIwojIFRoZXNlIHZhcmlhYmxlcyBjb250cm9sIG9wdGlv bnMgYWJvdXQgaG93IGEgcG9ydCBnZXRzIGJ1aWx0IGFuZC9vcgojIGFyZSBzaG9ydGhhbmQgbm90 YXRpb25zIGZvciBjb21tb24gc2V0cyBvZiBkZXBlbmRlbmNpZXMuCiMgVXNlIHRoZXNlIGlmIHlv dXIgcG9ydCB1c2VzIHNvbWUgb2YgdGhlIGNvbW1vbiBzb2Z0d2FyZSBwYWNrYWdlcy4gQnkKIyBj b252ZW50aW9uIHRoZXNlIHNob3VsZCBiZSBzZXQgdG8gJ3llcycsIGFsdGhvdWdoIHRoZXkgb25s eSBuZWVkIHRvIGJlCiMgZGVmaW5lZC4gRGVmYXVsdHM6IG5vdCBzZXQsIHVubGVzcyBleHBsaWNp dGx5IGluZGljYXRlZCBiZWxvdy4KIwojIE5vdGU6IHRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIHRo ZSBVU0VfKiBhbmQgV0FOVF8qIHZhcmlhYmxlcywgYW5kIHRoZQojIFdJVEhfKiBhbmQgV0lUSE9V VF8qIHZhcmlhYmxlcywgYXJlIHRoYXQgdGhlIGZvcm1lciBhcmUgcmVzdHJpY3RlZCB0bwojIHVz YWdlIGluc2lkZSB0aGUgcG9ydHMgZnJhbWV3b3JrLCBhbmQgdGhlIGxhdHRlciBhcmUgcmVzZXJ2 ZWQgZm9yIHVzZXItCiMgc2V0dGFibGUgb3B0aW9ucy4gIChTZXR0aW5nIFVTRV8qIGluIC9ldGMv bWFrZS5jb25mIGlzIGFsd2F5cyB3cm9uZykuCiMKIyBXSVRIX0RFQlVHICAgICAgICAgICAgLSBJ ZiBzZXQsIGRlYnVnZ2luZyBmbGFncyBhcmUgYWRkZWQgdG8gQ0ZMQUdTIGFuZCB0aGUKIyAgICAg ICAgICAgICAgICAgICAgICAgICBiaW5hcmllcyBkb24ndCBnZXQgc3RyaXBwZWQgYnkgSU5TVEFM TF9QUk9HUkFNIG9yCiMgICAgICAgICAgICAgICAgICAgICAgICAgSU5TVEFMTF9MSUIuIEJlc2lk ZXMsIGluZGl2aWR1YWwgcG9ydHMgbWlnaHQKIyAgICAgICAgICAgICAgICAgICAgICAgICBhZGQg dGhlaXIgc3BlY2lmaWMgdG8gcHJvZHVjZSBiaW5hcmllcyBmb3IgZGVidWdnaW5nCiMgICAgICAg ICAgICAgICAgICAgICAgICAgcHVycG9zZXMuIFlvdSBjYW4gb3ZlcnJpZGUgdGhlIGRlYnVnIGZs YWdzIHRoYXQgYXJlCiMgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkIHRvIHRoZSBjb21w aWxlciBieSBzZXR0aW5nIERFQlVHX0ZMQUdTLiBJdCBpcwojICAgICAgICAgICAgICAgICAgICAg ICAgIHNldCB0byAiLWciIGF0IGRlZmF1bHQuCiMKIyBXSVRIX0RFQlVHX1BPUlRTCQktIEEgbGlz dCBvZiBvcmlnaW5zIGZvciB3aGljaCBXSVRIX0RFQlVHIHdpbGwgYmUgc2V0CiMKIyBXSVRIT1VU X1NTUAktIERpc2FibGUgU1NQLgojCiMgU1NQX0NGTEFHUwktIERlZmF1bHRzIHRvIC1mc3RhY2st cHJvdGVjdG9yLiBUaGlzIHZhbHVlCiMJCQkJICBpcyBhZGRlZCB0byBDRkxBR1MgYW5kIHRoZSBu ZWNlc3NhcnkgZmxhZ3MKIwkJCQkgIGFyZSBhZGRlZCB0byBMREZMQUdTLiBOb3RlIHRoYXQgU1NQ X1VOU0FGRQojCQkJCSAgY2FuIGJlIHVzZWQgaW4gTWFrZWZpbGVzIGJ5IHBvcnQgbWFpbnRhaW5l cnMKIwkJCQkgIGlmIGEgcG9ydCBicmVha3Mgd2l0aCBpdCAoaXQgc2hvdWxkIGJlCiMJCQkJICBl eHRyZW1lbHkgcmFyZSkuCiMKIyBVU0VfR0NDCQktIElmIHNldCwgdGhpcyBwb3J0IHJlcXVpcmVz IHRoaXMgdmVyc2lvbiBvZiBnY2MsIGVpdGhlciBpbgojCQkJCSAgdGhlIHN5c3RlbSBvciBpbnN0 YWxsZWQgZnJvbSBhIHBvcnQuCiMgVVNFX0NTVEQJCS0gT3ZlcnJpZGUgdGhlIGRlZmF1bHQgQyBs YW5ndWFnZSBzdGFuZGFyZCAoZ251ODksIGdudTk5KQojIFVTRV9DWFhTVEQJICBPdmVycmlkZSB0 aGUgZGVmYXVsdCBDKysgbGFuZ3VhZ2Ugc3RhbmRhcmQKIyBVU0VfQklOVVRJTFMJLSBVc2UgYmlu dXRpbHMgc3VpdGUgZnJvbSBwb3J0IGluc3RlYWQgb2YgdGhlIHZlcnNpb24gaW4gYmFzZS4KIyBD RkxBR1NfJHtBUkNIfSAgQXBwZW5kIHRoZSBjZmxhZ3MgdG8gQ0ZMQUdTIG9ubHkgb24gdGhlIHNw ZWNpZmllZCBhcmNoaXRlY3R1cmUKIyBDWFhGTEFHU18ke0FSQ0h9CiMJCQkJIEFwcGVuZCB0aGUg Y3h4ZmxhZ3MgdG8gQ1hYRkxBR1Mgb25seSBvbiB0aGUgc3BlY2lmaWVkIGFyY2hpdGVjdHVyZQoj IwojIFVTRV9HSE9TVFNDUklQVAojCQkJCS0gSWYgc2V0LCB0aGlzIHBvcnQgbmVlZHMgZ2hvc3Rz Y3JpcHQgdG8gYm90aAojCQkJCSAgYnVpbGQgYW5kIHJ1bi4gIElmIGEgbnVtYmVyIGlzIHNwZWNp ZmllZCwKIwkJCQkgIHRoZSBzcGVjaWZpZWQgdmVyc2lvbiB3aWxsIGJlIHVzZWQuCiMJCQkJICBU aGUgdmFsaWQgdmFsdWUgaXMgJzcnLCAnOCcsIG9yICc5JyBpbiB0aGF0IGNhc2UuCiMgVVNFX0dI T1NUU0NSSVBUX0JVSUxECiMJCQkJLSBJZiBzZXQsIHRoaXMgcG9ydCBuZWVkcyBnaG9zdHNjcmlw dCB0byBidWlsZC4KIyBVU0VfR0hPU1RTQ1JJUFRfUlVOCiMJCQkJLSBJZiBzZXQsIHRoaXMgcG9y dCBuZWVkcyBnaG9zdHNjcmlwdCB0byBydW4uCiMgR0hPU1RTQ1JJUFRfUE9SVAojCQkJCS0gVGhl IHBvcnQgdGhhdCBwcm92aWRlcyBwb3N0c2NyaXB0IGZ1bmN0aW9uYWxpdHkuCiMJCQkJICBTb21l IGluc3RhbGxhdGlvbnMgbWF5IHdpc2ggdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQKIwkJCQkgIHRv IHNwZWNpZnkgYSB2ZXJzaW9uIHdpdGhvdXQgWDExIGFuZC9vciBsb2NhbGl6ZWQKIwkJCQkgIHZl cnNpb25zIGZvciB0aGVpciBuYXRpb25hbGl0eS4KIwkJCQkgIERlZmF1bHQ6IHByaW50L2dob3N0 c2NyaXB0OQojIFdJVEhfR0hPU1RTQ1JJUFRfVkVSCiMJCQkJLSBJZiBzZXQsIHRoZSBzcGVjaWZp ZWQgdmVyc2lvbiBvZiBnaG9zdHNjcmlwdCB3aWxsIGJlCiMJCQkJICB1c2VkLiAgVGhlIHZhbGlk IHZhbHVlIGlzICI3IiwgIjgiLCBvciAiOSIuICBOb3RlIHRoYXQKIwkJCQkgIHRoaXMgaXMgZm9y IHVzZXJzLCBub3QgZm9yIHBvcnQgbWFpbnRhaW5lcnMuICBUaGlzCiMJCQkJICBzaG91bGQgbm90 IGJlIHVzZWQgaW4gTWFrZWZpbGUuCiMjCiMgVVNFX0dMCQktIEEgbGlzdCBvZiBNZXNhIG9yIEdM IHJlbGF0ZWQgZGVwZW5kZW5jaWVzIG5lZWRlZCBieSB0aGUgcG9ydC4KIwkJCQkgIFN1cHBvcnRl ZCBjb21wb25lbnRzIGFyZTogZWdsLCBnbGVzdjIsIGdsdXQsIGdsdSwgZ2x3LCBhbmQgZ2wuCiMJ CQkJICBJZiBzZXQgdG8gInllcyIsIHRoaXMgaXMgZXF1aXZhbGVudCB0byAiZ2x1Ii4gTm90ZSB0 aGF0CiMJCQkJICBnbGV3IGFuZCBnbHV0IGRlcGVuZCBvbiBnbHUsIGdsdyBhbmQgZ2x1IGRlcGVu ZCBvbiBnbC4KIyMKIyBVU0VfU0RMCQktIElmIHNldCwgdGhpcyBwb3J0IHVzZXMgdGhlIHNkbCBs aWJyYXJpZXMuCiMJCQkJICBTZWUgYnNkLnNkbC5tayBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIyMK IyBVU0VfT1BFTlNTTAktIElmIHNldCwgdGhpcyBwb3J0IHJlbGllcyBvbiB0aGUgT3BlblNTTCBw YWNrYWdlLgojIwojIFVTRV9PUEVOTERBUAktIElmIHNldCwgdGhpcyBwb3J0IHVzZXMgdGhlIE9w ZW5MREFQIGxpYnJhcmllcy4KIwkJCQkgIEltcGxpZXM6IFdBTlRfT1BFTkxEQVBfVkVSPz0yNAoj IFdBTlRfT1BFTkxEQVBfVkVSCiMJCQkJLSBMZWdhbCB2YWx1ZXMgYXJlOiAyMywgMjQKIwkJCQkg IElmIHNldCB0byBhbiB1bmtub3duIHZhbHVlLCB0aGUgcG9ydCBpcyBtYXJrZWQgQlJPS0VOLgoj IFdBTlRfT1BFTkxEQVBfU0FTTAojCQkJCS0gSWYgc2V0LCB0aGUgc3lzdGVtIHNob3VsZCB1c2Ug T3BlbkxEQVAgbGlicmFyaWVzCiMJCQkJICB3aXRoIFNBU0wgc3VwcG9ydC4KIyMKIyBVU0VfQVVU T1RPT0xTCS0gSWYgc2V0LCB0aGlzIHBvcnQgdXNlcyB2YXJpb3VzIEdOVSBhdXRvdG9vbHMKIwkJ CQkgIChsaWJ0b29sLCBhdXRvY29uZiwgYXV0b2hlYWRlciwgYXV0b21ha2UgZXQgYWwuKQojCQkJ CSAgU2VlIGJzZC5hdXRvdG9vbHMubWsgZm9yIG1vcmUgZGV0YWlscy4KIyMKIyBVU0VfRlBDCQkt IElmIHNldCwgdGhpcyBwb3J0IHJlbGllcyBvbiB0aGUgRnJlZSBQYXNjYWwgbGFuZ3VhZ2UuCiMg CQkJCSAgSW1wbGllcyBpbmNsdXNpb24gb2YgYnNkLmZwYy5tay4gIChBbHNvIHNlZQojCQkJCSAg dGhhdCBmaWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIFdBTlRfRlBDXyopLgojIFVTRV9KQVZB CQktIElmIHNldCwgdGhpcyBwb3J0IHJlbGllcyBvbiB0aGUgSmF2YSBsYW5ndWFnZS4KIwkJCQkg IEltcGxpZXMgaW5jbHVzaW9uIG9mIGJzZC5qYXZhLm1rLiAgKEFsc28gc2VlCiMJCQkJICB0aGF0 IGZpbGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gVVNFX0pBVkFfKikuCiMgVVNFX09DQU1MCQkt IElmIHNldCwgdGhpcyBwb3J0IHJlbGllcyBvbiB0aGUgT0NhbWwgbGFuZ3VhZ2UuCiMJCQkJICBJ bXBsaWVzIGluY2x1c2lvbiBvZiBic2Qub2NhbWwubWsuICAoQWxzbyBzZWUKIwkJCQkgIHRoYXQg ZmlsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBVU0VfT0NBTUwqKS4KIyBVU0VfUlVCWQkJLSBJ ZiBzZXQsIHRoaXMgcG9ydCByZWxpZXMgb24gdGhlIFJ1YnkgbGFuZ3VhZ2UuCiMJCQkJICBJbXBs aWVzIGluY2x1c2lvbiBvZiBic2QucnVieS5tay4gIChBbHNvIHNlZQojCQkJCSAgdGhhdCBmaWxl IGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIFVTRV9SVUJZXyopLgojIwojIFVTRV9HRUNLTwkJLSBJ ZiBzZXQsIHRoaXMgcG9ydCB1c2VzIHRoZSBHZWNrby9Nb3ppbGxhIHByb2R1Y3QuCiMJCQkJICBT ZWUgYnNkLmdlY2tvLm1rIGZvciBtb3JlIGRldGFpbHMuCiMjCiMgVVNFX0dOT01FCQktIEEgbGlz dCBvZiB0aGUgR25vbWUgZGVwZW5kZW5jaWVzIHRoZSBwb3J0IGhhcyAoZS5nLiwKIwkJCQkgIGds aWIxMiwgZ3RrMTIpLiAgSW1wbGllcyB0aGF0IHRoZSBwb3J0IG5lZWRzIEdub21lLgojCQkJCSAg SW1wbGllcyBpbmNsdXNpb24gb2YgYnNkLmdub21lLm1rLiAgU2VlIGJzZC5nbm9tZS5tawojCQkJ CSAgb3IgaHR0cDovL3d3dy5GcmVlQlNELm9yZy9nbm9tZS9kb2NzL3BvcnRpbmcuaHRtbAojCQkJ CSAgZm9yIG1vcmUgZGV0YWlscy4KIyMKIyBVU0VfTUFURQkJLSBBIGxpc3Qgb2YgdGhlIE1BVEUg ZGVwZW5kZW5jaWVzIHRoZSBwb3J0IGhhcy4gSW1wbGllcwojCQkJCSAgdGhhdCB0aGUgcG9ydCBu ZWVkcyBNQVRFLiBJbXBsaWVzIGluY2x1c2lvbiBvZgojCQkJCSAgYnNkLm1hdGUubWsuIFNlZSBi c2QubWF0ZS5tayBmb3IgbW9yZSBkZXRhaWxzLgojIwojIFVTRV9XWAkJLSBJZiBzZXQsIHRoaXMg cG9ydCB1c2VzIHRoZSBXeFdpZGdldHMgbGlicmFyeSBhbmQgcmVsYXRlZAojCQkJCSAgY29tcG9u ZW50cy4gU2VlIGJzZC53eC5tayBmb3IgbW9yZSBkZXRhaWxzLgojIwojIFVTRV9LREU0CQktIEEg bGlzdCBvZiB0aGUgS0RFIDQgZGVwZW5kZW5jaWVzIHRoZSBwb3J0IGhhcyAoZS5nLiwKIwkJCQkg IGtkZWxpYnMsIGtkZWJhc2UpLiAgSW1wbGllcyB0aGF0IHRoZSBwb3J0IG5lZWRzIEtERS4KIwkJ CQkgIEltcGxpZXMgaW5jbHVzaW9uIG9mIGJzZC5rZGU0Lm1rLiAgU2VlIGJzZC5rZGU0Lm1rCiMJ CQkJICBmb3IgbW9yZSBkZXRhaWxzLgojCiMgVVNFX1FUNAkJLSBBIGxpc3Qgb2YgdGhlIFF0IDQg ZGVwZW5kZW5jaWVzIHRoZSBwb3J0IGhhcyAoZS5nLAojCQkJCSAgY29yZWxpYiwgd2Via2l0KS4g IEltcGxpZXMgdGhhdCB0aGUgcG9ydCBuZWVkcyBRdC4KIwkJCQkgIEltcGxpZXMgdGhlIGluY2x1 c2lvbiBvZiBic2QucXQubWsuICBTZWUgYnNkLnF0Lm1rCiMJCQkJICBmb3IgbW9yZSBkZXRhaWxz LgojCiMgVVNFX1FUNQkJLSBBIGxpc3Qgb2YgdGhlIFF0IDUgZGVwZW5kZW5jaWVzIHRoZSBwb3J0 IGhhcyAoZS5nLAojCQkJCSAgY29yZSwgd2Via2l0KS4gIEltcGxpZXMgdGhhdCB0aGUgcG9ydCBu ZWVkcyBRdC4KIwkJCQkgIEltcGxpZXMgdGhlIGluY2x1c2lvbiBvZiBic2QucXQubWsuICBTZWUg YnNkLnF0Lm1rCiMJCQkJICBmb3IgbW9yZSBkZXRhaWxzLgojCiMgVVNFX0xJTlVYCQktIFNldCB0 byB5ZXMgdG8gc2F5IHRoZSBwb3J0IG5lZWRzIHRoZSBkZWZhdWx0IGxpbnV4IGJhc2UgcG9ydC4K IwkJCQkgIFNldCB0byB2YWx1ZSA8WD4sIGlmIHRoZSBwb3J0IG5lZWRzIGVtdWxhdG9ycy9saW51 eF9iYXNlLTxYPi4KIwkJCQkgIEltcGxpZXMgYXBwcm9wcmlhdGUgc2V0dGluZ3MgZm9yIFNUUklQ IGFuZCBTVFJJUF9DTUQuCiMgVVNFX0xJTlVYX1BSRUZJWAojCQkJCS0gY29udHJvbHMgdGhlIGFj dGlvbiBvZiBQUkVGSVggKHNlZSBhYm92ZSkuIE9ubHkgdXNlIHRoaXMKIwkJCQkgIGlmIHRoZSBw b3J0IGlzIGEgbGludXggaW5mcmFzdHJ1Y3R1cmUgcG9ydCAoZS5nLiBjb250YWlucyBsaWJzCiMJ CQkJICBvciBhIHNvdW5kIHNlcnZlciB3aGljaCBzdXBwb3J0cyB0aGUgRnJlZUJTRCBuYXRpdmUg b25lKSwKIwkJCQkgIHVzZSB0aGUgZGVmYXVsdCBvciB0aGUgWDExIHByZWZpeCBpZiBpdCdzIGEg bGVhZiBwb3J0CiMJCQkJICAoZS5nLiBhIGdhbWUgb3IgcHJvZ3JhbSkuCiMJCQkJICBJbXBsaWVz IE5PX01UUkVFPXllcywgYW5kLCBpZiBVU0VfTERDT05GSUcgaXMgZGVmaW5lZDoKIwkJCQkgICAg LSBVU0VfTElOVVg9eWVzCiMJCQkJICAgIC0gYXBwcm9wcmlhdGUgaW52b2NhdGlvbiBvZiB0aGUg TGludXggbGRjb25maWcKIyBVU0VfTElOVVhfUlBNCS0gU2V0IHRvIHllcyB0byBwdWxsIGluIHZh cmlhYmxlcyBhbmQgdGFyZ2V0cyB1c2VmdWwgdG8gTGludXgKIwkJCQkgIFJQTSBwb3J0cy4KIwkJ CQkgIEltcGxpZXMgaW5jbHVzaW9uIG9mIGJzZC5saW51eC1ycG0ubWsuCiMKIyBMSU5VWF9PU1JF TEVBU0UJLSBDb250YWlucyB0aGUgdmFsdWUgb2YgY29tcGF0LmxpbnV4Lm9zcmVsZWFzZSBzeXNj dGwuCiMJCQkJICBXaWxsIGJlIHVzZWQgdG8gZGlzdGluZ3Vpc2ggd2hpY2ggbGludXgKIwkJCQkg IGluZnJhc3RydWN0dXJlIHBvcnRzIHNob3VsZCBiZSB1c2VkLgojCQkJCSAgVmFsaWQgdmFsdWVz OiAyLjYuMTYuCiMKIyBPVkVSUklERV9MSU5VWF9CQVNFX1BPUlQKIwkJCQktIFRoaXMgc3BlY2lm aWVzIHRoZSBkZWZhdWx0IGxpbnV4IGJhc2UgdG8gdXNlLCBmb3IgdmFsaWQKIwkJCQkgIHZhbHVl cyBoYXZlIGEgbG9vayBhdCB0aGUgZGVzY3JpcHRpb24gb2YgVVNFX0xJTlVYLiBUaGlzIGlzCiMJ CQkJICBhbiB1c2VyLW9ubHkgdmFyaWFibGUuIERvbid0IHVzZSBpdCBpbiBhbnkgcG9ydCwgaXQn cyBtZWFudAojCQkJCSAgdG8gYmUgdXNlZCBpbiBtYWtlLmNvbmYuCiMKIyBMSU5VWF9CQVNFX1BP UlQKIwkJCQktIFRoaXMgaXMgYSByZWFkLW9ubHkgdmFyaWFibGUsIGl0IGdldHMgc2V0IHRvIGEg dmFsdWUgd2hpY2ggaXMKIwkJCQkgIHVzYWJsZSBpbiAqX0RFUEVORFMgKGUuZy4gQlVJTERfREVQ RU5EUz0ke0xJTlVYX0JBU0VfUE9SVH0pLgojCQkJCSAgSXQgaG9ub3JzIFVTRV9MSU5VWD1mb28g YW5kIE9WRVJSSURFX0xJTlVYX0JBU0VfUE9SVC4KIyMKIyBVU0VfWE9SRwkJCS0gU2V0IHRvIGEg bGlzdCBvZiBYLm9yZyBtb2R1bGUgZGVwZW5kZW5jaWVzLgojCQkJCSAgSW1wbGllcyBpbmNsdXNp b24gb2YgYnNkLnhvcmcubWsuCiMjCiMgVVNFX1RFWAkJCS0gQSBsaXN0IG9mIHRoZSBUZVggZGVw ZW5kZW5jaWVzIHRoZSBwb3J0IGhhcy4KIwojIwojIFVTRV9SQ19TVUJSCS0gSWYgc2V0LCB0aGUg cG9ydHMgc3RhcnR1cC9zaHV0ZG93biBzY3JpcHQgdXNlcyB0aGUgY29tbW9uCiMJCQkJICByb3V0 aW5lcyBmb3VuZCBpbiAvZXRjL3JjLnN1YnIuCiMJCQkJICBJZiB0aGlzIGlzIHNldCB0byBhIGxp c3Qgb2YgZmlsZXMsIHRoZXNlIGZpbGVzIHdpbGwgYmUKIwkJCQkgIGF1dG9tYXRpY2FsbHkgYWRk ZWQgdG8gJHtTVUJfRklMRVN9LCBzb21lICUlVkFSJSUncyB3aWxsCiMJCQkJICBhdXRvbWF0aWNh bGx5IGJlIGV4cGFuZGVkLCB0aGV5IHdpbGwgYmUgaW5zdGFsbGVkIGluCiMJCQkJICAke1BSRUZJ WH0vZXRjL3JjLmQgaWYgJHtQUkVGSVh9IGlzIG5vdCAvdXNyLCBvdGhlcndpc2UgdGhleQojCQkJ CSAgd2lsbCBiZSBpbnN0YWxsZWQgaW4gL2V0Yy9yYy5kLyBhbmQgYWRkZWQgdG8gdGhlIHBhY2tp bmcgbGlzdC4KIyMKIyBVU0VfQVBBQ0hFCS0gSWYgc2V0LCB0aGlzIHBvcnQgcmVsaWVzIG9uIGFu IGFwYWNoZSB3ZWJzZXJ2ZXIuCiMKIyBDb25mbGljdCBjaGVja2luZy4gIFVzZSBpZiB5b3VyIHBv cnQgY2Fubm90IGJlIGluc3RhbGxlZCBhdCB0aGUgc2FtZSB0aW1lIGFzCiMgYW5vdGhlciBwYWNr YWdlLgojCiMgQ09ORkxJQ1RTCQktIEEgbGlzdCBvZiBwYWNrYWdlIG5hbWUgcGF0dGVybnMgdGhh dCB0aGUgcG9ydCBjb25mbGljdHMKIwkJCQkgIHdpdGgsIHNlcGFyYXRlZCBieSBibGFua3MuICBU aGUgbmFtZXMgbWF5IGluY2x1ZGUgc2hlbGwKIwkJCQkgIHBhdHRlcm4gbWV0YS1jaGFyYWN0ZXJz ICIqIiwgIj8iLCAiWyIsICJdIiwgYW5kICIhIi4KIwkJCQkgIEV4YW1wbGU6IGFwYWNoZSotMS4y KiBhcGFjaGUqLTEuMy5bMDEyMzQ1XSBhcGFjaGUtKitzc2xfKgojCiMgQ09ORkxJQ1RTX0JVSUxE CiMJCQkJLSBDaGVjayBjb25mbGljdCBwcmlvciB0byB0aGUgYnVpbGQuCiMKIyBDT05GTElDVFNf SU5TVEFMTAojCQkJCS0gQ2hlY2sgY29uZmxpY3QgcHJpb3IgdG8gdGhlIGluc3RhbGxhdGlvbiBz dGFnZS4KIwojIFZhcmlvdXMgZGlyZWN0b3J5IGRlZmluaXRpb25zIGFuZCB2YXJpYWJsZXMgdG8g Y29udHJvbCB0aGVtLgojIFlvdSByYXJlbHkgbmVlZCB0byByZWRlZmluZSBhbnkgb2YgdGhlc2Ug ZXhjZXB0IFdSS1NSQyBhbmQgTk9fV1JLU1VCRElSLgojCiMgTE9DQUxCQVNFCQktIFdoZXJlIHBv cnRzIGluc3RhbGwgdGhpbmdzLgojCQkJCSAgRGVmYXVsdDogL3Vzci9sb2NhbAojIExJTlVYQkFT RQkJLSBXaGVyZSBMaW51eCBwb3J0cyBpbnN0YWxsIHRoaW5ncy4KIwkJCQkgIERlZmF1bHQ6IC9j b21wYXQvbGludXgKIyBQUkVGSVgJCS0gV2hlcmUgKnRoaXMqIHBvcnQgaW5zdGFsbHMgaXRzIGZp bGVzLgojCQkJCSAgRGVmYXVsdDogJHtMSU5VWEJBU0V9IGlmIFVTRV9MSU5VWF9QUkVGSVggaXMg c2V0LAojCQkJCSAgb3RoZXJ3aXNlICR7TE9DQUxCQVNFfQojCiMgSUdOT1JFX1BBVEhfQ0hFQ0tT CiMJCQkJLSBUaGVyZSBhcmUgc29tZSBzYW5pdHkgY2hlY2tzIGFnYWluc3QgUFJFRklYLgojCQkJ CSAgWW91IGNhbiBkaXNhYmxlIHRoZXNlIGNoZWNrcyB3aXRoIGRlZmluaW5nCiMJCQkJICB0aGlz IHZhcmlhYmxlLCBidXQgdGhpcyBpcyBub3QgcmVjb21tZW5kZWQhCiMJCQkJICBPbmx5IGRvIHRo aXMgaWYgeW91IHJlYWxseSBrbm93IHdoYXQgeW91IGFyZQojCQkJCSAgZG9pbmcuICBUaGVzZSBz YW5pdHkgY2hlY2tzIGFyZSB0aGUgZm9sbG93aW5nOgojCQkJCSAgICAtIFBSRUZJWCBoYXMgdG8g YmUgYW4gYWJzb2x1dGUgcGF0aC4KIwkJCQkgICAgLSBQUkVGSVggY2FuJ3QgaGF2ZSBhIHRyYWls aW5nIHNsYXNoLgojCiMgQlVORExFX0xJQlMJICBUZWFjaCBwa2coOCkgdG8gbm90IGF1dG9tYXRp Y2FsbHkgYWRkIGFsbCBzaGFyZWQgbGlicmFyaWVzCiMgCQkJCSAgaW5zdGFsbGVkIGJ5IGEgcG9y dCBhcyBzaGFyZWQgbGlicmFyaWVzICJwcm92aWRlZCIgZm9yCiMJCQkJICBvdGhlciBwYWNrYWdl cyAoaS5lLiwgZG8gbm90IGV4cG9zZSB0aGVtIGluIHRoZSBzb2x2ZXIpLgojCQkJCSAgVGhpcyBo YXMgdG8gYmUgdXNlZCBmb3IgcG9ydHMgdGhhdCBidW5kbGUgdGhpcmQgcGFydHkKIwkJCQkgIGxp YnJhcmllcyBmb3IgaW50ZXJuYWwgdXNhZ2UuCiMgTUFTVEVSRElSCQktIFdoZXJlIHRoZSBwb3J0 IGZpbmRzIHBhdGNoZXMsIHBhY2thZ2UgZmlsZXMsIGV0Yy4gIERlZmluZQojCQkJCSAgdGhpcyBp cyB5b3UgaGF2ZSB0d28gb3IgbW9yZSBwb3J0cyB0aGF0IHNoYXJlIG1vc3Qgb2YgdGhlCiMJCQkJ ICBmaWxlcy4KIwkJCQkgIERlZmF1bHQ6ICR7LkNVUkRJUn0KIyBQT1JUU0RJUgkJLSBUaGUgcm9v dCBvZiB0aGUgcG9ydHMgdHJlZS4KIwkJCQkgIERlZmF1bHQ6IC91c3IvcG9ydHMKIyBESVNURElS CQktIFdoZXJlIHRvIHNlYXJjaCBmb3IgYW5kIHN0b3JlIGNvcGllcyBvZiBvcmlnaW5hbCBzb3Vy Y2VzCiMJCQkJICBEZWZhdWx0OiAke1BPUlRTRElSfS9kaXN0ZmlsZXMKIyBQQUNLQUdFUwkJLSBB IHRvcCBsZXZlbCBkaXJlY3Rvcnkgd2hlcmUgYWxsIHBhY2thZ2VzIGdvIChyYXRoZXIgdGhhbgoj CQkJCSAgZ29pbmcgbG9jYWxseSB0byBlYWNoIHBvcnQpLgojCQkJCSAgRGVmYXVsdDogJHtQT1JU U0RJUn0vcGFja2FnZXMKIyBXUktESVJQUkVGSVgJLSBUaGUgcGxhY2UgdG8gcm9vdCB0aGUgdGVt cG9yYXJ5IHdvcmtpbmcgZGlyZWN0b3J5CiMJCQkJICBoaWVyYXJjaHkuCiMJCQkJICBEZWZhdWx0 OiBub25lCiMgV1JLRElSCQktIEEgdGVtcG9yYXJ5IHdvcmtpbmcgZGlyZWN0b3J5IHRoYXQgZ2V0 cyAqY2xvYmJlcmVkKiBvbiBjbGVhbgojCQkJCSAgRGVmYXVsdDogJHtXUktESVJQUkVGSVh9JHsu Q1VSRElSfS93b3JrCiMgV1JLU1JDCQktIEEgc3ViZGlyZWN0b3J5IG9mICR7V1JLRElSfSB3aGVy ZSB0aGUgZGlzdHJpYnV0aW9uIGFjdHVhbGx5CiMJCQkJICB1bnBhY2tzIHRvLgojCQkJCSAgRGVm YXVsdDogJHtXUktESVJ9LyR7RElTVE5BTUV9IHVubGVzcyBOT19XUktTVUJESVIgaXMgc2V0LAoj CQkJCSAgaW4gd2hpY2ggY2FzZSBzaW1wbHkgJHtXUktESVJ9CiMgV1JLU1JDX1NVQkRJUgktIEEg c3ViZGlyZWN0b3J5IG9mICR7V1JLU1JDfSB3aGVyZSB0aGUgZGlzdHJpYnV0aW9uIGFjdHVhbGx5 CiMJCQkJICBidWlsZHMgaW4uCiMJCQkJICBEZWZhdWx0OiBub3Qgc2V0CiMgTk9fV1JLU1VCRElS CS0gQXNzdW1lIHBvcnQgdW5wYWNrcyBkaXJlY3RseSBpbnRvICR7V1JLRElSfS4KIyBQQVRDSERJ UgkJLSBBIGRpcmVjdG9yeSBjb250YWluaW5nIGFueSBhZGRpdGlvbmFsIHBhdGNoZXMgeW91IG1h ZGUKIwkJCQkgIHRvIHBvcnQgdGhpcyBzb2Z0d2FyZSB0byBGcmVlQlNELgojCQkJCSAgRGVmYXVs dDogJHtNQVNURVJESVJ9L2ZpbGVzCiMgU0NSSVBURElSCQktIEEgZGlyZWN0b3J5IGNvbnRhaW5p bmcgYW55IGF1eGlsaWFyeSBzY3JpcHRzCiMJCQkJICBEZWZhdWx0OiAke01BU1RFUkRJUn0vc2Ny aXB0cwojIEZJTEVTRElSCQktIEEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgYW55IG1pc2NlbGxhbmVv dXMgYWRkaXRpb25hbCBmaWxlcy4KIwkJCQkgIERlZmF1bHQ6ICR7TUFTVEVSRElSfS9maWxlcwoj IFBLR0RJUgkJLSBBIGRpcmVjdG9yeSBjb250YWluaW5nIGFueSBwYWNrYWdlIGNyZWF0aW9uIGZp bGVzLgojCQkJCSAgRGVmYXVsdDogJHtNQVNURVJESVJ9CiMgU1JDX0JBU0UJCS0gVGhlIHJvb3Qg b2YgdGhlIHNyYyB0cmVlLiAgKFNvbWUgcG9ydHMgcmVxdWlyZSB0aGlzIHRvIGdldAojCQkJCSAg a2VybmVsIHNvdXJjZXMpLiAgRGVmYXVsdDogL3Vzci9zcmMKIyBVSURfRklMRVMJCS0gQSBsaXN0 IG9mIGZpbGVzIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgcmVnaXN0ZXJlZCBVSURzLgoj IAkJCQkgIE5vdGUgdGhhdCBmaWxlcyBoYXZlIGRlY3JlYXNpbmcgcHJpb3JpdHkuCiMgR0lEX0ZJ TEVTCQktIEEgbGlzdCBvZiBmaWxlcyBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHJlZ2lz dGVyZWQgR0lEcy4KIyAJCQkJICBOb3RlIHRoYXQgZmlsZXMgaGF2ZSBkZWNyZWFzaW5nIHByaW9y aXR5LgojCiMgVmFyaWFibGVzIHRoYXQgc2VydmUgYXMgY29udmVuaWVudCAiYWxpYXNlcyIgZm9y IHlvdXIgKi1pbnN0YWxsIHRhcmdldHMuCiMgVXNlIHRoZXNlIGxpa2U6ICIke0lOU1RBTExfUFJP R1JBTX0gJHtXUktTUkN9L3Byb2cgJHtQUkVGSVh9L2JpbiIuCiMKIyBJTlNUQUxMX1BST0dSQU0K IwkJCQktIEEgY29tbWFuZCB0byBpbnN0YWxsIGJpbmFyeSBleGVjdXRhYmxlcy4gIChCeQojCQkJ CSAgZGVmYXVsdCwgYWxzbyBzdHJpcHMgdGhlbSwgdW5sZXNzICR7U1RSSVB9IGlzCiMJCQkJICBv dmVycmlkZGVuIHRvIGJlIHRoZSBlbXB0eSBzdHJpbmcpLgojIElOU1RBTExfS0xECS0gQXMgSU5T VEFMTF9QUk9HUkFNLCBidXQgd2l0aG91dCB0aGUgU1RSSVAuCiMgSU5TVEFMTF9MSUIJLSBBcyBJ TlNUQUxMX0RBVEEsIGJ1dCBhbHNvIHN0cmlwcyB0aGUgZmlsZS4KIyBJTlNUQUxMX1NDUklQVAoj CQkJCS0gQSBjb21tYW5kIHRvIGluc3RhbGwgZXhlY3V0YWJsZSBzY3JpcHRzLgojIElOU1RBTExf REFUQQktIEEgY29tbWFuZCB0byBpbnN0YWxsIHNoYXJhYmxlIGRhdGEuCiMgSU5TVEFMTF9NQU4J LSBBIGNvbW1hbmQgdG8gaW5zdGFsbCBtYW5wYWdlcy4KIyBDT1BZVFJFRV9CSU4KIyBDT1BZVFJF RV9TSEFSRQojCQkJCS0gU2ltaWxpYXIgdG8gSU5TVEFMTF9QUk9HUkFNIGFuZCBJTlNUQUxMX0RB VEEgY29tbWFuZHMgYnV0CiMJCQkJICB3b3JraW5nIG9uIHdob2xlIHRyZWVzIG9mIGRpcmVjdG9y aWVzLCB0YWtlcyAzIGFyZ3VtZW50cywKIwkJCQkgIGxhc3Qgb25lIGlzIGZpbmQoMSkgYXJndW1l bnRzIGFuZCBvcHRpb25hbC4KIwkJCQkgIEV4YW1wbGUgdXNlOiAKIwkJCQkgIGNkICR7V1JLU1JD fS9kb2MgJiYgJHtDT1BZVFJFRV9TSEFSRX0gLiAke0RPQ1NESVJ9ICIhIC1uYW1lICpcLmJhayIK IwojCQkJCSAgSW5zdGFsbHMgYWxsIGRpcmVjdG9yaWVzIGFuZCBmaWxlcyBmcm9tICR7V1JLU1JD fS9kb2MKIwkJCQkgIHRvICR7RE9DU0RJUn0gZXhjZXB0IHNlZCBiYWNrdXAgZmlsZXMuCiMKIyBN QU5QUkVGSVgJCS0gVGhlIGRpcmVjdG9yeSBwcmVmaXggZm9yICR7TUFOPHNlY3Q+fSBhbmQgJHtN TElOS1N9LgojCQkJCSAgRGVmYXVsdDogJHtQUkVGSVh9CiMgTUFOPHNlY3Q+UFJFRklYCiMJCQkJ LSBJZiBtYW51YWwgcGFnZXMgb2Ygc29tZSBzZWN0aW9ucyBpbnN0YWxsIGluIGRpZmZlcmVudAoj CQkJCSAgbG9jYXRpb25zIHRoYW4gb3RoZXJzLCB1c2UgdGhlc2UuCiMJCQkJICBEZWZhdWx0OiAk e01BTlBSRUZJWH0KIwojIFNldCB0aGUgZm9sbG93aW5nIHRvIHNwZWNpZnkgYWxsIC5pbmZvIGZp bGVzIHlvdXIgcG9ydCBpbnN0YWxscy4KIwojIElORk8JCQktIEEgbGlzdCBvZiAuaW5mbyBmaWxl cyAob21pdHRpbmcgdGhlIHRyYWlsaW5nICIuaW5mbyIpOwojCQkJCSAgb25seSBvbmUgZW50cnkg cGVyIGRvY3VtZW50ISBUaGVzZSBmaWxlcyBhcmUgbGlzdGVkIGluCiMJCQkJICB0aGUgcGF0aCBy ZWxhdGl2ZSB0byAke0lORk9fUEFUSH0uCiMgSU5GT19QQVRICQktIFBhdGgsIHdoZXJlIGFsbCAu aW5mbyBmaWxlcyB3aWxsIGJlIGluc3RhbGxlZCBieSB5b3VyCiMJCQkJICBwb3J0LCByZWxhdGl2 ZSB0byAke1BSRUZJWH0KIwkJCQkgIERlZmF1bHQ6ICJzaGFyZS9pbmZvIiBpZiAke1BSRUZJWH0g aXMgZXF1YWwgdG8gL3VzcgojCQkJCSAgYW5kICJpbmZvIiBvdGhlcndpc2UuCiMKIyBTZXQgdGhl IGZvbGxvd2luZyB0byBzcGVjaWZ5IGFsbCBkb2N1bWVudGF0aW9uIHlvdXIgcG9ydCBpbnN0YWxs cyBpbnRvCiMgJHtET0NTRElSfQojCiMgUE9SVERPQ1MJCS0gQSBsaXN0IG9mIGZpbGVzIGFuZCBk aXJlY3RvcmllcyByZWxhdGl2ZSB0byBET0NTRElSLgojCQkJCSAgU2hlbGwgZ2xvYiBwYXR0ZXJu cyBjYW4gYmUgdXNlZCwgZGlyZWN0b3JpZXMgaW5jbHVkZQojCQkJCSAgdGhlIGVudGlyZSBzdWJ0 cmVlIG9mIGNvbnRhaW5lZCBmaWxlcyBhbmQgZGlyZWN0b3JpZXMuCiMJCQkJICBTaG91bGQgbm90 IGJlIHNldCB3aGVuIG5vIGRvY3VtZW50YXRpb24gZmlsZXMgYXJlCiMJCQkJICBpbnN0YWxsZWQu CiMJCQkJICBVc2VmdWwgZm9yIGR5bmFtaWNhbGx5IGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLgoj CiMgU2V0IHRoZSBmb2xsb3dpbmcgdG8gc3BlY2lmeSBhbGwgZG9jdW1lbnRhdGlvbiB5b3VyIHBv cnQgaW5zdGFsbHMgaW50bwojICR7RVhBTVBMRVNESVJ9CiMKIyBQT1JURVhBTVBMRVMJCS0gQSBs aXN0IG9mIGZpbGVzIGFuZCBkaXJlY3RvcmllcyByZWxhdGl2ZSB0byBFWEFNUExFU0RJUi4KIwkJ CQkgIFNoZWxsIGdsb2IgcGF0dGVybnMgY2FuIGJlIHVzZWQsIGRpcmVjdG9yaWVzIGluY2x1ZGUK IwkJCQkgIHRoZSBlbnRpcmUgc3VidHJlZSBvZiBjb250YWluZWQgZmlsZXMgYW5kIGRpcmVjdG9y aWVzLgojCQkJCSAgU2hvdWxkIG5vdCBiZSBzZXQgd2hlbiBubyBleGFtcGxlcyBmaWxlcyBhcmUK IwkJCQkgIGluc3RhbGxlZC4KIwkJCQkgIFVzZWZ1bCBmb3IgZHluYW1pY2FsbHkgZ2VuZXJhdGVk IGV4YW1wbGVzLgojCiMgU2V0IHRoZSBmb2xsb3dpbmcgdG8gc3BlY2lmeSBhbGwgZmlsZXMgYW5k IGRpcmVjdG9yaWVzIHlvdXIgcG9ydCBpbnN0YWxscyBpbnRvCiMgJHtEQVRBRElSfQojCiMgUE9S VERBVEEJCS0gQSBsaXN0IG9mIGZpbGVzIGFuZCBkaXJlY3RvcmllcyByZWxhdGl2ZSB0byBEQVRB RElSLgojCQkJCSAgU2hlbGwgZ2xvYiBwYXR0ZXJucyBjYW4gYmUgdXNlZCwgZGlyZWN0b3JpZXMg aW5jbHVkZQojCQkJCSAgdGhlIGVudGlyZSBzdWJ0cmVlIG9mIGNvbnRhaW5lZCBmaWxlcyBhbmQg ZGlyZWN0b3JpZXMuCiMJCQkJICBTaG91bGQgbm90IGJlIHNldCB3aGVuIG5vIGRhdGEgZmlsZXMg YXJlCiMJCQkJICBpbnN0YWxsZWQuCiMJCQkJICBVc2VmdWwgZm9yIGR5bmFtaWNhbGx5IGdlbmVy YXRlZCBkYXRhIGZpbGVzLgojCiMgRGVmYXVsdCB0YXJnZXRzIGFuZCB0aGVpciBiZWhhdmlvcnM6 CiMKIyBmZXRjaAkJCS0gUmV0cmlldmVzIG1pc3NpbmcgJHtESVNURklMRVN9IGFuZCAke1BBVENI RklMRVN9IGZvciB0aGlzCiMJCQkJICBwb3J0LgojIGZldGNoLWxpc3QJLSBTaG93IGxpc3Qgb2Yg Y29tbWFuZHMgdG8gcmV0cmlldmUgbWlzc2luZyAke0RJU1RGSUxFU30gYW5kCiMJCQkJICAke1BB VENIRklMRVN9IGZvciB0aGlzIHBvcnQuCiMgZmV0Y2gtcmVjdXJzaXZlCiMJCQkJLSBSZXRyaWV2 ZXMgbWlzc2luZyAke0RJU1RGSUxFU30gYW5kICR7UEFUQ0hGSUxFU30gZm9yIHRoaXMKIwkJCQkg IHBvcnQgYW5kIGRlcGVuZGVuY2llcy4KIyBmZXRjaC1yZWN1cnNpdmUtbGlzdAojCQkJCS0gU2hv dyBsaXN0IG9mIGNvbW1hbmRzIHRvIHJldHJpZXZlIG1pc3NpbmcgJHtESVNURklMRVN9IGFuZAoj CQkJCSAgJHtQQVRDSEZJTEVTfSBmb3IgdGhpcyBwb3J0IGFuZCBkZXBlbmRlbmNpZXMuCiMgZmV0 Y2gtcmVxdWlyZWQKIwkJCQktIFJldHJpZXZlcyBtaXNzaW5nICR7RElTVEZJTEVTfSBhbmQgJHtQ QVRDSEZJTEVTfSBmb3IgdGhpcwojCQkJCSAgcG9ydCBhbmQgZGVwZW5kZW5jaWVzLgojIGZldGNo LXJlcXVpcmVkLWxpc3QKIwkJCQktIFNob3cgbGlzdCBvZiBjb21tYW5kcyB0byByZXRyaWV2ZSBt aXNzaW5nICR7RElTVEZJTEVTfSBhbmQKIwkJCQkgICR7UEFUQ0hGSUxFU30gZm9yIHRoaXMgcG9y dCBhbmQgZGVwZW5kZW5jaWVzLgojIGZldGNoLXVybC1saXN0CiMJCQkJLSBTaG93IGxpc3Qgb2Yg VVJMUyB0byByZXRyaWV2ZSBtaXNzaW5nICR7RElTVEZJTEVTfSBhbmQKIwkJCQkgICR7UEFUQ0hG SUxFU30gZm9yIHRoaXMgcG9ydC4KIyBmZXRjaC11cmxhbGwtbGlzdAojCQkJCS0gU2hvdyBsaXN0 IG9mIFVSTFMgdG8gcmV0cmlldmUgJHtESVNURklMRVN9IGFuZAojCQkJCSAgJHtQQVRDSEZJTEVT fSBmb3IgdGhpcyBwb3J0LgojCiMgYWxsLWRlcGVuZHMtbGlzdAojCQkJCS0gU2hvdyBhbGwgZGly ZWN0b3JpZXMgd2hpY2ggYXJlIGRlcGVuZGVuY2llcwojCQkJCSAgZm9yIHRoaXMgcG9ydC4KIyBi dWlsZC1kZXBlbmRzLWxpc3QKIwkJCQktIFNob3cgYWxsIGRpcmVjdG9yaWVzIHdoaWNoIGFyZSBi dWlsZC1kZXBlbmRlbmNpZXMKIwkJCQkgIGZvciB0aGlzIHBvcnQuCiMgcGFja2FnZS1kZXBlbmRz LWxpc3QKIwkJCQktIFNob3cgYWxsIGRpcmVjdG9yaWVzIHdoaWNoIGFyZSBwYWNrYWdlLWRlcGVu ZGVuY2llcwojCQkJCSAgZm9yIHRoaXMgcG9ydC4gVGhpcyBpcyBiYXNlZCB1cG9uIHRoZSBkZXBl bmRlbmN5CiMJCQkJICB0cmVlIGFzIHJlY29yZGVkIGluIHRoZSBNYWtlZmlsZXMgb2YgdGhlIHBv cnRzCiMJCQkJICBjb2xsZWN0aW9uLCBub3QgYXMgcmVjb3JkZWQgaW4gdGhlIGN1cnJlbnRseQoj CQkJCSAgaW5zdGFsbGVkIHBvcnRzLgojIGFjdHVhbC1wYWNrYWdlLWRlcGVuZHMKIwkJCQktIExp a2UgcGFja2FnZS1kZXBlbmRzLWxpc3QgYnV0IHdpdGggdGhlIGRpZmZlcmVuY2UKIwkJCQkgIHRo YXQgdGhlIGRlcGVuZGVuY2llcyBvZiB0aGUgY3VycmVudGx5IGluc3RhbGxlZAojCQkJCSAgcG9y dHMgYXJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgZGVwZW5kZW5jaWVzIGFzCiMJCQkJICByZWNvcmRl ZCBpbiB0aGUgcG9ydHMgY29sbGVjdGlvbi4KIyBydW4tZGVwZW5kcy1saXN0CiMJCQkJLSBTaG93 IGFsbCBkaXJlY3RvcmllcyB3aGljaCBhcmUgcnVuLWRlcGVuZGVuY2llcwojCQkJCSAgZm9yIHRo aXMgcG9ydC4KIwojIGV4dHJhY3QJCS0gVW5wYWNrcyAke0RJU1RGSUxFU30gaW50byAke1dSS0RJ Un0uCiMgcGF0Y2gJCQktIEFwcGx5IGFueSBwcm92aWRlZCBwYXRjaGVzIHRvIHRoZSBzb3VyY2Uu CiMgY29uZmlndXJlCQktIFJ1bnMgZWl0aGVyIEdOVSBjb25maWd1cmUsIG9uZSBvciBtb3JlIGxv Y2FsIGNvbmZpZ3VyZQojCQkJCSAgc2NyaXB0cyBvciBub3RoaW5nLCBkZXBlbmRpbmcgb24gd2hh dCdzIGF2YWlsYWJsZS4KIyBidWlsZAkJCS0gQWN0dWFsbHkgY29tcGlsZSB0aGUgc291cmNlcy4K IyBpbnN0YWxsCQktIEluc3RhbGwgdGhlIHJlc3VsdHMgb2YgYSBidWlsZC4KIyByZWluc3RhbGwJ CS0gSW5zdGFsbCB0aGUgcmVzdWx0cyBvZiBhIGJ1aWxkLCBpZ25vcmluZyAiYWxyZWFkeSBpbnN0 YWxsZWQiCiMJCQkJICBmbGFnLgojIGRlaW5zdGFsbAkJLSBSZW1vdmUgdGhlIGluc3RhbGxhdGlv bi4KIyBkZWluc3RhbGwtYWxsCS0gUmVtb3ZlIGFsbCBpbnN0YWxsYXRpb25zIHdpdGggdGhlIHNh bWUgUEtHT1JJR0lOLgojIHBhY2thZ2UJCS0gQ3JlYXRlIGEgcGFja2FnZSBmcm9tIGFuIF9pbnN0 YWxsZWRfIHBvcnQuCiMgcGFja2FnZS1yZWN1cnNpdmUKIwkJCQktIENyZWF0ZSBhIHBhY2thZ2Ug Zm9yIGEgcG9ydCBhbmQgX2FsbF8gb2YgaXRzIGRlcGVuZGVuY2llcy4KIyBkZXNjcmliZQkJLSBU cnkgdG8gZ2VuZXJhdGUgYSBvbmUtbGluZSBkZXNjcmlwdGlvbiBmb3IgZWFjaCBwb3J0IGZvcgoj CQkJCSAgdXNlIGluIElOREVYIGZpbGVzIGFuZCB0aGUgbGlrZS4KIyBjaGVjay1wbGlzdAkJLSBD aGVja3MgZm9yIGZpbGVzIG1pc3NpbmcgZnJvbSB0aGUgcGxpc3QsIGFuZCBmaWxlcyBpbiB0aGUg cGxpc3QKIwkJCQkgIHRoYXQgYXJlIG5vdCBpbnN0YWxsZWQgYnkgdGhlIHBvcnQuCiMgY2hlY2st c2FuaXR5CQktIFBlcmZvcm0gc29tZSBiYXNpYyBjaGVja3Mgb2YgdGhlIHBvcnQgbGF5b3V0Lgoj IGNoZWNrcGF0Y2gJLSBEbyBhICJwYXRjaCAtQyIgaW5zdGVhZCBvZiBhICJwYXRjaCIuICBOb3Rl IHRoYXQgaXQgbWF5CiMJCQkJICBnaXZlIGluY29ycmVjdCByZXN1bHRzIGlmIG11bHRpcGxlIHBh dGNoZXMgZGVhbCB3aXRoCiMJCQkJICB0aGUgc2FtZSBmaWxlLgojIGNoZWNrc3VtCQktIFVzZSBk aXN0aW5mbyB0byBlbnN1cmUgdGhhdCB5b3VyIGRpc3RmaWxlcyBhcmUgdmFsaWQuCiMgY2hlY2tz dW0tcmVjdXJzaXZlCiMJCQkJLSBSdW4gY2hlY2tzdW0gaW4gdGhpcyBwb3J0IGFuZCBhbGwgZGVw ZW5kZW5jaWVzLgojIG1ha2VzdW0JCS0gR2VuZXJhdGUgZGlzdGluZm8gKG9ubHkgZG8gdGhpcyBm b3IgeW91ciBvd24gcG9ydHMhKS4KIyBjbGVhbgkJCS0gUmVtb3ZlICR7V1JLRElSfSBhbmQgb3Ro ZXIgdGVtcG9yYXJ5IGZpbGVzIHVzZWQgZm9yIGJ1aWxkaW5nLgojIGNsZWFuLWRlcGVuZHMJLSBE byBhICJtYWtlIGNsZWFuIiBmb3IgYWxsIGRlcGVuZGVuY2llcy4KIyBjb25maWcJCS0gQ29uZmln dXJlIG9wdGlvbnMgZm9yIHRoaXMgcG9ydCAodXNpbmcgJHtESUFMT0d9KS4KIwkJCQkgIEF1dG9t YXRpY2FsbHkgcnVuIHByaW9yIHRvIGV4dHJhY3QsIHBhdGNoLCBjb25maWd1cmUsIGJ1aWxkLAoj CQkJCSAgaW5zdGFsbCwgYW5kIHBhY2thZ2UuCiMgY29uZmlnLXJlY3Vyc2l2ZQojCQkJCS0gQ29u ZmlndXJlIG9wdGlvbnMgZm9yIHRoaXMgcG9ydCBmb3IgYSBwb3J0IGFuZCBhbGwgaXRzCiMJCQkJ ICBkZXBlbmRlbmNpZXMuCiMgc2hvd2NvbmZpZwktIERpc3BsYXkgb3B0aW9ucyBjb25maWcgZm9y IHRoaXMgcG9ydC4KIyBzaG93Y29uZmlnLXJlY3Vyc2l2ZQojCQkJCS0gRGlzcGxheSBvcHRpb25z IGNvbmZpZyBmb3IgdGhpcyBwb3J0IGFuZCBhbGwgaXRzCiMJCQkJICBkZXBlbmRlbmNpZXMuCiMg cm1jb25maWcJCS0gUmVtb3ZlIHRoZSBvcHRpb25zIGNvbmZpZyBmb3IgdGhpcyBwb3J0LgojIHJt Y29uZmlnLXJlY3Vyc2l2ZQojCQkJCS0gUmVtb3ZlIHRoZSBvcHRpb25zIGNvbmZpZyBmb3IgdGhp cyBwb3J0IGFuZCBhbGwgaXRzCiMJCQkJICBkZXBlbmRlbmNpZXMuCiMKIyBEZWZhdWx0IHNlcXVl bmNlIGZvciAiYWxsIiBpczoKIwojCQljaGVjay1zYW5pdHkgZmV0Y2ggY2hlY2tzdW0gZXh0cmFj dCBwYXRjaCBjb25maWd1cmUgYnVpbGQKIwojIFBsZWFzZSByZWFkIHRoZSBjb21tZW50cyBpbiB0 aGUgdGFyZ2V0cyBzZWN0aW9uIGJlbG93OyB5b3UKIyBzaG91bGQgYmUgYWJsZSB0byB1c2UgdGhl IHByZS0qIG9yIHBvc3QtKiB0YXJnZXRzL3NjcmlwdHMKIyAod2hpY2ggYXJlIGF2YWlsYWJsZSBm b3IgZXZlcnkgc3RhZ2UgZXhjZXB0IGNoZWNrc3VtKSBvcgojIG92ZXJyaWRlIHRoZSBkby0qIHRh cmdldHMgdG8gZG8gcHJldHR5IG11Y2ggYW55dGhpbmcgeW91IHdhbnQuCiMKIyBORVZFUiBvdmVy cmlkZSB0aGUgInJlZ3VsYXIiIHRhcmdldHMgdW5sZXNzIHlvdSB3YW50IHRvIG9wZW4KIyBhIG1h am9yIGNhbiBvZiB3b3Jtcy4KIwojIFNldCB0aGVzZSB2YXJpYWJsZXMgaWYgeW91ciBwb3J0IGRv ZXNuJ3QgbmVlZCBzb21lIG9mIHRoZSBzdGVwcy4KIyBOb3RlIHRoYXQgdGhlcmUgYXJlIG5vIE5P X1BBVENIIG9yIE5PX0NPTkZJR1VSRSB2YXJpYWJsZXMgYmVjYXVzZQojIHRob3NlIHN0ZXBzIGFy ZSBlbXB0eSBieSBkZWZhdWx0LiAgTk9fRVhUUkFDVCBpcyBub3QgYWxsb3dlZCBhbnltb3JlCiMg c2luY2Ugd2UgbmVlZCB0byBhdCBsZWFzdCBjcmVhdGUgJHtXUktESVJ9LiAgQWxzbywgTk9fQ0hF Q0tTVU0gaXMgYSB1c2VyCiMgdmFyaWFibGUgYW5kIGlzIG5vdCB0byBiZSBzZXQgaW4gYSBwb3J0 J3MgTWFrZWZpbGUuICBTZWUgYWJvdmUgZm9yIE5PX1BBQ0tBR0UuCiMKIyBOT19CVUlMRAkJLSBV c2UgYSBkdW1teSAoZG8tbm90aGluZykgYnVpbGQgdGFyZ2V0LgojIE5PX0lOU1RBTEwJLSBVc2Ug YSBkdW1teSAoZG8tbm90aGluZykgaW5zdGFsbCB0YXJnZXQuCiMKIyBIZXJlIGFyZSBzb21lIHZh cmlhYmxlcyB1c2VkIGluIHZhcmlvdXMgc3RhZ2VzLgojCiMgRm9yIG9wdGlvbnMgc2VlIGJzZC5v cHRpb25zLm1rCiMKIyBGb3IgZmV0Y2g6CiMKIyBGRVRDSF9CSU5BUlkJLSBQYXRoIHRvIGZ0cC9o dHRwIGZldGNoIGNvbW1hbmQgaWYgbm90IGluICRQQVRILgojCQkJCSAgRGVmYXVsdDogIi91c3Iv YmluL2ZldGNoIgojIEZFVENIX0FSR1MJLSBBcmd1bWVudHMgdG8gZnRwL2h0dHAgZmV0Y2ggY29t bWFuZC4KIwkJCQkgIERlZmF1bHQ6ICItRnByIgojIEZFVENIX0NNRAkJLSBmdHAvaHR0cCBmZXRj aCBjb21tYW5kLgojCQkJCSAgRGVmYXVsdDogJHtGRVRDSF9CSU5BUll9ICR7RkVUQ0hfQVJHU30K IyBGRVRDSF9CRUZPUkVfQVJHUwojCQkJCS0gQXJndW1lbnRzIHRvICR7RkVUQ0hfQ01EfSBiZWZv cmUgZmlsZW5hbWUuCiMJCQkJICBEZWZhdWx0OiBub25lCiMgRkVUQ0hfQUZURVJfQVJHUwojCQkJ CS0gQXJndW1lbnRzIHRvICR7RkVUQ0hfQ01EfSBmb2xsb3dpbmcgZmlsZW5hbWUuCiMJCQkJICBE ZWZhdWx0OiBub25lCiMgRkVUQ0hfRU5WCQktIEVudmlyb25tZW50IHRvIHBhc3MgdG8gJHtGRVRD SF9DTUR9LgojCQkJCSAgRGVmYXVsdDogbm9uZQojIEZFVENIX1JFR0VUCS0gVGltZXMgdG8gcmV0 cnkgZmV0Y2hpbmcgb2YgZmlsZXMgb24gY2hlY2tzdW0gZXJyb3JzLgojCQkJCSAgRGVmYXVsdDog MQojIENMRUFOX0ZFVENIX0VOVgojCQkJCS0gRGlzYWJsZSBwYWNrYWdlIGRlcGVuZGVuY3kgaW4g ZmV0Y2ggdGFyZ2V0IGZvciBtYXNzCiMJCQkJICBmZXRjaGluZy4gIFVzZXIgc2V0dGFibGUuCiMK IyBGb3IgZXh0cmFjdDoKIwojIEVYVFJBQ1RfQ01ECS0gQ29tbWFuZCBmb3IgZXh0cmFjdGluZyBh cmNoaXZlCiMJCQkJICBEZWZhdWx0OiAke1RBUn0KIyBFWFRSQUNUX0JFRk9SRV9BUkdTCiMJCQkJ LSBBcmd1bWVudHMgdG8gJHtFWFRSQUNUX0NNRH0gYmVmb3JlIGZpbGVuYW1lLgojCQkJCSAgRGVm YXVsdDogIi14ZiIKIyBFWFRSQUNUX0FGVEVSX0FSR1MKIwkJCQktIEFyZ3VtZW50cyB0byAke0VY VFJBQ1RfQ01EfSBmb2xsb3dpbmcgZmlsZW5hbWUuCiMJCQkJICBEZWZhdWx0OiAiLS1uby1zYW1l LW93bmVyIC0tbm8tc2FtZS1wZXJtaXNzaW9ucyIKIyBGb3IgcGF0Y2g6CiMKIyBFWFRSQV9QQVRD SEVTCS0gRGVmaW5lIHRoaXMgdmFyaWFibGUgaWYgeW91IGhhdmUgcGF0Y2hlcyBub3QgaW4KIwkJ CQkgICR7UEFUQ0hESVJ9LiAgVGhpcyB1c3VhbGx5IGhhcHBlbnMgd2hlbiB5b3UgbmVlZCB0bwoj CQkJCSAgZG8gc29tZSBwcmUtcHJvY2Vzc2luZyBiZWZvcmUgc29tZSBkaXN0cmlidXRpb24KIwkJ CQkgIHBhdGNoZXMgY2FuIGJlIGFwcGxpZWQuICBJbiB0aGF0IGNhc2UsIGZldGNoIHRoZW0gYXMK IwkJCQkgIGV4dHJhIGRpc3RmaWxlcywgcHV0IHRoZSBwcm9jZXNzZWQgcmVzdWx0cyBpbgojCQkJ CSAgJHtXUktESVJ9LCB0aGVuIHBvaW50IEVYVFJBX1BBVENIRVMgdG8gdGhlbS4KIwkJCQkgIFRo ZSBwYXRjaGVzIHNwZWNpZmllZCBieSB0aGlzIHZhcmlhYmxlIHdpbGwgYmUKIwkJCQkgIGFwcGxp ZWQgYWZ0ZXIgdGhlIG5vcm1hbCBkaXN0cmlidXRpb24gcGF0Y2hlcyBidXQKIwkJCQkgIGJlZm9y ZSB0aG9zZSBpbiAke1BBVENIRElSfS4KIyBQQVRDSF9XUktTUkMJLSBEaXJlY3RvcnkgdG8gYXBw bHkgcGF0Y2hlcyBpbi4KIwkJCQkgIERlZmF1bHQ6ICR7V1JLU1JDfQojCiMgRm9yIGNvbmZpZ3Vy ZToKIwojIEhBU19DT05GSUdVUkUJLSBJZiBzZXQsIHRoaXMgcG9ydCBoYXMgaXRzIG93biBjb25m aWd1cmUgc2NyaXB0LiAgVGhlCiMJCQkJICBjb25maWd1cmUgc3RhZ2Ugd2lsbCBub3QgZG8gYW55 dGhpbmcgaWYgdGhpcyBpcyBub3Qgc2V0LgojIEdOVV9DT05GSUdVUkUJLSBJZiBzZXQsIHlvdSBh cmUgdXNpbmcgR05VIGNvbmZpZ3VyZSAob3B0aW9uYWwpLiAgSW1wbGllcwojCQkJCSAgSEFTX0NP TkZJR1VSRS4KIyBDT05GSUdVUkVfV1JLU1JDCiMJCQkJLSBEaXJlY3RvcnkgdG8gcnVuIGNvbmZp Z3VyZSBpbi4KIwkJCQkgIERlZmF1bHQ6ICR7V1JLU1JDfQojIENPTkZJR1VSRV9TQ1JJUFQKIwkJ CQktIE5hbWUgb2YgY29uZmlndXJlIHNjcmlwdCwgcmVsYXRpdmUgdG8gJHtDT05GSUdVUkVfV1JL U1JDfS4KIwkJCQkgIERlZmF1bHQ6ICJNYWtlZmlsZS5QTCIgaWYgVVNFUz1wZXJsNSBhbmQgVVNF X1BFUkw1PWNvbmZpZ3VyZQojCQkJCSAgYXJlIHNldCwgImNvbmZpZ3VyZSIgb3RoZXJ3aXNlLgoj IENPTkZJR1VSRV9UQVJHRVQKIwkJCQktIFRoZSBuYW1lIG9mIHRhcmdldCB0byBjYWxsIHdoZW4g R05VX0NPTkZJR1VSRSBpcwojCQkJCSAgZGVmaW5lZC4KIwkJCQkgIERlZmF1bHQ6ICR7QVJDSH0t cG9ydGJsZC0ke09QU1lTOnRsfSR7T1NSRUx9CiMgR05VX0NPTkZJR1VSRV9QUkVGSVgKIwkJCQkt IFRoZSBkaXJlY3RvcnkgcGFzc2VkIGFzIHByZWZpeCB0byB0aGUgY29uZmlndXJlIHNjcmlwdCBp ZgojCQkJCSAgR05VX0NPTkZJR1VSRSBpcyBzZXQuCiMJCQkJICBEZWZhdWx0OiAke1BSRUZJWH0K IyBDT05GSUdVUkVfQVJHUwojCQkJCS0gUGFzcyB0aGVzZSBhcmdzIHRvIGNvbmZpZ3VyZSBpZiAk e0hBU19DT05GSUdVUkV9IGlzIHNldC4KIwkJCQkgIERlZmF1bHQ6ICItLXByZWZpeD0ke0dOVV9D T05GSUdVUkVfUFJFRklYfQojCQkJCSAgLS1pbmZvZGlyPSR7UFJFRklYfS8ke0lORk9fUEFUSH0g LS1sb2NhbHN0YXRlZGlyPS92YXIKIwkJCQkgIC0tbWFuZGlyPSR7TUFOUFJFRklYfS9tYW4gLS1i dWlsZD0ke0NPTkZJR1VSRV9UQVJHRVR9IiBpZgojCQkJCSAgR05VX0NPTkZJR1VSRSBpcyBzZXQs ICJDQz0ke0NDfSBDRkxBR1M9JHtDRkxBR1N9CiMJCQkJICBQUkVGSVg9JHtQUkVGSVh9IElOU1RB TExQUklWTElCPSR7UFJFRklYfS9saWIKIwkJCQkgIElOU1RBTExBUkNITElCPSR7UFJFRklYfS9s aWIiIGlmIFVTRVM9cGVybDUgYW5kCiMJCQkJICBVU0VfUEVSTDU9Y29uZmlndXJlIGFyZSBzZXQs IGVtcHR5IG90aGVyd2lzZS4KIyBDT05GSUdVUkVfRU5WCS0gUGFzcyB0aGVzZSBlbnYgKHNoZWxs LWxpa2UpIHRvIGNvbmZpZ3VyZSBpZgojCQkJCSAgJHtIQVNfQ09ORklHVVJFfSBpcyBzZXQuCiMg Q09ORklHVVJFX0xPRwktIFRoZSBuYW1lIG9mIGNvbmZpZ3VyZSBsb2cgZmlsZS4gSXQgd2lsbCBi ZSBwcmludGVkIHRvCiMJCQkJICB0aGUgc2NyZWVuIGlmIGNvbmZpZ3VyZSBmYWlscy4KIwkJCQkg IERlZmF1bHQ6IGNvbmZpZy5sb2cKIyBDT05GSUdVUkVfRkFJTF9NRVNTQUdFCiMJCQkJLSBBIG1l c3NhZ2UgZGlzcGxheWVkIHRvIHVzZXJzIHdoZW4gY29uZmlndXJlCiMJCQkJICBmYWlscyAobm90 ZTogdGhpcyBhc3N1bWVzIHRoZSBkby1jb25maWd1cmUKIwkJCQkgIHRhcmdldCBoYXMgbm90IGJl ZW4gb3ZlcndyaXR0ZW4pLiAgVGhpcyBtZXNzYWdlCiMJCQkJICB3aWxsIGJlIHBhc3NlZCB0aHJv dWdoIC91c3IvYmluL2ZtdCBiZWZvcmUKIwkJCQkgIGJlaW5nIHNob3duIHRvIHRoZSB1c2VyLgoj CiMgV0lUSE9VVF9GQlNEMTBfRklYCQkgIERpc2FibGUgRnJlZUJTRCAxMC4wIGF1dG90b29scyB3 b3JrYXJvdW5kLgojCiMgRm9yIGJ1aWxkIGFuZCBpbnN0YWxsOgojCiMgTUFLRUZJTEUJCS0gTmFt ZSBvZiB0aGUgbWFrZWZpbGUuCiMJCQkJICBEZWZhdWx0OiBNYWtlZmlsZQojIEFMTF9UQVJHRVQJ LSBEZWZhdWx0IHRhcmdldCBmb3Igc3ViLW1ha2UgaW4gYnVpbGQgc3RhZ2UuCiMJCQkJICBEZWZh dWx0OiBhbGwKIyBCVUlMRF9XUktTUkMJLSBEaXJlY3RvcnkgdG8gZG8gYnVpbGQgaW4gKGRlZmF1 bHQ6ICR7V1JLU1JDfSkuCiMgTUFLRV9FTlYJCS0gQWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJz IHBhc3NlZCB0byBzdWItbWFrZSBpbiBidWlsZAojCQkJCSAgYW5kIGluc3RhbGwgc3RhZ2VzLgoj CQkJCSAgRGVmYXVsdDogc2VlIGJlbG93CiMgTUFLRV9BUkdTCQktIEFueSBleHRyYSBhcmd1bWVu dHMgdG8gc3ViLW1ha2UgaW4gYnVpbGQgYW5kIGluc3RhbGwgc3RhZ2VzLgojCQkJCSAgRGVmYXVs dDogbm9uZQojIwojIE1BS0VfSk9CU19VTlNBRkUKIwkJCQktIERpc2FsbG93IG11bHRpcGxlIGpv YnMgZXZlbiB3aGVuIHVzZXIgc2V0IGEgZ2xvYmFsIG92ZXJyaWRlLgojCQkJCSAgVG8gYmUgdXNl ZCB3aXRoIGtub3duIGJhZCBwb3J0cy4KIyBESVNBQkxFX01BS0VfSk9CUwojCQkJCS0gU2V0IHRv IGRpc2FibGUgdGhlIG11bHRpcGxlIGpvYnMgZmVhdHVyZS4gIFVzZXIgc2V0dGFibGUuCiMgTUFL RV9KT0JTX05VTUJFUgojCQkJCS0gT3ZlcnJpZGUgdGhlIG51bWJlciBvZiBtYWtlIGpvYnMgdG8g YmUgdXNlZC4gIFVzZXIgc2V0dGFibGUuCiMgTUFLRV9KT0JTX05VTUJFUl9MSU1JVAojCQkJCS0g U2V0IGEgbGltaXQgZm9yIG1heGltdW0gbnVtYmVyIG9mIG1ha2Ugam9icyBhbGxvd2VkIHRvIGJl CiMJCQkJICB1c2VkLgojIyBjYWNjaGUKIwojIFdJVEhfQ0NBQ0hFX0JVSUxECiMgCQkJCS0gRW5h YmxlIENDQUNIRSBzdXBwb3J0IChkZXZlbC9jY2FjaGUpLiAgVXNlciBzZXR0YWJsZS4KIyBDQ0FD SEVfRElSCiMgCQkJCS0gV2hpY2ggZGlyZWN0b3J5IHRvIHVzZSBmb3IgY2NhY2hlIChkZWZhdWx0 OiAkSE9NRS8uY2NhY2hlKQojIE5PX0NDQUNIRQojCQkJCS0gRGlzYWJsZSBDQ0FDSEUgc3VwcG9y dCBmb3IgZXhhbXBsZSBmb3IgY2VydGFpbiBwb3J0cyBpZgojCQkJCSAgQ0NBQ0hFIGlzIGVuYWJs ZWQuICBVc2VyIHNldHRhYmxlLgojCiMgRm9yIGluc3RhbGw6CiMKIyBJTlNUQUxMX1RBUkdFVAoj CQkJCS0gRGVmYXVsdCB0YXJnZXQgZm9yIHN1Yi1tYWtlIGluIGluc3RhbGwgc3RhZ2UuCiMJCQkJ ICBEZWZhdWx0OiBpbnN0YWxsCiMgSU5TVEFMTF9XUktTUkMKIwkJCQktIERpcmVjdG9yeSB0byBp bnN0YWxsIGZyb20KIwkJCQkgIERlZmF1bHQ6ICR7V1JLU1JDfQojIE5PX01UUkVFCQktIElmIHNl dCwgd2lsbCBub3QgaW52b2tlIG10cmVlIGZyb20gYnNkLnBvcnQubWsgZnJvbQojCQkJCSAgdGhl ICJpbnN0YWxsIiB0YXJnZXQuCiMgTVRSRUVfRklMRQktIFRoZSBuYW1lIG9mIHRoZSBtdHJlZSBm aWxlLgojCQkJCSAgRGVmYXVsdDogJHtQT1JUU0RJUn0vVGVtcGxhdGVzL0JTRC5sb2NhbC5kaXN0 IG9yCiMJCQkJICAvZXRjL210cmVlL0JTRC51c3IuZGlzdCBpZiAke1BSRUZJWH0gPT0gIi91c3Ii LgojIFBMSVNUX0RJUlMJLSBEaXJlY3RvcmllcyB0byBiZSBhZGRlZCB0byBwYWNraW5nIGxpc3QK IyBQTElTVF9GSUxFUwktIEZpbGVzIGFuZCBzeW1ib2xpYyBsaW5rcyB0byBiZSBhZGRlZCB0byBw YWNraW5nIGxpc3QKIwojIFBMSVNUCQkJLSBOYW1lIG9mIHRoZSBgcGFja2luZyBsaXN0JyBmaWxl LgojCQkJCSAgQ2hhbmdlIHRoaXMgdG8gJHtXUktESVJ9L1BMSVNUIG9yIHNvbWV0aGluZyBpZiB5 b3UKIwkJCQkgIG5lZWQgdG8gd3JpdGUgdG8gaXQuICAoSXQgaXMgbm90IGEgZ29vZCBpZGVhIGZv ciBhIHBvcnQKIwkJCQkgIHRvIHdyaXRlIHRvIGFueSBmaWxlIG91dHNpZGUgJHtXUktESVJ9IGR1 cmluZyBhIG5vcm1hbAojCQkJCSAgYnVpbGQuKQojCQkJCSAgRGVmYXVsdDogJHtQS0dESVJ9L3Br Zy1wbGlzdAojIFRNUFBMSVNUCQktIE5hbWUgb2YgdGhlIGBwYWNraW5nIGxpc3QnIGZpbGUgYWZ0 ZXIgcHJvY2Vzc2luZwojCQkJCSAgRGVmYXVsdDogJHtXUktESVJ9Ly5QTElTVC5ta3RtcAojIFBM SVNUX1NVQgkJLSBMaXN0IG9mICJ2YXJpYWJsZT12YWx1ZSIgcGFpciBmb3Igc3Vic3RpdHV0aW9u IGluICR7UExJU1R9CiMJCQkJICBEZWZhdWx0OiBzZWUgYmVsb3cKIwojIFNVQl9GSUxFUwkJLSBG aWxlcyB0aGF0IHNob3VsZCBiZSBwYXNzZWQgdGhyb3VnaCBzZWQgYW5kIHJlZGlyZWN0ZWQgdG8K IwkJCQkgICR7V1JLRElSfS4KIwkJCQktIEZvciBlYWNoIGZpbGUgc3BlY2lmaWVkIGluIFNVQl9G SUxFUywgdGhlcmUgbXVzdCBiZSBhCiMJCQkJICBjb3JyZXNwb25kaW5nIGZpbGUgaW4gJHtGSUxF U0RJUn0gd2hvc2Ugc3VmZml4IGlzICIuaW4iLiBGb3IKIwkJCQkgIGluc3RhbmNlLCBpZiB0aGUg TWFrZWZpbGUgc3BlY2lmaWVzICJTVUJfRklMRVM9IHBrZy1tZXNzYWdlIgojCQkJCSAgdGhlbiB0 aGVyZSBtdXN0IGJlIGEgZmlsZSBjYWxsZWQgcGtnLW1lc3NhZ2UuaW4gaW4KIwkJCQkgICR7RklM RVNESVJ9LgojCQkJCS0gVGhlIHN1YnN0aXR1dGlvbiBwcm9jZXNzIGlzIHRoZSBzYW1lIGFzIFBM SVNUX0ZJTEVTLCBhcwojCQkJCSAgZGVzY3JpYmVkIGJlbG93IGV4Y2VwdCB0aGF0IGFueSBsaW5l IGJlZ2lubmluZyB3aXRoIEBjb21tZW50CiMJCQkJICBpcyBkZWxldGVkLgojIFNVQl9MSVNUCQkt IExpc3Qgb2YgInZhcmlhYmxlPXZhbHVlIiBwYWlyIGZvciBzdWJzdGl0dXRpb24gaW4gJHtTVUJf RklMRVN9CiMJCQkJICBTb21lIHBhaXJzIGFyZSBhZGRlZCBieSBkZWZhdWx0OiBlZy4gUFJFRklY PSR7UFJFRklYfQojCiMgVVNFX0xEQ09ORklHICAtIElmIHNldCB0byAieWVzIiwgdGhpcyBhZGRz ICR7UFJFRklYfS9saWIgdG8gdGhlIGxpc3Qgb2YKIwkJCQkgIGRpcmVjdG9yaWVzIHRvIGJlIHNl YXJjaGVkIGZvciBzaGFyZWQgbGlicmFyaWVzLgojCQkJCSAgT3RoZXJ3aXNlLCB0aGlzIGlzIGEg bGlzdCBvZiBkaXJlY3RvcmllcyB0byBiZSBhZGRlZCB0byB0aGF0CiMJCQkJICBsaXN0LiBUaGUg ZGlyZWN0b3J5IG5hbWVzIGFyZSB3cml0dGVuIHRvCiMJCQkJICAke0xPQ0FMQkFTRX0vbGliZGF0 YS9sZGNvbmZpZy8ke1VOSVFVRU5BTUV9IHdoaWNoIGlzIHRoZW4KIwkJCQkgIHVzZWQgYnkgdGhl IGxkY29uZmlnIHN0YXJ0dXAgc2NyaXB0LgojCQkJCSAgVGhpcyBtZWNoYW5pc20gcmVwbGFjZXMg bGRjb25maWcgc2NyaXB0cyBpbnN0YWxsZWQgYnkgc29tZQojCQkJCSAgcG9ydHMsIG9mdGVuIHVu ZGVyIHN1Y2ggbmFtZXMgYXMgMDAwLiR7VU5RVUVOQU1FfS5zaC4KIwkJCQkgIElmIFVTRV9MSU5V WF9QUkVGSVggaXMgZGVmaW5lZCwgdGhlIExpbnV4IHZlcnNpb24gb2YKIwkJCQkgIGxkY29uZmln IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBuYXRpdmUgRnJlZUJTRAojCQkJCSAgdmVyc2lv biwgYW5kIHRoZSBkaXJlY3RvcnkgbGlzdCBnaXZlbiB3aWxsIGJlIGlnbm9yZWQuCiMgVVNFX0xE Q09ORklHMzIKIyAJCQkJLSBTYW1lIGFzIFVTRV9MRENPTkZJRyBidXQgdGhlIHRhcmdldCBmaWxl IGlzCiMgCQkJCSAgJHtMT0NBTEJBU0V9L2xpYmRhdGEvbGRjb25maWczMi8ke1VOSVFVRU5BTUV9 IGluc3RlYWQuCiMgCQkJCSAgTm90ZTogdGhhdCBzaG91bGQgb25seSBiZSB1c2VkIG9uIDY0LWJp dCBhcmNoaXRlY3R1cmVzLgojCiMgRE9DU0RJUgkJLSBOYW1lIG9mIHRoZSBkaXJlY3RvcnkgdG8g aW5zdGFsbCB0aGUgcGFja2FnZXMgZG9jcyBpbi4KIwkJCQkgIERlZmF1bHQ6ICR7UFJFRklYfS9z aGFyZS9kb2MvJHtQT1JUTkFNRX0KIyBET0NTRElSX1JFTAktIFRoZSBET0NTRElSIHJlbGF0aXZl IHRvICR7UFJFRklYfQojIEVYQU1QTEVTRElSCS0gTmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRvIGlu c3RhbGwgdGhlIHBhY2thZ2VzIGV4YW1wbGVzIGluLgojCQkJCSAgRGVmYXVsdDogJHtQUkVGSVh9 L3NoYXJlL2V4YW1wbGVzLyR7UE9SVE5BTUV9CiMgRVhBTVBMRVNESVJfUkVMCiMJCQkJLSBUaGUg RVhBTVBMRVNESVIgcmVsYXRpdmUgdG8gJHtQUkVGSVh9CiMgREFUQURJUgkJLSBOYW1lIG9mIHRo ZSBkaXJlY3RvcnkgdG8gaW5zdGFsbCB0aGUgcGFja2FnZXMgc2hhcmVkIGRhdGEgaW4uCiMJCQkJ ICBEZWZhdWx0OiAke1BSRUZJWH0vc2hhcmUvJHtQT1JUTkFNRX0KIyBEQVRBRElSX1JFTAktIFRo ZSBEQVRBRElSIHJlbGF0aXZlIHRvICR7UFJFRklYfQojCiMgV1dXRElSCQktIE5hbWUgb2YgdGhl IGRpcmVjdG9yeSB0byBpbnN0YWxsIHRoZSBwYWNrYWdlcyB3d3cgZGF0YSBpbi4KIwkJCQkgIERl ZmF1bHQ6ICR7UFJFRklYfS93d3cvJHtQT1JUTkFNRX0KIyBXV1dESVJfUkVMCS0gVGhlIFdXV0RJ UiByZWxhdGl2ZSB0byAke1BSRUZJWH0KIwojIFVTRVJTCQkJLSBMaXN0IG9mIHVzZXJzIHRvIGNy ZWF0ZSBhdCBpbnN0YWxsIHRpbWUuIEVhY2ggbG9naW4gbXVzdAojIAkJCQkgIGhhdmUgYSBjb3Jy ZXNwb25kaW5nIGVudHJ5IGluICR7VUlEX0ZJTEVTfS4KIyBHUk9VUFMJCS0gTGlzdCBvZiBncm91 cHMgdG8gY3JlYXRlIGF0IGluc3RhbGwgdGltZS4gRWFjaCBncm91cCBtdXN0CiMgCQkJCSAgaGF2 ZSBhIGNvcnJlc3BvbmRpbmcgZW50cnkgaW4gJHtHSURfRklMRVN9LgojCiMgREVTS1RPUERJUgkt IE5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0byBpbnN0YWxsICR7REVTS1RPUF9FTlRSSUVTfSBpbi4K IwkJCQkgIERlZmF1bHQ6ICR7UFJFRklYfS9zaGFyZS9hcHBsaWNhdGlvbnMKIyBERVNLVE9QX0VO VFJJRVMKIwkJCQktIExpc3Qgb2YgZGVza3RvcCBlbnRyeSBmaWxlcyB0byBnZW5lcmF0ZSBhbmQg aW5zdGFsbCBpbgojCQkJCSAgJHtERVNLVE9QRElSfS4gVGhlIGZvcm1hdCBpcwojCQkJCSAgIk5h bWUiICJDb21tZW50IiAiSWNvbiIgIkV4ZWMiICJDYXRlZ29yaWVzIiBTdGFydHVwTm90aWZ5CiMJ CQkJICBSdWxlczoKIwkJCQkJKiBPbmx5IGFkZCBkZXNrdG9wIGVudHJpZXMgZm9yIGFwcGxpY2F0 aW9ucyB3aGljaCBkbyBub3QKIwkJCQkJICByZXF1aXJlIGEgdGVybWluYWwgKGllLiBYIGFwcGxp Y2F0aW9ucykuCiMJCQkJCSogSWYgdGhlIHVwc3RyZWFtIGRpc3RyaWJ1dGlvbiBhbHJlYWR5IGlu c3RhbGxzIC5kZXNrdG9wCiMJCQkJCSAgZmlsZXMsIHlvdSBkbyBub3QgbmVlZCB0byB1c2UgdGhp cy4KIwkJCQkJKiBJZiB5b3UgcmVxdWlyZSBhIG1vcmUgZWxhYm9yYXRlIC5kZXNrdG9wIGZpbGUg dGhhbiB0aGlzCiMJCQkJCSAgdmFyaWFibGUgcGVybWl0cywgd3JpdGUgaXQgeW91cnNlbGYgYW5k IGluc3RhbGwgaXQKIwkJCQkJICBpbiAke0RFU0tUT1BESVJ9LgojCQkJCSAgTm90ZXM6CiMJCQkJ CSogQ29tbWVudCwgSWNvbiBhbmQgU3RhcnR1cE5vdGlmeSBtYXkgYmUgZW1wdHkKIwkJCQkJICBz dHJpbmdzICgiIikuIENhdGVnb3JpZXMgbWF5IGJlIGFuIGVtcHR5IHN0cmluZyBpbiBzb21lCiMJ CQkJCSAgY2FzZXMgKHNlZSBiZWxvdykuIFRoZSBvdGhlciBmaWVsZHMgYXJlIG1hbmRhdG9yeS4K IwkJCQkJKiBJZiBDb21tZW50IGlzIGFuIGVtcHR5IHN0cmluZywgcG9ydCAke0NPTU1FTlR9IHdp bGwgYmUKIwkJCQkJICB1c2VkLgojCQkJCQkqIElmIHNldCwgSWNvbiBtdXN0IGJlIGVpdGhlciBh YnNvbHV0ZSBwYXRoICh1c3VhbGx5CiMJCQkJCSAgJHtQUkVGSVh9L3NoYXJlL3BpeG1hcHMvJHtQ T1JUTkFNRX0ucG5nKSBvciBpY29uIG5hbWUKIwkJCQkJICB3aXRob3V0IGV4dGVuc2lvbiBpZiBp bnN0YWxsZWQgaWNvbnMgZm9sbG93IEljb24gVGhlbWUKIwkJCQkJICBTcGVjaWZpY2F0aW9uLgoj CQkJCQkqIElmIENhdGVnb3JpZXMgaXMgYW4gZW1wdHkgc3RyaW5nLCBic2QucG9ydC5tayB3aWxs IHRyeQojCQkJCQkgIHRvIGRlZHVjZSBhIGRlZmF1bHQgdmFsdWUgdXNpbmcgdGhlIENBVEVHT1JJ RVMgdmFyaWFibGUuCiMJCQkJCSAgSWYgdGhlIGRlZHVjdGlvbiBmYWlscywgeW91IHdpbGwgaGF2 ZSB0byBzZXQgQ2F0ZWdvcmllcwojCQkJCQkgIG1hbnVhbGx5LiBZb3Ugc2hvdWxkIGNoZWNrIHRo ZSBnZW5lcmF0ZWQgdmFsdWUgdXNpbmcKIwkJCQkJICAibWFrZSBkZXNrdG9wLWNhdGVnb3JpZXMi LCBhbmQgb3ZlcnJpZGUgaXQgaWYgbmVjZXNzYXJ5LgojCQkJCQkqIEV4ZWMgd2lsbCBhbHNvIGJl IHVzZWQgdG8gbmFtZSB0aGUgLmRlc2t0b3AgZmlsZS4KIwkJCQkJKiBTdGFydHVwTm90aWZ5IG1h eSBiZSB0cnVlLCBmYWxzZSBvciBlbXB0eSAoc2VlIERlc2t0b3AKIwkJCQkJICBFbnRyeSBTcGVj aWZpY2F0aW9uIGZvciBkZXRhaWxzKS4KIwkJCQkJKiBUaGUgZmlsZXMgd2lsbCBiZSBhdXRvbWF0 aWNhbGx5IGFkZGVkIHRvICR7UExJU1R9LgojCQkJCSAgRXhhbXBsZToKIwkJCQkJIlggV2luZG93 IEluZm9ybWF0aW9uIiBcCiMJCQkJCSJHZXQgaW5mb3JtYXRpb24gYWJvdXQgWCB3aW5kb3dzIiBc CiMJCQkJCSIke1BSRUZJWH0vc2hhcmUvcGl4bWFwcy93aW5pbmZvLnBuZyIgXAojCQkJCQkiJHtQ UkVGSVh9L2Jpbi93aW5pbmZvIiBcCiMJCQkJCSJTeXN0ZW07IiBcCiMJCQkJCSIiCiMJCQkJICBT ZWUgaHR0cDovL3N0YW5kYXJkcy5mcmVlZGVza3RvcC5vcmcvZGVza3RvcC1lbnRyeS1zcGVjL2Rl c2t0b3AtZW50cnktc3BlYy1sYXRlc3QuaHRtbAojCQkJCSAgZm9yIGFuIGV4cGxhbmF0aW9uIG9m IHRoZSBmaWVsZHMuIElmIHlvdSBuZWVkIHRvIGNyZWF0ZSBtb3JlCiMJCQkJICB0aGFuIG9uZSBm aWxlLCBqdXN0IGNoYWluIHRoZW0gaW50byBhIHNpbmdsZSB2YXJpYWJsZS4KIwojIE5vdGUgdGhh dCB0aGUgaW5zdGFsbCB0YXJnZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGFkZCBtYW5wYWdlcyAoc2Vl CiMgYWJvdmUpIGFuZCBhbHNvIHN1YnN0aXR1dGUgc3BlY2lhbCBzZXF1ZW5jZXMgb2YgY2hhcmFj dGVycyAoZGVsaW1pdGVkCiMgYnkgIiUlIikgYXMgZGVmaW5lZCBpbiBQTElTVF9TVUIgdG8gZ2Vu ZXJhdGUgJHtUTVBQTElTVH0uICBGb3IKIyBpbnN0YW5jZSwgIk9TUkVMPSR7T1NSRUx9IiBpbiBQ TElTVF9TVUIgY2F1c2VzIGFsbCBvY2N1cnJlbmNlcyBvZgojICIlJU9TUkVMJSUiIGluICR7UExJ U1R9IHRvIGJlIHN1YnN0aXR1dGVkIGJ5IHRoZSB2YWx1ZSBvZiBPU1JFTC4KIyAke1RNUFBMSVNU fSBpcyBnZW5lcmF0ZWQgYmVmb3JlIHRoZSBkby1pbnN0YWxsIHN0YWdlLiAgSWYgeW91IGFyZQoj IGdlbmVyYXRpbmcgdGhlIHBhY2tpbmcgbGlzdCBvbi10aGUtZmx5LCBtYWtlIHN1cmUgaXQncyBn ZW5lcmF0ZWQgYmVmb3JlCiMgZG8taW5zdGFsbCBpcyBjYWxsZWQhCiMKIyBGb3IgcGFja2FnZToK IwojIExBVEVTVF9MSU5LCS0gSW5zdGFsbCB0aGUgIkxhdGVzdCIgbGluayBmb3IgdGhlIHBhY2th Z2UgYXMgX19fLiAgRGVmaW5lCiMJCQkJICB0aGlzIGlmIHRoZSAiTGF0ZXN0IiBsaW5rIG5hbWUg d2lsbCBiZSBpbmNvcnJlY3RseSBkZXRlcm1pbmVkLgojCiMgVGhpcyBpcyB1c2VkIGluIGFsbCBz dGFnZXM6CiMKIyBTQ1JJUFRTX0VOVgktIEFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFycyBwYXNz ZWQgdG8gc2NyaXB0cyBpbgojCQkJCSAgJHtTQ1JJUFRESVJ9IGV4ZWN1dGVkIGJ5IGJzZC5wb3J0 Lm1rLgojCQkJCSAgRGVmYXVsdDogc2VlIGJlbG93CiMKIyBGaW5hbGx5LCB2YXJpYWJsZXMgdG8g Y2hhbmdlIGlmIHlvdSB3YW50IGEgc3BlY2lhbCBiZWhhdmlvci4gIFRoZXNlCiMgYXJlIGZvciBk ZWJ1Z2dpbmcgcHVycG9zZXMuICBEb24ndCBzZXQgdGhlbSBpbiB5b3VyIE1ha2VmaWxlLgojCiMg RUNIT19NU0cJCS0gVXNlZCB0byBwcmludCBhbGwgdGhlICc9PT0+JyBzdHlsZSBwcm9tcHRzIC0g b3ZlcnJpZGUgdGhpcwojCQkJCSAgdG8gdHVybiB0aGVtIG9mZi4KIwkJCQkgIERlZmF1bHQ6ICR7 RUNIT19DTUR9CiMgUEFUQ0hfREVCVUcJLSBJZiBzZXQsIHByaW50IG91dCBtb3JlIGluZm9ybWF0 aW9uIGFib3V0IHRoZSBwYXRjaGVzIGFzCiMJCQkJICBpdCBhdHRlbXB0cyB0byBhcHBseSB0aGVt LgojIFBLR19EQkRJUgkJLSBXaGVyZSBwYWNrYWdlIGluc3RhbGxhdGlvbiBpcyByZWNvcmRlZDsg dGhpcyBkaXJlY3RvcnkKIwkJCQkgIG11c3Qgbm90IGNvbnRhaW4gYW55dGhpbmcgZWxzZS4KIwkJ CQkgIERlZmF1bHQ6IC92YXIvZGIvcGtnCiMgUE9SVF9EQkRJUgktIFdoZXJlIHBvcnQgY29uZmln dXJhdGlvbiBvcHRpb25zIGFyZSByZWNvcmRlZC4KIwkJCQkgIERlZmF1bHQ6IC92YXIvZGIvcG9y dHMKIyBOT19QS0dfUkVHSVNURVIKIwkJCQktIERvbid0IHJlZ2lzdGVyIGEgcG9ydCBpbnN0YWxs YXRpb24gYXMgYSBwYWNrYWdlLgojIEZPUkNFX1BLR19SRUdJU1RFUgojCQkJCS0gSWYgc2V0LCBp dCB3aWxsIG92ZXJ3cml0ZSBhbnkgZXhpc3RpbmcgcGFja2FnZQojCQkJCSAgcmVnaXN0cmF0aW9u IGluZm9ybWF0aW9uIGluICR7UEtHX0RCRElSfS8ke1BLR05BTUV9LgojIE5PX0RFUEVORFMJLSBE b24ndCB2ZXJpZnkgYnVpbGQgb2YgZGVwZW5kZW5jaWVzLgojIFNUUklDVF9ERVBFTkRTCiMJCQkJ LSBWZXJpZnkgZGVwZW5kZW5jaWVzIGJ1dCBjb25zaWRlciBtaXNzaW5nIGRlcGVuZGVuY2llcyBh cwojCQkJCSAgZmF0YWwuCiMgQ0hFQ0tTVU1fQUxHT1JJVEhNUwojCQkJCS0gRGlmZmVyZW50IGNo ZWNrc3VtIGFsZ29yaXRobXMgdG8gY2hlY2sgZm9yIHZlcmlmeWluZyB0aGUKIwkJCQkgIGludGVn cml0eSBvZiB0aGUgZGlzdGZpbGVzLiBUaGUgYWJzZW5jZSBvZiB0aGUgYWxnb3JpdGhtCiMJCQkJ ICBpbiBkaXN0aW5mbyBkb2Vzbid0IG1ha2UgaXQgZmFpbC4KIwkJCQkgIERlZmF1bHQ6IHNoYTI1 NgojIE5PX0NIRUNLU1VNCS0gRG9uJ3QgdmVyaWZ5IHRoZSBjaGVja3N1bS4gIFR5cGljYWxseSB1 c2VkIHdoZW4KIwkJCQkgIHdoZW4geW91IG5vdGljZWQgdGhlIGRpc3RmaWxlIHlvdSBqdXN0IGZl dGNoZWQgaGFzCiMJCQkJICBhIGRpZmZlcmVudCBjaGVja3N1bSBhbmQgeW91IGludGVuZCB0byB2 ZXJpZnkgaWYKIwkJCQkgIHRoZSBwb3J0IHN0aWxsIHdvcmtzIHdpdGggaXQuCiMgVVNFX1BBQ0tB R0VfREVQRU5EUwojCQkJCS0gVHJ5IHRvIGluc3RhbGwgZGVwZW5kZW5jaWVzIGZyb20gZXhpc3Rp bmcgcGFja2FnZXMgaW5zdGVhZAojCQkJCSAgb2YgYnVpbGRpbmcgdGhlIHBvcnQgZnJvbSBzY3Jh dGNoLiBGYWxsYmFjayBvbiBzb3VyY2UKIwkJCQkgIGlmIGFuIGV4aXN0aW5nIHBhY2thZ2UgaXMg bm90IHByZXNlbnQuCiMgVVNFX1BBQ0tBR0VfREVQRU5EU19PTkxZCiMJCQkJLSBMaWtlIFVTRV9Q QUNLQUdFX0RFUEVORFMsIGJ1dCBkbyBub3QgZmFsbGJhY2sgb24gc291cmNlLgojIElOU1RBTExf QVNfVVNFUgojCQkJCS0gRGVmaW5lIHRoaXMgdG8gaW5zdGFsbCBhcyB0aGUgY3VycmVudCB1c2Vy LCBpbnRlbmRlZAojCQkJCSAgZm9yIHN5c3RlbXMgd2hlcmUgeW91IGhhdmUgbm8gcm9vdCBhY2Nl c3MuCiMgRElTQUJMRV9TSVpFCS0gRG8gbm90IGNoZWNrIHRoZSBzaXplIG9mIGEgZGlzdGZpbGUg ZXZlbiBpZiB0aGUgU0laRSBmaWVsZAojCQkJCSAgaGFzIGJlZW4gc3BlY2lmaWVkIGluIGRpc3Rp bmZvLiAgVGhpcyBpcyB1c2VmdWwKIwkJCQkgIHdoZW4gdXNpbmcgYW4gYWx0ZXJuYXRlIEZFVENI X0NNRC4KIwojIEVuZCBvZiB0aGUgbGlzdCBvZiBhbGwgdmFyaWFibGVzIHRoYXQgbmVlZCB0byBi ZSBkZWZpbmVkIGluIGEgcG9ydC4KIyBNb3N0IHBvcnQgYXV0aG9ycyBzaG91bGQgbm90IG5lZWQg dG8gdW5kZXJzdGFuZCBhbnl0aGluZyBhZnRlciB0aGlzIHBvaW50LgojCgojIFRoZXNlIG5lZWQg dG8gYmUgYWJzb2x1dGUgc2luY2Ugd2UgZG9uJ3Qga25vdyBob3cgZGVlcCBpbiB0aGUgcG9ydHMK IyB0cmVlIHdlIGFyZSBhbmQgdGh1cyBjYW4ndCBnbyByZWxhdGl2ZS4gIFRoZXkgY2FuLCBvZiBj b3Vyc2UsIGJlIG92ZXJyaWRkZW4KIyBieSBpbmRpdmlkdWFsIE1ha2VmaWxlcyBvciBsb2NhbCBz eXN0ZW0gbWFrZSBjb25maWd1cmF0aW9uLgpQT1JUU0RJUj89CQkvdXNyL3BvcnRzCkxPQ0FMQkFT RT89CQkvdXNyL2xvY2FsCkxJTlVYQkFTRT89CQkvY29tcGF0L2xpbnV4CkRJU1RESVI/PQkJJHtQ T1JUU0RJUn0vZGlzdGZpbGVzCl9ESVNURElSPz0JCSR7RElTVERJUn0vJHtESVNUX1NVQkRJUn0K SU5ERVhESVI/PQkJJHtQT1JUU0RJUn0KU1JDX0JBU0U/PQkJL3Vzci9zcmMKVVNFU0RJUj89CQkk e1BPUlRTRElSfS9Nay9Vc2VzClNDUklQVFNESVI/PQkke1BPUlRTRElSfS9Nay9TY3JpcHRzCkxJ Ql9ESVJTPz0JCS9saWIgL3Vzci9saWIgJHtMT0NBTEJBU0V9L2xpYgpTVEFHRURJUj89CSR7V1JL RElSfS9zdGFnZQpOT1RQSE9OWT89Ck1JTklNQUxfUEtHX1ZFUlNJT049CTEuMy44CgojIG1ha2Ug c3VyZSBibWFrZSB0cmVhdHMgLVYgYXMgZXhwZWN0ZWQKLk1BS0UuRVhQQU5EX1ZBUklBQkxFUz0g eWVzCgouaW5jbHVkZSAiJHtQT1JUU0RJUn0vTWsvYnNkLmNvbW1hbmRzLm1rIgoKLmlmIGRlZmlu ZWQoWF9CVUlMRF9GT1IpCi5pZiAhZGVmaW5lZCguUEFSU0VESVIpCklHTk9SRT0JQ3Jvc3MgYnVp bGRpbmcgY2FuIG9ubHkgYmUgZG9uZSB3aGVuIHVzaW5nIGJtYWtlKDEpIGFzIG1ha2UoMSkKLmVu ZGlmCi5pZiAhZGVmaW5lZChBUkNIKQpBUkNIPQkJJHtYX0JVSUxEX0ZPUn0KLmVuZGlmCiMgRG8g bm90IGRlZmluZSBDUFAgb24gcHVycG9zZQouaWYgIWRlZmluZWQoSE9TVENDKQpIT1NUQ0M6PQkk e0NDfQpIT1NUQ1hYOj0JJHtDWFh9Ci5lbmRpZgoKU1lTUk9PVD0JJHtTUkNESVJ9Ly4uL3Jvb3Qv JHtBUkNIfS8KCk5NPQkJJHtBUkNIfS1mcmVlYnNkLW5tClNUUklQX0NNRD0JJHtBUkNIfS1mcmVl YnNkLXN0cmlwCiMgb25seSBibWFrZSBzdXBwb3J0IHRoZSBiZWxvdwpTVFJJUEJJTj0JJHtTVFJJ UF9DTUR9Ci5leHBvcnQuZW52IFNUUklQQklOCgouZW5kaWYKCgojCiMgREVTVERJUiBzZWN0aW9u IHRvIHN0YXJ0IGEgY2hyb290ZWQgcHJvY2VzcyBpZiBpbnZva2VkIHdpdGggREVTVERJUiBzZXQK IwoKLmlmIGRlZmluZWQoREVTVERJUikgJiYgIWVtcHR5KERFU1RESVIpICYmICFkZWZpbmVkKENI Uk9PVEVEKSAmJiBcCgkhZGVmaW5lZChCRUZPUkVQT1JUTUspICYmICFkZWZpbmVkKElOT1BUSU9O U01LKQoKLmluY2x1ZGUgIiR7UE9SVFNESVJ9L01rL2JzZC5kZXN0ZGlyLm1rIgoKLmVsc2UKCiMg TG9vayBmb3IgZmlsZXMgbmFtZWQgIioub3JpZyIgdW5kZXIgJHtQQVRDSF9XUktTUkN9IGFuZCAo cmUtKWdlbmVyYXRlCiMgJHtQQVRDSERJUn0vcGF0Y2gtKiBmaWxlcyBmcm9tIHRoZW0uICBCeSBw b3B1bGFyIGRlbWFuZCwgd2UgY3VycmVudGx5CiMgdXNlICdfJyAodW5kZXJzY29yZSkgdG8gcmVw bGFjZSBwYXRoIHNlcGFyYXRvcnMgaW4gcGF0Y2ggZmlsZSBuYW1lcy4KIwojIElmIGEgZmlsZSBu YW1lIGhhcHBlbnMgdG8gY29udGFpbiBjaGFyYWN0ZXIgd2hpY2ggaXMgYWxzbyBhIHNlcGFyYXRv cgojIHJlcGxhY2VtZW50IGNoYXJhY3RlciwgaXQgd2lsbCBiZSBkb3VibGVkIGluIHRoZSByZXN1 bHRpbmcgcGF0Y2ggbmFtZS4KIwojIFRvIG1pbmltaXplIGdyYXR1aXRvdXMgcGF0Y2ggcmVuYW1l cywgbmV3bHkgZ2VuZXJhdGVkIHBhdGNoZXMgd2lsbCBiZQojIHdyaXR0ZW4gdW5kZXIgZXhpc3Rp bmcgZmlsZSBuYW1lcyB3aGVuIHRoZXkgdXNlIGFueSBvZiB0aGUgcHJldmlvdXNseQojIGNvbW1v biBwYXRoIHNlcGFyYXRvcnMgKFstK19dKSBvciBsZWdhY3kgZG91YmxlIHVuZGVyc2NvcmUgKF9f KS4KCi5pZiAhdGFyZ2V0KG1ha2VwYXRjaCkKUEFUQ0hfUEFUSF9TRVBBUkFUT1I9CV8KbWFrZXBh dGNoOgoJQCR7TUtESVJ9ICR7UEFUQ0hESVJ9CglAKGNkICR7UEFUQ0hfV1JLU1JDfTsgXAoJCWZv ciBmIGluIGAke0ZJTkR9IC1zIC4gLXR5cGUgZiAtbmFtZSAnKi5vcmlnJ2A7IGRvIFwKCQkJT1JJ Rz0kJHtmIy4vfTsgXAoJCQlORVc9JCR7T1JJRyUub3JpZ307IFwKCQkJY21wIC1zICQke09SSUd9 ICQke05FV30gJiYgY29udGludWU7IFwKCQkJISBmb3IgX2xwcyBpbiBgJHtFQ0hPfSBfIC0gKyB8 ICR7U0VEfSAtZSBcCgkJCQknc3wke1BBVENIX1BBVEhfU0VQQVJBVE9SfXxfX3wnYDsgZG8gXAoJ CQkJCVBBVENIPWAke0VDSE99ICQke05FV30gfCAke1NFRH0gLWUgInN8L3wkJHtfbHBzfXxnImA7 IFwKCQkJCQl0ZXN0IC1mICIke1BBVENIRElSfS9wYXRjaC0kJHtQQVRDSH0iICYmIGJyZWFrOyBc CgkJCWRvbmUgfHwgJHtFQ0hPfSAkJHtfU0VFTn0gfCAke0dSRVB9IC1xIC8kJHtQQVRDSH0gJiYg eyBcCgkJCQlQQVRDSD1gJHtFQ0hPfSAkJHtORVd9IHwgJHtTRUR9IC1lIFwKCQkJCQknc3wke1BB VENIX1BBVEhfU0VQQVJBVE9SfXwmJnxnJyAtZSBcCgkJCQkJJ3N8L3wke1BBVENIX1BBVEhfU0VQ QVJBVE9SfXxnJ2A7IFwKCQkJCV9TRUVOPSQke19TRUVOfS8kJHtQQVRDSH07IFwKCQkJfTsgXAoJ CQlPVVQ9JHtQQVRDSERJUn0vcGF0Y2gtJCR7UEFUQ0h9OyBcCgkJCSR7RUNIT30gJHtESUZGfSAt dWRwICQke09SSUd9ICQke05FV30gJz4nICQke09VVH07IFwKCQkJVFo9VVRDICR7RElGRn0gLXVk cCAkJHtPUklHfSAkJHtORVd9IHwgJHtTRUR9IC1lIFwKCQkJCScvXi0tLS9zfFwuWzAtOV0qICsw MDAwJCR8IFVUQ3wnIC1lIFwKCQkJCScvXisrKy9zfFwoW1s6Ymxhbms6XV1bLTAtOTouK10qXCkq JCR8fCcgXAoJCQkJCT4gJCR7T1VUfSB8fCAke1RSVUV9OyBcCgkJZG9uZSBcCgkpCi5lbmRpZgoK CiMgU3RhcnQgb2Ygb3B0aW9ucyBzZWN0aW9uCi5pZiBkZWZpbmVkKElOT1BUSU9OU01LKSB8fCAo ICFkZWZpbmVkKFVTRU9QVElPTlNNSykgJiYgIWRlZmluZWQoQUZURVJQT1JUTUspICkKCgojIEdl dCB0aGUgZGVmYXVsdCBtYWludGFpbmVyCk1BSU5UQUlORVI/PQlwb3J0c0BGcmVlQlNELm9yZwoK IyBHZXQgdGhlIGFyY2hpdGVjdHVyZQouaWYgIWRlZmluZWQoQVJDSCkKQVJDSCE9CSR7VU5BTUV9 IC1wCi5lbmRpZgoKIyBHZXQgdGhlIG9wZXJhdGluZyBzeXN0ZW0gdHlwZQouaWYgIWRlZmluZWQo T1BTWVMpCk9QU1lTIT0JJHtVTkFNRX0gLXMKLmVuZGlmCgpVTkFNRVIhPSR7VU5BTUV9IC1yCgoj IEdldCB0aGUgb3BlcmF0aW5nIHN5c3RlbSByZXZpc2lvbgpPU1JFTD89CSR7VU5BTUVSOkMvLS4q Ly99CgojIEdldCBfX0ZyZWVCU0RfdmVyc2lvbgouaWYgIWRlZmluZWQoT1NWRVJTSU9OKQouaWYg ZXhpc3RzKC91c3IvaW5jbHVkZS9zeXMvcGFyYW0uaCkKT1NWRVJTSU9OIT0JJHtBV0t9ICcvXlwj ZGVmaW5lW1s6Ymxhbms6XV1fX0ZyZWVCU0RfdmVyc2lvbi8ge3ByaW50ICQkM30nIDwgL3Vzci9p bmNsdWRlL3N5cy9wYXJhbS5oCi5lbGlmIGV4aXN0cygke1NSQ19CQVNFfS9zeXMvc3lzL3BhcmFt LmgpCk9TVkVSU0lPTiE9CSR7QVdLfSAnL15cI2RlZmluZVtbOmJsYW5rOl1dX19GcmVlQlNEX3Zl cnNpb24vIHtwcmludCAkJDN9JyA8ICR7U1JDX0JBU0V9L3N5cy9zeXMvcGFyYW0uaAouZWxzZQou ZXJyb3IgVW5hYmxlIHRvIGRldGVybWluZSBPUyB2ZXJzaW9uLiAgRWl0aGVyIGRlZmluZSBPU1ZF UlNJT04sIGluc3RhbGwgL3Vzci9pbmNsdWRlL3N5cy9wYXJhbS5oIG9yIGRlZmluZSBTUkNfQkFT RS4KLmVuZGlmCi5lbmRpZgoKIyBDb252ZXJ0IE9TVkVSU0lPTiB0byBtYWpvciByZWxlYXNlIG51 bWJlcgpfT1NWRVJTSU9OX01BSk9SPQkke09TVkVSU0lPTjpDLyhbMC05XT9bMC05XSkoWzAtOV1b MC05XSlbMC05XXszfS9cMS99CiMgU2FuaXR5IGNoZWNrcyBmb3IgY2hyb290L2phaWwgYnVpbGRp bmcuCiMgU2tpcCBpZiBPU1ZFUlNJT04gc3BlY2lmaWVkIG9uIGNtZGxpbmUgZm9yIHRlc3Rpbmcu IE9ubHkgd29ya3MgZm9yIGJtYWtlLgouaWYgIWRlZmluZWQoLk1BS0VPVkVSUklERVMpIHx8ICEk ey5NQUtFT1ZFUlJJREVTOk1PU1ZFUlNJT059Ci5pZiAke19PU1ZFUlNJT05fTUFKT1J9ICE9ICR7 VU5BTUVSOlJ9Ci5lcnJvciBVTkFNRV9yICgke1VOQU1FUn0pIGFuZCBPU1ZFUlNJT04gKCR7T1NW RVJTSU9OfSkgZG8gbm90IGFncmVlIG9uIG1ham9yIHZlcnNpb24gbnVtYmVyLgouZWxpZiAke19P U1ZFUlNJT05fTUFKT1J9ICE9ICR7T1NSRUw6Un0KLmVycm9yIE9TUkVMICgke09TUkVMfSkgYW5k IE9TVkVSU0lPTiAoJHtPU1ZFUlNJT059KSBkbyBub3QgYWdyZWUgb24gbWFqb3IgdmVyc2lvbiBu dW1iZXIuCi5lbmRpZgouZW5kaWYKCiMgT25seSBkZWZpbmUgdG9vbHMgaGVyZSAoZm9yIHRyYW5z aXRpb24gcGVyaW9kIHdpdGggYmV0d2VlbiBwa2cgdG9vbHMpCi5pbmNsdWRlICIke1BPUlRTRElS fS9Nay9ic2QuY29tbWFuZHMubWsiCgouaWYgZXhpc3RzKCR7UEtHX0JJTn0pCi5pZiAhZGVmaW5l ZChfUEtHX1ZFUlNJT04pCl9QS0dfVkVSU0lPTiE9CSR7UEtHX0JJTn0gLXYKLmVuZGlmCl9QS0df U1RBVFVTIT0JJHtQS0dfQklOfSB2ZXJzaW9uIC10ICR7X1BLR19WRVJTSU9OOkMvLS4qLy9nfSAk e01JTklNQUxfUEtHX1ZFUlNJT059Ci5pZiAke19QS0dfU1RBVFVTfSA9PSAiPCIKSUdOT1JFPQkJ cGtnKDgpIG11c3QgYmUgdmVyc2lvbiAke01JTklNQUxfUEtHX1ZFUlNJT059IG9yIGdyZWF0ZXIs IGJ1dCB5b3UgaGF2ZSAke19QS0dfVkVSU0lPTn0uIFlvdSBtdXN0IHVwZ3JhZGUgdGhlICR7UEtH X09SSUdJTn0gcG9ydCBmaXJzdAouZW5kaWYKLmVuZGlmCgpNQVNURVJESVI/PQkkey5DVVJESVJ9 CgouaWYgJHtNQVNURVJESVJ9ICE9ICR7LkNVUkRJUn0KU0xBVkVfUE9SVD89CXllcwpNQVNURVJf UE9SVD89JHtNQVNURVJESVI6Qy9bXlwvXStcL1wuXC5cLy8vOkMvW15cL10rXC9cLlwuXC8vLzpD L14uKlwvKFteXC9dK1wvW15cL10rKSQvXFwxL30KLmVsc2UKU0xBVkVfUE9SVD89CW5vCk1BU1RF Ul9QT1JUPz0KLmVuZGlmCgojIElmIHRoZXkgZXhpc3QsIGluY2x1ZGUgTWFrZWZpbGUuaW5jLCB0 aGVuIGFyY2hpdGVjdHVyZS9vcGVyYXRpbmcKIyBzeXN0ZW0gc3BlY2lmaWMgTWFrZWZpbGVzLCB0 aGVuIGxvY2FsIE1ha2VmaWxlLmxvY2FsLgoKLmlmICR7TUFTVEVSRElSfSAhPSAkey5DVVJESVJ9 ICYmIGV4aXN0cygkey5DVVJESVJ9Ly4uL01ha2VmaWxlLmluYykKLmluY2x1ZGUgIiR7LkNVUkRJ Un0vLi4vTWFrZWZpbGUuaW5jIgpVU0VfU1VCTUFLRT0JeWVzCi5lbmRpZgoKLmlmIGV4aXN0cygk e01BU1RFUkRJUn0vLi4vTWFrZWZpbGUuaW5jKQouaW5jbHVkZSAiJHtNQVNURVJESVJ9Ly4uL01h a2VmaWxlLmluYyIKVVNFX1NVQk1BS0U9CXllcwouZW5kaWYKCi5pZiBleGlzdHMoJHtNQVNURVJE SVJ9L01ha2VmaWxlLiR7QVJDSH0tJHtPUFNZU30pCi5pbmNsdWRlICIke01BU1RFUkRJUn0vTWFr ZWZpbGUuJHtBUkNIfS0ke09QU1lTfSIKVVNFX1NVQk1BS0U9CXllcwouZWxpZiBleGlzdHMoJHtN QVNURVJESVJ9L01ha2VmaWxlLiR7T1BTWVN9KQouaW5jbHVkZSAiJHtNQVNURVJESVJ9L01ha2Vm aWxlLiR7T1BTWVN9IgpVU0VfU1VCTUFLRT0JeWVzCi5lbGlmIGV4aXN0cygke01BU1RFUkRJUn0v TWFrZWZpbGUuJHtBUkNIfSkKLmluY2x1ZGUgIiR7TUFTVEVSRElSfS9NYWtlZmlsZS4ke0FSQ0h9 IgpVU0VfU1VCTUFLRT0JeWVzCi5lbmRpZgoKLmlmIGV4aXN0cygke01BU1RFUkRJUn0vTWFrZWZp bGUubG9jYWwpCi5pbmNsdWRlICIke01BU1RFUkRJUn0vTWFrZWZpbGUubG9jYWwiClVTRV9TVUJN QUtFPQl5ZXMKLmVuZGlmCgouZm9yIF9DQVRFR09SWSBpbiAke0NBVEVHT1JJRVN9ClBLR0NBVEVH T1JZPz0JJHtfQ0FURUdPUll9Ci5lbmRmb3IKX1BPUlRESVJOQU1FPQkkey5DVVJESVI6VH0KUE9S VERJUk5BTUU/PQkke19QT1JURElSTkFNRX0KUEtHT1JJR0lOPz0JCSR7UEtHQ0FURUdPUll9LyR7 UE9SVERJUk5BTUV9CgojIHdoZXJlICdtYWtlIGNvbmZpZycgcmVjb3JkcyB1c2VyIGNvbmZpZ3Vy YXRpb24gb3B0aW9ucwpQT1JUX0RCRElSPz0JL3Zhci9kYi9wb3J0cwoKVUlEX0ZJTEVTPz0JJHtQ T1JUU0RJUn0vVUlEcwpHSURfRklMRVM/PQkke1BPUlRTRElSfS9HSURzClVJRF9PRkZTRVQ/PQkw CkdJRF9PRkZTRVQ/PQkwCgojIHByZWRlZmluZWQgYWNjb3VudHMgZnJvbSBzcmMvZXRjL21hc3Rl ci5wYXNzd2QKIyBhbHBoYSBudW1lcmljIHNvcnQgb3JkZXIKVVNFUlNfQkxBQ0tMSVNUPQlfZGhj cCBfcGZsb2dkIGF1ZGl0ZGlzdGQgYmluIGJpbmQgZGFlbW9uIGdhbWVzIGhhc3Qga21lbSBtYWls bnVsbCBtYW4gbmV3cyBub2JvZHkgb3BlcmF0b3IgcG9wIHByb3h5IHJvb3Qgc21tc3Agc3NoZCB0 b29yIHR0eSB1dWNwIHd3dwoKTERDT05GSUdfRElSPQlsaWJkYXRhL2xkY29uZmlnCkxEQ09ORklH MzJfRElSPQlsaWJkYXRhL2xkY29uZmlnMzIKCi5pZiBkZWZpbmVkKExBVEVTVF9MSU5LKQpVTklR VUVOQU1FPz0JJHtMQVRFU1RfTElOS30KLmVsc2UKVU5JUVVFTkFNRT89CSR7UEtHTkFNRVBSRUZJ WH0ke1BPUlROQU1FfQouZW5kaWYKCi5lbmRpZgoKIyBBdCBsZWFzdCBLREUgbmVlZHMgVE1QRElS IGZvciB0aGUgcGFja2FnZSBidWlsZGluZywKIyBzbyB3ZSdyZSBzZXR0aW5nIGl0IHRvIHRoZSBr bm93biBkZWZhdWx0IHZhbHVlLgouaWYgZGVmaW5lZChQQUNLQUdFX0JVSUxESU5HKQpUTVBESVI/ PQkvdG1wCi5lbmRpZiAjIGRlZmluZWQoUEFDS0FHRV9CVUlMRElORykKCi5pZiBkZWZpbmVkKFdJ VEhfREVCVUdfUE9SVFMpCi5pZiAke1dJVEhfREVCVUdfUE9SVFM6TSR7UEtHT1JJR0lOfX0KV0lU SF9ERUJVRz0JeWVzCi5lbmRpZgouZW5kaWYKCi5pbmNsdWRlICIke1BPUlRTRElSfS9Nay9ic2Qu b3B0aW9ucy5tayIKCiMgU3RhcnQgb2YgcHJlLW1ha2VmaWxlIHNlY3Rpb24uCi5pZiAhZGVmaW5l ZChBRlRFUlBPUlRNSykgJiYgIWRlZmluZWQoSU5PUFRJT05TTUspCgouaWYgZGVmaW5lZChQT1JU TkFNRSkKLmluY2x1ZGUgIiR7UE9SVFNESVJ9L01rL2JzZC5zYW5pdHkubWsiCi5lbmRpZgoKX1BS RU1LSU5DTFVERUQ9CXllcwoKLmlmIGRlZmluZWQoUE9SVFZFUlNJT04pCi5pZiAke1BPUlRWRVJT SU9OOk0qWy1fLF0qfXggIT0geApJR05PUkU9CQkJUE9SVFZFUlNJT04gJHtQT1JUVkVSU0lPTn0g bWF5IG5vdCBjb250YWluICctJyAnXycgb3IgJywnCi5lbmRpZgpESVNUVkVSU0lPTj89CSR7UE9S VFZFUlNJT046Uy86Lzo6L2d9Ci5lbGlmIGRlZmluZWQoRElTVFZFUlNJT04pClBPUlRWRVJTSU9O PQkke0RJU1RWRVJTSU9OOnRsOkMvKFthLXpdKVthLXpdKy9cMS9nOkMvKFswLTldKShbYS16XSkv XDEuXDIvZzpDLzooLikvXDEvZzpDL1teYS16MC05K10rLy4vZ30KLmVuZGlmCgpQT1JUUkVWSVNJ T04/PQkwCi5pZiAke1BPUlRSRVZJU0lPTn0gIT0gMApfU1VGMT0JXyR7UE9SVFJFVklTSU9OfQou ZW5kaWYKClBPUlRFUE9DSD89CQkwCi5pZiAke1BPUlRFUE9DSH0gIT0gMApfU1VGMj0JLCR7UE9S VEVQT0NIfQouZW5kaWYKClBLR1ZFUlNJT049CSR7UE9SVFZFUlNJT046Qy9bLV8sXS8uL2d9JHtf U1VGMX0ke19TVUYyfQpQS0dOQU1FPQkke1BLR05BTUVQUkVGSVh9JHtQT1JUTkFNRX0ke1BLR05B TUVTVUZGSVh9LSR7UEtHVkVSU0lPTn0KRElTVFZFUlNJT05GVUxMPQkke0RJU1RWRVJTSU9OUFJF RklYfSR7RElTVFZFUlNJT046Qy86KC4pL1wxL2d9JHtESVNUVkVSU0lPTlNVRkZJWH0KLmlmIGRl ZmluZWQoVVNFX0dJVEhVQikgJiYgZW1wdHkoTUFTVEVSX1NJVEVTOk1HSEMpICYmIGVtcHR5KERJ U1ROQU1FKSAmJiBlbXB0eShVU0VfR0lUSFVCOk1ub2RlZmF1bHQpCl9HSVRIVUJfTVVTVF9TRVRf RElTVE5BTUU9CQl5ZXMKLmVsc2UKRElTVE5BTUU/PQkke1BPUlROQU1FfS0ke0RJU1RWRVJTSU9O RlVMTH0KLmVuZGlmCgpJTkRFWEZJTEU/PQkJSU5ERVgtJHtPU1ZFUlNJT046Qy8oWzAtOV0qKVsw LTldezV9L1wxL30KCkRPQ1NESVI/PQkJJHtQUkVGSVh9L3NoYXJlL2RvYy8ke1BPUlROQU1FfQpF WEFNUExFU0RJUj89CQkke1BSRUZJWH0vc2hhcmUvZXhhbXBsZXMvJHtQT1JUTkFNRX0KREFUQURJ Uj89CQkke1BSRUZJWH0vc2hhcmUvJHtQT1JUTkFNRX0KV1dXRElSPz0JCSR7UFJFRklYfS93d3cv JHtQT1JUTkFNRX0KRVRDRElSPz0JCSR7UFJFRklYfS9ldGMvJHtQT1JUTkFNRX0KCi5pZiBkZWZp bmVkKFVTRV9MSU5VWF9SUE0pCi5pbmNsdWRlICIke1BPUlRTRElSfS9Nay9ic2QubGludXgtcnBt Lm1rIgouZW5kaWYKCi5pZiBkZWZpbmVkKFVTRV9MSU5VWF9BUFBTKQouaW5jbHVkZSAiJHtQT1JU U0RJUn0vTWsvYnNkLmxpbnV4LWFwcHMubWsiCi5lbmRpZgoKLmlmIGRlZmluZWQoVVNFX1hPUkcp IHx8IGRlZmluZWQoWE9SR19DQVQpCi5pbmNsdWRlICIke1BPUlRTRElSfS9Nay9ic2QueG9yZy5t ayIKLmVuZGlmCgpQQUNLQUdFUz89CQkke1BPUlRTRElSfS9wYWNrYWdlcwpURU1QTEFURVM/PQkJ JHtQT1JUU0RJUn0vVGVtcGxhdGVzCktFWVdPUkRTPz0JCSR7UE9SVFNESVJ9L0tleXdvcmRzCgpQ QVRDSERJUj89CQkke01BU1RFUkRJUn0vZmlsZXMKRklMRVNESVI/PQkJJHtNQVNURVJESVJ9L2Zp bGVzClNDUklQVERJUj89CQkke01BU1RFUkRJUn0vc2NyaXB0cwpQS0dESVI/PQkJJHtNQVNURVJE SVJ9CgouaWYgZGVmaW5lZChVU0VfTElOVVhfUFJFRklYKQpQUkVGSVg6PQkJJHtMSU5VWEJBU0V9 Ck5PX01UUkVFPQkJeWVzCi5lbHNlClBSRUZJWD89CQkke0xPQ0FMQkFTRX0KLmVuZGlmCgouaWYg ZGVmaW5lZChVU0VfTElOVVhfUFJFRklYKQpMRENPTkZJR19DTUQ/PQkJCSR7TElOVVhCQVNFfS9z YmluL2xkY29uZmlnIC1yICR7TElOVVhCQVNFfQouZW5kaWYKClBLR0NPTVBBVERJUj89CQkke0xP Q0FMQkFTRX0vbGliL2NvbXBhdC9wa2cKCi5pZiBkZWZpbmVkKFVTRV9MT0NBTF9NSykKLmluY2x1 ZGUgIiR7UE9SVFNESVJ9L01rL2JzZC5sb2NhbC5tayIKLmVuZGlmCgouaWYgZGVmaW5lZChVU0Vf T1BFTlNTTCkKLmluY2x1ZGUgIiR7UE9SVFNESVJ9L01rL2JzZC5vcGVuc3NsLm1rIgouZW5kaWYK Ci5pZiBkZWZpbmVkKFVTRV9FTUFDUykKLmluY2x1ZGUgIiR7UE9SVFNESVJ9L01rL2JzZC5lbWFj cy5tayIKLmVuZGlmCgouaWYgZGVmaW5lZChVU0VfUEhQKQouaW5jbHVkZSAiJHtQT1JUU0RJUn0v TWsvYnNkLnBocC5tayIKLmVuZGlmCgouaWYgZGVmaW5lZChVU0VfRlBDKSB8fCBkZWZpbmVkKFdB TlRfRlBDX0JBU0UpIHx8IGRlZmluZWQoV0FOVF9GUENfQUxMKQouaW5jbHVkZSAiJHtQT1JUU0RJ Un0vTWsvYnNkLmZwYy5tayIKLmVuZGlmCgouaWYgZGVmaW5lZChVU0VfSkFWQSkKLmluY2x1ZGUg IiR7UE9SVFNESVJ9L01rL2JzZC5qYXZhLm1rIgouZW5kaWYKCi5pZiBkZWZpbmVkKFVTRV9SVUJZ KSB8fCBkZWZpbmVkKFVTRV9MSUJSVUJZKQouaW5jbHVkZSAiJHtQT1JUU0RJUn0vTWsvYnNkLnJ1 YnkubWsiCi5lbmRpZgoKLmlmIGRlZmluZWQoVVNFX09DQU1MKQouaW5jbHVkZSAiJHtQT1JUU0RJ Un0vTWsvYnNkLm9jYW1sLm1rIgouZW5kaWYKCi5pZiBkZWZpbmVkKFVTRV9BUEFDSEUpIHx8IGRl ZmluZWQoVVNFX0FQQUNIRV9CVUlMRCkgfHwgZGVmaW5lZChVU0VfQVBBQ0hFX1JVTikKLmluY2x1 ZGUgIiR7UE9SVFNESVJ9L01rL2JzZC5hcGFjaGUubWsiCi5lbmRpZgoKLmlmIGRlZmluZWQoVVNF X1FUNCkgfHwgZGVmaW5lZChVU0VfUVQ1KQouaW5jbHVkZSAiJHtQT1JUU0RJUn0vTWsvYnNkLnF0 Lm1rIgouZW5kaWYKCi5pZiBkZWZpbmVkKFVTRV9URVgpCi5pbmNsdWRlICIke1BPUlRTRElSfS9N ay9ic2QudGV4Lm1rIgouZW5kaWYKCi5pZiBkZWZpbmVkKFVTRV9HRUNLTykKLmluY2x1ZGUgIiR7 UE9SVFNESVJ9L01rL2JzZC5nZWNrby5tayIKLmVuZGlmCgouaWYgZGVmaW5lZChXQU5UX0dOT01F KSB8fCBkZWZpbmVkKFVTRV9HTk9NRSkgfHwgZGVmaW5lZChJTlNUQUxMU19JQ09OUykKLmluY2x1 ZGUgIiR7UE9SVFNESVJ9L01rL2JzZC5nbm9tZS5tayIKLmVuZGlmCgouaWYgZGVmaW5lZChVU0Vf TUFURSkKLmluY2x1ZGUgIiR7UE9SVFNESVJ9L01rL2JzZC5tYXRlLm1rIgouZW5kaWYKCi5pZiBk ZWZpbmVkKFdBTlRfV1gpIHx8IGRlZmluZWQoVVNFX1dYKSB8fCBkZWZpbmVkKFVTRV9XWF9OT1Qp Ci5pbmNsdWRlICIke1BPUlRTRElSfS9Nay9ic2Qud3gubWsiCi5lbmRpZgoKLmlmIGRlZmluZWQo V0FOVF9HU1RSRUFNRVIpIHx8IGRlZmluZWQoVVNFX0dTVFJFQU1FUikgfHwgZGVmaW5lZChVU0Vf R1NUUkVBTUVSMSkKLmluY2x1ZGUgIiR7UE9SVFNESVJ9L01rL2JzZC5nc3RyZWFtZXIubWsiCi5l bmRpZgoKLmlmIGRlZmluZWQoVVNFX1NETCkgfHwgZGVmaW5lZChXQU5UX1NETCkKLmluY2x1ZGUg IiR7UE9SVFNESVJ9L01rL2JzZC5zZGwubWsiCi5lbmRpZgoKLmlmIGRlZmluZWQoVVNFX0tERTQp IHx8IGRlZmluZWQoS0RFNF9CVUlMREVOVikKLmluY2x1ZGUgIiR7UE9SVFNESVJ9L01rL2JzZC5r ZGU0Lm1rIgouZW5kaWYKCi5pZiAhZGVmaW5lZChVSUQpClVJRCE9CSR7SUR9IC11Ci5lbmRpZgoK REVTVERJUk5BTUU/PQlERVNURElSCgojIExvYWRpbmcgZmVhdHVyZXMKLmZvciBmIGluICR7VVNF U30KX2Y6PQkJJHtmOkMvXDouKi8vfQouaWYgIWRlZmluZWQoJHtfZn1fQVJHUykKJHtfZn1fQVJH Uzo9CSR7ZjpDL15bXlw6XSooXDp8XCQpLy86Uy8sLyAvZ30KLmVuZGlmCi5lbmRmb3IKLmZvciBm IGluICR7VVNFU30KLmluY2x1ZGUgIiR7VVNFU0RJUn0vJHtmOkMvXDouKi8vfS5tayIKLmVuZGZv cgoKRVhUUkFDVF9TVUZYPz0JCQkudGFyLmd6CgojIFlvdSBjYW4gZm9yY2Ugc2tpcHBpbmcgdGhl c2UgdGVzdCBieSBkZWZpbmluZyBJR05PUkVfUEFUSF9DSEVDS1MKLmlmICFkZWZpbmVkKElHTk9S RV9QQVRIX0NIRUNLUykKLmlmICEgJHtQUkVGSVg6TS8qfQouQkVHSU46CglAJHtFQ0hPX01TR30g IlBSRUZJWCBtdXN0IGJlIGRlZmluZWQgYXMgYW4gYWJzb2x1dGUgcGF0aCBzbyB0aGF0IHdoZW4g J21ha2UnIgoJQCR7RUNIT19NU0d9ICJpcyBpbnZva2VkIGluIHRoZSB3b3JrIGFyZWEgUFJFRklY IHBvaW50cyB0byB0aGUgcmlnaHQgcGxhY2UuIgoJQCR7RkFMU0V9Ci5lbmRpZgouZW5kaWYKCiMg T3duZXIgYW5kIGdyb3VwIG9mIHRoZSBXV1cgdXNlcgpXV1dPV04/PQl3d3cKV1dXR1JQPz0Jd3d3 CgojIEtlZXAgUEtHTkdfT1JJR0lOL1dJVEhfUEtHTkcgZm9yIGNvbXBhdCB3aXRoIHNjcmlwdHMg d2hpY2ggYXJlIGxvb2tpbmcgZm9yIGl0ClBLR19PUklHSU4/PQlwb3J0cy1tZ210L3BrZwpQS0dO R19PUklHSU49CSR7UEtHX09SSUdJTn0KV0lUSF9QS0dORz89CXllcwpXSVRIX1BLRz89CSR7V0lU SF9QS0dOR30KCi5lbmRpZgojIEVuZCBvZiBwcmUtbWFrZWZpbGUgc2VjdGlvbi4KCiMgU3RhcnQg b2YgcG9zdC1tYWtlZmlsZSBzZWN0aW9uLgouaWYgIWRlZmluZWQoQkVGT1JFUE9SVE1LKSAmJiAh ZGVmaW5lZChJTk9QVElPTlNNSykKCi5pZiBkZWZpbmVkKF9QT1NUTUtJTkNMVURFRCkKREVWX0VS Uk9SKz0JIiR7UEtHTkFNRX06IE1ha2VmaWxlIGVycm9yOiB5b3UgY2Fubm90IGluY2x1ZGUgYnNk LnBvcnRbLnBvc3RdLm1rIHR3aWNlIgoJQCR7RkFMU0V9Ci5lbmRpZgoKX1BPU1RNS0lOQ0xVREVE PQl5ZXMKCi5pZiBkZWZpbmVkKEJVTkRMRV9MSUJTKQpQS0dfTk9URVMrPQlub19wcm92aWRlX3No bGliClBLR19OT1RFX25vX3Byb3ZpZGVfc2hsaWI9CXllcwouZW5kaWYKClBLR19FTlYrPQkJUE9S VFNESVI9JHtQT1JUU0RJUn0KQ09ORklHVVJFX0VOVis9CVhER19EQVRBX0hPTUU9JHtXUktESVJ9 IFwKCQkJCVhER19DT05GSUdfSE9NRT0ke1dSS0RJUn0gXAoJCQkJSE9NRT0ke1dSS0RJUn0KTUFL RV9FTlYrPQkJWERHX0RBVEFfSE9NRT0ke1dSS0RJUn0gXAoJCQkJWERHX0NPTkZJR19IT01FPSR7 V1JLRElSfSBcCgkJCQlIT01FPSR7V1JLRElSfQojIFJlc3BlY3QgVE1QRElSIHBhc3NlZCB2aWEg bWFrZS5jb25mIG9yIHNpbWlsYXIgYW5kIHBhc3MgaXQgZG93bgojIHRvIGNvbmZpZ3VyZSBhbmQg bWFrZS4KLmlmIGRlZmluZWQoVE1QRElSKQpNQUtFX0VOVis9CQlUTVBESVI9IiR7VE1QRElSfSIK Q09ORklHVVJFX0VOVis9CVRNUERJUj0iJHtUTVBESVJ9IgouZW5kaWYgIyBkZWZpbmVkKFRNUERJ UikKClFBX0VOVis9CQlTVEFHRURJUj0ke1NUQUdFRElSfSBcCgkJCQlQUkVGSVg9JHtQUkVGSVh9 IFwKCQkJCUxJTlVYQkFTRT0ke0xJTlVYQkFTRX0gXAoJCQkJTE9DQUxCQVNFPSR7TE9DQUxCQVNF fSBcCgkJCQkiU1RSSVA9JHtTVFJJUH0iIFwKCQkJCVRNUFBMSVNUPSR7VE1QUExJU1R9Ci5pZiAh ZW1wdHkoVVNFUzpNZGVza3RvcC1maWxlLXV0aWxzKQpRQV9FTlYrPQkJVVNFU0RFU0tUT1BGSUxF VVRJTFM9eWVzCi5lbmRpZgouaWYgIWVtcHR5KFVTRVM6TWxpYnRvb2wqKQpRQV9FTlYrPQkJVVNF U0xJQlRPT0w9eWVzCi5lbmRpZgouaWYgIWVtcHR5KFVTRVM6TXNoYXJlZC1taW1lLWluZm8pClFB X0VOVis9CQlVU0VTU0hBUkVETUlNRUlORk89eWVzCi5lbmRpZgoKQ09fRU5WKz0JCVNUQUdFRElS PSR7U1RBR0VESVJ9IFwKCQkJCVBSRUZJWD0ke1BSRUZJWH0gXAoJCQkJTE9DQUxCQVNFPSR7TE9D QUxCQVNFfSBcCgkJCQlXUktESVI9JHtXUktESVJ9IFwKCQkJCVdSS1NSQz0ke1dSS1NSQ30gXAoJ CQkJTVRSRUVfRklMRT0ke01UUkVFX0ZJTEV9IFwKCQkJCVRNUFBMSVNUPSR7VE1QUExJU1R9IFwK CQkJCVNDUklQVFNESVI9JHtTQ1JJUFRTRElSfSBcCgkJCQlQTElTVF9TVUJfU0VEPSIke1BMSVNU X1NVQl9TRUR9IiBcCgkJCQlQT1JUX09QVElPTlM9IiR7UE9SVF9PUFRJT05TfSIgXAoJCQkJUE9S VFNESVI9IiR7UE9SVFNESVJ9IgoKLmlmIGRlZmluZWQoWF9CVUlMRF9GT1IpCi5pZiAke0NDfSA9 PSBnY2MKQ09ORklHVVJFX1RBUkdFVD0JJHtBUkNIfS1wb3J0YmxkLSR7T1BTWVM6dGx9JHtPU1JF TH0KQ0M9CQkJJHtDT05GSUdVUkVfVEFSR0VUfS1nY2MKQ1hYPQkJCSR7QVJDSH0tcG9ydGJsZC0k e09QU1lTOnRsfSR7T1NSRUx9LWcrKwpCVUlMRF9ERVBFTkRTKz0JCSR7Q09ORklHVVJFX1RBUkdF VH0tZ2NjOiR7UE9SVFNESVJ9L2RldmVsLyR7QVJDSH0tZ2NjCiAgICAgICAgCQlAaWYgWyAhIC1o IC91c3IvbG9jYWwvYmluL21pcHMtcG9ydGJsZC1mcmVlYnNkMTEuMC1hciAgXTsgdGhlbiBcCgkJ CSAgIGxuIC1zZiAvdXNyL2xvY2FsL2Jpbi9taXBzLWZyZWVic2QtYXIgL3Vzci9sb2NhbC9iaW4v bWlwcy1wb3J0YmxkLWZyZWVic2QxMS4wLWFyIDsgXAoJCQlmaSA7CgkJCWlmIFsgISAtaCAvdXNy L2xvY2FsL2Jpbi9taXBzLXBvcnRibGQtZnJlZWJzZDExLjAtbm0gIF07IHRoZW4gXAoJCQkgICBs biAtc2YgL3Vzci9sb2NhbC9iaW4vbWlwcy1mcmVlYnNkLW5tIC91c3IvbG9jYWwvYmluL21pcHMt cG9ydGJsZC1mcmVlYnNkMTEuMC1ubSA7IFwKCQkJZmkgOwoJCQlpZiBbICEgLWggL3Vzci9sb2Nh bC9iaW4vbWlwcy1wb3J0YmxkLWZyZWVic2QxMS4wLXJhbmxpYiAgXTsgdGhlbiBcCgkJCSAgIGxu IC1zZiAvdXNyL2xvY2FsL2Jpbi9taXBzLWZyZWVic2QtcmFubGliIC91c3IvbG9jYWwvYmluL21p cHMtcG9ydGJsZC1mcmVlYnNkMTEuMC1yYW5saWIgOyBcCgkJCWZpIDsKCQkJaWYgWyAhIC1oIC91 c3IvbG9jYWwvYmluL21pcHMtcG9ydGJsZC1mcmVlYnNkMTEuMC1zdHJpcCAgXTsgdGhlbiBcCgkJ CSAgIGxuIC1zZiAvdXNyL2xvY2FsL2Jpbi9taXBzLWZyZWVic2Qtc3RyaXAgL3Vzci9sb2NhbC9i aW4vbWlwcy1wb3J0YmxkLWZyZWVic2QxMS4wLXN0cmlwIDsgXAoJCQlmaQoKLmVuZGlmCi5pZiAk e0NDfSA9PSBjYyB8fCAke0NDfSA9PSBjbGFuZwpDT05GSUdVUkVfVEFSR0VUPSAgICAgICAke0FS Q0h9LXBvcnRibGQtJHtPUFNZUzp0bH0ke09TUkVMfQpDRkxBR1MrPQkJLS10YXJnZXQ9JHtDT05G SUdVUkVfVEFSR0VUfQouZW5kaWYKClBLR19FTlYrPQkJQUJJX0ZJTEU9JHtTWVNST09UfS91c3Iv bGliL2NydDEubwpOTT0JCQkke05NfQpMRD0JCQkke0NPTkZJR1VSRV9UQVJHRVR9LWdjYy1sZApB Uj0JCQkke0NPTkZJR1VSRV9UQVJHRVR9LWdjYy1hcgpSQU5MSUI9CQkJJHtDT05GSUdVUkVfVEFS R0VUfS1nY2MtcmFubGliCklOQ1M9CQkJLUkke1NSQ0RJUn0vLi4vcm9vdC8ke0FSQ0h9L3Vzci9p bmNsdWRlCkNST1NTX0NPTVBJTEU9CQkke0FSQ0h9LXBvcnRibGQtZnJlZWJzZCR7T1NfUkVMfQpT WVNST09UPQkJJHtTUkNESVJ9Ly4uL3Jvb3QvJHtBUkNIfQpDRkxBR1MrPQkJLS1zeXNyb290PSR7 U1lTUk9PVH0gJHtDUFVfQVJHU30gJHtJTkNTfSAtTwpDWFhGTEFHUys9CQktLXN5c3Jvb3Q9JHtT WVNST09UfSAke0NQVV9BUkdTfSAke0lOQ1N9IC1PCkxERkxBR1MrPQkJLS1zeXNyb290PSR7U1lT Uk9PVH0KU1RSSVBCSU49CQkke1NUUklQfQpQS0dfQ09ORklHX1NZU1JPT1RfRElSPQkiJHtTWVNS T09UfSIKQ09ORklHVVJFX0VOVis9CQlQS0dfQ09ORklHX1NZU1JPT1RfRElSPSIke1NZU1JPT1R9 IgouZW5kaWYKCldSS0RJUj89CQkke1dSS0RJUlBSRUZJWH0key5DVVJESVJ9L3dvcmsKLmlmICFk ZWZpbmVkKElHTk9SRV9NQVNURVJfU0lURV9HSVRIVUIpICYmIGRlZmluZWQoVVNFX0dJVEhVQikK V1JLU1JDPz0JCSR7V1JLRElSfS8ke0dIX1BST0pFQ1R9LSR7R0hfVEFHTkFNRV9FWFRSQUNUfQou ZW5kaWYKLmlmIGRlZmluZWQoTk9fV1JLU1VCRElSKQpXUktTUkM/PQkJJHtXUktESVJ9Ci5lbHNl CldSS1NSQz89CQkke1dSS0RJUn0vJHtESVNUTkFNRX0KLmVuZGlmCi5pZiBkZWZpbmVkKFdSS1NS Q19TVUJESVIpCldSS1NSQzo9CQkke1dSS1NSQ30vJHtXUktTUkNfU1VCRElSfQouZW5kaWYKClBB VENIX1dSS1NSQz89CSR7V1JLU1JDfQpDT05GSUdVUkVfV1JLU1JDPz0JJHtXUktTUkN9CkJVSUxE X1dSS1NSQz89CSR7V1JLU1JDfQpJTlNUQUxMX1dSS1NSQz89JHtXUktTUkN9CgpQTElTVF9TVUIr PQlPU1JFTD0ke09TUkVMfSBQUkVGSVg9JUQgTE9DQUxCQVNFPSR7TE9DQUxCQVNFfSBcCgkJCVJF U0VUUFJFRklYPSR7UFJFRklYfQpTVUJfTElTVCs9CVBSRUZJWD0ke1BSRUZJWH0gTE9DQUxCQVNF PSR7TE9DQUxCQVNFfSBcCgkJREFUQURJUj0ke0RBVEFESVJ9IERPQ1NESVI9JHtET0NTRElSfSBF WEFNUExFU0RJUj0ke0VYQU1QTEVTRElSfSBcCgkJV1dXRElSPSR7V1dXRElSfSBFVENESVI9JHtF VENESVJ9CiMgVGhpcyBpcyB1c2VkIGZvciBjaGVjay1zdGFnZWRpci5zaCBhbmQgY2hlY2tfbGVm dG92ZXIuc2ggdG8gcmVwbGFjZQojIGRpcmVjdG9yaWVzL2ZpbGVzIHdpdGggUExJU1RfU1VCICUl S0VZUyUlLgojICBSZW1vdmUgVkFSUyB0aGF0IGFyZSB0b28gZ2VuZXJpYwojICBSZW1vdmUgZW1w dHkgdmFsdWVzCiMgIFJlbW92ZSBAY29tbWVudCB2YWx1ZXMKIyAgUmVtb3ZlIHF1b3RlcwojICBS ZXBsYWNlIC4gd2l0aCBcLiBmb3IgbGF0ZXIgc2VkKDEpIHVzYWdlClBMSVNUX1NVQl9TRURfTUlO Pz0JMgpQTElTVF9TVUJfU0VEPz0gJHtQTElTVF9TVUI6Qy8uKj0uezEsJHtQTElTVF9TVUJfU0VE X01JTn19JC8vZzpORVhUUkFDVF9TVUZYPSo6Tk9TUkVMPSo6TkxJQjMyRElSPSo6TlBSRUZJWD0q Ok5MT0NBTEJBU0U9KjpOUkVTRVRQUkVGSVg9KjpOKj0iIjpOKj0iQGNvbW1lbnQqOkMvKFtePV0q KT0iPyhbXiJdKikiPy9zIVwyISUlXDElJSFnOy9nOkMvXC4vXFwuL2d9CgojIGtsdWRnZSB0byBz dHJpcCB0cmFpbGluZyB3aGl0ZXNwYWNlIGZyb20gQ0ZMQUdTOwojIHN1Yi1jb25maWd1cmUgd2ls bCBub3QgIyBzdXJ2aXZlIGRvdWJsZSBzcGFjZQpDRkxBR1M6PQkke0NGTEFHUzpDLyAkLy99Cgou aWYgZGVmaW5lZChXSVRIT1VUX0NQVV9DRkxBR1MpCi5pZiBkZWZpbmVkKF9DUFVDRkxBR1MpCi5p ZiAhZW1wdHkoX0NQVUNGTEFHUykKQ0ZMQUdTOj0JJHtDRkxBR1M6Qy8ke19DUFVDRkxBR1N9Ly99 Ci5lbmRpZgouZW5kaWYKLmVuZGlmCgojIFJlc2V0IHZhbHVlIGZyb20gYnNkLm93bi5tay4KLmlm IGRlZmluZWQoV0lUSF9ERUJVRykgJiYgIWRlZmluZWQoV0lUSE9VVF9ERUJVRykKLmlmICFkZWZp bmVkKElOU1RBTExfU1RSSVBQRUQpClNUUklQPQkjbm9uZQpNQUtFX0VOVis9CURPTlRTVFJJUD15 ZXMKU1RSSVBfQ01EPQkke1RSVUV9Ci5lbmRpZgpERUJVR19GTEFHUz89CS1nCkNGTEFHUzo9CQkk e0NGTEFHUzpOLU8qOk4tZm5vLXN0cmljdCp9ICR7REVCVUdfRkxBR1N9Ci5pZiBkZWZpbmVkKElO U1RBTExfVEFSR0VUKQpJTlNUQUxMX1RBUkdFVDo9CSR7SU5TVEFMTF9UQVJHRVQ6Uy9eaW5zdGFs bC1zdHJpcCQvaW5zdGFsbC9nfQouZW5kaWYKLmVuZGlmCgouaWYgIWRlZmluZWQoV0lUSE9VVF9T U1ApCi5pbmNsdWRlICIke1BPUlRTRElSfS9Nay9ic2Quc3NwLm1rIgouZW5kaWYKCiMgWFhYIFBJ RSBzdXBwb3J0IHRvIGJlIGFkZGVkIGhlcmUKTUFLRV9FTlYrPQlOT19QSUU9eWVzCgouaWYgZGVm aW5lZChOT1BPUlRET0NTKQpQTElTVF9TVUIrPQkJUE9SVERPQ1M9IkBjb21tZW50ICIKLmVsc2UK UExJU1RfU1VCKz0JCVBPUlRET0NTPSIiCi5lbmRpZgoKLmlmIGRlZmluZWQoTk9QT1JURVhBTVBM RVMpClBMSVNUX1NVQis9CSAgICAgICAgUE9SVEVYQU1QTEVTPSJAY29tbWVudCAiCi5lbHNlClBM SVNUX1NVQis9CSAgICAgICAgUE9SVEVYQU1QTEVTPSIiCi5lbmRpZgoKQ09ORklHVVJFX1NIRUxM Pz0JJHtTSH0KTUFLRV9TSEVMTD89CSR7U0h9CgpDT05GSUdVUkVfRU5WKz0JU0hFTEw9JHtDT05G SUdVUkVfU0hFTEx9IENPTkZJR19TSEVMTD0ke0NPTkZJR1VSRV9TSEVMTH0KTUFLRV9FTlYrPQkJ U0hFTEw9JHtNQUtFX1NIRUxMfSBOT19MSU5UPVlFUwoKLmlmIGRlZmluZWQoUEFUQ0hGSUxFUykg JiYgJHtQQVRDSEZJTEVTOk0qLnppcH0KUEFUQ0hfREVQRU5EUys9CQkke0xPQ0FMQkFTRX0vYmlu L3VuemlwOiR7UE9SVFNESVJ9L2FyY2hpdmVycy91bnppcAouZW5kaWYKCiMgQ2hlY2sgdGhlIGNv bXBhdGliaWxpdHkgbGF5ZXIgZm9yIGFtZDY0L2lhNjQKCi5pZiAke0FSQ0h9ID09ICJhbWQ2NCIg fHwgJHtBUkNIfSA9PSJpYTY0IgouaWYgZXhpc3RzKC91c3IvbGliMzIpCkhBVkVfQ09NUEFUX0lB MzJfTElCUz89ICBZRVMKLmVuZGlmCi5pZiAhZGVmaW5lZChIQVZFX0NPTVBBVF9JQTMyX0tFUk4p CkhBVkVfQ09NUEFUX0lBMzJfS0VSTiE9IGlmICR7U1lTQ1RMfSAtbiBjb21wYXQuaWEzMi5tYXh2 bWVtID4vZGV2L251bGwgMj4mMTsgdGhlbiBlY2hvIFlFUzsgZmk7IGVjaG8KLmlmIGVtcHR5KEhB VkVfQ09NUEFUX0lBMzJfS0VSTikKLnVuZGVmIEhBVkVfQ09NUEFUX0lBMzJfS0VSTgouZW5kaWYK LmVuZGlmCi5lbmRpZgoKLmlmIGRlZmluZWQoSUEzMl9CSU5BUllfUE9SVCkgJiYgJHtBUkNIfSAh PSAiaTM4NiIKLmlmICR7QVJDSH0gPT0gImFtZDY0IiB8fCAke0FSQ0h9ID09ICJpYTY0IgouaWYg IWRlZmluZWQoSEFWRV9DT01QQVRfSUEzMl9LRVJOKQpJR05PUkU9CQlyZXF1aXJlcyBhIGtlcm5l bCB3aXRoIGNvbXBpbGVkLWluIElBMzIgY29tcGF0aWJpbGl0eQouZWxpZiAhZGVmaW5lZChIQVZF X0NPTVBBVF9JQTMyX0xJQlMpCklHTk9SRT0JCXJlcXVpcmVzIDMyLWJpdCBsaWJyYXJpZXMgaW5z dGFsbGVkIHVuZGVyIC91c3IvbGliMzIKLmVuZGlmCl9MRENPTkZJR19GTEFHUz0tMzIKTElCMzJE SVI9CWxpYjMyCi5lbHNlCklHTk9SRT0JCXJlcXVpcmVzIGkzODYgKG9yIGNvbXBhdGlibGUpIHBs YXRmb3JtIHRvIHJ1bgouZW5kaWYKLmVsc2UKTElCMzJESVI9CWxpYgouZW5kaWYKUExJU1RfU1VC Kz0JTElCMzJESVI9JHtMSUIzMkRJUn0KCi5pZiAke1dJVEhfUEtHfSA9PSBkZXZlbApQS0dfT1JJ R0lOPQkJcG9ydHMtbWdtdC9wa2ctZGV2ZWwKLmVuZGlmCgouaWYgIWRlZmluZWQoUEtHX0RFUEVO RFMpICYmICFkZWZpbmVkKENMRUFOX0ZFVENIX0VOVikKUEtHX0RFUEVORFMrPQkke0xPQ0FMQkFT RX0vc2Jpbi9wa2c6JHtQT1JUU0RJUn0vJHtQS0dfT1JJR0lOfQouZW5kaWYKCi5pZiBkZWZpbmVk KFVTRV9HQ0MpCi5pbmNsdWRlICIke1BPUlRTRElSfS9Nay9ic2QuZ2NjLm1rIgouZW5kaWYKCi5p ZiBkZWZpbmVkKFVTRV9CSU5VVElMUykgJiYgIWRlZmluZWQoRElTQUJMRV9CSU5VVElMUykKQlVJ TERfREVQRU5EUys9CSR7TE9DQUxCQVNFfS9iaW4vYXM6JHtQT1JUU0RJUn0vZGV2ZWwvYmludXRp bHMKQklOVVRJTFM/PQlBRERSMkxJTkUgQVIgQVMgQ1BQRklMVCBHUFJPRiBMRCBOTSBPQkpDT1BZ IE9CSkRVTVAgUkFOTElCIFwKCVJFQURFTEYgU0laRSBTVFJJTkdTCkJJTlVUSUxTX05PX01BS0Vf RU5WPz0KLiBmb3IgYiBpbiAke0JJTlVUSUxTfQoke2J9PQkke0xPQ0FMQkFTRX0vYmluLyR7YjpD L1BQLysrLzp0bH0KLiAgaWYgZGVmaW5lZChHTlVfQ09ORklHVVJFKSB8fCBkZWZpbmVkKEJJTlVU SUxTX0NPTkZJR1VSRSkKQ09ORklHVVJFX0VOVis9CSR7Yn09IiR7JHtifX0iCi4gIGVuZGlmCi4g IGlmICR7QklOVVRJTFNfTk9fTUFLRV9FTlY6TSR7Yn19ID09ICIiCk1BS0VfRU5WKz0JJHtifT0i JHske2J9fSIKLiAgZW5kaWYKLiBlbmRmb3IKLmVuZGlmCgouaWYgZGVmaW5lZChVU0VfT1BFTkxE QVApIHx8IGRlZmluZWQoV0FOVF9PUEVOTERBUF9WRVIpCi5pbmNsdWRlICIke1BPUlRTRElSfS9N ay9ic2QubGRhcC5tayIKLmVuZGlmCgouaWYgZGVmaW5lZChVU0VfUkNfU1VCUikgJiYgJHtVU0Vf UkNfU1VCUjp0dX0gIT0gIllFUyIKU1VCX0ZJTEVTKz0JJHtVU0VfUkNfU1VCUn0KLmVuZGlmCgou aWYgZGVmaW5lZChVU0VfUkNPUkRFUikKU1VCX0ZJTEVTKz0JJHtVU0VfUkNPUkRFUn0KLmVuZGlm CgouaWYgZGVmaW5lZChVU0VfTERDT05GSUcpICYmICR7VVNFX0xEQ09ORklHOnRsfSA9PSAieWVz IgpVU0VfTERDT05GSUc9CSR7UFJFRklYfS9saWIKLmVuZGlmCi5pZiBkZWZpbmVkKFVTRV9MRENP TkZJRzMyKSAmJiAke1VTRV9MRENPTkZJRzMyOnRsfSA9PSAieWVzIgpJR05PUkU9CQkJaGFzIFVT RV9MRENPTkZJRzMyIHNldCB0byB5ZXMsIHdoaWNoIGlzIG5vdCBjb3JyZWN0Ci5lbmRpZgoKLmlm IGRlZmluZWQoVVNFX0xJTlVYX1BSRUZJWCkgJiYgZGVmaW5lZChVU0VfTERDT05GSUcpCiMgd2Ug bmVlZCAke0xJTlVYQkFTRX0vc2Jpbi9sZGNvbmZpZwpVU0VfTElOVVg/PQl5ZXMKLmVuZGlmCgou aWYgZGVmaW5lZChVU0VfTElOVVgpCgouICBpZiAhZGVmaW5lZChMSU5VWF9PU1JFTEVBU0UpCkxJ TlVYX09TUkVMRUFTRSE9CSR7RUNIT19DTUR9IGAke1NZU0NUTH0gLW4gY29tcGF0LmxpbnV4Lm9z cmVsZWFzZSAyPi9kZXYvbnVsbGAKLiAgZW5kaWYKCiMgaW5zdGFsbCgxKSBhbHNvIGRvZXMgYSBi cmFuZGVsZiBvbiBzdHJpcCwgc28gZG9uJ3Qgc3RyaXAgd2l0aCBGcmVlQlNEIHRvb2xzLgpTVFJJ UD0KLglpZiBleGlzdHMoJHtMSU5VWEJBU0V9L3Vzci9iaW4vc3RyaXApClNUUklQX0NNRD0JJHtM SU5VWEJBU0V9L3Vzci9iaW4vc3RyaXAKLgllbHNlClNUUklQX0NNRD0JJHtUUlVFfQouCWVuZGlm CgojIEFsbG93IHRoZSB1c2VyIHRvIHNwZWNpZnkgYW5vdGhlciBsaW51eF9iYXNlIHZlcnNpb24u Ci4JaWYgZGVmaW5lZChPVkVSUklERV9MSU5VWF9CQVNFX1BPUlQpCi4JCWlmICR7VVNFX0xJTlVY OnRsfSA9PSB5ZXMKVVNFX0xJTlVYPQkke09WRVJSSURFX0xJTlVYX0JBU0VfUE9SVH0KLgkJZW5k aWYKLgllbmRpZgoKIyBOT1RFOiB3aGVuIHlvdSB1cGRhdGUgdGhlIGRlZmF1bHQgbGludXhfYmFz ZSB2ZXJzaW9uIChjYXNlICJ5ZXMiKSwKIyBkb24ndCBmb3JnZXQgdG8gdXBkYXRlIHRoZSBIYW5k Ym9vayEKCi4JaWYgZXhpc3RzKCR7UE9SVFNESVJ9L2VtdWxhdG9ycy9saW51eF9iYXNlLSR7VVNF X0xJTlVYfSkKTElOVVhfQkFTRV9QT1JUPQkke0xJTlVYQkFTRX0vYmluL3NoOiR7UE9SVFNESVJ9 L2VtdWxhdG9ycy9saW51eF9iYXNlLSR7VVNFX0xJTlVYfQouCWVsc2UKLgkJaWYgJHtVU0VfTElO VVg6dGx9ID09ICJ5ZXMiClVTRV9MSU5VWD0JYzYKTElOVVhfQkFTRV9QT1JUPQkke0xJTlVYQkFT RX0vZXRjL3JlZGhhdC1yZWxlYXNlOiR7UE9SVFNESVJ9L2VtdWxhdG9ycy9saW51eF9iYXNlLWM2 Ci4JCWVsc2UKSUdOT1JFPQkJY2Fubm90IGJlIGJ1aWx0OiB0aGVyZSBpcyBubyBlbXVsYXRvcnMv bGludXhfYmFzZS0ke1VTRV9MSU5VWH0sIHBlcmhhcHMgd3JvbmcgdXNlIG9mIFVTRV9MSU5VWCBv ciBPVkVSUklERV9MSU5VWF9CQVNFX1BPUlQKLgkJZW5kaWYKLgllbmRpZgoKUlVOX0RFUEVORFMr PQkke0xJTlVYX0JBU0VfUE9SVH0KLmVuZGlmCgpQS0dfSUdOT1JFX0RFUEVORFM/PQkJJ3RoaXNf cG9ydF9kb2VzX25vdF9leGlzdCcKCl9HTF9nYm1fTElCX0RFUEVORFM9CQlsaWJnYm0uc286JHtQ T1JUU0RJUn0vZ3JhcGhpY3MvZ2JtCl9HTF9nbGVzdjJfQlVJTERfREVQRU5EUz0JCWxpYmdsZXN2 Mj4wOiR7UE9SVFNESVJ9L2dyYXBoaWNzL2xpYmdsZXN2MgpfR0xfZ2xlc3YyX1JVTl9ERVBFTkRT PQkJbGliZ2xlc3YyPjA6JHtQT1JUU0RJUn0vZ3JhcGhpY3MvbGliZ2xlc3YyCl9HTF9lZ2xfQlVJ TERfREVQRU5EUz0JCWxpYkVHTD4wOiR7UE9SVFNESVJ9L2dyYXBoaWNzL2xpYkVHTApfR0xfZWds X1JVTl9ERVBFTkRTPQkJbGliRUdMPjA6JHtQT1JUU0RJUn0vZ3JhcGhpY3MvbGliRUdMCl9HTF9n bF9CVUlMRF9ERVBFTkRTPQkJbGliR0w+MDoke1BPUlRTRElSfS9ncmFwaGljcy9saWJHTApfR0xf Z2xfUlVOX0RFUEVORFM9CQlsaWJHTD4wOiR7UE9SVFNESVJ9L2dyYXBoaWNzL2xpYkdMCl9HTF9n bF9VU0VfWE9SRz0JCWdscHJvdG8gZHJpMnByb3RvCl9HTF9nbGV3X0xJQl9ERVBFTkRTPQkJbGli R0xFVy5zbzoke1BPUlRTRElSfS9ncmFwaGljcy9nbGV3Cl9HTF9nbHVfTElCX0RFUEVORFM9CQls aWJHTFUuc286JHtQT1JUU0RJUn0vZ3JhcGhpY3MvbGliR0xVCl9HTF9nbHVfVVNFX1hPUkc9CQln bHByb3RvIGRyaTJwcm90bwpfR0xfZ2x3X0xJQl9ERVBFTkRTPQkJbGliR0x3LnNvOiR7UE9SVFNE SVJ9L2dyYXBoaWNzL2xpYkdMdwpfR0xfZ2x1dF9MSUJfREVQRU5EUz0JCWxpYmdsdXQuc286JHtQ T1JUU0RJUn0vZ3JhcGhpY3MvZnJlZWdsdXQKCi5pZiBkZWZpbmVkKFVTRV9HTCkKLiBpZiAke1VT RV9HTDp0bH0gPT0gInllcyIKVVNFX0dMPQkJZ2x1Ci4gZW5kaWYKLiBmb3IgX2NvbXBvbmVudCBp biAke1VTRV9HTH0KLiAgaWYgIWRlZmluZWQoX0dMXyR7X2NvbXBvbmVudH1fTElCX0RFUEVORFMp ICYmIFwKCQkhZGVmaW5lZChfR0xfJHtfY29tcG9uZW50fV9SVU5fREVQRU5EUykKSUdOT1JFPQkJ dXNlcyB1bmtub3duIEdMIGNvbXBvbmVudAouICBlbHNlClVTRV9YT1JHKz0JJHtfR0xfJHtfY29t cG9uZW50fV9VU0VfWE9SR30KQlVJTERfREVQRU5EUys9CSR7X0dMXyR7X2NvbXBvbmVudH1fQlVJ TERfREVQRU5EU30KTElCX0RFUEVORFMrPQkke19HTF8ke19jb21wb25lbnR9X0xJQl9ERVBFTkRT fQpSVU5fREVQRU5EUys9CSR7X0dMXyR7X2NvbXBvbmVudH1fUlVOX0RFUEVORFN9Ci4gIGVuZGlm Ci4gZW5kZm9yCi5lbmRpZgoKLmlmIGRlZmluZWQoX0RFU1RESVJfVklBX0VOVikKTUFLRV9FTlYr PQkke0RFU1RESVJOQU1FfT0ke1NUQUdFRElSfQouZWxzZQpNQUtFX0FSR1MrPQkke0RFU1RESVJO QU1FfT0ke1NUQUdFRElSfQouZW5kaWYKCi5pZiBkZWZpbmVkKE5PX1BSRUZJWF9STURJUikKQ09f RU5WKz0JTk9fUFJFRklYX1JNRElSPTEKLmVsc2UKQ09fRU5WKz0JTk9fUFJFRklYX1JNRElSPTAK LmVuZGlmCgoKTUVUQURJUj0JCSR7V1JLRElSfS8ubWV0YWRpcgpNQU5JRkVTVEY9CQkke01FVEFE SVJ9LytNQU5JRkVTVAoKUEtHUFJFSU5TVEFMTD89CQkke1BLR0RJUn0vcGtnLXByZS1pbnN0YWxs ClBLR1BPU1RJTlNUQUxMPz0JJHtQS0dESVJ9L3BrZy1wb3N0LWluc3RhbGwKUEtHUFJFREVJTlNU QUxMPz0JJHtQS0dESVJ9L3BrZy1wcmUtZGVpbnN0YWxsClBLR1BPU1RERUlOU1RBTEw/PQkke1BL R0RJUn0vcGtnLXBvc3QtZGVpbnN0YWxsClBLR1BSRVVQR1JBREU/PQkJJHtQS0dESVJ9L3BrZy1w cmUtdXBncmFkZQpQS0dQT1NUVVBHUkFERT89CSR7UEtHRElSfS9wa2ctcG9zdC11cGdyYWRlClBL R1VQR1JBREU/PQkJJHtQS0dESVJ9L3BrZy11cGdyYWRlCgpfRk9SQ0VfUE9TVF9QQVRURVJOUz0J cm1kaXIga2xkeHJlZiBta2ZvbnRzY2FsZSBta2ZvbnRkaXIgZmMtY2FjaGUgXAoJCQkJCQlmb250 cy5kaXIgZm9udHMuc2NhbGUgZ3RrLXVwZGF0ZS1pY29uLWNhY2hlIFwKCQkJCQkJZ2lvLXF1ZXJ5 bW9kdWxlcyBcCgkJCQkJCWd0ay1xdWVyeS1pbW1vZHVsZXMgXAoJCQkJCQlsZGNvbmZpZyBcCgkJ CQkJCWxvYWQtb2N0YXZlLXBrZyBcCgkJCQkJCW9jYW1sZmluZCBcCgkJCQkJCXVwZGF0ZS1kZXNr dG9wLWRhdGFiYXNlIHVwZGF0ZS1taW1lLWRhdGFiYXNlIFwKCQkJCQkJZ2RrLXBpeGJ1Zi1xdWVy eS1sb2FkZXJzIGNhdGFsb2cucG9ydHMgXAoJCQkJCQlnbGliLWNvbXBpbGUtc2NoZW1hcyBcCgkJ CQkJCWNjYWNoZS11cGRhdGUtbGlua3MKCi5pZiBkZWZpbmVkKFVTRV9MT0NBTF9NSykKLmluY2x1 ZGUgIiR7UE9SVFNESVJ9L01rL2JzZC5sb2NhbC5tayIKLmVuZGlmCgouaWYgZGVmaW5lZChVU0Vf WE9SRykgfHwgZGVmaW5lZChYT1JHX0NBVCkKLmluY2x1ZGUgIiR7UE9SVFNESVJ9L01rL2JzZC54 b3JnLm1rIgouZW5kaWYKCi5pZiBkZWZpbmVkKFVTRV9NWVNRTCkgfHwgZGVmaW5lZChXQU5UX01Z U1FMX1ZFUikgfHwgXAoJZGVmaW5lZChVU0VfQkRCKSB8fCBkZWZpbmVkKFVTRV9TUUxJVEUpIHx8 IGRlZmluZWQoVVNFX0ZJUkVCSVJEKQouaW5jbHVkZSAiJHtQT1JUU0RJUn0vTWsvYnNkLmRhdGFi YXNlLm1rIgouZW5kaWYKCi5pZiBkZWZpbmVkKFdBTlRfR1NUUkVBTUVSKSB8fCBkZWZpbmVkKFVT RV9HU1RSRUFNRVIpIHx8IGRlZmluZWQoVVNFX0dTVFJFQU1FUjEpCi5pbmNsdWRlICIke1BPUlRT RElSfS9Nay9ic2QuZ3N0cmVhbWVyLm1rIgouZW5kaWYKCi5pZiBkZWZpbmVkKFVTRV9KQVZBKQou aW5jbHVkZSAiJHtQT1JUU0RJUn0vTWsvYnNkLmphdmEubWsiCi5lbmRpZgoKLmlmIGRlZmluZWQo VVNFX09DQU1MKQouaW5jbHVkZSAiJHtQT1JUU0RJUn0vTWsvYnNkLm9jYW1sLm1rIgouZW5kaWYK Ci5pZiBkZWZpbmVkKFVTRV9MSU5VWF9SUE0pCi5pbmNsdWRlICIke1BPUlRTRElSfS9Nay9ic2Qu bGludXgtcnBtLm1rIgouZW5kaWYKCi5pZiBkZWZpbmVkKFVTRV9MSU5VWF9BUFBTKQouaW5jbHVk ZSAiJHtQT1JUU0RJUn0vTWsvYnNkLmxpbnV4LWFwcHMubWsiCi5lbmRpZgoKLmlmIGRlZmluZWQo VVNFX1FUNCkgfHwgZGVmaW5lZChVU0VfUVQ1KQouaW5jbHVkZSAiJHtQT1JUU0RJUn0vTWsvYnNk LnF0Lm1rIgouZW5kaWYKCi5pZiBkZWZpbmVkKFVTRV9TREwpIHx8IGRlZmluZWQoV0FOVF9TREwp Ci5pbmNsdWRlICIke1BPUlRTRElSfS9Nay9ic2Quc2RsLm1rIgouZW5kaWYKCi5pZiBkZWZpbmVk KFVTRV9QSFApCi5pbmNsdWRlICIke1BPUlRTRElSfS9Nay9ic2QucGhwLm1rIgouZW5kaWYKCi5p ZiBkZWZpbmVkKFVTRV9XWCkgfHwgZGVmaW5lZChVU0VfV1hfTk9UKQouaW5jbHVkZSAiJHtQT1JU U0RJUn0vTWsvYnNkLnd4Lm1rIgouZW5kaWYKCi5pZiBkZWZpbmVkKFVTRV9BUEFDSEUpIHx8IGRl ZmluZWQoVVNFX0FQQUNIRV9CVUlMRCkgfHwgZGVmaW5lZChVU0VfQVBBQ0hFX1JVTikKLmluY2x1 ZGUgIiR7UE9SVFNESVJ9L01rL2JzZC5hcGFjaGUubWsiCi5lbmRpZgoKLmlmIGRlZmluZWQoVVNF X0FVVE9UT09MUykKLmluY2x1ZGUgIiR7UE9SVFNESVJ9L01rL2JzZC5hdXRvdG9vbHMubWsiCi5l bmRpZgoKLmlmIGRlZmluZWQoVVNFX0ZQQykgfHwgZGVmaW5lZChXQU5UX0ZQQ19CQVNFKSB8fCBk ZWZpbmVkKFdBTlRfRlBDX0FMTCkKLmluY2x1ZGUgIiR7UE9SVFNESVJ9L01rL2JzZC5mcGMubWsi Ci5lbmRpZgoKLmlmIGRlZmluZWQoVVNFX0dFQ0tPKQouaW5jbHVkZSAiJHtQT1JUU0RJUn0vTWsv YnNkLmdlY2tvLm1rIgouZW5kaWYKCi5pZiBkZWZpbmVkKFdBTlRfR05PTUUpIHx8IGRlZmluZWQo VVNFX0dOT01FKQouaW5jbHVkZSAiJHtQT1JUU0RJUn0vTWsvYnNkLmdub21lLm1rIgouZW5kaWYK Ci5pZiBkZWZpbmVkKFVTRV9NQVRFKQouaW5jbHVkZSAiJHtQT1JUU0RJUn0vTWsvYnNkLm1hdGUu bWsiCi5lbmRpZgoKLmlmIGRlZmluZWQoVVNFX0tERTQpCi5pbmNsdWRlICIke1BPUlRTRElSfS9N ay9ic2Qua2RlNC5tayIKLmVuZGlmCgouaWYgZXhpc3RzKCR7UE9SVFNESVJ9L01ha2VmaWxlLmlu YykKLmluY2x1ZGUgIiR7UE9SVFNESVJ9L01ha2VmaWxlLmluYyIKVVNFX1NVQk1BS0U9CXllcwou ZW5kaWYKCiMgTG9hZGluZyBmZWF0dXJlcwouZm9yIGYgaW4gJHtfVVNFU19QT1NUfQpfZjo9CQkk e2Y6Qy9cOi4qLy99Ci5pZiAhZGVmaW5lZCgke19mfV9BUkdTKQoke19mfV9BUkdTOj0JJHtmOkMv XlteXDpdKihcOnxcJCkvLzpTLywvIC9nfQouZW5kaWYKLmVuZGZvcgouZm9yIGYgaW4gJHtfVVNF U19QT1NUfQouaW5jbHVkZSAiJHtVU0VTRElSfS8ke2Y6Qy9cOi4qLy99Lm1rIgouZW5kZm9yCgou aWYgZGVmaW5lZChVU0VfWE9SRykKIyBBZGQgZXhwbGljaXQgWCBvcHRpb25zIHRvIGF2b2lkIHBy b2JsZW1zIHdpdGggZmFsc2UgcG9zaXRpdmVzIGluIGNvbmZpZ3VyZQouaWYgZGVmaW5lZChHTlVf Q09ORklHVVJFKQpDT05GSUdVUkVfQVJHUys9LS14LWxpYnJhcmllcz0ke0xPQ0FMQkFTRX0vbGli IC0teC1pbmNsdWRlcz0ke0xPQ0FMQkFTRX0vaW5jbHVkZQouZW5kaWYKLmVuZGlmCgojIFNldCB0 aGUgZGVmYXVsdCBmb3IgdGhlIGluc3RhbGxhdGlvbiBvZiBQb3N0c2NyaXB0KFRNKS0KIyBjb21w YXRpYmxlIGZ1bmN0aW9uYWxpdHkuCi5pZiAhZGVmaW5lZChVU0VfR0hPU1RTQ1JJUFQpCi4JaWYg ZGVmaW5lZChVU0VfR0hPU1RTQ1JJUFRfQlVJTEQpCl9VU0VfR0hPU1RTQ1JJUFQ9CSR7VVNFX0dI T1NUU0NSSVBUX0JVSUxEfQouCWVsaWYgZGVmaW5lZChVU0VfR0hPU1RTQ1JJUFRfUlVOKQpfVVNF X0dIT1NUU0NSSVBUPQkke1VTRV9HSE9TVFNDUklQVF9SVU59Ci4JZW5kaWYKLmVsc2UKX1VTRV9H SE9TVFNDUklQVD0JJHtVU0VfR0hPU1RTQ1JJUFR9Ci5lbmRpZgoKLmlmIGRlZmluZWQoV0lUSF9H SE9TVFNDUklQVF9WRVIpICYmICFlbXB0eShXSVRIX0dIT1NUU0NSSVBUX1ZFUjpNWzc4OV0pCl9V U0VfR0hPU1RTQ1JJUFRfREVGQVVMVF9WRVI9CSR7V0lUSF9HSE9TVFNDUklQVF9WRVJ9Ci5lbHNl Cl9VU0VfR0hPU1RTQ1JJUFRfREVGQVVMVF9WRVI9CTkKLmVuZGlmCgouaWYgZGVmaW5lZChfVVNF X0dIT1NUU0NSSVBUKQouCWlmICFkZWZpbmVkKFdJVEhPVVRfWDExKQpfVVNFX0dIT1NUU0NSSVBU X1BLR05BTUVfU1VGRklYPQouCWVsc2UKX1VTRV9HSE9TVFNDUklQVF9QS0dOQU1FX1NVRkZJWD0t bm94MTEKLgllbmRpZgouCWlmICFlbXB0eShfVVNFX0dIT1NUU0NSSVBUOk1bNzg5XSkKX1VTRV9H SE9TVFNDUklQVF9WRVI9JHtfVVNFX0dIT1NUU0NSSVBUOk1bNzg5XX0KLgllbHNlCl9VU0VfR0hP U1RTQ1JJUFRfVkVSPSR7X1VTRV9HSE9TVFNDUklQVF9ERUZBVUxUX1ZFUn0KLgllbmRpZgouZWxz ZQpfVVNFX0dIT1NUU0NSSVBUX1ZFUj0ke19VU0VfR0hPU1RTQ1JJUFRfREVGQVVMVF9WRVJ9Ci5l bmRpZgoKIyBTYW5pdHkgY2hlY2sKLmlmIGRlZmluZWQoX1VTRV9HSE9TVFNDUklQVCkgJiYgZGVm aW5lZChXSVRIX0dIT1NUU0NSSVBUX1ZFUikKLglpZiBlbXB0eShXSVRIX0dIT1NUU0NSSVBUX1ZF UjpNWzc4OV0pCi4JCWVycm9yIFlvdSBzZXQgYW4gaW52YWxpZCB2YWx1ZSAiJHtXSVRIX0dIT1NU U0NSSVBUX1ZFUn0iIGluIFdJVEhfR0hPU1RTQ1JJUFRfVkVSLiAgQWJvcnQuCi4JZWxpZiAke19V U0VfR0hPU1RTQ1JJUFRfVkVSfSAhPSAke1dJVEhfR0hPU1RTQ1JJUFRfVkVSfQouCQllcnJvciBZ b3Ugc2V0IFdJVEhfR0hPU1RTQ1JJUFRfVkVSIGFzICR7V0lUSF9HSE9TVFNDUklQVF9WRVJ9IGJ1 dCAke1BLR05BTUV9IHJlcXVpcmVzIHByaW50L2dob3N0c2NyaXB0JHtfVVNFX0dIT1NUU0NSSVBU X1ZFUn0uICBBYm9ydC4KLgllbmRpZgouZW5kaWYKCkdIT1NUU0NSSVBUX1BPUlQ/PQlwcmludC9n aG9zdHNjcmlwdCR7X1VTRV9HSE9TVFNDUklQVF9WRVJ9JHtfVVNFX0dIT1NUU0NSSVBUX1BLR05B TUVfU1VGRklYfQoKIyBTZXQgdXAgdGhlIGdob3N0c2NyaXB0IGRlcGVuZGVuY2llcy4KLmlmIGRl ZmluZWQoVVNFX0dIT1NUU0NSSVBUKSB8fCBkZWZpbmVkKFVTRV9HSE9TVFNDUklQVF9CVUlMRCkK QlVJTERfREVQRU5EUys9CWdzOiR7UE9SVFNESVJ9LyR7R0hPU1RTQ1JJUFRfUE9SVH0KLmVuZGlm Ci5pZiBkZWZpbmVkKFVTRV9HSE9TVFNDUklQVCkgfHwgZGVmaW5lZChVU0VfR0hPU1RTQ1JJUFRf UlVOKQpSVU5fREVQRU5EUys9CWdzOiR7UE9SVFNESVJ9LyR7R0hPU1RTQ1JJUFRfUE9SVH0KLmVu ZGlmCgojIE1hY3JvIGZvciBkb2luZyBpbi1wbGFjZSBmaWxlIGVkaXRpbmcgdXNpbmcgcmVnZXhw cwpSRUlOUExBQ0VfQVJHUz89CS1pLmJhawpSRUlOUExBQ0VfQ01EPz0JJHtTRUR9ICR7UkVJTlBM QUNFX0FSR1N9CgojIE5hbWVzIG9mIGNvb2tpZXMgdXNlZCB0byBza2lwIGFscmVhZHkgY29tcGxl dGVkIHN0YWdlcwpFWFRSQUNUX0NPT0tJRT89CSR7V1JLRElSfS8uZXh0cmFjdF9kb25lLiR7UE9S VE5BTUV9LiR7UFJFRklYOlMvXC8vXy9nfQpDT05GSUdVUkVfQ09PS0lFPz0JJHtXUktESVJ9Ly5j b25maWd1cmVfZG9uZS4ke1BPUlROQU1FfS4ke1BSRUZJWDpTL1wvL18vZ30KSU5TVEFMTF9DT09L SUU/PQkke1dSS0RJUn0vLmluc3RhbGxfZG9uZS4ke1BPUlROQU1FfS4ke1BSRUZJWDpTL1wvL18v Z30KQlVJTERfQ09PS0lFPz0JCSR7V1JLRElSfS8uYnVpbGRfZG9uZS4ke1BPUlROQU1FfS4ke1BS RUZJWDpTL1wvL18vZ30KUEFUQ0hfQ09PS0lFPz0JCSR7V1JLRElSfS8ucGF0Y2hfZG9uZS4ke1BP UlROQU1FfS4ke1BSRUZJWDpTL1wvL18vZ30KUEFDS0FHRV9DT09LSUU/PQkke1dSS0RJUn0vLnBh Y2thZ2VfZG9uZS4ke1BPUlROQU1FfS4ke1BSRUZJWDpTL1wvL18vZ30KU1RBR0VfQ09PS0lFPz0J CSR7V1JLRElSfS8uc3RhZ2VfZG9uZS4ke1BPUlROQU1FfS4ke1BSRUZJWDpTL1wvL18vZ30KCiMg SG93IHRvIGRvIG5vdGhpbmcuICBPdmVycmlkZSBpZiB5b3UsIGZvciBzb21lIHN0cmFuZ2UgcmVh c29uLCB3b3VsZCByYXRoZXIKIyBkbyBzb21ldGhpbmcuCkRPX05BREE/PQkJJHtUUlVFfQoKIyBV c2UgdGhpcyBhcyB0aGUgZmlyc3Qgb3BlcmFuZCB0byBhbHdheXMgYnVpbGQgZGVwZW5kZW5jeS4K Tk9ORVhJU1RFTlQ/PQkvbm9uZXhpc3RlbnQKCkNIRUNLU1VNX0FMR09SSVRITVM/PSBzaGEyNTYK CkRJU1RJTkZPX0ZJTEU/PQkJJHtNQVNURVJESVJ9L2Rpc3RpbmZvCgpNQUtFX0ZMQUdTPz0JLWYK TUFLRUZJTEU/PQkJTWFrZWZpbGUKTUFLRV9DTUQ/PQkJJHtCU0RNQUtFfQpNQUtFX0VOVis9CQlQ UkVGSVg9JHtQUkVGSVh9IFwKCQkJTE9DQUxCQVNFPSR7TE9DQUxCQVNFfSBcCgkJCUxJQkRJUj0i JHtMSUJESVJ9IiBcCgkJCUNDPSIke0NDfSIgQ0ZMQUdTPSIke0NGTEFHU30iIFwKCQkJQ1BQPSIk e0NQUH0iIENQUEZMQUdTPSIke0NQUEZMQUdTfSIgXAoJCQlMREZMQUdTPSIke0xERkxBR1N9IiBM SUJTPSIke0xJQlN9IiBcCgkJCUNYWD0iJHtDWFh9IiBDWFhGTEFHUz0iJHtDWFhGTEFHU30iIFwK CQkJTUFOUFJFRklYPSIke01BTlBSRUZJWH0iCgojIEFkZCAtZm5vLXN0cmljdC1hbGlhc2luZyB0 byBDRkxBR1Mgd2l0aCBvcHRpbWl6YXRpb24gbGV2ZWwgLU8yIG9yIGhpZ2hlci4KIyBnY2MgNC54 IGVuYWJsZSBzdHJpY3QgYWxpYXNpbmcgb3B0aW1pemF0aW9uIHdpdGggLU8yIHdoaWNoIGlzIGtu b3duIHRvIGJyZWFrCiMgYSBsb3Qgb2YgcG9ydHMuCi5pZiAhZGVmaW5lZChXSVRIT1VUX05PX1NU UklDVF9BTElBU0lORykKLmlmICR7Q0N9ICE9ICJpY2MiCi5pZiBlbXB0eShDRkxBR1M6TS1mbm8t c3RyaWN0LWFsaWFzaW5nKQpDRkxBR1MrPSAgICAgICAtZm5vLXN0cmljdC1hbGlhc2luZwouZW5k aWYKLmVuZGlmCi5lbmRpZgoKLmZvciBsYW5nIGluIEMgQ1hYCi5pZiBkZWZpbmVkKFVTRV8ke2xh bmd9U1REKQoke2xhbmd9RkxBR1M6PQkkeyR7bGFuZ31GTEFHUzpOLXN0ZD0qfSAtc3RkPSR7VVNF XyR7bGFuZ31TVER9Ci5lbmRpZgoKLmlmIGRlZmluZWQoJHtsYW5nfUZMQUdTXyR7QVJDSH0pCiR7 bGFuZ31GTEFHUys9CSR7JHtsYW5nfUZMQUdTXyR7QVJDSH19Ci5lbmRpZgouZW5kZm9yCgojIE11 bHRpcGxlIG1ha2Ugam9icyBzdXBwb3J0Ci5pZiBkZWZpbmVkKERJU0FCTEVfTUFLRV9KT0JTKSB8 fCBkZWZpbmVkKE1BS0VfSk9CU19VTlNBRkUpCl9NQUtFX0pPQlM/PQkJIwpNQUtFX0pPQlNfTlVN QkVSPQkxCi5lbHNlCi5pZiBkZWZpbmVkKE1BS0VfSk9CU19OVU1CRVIpCl9NQUtFX0pPQlNfTlVN QkVSOj0JJHtNQUtFX0pPQlNfTlVNQkVSfQouZWxzZQpfTUFLRV9KT0JTX05VTUJFUiE9CSR7U1lT Q1RMfSAtbiBrZXJuLnNtcC5jcHVzCi5lbmRpZgouaWYgZGVmaW5lZChNQUtFX0pPQlNfTlVNQkVS X0xJTUlUKSAmJiAoICR7TUFLRV9KT0JTX05VTUJFUl9MSU1JVH0gPCAke19NQUtFX0pPQlNfTlVN QkVSfSApCk1BS0VfSk9CU19OVU1CRVI9CSR7TUFLRV9KT0JTX05VTUJFUl9MSU1JVH0KLmVsc2UK TUFLRV9KT0JTX05VTUJFUj0JJHtfTUFLRV9KT0JTX05VTUJFUn0KLmVuZGlmCl9NQUtFX0pPQlM/ PQkJLWoke01BS0VfSk9CU19OVU1CRVJ9CkJVSUxEX0ZBSUxfTUVTU0FHRSs9CVRyeSB0byBzZXQg TUFLRV9KT0JTX1VOU0FGRT15ZXMgYW5kIHJlYnVpbGQgYmVmb3JlIHJlcG9ydGluZyB0aGUgZmFp bHVyZSB0byB0aGUgbWFpbnRhaW5lci4KLmVuZGlmCgouaW5jbHVkZSAiJHtQT1JUU0RJUn0vTWsv YnNkLmNjYWNoZS5tayIKCkZFVENIX0VOVj89CQlTU0xfTk9fVkVSSUZZX1BFRVI9MSBTU0xfTk9f VkVSSUZZX0hPU1ROQU1FPTEKRkVUQ0hfQklOQVJZPz0JL3Vzci9iaW4vZmV0Y2gKRkVUQ0hfQVJH Uz89CS1GcHIKRkVUQ0hfUkVHRVQ/PQkxCi5pZiAhZGVmaW5lZChESVNBQkxFX1NJWkUpCkZFVENI X0JFRk9SRV9BUkdTKz0JJCR7Q0tTSVpFOistUyAkJENLU0laRX0KLmVuZGlmCkZFVENIX0NNRD89 CQkke0ZFVENIX0JJTkFSWX0gJHtGRVRDSF9BUkdTfQoKLmlmIGRlZmluZWQoUkFORE9NSVpFX01B U1RFUl9TSVRFUykKLmlmIGV4aXN0cygvdXNyL2dhbWVzL3JhbmRvbSkKUkFORE9NX0NNRD89CS91 c3IvZ2FtZXMvcmFuZG9tClJBTkRPTV9BUkdTPz0JIi13IC1mIC0iCl9SQU5ET01JWkVfU0lURVM9 CSIgfCR7UkFORE9NX0NNRH0gJHtSQU5ET01fQVJHU30iCi5lbmRpZgouZW5kaWYKClRPVUNIPz0J CQkvdXNyL2Jpbi90b3VjaApUT1VDSF9GTEFHUz89CS1mCgpESVNUT1JJRz89CS5iYWsub3JpZwpQ QVRDSD89CQkJL3Vzci9iaW4vcGF0Y2gKUEFUQ0hfU1RSSVA/PQktcDAKUEFUQ0hfRElTVF9TVFJJ UD89CS1wMAouaWYgZGVmaW5lZChQQVRDSF9ERUJVRykKUEFUQ0hfREVCVUdfVE1QPQl5ZXMKUEFU Q0hfQVJHUz89CS1kICR7UEFUQ0hfV1JLU1JDfSAtRSAke1BBVENIX1NUUklQfQpQQVRDSF9ESVNU X0FSR1M/PQktLXN1ZmZpeCAke0RJU1RPUklHfSAtZCAke1BBVENIX1dSS1NSQ30gLUUgJHtQQVRD SF9ESVNUX1NUUklQfQouZWxzZQpQQVRDSF9ERUJVR19UTVA9CW5vClBBVENIX0FSR1M/PQktZCAk e1BBVENIX1dSS1NSQ30gLS1mb3J3YXJkIC0tcXVpZXQgLUUgJHtQQVRDSF9TVFJJUH0KUEFUQ0hf RElTVF9BUkdTPz0JLS1zdWZmaXggJHtESVNUT1JJR30gLWQgJHtQQVRDSF9XUktTUkN9IC0tZm9y d2FyZCAtLXF1aWV0IC1FICR7UEFUQ0hfRElTVF9TVFJJUH0KLmVuZGlmCi5pZiAhZGVmaW5lZChR VUlFVCkKUEFUQ0hfU0lMRU5UPQkJUEFUQ0hfU0lMRU5UPXllcwouZW5kaWYKLmlmIGRlZmluZWQo QkFUQ0gpClBBVENIX0FSR1MrPQkJLS1iYXRjaApQQVRDSF9ESVNUX0FSR1MrPQktLWJhdGNoCi5l bmRpZgoKIyBQcmV2ZW50IGJyZWFrYWdlIHdpdGggVkVSU0lPTl9DT05UUk9MPW51bWJlcmVkClBB VENIX0FSR1MrPQktViBzaW1wbGUKCi5pZiBkZWZpbmVkKFBBVENIX0NIRUNLX09OTFkpClBBVENI X0FSR1MrPQktQwpQQVRDSF9ESVNUX0FSR1MrPQktQwouZW5kaWYKCi5pZiAke1BBVENIfSA9PSAi L3Vzci9iaW4vcGF0Y2giClBBVENIX0FSR1MrPQktLXN1ZmZpeCAub3JpZwpQQVRDSF9ESVNUX0FS R1MrPQktLXN1ZmZpeCAub3JpZwouZW5kaWYKClRBUj89CS91c3IvYmluL3RhcgoKIyBFWFRSQUNU X1NVRlggaXMgZGVmaW5lZCBpbiAucHJlLm1rIHNlY3Rpb24KRVhUUkFDVF9DTUQ/PQkke1RBUn0K RVhUUkFDVF9CRUZPUkVfQVJHUz89CS14ZgpFWFRSQUNUX0FGVEVSX0FSR1M/PQktLW5vLXNhbWUt b3duZXIgLS1uby1zYW1lLXBlcm1pc3Npb25zCgojIEZpZ3VyZSBvdXQgd2hlcmUgdGhlIGxvY2Fs IG10cmVlIGZpbGUgaXMKLmlmICFkZWZpbmVkKE1UUkVFX0ZJTEUpICYmICFkZWZpbmVkKE5PX01U UkVFKQouaWYgJHtQUkVGSVh9ID09IC91c3IKTVRSRUVfRklMRT0JL2V0Yy9tdHJlZS9CU0QudXNy LmRpc3QKLmVsc2UKTVRSRUVfRklMRT0JJHtQT1JUU0RJUn0vVGVtcGxhdGVzL0JTRC5sb2NhbC5k aXN0Ci5lbmRpZgpNVFJFRV9GSUxFX0RFRkFVTFQ9eWVzCi5lbmRpZgpNVFJFRV9DTUQ/PQkvdXNy L3NiaW4vbXRyZWUKTVRSRUVfQVJHUz89CS1VICR7TVRSRUVfRk9MTE9XU19TWU1MSU5LU30gLWYg JHtNVFJFRV9GSUxFfSAtZCAtZSAtcAoKX1NIQVJFTU9ERT89CTA2NDQKCiMgQSBmZXcgYWxpYXNl cyBmb3IgKi1pbnN0YWxsIHRhcmdldHMKSU5TVEFMTF9QUk9HUkFNPQkke0lOU1RBTEx9ICR7Q09Q WX0gJHtTVFJJUH0gLW0gJHtCSU5NT0RFfQpJTlNUQUxMX0tMRD0JJHtJTlNUQUxMfSAke0NPUFl9 IC1tICR7QklOTU9ERX0KSU5TVEFMTF9MSUI9CSR7SU5TVEFMTH0gJHtDT1BZfSAke1NUUklQfSAt bSAke1NIQVJFTU9ERX0KSU5TVEFMTF9TQ1JJUFQ9CSR7SU5TVEFMTH0gJHtDT1BZfSAtbSAke0JJ Tk1PREV9CklOU1RBTExfREFUQT0JJHtJTlNUQUxMfSAke0NPUFl9IC1tICR7X1NIQVJFTU9ERX0K SU5TVEFMTF9NQU49CSR7SU5TVEFMTH0gJHtDT1BZfSAtbSAke01BTk1PREV9CgpJTlNUQUxMX01B Q1JPUz0JQlNEX0lOU1RBTExfUFJPR1JBTT0iJHtJTlNUQUxMX1BST0dSQU19IiBcCgkJCUJTRF9J TlNUQUxMX0xJQj0iJHtJTlNUQUxMX0xJQn0iIFwKCQkJQlNEX0lOU1RBTExfU0NSSVBUPSIke0lO U1RBTExfU0NSSVBUfSIgXAoJCQlCU0RfSU5TVEFMTF9EQVRBPSIke0lOU1RBTExfREFUQX0iIFwK CQkJQlNEX0lOU1RBTExfTUFOPSIke0lOU1RBTExfTUFOfSIKTUFLRV9FTlYrPQkke0lOU1RBTExf TUFDUk9TfQpTQ1JJUFRTX0VOVis9CSR7SU5TVEFMTF9NQUNST1N9CgojIE1hY3JvIGZvciBjb3B5 aW5nIGVudGlyZSBkaXJlY3RvcnkgdHJlZSB3aXRoIGNvcnJlY3QgcGVybWlzc2lvbnMKQ09QWVRS RUVfQklOPQkke1NIfSAtYyAnKCR7RklORH0gLWQgJCQwICQkMiB8ICR7Q1BJT30gLWR1bXBsICQk MSA+L2Rldi9udWxsIFwKCQkJCQkyPiYxKSAmJiBcCgkJCQkJJHtGSU5EfSAtZCAkJDAgJCQyIC10 eXBlIGQgLWV4ZWMgY2htb2QgNzU1ICQkMS97fSBcOyAmJiBcCgkJCQkJJHtGSU5EfSAtZCAkJDAg JCQyIC10eXBlIGYgLWV4ZWMgY2htb2QgJHtCSU5NT0RFfSAkJDEve30gXDsnIC0tCkNPUFlUUkVF X1NIQVJFPQkke1NIfSAtYyAnKCR7RklORH0gLWQgJCQwICQkMiB8ICR7Q1BJT30gLWR1bXBsICQk MSA+L2Rldi9udWxsIFwKCQkJCQkyPiYxKSAmJiBcCgkJCQkJJHtGSU5EfSAtZCAkJDAgJCQyIC10 eXBlIGQgLWV4ZWMgY2htb2QgNzU1ICQkMS97fSBcOyAmJiBcCgkJCQkJJHtGSU5EfSAtZCAkJDAg JCQyIC10eXBlIGYgLWV4ZWMgY2htb2QgJHtTSEFSRU1PREV9ICQkMS97fSBcOycgLS0KCiMgVGhl IHVzZXIgY2FuIG92ZXJyaWRlIHRoZSBOT19QQUNLQUdFIGJ5IHNwZWNpZnlpbmcgdGhpcyBmcm9t CiMgdGhlIG1ha2UgY29tbWFuZCBsaW5lCi5pZiBkZWZpbmVkKEZPUkNFX1BBQ0tBR0UpCi51bmRl ZiBOT19QQUNLQUdFCi5lbmRpZgoKREVTQ1I/PQkJCSR7UEtHRElSfS9wa2ctZGVzY3IKUExJU1Q/ PQkJCSR7UEtHRElSfS9wa2ctcGxpc3QKUEtHSEVMUD89CQkke1BLR0RJUn0vcGtnLWhlbHAKUEtH SU5TVEFMTD89CSR7UEtHRElSfS9wa2ctaW5zdGFsbApQS0dERUlOU1RBTEw/PQkke1BLR0RJUn0v cGtnLWRlaW5zdGFsbApQS0dSRVE/PQkJJHtQS0dESVJ9L3BrZy1yZXEKUEtHTUVTU0FHRT89CSR7 UEtHRElSfS9wa2ctbWVzc2FnZQoKVE1QUExJU1Q/PQkke1dSS0RJUn0vLlBMSVNULm1rdG1wClRN UFBMSVNUX1NPUlQ/PQkke1dSS0RJUn0vLlBMSVNULm1rdG1wLnNvcnRlZApUTVBHVUNNRD89CSR7 V1JLRElSfS8uUExJU1QuZ3VjbWQKCi5pZiBkZWZpbmVkKFBLR19OT0NPTVBSRVNTKQpQS0dfU1VG WD89CQkudGFyCi5lbHNlClBLR19TVUZYPz0JCS50eHoKLmVuZGlmCiMgd2hlcmUgcGtnX2FkZCBy ZWNvcmRzIGl0cyBkaXJ0eSBkZWVkcy4KUEtHX0RCRElSPz0JCS92YXIvZGIvcGtnCgpBTExfVEFS R0VUPz0JCWFsbApJTlNUQUxMX1RBUkdFVD89CWluc3RhbGwKSU5TVEFMTF9UQVJHRVQrPQkke0xB VEVfSU5TVEFMTF9BUkdTfQoKIyBJbnRlZ3JhdGUgd2l0aCB0aGUgbGljZW5zZSBhdWRpdGluZyBm cmFtZXdvcmsKLmlmICFkZWZpbmVkIChESVNBQkxFX0xJQ0VOU0VTKQouaW5jbHVkZSAiJHtQT1JU U0RJUn0vTWsvYnNkLmxpY2Vuc2VzLm1rIgouZW5kaWYKCiMgUG9wdWxhciBtYXN0ZXIgc2l0ZXMK LmluY2x1ZGUgIiR7UE9SVFNESVJ9L01rL2JzZC5zaXRlcy5tayIKCiMgRW1wdHkgZGVjbGFyYXRp b24gdG8gYXZvaWQgInZhcmlhYmxlIE1BU1RFUl9TSVRFUyByZWN1cnNpdmUiIGVycm9yCk1BU1RF Ul9TSVRFUz89ClBBVENIX1NJVEVTPz0KX01BU1RFUl9TSVRFU19ERUZBVUxUPz0KX1BBVENIX1NJ VEVTX0RFRkFVTFQ/PQoKIyBGZWVkIGludGVybmFsIF97TUFTVEVSLFBBVENIfV9TSVRFU19uIHdo ZXJlIG4gaXMgYSBncm91cCBkZXNpZ25hdGlvbgojIGFzIHBlciBncm91cGluZyBydWxlcyAoOnNv bWV0aGluZykKIyBPcmdhbml6ZSBfe01BU1RFUixQQVRDSH1fU0lURVNfe0RFRkFVTFQsW14vOl0r fSBhY2NvcmRpbmcgdG8gZ3JvdXBpbmcKIyBydWxlcyAoOnNvbWV0aGluZykKLmZvciBfUyBpbiAk e01BU1RFUl9TSVRFU30KX1NfVEVNUD0JJHtfUzpTL14ke19TOkNALz86W14vOl0rJEAvQH0vLzpT L146Ly99Ci4JaWYgIWVtcHR5KF9TX1RFTVApCi4JCWZvciBfZ3JvdXAgaW4gJHtfU19URU1QOlMv LC8gL2d9Cl9HX1RFTVA9CSR7X2dyb3VwfQouCQkJaWYgJHtfR19URU1QfSA9PSBhbGwgfHwgJHtf R19URU1QfSA9PSBBTEwgfHwgJHtfR19URU1QfSA9PSBkZWZhdWx0CmNoZWNrLW1ha2V2YXJzOjoK CQkJCUAke0VDSE9fTVNHfSAiTWFrZWZpbGUgZXJyb3I6IHRoZSB3b3JkcyBhbGwsIEFMTCBhbmQg ZGVmYXVsdCBhcmUgcmVzZXJ2ZWQgYW5kIGNhbm5vdCBiZSIKCQkJCUAke0VDSE9fTVNHfSAidXNl ZCBpbiBncm91cCBkZWZpbml0aW9ucy4gUGxlYXNlIGZpeCB5b3VyIE1BU1RFUl9TSVRFUyIKCQkJ CUAke0ZBTFNFfQouCQkJZW5kaWYKX01BU1RFUl9TSVRFU18ke19ncm91cH0rPQkke19TOkNAXigu Ki8pOlteLzpdKyRAXDFAfQouCQllbmRmb3IKLgllbHNlCl9NQVNURVJfU0lURVNfREVGQVVMVCs9 CSR7X1M6Q0BeKC4qLyk6W14vOl0rJEBcMUB9Ci4JZW5kaWYKLmVuZGZvcgouZm9yIF9TIGluICR7 UEFUQ0hfU0lURVN9Cl9TX1RFTVA9CSR7X1M6Uy9eJHtfUzpDQC86W14vOl0rJEAvQH0vLzpTL146 Ly99Ci4JaWYgIWVtcHR5KF9TX1RFTVApCi4JCWZvciBfZ3JvdXAgaW4gJHtfU19URU1QOlMvLC8g L2d9Cl9HX1RFTVA9CSR7X2dyb3VwfQouCQkJaWYgJHtfR19URU1QfSA9PSBhbGwgfHwgJHtfR19U RU1QfSA9PSBBTEwgfHwgJHtfR19URU1QfSA9PSBkZWZhdWx0CmNoZWNrLW1ha2V2YXJzOjoKCQkJ CUAke0VDSE9fTVNHfSAiVGhlIHdvcmRzIGFsbCwgQUxMIGFuZCBkZWZhdWx0IGFyZSByZXNlcnZl ZCBhbmQgY2Fubm90IGJlIgoJCQkJQCR7RUNIT19NU0d9ICJ1c2VkIGluIGdyb3VwIGRlZmluaXRp b25zLiBQbGVhc2UgZml4IHlvdXIgUEFUQ0hfU0lURVMiCgkJCQlAJHtGQUxTRX0KLgkJCWVuZGlm Cl9QQVRDSF9TSVRFU18ke19ncm91cH0rPQkke19TOkNAXiguKi8pOlteLzpdKyRAXDFAfQouCQll bmRmb3IKLgllbHNlCl9QQVRDSF9TSVRFU19ERUZBVUxUKz0JJHtfUzpDQF4oLiovKTpbXi86XSsk QFwxQH0KLgllbmRpZgouZW5kZm9yCgojIEZlZWQgaW50ZXJuYWwgX3tNQVNURVIsUEFUQ0h9X1NJ VEVfU1VCRElSX24gd2hlcmUgbiBpcyBhIGdyb3VwIGRlc2lnbmF0aW9uCiMgYXMgcGVyIGdyb3Vw aW5nIHJ1bGVzICg6c29tZXRoaW5nKQojIE9yZ2FuaXplIF97TUFTVEVSLFBBVENIfV9TSVRFX1NV QkRJUl97REVGQVVMVCxbXi86XSt9IGFjY29yZGluZyB0byBncm91cGluZwojIHJ1bGVzICg6c29t ZXRoaW5nKQouZm9yIF9TIGluICR7TUFTVEVSX1NJVEVfU1VCRElSfQpfU19URU1QPQkke19TOlMv XiR7X1M6Q0AvOlteLzpdKyRAL0B9Ly86Uy9eOi8vfQouCWlmICFlbXB0eShfU19URU1QKQouCQlm b3IgX2dyb3VwIGluICR7X1NfVEVNUDpTLywvIC9nfQpfR19URU1QPQkke19ncm91cH0KLgkJCWlm ICR7X0dfVEVNUH0gPT0gYWxsIHx8ICR7X0dfVEVNUH0gPT0gQUxMIHx8ICR7X0dfVEVNUH0gPT0g ZGVmYXVsdApjaGVjay1tYWtldmFyczo6CgkJCQlAJHtFQ0hPX01TR30gIk1ha2VmaWxlIGVycm9y OiB0aGUgd29yZHMgYWxsLCBBTEwgYW5kIGRlZmF1bHQgYXJlIHJlc2VydmVkIGFuZCBjYW5ub3Qg YmUiCgkJCQlAJHtFQ0hPX01TR30gInVzZWQgaW4gZ3JvdXAgZGVmaW5pdGlvbnMuIFBsZWFzZSBm aXggeW91ciBNQVNURVJfU0lURV9TVUJESVIiCgkJCQlAJHtGQUxTRX0KLgkJCWVuZGlmCi4JCQlp ZiBkZWZpbmVkKF9NQVNURVJfU0lURVNfJHtfZ3JvdXB9KQpfTUFTVEVSX1NJVEVfU1VCRElSXyR7 X2dyb3VwfSs9ICR7X1M6Q0BeKC4qKS86W14vOl0rJEBcMUB9Ci4JCQllbmRpZgouCQllbmRmb3IK LgllbHNlCi4JCWlmIGRlZmluZWQoX01BU1RFUl9TSVRFU19ERUZBVUxUKQpfTUFTVEVSX1NJVEVf U1VCRElSX0RFRkFVTFQrPQkke19TOkNAXiguKikvOlteLzpdKyRAXDFAfQouCQllbmRpZgouCWVu ZGlmCi5lbmRmb3IKLmZvciBfUyBpbiAke1BBVENIX1NJVEVfU1VCRElSfQpfU19URU1QPQkke19T OlMvXiR7X1M6Q0AvOlteLzpdKyRAL0B9Ly86Uy9eOi8vfQouCWlmICFlbXB0eShfU19URU1QKQou CQlmb3IgX2dyb3VwIGluICR7X1NfVEVNUDpTLywvIC9nfQpfR19URU1QPQkke19ncm91cH0KLgkJ CWlmICR7X0dfVEVNUH0gPT0gYWxsIHx8ICR7X0dfVEVNUH0gPT0gQUxMIHx8ICR7X0dfVEVNUH0g PT0gZGVmYXVsdApjaGVjay1tYWtldmFyczo6CgkJCQlAJHtFQ0hPX01TR30gIk1ha2VmaWxlIGVy cm9yOiB0aGUgd29yZHMgYWxsLCBBTEwgYW5kIGRlZmF1bHQgYXJlIHJlc2VydmVkIGFuZCBjYW5u b3QgYmUiCgkJCQlAJHtFQ0hPX01TR30gInVzZWQgaW4gZ3JvdXAgZGVmaW5pdGlvbnMuIFBsZWFz ZSBmaXggeW91ciBQQVRDSF9TSVRFX1NVQkRJUiIKCQkJCUAke0ZBTFNFfQouCQkJZW5kaWYKLgkJ CWlmIGRlZmluZWQoX1BBVENIX1NJVEVTXyR7X2dyb3VwfSkKX1BBVENIX1NJVEVfU1VCRElSXyR7 X2dyb3VwfSs9ICR7X1M6Q0BeKC4qKS86W14vOl0rJEBcMUB9Ci4JCQllbmRpZgouCQllbmRmb3IK LgllbHNlCi4JCWlmIGRlZmluZWQoX1BBVENIX1NJVEVTX0RFRkFVTFQpCl9QQVRDSF9TSVRFX1NV QkRJUl9ERUZBVUxUKz0JJHtfUzpDQF4oLiopLzpbXi86XSskQFwxQH0KLgkJZW5kaWYKLgllbmRp ZgouZW5kZm9yCgojIFN1YnN0aXR1dGUgc3ViZGlyZWN0b3J5IG5hbWVzCiMgWFhYIHNpbXBsZXIv ZmFzdGVyIHNvbHV0aW9uIGJ1dCBub3QgdGhlIGJlc3Qgc3BhY2Ugd2lzZSwgc3VnZ2VzdGlvbnMg cGxlYXNlCi5mb3IgX1MgaW4gJHtNQVNURVJfU0lURVN9Cl9TX1RFTVA9CSR7X1M6Uy9eJHtfUzpD QC86W14vOl0rJEAvQH0vLzpTL146Ly99Ci4JaWYgIWVtcHR5KF9TX1RFTVApCi4JCWZvciBfZ3Jv dXAgaW4gJHtfU19URU1QOlMvLC8gL2d9Ci4JCQlpZiAhZGVmaW5lZChfTUFTVEVSX1NJVEVfU1VC RElSXyR7X2dyb3VwfSkKTUFTVEVSX1NJVEVTX1RNUD0JJHtfTUFTVEVSX1NJVEVTXyR7X2dyb3Vw fTpTXiVTVUJESVIlL15efQouCQkJZWxzZQpfU19URU1QX1RFTVA9CQkke19NQVNURVJfU0lURVNf JHtfZ3JvdXB9Ok0qJVNVQkRJUiUvKn0KLgkJCQlpZiBlbXB0eShfU19URU1QX1RFTVApCk1BU1RF Ul9TSVRFU19UTVA9CSR7X01BU1RFUl9TSVRFU18ke19ncm91cH19Ci4JCQkJZWxzZQpNQVNURVJf U0lURVNfVE1QPQouCQkJCQlmb3Igc2l0ZSBpbiAke19NQVNURVJfU0lURVNfJHtfZ3JvdXB9fQpf U19URU1QX1RFTVA9CSR7c2l0ZTpNKiVTVUJESVIlLyp9Ci4JCQkJCQlpZiBlbXB0eShfU19URU1Q X1RFTVApCk1BU1RFUl9TSVRFU19UTVArPQkke3NpdGV9Ci4JCQkJCQllbHNlCi4JCQkJCQkJZm9y IGRpciBpbiAke19NQVNURVJfU0lURV9TVUJESVJfJHtfZ3JvdXB9fQpNQVNURVJfU0lURVNfVE1Q Kz0JJHtzaXRlOlNeJVNVQkRJUiVeXCR7ZGlyfV59Ci4JCQkJCQkJZW5kZm9yCi4JCQkJCQllbmRp ZgouCQkJCQllbmRmb3IKLgkJCQllbmRpZgouCQkJZW5kaWYKX01BU1RFUl9TSVRFU18ke19ncm91 cH06PQkke01BU1RFUl9TSVRFU19UTVB9Ci4JCWVuZGZvcgouCWVuZGlmCi5lbmRmb3IKLmlmIGRl ZmluZWQoX01BU1RFUl9TSVRFX1NVQkRJUl9ERUZBVUxUKQpfU19URU1QPQkke19NQVNURVJfU0lU RVNfREVGQVVMVDpNKiVTVUJESVIlLyp9Ci4JaWYgZW1wdHkoX1NfVEVNUCkKTUFTVEVSX1NJVEVT X1RNUD0JJHtfTUFTVEVSX1NJVEVTX0RFRkFVTFR9Ci4JZWxzZQpNQVNURVJfU0lURVNfVE1QPQou CQlmb3Igc2l0ZSBpbiAke19NQVNURVJfU0lURVNfREVGQVVMVH0KX1NfVEVNUF9URU1QPQkJJHtz aXRlOk0qJVNVQkRJUiUvKn0KLgkJCWlmIGVtcHR5KF9TX1RFTVBfVEVNUCkKTUFTVEVSX1NJVEVT X1RNUCs9CSR7c2l0ZX0KLgkJCWVsc2UKLgkJCQlmb3IgZGlyIGluICR7X01BU1RFUl9TSVRFX1NV QkRJUl9ERUZBVUxUfQpNQVNURVJfU0lURVNfVE1QKz0JJHtzaXRlOlNeJVNVQkRJUiVeXCR7ZGly fV59Ci4JCQkJZW5kZm9yCi4JCQllbmRpZgouCQllbmRmb3IKLgllbmRpZgouZWxzZQpNQVNURVJf U0lURVNfVE1QPQkke19NQVNURVJfU0lURVNfREVGQVVMVDpTXiVTVUJESVIlL15efQouZW5kaWYK X01BU1RFUl9TSVRFU19ERUZBVUxUOj0JJHtNQVNURVJfU0lURVNfVE1QfQpNQVNURVJfU0lURVNf VE1QPQouZm9yIF9TIGluICR7UEFUQ0hfU0lURVN9Cl9TX1RFTVA9CSR7X1M6Uy9eJHtfUzpDQC86 W14vOl0rJEAvQH0vLzpTL146Ly99Ci4JaWYgIWVtcHR5KF9TX1RFTVApCi4JCWZvciBfZ3JvdXAg aW4gJHtfU19URU1QOlMvLC8gL2d9Ci4JCQlpZiAhZGVmaW5lZChfUEFUQ0hfU0lURV9TVUJESVJf JHtfZ3JvdXB9KQpQQVRDSF9TSVRFU19UTVA9CSR7X1BBVENIX1NJVEVTXyR7X2dyb3VwfTpTXiVT VUJESVIlL15efQouCQkJZWxzZQpfU19URU1QX1RFTVA9CQkke19QQVRDSF9TSVRFU18ke19ncm91 cH06TSolU1VCRElSJS8qfQouCQkJCWlmIGVtcHR5KF9TX1RFTVBfVEVNUCkKUEFUQ0hfU0lURVNf VE1QPQkke19QQVRDSF9TSVRFU18ke19ncm91cH19Ci4JCQkJZWxzZQpQQVRDSF9TSVRFU19UTVA9 Ci4JCQkJCWZvciBzaXRlIGluICR7X1BBVENIX1NJVEVTXyR7X2dyb3VwfX0KX1NfVEVNUF9URU1Q PQkke3NpdGU6TSolU1VCRElSJS8qfQouCQkJCQkJaWYgZW1wdHkoX1NfVEVNUF9URU1QKQpQQVRD SF9TSVRFU19UTVArPQkke3NpdGV9Ci4JCQkJCQllbHNlCi4JCQkJCQkJZm9yIGRpciBpbiAke19Q QVRDSF9TSVRFX1NVQkRJUl8ke19ncm91cH19ClBBVENIX1NJVEVTX1RNUCs9CSR7c2l0ZTpTXiVT VUJESVIlXlwke2Rpcn1efQouCQkJCQkJCWVuZGZvcgouCQkJCQkJZW5kaWYKLgkJCQkJZW5kZm9y Ci4JCQkJZW5kaWYKLgkJCWVuZGlmCl9QQVRDSF9TSVRFU18ke19ncm91cH06PQkke1BBVENIX1NJ VEVTX1RNUH0KLgkJZW5kZm9yCi4JZW5kaWYKLmVuZGZvcgouaWYgZGVmaW5lZChfUEFUQ0hfU0lU RV9TVUJESVJfREVGQVVMVCkKX1NfVEVNUD0JJHtfUEFUQ0hfU0lURVNfREVGQVVMVDpNKiVTVUJE SVIlLyp9Ci4JaWYgZW1wdHkoX1NfVEVNUCkKUEFUQ0hfU0lURVNfVE1QPQkke19QQVRDSF9TSVRF U19ERUZBVUxUfQouCWVsc2UKUEFUQ0hfU0lURVNfVE1QPQouCQlmb3Igc2l0ZSBpbiAke19QQVRD SF9TSVRFU19ERUZBVUxUfQpfU19URU1QX1RFTVA9CQkke3NpdGU6TSolU1VCRElSJS8qfQouCQkJ aWYgZW1wdHkoX1NfVEVNUF9URU1QKQpQQVRDSF9TSVRFU19UTVArPQkke3NpdGV9Ci4JCQllbHNl Ci4JCQkJZm9yIGRpciBpbiAke19QQVRDSF9TSVRFX1NVQkRJUl9ERUZBVUxUfQpQQVRDSF9TSVRF U19UTVArPQkke3NpdGU6U14lU1VCRElSJV5cJHtkaXJ9Xn0KLgkJCQllbmRmb3IKLgkJCWVuZGlm Ci4JCWVuZGZvcgouCWVuZGlmCi5lbHNlClBBVENIX1NJVEVTX1RNUD0JJHtfUEFUQ0hfU0lURVNf REVGQVVMVDpTXiVTVUJESVIlL15efQouZW5kaWYKX1BBVENIX1NJVEVTX0RFRkFVTFQ6PQkke1BB VENIX1NJVEVTX1RNUH0KUEFUQ0hfU0lURVNfVE1QPQoKIyBUaGUgcHJpbWFyeSBiYWNrdXAgc2l0 ZS4KTUFTVEVSX1NJVEVfQkFDS1VQPz0JXAoJaHR0cDovL2Rpc3RjYWNoZS5GcmVlQlNELm9yZy9w b3J0cy1kaXN0ZmlsZXMvJHtESVNUX1NVQkRJUn0vCk1BU1RFUl9TSVRFX0JBQ0tVUDo9CSR7TUFT VEVSX1NJVEVfQkFDS1VQOlNeXCR7RElTVF9TVUJESVJ9L15efQoKIyBJZiB0aGUgdXNlciBoYXMg TUFTVEVSX1NJVEVfRlJFRUJTRCBzZXQsIGdvIHRvIHRoZSBGcmVlQlNEIHJlcG9zaXRvcnkKIyBm b3IgZXZlcnl0aGluZywgYnV0IGRvbid0IHNlYXJjaCBpdCB0d2ljZSBieSBhcHBlbmRpbmcgaXQg dG8gdGhlIGVuZC4KLmlmIGRlZmluZWQoTUFTVEVSX1NJVEVfRlJFRUJTRCkKX01BU1RFUl9TSVRF X09WRVJSSURFOj0JJHtNQVNURVJfU0lURV9CQUNLVVB9Cl9NQVNURVJfU0lURV9CQUNLVVA6PQkj IGVtcHR5Ci5lbHNlCl9NQVNURVJfU0lURV9PVkVSUklERT0JJHtNQVNURVJfU0lURV9PVkVSUklE RX0KX01BU1RFUl9TSVRFX0JBQ0tVUD0JJHtNQVNURVJfU0lURV9CQUNLVVB9Ci5lbmRpZgoKTk9G RVRDSEZJTEVTPz0KCiMgT3JnYW5pemUgRElTVEZJTEVTLCBQQVRDSEZJTEVTLCBfTUFTVEVSX1NJ VEVTX0FMTCwgX1BBVENIX1NJVEVTX0FMTAojIGFjY29yZGluZyB0byBncm91cGluZyBydWxlcyAo OnNvbWV0aGluZykKRElTVEZJTEVTPz0JCSR7RElTVE5BTUV9JHtFWFRSQUNUX1NVRlh9Cl9NQVNU RVJfU0lURVNfQUxMPQkke19NQVNURVJfU0lURVNfREVGQVVMVH0KX1BBVENIX1NJVEVTX0FMTD0J JHtfUEFUQ0hfU0lURVNfREVGQVVMVH0KX0dfVEVNUD0JREVGQVVMVAouZm9yIF9EIGluICR7RElT VEZJTEVTfQpfRF9URU1QPQkke19EOlMvXiR7X0Q6Qy86W146XSskLy99Ly99Ci4JaWYgIWVtcHR5 KF9EX1RFTVApCi4JCWZvciBfZ3JvdXAgaW4gJHtfRF9URU1QOlMvXjovLzpTLywvIC9nfQouCQkJ aWYgIWRlZmluZWQoX01BU1RFUl9TSVRFU18ke19ncm91cH0pCl9HX1RFTVBfVEVNUD0JJHtfR19U RU1QOk0vJHtfZ3JvdXB9L30KLgkJCQlpZiBlbXB0eShfR19URU1QX1RFTVApCl9HX1RFTVArPQkk e19ncm91cH0KX01BU1RFUl9TSVRFU19BTEwrPQkke19NQVNURVJfU0lURVNfJHtfZ3JvdXB9fQou CQkJCWVuZGlmCi4JCQllbmRpZgouCQllbmRmb3IKX0RJU1RGSUxFUys9CSR7X0Q6Qy86W146XSsk Ly99Ci4JZWxzZQpfRElTVEZJTEVTKz0JJHtfRH0KLgllbmRpZgouZW5kZm9yCl9HX1RFTVA9CURF RkFVTFQKLmZvciBfUCBpbiAke1BBVENIRklMRVN9Cl9QX1RFTVA9CSR7X1A6Qy86W14tOl1bXjpd KiQvL30KX1BfZ3JvdXBzPQkke19QOlMvXiR7X1A6Qy86W146XSskLy99Ly86Uy9eOi8vfQpfUF9m aWxlPQkke19QX1RFTVA6Qy86LVteOl0rJC8vfQpfUF9zdHJpcD0JJHtfUF9URU1QOlMvXiR7X1Bf VEVNUDpDLzotW146XSokLy99Ly86Uy9eOi8vfQouCWlmICFlbXB0eShfUF9ncm91cHMpCi4JCWZv ciBfZ3JvdXAgaW4gJHtfUF9ncm91cHM6Uy8sLyAvZ30KLgkJCWlmICFkZWZpbmVkKF9QQVRDSF9T SVRFU18ke19ncm91cH0pCl9HX1RFTVBfVEVNUD0JJHtfR19URU1QOk0vJHtfZ3JvdXB9L30KLgkJ CQlpZiBlbXB0eShfR19URU1QX1RFTVApCl9HX1RFTVArPQkke19ncm91cH0KX1BBVENIX1NJVEVT X0FMTCs9CSR7X1BBVENIX1NJVEVTXyR7X2dyb3VwfX0KLgkJCQllbmRpZgouCQkJZW5kaWYKLgkJ ZW5kZm9yCi4JZW5kaWYKX1BBVENIRklMRVM6PQkke19QQVRDSEZJTEVTfSAke19QX2ZpbGV9Ci4J aWYgIWVtcHR5KF9QX3N0cmlwKQpfUEFUQ0hfRElTVF9TVFJJUF9DQVNFUzo9CSR7X1BBVENIX0RJ U1RfU1RSSVBfQ0FTRVN9ICgiJHtfUF9maWxlfSIpIHByaW50ZiAlcyAiJHtfUF9zdHJpcH0iIDs7 Ci4JZW5kaWYKLmVuZGZvcgpfUF9ncm91cHM9Cl9QX2ZpbGU9Cl9QX3N0cmlwPQpfR19URU1QPQpf R19URU1QX1RFTVA9CkFMTEZJTEVTPz0JJHtfRElTVEZJTEVTfSAke19QQVRDSEZJTEVTfQoKIwoj IFNvcnQgdGhlIG1hc3RlciBzaXRlIGxpc3QgYWNjb3JkaW5nIHRvIHRoZSBwYXR0ZXJucyBpbiBN QVNURVJfU09SVAojCk1BU1RFUl9TT1JUPz0KTUFTVEVSX1NPUlRfUkVHRVg/PQpNQVNURVJfU09S VF9SRUdFWCs9CSR7TUFTVEVSX1NPUlQ6U3wufFxcLnxnOlN8Xnw6Ly9bXi9dKnw6U3wkfC98fQoK TUFTVEVSX1NPUlRfQVdLPQlCRUdJTiB7IFJTID0gIiAiOyBPUlMgPSAiICI7IElHTk9SRUNBU0Ug PSAxIDsgZ2wgPSAiJHtNQVNURVJfU09SVF9SRUdFWDpTfFxcfFxcXFx8Z30iOyB9Ci5mb3Igc3J0 IGluICR7TUFTVEVSX1NPUlRfUkVHRVh9Ck1BU1RFUl9TT1JUX0FXSys9CS8ke3NydDpTfC98XFwv fGd9LyB7IGdvb2RbIiR7c3J0OlN8XFx8XFxcXHxnfSJdID0gZ29vZFsiJHtzcnQ6U3xcXHxcXFxc fGd9Il0gIiAiICQkMCA7IG5leHQ7IH0KLmVuZGZvcgpNQVNURVJfU09SVF9BV0srPQl7IHJlc3Qg PSByZXN0ICIgIiAkJDA7IH0gRU5EIHsgbj1zcGxpdChnbCwgZ2xhKTsgZm9yKGk9MTtpPD1uO2kr KykgeyBwcmludCBnb29kW2dsYVtpXV07IH0gcHJpbnQgcmVzdDsgfQoKU09SVEVEX01BU1RFUl9T SVRFU19ERUZBVUxUX0NNRD0JY2QgJHsuQ1VSRElSfSAmJiAke01BS0V9IG1hc3Rlci1zaXRlcy1E RUZBVUxUClNPUlRFRF9QQVRDSF9TSVRFU19ERUZBVUxUX0NNRD0JCWNkICR7LkNVUkRJUn0gJiYg JHtNQUtFfSBwYXRjaC1zaXRlcy1ERUZBVUxUClNPUlRFRF9NQVNURVJfU0lURVNfQUxMX0NNRD0J Y2QgJHsuQ1VSRElSfSAmJiAke01BS0V9IG1hc3Rlci1zaXRlcy1BTEwKU09SVEVEX1BBVENIX1NJ VEVTX0FMTF9DTUQ9CWNkICR7LkNVUkRJUn0gJiYgJHtNQUtFfSBwYXRjaC1zaXRlcy1BTEwKCiMg aGFzIHNpbWlsYXIgZWZmZWN0IHRvIG9sZCB0YXJnZXRzLCBpLmUuLCBhY2Nlc3Mgb25seSB7TUFT VEVSLFBBVENIfV9TSVRFUywgbm90IHdvcmtpbmcgd2l0aCB0aGUgbmV3IF9uIHZhcmlhYmxlcwpt YXN0ZXItc2l0ZXMtREVGQVVMVDoKCUAke0VDSE9fQ01EfSAke19NQVNURVJfU0lURV9PVkVSUklE RX0gYCR7RUNIT19DTUR9ICcke19NQVNURVJfU0lURVNfREVGQVVMVH0nIHwgJHtBV0t9ICcke01B U1RFUl9TT1JUX0FXSzpTfFxcfFxcXFx8Z30nYCAke19NQVNURVJfU0lURV9CQUNLVVB9CnBhdGNo LXNpdGVzLURFRkFVTFQ6CglAJHtFQ0hPX0NNRH0gJHtfTUFTVEVSX1NJVEVfT1ZFUlJJREV9IGAk e0VDSE9fQ01EfSAnJHtfUEFUQ0hfU0lURVNfREVGQVVMVH0nIHwgJHtBV0t9ICcke01BU1RFUl9T T1JUX0FXSzpTfFxcfFxcXFx8Z30nYCAke19NQVNURVJfU0lURV9CQUNLVVB9CgojCiMgU29ydCB0 aGUgbWFzdGVyIHNpdGUgbGlzdCBhY2NvcmRpbmcgdG8gdGhlIHBhdHRlcm5zIGluIE1BU1RFUl9T T1JUCiMgYWNjb3JkaW5nIHRvIGdyb3VwaW5nIHJ1bGVzICg6c29tZXRoaW5nKQojCiMgZm9yIHVz ZSBpbiB0aGUgZmV0Y2ggdGFyZ2V0cwouZm9yIF9TIGluICR7TUFTVEVSX1NJVEVTfQpfU19URU1Q PQkke19TOlMvXiR7X1M6Q0AvOlteLzpdKyRAL0B9Ly99Ci4JaWYgIWVtcHR5KF9TX1RFTVApCi4J CWZvciBfZ3JvdXAgaW4gJHtfU19URU1QOlMvXjovLzpTLywvIC9nfQouCQkJaWYgIXRhcmdldCht YXN0ZXItc2l0ZXMtJHtfZ3JvdXB9KQpTT1JURURfTUFTVEVSX1NJVEVTXyR7X2dyb3VwfV9DTUQ9 CWNkICR7LkNVUkRJUn0gJiYgJHtNQUtFfSBtYXN0ZXItc2l0ZXMtJHtfZ3JvdXB9Cm1hc3Rlci1z aXRlcy0ke19ncm91cH06CglAJHtFQ0hPX0NNRH0gJHtfTUFTVEVSX1NJVEVfT1ZFUlJJREV9IGAk e0VDSE9fQ01EfSAnJHtfTUFTVEVSX1NJVEVTXyR7X2dyb3VwfX0nIHwgJHtBV0t9ICcke01BU1RF Ul9TT1JUX0FXSzpTfFxcfFxcXFx8Z30nYCAke19NQVNURVJfU0lURV9CQUNLVVB9Ci4JCQllbmRp ZgouCQllbmRmb3IKLgllbmRpZgouZW5kZm9yCi5mb3IgX1MgaW4gJHtQQVRDSF9TSVRFU30KX1Nf VEVNUD0JJHtfUzpTL14ke19TOkNALzpbXi86XSskQC9AfS8vfQouCWlmICFlbXB0eShfU19URU1Q KQouCQlmb3IgX2dyb3VwIGluICR7X1NfVEVNUDpTL146Ly86Uy8sLyAvZ30KLgkJCWlmICF0YXJn ZXQocGF0Y2gtc2l0ZXMtJHtfZ3JvdXB9KQpTT1JURURfUEFUQ0hfU0lURVNfJHtfZ3JvdXB9X0NN RD0JY2QgJHsuQ1VSRElSfSAmJiAke01BS0V9IHBhdGNoLXNpdGVzLSR7X2dyb3VwfQpwYXRjaC1z aXRlcy0ke19ncm91cH06CglAJHtFQ0hPX0NNRH0gJHtfTUFTVEVSX1NJVEVfT1ZFUlJJREV9IGAk e0VDSE9fQ01EfSAnJHtfUEFUQ0hfU0lURVNfJHtfZ3JvdXB9fScgfCAke0FXS30gJyR7TUFTVEVS X1NPUlRfQVdLOlN8XFx8XFxcXHxnfSdgICR7X01BU1RFUl9TSVRFX0JBQ0tVUH0KLgkJCWVuZGlm Ci4JCWVuZGZvcgouCWVuZGlmCi5lbmRmb3IKCiMKIyBIYWNrZXJ5IHRvIGVuYWJsZSBzaW1wbGUg ZmV0Y2ggdGFyZ2V0cyB3aXRoIHNldmVyYWwgZHluYW1pYyBNQVNURVJfU0lURVMKIwpfTUFTVEVS X1NJVEVTX0VOVj0JX01BU1RFUl9TSVRFU19ERUZBVUxUPSIke19NQVNURVJfU0lURVNfREVGQVVM VH0iCi5mb3IgX0YgaW4gJHtESVNURklMRVN9Cl9GX1RFTVA9CSR7X0Y6Uy9eJHtfRjpDLzpbXjpd KyQvL30vLzpTL146Ly99Ci4JaWYgIWVtcHR5KF9GX1RFTVApCi4JCWZvciBfZ3JvdXAgaW4gJHtf Rl9URU1QOlMvLC8gL2d9Ci4JCQlpZiBkZWZpbmVkKF9NQVNURVJfU0lURVNfJHtfZ3JvdXB9KQpf TUFTVEVSX1NJVEVTX0VOVis9CV9NQVNURVJfU0lURVNfJHtfZ3JvdXB9PSIke19NQVNURVJfU0lU RVNfJHtfZ3JvdXB9fSIKLgkJCWVuZGlmCi4JCWVuZGZvcgouCWVuZGlmCi5lbmRmb3IKX1BBVENI X1NJVEVTX0VOVj0JX1BBVENIX1NJVEVTX0RFRkFVTFQ9IiR7X1BBVENIX1NJVEVTX0RFRkFVTFR9 IgouZm9yIF9GIGluICR7UEFUQ0hGSUxFU30KX0ZfVEVNUD0JJHtfRjpTL14ke19GOkMvOlteLTpd W146XSokLy99Ly86Uy9eOi8vfQouCWlmICFlbXB0eShfRl9URU1QKQouCQlmb3IgX2dyb3VwIGlu ICR7X0ZfVEVNUDpTLywvIC9nfQouCQkJaWYgZGVmaW5lZChfUEFUQ0hfU0lURVNfJHtfZ3JvdXB9 KQpfUEFUQ0hfU0lURVNfRU5WKz0JX1BBVENIX1NJVEVTXyR7X2dyb3VwfT0iJHtfUEFUQ0hfU0lU RVNfJHtfZ3JvdXB9fSIKLgkJCWVuZGlmCi4JCWVuZGZvcgouCWVuZGlmCi5lbmRmb3IKCm1hc3Rl ci1zaXRlcy1BTEw6CglAJHtFQ0hPX0NNRH0gJHtfTUFTVEVSX1NJVEVfT1ZFUlJJREV9IGAke0VD SE9fQ01EfSAnJHtfTUFTVEVSX1NJVEVTX0FMTH0nIHwgJHtBV0t9ICcke01BU1RFUl9TT1JUX0FX SzpTfFxcfFxcXFx8Z30nYCAke19NQVNURVJfU0lURV9CQUNLVVB9CnBhdGNoLXNpdGVzLUFMTDoK CUAke0VDSE9fQ01EfSAke19NQVNURVJfU0lURV9PVkVSUklERX0gYCR7RUNIT19DTUR9ICcke19Q QVRDSF9TSVRFU19BTEx9JyB8ICR7QVdLfSAnJHtNQVNURVJfU09SVF9BV0s6U3xcXHxcXFxcfGd9 J2AgJHtfTUFTVEVSX1NJVEVfQkFDS1VQfQoKIyBzeW5vbnltcywgbW5lbW9uaWNzCm1hc3Rlci1z aXRlcy1hbGw6IG1hc3Rlci1zaXRlcy1BTEwKcGF0Y2gtc2l0ZXMtYWxsOiBwYXRjaC1zaXRlcy1B TEwKbWFzdGVyLXNpdGVzLWRlZmF1bHQ6IG1hc3Rlci1zaXRlcy1ERUZBVUxUCnBhdGNoLXNpdGVz LWRlZmF1bHQ6IHBhdGNoLXNpdGVzLURFRkFVTFQKCiMgY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBi ZWhhdmlvcgptYXN0ZXItc2l0ZXM6IG1hc3Rlci1zaXRlcy1ERUZBVUxUCnBhdGNoLXNpdGVzOiBw YXRjaC1zaXRlcy1ERUZBVUxUCgpDS1NVTUZJTEVTPQkJJHtBTExGSUxFU30KCiMgTGlzdCBvZiBh bGwgZmlsZXMsIHdpdGggJHtESVNUX1NVQkRJUn0gaW4gZnJvbnQuICBVc2VkIGZvciBjaGVja3N1 bS4KLmlmIGRlZmluZWQoRElTVF9TVUJESVIpCi5pZiBkZWZpbmVkKENLU1VNRklMRVMpICYmICR7 Q0tTVU1GSUxFU30hPSIiCl9DS1NVTUZJTEVTPz0JJHtDS1NVTUZJTEVTOlMvXi8ke0RJU1RfU1VC RElSfVwvL30KLmVuZGlmCi5lbHNlCl9DS1NVTUZJTEVTPz0JJHtDS1NVTUZJTEVTfQouZW5kaWYK CiMgVGhpcyBpcyB3aGF0IGlzIGFjdHVhbGx5IGdvaW5nIHRvIGJlIGV4dHJhY3RlZCwgYW5kIGlz IG92ZXJyaWRhYmxlCiMgIGJ5IHVzZXIuCkVYVFJBQ1RfT05MWT89CSR7X0RJU1RGSUxFU30KCi5p ZiAhdGFyZ2V0KG1haW50YWluZXIpCm1haW50YWluZXI6CglAJHtFQ0hPX0NNRH0gIiR7TUFJTlRB SU5FUn0iCi5lbmRpZgoKLmlmICFkZWZpbmVkKENBVEVHT1JJRVMpCmNoZWNrLWNhdGVnb3JpZXM6 CglAJHtFQ0hPX01TR30gIiR7UEtHTkFNRX06IE1ha2VmaWxlIGVycm9yOiBDQVRFR09SSUVTIGlz IG1hbmRhdG9yeS4iCglAJHtGQUxTRX0KLmVsc2UKClZBTElEX0NBVEVHT1JJRVMrPSBhY2Nlc3Np YmlsaXR5IGFmdGVyc3RlcCBhcmFiaWMgYXJjaGl2ZXJzIGFzdHJvIGF1ZGlvIFwKCWJlbmNobWFy a3MgYmlvbG9neSBjYWQgY2hpbmVzZSBjb21tcyBjb252ZXJ0ZXJzIGRhdGFiYXNlcyBcCglkZXNr dXRpbHMgZGV2ZWwgZG9jcyBkbnMgZWRpdG9ycyBlbGlzcCBlbXVsYXRvcnMgZW5saWdodGVubWVu dCBmaW5hbmNlIGZyZW5jaCBmdHAgXAoJZ2FtZXMgZ2VvZ3JhcGh5IGdlcm1hbiBnbm9tZSBnbnVz dGVwIGdyYXBoaWNzIGhhbXJhZGlvIGhhc2tlbGwgaGVicmV3IGh1bmdhcmlhbiBcCglpcHY2IGly YyBqYXBhbmVzZSBqYXZhIGtkZSBrbGQga29yZWFuIGxhbmcgbGludXggbGlzcCBcCgltYWlsIG1h dGUgbWF0aCBtYm9uZSBtaXNjIG11bHRpbWVkaWEgbmV0IG5ldC1pbSBuZXQtbWdtdCBuZXQtcDJw IG5ld3MgXAoJcGFsbSBwYXJhbGxlbCBwZWFyIHBlcmw1IHBsYW45IHBvbGlzaCBwb3J0dWd1ZXNl IHBvcnRzLW1nbXQgXAoJcHJpbnQgcHl0aG9uIHJ1YnkgcnVieWdlbXMgcnVzc2lhbiBcCglzY2hl bWUgc2NpZW5jZSBzZWN1cml0eSBzaGVsbHMgc3BhbmlzaCBzeXN1dGlscyBcCgl0Y2wgdGV4dHBy b2MgdGsgXAoJdWtyYWluaWFuIHZpZXRuYW1lc2Ugd2luZG93bWFrZXIgd3d3IFwKCXgxMSB4MTEt Y2xvY2tzIHgxMS1kcml2ZXJzIHgxMS1mbSB4MTEtZm9udHMgeDExLXNlcnZlcnMgeDExLXRoZW1l cyBcCgl4MTEtdG9vbGtpdHMgeDExLXdtIHhmY2Ugem9wZQoKY2hlY2stY2F0ZWdvcmllczoKLmZv ciBjYXQgaW4gJHtDQVRFR09SSUVTfQouCWlmIGVtcHR5KFZBTElEX0NBVEVHT1JJRVM6TSR7Y2F0 fSkKCQlAJHtFQ0hPX01TR30gIiR7UEtHTkFNRX06IE1ha2VmaWxlIGVycm9yOiBjYXRlZ29yeSAk e2NhdH0gbm90IGluIGxpc3Qgb2YgdmFsaWQgY2F0ZWdvcmllcy4iOyBcCgkJJHtGQUxTRX07Ci4J ZW5kaWYKLmVuZGZvcgouZW5kaWYKClBLR1JFUE9TSVRPUllTVUJESVI/PQlBbGwKUEtHUkVQT1NJ VE9SWT89CQkke1BBQ0tBR0VTfS8ke1BLR1JFUE9TSVRPUllTVUJESVJ9Ci5pZiBleGlzdHMoJHtQ QUNLQUdFU30pClBLR0ZJTEU/PQkJJHtQS0dSRVBPU0lUT1JZfS8ke1BLR05BTUV9JHtQS0dfU1VG WH0KLmVsc2UKUEtHRklMRT89CQkkey5DVVJESVJ9LyR7UEtHTkFNRX0ke1BLR19TVUZYfQouZW5k aWYKV1JLRElSX1BLR0ZJTEU9CSR7V1JLRElSfS9wa2cvJHtQS0dOQU1FfSR7UEtHX1NVRlh9Cgoj IFRoZSAibGF0ZXN0IHZlcnNpb24iIGxpbmsgLS0gJHtQS0dOQU1FfSBtaW51cyBldmVydGhpbmcg YWZ0ZXIgdGhlIGxhc3QgJy0nClBLR0xBVEVTVFJFUE9TSVRPUlk/PQkke1BBQ0tBR0VTfS9MYXRl c3QKUEtHQkFTRT89CQkJJHtQS0dOQU1FUFJFRklYfSR7UE9SVE5BTUV9JHtQS0dOQU1FU1VGRklY fQpMQVRFU1RfTElOSz89CQkke1BLR0JBU0V9ClBLR0xBVEVTVEZJTEU9CQkke1BLR0xBVEVTVFJF UE9TSVRPUll9LyR7TEFURVNUX0xJTkt9JHtQS0dfU1VGWH0KCkNPTkZJR1VSRV9TQ1JJUFQ/PQlj b25maWd1cmUKQ09ORklHVVJFX0NNRD89CQkuLyR7Q09ORklHVVJFX1NDUklQVH0KQlVJTERfQVJD SCE9CQkke1VOQU1FfSAtcApDT05GSUdVUkVfVEFSR0VUX0JVSUxEPz0JJHtCVUlMRF9BUkNIfS1w b3J0YmxkLSR7T1BTWVM6dGx9JHtPU1JFTH0KQ09ORklHVVJFX1RBUkdFVF9CVUlMRDo9CSR7Q09O RklHVVJFX1RBUkdFVF9CVUlMRDpTLy0tYnVpbGQ9Ly99CiMuaWYgZGVmaW5lZChYX0JVSUxEX0ZP UikKI0NPTkZJR1VSRV9UQVJHRVRfVEFSR0VUPz0JCSR7QVJDSH0tcG9ydGJsZC0ke09QU1lTOnRs fSR7T1NSRUx9CiNDT05GSUdVUkVfVEFSR0VUX1RBUkdFVDo9CQkke0NPTkZJR1VSRV9UQVJHRVRf VEFSR0VUOlMvLS10YXJnZXQ9Ly99CiMuZW5kaWYKQ09ORklHVVJFX0xPRz89CQljb25maWcubG9n CgojIEEgZGVmYXVsdCBtZXNzYWdlIHRvIHByaW50IGlmIGRvLWNvbmZpZ3VyZSBmYWlscy4KQ09O RklHVVJFX0ZBSUxfTUVTU0FHRT89CSJQbGVhc2UgcmVwb3J0IHRoZSBwcm9ibGVtIHRvICR7TUFJ TlRBSU5FUn0gW21haW50YWluZXJdIGFuZCBhdHRhY2ggdGhlIFwiJHtDT05GSUdVUkVfV1JLU1JD fS8ke0NPTkZJR1VSRV9MT0d9XCIgaW5jbHVkaW5nIHRoZSBvdXRwdXQgb2YgdGhlIGZhaWx1cmUg b2YgeW91ciBtYWtlIGNvbW1hbmQuIEFsc28sIGl0IG1pZ2h0IGJlIGEgZ29vZCBpZGVhIHRvIHBy b3ZpZGUgYW4gb3ZlcnZpZXcgb2YgYWxsIHBhY2thZ2VzIGluc3RhbGxlZCBvbiB5b3VyIHN5c3Rl bSAoZS5nLiBhICR7UEtHX0lORk99IC1FYSkuIgoKLmlmIGRlZmluZWQoR05VX0NPTkZJR1VSRSkK IyBNYXhpbXVtIGNvbW1hbmQgbGluZSBsZW5ndGgKLmlmICFkZWZpbmVkKENPTkZJR1VSRV9NQVhf Q01EX0xFTikKQ09ORklHVVJFX01BWF9DTURfTEVOIT0JJHtTWVNDVEx9IC1uIGtlcm4uYXJnbWF4 Ci5lbmRpZgpHTlVfQ09ORklHVVJFX1BSRUZJWD89CSR7UFJFRklYfQpHTlVfQ09ORklHVVJFX01B TlBSRUZJWD89CSR7TUFOUFJFRklYfQpDT05GSUdfU0lURT89CQkke1BPUlRTRElSfS9UZW1wbGF0 ZXMvY29uZmlnLnNpdGUKQ09ORklHVVJFX0FSR1MrPQktLXByZWZpeD0ke0dOVV9DT05GSUdVUkVf UFJFRklYfSAkJHtfTEFURV9DT05GSUdVUkVfQVJHU30KQ09ORklHVVJFX0VOVis9CQlDT05GSUdf U0lURT0ke0NPTkZJR19TSVRFfSBsdF9jdl9zeXNfbWF4X2NtZF9sZW49JHtDT05GSUdVUkVfTUFY X0NNRF9MRU59CkhBU19DT05GSUdVUkU9CQl5ZXMKClNFVF9MQVRFX0NPTkZJR1VSRV9BUkdTPSBc CiAgICAgX0xBVEVfQ09ORklHVVJFX0FSR1M9IiIgOyBcCglpZiBbIC16ICIke0NPTkZJR1VSRV9B UkdTOk0tLWxvY2Fsc3RhdGVkaXI9KjpRfSIgXSAmJiBcCgkgICAuLyR7Q09ORklHVVJFX1NDUklQ VH0gLS1oZWxwIDI+JjEgfCAke0dSRVB9IC0tIC0tbG9jYWxzdGF0ZWRpciA+IC9kZXYvbnVsbDsg dGhlbiBcCgkgICAgX0xBVEVfQ09ORklHVVJFX0FSR1M9IiQke19MQVRFX0NPTkZJR1VSRV9BUkdT fSAtLWxvY2Fsc3RhdGVkaXI9L3ZhciIgOyBcCglmaSA7IFwKCWlmIFsgISAteiAiYC4vJHtDT05G SUdVUkVfU0NSSVBUfSAtLWhlbHAgMj4mMSB8ICR7R1JFUH0gLS0gJy0tbWFuZGlyJ2AiIF07IHRo ZW4gXAoJICAgIF9MQVRFX0NPTkZJR1VSRV9BUkdTPSIkJHtfTEFURV9DT05GSUdVUkVfQVJHU30g LS1tYW5kaXI9JHtHTlVfQ09ORklHVVJFX01BTlBSRUZJWH0vbWFuIiA7IFwKCWZpIDsgXAoJaWYg WyAhIC16ICJgLi8ke0NPTkZJR1VSRV9TQ1JJUFR9IC0taGVscCAyPiYxIHwgJHtHUkVQfSAtLSAn LS1pbmZvZGlyJ2AiIF07IHRoZW4gXAoJICAgIF9MQVRFX0NPTkZJR1VSRV9BUkdTPSIkJHtfTEFU RV9DT05GSUdVUkVfQVJHU30gLS1pbmZvZGlyPSR7R05VX0NPTkZJR1VSRV9QUkVGSVh9LyR7SU5G T19QQVRIfS8ke0lORk9fU1VCRElSfSIgOyBcCglmaSA7IFwKCWlmIFsgLXogImAuLyR7Q09ORklH VVJFX1NDUklQVH0gLS12ZXJzaW9uIDI+JjEgfCAke0VHUkVQfSAtaSAnKGF1dG9jb25mLioyXC4x M3xVbnJlY29nbml6ZWQgb3B0aW9uKSdgIiBdOyB0aGVuIFwKCQlfTEFURV9DT05GSUdVUkVfQVJH Uz0iJCR7X0xBVEVfQ09ORklHVVJFX0FSR1N9IC0tYnVpbGQ9JHtDT05GSUdVUkVfVEFSR0VUX0JV SUxEfSAtLWhvc3Q9JHtDT05GSUdVUkVfVEFSR0VUfSIgOyBcCgllbHNlIFwKCQlfTEFURV9DT05G SUdVUkVfQVJHUz0iJCR7X0xBVEVfQ09ORklHVVJFX0FSR1N9ICR7Q09ORklHVVJFX1RBUkdFVH0i IDsgXAoJZmkgOwouZW5kaWYKCiMgUGFzc2VkIHRvIG1vc3Qgb2Ygc2NyaXB0IGludm9jYXRpb25z ClNDUklQVFNfRU5WKz0JQ1VSRElSPSR7TUFTVEVSRElSfSBESVNURElSPSR7RElTVERJUn0gXAoJ CSAgV1JLRElSPSR7V1JLRElSfSBXUktTUkM9JHtXUktTUkN9IFBBVENIRElSPSR7UEFUQ0hESVJ9 IFwKCQkgIFNDUklQVERJUj0ke1NDUklQVERJUn0gRklMRVNESVI9JHtGSUxFU0RJUn0gXAoJCSAg UE9SVFNESVI9JHtQT1JUU0RJUn0gUFJFRklYPSR7UFJFRklYfSBMT0NBTEJBU0U9JHtMT0NBTEJB U0V9CgouaWYgZGVmaW5lZChCQVRDSCkKU0NSSVBUU19FTlYrPQlCQVRDSD15ZXMKLmVuZGlmCgou aWYgJHtQUkVGSVh9ID09IC91c3IKTUFOUFJFRklYPz0JL3Vzci9zaGFyZQouZWxzZQpNQU5QUkVG SVg/PQkke1BSRUZJWH0KLmVuZGlmCgpNQU5ESVJTKz0JJHtNQU5QUkVGSVh9L21hbgouZm9yIHNl Y3QgaW4gMSAyIDMgNCA1IDYgNyA4IDkKTUFOJHtzZWN0fVBSRUZJWD89CSR7TUFOUFJFRklYfQou ZW5kZm9yCk1BTkxQUkVGSVg/PQkke01BTlBSRUZJWH0KTUFOTlBSRUZJWD89CSR7TUFOUFJFRklY fQoKLmlmICR7UFJFRklYfSA9PSAvdXNyCklORk9fUEFUSD89CXNoYXJlL2luZm8KLmVsc2UKSU5G T19QQVRIPz0JaW5mbwouZW5kaWYKCi5pZiBkZWZpbmVkKElORk8pClJVTl9ERVBFTkRTKz0JaW5k ZXhpbmZvOiR7UE9SVFNESVJ9L3ByaW50L2luZGV4aW5mbwoKLiBmb3IgRCBpbiAke0lORk86SH0K UkQ6PQkke0R9Ci4gIGlmICR7UkR9ICE9ICIuIgouICAgaWYgIWRlZmluZWQoSU5GT19TVUJESVIp CklORk9fU1VCRElSOj0JJHtSRH0KLiAgIGVsaWYgJHtJTkZPX1NVQkRJUn0gIT0gJHtSRH0KQlJP S0VOPQkJb25seSBvbmUgc3ViZGlyZWN0b3J5IGluIElORk8gaXMgYWxsb3dlZAouICAgZW5kaWYK LiAgZW5kaWYKLnVuZGVmIFJECi4gZW5kZm9yCi5lbmRpZgoKRE9DU0RJUl9SRUw/PQkke0RPQ1NE SVI6UyxeJHtQUkVGSVh9LywsfQpFWEFNUExFU0RJUl9SRUw/PQkke0VYQU1QTEVTRElSOlMsXiR7 UFJFRklYfS8sLH0KREFUQURJUl9SRUw/PQkke0RBVEFESVI6UyxeJHtQUkVGSVh9LywsfQpXV1dE SVJfUkVMPz0JJHtXV1dESVI6UyxeJHtQUkVGSVh9LywsfQpFVENESVJfUkVMPz0JJHtFVENESVI6 UyxeJHtQUkVGSVh9LywsfQoKUExJU1RfU1VCKz0JRE9DU0RJUj0iJHtET0NTRElSX1JFTH0iIFwK CQlFWEFNUExFU0RJUj0iJHtFWEFNUExFU0RJUl9SRUx9IiBcCgkJREFUQURJUj0iJHtEQVRBRElS X1JFTH0iIFwKCQlXV1dESVI9IiR7V1dXRElSX1JFTH0iIFwKCQlFVENESVI9IiR7RVRDRElSX1JF TH0iCgpERVNLVE9QRElSPz0JCSR7UFJFRklYfS9zaGFyZS9hcHBsaWNhdGlvbnMKCi5NQUlOOiBh bGwKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKIyBNYW55IHdheXMgdG8gZGlzYWJsZSBhIHBvcnQuCiMKIyBJZiB3ZSdyZSBp biBCQVRDSCBtb2RlIGFuZCB0aGUgcG9ydCBpcyBpbnRlcmFjdGl2ZSwgb3Igd2UncmUKIyBpbiBp bnRlcmFjdGl2ZSBtb2RlIGFuZCB0aGUgcG9ydCBpcyBub24taW50ZXJhY3RpdmUsIHNraXAgYWxs CiMgdGhlIGltcG9ydGFudCB0YXJnZXRzLiAgVGhlIHJlYXNvbiB3ZSBoYXZlIHR3byBtb2RlcyBp cyB0aGF0CiMgb25lIG1pZ2h0IHdhbnQgdG8gbGVhdmUgYSBidWlsZCBpbiBCQVRDSCBtb2RlIHJ1 bm5pbmcKIyBvdmVybmlnaHQsIHRoZW4gY29tZSBiYWNrIGluIHRoZSBtb3JuaW5nIGFuZCBkbyBf b25seV8gdGhlCiMgaW50ZXJhY3RpdmUgb25lcyB0aGF0IHJlcXVpcmVkIHlvdXIgaW50ZXJ2ZW50 aW9uLgojCiMgSWdub3JlIHBvcnRzIHRoYXQgY2FuJ3QgYmUgcmVzb2xkIGlmIGJ1aWxkaW5nIGZv ciBhIENEUk9NLgojCiMgRG9uJ3QgYnVpbGQgYSBwb3J0IGlmIGl0J3MgcmVzdHJpY3RlZCBhbmQg d2UgZG9uJ3Qgd2FudCB0byBnZXQKIyBpbnRvIHRoYXQuCiMKIyBEb24ndCBidWlsZCBhIHBvcnQg aWYgaXQncyBicm9rZW4sIHVubGVzcyB3ZSdyZSBydW5uaW5nIGEgcGFyYWxsZWwKIyBidWlsZCAo aW4gY2FzZSBpdCdzIGZpeGVkKS4KIwojIERvbid0IGJ1aWxkIGEgcG9ydCBpZiBpdCdzIGZvcmJp ZGRlbiBmb3Igd2hhdGV2ZXIgcmVhc29uLgojCiMgRG9uJ3QgYnVpbGQgYSBwb3J0IGlmIHRoZSBz eXN0ZW0gaXMgdG9vIG9sZC4KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBDaGVjayB0aGUgbWFjaGluZSBhcmNoaXRlY3R1 cmVzCi5pZiBkZWZpbmVkKE9OTFlfRk9SX0FSQ0hTKQouZm9yIF9fQVJDSCBpbiAke09OTFlfRk9S X0FSQ0hTfQouaWYgJHtBUkNIOk0ke19fQVJDSH19ICE9ICIiCl9fQVJDSF9PSz89CQkxCi5lbmRp ZgouZW5kZm9yCi5lbHNlCl9fQVJDSF9PSz89CQkxCi5lbmRpZgoKLmlmIGRlZmluZWQoTk9UX0ZP Ul9BUkNIUykKLmZvciBfX05BUkNIIGluICR7Tk9UX0ZPUl9BUkNIU30KLmlmICR7QVJDSDpNJHtf X05BUkNIfX0gIT0gIiIKLnVuZGVmIF9fQVJDSF9PSwouZW5kaWYKLmVuZGZvcgouZW5kaWYKCi5p ZiAhZGVmaW5lZChfX0FSQ0hfT0spCi5pZiBkZWZpbmVkKE9OTFlfRk9SX0FSQ0hTKQpJR05PUkU9 CQlpcyBvbmx5IGZvciAke09OTFlfRk9SX0FSQ0hTfSwKLmVsc2UgIyBkZWZpbmVkKE5PVF9GT1Jf QVJDSFMpCklHTk9SRT0JCWRvZXMgbm90IHJ1biBvbiAke05PVF9GT1JfQVJDSFN9LAouZW5kaWYK SUdOT1JFKz0Jd2hpbGUgeW91IGFyZSBydW5uaW5nICR7QVJDSH0KCi5pZiBkZWZpbmVkKE9OTFlf Rk9SX0FSQ0hTX1JFQVNPTl8ke0FSQ0h9KQpJR05PUkUrPQkocmVhc29uOiAke09OTFlfRk9SX0FS Q0hTX1JFQVNPTl8ke0FSQ0h9fSkKLmVsaWYgZGVmaW5lZChPTkxZX0ZPUl9BUkNIU19SRUFTT04p CklHTk9SRSs9CShyZWFzb246ICR7T05MWV9GT1JfQVJDSFNfUkVBU09OfSkKLmVuZGlmCgouaWYg ZGVmaW5lZChOT1RfRk9SX0FSQ0hTX1JFQVNPTl8ke0FSQ0h9KQpJR05PUkUrPQkocmVhc29uOiAk e05PVF9GT1JfQVJDSFNfUkVBU09OXyR7QVJDSH19KQouZWxpZiBkZWZpbmVkKE5PVF9GT1JfQVJD SFNfUkVBU09OKQpJR05PUkUrPQkocmVhc29uOiAke05PVF9GT1JfQVJDSFNfUkVBU09OfSkKLmVu ZGlmCgouZW5kaWYKCiMgQ2hlY2sgdGhlIHVzZXIgaW50ZXJhY3Rpb24gYW5kIGxlZ2FsIGlzc3Vl cwouaWYgIWRlZmluZWQoTk9fSUdOT1JFKQouaWYgKGRlZmluZWQoSVNfSU5URVJBQ1RJVkUpICYm IGRlZmluZWQoQkFUQ0gpKQpJR05PUkU9CQlpcyBhbiBpbnRlcmFjdGl2ZSBwb3J0Ci5lbGlmICgh ZGVmaW5lZChJU19JTlRFUkFDVElWRSkgJiYgZGVmaW5lZChJTlRFUkFDVElWRSkpCklHTk9SRT0J CWlzIG5vdCBhbiBpbnRlcmFjdGl2ZSBwb3J0Ci5lbGlmIChkZWZpbmVkKE5PX0NEUk9NKSAmJiBk ZWZpbmVkKEZPUl9DRFJPTSkpCklHTk9SRT0JCW1heSBub3QgYmUgcGxhY2VkIG9uIGEgQ0RST006 ICR7Tk9fQ0RST019Ci5lbGlmIChkZWZpbmVkKFJFU1RSSUNURUQpICYmIGRlZmluZWQoTk9fUkVT VFJJQ1RFRCkpCklHTk9SRT0JCWlzIHJlc3RyaWN0ZWQ6ICR7UkVTVFJJQ1RFRH0KLmVsaWYgKGRl ZmluZWQoTk9fUEFDS0FHRSkgJiYgZGVmaW5lZChQQUNLQUdFX0JVSUxESU5HKSkKSUdOT1JFPQkJ bWF5IG5vdCBiZSBwYWNrYWdlZDogJHtOT19QQUNLQUdFfQouZWxpZiBkZWZpbmVkKEJST0tFTikK LmlmICFkZWZpbmVkKFRSWUJST0tFTikKSUdOT1JFPQkJaXMgbWFya2VkIGFzIGJyb2tlbjogJHtC Uk9LRU59Ci5lbmRpZgouZWxpZiBkZWZpbmVkKEJST0tFTl8ke0FSQ0h9KQouaWYgIWRlZmluZWQo VFJZQlJPS0VOKQpJR05PUkU9CQlpcyBtYXJrZWQgYXMgYnJva2VuIG9uICR7QVJDSH06ICR7QlJP S0VOXyR7QVJDSH19Ci5lbmRpZgouZWxpZiBkZWZpbmVkKEJST0tFTl8ke09QU1lTfV8ke09TUkVM OlJ9KQouaWYgIWRlZmluZWQoVFJZQlJPS0VOKQpJR05PUkU9CQlpcyBtYXJrZWQgYXMgYnJva2Vu IG9uICR7T1BTWVN9ICR7T1NSRUx9OiAke0JST0tFTl8ke09QU1lTfV8ke09TUkVMOlJ9fQouZW5k aWYKLmVsaWYgZGVmaW5lZChCUk9LRU5fJHtPUFNZU31fJHtPU1JFTDpSfV8ke0FSQ0h9KQouaWYg IWRlZmluZWQoVFJZQlJPS0VOKQpJR05PUkU9CQlpcyBtYXJrZWQgYXMgYnJva2VuIG9uICR7T1BT WVN9ICR7T1NSRUx9ICR7QVJDSH06ICR7QlJPS0VOXyR7T1BTWVN9XyR7T1NSRUw6Un1fJHtBUkNI fX0KLmVuZGlmCi5lbGlmIGRlZmluZWQoQlJPS0VOXyR7T1BTWVN9KQouaWYgIWRlZmluZWQoVFJZ QlJPS0VOKQpJR05PUkU9CQlpcyBtYXJrZWQgYXMgYnJva2VuIG9uICR7T1BTWVN9OiAke0JST0tF Tl8ke09QU1lTfX0KLmVuZGlmCi5lbGlmIGRlZmluZWQoRk9SQklEREVOKQpJR05PUkU9CQlpcyBm b3JiaWRkZW46ICR7Rk9SQklEREVOfQouZW5kaWYKCiMgRGVmaW5lIHRoZSB0ZXh0IHRvIGJlIG91 dHB1dCB0byBMRUdBTAouaWYgZGVmaW5lZChMRUdBTF9URVhUKQpMRUdBTD0gJHtMRUdBTF9URVhU fQouZWxpZiBkZWZpbmVkKFJFU1RSSUNURUQpCkxFR0FMPSAke1JFU1RSSUNURUR9Ci5lbGlmIGRl ZmluZWQoTk9fQ0RST00pCkxFR0FMPSAke05PX0NEUk9NfQouZWxpZiBkZWZpbmVkKE5PX1BBQ0tB R0UpICYmICEgZGVmaW5lZChMRUdBTF9QQUNLQUdFKQpMRUdBTD0gJHtOT19QQUNLQUdFfQouZW5k aWYKCi5pZiAoZGVmaW5lZChNQU5VQUxfUEFDS0FHRV9CVUlMRCkgJiYgZGVmaW5lZChQQUNLQUdF X0JVSUxESU5HKSkKSUdOT1JFPQkJaGFzIHRvIGJlIGJ1aWx0IG1hbnVhbGx5OiAke01BTlVBTF9Q QUNLQUdFX0JVSUxEfQpjbGVhbjoKCUAke0lHTk9SRUNNRH0KLmVuZGlmCgouaWYgZGVmaW5lZChJ R05PUkUpCi5pZiBkZWZpbmVkKElHTk9SRV9TSUxFTlQpCklHTk9SRUNNRD0JJHtET19OQURBfQou ZWxzZQpJR05PUkVDTUQ9CSR7RUNIT19NU0d9ICI9PT0+ICAke1BLR05BTUV9ICIke0lHTk9SRTpR fS47ZXhpdCAxCi5lbmRpZgoKX1RBUkdFVFM9CWNoZWNrLXNhbml0eSBmZXRjaCBjaGVja3N1bSBl eHRyYWN0IHBhdGNoIGNvbmZpZ3VyZSBhbGwgYnVpbGQgXAoJCQlpbnN0YWxsIHJlaW5zdGFsbCBw YWNrYWdlIHN0YWdlIHJlc3RhZ2UKCi5mb3IgdGFyZ2V0IGluICR7X1RBUkdFVFN9Ci5pZiAhdGFy Z2V0KCR7dGFyZ2V0fSkKJHt0YXJnZXR9OgoJQCR7SUdOT1JFQ01EfQouaWYgZGVmaW5lZChJTlNU QUxMU19ERVBFTkRTKQoJQCR7RkFMU0V9Ci5lbmRpZgouZW5kaWYKLmVuZGZvcgoKLmVuZGlmCgou ZW5kaWYKCi5pZiBkZWZpbmVkKElHTk9SRSkgfHwgZGVmaW5lZChOT19QQUNLQUdFKQppZ25vcmVs aXN0OiBwYWNrYWdlLW5hbWUKLmVsc2UKaWdub3JlbGlzdDoKCUAke0RPX05BREF9Ci5lbmRpZgoK LmlmIGRlZmluZWQoSUdOT1JFKSB8fCBkZWZpbmVkKE5PX1BBQ0tBR0UpCmlnbm9yZWxpc3QtdmVy Ym9zZToKLmlmIGRlZmluZWQoSUdOT1JFKQoJQCR7RUNIT19DTUR9ICIke1BLR05BTUV9fElHTk9S RTogIiR7SUdOT1JFOlF9Ci5lbHNlCglAJHtFQ0hPX0NNRH0gIiR7UEtHTkFNRX18Tk9fUEFDS0FH RTogIiR7Tk9fUEFDS0FHRTpRfQouZW5kaWYKLmVsc2UKaWdub3JlbGlzdC12ZXJib3NlOgoJQCR7 RE9fTkFEQX0KLmVuZGlmCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQ2xlYW4gZGlyZWN0b3JpZXMgZm9yIGZ0cCBvciBD RFJPTS4KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIwoKLmlmICFkZWZpbmVkKExJQ0VOU0UpCgouaWYgZGVmaW5lZChSRVNUUklD VEVEKQpjbGVhbi1yZXN0cmljdGVkOglkZWxldGUtZGlzdGZpbGVzIGRlbGV0ZS1wYWNrYWdlCmNs ZWFuLXJlc3RyaWN0ZWQtbGlzdDogZGVsZXRlLWRpc3RmaWxlcy1saXN0IGRlbGV0ZS1wYWNrYWdl LWxpc3QKUkVTVFJJQ1RFRF9GSUxFUz89CSR7X0RJU1RGSUxFU30gJHtfUEFUQ0hGSUxFU30KLmVs c2UKY2xlYW4tcmVzdHJpY3RlZDoKY2xlYW4tcmVzdHJpY3RlZC1saXN0OgouZW5kaWYKCi5pZiBk ZWZpbmVkKE5PX0NEUk9NKQpjbGVhbi1mb3ItY2Ryb206CWRlbGV0ZS1kaXN0ZmlsZXMgZGVsZXRl LXBhY2thZ2UKY2xlYW4tZm9yLWNkcm9tLWxpc3Q6CWRlbGV0ZS1kaXN0ZmlsZXMtbGlzdCBkZWxl dGUtcGFja2FnZS1saXN0ClJFU1RSSUNURURfRklMRVM/PQkke19ESVNURklMRVN9ICR7X1BBVENI RklMRVN9Ci5lbHNlCmNsZWFuLWZvci1jZHJvbToKY2xlYW4tZm9yLWNkcm9tLWxpc3Q6Ci5lbmRp ZgoKLmVuZGlmICMgIWRlZmluZWQoTElDRU5TRSkKCi5pZiBkZWZpbmVkKEFMTF9IT09LKQphbGw6 CglAY2QgJHsuQ1VSRElSfSAmJiAke1NFVEVOVn0gQ1VSRElSPSR7LkNVUkRJUn0gRElTVE5BTUU9 JHtESVNUTkFNRX0gXAoJICBESVNURElSPSR7RElTVERJUn0gV1JLRElSPSR7V1JLRElSfSBXUktT UkM9JHtXUktTUkN9IFwKCSAgUEFUQ0hESVI9JHtQQVRDSERJUn0gU0NSSVBURElSPSR7U0NSSVBU RElSfSBcCgkgIEZJTEVTRElSPSR7RklMRVNESVJ9IFBPUlRTRElSPSR7UE9SVFNESVJ9IFBSRUZJ WD0ke1BSRUZJWH0gXAoJICBCVUlMRF9ERVBFTkRTPSIke0JVSUxEX0RFUEVORFN9IiBSVU5fREVQ RU5EUz0iJHtSVU5fREVQRU5EU30iIFwKCSAgQ09ORkxJQ1RTPSIke0NPTkZMSUNUU30iIFwKCSR7 QUxMX0hPT0t9Ci5lbmRpZgoKLmlmICF0YXJnZXQoYWxsKQphbGw6IHN0YWdlCi5lbmRpZgoKLmlm ICFkZWZpbmVkKERFUEVORFNfVEFSR0VUKQouaWYgZGVmaW5lZChERVBFTkRTX1BSRUNMRUFOKQpE RVBFTkRTX1RBUkdFVD0JY2xlYW4KREVQRU5EU19BUkdTPQlOT0NMRUFOREVQRU5EUz15ZXMKLmVu ZGlmCi5pZiBtYWtlKHJlaW5zdGFsbCkKREVQRU5EU19UQVJHRVQrPQlyZWluc3RhbGwKLmVsc2UK REVQRU5EU19UQVJHRVQrPQlpbnN0YWxsCi5lbmRpZgouaWYgZGVmaW5lZChERVBFTkRTX0NMRUFO KQpERVBFTkRTX1RBUkdFVCs9CWNsZWFuCkRFUEVORFNfQVJHUys9CU5PQ0xFQU5ERVBFTkRTPXll cwouZW5kaWYKLmVuZGlmCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyBEbyBwcmVsaW1pbmFyeSB3b3JrIHRvIGRldGVj dCBpZiB3ZSBuZWVkIHRvIHJ1biB0aGUgY29uZmlnCiMgdGFyZ2V0IG9yIG5vdC4KIwojIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj Ci5pZiAoKCFkZWZpbmVkKE9QVElPTlNfREVGSU5FKSAmJiAhZGVmaW5lZChPUFRJT05TX1NJTkdM RSkgJiYgIWRlZmluZWQoT1BUSU9OU19NVUxUSSkpIFwKCSYmICFkZWZpbmVkKE9QVElPTlNfR1JP VVApICYmICFkZWZpbmVkKE9QVElPTlNfUkFESU8pIFwKCXx8IGRlZmluZWQoQ09ORklHX0RPTkVf JHtVTklRVUVOQU1FOnR1fSkgfHwgXAoJZGVmaW5lZChQQUNLQUdFX0JVSUxESU5HKSB8fCBkZWZp bmVkKEJBVENIKSkKX09QVElPTlNfT0s9eWVzCi5lbmRpZgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFRoZSBmb2xsb3dp bmcgYXJlIHVzZWQgdG8gY3JlYXRlIGVhc3kgZHVtbXkgdGFyZ2V0cyBmb3IKIyBkaXNhYmxpbmcg c29tZSBiaXQgb2YgZGVmYXVsdCB0YXJnZXQgYmVoYXZpb3IgeW91IGRvbid0IHdhbnQuCiMgVGhl eSBzdGlsbCBjaGVjayB0byBzZWUgaWYgdGhlIHRhcmdldCBleGlzdHMsIGFuZCBpZiBzbyBkb24n dAojIGRvIGFueXRoaW5nLCBzaW5jZSB5b3UgbWlnaHQgd2FudCB0byBzZXQgdGhpcyBnbG9iYWxs eSBmb3IgYQojIGdyb3VwIG9mIHBvcnRzIGluIGEgTWFrZWZpbGUuaW5jLCBidXQgc3RpbGwgYmUg YWJsZSB0bwojIG92ZXJyaWRlIGZyb20gYW4gaW5kaXZpZHVhbCBNYWtlZmlsZS4KIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoK IyBEaXNhYmxlIGNoZWNrc3VtCi5pZiBkZWZpbmVkKE5PX0NIRUNLU1VNKSAmJiAhdGFyZ2V0KGNo ZWNrc3VtKQpjaGVja3N1bTogZmV0Y2gKCUAke0RPX05BREF9Ci5lbmRpZgoKIyBEaXNhYmxlIGJ1 aWxkCi5pZiBkZWZpbmVkKE5PX0JVSUxEKSAmJiAhdGFyZ2V0KGJ1aWxkKQpidWlsZDogY29uZmln dXJlCglAJHtUT1VDSH0gJHtUT1VDSF9GTEFHU30gJHtCVUlMRF9DT09LSUV9Ci5lbmRpZgoKIyBE aXNhYmxlIHBhY2thZ2UKLmlmIGRlZmluZWQoTk9fUEFDS0FHRSkgJiYgIXRhcmdldChwYWNrYWdl KQpwYWNrYWdlOgouaWYgZGVmaW5lZChJR05PUkVfU0lMRU5UKQoJQCR7RE9fTkFEQX0KLmVsc2UK CUAke0VDSE9fTVNHfSAiPT09PiAgJHtQS0dOQU1FfSBtYXkgbm90IGJlIHBhY2thZ2VkOiAiJHtO T19QQUNLQUdFOlF9LgouZW5kaWYKLmVuZGlmCgojIERpc2FibGUgZGVzY3JpYmUKLmlmIGRlZmlu ZWQoTk9fREVTQ1JJQkUpICYmICF0YXJnZXQoZGVzY3JpYmUpCmRlc2NyaWJlOgoJQCR7RE9fTkFE QX0KLmVuZGlmCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCiMgTW9yZSBzdGFuZGFyZCB0YXJnZXRzIHN0YXJ0IGhlcmUuCiMK IyBUaGVzZSBhcmUgdGhlIGJvZHkgb2YgdGhlIGJ1aWxkL2luc3RhbGwgZnJhbWV3b3JrLiAgSWYg eW91IGFyZQojIG5vdCBoYXBweSB3aXRoIHRoZSBkZWZhdWx0IGFjdGlvbnMsIGFuZCB5b3UgY2Fu J3Qgc29sdmUgaXQgYnkKIyBhZGRpbmcgcHJlLSogb3IgcG9zdC0qIHRhcmdldHMvc2NyaXB0cywg b3ZlcnJpZGUgdGhlc2UuCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgUHJlLWV2ZXJ5dGhpbmcKCnByZS1ldmVyeXRoaW5n OjoKCUAke0RPX05BREF9CgouaWYgZGVmaW5lZChUUllCUk9LRU4pICYmIGRlZmluZWQoQlJPS0VO KQpidWlsZGFueXdheS1tZXNzYWdlOgoJQCR7RUNIT19NU0d9ICJUcnlpbmcgYnVpbGQgb2YgJHtQ S0dOQU1FfSBldmVuIHRob3VnaCBpdCBpcyBtYXJrZWQgQlJPS0VOLiIKLmVuZGlmCgpvcHRpb25z LW1lc3NhZ2U6Ci5pZiBkZWZpbmVkKEdOT01FX09QVElPTl9NU0cpICYmICghZGVmaW5lZChQQUNL QUdFX0JVSUxESU5HKSB8fCAhZGVmaW5lZChCQVRDSCkpCglAZm9yIG0gaW4gJHtHTk9NRV9PUFRJ T05fTVNHfTsgZG8gXAoJCSR7RUNIT19NU0d9ICQkbTsgXAoJZG9uZQouZWxzZQoJQCR7RE9fTkFE QX0KLmVuZGlmCi5pZiBkZWZpbmVkKF9PUFRJT05TX1JFQUQpCglAJHtFQ0hPX01TR30gIj09PT4g IEZvdW5kIHNhdmVkIGNvbmZpZ3VyYXRpb24gZm9yICR7X09QVElPTlNfUkVBRH0iCi5lbmRpZgoK JHtQS0dfREJESVJ9ICR7UFJFRklYfSAke1dSS0RJUn0gJHtXUktTUkN9OgoJQCR7TUtESVJ9ICR7 LlRBUkdFVH0KCiMgV2FybiB1c2VyIGFib3V0IGRlcHJlY2F0ZWQgcGFja2FnZXMuICBBZHZpc29y eSBvbmx5LgoKLmlmICF0YXJnZXQoY2hlY2stZGVwcmVjYXRlZCkKY2hlY2stZGVwcmVjYXRlZDoK LmlmIGRlZmluZWQoREVQUkVDQVRFRCkKCUAke0VDSE9fTVNHfSAiPT09PiAgIE5PVElDRToiCglA JHtFQ0hPX01TR30KCUAke0VDSE9fTVNHfSAiVGhpcyBwb3J0IGlzIGRlcHJlY2F0ZWQ7IHlvdSBt YXkgd2lzaCB0byByZWNvbnNpZGVyIGluc3RhbGxpbmcgaXQ6IgoJQCR7RUNIT19NU0d9CglAJHtF Q0hPX01TR30gJHtERVBSRUNBVEVEOlF9LgoJQCR7RUNIT19NU0d9Ci5pZiBkZWZpbmVkKEVYUElS QVRJT05fREFURSkKCUAke0VDSE9fTVNHfSAiSXQgaXMgc2NoZWR1bGVkIHRvIGJlIHJlbW92ZWQg b24gb3IgYWZ0ZXIgJHtFWFBJUkFUSU9OX0RBVEV9LiIKCUAke0VDSE9fTVNHfQouZW5kaWYKLmVu ZGlmCi5lbmRpZgoKIyBDaGVjayBpZiB0aGUgcG9ydCBpcyBsaXN0ZWQgaW4gdGhlIHZ1bG5lcmFi aWxpdHkgZGF0YWJhc2UKCkFVRElURklMRT89CQkke1BLR19EQkRJUn0vdnVsbi54bWwKX0VYVFJB Q1RfQVVESVRGSUxFPQkke0NBVH0gIiR7QVVESVRGSUxFfSIKCmNoZWNrLXZ1bG5lcmFibGU6Ci5p ZiAhZGVmaW5lZChESVNBQkxFX1ZVTE5FUkFCSUxJVElFUykgJiYgIWRlZmluZWQoUEFDS0FHRV9C VUlMRElORykKCUBpZiBbIC1mICIke0FVRElURklMRX0iIF07IHRoZW4gXAoJCWlmIFsgLXggIiR7 UEtHX0JJTn0iIF07IHRoZW4gXAoJCQl2bGlzdD1gJHtQS0dfQklOfSBhdWRpdCAiJHtQS0dOQU1F fSIgfHwgOmA7IFwKCQkJaWYgWyAiJCR7dmxpc3R9IiA9ICIwIHByb2JsZW0ocykgaW4gdGhlIGlu c3RhbGxlZCBwYWNrYWdlcyBmb3VuZC4iIF07IHRoZW4gXAoJCQkJdmxpc3Q9IiI7IFwKCQkJZmk7 IFwKCQllbGlmIFsgIiR7UE9SVE5BTUV9IiA9ICJwa2ciIF07IHRoZW4gXAoJCQl2bGlzdD0iIjsg XAoJCWZpOyBcCgkJaWYgWyAtbiAiJCR2bGlzdCIgXTsgdGhlbiBcCgkJCSR7RUNIT19NU0d9ICI9 PT0+ICAke1BLR05BTUV9IGhhcyBrbm93biB2dWxuZXJhYmlsaXRpZXM6IjsgXAoJCQkke0VDSE9f TVNHfSAiJCR2bGlzdCI7IFwKCQkJJHtFQ0hPX01TR30gIj0+IFBsZWFzZSB1cGRhdGUgeW91ciBw b3J0cyB0cmVlIGFuZCB0cnkgYWdhaW4uIjsgXAoJCQkke0VDSE9fTVNHfSAiPT4gTm90ZTogVnVs bmVyYWJsZSBwb3J0cyBhcmUgbWFya2VkIGFzIHN1Y2ggZXZlbiBpZiB0aGVyZSBpcyBubyB1cGRh dGUgYXZhaWxhYmxlLiI7IFwKCQkJJHtFQ0hPX01TR30gIj0+IElmIHlvdSB3aXNoIHRvIGlnbm9y ZSB0aGlzIHZ1bG5lcmFiaWxpdHkgcmVidWlsZCB3aXRoICdtYWtlIERJU0FCTEVfVlVMTkVSQUJJ TElUSUVTPXllcyciOyBcCgkJCWV4aXQgMTsgXAoJCWZpOyBcCglmaQouZW5kaWYKCiMgc2V0IGFs ZyB0byBhbnkgb2YgU0laRSwgU0hBMjU2IChvciBhbnkgb3RoZXIgY2hlY2tzdW0gYWxnb3JpdGht KToKRElTVElORk9fREFUQT89CWlmIFsgXCggLW4gIiR7RElTQUJMRV9TSVpFfSIgLWEgLW4gIiR7 Tk9fQ0hFQ0tTVU19IiBcKSAtbyAhIC1mICIke0RJU1RJTkZPX0ZJTEV9IiBdOyB0aGVuIGV4aXQ7 IGZpOyBcCglESVI9JHtESVNUX1NVQkRJUn07ICR7QVdLfSAtdiBhbGc9JCRhbGcgLXYgZmlsZT0k JHtESVI6KyQkRElSL30kJHtmaWxlfQlcCgkJJyQkMSA9PSBhbGcgJiYgJCQyID09ICIoIiBmaWxl ICIpIiB7cHJpbnQgJCQ0fScgJHtESVNUSU5GT19GSUxFfQoKIyBGZXRjaAoKLmlmICF0YXJnZXQo ZG8tZmV0Y2gpCmRvLWZldGNoOgoJQCR7TUtESVJ9ICR7X0RJU1RESVJ9CglAY2QgJHtfRElTVERJ Un07XAoJJHtfTUFTVEVSX1NJVEVTX0VOVn0gOyBcCglmb3IgX2ZpbGUgaW4gJHtESVNURklMRVN9 OyBkbyBcCgkJZmlsZT0kJHtfZmlsZSUlOip9OyBcCgkJaWYgWyAkJF9maWxlID0gJCRmaWxlIF07 IHRoZW4JXAoJCQlzZWxlY3Q9Jyc7CVwKCQllbHNlCVwKCQkJc2VsZWN0PWAke0VDSE9fQ01EfSAk JHtfZmlsZSMjKjp9IHwgJHtTRUR9IC1lICdzLywvIC9nJ2AgOwlcCgkJZmk7CVwKCQlmb3JjZV9m ZXRjaD1mYWxzZTsgXAoJCWZpbGViYXNlbmFtZT0kJHtmaWxlIyMqL307IFwKCQlmb3IgYWZpbGUg aW4gJHtGT1JDRV9GRVRDSH07IGRvIFwKCQkJYWZpbGU9JCR7YWZpbGUjIyovfTsgXAoJCQlpZiBb ICJ4JCRhZmlsZSIgPSAieCQkZmlsZWJhc2VuYW1lIiBdOyB0aGVuIFwKCQkJCWZvcmNlX2ZldGNo PXRydWU7IFwKCQkJZmk7IFwKCQlkb25lOyBcCgkJaWYgWyAhIC1mICQkZmlsZSAtYSAhIC1mICQk ZmlsZWJhc2VuYW1lIC1vICIkJGZvcmNlX2ZldGNoIiA9ICJ0cnVlIiBdOyB0aGVuIFwKCQkJaWYg WyAtTCAkJGZpbGUgLW8gLUwgJCRmaWxlYmFzZW5hbWUgXTsgdGhlbiBcCgkJCQkke0VDSE9fTVNH fSAiPT4gJHtfRElTVERJUn0vJCRmaWxlIGlzIGEgYnJva2VuIHN5bWxpbmsuIjsgXAoJCQkJJHtF Q0hPX01TR30gIj0+IFBlcmhhcHMgYSBmaWxlc3lzdGVtIChtb3N0IGxpa2VseSBhIENEKSBpc24n dCBtb3VudGVkPyI7IFwKCQkJCSR7RUNIT19NU0d9ICI9PiBQbGVhc2UgY29ycmVjdCB0aGlzIHBy b2JsZW0gYW5kIHRyeSBhZ2Fpbi4iOyBcCgkJCQlleGl0IDE7IFwKCQkJZmk7IFwKCQkJaWYgWyAt ZiAke0RJU1RJTkZPX0ZJTEV9IC1hICJ4JHtOT19DSEVDS1NVTX0iID0gIngiIF07IHRoZW4gXAoJ CQkJX3NoYTI1NnN1bT1gYWxnPVNIQTI1NjsgJHtESVNUSU5GT19EQVRBfWA7IFwKCQkJCWlmIFsg LXogIiQkX3NoYTI1NnN1bSIgXTsgdGhlbiBcCgkJCQkJJHtFQ0hPX01TR30gIj0+ICQke0RJUjor JCRESVIvfSQkZmlsZSBpcyBub3QgaW4gJHtESVNUSU5GT19GSUxFfS4iOyBcCgkJCQkJJHtFQ0hP X01TR30gIj0+IEVpdGhlciAke0RJU1RJTkZPX0ZJTEV9IGlzIG91dCBvZiBkYXRlLCBvciI7IFwK CQkJCQkke0VDSE9fTVNHfSAiPT4gJCR7RElSOiskJERJUi99JCRmaWxlIGlzIHNwZWxsZWQgaW5j b3JyZWN0bHkuIjsgXAoJCQkJCWV4aXQgMTsgXAoJCQkJZmk7IFwKCQkJZmk7IFwKCQkJJHtFQ0hP X01TR30gIj0+ICQkZmlsZSBkb2Vzbid0IHNlZW0gdG8gZXhpc3QgaW4gJHtfRElTVERJUn0uIjsg XAoJCQlpZiBbICEgLXcgJHtfRElTVERJUn0gXTsgdGhlbiBcCgkJCSAgICR7RUNIT19NU0d9ICI9 PiAke19ESVNURElSfSBpcyBub3Qgd3JpdGFibGUgYnkgeW91OyBjYW5ub3QgZmV0Y2guIjsgXAoJ CQkgICBleGl0IDE7IFwKCQkJZmk7IFwKCQkJaWYgWyAhIC16ICIkJHNlbGVjdCIgXSA7IHRoZW4g XAoJCQkJX19NQVNURVJfU0lURVNfVE1QPSA7IFwKCQkJCWZvciBncm91cCBpbiAkJHNlbGVjdDsg ZG8gXAoJCQkJCWlmIFsgISAteiBcJCR7X01BU1RFUl9TSVRFU18kJHtncm91cH19IF0gOyB0aGVu IFwKCQkJCQkJZXZhbCBfX19NQVNURVJfU0lURVNfVE1QPSJcJCR7X01BU1RFUl9TSVRFU18kJHtn cm91cH19IiA7IFwKCQkJCQkJX19NQVNURVJfU0lURVNfVE1QPSIkJHtfX01BU1RFUl9TSVRFU19U TVB9ICQke19fX01BU1RFUl9TSVRFU19UTVB9IiA7IFwKCQkJCQlmaTsgXAoJCQkJZG9uZTsgXAoJ CQkJX19fTUFTVEVSX1NJVEVTX1RNUD0gOyBcCgkJCQlTT1JURURfTUFTVEVSX1NJVEVTX0NNRF9U TVA9IiR7RUNIT19DTUR9ICR7X01BU1RFUl9TSVRFX09WRVJSSURFfSBgJHtFQ0hPX0NNRH0gJCR7 X19NQVNURVJfU0lURVNfVE1QfSB8ICR7QVdLfSAnJHtNQVNURVJfU09SVF9BV0s6U3xcXHxcXFxc fGd9J2AgJHtfTUFTVEVSX1NJVEVfQkFDS1VQfSIgOyBcCgkJCWVsc2UgXAoJCQkJU09SVEVEX01B U1RFUl9TSVRFU19DTURfVE1QPSIke1NPUlRFRF9NQVNURVJfU0lURVNfREVGQVVMVF9DTUR9IiA7 IFwKCQkJZmk7IFwKCQkJc2l0ZXNfcmVtYWluaW5nPTA7IFwKCQkJc2l0ZXM9ImBldmFsICQkU09S VEVEX01BU1RFUl9TSVRFU19DTURfVE1QICR7X1JBTkRPTUlaRV9TSVRFU31gIjsgXAoJCQlmb3Ig c2l0ZSBpbiAkJHtzaXRlc307IGRvIFwKCQkJCXNpdGVzX3JlbWFpbmluZz0kJCgoJCR7c2l0ZXNf cmVtYWluaW5nfSArIDEpKTsgXAoJCQlkb25lOyBcCgkJCWZvciBzaXRlIGluICQke3NpdGVzfTsg ZG8gXAoJCQkJc2l0ZXNfcmVtYWluaW5nPSQkKCgkJHtzaXRlc19yZW1haW5pbmd9IC0gMSkpOyBc CgkJCSAgICAke0VDSE9fTVNHfSAiPT4gQXR0ZW1wdGluZyB0byBmZXRjaCAkJHtzaXRlfSQke2Zp bGV9IjsgXAoJCQkJQ0tTSVpFPWBhbGc9U0laRTsgJHtESVNUSU5GT19EQVRBfWA7IFwKCQkJCWNh c2UgJCR7ZmlsZX0gaW4gXAoJCQkJKi8qKQkke01LRElSfSAkJHtmaWxlJS8qfTsgXAoJCQkJCQlh cmdzPSItbyAkJHtmaWxlfSAkJHtzaXRlfSQke2ZpbGV9Ijs7IFwKCQkJCSopCQlhcmdzPSQke3Np dGV9JCR7ZmlsZX07OyBcCgkJCQllc2FjOyBcCgkJCQlpZiAke1NFVEVOVn0gJHtGRVRDSF9FTlZ9 ICR7RkVUQ0hfQ01EfSAke0ZFVENIX0JFRk9SRV9BUkdTfSAkJHthcmdzfSAke0ZFVENIX0FGVEVS X0FSR1N9OyB0aGVuIFwKCQkJCQlhY3R1YWxfc2l6ZT1gc3RhdCAtZiAleiAiJCR7ZmlsZX0iYDsg XAoJCQkJCWlmIFsgLW4gIiR7RElTQUJMRV9TSVpFfSIgXSB8fCBbIC16ICIkJHtDS1NJWkV9IiBd IHx8IFsgJCR7YWN0dWFsX3NpemV9IC1lcSAkJHtDS1NJWkV9IF07IHRoZW4gXAoJCQkJCQljb250 aW51ZSAyOyBcCgkJCQkJZWxzZSBcCgkJCQkJCSR7RUNIT19NU0d9ICI9PiBGZXRjaGVkIGZpbGUg c2l6ZSBtaXNtYXRjaCAoZXhwZWN0ZWQgJCR7Q0tTSVpFfSwgYWN0dWFsICQke2FjdHVhbF9zaXpl fSkiOyBcCgkJCQkJCWlmIFsgJCR7c2l0ZXNfcmVtYWluaW5nfSAtZ3QgMCBdOyB0aGVuIFwKCQkJ CQkJCSR7RUNIT19NU0d9ICI9PiBUcnlpbmcgbmV4dCBzaXRlIjsgXAoJCQkJCQkJJHtSTX0gLWYg JCR7ZmlsZX07IFwKCQkJCQkJZmk7IFwKCQkJCQlmaTsgXAoJCQkJZmk7IFwKCQkJZG9uZTsgXAoJ CQkke0VDSE9fTVNHfSAiPT4gQ291bGRuJ3QgZmV0Y2ggaXQgLSBwbGVhc2UgdHJ5IHRvIHJldHJp ZXZlIHRoaXMiO1wKCQkJJHtFQ0hPX01TR30gIj0+IHBvcnQgbWFudWFsbHkgaW50byAke19ESVNU RElSfSBhbmQgdHJ5IGFnYWluLiI7IFwKCQkJZXhpdCAxOyBcCgkgICAgZmk7IFwKCSBkb25lCi5p ZiBkZWZpbmVkKFBBVENIRklMRVMpCglAY2QgJHtfRElTVERJUn07XAoJJHtfUEFUQ0hfU0lURVNf RU5WfSA7IFwKCWZvciBfZmlsZSBpbiAke1BBVENIRklMRVN9OyBkbyBcCgkJZmlsZT1gJHtFQ0hP X0NNRH0gJCRfZmlsZSB8ICR7U0VEfSAtRSAtZSAncy86W14tOl1bXjpdKiQkLy8nYCA7IFwKCQlp ZiBbICQkX2ZpbGUgPSAkJGZpbGUgXTsgdGhlbglcCgkJCXNlbGVjdD0nJzsJXAoJCWVsc2UJXAoJ CQlzZWxlY3Q9YCR7RUNIT19DTUR9ICQke19maWxlIyMqOn0gfCAke1NFRH0gLWUgJ3MvLC8gL2cn YCA7CVwKCQlmaTsJXAoJCWZpbGU9YCR7RUNIT19DTUR9ICQkZmlsZSB8ICR7U0VEfSAtRSAtZSAn cy86LVteOl0rJCQvLydgIDsgXAoJCWZvcmNlX2ZldGNoPWZhbHNlOyBcCgkJZmlsZWJhc2VuYW1l PSQke2ZpbGUjIyovfTsgXAoJCWZvciBhZmlsZSBpbiAke0ZPUkNFX0ZFVENIfTsgZG8gXAoJCQlh ZmlsZT0kJHthZmlsZSMjKi99OyBcCgkJCWlmIFsgIngkJGFmaWxlIiA9ICJ4JCRmaWxlYmFzZW5h bWUiIF07IHRoZW4gXAoJCQkJZm9yY2VfZmV0Y2g9dHJ1ZTsgXAoJCQlmaTsgXAoJCWRvbmU7IFwK CQlpZiBbICEgLWYgJCRmaWxlIC1hICEgLWYgJCRmaWxlYmFzZW5hbWUgLW8gIiQkZm9yY2VfZmV0 Y2giID0gInRydWUiIF07IHRoZW4gXAoJCQlpZiBbIC1MICQkZmlsZSAtbyAtTCAkJHtmaWxlIyMq L30gXTsgdGhlbiBcCgkJCQkke0VDSE9fTVNHfSAiPT4gJHtfRElTVERJUn0vJCRmaWxlIGlzIGEg YnJva2VuIHN5bWxpbmsuIjsgXAoJCQkJJHtFQ0hPX01TR30gIj0+IFBlcmhhcHMgYSBmaWxlc3lz dGVtIChtb3N0IGxpa2VseSBhIENEKSBpc24ndCBtb3VudGVkPyI7IFwKCQkJCSR7RUNIT19NU0d9 ICI9PiBQbGVhc2UgY29ycmVjdCB0aGlzIHByb2JsZW0gYW5kIHRyeSBhZ2Fpbi4iOyBcCgkJCQll eGl0IDE7IFwKCQkJZmk7IFwKCQkJJHtFQ0hPX01TR30gIj0+ICQkZmlsZSBkb2Vzbid0IHNlZW0g dG8gZXhpc3QgaW4gJHtfRElTVERJUn0uIjsgXAoJCQlpZiBbICEgLXogIiQkc2VsZWN0IiBdIDsg dGhlbiBcCgkJCQlfX1BBVENIX1NJVEVTX1RNUD0gOyBcCgkJCQlmb3IgZ3JvdXAgaW4gJCRzZWxl Y3Q7IGRvIFwKCQkJCQlpZiBbICEgLXogXCQke19QQVRDSF9TSVRFU18kJHtncm91cH19IF0gOyB0 aGVuIFwKCQkJCQkJZXZhbCBfX19QQVRDSF9TSVRFU19UTVA9IlwkJHtfUEFUQ0hfU0lURVNfJCR7 Z3JvdXB9fSIgOyBcCgkJCQkJCV9fUEFUQ0hfU0lURVNfVE1QPSIkJHtfX1BBVENIX1NJVEVTX1RN UH0gJCR7X19fUEFUQ0hfU0lURVNfVE1QfSIgOyBcCgkJCQkJZmk7IFwKCQkJCWRvbmU7IFwKCQkJ CV9fX1BBVENIX1NJVEVTX1RNUD0gOyBcCgkJCQlTT1JURURfUEFUQ0hfU0lURVNfQ01EX1RNUD0i JHtFQ0hPX0NNRH0gJHtfTUFTVEVSX1NJVEVfT1ZFUlJJREV9IGAke0VDSE9fQ01EfSAkJHtfX1BB VENIX1NJVEVTX1RNUH0gfCAke0FXS30gJyR7TUFTVEVSX1NPUlRfQVdLOlN8XFx8XFxcXHxnfSdg ICR7X01BU1RFUl9TSVRFX0JBQ0tVUH0iIDsgXAoJCQllbHNlIFwKCQkJCVNPUlRFRF9QQVRDSF9T SVRFU19DTURfVE1QPSIke1NPUlRFRF9QQVRDSF9TSVRFU19ERUZBVUxUX0NNRH0iIDsgXAoJCQlm aTsgXAoJCQlzaXRlc19yZW1haW5pbmc9MDsgXAoJCQlzaXRlcz0iYGV2YWwgJCRTT1JURURfUEFU Q0hfU0lURVNfQ01EX1RNUGAiOyBcCgkJCWZvciBzaXRlIGluICQke3NpdGVzfTsgZG8gXAoJCQkJ c2l0ZXNfcmVtYWluaW5nPSQkKCgkJHtzaXRlc19yZW1haW5pbmd9ICsgMSkpOyBcCgkJCWRvbmU7 IFwKCQkJZm9yIHNpdGUgaW4gJCR7c2l0ZXN9OyBkbyBcCgkJCQlzaXRlc19yZW1haW5pbmc9JCQo KCQke3NpdGVzX3JlbWFpbmluZ30gLSAxKSk7IFwKCQkJICAgICR7RUNIT19NU0d9ICI9PiBBdHRl bXB0aW5nIHRvIGZldGNoICQke3NpdGV9JCR7ZmlsZX0iOyBcCgkJCQlDS1NJWkU9YGFsZz1TSVpF OyAke0RJU1RJTkZPX0RBVEF9YDsgXAoJCQkJY2FzZSAkJHtmaWxlfSBpbiBcCgkJCQkqLyopCSR7 TUtESVJ9ICQke2ZpbGUlLyp9OyBcCgkJCQkJCWFyZ3M9Ii1vICQke2ZpbGV9ICQke3NpdGV9JCR7 ZmlsZX0iOzsgXAoJCQkJKikJCWFyZ3M9JCR7c2l0ZX0kJHtmaWxlfTs7IFwKCQkJCWVzYWM7IFwK CQkJCWlmICR7U0VURU5WfSAke0ZFVENIX0VOVn0gJHtGRVRDSF9DTUR9ICR7RkVUQ0hfQkVGT1JF X0FSR1N9ICQke2FyZ3N9ICR7RkVUQ0hfQUZURVJfQVJHU307IHRoZW4gXAoJCQkJCWFjdHVhbF9z aXplPWBzdGF0IC1mICV6ICIkJHtmaWxlfSJgOyBcCgkJCQkJaWYgWyAtbiAiJHtESVNBQkxFX1NJ WkV9IiBdIHx8IFsgLXogIiQke0NLU0laRX0iIF0gfHwgWyAkJHthY3R1YWxfc2l6ZX0gLWVxICQk e0NLU0laRX0gXTsgdGhlbiBcCgkJCQkJCWNvbnRpbnVlIDI7IFwKCQkJCQllbHNlIFwKCQkJCQkJ JHtFQ0hPX01TR30gIj0+IEZldGNoZWQgZmlsZSBzaXplIG1pc21hdGNoIChleHBlY3RlZCAkJHtD S1NJWkV9LCBhY3R1YWwgJCR7YWN0dWFsX3NpemV9KSI7IFwKCQkJCQkJaWYgWyAkJHtzaXRlc19y ZW1haW5pbmd9IC1ndCAxIF07IHRoZW4gXAoJCQkJCQkJJHtFQ0hPX01TR30gIj0+IFRyeWluZyBu ZXh0IHNpdGUiOyBcCgkJCQkJCQkke1JNfSAtZiAkJHtmaWxlfTsgXAoJCQkJCQlmaTsgXAoJCQkJ CWZpOyBcCgkJCQlmaTsgXAoJCQlkb25lOyBcCgkJCSR7RUNIT19NU0d9ICI9PiBDb3VsZG4ndCBm ZXRjaCBpdCAtIHBsZWFzZSB0cnkgdG8gcmV0cmlldmUgdGhpcyI7XAoJCQkke0VDSE9fTVNHfSAi PT4gcG9ydCBtYW51YWxseSBpbnRvICR7X0RJU1RESVJ9IGFuZCB0cnkgYWdhaW4uIjsgXAoJCQll eGl0IDE7IFwKCQlmaTsgXAoJIGRvbmUKLmVuZGlmCi5lbmRpZgoKIyBFeHRyYWN0CgpjbGVhbi13 cmtkaXI6CglAJHtSTX0gLXJmICR7V1JLRElSfQoKLmlmICF0YXJnZXQoZG8tZXh0cmFjdCkKZG8t ZXh0cmFjdDoKCUBmb3IgZmlsZSBpbiAke0VYVFJBQ1RfT05MWX07IGRvIFwKCQlpZiAhIChjZCAk e1dSS0RJUn0gJiYgJHtFWFRSQUNUX0NNRH0gJHtFWFRSQUNUX0JFRk9SRV9BUkdTfSAke19ESVNU RElSfS8kJGZpbGUgJHtFWFRSQUNUX0FGVEVSX0FSR1N9KTtcCgkJdGhlbiBcCgkJCWV4aXQgMTsg XAoJCWZpOyBcCglkb25lCglAaWYgWyAke1VJRH0gPSAwIF07IHRoZW4gXAoJCSR7Q0hNT0R9IC1S IHVnLXMgJHtXUktESVJ9OyBcCgkJJHtDSE9XTn0gLVIgMDowICR7V1JLRElSfTsgXAoJZmkKLmVu ZGlmCgojIFBhdGNoCgouaWYgIXRhcmdldChkby1wYXRjaCkKZG8tcGF0Y2g6Ci5pZiBkZWZpbmVk KFBBVENIRklMRVMpCglAJHtFQ0hPX01TR30gIj09PT4gIEFwcGx5aW5nIGRpc3RyaWJ1dGlvbiBw YXRjaGVzIGZvciAke1BLR05BTUV9IgoJQChzZXQgLWU7IFwKCWNkICR7X0RJU1RESVJ9OyBcCglw YXRjaF9kaXN0X3N0cmlwICgpIHsgXAoJCWNhc2UgIiQkMSIgaW4gXAoJCSR7X1BBVENIX0RJU1Rf U1RSSVBfQ0FTRVN9IFwKCQllc2FjOyBcCgl9OyBcCglmb3IgaSBpbiAke19QQVRDSEZJTEVTfTsg ZG8gXAoJCWlmIFsgJHtQQVRDSF9ERUJVR19UTVB9ID0geWVzIF07IHRoZW4gXAoJCQkke0VDSE9f TVNHfSAiPT09PiAgIEFwcGx5aW5nIGRpc3RyaWJ1dGlvbiBwYXRjaCAkJGkiIDsgXAoJCWZpIDsg XAoJCWNhc2UgJCRpIGluIFwKCQkqLlp8Ki5neikgJHtHWkNBVH0gJCRpIDs7IFwKCQkqLmJ6Mikg JHtCWkNBVH0gJCRpIDs7IFwKCQkqLnh6KSAke1haQ0FUfSAkJGkgOzsgXAoJCSouemlwKSAke1VO WklQX05BVElWRV9DTUR9IC1wICQkaSA7OyBcCgkJKikgJHtDQVR9ICQkaSA7OyBcCgkJZXNhYyB8 ICR7UEFUQ0h9ICR7UEFUQ0hfRElTVF9BUkdTfSBgcGF0Y2hfZGlzdF9zdHJpcCAkJGlgIDsgXAoJ ZG9uZSApCi5lbmRpZgouaWYgZGVmaW5lZChFWFRSQV9QQVRDSEVTKQoJQHNldCAtZSA7IFwKCWZv ciBpIGluICR7RVhUUkFfUEFUQ0hFU307IGRvIFwKCQljYXNlICQkaSBpbiBcCgkJKjotcFswLTld KSBwYXRjaF9maWxlPSQke2klOip9IDsgcGF0Y2hfc3RyaXA9JCR7aSMjKjp9IDs7IFwKCQkqKSBw YXRjaF9maWxlPSQkaSA7OyBcCgkJZXNhYyA7IFwKCQkke0VDSE9fTVNHfSAiPT09PiAgQXBwbHlp bmcgZXh0cmEgcGF0Y2ggJCRwYXRjaF9maWxlIiA7IFwKCQljYXNlICQkcGF0Y2hfZmlsZSBpbiBc CgkJKi5afCouZ3opICR7R1pDQVR9ICQkcGF0Y2hfZmlsZSA7OyBcCgkJKi5iejIpICR7QlpDQVR9 ICQkcGF0Y2hfZmlsZSA7OyBcCgkJKi54eikgJHtYWkNBVH0gJCRwYXRjaF9maWxlIDs7IFwKCQkq LnppcCkgJHtVTlpJUF9OQVRJVkVfQ01EfSAtcCAkJHBhdGNoX2ZpbGUgOzsgXAoJCSopICR7Q0FU fSAkJHBhdGNoX2ZpbGUgOzsgXAoJCWVzYWMgfCAke1BBVENIfSAke1BBVENIX0FSR1N9ICQkcGF0 Y2hfc3RyaXAgOyBcCglkb25lCi5lbmRpZgoJQHNldCAtZSA7XAoJaWYgWyAtZCAke1BBVENIRElS fSBdOyB0aGVuIFwKCQlpZiBbICJgJHtFQ0hPX0NNRH0gJHtQQVRDSERJUn0vcGF0Y2gtKmAiICE9 ICIke1BBVENIRElSfS9wYXRjaC0qIiBdOyB0aGVuIFwKCQkJJHtFQ0hPX01TR30gIj09PT4gIEFw cGx5aW5nICR7T1BTWVN9IHBhdGNoZXMgZm9yICR7UEtHTkFNRX0iIDsgXAoJCQlQQVRDSEVTX0FQ UExJRUQ9IiIgOyBcCgkJCWZvciBpIGluICR7UEFUQ0hESVJ9L3BhdGNoLSo7IGRvIFwKCQkJCWNh c2UgJCRpIGluIFwKCQkJCQkqLm9yaWd8Ki5yZWp8Kn58Kix2KSBcCgkJCQkJCSR7RUNIT19NU0d9 ICI9PT0+ICAgSWdub3JpbmcgcGF0Y2hmaWxlICQkaSIgOyBcCgkJCQkJCTs7IFwKCQkJCQkqKSBc CgkJCQkJCWlmIFsgJHtQQVRDSF9ERUJVR19UTVB9ID0geWVzIF07IHRoZW4gXAoJCQkJCQkJJHtF Q0hPX01TR30gIj09PT4gICBBcHBseWluZyAke09QU1lTfSBwYXRjaCAkJGkiIDsgXAoJCQkJCQlm aTsgXAoJCQkJCQlpZiAke1BBVENIfSAke1BBVENIX0FSR1N9IDwgJCRpIDsgdGhlbiBcCgkJCQkJ CQlQQVRDSEVTX0FQUExJRUQ9IiQkUEFUQ0hFU19BUFBMSUVEICQkaSIgOyBcCgkJCQkJCWVsc2Ug XAoJCQkJCQkJJHtFQ0hPX01TR30gYCR7RUNIT19DTUR9ICI9PiBQYXRjaCAkJGkgZmFpbGVkIHRv IGFwcGx5IGNsZWFubHkuIiB8ICR7U0VEfSAic3wke1BBVENIRElSfS98fCJgIDsgXAoJCQkJCQkJ aWYgWyB4IiQkUEFUQ0hFU19BUFBMSUVEIiAhPSB4IiIgLWEgJHtQQVRDSF9TSUxFTlR9ICE9ICJ5 ZXMiIF07IHRoZW4gXAoJCQkJCQkJCSR7RUNIT19NU0d9IGAke0VDSE9fQ01EfSAiPT4gUGF0Y2go ZXMpICQkUEFUQ0hFU19BUFBMSUVEIGFwcGxpZWQgY2xlYW5seS4iIHwgJHtTRUR9ICJzfCR7UEFU Q0hESVJ9L3x8ZyJgIDsgXAoJCQkJCQkJZmk7IFwKCQkJCQkJCSR7RkFMU0V9IDsgXAoJCQkJCQlm aTsgXAoJCQkJCQk7OyBcCgkJCQllc2FjOyBcCgkJCWRvbmU7IFwKCQlmaTsgXAoJZmkKLmVuZGlm CgouaWYgIXRhcmdldChydW4tYXV0b3Rvb2xzLWZpeHVwKQpydW4tYXV0b3Rvb2xzLWZpeHVwOgoj IFdvcmsgYXJvdW5kIGFuIGlzc3VlIHdoZXJlIEZyZWVCU0QgMTAuMCBpcyBkZXRlY3RlZCBhcyBG cmVlQlNEIDEueC4KLmlmICR7T1NWRVJTSU9OfSA+PSAxMDAwMDAwICYmICFkZWZpbmVkKFdJVEhP VVRfRkJTRDEwX0ZJWCkKCS1AZm9yIGYgaW4gYCR7RklORH0gJHtXUktESVJ9IC10eXBlIGYgXCgg LW5hbWUgY29uZmlnLmxpYnBhdGggLW8gXAoJCS1uYW1lIGNvbmZpZy5ycGF0aCAtbyAtbmFtZSBj b25maWd1cmUgLW8gLW5hbWUgbGlidG9vbC5tNCAtbyBcCgkJLW5hbWUgbHRjb25maWcgLW8gLW5h bWUgbGlidG9vbCAtbyAtbmFtZSBhY2xvY2FsLm00IC1vIFwKCQktbmFtZSBhY2luY2x1ZGUubTQg XClgIDsgZG8gXAoJCQkke1NFRH0gLWkuZmJzZDEwYmFrIFwKCQkJCS1lICdzfGZyZWVic2QxXCop fGZyZWVic2QxLlwqKXxnJyBcCgkJCQktZSAnc3xmcmVlYnNkXFsxMlxdXCopfGZyZWVic2RbMTJd LiopfGcnIFwKCQkJCS1lICdzfGZyZWVic2RcWzEyM1xdXCopfGZyZWVic2RbMTIzXS4qKXxnJyBc CgkJCQktZSAnc3xmcmVlYnNkXFtcWzEyXF1cXVwqKXxmcmVlYnNkW1sxMl1dLiopfGcnIFwKCQkJ CS1lICdzfGZyZWVic2RcW1xbMTIzXF1cXVwqKXxmcmVlYnNkW1sxMjNdXS4qKXxnJyBcCgkJCQkJ JCR7Zn0gOyBcCgkJCWNtcCAtcyAkJHtmfS5mYnNkMTBiYWsgJCR7Zn0gfHwgXAoJCQkke0VDSE9f TVNHfSAiPT09PiAgIEZyZWVCU0QgMTAgYXV0b3Rvb2xzIGZpeCBhcHBsaWVkIHRvICQke2Z9Ijsg XAoJCQkke1RPVUNIfSAke1RPVUNIX0ZMQUdTfSAtbXIgJCR7Zn0uZmJzZDEwYmFrICQke2Z9IDsg XAoJCQkke1JNfSAtZiAkJHtmfS5mYnNkMTBiYWsgOyBcCgkJZG9uZQouZW5kaWYKLmVuZGlmCgoj IENvbmZpZ3VyZQoKLmlmICF0YXJnZXQoZG8tY29uZmlndXJlKQpkby1jb25maWd1cmU6CglAaWYg WyAtZiAke1NDUklQVERJUn0vY29uZmlndXJlIF07IHRoZW4gXAoJCWNkICR7LkNVUkRJUn0gJiYg JHtTRVRFTlZ9ICR7U0NSSVBUU19FTlZ9ICR7U0h9IFwKCQkgICR7U0NSSVBURElSfS9jb25maWd1 cmU7IFwKCWZpCi5pZiBkZWZpbmVkKEdOVV9DT05GSUdVUkUpCglAQ09ORklHX0dVRVNTX0RJUlM9 JCQoJHtGSU5EfSAke1dSS0RJUn0gLW5hbWUgY29uZmlnLmd1ZXNzIC1vIC1uYW1lIGNvbmZpZy5z dWIgXAoJCXwgJHtYQVJHU30gLW4gMSAke0RJUk5BTUV9KTsgXAoJZm9yIF9EIGluICQke0NPTkZJ R19HVUVTU19ESVJTfTsgZG8gXAoJCSR7Uk19ICQke19EfS9jb25maWcuZ3Vlc3M7IFwKCQkke0NQ fSAke1RFTVBMQVRFU30vY29uZmlnLmd1ZXNzICQke19EfS9jb25maWcuZ3Vlc3M7IFwKCQkke0NI TU9EfSBhK3J4ICQke19EfS9jb25maWcuZ3Vlc3M7IFwKCQkke1JNfSAkJHtfRH0vY29uZmlnLnN1 YjsgXAoJCSR7Q1B9ICR7VEVNUExBVEVTfS9jb25maWcuc3ViICQke19EfS9jb25maWcuc3ViOyBc CgkJJHtDSE1PRH0gYStyeCAkJHtfRH0vY29uZmlnLnN1YjsgXAoJZG9uZQouZW5kaWYKLmlmIGRl ZmluZWQoSEFTX0NPTkZJR1VSRSkKCUAoY2QgJHtDT05GSUdVUkVfV1JLU1JDfSAmJiBcCgkgICAg JHtTRVRfTEFURV9DT05GSUdVUkVfQVJHU30gXAoJCWlmICEgJHtTRVRFTlZ9IENDPSIke0NDfSIg Q1BQPSIke0NQUH0iIENYWD0iJHtDWFh9IiBcCgkgICAgQ0ZMQUdTPSIke0NGTEFHU30iIENQUEZM QUdTPSIke0NQUEZMQUdTfSIgQ1hYRkxBR1M9IiR7Q1hYRkxBR1N9IiBcCgkgICAgTERGTEFHUz0i JHtMREZMQUdTfSIgTElCUz0iJHtMSUJTfSIgXAoJICAgIElOU1RBTEw9Ii91c3IvYmluL2luc3Rh bGwgLWMiIFwKCSAgICBJTlNUQUxMX0RBVEE9IiR7SU5TVEFMTF9EQVRBfSIgXAoJICAgIElOU1RB TExfTElCPSIke0lOU1RBTExfTElCfSIgXAoJICAgIElOU1RBTExfUFJPR1JBTT0iJHtJTlNUQUxM X1BST0dSQU19IiBcCgkgICAgSU5TVEFMTF9TQ1JJUFQ9IiR7SU5TVEFMTF9TQ1JJUFR9IiBcCgkg ICAgJHtDT05GSUdVUkVfRU5WfSAke0NPTkZJR1VSRV9DTUR9ICR7Q09ORklHVVJFX0FSR1N9OyB0 aGVuIFwKCQkJICR7RUNIT19NU0d9ICI9PT0+ICBTY3JpcHQgXCIke0NPTkZJR1VSRV9TQ1JJUFR9 XCIgZmFpbGVkIHVuZXhwZWN0ZWRseS4iOyBcCgkJCSAoJHtFQ0hPX0NNRH0gJHtDT05GSUdVUkVf RkFJTF9NRVNTQUdFfSkgfCAke0ZNVH0gNzUgNzkgOyBcCgkJCSAke0ZBTFNFfTsgXAoJCWZpKQou ZW5kaWYKLmVuZGlmCgojIEJ1aWxkCiMgWFhYOiAke01BS0VfQVJHUzpOJHtERVNURElSTkFNRX09 Kn0gd291bGQgYmUgZWFzaWVyIGJ1dCBpdCBpcyBub3QgdmFsaWQgd2l0aCB0aGUgb2xkIGZtYWtl CkRPX01BS0VfQlVJTEQ/PQkke1NFVEVOVn0gJHtNQUtFX0VOVn0gJHtNQUtFX0NNRH0gJHtNQUtF X0ZMQUdTfSAke01BS0VGSUxFfSAke19NQUtFX0pPQlN9ICR7TUFLRV9BUkdTOkMsXiR7REVTVERJ Uk5BTUV9PS4qLCxnfQouaWYgIXRhcmdldChkby1idWlsZCkKZG8tYnVpbGQ6CglAKGNkICR7QlVJ TERfV1JLU1JDfTsgaWYgISAke0RPX01BS0VfQlVJTER9ICR7QUxMX1RBUkdFVH07IHRoZW4gXAoJ CWlmIFsgLW4gIiR7QlVJTERfRkFJTF9NRVNTQUdFfSIgXSA7IHRoZW4gXAoJCQkke0VDSE9fTVNH fSAiPT09PiBDb21waWxhdGlvbiBmYWlsZWQgdW5leHBlY3RlZGx5LiI7IFwKCQkJKCR7RUNIT19D TUR9ICIke0JVSUxEX0ZBSUxfTUVTU0FHRX0iKSB8ICR7Rk1UfSA3NSA3OSA7IFwKCQkJZmk7IFwK CQkke0ZBTFNFfTsgXAoJCWZpKQouZW5kaWYKCiMgQ2hlY2sgY29uZmxpY3RzCgouaWYgIXRhcmdl dChjaGVjay1jb25mbGljdHMpCmNoZWNrLWNvbmZsaWN0czogY2hlY2stYnVpbGQtY29uZmxpY3Rz IGNoZWNrLWluc3RhbGwtY29uZmxpY3RzCi5lbmRpZgoKLmlmICF0YXJnZXQoY2hlY2stYnVpbGQt Y29uZmxpY3RzKQpjaGVjay1idWlsZC1jb25mbGljdHM6Ci5pZiAoIGRlZmluZWQoQ09ORkxJQ1RT KSB8fCBkZWZpbmVkKENPTkZMSUNUU19CVUlMRCkgKSAmJiAhZGVmaW5lZChESVNBQkxFX0NPTkZM SUNUUykgJiYgIWRlZmluZWQoREVGRVJfQ09ORkxJQ1RTX0NIRUNLKQoJQGNvbmZsaWN0c193aXRo PSQkKCBcCgl7ICR7UEtHX1FVRVJZfSAtZyAiJW4tJXYgJXAgJW8iICR7Q09ORkxJQ1RTOkMvLisv JyYnL30gJHtDT05GTElDVFNfQlVJTEQ6Qy8uKy8nJicvfSAyPi9kZXYvbnVsbCB8fCA6IDsgfSBc CgkJfCB3aGlsZSByZWFkIHBrZ25hbWUgcHJmeCBvcmduOyBkbyBcCgkJaWYgWyAiLyR7UFJFRklY fSIgPSAiLyQke3ByZnh9IiAtYSAiLyR7UEtHT1JJR0lOfSIgIT0gIi8kJHtvcmdufSIgXTsgdGhl biBcCgkJCSR7RUNIT19DTUR9IC1uICIgJCR7cGtnbmFtZX0iOyBcCgkJZmk7IFwKCWRvbmUpOyBc CglpZiBbIC1uICIkJHtjb25mbGljdHNfd2l0aH0iIF07IHRoZW4gXAoJCSR7RUNIT19NU0d9OyBc CgkJJHtFQ0hPX01TR30gIj09PT4gICR7UEtHTkFNRX0gY29uZmxpY3RzIHdpdGggaW5zdGFsbGVk IHBhY2thZ2Uocyk6ICI7IFwKCQlmb3IgZW50cnkgaW4gJCR7Y29uZmxpY3RzX3dpdGh9OyBkbyBc CgkJCSR7RUNIT19NU0d9ICIgICAgICAkJHtlbnRyeX0iOyBcCgkJZG9uZTsgXAoJCSR7RUNIT19N U0d9OyBcCgkJJHtFQ0hPX01TR30gIiAgICAgIFRoZXkgd2lsbCBub3QgYnVpbGQgdG9nZXRoZXIu IjsgXAoJCSR7RUNIT19NU0d9ICIgICAgICBQbGVhc2UgcmVtb3ZlIHRoZW0gZmlyc3Qgd2l0aCBw a2cgZGVsZXRlLiI7IFwKCQlleGl0IDE7XAoJZmkKLmVuZGlmCi5lbmRpZgoKLmlmICF0YXJnZXQo aWRlbnRpZnktaW5zdGFsbC1jb25mbGljdHMpCmlkZW50aWZ5LWluc3RhbGwtY29uZmxpY3RzOgou aWYgKCBkZWZpbmVkKENPTkZMSUNUUykgfHwgZGVmaW5lZChDT05GTElDVFNfSU5TVEFMTCkgKSAm JiAhZGVmaW5lZChESVNBQkxFX0NPTkZMSUNUUykKCUBjb25mbGljdHNfd2l0aD0kJCggXAoJeyAk e1BLR19RVUVSWX0gLWcgIiVuLSV2ICVwICVvIiAke0NPTkZMSUNUUzpDLy4rLycmJy99ICR7Q09O RkxJQ1RTX0lOU1RBTEw6Qy8uKy8nJicvfSAyPi9kZXYvbnVsbCB8fCA6IDsgfSBcCgkJfCB3aGls ZSByZWFkIHBrZ25hbWUgcHJmeCBvcmduOyBkbyBcCgkJaWYgWyAiLyR7UFJFRklYfSIgPSAiLyQk e3ByZnh9IiAtYSAiLyR7UEtHT1JJR0lOfSIgIT0gIi8kJHtvcmdufSIgXTsgdGhlbiBcCgkJCSR7 RUNIT19DTUR9IC1uICIgJCR7cGtnbmFtZX0iOyBcCgkJZmk7IFwKCWRvbmUpOyBcCglpZiBbIC1u ICIkJHtjb25mbGljdHNfd2l0aH0iIF07IHRoZW4gXAoJCSR7RUNIT19NU0d9OyBcCgkJJHtFQ0hP X01TR30gIj09PT4gICR7UEtHTkFNRX0gY29uZmxpY3RzIHdpdGggaW5zdGFsbGVkIHBhY2thZ2Uo cyk6ICI7IFwKCQlmb3IgZW50cnkgaW4gJCR7Y29uZmxpY3RzX3dpdGh9OyBkbyBcCgkJCSR7RUNI T19NU0d9ICIgICAgICAkJHtlbnRyeX0iOyBcCgkJZG9uZTsgXAoJCSR7RUNIT19NU0d9OyBcCgkJ JHtFQ0hPX01TR30gIiAgICAgIFRoZXkgaW5zdGFsbCBmaWxlcyBpbnRvIHRoZSBzYW1lIHBsYWNl LiI7IFwKCQkke0VDSE9fTVNHfSAiICAgICAgWW91IG1heSB3YW50IHRvIHN0b3AgYnVpbGQgd2l0 aCBDdHJsICsgQy4iOyBcCgkJc2xlZXAgMTA7IFwKCWZpCi5lbmRpZgouZW5kaWYKCi5pZiAhdGFy Z2V0KGNoZWNrLWluc3RhbGwtY29uZmxpY3RzKQpjaGVjay1pbnN0YWxsLWNvbmZsaWN0czoKLmlm ICggZGVmaW5lZChDT05GTElDVFMpIHx8IGRlZmluZWQoQ09ORkxJQ1RTX0lOU1RBTEwpIHx8ICgg ZGVmaW5lZChDT05GTElDVFNfQlVJTEQpICYmIGRlZmluZWQoREVGRVJfQ09ORkxJQ1RTX0NIRUNL KSApICkgJiYgIWRlZmluZWQoRElTQUJMRV9DT05GTElDVFMpIAouaWYgZGVmaW5lZChERUZFUl9D T05GTElDVFNfQ0hFQ0spCglAY29uZmxpY3RzX3dpdGg9JCQoIFwKCXsgJHtQS0dfUVVFUll9IC1n ICIlbi0ldiAlcCAlbyIgJHtDT05GTElDVFM6Qy8uKy8nJicvfSAke0NPTkZMSUNUU19CVUlMRDpD Ly4rLycmJy99ICR7Q09ORkxJQ1RTX0lOU1RBTEw6Qy8uKy8nJicvfSAyPi9kZXYvbnVsbCB8fCA6 IDsgfSBcCgkgICAgICAgCXwgd2hpbGUgcmVhZCBwa2duYW1lIHByZnggb3JnbjsgZG8gXAoJCWlm IFsgIi8ke1BSRUZJWH0iID0gIi8kJHtwcmZ4fSIgLWEgIi8ke1BLR09SSUdJTn0iICE9ICIvJCR7 b3Jnbn0iIF07IHRoZW4gXAoJCQkke0VDSE9fQ01EfSAtbiAiICQke3BrZ25hbWV9IjsgXAoJCWZp OyBcCglkb25lKTsgXAoJaWYgWyAtbiAiJCR7Y29uZmxpY3RzX3dpdGh9IiBdOyB0aGVuIFwKCQkk e0VDSE9fTVNHfTsgXAoJCSR7RUNIT19NU0d9ICI9PT0+ICAke1BLR05BTUV9IGNvbmZsaWN0cyB3 aXRoIGluc3RhbGxlZCBwYWNrYWdlKHMpOiAiOyBcCgkJZm9yIGVudHJ5IGluICQke2NvbmZsaWN0 c193aXRofTsgZG8gXAoJCQkke0VDSE9fTVNHfSAiICAgICAgJCR7ZW50cnl9IjsgXAoJCWRvbmU7 IFwKCQkke0VDSE9fTVNHfTsgXAoJCSR7RUNIT19NU0d9ICIgICAgICBQbGVhc2UgcmVtb3ZlIHRo ZW0gZmlyc3Qgd2l0aCBwa2cgZGVsZXRlLiI7IFwKCQlleGl0IDE7IFwKCWZpCi5lbHNlCglAY29u ZmxpY3RzX3dpdGg9JCQoIFwKCXsgJHtQS0dfUVVFUll9IC1nICIlbi0ldiAlcCAlbyIgJHtDT05G TElDVFM6Qy8uKy8nJicvfSAke0NPTkZMSUNUU19JTlNUQUxMOkMvLisvJyYnL30gMj4vZGV2L251 bGwgfHwgOiA7IH0gXAoJICAgICAgIAl8IHdoaWxlIHJlYWQgcGtnbmFtZSBwcmZ4IG9yZ247IGRv IFwKCQlpZiBbICIvJHtQUkVGSVh9IiA9ICIvJCR7cHJmeH0iIC1hICIvJHtQS0dPUklHSU59IiAh PSAiLyQke29yZ259IiBdOyB0aGVuIFwKCQkJJHtFQ0hPX0NNRH0gLW4gIiAkJHtwa2duYW1lfSI7 IFwKCQlmaTsgXAoJZG9uZSk7IFwKCWlmIFsgLW4gIiQke2NvbmZsaWN0c193aXRofSIgXTsgdGhl biBcCgkJJHtFQ0hPX01TR307IFwKCQkke0VDSE9fTVNHfSAiPT09PiAgJHtQS0dOQU1FfSBjb25m bGljdHMgd2l0aCBpbnN0YWxsZWQgcGFja2FnZShzKTogIjsgXAoJCWZvciBlbnRyeSBpbiAkJHtj b25mbGljdHNfd2l0aH07IGRvIFwKCQkJJHtFQ0hPX01TR30gIiAgICAgICQke2VudHJ5fSI7IFwK CQlkb25lOyBcCgkJJHtFQ0hPX01TR307IFwKCQkke0VDSE9fTVNHfSAiICAgICAgVGhleSBpbnN0 YWxsIGZpbGVzIGludG8gdGhlIHNhbWUgcGxhY2UuIjsgXAoJCSR7RUNIT19NU0d9ICIgICAgICBQ bGVhc2UgcmVtb3ZlIHRoZW0gZmlyc3Qgd2l0aCBwa2cgZGVsZXRlLiI7IFwKCQlleGl0IDE7IFwK CWZpCi5lbmRpZiAjIGRlZmluZWQoREVGRVJfQ09ORkxJQ1RTX0NIRUNLKQouZW5kaWYKLmVuZGlm CgojIEluc3RhbGwKCi5pZiAhdGFyZ2V0KGRvLWluc3RhbGwpICYmICFkZWZpbmVkKE5PX0lOU1RB TEwpCmRvLWluc3RhbGw6CglAKGNkICR7SU5TVEFMTF9XUktTUkN9ICYmICR7U0VURU5WfSAke01B S0VfRU5WfSAke0ZBS0VST09UfSAke01BS0VfQ01EfSAke01BS0VfRkxBR1N9ICR7TUFLRUZJTEV9 ICR7TUFLRV9BUkdTfSAke0lOU1RBTExfVEFSR0VUfSkKLmVuZGlmCgojIFBhY2thZ2UKCi5pZiAh dGFyZ2V0KGRvLXBhY2thZ2UpClBLR19DUkVBVEVfQVJHUz0JLXIgJHtTVEFHRURJUn0gLW0gJHtN RVRBRElSfSAtcCAke1RNUFBMSVNUfQpkby1wYWNrYWdlOiBjcmVhdGUtbWFuaWZlc3QKZG8tcGFj a2FnZTogJHtUTVBQTElTVH0KCUBpZiBbIC1kICR7UEFDS0FHRVN9IF07IHRoZW4gXAoJCWlmIFsg ISAtZCAke1BLR1JFUE9TSVRPUll9IF07IHRoZW4gXAoJCQlpZiAhICR7TUtESVJ9ICR7UEtHUkVQ T1NJVE9SWX07IHRoZW4gXAoJCQkJJHtFQ0hPX01TR30gIj0+IENhbid0IGNyZWF0ZSBkaXJlY3Rv cnkgJHtQS0dSRVBPU0lUT1JZfS4iOyBcCgkJCQlleGl0IDE7IFwKCQkJZmk7IFwKCQlmaTsgXAoJ ZmkKCUBmb3IgY2F0IGluICR7Q0FURUdPUklFU307IGRvIFwKCQkke1JNfSAtZiAke1BBQ0tBR0VT fS8kJGNhdC8ke1BLR05BTUVQUkVGSVh9JHtQT1JUTkFNRX0qJHtQS0dfU1VGWH0gOyBcCglkb25l CglAJHtNS0RJUn0gJHtXUktESVJ9L3BrZwoJQGlmICR7U0VURU5WfSAke1BLR19FTlZ9IEZPUkNF X1BPU1Q9IiR7X0ZPUkNFX1BPU1RfUEFUVEVSTlN9IiAke1BLR19DUkVBVEV9ICR7UEtHX0NSRUFU RV9BUkdTfSAtZiAke1BLR19TVUZYOlMvLi8vfSAtbyAke1dSS0RJUn0vcGtnICR7UEtHTkFNRX07 IHRoZW4gXAoJCWlmIFsgLWQgJHtQS0dSRVBPU0lUT1JZfSAtYSAtdyAke1BLR1JFUE9TSVRPUll9 IF07IHRoZW4gXAoJCQkke0xOfSAtZiAke1dSS0RJUl9QS0dGSUxFfSAke1BLR0ZJTEV9IDI+L2Rl di9udWxsIFwKCQkJCXx8ICR7Q1B9IC1mICR7V1JLRElSX1BLR0ZJTEV9ICR7UEtHRklMRX07IFwK CQkJaWYgWyAiJHtQS0dPUklHSU59IiA9ICJwb3J0cy1tZ210L3BrZyIgLW8gIiR7UEtHT1JJR0lO fSIgPSAicG9ydHMtbWdtdC9wa2ctZGV2ZWwiIF07IHRoZW4gXAoJCQkJaWYgWyAhIC1kICR7UEtH TEFURVNUUkVQT1NJVE9SWX0gXTsgdGhlbiBcCgkJCQkJaWYgISAke01LRElSfSAke1BLR0xBVEVT VFJFUE9TSVRPUll9OyB0aGVuIFwKCQkJCQkJJHtFQ0hPX01TR30gIj0+IENhbid0IGNyZWF0ZSBk aXJlY3RvcnkgJHtQS0dMQVRFU1RSRVBPU0lUT1JZfS4iOyBcCgkJCQkJCWV4aXQgMTsgXAoJCQkJ CWZpOyBcCgkJCQlmaSA7IFwKCQkJCSR7TE59IC1zZiAuLi8ke1BLR1JFUE9TSVRPUllTVUJESVJ9 LyR7UEtHTkFNRX0ke1BLR19TVUZYfSAke1BLR0xBVEVTVEZJTEV9IDsgXAoJCQlmaTsgXAoJCWZp OyBcCgllbHNlIFwKCQljZCAkey5DVVJESVJ9ICYmIGV2YWwgJHtNQUtFfSBkZWxldGUtcGFja2Fn ZSA+L2Rldi9udWxsOyBcCgkJZXhpdCAxOyBcCglmaQouZW5kaWYKIyBTb21lIHN1cHBvcnQgcnVs ZXMgZm9yIGRvLXBhY2thZ2UKCi5pZiAhdGFyZ2V0KGRlbGV0ZS1wYWNrYWdlKQpkZWxldGUtcGFj a2FnZToKCUAke0VDSE9fTVNHfSAiPT09PiAgRGVsZXRpbmcgcGFja2FnZSBmb3IgJHtQS0dOQU1F fSIKIyBXaGVuIHN0YWdpbmcsIHRoZSBwYWNrYWdlIG1heSBvbmx5IGJlIGluIHRoZSB3b3JrZGly IGlmIG5vdCByb290CglAJHtSTX0gLWYgJHtQS0dGSUxFfSAke1dSS0RJUl9QS0dGSUxFfSAyPi9k ZXYvbnVsbCB8fCA6Ci5lbmRpZgoKLmlmICF0YXJnZXQoZGVsZXRlLXBhY2thZ2UtbGlzdCkKZGVs ZXRlLXBhY2thZ2UtbGlzdDoKCUAke0VDSE9fQ01EfSAiWyAtZiAke1BLR0ZJTEV9IF0gJiYgKCR7 RUNIT19DTUR9IGRlbGV0aW5nICR7UEtHRklMRX07ICR7Uk19IC1mICR7UEtHRklMRX0pIgouZW5k aWYKCiMgVXNlZCBieSBzY3JpcHRzIGFuZCB1c2VycyB0byBpbnN0YWxsIGEgcGFja2FnZSBmcm9t IGxvY2FsIHJlcG9zaXRvcnkuCiMgUG91ZHJpZXJlIC1pIHVzZXMgdGhpcywgcGxlYXNlIGtlZXAu Ci5pZiAhdGFyZ2V0KGluc3RhbGwtcGFja2FnZSkKLmlmIGRlZmluZWQoRk9SQ0VfUEtHX1JFR0lT VEVSKQpfSU5TVEFMTF9QS0dfQVJHUz0JLWYKLmVuZGlmCi5pZiBkZWZpbmVkKElOU1RBTExTX0RF UEVORFMpCl9JTlNUQUxMX1BLR19BUkdTKz0JLUEKLmVuZGlmCmluc3RhbGwtcGFja2FnZToKCUBp ZiBbIC1mICIke1dSS0RJUn0vcGtnLyR7UEtHTkFNRX0ke1BLR19TVUZYfSIgXTsgdGhlbiBcCgkg ICAgX3BrZ2ZpbGU9IiR7V1JLRElSX1BLR0ZJTEV9IjsgXAoJZWxzZSBcCgkgICAgX3BrZ2ZpbGU9 IiR7UEtHRklMRX0iOyBcCglmaTsgXAoJJHtQS0dfQUREfSAke19JTlNUQUxMX1BLR19BUkdTfSAk JHtfcGtnZmlsZX0KLmVuZGlmCgoKIyBVdGlsaXR5IHRhcmdldHMgZm9sbG93CgouaWYgIXRhcmdl dChjaGVjay1hbHJlYWR5LWluc3RhbGxlZCkKLmlmICFkZWZpbmVkKE5PX1BLR19SRUdJU1RFUikg JiYgIWRlZmluZWQoRk9SQ0VfUEtHX1JFR0lTVEVSKQpjaGVjay1hbHJlYWR5LWluc3RhbGxlZDoK CQlAJHtFQ0hPX01TR30gIj09PT4gIENoZWNraW5nIGlmICR7UEtHQkFTRX0gYWxyZWFkeSBpbnN0 YWxsZWQiOyBcCgkJcGtnbmFtZT1gJHtQS0dfSU5GT30gLXEgLU8gJHtQS0dCQVNFfWA7IFwKCQlp ZiBbIC1uICIkJHtwa2duYW1lfSIgXTsgdGhlbiBcCgkJCXY9YCR7UEtHX1ZFUlNJT059IC10ICQk e3BrZ25hbWV9ICR7UEtHTkFNRX1gOyBcCgkJCWlmIFsgIiQke3Z9IiA9ICI8IiBdOyB0aGVuIFwK CQkJCSR7RUNIT19DTUR9ICI9PT0+ICAgQW4gb2xkZXIgdmVyc2lvbiBvZiAke1BLR0JBU0V9IGlz IGFscmVhZHkgaW5zdGFsbGVkICgkJHtwa2duYW1lfSkiOyBcCgkJCWVsc2UgXAoJCQkJJHtFQ0hP X0NNRH0gIj09PT4gICAke1BLR05BTUV9IGlzIGFscmVhZHkgaW5zdGFsbGVkIjsgXAoJCQlmaTsg XAoJCQkke0VDSE9fTVNHfSAiICAgICAgWW91IG1heSB3aXNoIHRvIFxgXGBtYWtlIGRlaW5zdGFs bCcnIGFuZCBpbnN0YWxsIHRoaXMgcG9ydCBhZ2FpbiI7IFwKCQkJJHtFQ0hPX01TR30gIiAgICAg IGJ5IFxgXGBtYWtlIHJlaW5zdGFsbCcnIHRvIHVwZ3JhZGUgaXQgcHJvcGVybHkuIjsgXAoJCQkk e0VDSE9fTVNHfSAiICAgICAgSWYgeW91IHJlYWxseSB3aXNoIHRvIG92ZXJ3cml0ZSB0aGUgb2xk IHBvcnQgb2YgJHtQS0dCQVNFfSI7IFwKCQkJJHtFQ0hPX01TR30gIiAgICAgIHdpdGhvdXQgZGVs ZXRpbmcgaXQgZmlyc3QsIHNldCB0aGUgdmFyaWFibGUgXCJGT1JDRV9QS0dfUkVHSVNURVJcIiI7 IFwKCQkJJHtFQ0hPX01TR30gIiAgICAgIGluIHlvdXIgZW52aXJvbm1lbnQgb3IgdGhlIFwibWFr ZSBpbnN0YWxsXCIgY29tbWFuZCBsaW5lLiI7IFwKCQkJZXhpdCAxOyBcCgkJZmkKLmVuZGlmCi5l bmRpZgoKLmlmICF0YXJnZXQoY2hlY2stdW1hc2spCmNoZWNrLXVtYXNrOgoJQGlmIFsgYCR7U0h9 IC1jIHVtYXNrYCAhPSAwMDIyIF07IHRoZW4gXAoJCSR7RUNIT19NU0d9ICI9PT0+ICBXYXJuaW5n OiB5b3VyIHVtYXNrIGlzIFwiYCR7U0h9IC1jIHVtYXNrYCJcIi47IFwKCQkke0VDSE9fTVNHfSAi ICAgICAgSWYgdGhpcyBpcyBub3QgZGVzaXJlZCwgc2V0IGl0IHRvIGFuIGFwcHJvcHJpYXRlIHZh bHVlIjsgXAoJCSR7RUNIT19NU0d9ICIgICAgICBhbmQgaW5zdGFsbCB0aGlzIHBvcnQgYWdhaW4g YnkgXGBcYG1ha2UgcmVpbnN0YWxsJycuIjsgXAoJZmkKLmVuZGlmCgouaWYgIXRhcmdldChpbnN0 YWxsLW10cmVlKQppbnN0YWxsLW10cmVlOgoJQCR7RE9fTkFEQX0KLmVuZGlmCgouaWYgIXRhcmdl dChpbnN0YWxsLWxkY29uZmlnLWZpbGUpCmluc3RhbGwtbGRjb25maWctZmlsZToKLmlmIGRlZmlu ZWQoVVNFX0xEQ09ORklHKSB8fCBkZWZpbmVkKFVTRV9MRENPTkZJRzMyKQouaWYgZGVmaW5lZChV U0VfTERDT05GSUcpCi5pZiBkZWZpbmVkKFVTRV9MSU5VWF9QUkVGSVgpCi5lbHNlCi5pZiAke1VT RV9MRENPTkZJR30gIT0gIiR7TE9DQUxCQVNFfS9saWIiICYmICFkZWZpbmVkKElOU1RBTExfQVNf VVNFUikKCUAke0VDSE9fTVNHfSAiPT09PiAgIEluc3RhbGxpbmcgbGRjb25maWcgY29uZmlndXJh dGlvbiBmaWxlIgouaWYgZGVmaW5lZChOT19NVFJFRSkgfHwgJHtQUkVGSVh9ICE9ICR7TE9DQUxC QVNFfQoJQCR7TUtESVJ9ICR7U1RBR0VESVJ9JHtMT0NBTEJBU0V9LyR7TERDT05GSUdfRElSfQou ZW5kaWYKCUAke0VDSE9fQ01EfSAke1VTRV9MRENPTkZJR30gfCAke1RSfSAnICcgJ1xuJyBcCgkJ PiAke1NUQUdFRElSfSR7TE9DQUxCQVNFfS8ke0xEQ09ORklHX0RJUn0vJHtVTklRVUVOQU1FfQoJ QCR7RUNIT19DTUR9ICR7TE9DQUxCQVNFfS8ke0xEQ09ORklHX0RJUn0vJHtVTklRVUVOQU1FfSA+ PiAke1RNUFBMSVNUfQouZW5kaWYKLmVuZGlmCi5lbmRpZgouaWYgZGVmaW5lZChVU0VfTERDT05G SUczMikKLmlmICFkZWZpbmVkKElOU1RBTExfQVNfVVNFUikKCUAke0VDSE9fTVNHfSAiPT09PiAg IEluc3RhbGxpbmcgMzItYml0IGxkY29uZmlnIGNvbmZpZ3VyYXRpb24gZmlsZSIKLmlmIGRlZmlu ZWQoTk9fTVRSRUUpIHx8ICR7UFJFRklYfSAhPSAke0xPQ0FMQkFTRX0KCUAke01LRElSfSAke1NU QUdFRElSfSR7TE9DQUxCQVNFfS8ke0xEQ09ORklHMzJfRElSfQouZW5kaWYKCUAke0VDSE9fQ01E fSAke1VTRV9MRENPTkZJRzMyfSB8ICR7VFJ9ICcgJyAnXG4nIFwKCQk+ICR7U1RBR0VESVJ9JHtM T0NBTEJBU0V9LyR7TERDT05GSUczMl9ESVJ9LyR7VU5JUVVFTkFNRX0KCUAke0VDSE9fQ01EfSAk e0xPQ0FMQkFTRX0vJHtMRENPTkZJRzMyX0RJUn0vJHtVTklRVUVOQU1FfSA+PiAke1RNUFBMSVNU fQouZW5kaWYKLmVuZGlmCi5lbmRpZgouZW5kaWYKCi5pZiAhdGFyZ2V0KGNyZWF0ZS11c2Vycy1n cm91cHMpCi5pZiBkZWZpbmVkKEdST1VQUykgfHwgZGVmaW5lZChVU0VSUykKX1VHX09VVFBVVD0J JHtXUktESVJ9L3VzZXJzLWdyb3Vwcy5zaApQS0dQUkVJTlNUQUxMKz0JJHtfVUdfT1VUUFVUfQpj cmVhdGUtdXNlcnMtZ3JvdXBzOgouaWYgZGVmaW5lZChHUk9VUFMpCi5mb3IgX2ZpbGUgaW4gJHtH SURfRklMRVN9Ci5pZiAhZXhpc3RzKCR7X2ZpbGV9KQoJQCR7RUNIT19DTUR9ICIqKiAke19maWxl fSBkb2Vzbid0IGV4aXN0LiBFeGl0aW5nLiI7IGV4aXQgMQouZW5kaWYKLmVuZGZvcgoJQCR7Uk19 IC1mICR7X1VHX09VVFBVVH0gfHwgJHtUUlVFfQoJQCR7RUNIT19NU0d9ICI9PT0+IENyZWF0aW5n IHVzZXJzIGFuZC9vciBncm91cHMuIgoJQCR7RUNIT19DTUR9ICJlY2hvIFwiPT09PiBDcmVhdGlu ZyB1c2VycyBhbmQvb3IgZ3JvdXBzLlwiIiA+PiAke19VR19PVVRQVVR9Ci5mb3IgX2dyb3VwIGlu ICR7R1JPVVBTfQojIF9iZ3BkOio6MTMwOgoJQGlmICEgJHtHUkVQfSAtaCBeJHtfZ3JvdXB9OiAk e0dJRF9GSUxFU30gPi9kZXYvbnVsbCAyPiYxOyB0aGVuIFwKCQkke0VDSE9fQ01EfSAiKiogQ2Fu bm90IGZpbmQgYW55IGluZm9ybWF0aW9uIGFib3V0IGdyb3VwIFxgJHtfZ3JvdXB9JyBpbiAke0dJ RF9GSUxFU30uIjsgXAoJCWV4aXQgMTsgXAoJZmkKCUBJRlM9IjoiOyAke0dSRVB9IC1oIF4ke19n cm91cH06ICR7R0lEX0ZJTEVTfSB8IGhlYWQgLW4gMSB8IHdoaWxlIHJlYWQgZ3JvdXAgZm9vIGdp ZCBtZW1iZXJzOyBkbyBcCgkJZ2lkPSQkKCgkJGdpZCske0dJRF9PRkZTRVR9KSk7IFwKCQkke0VD SE9fQ01EfSAtZSAiaWYgISAke1BXfSBncm91cHNob3cgJCRncm91cCA+L2Rldi9udWxsIDI+JjE7 IHRoZW4gXG4gXAoJCQllY2hvIFwiQ3JlYXRpbmcgZ3JvdXAgJyQkZ3JvdXAnIHdpdGggZ2lkICck JGdpZCcuXCIgXG4gXAoJCQkke1BXfSBncm91cGFkZCAkJGdyb3VwIC1nICQkZ2lkOyBlbHNlIGVj aG8gXCJVc2luZyBleGlzdGluZyBncm91cCAnJCRncm91cCcuXCJcbmZpIiA+PiAke19VR19PVVRQ VVR9OyBcCglkb25lCi5lbmRmb3IKLmVuZGlmCi5pZiBkZWZpbmVkKFVTRVJTKQouZm9yIF9maWxl IGluICR7VUlEX0ZJTEVTfQouaWYgIWV4aXN0cygke19maWxlfSkKCUAke0VDSE9fQ01EfSAiKiog JHtfZmlsZX0gZG9lc24ndCBleGlzdC4gRXhpdGluZy4iOyBleGl0IDEKLmVuZGlmCi5lbmRmb3IK LmZvciBfdXNlciBpbiAke1VTRVJTfQojIF9iZ3BkOio6MTMwOjEzMDpCR1AgRGFlbW9uOi92YXIv ZW1wdHk6L3NiaW4vbm9sb2dpbgoJQGlmICEgJHtHUkVQfSAtaCBeJHtfdXNlcn06ICR7VUlEX0ZJ TEVTfSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gXAoJCSR7RUNIT19DTUR9ICIqKiBDYW5ub3QgZmlu ZCBhbnkgaW5mb3JtYXRpb24gYWJvdXQgdXNlciBcYCR7X3VzZXJ9JyBpbiAke1VJRF9GSUxFU30u IjsgXAoJCWV4aXQgMTsgXAoJZmkKCUBJRlM9IjoiOyAke0dSRVB9IC1oIF4ke191c2VyfTogJHtV SURfRklMRVN9IHwgaGVhZCAtbiAxIHwgd2hpbGUgcmVhZCBsb2dpbiBwYXNzd2QgdWlkIGdpZCBj bGFzcyBjaGFuZ2UgZXhwaXJlIGdlY29zIGhvbWVkaXIgc2hlbGw7IGRvIFwKCQl1aWQ9JCQoKCQk dWlkKyR7VUlEX09GRlNFVH0pKTsgXAoJCWdpZD0kJCgoJCRnaWQrJHtHSURfT0ZGU0VUfSkpOyBc CgkJY2xhc3M9IiQke2NsYXNzOistTCB9JCRjbGFzcyI7IFwKCQlob21lZGlyPSQkKGVjaG8gJCRo b21lZGlyIHwgc2VkICJzfF4vdXNyL2xvY2FsfCR7UFJFRklYfXwiKTsgXAoJCSR7RUNIT19DTUR9 IC1lICJpZiAhICR7UFd9IHVzZXJzaG93ICQkbG9naW4gPi9kZXYvbnVsbCAyPiYxOyB0aGVuIFxu IFwKCQkJZWNobyBcIkNyZWF0aW5nIHVzZXIgJyQkbG9naW4nIHdpdGggdWlkICckJHVpZCcuXCIg XG4gXAoJCQkke1BXfSB1c2VyYWRkICQkbG9naW4gLXUgJCR1aWQgLWcgJCRnaWQgJCRjbGFzcyAt YyBcIiQkZ2Vjb3NcIiAtZCAkJGhvbWVkaXIgLXMgJCRzaGVsbCBcbiBcCgkJCWVsc2UgXG5lY2hv IFwiVXNpbmcgZXhpc3RpbmcgdXNlciAnJCRsb2dpbicuXCIgXG5maSIgPj4gJHtfVUdfT1VUUFVU fTsgXAoJCWNhc2UgJCRob21lZGlyIGluIC98L25vbmV4aXN0ZW50fC92YXIvZW1wdHkpIDs7ICop ICR7RUNIT19DTUR9ICIke0lOU1RBTEx9IC1kIC1nICQkZ2lkIC1vICQkdWlkICQkaG9tZWRpciIg Pj4gJHtfVUdfT1VUUFVUfTs7IGVzYWM7IFwKCWRvbmUKLmVuZGZvcgouaWYgZGVmaW5lZChHUk9V UFMpCi5mb3IgX2dyb3VwIGluICR7R1JPVVBTfQojIG1haWw6Kjo2OnBvc3RmaXgsY2xhbWF2CglA SUZTPSI6IjsgJHtHUkVQfSAtaCBeJHtfZ3JvdXB9OiAke0dJRF9GSUxFU30gfCBoZWFkIC1uIDEg fCB3aGlsZSByZWFkIGdyb3VwIGZvbyBnaWQgbWVtYmVyczsgZG8gXAoJCWdpZD0kJCgoJCRnaWQr JHtHSURfT0ZGU0VUfSkpOyBcCgkJSUZTPSIsIjsgZm9yIF9sb2dpbiBpbiAkJG1lbWJlcnM7IGRv IFwKCQkJZm9yIF91c2VyIGluICR7VVNFUlN9OyBkbyBcCgkJCQlpZiBbICJ4JCR7X3VzZXJ9IiA9 ICJ4JCR7X2xvZ2lufSIgXTsgdGhlbiBcCgkJCQkJJHtFQ0hPX0NNRH0gLWUgImlmICEgJHtQV30g Z3JvdXBzaG93ICR7X2dyb3VwfSB8ICR7R1JFUH0gLXF3ICQke19sb2dpbn07IHRoZW4gXG4gXAoJ CQkJCQllY2hvIFwiQWRkaW5nIHVzZXIgJyQke19sb2dpbn0nIHRvIGdyb3VwICcke19ncm91cH0n LlwiIFxuIFwKCQkJCQkJJHtQV30gZ3JvdXBtb2QgJHtfZ3JvdXB9IC1tICQke19sb2dpbn0gXG5m aSIgPj4gJHtfVUdfT1VUUFVUfTsgXAoJCQkJZmk7IFwKCQkJZG9uZTsgXAoJCWRvbmU7IFwKCWRv bmUKLmVuZGZvcgouZW5kaWYKLmlmIGRlZmluZWQoVVNFUlMpCi5mb3IgX3VzZXIgaW4gJHtVU0VS U30KCUBpZiBbICEgJHtVU0VSU19CTEFDS0xJU1Q6TSR7X3VzZXJ9fSBdOyB0aGVuIFwKCQkke0VD SE9fQ01EfSAiQHVuZXhlYyBpZiAke1BXfSB1c2Vyc2hvdyAke191c2VyfSA+L2Rldi9udWxsIDI+ JjE7IHRoZW4gXAoJCWVjaG8gXCI9PT4gWW91IHNob3VsZCBtYW51YWxseSByZW1vdmUgdGhlIFxc XCIke191c2VyfVxcXCIgdXNlci4gXCI7IGZpIiA+PiAke1RNUFBMSVNUfTsgXAoJZmkKLmVuZGZv cgouZW5kaWYKLmVuZGlmCi5lbmRpZgouZW5kaWYKCi5pZiAhZGVmaW5lZChESVNBQkxFX1NFQ1VS SVRZX0NIRUNLKQouaWYgIXRhcmdldChzZWN1cml0eS1jaGVjaykKc2VjdXJpdHktY2hlY2s6ICR7 VE1QUExJU1R9CiMgU2NhbiBQTElTVCBmb3I6CiMgICAxLiAgc2V0dWdpZCBmaWxlcwojICAgMi4g IGFjY2VwdCgpL3JlY3Zmcm9tKCkgd2hpY2ggaW5kaWNhdGVzIG5ldHdvcmsgbGlzdGVuaW5nIGNh cGFiaWxpdHkKIyAgIDMuICBpbnNlY3VyZSBmdW5jdGlvbnMgKGdldHMvbWt0ZW1wL3RlbXBuYW0v W1hYWF0pCiMgICA0LiAgc3RhcnR1cCBzY3JpcHRzLCBpbiBjb25qdW5jdGlvbiB3aXRoIDIuCiMg ICA1LiAgd29ybGQtd3JpdGFibGUgZmlsZXMvZGlycwojCgktQCR7Uk19IC1mICR7V1JLRElSfS8u UExJU1Quc2V0dWlkICR7V1JLRElSfS8uUExJU1Qud3JpdGFibGUgJHtXUktESVJ9Ly5QTElTVC5v YmpkdW1wOyBcCgkke0FXS30gLXYgcHJlZml4PScke1BSRUZJWH0nICcgXAoJCW1hdGNoKCQkMCwg L15AY3dkIC8pIHsgcHJlZml4ID0gc3Vic3RyKCQkMCwgUlNUQVJUICsgUkxFTkdUSCk7IGlmIChw cmVmaXggPT0gIi8iKSBwcmVmaXg9IiI7IG5leHQ7IH0gXAoJCS9eQC8geyBuZXh0OyB9IFwKCQkv XlwvLyB7IHByaW50OyBuZXh0OyB9IFwKCQl7IHByaW50IHByZWZpeCAiLyIgJCQwOyB9IFwKCScg JHtUTVBQTElTVH0gPiAke1dSS0RJUn0vLlBMSVNULmZsYXR0ZW5lZDsgXAoJJHtUUn0gJ1xuJyAn XDAnIDwgJHtXUktESVJ9Ly5QTElTVC5mbGF0dGVuZWQgXAoJfCAke1hBUkdTfSAtMCAtSiAlICR7 RklORH0gJSAtcHJ1bmUgISAtdHlwZSBsIC10eXBlIGYgXCggLXBlcm0gLTQwMDAgLW8gLXBlcm0g LTIwMDAgXCkgXCggLXBlcm0gLTAwMTAgLW8gLXBlcm0gLTAwMDEgXCkgMj4gL2Rldi9udWxsID4g JHtXUktESVJ9Ly5QTElTVC5zZXR1aWQ7IFwKCSR7VFJ9ICdcbicgJ1wwJyA8ICR7V1JLRElSfS8u UExJU1QuZmxhdHRlbmVkIFwKCXwgJHtYQVJHU30gLTAgLUogJSAke0ZJTkR9ICUgLXBydW5lIC1w ZXJtIC0wMDAyIFwhIC10eXBlIGwgMj4gL2Rldi9udWxsID4gJHtXUktESVJ9Ly5QTElTVC53cml0 YWJsZTsgXAoJJHtUUn0gJ1xuJyAnXDAnIDwgJHtXUktESVJ9Ly5QTElTVC5mbGF0dGVuZWQgXAoJ fCAke1hBUkdTfSAtMCAtSiAlICR7RklORH0gJSAtcHJ1bmUgISAtdHlwZSBsIC10eXBlIGYgLXBy aW50MCAyPiAvZGV2L251bGwgXAoJfCAke1hBUkdTfSAtMCAtbiAxICR7T0JKRFVNUH0gLVIgMj4g L2Rldi9udWxsID4gJHtXUktESVJ9Ly5QTElTVC5vYmpkdW1wOyBcCglpZiBcCgkJISAke0FXS30g LXYgYXVkaXQ9IiQke1BPUlRTX0FVRElUfSIgLWYgJHtTQ1JJUFRTRElSfS9zZWN1cml0eS1jaGVj ay5hd2sgXAoJCSAgJHtXUktESVJ9Ly5QTElTVC5mbGF0dGVuZWQgJHtXUktESVJ9Ly5QTElTVC5v YmpkdW1wICR7V1JLRElSfS8uUExJU1Quc2V0dWlkICR7V1JLRElSfS8uUExJU1Qud3JpdGFibGU7 IFwKCXRoZW4gXAoJCXd3d19zaXRlPSQkKGNkICR7LkNVUkRJUn0gJiYgJHtNQUtFfSB3d3ctc2l0 ZSk7IFwKCSAgICBpZiBbICEgLXogIiQke3d3d19zaXRlfSIgXTsgdGhlbiBcCgkJCSR7RUNIT19N U0d9OyBcCgkJCSR7RUNIT19NU0d9ICIgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgYW5kIGNv bnRhY3QgZGV0YWlscyBhYm91dCB0aGUgc2VjdXJpdHkiOyBcCgkJCSR7RUNIT19NU0d9ICIgICAg ICBzdGF0dXMgb2YgdGhpcyBzb2Z0d2FyZSwgc2VlIHRoZSBmb2xsb3dpbmcgd2VicGFnZTogIjsg XAoJCQkke0VDSE9fTVNHfSAiJCR7d3d3X3NpdGV9IjsgXAoJCWZpOyBcCglmaQouZW5kaWYKLmVs c2UgIyBpLmUuIGRlZmluZWQoRElTQUJMRV9TRUNVUklUWV9DSEVDSykKc2VjdXJpdHktY2hlY2s6 CglAJHtFQ0hPX01TR30gIiAgICAgIFdBUk5JTkc6IFNlY3VyaXR5IGNoZWNrIGhhcyBiZWVuIGRp c2FibGVkLiIKLmVuZGlmICMgIWRlZmluZWQoRElTQUJMRV9TRUNVUklUWV9DSEVDSykKCiMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKIyBTa2VsZXRvbiB0YXJnZXRzIHN0YXJ0IGhlcmUKIwojIFlvdSBzaG91bGRuJ3QgaGF2ZSB0 byBjaGFuZ2UgdGhlc2UuICBFaXRoZXIgYWRkIHRoZSBwcmUtKiBvcgojIHBvc3QtKiB0YXJnZXRz L3NjcmlwdHMgb3IgcmVkZWZpbmUgdGhlIGRvLSogdGFyZ2V0cy4gIFRoZXNlCiMgdGFyZ2V0cyBk b24ndCBkbyBhbnl0aGluZyBvdGhlciB0aGFuIGNoZWNraW5nIGZvciBjb29raWVzIGFuZAojIGNh bGwgdGhlIG5lY2Vzc2FyeSB0YXJnZXRzL3NjcmlwdHMuCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmV4dHJhY3QtbWVzc2Fn ZToKCUAke0VDSE9fTVNHfSAiPT09PiAgRXh0cmFjdGluZyBmb3IgJHtQS0dOQU1FfSIKcGF0Y2gt bWVzc2FnZToKCUAke0VDSE9fTVNHfSAiPT09PiAgUGF0Y2hpbmcgZm9yICR7UEtHTkFNRX0iCmNv bmZpZ3VyZS1tZXNzYWdlOgoJQCR7RUNIT19NU0d9ICI9PT0+ICBDb25maWd1cmluZyBmb3IgJHtQ S0dOQU1FfSIKYnVpbGQtbWVzc2FnZToKCUAke0VDSE9fTVNHfSAiPT09PiAgQnVpbGRpbmcgZm9y ICR7UEtHTkFNRX0iCnN0YWdlLW1lc3NhZ2U6CglAJHtFQ0hPX01TR30gIj09PT4gIFN0YWdpbmcg Zm9yICR7UEtHTkFNRX0iCmluc3RhbGwtbWVzc2FnZToKCUAke0VDSE9fTVNHfSAiPT09PiAgSW5z dGFsbGluZyBmb3IgJHtQS0dOQU1FfSIKcGFja2FnZS1tZXNzYWdlOgoJQCR7RUNIT19NU0d9ICI9 PT0+ICBCdWlsZGluZyBwYWNrYWdlIGZvciAke1BLR05BTUV9IgoKIyBFbXB0eSBwcmUtKiBhbmQg cG9zdC0qIHRhcmdldHMKCi5mb3Igc3RhZ2UgaW4gcHJlIHBvc3QKLmZvciBuYW1lIGluIHBrZyBj aGVjay1zYW5pdHkgZmV0Y2ggZXh0cmFjdCBwYXRjaCBjb25maWd1cmUgYnVpbGQgc3RhZ2UgaW5z dGFsbCBwYWNrYWdlCgouaWYgZXhpc3RzKCR7U0NSSVBURElSfS8ke3N0YWdlfS0ke25hbWV9KQou aWYgIXRhcmdldCgke3N0YWdlfS0ke25hbWV9LXNjcmlwdCkKJHtzdGFnZX0tJHtuYW1lfS1zY3Jp cHQ6CglAIGNkICR7LkNVUkRJUn0gJiYgJHtTRVRFTlZ9ICR7U0NSSVBUU19FTlZ9ICR7U0h9IFwK CQkJJHtTQ1JJUFRESVJ9LyR7LlRBUkdFVDpTLy1zY3JpcHQkLy99Ci5lbmRpZgouZW5kaWYKCi5l bmRmb3IKLmVuZGZvcgoKLmlmICF0YXJnZXQocHJldHR5LXByaW50LXd3dy1zaXRlKQpwcmV0dHkt cHJpbnQtd3d3LXNpdGU6CglAd3d3X3NpdGU9JCQoY2QgJHsuQ1VSRElSfSAmJiAke01BS0V9IHd3 dy1zaXRlKTsgXAoJaWYgWyAtbiAiJCR7d3d3X3NpdGV9IiBdOyB0aGVuIFwKCQkke0VDSE9fTVNH fSAtbiAiIGFuZC9vciB2aXNpdCB0aGUgIjsgXAoJCSR7RUNIT19NU0d9IC1uICI8YSBocmVmPVwi JCR7d3d3X3NpdGV9XCI+d2ViIHNpdGU8L2E+IjsgXAoJCSR7RUNIT19NU0d9ICIgZm9yIGZ1cnRo ZXIgaW5mb3JtYXRpb24iOyBcCglmaQouZW5kaWYKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBTb21lIG1vcmUgdGFyZ2V0 cyBzdXBwbGllZCBmb3IgdXNlcnMnIGNvbnZlbmllbmNlCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgQ2hlY2twYXRjaAoj CiMgU3BlY2lhbCB0YXJnZXQgdG8gdmVyaWZ5IHBhdGNoZXMKCi5pZiAhdGFyZ2V0KGNoZWNrcGF0 Y2gpCmNoZWNrcGF0Y2g6CglAY2QgJHsuQ1VSRElSfSAmJiAke01BS0V9ICR7UEFUQ0hfU0lMRU5U fSBQQVRDSF9DSEVDS19PTkxZPXllcyAke19QQVRDSF9ERVB9ICR7X1BBVENIX1JFQUxfU0VRfQou ZW5kaWYKCiMgUmVpbnN0YWxsCiMKIyBTcGVjaWFsIHRhcmdldCB0byByZS1ydW4gaW5zdGFsbAoK LmlmICF0YXJnZXQocmVpbnN0YWxsKQpyZWluc3RhbGw6CglAJHtSTX0gLWYgJHtJTlNUQUxMX0NP T0tJRX0gJHtQQUNLQUdFX0NPT0tJRX0KCUBjZCAkey5DVVJESVJ9ICYmIERFUEVORFNfVEFSR0VU PSIke0RFUEVORFNfVEFSR0VUfSIgJHtNQUtFfSAtREZPUkNFX1BLR19SRUdJU1RFUiBpbnN0YWxs Ci5lbmRpZgoKLmlmICF0YXJnZXQocmVzdGFnZSkKcmVzdGFnZToKCUAke1JNfSAtcmYgJHtTVEFH RURJUn0gJHtTVEFHRV9DT09LSUV9ICR7SU5TVEFMTF9DT09LSUV9ICR7UEFDS0FHRV9DT09LSUV9 CglAY2QgJHsuQ1VSRElSfSAmJiAke01BS0V9IHN0YWdlCi5lbmRpZgoKIyBEZWluc3RhbGwKIwoj IFNwZWNpYWwgdGFyZ2V0IHRvIHJlbW92ZSBpbnN0YWxsYXRpb24KCi5pZiAhdGFyZ2V0KGRlaW5z dGFsbCkKZGVpbnN0YWxsOgouaWYgZGVmaW5lZChVSUQpICYmICR7VUlEfSAhPSAwICYmICFkZWZp bmVkKElOU1RBTExfQVNfVVNFUikKCUAke0VDSE9fTVNHfSAiPT09PiAgU3dpdGNoaW5nIHRvIHJv b3QgY3JlZGVudGlhbHMgZm9yICckey5UQVJHRVR9JyB0YXJnZXQiCglAY2QgJHsuQ1VSRElSfSAm JiBcCgkJJHtTVV9DTUR9ICIke01BS0V9ICR7LlRBUkdFVH0iCglAJHtFQ0hPX01TR30gIj09PT4g IFJldHVybmluZyB0byB1c2VyIGNyZWRlbnRpYWxzIgouZWxzZQoJQCR7RUNIT19NU0d9ICI9PT0+ ICBEZWluc3RhbGxpbmcgZm9yICR7UEtHQkFTRX0iCglAaWYgJHtQS0dfSU5GT30gLWUgJHtQS0dC QVNFfTsgdGhlbiBcCgkJcD1gJHtQS0dfSU5GT30gLXEgLU8gJHtQS0dCQVNFfWA7IFwKCQkke0VD SE9fTVNHfSAiPT09PiAgIERlaW5zdGFsbGluZyAkJHtwfSI7IFwKCQkke1BLR19ERUxFVEV9IC1m ICR7UEtHQkFTRX0gOyBcCgllbHNlIFwKCQkke0VDSE9fTVNHfSAiPT09PiAgICR7UEtHQkFTRX0g bm90IGluc3RhbGxlZCwgc2tpcHBpbmciOyBcCglmaQoJQCR7Uk19IC1mICR7SU5TVEFMTF9DT09L SUV9ICR7UEFDS0FHRV9DT09LSUV9Ci5lbmRpZgouZW5kaWYKCiMgRGVpbnN0YWxsLWFsbAojCiMg U3BlY2lhbCB0YXJnZXQgdG8gcmVtb3ZlIGluc3RhbGxhdGlvbiBvZiBhbGwgcG9ydHMgb2YgdGhl IHNhbWUgb3JpZ2luCgouaWYgIXRhcmdldChkZWluc3RhbGwtYWxsKQpkZWluc3RhbGwtYWxsOgou aWYgJHtVSUR9ICE9IDAgJiYgIWRlZmluZWQoSU5TVEFMTF9BU19VU0VSKQoJQCR7RUNIT19NU0d9 ICI9PT0+ICBTd2l0Y2hpbmcgdG8gcm9vdCBjcmVkZW50aWFscyBmb3IgJyR7LlRBUkdFVH0nIHRh cmdldCIKCUBjZCAkey5DVVJESVJ9ICYmIFwKCQkke1NVX0NNRH0gIiR7TUFLRX0gJHsuVEFSR0VU fSIKCUAke0VDSE9fTVNHfSAiPT09PiAgUmV0dXJuaW5nIHRvIHVzZXIgY3JlZGVudGlhbHMiCi5l bHNlCglAJHtFQ0hPX01TR30gIj09PT4gIERlaW5zdGFsbGluZyBmb3IgJHtQS0dPUklHSU59IgoJ QGRlaW5zdGFsbF9uYW1lcz1gJHtQS0dfSU5GT30gLXEgLU8gJHtQS0dPUklHSU59YDsgXAoJZm9y IG9sZHBrZ29yaWdpbiBpbiAkJCgke0dSRVB9ICJ8JHtQS0dPUklHSU59fCIgJHtQT1JUU0RJUn0v TU9WRUQgfCAke0NVVH0gLWYgMSAtZCAnfCcgfCAke1NPUlR9IC11KTsgZG8gXAoJCWRlaW5zdGFs bF9uYW1lcz0iJCR7ZGVpbnN0YWxsX25hbWVzfSAkJCgke1BLR19JTkZPfSAtcSAtTyAkJHtvbGRw a2dvcmlnaW59KSI7IFwKCWRvbmU7IFwKCWlmIFsgLW4gIiQke2RlaW5zdGFsbF9uYW1lc30iIF07 IHRoZW4gXAoJCWZvciBkIGluICQke2RlaW5zdGFsbF9uYW1lc307IGRvIFwKCQkJJHtFQ0hPX01T R30gIj09PT4gICBEZWluc3RhbGxpbmcgJCR7ZH0iOyBcCgkJCSR7UEtHX0RFTEVURX0gLWYgJCR7 ZH07IFwKCQlkb25lOyBcCgllbHNlIFwKCQkke0VDSE9fTVNHfSAiPT09PiAgICR7UEtHT1JJR0lO fSBub3QgaW5zdGFsbGVkLCBza2lwcGluZyI7IFwKCWZpOyBcCgkke1JNfSAtZiAke0lOU1RBTExf Q09PS0lFfSAke1BBQ0tBR0VfQ09PS0lFfQouZW5kaWYKLmVuZGlmCgojIENsZWFuaW5nIHVwCgou aWYgIXRhcmdldChkby1jbGVhbikKZG8tY2xlYW46CglAaWYgWyAtZCAke1dSS0RJUn0gXTsgdGhl biBcCgkJaWYgWyAtdyAke1dSS0RJUn0gXTsgdGhlbiBcCgkJCSR7Uk19IC1yZiAke1dSS0RJUn07 IFwKCQllbHNlIFwKCQkJJHtFQ0hPX01TR30gIj09PT4gICAke1dSS0RJUn0gbm90IHdyaXRhYmxl LCBza2lwcGluZyI7IFwKCQlmaTsgXAoJZmkKLmVuZGlmCgouaWYgIXRhcmdldChjbGVhbikKY2xl YW46Ci5pZiAhZGVmaW5lZChOT0NMRUFOREVQRU5EUykKCUBjZCAkey5DVVJESVJ9ICYmICR7TUFL RX0gbGltaXRlZC1jbGVhbi1kZXBlbmRzCi5lbmRpZgoJQCR7RUNIT19NU0d9ICI9PT0+ICBDbGVh bmluZyBmb3IgJHtQS0dOQU1FfSIKLmlmIHRhcmdldChwcmUtY2xlYW4pCglAY2QgJHsuQ1VSRElS fSAmJiAke01BS0V9IHByZS1jbGVhbgouZW5kaWYKCUBjZCAkey5DVVJESVJ9ICYmICR7TUFLRX0g ZG8tY2xlYW4KLmlmIHRhcmdldChwb3N0LWNsZWFuKQoJQGNkICR7LkNVUkRJUn0gJiYgJHtNQUtF fSBwb3N0LWNsZWFuCi5lbmRpZgouZW5kaWYKCi5pZiAhdGFyZ2V0KHByZS1kaXN0Y2xlYW4pCnBy ZS1kaXN0Y2xlYW46CglAJHtET19OQURBfQouZW5kaWYKCi5pZiAhdGFyZ2V0KGRpc3RjbGVhbikK ZGlzdGNsZWFuOiBwcmUtZGlzdGNsZWFuIGNsZWFuCglAY2QgJHsuQ1VSRElSfSAmJiAke01BS0V9 IGRlbGV0ZS1kaXN0ZmlsZXMgUkVTVFJJQ1RFRF9GSUxFUz0iJHtfRElTVEZJTEVTfSAke19QQVRD SEZJTEVTfSIKLmVuZGlmCgouaWYgIXRhcmdldChkZWxldGUtZGlzdGZpbGVzKQpkZWxldGUtZGlz dGZpbGVzOgoJQCR7RUNIT19NU0d9ICI9PT0+ICBEZWxldGluZyBkaXN0ZmlsZXMgZm9yICR7UEtH TkFNRX0iCglAKGlmIFsgIlgke1JFU1RSSUNURURfRklMRVN9IiAhPSAiWCIgLWEgLWQgJHtfRElT VERJUn0gXTsgdGhlbiBcCgkJY2QgJHtfRElTVERJUn07IFwKCQlmb3IgZmlsZSBpbiAke1JFU1RS SUNURURfRklMRVN9OyBkbyBcCgkJCSR7Uk19IC1mICQke2ZpbGV9OyBcCgkJCWRpcj0kJHtmaWxl JS8qfTsgXAoJCQlpZiBbICIkJHtkaXJ9IiAhPSAiJCR7ZmlsZX0iIF07IHRoZW4gXAoJCQkJJHtS TURJUn0gLXAgJCR7ZGlyfSA+L2Rldi9udWxsIDI+JjEgfHwgOjsgXAoJCQlmaTsgXAoJCWRvbmU7 IFwKCWZpKQouaWYgZGVmaW5lZChESVNUX1NVQkRJUikKCS1AJHtSTURJUn0gJHtfRElTVERJUn0g Pi9kZXYvbnVsbCAyPiYxIHx8ICR7VFJVRX0KLmVuZGlmCi5lbmRpZgoKLmlmICF0YXJnZXQoZGVs ZXRlLWRpc3RmaWxlcy1saXN0KQpkZWxldGUtZGlzdGZpbGVzLWxpc3Q6CglAJHtFQ0hPX0NNRH0g IiMgJHtQS0dOQU1FfSIKCUBpZiBbICJYJHtSRVNUUklDVEVEX0ZJTEVTfSIgIT0gIlgiIF07IHRo ZW4gXAoJCWZvciBmaWxlIGluICR7UkVTVFJJQ1RFRF9GSUxFU307IGRvIFwKCQkJJHtFQ0hPX0NN RH0gIlsgLWYgJHtfRElTVERJUn0vJCRmaWxlIF0gJiYgKCR7RUNIT19DTUR9IGRlbGV0aW5nICR7 X0RJU1RESVJ9LyQkZmlsZTsgJHtSTX0gLWYgJHtfRElTVERJUn0vJCRmaWxlKSI7IFwKCQkJZGly PSQke2ZpbGUlLyp9OyBcCgkJCWlmIFsgIiQke2Rpcn0iICE9ICIkJHtmaWxlfSIgXTsgdGhlbiBc CgkJCQkke0VDSE9fQ01EfSAiKGNkICR7X0RJU1RESVJ9ICYmICR7Uk1ESVJ9IC1wICQke2Rpcn0g Mj4vZGV2L251bGwpIjsgXAoJCQlmaTsgXAoJCWRvbmU7IFwKCWZpCi5pZiBkZWZpbmVkKERJU1Rf U1VCRElSKQoJQCR7RUNIT19DTUR9ICIke1JNRElSfSAke19ESVNURElSfSAyPi9kZXYvbnVsbCB8 fCAke1RSVUV9IgouZW5kaWYKLmVuZGlmCgojIFByaW50cyBvdXQgYSBsaXN0IG9mIGZpbGVzIHRv IGZldGNoICh1c2VmdWwgdG8gZG8gYSBiYXRjaCBmZXRjaCkKCi5pZiAhdGFyZ2V0KGZldGNoLWxp c3QpCmZldGNoLWxpc3Q6CglAJHtNS0RJUn0gJHtfRElTVERJUn0KCUAoY2QgJHtfRElTVERJUn07 IFwKCSAke19NQVNURVJfU0lURVNfRU5WfSA7IFwKCSBmb3IgX2ZpbGUgaW4gJHtESVNURklMRVN9 OyBkbyBcCgkJZmlsZT1gJHtFQ0hPX0NNRH0gJCRfZmlsZSB8ICR7U0VEfSAtRSAtZSAncy86W146 XSskJC8vJ2AgOyBcCgkJaWYgWyAkJF9maWxlID0gJCRmaWxlIF07IHRoZW4JXAoJCQlzZWxlY3Q9 Jyc7CVwKCQllbHNlCVwKCQkJc2VsZWN0PWAke0VDSE9fQ01EfSAkJHtfZmlsZSMjKjp9IHwgJHtT RUR9IC1lICdzLywvIC9nJ2AgOwlcCgkJZmk7CVwKCQlpZiBbICEgLWYgJCRmaWxlIC1hICEgLWYg JCR7ZmlsZSMjKi99IF07IHRoZW4gXAoJCQlpZiBbICEgLXogIiQkc2VsZWN0IiBdIDsgdGhlbiBc CgkJCQlfX01BU1RFUl9TSVRFU19UTVA9IDsgXAoJCQkJZm9yIGdyb3VwIGluICQkc2VsZWN0OyBk byBcCgkJCQkJaWYgWyAhIC16IFwkJHtfTUFTVEVSX1NJVEVTXyQke2dyb3VwfX0gXSA7IHRoZW4g XAoJCQkJCQlldmFsIF9fX01BU1RFUl9TSVRFU19UTVA9XCQke19NQVNURVJfU0lURVNfJCR7Z3Jv dXB9fSA7IFwKCQkJCQkJX19NQVNURVJfU0lURVNfVE1QPSIkJHtfX01BU1RFUl9TSVRFU19UTVB9 ICQke19fX01BU1RFUl9TSVRFU19UTVB9IiA7IFwKCQkJCQlmaTsgXAoJCQkJZG9uZTsgXAoJCQkJ X19fTUFTVEVSX1NJVEVTX1RNUD0gOyBcCgkJCQlTT1JURURfTUFTVEVSX1NJVEVTX0NNRF9UTVA9 IiR7RUNIT19DTUR9ICR7X01BU1RFUl9TSVRFX09WRVJSSURFfSBgJHtFQ0hPX0NNRH0gJCR7X19N QVNURVJfU0lURVNfVE1QfSB8ICR7QVdLfSAnJHtNQVNURVJfU09SVF9BV0s6U3xcXHxcXFxcfGd9 J2AgJHtfTUFTVEVSX1NJVEVfQkFDS1VQfSIgOyBcCgkJCWVsc2UgXAoJCQkJU09SVEVEX01BU1RF Ul9TSVRFU19DTURfVE1QPSIke1NPUlRFRF9NQVNURVJfU0lURVNfREVGQVVMVF9DTUR9IiA7IFwK CQkJZmk7IFwKCQkJZm9yIHNpdGUgaW4gYGV2YWwgJCRTT1JURURfTUFTVEVSX1NJVEVTX0NNRF9U TVAgJHtfUkFORE9NSVpFX1NJVEVTfWA7IGRvIFwKCQkJCWlmIFsgISAteiAiYCR7RUNIT19DTUR9 ICR7Tk9GRVRDSEZJTEVTfSB8ICR7R1JFUH0gLXcgJCR7ZmlsZX1gIiBdOyB0aGVuIFwKCQkJCQlp ZiBbIC16ICJgJHtFQ0hPX0NNRH0gJHtNQVNURVJfU0lURV9PVkVSUklERX0gfCAke0dSRVB9IC13 ICQke3NpdGV9YCIgXTsgdGhlbiBcCgkJCQkJCWNvbnRpbnVlOyBcCgkJCQkJZmk7IFwKCQkJCWZp OyBcCgkJCQlESVI9JHtESVNUX1NVQkRJUn07XAoJCQkJQ0tTSVpFPWBhbGc9U0laRTsgJHtESVNU SU5GT19EQVRBfWA7IFwKCQkJCWNhc2UgJCR7ZmlsZX0gaW4gXAoJCQkJKi8qKQlhcmdzPSItbyAk JHtmaWxlfSAkJHtzaXRlfSQke2ZpbGV9Ijs7IFwKCQkJCSopCQlhcmdzPSQke3NpdGV9JCR7Zmls ZX07OyBcCgkJCQllc2FjOyBcCgkJCQkke0VDSE9fQ01EfSAtbiAke1NFVEVOVn0gJHtGRVRDSF9F TlZ9ICR7RkVUQ0hfQ01EfSAke0ZFVENIX0JFRk9SRV9BUkdTfSAkJHthcmdzfSAiJHtGRVRDSF9B RlRFUl9BUkdTfSIgJ3x8ICcgOyBcCgkJCWRvbmU7IFwKCQkJJHtFQ0hPX0NNRH0gIiR7RUNIT19D TUR9ICQke2ZpbGV9IG5vdCBmZXRjaGVkIiA7IFwKCQlmaTsgXAoJZG9uZSkKLmlmIGRlZmluZWQo UEFUQ0hGSUxFUykKCUAoY2QgJHtfRElTVERJUn07IFwKCSAke19QQVRDSF9TSVRFU19FTlZ9IDsg XAoJIGZvciBfZmlsZSBpbiAke1BBVENIRklMRVN9OyBkbyBcCgkJZmlsZT1gJHtFQ0hPX0NNRH0g JCRfZmlsZSB8ICR7U0VEfSAtRSAtZSAncy86W14tOl1bXjpdKiQkLy8nYCA7IFwKCQlpZiBbICQk X2ZpbGUgPSAkJGZpbGUgXTsgdGhlbglcCgkJCXNlbGVjdD0nJzsJXAoJCWVsc2UJXAoJCQlzZWxl Y3Q9YCR7RUNIT19DTUR9ICQke19maWxlIyMqOn0gfCAke1NFRH0gLWUgJ3MvLC8gL2cnYCA7CVwK CQlmaTsJXAoJCWZpbGU9YCR7RUNIT19DTUR9ICQkZmlsZSB8ICR7U0VEfSAtRSAtZSAncy86LVte Ol0rJCQvLydgIDsgXAoJCWlmIFsgISAtZiAkJGZpbGUgLWEgISAtZiAkJHtmaWxlIyMqL30gXTsg dGhlbiBcCgkJCWlmIFsgISAteiAiJCRzZWxlY3QiIF0gOyB0aGVuIFwKCQkJCV9fUEFUQ0hfU0lU RVNfVE1QPSA7IFwKCQkJCWZvciBncm91cCBpbiAkJHNlbGVjdDsgZG8gXAoJCQkJCWlmIFsgISAt eiBcJCR7X1BBVENIX1NJVEVTXyQke2dyb3VwfX0gXSA7IHRoZW4gXAoJCQkJCQlldmFsIF9fX1BB VENIX1NJVEVTX1RNUD1cJCR7X1BBVENIX1NJVEVTXyQke2dyb3VwfX0gOyBcCgkJCQkJCV9fUEFU Q0hfU0lURVNfVE1QPSIkJHtfX1BBVENIX1NJVEVTX1RNUH0gJCR7X19fUEFUQ0hfU0lURVNfVE1Q fSIgOyBcCgkJCQlmaTsgXAoJCQkJZG9uZTsgXAoJCQkJX19fUEFUQ0hfU0lURVNfVE1QPSA7IFwK CQkJCVNPUlRFRF9QQVRDSF9TSVRFU19DTURfVE1QPSIke0VDSE9fQ01EfSAke19NQVNURVJfU0lU RV9PVkVSUklERX0gYCR7RUNIT19DTUR9ICQke19fUEFUQ0hfU0lURVNfVE1QfSB8ICR7QVdLfSAn JHtNQVNURVJfU09SVF9BV0s6U3xcXHxcXFxcfGd9J2AgJHtfTUFTVEVSX1NJVEVfQkFDS1VQfSIg OyBcCgkJCWVsc2UgXAoJCQkJU09SVEVEX1BBVENIX1NJVEVTX0NNRF9UTVA9IiR7U09SVEVEX1BB VENIX1NJVEVTX0RFRkFVTFRfQ01EfSIgOyBcCgkJCWZpOyBcCgkJCWZvciBzaXRlIGluIGBldmFs ICQkU09SVEVEX1BBVENIX1NJVEVTX0NNRF9UTVAgJHtfUkFORE9NSVpFX1NJVEVTfWA7IGRvIFwK CQkJCUNLU0laRT1gYWxnPVNJWkU7ICR7RElTVElORk9fREFUQX1gOyBcCgkJCQljYXNlICQke2Zp bGV9IGluIFwKCQkJCSovKikJYXJncz0iLW8gJCR7ZmlsZX0gJCR7c2l0ZX0kJHtmaWxlfSI7OyBc CgkJCQkqKQkJYXJncz0kJHtzaXRlfSQke2ZpbGV9OzsgXAoJCQkJZXNhYzsgXAoJCQkJJHtFQ0hP X0NNRH0gLW4gJHtTRVRFTlZ9ICR7RkVUQ0hfRU5WfSAke0ZFVENIX0NNRH0gJHtGRVRDSF9CRUZP UkVfQVJHU30gJCR7YXJnc30gIiR7RkVUQ0hfQUZURVJfQVJHU30iICd8fCAnIDsgXAoJCQlkb25l OyBcCgkJCSR7RUNIT19DTUR9ICIke0VDSE9fQ01EfSAkJHtmaWxlfSBub3QgZmV0Y2hlZCIgOyBc CgkJZmk7IFwKCSBkb25lKQouZW5kaWYKLmVuZGlmCgouaWYgIXRhcmdldChmZXRjaC11cmwtbGlz dC1pbnQpCmZldGNoLXVybC1saXN0LWludDoKCUAke01LRElSfSAke19ESVNURElSfQoJQChjZCAk e19ESVNURElSfTsgXAoJJHtfTUFTVEVSX1NJVEVTX0VOVn07IFwKCWZvciBfZmlsZSBpbiAke0RJ U1RGSUxFU307IGRvIFwKCQlmaWxlPWAke0VDSE9fQ01EfSAkJF9maWxlIHwgJHtTRUR9IC1FIC1l ICdzLzpbXjpdKyQkLy8nYCA7IFwKCQkJZmlsZXB0bj1gJHtFQ0hPX0NNRH0gJCRmaWxlIHwgJHtT RUR9ICdzfC98XFxcXC98ZztzL1wuL1xcXFwuL2c7cy9cKy9cXFxcKy9nO3MvXD8vXFxcXD8vZydg IDsgXAoJCWlmIFsgJCRfZmlsZSA9ICQkZmlsZSBdOyB0aGVuCVwKCQkJc2VsZWN0PScnOwlcCgkJ ZWxzZQlcCgkJCXNlbGVjdD1gJHtFQ0hPX0NNRH0gJCR7X2ZpbGUjIyo6fSB8ICR7U0VEfSAtZSAn cy8sLyAvZydgIDsJXAoJCWZpOwlcCgkJaWYgWyAhIC16ICIke0xJU1RBTEx9IiAtbyAhIC1mICQk ZmlsZSAtYSAhIC1mICQke2ZpbGUjIyovfSBdOyB0aGVuIFwKCQkJaWYgWyAhIC16ICIkJHNlbGVj dCIgXSA7IHRoZW4gXAoJCQkJX19NQVNURVJfU0lURVNfVE1QPSA7IFwKCQkJCWZvciBncm91cCBp biAkJHNlbGVjdDsgZG8gXAoJCQkJCWlmIFsgISAteiBcJCR7X01BU1RFUl9TSVRFU18kJHtncm91 cH19IF0gOyB0aGVuIFwKCQkJCQkJZXZhbCBfX19NQVNURVJfU0lURVNfVE1QPVwkJHtfTUFTVEVS X1NJVEVTXyQke2dyb3VwfX0gOyBcCgkJCQkJCV9fTUFTVEVSX1NJVEVTX1RNUD0iJCR7X19NQVNU RVJfU0lURVNfVE1QfSAkJHtfX19NQVNURVJfU0lURVNfVE1QfSIgOyBcCgkJCQkJZmkgXAoJCQkJ ZG9uZTsgXAoJCQkJX19fTUFTVEVSX1NJVEVTX1RNUD0gOyBcCgkJCQlTT1JURURfTUFTVEVSX1NJ VEVTX0NNRF9UTVA9IiR7RUNIT19DTUR9ICR7X01BU1RFUl9TSVRFX09WRVJSSURFfSBgJHtFQ0hP X0NNRH0gJCR7X19NQVNURVJfU0lURVNfVE1QfSB8ICR7QVdLfSAnJHtNQVNURVJfU09SVF9BV0s6 U3xcXHxcXFxcfGd9J2AgJHtfTUFTVEVSX1NJVEVfQkFDS1VQfSIgOyBcCgkJCWVsc2UgXAoJCQkJ U09SVEVEX01BU1RFUl9TSVRFU19DTURfVE1QPSIke1NPUlRFRF9NQVNURVJfU0lURVNfREVGQVVM VF9DTUR9IiA7IFwKCQkJZmkgOyBcCgkJCWZvciBzaXRlIGluIGBldmFsICQkU09SVEVEX01BU1RF Ul9TSVRFU19DTURfVE1QICR7X1JBTkRPTUlaRV9TSVRFU31gOyBkbyBcCgkJCQljYXNlICQke2Zp bGV9IGluIFwKCQkJCSovKikJYXJncz0iLW8gJCR7ZmlsZX0gJCR7c2l0ZX0kJHtmaWxlfSI7OyBc CgkJCQkqKQkJYXJncz0kJHtzaXRlfSQke2ZpbGV9OzsgXAoJCQkJZXNhYzsgXAoJCQkJJHtFQ0hP X0NNRH0gJCR7YXJnc30gOyBcCgkJCWRvbmU7IFwKCQlmaSBcCglkb25lKQouaWYgZGVmaW5lZChQ QVRDSEZJTEVTKQoJQChjZCAke19ESVNURElSfTsgXAoJJHtfUEFUQ0hfU0lURVNfRU5WfSA7IFwK CWZvciBfZmlsZSBpbiAke1BBVENIRklMRVN9OyBkbyBcCgkJZmlsZT1gJHtFQ0hPX0NNRH0gJCRf ZmlsZSB8ICR7U0VEfSAtRSAtZSAncy86W14tOl1bXjpdKiQkLy8nYCA7IFwKCQlpZiBbICQkX2Zp bGUgPSAkJGZpbGUgXTsgdGhlbglcCgkJCXNlbGVjdD0nJzsJXAoJCWVsc2UJXAoJCQlzZWxlY3Q9 YCR7RUNIT19DTUR9ICQke19maWxlIyMqOn0gfCAke1NFRH0gLWUgJ3MvLC8gL2cnYCA7CVwKCQlm aTsJXAoJCWZpbGU9YCR7RUNIT19DTUR9ICQkZmlsZSB8ICR7U0VEfSAtRSAtZSAncy86LVteOl0r JCQvLydgIDsgXAoJCWZpbGVwdG49YCR7RUNIT19DTUR9ICQkZmlsZSB8ICR7U0VEfSAnc3wvfFxc XFwvfGc7cy9cLi9cXFxcLi9nO3MvXCsvXFxcXCsvZztzL1w/L1xcXFw/L2cnYCA7IFwKCQlpZiBb ICEgLXogIiR7TElTVEFMTH0iIC1vICEgLWYgJCRmaWxlIC1hICEgLWYgJCR7ZmlsZSMjKi99IF07 IHRoZW4gXAoJCQlpZiBbICEgLXogIiQkc2VsZWN0IiBdIDsgdGhlbiBcCgkJCQlfX1BBVENIX1NJ VEVTX1RNUD0gOyBcCgkJCQlmb3IgZ3JvdXAgaW4gJCRzZWxlY3Q7IGRvIFwKCQkJCQlpZiBbICEg LXogXCQke19QQVRDSF9TSVRFU18kJHtncm91cH19IF0gOyB0aGVuIFwKCQkJCQkJZXZhbCBfX19Q QVRDSF9TSVRFU19UTVA9XCQke19QQVRDSF9TSVRFU18kJHtncm91cH19IDsgXAoJCQkJCQlfX1BB VENIX1NJVEVTX1RNUD0iJCR7X19QQVRDSF9TSVRFU19UTVB9ICQke19fX1BBVENIX1NJVEVTX1RN UH0iIDsgXAoJCQkJCWZpIFwKCQkJCWRvbmU7IFwKCQkJCV9fX1BBVENIX1NJVEVTX1RNUD0gOyBc CgkJCQlTT1JURURfUEFUQ0hfU0lURVNfQ01EX1RNUD0iJHtFQ0hPX0NNRH0gJHtfTUFTVEVSX1NJ VEVfT1ZFUlJJREV9IGAke0VDSE9fQ01EfSAkJHtfX1BBVENIX1NJVEVTX1RNUH0gfCAke0FXS30g JyR7TUFTVEVSX1NPUlRfQVdLOlN8XFx8XFxcXHxnfSdgICR7X01BU1RFUl9TSVRFX0JBQ0tVUH0i IDsgXAoJCQllbHNlIFwKCQkJCVNPUlRFRF9QQVRDSF9TSVRFU19DTURfVE1QPSIke1NPUlRFRF9Q QVRDSF9TSVRFU19ERUZBVUxUX0NNRH0iIDsgXAoJCQlmaSA7IFwKCQkJZm9yIHNpdGUgaW4gYGV2 YWwgJCRTT1JURURfUEFUQ0hfU0lURVNfQ01EX1RNUCAke19SQU5ET01JWkVfU0lURVN9YDsgZG8g XAoJCQkJY2FzZSAkJHtmaWxlfSBpbiBcCgkJCQkqLyopCWFyZ3M9Ii1vICQke2ZpbGV9ICQke3Np dGV9JCR7ZmlsZX0iOzsgXAoJCQkJKikJCWFyZ3M9JCR7c2l0ZX0kJHtmaWxlfTs7IFwKCQkJCWVz YWM7IFwKCQkJCSR7RUNIT19DTUR9ICQke2FyZ3N9IDsgXAoJCQlkb25lOyBcCgkJZmkgXAoJIGRv bmUpCi5lbmRpZgouZW5kaWYKCi5pZiAhdGFyZ2V0KGZldGNoLXVybGFsbC1saXN0KQpmZXRjaC11 cmxhbGwtbGlzdDoKCUBjZCAkey5DVVJESVJ9ICYmIExJU1RBTEw9eWVzICR7TUFLRX0gZmV0Y2gt dXJsLWxpc3QtaW50Ci5lbmRpZgoKLmlmICF0YXJnZXQoZmV0Y2gtdXJsLWxpc3QpCmZldGNoLXVy bC1saXN0OiBmZXRjaC11cmwtbGlzdC1pbnQKLmVuZGlmCgojIEdlbmVyYXRlcyBwYXRjaGVzLgoK dXBkYXRlLXBhdGNoZXM6CglAdG9lZGl0PWBQQVRDSF9XUktTUkM9JHtQQVRDSF9XUktTUkN9IFwK CQlQQVRDSERJUj0ke1BBVENIRElSfSBcCgkJUEFUQ0hfTElTVD0ke1BBVENIRElSfS9wYXRjaC0q IFwKCQlESUZGX0FSR1M9JHtESUZGX0FSR1N9IFwKCQlESVNUT1JJRz0ke0RJU1RPUklHfSBcCgkJ JHtTSH0gJHtQT1JUU0RJUn0vVG9vbHMvc2NyaXB0cy91cGRhdGUtcGF0Y2hlc2A7IFwKCWNhc2Ug JCR0b2VkaXQgaW4gIiIpOzsgXAoJKikgJHtFQ0hPX0NNRH0gLW4gJ2VkaXQgcGF0Y2hlczogJzsg cmVhZCBpOyBcCgljZCAke1BBVENIRElSfSAmJiAkJHtWSVNVQUw6LSQke0VESVQ6LS91c3IvYmlu L3ZpfX0gJCR0b2VkaXQ7OyBlc2FjCgojIENoZWNrc3VtbWluZyB1dGlsaXRpZXMKCmNoZWNrLWNo ZWNrc3VtLWFsZ29yaXRobXM6CglAIFwKCSR7Y2hlY2tzdW1faW5pdH0gXAoJXAoJZm9yIGFsZyBp biAke0NIRUNLU1VNX0FMR09SSVRITVM6dHV9OyBkbyBcCgkJZXZhbCBhbGdfZXhlY3V0YWJsZT1c JCQkJGFsZzsgXAoJCWlmIFsgLXogIiQkYWxnX2V4ZWN1dGFibGUiIF07IHRoZW4gXAoJCQkke0VD SE9fTVNHfSAiQ2hlY2tzdW0gYWxnb3JpdGhtICQkYWxnOiBDb3VsZG4ndCBmaW5kIHRoZSBleGVj dXRhYmxlLiI7IFwKCQkJJHtFQ0hPX01TR30gIlNldCAkJGFsZz0vcGF0aC90by8kJGFsZyBpbiAv ZXRjL21ha2UuY29uZiBhbmQgdHJ5IGFnYWluLiI7IFwKCQkJZXhpdCAxOyBcCgkJZmk7IFwKCWRv bmU7IFwKCmNoZWNrc3VtX2luaXQ9XAoJU0hBMjU2PSR7U0hBMjU2fTsKCi5pZiAhdGFyZ2V0KG1h a2VzdW0pCm1ha2VzdW06IGNoZWNrLWNoZWNrc3VtLWFsZ29yaXRobXMKCUBjZCAkey5DVVJESVJ9 ICYmICR7TUFLRX0gZmV0Y2ggTk9fQ0hFQ0tTVU09eWVzIFwKCQlESVNBQkxFX1NJWkU9eWVzCglA aWYgWyAtZiAke0RJU1RJTkZPX0ZJTEV9IF07IHRoZW4gJHtDQVR9IC9kZXYvbnVsbCA+ICR7RElT VElORk9fRklMRX07IGZpCglAKCBcCgkJY2QgJHtESVNURElSfTsgXAoJCVwKCQkke2NoZWNrc3Vt X2luaXR9IFwKCQlcCgkJZm9yIGZpbGUgaW4gJHtfQ0tTVU1GSUxFU307IGRvIFwKCQkJZm9yIGFs ZyBpbiAke0NIRUNLU1VNX0FMR09SSVRITVM6dHV9OyBkbyBcCgkJCQlldmFsIGFsZ19leGVjdXRh YmxlPVwkJCQkYWxnOyBcCgkJCQlcCgkJCQlpZiBbICQkYWxnX2V4ZWN1dGFibGUgIT0gIk5PIiBd OyB0aGVuIFwKCQkJCQkkJGFsZ19leGVjdXRhYmxlICQkZmlsZSA+PiAke0RJU1RJTkZPX0ZJTEV9 OyBcCgkJCQlmaTsgXAoJCQlkb25lOyBcCgkJCSR7RUNIT19DTUR9ICJTSVpFICgkJGZpbGUpID0g YCR7U1RBVH0gLWYgXCIlelwiICQkZmlsZWAiID4+ICR7RElTVElORk9fRklMRX07IFwKCQlkb25l IFwKCSkKLmVuZGlmCgouaWYgIXRhcmdldChjaGVja3N1bSkKY2hlY2tzdW06IGZldGNoIGNoZWNr LWNoZWNrc3VtLWFsZ29yaXRobXMKCUBzZXQgLWUgOyBcCgkke2NoZWNrc3VtX2luaXR9IFwKCWlm IFsgLWYgJHtESVNUSU5GT19GSUxFfSBdOyB0aGVuIFwKCQljZCAke0RJU1RESVJ9OyBPSz0iIjtc CgkJZm9yIGZpbGUgaW4gJHtfQ0tTVU1GSUxFU307IGRvIFwKCQkJaWdub3JlZD0idHJ1ZSI7IFwK CQkJX2ZpbGU9JCR7ZmlsZSMke0RJU1RfU1VCRElSfS8qfTsJXAoJCQlmb3IgYWxnIGluICR7Q0hF Q0tTVU1fQUxHT1JJVEhNUzp0dX07IGRvIFwKCQkJCWlnbm9yZT0iZmFsc2UiOyBcCgkJCQlldmFs IGFsZ19leGVjdXRhYmxlPVwkJCQkYWxnOyBcCgkJCQlcCgkJCQlpZiBbICQkYWxnX2V4ZWN1dGFi bGUgIT0gIk5PIiBdOyB0aGVuIFwKCQkJCQlNS1NVTT1gJCRhbGdfZXhlY3V0YWJsZSA8ICQkZmls ZWA7IFwKCQkJCQlDS1NVTT1gZmlsZT0kJF9maWxlOyAke0RJU1RJTkZPX0RBVEF9YDsgXAoJCQkJ ZWxzZSBcCgkJCQkJaWdub3JlPSJ0cnVlIjsgXAoJCQkJZmk7IFwKCQkJCVwKCQkJCWlmIFsgJCRp Z25vcmUgPSAiZmFsc2UiIC1hIC16ICIkJENLU1VNIiBdOyB0aGVuIFwKCQkJCQkke0VDSE9fTVNH fSAiPT4gTm8gJCRhbGcgY2hlY2tzdW0gcmVjb3JkZWQgZm9yICQkZmlsZS4iOyBcCgkJCQkJaWdu b3JlPSJ0cnVlIjsgXAoJCQkJZmk7IFwKCQkJCVwKCQkJCWlmIFsgJCRpZ25vcmUgPSAiZmFsc2Ui IF07IHRoZW4gXAoJCQkJCW1hdGNoPSJmYWxzZSI7IFwKCQkJCQlmb3IgY2hrc3VtIGluICQkQ0tT VU07IGRvIFwKCQkJCQkJaWYgWyAiJCRjaGtzdW0iID0gIiQkTUtTVU0iIF07IHRoZW4gXAoJCQkJ CQkJbWF0Y2g9InRydWUiOyBcCgkJCQkJCQlicmVhazsgXAoJCQkJCQlmaTsgXAoJCQkJCWRvbmU7 IFwKCQkJCQlpZiBbICQkbWF0Y2ggPSAidHJ1ZSIgXTsgdGhlbiBcCgkJCQkJCSR7RUNIT19NU0d9 ICI9PiAkJGFsZyBDaGVja3N1bSBPSyBmb3IgJCRmaWxlLiI7IFwKCQkJCQkJaWdub3JlZD0iZmFs c2UiOyBcCgkJCQkJZWxzZSBcCgkJCQkJCSR7RUNIT19NU0d9ICI9PiAkJGFsZyBDaGVja3N1bSBt aXNtYXRjaCBmb3IgJCRmaWxlLiI7IFwKCQkJCQkJcmVmZXRjaGxpc3Q9IiQkcmVmZXRjaGxpc3Qk JGZpbGUgIjsgXAoJCQkJCQlPSz0iJCR7T0s6LXJldHJ5fSI7IFwKCQkJCQkJWyAiJCR7T0t9IiA9 ICJyZXRyeSIgLWEgJHtGRVRDSF9SRUdFVH0gLWd0IDAgXSAmJiAke1JNfSAtZiAkJHtmaWxlfTsg XAoJCQkJCQlpZ25vcmVkPSJmYWxzZSI7IFwKCQkJCQlmaTsgXAoJCQkJZmk7IFwKCQkJZG9uZTsg XAoJCQlcCgkJCWlmIFsgJCRpZ25vcmVkID0gInRydWUiIF07IHRoZW4gXAoJCQkJJHtFQ0hPX01T R30gIj0+IE5vIHN1aXRhYmxlIGNoZWNrc3VtIGZvdW5kIGZvciAkJGZpbGUuIjsgXAoJCQkJT0s9 IiR7RkFMU0V9IjsgXAoJCQlmaTsgXAoJCQlcCgkJZG9uZTsgXAoJCVwKCQlpZiBbICIkJHtPSzo9 dHJ1ZX0iID0gInJldHJ5IiBdICYmIFsgJHtGRVRDSF9SRUdFVH0gLWd0IDAgXTsgdGhlbiBcCgkJ CSR7RUNIT19NU0d9ICI9PT0+ICBSZWZldGNoIGZvciAke0ZFVENIX1JFR0VUfSBtb3JlIHRpbWVz IGZpbGVzOiAkJHJlZmV0Y2hsaXN0IjsgXAoJCQlpZiAoIGNkICR7LkNVUkRJUn0gJiYgXAoJCQkg ICAgJHtNQUtFfSAkey5NQUtFRkxBR1N9IEZPUkNFX0ZFVENIPSIkJHJlZmV0Y2hsaXN0IiBGRVRD SF9SRUdFVD0iYCR7RVhQUn0gJHtGRVRDSF9SRUdFVH0gLSAxYCIgZmV0Y2gpOyB0aGVuIFwKCQkJ CSAgaWYgKCBjZCAkey5DVVJESVJ9ICYmIFwKCQkJICAgICAgICAke01BS0V9ICR7Lk1BS0VGTEFH U30gRkVUQ0hfUkVHRVQ9ImAke0VYUFJ9ICR7RkVUQ0hfUkVHRVR9IC0gMWAiIGNoZWNrc3VtICk7 IHRoZW4gXAoJCQkJICAgICAgT0s9InRydWUiOyBcCgkJCQkgIGZpOyBcCgkJCWZpOyBcCgkJZmk7 IFwKCQlcCgkJaWYgWyAiJCRPSyIgIT0gInRydWUiIC1hICR7RkVUQ0hfUkVHRVR9IC1lcSAwIF07 IHRoZW4gXAoJCQkke0VDSE9fTVNHfSAiPT09PiAgR2l2aW5nIHVwIG9uIGZldGNoaW5nIGZpbGVz OiAkJHJlZmV0Y2hsaXN0IjsgXAoJCQkke0VDSE9fTVNHfSAiTWFrZSBzdXJlIHRoZSBNYWtlZmls ZSBhbmQgZGlzdGluZm8gZmlsZSAoJHtESVNUSU5GT19GSUxFfSkiOyBcCgkJCSR7RUNIT19NU0d9 ICJhcmUgdXAgdG8gZGF0ZS4gIElmIHlvdSBhcmUgYWJzb2x1dGVseSBzdXJlIHlvdSB3YW50IHRv IG92ZXJyaWRlIHRoaXMiOyBcCgkJCSR7RUNIT19NU0d9ICJjaGVjaywgdHlwZSBcIm1ha2UgTk9f Q0hFQ0tTVU09eWVzIFtvdGhlciBhcmdzXVwiLiI7IFwKCQkJZXhpdCAxOyBcCgkJZmk7IFwKCQlp ZiBbICIkJE9LIiAhPSAidHJ1ZSIgXTsgdGhlbiBcCgkJCWV4aXQgMTsgXAoJCWZpOyBcCgllbGlm IFsgLW4gIiR7X0NLU1VNRklMRVM6TSp9IiBdOyB0aGVuIFwKCQkke0VDSE9fTVNHfSAiPT4gTm8g Y2hlY2tzdW0gZmlsZSAoJHtESVNUSU5GT19GSUxFfSkuIjsgXAoJCWV4aXQgMTsgXAoJZmkKLmVu ZGlmCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCiMgVGhlIHNwZWNpYWwgcGFja2FnZS1idWlsZGluZyB0YXJnZXRzCiMgWW91 IHByb2JhYmx5IHdvbid0IG5lZWQgdG8gdG91Y2ggdGhlc2UKIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBOb2JvZHkgc2hv dWxkIHdhbnQgdG8gb3ZlcnJpZGUgdGhpcyB1bmxlc3MgUEtHTkFNRSBpcyBzaW1wbHkgYm9ndXMu CgouaWYgIXRhcmdldChwYWNrYWdlLW5hbWUpCnBhY2thZ2UtbmFtZToKCUAke0VDSE9fQ01EfSAk e1BLR05BTUV9Ci5lbmRpZgoKIyBCdWlsZCBhIHBhY2thZ2UgYnV0IGRvbid0IGNoZWNrIHRoZSBw YWNrYWdlIGNvb2tpZQoKLmlmICF0YXJnZXQocmVwYWNrYWdlKQpyZXBhY2thZ2U6IHByZS1yZXBh Y2thZ2UgcGFja2FnZQoKcHJlLXJlcGFja2FnZToKCUAke1JNfSAtZiAke1BBQ0tBR0VfQ09PS0lF fQouZW5kaWYKCiMgQnVpbGQgYSBwYWNrYWdlIGJ1dCBkb24ndCBjaGVjayB0aGUgY29va2llIGZv ciBpbnN0YWxsYXRpb24sIGFsc28gZG9uJ3QKIyBpbnN0YWxsIHBhY2thZ2UgY29va2llCgouaWYg IXRhcmdldChwYWNrYWdlLW5vaW5zdGFsbCkKcGFja2FnZS1ub2luc3RhbGw6IHBhY2thZ2UKLmVu ZGlmCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCiMgRGVwZW5kZW5jeSBjaGVja2luZwojIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgouaWYgIXRhcmdldChk ZXBlbmRzKQpkZXBlbmRzOiBwa2ctZGVwZW5kcyBleHRyYWN0LWRlcGVuZHMgcGF0Y2gtZGVwZW5k cyBsaWItZGVwZW5kcyBmZXRjaC1kZXBlbmRzIGJ1aWxkLWRlcGVuZHMgcnVuLWRlcGVuZHMKCi5m b3IgZGVwdHlwZSBpbiBQS0cgRVhUUkFDVCBQQVRDSCBGRVRDSCBCVUlMRCBMSUIgUlVOCiR7ZGVw dHlwZTp0bH0tZGVwZW5kczoKLmlmIGRlZmluZWQoJHtkZXB0eXBlfV9ERVBFTkRTKSAmJiAhZGVm aW5lZChOT19ERVBFTkRTKQoJQCR7U0VURU5WfSBcCgkJZHBfUkFXREVQRU5EUz0iJHske2RlcHR5 cGV9X0RFUEVORFN9IiBcCgkJZHBfREVQVFlQRT0iJHtkZXB0eXBlfV9ERVBFTkRTIiBcCgkJZHBf REVQRU5EU19UQVJHRVQ9IiR7REVQRU5EU19UQVJHRVR9IiBcCgkJZHBfREVQRU5EU19QUkVDTEVB Tj0iJHtERVBFTkRTX1BSRUNMRUFOfSIgXAoJCWRwX0RFUEVORFNfQ0xFQU49IiR7REVQRU5EU19D TEVBTn0iIFwKCQlkcF9ERVBFTkRTX0FSR1M9IiR7REVQRU5EU19BUkdTfSIgXAoJCWRwX1VTRV9Q QUNLQUdFX0RFUEVORFM9IiR7VVNFX1BBQ0tBR0VfREVQRU5EU30iIFwKCQlkcF9VU0VfUEFDS0FH RV9ERVBFTkRTX09OTFk9IiR7VVNFX1BBQ0tBR0VfREVQRU5EU19PTkxZfSIgXAoJCWRwX1BLR19B REQ9IiR7UEtHX0FERH0iIFwKCQlkcF9QS0dfSU5GTz0iJHtQS0dfSU5GT30iIFwKCQlkcF9XUktE SVI9IiR7V1JLRElSfSIgXAoJCWRwX1BLR05BTUU9IiR7UEtHTkFNRX0iIFwKCQlkcF9TVFJJQ1Rf REVQRU5EUz0iJHtTVFJJQ1RfREVQRU5EU30iIFwKCQlkcF9MT0NBTEJBU0U9IiR7TE9DQUxCQVNF fSIgXAoJCWRwX0xJQl9ESVJTPSIke0xJQl9ESVJTfSIgXAoJCWRwX1NIPSIke1NIfSIgXAoJCWRw X1NDUklQVFNESVI9IiR7U0NSSVBUU0RJUn0iIFwKCQlkcF9QT1JUU0RJUj0iJHtQT1JUU0RJUn0i IFwKCQlkcF9NQUtFPSIke01BS0V9IiBcCgkJJHtTSH0gJHtTQ1JJUFRTRElSfS9kby1kZXBlbmRz LnNoCi5lbmRpZgouZW5kZm9yCgouZW5kaWYKCiMgRGVwZW5kZW5jeSBsaXN0czogYm90aCBidWls ZCBhbmQgcnVudGltZSwgcmVjdXJzaXZlLiAgUHJpbnQgb3V0IGRpcmVjdG9yeSBuYW1lcy4KCl9V TklGSUVEX0RFUEVORFM9JHtQS0dfREVQRU5EU30gJHtFWFRSQUNUX0RFUEVORFN9ICR7UEFUQ0hf REVQRU5EU30gJHtGRVRDSF9ERVBFTkRTfSAke0JVSUxEX0RFUEVORFN9ICR7TElCX0RFUEVORFN9 ICR7UlVOX0RFUEVORFN9Cl9ERVBFTkRfU1BFQ0lBTFM9CSR7X1VOSUZJRURfREVQRU5EUzpNKlw6 Klw6KjpDLF5bXjpdKjooW146XSopOi4qJCxcMSx9CgphbGwtZGVwZW5kcy1saXN0OgoJQCR7QUxM LURFUEVORFMtTElTVH0KCkFMTC1ERVBFTkRTLUxJU1Q9IFwKCSR7U0VURU5WfSBkcF9BTExERVBF TkRTPSIke19VTklGSUVEX0RFUEVORFN9IiBcCgkJCWRwX1BPUlRTRElSPSIke1BPUlRTRElSfSIg XAoJCQlkcF9NQUtFPSIke01BS0V9IiBcCgkJCWRwX1BLR05BTUU9IiR7UEtHTkFNRX0iIFwKCQkJ ZHBfU0NSSVBUU0RJUj0iJHtTQ1JJUFRTRElSfSIgXAoJCQkke1NIfSAke1NDUklQVFNESVJ9L2Fs bC1kZXBlbmRzLWxpc3Quc2gKCkNMRUFOLURFUEVORFMtTElTVD0gXAoJJHtTRVRFTlZ9IGRwX0FM TERFUEVORFM9IiR7X1VOSUZJRURfREVQRU5EU30iIFwKCQkJZHBfUE9SVFNESVI9IiR7UE9SVFNE SVJ9IiBcCgkJCWRwX01BS0U9IiR7TUFLRX0iIFwKCQkJZHBfUEtHTkFNRT0iJHtQS0dOQU1FfSIg XAoJCQlkcF9TQ1JJUFRTRElSPSIke1NDUklQVFNESVJ9IiBcCgkJCSR7U0h9ICR7U0NSSVBUU0RJ Un0vY2xlYW4tZGVwZW5kcy1saXN0LnNoCgouaWYgIXRhcmdldChjbGVhbi1kZXBlbmRzKQpjbGVh bi1kZXBlbmRzOgoJQGZvciBkaXIgaW4gJCQoJHtDTEVBTi1ERVBFTkRTLUxJU1R9IGZ1bGwpOyBk byBcCgkJKGNkICQkZGlyOyAke01BS0V9IE5PQ0xFQU5ERVBFTkRTPXllcyBjbGVhbik7IFwKCWRv bmUKLmVuZGlmCgouaWYgIXRhcmdldChsaW1pdGVkLWNsZWFuLWRlcGVuZHMpCmxpbWl0ZWQtY2xl YW4tZGVwZW5kczoKCUBmb3IgZGlyIGluICQkKCR7Q0xFQU4tREVQRU5EUy1MSVNUfSBsaW1pdGVk KTsgZG8gXAoJCShjZCAkJGRpcjsgJHtNQUtFfSBOT0NMRUFOREVQRU5EUz15ZXMgY2xlYW4pOyBc Cglkb25lCi5lbmRpZgoKLmlmICF0YXJnZXQoZGVpbnN0YWxsLWRlcGVuZHMpCmRlaW5zdGFsbC1k ZXBlbmRzOgoJQGZvciBkaXIgaW4gJCQoJHtBTEwtREVQRU5EUy1MSVNUfSk7IGRvIFwKCQkoY2Qg JCRkaXI7ICR7TUFLRX0gZGVpbnN0YWxsKTsgXAoJZG9uZQouZW5kaWYKCi5pZiAhdGFyZ2V0KGZl dGNoLXNwZWNpYWxzKQpmZXRjaC1zcGVjaWFsczoKCUAke0VDSE9fTVNHfSAiPT09PiBGZXRjaGlu ZyBhbGwgZGlzdGZpbGVzIHJlcXVpcmVkIGJ5ICR7UEtHTkFNRX0gZm9yIGJ1aWxkaW5nIgoJQGZv ciBkaXIgaW4gJHtfREVQRU5EX1NQRUNJQUxTfTsgZG8gXAoJCShjZCAkJGRpcjsgJHtNQUtFfSBm ZXRjaCk7IFwKCWRvbmUKLmVuZGlmCgouaWYgIXRhcmdldChmZXRjaC1yZWN1cnNpdmUpCmZldGNo LXJlY3Vyc2l2ZToKCUAke0VDSE9fTVNHfSAiPT09PiBGZXRjaGluZyBhbGwgZGlzdGZpbGVzIGZv ciAke1BLR05BTUV9IGFuZCBkZXBlbmRlbmNpZXMiCglAZm9yIGRpciBpbiAkey5DVVJESVJ9ICQk KCR7QUxMLURFUEVORFMtTElTVH0pOyBkbyBcCgkJKGNkICQkZGlyOyAke01BS0V9IGZldGNoKTsg XAoJZG9uZQouZW5kaWYKCi5pZiAhdGFyZ2V0KGZldGNoLXJlY3Vyc2l2ZS1saXN0KQpmZXRjaC1y ZWN1cnNpdmUtbGlzdDoKCUBmb3IgZGlyIGluICR7LkNVUkRJUn0gJCQoJHtBTEwtREVQRU5EUy1M SVNUfSk7IGRvIFwKCQkoY2QgJCRkaXI7ICR7TUFLRX0gZmV0Y2gtbGlzdCk7IFwKCWRvbmUKLmVu ZGlmCgojIFVzZWQgYnkgZmV0Y2gtcmVxdWlyZWQgYW5kIGZldGNoLXJlcXVpcmVkIGxpc3QsIHRo aXMgc2NyaXB0IGxvb2tzCiMgYXQgZWFjaCBvZiB0aGUgZGVwZW5kZW5jaWVzLiBJZiAzIGl0ZW1z IGFyZSBzcGVjaWZpZWQgaW4gdGhlIHR1cGxlLAojIHN1Y2ggYXMgZm9vOiR7UE9SVFNESVJ9L2dy YXBoaWNzL2ZvbzpleHRyYWN0LCB0aGUgZmlyc3QgaXRlbSAoZm9vKQojIGlzIGV4YW1pbmVkLiBP bmx5IGlmIGl0IGJlZ2lucyB3aXRoIGEgLyBhbmQgZG9lcyBub3QgZXhpc3Qgb24gdGhlCiMgZmls ZS1zeXN0ZW0gd2lsbCBgYG1ha2UgdGFyZycnIHByb2NlZWQuCiMgRm9yIG1vcmUgdXN1YWwgKGR1 YWwtaXRlbSkgZGVwZW5kZW5jeSB0dXBsZXMsIHRoZSBgYG1ha2UgdGFyZycnCiMgcHJvY2VlZHMs IGlmIHRoZSBleGFjdCBwYWNrYWdlLCB3aGljaCB0aGUgZGlyZWN0b3J5IFdPVUxEJ1ZFIGluc3Rh bGxlZCwKIyBpcyBub3QgeWV0IGluc3RhbGxlZC4KIyBUaGlzIGlzIHRoZSBleGFjdCBiZWhhdmlv dXIgb2YgdGhlIG9sZCBjb2RlLCBhbmQgaXQgbWF5IG5lZWQKIyByZXZpc2l0aW5nLiBGb3IgZXhh bXBsZSwgdGhlIGVudGlyZSBmaXJzdCBjYXNlIHNlZW1zIGR1YmlvdXMsIGFuZCBpbgojIHRoZSBz ZWNvbmQgY2FzZSB3ZSwgcHJvYmFibHksIHNob3VsZCBiZSBzYXRpc2ZpZWQgd2l0aCBfYW55XyAo ZWFybGllcikKIyBwYWNrYWdlLCB3aXRoIHRoZSBzYW1lIG9yaWdpbiBhcyB0aGF0IG9mIHRoZSBk aXIuCiMKIwktbWkKRkVUQ0hfTElTVD89CWZvciBpIGluICQkZGVwczsgZG8gXAoJCXByb2c9JCR7 aSUlOip9OyBkaXI9JCR7aVwjKjp9OyBcCgkJY2FzZSAkJGRpciBpbglcCgkJKjoqKSBpZiBbICQk cHJvZyAhPSAkJHtwcm9nXCMvfSAtbyAhIC1lICQkcHJvZyBdOyB0aGVuCVwKCQkJCWRpcj0kJHtk aXIlJToqfTsJXAoJCQllbHNlCVwKCQkJCWNvbnRpbnVlOwlcCgkJCWZpOzsJXAoJCSopIGlmIFsg LWQgJHtQS0dfREJESVJ9LyQkKGNkICQkZGlyOyAke01BS0V9IC1WIFBLR05BTUUpIF07IHRoZW4g XAoJCQkJY29udGludWU7CVwKCQkJZmk7OwlcCgkJZXNhYzsJXAoJCWVjaG8gY2QgJCRkaXI7IGNk ICQkZGlyOyAke01BS0V9ICQkdGFyZzsgXAoJZG9uZQoKLmlmICF0YXJnZXQoZmV0Y2gtcmVxdWly ZWQpCmZldGNoLXJlcXVpcmVkOiBmZXRjaAouaWYgZGVmaW5lZChOT19ERVBFTkRTKQoJQCR7RUNI T19NU0d9ICI9PT0+IE5PX0RFUEVORFMgaXMgc2V0LCBub3QgZmV0Y2hpbmcgYW55IG90aGVyIGRp c3RmaWxlcyBmb3IgJHtQS0dOQU1FfSIKLmVsc2UKCUAke0VDSE9fTVNHfSAiPT09PiBGZXRjaGlu ZyBhbGwgcmVxdWlyZWQgZGlzdGZpbGVzIGZvciAke1BLR05BTUV9IGFuZCBkZXBlbmRlbmNpZXMi Ci5mb3IgZGVwdHlwZSBpbiBQS0cgRVhUUkFDVCBQQVRDSCBGRVRDSCBCVUlMRCBSVU4KLmlmIGRl ZmluZWQoJHtkZXB0eXBlfV9ERVBFTkRTKQoJQHRhcmc9ZmV0Y2g7IGRlcHM9IiR7JHtkZXB0eXBl fV9ERVBFTkRTfSI7ICR7RkVUQ0hfTElTVH0KLmVuZGlmCi5lbmRmb3IKLmVuZGlmCgouZW5kaWYK Ci5pZiAhdGFyZ2V0KGZldGNoLXJlcXVpcmVkLWxpc3QpCmZldGNoLXJlcXVpcmVkLWxpc3Q6IGZl dGNoLWxpc3QKLmlmICFkZWZpbmVkKE5PX0RFUEVORFMpCi5mb3IgZGVwdHlwZSBpbiBQS0cgRVhU UkFDVCBQQVRDSCBGRVRDSCBCVUlMRCBSVU4KLmlmIGRlZmluZWQoJHtkZXB0eXBlfV9ERVBFTkRT KQoJQHRhcmc9ZmV0Y2gtbGlzdDsgZGVwcz0iJHske2RlcHR5cGV9X0RFUEVORFN9IjsgJHtGRVRD SF9MSVNUfQouZW5kaWYKLmVuZGZvcgouZW5kaWYKLmVuZGlmCgouaWYgIXRhcmdldChjaGVja3N1 bS1yZWN1cnNpdmUpCmNoZWNrc3VtLXJlY3Vyc2l2ZToKCUAke0VDSE9fTVNHfSAiPT09PiBGZXRj aGluZyBhbmQgY2hlY2tpbmcgY2hlY2tzdW1zIGZvciAke1BLR05BTUV9IGFuZCBkZXBlbmRlbmNp ZXMiCglAZm9yIGRpciBpbiAkey5DVVJESVJ9ICQkKCR7QUxMLURFUEVORFMtTElTVH0pOyBkbyBc CgkJKGNkICQkZGlyOyAke01BS0V9IGNoZWNrc3VtKTsgXAoJZG9uZQouZW5kaWYKCiMgRGVwZW5k ZW5jeSBsaXN0czogYnVpbGQgYW5kIHJ1bnRpbWUuICBQcmludCBvdXQgZGlyZWN0b3J5IG5hbWVz LgoKYnVpbGQtZGVwZW5kcy1saXN0OgouaWYgZGVmaW5lZChQS0dfREVQRU5EUykgfHwgZGVmaW5l ZChFWFRSQUNUX0RFUEVORFMpIHx8IGRlZmluZWQoUEFUQ0hfREVQRU5EUykgfHwgZGVmaW5lZChG RVRDSF9ERVBFTkRTKSB8fCBkZWZpbmVkKEJVSUxEX0RFUEVORFMpIHx8IGRlZmluZWQoTElCX0RF UEVORFMpCglAJHtCVUlMRC1ERVBFTkRTLUxJU1R9Ci5lbmRpZgoKQlVJTEQtREVQRU5EUy1MSVNU PSBcCglmb3IgZGlyIGluICQkKCR7RUNIT19DTUR9ICIke1BLR19ERVBFTkRTfSAke0VYVFJBQ1Rf REVQRU5EU30gJHtQQVRDSF9ERVBFTkRTfSAke0ZFVENIX0RFUEVORFN9ICR7QlVJTERfREVQRU5E U30gJHtMSUJfREVQRU5EU30iIHwgJHtTRUR9IC1FIC1lICdzLChbXjogXSopOihbXjogXSopKDpb XiBdKik/LFwyLGcnIC1lICd5LyAvXG4vJ3wgJHtTT1JUfSAtdSk7IGRvIFwKCQlpZiBbIC1kICQk ZGlyIF07IHRoZW4gXAoJCQkke0VDSE9fQ01EfSAkJGRpcjsgXAoJCWVsc2UgXAoJCQkke0VDSE9f TVNHfSAiJHtQS0dOQU1FfTogXCIkJGRpclwiIG5vbi1leGlzdGVudCAtLSBkZXBlbmRlbmN5IGxp c3QgaW5jb21wbGV0ZSIgPiYyOyBcCgkJZmk7IFwKCWRvbmUgfCAke1NPUlR9IC11CgpydW4tZGVw ZW5kcy1saXN0OgouaWYgZGVmaW5lZChMSUJfREVQRU5EUykgfHwgZGVmaW5lZChSVU5fREVQRU5E UykKCUAke1JVTi1ERVBFTkRTLUxJU1R9Ci5lbmRpZgoKUlVOLURFUEVORFMtTElTVD0gXAoJZm9y IGRpciBpbiAkJCgke0VDSE9fQ01EfSAiJHtfTElCX1JVTl9ERVBFTkRTOkMsLio6KFteOl0qKS4q LFwxLH0iIHwgJHtTRUR9IC1lICd5LyAvXG4vJyB8ICR7U09SVH0gLXUpOyBkbyBcCgkJaWYgWyAt ZCAkJGRpciBdOyB0aGVuIFwKCQkJJHtFQ0hPX0NNRH0gJCRkaXI7IFwKCQllbHNlIFwKCQkJJHtF Q0hPX01TR30gIiR7UEtHTkFNRX06IFwiJCRkaXJcIiBub24tZXhpc3RlbnQgLS0gZGVwZW5kZW5j eSBsaXN0IGluY29tcGxldGUiID4mMjsgXAoJCWZpOyBcCglkb25lIHwgJHtTT1JUfSAtdQoKIyBQ YWNrYWdlIChyZWN1cnNpdmUgcnVudGltZSkgZGVwZW5kZW5jeSBsaXN0LiAgUHJpbnQgb3V0IGJv dGggZGlyZWN0b3J5IG5hbWVzCiMgYW5kIHBhY2thZ2UgbmFtZXMuCgpwYWNrYWdlLWRlcGVuZHMt bGlzdDoKLmlmIGRlZmluZWQoQ0hJTERfREVQRU5EUykgfHwgZGVmaW5lZChMSUJfREVQRU5EUykg fHwgZGVmaW5lZChSVU5fREVQRU5EUykKCUAke1BBQ0tBR0UtREVQRU5EUy1MSVNUfQouZW5kaWYK Cl9MSUJfUlVOX0RFUEVORFM9CSR7TElCX0RFUEVORFN9ICR7UlVOX0RFUEVORFN9ClBBQ0tBR0Ut REVQRU5EUy1MSVNUPz0gXAoJaWYgWyAiJHtDSElMRF9ERVBFTkRTfSIgXTsgdGhlbiBcCgkJaW5z dGFsbGVkPSQkKCR7UEtHX0lORk99IC1xTyAke1BLR09SSUdJTn0gMj4vZGV2L251bGwgfHwgXAoJ CQkke1RSVUV9KTsgXAoJCWlmIFsgIiQkaW5zdGFsbGVkIiBdOyB0aGVuIFwKCQkJYnJlYWs7IFwK CQlmaTsgXAoJCWlmIFsgLXogIiQkaW5zdGFsbGVkIiBdOyB0aGVuIFwKCQkJaW5zdGFsbGVkPSIk e1BLR05BTUV9IjsgXAoJCWZpOyBcCgkJZm9yIHBrZ25hbWUgaW4gJCRpbnN0YWxsZWQ7IGRvIFwK CQkJJHtFQ0hPX0NNRH0gIiQkcGtnbmFtZSAkey5DVVJESVJ9ICR7UEtHT1JJR0lOfSI7IFwKCQlk b25lOyBcCglmaTsgXAoJY2hlY2tlZD0iJHtQQVJFTlRfQ0hFQ0tFRH0iOyBcCglmb3IgZGlyIGlu ICR7X0xJQl9SVU5fREVQRU5EUzpDLFteOl0qOihbXjpdKik6Py4qLFwxLH07IGRvIFwKCQlkaXI9 JCQoJHtSRUFMUEFUSH0gJCRkaXIpOyBcCgkJaWYgWyAtZCAkJGRpciBdOyB0aGVuIFwKCQkJY2Fz ZSAkJGNoZWNrZWQgaW4JXAoJCQkkJGRpcnwkJGRpclwgKnwqXCAkJGRpcnwqXCAkJGRpclwgKikg Y29udGludWU7OwlcCgkJCWVzYWM7CVwKCQkJY2hpbGRvdXQ9JCQoY2QgJCRkaXI7ICR7TUFLRX0g Q0hJTERfREVQRU5EUz15ZXMgUEFSRU5UX0NIRUNLRUQ9IiQkY2hlY2tlZCIgcGFja2FnZS1kZXBl bmRzLWxpc3QpOyBcCgkJCXNldCAtLSAkJGNoaWxkb3V0OyBcCgkJCWNoaWxkZGlyPSIiOyBcCgkJ CXdoaWxlIFsgJCRcIyAhPSAwIF07IGRvIFwKCQkJCWNoaWxkZGlyPSIkJGNoaWxkZGlyICQkMiI7 IFwKCQkJCSR7RUNIT19DTUR9ICIkJDEgJCQyICQkMyI7IFwKCQkJCXNoaWZ0IDM7IFwKCQkJZG9u ZTsgXAoJCQljaGVja2VkPSIkJGRpciAkJGNoaWxkZGlyICQkY2hlY2tlZCI7IFwKCQllbHNlIFwK CQkJJHtFQ0hPX01TR30gIiR7UEtHTkFNRX06IFwiJCRkaXJcIiBub24tZXhpc3RlbnQgLS0gZGVw ZW5kZW5jeSBsaXN0IGluY29tcGxldGUiID4mMjsgXAoJCWZpOyBcCglkb25lCgpBQ1RVQUwtUEFD S0FHRS1ERVBFTkRTPz0gXAoJZGVwZmlsZXM9IiIgOyBcCglmb3IgbGliIGluICR7TElCX0RFUEVO RFM6Qy9cOi4qLy99OyBkbyBcCgkJZGVwZmlsZXM9IiQkZGVwZmlsZXMgYCR7U0VURU5WfSBMSUJf RElSUz0iJHtMSUJfRElSU30iIExPQ0FMQkFTRT0iJHtMT0NBTEJBU0V9IiAke1NIfSAke1NDUklQ VFNESVJ9L2ZpbmQtbGliLnNoICQke2xpYn1gIiA7IFwKCWRvbmUgOyBcCgkke1NFVEVOVn0gUEtH X0JJTj0iJHtQS0dfQklOfSIgJHtTSH0gJHtTQ1JJUFRTRElSfS9hY3R1YWwtcGFja2FnZS1kZXBl bmRzLnNoICQke2RlcGZpbGVzfSAke1JVTl9ERVBFTkRTOkMvKC4qKVw6LiovIlwxIi99CgpjcmVh dGUtbWFuaWZlc3Q6CglAJHtNS0RJUn0gJHtNRVRBRElSfTsgXAoJKFwKCQllY2hvICJuYW1lOiBc IiR7UEtHQkFTRX1cIiIgOyBcCgkJZWNobyAidmVyc2lvbjogXCIke1BLR1ZFUlNJT059XCIiIDsg XAoJCWVjaG8gIm9yaWdpbjogJHtQS0dPUklHSU59IiA7IFwKCQllY2hvICJjb21tZW50OiA8PEVP RCIgOyBcCgkJZWNobyAke0NPTU1FTlQ6UX0gOyBcCgkJZWNobyAiRU9EIiA7IFwKCQllY2hvICJt YWludGFpbmVyOiAke01BSU5UQUlORVJ9IiA7IFwKCQllY2hvICJwcmVmaXg6ICR7UFJFRklYfSIg OyBcCgkJWyAteiAiJHtXV1d9IiBdIHx8IGVjaG8gInd3dzogJHtXV1d9IiA7IFwKCQllY2hvICJk ZXBzOiB7ICI7IFwKCQkke0FDVFVBTC1QQUNLQUdFLURFUEVORFN9IHwgJHtHUkVQfSAtdiAtRSAk e1BLR19JR05PUkVfREVQRU5EU30gfCAke1NPUlR9IC11IDsgXAoJCWVjaG8gIn0iIDsgXAoJCWVj aG8gImNhdGVnb3JpZXM6IFsgJHtDQVRFR09SSUVTOnU6Uy8kLywvfSBdIiA7IFwKCQlsPSR7TElD RU5TRV9DT01CfSA7IFwKCQlbIC1uICIke05PX0FSQ0h9IiBdICYmIGVjaG8gImFyY2ggOiBgJHtQ S0dfQklOfSBjb25maWcgYWJpIHwgdHIgJ1s6dXBwZXI6XScgJ1s6bG93ZXI6XScgfCAke0NVVH0g LWQ6IC1mMSwyYDoqIiA7IFwKCQlbIC1uICIke05PX0FSQ0h9IiBdICYmIGVjaG8gImFiaSA6IGAk e1BLR19CSU59IGNvbmZpZyBhYmkgfCAke0NVVH0gLWQ6IC1mMSwyYDoqIiA7IFwKCQllY2hvICJs aWNlbnNlbG9naWM6ICQke2w6LXNpbmdsZX0iIDsgXAoJCVsgLXogIiR7TElDRU5TRX0iIF0gfHwg ZWNobyAibGljZW5zZXM6IFsgJHtMSUNFTlNFOnU6Uy8kLywvfSBdIiA7IFwKCQlbIC16ICIke1VT RVJTfSIgXSB8fCBlY2hvICJ1c2VyczogWyAke1VTRVJTOnU6Uy8kLywvfSBdIiA7IFwKCQlbIC16 ICIke0dST1VQU30iIF0gfHwgZWNobyAiZ3JvdXBzOiBbICR7R1JPVVBTOnU6Uy8kLywvfSBdIiA7 IFwKCSkgPiAke01BTklGRVNURn0KCUAke0VDSE9fQ01EfSAtbiAib3B0aW9uczogeyIgPj4gJHtN QU5JRkVTVEZ9Ci5mb3Igb3B0IGluICR7Q09NUExFVEVfT1BUSU9OU19MSVNUfQoJQFsgLXogIiR7 UE9SVF9PUFRJT05TOk0ke29wdH19IiBdIHx8IG1hdGNoPSJvbiIgOyAke0VDSE9fTVNHfSAtbiAi ICR7b3B0fTogJCR7bWF0Y2g6LW9mZn0sIiA+PiAke01BTklGRVNURn0KLmVuZGZvcgoJQCR7RUNI T19DTUR9ICJ9IiA+PiAke01BTklGRVNURn0KLmlmIGRlZmluZWQoUEtHX05PVEVTKQoJQCR7RUNI T19DTUR9IC1uICJhbm5vdGF0aW9uczogeyIgPj4gJHtNQU5JRkVTVEZ9Ci5mb3Igbm90ZSBpbiAk e1BLR19OT1RFU30KCUAke0VDSE9fQ01EfSAtbiAnICR7bm90ZX06ICIke1BLR19OT1RFXyR7bm90 ZX06Uy8iL1wiL2d9IiwnID4+ICR7TUFOSUZFU1RGfQouZW5kZm9yCglAJHtFQ0hPX0NNRH0gIiB9 IiA+PiAke01BTklGRVNURn0KLmVuZGlmCglAWyAtZiAke1BLR0lOU1RBTEx9IF0gJiYgJHtDUH0g JHtQS0dJTlNUQUxMfSAke01FVEFESVJ9LytJTlNUQUxMOyBcCgkke1JNfSAtZiAke01FVEFESVJ9 LytQUkVfSU5TVEFMTCA7IFwKCWZvciBhIGluICR7UEtHUFJFSU5TVEFMTH07IGRvIFwKCQlbIC1m ICQkYSBdICYmICR7Q0FUfSAkJGEgPj4gJHtNRVRBRElSfS8rUFJFX0lOU1RBTEwgOyBcCglkb25l IDsgXAoJJHtSTX0gLWYgJHtNRVRBRElSfS8rUE9TVF9JTlNUQUxMIDsgXAoJZm9yIGEgaW4gJHtQ S0dQT1NUSU5TVEFMTH07IGRvIFwKCQlbIC1mICQkYSBdICYmICR7Q0FUfSAkJGEgPj4gJHtNRVRB RElSfS8rUE9TVF9JTlNUQUxMIDsgXAoJZG9uZSA7IFwKCVsgLWYgJHtQS0dERUlOU1RBTEx9IF0g JiYgJHtDUH0gJHtQS0dERUlOU1RBTEx9ICR7TUVUQURJUn0vK0RFSU5TVEFMTDsgXAoJJHtSTX0g LWYgJHtNRVRBRElSfS8rUFJFX0RFSU5TVEFMTCA7IFwKCWZvciBhIGluICR7UEtHUFJFREVJTlNU QUxMfTsgZG8gXAoJCVsgLWYgJCRhIF0gJiYgJHtDQVR9ICQkYSA+PiAke01FVEFESVJ9LytQUkVf REVJTlNUQUxMIDsgXAoJZG9uZSA7IFwKCSR7Uk19IC1mICR7TUVUQURJUn0vK1BPU1RfREVJTlNU QUxMIDsgXAoJZm9yIGEgaW4gJHtQS0dQT1NUREVJTlNUQUxMfTsgZG8gXAoJCVsgLWYgJCRhIF0g JiYgJHtDQVR9ICQkYSA+PiAke01FVEFESVJ9LytQT1NUX0RFSU5TVEFMTCA7IFwKCWRvbmUgOyBc CglbIC1mICR7UEtHUE9TVERFSU5TVEFMTH0gXSAmJiAke0NQfSAke1BLR1BPU1RERUlOU1RBTEx9 ICR7TUVUQURJUn0vK1BPU1RfREVJTlNUQUxMOyBcCglbIC1mICR7UEtHVVBHUkFERX0gXSAmJiAk e0NQfSAke1BLR1VQR1JBREV9ICR7TUVUQURJUn0vK1VQR1JBREU7IFwKCVsgLWYgJHtQS0dQUkVV UEdSQURFfSBdICYmICR7Q1B9ICR7UEtHUFJFVVBHUkFERX0gJHtNRVRBRElSfS8rUFJFX1VQR1JB REU7IFwKCVsgLWYgJHtQS0dQT1NUVVBHUkFERX0gXSAmJiAke0NQfSAke1BLR1BPU1RVUEdSQURF fSAke01FVEFESVJ9LytQT1NUX1VQR1JBREU7IFwKCSR7Q1B9ICR7REVTQ1J9ICR7TUVUQURJUn0v K0RFU0M7IFwKCVsgLWYgJHtQS0dNRVNTQUdFfSBdICYmICR7Q1B9ICR7UEtHTUVTU0FHRX0gJHtN RVRBRElSfS8rRElTUExBWSB8fCByZXR1cm4gMAoKIyBQcmludCBvdXQgcGFja2FnZSBuYW1lcy4K CnBhY2thZ2UtZGVwZW5kczoKCUAke1BBQ0tBR0UtREVQRU5EUy1MSVNUfSB8ICR7QVdLfSAne3By aW50ICQkMSI6IiQkM30nCgphY3R1YWwtcGFja2FnZS1kZXBlbmRzOgoJQCR7QUNUVUFMLVBBQ0tB R0UtREVQRU5EU30KCiMgQnVpbGQgcGFja2FnZXMgZm9yIHBvcnQgYW5kIGRlcGVuZGVuY2llcwoK cGFja2FnZS1yZWN1cnNpdmU6IHBhY2thZ2UKCUBmb3IgZGlyIGluICQkKCR7QUxMLURFUEVORFMt TElTVH0pOyBkbyBcCgkJKGNkICQkZGlyOyAke01BS0V9IHBhY2thZ2Utbm9pbnN0YWxsKTsgXAoJ ZG9uZQoKIyBTaG93IG1pc3NpbmcgZGVwZW5kZW5jaWVzCm1pc3Npbmc6CglAX29yaWdpbnM9JCQo JHtQS0dfSU5GT30gLWFvcSk7IFwKCWZvciBkaXIgaW4gJCQoJHtBTEwtREVQRU5EUy1MSVNUfSk7 IGRvIFwKCQlfb3JpZ2luPSQke2RpciMjJHtQT1JUU0RJUn0vfTsgXAoJCWlmICEgJCQoJHtFQ0hP X0NNRH0gJCR7X29yaWdpbnN9IHwgJHtHUkVQfSAtcSAkJHtfb3JpZ2lufSk7IHRoZW4gXAoJCQkk e0VDSE9fQ01EfSAkJHtfb3JpZ2lufTsgXAoJCWZpOyBcCglkb25lCgojIFNob3cgbWlzc2luZyBk ZXBlbmRlbmNpZXMgYnkgbmFtZQptaXNzaW5nLXBhY2thZ2VzOgoJQF9wYWNrYWdlcz0kJCgke1BL R19JTkZPfSAtYXEpOyBcCglmb3IgZGlyIGluICQkKCR7QUxMLURFUEVORFMtTElTVH0pOyBkbyBc CgkJX3A9JCQoY2QgJCRkaXI7ICR7TUFLRX0gLVZQS0dOQU1FKTsgXAoJCWlmICEgJCQoJHtFQ0hP X0NNRH0gJCR7X3BhY2thZ2VzfSB8ICR7R1JFUH0gLXEgJCR7X3B9KTsgdGhlbiBcCgkJCSR7RUNI T19DTUR9ICQke19wfTsgXAoJCWZpOyBcCglkb25lCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgRXZlcnl0aGluZyBhZnRl ciBoZXJlIGFyZSBpbnRlcm5hbCB0YXJnZXRzIGFuZCByZWFsbHkKIyBzaG91bGRuJ3QgYmUgdG91 Y2hlZCBieSBhbnlib2R5IGJ1dCB0aGUgcmVsZWFzZSBlbmdpbmVlcnMuCiMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgVGhp cyB0YXJnZXQgZ2VuZXJhdGVzIGFuIGluZGV4IGVudHJ5IHN1aXRhYmxlIGZvciBhZ2dyZWdhdGlv biBpbnRvCiMgYSBsYXJnZSBpbmRleC4gIEZvcm1hdCBpczoKIwojIGRpc3RyaWJ1dGlvbi1uYW1l fHBvcnQtcGF0aHxpbnN0YWxsYXRpb24tcHJlZml4fGNvbW1lbnR8IFwKIyAgZGVzY3JpcHRpb24t ZmlsZXxtYWludGFpbmVyfGNhdGVnb3JpZXN8ZXh0cmFjdC1kZXBlbmRzfCBcCiMgIHBhdGNoLWRl cGVuZHN8ZmV0Y2gtZGVwZW5kc3xidWlsZC1kZXBlbmRzfHJ1bi1kZXBlbmRzfHd3dyBzaXRlCiMK IyBJZiB0aGlzIGV2ZXIgY2hhbmdlcywgcG9ydG1nciBzaG91bGQgY29udGFjdCB0aGUgcG9ydHNu YXAgbWFpbnRhaW5lcgojIGZpcnN0IHRvIGF2b2lkIGdyYXR1aXRvdXMgYnJlYWthZ2UuCgouIGlm ICF0YXJnZXQoZGVzY3JpYmUpCl9FWFRSQUNUX0RFUEVORFM9JHtFWFRSQUNUX0RFUEVORFM6Qy9e W14gOl0rOihbXiA6XSspKDpbXiA6XSspPy9cMS86Tzp1fQpfUEFUQ0hfREVQRU5EUz0ke1BBVENI X0RFUEVORFM6Qy9eW14gOl0rOihbXiA6XSspKDpbXiA6XSspPy9cMS86Tzp1fQpfRkVUQ0hfREVQ RU5EUz0ke0ZFVENIX0RFUEVORFM6Qy9eW14gOl0rOihbXiA6XSspKDpbXiA6XSspPy9cMS86Tzp1 fQpfTElCX0RFUEVORFM9JHtMSUJfREVQRU5EUzpDL15bXiA6XSs6KFteIDpdKykoOlteIDpdKyk/ L1wxLzpPOnV9Cl9CVUlMRF9ERVBFTkRTPSR7QlVJTERfREVQRU5EUzpDL15bXiA6XSs6KFteIDpd KykoOlteIDpdKyk/L1wxLzpPOnV9ICR7X0xJQl9ERVBFTkRTfQpfUlVOX0RFUEVORFM9JHtSVU5f REVQRU5EUzpDL15bXiA6XSs6KFteIDpdKykoOlteIDpdKyk/L1wxLzpPOnV9ICR7X0xJQl9ERVBF TkRTfQouIGlmIGV4aXN0cygke0RFU0NSfSkKX0RFU0NSPSR7REVTQ1J9Ci4gZWxzZQpfREVTQ1I9 L2Rldi9udWxsCi4gZW5kaWYKCi4gIGlmIGRlZmluZWQoQlVJTERJTkdfSU5ERVgpICYmIGRlZmlu ZWQoSU5ERVhfUE9SVFMpCklOREVYX09VVD0ke0lOREVYX1RNUERJUn0vJHtJTkRFWEZJTEV9LmRl c2MuYWdncgouICBlbHNlCklOREVYX09VVD0vZGV2L3N0ZG91dAouICBlbmRpZgoKZGVzY3JpYmU6 CglAKCR7RUNIT19DTUR9IC1uICIke1BLR05BTUV9fCR7LkNVUkRJUn18JHtQUkVGSVh9fCI7IFwK CSR7RUNIT19DTUR9IC1uICR7Q09NTUVOVDpRfTsgXAoJJHtFQ0hPX0NNRH0gLW4gInwke19ERVND Un18JHtNQUlOVEFJTkVSfXwke0NBVEVHT1JJRVN9fCR7X0VYVFJBQ1RfREVQRU5EU318JHtfUEFU Q0hfREVQRU5EU318JHtfRkVUQ0hfREVQRU5EU318JHtfQlVJTERfREVQRU5EUzpPOnV9fCR7X1JV Tl9ERVBFTkRTOk86dX18IjsgXAoJd2hpbGUgcmVhZCBvbmUgdHdvIGRpc2NhcmQ7IGRvIFwKCQlj YXNlICIkJG9uZSIgaW4gXAoJCVdXVzopICAgY2FzZSAiJCR0d28iIGluIFwKCQkJaHR0cHM6Ly8q fGh0dHA6Ly8qfGZ0cDovLyopICR7RUNIT19DTUR9IC1uICIkJHR3byIgOzsgXAoJCQkqKSAke0VD SE9fQ01EfSAtbiAiaHR0cDovLyQkdHdvIiA7OyBcCgkJCWVzYWM7IFwKCQkJYnJlYWs7IFwKCQkJ OzsgXAoJCWVzYWM7IFwKCWRvbmUgPCAke0RFU0NSfTsgJHtFQ0hPX0NNRH0pID4+JHtJTkRFWF9P VVR9Ci4gZW5kaWYKCnd3dy1zaXRlOgouaWYgZXhpc3RzKCR7REVTQ1J9KQoJQCR7QVdLfSAnJCQx IH4gL15XV1c6LyB7cHJpbnQgJCQyfScgJHtERVNDUn0gfCAke0hFQUR9IC0xCi5lbHNlCglAJHtF Q0hPX0NNRH0KLmVuZGlmCgouaWYgIXRhcmdldChyZWFkbWVzKQpyZWFkbWVzOglyZWFkbWUKLmVu ZGlmCgouaWYgIXRhcmdldChyZWFkbWUpCnJlYWRtZToKCUAke1JNfSAtZiAkey5DVVJESVJ9L1JF QURNRS5odG1sCglAY2QgJHsuQ1VSRElSfSAmJiAke01BS0V9ICR7LkNVUkRJUn0vUkVBRE1FLmh0 bWwKLmVuZGlmCgokey5DVVJESVJ9L1JFQURNRS5odG1sOgoJQCR7RUNIT19NU0d9ICI9PT0+ICAg Q3JlYXRpbmcgUkVBRE1FLmh0bWwgZm9yICR7UEtHTkFNRX0iCglAJHtTRUR9IC1lICdzfCUlUE9S VCUlfCckJCgke0VDSE9fQ01EfSAkey5DVVJESVJ9IHwgXAoJCQkJCQkJICAke1NFRH0gLWUgJ3N8 LiovXChbXi9dKi9bXi9dKlwpJCR8XDF8JyknfGcnIFwKCQkJLWUgJ3N8JSVQS0clJXwke1BLR05B TUV9fGcnIFwKCQkJLWUgJ3N8JSVDT01NRU5UJSV8JyIkJCgke0VDSE9fQ01EfSAke0NPTU1FTlQ6 UX0pIid8JyBcCgkJCS1lICcvJSVDT01NRU5UJSUvZCcgXAoJCQktZSAnc3wlJURFU0NSJSV8JyIk JCgke0VDSE9fQ01EfSAke0RFU0NSfSB8IFwKCQkJCQkJCQkgJHtTRUR9IC1lICdzfCR7LkNVUkRJ Un0vfHwnKSInfCcgXAoJCQktZSAnc3wlJUVNQUlMJSV8JyIkJCgke0VDSE9fQ01EfSAiJHtNQUlO VEFJTkVSfSIgfCBcCgkJCQkJCQkJICR7U0VEfSAtZSAncy8oW14pXSopLy87cy8uKjwvLztzLz4u Ki8vJykiJ3xnJyBcCgkJCS1lICdzfCUlTUFJTlRBSU5FUiUlfCR7TUFJTlRBSU5FUn18ZycgXAoJ CQktZSAnc3wlJVdFQlNJVEUlJXwnIiQkKGNkICR7LkNVUkRJUn0gJiYgZXZhbCAke01BS0V9IHBy ZXR0eS1wcmludC13d3ctc2l0ZSkiJ3wnIFwKCQkJLWUgJ3N8JSVCVUlMRF9ERVBFTkRTJSV8JyIk JChjZCAkey5DVVJESVJ9ICYmIGV2YWwgJHtNQUtFfSBwcmV0dHktcHJpbnQtYnVpbGQtZGVwZW5k cy1saXN0KSInfCcgXAoJCQktZSAnc3wlJVJVTl9ERVBFTkRTJSV8JyIkJChjZCAkey5DVVJESVJ9 ICYmIGV2YWwgJHtNQUtFfSBwcmV0dHktcHJpbnQtcnVuLWRlcGVuZHMtbGlzdCkiJ3wnIFwKCQkJ LWUgJ3N8JSVUT1AlJXwnIiQkKCR7RUNIT19DTUR9ICR7Q0FURUdPUklFU30gfCBcCgkJCQkJCQkg ICAke1NFRH0gLWUgJ3N8IC4qfHwnIC1lICdzfFteL10qfC4ufGcnKSInLy4ufCcgXAoJCSR7VEVN UExBVEVTfS9SRUFETUUucG9ydCA+PiAkey5UQVJHRVR9CgojIFRoZSBmb2xsb3dpbmcgdHdvIHRh cmdldHMgcmVxdWlyZSBhbiB1cC10by1kYXRlIElOREVYIGluICR7UE9SVFNESVJ9CgpfUFJFVFRZ X1BSSU5UX0RFUEVORFNfTElTVD1cCglpZiBbICEgLXIgJHtJTkRFWERJUn0vJHtJTkRFWEZJTEV9 IF0gOyB0aGVuIFwKCQkke0VDSE9fTVNHfSAiJHsuVEFSR0VUfSByZXF1aXJlcyBhbiBJTkRFWCBm aWxlICgke0lOREVYRklMRX0pLiBQbGVhc2UgcnVuIG1ha2UgaW5kZXggb3IgbWFrZSBmZXRjaGlu ZGV4LiI7IFwKCWVsc2UgXAoJCXRhcmdldD0key5UQVJHRVQ6Qy9wcmV0dHktcHJpbnQtKC4qKS1k ZXBlbmRzLWxpc3QvXDEvfSA7IFwKCQlpZiBbICIkJHRhcmdldCIgPSAiYnVpbGQiIF0gOyB0aGVu IGZsZG51bT04IDsgZWxzZSBmbGRudW09OSA7IGZpOyBcCgkJJHtFQ0hPX01TR30gLW4gJ1RoaXMg cG9ydCByZXF1aXJlcyBwYWNrYWdlKHMpICInIDsgXAoJCSR7RUNIT19NU0d9IC1uIGAke0FXS30g LUZcfCAiXFwkJDEgfiAvXiR7UEtHTkFNRX0vIHtwcmludCBcXCQkJCR7ZmxkbnVtfTt9IiAke0lO REVYRElSfS8ke0lOREVYRklMRX1gIDsgXAoJCSR7RUNIT19NU0d9ICJcIiB0byAkJHRhcmdldC4i OyBcCglmaTsKCgouaWYgIXRhcmdldChwcmV0dHktcHJpbnQtYnVpbGQtZGVwZW5kcy1saXN0KQpw cmV0dHktcHJpbnQtYnVpbGQtZGVwZW5kcy1saXN0OgouaWYgZGVmaW5lZChQS0dfREVQRU5EUykg fHwgZGVmaW5lZChFWFRSQUNUX0RFUEVORFMpIHx8IGRlZmluZWQoUEFUQ0hfREVQRU5EUykgfHwg XAoJZGVmaW5lZChGRVRDSF9ERVBFTkRTKSB8fCBkZWZpbmVkKEJVSUxEX0RFUEVORFMpIHx8IGRl ZmluZWQoTElCX0RFUEVORFMpCglAJHtfUFJFVFRZX1BSSU5UX0RFUEVORFNfTElTVH0KLmVuZGlm Ci5lbmRpZgoKLmlmICF0YXJnZXQocHJldHR5LXByaW50LXJ1bi1kZXBlbmRzLWxpc3QpCnByZXR0 eS1wcmludC1ydW4tZGVwZW5kcy1saXN0OgouaWYgZGVmaW5lZChSVU5fREVQRU5EUykgfHwgZGVm aW5lZChMSUJfREVQRU5EUykKCUAke19QUkVUVFlfUFJJTlRfREVQRU5EU19MSVNUfQouZW5kaWYK LmVuZGlmCgpfU1VCX0xJU1RfVEVNUD0JJHtTVUJfTElTVDpTLyQvIWcvOlMvXi8gLWUgcyElJS86 Uy89LyUlIS99Ci5pZiAhdGFyZ2V0KGFwcGx5LXNsaXN0KQphcHBseS1zbGlzdDoKLmlmIGRlZmlu ZWQoU1VCX0ZJTEVTKQouZm9yIGZpbGUgaW4gJHtTVUJfRklMRVN9Ci5pZiAhZXhpc3RzKCR7RklM RVNESVJ9LyR7ZmlsZX0uaW4pCglAJHtFQ0hPX01TR30gIioqIE1pc3NpbmcgJHtGSUxFU0RJUn0v JHtmaWxlfS5pbiBmb3IgJHtQS0dOQU1FfS4iOyBleGl0IDEKLmVsc2UKCUAke1NFRH0gJHtfU1VC X0xJU1RfVEVNUH0gLWUgJy9eQGNvbW1lbnQgL2QnICR7RklMRVNESVJ9LyR7ZmlsZX0uaW4gPiAk e1dSS0RJUn0vJHtmaWxlfQouZW5kaWYKLmVuZGZvcgouZm9yIGkgaW4gcGtnLW1lc3NhZ2UgcGtn LWluc3RhbGwgcGtnLWRlaW5zdGFsbCBwa2ctcmVxCi5pZiAke1NVQl9GSUxFUzpNJHtpfSp9IT0i Igoke2k6Uy8tLy86dHV9PQkke1dSS0RJUn0vJHtTVUJfRklMRVM6TSR7aX0qfQouZW5kaWYKLmVu ZGZvcgouZW5kaWYKLmVuZGlmCgojIEdlbmVyYXRlIHBhY2tpbmcgbGlzdC4gIEFsc28gdGVzdHMg dG8gbWFrZSBzdXJlIGFsbCByZXF1aXJlZCBwYWNrYWdlCiMgZmlsZXMgZXhpc3QuCgouaWYgIXRh cmdldChnZW5lcmF0ZS1wbGlzdCkKZ2VuZXJhdGUtcGxpc3Q6ICR7V1JLRElSfQoJQCR7RUNIT19N U0d9ICI9PT0+ICAgR2VuZXJhdGluZyB0ZW1wb3JhcnkgcGFja2luZyBsaXN0IgoJQCR7TUtESVJ9 IGAke0RJUk5BTUV9ICR7VE1QUExJU1R9YAoJQGlmIFsgISAtZiAke0RFU0NSfSBdOyB0aGVuICR7 RUNIT19NU0d9ICIqKiBNaXNzaW5nIHBrZy1kZXNjciBmb3IgJHtQS0dOQU1FfS4iOyBleGl0IDE7 IGZpCglAPiR7VE1QUExJU1R9CglAZm9yIGZpbGUgaW4gJHtQTElTVF9GSUxFU307IGRvIFwKCQkk e0VDSE9fQ01EfSAkJHtmaWxlfSB8ICR7U0VEfSAke1BMSVNUX1NVQjpTLyQvIWcvOlMvXi8gLWUg cyElJS86Uy89LyUlIS99ID4+ICR7VE1QUExJU1R9OyBcCglkb25lCglAaWYgWyAtZiAke1BMSVNU fSBdOyB0aGVuIFwKCQkke1NFRH0gJHtQTElTVF9TVUI6Uy8kLyFnLzpTL14vIC1lIHMhJSUvOlMv PS8lJSEvfSAke1BMSVNUfSA+PiAke1RNUFBMSVNUfTsgXAoJZmkKCiMgS2VlcCBQTElTVF9ESVJT VFJZIGFzIGNvbXBhdGliaWxpdHkKLmZvciBkaXIgaW4gJHtQTElTVF9ESVJTfSAke1BMSVNUX0RJ UlNUUll9CglAJHtFQ0hPX0NNRH0gJHtkaXJ9IHwgJHtTRUR9ICR7UExJU1RfU1VCOlMvJC8hZy86 Uy9eLyAtZSBzISUlLzpTLz0vJSUhL30gLWUgJ3MsXixAZGlyICwnID4+ICR7VE1QUExJU1R9Ci5l bmRmb3IKCi5pZiBkZWZpbmVkKFVTRV9MSU5VWF9QUkVGSVgpCi5pZiBkZWZpbmVkKFVTRV9MRENP TkZJRykKCUAke0VDSE9fQ01EfSAiQGV4ZWMgJHtMRENPTkZJR19DTUR9IiA+PiAke1RNUFBMSVNU fQoJQCR7RUNIT19DTUR9ICJAdW5leGVjICR7TERDT05GSUdfQ01EfSIgPj4gJHtUTVBQTElTVH0K LmVuZGlmCi5lbHNlCi5pZiBkZWZpbmVkKFVTRV9MRENPTkZJRykKLmlmICFkZWZpbmVkKElOU1RB TExfQVNfVVNFUikKCUAke0VDSE9fQ01EfSAiQGV4ZWMgJHtMRENPTkZJR30gLW0gJHtVU0VfTERD T05GSUd9IiA+PiAke1RNUFBMSVNUfQoJQCR7RUNIT19DTUR9ICJAdW5leGVjICR7TERDT05GSUd9 IC1SIiA+PiAke1RNUFBMSVNUfQouZWxzZQoJQCR7RUNIT19DTUR9ICJAZXhlYyAke0xEQ09ORklH fSAtbSAke1VTRV9MRENPTkZJR30gfHwgJHtUUlVFfSIgPj4gJHtUTVBQTElTVH0KCUAke0VDSE9f Q01EfSAiQHVuZXhlYyAke0xEQ09ORklHfSAtUiB8fCAke1RSVUV9IiA+PiAke1RNUFBMSVNUfQou ZW5kaWYKLmVuZGlmCi5pZiBkZWZpbmVkKFVTRV9MRENPTkZJRzMyKQouaWYgIWRlZmluZWQoSU5T VEFMTF9BU19VU0VSKQoJQCR7RUNIT19DTUR9ICJAZXhlYyAke0xEQ09ORklHfSAtMzIgLW0gJHtV U0VfTERDT05GSUczMn0iID4+ICR7VE1QUExJU1R9CglAJHtFQ0hPX0NNRH0gIkB1bmV4ZWMgJHtM RENPTkZJR30gLTMyIC1SIiA+PiAke1RNUFBMSVNUfQouZWxzZQoJQCR7RUNIT19DTUR9ICJAZXhl YyAke0xEQ09ORklHfSAtMzIgLW0gJHtVU0VfTERDT05GSUczMn0gfHwgJHtUUlVFfSIgPj4gJHtU TVBQTElTVH0KCUAke0VDSE9fQ01EfSAiQHVuZXhlYyAke0xEQ09ORklHfSAtMzIgLVIgfHwgJHtU UlVFfSIgPj4gJHtUTVBQTElTVH0KLmVuZGlmCi5lbmRpZgouZW5kaWYKLmVuZGlmCgoke1RNUFBM SVNUfToKCUBjZCAkey5DVVJESVJ9ICYmICR7TUFLRX0gZ2VuZXJhdGUtcGxpc3QKCiR7VE1QUExJ U1RfU09SVH06ICR7VE1QUExJU1R9CglAJHtTT1JUfSAtdSAke1RNUFBMSVNUfSA+JHtUTVBQTElT VF9TT1JUfQoKLmZvciBfdHlwZSBpbiBFWEFNUExFUyBET0NTCi5pZiAhdGFyZ2V0KGFkZC1wbGlz dC0ke190eXBlOnRsfSkKLmlmIGRlZmluZWQoUE9SVCR7X3R5cGV9KSAmJiAhZGVmaW5lZChOT1BP UlQke190eXBlfSkKYWRkLXBsaXN0LSR7X3R5cGU6dGx9OgouZm9yIHggaW4gJHtQT1JUJHtfdHlw ZX19CglAaWYgJHtFQ0hPX0NNRH0gIiR7eH0ifCAke0FXS30gJyQkMSB+IC8oXCp8XHx8XFt8XF18 XD98XHt8XH18XCQkKS8geyBleGl0IDF9Oyc7IHRoZW4gXAoJCWlmIFsgISAtZSAke1NUQUdFRElS fSR7JHtfdHlwZX1ESVJ9LyR7eH0gXTsgdGhlbiBcCgkJJHtFQ0hPX0NNRH0gJHske190eXBlfURJ Un0vJHt4fSA+PiAke1RNUFBMSVNUfTsgXAoJZmk7ZmkKLmVuZGZvcgoJQCR7RklORH0gLVAgJHtQ T1JUJHtfdHlwZX06Uy9eLyR7U1RBR0VESVJ9JHske190eXBlfURJUn1cLy99ICEgLXR5cGUgZCAy Pi9kZXYvbnVsbCB8IFwKCQkke1NFRH0gLW5lICdzLF4ke1NUQUdFRElSfSwscCcgPj4gJHtUTVBQ TElTVH0KLmVuZGlmCi5lbmRpZgouZW5kZm9yCgouaWYgIXRhcmdldChhZGQtcGxpc3QtZGF0YSkK LmlmIGRlZmluZWQoUE9SVERBVEEpCmFkZC1wbGlzdC1kYXRhOgouZm9yIHggaW4gJHtQT1JUREFU QX0KCUBpZiAke0VDSE9fQ01EfSAiJHt4fSJ8ICR7QVdLfSAnJCQxIH4gLyhcKnxcfHxcW3xcXXxc P3xce3xcfXxcJCQpLyB7IGV4aXQgMX07JzsgdGhlbiBcCgkJaWYgWyAhIC1lICR7U1RBR0VESVJ9 JHtEQVRBRElSfS8ke3h9IF07IHRoZW4gXAoJCSR7RUNIT19DTUR9ICR7REFUQURJUn0vJHt4fSA+ PiAke1RNUFBMSVNUfTsgXAoJZmk7ZmkKLmVuZGZvcgoJQCR7RklORH0gLVAgJHtQT1JUREFUQTpT L14vJHtTVEFHRURJUn0ke0RBVEFESVJ9XC8vfSAhIC10eXBlIGQgMj4vZGV2L251bGwgfCBcCgkJ JHtTRUR9IC1uZSAncyxeJHtTVEFHRURJUn0sLHAnID4+ICR7VE1QUExJU1R9Ci5lbmRpZgouZW5k aWYKCi5pZiAhdGFyZ2V0KGFkZC1wbGlzdC1pbmZvKQouaWYgZGVmaW5lZChJTkZPKQphZGQtcGxp c3QtaW5mbzoKLmZvciBpIGluICR7SU5GT30KCUAke0xTfSAke1NUQUdFRElSfSR7UFJFRklYfS8k e0lORk9fUEFUSH0vJGkuaW5mbyogfCAke1NFRH0gLWUgczoke1NUQUdFRElSfTpAaW5mb1wgOmcg Pj4gJHtUTVBQTElTVH0KLmVuZGZvcgouZW5kaWYKLmVuZGlmCgojIElmIHdlJ3JlIGluc3RhbGxp bmcgaW50byBhIG5vbi1zdGFuZGFyZCBQUkVGSVgsIHdlIG5lZWQgdG8gcmVtb3ZlIHRoYXQgZGly ZWN0b3J5IGF0CiMgZGVpbnN0YWxsLXRpbWUKLmlmICF0YXJnZXQoYWRkLXBsaXN0LXBvc3QpCi5p ZiAoJHtQUkVGSVh9ICE9ICR7TE9DQUxCQVNFfSAmJiAke1BSRUZJWH0gIT0gJHtMSU5VWEJBU0V9 ICYmIFwKICAgICR7UFJFRklYfSAhPSAiL3VzciIgJiYgIWRlZmluZWQoTk9fUFJFRklYX1JNRElS KSkKYWRkLXBsaXN0LXBvc3Q6CglAJHtFQ0hPX0NNRH0gIkBkaXIgJHtQUkVGSVh9IiA+PiAke1RN UFBMSVNUfQouZW5kaWYKLmVuZGlmCgouaWYgIXRhcmdldChpbnN0YWxsLXJjLXNjcmlwdCkKLmlm IGRlZmluZWQoVVNFX1JDX1NVQlIpICYmICR7VVNFX1JDX1NVQlI6dHV9ICE9ICJZRVMiCmluc3Rh bGwtcmMtc2NyaXB0OgoJQCR7RUNIT19NU0d9ICI9PT0+IFN0YWdpbmcgcmMuZCBzdGFydHVwIHNj cmlwdChzKSIKCUBmb3IgaSBpbiAke1VTRV9SQ19TVUJSfTsgZG8gXAoJCV9wcmVmaXg9JHtQUkVG SVh9OyBcCgkJWyAiJHtQUkVGSVh9IiA9ICIvdXNyIiBdICYmIF9wcmVmaXg9IiIgOyBcCgkJJHtJ TlNUQUxMX1NDUklQVH0gJHtXUktESVJ9LyQke2l9ICR7U1RBR0VESVJ9JCR7X3ByZWZpeH0vZXRj L3JjLmQvJCR7aSUuc2h9OyBcCgkJJHtFQ0hPX0NNRH0gIiQke19wcmVmaXh9L2V0Yy9yYy5kLyQk e2klLnNofSIgPj4gJHtUTVBQTElTVH07IFwKCWRvbmUKLmVuZGlmCi5lbmRpZgoKLmlmICF0YXJn ZXQoY2hlY2stbWFuKQpjaGVjay1tYW46IHN0YWdlCglAJHtFQ0hPX01TR30gIj09PT0+IENoZWNr aW5nIG1hbiBwYWdlcyAoY2hlY2stbWFuKSIKCUBtZGlycz0gOyBcCglmb3IgZGlyIGluICR7TUFO RElSUzpTL14vJHtTVEFHRURJUn0vfSA7IGRvIFwKCQlbIC1kICQkZGlyIF0gJiYgbWRpcnM9IiQk bWRpcnMgJCRkaXIiIDtcCglkb25lIDsgXAoJZXJyPTAgOyBcCglmb3IgZGlyIGluICQkbWRpcnM7 IGRvIFwKCQlmb3IgZiBpbiAkJChmaW5kICQkZGlyIC1uYW1lICIqLmd6Iik7IGRvIFwKCQkJJHtF Q0hPX0NNRH0gIj09PT4gQ2hlY2tpbmcgJCR7ZiMjKi99IiA7IFwKCQkJZ3VuemlwIC1jICQkZiB8 IG1hbmRvYyAtVGxpbnQgLVdlcnJvciAmJiBjb250aW51ZSA7IFwKCQkJZXJyPTEgOyBcCgkJZG9u ZSA7IFwKCWRvbmUgOyBcCglleGl0ICQkZXJyCi5lbmRpZgoKIyBDb21wcmVzcyBhbGwgbWFucGFn ZSBub3QgYWxyZWFkeSBjb21wcmVzc2VkIHdoaWNoIGFyZSBub3QgaGFyZGxpbmtzCiMgRmluZCBh bGwgbWFucGFnZXMgd2hpY2ggYXJlIG5vdCBjb21wcmVzc2VkIGFuZCBhcmUgaGFkbGlua3MsIGFu ZCBvbmx5IGdldCB0aGUgbGlzdCBvZiBpbm9kZXMgY29uY2VybmVkLCBmb3IgZWFjaCBvZiB0aGVt IGNvbXByZXNzIHRoZSBmaXJzdCBvbmUgZm91bmQgYW5kIHJlY3JlYXRlIHRoZSBoYXJkbGlua3Mg Zm9yIHRoZSBvdGhlcnMKIyBGaXhlcyBhbGwgZGVhZCBzeW1saW5rcyBsZWZ0IGJ5IHRoZSBwcmV2 aW91cyByb3VuZAouaWYgIXRhcmdldChjb21wcmVzcy1tYW4pCmNvbXByZXNzLW1hbjoKCUAke0VD SE9fTVNHfSAiPT09PT4gQ29tcHJlc3NpbmcgbWFuIHBhZ2VzIChjb21wcmVzcy1tYW4pIgoJQG1k aXJzPSA7IFwKCWZvciBkaXIgaW4gJHtNQU5ESVJTOlMvXi8ke1NUQUdFRElSfS99IDsgZG8gXAoJ CVsgLWQgJCRkaXIgXSAmJiBtZGlycz0iJCRtZGlycyAkJGRpciIgO1wKCWRvbmUgOyBcCglmb3Ig ZGlyIGluICQkbWRpcnM7IGRvIFwKCQkke0ZJTkR9ICQkZGlyIC10eXBlIGYgXCEgLW5hbWUgIiou Z3oiIC1saW5rcyAxIC1leGVjICR7R1pJUF9DTUR9IHt9IFw7IDsgXAoJCSR7RklORH0gJCRkaXIg LXR5cGUgZiBcISAtbmFtZSAiKi5neiIgXCEgLWxpbmtzIDEgLWV4ZWMgJHtTVEFUfSAtZiAnJWkn IHt9IFw7IHwgXAoJCQkke1NPUlR9IC11IHwgd2hpbGUgcmVhZCBpbm9kZSA7IGRvIFwKCQkJCXVu c2V0IHJlZiA7IFwKCQkJCWZvciBmIGluICQkKCR7RklORH0gJCRkaXIgLXR5cGUgZiAtaW51bSAk JHtpbm9kZX0gLXByaW50KTsgZG8gXAoJCQkJCWlmIFsgLXogJCRyZWYgXTsgdGhlbiBcCgkJCQkJ CXJlZj0kJHtmfS5neiA7IFwKCQkJCQkJJHtHWklQX0NNRH0gJCR7Zn0gOyBcCgkJCQkJCWNvbnRp bnVlIDsgXAoJCQkJCWZpIDsgXAoJCQkJCSR7Uk19IC1mICQke2Z9IDsgXAoJCQkJCShjZCAkJHtm JS8qfTsgJHtMTn0gLWYgJCR7cmVmIyMqL30gJCR7ZiMjKi99Lmd6KSA7IFwKCQkJCWRvbmUgOyBc CgkJCWRvbmUgOyBcCgkJJHtGSU5EfSAkJGRpciAtdHlwZSBsIFwhIC1uYW1lICIqLmd6IiB8IHdo aWxlIHJlYWQgbGluayA7IGRvIFwKCQkJCSR7TE59IC1zZiAkJChyZWFkbGluayAkJGxpbmspLmd6 ICQkbGluay5neiA7XAoJCQkJJHtSTX0gLWYgJCRsaW5rIDsgXAoJCWRvbmU7IFwKCWRvbmUKLmVu ZGlmCgouaWYgIXRhcmdldChzdGFnZS1kaXIpCnN0YWdlLWRpcjoKCUAke01LRElSfSAke1NUQUdF RElSfSR7UFJFRklYfQouaWYgIWRlZmluZWQoTk9fTVRSRUUpCglAJHtNVFJFRV9DTUR9ICR7TVRS RUVfQVJHU30gJHtTVEFHRURJUn0ke1BSRUZJWH0gPiAvZGV2L251bGwKLmVuZGlmCi5lbmRpZgoK LmlmICF0YXJnZXQobWFrZXBsaXN0KQptYWtlcGxpc3Q6IHN0YWdlCglAJHtTRVRFTlZ9ICR7Q09f RU5WfSAke1NIfSAke1NDUklQVFNESVJ9L2NoZWNrLXN0YWdlZGlyLnNoIG1ha2VwbGlzdAouZW5k aWYKCi5pZiAhdGFyZ2V0KGNoZWNrLXBsaXN0KQpjaGVjay1wbGlzdDogc3RhZ2UKCUAke0VDSE9f TVNHfSAiPT09PT4gQ2hlY2tpbmcgZm9yIHBrZy1wbGlzdCBpc3N1ZXMgKGNoZWNrLXBsaXN0KSIK CUAke1NFVEVOVn0gJHtDT19FTlZ9ICR7U0h9ICR7U0NSSVBUU0RJUn0vY2hlY2stc3RhZ2VkaXIu c2ggY2hlY2twbGlzdAoJQCR7RUNIT19NU0d9ICI9PT0+IE5vIHBrZy1wbGlzdCBpc3N1ZXMgZm91 bmQgKGNoZWNrLXBsaXN0KSIKLmVuZGlmCgouaWYgIXRhcmdldChjaGVjay1vcnBoYW5zKQpjaGVj ay1vcnBoYW5zOiBjaGVjay1wbGlzdAouZW5kaWYKCi5pZiAhdGFyZ2V0KHN0YWdlLXFhKQpzdGFn ZS1xYToKCUAke0VDSE9fTVNHfSAiPT09PT4gUnVubmluZyBRL0EgdGVzdHMgKHN0YWdlLXFhKSIK CUAke1NFVEVOVn0gJHtRQV9FTlZ9ICR7U0h9ICR7U0NSSVBUU0RJUn0vcWEuc2gKLmVuZGlmCgoj IEZha2UgaW5zdGFsbGF0aW9uIG9mIHBhY2thZ2Ugc28gdGhhdCB1c2VyIGNhbiBwa2cgZGVsZXRl IGl0IGxhdGVyLgouaWYgIXRhcmdldChmYWtlLXBrZykKU1RBR0VfQVJHUz0JCS1pICR7U1RBR0VE SVJ9CgouaWYgIWRlZmluZWQoTk9fUEtHX1JFR0lTVEVSKQpmYWtlLXBrZzogY3JlYXRlLW1hbmlm ZXN0Ci5pZiBkZWZpbmVkKElOU1RBTExTX0RFUEVORFMpCglAJHtFQ0hPX01TR30gIj09PT4gICBS ZWdpc3RlcmluZyBpbnN0YWxsYXRpb24gZm9yICR7UEtHTkFNRX0gYXMgYXV0b21hdGljIgouZWxz ZQoJQCR7RUNIT19NU0d9ICI9PT0+ICAgUmVnaXN0ZXJpbmcgaW5zdGFsbGF0aW9uIGZvciAke1BL R05BTUV9IgouZW5kaWYKLmlmIGRlZmluZWQoSU5TVEFMTFNfREVQRU5EUykKCUAke1NFVEVOVn0g JHtQS0dfRU5WfSBGT1JDRV9QT1NUPSIke19GT1JDRV9QT1NUX1BBVFRFUk5TfSIgJHtQS0dfQ01E fSAtZCAke1NUQUdFX0FSR1N9IC1tICR7TUVUQURJUn0gLWYgJHtUTVBQTElTVH0KLmVsc2UKCUAk e1NFVEVOVn0gJHtQS0dfRU5WfSBGT1JDRV9QT1NUPSIke19GT1JDRV9QT1NUX1BBVFRFUk5TfSIg JHtQS0dfQ01EfSAke1NUQUdFX0FSR1N9IC1tICR7TUVUQURJUn0gLWYgJHtUTVBQTElTVH0KLmVu ZGlmCglAJHtSTX0gLXJmICR7TUVUQURJUn0KLmVuZGlmCi5lbmRpZgoKIyBEZXBlbmQgaXMgZ2Vu ZXJhbGx5IG1lYW5pbmdsZXNzIGZvciBhcmJpdHJhcnkgcG9ydHMsIGJ1dCBpZiBzb21lb25lIHdh bnRzCiMgb25lIHRoZXkgY2FuIG92ZXJyaWRlIHRoaXMuICBUaGlzIGlzIGp1c3QgdG8gY2F0Y2gg cGVvcGxlIHdobyd2ZSBnb3R0ZW4gaW50bwojIHRoZSBoYWJpdCBvZiB0eXBpbmcgYG1ha2UgZGVw ZW5kIGFsbCBpbnN0YWxsJyBhcyBhIG1hdHRlciBvZiBjb3Vyc2UuCiMgU2FtZSBnb2VzIGZvciB0 YWdzCi5mb3IgX3QgaW4gZGVwZW5kIHRhZ3MKLmlmICF0YXJnZXQoJHtfdH0pCiR7X3R9OgouZW5k aWYKLmVuZGZvcgoKLmlmICFkZWZpbmVkKE5PUFJFQ0lPVVNNQUtFVkFSUykKIyBUaGVzZSB3b24n dCBjaGFuZ2UsIHNvIHdlIGNhbiBwYXNzIHRoZW0gdGhyb3VnaCB0aGUgZW52aXJvbm1lbnQKLk1B S0VGTEFHUzogXAoJQVJDSD0iJHtBUkNIOlMvIi8iJyInIi9nOlMvXCQvXCRcJC9nOlMvXFwvXFxc XC9nfSIgXAoJT1BTWVM9IiR7T1BTWVM6Uy8iLyInIiciL2c6Uy9cJC9cJFwkL2c6Uy9cXC9cXFxc L2d9IiBcCglPU1JFTD0iJHtPU1JFTDpTLyIvIiciJyIvZzpTL1wkL1wkXCQvZzpTL1xcL1xcXFwv Z30iIFwKCU9TVkVSU0lPTj0iJHtPU1ZFUlNJT046Uy8iLyInIiciL2c6Uy9cJC9cJFwkL2c6Uy9c XC9cXFxcL2d9IiBcCglTWVNURU1WRVJTSU9OPSIke1NZU1RFTVZFUlNJT046Uy8iLyInIiciL2c6 Uy9cJC9cJFwkL2c6Uy9cXC9cXFxcL2d9IgouZW5kaWYKCi5pZiAhdGFyZ2V0KHByZS1jaGVjay1j b25maWcpCnByZS1jaGVjay1jb25maWc6Ci5mb3Igc2luZ2xlIGluICR7T1BUSU9OU19TSU5HTEV9 Ci4gIGZvciBvcHQgaW4gJHtPUFRJT05TX1NJTkdMRV8ke3NpbmdsZX19Ci4gICAgaWYgZW1wdHko QUxMX09QVElPTlM6TSR7c2luZ2xlfSkgfHwgIWVtcHR5KFBPUlRfT1BUSU9OUzpNJHtzaW5nbGV9 KQouICAgICAgaWYgIWVtcHR5KFBPUlRfT1BUSU9OUzpNJHtvcHR9KQouICAgICAgICBpZiBkZWZp bmVkKE9QVEZPVU5EKQpPUFRJT05TX1dST05HX1NJTkdMRSs9CSR7c2luZ2xlfQouICAgICAgICBl bHNlCk9QVEZPVU5EPQl0cnVlCi4gICAgICAgIGVuZGlmCi4gICAgICBlbmRpZgouICAgIGVsc2UK IyBpZiBjb25kaXRpb25hbCBhbmQgaWYgdGhlIGNvbmRpdGlvbiBpcyB1bmNoZWNrZWQsIHJlbW92 ZSBvcHQgZnJvbSB0aGUgbGlzdCBvZgojIHNldCBvcHRpb25zClBPUlRfT1BUSU9OUzo9CSR7UE9S VF9PUFRJT05TOk4ke29wdH19Ck9QVE5PQ0hFQ0s9CXRydWUKLiAgICBlbmRpZgouICBlbmRmb3IK LiAgaWYgIWRlZmluZWQoT1BURk9VTkQpICYmICFkZWZpbmVkKE9QVE5PQ0hFQ0spCk9QVElPTlNf V1JPTkdfU0lOR0xFKz0JJHtzaW5nbGV9Ci4gIGVuZGlmCi4gIHVuZGVmIE9QVEZPVU5ECi4gIHVu ZGVmIE9QVE5PQ0hFQ0sKLmVuZGZvcgoudW5kZWYgc2luZ2xlCgouZm9yIHJhZGlvIGluICR7T1BU SU9OU19SQURJT30KLiAgZm9yIG9wdCBpbiAke09QVElPTlNfUkFESU9fJHtyYWRpb319Ci4gICAg aWYgIWVtcHR5KFBPUlRfT1BUSU9OUzpNJHtvcHR9KQouICAgICAgaWYgZGVmaW5lZChPUFRGT1VO RCkKT1BUSU9OU19XUk9OR19SQURJTys9CSR7cmFkaW99Ci4gICAgICBlbHNlCk9QVEZPVU5EPQl0 cnVlCi4gICAgICBlbmRpZgouICAgIGVuZGlmCi4gIGVuZGZvcgouICB1bmRlZiBPUFRGT1VORAou ZW5kZm9yCgouZm9yIG11bHRpIGluICR7T1BUSU9OU19NVUxUSX0KLiAgZm9yIG9wdCBpbiAke09Q VElPTlNfTVVMVElfJHttdWx0aX19Ci4gICAgaWYgZW1wdHkoQUxMX09QVElPTlM6TSR7bXVsdGl9 KSB8fCAhZW1wdHkoUE9SVF9PUFRJT05TOk0ke211bHRpfSkKLiAgICAgIGlmICFlbXB0eShQT1JU X09QVElPTlM6TSR7b3B0fSkKT1BURk9VTkQ9CXRydWUKLiAgICAgIGVuZGlmCi4gICAgZWxzZQoj IGlmIGNvbmRpdGlvbmFsIGFuZCBpZiB0aGUgY29uZGl0aW9uIGlzIHVuY2hlY2tlZCwgcmVtb3Zl IG9wdCBmcm9tIHRoZSBsaXN0IG9mCiMgc2V0IG9wdGlvbnMKUE9SVF9PUFRJT05TOj0JJHtQT1JU X09QVElPTlM6TiR7b3B0fX0KT1BUTk9DSEVDSz0JdHJ1ZQouICAgIGVuZGlmCi4gIGVuZGZvcgou ICBpZiAhZGVmaW5lZChPUFRGT1VORCkgJiYgIWRlZmluZWQoT1BUTk9DSEVDSykKT1BUSU9OU19X Uk9OR19NVUxUSSs9CSR7bXVsdGl9Ci4gIGVuZGlmCi4gIHVuZGVmIE9QVEZPVU5ECi4gIHVuZGVm IE9QVE5PQ0hFQ0sKLmVuZGZvcgoudW5kZWYgbXVsdGkKLnVuZGVmIG9wdAouZW5kaWYgI3ByZS1j aGVjay1jb25maWcKCi5pZiAhdGFyZ2V0KF9jaGVjay1jb25maWcpCl9jaGVjay1jb25maWc6IHBy ZS1jaGVjay1jb25maWcKLmZvciBtdWx0aSBpbiAke09QVElPTlNfV1JPTkdfTVVMVEl9CglAJHtF Q0hPX01TR30gIj09PT0+IFlvdSBtdXN0IGNoZWNrIGF0IGxlYXN0IG9uZSBvcHRpb24gaW4gdGhl ICR7bXVsdGl9IG11bHRpIgouZW5kZm9yCi5mb3Igc2luZ2xlIGluICR7T1BUSU9OU19XUk9OR19T SU5HTEV9CglAJHtFQ0hPX01TR30gIj09PT0+IFlvdSBtdXN0IHNlbGVjdCBvbmUgYW5kIG9ubHkg b25lIG9wdGlvbiBmcm9tIHRoZSAke3NpbmdsZX0gc2luZ2xlIgouZW5kZm9yCi5mb3IgcmFkaW8g aW4gJHtPUFRJT05TX1dST05HX1JBRElPfQoJQCR7RUNIT19NU0d9ICI9PT09PiBZb3UgY2Fubm90 IHNlbGVjdCBtdWx0aXBsZSBvcHRpb25zIGZyb20gdGhlICR7cmFkaW99IHJhZGlvIgouZW5kZm9y Ci5pZiAhZW1wdHkoT1BUSU9OU19XUk9OR19NVUxUSSkgfHwgIWVtcHR5KE9QVElPTlNfV1JPTkdf U0lOR0xFKSB8fCAhZW1wdHkoT1BUSU9OU19XUk9OR19SQURJTykKX0NIRUNLX0NPTkZJR19FUlJP Uj0JdHJ1ZQouZW5kaWYKLmVuZGlmICMgX2NoZWNrLWNvbmZpZwoKLmlmICF0YXJnZXQoY2hlY2st Y29uZmlnKQpjaGVjay1jb25maWc6IF9jaGVjay1jb25maWcKLmlmICFlbXB0eShfQ0hFQ0tfQ09O RklHX0VSUk9SKQoJQCR7RkFMU0V9Ci5lbmRpZgouZW5kaWYgIyBjaGVjay1jb25maWcKCi5pZiAh dGFyZ2V0KHNhbml0eS1jb25maWcpCnNhbml0eS1jb25maWc6IF9jaGVjay1jb25maWcKLmlmICFl bXB0eShfQ0hFQ0tfQ09ORklHX0VSUk9SKQoJQGVjaG8gLW4gIkNvbmZpZyBpcyBpbnZhbGlkLiBS ZS1lZGl0PyBbWS9uXSAiOyBcCglyZWFkIGFuc3dlcjsgXAoJY2FzZSAkJGFuc3dlciBpbiBcCglb Tm5dfFtObl1bT29dKSBcCgkJZXhpdCAwOyBcCgllc2FjOyBcCgljZCAkey5DVVJESVJ9ICYmICR7 TUFLRX0gY29uZmlnCi5lbmRpZgouZW5kaWYgIyBzYW5pdHktY29uZmlnCgouaWYgIXRhcmdldChw cmUtY29uZmlnKQpwcmUtY29uZmlnOgpENFBfRU5WPQlQS0dOQU1FPSIke1BLR05BTUV9IiBcCgkJ UE9SVF9PUFRJT05TPSIke1BPUlRfT1BUSU9OU30iIFwKCQlBTExfT1BUSU9OUz0iJHtBTExfT1BU SU9OU30iIFwKCQlPUFRJT05TX01VTFRJPSIke09QVElPTlNfTVVMVEl9IiBcCgkJT1BUSU9OU19T SU5HTEU9IiR7T1BUSU9OU19TSU5HTEV9IiBcCgkJT1BUSU9OU19SQURJTz0iJHtPUFRJT05TX1JB RElPfSIgXAoJCU9QVElPTlNfR1JPVVA9IiR7T1BUSU9OU19HUk9VUH0iIFwKCQlORVdfT1BUSU9O Uz0iJHtORVdfT1BUSU9OU30iIFwKCQlESUFMT0c0UE9SVFM9IiR7RElBTE9HNFBPUlRTfSIgXAoJ CVBSRUZJWD0iJHtQUkVGSVh9IiBcCgkJTE9DQUxCQVNFPSIke0xPQ0FMQkFTRX0iIFwKCQlQT1JU U0RJUj0iJHtQT1JUU0RJUn0iIFwKCQlNQUtFPSIke01BS0V9IiBcCgkJRDRQSEVJR0hUPSIke0Q0 UEhFSUdIVH0iIFwKCQlENFBXSURUSD0iJHtENFBXSURUSH0iIFwKCQlENFBGVUxMU0NSRUVOPSIk e0Q0UEZVTExTQ1JFRU59IgouaWYgZXhpc3RzKCR7UEtHSEVMUH0pCkQ0UF9FTlYrPQlQS0dIRUxQ PSIke1BLR0hFTFB9IgouZW5kaWYKLmZvciBvcHQgaW4gJHtBTExfT1BUSU9OU30KRDRQX0VOVis9 CSAke29wdH1fREVTQz0iIiR7JHtvcHR9X0RFU0M6UX0iIgouZW5kZm9yCi5mb3Igb3R5cGUgaW4g TVVMVEkgR1JPVVAgU0lOR0xFIFJBRElPCi4gIGZvciBtIGluICR7T1BUSU9OU18ke290eXBlfX0K RDRQX0VOVis9CU9QVElPTlNfJHtvdHlwZX1fJHttfT0iJHtPUFRJT05TXyR7b3R5cGV9XyR7bX19 IiBcCgkJJHttfV9ERVNDPSIiJHske219X0RFU0M6UX0iIgouICAgIGZvciBvcHQgaW4gJHtPUFRJ T05TXyR7b3R5cGV9XyR7bX19CkQ0UF9FTlYrPQkgJHtvcHR9X0RFU0M9IiIkeyR7b3B0fV9ERVND OlF9IiIKLiAgICBlbmRmb3IKLiAgZW5kZm9yCi5lbmRmb3IKLnVuZGVmIG0KLnVuZGVmIG90eXBl Ci51bmRlZiBvcHQKLmVuZGlmICMgcHJlLWNvbmZpZwoKLmlmICF0YXJnZXQoZG8tY29uZmlnKQpk by1jb25maWc6Ci5pZiBlbXB0eShBTExfT1BUSU9OUykgJiYgZW1wdHkoT1BUSU9OU19TSU5HTEUp ICYmIGVtcHR5KE9QVElPTlNfTVVMVEkpICYmIGVtcHR5KE9QVElPTlNfUkFESU8pICYmIGVtcHR5 KE9QVElPTlNfR1JPVVApCglAJHtFQ0hPX01TR30gIj09PT4gTm8gb3B0aW9ucyB0byBjb25maWd1 cmUiCi5lbHNlCglAb3B0aW9uc2Rpcj0ke09QVElPTlNfRklMRTpIfTsgXAoJb2xkb3B0aW9uc2Rp cj0ke09QVElPTlNGSUxFOkh9OyBcCglpZiBbICR7VUlEfSAhPSAwIC1hIC16ICIke0lOU1RBTExf QVNfVVNFUn0iIC1hICEgLXcgIiR7UE9SVF9EQkRJUn0iIF0gOyB0aGVuIFwKCQkke0VDSE9fTVNH fSAiPT09PiAgU3dpdGNoaW5nIHRvIHJvb3QgY3JlZGVudGlhbHMgdG8gY3JlYXRlICQke29wdGlv bnNkaXJ9IjsgXAoJCSgke1NVX0NNRH0gIiR7U0h9IC1jIFwiaWYgWyAtZCAkJHtvbGRvcHRpb25z ZGlyfSAtYSAhIC1kICQke29wdGlvbnNkaXJ9IF07IHRoZW4gJHtNVn0gJCR7b2xkb3B0aW9uc2Rp cn0gJCR7b3B0aW9uc2Rpcn07IGVsaWYgWyAtZCAkJHtvbGRvcHRpb25zZGlyfSAtYSAtZCAkJHtv cHRpb25zZGlyfSBdOyB0aGVuICR7Uk19IC1yZiAkJHtvbGRvcHRpb25zZGlyfSA7IGZpIDsgJHtN S0RJUn0gJCR7b3B0aW9uc2Rpcn0gMj4gL2Rldi9udWxsXCIiKSB8fCBcCgkJCSgke0VDSE9fTVNH fSAiPT09PiBDYW5ub3QgY3JlYXRlICQke29wdGlvbnNkaXJ9LCBjaGVjayBwZXJtaXNzaW9ucyI7 IGV4aXQgMSk7IFwKCQkke0VDSE9fTVNHfSAiPT09PiAgUmV0dXJuaW5nIHRvIHVzZXIgY3JlZGVu dGlhbHMiIDsgXAoJZWxzZSBcCglpZiBbIC1kICQke29sZG9wdGlvbnNkaXJ9IC1hICEgLWQgJCR7 b3B0aW9uc2Rpcn0gXTsgdGhlbiBcCgkJJHtNVn0gJCR7b2xkb3B0aW9uc2Rpcn0gJCR7b3B0aW9u c2Rpcn07IFwKCWVsaWYgWyAtZCAkJHtvbGRvcHRpb25zZGlyfSAtYSAtZCAkJHtvcHRpb25zZGly fSBdOyB0aGVuIFwKCQkke1JNfSAtcmYgJCR7b2xkb3B0aW9uc2Rpcn0gOyBcCglmaSA7IFwKCSR7 TUtESVJ9ICQke29wdGlvbnNkaXJ9IDI+IC9kZXYvbnVsbCB8fCBcCgkoJHtFQ0hPX01TR30gIj09 PT4gQ2Fubm90IGNyZWF0ZSAkJHtvcHRpb25zZGlyfSwgY2hlY2sgcGVybWlzc2lvbnMiOyBleGl0 IDEpIDsgXAoJZmkKCUBUTVBPUFRJT05TRklMRT0kJChta3RlbXAgLXQgcG9ydG9wdGlvbnMpOyBc Cgl0cmFwICIke1JNfSAtZiAkJHtUTVBPUFRJT05TRklMRX07IGV4aXQgMSIgMSAyIDMgNSAxMCAx MyAxNTsgXAoJJHtTRVRFTlZ9ICR7RDRQX0VOVn0gJHtTSH0gJHtTQ1JJUFRTRElSfS9kaWFsb2c0 cG9ydHMuc2ggJCR7VE1QT1BUSU9OU0ZJTEV9IHx8IHsgXAoJCSR7Uk19IC1mICQke1RNUE9QVElP TlNGSUxFfTsgXAoJCSR7RUNIT19NU0d9ICI9PT0+IE9wdGlvbnMgdW5jaGFuZ2VkIjsgXAoJCWV4 aXQgMDsgXAoJfTsgXAoJJHtFQ0hPX0NNRH07IFwKCWlmIFsgISAtZSAkJHtUTVBPUFRJT05TRklM RX0gXTsgdGhlbiBcCgkJJHtFQ0hPX01TR30gIj09PT4gTm8gdXNlci1zcGVjaWZpZWQgb3B0aW9u cyB0byBzYXZlIGZvciAke1BLR05BTUV9IjsgXAoJCWV4aXQgMDsgXAoJZmk7IFwKCVNFTE9QVElP TlM9JCQoJHtDQVR9ICQke1RNUE9QVElPTlNGSUxFfSk7IFwKCSR7Uk19IC1mICQke1RNUE9QVElP TlNGSUxFfTsgXAoJVE1QT1BUSU9OU0ZJTEU9JCQobWt0ZW1wIC10IHBvcnRvcHRpb25zKTsgXAoJ dHJhcCAiJHtSTX0gLWYgJCR7VE1QT1BUSU9OU0ZJTEV9OyBleGl0IDEiIDEgMiAzIDUgMTAgMTMg MTU7IFwKCSR7RUNIT19DTUR9ICIjIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBieSAnbWFr ZSBjb25maWcnLiIgPiAkJHtUTVBPUFRJT05TRklMRX07IFwKCSR7RUNIT19DTUR9ICIjIE9wdGlv bnMgZm9yICR7UEtHTkFNRX0iID4+ICQke1RNUE9QVElPTlNGSUxFfTsgXAoJJHtFQ0hPX0NNRH0g Il9PUFRJT05TX1JFQUQ9JHtQS0dOQU1FfSIgPj4gJCR7VE1QT1BUSU9OU0ZJTEV9OyBcCgkke0VD SE9fQ01EfSAiX0ZJTEVfQ09NUExFVEVfT1BUSU9OU19MSVNUPSR7Q09NUExFVEVfT1BUSU9OU19M SVNUfSIgPj4gJCR7VE1QT1BUSU9OU0ZJTEV9OyBcCglmb3IgaSBpbiAke0NPTVBMRVRFX09QVElP TlNfTElTVH07IGRvIFwKCQlpZiAke0VDSE9fQ01EfSAkJHtTRUxPUFRJT05TfSB8ICR7R1JFUH0g LXF3ICQke2l9OyB0aGVuIFwKCQkJJHtFQ0hPX0NNRH0gIk9QVElPTlNfRklMRV9TRVQrPSQke2l9 IiA+PiAkJHtUTVBPUFRJT05TRklMRX07IFwKCQllbHNlIFwKCQkJJHtFQ0hPX0NNRH0gIk9QVElP TlNfRklMRV9VTlNFVCs9JCR7aX0iID4+ICQke1RNUE9QVElPTlNGSUxFfTsgXAoJCWZpOyBcCglk b25lOyBcCglpZiBbICR7VUlEfSAhPSAwIC1hIC16ICIke0lOU1RBTExfQVNfVVNFUn0iIC1hICEg LXcgIiR7T1BUSU9OU19GSUxFOkh9IiBdOyB0aGVuIFwKCQkke0VDSE9fTVNHfSAiPT09PiAgU3dp dGNoaW5nIHRvIHJvb3QgY3JlZGVudGlhbHMgdG8gd3JpdGUgJHtPUFRJT05TX0ZJTEV9IjsgXAoJ CSR7U1VfQ01EfSAiJHtDQVR9ICQke1RNUE9QVElPTlNGSUxFfSA+ICR7T1BUSU9OU19GSUxFfSI7 IFwKCQkke0VDSE9fTVNHfSAiPT09PiAgUmV0dXJuaW5nIHRvIHVzZXIgY3JlZGVudGlhbHMiOyBc CgllbHNlIFwKCQkke0NBVH0gJCR7VE1QT1BUSU9OU0ZJTEV9ID4gJHtPUFRJT05TX0ZJTEV9OyBc CglmaTsgXAoJJHtSTX0gLWYgJCR7VE1QT1BUSU9OU0ZJTEV9CglAY2QgJHsuQ1VSRElSfSAmJiAk e01BS0V9IHNhbml0eS1jb25maWcKLmVuZGlmCi5lbmRpZiAjIGRvLWNvbmZpZwoKLmlmICF0YXJn ZXQoY29uZmlnKQouaWYgIWRlZmluZWQoTk9fRElBTE9HKQpjb25maWc6IHByZS1jb25maWcgZG8t Y29uZmlnCi5lbHNlCmNvbmZpZzoKCUAke0VDSE9fTVNHfSAiPT09PiBTa2lwcGluZyAnY29uZmln JyBhcyBOT19ESUFMT0cgaXMgZGVmaW5lZCIKLmVuZGlmCi5lbmRpZiAjIGNvbmZpZwoKLmlmICF0 YXJnZXQoY29uZmlnLXJlY3Vyc2l2ZSkKY29uZmlnLXJlY3Vyc2l2ZToKCUAke0VDSE9fTVNHfSAi PT09PiBTZXR0aW5nIHVzZXItc3BlY2lmaWVkIG9wdGlvbnMgZm9yICR7UEtHTkFNRX0gYW5kIGRl cGVuZGVuY2llcyI7CglAZm9yIGRpciBpbiAkey5DVVJESVJ9ICQkKCR7QUxMLURFUEVORFMtTElT VH0pOyBkbyBcCgkJKGNkICQkZGlyOyAke01BS0V9IGNvbmZpZy1jb25kaXRpb25hbCk7IFwKCWRv bmUKLmVuZGlmICMgY29uZmlnLXJlY3Vyc2l2ZQoKLmlmICF0YXJnZXQoY29uZmlnLWNvbmRpdGlv bmFsKQpjb25maWctY29uZGl0aW9uYWw6Ci5pZiAhZW1wdHkoTkVXX09QVElPTlMpCglAY2QgJHsu Q1VSRElSfSAmJiAke01BS0V9IGNvbmZpZzsKLmVuZGlmCi5lbmRpZiAjIGNvbmZpZy1jb25kaXRp b25hbAoKLmlmICF0YXJnZXQoc2hvd2NvbmZpZykKLmluY2x1ZGUgIiR7UE9SVFNESVJ9L01rL2Jz ZC5vcHRpb25zLmRlc2MubWsiCk1VTFRJX0VPTD0JOiB5b3UgaGF2ZSB0byBjaG9vc2UgYXQgbGVh c3Qgb25lIG9mIHRoZW0KU0lOR0xFX0VPTD0JOiB5b3UgaGF2ZSB0byBzZWxlY3QgZXhhY3RseSBv bmUgb2YgdGhlbQpSQURJT19FT0w9CTogeW91IGNhbiBvbmx5IHNlbGVjdCBub25lIG9yIG9uZSBv ZiB0aGVtCnNob3djb25maWc6IGNoZWNrLWNvbmZpZwouaWYgIWVtcHR5KENPTVBMRVRFX09QVElP TlNfTElTVCkKCUAke0VDSE9fTVNHfSAiPT09PiBUaGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24g b3B0aW9ucyBhcmUgYXZhaWxhYmxlIGZvciAke1BLR05BTUV9IjoKLmZvciBvcHQgaW4gJHtBTExf T1BUSU9OU30KCUBbIC16ICIke1BPUlRfT1BUSU9OUzpNJHtvcHR9fSIgXSB8fCBtYXRjaD0ib24i IDsgJHtFQ0hPX01TR30gLW4gIiAgICAgJHtvcHR9PSQke21hdGNoOi1vZmZ9IgouICBpZiAhZW1w dHkoJHtvcHR9X0RFU0MpCglAJHtFQ0hPX01TR30gLW4gIjogIiR7JHtvcHR9X0RFU0M6UX0KLiAg ZW5kaWYKCUAke0VDSE9fTVNHfSAiIgouZW5kZm9yCgojbXVsdGkgYW5kIGNvbmRpdGlvbmFsIG11 bHRpcwouZm9yIG90eXBlIGluIE1VTFRJIEdST1VQIFNJTkdMRSBSQURJTwouICBmb3IgbSBpbiAk e09QVElPTlNfJHtvdHlwZX19Ci4gICAgaWYgZW1wdHkoJHttfV9ERVNDKQoJCUAke0VDSE9fTVNH fSAiPT09PT4gT3B0aW9ucyBhdmFpbGFibGUgZm9yIHRoZSAke290eXBlOnRsfSAke219JHske290 eXBlfV9FT0x9IgouICAgIGVsc2UKCQlAJHtFQ0hPX01TR30gIj09PT0+ICR7JHttfV9ERVNDfSR7 JHtvdHlwZX1fRU9MfSIKLiAgICBlbmRpZgouICAgIGZvciBvcHQgaW4gJHtPUFRJT05TXyR7b3R5 cGV9XyR7bX19CglAWyAteiAiJHtQT1JUX09QVElPTlM6TSR7b3B0fX0iIF0gfHwgbWF0Y2g9Im9u IiA7ICR7RUNIT19NU0d9IC1uICIgICAgICR7b3B0fT0kJHttYXRjaDotb2ZmfSIKLiAgICAgIGlm ICFlbXB0eSgke29wdH1fREVTQykKCUAke0VDSE9fTVNHfSAtbiAiOiAiJHske29wdH1fREVTQzpR fQouICAgICAgZW5kaWYKCUAke0VDSE9fTVNHfSAiIgouICAgIGVuZGZvcgouICBlbmRmb3IKLmVu ZGZvcgoKLnVuZGVmIG90eXBlCi51bmRlZiBtCi51bmRlZiBvcHQKCUAke0VDSE9fTVNHfSAiPT09 PiBVc2UgJ21ha2UgY29uZmlnJyB0byBtb2RpZnkgdGhlc2Ugc2V0dGluZ3MiCi5lbmRpZgouZW5k aWYgIyBzaG93Y29uZmlnCgouaWYgIXRhcmdldChzaG93Y29uZmlnLXJlY3Vyc2l2ZSkKc2hvd2Nv bmZpZy1yZWN1cnNpdmU6CglAJHtFQ0hPX01TR30gIj09PT4gVGhlIGZvbGxvd2luZyBjb25maWd1 cmF0aW9uIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSBmb3IgJHtQS0dOQU1FfSBhbmQgZGVwZW5kZW5j aWVzIjsKCUBmb3IgZGlyIGluICR7LkNVUkRJUn0gJCQoJHtBTEwtREVQRU5EUy1MSVNUfSk7IGRv IFwKCQkoY2QgJCRkaXI7ICR7TUFLRX0gc2hvd2NvbmZpZyk7IFwKCWRvbmUKLmVuZGlmICMgc2hv d2NvbmZpZy1yZWN1cnNpdmUKCi5pZiAhdGFyZ2V0KHJtY29uZmlnKQpybWNvbmZpZzoKLmlmIGV4 aXN0cygke09QVElPTlNGSUxFfSkKCS1AJHtFQ0hPX01TR30gIj09PT4gUmVtb3ZpbmcgdXNlci1j b25maWd1cmVkIG9wdGlvbnMgZm9yICR7UEtHTkFNRX0iOyBcCglvcHRpb25zZGlyPSR7T1BUSU9O U0ZJTEU6SH07IFwKCWlmIFsgJHtVSUR9ICE9IDAgLWEgIngke0lOU1RBTExfQVNfVVNFUn0iID0g IngiIC1hICEgLXcgIiR7T1BUSU9OU0ZJTEV9IiBdOyB0aGVuIFwKCQkke0VDSE9fTVNHfSAiPT09 PiBTd2l0Y2hpbmcgdG8gcm9vdCBjcmVkZW50aWFscyB0byByZW1vdmUgJHtPUFRJT05TRklMRX0g YW5kICQke29wdGlvbnNkaXJ9IjsgXAoJCSR7U1VfQ01EfSAiJHtSTX0gLWYgJHtPUFRJT05TRklM RX0gOyBcCgkJCSR7Uk1ESVJ9ICQke29wdGlvbnNkaXJ9IjsgXAoJCSR7RUNIT19NU0d9ICI9PT0+ IFJldHVybmluZyB0byB1c2VyIGNyZWRlbnRpYWxzIjsgXAoJZWxzZSBcCgkJJHtSTX0gLWYgJHtP UFRJT05TRklMRX07IFwKCQkke1JNRElSfSAkJHtvcHRpb25zZGlyfSAyPi9kZXYvbnVsbCB8fCBy ZXR1cm4gMDsgXAoJZmkKLmVuZGlmCi5pZiBleGlzdHMoJHtPUFRJT05TX0ZJTEV9KQoJLUAke0VD SE9fTVNHfSAiPT09PiBSZW1vdmluZyB1c2VyLWNvbmZpZ3VyZWQgb3B0aW9ucyBmb3IgJHtQS0dO QU1FfSI7IFwKCW9wdGlvbnNkaXI9JHtPUFRJT05TX0ZJTEU6SH07IFwKCWlmIFsgJHtVSUR9ICE9 IDAgLWEgIngke0lOU1RBTExfQVNfVVNFUn0iID0gIngiIC1hICEgLXcgIiR7T1BUSU9OU19GSUxF fSIgXTsgdGhlbiBcCgkJJHtFQ0hPX01TR30gIj09PT4gU3dpdGNoaW5nIHRvIHJvb3QgY3JlZGVu dGlhbHMgdG8gcmVtb3ZlICR7T1BUSU9OU19GSUxFfSBhbmQgJCR7b3B0aW9uc2Rpcn0iOyBcCgkJ JHtTVV9DTUR9ICIke1JNfSAtZiAke09QVElPTlNfRklMRX0gOyBcCgkJCSR7Uk1ESVJ9ICQke29w dGlvbnNkaXJ9IjsgXAoJCSR7RUNIT19NU0d9ICI9PT0+IFJldHVybmluZyB0byB1c2VyIGNyZWRl bnRpYWxzIjsgXAoJZWxzZSBcCgkJJHtSTX0gLWYgJHtPUFRJT05TX0ZJTEV9OyBcCgkJJHtSTURJ Un0gJCR7b3B0aW9uc2Rpcn0gMj4vZGV2L251bGwgfHwgcmV0dXJuIDA7IFwKCWZpCi5lbHNlCglA JHtFQ0hPX01TR30gIj09PT4gTm8gdXNlci1zcGVjaWZpZWQgb3B0aW9ucyBjb25maWd1cmVkIGZv ciAke1BLR05BTUV9IgouZW5kaWYKLmVuZGlmICMgcm1jb25maWcKCi5pZiAhdGFyZ2V0KHJtY29u ZmlnLXJlY3Vyc2l2ZSkKcm1jb25maWctcmVjdXJzaXZlOgoJQCR7RUNIT19NU0d9ICI9PT0+IFJl bW92aW5nIHVzZXItc3BlY2lmaWVkIG9wdGlvbnMgZm9yICR7UEtHTkFNRX0gYW5kIGRlcGVuZGVu Y2llcyI7CglAZm9yIGRpciBpbiAkey5DVVJESVJ9ICQkKCR7QUxMLURFUEVORFMtTElTVH0pOyBk byBcCgkJKGNkICQkZGlyOyAke01BS0V9IHJtY29uZmlnKTsgXAoJZG9uZQouZW5kaWYgIyBybWNv bmZpZy1yZWN1cnNpdmUKCi5pZiAhdGFyZ2V0KHByZXR0eS1wcmludC1jb25maWcpCk1VTFRJX1NU QVJUPQlbCk1VTFRJX0VORD0JXQpHUk9VUF9TVEFSVD0JWwpHUk9VUF9FTkQ9CV0KU0lOR0xFX1NU QVJUPQkoClNJTkdMRV9FTkQ9CSkKUkFESU9fU1RBUlQ9CSgKUkFESU9fRU5EPQkpCnByZXR0eS1w cmludC1jb25maWc6Ci5mb3Igb3B0IGluICR7QUxMX09QVElPTlN9CglAWyAteiAiJHtQT1JUX09Q VElPTlM6TSR7b3B0fX0iIF0gfHwgbWF0Y2g9IisiIDsgJHtFQ0hPX01TR30gLW4gIiQke21hdGNo Oi0tfSR7b3B0fSAiCi5lbmRmb3IKLmZvciBvdHlwZSBpbiBNVUxUSSBHUk9VUCBTSU5HTEUgUkFE SU8KLiAgZm9yIG0gaW4gJHtPUFRJT05TXyR7b3R5cGV9fQoJQCR7RUNIT19NU0d9IC1uICIke219 JHske290eXBlfV9TVEFSVH0gIgouICAgIGZvciBvcHQgaW4gJHtPUFRJT05TXyR7b3R5cGV9XyR7 bX19CgkJQFsgLXogIiR7UE9SVF9PUFRJT05TOk0ke29wdH19IiBdIHx8IG1hdGNoPSIrIiA7ICR7 RUNIT19NU0d9IC1uICIkJHttYXRjaDotLX0ke29wdH0gIgouICAgIGVuZGZvcgoJQCR7RUNIT19N U0d9IC1uICIkeyR7b3R5cGV9X0VORH0gIgouICBlbmRmb3IKLmVuZGZvcgoudW5kZWYgb3R5cGUK LnVuZGVmIG0KLnVuZGVmIG9wdAoJQCR7RUNIT19NU0d9ICIiCi5lbmRpZiAjIHByZXR0eS1wcmlu dC1jb25maWcKCmRlc2t0b3AtY2F0ZWdvcmllczoKCUBjYXRlZ29yaWVzPSIiOyBcCglmb3IgbmF0 aXZlX2NhdGVnb3J5IGluICR7Q0FURUdPUklFU307IGRvIFwKCQljPSIiOyBcCgkJY2FzZSAkJG5h dGl2ZV9jYXRlZ29yeSBpbiBcCgkJCWFjY2Vzc2liaWxpdHkpCWM9IlV0aWxpdHkgQWNjZXNzaWJp bGl0eSIJCTs7IFwKCQkJYXJjaGl2ZXJzKQkJYz0iVXRpbGl0eSBBcmNoaXZpbmciCQkJOzsgXAoJ CQlhc3RybykJCQljPSJFZHVjYXRpb24gU2NpZW5jZSBBc3Ryb25vbXkiCTs7IFwKCQkJYXVkaW8p CQkJYz0iQXVkaW9WaWRlbyBBdWRpbyIJCQk7OyBcCgkJCWJlbmNobWFya3MpCQljPSJTeXN0ZW0i CQkJCQkJOzsgXAoJCQliaW9sb2d5KQkJYz0iRWR1Y2F0aW9uIFNjaWVuY2UgQmlvbG9neSIJOzsg XAoJCQljYWQpCQkJYz0iR3JhcGhpY3MgRW5naW5lZXJpbmciCQk7OyBcCgkJCWNvbW1zKQkJCWM9 IlV0aWxpdHkiCQkJCQkJOzsgXAoJCQljb252ZXJ0ZXJzKQkJYz0iVXRpbGl0eSIJCQkJCQk7OyBc CgkJCWRhdGFiYXNlcykJCWM9Ik9mZmljZSBEYXRhYmFzZSIJCQkJOzsgXAoJCQlkZXNrdXRpbHMp CQljPSJVdGlsaXR5IgkJCQkJCTs7IFwKCQkJZGV2ZWwpCQkJYz0iRGV2ZWxvcG1lbnQiCQkJCQk7 OyBcCgkJCWRucykJCQljPSJOZXR3b3JrIgkJCQkJCTs7IFwKCQkJZWxpc3ApCQkJYz0iRGV2ZWxv cG1lbnQiCQkJCQk7OyBcCgkJCWVkaXRvcnMpCQljPSJVdGlsaXR5IgkJCQkJCTs7IFwKCQkJZW11 bGF0b3JzKQkJYz0iU3lzdGVtIEVtdWxhdG9yIgkJCQk7OyBcCgkJCWZpbmFuY2UpCQljPSJPZmZp Y2UgRmluYW5jZSIJCQkJOzsgXAoJCQlmdHApCQkJYz0iTmV0d29yayBGaWxlVHJhbnNmZXIiCQk7 OyBcCgkJCWdhbWVzKQkJCWM9IkdhbWUiCQkJCQkJOzsgXAoJCQlnZW9ncmFwaHkpCQljPSJFZHVj YXRpb24gU2NpZW5jZSBHZW9ncmFwaHkiCTs7IFwKCQkJZ25vbWUpCQkJYz0iR05PTUUgR1RLIgkJ CQkJOzsgXAoJCQlncmFwaGljcykJCWM9IkdyYXBoaWNzIgkJCQkJOzsgXAoJCQloYW1yYWRpbykJ CWM9IkhhbVJhZGlvIgkJCQkJOzsgXAoJCQloYXNrZWxsKQkJYz0iRGV2ZWxvcG1lbnQiCQkJCQk7 OyBcCgkJCWlyYykJCQljPSJOZXR3b3JrIElSQ0NsaWVudCIJCQk7OyBcCgkJCWphdmEpCQkJYz0i RGV2ZWxvcG1lbnQgSmF2YSIJCQk7OyBcCgkJCWtkZSkJCQljPSJLREUgUXQiCQkJCQkJOzsgXAoJ CQlsYW5nKQkJCWM9IkRldmVsb3BtZW50IgkJCQkJOzsgXAoJCQlsaXNwKQkJCWM9IkRldmVsb3Bt ZW50IgkJCQkJOzsgXAoJCQltYWlsKQkJCWM9Ik9mZmljZSBFbWFpbCIJCQkJOzsgXAoJCQltYXRl KQkJCWM9Ik1BVEUgR1RLIgkJOzsgXAoJCQltYXRoKQkJCWM9IkVkdWNhdGlvbiBTY2llbmNlIE1h dGgiCQk7OyBcCgkJCW1ib25lKQkJCWM9Ik5ldHdvcmsgQXVkaW9WaWRlbyIJCQk7OyBcCgkJCW11 bHRpbWVkaWEpCQljPSJBdWRpb1ZpZGVvIgkJCQkJOzsgXAoJCQluZXQpCQkJYz0iTmV0d29yayIJ CQkJCQk7OyBcCgkJCW5ldC1pbSkJCQljPSJOZXR3b3JrIEluc3RhbnRNZXNzYWdpbmciCTs7IFwK CQkJbmV0LW1nbXQpCQljPSJOZXR3b3JrIgkJCQkJCTs7IFwKCQkJbmV0LXAycCkJCWM9Ik5ldHdv cmsgUDJQIgkJCQkJOzsgXAoJCQluZXdzKQkJCWM9Ik5ldHdvcmsgTmV3cyIJCQkJOzsgXAoJCQlw YWxtKQkJCWM9Ik9mZmljZSBQREEiCQkJCQk7OyBcCgkJCXBhcmFsbGVsKQkJYz0iUGFyYWxsZWxD b21wdXRpbmciCQkJOzsgXAoJCQlwZWFyKQkJCWM9IkRldmVsb3BtZW50IFdlYkRldmVsb3BtZW50 Igk7OyBcCgkJCXBlcmw1KQkJCWM9IkRldmVsb3BtZW50IgkJCQkJOzsgXAoJCQlweXRob24pCQkJ Yz0iRGV2ZWxvcG1lbnQiCQkJCQk7OyBcCgkJCXJ1YnkpCQkJYz0iRGV2ZWxvcG1lbnQiCQkJCQk7 OyBcCgkJCXJ1YnlnZW1zKQkJYz0iRGV2ZWxvcG1lbnQiCQkJCQk7OyBcCgkJCXNjaGVtZSkJCQlj PSJEZXZlbG9wbWVudCIJCQkJCTs7IFwKCQkJc2NpZW5jZSkJCWM9IlNjaWVuY2UgRWR1Y2F0aW9u IgkJCTs7IFwKCQkJc2VjdXJpdHkpCQljPSJTeXN0ZW0gU2VjdXJpdHkiCQkJCTs7IFwKCQkJc2hl bGxzKQkJCWM9IlN5c3RlbSBTaGVsbCIJCQkJOzsgXAoJCQlzeXN1dGlscykJCWM9IlN5c3RlbSIJ CQkJCQk7OyBcCgkJCXRjbCp8dGsqKQkJYz0iRGV2ZWxvcG1lbnQiCQkJCQk7OyBcCgkJCXRleHRw cm9jKQkJYz0iVXRpbGl0eSBUZXh0VG9vbHMiCQkJOzsgXAoJCQl3d3cpCQkJYz0iTmV0d29yayIJ CQkJCQk7OyBcCgkJCXgxMS1jbG9ja3MpCQljPSJVdGlsaXR5IENsb2NrIgkJCQk7OyBcCgkJCXgx MS1mbSkJCQljPSJTeXN0ZW0gRmlsZU1hbmFnZXIiCQkJOzsgXAoJCQl4ZmNlKQkJCWM9IkdUSyBY RkNFIgkJCQkJOzsgXAoJCQl6b3BlKQkJCWM9IkRldmVsb3BtZW50IFdlYkRldmVsb3BtZW50Igk7 OyBcCgkJZXNhYzsgXAoJCWlmIFsgLW4gIiQkYyIgXTsgdGhlbiBcCgkJCWNhdGVnb3JpZXM9IiQk Y2F0ZWdvcmllcyAkJGMiOyBcCgkJZmk7IFwKCWRvbmU7IFwKCWlmIFsgLW4gIiQkY2F0ZWdvcmll cyIgXTsgdGhlbiBcCgkJZm9yIGMgaW4gJCRjYXRlZ29yaWVzOyBkbyAke0VDSE9fTVNHfSAiJCRj IjsgZG9uZSBcCgkJCXwgJHtTT1JUfSAtdSB8ICR7VFJ9ICdcbicgJzsnOyBcCgkJJHtFQ0hPX01T R307IFwKCWZpCgojIGh0dHA6Ly9zdGFuZGFyZHMuZnJlZWRlc2t0b3Aub3JnL21lbnUtc3BlYy9t ZW51LXNwZWMtbGF0ZXN0Lmh0bWwKREVTS1RPUF9DQVRFR09SSUVTX01BSU49CUF1ZGlvVmlkZW8g QXVkaW8gVmlkZW8gRGV2ZWxvcG1lbnQgRWR1Y2F0aW9uIFwKCUdhbWUgR3JhcGhpY3MgTmV0d29y ayBPZmZpY2UgU2NpZW5jZSBTZXR0aW5ncyBTeXN0ZW0gVXRpbGl0eQpERVNLVE9QX0NBVEVHT1JJ RVNfQURESVRJT05BTD0JQnVpbGRpbmcgRGVidWdnZXIgSURFIEdVSURlc2lnbmVyIFByb2ZpbGlu ZyBcCglSZXZpc2lvbkNvbnRyb2wgVHJhbnNsYXRpb24gQ2FsZW5kYXIgQ29udGFjdE1hbmFnZW1l bnQgRGF0YWJhc2UgXAoJRGljdGlvbmFyeSBDaGFydCBFbWFpbCBGaW5hbmNlIEZsb3dDaGFydCBQ REEgUHJvamVjdE1hbmFnZW1lbnQgXAoJUHJlc2VudGF0aW9uIFNwcmVhZHNoZWV0IFdvcmRQcm9j ZXNzb3IgMkRHcmFwaGljcyBWZWN0b3JHcmFwaGljcyBcCglSYXN0ZXJHcmFwaGljcyAzREdyYXBo aWNzIFNjYW5uaW5nIE9DUiBQaG90b2dyYXBoeSBQdWJsaXNoaW5nIFZpZXdlciBcCglUZXh0VG9v bHMgRGVza3RvcFNldHRpbmdzIEhhcmR3YXJlU2V0dGluZ3MgUHJpbnRpbmcgUGFja2FnZU1hbmFn ZXIgXAoJRGlhbHVwIEluc3RhbnRNZXNzYWdpbmcgQ2hhdCBJUkNDbGllbnQgRmVlZCBGaWxlVHJh bnNmZXIgSGFtUmFkaW8gTmV3cyBcCglQMlAgUmVtb3RlQWNjZXNzIFRlbGVwaG9ueSBUZWxlcGhv bnlUb29scyBWaWRlb0NvbmZlcmVuY2UgV2ViQnJvd3NlciBcCglXZWJEZXZlbG9wbWVudCBNaWRp IE1peGVyIFNlcXVlbmNlciBUdW5lciBUViBBdWRpb1ZpZGVvRWRpdGluZyBQbGF5ZXIgXAoJUmVj b3JkZXIgRGlzY0J1cm5pbmcgQWN0aW9uR2FtZSBBZHZlbnR1cmVHYW1lIEFyY2FkZUdhbWUgQm9h cmRHYW1lIFwKCUJsb2Nrc0dhbWUgQ2FyZEdhbWUgS2lkc0dhbWUgTG9naWNHYW1lIFJvbGVQbGF5 aW5nIFNob290ZXIgU2ltdWxhdGlvbiBcCglTcG9ydHNHYW1lIFN0cmF0ZWd5R2FtZSBBcnQgQ29u c3RydWN0aW9uIE11c2ljIExhbmd1YWdlcyBcCglBcnRpZmljaWFsSW50ZWxsaWdlbmNlIEFzdHJv bm9teSBCaW9sb2d5IENoZW1pc3RyeSBDb21wdXRlclNjaWVuY2UgXAoJRGF0YVZpc3VhbGl6YXRp b24gRWNvbm9teSBFbGVjdHJpY2l0eSBHZW9ncmFwaHkgR2VvbG9neSBHZW9zY2llbmNlIFwKCUhp c3RvcnkgSHVtYW5pdGllcyBJbWFnZVByb2Nlc3NpbmcgTGl0ZXJhdHVyZSBNYXBzIE1hdGggXAoJ TnVtZXJpY2FsQW5hbHlzaXMgTWVkaWNhbFNvZnR3YXJlIFBoeXNpY3MgUm9ib3RpY3MgU3Bpcml0 dWFsaXR5IFNwb3J0cyBcCglQYXJhbGxlbENvbXB1dGluZyBBbXVzZW1lbnQgQXJjaGl2aW5nIENv bXByZXNzaW9uIEVsZWN0cm9uaWNzIEVtdWxhdG9yIFwKCUVuZ2luZWVyaW5nIEZpbGVUb29scyBG aWxlTWFuYWdlciBUZXJtaW5hbEVtdWxhdG9yIEZpbGVzeXN0ZW0gTW9uaXRvciBcCglTZWN1cml0 eSBBY2Nlc3NpYmlsaXR5IENhbGN1bGF0b3IgQ2xvY2sgVGV4dEVkaXRvciBEb2N1bWVudGF0aW9u IEFkdWx0IFwKCUNvcmUgS0RFIEdOT01FIE1BVEUgWEZDRSBHVEsgUXQgTW90aWYgSmF2YSBDb25z b2xlT25seQpERVNLVE9QX0NBVEVHT1JJRVNfUkVTRVJWRUQ9CVNjcmVlbnNhdmVyIFRyYXlJY29u IEFwcGxldCBTaGVsbAoKVkFMSURfREVTS1RPUF9DQVRFR09SSUVTKz0JJHtERVNLVE9QX0NBVEVH T1JJRVNfTUFJTn0gXAoJJHtERVNLVE9QX0NBVEVHT1JJRVNfQURESVRJT05BTH0gXAoJJHtERVNL VE9QX0NBVEVHT1JJRVNfUkVTRVJWRUR9CgouaWYgZGVmaW5lZChERVNLVE9QX0VOVFJJRVMpCmNo ZWNrLWRlc2t0b3AtZW50cmllczoKCUBzZXQgLS0gJHtERVNLVE9QX0VOVFJJRVN9IFhYWDsgXAoJ aWYgWyBgJHtFWFBSfSBcKCAkJCMgLSAxIFwpICUgNmAgLW5lIDAgXTsgdGhlbiBcCgkJJHtFQ0hP X01TR30gIiR7UEtHTkFNRX06IE1ha2VmaWxlIGVycm9yOiB0aGUgREVTS1RPUF9FTlRSSUVTIGxp c3QgbXVzdCBjb250YWluIG9uZSBvciBtb3JlIGdyb3VwcyBvZiA2IGVsZW1lbnRzIjsgXAoJCWV4 aXQgMTsgXAoJZmk7IFwKCW51bT0xOyBcCgl3aGlsZSBbICQkIyAtZ3QgNiBdOyBkbyBcCgkJZW50 cnk9IiMkJG51bSI7IFwKCQlpZiBbIC1uICIkJDQiIF07IHRoZW4gXAoJCQllbnRyeT0iJCRlbnRy eSAoJCQ0KSI7IFwKCQllbGlmIFsgLW4gIiQkMSIgXTsgdGhlbiBcCgkJCWVudHJ5PSIkJGVudHJ5 ICgkJDEpIjsgXAoJCWZpOyBcCgkJaWYgWyAteiAiJCQxIiBdOyB0aGVuIFwKCQkJJHtFQ0hPX01T R30gIiR7UEtHTkFNRX06IE1ha2VmaWxlIGVycm9yOiBpbiBkZXNrdG9wIGVudHJ5ICQkZW50cnk6 IGZpZWxkIDEgKE5hbWUpIGlzIGVtcHR5IjsgXAoJCQlleGl0IDE7IFwKCQlmaTsgXAoJCWlmICR7 RUNIT19DTUR9ICIkJDMiIHwgJHtHUkVQfSAtaXEgJy5cKHBuZ1x8c3ZnXHx4cG1cKSQkJzsgdGhl biBcCgkJCWlmICEgJHtFQ0hPX0NNRH0gIiQkMyIgfCAke0dSRVB9IC1pcSAnXi8nOyB0aGVuIFwK CQkJCSR7RUNIT19NU0d9ICIke1BLR05BTUV9OiBNYWtlZmlsZSB3YXJuaW5nOiBpbiBkZXNrdG9w IGVudHJ5ICQkZW50cnk6IGZpZWxkIDMgKEljb24pIHNob3VsZCBiZSBlaXRoZXIgYWJzb2x1dGUg cGF0aCBvciBpY29uIG5hbWUgd2l0aG91dCBleHRlbnNpb24gaWYgaW5zdGFsbGVkIGljb25zIGZv bGxvdyBJY29uIFRoZW1lIFNwZWNpZmljYXRpb24iOyBcCgkJCWZpOyBcCgkJZmk7IFwKCQlpZiBb IC16ICIkJDQiIF07IHRoZW4gXAoJCQkke0VDSE9fTVNHfSAiJHtQS0dOQU1FfTogTWFrZWZpbGUg ZXJyb3I6IGluIGRlc2t0b3AgZW50cnkgJCRlbnRyeTogZmllbGQgNCAoRXhlYykgaXMgZW1wdHki OyBcCgkJCWV4aXQgMTsgXAoJCWZpOyBcCgkJaWYgWyAtbiAiJCQ1IiBdOyB0aGVuIFwKCQkJZm9y IGMgaW4gYCR7RUNIT19DTUR9ICIkJDUiIHwgJHtUUn0gJzsnICcgJ2A7IGRvIFwKCQkJCWlmICEg JHtFQ0hPX0NNRH0gJHtWQUxJRF9ERVNLVE9QX0NBVEVHT1JJRVN9IHwgJHtHUkVQfSAtd3EgJCRj OyB0aGVuIFwKCQkJCQkke0VDSE9fQ01EfSAiJHtQS0dOQU1FfTogTWFrZWZpbGUgd2FybmluZzog aW4gZGVza3RvcCBlbnRyeSAkJGVudHJ5OiBjYXRlZ29yeSAkJGMgaXMgbm90IGEgdmFsaWQgZGVz a3RvcCBjYXRlZ29yeSI7IFwKCQkJCWZpOyBcCgkJCWRvbmU7IFwKCQkJaWYgISAke0VDSE9fQ01E fSAiJCQ1IiB8ICR7R1JFUH0gLXEgImAke0VDSE9fQ01EfSAke0RFU0tUT1BfQ0FURUdPUklFU19N QUlOfSB8ICR7U0VEfSAtRSAncyxbWzpibGFuazpdXSssXFxcfCxnJ2AiOyB0aGVuIFwKCQkJCSR7 RUNIT19DTUR9ICIke1BLR05BTUV9OiBNYWtlZmlsZSB3YXJuaW5nOiBpbiBkZXNrdG9wIGVudHJ5 ICQkZW50cnk6IGZpZWxkIDUgKENhdGVnb3JpZXMpIG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUg bWFpbiBkZXNrdG9wIGNhdGVnb3J5IChtYWtlIC1WREVTS1RPUF9DQVRFR09SSUVTX01BSU4pIjsg XAoJCQlmaTsgXAoJCQlpZiAhICR7RUNIT19DTUR9ICIkJDUiIHwgJHtHUkVQfSAtcSAnOyQkJzsg dGhlbiBcCgkJCQkke0VDSE9fTVNHfSAiJHtQS0dOQU1FfTogTWFrZWZpbGUgZXJyb3I6IGluIGRl c2t0b3AgZW50cnkgJCRlbnRyeTogZmllbGQgNSAoQ2F0ZWdvcmllcykgZG9lcyBub3QgZW5kIHdp dGggYSBzZW1pY29sb24iOyBcCgkJCQlleGl0IDE7IFwKCQkJZmk7IFwKCQllbHNlIFwKCQkJaWYg WyAteiAiYGNkICR7LkNVUkRJUn0gJiYgJHtNQUtFfSBkZXNrdG9wLWNhdGVnb3JpZXNgIiBdOyB0 aGVuIFwKCQkJCSR7RUNIT19NU0d9ICIke1BLR05BTUV9OiBNYWtlZmlsZSBlcnJvcjogaW4gZGVz a3RvcCBlbnRyeSAkJGVudHJ5OiBmaWVsZCA1IChDYXRlZ29yaWVzKSBpcyBlbXB0eSBhbmQgY291 bGQgbm90IGJlIGRlZHVjZWQgZnJvbSB0aGUgQ0FURUdPUklFUyB2YXJpYWJsZSI7IFwKCQkJCWV4 aXQgMTsgXAoJCQlmaTsgXAoJCWZpOyBcCgkJaWYgWyAieCQkNiIgIT0gInh0cnVlIiBdICYmIFsg IngkJDYiICE9ICJ4ZmFsc2UiIF0gJiYgWyAieCQkNiIgIT0gIngiIF07IHRoZW4gXAoJCQkke0VD SE9fTVNHfSAiJHtQS0dOQU1FfTogTWFrZWZpbGUgZXJyb3I6IGluIGRlc2t0b3AgZW50cnkgJCRl bnRyeTogZmllbGQgNiAoU3RhcnR1cE5vdGlmeSkgaXMgbm90IFwidHJ1ZVwiLCBcImZhbHNlXCIg b3IgXCJcIihlbXB0eSkiOyBcCgkJCWV4aXQgMTsgXAoJCWZpOyBcCgkJc2hpZnQgNjsgXAoJCW51 bT1gJHtFWFBSfSAkJG51bSArIDFgOyBcCglkb25lCi5lbmRpZgoKLmlmICF0YXJnZXQoaW5zdGFs bC1kZXNrdG9wLWVudHJpZXMpCi5pZiBkZWZpbmVkKERFU0tUT1BfRU5UUklFUykKaW5zdGFsbC1k ZXNrdG9wLWVudHJpZXM6CglAc2V0IC0tICR7REVTS1RPUF9FTlRSSUVTfSBYWFg7IFwKCXdoaWxl IFsgJCQjIC1ndCA2IF07IGRvIFwKCQlmaWxlbmFtZT0iYCR7RUNIT19DTUR9ICIkJDQiIHwgJHtT RUR9IC1lICdzLF4vLCxnO3MsWy8gXSxfLGc7cyxbXl9bOmFsbnVtOl1dLCxnJ2AuZGVza3RvcCI7 IFwKCQlwYXRobmFtZT0iJHtTVEFHRURJUn0ke0RFU0tUT1BESVJ9LyQkZmlsZW5hbWUiOyBcCgkJ Y2F0ZWdvcmllcz0iJCQ1IjsgXAoJCWlmIFsgLXogIiQkY2F0ZWdvcmllcyIgXTsgdGhlbiBcCgkJ CWNhdGVnb3JpZXM9ImBjZCAkey5DVVJESVJ9ICYmICR7TUFLRX0gZGVza3RvcC1jYXRlZ29yaWVz YCI7IFwKCQlmaTsgXAoJCSR7RUNIT19DTUR9ICIke0RFU0tUT1BESVJ9LyQkZmlsZW5hbWUiID4+ ICR7VE1QUExJU1R9OyBcCgkJJHtFQ0hPX0NNRH0gIltEZXNrdG9wIEVudHJ5XSIgPiAkJHBhdGhu YW1lOyBcCgkJJHtFQ0hPX0NNRH0gIlR5cGU9QXBwbGljYXRpb24iID4+ICQkcGF0aG5hbWU7IFwK CQkke0VDSE9fQ01EfSAiVmVyc2lvbj0xLjAiID4+ICQkcGF0aG5hbWU7IFwKCQkke0VDSE9fQ01E fSAiTmFtZT0kJDEiID4+ICQkcGF0aG5hbWU7IFwKCQljb21tZW50PSIkJDIiOyBcCgkJaWYgWyAt eiAiJCQyIiBdOyB0aGVuIFwKCQkJY29tbWVudD0iYGNkICR7LkNVUkRJUn0gJiYgJHtNQUtFfSAt VkNPTU1FTlRgIjsgXAoJCWZpOyBcCgkJJHtFQ0hPX0NNRH0gIkdlbmVyaWNOYW1lPSQkY29tbWVu dCIgPj4gJCRwYXRobmFtZTsgXAoJCSR7RUNIT19DTUR9ICJDb21tZW50PSQkY29tbWVudCIgPj4g JCRwYXRobmFtZTsgXAoJCWlmIFsgLW4gIiQkMyIgXTsgdGhlbiBcCgkJCSR7RUNIT19DTUR9ICJJ Y29uPSQkMyIgPj4gJCRwYXRobmFtZTsgXAoJCWZpOyBcCgkJJHtFQ0hPX0NNRH0gIkV4ZWM9JCQ0 IiA+PiAkJHBhdGhuYW1lOyBcCgkJJHtFQ0hPX0NNRH0gIkNhdGVnb3JpZXM9JCRjYXRlZ29yaWVz IiA+PiAkJHBhdGhuYW1lOyBcCgkJaWYgWyAtbiAiJCQ2IiBdOyB0aGVuIFwKCQkJJHtFQ0hPX0NN RH0gIlN0YXJ0dXBOb3RpZnk9JCQ2IiA+PiAkJHBhdGhuYW1lOyBcCgkJZmk7IFwKCQlzaGlmdCA2 OyBcCglkb25lCi5lbmRpZgouZW5kaWYKCi5pZiBkZWZpbmVkKFdBUk5JTkcpCldBUk5JTkdfV0FJ VD89CTEwCnNob3ctd2FybmluZ3M6CglAJHtFQ0hPX01TR30gIi8hXFwgV0FSTklORyAvIVxcIgou Zm9yIG0gaW4gJHtXQVJOSU5HfQoJQCR7RUNIT19NU0d9ICIke219IgouZW5kZm9yCglAJHtFQ0hP X01TR30KCUBzbGVlcCAke1dBUk5JTkdfV0FJVH0KLmVuZGlmCgouaWYgZGVmaW5lZChERVZFTE9Q RVIpCi5pZiBkZWZpbmVkKERFVl9XQVJOSU5HKQpERVZfV0FSTklOR19XQUlUPz0JMTAKc2hvdy1k ZXYtd2FybmluZ3M6CglAJHtFQ0hPX01TR30gIi8hXFwgJHtQS0dOQU1FfTogTWFrZWZpbGUgd2Fy bmluZ3MsIHBsZWFzZSBjb25zaWRlciBmaXhpbmcgLyFcXCIKCUAke0VDSE9fTVNHfQouZm9yIG0g aW4gJHtERVZfV0FSTklOR30KCUAke0VDSE9fTVNHfSAiJHttfSIKLmVuZGZvcgoJQCR7RUNIT19N U0d9Ci5pZiBkZWZpbmVkKERFVl9XQVJOSU5HX0ZBVEFMKQoJQCR7RkFMU0V9Ci5lbHNlCglAc2xl ZXAgJHtERVZfV0FSTklOR19XQUlUfQouZW5kaWYKLmVuZGlmCgouaWYgZGVmaW5lZChERVZfRVJS T1IpCnNob3ctZGV2LWVycm9yczoKCUAke0VDSE9fTVNHfSAiLyFcXCAke1BLR05BTUV9OiBNYWtl ZmlsZSBlcnJvcnMgLyFcXCIKCUAke0VDSE9fTVNHfQouZm9yIG0gaW4gJHtERVZfRVJST1J9CglA JHtFQ0hPX01TR30gIiR7bX0iCi5lbmRmb3IKCUAke0VDSE9fTVNHfQoJQCR7RkFMU0V9Ci5lbmRp ZgouZW5kaWYgI0RFVkVMT1BFUgoKIyBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBvcmRlciBvZiB0aGUg Zm9sbG93aW5nIHRhcmdldHMgaXMgaW1wb3J0YW50LCBhbmQKIyBzaG91bGQgbm90IGJlIG1vZGlm aWVkLgoKX1RBUkdFVFNfU1RBR0VTPQlTQU5JVFkgUEtHIEZFVENIIEVYVFJBQ1QgUEFUQ0ggQ09O RklHVVJFIEJVSUxEIElOU1RBTEwgUEFDS0FHRSBTVEFHRQoKIyBEZWZpbmUgdGhlIFNFUSBvZiBh Y3Rpb25zIHRvIHRha2Ugd2hlbiBlYWNoIHRhcmdldCBpcyByYW4sIGFuZCB3aGljaCB0YXJnZXRz CiMgaXQgZGVwZW5kcyBvbiBiZWZvcmUgcnVubmluZyBpdHMgU0VRLgoKX1NBTklUWV9TRVE9CXBv c3QtY2hyb290IHByZS1ldmVyeXRoaW5nIGNoZWNrLW1ha2VmaWxlIFwKCQkJCXNob3ctd2Fybmlu Z3Mgc2hvdy1kZXYtd2FybmluZ3Mgc2hvdy1kZXYtZXJyb3JzIFwKCQkJCWNoZWNrLWNhdGVnb3Jp ZXMgY2hlY2stbWFrZXZhcnMgY2hlY2stZGVza3RvcC1lbnRyaWVzIFwKCQkJCWNoZWNrLWRlcGVu ZHMgaWRlbnRpZnktaW5zdGFsbC1jb25mbGljdHMgY2hlY2stZGVwcmVjYXRlZCBcCgkJCQljaGVj ay12dWxuZXJhYmxlIGNoZWNrLWxpY2Vuc2UgY2hlY2stY29uZmlnIGJ1aWxkYW55d2F5LW1lc3Nh Z2UgXAoJCQkJb3B0aW9ucy1tZXNzYWdlCgpfUEtHX0RFUD0JCWNoZWNrLXNhbml0eQpfUEtHX1NF UT0JCXBrZy1kZXBlbmRzCl9GRVRDSF9ERVA9CQlwa2cKX0ZFVENIX1NFUT0JCWZldGNoLWRlcGVu ZHMgcHJlLWZldGNoICR7X09QVElPTlNfcHJlX2ZldGNofSBwcmUtZmV0Y2gtc2NyaXB0IFwKCQkJ CWRvLWZldGNoIGZldGNoLXNwZWNpYWxzIHBvc3QtZmV0Y2ggJHtfT1BUSU9OU19wb3N0X2ZldGNo fSBwb3N0LWZldGNoLXNjcmlwdApfRVhUUkFDVF9ERVA9CWZldGNoCl9FWFRSQUNUX1NFUT0JY2hl Y2stYnVpbGQtY29uZmxpY3RzIGV4dHJhY3QtbWVzc2FnZSBjaGVja3N1bSBleHRyYWN0LWRlcGVu ZHMgXAoJCQkJY2xlYW4td3JrZGlyICR7V1JLRElSfSBwcmUtZXh0cmFjdCAke19PUFRJT05TX3By ZV9leHRyYWN0fSBwcmUtZXh0cmFjdC1zY3JpcHQgZG8tZXh0cmFjdCBcCgkJCQlwb3N0LWV4dHJh Y3QgJHtfT1BUSU9OU19wb3N0X2V4dHJhY3R9IHBvc3QtZXh0cmFjdC1zY3JpcHQKX1BBVENIX0RF UD0JCWV4dHJhY3QKX1BBVENIX1NFUT0JCWFzay1saWNlbnNlIHBhdGNoLW1lc3NhZ2UgcGF0Y2gt ZGVwZW5kcyBwYXRoZml4IGRvczJ1bml4IGZpeC1zaGViYW5nIFwKCQkJCXByZS1wYXRjaCAke19P UFRJT05TX3ByZV9wYXRjaH0gXAoJCQkJcHJlLXBhdGNoLXNjcmlwdCBkby1wYXRjaCBjaGFyc2V0 Zml4LXBvc3QtcGF0Y2ggcG9zdC1wYXRjaCAke19PUFRJT05TX3Bvc3RfcGF0Y2h9IHBvc3QtcGF0 Y2gtc2NyaXB0Cl9DT05GSUdVUkVfREVQPQlwYXRjaApfQ09ORklHVVJFX1NFUT0JYnVpbGQtZGVw ZW5kcyBsaWItZGVwZW5kcyBjb25maWd1cmUtbWVzc2FnZSBcCgkJCQlwcmUtY29uZmlndXJlICR7 X09QVElPTlNfcHJlX2NvbmZpZ3VyZX0gcHJlLWNvbmZpZ3VyZS1zY3JpcHQgXAoJCQkJcnVuLWF1 dG90b29scyBkby1hdXRvcmVjb25mIHBhdGNoLWxpYnRvb2wgcnVuLWF1dG90b29scy1maXh1cCBk by1jb25maWd1cmUgXAoJCQkJcG9zdC1jb25maWd1cmUgJHtfT1BUSU9OU19wb3N0X2NvbmZpZ3Vy ZX0gcG9zdC1jb25maWd1cmUtc2NyaXB0Cl9CVUlMRF9ERVA9CQljb25maWd1cmUKX0JVSUxEX1NF UT0JCWJ1aWxkLW1lc3NhZ2UgcHJlLWJ1aWxkICR7X09QVElPTlNfcHJlX2J1aWxkfSBwcmUtYnVp bGQtc2NyaXB0IGRvLWJ1aWxkIFwKCQkJCXBvc3QtYnVpbGQgJHtfT1BUSU9OU19wb3N0X2J1aWxk fSBwb3N0LWJ1aWxkLXNjcmlwdAoKX1NUQUdFX0RFUD0JCWJ1aWxkCl9TVEFHRV9TRVE9CQlzdGFn ZS1tZXNzYWdlIHN0YWdlLWRpciBydW4tZGVwZW5kcyBsaWItZGVwZW5kcyBhcHBseS1zbGlzdCBw cmUtaW5zdGFsbCAke19PUFRJT05TX3ByZV9pbnN0YWxsfSAke19PUFRJT05TX3ByZV9zdGFnZX0g Z2VuZXJhdGUtcGxpc3QgXAoJCQkJcHJlLXN1LWluc3RhbGwKIyAke1BPU1RfUExJU1R9IG11c3Qg YmUgYWZ0ZXIgYW55dGhpbmcgdGhhdCBtb2RpZmllcyBUTVBQTElTVApfU1RBR0VfU0VRKz0JY3Jl YXRlLXVzZXJzLWdyb3VwcyBkby1pbnN0YWxsIFwKCQkJCWttb2QtcG9zdC1pbnN0YWxsIGZpeC1w ZXJsLXRoaW5ncyBcCgkJCQl3ZWJwbHVnaW4tcG9zdC1pbnN0YWxsIHBvc3QtaW5zdGFsbCAke19P UFRJT05TX3Bvc3RfaW5zdGFsbH0gcG9zdC1pbnN0YWxsLXNjcmlwdCBcCgkJCQltb3ZlLXVuaXF1 ZWZpbGVzIHBhdGNoLWxhZmlsZXMgcG9zdC1zdGFnZSAke19PUFRJT05TX3Bvc3Rfc3RhZ2V9IGNv bXByZXNzLW1hbiBcCgkJCQlpbnN0YWxsLXJjLXNjcmlwdCBpbnN0YWxsLWxkY29uZmlnLWZpbGUg aW5zdGFsbC1saWNlbnNlIFwKCQkJCWluc3RhbGwtZGVza3RvcC1lbnRyaWVzIGFkZC1wbGlzdC1p bmZvIGFkZC1wbGlzdC1kb2NzIFwKCQkJCWFkZC1wbGlzdC1leGFtcGxlcyBhZGQtcGxpc3QtZGF0 YSBhZGQtcGxpc3QtcG9zdCBcCgkJCQltb3ZlLXVuaXF1ZWZpbGVzLXBsaXN0ICR7UE9TVF9QTElT VH0KLmlmIGRlZmluZWQoREVWRUxPUEVSKQpfU1RBR0VfU0VRKz0Jc3RhZ2UtcWEKLmVuZGlmCl9J TlNUQUxMX0RFUD0Jc3RhZ2UKX0lOU1RBTExfU0VRPQlpbnN0YWxsLW1lc3NhZ2UgcnVuLWRlcGVu ZHMgbGliLWRlcGVuZHMgY2hlY2stYWxyZWFkeS1pbnN0YWxsZWQKX0lOU1RBTExfU1VTRVE9CWZh a2UtcGtnIHNlY3VyaXR5LWNoZWNrCgpfUEFDS0FHRV9ERVA9CXN0YWdlCl9QQUNLQUdFX1NFUT0J cGFja2FnZS1tZXNzYWdlIHByZS1wYWNrYWdlICR7X09QVElPTlNfcHJlX3BhY2thZ2V9IHByZS1w YWNrYWdlLXNjcmlwdCBkby1wYWNrYWdlICR7X09QVElPTlNfcG9zdF9wYWNrYWdlfSBwb3N0LXBh Y2thZ2Utc2NyaXB0CgojIEVuZm9yY2Ugb3JkZXIgZm9yIC1qTiBidWlsZHMKCi5mb3IgX3QgaW4g JHtfVEFSR0VUU19TVEFHRVN9Ci4gIGZvciBzIGluICR7XyR7X3R9X1NFUX0KLiAgICBpZiB0YXJn ZXQoJHtzfSkKLiAgICAgIGlmICEgJHtOT1RQSE9OWTpNJHtzfX0KX1BIT05ZX1RBUkdFVFMrPSAk e3N9Ci4gICAgICBlbmRpZgpfJHtfdH1fUkVBTF9TRVErPQkke3N9Ci4gICAgZW5kaWYKLiAgZW5k Zm9yCi4gIGZvciBzIGluICR7XyR7X3R9X1NVU0VRfQouICAgIGlmIHRhcmdldCgke3N9KQouICAg ICAgaWYgISAke05PVFBIT05ZOk0ke3N9fQpfUEhPTllfVEFSR0VUUys9ICR7c30KLiAgICAgICBl bmRpZgpfJHtfdH1fUkVBTF9TVVNFUSs9CSR7c30KLiAgICBlbmRpZgouICBlbmRmb3IKLk9SREVS OiAke18ke190fV9ERVB9ICR7XyR7X3R9X1JFQUxfU0VRfQouZW5kZm9yCgojIERlZmluZSBhbGwg b2YgdGhlIG1haW4gdGFyZ2V0cyB3aGljaCBkZXBlbmQgb24gYSBzZXF1ZW5jZSBvZiBvdGhlciB0 YXJnZXRzLgojIFNlZSBhYm92ZSAqX1NFUSBhbmQgKl9ERVAuIFRoZSBfREVQIHdpbGwgcnVuIGJl Zm9yZSB0aGlzIGRlZmluZWQgdGFyZ2V0IGlzCiMgcmFuLiBUaGUgX1NFUSB3aWxsIHJ1biBhcyB0 aGlzIHRhcmdldCBvbmNlIF9ERVAgaXMgc2F0aXNmaWVkLgoKLmZvciB0YXJnZXQgaW4gZXh0cmFj dCBwYXRjaCBjb25maWd1cmUgYnVpbGQgc3RhZ2UgaW5zdGFsbCBwYWNrYWdlCgojIENoZWNrIGlm IGNvbmZpZyBkaWFsb2cgbmVlZHMgdG8gc2hvdyBhbmQgZXhlY3V0ZSBpdCBpZiBuZWVkZWQuIElm IGlzIGl0IG5vdAojIG5lZWRlZCAoX09QVElPTlNfT0spLCB0aGVuIGp1c3QgZGVwZW5kIG9uIHRo ZSBjb29raWUgd2hpY2ggaXMgZGVmaW5lZCBsYXRlcgojIHRvIGRlcGVuZCBvbiB0aGUgKl9ERVAg YW5kIGV4ZWN1dGUgdGhlICpfU0VRLgojIElmIG9wdGlvbnMgYXJlIHJlcXVpcmVkLCBleGVjdXRl IGNvbmZpZy1jb25kaXRpb25hbCBhbmQgdGhlbiByZS1leGVjdXRlIHRoZQojIHRhcmdldCBub3Rp bmcgdGhhdCBjb25maWcgaXMgbm8gbG9uZ2VyIG5lZWRlZC4KLmlmICF0YXJnZXQoJHt0YXJnZXR9 KSAmJiBkZWZpbmVkKF9PUFRJT05TX09LKQpfUEhPTllfVEFSR0VUUys9ICR7dGFyZ2V0fQoke3Rh cmdldH06ICR7JHt0YXJnZXQ6dHV9X0NPT0tJRX0KLmVsaWYgIXRhcmdldCgke3RhcmdldH0pCiR7 dGFyZ2V0fTogY29uZmlnLWNvbmRpdGlvbmFsCglAY2QgJHsuQ1VSRElSfSAmJiAke01BS0V9IENP TkZJR19ET05FXyR7VU5JUVVFTkFNRTp0dX09MSAkeyR7dGFyZ2V0OnR1fV9DT09LSUV9Ci5lbGlm IHRhcmdldCgke3RhcmdldH0pICYmIGRlZmluZWQoSUdOT1JFKQouZW5kaWYKCi5pZiAhZXhpc3Rz KCR7JHt0YXJnZXQ6dHV9X0NPT0tJRX0pCgojIERlZmluZSB0aGUgcmVhbCB0YXJnZXQgYmVoYXZp b3IuIERlcGVuZCBvbiB0aGUgdGFyZ2V0J3MgKl9ERVAuIEV4ZWN1dGUKIyB0aGUgdGFyZ2V0J3Mg Kl9TRVEuIEFsc28gaGFuZGxlIHN1IGFuZCBVU0VfU1VCTUFLRSBuZWVkcy4KLmlmICR7VUlEfSAh PSAwICYmIGRlZmluZWQoXyR7dGFyZ2V0OnR1fV9SRUFMX1NVU0VRKSAmJiAhZGVmaW5lZChJTlNU QUxMX0FTX1VTRVIpCi4gIGlmIGRlZmluZWQoVVNFX1NVQk1BS0UpCiR7JHt0YXJnZXQ6dHV9X0NP T0tJRX06ICR7XyR7dGFyZ2V0OnR1fV9ERVB9CglAY2QgJHsuQ1VSRElSfSAmJiAke01BS0V9ICR7 XyR7dGFyZ2V0OnR1fV9SRUFMX1NFUX0KLiAgZWxzZSAgIyAhVVNFX1NVQk1BS0UKJHske3Rhcmdl dDp0dX1fQ09PS0lFfTogJHtfJHt0YXJnZXQ6dHV9X0RFUH0gJHtfJHt0YXJnZXQ6dHV9X1JFQUxf U0VRfQouICBlbmRpZiAjIFVTRV9TVUJNQUtFCglAJHtFQ0hPX01TR30gIj09PT4gIFN3aXRjaGlu ZyB0byByb290IGNyZWRlbnRpYWxzIGZvciAnJHt0YXJnZXR9JyB0YXJnZXQiCglAY2QgJHsuQ1VS RElSfSAmJiBcCgkJJHtTVV9DTUR9ICIke01BS0V9ICR7XyR7dGFyZ2V0OnR1fV9SRUFMX1NVU0VR fSIKCUAke0VDSE9fTVNHfSAiPT09PiAgUmV0dXJuaW5nIHRvIHVzZXIgY3JlZGVudGlhbHMiCglA JHtUT1VDSH0gJHtUT1VDSF9GTEFHU30gJHsuVEFSR0VUfQouZWxzZSAjIE5vIFNVIG5lZWRlZAou ICBpZiBkZWZpbmVkKFVTRV9TVUJNQUtFKQokeyR7dGFyZ2V0OnR1fV9DT09LSUV9OiAke18ke3Rh cmdldDp0dX1fREVQfQoJQGNkICR7LkNVUkRJUn0gJiYgXAoJCSR7TUFLRX0gJHtfJHt0YXJnZXQ6 dHV9X1JFQUxfU0VRfSAke18ke3RhcmdldDp0dX1fUkVBTF9TVVNFUX0KCUAke1RPVUNIfSAke1RP VUNIX0ZMQUdTfSAkey5UQVJHRVR9Ci4gIGVsc2UgIyAhVVNFX1NVQk1BS0UKJHske3RhcmdldDp0 dX1fQ09PS0lFfTogJHtfJHt0YXJnZXQ6dHV9X0RFUH0gJHtfJHt0YXJnZXQ6dHV9X1JFQUxfU0VR fSAke18ke3RhcmdldDp0dX1fUkVBTF9TVVNFUX0KCUAke1RPVUNIfSAke1RPVUNIX0ZMQUdTfSAk ey5UQVJHRVR9Ci4gIGVuZGlmICMgVVNFX1NVQk1BS0UKLmVuZGlmICMgU1UgbmVlZGVkCgouZWxz ZSAjIGV4aXN0cyhjb29raWUpCiR7JHt0YXJnZXQ6dHV9X0NPT0tJRX06OgoJQGlmIFsgLWUgJHsu VEFSR0VUfSBdOyB0aGVuIFwKCQkke0RPX05BREF9OyBcCgllbHNlIFwKCQljZCAkey5DVVJESVJ9 ICYmICR7TUFLRX0gJHsuVEFSR0VUfTsgXAoJZmkKLmVuZGlmICMgIWV4aXN0cyhjb29raWUpCgou ZW5kZm9yICMgZm9yZWFjaCh0YXJnZXRzKQoKLlBIT05ZOiAke19QSE9OWV9UQVJHRVRTfSBjaGVj ay1zYW5pdHkgZmV0Y2ggcGtnCgouaWYgIXRhcmdldChjaGVjay1zYW5pdHkpCmNoZWNrLXNhbml0 eTogJHtfU0FOSVRZX1JFQUxfU0VRfQouZW5kaWYKCi5pZiAhdGFyZ2V0KGZldGNoKQpmZXRjaDog JHtfRkVUQ0hfREVQfSAke19GRVRDSF9SRUFMX1NFUX0KLmVuZGlmCgouaWYgIXRhcmdldChwa2cp CnBrZzogJHtfUEtHX0RFUH0gJHtfUEtHX1JFQUxfU0VRfQouZW5kaWYKCi5lbmRpZgojIEVuZCBv ZiBwb3N0LW1ha2VmaWxlIHNlY3Rpb24uCgouZW5kaWYKIyBFbmQgb2YgdGhlIERFU1RESVIgaWYg c3RhdGVtZW50Cg== --_bbd834ec-684f-4050-82ae-b205d8a5c3e3_-- From owner-freebsd-arm@freebsd.org Fri Jul 10 17:29:34 2015 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 1C91135A0; Fri, 10 Jul 2015 17:29:34 +0000 (UTC) (envelope-from m.vale@live.com.au) Received: from COL004-OMC4S5.hotmail.com (col004-omc4s5.hotmail.com [65.55.34.207]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (Client CN "*.outlook.com", Issuer "MSIT Machine Auth CA 2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id E843512F9; Fri, 10 Jul 2015 17:29:33 +0000 (UTC) (envelope-from m.vale@live.com.au) Received: from COL130-W48 ([65.55.34.199]) by COL004-OMC4S5.hotmail.com over TLS secured channel with Microsoft SMTPSVC(7.5.7601.23008); Fri, 10 Jul 2015 10:29:27 -0700 X-TMN: [DGueiRNafvI9GTIU/FF4jMhuLSxTKPgz] X-Originating-Email: [m.vale@live.com.au] Message-ID: Content-Type: multipart/mixed; boundary="_7447fe4a-fceb-481d-8350-4c3ee46c7a8e_" From: Michael Vale To: "sbruno@freebsd.org" , "freebsd-mips@freebsd.org" , "freebsd-embedded@freebsd.org" , "freebsd-arm@freebsd.org" Subject: RE: Cross Ports - working - find attached bsd.port.mk Date: Sat, 11 Jul 2015 03:59:26 +1030 Importance: Normal In-Reply-To: <559FF4D5.6040605@ignoranthack.me> References: , <559FF4D5.6040605@ignoranthack.me> MIME-Version: 1.0 X-OriginalArrivalTime: 10 Jul 2015 17:29:27.0270 (UTC) FILETIME=[F8A0E860:01D0BB35] X-Content-Filtered-By: Mailman/MimeDel 2.1.20 X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jul 2015 17:29:34 -0000 --_7447fe4a-fceb-481d-8350-4c3ee46c7a8e_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable please find attached unified diff patch. > Date: Fri=2C 10 Jul 2015 09:37:41 -0700 > From: sbruno@ignoranthack.me > To: m.vale@live.com.au=3B freebsd-mips@freebsd.org > Subject: Re: Cross Ports - working - find attached bsd.port.mk >=20 > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA512 >=20 > On 07/10/15 08:31=2C Michael Vale wrote: > > Okay=2C So=2C I'm submitting my work on cross ports. Here's what works > > and what doesn't work Clang support is there but GNU configure > > tries to append -march=3Dmips32r2 to the command which causes the > > compiler check to fail. GCC support is there=2C except when a GNU > > configure script tries to link -lgcc_s - apparently Adrian and bapt > > were meant to have fixed this in -head=2C but I updated and still had > > the problem. So an example of the ports I've tried and worked are:=20 > > sysutils/busyboxsecurity/dropbear Now when running bmake > > X_BUILD_FOR=3Dmips on dropbear=2C it fails "installing" files into the > > stage. But if you run bmake again without X_BUILD_FOR=3Dmips it > > "installs" those files into stage and one can continue along with > > bmake install. It is assumed that one has built a world with > > freebsd-wifi-build. An example of running a bmake is=20 > > SRCDIR=3D/home/masked/work/src bmake X_BUILD_FOR=3Dmips > >=20 > >=20 >=20 > I'm glad that you've made some progress with cross building without > emulation. I'd like to see what you've been able to accomplish with > your changes. >=20 > Is there anyway you can post some kind of unified diff that we can > view so that we can more easily (I'm lazy) see what you've been up to? >=20 > sean > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v2 >=20 > iQF8BAEBCgBmBQJVn/TTXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w > ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXRCQUFENDYzMkU3MTIxREU4RDIwOTk3REQx > MjAxRUZDQTFFNzI3RTY0AAoJEBIB78oecn5kUKMIAL/ob4UX18T811yyO0KA82YE > HJVXdVN/bbx1gQ1PKJVXms5c8nylQ0RRScEvBQUmWXMEsVMFGXbeyPCuqBgEZakT > UlRGnEOh3swzXfr6ssXI4afguKmlf/CC/lUPCDauL4efDJGqix2IjjuQhXdnl0y+ > E6xZD67NdgyRhOCl/Ynz1LRf5Ov6kYwUoxsnTE6nVACL7VXT1gxEm1pL/yl7n9cA > psrbkwOMmANvakTfaVeO2em22YB/YkwYHFjorzxgPWPm3W0gDisQTPck37y8hEqP > Vx9W8zdNbt0FMIjip+dY4EbBQZKHW9QfeWK5YBeOQ8d0m+vNLwnz1EQCfLdfsC4=3D > =3Dlh// > -----END PGP SIGNATURE----- = --_7447fe4a-fceb-481d-8350-4c3ee46c7a8e_ Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="bsd.port.mk.patch" LS0tIGJzZC5wb3J0Lm1rCTIwMTUtMDctMTEgMDM6MjU6NTAuMTg0NDE2MDAwICsxMDAwCisrKyBi c2QucG9ydC5tay5kb25lCTIwMTUtMDctMTEgMDM6MjY6MjYuMjMzMjY2MDAwICsxMDAwCkBAIC0x LDcgKzEsNyBAQAogIy0qLSB0YWItd2lkdGg6IDQ7IC0qLQogIyBleDp0cz00CiAjCi0jICRGcmVl QlNEJAorIyAkRnJlZUJTRDogaGVhZC9Nay9ic2QucG9ydC5tayAzOTEyOTUgMjAxNS0wNy0wNCAw ODo1Njo1NFogYmFwdCAkCiAjCSROZXRCU0Q6ICQKICMKICMJYnNkLnBvcnQubWsgLSA5NDA4MjAg Sm9yZGFuIEsuIEh1YmJhcmQuCkBAIC0xMDc4LDI1ICsxMDc4LDI2IEBACiAuaWYgIWRlZmluZWQo LlBBUlNFRElSKQogSUdOT1JFPQlDcm9zcyBidWlsZGluZyBjYW4gb25seSBiZSBkb25lIHdoZW4g dXNpbmcgYm1ha2UoMSkgYXMgbWFrZSgxKQogLmVuZGlmCisuaWYgIWRlZmluZWQoQVJDSCkKK0FS Q0g9CQkke1hfQlVJTERfRk9SfQorLmVuZGlmCiAjIERvIG5vdCBkZWZpbmUgQ1BQIG9uIHB1cnBv c2UKIC5pZiAhZGVmaW5lZChIT1NUQ0MpCiBIT1NUQ0M6PQkke0NDfQogSE9TVENYWDo9CSR7Q1hY fQogLmVuZGlmCi0uaWYgIWV4aXN0cygvdXNyLyR7WF9CVUlMRF9GT1J9L3Vzci9iaW4vY2MpCi1Y X1NZU1JPT1Q9CSR7TE9DQUxCQVNFfS8ke1hfQlVJTERfRk9SfQotLmVsc2UKLVhfU1lTUk9PVD0J L3Vzci8ke1hfQlVJTERfRk9SfQotLmVuZGlmCi1DQz0JCSR7WF9TWVNST09UfS91c3IvYmluL2Nj Ci1DWFg9CSR7WF9TWVNST09UfS91c3IvYmluL2MrKwotTk09CQkke1hfQlVJTERfRk9SfS1ubQot U1RSSVBfQ01EPQkke1hfQlVJTERfRk9SfS1zdHJpcAorCitTWVNST09UPQkke1NSQ0RJUn0vLi4v cm9vdC8ke0FSQ0h9LworCitOTT0JCSR7QVJDSH0tZnJlZWJzZC1ubQorU1RSSVBfQ01EPQkke0FS Q0h9LWZyZWVic2Qtc3RyaXAKICMgb25seSBibWFrZSBzdXBwb3J0IHRoZSBiZWxvdwogU1RSSVBC SU49CSR7U1RSSVBfQ01EfQogLmV4cG9ydC5lbnYgU1RSSVBCSU4KKwogLmVuZGlmCiAKKwogIwog IyBERVNURElSIHNlY3Rpb24gdG8gc3RhcnQgYSBjaHJvb3RlZCBwcm9jZXNzIGlmIGludm9rZWQg d2l0aCBERVNURElSIHNldAogIwpAQCAtMTU0MSwxMiArMTU0Miw0NCBAQAogCQkJCVBPUlRTRElS PSIke1BPUlRTRElSfSIKIAogLmlmIGRlZmluZWQoWF9CVUlMRF9GT1IpCi1CVUlMRF9ERVBFTkRT Kz0JJHtYX0JVSUxEX0ZPUn0tY2M6JHtQT1JUU0RJUn0vZGV2ZWwvJHtYX0JVSUxEX0ZPUn0teGRl dgotUEtHX0VOVis9CQlBQklfRklMRT0ke1hfU1lTUk9PVH0vdXNyL2xpYi9jcnQxLm8KLU1BS0Vf RU5WKz0JCU5NPSR7Tk19IFwKLQkJCQlTVFJJUEJJTj0ke1hfQlVJTERfRk9SfS1zdHJpcCBcCi0J CQkJUEtHX0NPTkZJR19TWVNST09UX0RJUj0iJHtYX1NZU1JPT1R9IgotQ09ORklHVVJFX0VOVis9 CVBLR19DT05GSUdfU1lTUk9PVF9ESVI9IiR7WF9TWVNST09UfSIKKy5pZiAke0NDfSA9PSBnY2MK K0NPTkZJR1VSRV9UQVJHRVQ9CSR7QVJDSH0tcG9ydGJsZC0ke09QU1lTOnRsfSR7T1NSRUx9CitD Qz0JCQkke0NPTkZJR1VSRV9UQVJHRVR9LWdjYworQ1hYPQkJCSR7QVJDSH0tcG9ydGJsZC0ke09Q U1lTOnRsfSR7T1NSRUx9LWcrKworQlVJTERfREVQRU5EUys9CQkke0NPTkZJR1VSRV9UQVJHRVR9 LWdjYzoke1BPUlRTRElSfS9kZXZlbC8ke0FSQ0h9LWdjYworICAgICAgICAJCUBpZiBbICEgLWgg L3Vzci9sb2NhbC9iaW4vbWlwcy1wb3J0YmxkLWZyZWVic2QxMS4wLWFyICBdOyB0aGVuIFwKKwkJ CSAgIGxuIC1zZiAvdXNyL2xvY2FsL2Jpbi9taXBzLWZyZWVic2QtYXIgL3Vzci9sb2NhbC9iaW4v bWlwcy1wb3J0YmxkLWZyZWVic2QxMS4wLWFyIDsgXAorCQkJZmkgOworCQkJaWYgWyAhIC1oIC91 c3IvbG9jYWwvYmluL21pcHMtcG9ydGJsZC1mcmVlYnNkMTEuMC1ubSAgXTsgdGhlbiBcCisJCQkg ICBsbiAtc2YgL3Vzci9sb2NhbC9iaW4vbWlwcy1mcmVlYnNkLW5tIC91c3IvbG9jYWwvYmluL21p cHMtcG9ydGJsZC1mcmVlYnNkMTEuMC1ubSA7IFwKKwkJCWZpIDsKKwkJCWlmIFsgISAtaCAvdXNy L2xvY2FsL2Jpbi9taXBzLXBvcnRibGQtZnJlZWJzZDExLjAtcmFubGliICBdOyB0aGVuIFwKKwkJ CSAgIGxuIC1zZiAvdXNyL2xvY2FsL2Jpbi9taXBzLWZyZWVic2QtcmFubGliIC91c3IvbG9jYWwv YmluL21pcHMtcG9ydGJsZC1mcmVlYnNkMTEuMC1yYW5saWIgOyBcCisJCQlmaSA7CisJCQlpZiBb ICEgLWggL3Vzci9sb2NhbC9iaW4vbWlwcy1wb3J0YmxkLWZyZWVic2QxMS4wLXN0cmlwICBdOyB0 aGVuIFwKKwkJCSAgIGxuIC1zZiAvdXNyL2xvY2FsL2Jpbi9taXBzLWZyZWVic2Qtc3RyaXAgL3Vz ci9sb2NhbC9iaW4vbWlwcy1wb3J0YmxkLWZyZWVic2QxMS4wLXN0cmlwIDsgXAorCQkJZmkKKwor LmVuZGlmCisuaWYgJHtDQ30gPT0gY2MgfHwgJHtDQ30gPT0gY2xhbmcKK0NPTkZJR1VSRV9UQVJH RVQ9ICAgICAgICR7QVJDSH0tcG9ydGJsZC0ke09QU1lTOnRsfSR7T1NSRUx9CitDRkxBR1MrPQkJ LS10YXJnZXQ9JHtDT05GSUdVUkVfVEFSR0VUfQorLmVuZGlmCisKK1BLR19FTlYrPQkJQUJJX0ZJ TEU9JHtTWVNST09UfS91c3IvbGliL2NydDEubworTk09CQkJJHtOTX0KK0xEPQkJCSR7Q09ORklH VVJFX1RBUkdFVH0tZ2NjLWxkCitBUj0JCQkke0NPTkZJR1VSRV9UQVJHRVR9LWdjYy1hcgorUkFO TElCPQkJCSR7Q09ORklHVVJFX1RBUkdFVH0tZ2NjLXJhbmxpYgorSU5DUz0JCQktSSR7U1JDRElS fS8uLi9yb290LyR7QVJDSH0vdXNyL2luY2x1ZGUKK0NST1NTX0NPTVBJTEU9CQkke0FSQ0h9LXBv cnRibGQtZnJlZWJzZCR7T1NfUkVMfQorU1lTUk9PVD0JCSR7U1JDRElSfS8uLi9yb290LyR7QVJD SH0KK0NGTEFHUys9CQktLXN5c3Jvb3Q9JHtTWVNST09UfSAke0NQVV9BUkdTfSAke0lOQ1N9IC1P CitDWFhGTEFHUys9CQktLXN5c3Jvb3Q9JHtTWVNST09UfSAke0NQVV9BUkdTfSAke0lOQ1N9IC1P CitMREZMQUdTKz0JCS0tc3lzcm9vdD0ke1NZU1JPT1R9CitTVFJJUEJJTj0JCSR7U1RSSVB9CitQ S0dfQ09ORklHX1NZU1JPT1RfRElSPQkiJHtTWVNST09UfSIKK0NPTkZJR1VSRV9FTlYrPQkJUEtH X0NPTkZJR19TWVNST09UX0RJUj0iJHtTWVNST09UfSIKIC5lbmRpZgogCiBXUktESVI/PQkJJHtX UktESVJQUkVGSVh9JHsuQ1VSRElSfS93b3JrCkBAIC0yNjIxLDggKzI2NTQsMTMgQEAKIAogQ09O RklHVVJFX1NDUklQVD89CWNvbmZpZ3VyZQogQ09ORklHVVJFX0NNRD89CQkuLyR7Q09ORklHVVJF X1NDUklQVH0KLUNPTkZJR1VSRV9UQVJHRVQ/PQkke0FSQ0h9LXBvcnRibGQtJHtPUFNZUzp0bH0k e09TUkVMfQotQ09ORklHVVJFX1RBUkdFVDo9CSR7Q09ORklHVVJFX1RBUkdFVDpTLy0tYnVpbGQ9 Ly99CitCVUlMRF9BUkNIIT0JCSR7VU5BTUV9IC1wCitDT05GSUdVUkVfVEFSR0VUX0JVSUxEPz0J JHtCVUlMRF9BUkNIfS1wb3J0YmxkLSR7T1BTWVM6dGx9JHtPU1JFTH0KK0NPTkZJR1VSRV9UQVJH RVRfQlVJTEQ6PQkke0NPTkZJR1VSRV9UQVJHRVRfQlVJTEQ6Uy8tLWJ1aWxkPS8vfQorIy5pZiBk ZWZpbmVkKFhfQlVJTERfRk9SKQorI0NPTkZJR1VSRV9UQVJHRVRfVEFSR0VUPz0JCSR7QVJDSH0t cG9ydGJsZC0ke09QU1lTOnRsfSR7T1NSRUx9CisjQ09ORklHVVJFX1RBUkdFVF9UQVJHRVQ6PQkJ JHtDT05GSUdVUkVfVEFSR0VUX1RBUkdFVDpTLy0tdGFyZ2V0PS8vfQorIy5lbmRpZgogQ09ORklH VVJFX0xPRz89CQljb25maWcubG9nCiAKICMgQSBkZWZhdWx0IG1lc3NhZ2UgdG8gcHJpbnQgaWYg ZG8tY29uZmlndXJlIGZhaWxzLgpAQCAtMjYzNyw5ICsyNjc1LDYgQEAKIEdOVV9DT05GSUdVUkVf TUFOUFJFRklYPz0JJHtNQU5QUkVGSVh9CiBDT05GSUdfU0lURT89CQkke1BPUlRTRElSfS9UZW1w bGF0ZXMvY29uZmlnLnNpdGUKIENPTkZJR1VSRV9BUkdTKz0JLS1wcmVmaXg9JHtHTlVfQ09ORklH VVJFX1BSRUZJWH0gJCR7X0xBVEVfQ09ORklHVVJFX0FSR1N9Ci0uaWYgZGVmaW5lZChYX0JVSUxE X0ZPUikKLUNPTkZJR1VSRV9BUkdTKz0JLS1ob3N0PSR7WF9CVUlMRF9GT1J9Ci0uZW5kaWYKIENP TkZJR1VSRV9FTlYrPQkJQ09ORklHX1NJVEU9JHtDT05GSUdfU0lURX0gbHRfY3Zfc3lzX21heF9j bWRfbGVuPSR7Q09ORklHVVJFX01BWF9DTURfTEVOfQogSEFTX0NPTkZJR1VSRT0JCXllcwogCkBA IC0yNjU2LDcgKzI2OTEsNyBAQAogCSAgICBfTEFURV9DT05GSUdVUkVfQVJHUz0iJCR7X0xBVEVf Q09ORklHVVJFX0FSR1N9IC0taW5mb2Rpcj0ke0dOVV9DT05GSUdVUkVfUFJFRklYfS8ke0lORk9f UEFUSH0vJHtJTkZPX1NVQkRJUn0iIDsgXAogCWZpIDsgXAogCWlmIFsgLXogImAuLyR7Q09ORklH VVJFX1NDUklQVH0gLS12ZXJzaW9uIDI+JjEgfCAke0VHUkVQfSAtaSAnKGF1dG9jb25mLioyXC4x M3xVbnJlY29nbml6ZWQgb3B0aW9uKSdgIiBdOyB0aGVuIFwKLQkJX0xBVEVfQ09ORklHVVJFX0FS R1M9IiQke19MQVRFX0NPTkZJR1VSRV9BUkdTfSAtLWJ1aWxkPSR7Q09ORklHVVJFX1RBUkdFVH0i IDsgXAorCQlfTEFURV9DT05GSUdVUkVfQVJHUz0iJCR7X0xBVEVfQ09ORklHVVJFX0FSR1N9IC0t YnVpbGQ9JHtDT05GSUdVUkVfVEFSR0VUX0JVSUxEfSAtLWhvc3Q9JHtDT05GSUdVUkVfVEFSR0VU fSIgOyBcCiAJZWxzZSBcCiAJCV9MQVRFX0NPTkZJR1VSRV9BUkdTPSIkJHtfTEFURV9DT05GSUdV UkVfQVJHU30gJHtDT05GSUdVUkVfVEFSR0VUfSIgOyBcCiAJZmkgOwo= --_7447fe4a-fceb-481d-8350-4c3ee46c7a8e_-- From owner-freebsd-arm@freebsd.org Sat Jul 11 00:59:12 2015 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C206F34C2 for ; Sat, 11 Jul 2015 00:59:12 +0000 (UTC) (envelope-from leonardofogel@yahoo.com.br) Received: from nm11-vm6.bullet.mail.ne1.yahoo.com (nm11-vm6.bullet.mail.ne1.yahoo.com [98.138.91.104]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 6252A19E3 for ; Sat, 11 Jul 2015 00:59:11 +0000 (UTC) (envelope-from leonardofogel@yahoo.com.br) Received: from [98.138.100.116] by nm11.bullet.mail.ne1.yahoo.com with NNFMP; 11 Jul 2015 00:56:02 -0000 Received: from [98.138.89.246] by tm107.bullet.mail.ne1.yahoo.com with NNFMP; 11 Jul 2015 00:56:02 -0000 Received: from [127.0.0.1] by omp1060.mail.ne1.yahoo.com with NNFMP; 11 Jul 2015 00:56:02 -0000 X-Yahoo-Newman-Property: ymail-3 X-Yahoo-Newman-Id: 550400.93394.bm@omp1060.mail.ne1.yahoo.com Received: (qmail 76325 invoked by uid 60001); 11 Jul 2015 00:56:02 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com.br; s=s1024; t=1436576162; bh=RSe6qekOaKlPp11n332DIhjVgXedkAfRu6K7wzlzURo=; h=Message-ID:Date:From:Subject:To:In-Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding; b=5MALuNOGeZ6+9zJlr/v9YM1DYLSCldZ2GBsvlMpn+SiNNdIXJ1cr8XIdg8LWbgQ2eOeh/Qx6BDMwwX622JFB5ycOFjS0RfbShHgrbjnmp8dnIdJhh7afguLZhxgtyb/F/HAGD5ZfoF/3BkVhgYwZx6BilqdZ9A1jo6JWl482ZRA= X-YMail-OSG: OwS9idoVM1k49.QSQXQUohD9Xoo0wn7C4e.JFSFD404YHRq V7vWCs5KZhZ98FFtzsIQCgdd0CAndZt2o_iXVM1aZ8F4.TIct7Bo9Dksud9r CutCh.lIAeSzlevUm9crpNCGkaDYLOZS9xFiBFJLtUezpiDPeYj8GqFzulVY QaYVx_DmzQd6UePBOEDHfwm6QL9dAYdGpvThpxUIDfAme7y0i0pYEeNpxIie Uu1bxPFJCZzlYFvJ4WuRKjuEZT2eChEDCG7eEHsvqR.1cx.S7GmUIKYbcN2U E0Xfz1SDEtBiMHe6JtQX5Gm7x6kvMxPG3IMvAu4jCnYq27ufp22_GP63I7lb ej91NNoKGuO4pEXbW27RurngLihyz5pXERy4Kq158duYVCp4fGMxWphnpKDZ I8CxsDUg5yJhqAqVN1BZ5_W2U4FKhZsClvAT6bYznJ.ymPSkmLYhBX6zXjUR 7cFzU60opHrskEzn7xdo1sAhtinHVt6ZngI.AkUKhmXTb.8UTg3na.GGGnEV SkK1FfeMHMZsd3qsxiVvrzNxpr2..lkA9dZfghOUAnZs42VkIS4dgx9yJuOy zYabGQsJ1VEB6bYQr Received: from [186.228.53.250] by web120805.mail.ne1.yahoo.com via HTTP; Fri, 10 Jul 2015 17:56:02 PDT X-Rocket-MIMEInfo: 002.001, PiBTdXJlIGxvb2tzIGxpa2UgdGhhdCAuZGVwZW5kIGZpbGUgaXMgQUZVLiBUcnkgcmVtb3ZpbmcgaXQuIElmIHRoYXQNCj4gZmFpbHMsIHRyeSByZW1vdmluZyB0aGUgZW50aXJlIG9iaiB0cmVlLiBUcnkgYWRkaW5nIFdJVEhPVVRfS0VSQkVST1M9eSBpZiBpdA0KPiBrZWVwcyBmYWlsaW5nIGFmdGVyIHRoYXQuDQo.DQo.IFdhcm5lcg0KDQpIaS4NCkkndmUgZm9sbG93ZWQgdGhlIGluc3RydWN0aW9ucywgYnV0IEkndmUgaGFkIHRvIGFkZCBtb3JlIGFuZCBtb3JlIHZhcmlhYmxlcyAoV0lUSE9VVF8qKS4gVGgBMAEBAQE- X-Mailer: YahooMailBasic/566 YahooMailWebService/0.8.203.802 Message-ID: <1436576162.23273.YahooMailBasic@web120805.mail.ne1.yahoo.com> Date: Fri, 10 Jul 2015 17:56:02 -0700 From: Leonardo Fogel Subject: Re: How to Xbuild to BBB? To: freebsd-arm@freebsd.org In-Reply-To: <34801934-D06E-491D-B30D-EEBDE54E253F@bsdimp.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jul 2015 00:59:12 -0000 > Sure looks like that .depend file is AFU. Try removing it. If that > fails, try removing the entire obj tree. Try adding WITHOUT_KERBEROS=3Dy = if it > keeps failing after that. > > Warner Hi. I've followed the instructions, but I've had to add more and more variables= (WITHOUT_*). This made me realize there could be something wrong with the = O.S. or the VM itself. Then, I updated VirtualBox, installed FreeBSD-10.1-R= ELEASE-amd64, downloaded the source code again, and now the cross-building = is running without problems. It is not finished yet, but it is far beyond t= he points where it used to fail. Many thanks. Leonardo From owner-freebsd-arm@freebsd.org Sat Jul 11 01:29:18 2015 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3C29C3A5A; Sat, 11 Jul 2015 01:29:18 +0000 (UTC) (envelope-from m.vale@live.com.au) Received: from COL004-OMC4S18.hotmail.com (col004-omc4s18.hotmail.com [65.55.34.220]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (Client CN "*.outlook.com", Issuer "MSIT Machine Auth CA 2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 18EF96C1; Sat, 11 Jul 2015 01:29:17 +0000 (UTC) (envelope-from m.vale@live.com.au) Received: from COL130-W42 ([65.55.34.200]) by COL004-OMC4S18.hotmail.com over TLS secured channel with Microsoft SMTPSVC(7.5.7601.23008); Fri, 10 Jul 2015 18:28:10 -0700 X-TMN: [sWQeCExw5mVqwwGYR0NXcRezlcsyG/QE] X-Originating-Email: [m.vale@live.com.au] Message-ID: From: Michael Vale To: "freebsd-mips@freebsd.org" , "freebsd-embedded@freebsd.org" , "freebsd-arm@freebsd.org" Subject: NEWS regarding the cross ports Date: Sat, 11 Jul 2015 11:58:11 +1030 Importance: Normal MIME-Version: 1.0 X-OriginalArrivalTime: 11 Jul 2015 01:28:10.0939 (UTC) FILETIME=[D944F8B0:01D0BB78] Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.20 X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jul 2015 01:29:18 -0000 It so turns out that i wasn't using -head source tree when building my sysr= oot which is what was causing some ports to fail with the libgcc_s.so linki= ng problem. i can confirm that ports /do/ work with a recent enough -head = source tree. = From owner-freebsd-arm@freebsd.org Sat Jul 11 06:49:20 2015 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 645FD998283; Sat, 11 Jul 2015 06:49:20 +0000 (UTC) (envelope-from m.vale@live.com.au) Received: from COL004-OMC1S12.hotmail.com (col004-omc1s12.hotmail.com [65.55.34.22]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (Client CN "*.outlook.com", Issuer "MSIT Machine Auth CA 2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3E8BF9D1; Sat, 11 Jul 2015 06:49:19 +0000 (UTC) (envelope-from m.vale@live.com.au) Received: from COL130-W3 ([65.55.34.9]) by COL004-OMC1S12.hotmail.com over TLS secured channel with Microsoft SMTPSVC(7.5.7601.23008); Fri, 10 Jul 2015 23:48:13 -0700 X-TMN: [eaIdZVGvnN/ZPKggoHZ6VW8QZidlUiNJ] X-Originating-Email: [m.vale@live.com.au] Message-ID: Content-Type: multipart/mixed; boundary="_9931675c-5df3-4acc-b914-4d03e286995f_" From: Michael Vale To: "freebsd-embedded@freebsd.org" , "freebsd-mips@freebsd.org" , "freebsd-arm@freebsd.org" Subject: REVISION: Cross Ports patch Date: Sat, 11 Jul 2015 17:18:12 +1030 Importance: Normal MIME-Version: 1.0 X-OriginalArrivalTime: 11 Jul 2015 06:48:13.0108 (UTC) FILETIME=[8EA76F40:01D0BBA5] X-Content-Filtered-By: Mailman/MimeDel 2.1.20 X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jul 2015 06:49:20 -0000 --_9931675c-5df3-4acc-b914-4d03e286995f_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable This fixes the problem that wasn't producing target binaries. You may notice when some GNU configure scripts are running that this appear= s to hang=2C but it doesn't it just takes time: [ checking for BSD- or MS-compatible name lister (nm)... ] You may notice this taking it's sweet time and also failing (but the build = still works): [ checking command to parse /usr/local/bin/mips-portbld-freebsd11.0-nm = output from mips-portbld-freebsd11.0-gcc object... ] So=2C with that said=2C many ports appear to work. The only bug left is when it fails to "install" files into the stage after = building=2C you must run "bmake" manually (from the ports directory - not t= his when dealing with dependencies)=2C then follow it up with "SRCDIR=3D/pa= th/to/src bmake X_BUILD_FOR=3Darch install" = --_9931675c-5df3-4acc-b914-4d03e286995f_ Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="bsd.port.mk.patch" LS0tIGJzZC5wb3J0Lm1rCTIwMTUtMDctMTEgMDM6MjU6NTAuMTg0NDE2MDAwICsxMDAwCisrKyBi c2QucG9ydC5tay5kb25lCTIwMTUtMDctMTEgMDk6NDg6MjYuMzAzNTkxMDAwICsxMDAwCkBAIC0x LDcgKzEsNyBAQAogIy0qLSB0YWItd2lkdGg6IDQ7IC0qLQogIyBleDp0cz00CiAjCi0jICRGcmVl QlNEJAorIyAkRnJlZUJTRDogaGVhZC9Nay9ic2QucG9ydC5tayAzOTEyOTUgMjAxNS0wNy0wNCAw ODo1Njo1NFogYmFwdCAkCiAjCSROZXRCU0Q6ICQKICMKICMJYnNkLnBvcnQubWsgLSA5NDA4MjAg Sm9yZGFuIEsuIEh1YmJhcmQuCkBAIC0xMDc4LDI1ICsxMDc4LDI2IEBACiAuaWYgIWRlZmluZWQo LlBBUlNFRElSKQogSUdOT1JFPQlDcm9zcyBidWlsZGluZyBjYW4gb25seSBiZSBkb25lIHdoZW4g dXNpbmcgYm1ha2UoMSkgYXMgbWFrZSgxKQogLmVuZGlmCisuaWYgIWRlZmluZWQoQVJDSCkKK0FS Q0g9CQkke1hfQlVJTERfRk9SfQorLmVuZGlmCiAjIERvIG5vdCBkZWZpbmUgQ1BQIG9uIHB1cnBv c2UKIC5pZiAhZGVmaW5lZChIT1NUQ0MpCiBIT1NUQ0M6PQkke0NDfQogSE9TVENYWDo9CSR7Q1hY fQogLmVuZGlmCi0uaWYgIWV4aXN0cygvdXNyLyR7WF9CVUlMRF9GT1J9L3Vzci9iaW4vY2MpCi1Y X1NZU1JPT1Q9CSR7TE9DQUxCQVNFfS8ke1hfQlVJTERfRk9SfQotLmVsc2UKLVhfU1lTUk9PVD0J L3Vzci8ke1hfQlVJTERfRk9SfQotLmVuZGlmCi1DQz0JCSR7WF9TWVNST09UfS91c3IvYmluL2Nj Ci1DWFg9CSR7WF9TWVNST09UfS91c3IvYmluL2MrKwotTk09CQkke1hfQlVJTERfRk9SfS1ubQot U1RSSVBfQ01EPQkke1hfQlVJTERfRk9SfS1zdHJpcAorCitTWVNST09UPQkke1NSQ0RJUn0vLi4v cm9vdC8ke0FSQ0h9LworCitOTT0JCSR7QVJDSH0tZnJlZWJzZC1ubQorU1RSSVBfQ01EPQkke0FS Q0h9LWZyZWVic2Qtc3RyaXAKICMgb25seSBibWFrZSBzdXBwb3J0IHRoZSBiZWxvdwogU1RSSVBC SU49CSR7U1RSSVBfQ01EfQogLmV4cG9ydC5lbnYgU1RSSVBCSU4KKwogLmVuZGlmCiAKKwogIwog IyBERVNURElSIHNlY3Rpb24gdG8gc3RhcnQgYSBjaHJvb3RlZCBwcm9jZXNzIGlmIGludm9rZWQg d2l0aCBERVNURElSIHNldAogIwpAQCAtMTU0MSwxMiArMTU0Miw0MiBAQAogCQkJCVBPUlRTRElS PSIke1BPUlRTRElSfSIKIAogLmlmIGRlZmluZWQoWF9CVUlMRF9GT1IpCi1CVUlMRF9ERVBFTkRT Kz0JJHtYX0JVSUxEX0ZPUn0tY2M6JHtQT1JUU0RJUn0vZGV2ZWwvJHtYX0JVSUxEX0ZPUn0teGRl dgotUEtHX0VOVis9CQlBQklfRklMRT0ke1hfU1lTUk9PVH0vdXNyL2xpYi9jcnQxLm8KLU1BS0Vf RU5WKz0JCU5NPSR7Tk19IFwKLQkJCQlTVFJJUEJJTj0ke1hfQlVJTERfRk9SfS1zdHJpcCBcCi0J CQkJUEtHX0NPTkZJR19TWVNST09UX0RJUj0iJHtYX1NZU1JPT1R9IgotQ09ORklHVVJFX0VOVis9 CVBLR19DT05GSUdfU1lTUk9PVF9ESVI9IiR7WF9TWVNST09UfSIKKy5pZiAke0NDfSA9PSBnY2MK K0NDPQkJCSR7Q09ORklHVVJFX1RBUkdFVH0tZ2NjCitDWFg9CQkJJHtBUkNIfS1wb3J0YmxkLSR7 T1BTWVM6dGx9JHtPU1JFTH0tZysrCitCVUlMRF9ERVBFTkRTKz0JCSR7Q09ORklHVVJFX1RBUkdF VH0tZ2NjOiR7UE9SVFNESVJ9L2RldmVsLyR7QVJDSH0tZ2NjCisgICAgICAgIAkJQGlmIFsgISAt aCAvdXNyL2xvY2FsL2Jpbi9taXBzLXBvcnRibGQtZnJlZWJzZDExLjAtYXIgIF07IHRoZW4gXAor CQkJICAgbG4gLXNmIC91c3IvbG9jYWwvYmluL21pcHMtZnJlZWJzZC1hciAvdXNyL2xvY2FsL2Jp bi9taXBzLXBvcnRibGQtZnJlZWJzZDExLjAtYXIgOyBcCisJCQlmaSA7CisJCQlpZiBbICEgLWgg L3Vzci9sb2NhbC9iaW4vbWlwcy1wb3J0YmxkLWZyZWVic2QxMS4wLW5tICBdOyB0aGVuIFwKKwkJ CSAgIGxuIC1zZiAvdXNyL2xvY2FsL2Jpbi9taXBzLWZyZWVic2Qtbm0gL3Vzci9sb2NhbC9iaW4v bWlwcy1wb3J0YmxkLWZyZWVic2QxMS4wLW5tIDsgXAorCQkJZmkgOworCQkJaWYgWyAhIC1oIC91 c3IvbG9jYWwvYmluL21pcHMtcG9ydGJsZC1mcmVlYnNkMTEuMC1yYW5saWIgIF07IHRoZW4gXAor CQkJICAgbG4gLXNmIC91c3IvbG9jYWwvYmluL21pcHMtZnJlZWJzZC1yYW5saWIgL3Vzci9sb2Nh bC9iaW4vbWlwcy1wb3J0YmxkLWZyZWVic2QxMS4wLXJhbmxpYiA7IFwKKwkJCWZpIDsKKwkJCWlm IFsgISAtaCAvdXNyL2xvY2FsL2Jpbi9taXBzLXBvcnRibGQtZnJlZWJzZDExLjAtc3RyaXAgIF07 IHRoZW4gXAorCQkJICAgbG4gLXNmIC91c3IvbG9jYWwvYmluL21pcHMtZnJlZWJzZC1zdHJpcCAv dXNyL2xvY2FsL2Jpbi9taXBzLXBvcnRibGQtZnJlZWJzZDExLjAtc3RyaXAgOyBcCisJCQlmaQor CisuZW5kaWYKKy5pZiAke0NDfSA9PSBjYyB8fCAke0NDfSA9PSBjbGFuZworQ0ZMQUdTKz0JCS0t dGFyZ2V0PSR7Q09ORklHVVJFX1RBUkdFVH0KKy5lbmRpZgorCitQS0dfRU5WKz0JCUFCSV9GSUxF PSR7U1lTUk9PVH0vdXNyL2xpYi9jcnQxLm8KK05NPQkJCSR7Tk19CitMRD0JCQkke0NPTkZJR1VS RV9UQVJHRVR9LWdjYy1sZAorQVI9CQkJJHtDT05GSUdVUkVfVEFSR0VUfS1nY2MtYXIKK1JBTkxJ Qj0JCQkke0NPTkZJR1VSRV9UQVJHRVR9LWdjYy1yYW5saWIKK0lOQ1M9CQkJLUkke1NSQ0RJUn0v Li4vcm9vdC8ke0FSQ0h9L3Vzci9pbmNsdWRlCitDUk9TU19DT01QSUxFPQkJJHtBUkNIfS1wb3J0 YmxkLWZyZWVic2Qke09TX1JFTH0KK1NZU1JPT1Q9CQkke1NSQ0RJUn0vLi4vcm9vdC8ke0FSQ0h9 CitDRkxBR1MrPQkJLS1zeXNyb290PSR7U1lTUk9PVH0gJHtDUFVfQVJHU30gJHtJTkNTfSAtTwor Q1hYRkxBR1MrPQkJLS1zeXNyb290PSR7U1lTUk9PVH0gJHtDUFVfQVJHU30gJHtJTkNTfSAtTwor TERGTEFHUys9CQktLXN5c3Jvb3Q9JHtTWVNST09UfQorU1RSSVBCSU49CQkke1NUUklQfQorUEtH X0NPTkZJR19TWVNST09UX0RJUj0JIiR7U1lTUk9PVH0iCitDT05GSUdVUkVfRU5WKz0JCVBLR19D T05GSUdfU1lTUk9PVF9ESVI9IiR7U1lTUk9PVH0iCiAuZW5kaWYKIAogV1JLRElSPz0JCSR7V1JL RElSUFJFRklYfSR7LkNVUkRJUn0vd29yawpAQCAtMjYyMSw4ICsyNjUyLDE2IEBACiAKIENPTkZJ R1VSRV9TQ1JJUFQ/PQljb25maWd1cmUKIENPTkZJR1VSRV9DTUQ/PQkJLi8ke0NPTkZJR1VSRV9T Q1JJUFR9Ci1DT05GSUdVUkVfVEFSR0VUPz0JJHtBUkNIfS1wb3J0YmxkLSR7T1BTWVM6dGx9JHtP U1JFTH0KLUNPTkZJR1VSRV9UQVJHRVQ6PQkke0NPTkZJR1VSRV9UQVJHRVQ6Uy8tLWJ1aWxkPS8v fQorQlVJTERfQVJDSCE9CQkke1VOQU1FfSAtcAorQ09ORklHVVJFX0JVSUxEPz0JJHtCVUlMRF9B UkNIfS1wb3J0YmxkLSR7T1BTWVM6dGx9JHtPU1JFTH0KK0NPTkZJR1VSRV9CVUlMRDo9CSR7Q09O RklHVVJFX0JVSUxEOlMvLS1idWlsZD0vL30KK0hPU1RfQVJDSCE9CQkke1VOQU1FfSAtbQorQ09O RklHVVJFX0hPU1Q/PQkke0hPU1RfQVJDSH0tcG9ydGJsZC0ke09QU1lTOnRsfSR7T1NSRUx9CitD T05GSUdVUkVfSE9TVDo9CSR7Q09ORklHVVJFX0hPU1Q6Uy8tLWhvc3Q9Ly99CisuaWYgZGVmaW5l ZChYX0JVSUxEX0ZPUikKK0NPTkZJR1VSRV9UQVJHRVQ/PQkJJHtBUkNIfS1wb3J0YmxkLSR7T1BT WVM6dGx9JHtPU1JFTH0KK0NPTkZJR1VSRV9UQVJHRVQ6PQkJJHtDT05GSUdVUkVfVEFSR0VUOlMv LS10YXJnZXQ9Ly99CisuZW5kaWYKIENPTkZJR1VSRV9MT0c/PQkJY29uZmlnLmxvZwogCiAjIEEg ZGVmYXVsdCBtZXNzYWdlIHRvIHByaW50IGlmIGRvLWNvbmZpZ3VyZSBmYWlscy4KQEAgLTI2Mzcs OSArMjY3Niw2IEBACiBHTlVfQ09ORklHVVJFX01BTlBSRUZJWD89CSR7TUFOUFJFRklYfQogQ09O RklHX1NJVEU/PQkJJHtQT1JUU0RJUn0vVGVtcGxhdGVzL2NvbmZpZy5zaXRlCiBDT05GSUdVUkVf QVJHUys9CS0tcHJlZml4PSR7R05VX0NPTkZJR1VSRV9QUkVGSVh9ICQke19MQVRFX0NPTkZJR1VS RV9BUkdTfQotLmlmIGRlZmluZWQoWF9CVUlMRF9GT1IpCi1DT05GSUdVUkVfQVJHUys9CS0taG9z dD0ke1hfQlVJTERfRk9SfQotLmVuZGlmCiBDT05GSUdVUkVfRU5WKz0JCUNPTkZJR19TSVRFPSR7 Q09ORklHX1NJVEV9IGx0X2N2X3N5c19tYXhfY21kX2xlbj0ke0NPTkZJR1VSRV9NQVhfQ01EX0xF Tn0KIEhBU19DT05GSUdVUkU9CQl5ZXMKIApAQCAtMjY1Niw3ICsyNjkyLDcgQEAKIAkgICAgX0xB VEVfQ09ORklHVVJFX0FSR1M9IiQke19MQVRFX0NPTkZJR1VSRV9BUkdTfSAtLWluZm9kaXI9JHtH TlVfQ09ORklHVVJFX1BSRUZJWH0vJHtJTkZPX1BBVEh9LyR7SU5GT19TVUJESVJ9IiA7IFwKIAlm aSA7IFwKIAlpZiBbIC16ICJgLi8ke0NPTkZJR1VSRV9TQ1JJUFR9IC0tdmVyc2lvbiAyPiYxIHwg JHtFR1JFUH0gLWkgJyhhdXRvY29uZi4qMlwuMTN8VW5yZWNvZ25pemVkIG9wdGlvbiknYCIgXTsg dGhlbiBcCi0JCV9MQVRFX0NPTkZJR1VSRV9BUkdTPSIkJHtfTEFURV9DT05GSUdVUkVfQVJHU30g LS1idWlsZD0ke0NPTkZJR1VSRV9UQVJHRVR9IiA7IFwKKwkJX0xBVEVfQ09ORklHVVJFX0FSR1M9 IiQke19MQVRFX0NPTkZJR1VSRV9BUkdTfSAtLWJ1aWxkPSR7Q09ORklHVVJFX0JVSUxEfSAtLWhv c3Q9JHtDT05GSUdVUkVfSE9TVH0gLS10YXJnZXQ9JHtDT05GSUdVUkVfVEFSR0VUfSIgOyBcCiAJ ZWxzZSBcCiAJCV9MQVRFX0NPTkZJR1VSRV9BUkdTPSIkJHtfTEFURV9DT05GSUdVUkVfQVJHU30g JHtDT05GSUdVUkVfVEFSR0VUfSIgOyBcCiAJZmkgOwo= --_9931675c-5df3-4acc-b914-4d03e286995f_-- From owner-freebsd-arm@freebsd.org Sat Jul 11 19:17:14 2015 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C8E5A9993AE; Sat, 11 Jul 2015 19:17:14 +0000 (UTC) (envelope-from m.vale@live.com.au) Received: from COL004-OMC1S12.hotmail.com (col004-omc1s12.hotmail.com [65.55.34.22]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (Client CN "*.outlook.com", Issuer "MSIT Machine Auth CA 2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 9CD9E1C40; Sat, 11 Jul 2015 19:17:14 +0000 (UTC) (envelope-from m.vale@live.com.au) Received: from COL130-W16 ([65.55.34.8]) by COL004-OMC1S12.hotmail.com over TLS secured channel with Microsoft SMTPSVC(7.5.7601.23008); Sat, 11 Jul 2015 12:17:13 -0700 X-TMN: [wGN0g4slqo3vyI2Njn2a7djYocL9XnMp] X-Originating-Email: [m.vale@live.com.au] Message-ID: From: Michael Vale To: "freebsd-embedded@freebsd.org" , "freebsd-mips@freebsd.org" , "freebsd-arm@freebsd.org" Subject: UPDATE Cross Ports patch Date: Sun, 12 Jul 2015 05:47:13 +1030 Importance: Normal MIME-Version: 1.0 X-OriginalArrivalTime: 11 Jul 2015 19:17:13.0650 (UTC) FILETIME=[314DF120:01D0BC0E] Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.20 X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jul 2015 19:17:14 -0000 Okay=2C one small mistake=2C SRCDIR should read LOCALBASE instead in order = to correctly pickup on host/target dependencies and not mistakenly use the = system's installs of those deps. Now I just need to find some clearspace that's in there by mistake because = I believe thats what's causing the "install" to stage to fail. of course o= ne could do=20 env LOCALBASE=3D/home/masked/work/src bmake X_BUILD_FOR=3Dmips =3B bmake = =3B env LOCALBASE=3D/home/masked/work/src bmake X_BUILD_FOR=3Dmips install for now. = From owner-freebsd-arm@freebsd.org Sat Jul 11 20:39:35 2015 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C44559970F3 for ; Sat, 11 Jul 2015 20:39:35 +0000 (UTC) (envelope-from tim@kientzle.com) Received: from monday.kientzle.com (kientzle.com [142.254.26.11]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 96F82CA for ; Sat, 11 Jul 2015 20:39:34 +0000 (UTC) (envelope-from tim@kientzle.com) Received: (from root@localhost) by monday.kientzle.com (8.14.4/8.14.4) id t6BKZ6cJ080731; Sat, 11 Jul 2015 20:35:06 GMT (envelope-from tim@kientzle.com) Received: from [192.168.2.100] (192.168.1.101 [192.168.1.101]) by kientzle.com with SMTP id n2vktjj4xj7c79idfwcbzyqjyw; Sat, 11 Jul 2015 20:35:06 +0000 (UTC) (envelope-from tim@kientzle.com) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2102\)) Subject: Re: How to Xbuild to BBB? From: Tim Kientzle In-Reply-To: <1436542993.46776.YahooMailBasic@web120803.mail.ne1.yahoo.com> Date: Sat, 11 Jul 2015 13:34:51 -0700 Cc: freebsd-arm Content-Transfer-Encoding: quoted-printable Message-Id: <19291C97-5A51-42D2-AC08-6B067AB8D2BD@kientzle.com> References: <1436542993.46776.YahooMailBasic@web120803.mail.ne1.yahoo.com> To: Leonardo Fogel X-Mailer: Apple Mail (2.2102) X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jul 2015 20:39:36 -0000 > I'd also tried different instructions that Google had suggested. = They'd all failed too. Please, could you kindly point me to right = instructions on how to cross-build to BBB? =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D 1. If you just want a working system, start with the official snapshot = images which can just be copied onto an SD card and booted: ftp://ftp.freebsd.org/pub/FreeBSD/snapshots/arm/armv6/ISO-IMAGES/11.0 ftp://ftp.freebsd.org/pub/FreeBSD/snapshots/arm/armv6/ISO-IMAGES/10.0 After you=E2=80=99ve booted from there, you can do a native upgrade from = source using the same instructions as for i386 or any other FreeBSD = platform. (This requires some patience: native source upgrades on BBB = take about 40 hours.) =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D 2. If you want to build a semi-custom image, you might look at Crochet: https://github.com/freebsd/crochet =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D 3. If you really want the thrill of doing it yourself from scratch, = here=E2=80=99s the outline. (This is based on how Crochet does it; = there are many variations.) Note that the hard part here is getting the = boot bits (U-Boot and ubldr) right. Actually cross-building FreeBSD and = installing it on the SD card is quite straightforward. Caveat: It is *essential* that you have a working serial console cable = such as Adafruit 954. Without this, it is practically impossible to = diagnose boot problems. 1) Cross-build the system and kernel: $ cd /usr/src $ make TARGET=3Darm TARGET_ARCH=3Darmv6 buildworld $ make TARGET=3Darm TARGET_ARCH=3Darmv6 KERNCONF=3DBEAGLEBONE = buildkernel 2) Get a suitable version of U-Boot. The easiest way to do this is from = ports: sysutils/u-boot-beaglebone (Building U-Boot from source is more complicated; you=E2=80=99ll have to = set up a suitable cross-compiler and track down the necessary patches.) 3) Build a suitable ubldr $ cd /usr/src $ make TARGET=3Darm TARGET_ARCH=3Darmv6 buildenv # Above command starts a new shell with the appropriate ARM build = environment $ cd sys/boot $ make UBLDR_LOADADDR=3D0x88000000 -m /usr/src/share/mk all $ exit 4) Format your SD card appropriately with MBR, a 2-megabyte FAT = partition, and the rest as UFS. Mount it as /mnt. 5) Here is a somewhat outdated description of the BeagleBone boot file = layout that you can use to populate the FAT partition (note that the old = BeagleBone and the new BBB work the same way): https://wiki.freebsd.org/FreeBSD/arm/BeagleBone If you=E2=80=99re using the U-Boot port, just copy all of the files from = /usr/local/share/u-boot/u-boot-beaglebone onto the FAT partition to = start. The Wiki page is outdated in the sense that: * The =E2=80=98BB=E2=80=99 prefix on ubldr, uboot.img and uEnv.txt is = the old Crochet convention; if you=E2=80=99re using U-Boot from ports, = omit that. * The new convention is to put the DTB on the UFS partition, though I = don=E2=80=99t recall the exact layout offhand. (Hopefully someone knowledgable will update that page with more current = information.) 6) install FreeBSD onto the SD card UFS partition (be *very* certain = that you get the DESTDIR argument right here!). $ cd /usr/src $ make TARGET=3Darm TARGET_ARCH=3Darmv6 DESTDIR=3D/mnt installworld $ make TARGET=3Darm TARGET_ARCH=3Darmv6 DESTDIR=3D/mnt distrib-dirs $ make TARGET=3Darm TARGET_ARCH=3Darmv6 DESTDIR=3D/mnt distribution $ make TARGET=3Darm TARGET_ARCH=3Darmv6 DESTDIR=3D/mnt installkernel $ echo =E2=80=9CKERNCONF=3DBEAGLEBONE=E2=80=9D > /mnt/etc/src.conf $ touch /mnt/firstboot 7) Customize the UFS setup as you wish. This might include tweaking = rc.conf or changing any other configuration settings of interest. From owner-freebsd-arm@freebsd.org Sat Jul 11 21:01:28 2015 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 525E3997535 for ; Sat, 11 Jul 2015 21:01:28 +0000 (UTC) (envelope-from ian@freebsd.org) Received: from pmta2.delivery4.ore.mailhop.org (pmta2.delivery4.ore.mailhop.org [54.200.247.200]) by mx1.freebsd.org (Postfix) with SMTP id 270D0C48 for ; Sat, 11 Jul 2015 21:01:27 +0000 (UTC) (envelope-from ian@freebsd.org) Received: from ilsoft.org (unknown [73.34.117.227]) by outbound1.ore.mailhop.org (Halon Mail Gateway) with ESMTPSA; Sat, 11 Jul 2015 21:01:10 +0000 (UTC) Received: from rev (rev [172.22.42.240]) by ilsoft.org (8.14.9/8.14.9) with ESMTP id t6BL1Iva043614; Sat, 11 Jul 2015 15:01:18 -0600 (MDT) (envelope-from ian@freebsd.org) Message-ID: <1436648478.1334.183.camel@freebsd.org> Subject: Re: How to Xbuild to BBB? From: Ian Lepore To: Tim Kientzle Cc: Leonardo Fogel , freebsd-arm Date: Sat, 11 Jul 2015 15:01:18 -0600 In-Reply-To: <19291C97-5A51-42D2-AC08-6B067AB8D2BD@kientzle.com> References: <1436542993.46776.YahooMailBasic@web120803.mail.ne1.yahoo.com> <19291C97-5A51-42D2-AC08-6B067AB8D2BD@kientzle.com> Content-Type: text/plain; charset="windows-1251" X-Mailer: Evolution 3.12.10 FreeBSD GNOME Team Port Mime-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jul 2015 21:01:28 -0000 On Sat, 2015-07-11 at 13:34 -0700, Tim Kientzle wrote: > > I'd also tried different instructions that Google had suggested. They'd all failed too. Please, could you kindly point me to right instructions on how to cross-build to BBB? > > ================ > 1. If you just want a working system, start with the official snapshot images which can just be copied onto an SD card and booted: > > ftp://ftp.freebsd.org/pub/FreeBSD/snapshots/arm/armv6/ISO-IMAGES/11.0 > > ftp://ftp.freebsd.org/pub/FreeBSD/snapshots/arm/armv6/ISO-IMAGES/10.0 > > After you’ve booted from there, you can do a native upgrade from source using the same instructions as for i386 or any other FreeBSD platform. (This requires some patience: native source upgrades on BBB take about 40 hours.) > > ================ > 2. If you want to build a semi-custom image, you might look at Crochet: > > https://github.com/freebsd/crochet > > ================ > 3. If you really want the thrill of doing it yourself from scratch, here’s the outline. (This is based on how Crochet does it; there are many variations.) Note that the hard part here is getting the boot bits (U-Boot and ubldr) right. Actually cross-building FreeBSD and installing it on the SD card is quite straightforward. > > Caveat: It is *essential* that you have a working serial console cable such as Adafruit 954. Without this, it is practically impossible to diagnose boot problems. > > 1) Cross-build the system and kernel: > > $ cd /usr/src > $ make TARGET=arm TARGET_ARCH=armv6 buildworld > $ make TARGET=arm TARGET_ARCH=armv6 KERNCONF=BEAGLEBONE buildkernel > > 2) Get a suitable version of U-Boot. The easiest way to do this is from ports: sysutils/u-boot-beaglebone > > (Building U-Boot from source is more complicated; you’ll have to set up a suitable cross-compiler and track down the necessary patches.) > > 3) Build a suitable ubldr > > $ cd /usr/src > $ make TARGET=arm TARGET_ARCH=armv6 buildenv > # Above command starts a new shell with the appropriate ARM build environment > $ cd sys/boot > $ make UBLDR_LOADADDR=0x88000000 -m /usr/src/share/mk all > $ exit > > 4) Format your SD card appropriately with MBR, a 2-megabyte FAT partition, and the rest as UFS. Mount it as /mnt. > > 5) Here is a somewhat outdated description of the BeagleBone boot file layout that you can use to populate the FAT partition (note that the old BeagleBone and the new BBB work the same way): > > https://wiki.freebsd.org/FreeBSD/arm/BeagleBone > > If you’re using the U-Boot port, just copy all of the files from /usr/local/share/u-boot/u-boot-beaglebone onto the FAT partition to start. > > The Wiki page is outdated in the sense that: > * The ‘BB’ prefix on ubldr, uboot.img and uEnv.txt is the old Crochet convention; if you’re using U-Boot from ports, omit that. > * The new convention is to put the DTB on the UFS partition, though I don’t recall the exact layout offhand. > (Hopefully someone knowledgable will update that page with more current information.) > > 6) install FreeBSD onto the SD card UFS partition (be *very* certain that you get the DESTDIR argument right here!). > > $ cd /usr/src > $ make TARGET=arm TARGET_ARCH=armv6 DESTDIR=/mnt installworld > $ make TARGET=arm TARGET_ARCH=armv6 DESTDIR=/mnt distrib-dirs > $ make TARGET=arm TARGET_ARCH=armv6 DESTDIR=/mnt distribution > $ make TARGET=arm TARGET_ARCH=armv6 DESTDIR=/mnt installkernel > $ echo “KERNCONF=BEAGLEBONE” > /mnt/etc/src.conf > $ touch /mnt/firstboot > > 7) Customize the UFS setup as you wish. This might include tweaking rc.conf or changing any other configuration settings of interest. Here is some more info on arm cross-building... https://wiki.freebsd.org/FreeBSD/arm/crossbuild It's oriented towards setting up a development environment for doing edit/compile/test cycles on freebsd kernel or userland source, but it's got a lot of good background info on cross building in general. -- Ian