From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Noah Lavine Newsgroups: gmane.lisp.guile.devel Subject: Fmt Module Date: Sat, 12 Mar 2011 16:14:16 -0500 Message-ID: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=bcaec53f8e6da1058a049e4f8f3a X-Trace: dough.gmane.org 1299964548 23977 80.91.229.12 (12 Mar 2011 21:15:48 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Sat, 12 Mar 2011 21:15:48 +0000 (UTC) To: guile-devel Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Sat Mar 12 22:15:42 2011 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1PyW8y-0001Wo-L9 for guile-devel@m.gmane.org; Sat, 12 Mar 2011 22:15:39 +0100 Original-Received: from localhost ([127.0.0.1]:37252 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PyW8s-0005FY-Ts for guile-devel@m.gmane.org; Sat, 12 Mar 2011 16:14:30 -0500 Original-Received: from [140.186.70.92] (port=36594 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PyW8j-0005FN-D5 for guile-devel@gnu.org; Sat, 12 Mar 2011 16:14:23 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PyW8i-0000WU-2H for guile-devel@gnu.org; Sat, 12 Mar 2011 16:14:21 -0500 Original-Received: from mail-vw0-f41.google.com ([209.85.212.41]:42939) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PyW8h-0000W8-Py for guile-devel@gnu.org; Sat, 12 Mar 2011 16:14:20 -0500 Original-Received: by vws4 with SMTP id 4so1902779vws.0 for ; Sat, 12 Mar 2011 13:14:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:date:x-google-sender-auth :message-id:subject:from:to:content-type; bh=58pXb2UakOAGP1YZWLlkNuVJ84KfMYnCnkYNwNh9pX0=; b=NtVgaZTVqg1UTrRWRulEOqasmi5b1XlnhzUhDgY282uZxL4/SvSDxs/0KFbm9g4Cd1 3fFpDnj9u/7ha1cOMc7re/h2oFSvs+5BXf5iPVYGdGAExZUFiq21CjgktgZsG07VfFNp Jhdam+Gzap/X903Lpfm/6velNyJAG4f8PWYY0= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:date:x-google-sender-auth:message-id:subject :from:to:content-type; b=Tz1LmbdW+7AiAS7ho3t0yppOorOeFGVa/K4O0+hxRuUnFpbHOvM9JjuUYXQfTmCSnz UgB10d98SiF++c6fNHZcbTVb9I7MYVsjYNPDKcTPV1vl8a5jkE9hSsjvt2WHikDunVCz HAvhpAQJXssVM9FjmLlq+XPVmx6Mm93+6oQwI= Original-Received: by 10.52.157.39 with SMTP id wj7mr193032vdb.78.1299964456141; Sat, 12 Mar 2011 13:14:16 -0800 (PST) Original-Received: by 10.52.166.194 with HTTP; Sat, 12 Mar 2011 13:14:16 -0800 (PST) X-Google-Sender-Auth: yVf4Un5R6g-VIdl5ljWQ9j3fqLo X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 209.85.212.41 X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.devel:11859 Archived-At: --bcaec53f8e6da1058a049e4f8f3a Content-Type: text/plain; charset=ISO-8859-1 Hello all, I just completed packaging Alex Shinn's fmt library for Guile, and I'd like us to include it in the trunk. The library's home page (with documentation!) is http://synthcode.com/scheme/fmt/. It looks like a nice formatting library, and I imagine it would be useful to people who want to generate html for the web module. However, the real reason I want it in is because it has the ability to format C source code nicely, and all of the plans for the JIT complier involve automatically generating a lot of C. (I'm only attaching the basic library right now, but I hope to package up the C formatting stuff soon.) The files are all attached. To use the library, put all of the files in a folder, open Guile in that folder, do (load "fmt-guile.scm"), and then (use-modules (fmt fmt)). If you want to test the library, do (load "test-fmt.scm"). It passes all tests on my machine. fmt-guile.scm is a new file, but the other ones are almost identical to the upstream version. I'm going to try to get the changes merged so it will be easy for us to maintain. What do you think? Thanks, Noah --bcaec53f8e6da1058a049e4f8f3a Content-Type: application/octet-stream; name="fmt-column.scm" Content-Disposition: attachment; filename="fmt-column.scm" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gl7152fz0 Ozs7OyBmbXQtYmxvY2suc2NtIC0tIGNvbHVtbmFyIGZvcm1hdHRpbmcKOzsKOzsgQ29weXJpZ2h0 IChjKSAyMDA2LTIwMDcgQWxleCBTaGlubi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCjs7IEJTRC1z dHlsZSBsaWNlbnNlOiBodHRwOi8vc3ludGhjb2RlLmNvbS9saWNlbnNlLnR4dAoKCjs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Owo7OzsgQ29sdW1uYXIgZm9ybWF0dGluZwo7Owo7OyBBIGxpbmUtb3JpZW50ZWQgZm9y bWF0dGVyLiAgVGFrZXMgYSBsaXN0IG9mCjs7ICAgKGxpbmUtZm10MSBnZW4tZm10MSBsaW5lLWZt dDIgZ2VuLWZtdDIgLi4uKQo7OyBhbmQgZm9ybWF0cyBlYWNoIG9mIHRoZSBnZW4tZm10MSBmb3Jt YXRzIGFzIGNvbHVtbnMsIHByaW50ZWQKOzsgc2lkZS1ieS1zaWRlLCBlYWNoIGxpbmUgYWxsb3dp bmcgcG9zdC1wcm9jZXNzaW5nIGRvbmUgYnkgbGluZS1mbXQxCjs7IChqdXN0IHVzZSBkc3AgaWYg eW91IHdhbnQgdG8gZGlzcGxheSB0aGUgbGluZXMgdmVyYmF0aW0pLgoKOzsgQ29udGludWF0aW9u cyBjb21lIHRvIHRoZSByZXNjdWUgdG8gbWFrZSB0aGlzIHdvcmsgcHJvcGVybHksCjs7IGxldHRp bmcgdXMgd2VhdmUgdGhlIG91dHB1dCBiZXR3ZWVuIGRpZmZlcmVudCBjb2x1bW5zIHdpdGhvdXQK OzsgbmVlZGluZyB0byBidWlsZCB1cCBpbnRlcm1lZGlhdGUgc3RyaW5ncy4KCihkZWZpbmUgKGZt dC1jb2x1bW5zIC4gbHMpCiAgKGxhbWJkYSAob3JpZy1zdCkKICAgIChjYWxsLXdpdGgtY3VycmVu dC1jb250aW51YXRpb24KICAgICAgKGxhbWJkYSAocmV0dXJuKQogICAgICAgIChkZWZpbmUgKGlu ZmluaXRlPyB4KQogICAgICAgICAgKGFuZCAocGFpcj8geCkgKHBhaXI/IChjZHIgeCkpIChwYWly PyAoY2RkciB4KSkgKGNhZGRyIHgpKSkKICAgICAgICAobGV0ICgocTEgJygpKQogICAgICAgICAg ICAgIChxMiAnKCkpCiAgICAgICAgICAgICAgKHJlbWFpbmluZyAobGVuZ3RoIChyZW1vdmUgaW5m aW5pdGU/IGxzKSkpKQogICAgICAgICAgKGRlZmluZSAoZW5xISBwcm9jKSAoc2V0ISBxMiAoY29u cyBwcm9jIHEyKSkpCiAgICAgICAgICAoZGVmaW5lIChkZXEhKSAobGV0ICgocHJvYyAoY2FyIHEx KSkpIChzZXQhIHExIChjZHIgcTEpKSBwcm9jKSkKICAgICAgICAgIChkZWZpbmUgKGxpbmUtaW5p dCEpIChzZXQhIHExIChyZXZlcnNlIHEyKSkgKHNldCEgcTIgJygpKSkKICAgICAgICAgIChkZWZp bmUgKGxpbmUtZG9uZT8pIChudWxsPyBxMSkpCiAgICAgICAgICAoZGVmaW5lIChuZXh0IGNvbnQp CiAgICAgICAgICAgIChlbnEhIGNvbnQpCiAgICAgICAgICAgIChpZiAobGluZS1kb25lPykgCiAg ICAgICAgICAgICAgICAoY29uZAogICAgICAgICAgICAgICAgICAoKG5vdCAocG9zaXRpdmU/IHJl bWFpbmluZykpCiAgICAgICAgICAgICAgICAgICAocmV0dXJuIG9yaWctc3QpKQogICAgICAgICAg ICAgICAgICAoZWxzZSAgICAgICAgICAgICAgICAgOyBuZXdsaW5lCiAgICAgICAgICAgICAgICAg ICAoc2V0ISBvcmlnLXN0IChubCBvcmlnLXN0KSkKICAgICAgICAgICAgICAgICAgIChsaW5lLWlu aXQhKQogICAgICAgICAgICAgICAgICAgKChkZXEhKSAjZikpKQogICAgICAgICAgICAgICAgKChk ZXEhKSAjZikpKQogICAgICAgICAgKGRlZmluZSAobWFrZS1lbXB0eS1jb2wgZm10KQogICAgICAg ICAgICAoZGVmaW5lIChibGFuayAqaWdub3JlZCopCiAgICAgICAgICAgICAgKHNldCEgb3JpZy1z dCAoKGZtdCAiIikgb3JpZy1zdCkpIDsgZW1wdHkgb3V0cHV0CiAgICAgICAgICAgICAgKG5leHQg YmxhbmspKSAgICA7IGluZmluaXRlIGxvb3AsIG5leHQgdGVybWluYXRlcyBmb3IgdXMKICAgICAg ICAgICAgYmxhbmspCiAgICAgICAgICAoZGVmaW5lIChtYWtlLWNvbCBzdCBmbXQgZ2VuKQogICAg ICAgICAgICAobGV0ICgoYWNjICcoKSkpICAgICAgICAgICAgOyBidWZmZXIgaW5jb21wbGV0ZSBs aW5lcwogICAgICAgICAgICAgIChsYW1iZGEgKCppZ25vcmVkKikKICAgICAgICAgICAgICAgIChk ZWZpbmUgKG91dHB1dCogc3RyIHN0KQogICAgICAgICAgICAgICAgICAobGV0IGxwICgoaSAwKSkK ICAgICAgICAgICAgICAgICAgICAobGV0ICgobmxpIChzdHJpbmctaW5kZXggc3RyICNcbmV3bGlu ZSBpKSkpCiAgICAgICAgICAgICAgICAgICAgICAoY29uZAogICAgICAgICAgICAgICAgICAgICAg ICAobmxpCiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgobGluZQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChzdHJpbmctY29uY2F0ZW5hdGUtcmV2ZXJzZQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoY29ucyAoc3Vic3RyaW5nL3NoYXJlZCBzdHIgaSBubGkp IGFjYykpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldCEgYWNjICcoKSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHNldCEgb3JpZy1zdCAoKGZtdCBsaW5lKSBvcmlnLXN0KSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhbGwtd2l0aC1jdXJyZW50LWNvbnRpbnVhdGlv biBuZXh0KSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxwICgrIG5saSAxKSkpKQogICAg ICAgICAgICAgICAgICAgICAgICAoZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgKHNldCEg YWNjIChjb25zIChzdWJzdHJpbmcvc2hhcmVkIHN0ciBpKSBhY2MpKSkpKSkKICAgICAgICAgICAg ICAgICAgOzsgdXBkYXRlIC0gZG9uJ3Qgb3V0cHV0IG9yIHRoZSBzdHJpbmcgcG9ydCB3aWxsIGZp bGwgdXAKICAgICAgICAgICAgICAgICAgKGZtdC11cGRhdGUgc3RyIHN0KSkKICAgICAgICAgICAg ICAgIDs7IGdlbiB0aHJlYWRzIHRocm91Z2ggaXQncyBvd24gc3RhdGUsIGlnbm9yZSByZXN1bHQK ICAgICAgICAgICAgICAgIChnZW4gKGZtdC1zZXQtd3JpdGVyISAoY29weS1mbXQtc3RhdGUgc3Qp IG91dHB1dCopKQogICAgICAgICAgICAgICAgOzsgcmVkdWNlICMgb2YgcmVtYWluaW5nIGNvbHVt bnMKICAgICAgICAgICAgICAgIChzZXQhIHJlbWFpbmluZyAoLSByZW1haW5pbmcgMSkpCiAgICAg ICAgICAgICAgICA7OyAobWF5YmUpIGxvb3Agd2l0aCBhbiBlbXB0eSBjb2x1bW4gaW4gcGxhY2UK ICAgICAgICAgICAgICAgIChpZiAobm90IChwb3NpdGl2ZT8gcmVtYWluaW5nKSkKICAgICAgICAg ICAgICAgICAgICAocmV0dXJuIG9yaWctc3QpCiAgICAgICAgICAgICAgICAgICAgKG5leHQgKG1h a2UtZW1wdHktY29sIGZtdCkpKSkpKQogICAgICAgICAgOzsgcXVldWUgdXAgdGhlIGluaXRpYWwg Zm9ybWF0dGVycwogICAgICAgICAgKGZvci1lYWNoCiAgICAgICAgICAgKGxhbWJkYSAoY29sKQog ICAgICAgICAgICAgKGxldCAoKHN0IChmbXQtc2V0LXBvcnQhIChjb3B5LWZtdC1zdGF0ZSBvcmln LXN0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcGVuLW91dHB1dC1z dHJpbmcpKSkpCiAgICAgICAgICAgICAgIChlbnEhIChtYWtlLWNvbCBzdCAoY2FyIGNvbCkgKGNh dCAoY2FkciBjb2wpIGZsKSkpKSkKICAgICAgICAgICBscykKICAgICAgICAgIChsaW5lLWluaXQh KQogICAgICAgICAgOzsgc3RhcnQKICAgICAgICAgICgoZGVxISkgI2YpKSkpKSkKCihkZWZpbmUg KGNvbHVtbmFyIC4gbHMpCiAgKGRlZmluZSAocHJvcG9ydGlvbmFsLXdpZHRoPyB3KSAoYW5kIChu dW1iZXI/IHcpICg8IDAgdyAxKSkpCiAgKGRlZmluZSAoYnVpbGQtY29sdW1uIGxzKQogICAgKGxl dC1vcHRpb25hbHMqIGxzICgoZml4ZWQtd2lkdGggI2YpCiAgICAgICAgICAgICAgICAgICAgICAg ICh3aWR0aCAjZikKICAgICAgICAgICAgICAgICAgICAgICAgKGxhc3Q/ICN0KQogICAgICAgICAg ICAgICAgICAgICAgICAodGFpbCAnKCkpCiAgICAgICAgICAgICAgICAgICAgICAgIChnZW4gI2Yp CiAgICAgICAgICAgICAgICAgICAgICAgIChwcmVmaXggJygpKQogICAgICAgICAgICAgICAgICAg ICAgICAoYWxpZ24gJ2xlZnQpCiAgICAgICAgICAgICAgICAgICAgICAgIChpbmZpbml0ZT8gI2Yp KQogICAgICAoZGVmaW5lIChzY2FsZS13aWR0aCBzdCkKICAgICAgICAobWF4IDEgKGluZXhhY3Qt PmV4YWN0CiAgICAgICAgICAgICAgICAodHJ1bmNhdGUgKCogd2lkdGggKC0gKGZtdC13aWR0aCBz dCkgZml4ZWQtd2lkdGgpKSkpKSkKICAgICAgKGRlZmluZSAoYWZmaXggeCkKICAgICAgICAoY29u ZAogICAgICAgICAgKChwYWlyPyB0YWlsKQogICAgICAgICAgIChsYW1iZGEgKHN0cikKICAgICAg ICAgICAgIChjYXQgKHN0cmluZy1jb25jYXRlbmF0ZSBwcmVmaXgpCiAgICAgICAgICAgICAgICAg ICh4IHN0cikKICAgICAgICAgICAgICAgICAgKHN0cmluZy1jb25jYXRlbmF0ZSB0YWlsKSkpKQog ICAgICAgICAgKChwYWlyPyBwcmVmaXgpCiAgICAgICAgICAgKGxhbWJkYSAoc3RyKSAoY2F0IChz dHJpbmctY29uY2F0ZW5hdGUgcHJlZml4KSAoeCBzdHIpKSkpCiAgICAgICAgICAoZWxzZSB4KSkp CiAgICAgIChsaXN0CiAgICAgICA7OyBsaW5lIGZvcm1hdHRlcgogICAgICAgKGFmZml4CiAgICAg ICAgKGlmIChhbmQgbGFzdD8gKG5vdCAocGFpcj8gdGFpbCkpIChlcT8gYWxpZ24gJ2xlZnQpKQog ICAgICAgICAgICBkc3AKICAgICAgICAgICAgKGlmIChwcm9wb3J0aW9uYWwtd2lkdGg/IHdpZHRo KQogICAgICAgICAgICAgICAgKGNhc2UgYWxpZ24KICAgICAgICAgICAgICAgICAgKChyaWdodCkK ICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKHN0cikgKGxhbWJkYSAoc3QpICgocGFkIChzY2Fs ZS13aWR0aCBzdCkgc3RyKSBzdCkpKSkKICAgICAgICAgICAgICAgICAgKChjZW50ZXIpCiAgICAg ICAgICAgICAgICAgICAobGFtYmRhIChzdHIpIChsYW1iZGEgKHN0KSAoKHBhZC9ib3RoIChzY2Fs ZS13aWR0aCBzdCkgc3RyKSBzdCkpKSkKICAgICAgICAgICAgICAgICAgKGVsc2UKICAgICAgICAg ICAgICAgICAgIChsYW1iZGEgKHN0cikgKGxhbWJkYSAoc3QpICgocGFkL3JpZ2h0IChzY2FsZS13 aWR0aCBzdCkgc3RyKSBzdCkpKSkpCiAgICAgICAgICAgICAgICAoY2FzZSBhbGlnbgogICAgICAg ICAgICAgICAgICAoKHJpZ2h0KSAobGFtYmRhIChzdHIpIChwYWQgd2lkdGggc3RyKSkpCiAgICAg ICAgICAgICAgICAgICgoY2VudGVyKSAobGFtYmRhIChzdHIpIChwYWQvYm90aCB3aWR0aCBzdHIp KSkKICAgICAgICAgICAgICAgICAgKGVsc2UgKGxhbWJkYSAoc3RyKSAocGFkL3JpZ2h0IHdpZHRo IHN0cikpKSkpKSkKICAgICAgIDs7IGdlbmVyYXRvcgogICAgICAgKGlmICg8IDAgd2lkdGggMSkK ICAgICAgICAgICAobGFtYmRhIChzdCkgKCh3aXRoLXdpZHRoIChzY2FsZS13aWR0aCBzdCkgZ2Vu KSBzdCkpCiAgICAgICAgICAgKHdpdGgtd2lkdGggd2lkdGggZ2VuKSkKICAgICAgIGluZmluaXRl PwogICAgICAgKSkpCiAgKGRlZmluZSAoYWRqdXN0LXdpZHRocyBscyBib3JkZXItd2lkdGgpCiAg ICAobGV0KiAoKGZpeGVkLWxzCiAgICAgICAgICAgIChmaWx0ZXIgKGxhbWJkYSAoeCkgKGFuZCAo bnVtYmVyPyAoY2FyIHgpKSAoPj0gKGNhciB4KSAxKSkpIGxzKSkKICAgICAgICAgICAoZml4ZWQt dG90YWwgKGZvbGQgKyBib3JkZXItd2lkdGggKG1hcCBjYXIgZml4ZWQtbHMpKSkKICAgICAgICAg ICAoc2NhbGVkLWxzIChmaWx0ZXIgKGxhbWJkYSAoeCkgKHByb3BvcnRpb25hbC13aWR0aD8gKGNh ciB4KSkpIGxzKSkKICAgICAgICAgICAocmVzdAogICAgICAgICAgICAoLyAoLSAxIChmb2xkICsg MCAobWFwIGNhciBzY2FsZWQtbHMpKSkKICAgICAgICAgICAgICAgKC0gKGxlbmd0aCBscykgKCsg KGxlbmd0aCBmaXhlZC1scykgKGxlbmd0aCBzY2FsZWQtbHMpKSApKSkpCiAgICAgIChpZiAobmVn YXRpdmU/IHJlc3QpCiAgICAgICAgICAoZXJyb3IgImZyYWN0aW9uYWwgd2lkdGhzIG11c3Qgc3Vt IHRvIGxlc3MgdGhhbiAxIgogICAgICAgICAgICAgICAgIChtYXAgY2FyIHNjYWxlZC1scykpKQog ICAgICAobWFwCiAgICAgICAobGFtYmRhIChjb2wpCiAgICAgICAgIChjb25zIGZpeGVkLXRvdGFs CiAgICAgICAgICAgICAgIChpZiAobm90IChudW1iZXI/IChjYXIgY29sKSkpIChjb25zIHJlc3Qg KGNkciBjb2wpKSBjb2wpKSkKICAgICAgIGxzKSkpCiAgKGRlZmluZSAoZmluaXNoIGxzIGJvcmRl ci13aWR0aCkKICAgIChhcHBseSBmbXQtY29sdW1ucwogICAgICAgICAgIChtYXAgYnVpbGQtY29s dW1uIChhZGp1c3Qtd2lkdGhzIChyZXZlcnNlIGxzKSBib3JkZXItd2lkdGgpKSkpCiAgKGxldCBs cCAoKGxzIGxzKSAoc3RycyAnKCkpIChhbGlnbiAnbGVmdCkgKGluZmluaXRlPyAjZikKICAgICAg ICAgICAod2lkdGggI3QpIChib3JkZXItd2lkdGggMCkgKHJlcyAnKCkpKQogICAgKGNvbmQKICAg ICAgKChudWxsPyBscykKICAgICAgIChpZiAocGFpcj8gc3RycykKICAgICAgICAgICAoZmluaXNo IChjb25zIChjb25zIChjYWFyIHJlcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChj b25zICN0IChjb25zIChhcHBlbmQgKHJldmVyc2Ugc3RycykKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhZGRhciByZXMpKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNkZGRhciByZXMpKSkpCiAgICAg ICAgICAgICAgICAgICAgICAgICAoY2RyIHJlcykpCiAgICAgICAgICAgICAgICAgICBib3JkZXIt d2lkdGgpCiAgICAgICAgICAgKGZpbmlzaCAoY29ucyAoY29ucyAoY2FhciByZXMpIChjb25zICN0 IChjZGRhciByZXMpKSkgKGNkciByZXMpKQogICAgICAgICAgICAgICAgICAgYm9yZGVyLXdpZHRo KSkpCiAgICAgICgoc3RyaW5nPyAoY2FyIGxzKSkKICAgICAgIChpZiAoc3RyaW5nLWluZGV4IChj YXIgbHMpICNcbmV3bGluZSkKICAgICAgICAgICAoZXJyb3IgImNvbHVtbiBzdHJpbmcgbGl0ZXJh bHMgY2FuJ3QgY29udGFpbiBuZXdsaW5lcyIpCiAgICAgICAgICAgKGxwIChjZHIgbHMpIChjb25z IChjYXIgbHMpIHN0cnMpIGFsaWduIGluZmluaXRlPwogICAgICAgICAgICAgICB3aWR0aCAoKyBi b3JkZXItd2lkdGggKHN0cmluZy1sZW5ndGggKGNhciBscykpKSByZXMpKSkKICAgICAgKChudW1i ZXI/IChjYXIgbHMpKQogICAgICAgKGxwIChjZHIgbHMpIHN0cnMgYWxpZ24gaW5maW5pdGU/IChj YXIgbHMpIGJvcmRlci13aWR0aCByZXMpKQogICAgICAoKGVxPyAoY2FyIGxzKSAnaW5maW5pdGUp CiAgICAgICAobHAgKGNkciBscykgc3RycyBhbGlnbiAjdCB3aWR0aCBib3JkZXItd2lkdGggcmVz KSkKICAgICAgKChzeW1ib2w/IChjYXIgbHMpKQogICAgICAgKGxwIChjZHIgbHMpIHN0cnMgKGNh ciBscykgaW5maW5pdGU/IHdpZHRoIGJvcmRlci13aWR0aCByZXMpKQogICAgICAoKHByb2NlZHVy ZT8gKGNhciBscykpCiAgICAgICAobHAgKGNkciBscykgJygpICdsZWZ0ICNmICN0IGJvcmRlci13 aWR0aAogICAgICAgICAgIChjb25zIChsaXN0IHdpZHRoICNmICcoKSAoY2FyIGxzKSAocmV2ZXJz ZSBzdHJzKSBhbGlnbiBpbmZpbml0ZT8pCiAgICAgICAgICAgICAgICAgcmVzKSkpCiAgICAgIChl bHNlCiAgICAgICAoZXJyb3IgImludmFsaWQgY29sdW1uIiAoY2FyIGxzKSkpKSkpCgo7OyBicmVh ayBsaW5lcyBvbmx5LCBkb24ndCBmbXQtam9pbiBzaG9ydCBsaW5lcyBvciBqdXN0aWZ5CihkZWZp bmUgKGZvbGQtbGluZXMgLiBscykKICAobGFtYmRhIChzdCkKICAgIChkZWZpbmUgb3V0cHV0IChm bXQtd3JpdGVyIHN0KSkKICAgIChkZWZpbmUgKGtvbnMtaW4tbGluZSBzdHIgc3QpCiAgICAgIChs ZXQgKChsZW4gKHN0cmluZy1sZW5ndGggc3RyKSkKICAgICAgICAgICAgKHNwYWNlICgtIChmbXQt d2lkdGggc3QpIChmbXQtY29sIHN0KSkpKQogICAgICAgIChjb25kCiAgICAgICAgICAoKG9yICg8 PSBsZW4gc3BhY2UpIChub3QgKHBvc2l0aXZlPyBzcGFjZSkpKQogICAgICAgICAgIChvdXRwdXQg c3RyIHN0KSkKICAgICAgICAgIChlbHNlCiAgICAgICAgICAgKGtvbnMtaW4tbGluZQogICAgICAg ICAgICAoc3Vic3RyaW5nL3NoYXJlZCBzdHIgc3BhY2UgbGVuKQogICAgICAgICAgICAob3V0cHV0 IG5sLXN0cgogICAgICAgICAgICAgICAgICAgIChvdXRwdXQgKHN1YnN0cmluZy9zaGFyZWQgc3Ry IDAgc3BhY2UpIHN0KSkpKSkpKQogICAgKChmbXQtbGV0CiAgICAgICd3cml0ZXIKICAgICAgKGxh bWJkYSAoc3RyIHN0KQogICAgICAgIChsZXQgbHAgKChzdHIgc3RyKSAoc3Qgc3QpKQogICAgICAg ICAgKGxldCAoKG5saSAoc3RyaW5nLWluZGV4IHN0ciAjXG5ld2xpbmUpKSkKICAgICAgICAgICAg KGNvbmQKICAgICAgICAgICAgICAoKG5vdCBubGkpCiAgICAgICAgICAgICAgIChrb25zLWluLWxp bmUgc3RyIHN0KSkKICAgICAgICAgICAgICAoZWxzZQogICAgICAgICAgICAgICAobHAgKHN1YnN0 cmluZy9zaGFyZWQgc3RyICgrIG5saSAxKSkKICAgICAgICAgICAgICAgICAgIChvdXRwdXQgbmwt c3RyCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChrb25zLWluLWxpbmUKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChzdWJzdHJpbmcvc2hhcmVkIHN0ciAwIG5saSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0KSkpKSkpKSkKICAgICAgKGFwcGx5LWNhdCBscykpCiAgICAgc3Qp KSkKCihkZWZpbmUgKHdyYXAtZm9sZC13b3JkcyBzZXEga25pbCBtYXgtd2lkdGggZ2V0LXdpZHRo IGxpbmUgLiBvKQogIChsZXQqICgobGFzdC1saW5lIChpZiAocGFpcj8gbykgKGNhciBvKSBsaW5l KSkKICAgICAgICAgKHZlYyAoaWYgKHBhaXI/IHNlcSkgKGxpc3QtPnZlY3RvciBzZXEpIHNlcSkp CiAgICAgICAgIChsZW4gKHZlY3Rvci1sZW5ndGggdmVjKSkKICAgICAgICAgKGxlbi0xICgtIGxl biAxKSkKICAgICAgICAgKGJyZWFrcyAobWFrZS12ZWN0b3IgbGVuICNmKSkKICAgICAgICAgKHBl bmFsdGllcyAobWFrZS12ZWN0b3IgbGVuICNmKSkKICAgICAgICAgKHdpZHRocwogICAgICAgICAg KGxpc3QtPnZlY3RvcgogICAgICAgICAgIChtYXAgZ2V0LXdpZHRoIChpZiAocGFpcj8gc2VxKSBz ZXEgKHZlY3Rvci0+bGlzdCBzZXEpKSkpKSkKICAgIChkZWZpbmUgKGxhcmdlc3QtZml0IGkpCiAg ICAgIChsZXQgbHAgKChqICgrIGkgMSkpICh3aWR0aCAodmVjdG9yLXJlZiB3aWR0aHMgaSkpKQog ICAgICAgIChsZXQgKCh3aWR0aCAoKyB3aWR0aCAxICh2ZWN0b3ItcmVmIHdpZHRocyBqKSkpKQog ICAgICAgICAgKGNvbmQKICAgICAgICAgICAgKCg+PSB3aWR0aCBtYXgtd2lkdGgpICgtIGogMSkp CiAgICAgICAgICAgICgoPj0gaiBsZW4tMSkgbGVuLTEpCiAgICAgICAgICAgIChlbHNlIChscCAo KyBqIDEpIHdpZHRoKSkpKSkpCiAgICAoZGVmaW5lIChtaW4tcGVuYWx0eSEgaSkKICAgICAgKGNv bmQKICAgICAgICAoKD49IGkgbGVuLTEpIDApCiAgICAgICAgKCh2ZWN0b3ItcmVmIHBlbmFsdGll cyBpKSkKICAgICAgICAoZWxzZQogICAgICAgICAodmVjdG9yLXNldCEgcGVuYWx0aWVzIGkgKGV4 cHQgKCsgbWF4LXdpZHRoIDEpIDMpKQogICAgICAgICAobGV0ICgoayAobGFyZ2VzdC1maXQgaSkp KQogICAgICAgICAgIChsZXQgbHAgKChqIGkpICh3aWR0aCAwKSkKICAgICAgICAgICAgIChpZiAo PD0gaiBrKQogICAgICAgICAgICAgICAgIChsZXQqICgod2lkdGggKCsgd2lkdGggKHZlY3Rvci1y ZWYgd2lkdGhzIGopKSkKICAgICAgICAgICAgICAgICAgICAgICAgKGJyZWFrLXBlbmFsdHkKICAg ICAgICAgICAgICAgICAgICAgICAgICgrIChtYXggMCAoZXhwdCAoLSBtYXgtd2lkdGggKCsgd2lk dGggKC0gaiBpKSkpIDMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1pbi1wZW5hbHR5 ISAoKyBqIDEpKSkpKQogICAgICAgICAgICAgICAgICAgKGNvbmQKICAgICAgICAgICAgICAgICAg ICAgKCg8IGJyZWFrLXBlbmFsdHkgKHZlY3Rvci1yZWYgcGVuYWx0aWVzIGkpKQogICAgICAgICAg ICAgICAgICAgICAgKHZlY3Rvci1zZXQhIGJyZWFrcyBpIGopCiAgICAgICAgICAgICAgICAgICAg ICAodmVjdG9yLXNldCEgcGVuYWx0aWVzIGkgYnJlYWstcGVuYWx0eSkpKQogICAgICAgICAgICAg ICAgICAgKGxwICgrIGogMSkgd2lkdGgpKSkpKQogICAgICAgICAoaWYgKD49ICh2ZWN0b3ItcmVm IGJyZWFrcyBpKSBsZW4tMSkKICAgICAgICAgICAgICh2ZWN0b3Itc2V0ISBwZW5hbHRpZXMgaSAw KSkKICAgICAgICAgKHZlY3Rvci1yZWYgcGVuYWx0aWVzIGkpKSkpCiAgICAoZGVmaW5lIChzdWIt bGlzdCBpIGopCiAgICAgIChsZXQgbHAgKChpIGkpIChyZXMgJygpKSkKICAgICAgICAoaWYgKD4g aSBqKQogICAgICAgICAgICAocmV2ZXJzZSByZXMpCiAgICAgICAgICAgIChscCAoKyBpIDEpIChj b25zICh2ZWN0b3ItcmVmIHZlYyBpKSByZXMpKSkpKQogICAgOzsgY29tcHV0ZSBvcHRpbXVtIGJy ZWFrcwogICAgKHZlY3Rvci1zZXQhIGJyZWFrcyBsZW4tMSBsZW4tMSkKICAgICh2ZWN0b3Itc2V0 ISBwZW5hbHRpZXMgbGVuLTEgMCkKICAgIChtaW4tcGVuYWx0eSEgMCkKICAgIDs7IGZvbGQKICAg IChsZXQgbHAgKChpIDApIChhY2Mga25pbCkpCiAgICAgIChsZXQgKChicmVhayAodmVjdG9yLXJl ZiBicmVha3MgaSkpKQogICAgICAgIChpZiAoPj0gYnJlYWsgbGVuLTEpCiAgICAgICAgICAgIChs YXN0LWxpbmUgKHN1Yi1saXN0IGkgbGVuLTEpIGFjYykKICAgICAgICAgICAgKGxwICgrIGJyZWFr IDEpIChsaW5lIChzdWItbGlzdCBpIGJyZWFrKSBhY2MpKSkpKSkpCgo7OyBYWFhYIGRvbid0IHNw bGl0LCB0cmF2ZXJzZSB0aGUgc3RyaW5nIG1hbnVhbGx5IGFuZCBrZWVwIHRyYWNrIG9mCjs7IHNl bnRlbmNlIGVuZGluZ3Mgc28gd2UgY2FuIGluc2VydCB0d28gc3BhY2VzCihkZWZpbmUgKHdyYXAt Zm9sZCBzdHIgLiBvKQogIChhcHBseSB3cmFwLWZvbGQtd29yZHMgKHN0cmluZy10b2tlbml6ZSBz dHIpIG8pKQoKKGRlZmluZSAod3JhcC1saW5lcyAuIGxzKQogIChkZWZpbmUgKHByaW50LWxpbmUg bHMgc3QpCiAgICAobmwgKChmbXQtam9pbiBkc3AgbHMgIiAiKSBzdCkpKQogIChkZWZpbmUgYnVm ZmVyICcoKSkKICAobGFtYmRhIChzdCkKICAgICgoZm10LWxldAogICAgICAnd3JpdGVyCiAgICAg IChsYW1iZGEgKHN0ciBzdCkgKHNldCEgYnVmZmVyIChjb25zIHN0ciBidWZmZXIpKSBzdCkKICAg ICAgKGFwcGx5LWNhdCBscykpCiAgICAgc3QpCiAgICAod3JhcC1mb2xkIChzdHJpbmctY29uY2F0 ZW5hdGUtcmV2ZXJzZSBidWZmZXIpCiAgICAgICAgICAgICAgIHN0IChmbXQtd2lkdGggc3QpIHN0 cmluZy1sZW5ndGggcHJpbnQtbGluZSkpKQoKKGRlZmluZSAoanVzdGlmeSAuIGxzKQogIChsYW1i ZGEgKHN0KQogICAgKGxldCAoKHdpZHRoIChmbXQtd2lkdGggc3QpKQogICAgICAgICAgKG91dHB1 dCAoZm10LXdyaXRlciBzdCkpCiAgICAgICAgICAoYnVmZmVyICcoKSkpCiAgICAgIChkZWZpbmUg KGp1c3RpZnktbGluZSBscyBzdCkKICAgICAgICAoaWYgKG51bGw/IGxzKQogICAgICAgICAgICAo bmwgc3QpCiAgICAgICAgICAgIChsZXQqICgoc3VtIChmb2xkIChsYW1iZGEgKHMgbikgKCsgbiAo c3RyaW5nLWxlbmd0aCBzKSkpIDAgbHMpKQogICAgICAgICAgICAgICAgICAgKGxlbiAobGVuZ3Ro IGxzKSkKICAgICAgICAgICAgICAgICAgIChkaWZmIChtYXggMCAoLSB3aWR0aCBzdW0pKSkKICAg ICAgICAgICAgICAgICAgIChzZXAgKG1ha2Utc3RyaW5nIChxdW90aWVudCBkaWZmICgtIGxlbiAx KSkgI1xzcGFjZSkpCiAgICAgICAgICAgICAgICAgICAocmVtIChyZW1haW5kZXIgZGlmZiAoLSBs ZW4gMSkpKSkKICAgICAgICAgICAgICAob3V0cHV0CiAgICAgICAgICAgICAgIChjYWxsLXdpdGgt b3V0cHV0LXN0cmluZwogICAgICAgICAgICAgICAgIChsYW1iZGEgKHApCiAgICAgICAgICAgICAg ICAgICAoZGlzcGxheSAoY2FyIGxzKSBwKQogICAgICAgICAgICAgICAgICAgKGxldCBscCAoKGxz IChjZHIgbHMpKSAoaSAxKSkKICAgICAgICAgICAgICAgICAgICAgKGNvbmQKICAgICAgICAgICAg ICAgICAgICAgICAoKHBhaXI/IGxzKQogICAgICAgICAgICAgICAgICAgICAgICAoZGlzcGxheSBz ZXAgcCkKICAgICAgICAgICAgICAgICAgICAgICAgKGlmICg8PSBpIHJlbSkgKHdyaXRlLWNoYXIg I1xzcGFjZSBwKSkKICAgICAgICAgICAgICAgICAgICAgICAgKGRpc3BsYXkgKGNhciBscykgcCkK ICAgICAgICAgICAgICAgICAgICAgICAgKGxwIChjZHIgbHMpICgrIGkgMSkpKSkpCiAgICAgICAg ICAgICAgICAgICAobmV3bGluZSBwKSkpCiAgICAgICAgICAgICAgIHN0KSkpKQogICAgICAoZGVm aW5lIChqdXN0aWZ5LWxhc3QgbHMgc3QpCiAgICAgICAgKG5sICgoZm10LWpvaW4gZHNwIGxzICIg Iikgc3QpKSkKICAgICAgKChmbXQtbGV0CiAgICAgICAgJ3dyaXRlcgogICAgICAgIChsYW1iZGEg KHN0ciBzdCkgKHNldCEgYnVmZmVyIChjb25zIHN0ciBidWZmZXIpKSBzdCkKICAgICAgICAoYXBw bHktY2F0IGxzKSkKICAgICAgIHN0KQogICAgICAod3JhcC1mb2xkIChzdHJpbmctY29uY2F0ZW5h dGUtcmV2ZXJzZSBidWZmZXIpCiAgICAgICAgICAgICAgICAgc3Qgd2lkdGggc3RyaW5nLWxlbmd0 aCBqdXN0aWZ5LWxpbmUganVzdGlmeS1sYXN0KSkpKQoKKGRlZmluZSAoZm10LWZpbGUgcGF0aCkK ICAobGFtYmRhIChzdCkKICAgIChjYWxsLXdpdGgtaW5wdXQtZmlsZSBwYXRoCiAgICAgIChsYW1i ZGEgKHApCiAgICAgICAgKGxldCBscCAoKHN0IHN0KSkKICAgICAgICAgIChsZXQgKChsaW5lIChy ZWFkLWxpbmUgcCkpKQogICAgICAgICAgICAoaWYgKGVvZi1vYmplY3Q/IGxpbmUpCiAgICAgICAg ICAgICAgICBzdAogICAgICAgICAgICAgICAgKGxwIChubCAoKGRzcCBsaW5lKSBzdCkpKSkpKSkp KSkKCihkZWZpbmUgKGxpbmUtbnVtYmVycyAuIG8pCiAgKGxldCAoKHN0YXJ0IChpZiAocGFpcj8g bykgKGNhciBvKSAxKSkpCiAgICAoZm10LWpvaW4vcmFuZ2UgZHNwIHN0YXJ0ICNmIG5sLXN0cikp KQoK --bcaec53f8e6da1058a049e4f8f3a Content-Type: application/octet-stream; name="fmt-guile.scm" Content-Disposition: attachment; filename="fmt-guile.scm" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gl7152g31 KGRlZmluZS1tb2R1bGUgKGZtdCBmbXQpCiAgIzp1c2UtbW9kdWxlIChpY2UtOSByZGVsaW0pIDsg Zm9yIHJlYWQtbGluZQogICM6dXNlLW1vZHVsZSAoaWNlLTkgb3B0YXJncykgOyBmb3IgbGV0LW9w dGlvbmFsKgogICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTEpCiAgIzp1c2UtbW9kdWxlIChzcmZp IHNyZmktNikKICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0xMykKICAjOnVzZS1tb2R1bGUgKHNy Zmkgc3JmaS0yNikKICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS02OSkKICAjOmV4cG9ydCAoCiAg ICAgICAgICAgIG5ldy1mbXQtc3RhdGUKICAgICAgICAgICAgZm10IGZtdC1zdGFydCBmbXQtaWYg Zm10LWNhcHR1cmUgZm10LWxldCBmbXQtYmluZCBmbXQtbnVsbAogICAgICAgICAgICBmbXQtcmVm IGZtdC1zZXQhIGZtdC1hZGQtcHJvcGVydGllcyEgZm10LXNldC1wcm9wZXJ0eSEKICAgICAgICAg ICAgZm10LWNvbCBmbXQtc2V0LWNvbCEgZm10LXJvdyBmbXQtc2V0LXJvdyEKICAgICAgICAgICAg Zm10LXJhZGl4IGZtdC1zZXQtcmFkaXghIGZtdC1wcmVjaXNpb24gZm10LXNldC1wcmVjaXNpb24h CiAgICAgICAgICAgIGZtdC1wcm9wZXJ0aWVzIGZtdC1zZXQtcHJvcGVydGllcyEgZm10LXdpZHRo IGZtdC1zZXQtd2lkdGghCiAgICAgICAgICAgIGZtdC13cml0ZXIgZm10LXNldC13cml0ZXIhIGZt dC1wb3J0IGZtdC1zZXQtcG9ydCEKICAgICAgICAgICAgZm10LWRlY2ltYWwtc2VwIGZtdC1zZXQt ZGVjaW1hbC1zZXAhCiAgICAgICAgICAgIGNvcHktZm10LXN0YXRlCiAgICAgICAgICAgIGZtdC1m aWxlIGZtdC10cnktZml0IGNhdCBhcHBseS1jYXQgbmwgZmwgbmwtc3RyCiAgICAgICAgICAgIGZt dC1qb2luIGZtdC1qb2luL2xhc3QgZm10LWpvaW4vZG90CiAgICAgICAgICAgIGZtdC1qb2luL3By ZWZpeCBmbXQtam9pbi9zdWZmaXggZm10LWpvaW4vcmFuZ2UKICAgICAgICAgICAgcGFkIHBhZC9y aWdodCBwYWQvbGVmdCBwYWQvYm90aCB0cmltIHRyaW0vbGVmdCB0cmltL2JvdGggdHJpbS9sZW5n dGgKICAgICAgICAgICAgZml0IGZpdC9sZWZ0IGZpdC9ib3RoIHRhYi10byBzcGFjZS10byB3cnQg d3J0L3Vuc2hhcmVkIGRzcAogICAgICAgICAgICBwcmV0dHkgcHJldHR5L3Vuc2hhcmVkIHNsYXNo aWZpZWQgbWF5YmUtc2xhc2hpZmllZAogICAgICAgICAgICBudW0gbnVtL3NpIG51bS9maXQgbnVt L2NvbW1hIHJhZGl4IGZpeCBlbGxpcHNlcwogICAgICAgICAgICB1cGNhc2UgZG93bmNhc2UgdGl0 bGVjYXNlIHBhZC1jaGFyIGNvbW1hLWNoYXIgZGVjaW1hbC1jaGFyCiAgICAgICAgICAgIHdpdGgt d2lkdGggd3JhcC1saW5lcyBmb2xkLWxpbmVzIGp1c3RpZnkKICAgICAgICAgICAgbWFrZS1zdHJp bmctZm10LXRyYW5zZm9ybWVyCiAgICAgICAgICAgIG1ha2Utc3BhY2UgbWFrZS1ubC1zcGFjZSBk aXNwbGF5LXRvLXN0cmluZyB3cml0ZS10by1zdHJpbmcKICAgICAgICAgICAgZm10LWNvbHVtbnMg Y29sdW1uYXIgbGluZS1udW1iZXJzCiAgICAgICAgICAgKQoKICApCgooZXZhbC13aGVuIChjb21w aWxlIGxvYWQgZXZhbCkKICAobG9hZCAibGV0LW9wdGlvbmFscy5zY20iKSkKKGxvYWQgIm1ha2Ut ZXEtdGFibGUuc2NtIikKKGxvYWQgIm1hbnRpc3NhLnNjbSIpCihsb2FkICJmbXQuc2NtIikKKGxv YWQgImZtdC1wcmV0dHkuc2NtIikKKGxvYWQgImZtdC1jb2x1bW4uc2NtIikK --bcaec53f8e6da1058a049e4f8f3a Content-Type: application/octet-stream; name="fmt-pretty.scm" Content-Disposition: attachment; filename="fmt-pretty.scm" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gl7152g62 Ozs7OyBmbXQtcHJldHR5LnNjbSAtLSBwcmV0dHkgcHJpbnRpbmcgZm9ybWF0IGNvbWJpbmF0b3IK OzsKOzsgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDcgQWxleCBTaGlubi4gIEFsbCByaWdodHMgcmVz ZXJ2ZWQuCjs7IEJTRC1zdHlsZSBsaWNlbnNlOiBodHRwOi8vc3ludGhjb2RlLmNvbS9saWNlbnNl LnR4dAoKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Cjs7OyBhZGRpdGlvbmFsIHNldHRpbmdzCgooZGVmaW5lIChm bXQtc2hhcmVzIHN0KSAoZm10LXJlZiBzdCAnc2hhcmVzKSkKKGRlZmluZSAoZm10LXNldC1zaGFy ZXMhIHN0IHgpIChmbXQtc2V0ISBzdCAnc2hhcmVzIHgpKQooZGVmaW5lIChmbXQtY29weS1zaGFy ZXMgc3QpCiAgKGZtdC1zZXQtc2hhcmVzISAoY29weS1mbXQtc3RhdGUgc3QpIChjb3B5LXNoYXJl cyAoZm10LXNoYXJlcyBzdCkpKSkKCihkZWZpbmUgKGNvcHktc2hhcmVzIHNoYXJlcykKICAobGV0 ICgodGFiIChtYWtlLWVxPy10YWJsZSkpKQogICAgKGhhc2gtdGFibGUtd2FsawogICAgIChjYXIg c2hhcmVzKQogICAgIChsYW1iZGEgKG9iaiB4KSAoZXE/LXRhYmxlLXNldCEgdGFiIG9iaiAoY29u cyAoY2FyIHgpIChjZHIgeCkpKSkpCiAgICAoY29ucyB0YWIgKGNkciBzaGFyZXMpKSkpCgo7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7OzsKOzs7IHV0aWxpdGllcwoKKGRlZmluZSAoZm10LXNoYXJlZC13cml0ZSBvYmog cHJvYykKICAobGFtYmRhIChzdCkKICAgIChsZXQqICgoc2hhcmVzIChmbXQtc2hhcmVzIHN0KSkK ICAgICAgICAgICAoY2VsbCAoYW5kIHNoYXJlcyAoZXE/LXRhYmxlLXJlZiAoY2FyIHNoYXJlcykg b2JqKSkpKQogICAgICAoaWYgKHBhaXI/IGNlbGwpCiAgICAgICAgICAoY29uZAogICAgICAgICAg ICAoKGNkciBjZWxsKQogICAgICAgICAgICAgKChmbXQtd3JpdGVyIHN0KSAoZ2VuLXNoYXJlZC1y ZWYgKGNhciBjZWxsKSAiIyIpIHN0KSkKICAgICAgICAgICAgKGVsc2UKICAgICAgICAgICAgIChz ZXQtY2FyISBjZWxsIChjZHIgc2hhcmVzKSkKICAgICAgICAgICAgIChzZXQtY2RyISBjZWxsICN0 KQogICAgICAgICAgICAgKHNldC1jZHIhIHNoYXJlcyAoKyAoY2RyIHNoYXJlcykgMSkpCiAgICAg ICAgICAgICAocHJvYyAoKGZtdC13cml0ZXIgc3QpIChnZW4tc2hhcmVkLXJlZiAoY2FyIGNlbGwp ICI9Iikgc3QpKSkpCiAgICAgICAgICAocHJvYyBzdCkpKSkpCgooZGVmaW5lIChmbXQtam9pbi9z aGFyZXMgZm10IGxzIC4gbykKICAobGV0ICgoc2VwIChkc3AgKGlmIChwYWlyPyBvKSAoY2FyIG8p ICIgIikpKSkKICAgIChsYW1iZGEgKHN0KQogICAgICAoaWYgKG51bGw/IGxzKQogICAgICAgICAg c3QKICAgICAgICAgIChsZXQqICgoc2hhcmVzIChmbXQtc2hhcmVzIHN0KSkKICAgICAgICAgICAg ICAgICAodGFiIChjYXIgc2hhcmVzKSkKICAgICAgICAgICAgICAgICAob3V0cHV0IChmbXQtd3Jp dGVyIHN0KSkpCiAgICAgICAgICAgIChsZXQgbHAgKChscyBscykgKHN0IHN0KSkKICAgICAgICAg ICAgICAobGV0ICgoc3QgKChmbXQgKGNhciBscykpIHN0KSkKICAgICAgICAgICAgICAgICAgICAo cmVzdCAoY2RyIGxzKSkpCiAgICAgICAgICAgICAgICAoY29uZAogICAgICAgICAgICAgICAgICgo bnVsbD8gcmVzdCkgc3QpCiAgICAgICAgICAgICAgICAgKChwYWlyPyByZXN0KQogICAgICAgICAg ICAgICAgICAoY2FsbC13aXRoLXNoYXJlZC1yZWYvY2RyIHJlc3Qgc3Qgc2hhcmVzCiAgICAgICAg ICAgICAgICAgICAgICAobGFtYmRhIChzdCkgKGxwIHJlc3Qgc3QpKQogICAgICAgICAgICAgICAg ICAgIHNlcCkpCiAgICAgICAgICAgICAgICAgKGVsc2UgKChmbXQgcmVzdCkgKG91dHB1dCAiLiAi IChzZXAgc3QpKSkpKSkpKSkpKSkKCjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Owo7OzsgcHJldHR5IHByaW50aW5n CgooZGVmaW5lIChub24tYXBwPyB4KQogIChpZiAocGFpcj8geCkKICAgICAgKG9yIChub3QgKG9y IChudWxsPyAoY2RyIHgpKSAocGFpcj8gKGNkciB4KSkpKQogICAgICAgICAgKG5vbi1hcHA/IChj YXIgeCkpKQogICAgICAobm90IChzeW1ib2w/IHgpKSkpCgooZGVmaW5lIHN5bnRheC1hYmJyZXZz CiAgJygocXVvdGUgLiAiJyIpIChxdWFzaXF1b3RlIC4gImAiKSAodW5xdW90ZSAuICIsIikgKHVu cXVvdGUtc3BsaWNpbmcgLiAiLEAiKQogICAgKSkKCihkZWZpbmUgKHBwLWxldCBscykKICAoaWYg KGFuZCAocGFpcj8gKGNkciBscykpIChzeW1ib2w/IChjYWRyIGxzKSkpCiAgICAgIChwcC13aXRo LWluZGVudCAyIGxzKQogICAgICAocHAtd2l0aC1pbmRlbnQgMSBscykpKQoKKGRlZmluZSBpbmRl bnQtcnVsZXMKICBgKChsYW1iZGEgLiAxKSAoZGVmaW5lIC4gMSkKICAgIChsZXQgLiAscHAtbGV0 KSAobG9vcCAuICxwcC1sZXQpCiAgICAobGV0KiAuIDEpIChsZXRyZWMgLiAxKSAobGV0cmVjKiAu IDEpIChhbmQtbGV0KiAuIDEpIChsZXQxIC4gMikKICAgIChsZXQtdmFsdWVzIC4gMSkgKGxldCot dmFsdWVzIC4gMSkgKHJlY2VpdmUgLiAyKSAocGFyYW1ldGVyaXplIC4gMSkKICAgIChsZXQtc3lu dGF4IC4gMSkgKGxldHJlYy1zeW50YXggLiAxKSAoc3ludGF4LXJ1bGVzIC4gMSkgKHN5bnRheC1j YXNlIC4gMikKICAgIChtYXRjaCAuIDEpIChtYXRjaC1sZXQgLiAxKSAobWF0Y2gtbGV0KiAuIDEp CiAgICAoaWYgLiAzKSAod2hlbiAuIDEpICh1bmxlc3MgLiAxKSAoY2FzZSAuIDEpICh3aGlsZSAu IDEpICh1bnRpbCAuIDEpCiAgICAoZG8gLiAyKSAoZG90aW1lcyAuIDEpIChkb2xpc3QgLiAxKSAo dGVzdCAuIDEpCiAgICAoY29uZGl0aW9uLWNhc2UgLiAxKSAoZ3VhcmQgLiAxKSAocmVjIC4gMSkK ICAgIChjYWxsLXdpdGgtY3VycmVudC1jb250aW51YXRpb24gLiAwKQogICAgKSkKCihkZWZpbmUg aW5kZW50LXByZWZpeC1ydWxlcwogIGAoKCJ3aXRoLSIgLiAtMSkgKCJjYWxsLXdpdGgtIiAuIC0x KSAoImRlZmluZS0iIC4gMSkpCiAgKQoKKGRlZmluZSBpbmRlbnQtc3VmZml4LXJ1bGVzCiAgYCgo Ii1jYXNlIiAuIDEpKQogICkKCihkZWZpbmUgKHBwLWluZGVudGF0aW9uIGZvcm0pCiAgKGxldCAo KGluZGVudAogICAgICAgICAoY29uZAogICAgICAgICAgKChhc3NxIChjYXIgZm9ybSkgaW5kZW50 LXJ1bGVzKSA9PiBjZHIpCiAgICAgICAgICAoKGFuZCAoc3ltYm9sPyAoY2FyIGZvcm0pKQogICAg ICAgICAgICAgICAgKGxldCAoKHN0ciAoc3ltYm9sLT5zdHJpbmcgKGNhciBmb3JtKSkpKQogICAg ICAgICAgICAgICAgICAob3IgKGZpbmQgKGxhbWJkYSAocngpIChzdHJpbmctcHJlZml4PyAoY2Fy IHJ4KSBzdHIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50LXByZWZpeC1ydWxl cykKICAgICAgICAgICAgICAgICAgICAgIChmaW5kIChsYW1iZGEgKHJ4KSAoc3RyaW5nLXN1ZmZp eD8gKGNhciByeCkgc3RyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudC1zdWZm aXgtcnVsZXMpKSkpCiAgICAgICAgICAgPT4gY2RyKQogICAgICAgICAgKGVsc2UgI2YpKSkpCiAg ICAoaWYgKGFuZCAobnVtYmVyPyBpbmRlbnQpIChuZWdhdGl2ZT8gaW5kZW50KSkKICAgICAgICAo bWF4IDAgKC0gKCsgKGxlbmd0aCsgZm9ybSkgaW5kZW50KSAxKSkKICAgICAgICBpbmRlbnQpKSkK CihkZWZpbmUgKHBwLXdpdGgtaW5kZW50IGluZGVudC1ydWxlIGxzKQogIChsYW1iZGEgKHN0KQog ICAgKGxldCogKChjb2wxIChmbXQtY29sIHN0KSkKICAgICAgICAgICAoc3QgKChjYXQgIigiIChw cC1vYmplY3QgKGNhciBscykpKSBzdCkpCiAgICAgICAgICAgKGNvbDIgKGZtdC1jb2wgc3QpKQog ICAgICAgICAgIChmaXhlZCAodGFrZSogKGNkciBscykgKG9yIGluZGVudC1ydWxlIDEpKSkKICAg ICAgICAgICAodGFpbCAoZHJvcCogKGNkciBscykgKG9yIGluZGVudC1ydWxlIDEpKSkKICAgICAg ICAgICAoc3QyIChmbXQtY29weS1zaGFyZXMgc3QpKQogICAgICAgICAgIChmaXJzdC1saW5lCiAg ICAgICAgICAgICgoZm10LXRvLXN0cmluZyAoY2F0ICIgIiAoZm10LWpvaW4vc2hhcmVzIHBwLWZs YXQgZml4ZWQgIiAiKSkpIHN0MikpCiAgICAgICAgICAgKGRlZmF1bHQKICAgICAgICAgICAgIChs ZXQgKChzZXAgKG1ha2Utbmwtc3BhY2UgKCsgY29sMSAxKSkpKQogICAgICAgICAgICAgICAoY2F0 IHNlcCAoZm10LWpvaW4vc2hhcmVzIHBwLW9iamVjdCAoY2RyIGxzKSBzZXApICIpIikpKSkKICAg ICAgKGNvbmQKICAgICAgICgoPCAoKyBjb2wyIChzdHJpbmctbGVuZ3RoIGZpcnN0LWxpbmUpKSAo Zm10LXdpZHRoIHN0MikpCiAgICAgICAgOzsgZml4ZWQgdmFsdWVzIG9uIGZpcnN0IGxpbmUKICAg ICAgICAobGV0ICgoc2VwIChtYWtlLW5sLXNwYWNlCiAgICAgICAgICAgICAgICAgICAgKGlmIGlu ZGVudC1ydWxlICgrIGNvbDEgMikgKCsgY29sMiAxKSkpKSkKICAgICAgICAgICgoY2F0IGZpcnN0 LWxpbmUKICAgICAgICAgICAgICAgIChjb25kCiAgICAgICAgICAgICAgICAgKChub3QgKG9yIChu dWxsPyB0YWlsKSAocGFpcj8gdGFpbCkpKQogICAgICAgICAgICAgICAgICAoY2F0ICIuICIgKHBw LW9iamVjdCB0YWlsKSkpCiAgICAgICAgICAgICAgICAgKCg+IChsZW5ndGgrIChjZHIgbHMpKSAo b3IgaW5kZW50LXJ1bGUgMSkpCiAgICAgICAgICAgICAgICAgIChjYXQgc2VwIChmbXQtam9pbi9z aGFyZXMgcHAtb2JqZWN0IHRhaWwgc2VwKSkpCiAgICAgICAgICAgICAgICAgKGVsc2UKICAgICAg ICAgICAgICAgICAgZm10LW51bGwpKQogICAgICAgICAgICAgICAgIikiKQogICAgICAgICAgIHN0 MikpKQogICAgICAgKGluZGVudC1ydWxlIDs7KGFuZCBpbmRlbnQtcnVsZSAobm90IChwYWlyPyAo Y2FyIGxzKSkpKQogICAgICAgIDs7IGZpeGVkIHZhbHVlcyBsaW5lZCB1cCwgYm9keSBpbmRlbnRl ZCB0d28gc3BhY2VzCiAgICAgICAgKChmbXQtdHJ5LWZpdAogICAgICAgICAgKGxhbWJkYSAoc3Qp CiAgICAgICAgICAgICgoY2F0CiAgICAgICAgICAgICAgIiAiCiAgICAgICAgICAgICAgKGZtdC1q b2luL3NoYXJlcyBwcC1vYmplY3QgZml4ZWQgKG1ha2Utbmwtc3BhY2UgKCsgY29sMiAxKSkpCiAg ICAgICAgICAgICAgKGlmIChwYWlyPyB0YWlsKQogICAgICAgICAgICAgICAgICAobGV0ICgoc2Vw IChtYWtlLW5sLXNwYWNlICgrIGNvbDEgMikpKSkKICAgICAgICAgICAgICAgICAgICAoY2F0IHNl cCAoZm10LWpvaW4vc2hhcmVzIHBwLW9iamVjdCB0YWlsIHNlcCkpKQogICAgICAgICAgICAgICAg ICAiIikKICAgICAgICAgICAgICAiKSIpCiAgICAgICAgICAgICAoZm10LWNvcHktc2hhcmVzIHN0 KSkpCiAgICAgICAgICBkZWZhdWx0KQogICAgICAgICBzdCkpCiAgICAgICAoZWxzZQogICAgICAg IDs7IGFsbCBvbiBzZXBhcmF0ZSBsaW5lcwogICAgICAgIChkZWZhdWx0IHN0KSkpKSkpCgooZGVm aW5lIChwcC1hcHAgbHMpCiAgKGxldCAoKGluZGVudC1ydWxlIChwcC1pbmRlbnRhdGlvbiBscykp KQogICAgKGlmIChwcm9jZWR1cmU/IGluZGVudC1ydWxlKQogICAgICAgIChpbmRlbnQtcnVsZSBs cykKICAgICAgICAocHAtd2l0aC1pbmRlbnQgaW5kZW50LXJ1bGUgbHMpKSkpCgo7OyB0aGUgZWxl bWVudHMgbWF5IGJlIHNoYXJlZCwganVzdCBjaGVja2luZyB0aGUgdG9wIGxldmVsIGxpc3QKOzsg c3RydWN0dXJlCihkZWZpbmUgKHByb3Blci1ub24tc2hhcmVkLWxpc3Q/IGxzIHNoYXJlcykKICAo bGV0ICgodGFiIChjYXIgc2hhcmVzKSkpCiAgICAobGV0IGxwICgobHMgbHMpKQogICAgICAob3Ig KG51bGw/IGxzKQogICAgICAgICAgKGFuZCAocGFpcj8gbHMpCiAgICAgICAgICAgICAgIChub3Qg KGVxPy10YWJsZS1yZWYgdGFiIGxzKSkKICAgICAgICAgICAgICAgKGxwIChjZHIgbHMpKSkpKSkp CgooZGVmaW5lIChwcC1mbGF0IHgpCiAgKGNvbmQKICAgICgocGFpcj8geCkKICAgICAoZm10LXNo YXJlZC13cml0ZQogICAgICB4CiAgICAgIChjb25kCiAgICAgICAgKChhbmQgKHBhaXI/IChjZHIg eCkpIChudWxsPyAoY2RkciB4KSkKICAgICAgICAgICAgICAoYXNzcSAoY2FyIHgpIHN5bnRheC1h YmJyZXZzKSkKICAgICAgICAgPT4gKGxhbWJkYSAoYWJicmV2KQogICAgICAgICAgICAgIChjYXQg KGNkciBhYmJyZXYpIChwcC1mbGF0IChjYWRyIHgpKSkpKQogICAgICAgIChlbHNlCiAgICAgICAg IChjYXQgIigiIChmbXQtam9pbi9zaGFyZXMgcHAtZmxhdCB4ICIgIikgIikiKSkpKSkKICAgICgo dmVjdG9yPyB4KQogICAgIChmbXQtc2hhcmVkLXdyaXRlCiAgICAgIHgKICAgICAgKGNhdCAiIygi IChmbXQtam9pbi9zaGFyZXMgcHAtZmxhdCAodmVjdG9yLT5saXN0IHgpICIgIikgIikiKSkpCiAg ICAoZWxzZQogICAgIChsYW1iZGEgKHN0KSAoKHdyaXRlLXdpdGgtc2hhcmVzIHggKGZtdC1zaGFy ZXMgc3QpKSBzdCkpKSkpCgooZGVmaW5lIChwcC1wYWlyIGxzKQogIChmbXQtc2hhcmVkLXdyaXRl CiAgIGxzCiAgIChjb25kCiAgICA7OyBvbmUgZWxlbWVudCBsaXN0LCBubyBsaW5lcyB0byBicmVh awogICAgKChudWxsPyAoY2RyIGxzKSkKICAgICAoY2F0ICIoIiAocHAtb2JqZWN0IChjYXIgbHMp KSAiKSIpKQogICAgOzsgcXVvdGUgb3Igb3RoZXIgYWJicmV2CiAgICAoKGFuZCAocGFpcj8gKGNk ciBscykpIChudWxsPyAoY2RkciBscykpCiAgICAgICAgICAoYXNzcSAoY2FyIGxzKSBzeW50YXgt YWJicmV2cykpCiAgICAgPT4gKGxhbWJkYSAoYWJicmV2KQogICAgICAgICAgKGNhdCAoY2RyIGFi YnJldikgKHBwLW9iamVjdCAoY2FkciBscykpKSkpCiAgICAoZWxzZQogICAgIChmbXQtdHJ5LWZp dAogICAgICAobGFtYmRhIChzdCkgKChwcC1mbGF0IGxzKSAoZm10LWNvcHktc2hhcmVzIHN0KSkp CiAgICAgIChsYW1iZGEgKHN0KQogICAgICAgIChpZiAoYW5kIChub24tYXBwPyBscykKICAgICAg ICAgICAgICAgICAocHJvcGVyLW5vbi1zaGFyZWQtbGlzdD8gbHMgKGZtdC1zaGFyZXMgc3QpKSkK ICAgICAgICAgICAgKChwcC1kYXRhLWxpc3QgbHMpIHN0KQogICAgICAgICAgICAoKHBwLWFwcCBs cykgc3QpKSkpKSkpKQoKKGRlZmluZSAocHAtZGF0YS1saXN0IGxzKQogIChsYW1iZGEgKHN0KQog ICAgKGxldCogKChvdXRwdXQgKGZtdC13cml0ZXIgc3QpKQogICAgICAgICAgIChzdCAob3V0cHV0 ICIoIiBzdCkpCiAgICAgICAgICAgKGNvbCAoZm10LWNvbCBzdCkpCiAgICAgICAgICAgKHdpZHRo ICgtIChmbXQtd2lkdGggc3QpIGNvbCkpCiAgICAgICAgICAgKHN0MiAoZm10LWNvcHktc2hhcmVz IHN0KSkpCiAgICAgIChjb25kCiAgICAgICAgKChhbmQgKHBhaXI/IChjZHIgbHMpKSAocGFpcj8g KGNkZHIgbHMpKSAocGFpcj8gKGNkZGRyIGxzKSkKICAgICAgICAgICAgICAoKGZpdHMtaW4tY29s dW1ucyBscyBwcC1mbGF0IHdpZHRoKSBzdDIpKQogICAgICAgICA9PiAobGFtYmRhIChscykKICAg ICAgICAgICAgICA7OyBhdCBsZWFzdCBmb3VyIGVsZW1lbnRzIHdoaWNoIGNhbiBiZSBicm9rZW4g aW50byBjb2x1bW5zCiAgICAgICAgICAgICAgKGxldCogKChwcmVmaXggKG1ha2Utbmwtc3BhY2Ug KCsgY29sIDEpKSkKICAgICAgICAgICAgICAgICAgICAgKHdpZGVzdCAoKyAxIChjYXIgbHMpKSkK ICAgICAgICAgICAgICAgICAgICAgKGNvbHVtbnMgKHF1b3RpZW50IHdpZHRoIHdpZGVzdCkpKSA7 IGFsd2F5cyA+PSAyCiAgICAgICAgICAgICAgICAobGV0IGxwICgobHMgKGNkciBscykpIChzdCBz dDIpIChpIDEpKQogICAgICAgICAgICAgICAgICAoY29uZAogICAgICAgICAgICAgICAgICAgICgo bnVsbD8gbHMpCiAgICAgICAgICAgICAgICAgICAgIChvdXRwdXQgIikiIHN0KSkKICAgICAgICAg ICAgICAgICAgICAoKG51bGw/IChjZHIgbHMpKQogICAgICAgICAgICAgICAgICAgICAob3V0cHV0 ICIpIiAob3V0cHV0IChjYXIgbHMpIHN0KSkpCiAgICAgICAgICAgICAgICAgICAgKGVsc2UKICAg ICAgICAgICAgICAgICAgICAgKGxldCAoKHN0IChvdXRwdXQgKGNhciBscykgc3QpKSkKICAgICAg ICAgICAgICAgICAgICAgICAoaWYgKD49IGkgY29sdW1ucykKICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGxwIChjZHIgbHMpIChvdXRwdXQgcHJlZml4IHN0KSAxKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAobGV0KiAoKHBhZCAoLSB3aWRlc3QgKHN0cmluZy1sZW5ndGggKGNhciBscykp KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdCAob3V0cHV0IChtYWtlLXNw YWNlIHBhZCkgc3QpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobHAgKGNkciBscykg c3QgKCsgaSAxKSkpKSkpKSkpKSkKICAgICAgICAoZWxzZQogICAgICAgICA7OyBubyByb29tLCBw cmludCBvbmUgcGVyIGxpbmUKICAgICAgICAgKChjYXQgKGZtdC1qb2luIHBwLW9iamVjdCBscyAo bWFrZS1ubC1zcGFjZSBjb2wpKSAiKSIpIHN0KSkpKSkpCgooZGVmaW5lIChwcC12ZWN0b3IgdmVj KQogIChmbXQtc2hhcmVkLXdyaXRlIHZlYyAoY2F0ICIjIiAocHAtZGF0YS1saXN0ICh2ZWN0b3It Pmxpc3QgdmVjKSkpKSkKCihkZWZpbmUgKHBwLW9iamVjdCBvYmopCiAgKGNvbmQKICAgICgocGFp cj8gb2JqKSAocHAtcGFpciBvYmopKQogICAgKCh2ZWN0b3I/IG9iaikgKHBwLXZlY3RvciBvYmop KQogICAgKGVsc2UgKGxhbWJkYSAoc3QpICgod3JpdGUtd2l0aC1zaGFyZXMgb2JqIChmbXQtc2hh cmVzIHN0KSkgc3QpKSkpKQoKKGRlZmluZSAocHJldHR5IG9iaikKICAoZm10LWJpbmQgJ3NoYXJl cyAoY29ucyAobWFrZS1zaGFyZWQtcmVmLXRhYmxlIG9iaikgMCkKICAgICAgICAgICAgKGNhdCAo cHAtb2JqZWN0IG9iaikgZmwpKSkKCihkZWZpbmUgKHByZXR0eS91bnNoYXJlZCBvYmopCiAgKGZt dC1iaW5kICdzaGFyZXMgKGNvbnMgKG1ha2UtZXE/LXRhYmxlKSAwKSAoY2F0IChwcC1vYmplY3Qg b2JqKSBmbCkpKQoK --bcaec53f8e6da1058a049e4f8f3a Content-Type: application/octet-stream; name="fmt.scm" Content-Disposition: attachment; filename="fmt.scm" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gl7152g73 Ozs7OyBmbXQuc2NtIC0tIGV4dGVuc2libGUgZm9ybWF0dGluZyBsaWJyYXJ5Cjs7Cjs7IENvcHly aWdodCAoYykgMjAwNi0yMDA4IEFsZXggU2hpbm4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgo7OyBC U0Qtc3R5bGUgbGljZW5zZTogaHR0cDovL3N5bnRoY29kZS5jb20vbGljZW5zZS50eHQKCjs7IE1v ZGlmaWVkIHNsaWdodGx5IGZyb20gZm10IDAuNgoKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Cjs7OyBzdHJpbmcg dXRpbGl0aWVzCgooZGVmaW5lICh3cml0ZS10by1zdHJpbmcgeCkKICAoY2FsbC13aXRoLW91dHB1 dC1zdHJpbmcgKGxhbWJkYSAocCkgKHdyaXRlIHggcCkpKSkKCihkZWZpbmUgKGRpc3BsYXktdG8t c3RyaW5nIHgpCiAgKGlmIChzdHJpbmc/IHgpCiAgICAgIHgKICAgICAgKGNhbGwtd2l0aC1vdXRw dXQtc3RyaW5nIChsYW1iZGEgKHApIChkaXNwbGF5IHggcCkpKSkpCgooZGVmaW5lIG5sLXN0cgog IChjYWxsLXdpdGgtb3V0cHV0LXN0cmluZyBuZXdsaW5lKSkKCihkZWZpbmUgKG1ha2Utc3BhY2Ug bikgKG1ha2Utc3RyaW5nIG4gI1xzcGFjZSkpCihkZWZpbmUgKG1ha2Utbmwtc3BhY2UgbikgKHN0 cmluZy1hcHBlbmQgbmwtc3RyIChtYWtlLXN0cmluZyBuICNcc3BhY2UpKSkKCjs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Owo7OzsgbGlzdCB1dGlsaXRpZXMKCihkZWZpbmUgKHRha2UqIGxzIG4pICAgOyBoYW5kbGVz IGRvdHRlZCBsaXN0cyBhbmQgbiA+IGxlbmd0aAogIChjb25kICgoemVybz8gbikgJygpKQogICAg ICAgICgocGFpcj8gbHMpIChjb25zIChjYXIgbHMpICh0YWtlKiAoY2RyIGxzKSAoLSBuIDEpKSkp CiAgICAgICAgKGVsc2UgJygpKSkpCgooZGVmaW5lIChkcm9wKiBscyBuKSAgIDsgbWF5IHJldHVy biB0aGUgZG90CiAgKGNvbmQgKCh6ZXJvPyBuKSBscykKICAgICAgICAoKHBhaXI/IGxzKSAoZHJv cCogKGNkciBscykgKC0gbiAxKSkpCiAgICAgICAgKGVsc2UgbHMpKSkKCjs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Owo7OzsgZm9ybWF0IHN0YXRlIHJlcHJlc2VudGF0aW9uCgo7OyBVc2UgYSBmbGV4aWJsZSByZXBy ZXNlbnRhdGlvbiBvcHRpbWl6ZWQgZm9yIGNvbW1vbiBjYXNlcyAtCjs7IGZyZXF1ZW50bHkgYWNj ZXNzZWQgdmFsdWVzIGFyZSBpbiBmaXhlZCB2ZWN0b3Igc2xvdHMsIHdpdGggYQo7OyBgcHJvcGVy dGllcycgc2xvdCBob2xkaW5nIGFuIGFsaXN0IGZvciBhbGwgb3RoZXIgdmFsdWVzLgoKKGRlZmlu ZSAqZGVmYXVsdC1mbXQtc3RhdGUqCiAgKHZlY3RvciAwIDAgMTAgJygpICNcc3BhY2UgI2YgNzgg I2YgI2YgI2YgI2YgI2YpKQoKKGRlZmluZSBmbXQtc3RhdGU/IHZlY3Rvcj8pCgooZGVmaW5lIChu ZXctZm10LXN0YXRlIC4gbykKICAobGV0ICgoc3QgKGlmIChwYWlyPyBvKSAoY2FyIG8pIChjdXJy ZW50LW91dHB1dC1wb3J0KSkpKQogICAgKGlmICh2ZWN0b3I/IHN0KQogICAgICAgIHN0CiAgICAg ICAgKGZtdC1zZXQtd3JpdGVyIQogICAgICAgICAoZm10LXNldC1wb3J0ISAoY29weS1mbXQtc3Rh dGUgKmRlZmF1bHQtZm10LXN0YXRlKikgc3QpCiAgICAgICAgIGZtdC13cml0ZSkpKSkKCihkZWZp bmUgKGNvcHktZm10LXN0YXRlIHN0KQogIChsZXQqICgobGVuICh2ZWN0b3ItbGVuZ3RoIHN0KSkK ICAgICAgICAgKHJlcyAobWFrZS12ZWN0b3IgbGVuKSkpCiAgICAoZG8gKChpIDAgKCsgaSAxKSkp CiAgICAgICAgKCg9IGkgbGVuKSkKICAgICAgKHZlY3Rvci1zZXQhIHJlcyBpICh2ZWN0b3ItcmVm IHN0IGkpKSkKICAgIChmbXQtc2V0LXByb3BlcnRpZXMhIHJlcyAobWFwIChsYW1iZGEgKHgpIChj b25zIChjYXIgeCkgKGNkciB4KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo Zm10LXByb3BlcnRpZXMgcmVzKSkpCiAgICByZXMpKQoKKGRlZmluZSAoZm10LXJvdyBzdCkgKHZl Y3Rvci1yZWYgc3QgMCkpCihkZWZpbmUgKGZtdC1jb2wgc3QpICh2ZWN0b3ItcmVmIHN0IDEpKQoo ZGVmaW5lIChmbXQtcmFkaXggc3QpICh2ZWN0b3ItcmVmIHN0IDIpKQooZGVmaW5lIChmbXQtcHJv cGVydGllcyBzdCkgKHZlY3Rvci1yZWYgc3QgMykpCihkZWZpbmUgKGZtdC1wYWQtY2hhciBzdCkg KHZlY3Rvci1yZWYgc3QgNCkpCihkZWZpbmUgKGZtdC1wcmVjaXNpb24gc3QpICh2ZWN0b3ItcmVm IHN0IDUpKQooZGVmaW5lIChmbXQtd2lkdGggc3QpICh2ZWN0b3ItcmVmIHN0IDYpKQooZGVmaW5l IChmbXQtd3JpdGVyIHN0KSAodmVjdG9yLXJlZiBzdCA3KSkKKGRlZmluZSAoZm10LXBvcnQgc3Qp ICh2ZWN0b3ItcmVmIHN0IDgpKQooZGVmaW5lIChmbXQtZGVjaW1hbC1zZXAgc3QpICh2ZWN0b3It cmVmIHN0IDkpKQooZGVmaW5lIChmbXQtc3RyaW5nLXdpZHRoIHN0KSAodmVjdG9yLXJlZiBzdCAx MCkpCihkZWZpbmUgKGZtdC1lbGxpcHNlcyBzdCkgKHZlY3Rvci1yZWYgc3QgMTEpKQoKKGRlZmlu ZSAoZm10LXNldC1yb3chIHN0IHgpICh2ZWN0b3Itc2V0ISBzdCAwIHgpIHN0KQooZGVmaW5lIChm bXQtc2V0LWNvbCEgc3QgeCkgKHZlY3Rvci1zZXQhIHN0IDEgeCkgc3QpCihkZWZpbmUgKGZtdC1z ZXQtcmFkaXghIHN0IHgpICh2ZWN0b3Itc2V0ISBzdCAyIHgpIHN0KQooZGVmaW5lIChmbXQtc2V0 LXByb3BlcnRpZXMhIHN0IHgpICh2ZWN0b3Itc2V0ISBzdCAzIHgpIHN0KQooZGVmaW5lIChmbXQt c2V0LXBhZC1jaGFyISBzdCB4KSAodmVjdG9yLXNldCEgc3QgNCB4KSBzdCkKKGRlZmluZSAoZm10 LXNldC1wcmVjaXNpb24hIHN0IHgpICh2ZWN0b3Itc2V0ISBzdCA1IHgpIHN0KQooZGVmaW5lIChm bXQtc2V0LXdpZHRoISBzdCB4KSAodmVjdG9yLXNldCEgc3QgNiB4KSBzdCkKKGRlZmluZSAoZm10 LXNldC13cml0ZXIhIHN0IHgpICh2ZWN0b3Itc2V0ISBzdCA3IHgpIHN0KQooZGVmaW5lIChmbXQt c2V0LXBvcnQhIHN0IHgpICh2ZWN0b3Itc2V0ISBzdCA4IHgpIHN0KQooZGVmaW5lIChmbXQtc2V0 LWRlY2ltYWwtc2VwISBzdCB4KSAodmVjdG9yLXNldCEgc3QgOSB4KSBzdCkKKGRlZmluZSAoZm10 LXNldC1zdHJpbmctd2lkdGghIHN0IHgpICh2ZWN0b3Itc2V0ISBzdCAxMCB4KSBzdCkKKGRlZmlu ZSAoZm10LXNldC1lbGxpcHNlcyEgc3QgeCkgKHZlY3Rvci1zZXQhIHN0IDExIHgpIHN0KQoKKGRl ZmluZSAoZm10LXJlZiBzdCBrZXkgLiBvKQogIChjYXNlIGtleQogICAgKChyb3cpIChmbXQtcm93 IHN0KSkKICAgICgoY29sKSAoZm10LWNvbCBzdCkpCiAgICAoKHJhZGl4KSAoZm10LXJhZGl4IHN0 KSkKICAgICgocHJvcGVydGllcykgKGZtdC1wcm9wZXJ0aWVzIHN0KSkKICAgICgod3JpdGVyKSAo Zm10LXdyaXRlciBzdCkpCiAgICAoKHBvcnQpIChmbXQtcG9ydCBzdCkpCiAgICAoKHByZWNpc2lv bikgKGZtdC1wcmVjaXNpb24gc3QpKQogICAgKChwYWQtY2hhcikgKGZtdC1wYWQtY2hhciBzdCkp CiAgICAoKHdpZHRoKSAoZm10LXdpZHRoIHN0KSkKICAgICgoZGVjaW1hbC1zZXApIChmbXQtZGVj aW1hbC1zZXAgc3QpKQogICAgKChzdHJpbmctd2lkdGgpIChmbXQtc3RyaW5nLXdpZHRoIHN0KSkK ICAgICgoZWxsaXBzZXMpIChmbXQtZWxsaXBzZXMgc3QpKQogICAgKGVsc2UgKGNvbmQgKChhc3Nx IGtleSAoZm10LXByb3BlcnRpZXMgc3QpKSA9PiBjZHIpCiAgICAgICAgICAgICAgICAoKHBhaXI/ IG8pIChjYXIgbykpCiAgICAgICAgICAgICAgICAoZWxzZSAjZikpKSkpCgooZGVmaW5lIChmbXQt c2V0LXByb3BlcnR5ISBzdCBrZXkgdmFsKQogIChjb25kICgoYXNzcSBrZXkgKGZtdC1wcm9wZXJ0 aWVzIHN0KSkKICAgICAgICAgPT4gKGxhbWJkYSAoY2VsbCkgKHNldC1jZHIhIGNlbGwgdmFsKSBz dCkpCiAgICAgICAgKGVsc2UgKGZtdC1zZXQtcHJvcGVydGllcyEKICAgICAgICAgICAgICAgc3QK ICAgICAgICAgICAgICAgKGNvbnMgKGNvbnMga2V5IHZhbCkgKGZtdC1wcm9wZXJ0aWVzIHN0KSkp KSkpCgooZGVmaW5lIChmbXQtc2V0ISBzdCBrZXkgdmFsKQogIChjYXNlIGtleQogICAgKChyb3cp IChmbXQtc2V0LXJvdyEgc3QgdmFsKSkKICAgICgoY29sKSAoZm10LXNldC1jb2whIHN0IHZhbCkp CiAgICAoKHJhZGl4KSAoZm10LXNldC1yYWRpeCEgc3QgdmFsKSkKICAgICgocHJvcGVydGllcykg KGZtdC1zZXQtcHJvcGVydGllcyEgc3QgdmFsKSkKICAgICgocGFkLWNoYXIpIChmbXQtc2V0LXBh ZC1jaGFyISBzdCB2YWwpKQogICAgKChwcmVjaXNpb24pIChmbXQtc2V0LXByZWNpc2lvbiEgc3Qg dmFsKSkKICAgICgod3JpdGVyKSAoZm10LXNldC13cml0ZXIhIHN0IHZhbCkpCiAgICAoKHBvcnQp IChmbXQtc2V0LXBvcnQhIHN0IHZhbCkpCiAgICAoKHdpZHRoKSAoZm10LXNldC13aWR0aCEgc3Qg dmFsKSkKICAgICgoZGVjaW1hbC1zZXApIChmbXQtc2V0LWRlY2ltYWwtc2VwISBzdCB2YWwpKQog ICAgKChzdHJpbmctd2lkdGgpIChmbXQtc2V0LXN0cmluZy13aWR0aCEgc3QgdmFsKSkKICAgICgo ZWxsaXBzZXMpIChmbXQtc2V0LWVsbGlwc2VzISBzdCB2YWwpKQogICAgKGVsc2UgKGZtdC1zZXQt cHJvcGVydHkhIHN0IGtleSB2YWwpKSkpCgooZGVmaW5lIChmbXQtYWRkLXByb3BlcnRpZXMhIHN0 IGFsaXN0KQogIChmb3ItZWFjaCAobGFtYmRhICh4KSAoZm10LXNldCEgc3QgKGNhciB4KSAoY2Ry IHgpKSkgYWxpc3QpCiAgc3QpCgooZGVmaW5lIChmbXQtbGV0IGtleSB2YWwgLiBscykKICAobGFt YmRhIChzdCkKICAgIChsZXQgKChvcmlnLXZhbCAoZm10LXJlZiBzdCBrZXkpKSkKICAgICAgKGZt dC1zZXQhICgoYXBwbHktY2F0IGxzKSAoZm10LXNldCEgc3Qga2V5IHZhbCkpIGtleSBvcmlnLXZh bCkpKSkKCihkZWZpbmUgKGZtdC1iaW5kIGtleSB2YWwgLiBscykKICAobGFtYmRhIChzdCkgKChh cHBseS1jYXQgbHMpIChmbXQtc2V0ISBzdCBrZXkgdmFsKSkpKQoKKGRlZmluZSAoZml4IHByZWMg LiBscykgKGZtdC1sZXQgJ3ByZWNpc2lvbiBwcmVjIChhcHBseS1jYXQgbHMpKSkKKGRlZmluZSAo cmFkaXggcmFkIC4gbHMpIChmbXQtbGV0ICdyYWRpeCByYWQgKGFwcGx5LWNhdCBscykpKQooZGVm aW5lIChwYWQtY2hhciBjaCAuIGxzKSAoZm10LWxldCAncGFkLWNoYXIgY2ggKGFwcGx5LWNhdCBs cykpKQooZGVmaW5lIChjb21tYS1jaGFyIGNoIC4gbHMpIChmbXQtbGV0ICdjb21tYS1jaGFyIGNo IChhcHBseS1jYXQgbHMpKSkKKGRlZmluZSAoZGVjaW1hbC1jaGFyIGNoIC4gbHMpIChmbXQtbGV0 ICdkZWNpbWFsLXNlcCBjaCAoYXBwbHktY2F0IGxzKSkpCihkZWZpbmUgKHdpdGgtd2lkdGggdyAu IGxzKSAoZm10LWxldCAnd2lkdGggdyAoYXBwbHktY2F0IGxzKSkpCihkZWZpbmUgKGVsbGlwc2Vz IGVsbCAuIGxzKSAoZm10LWxldCAnZWxsaXBzZXMgZWxsIChhcHBseS1jYXQgbHMpKSkKCjs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Owo7OzsgdGhlIGJhc2ljIGludGVyZmFjZQoKKGRlZmluZSAoZm10LXN0YXJ0IHN0 IGluaXRpYWxpemVyIHByb2MpCiAgKGNvbmQKICAgICgob3IgKG91dHB1dC1wb3J0PyBzdCkgKGZt dC1zdGF0ZT8gc3QpKQogICAgIChwcm9jIChpbml0aWFsaXplciBzdCkpCiAgICAgKGlmICNmICNm KSkKICAgICgoZXE/ICN0IHN0KQogICAgIChwcm9jIChpbml0aWFsaXplciAoY3VycmVudC1vdXRw dXQtcG9ydCkpKQogICAgIChpZiAjZiAjZikpCiAgICAoKGVxPyAjZiBzdCkKICAgICAoZ2V0LW91 dHB1dC1zdHJpbmcKICAgICAgKGZtdC1wb3J0IChwcm9jIChpbml0aWFsaXplciAob3Blbi1vdXRw dXQtc3RyaW5nKSkpKSkpCiAgICAoZWxzZSAoZXJyb3IgInVua25vd24gZm9ybWF0IG91dHB1dCIg c3QpKSkpCgooZGVmaW5lIChmbXQgc3QgLiBhcmdzKQogIChmbXQtc3RhcnQgc3QgbmV3LWZtdC1z dGF0ZSAoYXBwbHktY2F0IGFyZ3MpKSkKCihkZWZpbmUgKGZtdC11cGRhdGUgc3RyIHN0KQogIChs ZXQgKChsZW4gKHN0cmluZy1sZW5ndGggc3RyKSkKICAgICAgICAobmxpIChzdHJpbmctaW5kZXgt cmlnaHQgc3RyICNcbmV3bGluZSkpCiAgICAgICAgKHN0ci13aWR0aCAoZm10LXN0cmluZy13aWR0 aCBzdCkpKQogICAgKGlmIG5saQogICAgICAgIChsZXQgKChyb3cgKCsgKGZtdC1yb3cgc3QpIDEg KHN0cmluZy1jb3VudCBzdHIgI1xuZXdsaW5lIDAgbmxpKSkpKQogICAgICAgICAgKGZtdC1zZXQt cm93IQogICAgICAgICAgIChmbXQtc2V0LWNvbCEgc3QgKGlmIHN0ci13aWR0aAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChzdHItd2lkdGggc3RyICgrIG5saSAxKSBsZW4pCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0gbGVuICgrIG5saSAxKSkpKQogICAgICAgICAg IHJvdykpCiAgICAgICAgKGZtdC1zZXQtY29sISBzdCAoKyAoZm10LWNvbCBzdCkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChpZiBzdHItd2lkdGgKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc3RyLXdpZHRoIHN0ciAwIGxlbikKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsZW4pKSkpKSkKCihkZWZpbmUgKGZtdC13cml0ZSBzdHIgc3QpCiAgKGRpc3BsYXkgc3Ry IChmbXQtcG9ydCBzdCkpCiAgKGZtdC11cGRhdGUgc3RyIHN0KSkKCihkZWZpbmUgKGFwcGx5LWNh dCBwcm9jcykKICAobGFtYmRhIChzdCkKICAgIChsZXQgbG9vcCAoKGxzIHByb2NzKSAoc3Qgc3Qp KQogICAgICAoaWYgKG51bGw/IGxzKQogICAgICAgICAgc3QKICAgICAgICAgIChsb29wIChjZHIg bHMpICgoZHNwIChjYXIgbHMpKSBzdCkpKSkpKQoKKGRlZmluZSAoY2F0IC4gbHMpIChhcHBseS1j YXQgbHMpKQoKKGRlZmluZSAoZm10LW51bGwgc3QpIHN0KQoKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Cjs7OyBj b250cm9sIHN0cnVjdHVyZXMKCihkZWZpbmUgKGZtdC1pZiBjaGVjayBwYXNzIC4gbykKICAobGV0 ICgoZmFpbCAoaWYgKHBhaXI/IG8pIChjYXIgbykgKGxhbWJkYSAoeCkgeCkpKSkKICAgIChsYW1i ZGEgKHN0KSAoaWYgKGNoZWNrIHN0KSAoKGRzcCBwYXNzKSBzdCkgKChkc3AgZmFpbCkgc3QpKSkp KQoKKGRlZmluZSAoZm10LXRyeS1maXQgcHJvYyAuIGZhaWwpCiAgKGlmIChudWxsPyBmYWlsKQog ICAgICBwcm9jCiAgICAgIChsYW1iZGEgKG9yaWctc3QpCiAgICAgICAgKGxldCAoKHdpZHRoIChm bXQtd2lkdGggb3JpZy1zdCkpCiAgICAgICAgICAgICAgKGJ1ZmZlciAnKCkpKQogICAgICAgICAg KGNhbGwtd2l0aC1jdXJyZW50LWNvbnRpbnVhdGlvbgogICAgICAgICAgICAobGFtYmRhIChyZXR1 cm4pCiAgICAgICAgICAgICAgKGRlZmluZSAob3V0cHV0KiBzdHIgc3QpCiAgICAgICAgICAgICAg ICAobGV0IGxwICgoaSAwKSAoY29sIChmbXQtY29sIHN0KSkpCiAgICAgICAgICAgICAgICAgIChs ZXQgKChubGkgKHN0cmluZy1pbmRleCBzdHIgI1xuZXdsaW5lIGkpKSkKICAgICAgICAgICAgICAg ICAgICAoaWYgbmxpCiAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoPiAoKyAoLSBubGkgaSkg Y29sKSB3aWR0aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXR1cm4gKChhcHBseSBm bXQtdHJ5LWZpdCBmYWlsKSBvcmlnLXN0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChs cCAoKyBubGkgMSkgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQqICgobGVuIChzdHJp bmctbGVuZ3RoIHN0cikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29sICgrICgt IGxlbiBpKSBjb2wpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKD4gY29sIHdpZHRo KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmV0dXJuICgoYXBwbHkgZm10LXRyeS1m aXQgZmFpbCkgb3JpZy1zdCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiZWdpbgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXQhIGJ1ZmZlciAoY29ucyBzdHIgYnVm ZmVyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm10LXVwZGF0ZSBzdHIgc3Qp KSkpKSkpKQogICAgICAgICAgICAgIChwcm9jIChmbXQtc2V0LXBvcnQhIChmbXQtc2V0LXdyaXRl ciEgKGNvcHktZm10LXN0YXRlIG9yaWctc3QpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQqKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChvcGVuLW91dHB1dC1zdHJpbmcpKSkKICAgICAgICAgICAgICAoKGZtdC13cml0 ZXIgb3JpZy1zdCkKICAgICAgICAgICAgICAgKHN0cmluZy1jb25jYXRlbmF0ZS1yZXZlcnNlIGJ1 ZmZlcikKICAgICAgICAgICAgICAgb3JpZy1zdCkpKSkpKSkKCihkZWZpbmUgKGZpdHMtaW4td2lk dGggZ2VuIHdpZHRoKQogIChsYW1iZGEgKHN0KQogICAgKGxldCAoKG91dHB1dCAoZm10LXdyaXRl ciBzdCkpCiAgICAgICAgICAocG9ydCAob3Blbi1vdXRwdXQtc3RyaW5nKSkpCiAgICAgIChjYWxs LXdpdGgtY3VycmVudC1jb250aW51YXRpb24KICAgICAgICAobGFtYmRhIChyZXR1cm4pCiAgICAg ICAgICAoZGVmaW5lIChvdXRwdXQqIHN0ciBzdCkKICAgICAgICAgICAgKGxldCAoKHN0IChmbXQt dXBkYXRlIHN0ciBzdCkpKQogICAgICAgICAgICAgIChpZiAoPiAoZm10LWNvbCBzdCkgd2lkdGgp CiAgICAgICAgICAgICAgICAgIChyZXR1cm4gI2YpCiAgICAgICAgICAgICAgICAgIChiZWdpbgog ICAgICAgICAgICAgICAgICAgIChkaXNwbGF5IHN0ciBwb3J0KQogICAgICAgICAgICAgICAgICAg IHN0KSkpKQogICAgICAgICAgKGdlbiAoZm10LXNldC1wb3J0ISAoZm10LXNldC13cml0ZXIhIChj b3B5LWZtdC1zdGF0ZSBzdCkgb3V0cHV0KikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cG9ydCkpCiAgICAgICAgICAoZ2V0LW91dHB1dC1zdHJpbmcgcG9ydCkpKSkpKQoKKGRlZmluZSAo Zml0cy1pbi1jb2x1bW5zIGxzIHdyaXRlIHdpZHRoKQogIChsYW1iZGEgKHN0KQogICAgKGxldCAo KG1heC13IChxdW90aWVudCB3aWR0aCAyKSkpCiAgICAgIChsZXQgbHAgKChscyBscykgKHJlcyAn KCkpICh3aWRlc3QgMCkpCiAgICAgICAgKGNvbmQKICAgICAgICAgICgocGFpcj8gbHMpCiAgICAg ICAgICAgKGxldCAoKHN0ciAoKGZpdHMtaW4td2lkdGggKHdyaXRlIChjYXIgbHMpKSBtYXgtdykg c3QpKSkKICAgICAgICAgICAgIChhbmQgc3RyCiAgICAgICAgICAgICAgICAgIChscCAoY2RyIGxz KQogICAgICAgICAgICAgICAgICAgICAgKGNvbnMgc3RyIHJlcykKICAgICAgICAgICAgICAgICAg ICAgIChtYXggKHN0cmluZy1sZW5ndGggc3RyKSB3aWRlc3QpKSkpKQogICAgICAgICAgKChudWxs PyBscykgKGNvbnMgd2lkZXN0IChyZXZlcnNlIHJlcykpKQogICAgICAgICAgKGVsc2UgI2YpKSkp KSkKCihkZWZpbmUgKGZtdC1jYXB0dXJlIHByb2R1Y2VyIGNvbnN1bWVyKQogIChsYW1iZGEgKHN0 KQogICAgKGxldCAoKHBvcnQgKG9wZW4tb3V0cHV0LXN0cmluZykpKQogICAgICAocHJvZHVjZXIg KGZtdC1zZXQtd3JpdGVyISAoZm10LXNldC1wb3J0ISAoY29weS1mbXQtc3RhdGUgc3QpIHBvcnQp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdC13cml0ZSkpCiAgICAgICgoY29u c3VtZXIgKGdldC1vdXRwdXQtc3RyaW5nIHBvcnQpKSBzdCkpKSkKCihkZWZpbmUgKGZtdC10by1z dHJpbmcgcHJvZHVjZXIpCiAgKGZtdC1jYXB0dXJlIHByb2R1Y2VyIChsYW1iZGEgKHN0cikgKGxh bWJkYSAoc3QpIHN0cikpKSkKCjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Owo7Ozsgc3RhbmRhcmQgZm9ybWF0dGVy cwoKKGRlZmluZSAobmwgc3QpCiAgKChmbXQtd3JpdGVyIHN0KSBubC1zdHIgc3QpKQoKOzsgb3V0 cHV0IGEgbmV3bGluZSBpZmYgd2UncmUgbm90IGF0IHRoZSBzdGFydCBvZiBhIGZyZXNoIGxpbmUK KGRlZmluZSAoZmwgc3QpCiAgKGlmICh6ZXJvPyAoZm10LWNvbCBzdCkpIHN0IChubCBzdCkpKQoK OzsgdGFiIHRvIGEgZ2l2ZW4gdGFiLXN0b3AKKGRlZmluZSAodGFiLXRvIC4gbykKICAobGFtYmRh IChzdCkKICAgIChsZXQqICgodGFiLXdpZHRoIChpZiAocGFpcj8gbykgKGNhciBvKSA4KSkKICAg ICAgICAgICAocmVtIChtb2R1bG8gKGZtdC1jb2wgc3QpIHRhYi13aWR0aCkpKQogICAgICAoaWYg KHBvc2l0aXZlPyByZW0pCiAgICAgICAgICAoKGZtdC13cml0ZXIgc3QpCiAgICAgICAgICAgKG1h a2Utc3RyaW5nICgtIHRhYi13aWR0aCByZW0pIChmbXQtcGFkLWNoYXIgc3QpKQogICAgICAgICAg IHN0KQogICAgICAgICAgc3QpKSkpCgo7OyBtb3ZlIHRvIGFuIGV4cGxpY2l0IGNvbHVtbgooZGVm aW5lIChzcGFjZS10byBjb2wpCiAgKGxhbWJkYSAoc3QpCiAgICAobGV0ICgod2lkdGggKC0gY29s IChmbXQtY29sIHN0KSkpKQogICAgICAoaWYgKHBvc2l0aXZlPyB3aWR0aCkKICAgICAgICAgICgo Zm10LXdyaXRlciBzdCkgKG1ha2Utc3RyaW5nIHdpZHRoIChmbXQtcGFkLWNoYXIgc3QpKSBzdCkK ICAgICAgICAgIHN0KSkpKQoKKGRlZmluZSAoZm10LWpvaW4gZm10IGxzIC4gbykKICAobGV0ICgo c2VwIChkc3AgKGlmIChwYWlyPyBvKSAoY2FyIG8pICIiKSkpKQogICAgKGxhbWJkYSAoc3QpCiAg ICAgIChpZiAobnVsbD8gbHMpCiAgICAgICAgICBzdAogICAgICAgICAgKGxldCBscCAoKGxzIChj ZHIgbHMpKQogICAgICAgICAgICAgICAgICAgKHN0ICgoZm10IChjYXIgbHMpKSBzdCkpKQogICAg ICAgICAgICAoaWYgKG51bGw/IGxzKQogICAgICAgICAgICAgICAgc3QKICAgICAgICAgICAgICAg IChscCAoY2RyIGxzKSAoKGZtdCAoY2FyIGxzKSkgKHNlcCBzdCkpKSkpKSkpKQoKKGRlZmluZSAo Zm10LWpvaW4vcHJlZml4IGZtdCBscyAuIG8pCiAgKGlmIChudWxsPyBscykKICAgICAgZm10LW51 bGwKICAgICAgKGxldCAoKHNlcCAoZHNwIChpZiAocGFpcj8gbykgKGNhciBvKSAiIikpKSkKICAg ICAgICAoY2F0IHNlcCAoZm10LWpvaW4gZm10IGxzIHNlcCkpKSkpCihkZWZpbmUgKGZtdC1qb2lu L3N1ZmZpeCBmbXQgbHMgLiBvKQogIChpZiAobnVsbD8gbHMpCiAgICAgIGZtdC1udWxsCiAgICAg IChsZXQgKChzZXAgKGRzcCAoaWYgKHBhaXI/IG8pIChjYXIgbykgIiIpKSkpCiAgICAgICAgKGNh dCAoZm10LWpvaW4gZm10IGxzIHNlcCkgc2VwKSkpKQoKKGRlZmluZSAoZm10LWpvaW4vbGFzdCBm bXQgZm10L2xhc3QgbHMgLiBvKQogIChsZXQgKChzZXAgKGRzcCAoaWYgKHBhaXI/IG8pIChjYXIg bykgIiIpKSkpCiAgICAobGFtYmRhIChzdCkKICAgICAgKGNvbmQKICAgICAgICAoKG51bGw/IGxz KQogICAgICAgICBzdCkKICAgICAgICAoKG51bGw/IChjZHIgbHMpKQogICAgICAgICAoKGZtdC9s YXN0IChjYXIgbHMpKSAoc2VwIHN0KSkpCiAgICAgICAgKGVsc2UKICAgICAgICAgKGxldCBscCAo KGxzIChjZHIgbHMpKQogICAgICAgICAgICAgICAgICAoc3QgKChmbXQgKGNhciBscykpIHN0KSkp CiAgICAgICAgICAgKGlmIChudWxsPyAoY2RyIGxzKSkKICAgICAgICAgICAgICAgKChmbXQvbGFz dCAoY2FyIGxzKSkgKHNlcCBzdCkpCiAgICAgICAgICAgICAgIChscCAoY2RyIGxzKSAoKGZtdCAo Y2FyIGxzKSkgKHNlcCBzdCkpKSkpKSkpKSkKCihkZWZpbmUgKGZtdC1qb2luL2RvdCBmbXQgZm10 L2RvdCBscyAuIG8pCiAgKGxldCAoKHNlcCAoZHNwIChpZiAocGFpcj8gbykgKGNhciBvKSAiIikp KSkKICAgIChsYW1iZGEgKHN0KQogICAgICAoY29uZAogICAgICAgICgocGFpcj8gbHMpCiAgICAg ICAgIChsZXQgbHAgKChscyAoY2RyIGxzKSkKICAgICAgICAgICAgICAgICAgKHN0ICgoZm10IChj YXIgbHMpKSBzdCkpKQogICAgICAgICAgIChjb25kCiAgICAgICAgICAgICAoKG51bGw/IGxzKSBz dCkKICAgICAgICAgICAgICgocGFpcj8gbHMpIChscCAoY2RyIGxzKSAoKGZtdCAoY2FyIGxzKSkg KHNlcCBzdCkpKSkKICAgICAgICAgICAgIChlbHNlICgoZm10L2RvdCBscykgKHNlcCBzdCkpKSkp KQogICAgICAgICgobnVsbD8gbHMpIHN0KQogICAgICAgIChlbHNlICgoZm10L2RvdCBscykgc3Qp KSkpKSkKCihkZWZpbmUgKGZtdC1qb2luL3JhbmdlIGZtdCBzdGFydCAuIG8pCiAgKGxldC1vcHRp b25hbHMqIG8gKChlbmQgI2YpIChzZXAgIiIpKQogICAgKGxhbWJkYSAoc3QpCiAgICAgIChsZXQg bHAgKChpICgrIHN0YXJ0IDEpKSAoc3QgKChmbXQgc3RhcnQpIHN0KSkpCiAgICAgICAgKGlmIChh bmQgZW5kICg+PSBpIGVuZCkpCiAgICAgICAgICAgIHN0CiAgICAgICAgICAgIChscCAoKyBpIDEp ICgoZm10IGkpICgoZHNwIHNlcCkgc3QpKSkpKSkpKQoKKGRlZmluZSAocGFkL2JvdGggd2lkdGgg LiBscykKICAoZm10LWNhcHR1cmUKICAgKGFwcGx5LWNhdCBscykKICAgKGxhbWJkYSAoc3RyKQog ICAgIChsYW1iZGEgKHN0KQogICAgICAgKGxldCAoKGRpZmYgKC0gd2lkdGggKChvciAoZm10LXN0 cmluZy13aWR0aCBzdCkgc3RyaW5nLWxlbmd0aCkgc3RyKSkpCiAgICAgICAgICAgICAob3V0cHV0 IChmbXQtd3JpdGVyIHN0KSkpCiAgICAgICAgIChpZiAocG9zaXRpdmU/IGRpZmYpCiAgICAgICAg ICAgICAobGV0KiAoKGRpZmYvMiAocXVvdGllbnQgZGlmZiAyKSkKICAgICAgICAgICAgICAgICAg ICAobGVmdCAobWFrZS1zdHJpbmcgZGlmZi8yIChmbXQtcGFkLWNoYXIgc3QpKSkKICAgICAgICAg ICAgICAgICAgICAocmlnaHQgKGlmIChldmVuPyBkaWZmKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGVmdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1ha2Utc3RyaW5n ICgrIDEgZGlmZi8yKSAoZm10LXBhZC1jaGFyIHN0KSkpKSkKICAgICAgICAgICAgICAgKG91dHB1 dCByaWdodCAob3V0cHV0IHN0ciAob3V0cHV0IGxlZnQgc3QpKSkpCiAgICAgICAgICAgICAob3V0 cHV0IHN0ciBzdCkpKSkpKSkKCihkZWZpbmUgKHBhZCB3aWR0aCAuIGxzKQogIChsYW1iZGEgKHN0 KQogICAgKGxldCogKChjb2wgKGZtdC1jb2wgc3QpKQogICAgICAgICAgIChwYWRkZXIKICAgICAg ICAgICAgKGxhbWJkYSAoc3QpCiAgICAgICAgICAgICAgKGxldCAoKGRpZmYgKC0gd2lkdGggKC0g KGZtdC1jb2wgc3QpIGNvbCkpKSkKICAgICAgICAgICAgICAgIChpZiAocG9zaXRpdmU/IGRpZmYp CiAgICAgICAgICAgICAgICAgICAgKChmbXQtd3JpdGVyIHN0KSAobWFrZS1zdHJpbmcgZGlmZiAo Zm10LXBhZC1jaGFyIHN0KSkgc3QpCiAgICAgICAgICAgICAgICAgICAgc3QpKSkpKQogICAgICAo KGNhdCAoYXBwbHktY2F0IGxzKSBwYWRkZXIpIHN0KSkpKQoKKGRlZmluZSBwYWQvcmlnaHQgcGFk KQoKKGRlZmluZSAocGFkL2xlZnQgd2lkdGggLiBscykKICAoZm10LWNhcHR1cmUKICAgKGFwcGx5 LWNhdCBscykKICAgKGxhbWJkYSAoc3RyKQogICAgIChsYW1iZGEgKHN0KQogICAgICAgKGxldCog KChzdHItd2lkdGggKChvciAoZm10LXN0cmluZy13aWR0aCBzdCkgc3RyaW5nLWxlbmd0aCkgc3Ry KSkKICAgICAgICAgICAgICAoZGlmZiAoLSB3aWR0aCBzdHItd2lkdGgpKSkKICAgICAgICAgKChm bXQtd3JpdGVyIHN0KQogICAgICAgICAgc3RyCiAgICAgICAgICAoaWYgKHBvc2l0aXZlPyBkaWZm KQogICAgICAgICAgICAgICgoZm10LXdyaXRlciBzdCkgKG1ha2Utc3RyaW5nIGRpZmYgKGZtdC1w YWQtY2hhciBzdCkpIHN0KQogICAgICAgICAgICAgIHN0KSkpKSkpKQoKKGRlZmluZSAodHJpbS9i dWZmZXJlZCB3aWR0aCBmbXQgcHJvYykKICAoZm10LWNhcHR1cmUKICAgZm10CiAgIChsYW1iZGEg KHN0cikKICAgICAobGFtYmRhIChzdCkKICAgICAgIChsZXQqICgoc3RyLXdpZHRoICgob3IgKGZt dC1zdHJpbmctd2lkdGggc3QpIHN0cmluZy1sZW5ndGgpIHN0cikpCiAgICAgICAgICAgICAgKGRp ZmYgKC0gc3RyLXdpZHRoIHdpZHRoKSkpCiAgICAgICAgICgoZm10LXdyaXRlciBzdCkKICAgICAg ICAgIChpZiAocG9zaXRpdmU/IGRpZmYpCiAgICAgICAgICAgICAgKHByb2Mgc3RyIHN0ci13aWR0 aCBkaWZmIHN0KQogICAgICAgICAgICAgIHN0cikKICAgICAgICAgIHN0KSkpKSkpCgooZGVmaW5l ICh0cmltIHdpZHRoIC4gbHMpCiAgKGxhbWJkYSAoc3QpCiAgICAobGV0ICgoZWxsIChmbXQtZWxs aXBzZXMgc3QpKSkKICAgICAgKGlmIGVsbAogICAgICAgICAgKCh0cmltL2J1ZmZlcmVkCiAgICAg ICAgICAgIHdpZHRoCiAgICAgICAgICAgIChhcHBseS1jYXQgbHMpCiAgICAgICAgICAgIChsYW1i ZGEgKHN0ciBzdHItd2lkdGggZGlmZiBzdCkKICAgICAgICAgICAgICAobGV0KiAoKGVsbCAoaWYg KGNoYXI/IGVsbCkgKHN0cmluZyBlbGwpIGVsbCkpCiAgICAgICAgICAgICAgICAgICAgIChlbGwt bGVuIChzdHJpbmctbGVuZ3RoIGVsbCkpCiAgICAgICAgICAgICAgICAgICAgIChkaWZmICgtICgr IHN0ci13aWR0aCBlbGwtbGVuKSB3aWR0aCkpKQogICAgICAgICAgICAgICAgKGlmIChuZWdhdGl2 ZT8gZGlmZikKICAgICAgICAgICAgICAgICAgICBlbGwKICAgICAgICAgICAgICAgICAgICAoc3Ry aW5nLWFwcGVuZAogICAgICAgICAgICAgICAgICAgICAoc3Vic3RyaW5nL3NoYXJlZCBzdHIgMCAo LSAoc3RyaW5nLWxlbmd0aCBzdHIpIGRpZmYpKQogICAgICAgICAgICAgICAgICAgICBlbGwpKSkp KQogICAgICAgICAgIHN0KQogICAgICAgICAgKGxldCAoKG91dHB1dCAoZm10LXdyaXRlciBzdCkp CiAgICAgICAgICAgICAgICAoc3RhcnQtY29sIChmbXQtY29sIHN0KSkpCiAgICAgICAgICAgIChj YWxsLXdpdGgtY3VycmVudC1jb250aW51YXRpb24KICAgICAgICAgICAgICAobGFtYmRhIChyZXR1 cm4pCiAgICAgICAgICAgICAgICAoZGVmaW5lIChvdXRwdXQqIHN0ciBzdCkKICAgICAgICAgICAg ICAgICAgKGxldCogKChsZW4gKChvciAoZm10LXN0cmluZy13aWR0aCBzdCkgc3RyaW5nLWxlbmd0 aCkgc3RyKSkKICAgICAgICAgICAgICAgICAgICAgICAgIChkaWZmICgtICgrICgtIChmbXQtY29s IHN0KSBzdGFydC1jb2wpIGxlbikgd2lkdGgpKSkKICAgICAgICAgICAgICAgICAgICAoaWYgKHBv c2l0aXZlPyBkaWZmKQogICAgICAgICAgICAgICAgICAgICAgICAocmV0dXJuCiAgICAgICAgICAg ICAgICAgICAgICAgICAoZm10LXNldC13cml0ZXIhCiAgICAgICAgICAgICAgICAgICAgICAgICAg KG91dHB1dCAoc3Vic3RyaW5nL3NoYXJlZCBzdHIgMCAoLSBsZW4gZGlmZikpIHN0KQogICAgICAg ICAgICAgICAgICAgICAgICAgIG91dHB1dCkpCiAgICAgICAgICAgICAgICAgICAgICAgIChvdXRw dXQgc3RyIHN0KSkpKQogICAgICAgICAgICAgICAgKChmbXQtbGV0ICd3cml0ZXIgb3V0cHV0KiAo YXBwbHktY2F0IGxzKSkgc3QpKSkpKSkpKQoKKGRlZmluZSAodHJpbS9sZW5ndGggd2lkdGggLiBs cykKICAobGFtYmRhIChzdCkKICAgIChjYWxsLXdpdGgtY3VycmVudC1jb250aW51YXRpb24KICAg ICAgKGxhbWJkYSAocmV0dXJuKQogICAgICAgIChsZXQgKChvdXRwdXQgKGZtdC13cml0ZXIgc3Qp KQogICAgICAgICAgICAgIChzdW0gMCkpCiAgICAgICAgICAoZGVmaW5lIChvdXRwdXQqIHN0ciBz dCkKICAgICAgICAgICAgKGxldCAoKGxlbiAoc3RyaW5nLWxlbmd0aCBzdHIpKSkKICAgICAgICAg ICAgICAoc2V0ISBzdW0gKCsgc3VtIGxlbikpCiAgICAgICAgICAgICAgKGlmICg+IHN1bSB3aWR0 aCkKICAgICAgICAgICAgICAgICAgKHJldHVybgogICAgICAgICAgICAgICAgICAgKGZtdC1zZXQt d3JpdGVyIQogICAgICAgICAgICAgICAgICAgIChvdXRwdXQgKHN1YnN0cmluZy9zaGFyZWQgc3Ry IDAgKC0gbGVuICgtIHN1bSB3aWR0aCkpKSBzdCkKICAgICAgICAgICAgICAgICAgICBvdXRwdXQp KQogICAgICAgICAgICAgICAgICAob3V0cHV0IHN0ciBzdCkpKSkKICAgICAgICAgICgoZm10LWxl dCAnd3JpdGVyIG91dHB1dCogKGFwcGx5LWNhdCBscykpIHN0KSkpKSkpCgooZGVmaW5lICh0cmlt L2xlZnQgd2lkdGggLiBscykKICAodHJpbS9idWZmZXJlZAogICB3aWR0aAogICAoYXBwbHktY2F0 IGxzKQogICAobGFtYmRhIChzdHIgc3RyLXdpZHRoIGRpZmYgc3QpCiAgICAgKGxldCAoKGVsbCAo Zm10LWVsbGlwc2VzIHN0KSkpCiAgICAgICAoaWYgZWxsCiAgICAgICAgICAgKGxldCogKChlbGwg KGlmIChjaGFyPyBlbGwpIChzdHJpbmcgZWxsKSBlbGwpKQogICAgICAgICAgICAgICAgICAoZWxs LWxlbiAoc3RyaW5nLWxlbmd0aCBlbGwpKQogICAgICAgICAgICAgICAgICAoZGlmZiAoLSAoKyBz dHItd2lkdGggZWxsLWxlbikgd2lkdGgpKSkKICAgICAgICAgICAgIChpZiAobmVnYXRpdmU/IGRp ZmYpCiAgICAgICAgICAgICAgICAgZWxsCiAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQg ZWxsIChzdWJzdHJpbmcvc2hhcmVkIHN0ciBkaWZmKSkpKQogICAgICAgICAgIChzdWJzdHJpbmcv c2hhcmVkIHN0ciBkaWZmKSkpKSkpCgooZGVmaW5lICh0cmltL2JvdGggd2lkdGggLiBscykKICAo dHJpbS9idWZmZXJlZAogICB3aWR0aAogICAoYXBwbHktY2F0IGxzKQogICAobGFtYmRhIChzdHIg c3RyLXdpZHRoIGRpZmYgc3QpCiAgICAgKGxldCAoKGVsbCAoZm10LWVsbGlwc2VzIHN0KSkpCiAg ICAgICAoaWYgZWxsCiAgICAgICAgICAgKGxldCogKChlbGwgKGlmIChjaGFyPyBlbGwpIChzdHJp bmcgZWxsKSBlbGwpKQogICAgICAgICAgICAgICAgICAoZWxsLWxlbiAoc3RyaW5nLWxlbmd0aCBl bGwpKQogICAgICAgICAgICAgICAgICAoZGlmZiAoLSAoKyBzdHItd2lkdGggZWxsLWxlbiBlbGwt bGVuKSB3aWR0aCkpCiAgICAgICAgICAgICAgICAgIChsZWZ0IChxdW90aWVudCBkaWZmIDIpKQog ICAgICAgICAgICAgICAgICAocmlnaHQgKC0gKHN0cmluZy1sZW5ndGggc3RyKSAocXVvdGllbnQg KCsgZGlmZiAxKSAyKSkpKQogICAgICAgICAgICAgKGlmIChuZWdhdGl2ZT8gZGlmZikKICAgICAg ICAgICAgICAgICBlbGwKICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCBlbGwgKHN1YnN0 cmluZy9zaGFyZWQgc3RyIGxlZnQgcmlnaHQpIGVsbCkpKQogICAgICAgICAgIChzdWJzdHJpbmcv c2hhcmVkIHN0cgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChxdW90aWVudCAoKyBkaWZm IDEpIDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0gKHN0cmluZy1sZW5ndGggc3Ry KSAocXVvdGllbnQgZGlmZiAyKSkpKSkpKSkKCihkZWZpbmUgKGZpdCB3aWR0aCAuIGxzKQogIChw YWQgd2lkdGggKHRyaW0gd2lkdGggKGFwcGx5LWNhdCBscykpKSkKKGRlZmluZSAoZml0L2xlZnQg d2lkdGggLiBscykKICAocGFkL2xlZnQgd2lkdGggKHRyaW0vbGVmdCB3aWR0aCAoYXBwbHktY2F0 IGxzKSkpKQooZGVmaW5lIChmaXQvYm90aCB3aWR0aCAuIGxzKQogIChwYWQvYm90aCB3aWR0aCAo dHJpbS9ib3RoIHdpZHRoIChhcHBseS1jYXQgbHMpKSkpCgo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsKOzs7IFN0 cmluZy1tYXAgZm9ybWF0dGVycwoKKGRlZmluZSAobWFrZS1zdHJpbmctZm10LXRyYW5zZm9ybWVy IHByb2MpCiAgKGxhbWJkYSBscwogICAgKGxhbWJkYSAoc3QpCiAgICAgIChsZXQgKChiYXNlLXdy aXRlciAoZm10LXdyaXRlciBzdCkpKQogICAgICAgICgoZm10LWxldAogICAgICAgICAgJ3dyaXRl ciAobGFtYmRhIChzdHIgc3QpIChiYXNlLXdyaXRlciAocHJvYyBzdHIpIHN0KSkKICAgICAgICAg IChhcHBseS1jYXQgbHMpKQogICAgICAgICBzdCkpKSkpCgooZGVmaW5lIHVwY2FzZSAobWFrZS1z dHJpbmctZm10LXRyYW5zZm9ybWVyIHN0cmluZy11cGNhc2UpKQooZGVmaW5lIGRvd25jYXNlICht YWtlLXN0cmluZy1mbXQtdHJhbnNmb3JtZXIgc3RyaW5nLWRvd25jYXNlKSkKKGRlZmluZSB0aXRs ZWNhc2UgKG1ha2Utc3RyaW5nLWZtdC10cmFuc2Zvcm1lciBzdHJpbmctdGl0bGVjYXNlKSkKCjs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Owo7OzsgTnVtZXJpYyBmb3JtYXR0aW5nCgooZGVmaW5lICptaW4tZSogLTEw MjQpCihkZWZpbmUgKmJvdC1mKiAoZXhwdCAyIDUyKSkKOzsoZGVmaW5lICp0b3AtZiogKCogMiAq Ym90LWYqKSkKCihkZWZpbmUgKGludGVnZXItbG9nIGEgYmFzZSkKICAoaWYgKHplcm8/IGEpCiAg ICAgIDAKICAgICAgKGluZXhhY3QtPmV4YWN0IChjZWlsaW5nICgvIChsb2cgKCsgYSAxKSkgKGxv ZyBiYXNlKSkpKSkpCihkZWZpbmUgKGludGVnZXItbGVuZ3RoKiBhKQogIChpZiAobmVnYXRpdmU/ IGEpCiAgICAgIChpbnRlZ2VyLWxvZyAoLSAxIGEpIDIpCiAgICAgIChpbnRlZ2VyLWxvZyBhIDIp KSkKCihkZWZpbmUgaW52bG9nMm9mCiAgKGxldCAoKHRhYmxlIChtYWtlLXZlY3RvciAzNykpCiAg ICAgICAgKGxvZzIgKGxvZyAyKSkpCiAgICAoZG8gKChiIDIgKCsgYiAxKSkpCiAgICAgICAgKCg9 IGIgMzcpKQogICAgICAodmVjdG9yLXNldCEgdGFibGUgYiAoLyBsb2cyIChsb2cgYikpKSkKICAg IChsYW1iZGEgKGIpCiAgICAgIChpZiAoPD0gMiBiIDM2KQogICAgICAgICAgKHZlY3Rvci1yZWYg dGFibGUgYikKICAgICAgICAgICgvIGxvZzIgKGxvZyBiKSkpKSkpCgooZGVmaW5lIGZhc3QtZXhw dAogIChsZXQgKCh0YWJsZSAobWFrZS12ZWN0b3IgMzI2KSkpCiAgICAoZG8gKChrIDAgKCsgayAx KSkgKHYgMSAoKiB2IDEwKSkpCiAgICAgICAgKCg9IGsgMzI2KSkKICAgICAgKHZlY3Rvci1zZXQh IHRhYmxlIGsgdikpCiAgICAobGFtYmRhIChiIGspCiAgICAgIChpZiAoYW5kICg9IGIgMTApICg8 PSAwIGsgMzI2KSkKICAgICAgICAgICh2ZWN0b3ItcmVmIHRhYmxlIChpbmV4YWN0LT5leGFjdCAo dHJ1bmNhdGUgaykpKQogICAgICAgICAgKGV4cHQgYiBrKSkpKSkKCihkZWZpbmUgKG1pcnJvci1v ZiBjKQogIChjYXNlIGMgKCgjXCgpICNcKSkgKCgjXFspICNcXSkgKCgjXHspICNcfSkgKCgjXDwp ICNcPikgKGVsc2UgYykpKQoKOzsgR2VuZXJhbCBhbGdvcml0aG0gYmFzZWQgb24gIlByaW50aW5n IEZsb2F0aW5nLVBvaW50IE51bWJlcnMgUXVpY2tseQo7OyBhbmQgQWNjdXJhdGVseSIgYnkgQnVy Z2VyIGFuZCBEeWJ2aWcgKEZQLVByaW50aW5nLVBMREk5Ni5wZGYpLiAgVGhlCjs7IGNvZGUgYmVs b3cgd2lsbCBiZSBoYXJkIHRvIHJlYWQgb3V0IG9mIHRoYXQgY29udGV4dCB1bnRpbCBpdCdzCjs7 IGNsZWFuZWQgdXAuCgooZGVmaW5lIChudW0tPnN0cmluZyBuIHN0IC4gb3B0KQogIChjYWxsLXdp dGgtb3V0cHV0LXN0cmluZwogICAgKGxhbWJkYSAocG9ydCkKICAgICAgKGxldC1vcHRpb25hbHMq IG9wdAogICAgICAgICAgKChiYXNlIChmbXQtcmFkaXggc3QpKQogICAgICAgICAgIChkaWdpdHMg KGZtdC1wcmVjaXNpb24gc3QpKQogICAgICAgICAgIChzaWduPyAjZikKICAgICAgICAgICAoY29t bWlmeT8gI2YpCiAgICAgICAgICAgKGNvbW1hLXNlcCAoYW5kIGNvbW1pZnk/IChmbXQtcmVmIHN0 ICdjb21tYS1jaGFyICNcLCkpKQogICAgICAgICAgIChkZWNpbWFsLXNlcCAob3IgKGZtdC1kZWNp bWFsLXNlcCBzdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoZXF2PyBjb21tYS1z ZXAgI1wuKSAjXCwgI1wuKSkpCiAgICAgICAgICAgKGNvbW1hLXJ1bGUgKGlmIChlcT8gY29tbWlm eT8gI3QpIDMgY29tbWlmeT8pKSkKCiAgICAgICAgKGRlZmluZSAod3JpdGUtcG9zaXRpdmUgbikK CiAgICAgICAgICAobGV0KiAoKG0rZSAobWFudGlzc2ErZXhwb25lbnQgKGV4YWN0LT5pbmV4YWN0 IG4pKSkKICAgICAgICAgICAgICAgICAoZiAoY2FyIG0rZSkpCiAgICAgICAgICAgICAgICAgKGUg KGNhZHIgbStlKSkKICAgICAgICAgICAgICAgICAoaW52LWJhc2UgKGludmxvZzJvZiBiYXNlKSkK ICAgICAgICAgICAgICAgICAocm91bmQ/IChldmVuPyBmKSkKICAgICAgICAgICAgICAgICAoc21h bGxlciAoaWYgcm91bmQ/IDw9IDwpKQogICAgICAgICAgICAgICAgIChiaWdnZXIgKGlmIHJvdW5k PyA+PSA+KSkpCgogICAgICAgICAgICAoZGVmaW5lICh3cml0ZS1kaWdpdCBkKQogICAgICAgICAg ICAgIChsZXQgKChkIChpbmV4YWN0LT5leGFjdCAodHJ1bmNhdGUgZCkpKSkKICAgICAgICAgICAg ICAgICh3cml0ZS1jaGFyCiAgICAgICAgICAgICAgICAgKGNvbmQgKCg8IGQgMTApCiAgICAgICAg ICAgICAgICAgICAgICAgIChpbnRlZ2VyLT5jaGFyICgrIGQgKGNoYXItPmludGVnZXIgI1wwKSkp KQogICAgICAgICAgICAgICAgICAgICAgICgoPCBkIDM2KQogICAgICAgICAgICAgICAgICAgICAg ICAoaW50ZWdlci0+Y2hhciAoKyAoLSBkIDEwKSAoY2hhci0+aW50ZWdlciAjXEEpKSkpCiAgICAg ICAgICAgICAgICAgICAgICAgKGVsc2UgKGVycm9yICJpbnZhbGlkIGRpZ2l0OiAiIGQpKSkKICAg ICAgICAgICAgICAgICBwb3J0KSkpCgogICAgICAgICAgICAoZGVmaW5lIChwYWQgZCBpKSA7OyBq dXN0IHBhZCAwJ3MsIG5vdCAjJ3MKICAgICAgICAgICAgICAod3JpdGUtZGlnaXQgZCkKICAgICAg ICAgICAgICAobGV0IGxwICgoaSAoLSBpIDEpKSkKICAgICAgICAgICAgICAgIChjb25kCiAgICAg ICAgICAgICAgICAgKCg+PSBpIDApCiAgICAgICAgICAgICAgICAgIChpZiAoYW5kIGNvbW1pZnk/ CiAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBkaWdpdHMKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChhbmQgKD4gaSBkaWdpdHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICh6ZXJvPyAobW9kdWxvICgtIGkgKC0gZGlnaXRzIDEpKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYS1ydWxlKSkpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoYW5kIChwb3NpdGl2ZT8gaSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHplcm8/IChtb2R1bG8gaSBjb21tYS1ydWxlKSkpKSkK ICAgICAgICAgICAgICAgICAgICAgIChkaXNwbGF5IGNvbW1hLXNlcCBwb3J0KSkKICAgICAgICAg ICAgICAgICAgKGlmICg9IGkgKC0gZGlnaXRzIDEpKQogICAgICAgICAgICAgICAgICAgICAgKGRp c3BsYXkgZGVjaW1hbC1zZXAgcG9ydCkpCiAgICAgICAgICAgICAgICAgICh3cml0ZS1jaGFyICNc MCBwb3J0KQogICAgICAgICAgICAgICAgICAobHAgKC0gaSAxKSkpKSkpCgogICAgICAgICAgICAo ZGVmaW5lIChwYWQtYWxsIGQgaSkKICAgICAgICAgICAgICAod3JpdGUtZGlnaXQgZCkKICAgICAg ICAgICAgICAobGV0IGxwICgoaSAoLSBpIDEpKSkKICAgICAgICAgICAgICAgIChjb25kCiAgICAg ICAgICAgICAgICAgKCg+IGkgMCkKICAgICAgICAgICAgICAgICAgKGlmIChhbmQgY29tbWlmeT8g KHplcm8/IChtb2R1bG8gaSBjb21tYS1ydWxlKSkpCiAgICAgICAgICAgICAgICAgICAgICAoZGlz cGxheSBjb21tYS1zZXAgcG9ydCkpCiAgICAgICAgICAgICAgICAgICh3cml0ZS1jaGFyICNcMCBw b3J0KQogICAgICAgICAgICAgICAgICAobHAgKC0gaSAxKSkpCiAgICAgICAgICAgICAgICAgKChh bmQgKD0gaSAwKSAoaW5leGFjdD8gbikpCiAgICAgICAgICAgICAgICAgIChkaXNwbGF5IGRlY2lt YWwtc2VwIHBvcnQpCiAgICAgICAgICAgICAgICAgICh3cml0ZS1kaWdpdCAwKSkpKSkKCiAgICAg ICAgICAgIChkZWZpbmUgKHBhZC1zY2kgZCBpIGspCiAgICAgICAgICAgICAgKHdyaXRlLWRpZ2l0 IGQpCiAgICAgICAgICAgICAgKHdyaXRlLWNoYXIgI1xlIHBvcnQpCiAgICAgICAgICAgICAgKGNv bmQKICAgICAgICAgICAgICAgKChwb3NpdGl2ZT8gaykKICAgICAgICAgICAgICAgICh3cml0ZS1j aGFyICNcKyBwb3J0KQogICAgICAgICAgICAgICAgKHdyaXRlICgtIGsgMSkgcG9ydCkpCiAgICAg ICAgICAgICAgIChlbHNlCiAgICAgICAgICAgICAgICAod3JpdGUgayBwb3J0KSkpKQoKICAgICAg ICAgICAgKGRlZmluZSAoc2NhbGUgciBzIG0rIG0tIGsgZiBlKQogICAgICAgICAgICAgIChsZXQg KChlc3QgKGluZXhhY3QtPmV4YWN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNlaWxpbmcg KC0gKCogKCsgZSAoaW50ZWdlci1sZW5ndGgqIGYpIC0xKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChpbnZsb2cyb2YgYmFzZSkpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMS4wZS0xMCkpKSkpCiAgICAgICAgICAgICAgICAoaWYgKG5vdCAo bmVnYXRpdmU/IGVzdCkpCiAgICAgICAgICAgICAgICAgICAgKGZpeHVwIHIgKCogcyAoZmFzdC1l eHB0IGJhc2UgZXN0KSkgbSsgbS0gZXN0KQogICAgICAgICAgICAgICAgICAgIChsZXQgKChza2Fs ZSAoZmFzdC1leHB0IGJhc2UgKC0gZXN0KSkpKQogICAgICAgICAgICAgICAgICAgICAgKGZpeHVw ICgqIHIgc2thbGUpIHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBtKyBza2FsZSkg KCogbS0gc2thbGUpIGVzdCkpKSkpCgogICAgICAgICAgICAoZGVmaW5lIChmaXh1cCByIHMgbSsg bS0gaykKICAgICAgICAgICAgICAoaWYgKGJpZ2dlciAoKyByIG0rKSBzKQogICAgICAgICAgICAg ICAgICAobGVhZCByIHMgbSsgbS0gKCsgayAxKSkKICAgICAgICAgICAgICAgICAgKGxlYWQgKCog ciBiYXNlKSBzICgqIG0rIGJhc2UpICgqIG0tIGJhc2UpIGspKSkKCiAgICAgICAgICAgIChkZWZp bmUgKGxlYWQgciBzIG0rIG0tIGspCiAgICAgICAgICAgICAgKGNvbmQKICAgICAgICAgICAgICAg OzsoKGFuZCAobm90IGRpZ2l0cykgKD4gayAxNCkpCiAgICAgICAgICAgICAgIDs7IChnZW5lcmF0 ZS1zY2kgciBzIG0rIG0tIGspKQogICAgICAgICAgICAgICA7OygoYW5kIChub3QgZGlnaXRzKSAo PCBrIC00KSkKICAgICAgICAgICAgICAgOzsgKGlmICg+PSAoLyByIHMpIGJhc2UpCiAgICAgICAg ICAgICAgIDs7ICAgICAoZ2VuZXJhdGUtc2NpICgvIHIgYmFzZSkgcyAoLyBtKyBiYXNlKSAoLyBt LSBiYXNlKSBrKQogICAgICAgICAgICAgICA7OyAgICAgKGdlbmVyYXRlLXNjaSByIHMgbSsgbS0g aykpKQogICAgICAgICAgICAgICAoKGFuZCAobm90IGRpZ2l0cykgKG9yICg+IGsgMTQpICg8IGsg LTQpKSkKICAgICAgICAgICAgICAgICh3cml0ZSBuIHBvcnQpKSAgICAgIDsgWFhYWCB1c2luZyBu YXRpdmUgd3JpdGUgZm9yIG5vdwogICAgICAgICAgICAgICAoZWxzZQogICAgICAgICAgICAgICAg KGNvbmQKICAgICAgICAgICAgICAgICAoKGFuZCAobm90IGRpZ2l0cykKICAgICAgICAgICAgICAg ICAgICAgICAobm90IChwb3NpdGl2ZT8gaykpKQogICAgICAgICAgICAgICAgICAod3JpdGUtY2hh ciAjXDAgcG9ydCkKICAgICAgICAgICAgICAgICAgKGRpc3BsYXkgZGVjaW1hbC1zZXAgcG9ydCkK ICAgICAgICAgICAgICAgICAgKGxldCBscCAoKGkgMCkpCiAgICAgICAgICAgICAgICAgICAgKGNv bmQKICAgICAgICAgICAgICAgICAgICAgKCg+IGkgaykKICAgICAgICAgICAgICAgICAgICAgICh3 cml0ZS1jaGFyICNcMCBwb3J0KQogICAgICAgICAgICAgICAgICAgICAgKGxwICgtIGkgMSkpKSkp KSkKICAgICAgICAgICAgICAgIChpZiBkaWdpdHMKICAgICAgICAgICAgICAgICAgICAoZ2VuZXJh dGUtZml4ZWQgciBzIG0rIG0tIGspCiAgICAgICAgICAgICAgICAgICAgKGdlbmVyYXRlLWFsbCBy IHMgbSsgbS0gaykpKSkpCgogICAgICAgICAgICAoZGVmaW5lIChnZW5lcmF0ZS1hbGwgciBzIG0r IG0tIGspCiAgICAgICAgICAgICAgKGxldCBnZW4gKChyIHIpIChtKyBtKykgKG0tIG0tKSAoaSBr KSkKICAgICAgICAgICAgICAgIChjb25kICgoPSBpIGspKQogICAgICAgICAgICAgICAgICAgICAg KCh6ZXJvPyBpKQogICAgICAgICAgICAgICAgICAgICAgIChkaXNwbGF5IGRlY2ltYWwtc2VwIHBv cnQpKQogICAgICAgICAgICAgICAgICAgICAgKChhbmQgY29tbWlmeT8KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChwb3NpdGl2ZT8gaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICh6 ZXJvPyAobW9kdWxvIGkgY29tbWEtcnVsZSkpKQogICAgICAgICAgICAgICAgICAgICAgIChkaXNw bGF5IGNvbW1hLXNlcCBwb3J0KSkpCiAgICAgICAgICAgICAgICAobGV0ICgoZCAocXVvdGllbnQg ciBzKSkKICAgICAgICAgICAgICAgICAgICAgIChyIChyZW1haW5kZXIgciBzKSkpCiAgICAgICAg ICAgICAgICAgIChpZiAobm90IChzbWFsbGVyIHIgbS0pKQogICAgICAgICAgICAgICAgICAgICAg KGNvbmQKICAgICAgICAgICAgICAgICAgICAgICAoKG5vdCAoYmlnZ2VyICgrIHIgbSspIHMpKQog ICAgICAgICAgICAgICAgICAgICAgICAod3JpdGUtZGlnaXQgZCkKICAgICAgICAgICAgICAgICAg ICAgICAgKGdlbiAoKiByIGJhc2UpICgqIG0rIGJhc2UpICgqIG0tIGJhc2UpICgtIGkgMSkpKQog ICAgICAgICAgICAgICAgICAgICAgIChlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIChwYWQt YWxsICgrIGQgMSkgaSkpKQogICAgICAgICAgICAgICAgICAgICAgKGlmIChub3QgKGJpZ2dlciAo KyByIG0rKSBzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAocGFkLWFsbCBkIGkpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgKHBhZC1hbGwgKGlmICg8ICgqIHIgMikgcykgZCAoKyBkIDEp KSBpKSkpKSkpCgogICAgICAgICAgICA7OyBUaGlzIGlzIHVnbHkgYmVjYXVzZSB3ZSBuZWVkIHRv IGtlZXAgYSBsaXN0IG9mIGFsbAogICAgICAgICAgICA7OyBvdXRwdXQgb2YgdGhlIGZvcm0geDk5 OTkuLi4gaW4gY2FzZSB3ZSBnZXQgdG8gdGhlIGVuZAogICAgICAgICAgICA7OyBvZiB0aGUgcHJl Y2lzaW9uIGFuZCBuZWVkIHRvIHJvdW5kIHVwLgogICAgICAgICAgICAoZGVmaW5lIChnZW5lcmF0 ZS1maXhlZCByIHMgbSsgbS0gaykKICAgICAgICAgICAgICAobGV0ICgoaTAgKC0gKCsgayBkaWdp dHMpIDEpKQogICAgICAgICAgICAgICAgICAgIChzdGFjayAoaWYgKDw9IGsgMCkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChhcHBlbmQgKG1ha2UtbGlzdCAobWluICgtIGspIGRpZ2l0 cykgMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgZGVjaW1h bC1zZXAgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKCkpKSkKICAgICAgICAg ICAgICAgIChkZWZpbmUgKHdyaXRlLWRpZ2l0LWxpc3QgbHMpCiAgICAgICAgICAgICAgICAgIChm b3ItZWFjaAogICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoeCkgKGlmIChudW1iZXI/IHgpICh3 cml0ZS1kaWdpdCB4KSAoZGlzcGxheSB4IHBvcnQpKSkKICAgICAgICAgICAgICAgICAgIGxzKSkK ICAgICAgICAgICAgICAgIChkZWZpbmUgKGZsdXNoKQogICAgICAgICAgICAgICAgICAod3JpdGUt ZGlnaXQtbGlzdCAocmV2ZXJzZSBzdGFjaykpCiAgICAgICAgICAgICAgICAgIChzZXQhIHN0YWNr ICcoKSkpCiAgICAgICAgICAgICAgICAoZGVmaW5lIChmbHVzaC9yb3VuZGVkKQogICAgICAgICAg ICAgICAgICAobGV0IGxwICgobHMgc3RhY2spIChyZXMgJygpKSkKICAgICAgICAgICAgICAgICAg ICAoY29uZAogICAgICAgICAgICAgICAgICAgICAoKG51bGw/IGxzKQogICAgICAgICAgICAgICAg ICAgICAgKHdyaXRlLWRpZ2l0LWxpc3QgKGNvbnMgI1wxIHJlcykpKQogICAgICAgICAgICAgICAg ICAgICAoKG5vdCAobnVtYmVyPyAoY2FyIGxzKSkpCiAgICAgICAgICAgICAgICAgICAgICAobHAg KGNkciBscykgKGNvbnMgKGNhciBscykgcmVzKSkpCiAgICAgICAgICAgICAgICAgICAgICgoPSAo Y2FyIGxzKSAoLSBiYXNlIDEpKQogICAgICAgICAgICAgICAgICAgICAgKGxwIChjZHIgbHMpIChj b25zICNcMCByZXMpKSkKICAgICAgICAgICAgICAgICAgICAgKGVsc2UKICAgICAgICAgICAgICAg ICAgICAgICh3cml0ZS1kaWdpdC1saXN0CiAgICAgICAgICAgICAgICAgICAgICAgKGFwcGVuZCAo cmV2ZXJzZSAoY2RyIGxzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zICgr IDEgKGNhciBscykpIHJlcykpKSkpKQogICAgICAgICAgICAgICAgICAoc2V0ISBzdGFjayAnKCkp KQogICAgICAgICAgICAgICAgKGRlZmluZSAob3V0cHV0IGRpZ2l0KQogICAgICAgICAgICAgICAg ICAoaWYgKGFuZCAobnVtYmVyPyBkaWdpdCkgKDwgZGlnaXQgKC0gYmFzZSAxKSkpCiAgICAgICAg ICAgICAgICAgICAgICAoZmx1c2gpKQogICAgICAgICAgICAgICAgICAoc2V0ISBzdGFjayAoY29u cyBkaWdpdCBzdGFjaykpKQogICAgICAgICAgICAgICAgKGxldCBnZW4gKChyIHIpIChtKyBtKykg KG0tIG0tKSAoaSBpMCkpCiAgICAgICAgICAgICAgICAgIChjb25kICgoPSBpIGkwKSkKICAgICAg ICAgICAgICAgICAgICAgICAgKCg9IGkgKC0gZGlnaXRzIDEpKQogICAgICAgICAgICAgICAgICAg ICAgICAgKG91dHB1dCBkZWNpbWFsLXNlcCkpCiAgICAgICAgICAgICAgICAgICAgICAgICgoYW5k IGNvbW1pZnk/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg+IGkgZGlnaXRzKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoemVybz8gKG1vZHVsbyAoLSBpICgtIGRpZ2l0cyAx KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWEtcnVs ZSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgKG91dHB1dCBjb21tYS1zZXApKSkKICAgICAg ICAgICAgICAgICAgKGxldCAoKGQgKHF1b3RpZW50IHIgcykpCiAgICAgICAgICAgICAgICAgICAg ICAgIChyIChyZW1haW5kZXIgciBzKSkpCiAgICAgICAgICAgICAgICAgICAgKGNvbmQKICAgICAg ICAgICAgICAgICAgICAgKCg8IGkgMCkKICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChkMiAo KiAyIChpZiAoPj0gKCogciAyKSBzKSAoKyBkIDEpIGQpKSkpCiAgICAgICAgICAgICAgICAgICAg ICAgIChpZiAoYW5kIChub3QgKD4gKC0gaykgZGlnaXRzKSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKG9yICg+IGQyIGJhc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoYW5kICg9IGQyIGJhc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChwYWlyPyBzdGFjaykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKG51bWJlcj8gKGNhciBzdGFjaykpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChvZGQ/IChjYXIgc3RhY2spKSkpKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGZsdXNoL3JvdW5kZWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmx1 c2gpKSkpCiAgICAgICAgICAgICAgICAgICAgICgoc21hbGxlciByIG0tKQogICAgICAgICAgICAg ICAgICAgICAgKGNvbmQKICAgICAgICAgICAgICAgICAgICAgICAoKD0gZCBiYXNlKQogICAgICAg ICAgICAgICAgICAgICAgICAoZmx1c2gvcm91bmRlZCkKICAgICAgICAgICAgICAgICAgICAgICAg KHBhZCAwIGkpKQogICAgICAgICAgICAgICAgICAgICAgIChlbHNlCiAgICAgICAgICAgICAgICAg ICAgICAgIChmbHVzaCkKICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChiaWdnZXIgKCsgciBt KykgcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWQgKGlmICg8ICgqIHIgMikgcykg ZCAoKyBkIDEpKSBpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhZCBkIGkpKSkpKQog ICAgICAgICAgICAgICAgICAgICAoKGJpZ2dlciAoKyByIG0rKSBzKQogICAgICAgICAgICAgICAg ICAgICAgKGZsdXNoKQogICAgICAgICAgICAgICAgICAgICAgKHBhZCAoKyBkIDEpIGkpKQogICAg ICAgICAgICAgICAgICAgICAoZWxzZQogICAgICAgICAgICAgICAgICAgICAgKG91dHB1dCBkKQog ICAgICAgICAgICAgICAgICAgICAgKGdlbiAoKiByIGJhc2UpICgqIG0rIGJhc2UpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICgqIG0tIGJhc2UpICgtIGkgMSkpKSkpKSkpCgogICAgICAgICAg ICAoZGVmaW5lIChnZW5lcmF0ZS1zY2kgciBzIG0rIG0tIGspCiAgICAgICAgICAgICAgKGxldCBn ZW4gKChyIHIpIChtKyBtKykgKG0tIG0tKSAoaSBrKSkKICAgICAgICAgICAgICAgIChjb25kICgo PSBpICgtIGsgMSkpIChkaXNwbGF5IGRlY2ltYWwtc2VwIHBvcnQpKSkKICAgICAgICAgICAgICAg IChsZXQgKChkIChxdW90aWVudCByIHMpKQogICAgICAgICAgICAgICAgICAgICAgKHIgKHJlbWFp bmRlciByIHMpKSkKICAgICAgICAgICAgICAgICAgKGlmIChub3QgKHNtYWxsZXIgciBtLSkpCiAg ICAgICAgICAgICAgICAgICAgICAoY29uZAogICAgICAgICAgICAgICAgICAgICAgICgobm90IChi aWdnZXIgKCsgciBtKykgcykpCiAgICAgICAgICAgICAgICAgICAgICAgICh3cml0ZS1kaWdpdCBk KQogICAgICAgICAgICAgICAgICAgICAgICAoZ2VuICgqIHIgYmFzZSkgKCogbSsgYmFzZSkgKCog bS0gYmFzZSkgKC0gaSAxKSkpCiAgICAgICAgICAgICAgICAgICAgICAgKGVsc2UgKHBhZC1zY2kg KCsgZCAxKSBpIGspKSkKICAgICAgICAgICAgICAgICAgICAgIChpZiAobm90IChiaWdnZXIgKCsg ciBtKykgcykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhZC1zY2kgZCBpIGspCiAgICAg ICAgICAgICAgICAgICAgICAgICAgKHBhZC1zY2kgKGlmICg8ICgqIHIgMikgcykgZCAoKyBkIDEp KSBpIGspKSkpKSkKCiAgICAgICAgICAgIChjb25kCiAgICAgICAgICAgICAoKG5lZ2F0aXZlPyBl KQogICAgICAgICAgICAgIChpZiAob3IgKD0gZSAqbWluLWUqKSAobm90ICg9IGYgKmJvdC1mKikp KQogICAgICAgICAgICAgICAgICAoc2NhbGUgKCogZiAyKSAoKiAoZXhwdCAyICgtIGUpKSAyKSAx IDEgMCBmIGUpCiAgICAgICAgICAgICAgICAgIChzY2FsZSAoKiBmIDIgMikgKCogKGV4cHQgMiAo LSAxIGUpKSAyKSAyIDEgMCBmIGUpKSkKICAgICAgICAgICAgIChlbHNlCiAgICAgICAgICAgICAg KGlmICg9IGYgKmJvdC1mKikKICAgICAgICAgICAgICAgICAgKGxldCAoKGJlIChleHB0IDIgZSkp KQogICAgICAgICAgICAgICAgICAgIChzY2FsZSAoKiBmIGJlIDIpIDIgYmUgYmUgMCBmIGUpKQog ICAgICAgICAgICAgICAgICAobGV0KiAoKGJlIChleHB0IDIgZSkpIChiZTEgKCogYmUgMikpKQog ICAgICAgICAgICAgICAgICAgIChzY2FsZSAoKiBmIGJlMSAyKSAoKiAyIDIpIGJlMSBiZSAwIGYg ZSkpKSkpKSkKCiAgICAgICAgKGRlZmluZSAod3JpdGUtcmVhbCBuIHNpZ24/KQogICAgICAgICAg KGNvbmQKICAgICAgICAgICAoKG5lZ2F0aXZlPyBuKQogICAgICAgICAgICAoaWYgKGNoYXI/IHNp Z24/KQogICAgICAgICAgICAgICAgKGJlZ2luIChkaXNwbGF5IHNpZ24/IHBvcnQpICh3cml0ZS1w b3NpdGl2ZSAoYWJzIG4pKQogICAgICAgICAgICAgICAgICAgICAgIChkaXNwbGF5IChtaXJyb3It b2Ygc2lnbj8pIHBvcnQpKQogICAgICAgICAgICAgICAgKGJlZ2luICh3cml0ZS1jaGFyICNcLSBw b3J0KSAod3JpdGUtcG9zaXRpdmUgKGFicyBuKSkpKSkKICAgICAgICAgICAoZWxzZQogICAgICAg ICAgICAoaWYgKGFuZCBzaWduPyAobm90IChjaGFyPyBzaWduPykpKQogICAgICAgICAgICAgICAg KHdyaXRlLWNoYXIgI1wrIHBvcnQpKQogICAgICAgICAgICAod3JpdGUtcG9zaXRpdmUgbikpKSkK CiAgICAgICAgKGxldCAoKGltYWcgKGltYWctcGFydCBuKSkpCiAgICAgICAgICAoY29uZAogICAg ICAgICAgICgoYW5kIGJhc2UgKG5vdCAoYW5kIChpbnRlZ2VyPyBiYXNlKSAoPD0gMiBiYXNlIDM2 KSkpKQogICAgICAgICAgICAoZXJyb3IgImludmFsaWQgYmFzZSBmb3IgbnVtZXJpYyBmb3JtYXR0 aW5nIiBiYXNlKSkKICAgICAgICAgICAoKHplcm8/IGltYWcpCiAgICAgICAgICAgIChjb25kCiAg ICAgICAgICAgICAoKGFuZCAobm90IGRpZ2l0cykgKGV4YWN0PyBuKSAobm90IChpbnRlZ2VyPyBu KSkpCiAgICAgICAgICAgICAgKHdyaXRlLXJlYWwgKG51bWVyYXRvciBuKSBzaWduPykKICAgICAg ICAgICAgICAod3JpdGUtY2hhciAjXC8gcG9ydCkKICAgICAgICAgICAgICAod3JpdGUtcmVhbCAo ZGVub21pbmF0b3IgbikgI2YpKQogICAgICAgICAgICAgKGVsc2UKICAgICAgICAgICAgICAod3Jp dGUtcmVhbCBuIHNpZ24/KSkpKQogICAgICAgICAgIChlbHNlICh3cml0ZS1yZWFsIChyZWFsLXBh cnQgbikgc2lnbj8pCiAgICAgICAgICAgICAgICAgKHdyaXRlLXJlYWwgaW1hZyAjdCkKICAgICAg ICAgICAgICAgICAod3JpdGUtY2hhciAjXGkgcG9ydCkpKSkpKSkpCgooZGVmaW5lIChudW0gbiAu IG9wdCkKICAobGFtYmRhIChzdCkgKChmbXQtd3JpdGVyIHN0KSAoYXBwbHkgbnVtLT5zdHJpbmcg biBzdCBvcHQpIHN0KSkpCgooZGVmaW5lIChudW0vY29tbWEgbiAuIG8pCiAgKGxhbWJkYSAoc3Qp CiAgICAobGV0LW9wdGlvbmFscyogbwogICAgICAgICgoYmFzZSAoZm10LXJhZGl4IHN0KSkKICAg ICAgICAgKGRpZ2l0cyAoZm10LXByZWNpc2lvbiBzdCkpCiAgICAgICAgIChzaWduPyAjZikKICAg ICAgICAgKGNvbW1hLXJ1bGUgMykKICAgICAgICAgKGNvbW1hLXNlcCAoZm10LXJlZiBzdCAnY29t bWEtY2hhciAjXCwpKQogICAgICAgICAoZGVjaW1hbC1zZXAgKG9yIChmbXQtZGVjaW1hbC1zZXAg c3QpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChlcXY/IGNvbW1hLXNlcCAjXC4pICNc LCAjXC4pKSkpCiAgICAgICgobnVtIG4gYmFzZSBkaWdpdHMgc2lnbj8gY29tbWEtcnVsZSBjb21t YS1zZXAgZGVjaW1hbC1zZXApIHN0KSkpKQoKOzsgU0kgc3VmZml4IGZvcm1hdHRpbmcsIGFzIHVz ZWQgaW4gLS1odW1hbi1yZWFkYWJsZSBvcHRpb25zIHRvIHNvbWUKOzsgR05VIGNvbW1hbmRzIChz dWNoIGFzIGxzKS4gIFNlZQo7Owo7OyAgIGh0dHA6Ly93d3cuYmlwbS5vcmcvZW4vc2kvc2lfYnJv Y2h1cmUvY2hhcHRlcjMvcHJlZml4ZXMuaHRtbAo7OyAgIGh0dHA6Ly9waHlzaWNzLm5pc3QuZ292 L2N1dS9Vbml0cy9iaW5hcnkuaHRtbAo7Owo7OyBOb3RlOiBsb3dlcmNhc2UgImsiIGZvciBiYXNl IDEwLCB1cHBlcmNhc2UgIksiIGZvciBiYXNlIDIKCihkZWZpbmUgbnVtL3NpCiAgKGxldCogKChu YW1lczEwICcjKCIiICJrIiAiTSIgIkciICJUIiAiRSIgIlAiICJaIiAiWSIpKQogICAgICAgICAo bmFtZXMyIChsaXN0LT52ZWN0b3IKICAgICAgICAgICAgICAgICAgKGNvbnMgIiIKICAgICAgICAg ICAgICAgICAgICAgICAgKGNvbnMgIktpIiAobWFwIChsYW1iZGEgKHMpIChzdHJpbmctYXBwZW5k IHMgImkiKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZGRyICh2 ZWN0b3ItPmxpc3QgbmFtZXMxMCkpKSkpKSkpCiAgICAobGFtYmRhIChuIC4gbykKICAgICAgKGxl dC1vcHRpb25hbHMqIG8gKChiYXNlIDEwMjQpCiAgICAgICAgICAgICAgICAgICAgICAgICAoc3Vm Zml4ICIiKQogICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWVzIChpZiAoPSBiYXNlIDEwMjQp IG5hbWVzMiBuYW1lczEwKSkpCiAgICAgICAgKGxldCogKChrIChtaW4gKGluZXhhY3QtPmV4YWN0 IChmbG9vciAoLyAobG9nIG4pIChsb2cgYmFzZSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAo dmVjdG9yLWxlbmd0aCBuYW1lcykpKQogICAgICAgICAgICAgICAobjIgKC8gKHJvdW5kICgqICgv IG4gKGV4cHQgYmFzZSBrKSkgMTApKSAxMCkpKQogICAgICAgICAgKGNhdCAoaWYgKGludGVnZXI/ IG4yKQogICAgICAgICAgICAgICAgICAgKG51bWJlci0+c3RyaW5nIChpbmV4YWN0LT5leGFjdCBu MikpCiAgICAgICAgICAgICAgICAgICAoZXhhY3QtPmluZXhhY3QgbjIpKQogICAgICAgICAgICAg ICAodmVjdG9yLXJlZiBuYW1lcyBrKQogICAgICAgICAgICAgICAoaWYgKHplcm8/IGspICIiIHN1 ZmZpeCkpKSkpKSkKCjs7IEZvcmNlIGEgbnVtYmVyIGludG8gYSBmaXhlZCB3aWR0aCwgcHJpbnQg YXMgIydzIGlmIGRvZXNuJ3QgZml0Lgo7OyBOZWVkcyB0byBiZSB3cmFwcGVkIGluIGEgUEFEIGlm IHlvdSB3YW50IHRvIGV4cGFuZCB0byB0aGUgd2lkdGguCgooZGVmaW5lIChudW0vZml0IHdpZHRo IG4gLiBhcmdzKQogIChmbXQtY2FwdHVyZQogICAoYXBwbHkgbnVtIG4gYXJncykKICAgKGxhbWJk YSAoc3RyKQogICAgIChsYW1iZGEgKHN0KQogICAgICAgKGlmICg+IChzdHJpbmctbGVuZ3RoIHN0 cikgd2lkdGgpCiAgICAgICAgICAgKGxldCAoKHByZWMgKGlmIChhbmQgKHBhaXI/IGFyZ3MpIChw YWlyPyAoY2RyIGFyZ3MpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhZHIgYXJncykK ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZtdC1wcmVjaXNpb24gc3QpKSkpCiAgICAgICAg ICAgICAoaWYgcHJlYwogICAgICAgICAgICAgICAgIChsZXQqICgoZGVjaW1hbC1zZXAKICAgICAg ICAgICAgICAgICAgICAgICAgIChvciAoZm10LXJlZiBzdCAnZGVjaW1hbC1zZXApCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGlmIChlcXY/ICNcLiAoZm10LXJlZiBzdCAnY29tbWEtc2Vw KSkgI1wsICNcLikpKQogICAgICAgICAgICAgICAgICAgICAgICAoZGlmZiAoLSB3aWR0aCAoKyBw cmVjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoY2hhcj8g ZGVjaW1hbC1zZXApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5n LWxlbmd0aCBkZWNpbWFsLXNlcCkpKSkpKQogICAgICAgICAgICAgICAgICAgKChjYXQgKGlmIChw b3NpdGl2ZT8gZGlmZikgKG1ha2Utc3RyaW5nIGRpZmYgI1wjKSAiIikKICAgICAgICAgICAgICAg ICAgICAgICAgIGRlY2ltYWwtc2VwIChtYWtlLXN0cmluZyBwcmVjICNcIykpCiAgICAgICAgICAg ICAgICAgICAgc3QpKQogICAgICAgICAgICAgICAgICgoZm10LXdyaXRlciBzdCkgKG1ha2Utc3Ry aW5nIHdpZHRoICNcIykgc3QpKSkKICAgICAgICAgICAoKGZtdC13cml0ZXIgc3QpIHN0ciBzdCkp KSkpKQoKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Cjs7OyBzaGFyZWQgc3RydWN0dXJlIHV0aWxpdGllcwoKKGRl ZmluZSAoZXE/LXRhYmxlLXJlZiB0YWIgeCkgKGhhc2gtdGFibGUtcmVmL2RlZmF1bHQgdGFiIHgg I2YpKQooZGVmaW5lIChlcT8tdGFibGUtc2V0ISB0YWIgeCB2KSAoaGFzaC10YWJsZS1zZXQhIHRh YiB4IHYpKQoKOzsgWFhYWCBleHRlbmQgZm9yIHJlY29yZHMgYW5kIG90aGVyIGNvbnRhaW5lciBk YXRhIHR5cGVzCihkZWZpbmUgKG1ha2Utc2hhcmVkLXJlZi10YWJsZSBvYmopCiAgKGxldCAoKHRh YiAobWFrZS1lcT8tdGFibGUpKQogICAgICAgIChyZXMgKG1ha2UtZXE/LXRhYmxlKSkKICAgICAg ICAoaW5kZXggMCkpCiAgICAobGV0IHdhbGsgKChvYmogb2JqKSkKICAgICAgKGNvbmQKICAgICAg ICAoKGVxPy10YWJsZS1yZWYgdGFiIG9iaikKICAgICAgICAgPT4gKGxhbWJkYSAoaSkgKGVxPy10 YWJsZS1zZXQhIHRhYiBvYmogKCsgaSAxKSkpKQogICAgICAgICgobm90IChvciAoc3ltYm9sPyBv YmopIChudW1iZXI/IG9iaikgKGNoYXI/IG9iaikKICAgICAgICAgICAgICAgICAgKGJvb2xlYW4/ IG9iaikgKG51bGw/IG9iaikgKGVvZi1vYmplY3Q/IG9iaikpKQogICAgICAgICAoZXE/LXRhYmxl LXNldCEgdGFiIG9iaiAxKQogICAgICAgICAoY29uZAogICAgICAgICAgICgocGFpcj8gb2JqKQog ICAgICAgICAgICAod2FsayAoY2FyIG9iaikpCiAgICAgICAgICAgICh3YWxrIChjZHIgb2JqKSkp CiAgICAgICAgICAgKCh2ZWN0b3I/IG9iaikKICAgICAgICAgICAgKGxldCAoKGxlbiAodmVjdG9y LWxlbmd0aCBvYmopKSkKICAgICAgICAgICAgICAoZG8gKChpIDAgKCsgaSAxKSkpICgoPj0gaSBs ZW4pKQogICAgICAgICAgICAgICAgKHdhbGsgKHZlY3Rvci1yZWYgb2JqIGkpKSkpKSkpKSkKICAg IChoYXNoLXRhYmxlLXdhbGsKICAgICB0YWIKICAgICAobGFtYmRhIChvYmogY291bnQpCiAgICAg ICAoaWYgKD4gY291bnQgMSkKICAgICAgICAgICAoYmVnaW4KICAgICAgICAgICAgIChlcT8tdGFi bGUtc2V0ISByZXMgb2JqIChjb25zIGluZGV4ICNmKSkKICAgICAgICAgICAgIChzZXQhIGluZGV4 ICgrIGluZGV4IDEpKSkpKSkKICAgIHJlcykpCgooZGVmaW5lIChnZW4tc2hhcmVkLXJlZiBpIHN1 ZmZpeCkKICAoc3RyaW5nLWFwcGVuZCAiIyIgKG51bWJlci0+c3RyaW5nIGkpIHN1ZmZpeCkpCgoo ZGVmaW5lIChtYXliZS1nZW4tc2hhcmVkLXJlZiBzdCBjZWxsIHNoYXJlcykKICAoY29uZAogICAg KChwYWlyPyBjZWxsKQogICAgIChzZXQtY2FyISBjZWxsIChjZHIgc2hhcmVzKSkKICAgICAoc2V0 LWNkciEgY2VsbCAjdCkKICAgICAoc2V0LWNkciEgc2hhcmVzICgrIChjZHIgc2hhcmVzKSAxKSkK ICAgICAoKGZtdC13cml0ZXIgc3QpIChnZW4tc2hhcmVkLXJlZiAoY2FyIGNlbGwpICI9Iikgc3Qp KQogICAgKGVsc2Ugc3QpKSkKCihkZWZpbmUgKGNhbGwtd2l0aC1zaGFyZWQtcmVmIG9iaiBzdCBz aGFyZXMgcHJvYykKICAobGV0ICgoY2VsbCAoZXE/LXRhYmxlLXJlZiAoY2FyIHNoYXJlcykgb2Jq KSkpCiAgICAoaWYgKGFuZCAocGFpcj8gY2VsbCkgKGNkciBjZWxsKSkKICAgICAgICAoKGZtdC13 cml0ZXIgc3QpIChnZW4tc2hhcmVkLXJlZiAoY2FyIGNlbGwpICIjIikgc3QpCiAgICAgICAgKHBy b2MgKG1heWJlLWdlbi1zaGFyZWQtcmVmIHN0IGNlbGwgc2hhcmVzKSkpKSkKCihkZWZpbmUgKGNh bGwtd2l0aC1zaGFyZWQtcmVmL2NkciBvYmogc3Qgc2hhcmVzIHByb2Mgc2VwKQogIChsZXQgKChj ZWxsIChlcT8tdGFibGUtcmVmIChjYXIgc2hhcmVzKSBvYmopKQogICAgICAgIChvdXRwdXQgKGZt dC13cml0ZXIgc3QpKSkKICAgIChjb25kCiAgICAgICgoYW5kIChwYWlyPyBjZWxsKSAoY2RyIGNl bGwpKQogICAgICAgKG91dHB1dCAoZ2VuLXNoYXJlZC1yZWYgKGNhciBjZWxsKSAiIyIpIChvdXRw dXQgIi4gIiAoc2VwIHN0KSkpKQogICAgICAoKHBhaXI/IGNlbGwpCiAgICAgICAobGV0ICgoc3Qg KG1heWJlLWdlbi1zaGFyZWQtcmVmIChvdXRwdXQgIi4gIiAoc2VwIHN0KSkgY2VsbCBzaGFyZXMp KSkKICAgICAgICAgKG91dHB1dCAiKSIgKHByb2MgKG91dHB1dCAiKCIgc3QpKSkpKQogICAgICAo ZWxzZQogICAgICAgKHByb2MgKHNlcCBzdCkpKSkpKQoKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Cjs7OyBzZXhw IGZvcm1hdHRlcnMKCihkZWZpbmUgKHNsYXNoaWZpZWQgc3RyIC4gbykKICAobGV0LW9wdGlvbmFs cyogbyAoKHF1b3QgI1wiKSAoZXNjICNcXCkgKHJlbmFtZSAobGFtYmRhICh4KSAjZikpKQogICAg KGxhbWJkYSAoc3QpCiAgICAgIChsZXQqICgobGVuIChzdHJpbmctbGVuZ3RoIHN0cikpCiAgICAg ICAgICAgICAob3V0cHV0IChmbXQtd3JpdGVyIHN0KSkKICAgICAgICAgICAgIChxdW90LXN0ciAo c3RyaW5nIHF1b3QpKQogICAgICAgICAgICAgKGVzYy1zdHIgKGlmIChjaGFyPyBlc2MpIChzdHJp bmcgZXNjKSAob3IgZXNjIHF1b3Qtc3RyKSkpKQogICAgICAgIChsZXQgbHAgKChpIDApIChqIDAp IChzdCBzdCkpCiAgICAgICAgICAoZGVmaW5lIChjb2xsZWN0KQogICAgICAgICAgICAoaWYgKD0g aSBqKSBzdCAob3V0cHV0IChzdWJzdHJpbmcvc2hhcmVkIHN0ciBpIGopIHN0KSkpCiAgICAgICAg ICAoaWYgKD49IGogbGVuKQogICAgICAgICAgICAgIChjb2xsZWN0KQogICAgICAgICAgICAgIChs ZXQgKChjIChzdHJpbmctcmVmIHN0ciBqKSkpCiAgICAgICAgICAgICAgICAoY29uZAogICAgICAg ICAgICAgICAgICAoKG9yIChlcXY/IGMgcXVvdCkgKGVxdj8gYyBlc2MpKQogICAgICAgICAgICAg ICAgICAgKGxwIGogKCsgaiAxKSAob3V0cHV0IGVzYy1zdHIgKGNvbGxlY3QpKSkpCiAgICAgICAg ICAgICAgICAgICgocmVuYW1lIGMpCiAgICAgICAgICAgICAgICAgICA9PiAobGFtYmRhIChjMikK ICAgICAgICAgICAgICAgICAgICAgICAgKGxwICgrIGogMSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICgrIGogMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvdXRwdXQgYzIgKG91 dHB1dCBlc2Mtc3RyIChjb2xsZWN0KSkpKSkpCiAgICAgICAgICAgICAgICAgIChlbHNlCiAgICAg ICAgICAgICAgICAgICAobHAgaSAoKyBqIDEpIHN0KSkpKSkpKSkpKQoKOzsgT25seSBzbGFzaGlm eSBpZiB0aGVyZSBhcmUgc3BlY2lhbCBjaGFyYWN0ZXJzLCBpbiB3aGljaCBjYXNlIGFsc28KOzsg d3JhcCBpbiBxdW90ZXMuICBGb3Igd3JpdGluZyBzeW1ib2xzIGluIHwuLi58IGVzY2FwZXMsIG9y IENTVgo7OyBmaWVsZHMsIGV0Yy4gIFRoZSBwcmVkaWNhdGUgaW5kaWNhdGVzIHdoaWNoIGNoYXJh Y3RlcnMgY2F1c2UKOzsgc2xhc2hpZmljYXRpb24gLSB0aGlzIGlzIGluIGFkZGl0aW9uIHRvIGF1 dG9tYXRpYyBzbGFzaGlmeWluZyB3aGVuCjs7IGVpdGhlciB0aGUgcXVvdGUgb3IgZXNjYXBlIGNo YXIgaXMgcHJlc2VudC4KCihkZWZpbmUgKG1heWJlLXNsYXNoaWZpZWQgc3RyIHByZWQgLiBvKQog IChsZXQtb3B0aW9uYWxzKiBvICgocXVvdCAjXCIpIChlc2MgI1xcKSAocmVuYW1lIChsYW1iZGEg KHgpICNmKSkpCiAgICAoZGVmaW5lIChlc2M/IGMpIChvciAoZXF2PyBjIHF1b3QpIChlcXY/IGMg ZXNjKSAocmVuYW1lIGMpIChwcmVkIGMpKSkKICAgIChpZiAoc3RyaW5nLWluZGV4IHN0ciBlc2M/ KQogICAgICAgIChjYXQgcXVvdCAoc2xhc2hpZmllZCBzdHIgcXVvdCBlc2MgcmVuYW1lKSBxdW90 KQogICAgICAgIChkc3Agc3RyKSkpKQoKKGRlZmluZSAoZm10LXdyaXRlLXN0cmluZyBzdHIpCiAg KGRlZmluZSAocmVuYW1lIGMpCiAgICAoY2FzZSBjCiAgICAgICgoI1xuZXdsaW5lKSAibiIpCiAg ICAgIChlbHNlICNmKSkpCiAgKHNsYXNoaWZpZWQgc3RyICNcIiAjXFwgcmVuYW1lKSkKCihkZWZp bmUgKGRzcCBvYmopCiAgKGNvbmQKICAgICgocHJvY2VkdXJlPyBvYmopIG9iaikKICAgICgoc3Ry aW5nPyBvYmopIChsYW1iZGEgKHN0KSAoKGZtdC13cml0ZXIgc3QpIG9iaiBzdCkpKQogICAgKChj aGFyPyBvYmopIChkc3AgKHN0cmluZyBvYmopKSkKICAgIChlbHNlICh3cnQgb2JqKSkpKQoKKGRl ZmluZSAod3JpdGUtd2l0aC1zaGFyZXMgb2JqIHNoYXJlcykKICAobGFtYmRhIChzdCkKICAgIChs ZXQqICgob3V0cHV0IChmbXQtd3JpdGVyIHN0KSkKICAgICAgICAgICAod3ItbnVtCiAgICAgICAg ICAgIChjb25kICgoYW5kICg9IDEwIChmbXQtcmFkaXggc3QpKQogICAgICAgICAgICAgICAgICAg ICAgICAobm90IChmbXQtcHJlY2lzaW9uIHN0KSkpCiAgICAgICAgICAgICAgICAgICAobGFtYmRh IChuIHN0KSAob3V0cHV0IChudW1iZXItPnN0cmluZyBuKSBzdCkpKQogICAgICAgICAgICAgICAg ICAoKGFzc3YgKGZtdC1yYWRpeCBzdCkKICAgICAgICAgICAgICAgICAgICAgICAgICcoKDE2IC4g IiN4IikgKDEwIC4gIiIpICg4IC4gIiNvIikgKDIgLiAiI2IiKSkpCiAgICAgICAgICAgICAgICAg ICA9PiAobGFtYmRhIChjZWxsKQogICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgocHJlZml4 IChjZHIgY2VsbCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKG4gc3QpICgo bnVtIG4pIChvdXRwdXQgcHJlZml4IHN0KSkpKSkpCiAgICAgICAgICAgICAgICAgIChlbHNlIChs YW1iZGEgKG4gc3QpIChvdXRwdXQgKG51bWJlci0+c3RyaW5nIG4pIHN0KSkpKSkpCiAgICAgIChs ZXQgd3IgKChvYmogb2JqKSAoc3Qgc3QpKQogICAgICAgIChjYWxsLXdpdGgtc2hhcmVkLXJlZiBv Ymogc3Qgc2hhcmVzCiAgICAgICAgICAobGFtYmRhIChzdCkKICAgICAgICAgICAgKGNvbmQKICAg ICAgICAgICAgICAoKHBhaXI/IG9iaikKICAgICAgICAgICAgICAgKG91dHB1dAogICAgICAgICAg ICAgICAgIikiCiAgICAgICAgICAgICAgICAobGV0IGxwICgobHMgb2JqKQogICAgICAgICAgICAg ICAgICAgICAgICAgKHN0IChvdXRwdXQgIigiIHN0KSkpCiAgICAgICAgICAgICAgICAgIChsZXQg KChzdCAod3IgKGNhciBscykgc3QpKQogICAgICAgICAgICAgICAgICAgICAgICAocmVzdCAoY2Ry IGxzKSkpCiAgICAgICAgICAgICAgICAgICAgKGNvbmQKICAgICAgICAgICAgICAgICAgICAgICgo bnVsbD8gcmVzdCkgc3QpCiAgICAgICAgICAgICAgICAgICAgICAoKHBhaXI/IHJlc3QpCiAgICAg ICAgICAgICAgICAgICAgICAgKGNhbGwtd2l0aC1zaGFyZWQtcmVmL2NkciByZXN0IHN0IHNoYXJl cwogICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoc3QpIChscCByZXN0IHN0KSkKICAg ICAgICAgICAgICAgICAgICAgICAgIChkc3AgIiAiKSkpCiAgICAgICAgICAgICAgICAgICAgICAo ZWxzZSAod3IgcmVzdCAob3V0cHV0ICIgLiAiIHN0KSkpKSkpKSkKICAgICAgICAgICAgICAoKHZl Y3Rvcj8gb2JqKQogICAgICAgICAgICAgICAobGV0ICgobGVuICh2ZWN0b3ItbGVuZ3RoIG9iaikp KQogICAgICAgICAgICAgICAgIChpZiAoemVybz8gbGVuKQogICAgICAgICAgICAgICAgICAgICAo b3V0cHV0ICIjKCkiIHN0KQogICAgICAgICAgICAgICAgICAgICAobGV0IGxwICgoaSAxKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICh3ciAodmVjdG9yLXJlZiBvYmogMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAob3V0cHV0ICIjKCIgc3QpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgKGlmICg+PSBp IGxlbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgKG91dHB1dCAiKSIgc3QpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgIChscCAoKyBpIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAod3IgKHZlY3Rvci1yZWYgb2JqIGkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKG91dHB1dCAiICIgc3QpKSkpKSkpKQogICAgICAgICAgICAgICgoc3RyaW5nPyBvYmop CiAgICAgICAgICAgICAgIChvdXRwdXQgIlwiIiAoKGZtdC13cml0ZS1zdHJpbmcgb2JqKSAob3V0 cHV0ICJcIiIgc3QpKSkpCiAgICAgICAgICAgICAgKChudW1iZXI/IG9iaikKICAgICAgICAgICAg ICAgKHdyLW51bSBvYmogc3QpKQogICAgICAgICAgICAgICgoYm9vbGVhbj8gb2JqKQogICAgICAg ICAgICAgICAob3V0cHV0IChpZiBvYmogIiN0IiAiI2YiKSBzdCkpCiAgICAgICAgICAgICAgKGVs c2UKICAgICAgICAgICAgICAgKG91dHB1dCAod3JpdGUtdG8tc3RyaW5nIG9iaikgc3QpKSkpKSkp KSkKCihkZWZpbmUgKHdydCBvYmopCiAgKHdyaXRlLXdpdGgtc2hhcmVzIG9iaiAoY29ucyAobWFr ZS1zaGFyZWQtcmVmLXRhYmxlIG9iaikgMCkpKQoKOzsgdGhlIG9ubHkgZXhwZW5zaXZlIHBhcnQs IGluIGJvdGggdGltZSBhbmQgbWVtb3J5LCBvZiBoYW5kbGluZwo7OyBzaGFyZWQgc3RydWN0dXJl cyB3aGVuIHdyaXRpbmcgaXMgYnVpbGRpbmcgdGhlIGluaXRpYWwgdGFibGUsIHNvCjs7IGZvciB0 aGUgZWZmaWNpZW50IHZlcnNpb24gd2UganVzdCBza2lwIHRoYXQKCihkZWZpbmUgKHdydC91bnNo YXJlZCBvYmopCiAgKHdyaXRlLXdpdGgtc2hhcmVzIG9iaiAoY29ucyAobWFrZS1lcT8tdGFibGUp IDApKSkKCg== --bcaec53f8e6da1058a049e4f8f3a Content-Type: application/octet-stream; name="let-optionals.scm" Content-Disposition: attachment; filename="let-optionals.scm" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gl7152g94 Cjs7IChkZWZpbmUtc3ludGF4IGxldC1vcHRpb25hbHMqCjs7ICAgKHN5bnRheC1ydWxlcyAoKQo7 OyAgICAgKChfIG9wdC1scyAoKSBib2R5IC4uLikKOzsgICAgICAobGV0ICgpIGJvZHkgLi4uKSkK OzsgICAgICgoXyAoZXhwciAuLi4pIHZhcnMgYm9keSAuLi4pCjs7ICAgICAgKGxldCAoKHRtcCAo ZXhwciAuLi4pKSkKOzsgICAgICAgIChsZXQtb3B0aW9uYWxzKiB0bXAgdmFycyBib2R5IC4uLikp KQo7OyAgICAgKChfIHRtcCAoKHZhciBkZWZhdWx0KSAuIHJlc3QpIGJvZHkgLi4uKQo7OyAgICAg IChsZXQgKCh2YXIgKGlmIChwYWlyPyB0bXApIChjYXIgdG1wKSBkZWZhdWx0KSkKOzsgICAgICAg ICAgICAodG1wMiAoaWYgKHBhaXI/IHRtcCkgKGNkciB0bXApICcoKSkpKQo7OyAgICAgICAgKGxl dC1vcHRpb25hbHMqIHRtcDIgcmVzdCBib2R5IC4uLikpKQo7OyAgICAgKChfIHRtcCB0YWlsIGJv ZHkgLi4uKQo7OyAgICAgIChsZXQgKCh0YWlsIHRtcCkpCjs7ICAgICAgICBib2R5IC4uLikpCjs7 ICAgICApKQoKKGRlZmluZS1zeW50YXggbGV0LW9wdGlvbmFscyoKICAoc3ludGF4LXJ1bGVzICgp CiAgICAoKF8gb3B0LWxzICgpIC4gYm9keSkKICAgICAobGV0ICgpIC4gYm9keSkpCiAgICAoKF8g KG9wIC4gYXJncykgdmFycyAuIGJvZHkpCiAgICAgKGxldCAoKHRtcCAob3AgLiBhcmdzKSkpCiAg ICAgICAobGV0LW9wdGlvbmFscyogdG1wIHZhcnMgLiBib2R5KSkpCiAgICAoKF8gdG1wICgodmFy IGRlZmF1bHQpIC4gcmVzdCkgLiBib2R5KQogICAgIChsZXQgKCh2YXIgKGlmIChwYWlyPyB0bXAp IChjYXIgdG1wKSBkZWZhdWx0KSkKICAgICAgICAgICAodG1wMiAoaWYgKHBhaXI/IHRtcCkgKGNk ciB0bXApICcoKSkpKQogICAgICAgKGxldC1vcHRpb25hbHMqIHRtcDIgcmVzdCAuIGJvZHkpKSkK ICAgICgoXyB0bXAgdGFpbCAuIGJvZHkpCiAgICAgKGxldCAoKHRhaWwgdG1wKSkKICAgICAgIC4g Ym9keSkpCiAgICApKQoKOzsgKGRlZmluZS1zeW50YXggbGV0LW9wdGlvbmFscyoKOzsgICAoc3lu dGF4LXJ1bGVzICgpCjs7ICAgICAoKF8gb3B0cyAoKHZhciBkZWZhdWx0KSAuLi4pIGJvZHkgLi4u KQo7OyAgICAgIChsZXQqICgodmFyIChpZiAobWVtcSAndmFyIG9wdHMpIChjYWRyIChtZW1xICd2 YXIgb3B0cykpIGRlZmF1bHQpKQo7OyAgICAgICAgICAgICAuLi4pCjs7ICAgICAgICBib2R5IC4u LikpKSkK --bcaec53f8e6da1058a049e4f8f3a Content-Type: application/octet-stream; name="make-eq-table.scm" Content-Disposition: attachment; filename="make-eq-table.scm" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gl7152ga5 CihkZWZpbmUgKG1ha2UtZXE/LXRhYmxlKQogIChtYWtlLWhhc2gtdGFibGUgZXE/KSkK --bcaec53f8e6da1058a049e4f8f3a Content-Type: application/octet-stream; name="mantissa.scm" Content-Disposition: attachment; filename="mantissa.scm" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gl7152gb6 Cjs7IEJyZWFrIGEgcG9zaXRpdmUgcmVhbCBudW1iZXIgZG93biB0byBhIG5vcm1hbGl6ZWQgbWFu dGlzc2EgYW5kCjs7IGV4cG9uZW50LiBEZWZhdWx0IGJhc2U9MiwgbWFudC1zaXplPTUyLCBleHAt c2l6ZT0xMSBmb3IgSUVFRSBkb3VibGVzLgoKKGRlZmluZSAobWFudGlzc2ErZXhwb25lbnQgbnVt IC4gb3B0KQogIChpZiAoemVybz8gbnVtKQogICAgICAobGlzdCAwIDApCiAgICAgIChsZXQtb3B0 aW9uYWxzKiBvcHQgKChiYXNlIDIpIChtYW50LXNpemUgNTIpIChleHAtc2l6ZSAxMSkpCiAgICAg ICAgKGxldCogKChib3QgKGV4cHQgYmFzZSBtYW50LXNpemUpKQogICAgICAgICAgICAgICAodG9w ICgqIGJhc2UgYm90KSkpCiAgICAgICAgICAobGV0IGxwICgobiBudW0pIChlIDApKQogICAgICAg ICAgICAoY29uZAogICAgICAgICAgICAgICgoPj0gbiB0b3ApIChscCAocXVvdGllbnQgbiBiYXNl KSAoKyBlIDEpKSkKICAgICAgICAgICAgICAoKDwgbiBib3QpIChscCAoKiBuIGJhc2UpICgtIGUg MSkpKQogICAgICAgICAgICAgIChlbHNlIChsaXN0IChpbmV4YWN0LT5leGFjdCBuKQogICAgICAg ICAgICAgICAgICAgICAgICAgIChpbmV4YWN0LT5leGFjdCBlKSkpKSkpKSkpCg== --bcaec53f8e6da1058a049e4f8f3a Content-Type: application/octet-stream; name="test-fmt.scm" Content-Disposition: attachment; filename="test-fmt.scm" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gl715my57 KHVzZS1tb2R1bGVzIChzcmZpIHNyZmktMjYpKQoKKGRlZmluZS1zeW50YXggdHJ1bmNhdGVkLXdy aXR0ZW4tZXhwCiAgKHN5bnRheC1ydWxlcyAoKQogICAgKChfIGV4cHIpCiAgICAgKGxldCAoKHMg KHdpdGgtb3V0cHV0LXRvLXN0cmluZyAobGFtYmRhICgpICh3cml0ZSAnZXhwcikpKSkpCiAgICAg ICAgICAgICAgIChzdWJzdHJpbmcgcyAwIChtaW4gNjAgKHN0cmluZy1sZW5ndGggcykpKSkpKSkK Cihjb25kLWV4cGFuZAogKGNoaWNrZW4gKHVzZSB0ZXN0IGZtdCkpCiAoZ2F1Y2hlCiAgKHVzZSBn YXVjaGUudGVzdCkKICAodXNlIHRleHQuZm10KQogIChkZWZpbmUgdGVzdC1iZWdpbiB0ZXN0LXN0 YXJ0KQogIChkZWZpbmUgb3JpZy10ZXN0ICh3aXRoLW1vZHVsZSBnYXVjaGUudGVzdCB0ZXN0KSkK ICAoZGVmaW5lLXN5bnRheCB0ZXN0CiAgICAoc3ludGF4LXJ1bGVzICgpCiAgICAgICgodGVzdCBu YW1lIGV4cGVjdGVkIGV4cHIpCiAgICAgICAob3JpZy10ZXN0IG5hbWUgZXhwZWN0ZWQgKGxhbWJk YSAoKSBleHByKSkpCiAgICAgICgodGVzdCBleHBlY3RlZCBleHByKQogICAgICAgKG9yaWctdGVz dCAobGV0ICgocyAod2l0aC1vdXRwdXQtdG8tc3RyaW5nIChsYW1iZGEgKCkgKHdyaXRlICdleHBy KSkpKSkKICAgICAgICAgICAgICAgICAgICAoc3Vic3RyaW5nIHMgMCAobWluIDYwIChzdHJpbmct bGVuZ3RoIHMpKSkpCiAgICAgICAgICAgICAgICAgIGV4cGVjdGVkCiAgICAgICAgICAgICAgICAg IChsYW1iZGEgKCkgZXhwcikpKQogICAgICApKSkKIChndWlsZQogICh1c2UtbW9kdWxlcyAodGVz dC1zdWl0ZSBsaWIpKQogIChkZWZpbmUgKHRlc3QtYmVnaW4gbmFtZSkgKHNpbXBsZS1mb3JtYXQg I3QgIlRlc3RpbmcgfkFcbiIgbmFtZSkpCiAgKGRlZmluZSAodGVzdC1lbmQpICN0KQogIChkZWZp bmUtc3ludGF4IHRlc3QKICAgIChzeW50YXgtcnVsZXMgKCkKICAgICAgKCh0ZXN0IG5hbWUgZXhw ZWN0ZWQgZXhwcikKICAgICAgIChwYXNzLWlmIG5hbWUgKGVxdWFsPyBleHBlY3RlZCBleHByKSkp CiAgICAgICgodGVzdCBleHBlY3RlZCBleHByKQogICAgICAgKHRlc3QgKHRydW5jYXRlZC13cml0 dGVuLWV4cCBleHByKQogICAgICAgICAgICAgZXhwZWN0ZWQKICAgICAgICAgICAgIGV4cHIpKSkp CiAgKGRlZmluZS1zeW50YXggdGVzdC1lcnJvcgogICAgKHN5bnRheC1ydWxlcyAoKQogICAgICAo KHRlc3QtZXJyb3IgZXhwcikKICAgICAgIChwYXNzLWlmLWV4Y2VwdGlvbgogICAgICAgICh0cnVu Y2F0ZWQtd3JpdHRlbi1leHAgZXhwcikKICAgICAgICBleGNlcHRpb246bWlzY2VsbGFuZW91cy1l cnJvcgogICAgICAgIGV4cHIpKSkpKQogKGVsc2UpKQoKKHRlc3QtYmVnaW4gImZtdCIpCgo7OyBi YXNpYyBkYXRhIHR5cGVzCgoodGVzdCAiaGkiIChmbXQgI2YgImhpIikpCih0ZXN0ICJcImhpXCIi IChmbXQgI2YgKHdydCAiaGkiKSkpCih0ZXN0ICJcImhpIFxcXCJib2JcXFwiXCIiIChmbXQgI2Yg KHdydCAiaGkgXCJib2JcIiIpKSkKKHRlc3QgIlwiaGVsbG9cXG53b3JsZFwiIiAoZm10ICNmICh3 cnQgImhlbGxvXG53b3JsZCIpKSkKKHRlc3QgIkFCQyIgKGZtdCAjZiAodXBjYXNlICJhYmMiKSkp Cih0ZXN0ICJhYmMiIChmbXQgI2YgKGRvd25jYXNlICJBQkMiKSkpCih0ZXN0ICJBYmMiIChmbXQg I2YgKHRpdGxlY2FzZSAiYWJjIikpKQoKKHRlc3QgImFiYyAgICAgZGVmIiAoZm10ICNmICJhYmMi ICh0YWItdG8pICJkZWYiKSkKKHRlc3QgImFiYyAgZGVmIiAoZm10ICNmICJhYmMiICh0YWItdG8g NSkgImRlZiIpKQoodGVzdCAiYWJjZGVmIiAoZm10ICNmICJhYmMiICh0YWItdG8gMykgImRlZiIp KQoKKHRlc3QgIi0xIiAoZm10ICNmIC0xKSkKKHRlc3QgIjAiIChmbXQgI2YgMCkpCih0ZXN0ICIx IiAoZm10ICNmIDEpKQoodGVzdCAiMTAiIChmbXQgI2YgMTApKQoodGVzdCAiMTAwIiAoZm10ICNm IDEwMCkpCjs7ICh0ZXN0ICIxZSsxNSIgKGZtdCAjZiAxZSsxNSkpCjs7ICh0ZXN0ICIxZSsyMyIg KGZtdCAjZiAxZSsyMykpCjs7ICh0ZXN0ICIxLjJlKzIzIiAoZm10ICNmIDEuMmUrMjMpKQo7OyAo dGVzdCAiMWUtNSIgKGZtdCAjZiAxZS01KSkKOzsgKHRlc3QgIjFlLTYiIChmbXQgI2YgMWUtNikp Cjs7ICh0ZXN0ICIxZS03IiAoZm10ICNmIDFlLTcpKQo7OyAodGVzdCAiMmUtNiIgKGZtdCAjZiAy ZS02KSkKKHRlc3QgIjU3MDA1IiAoZm10ICNmICN4REVBRCkpCih0ZXN0ICIjeERFQUQiIChmbXQg I2YgKHJhZGl4IDE2ICN4REVBRCkpKQoodGVzdCAiI3hERUFEMTIzNCIgKGZtdCAjZiAocmFkaXgg MTYgI3hERUFEKSAxMjM0KSkKKHRlc3QgIiN4REUuQUQiIChmbXQgI2YgKHJhZGl4IDE2IChleGFj dC0+aW5leGFjdCAoLyAjeERFQUQgI3gxMDApKSkpKQoodGVzdCAiI3hELkVBRCIgKGZtdCAjZiAo cmFkaXggMTYgKGV4YWN0LT5pbmV4YWN0ICgvICN4REVBRCAjeDEwMDApKSkpKQoodGVzdCAiI3gw LkRFQUQiIChmbXQgI2YgKHJhZGl4IDE2IChleGFjdC0+aW5leGFjdCAoLyAjeERFQUQgI3gxMDAw MCkpKSkpCih0ZXN0ICIxRyIgKGZtdCAjZiAocmFkaXggMTcgKG51bSAzMykpKSkKKHRlc3QgIjFH IiAoZm10ICNmIChudW0gMzMgMTcpKSkKCih0ZXN0ICIzLjE0MTU5IiAoZm10ICNmIDMuMTQxNTkp KQoodGVzdCAiMy4xNCIgKGZtdCAjZiAoZml4IDIgMy4xNDE1OSkpKQoodGVzdCAiMy4xNCIgKGZt dCAjZiAoZml4IDIgMy4xNCkpKQoodGVzdCAiMy4wMCIgKGZtdCAjZiAoZml4IDIgMy4pKSkKKHRl c3QgIjEuMTAiIChmbXQgI2YgKG51bSAxLjA5OSAxMCAyKSkpCih0ZXN0ICIwLjAwIiAoZm10ICNm IChmaXggMiAxZS0xNykpKQoodGVzdCAiMC4wMDAwMDAwMDAwIiAoZm10ICNmIChmaXggMTAgMWUt MTcpKSkKKHRlc3QgIjAuMDAwMDAwMDAwMDAwMDAwMDEwMDAiIChmbXQgI2YgKGZpeCAyMCAxZS0x NykpKQoodGVzdC1lcnJvciAoZm10ICNmIChudW0gMWUtMTcgMCkpKQoKKHRlc3QgIjExLjc1IiAo Zm10ICNmIChudW0gKC8gNDcgNCkgMTAgMikpKQoodGVzdCAiLTExLjc1IiAoZm10ICNmIChudW0g KC8gLTQ3IDQpIDEwIDIpKSkKCih0ZXN0ICIoI3gxMSAjeDIyICN4MzMpIiAoZm10ICNmIChyYWRp eCAxNiAnKCN4MTEgI3gyMiAjeDMzKSkpKQoKKHRlc3QgIjI5OSw3OTIsNDU4IiAoZm10ICNmIChu dW0gMjk5NzkyNDU4IDEwICNmICNmICN0KSkpCih0ZXN0ICIyOTksNzkyLDQ1OCIgKGZtdCAjZiAo bnVtL2NvbW1hIDI5OTc5MjQ1OCkpKQoodGVzdCAiMjk5Ljc5Mi40NTgiIChmbXQgI2YgKGNvbW1h LWNoYXIgI1wuIChudW0vY29tbWEgMjk5NzkyNDU4KSkpKQoodGVzdCAiMjk5Ljc5Mi40NTgsMCIg KGZtdCAjZiAoY29tbWEtY2hhciAjXC4gKG51bS9jb21tYSAyOTk3OTI0NTguMCkpKSkKCih0ZXN0 ICIxMDAsMDAwIiAoZm10ICNmIChudW0gMTAwMDAwIDEwIDAgI2YgMykpKQoodGVzdCAiMTAwLDAw MC4wIiAoZm10ICNmIChudW0gMTAwMDAwIDEwIDEgI2YgMykpKQoodGVzdCAiMTAwLDAwMC4wMCIg KGZtdCAjZiAobnVtIDEwMDAwMCAxMCAyICNmIDMpKSkKCih0ZXN0ICIxLjIzIiAoZm10ICNmIChm aXggMiAobnVtL2ZpdCA0IDEuMjM0NSkpKSkKKHRlc3QgIjEuMDAiIChmbXQgI2YgKGZpeCAyIChu dW0vZml0IDQgMSkpKSkKKHRlc3QgIiMuIyMiIChmbXQgI2YgKGZpeCAyIChudW0vZml0IDQgMTIu MzQ1KSkpKQoKKGNvbmQKICgoZmVhdHVyZT8gJ2Z1bGwtbnVtZXJpYy10b3dlcikKICAodGVzdCAi MSsyaSIgKGZtdCAjZiAoc3RyaW5nLT5udW1iZXIgIjErMmkiKSkpCiAgKHRlc3QgIjErMmkiIChm bXQgI2YgKG51bSAoc3RyaW5nLT5udW1iZXIgIjErMmkiKSkpKQogICh0ZXN0ICIxLjAwKzIuMDBp IiAoZm10ICNmIChmaXggMiAobnVtIChzdHJpbmctPm51bWJlciAiMSsyaSIpKSkpKQogICh0ZXN0 ICIzLjE0KzIuMDBpIiAoZm10ICNmIChmaXggMiAobnVtIChzdHJpbmctPm51bWJlciAiMy4xNDE1 OSsyaSIpKSkpKSkpCgoodGVzdCAiMy45S2kiIChmbXQgI2YgKG51bS9zaSAzOTg2KSkpCih0ZXN0 ICI0ayIgKGZtdCAjZiAobnVtL3NpIDM5ODYgMTAwMCkpKQoodGVzdCAiNjA4IiAoZm10ICNmIChu dW0vc2kgNjA4KSkpCih0ZXN0ICIzRyIgKGZtdCAjZiAobnVtL3NpIDEyMzQ1LjEyMzU1IDE2KSkp Cgo7OyBwYWRkaW5nL3RyaW1taW5nCgoodGVzdCAiYWJjICAiIChmbXQgI2YgKHBhZCA1ICJhYmMi KSkpCih0ZXN0ICIgIGFiYyIgKGZtdCAjZiAocGFkL2xlZnQgNSAiYWJjIikpKQoodGVzdCAiIGFi YyAiIChmbXQgI2YgKHBhZC9ib3RoIDUgImFiYyIpKSkKKHRlc3QgImFiY2RlIiAoZm10ICNmIChw YWQgNSAiYWJjZGUiKSkpCih0ZXN0ICJhYmNkZWYiIChmbXQgI2YgKHBhZCA1ICJhYmNkZWYiKSkp CgoodGVzdCAiYWJjIiAoZm10ICNmICh0cmltIDMgImFiY2RlIikpKQoodGVzdCAiYWJjIiAoZm10 ICNmICh0cmltL2xlbmd0aCAzICJhYmNkZSIpKSkKKHRlc3QgImFiYyIgKGZtdCAjZiAodHJpbS9s ZW5ndGggMyAiYWJjXG5kZSIpKSkKKHRlc3QgImNkZSIgKGZtdCAjZiAodHJpbS9sZWZ0IDMgImFi Y2RlIikpKQoodGVzdCAiYmNkIiAoZm10ICNmICh0cmltL2JvdGggMyAiYWJjZGUiKSkpCgoodGVz dCAicHJlZml4OiBhYmMiIChmbXQgI2YgInByZWZpeDogIiAodHJpbSAzICJhYmNkZSIpKSkKKHRl c3QgInByZWZpeDogYWJjIiAoZm10ICNmICJwcmVmaXg6ICIgKHRyaW0vbGVuZ3RoIDMgImFiY2Rl IikpKQoodGVzdCAicHJlZml4OiBhYmMiIChmbXQgI2YgInByZWZpeDogIiAodHJpbS9sZW5ndGgg MyAiYWJjXG5kZSIpKSkKKHRlc3QgInByZWZpeDogY2RlIiAoZm10ICNmICJwcmVmaXg6ICIgKHRy aW0vbGVmdCAzICJhYmNkZSIpKSkKKHRlc3QgInByZWZpeDogYmNkIiAoZm10ICNmICJwcmVmaXg6 ICIgKHRyaW0vYm90aCAzICJhYmNkZSIpKSkKCih0ZXN0ICJhYmNkZSIgKGZtdCAjZiAoZWxsaXBz ZXMgIi4uLiIgKHRyaW0gNSAiYWJjZGUiKSkpKQoodGVzdCAiYWIuLi4iIChmbXQgI2YgKGVsbGlw c2VzICIuLi4iICh0cmltIDUgImFiY2RlZiIpKSkpCih0ZXN0ICJhYmMuLi4iIChmbXQgI2YgKGVs bGlwc2VzICIuLi4iICh0cmltIDYgImFiY2RlZmciKSkpKQoodGVzdCAiYWJjZGUiIChmbXQgI2Yg KGVsbGlwc2VzICIuLi4iICh0cmltL2xlZnQgNSAiYWJjZGUiKSkpKQoodGVzdCAiLi4uZWYiIChm bXQgI2YgKGVsbGlwc2VzICIuLi4iICh0cmltL2xlZnQgNSAiYWJjZGVmIikpKSkKKHRlc3QgIi4u LmVmZyIgKGZtdCAjZiAoZWxsaXBzZXMgIi4uLiIgKHRyaW0vbGVmdCA2ICJhYmNkZWZnIikpKSkK KHRlc3QgImFiY2RlZmciIChmbXQgI2YgKGVsbGlwc2VzICIuLi4iICh0cmltL2JvdGggNyAiYWJj ZGVmZyIpKSkpCih0ZXN0ICIuLi5kLi4uIiAoZm10ICNmIChlbGxpcHNlcyAiLi4uIiAodHJpbS9i b3RoIDcgImFiY2RlZmdoIikpKSkKKHRlc3QgIi4uLmUuLi4iIChmbXQgI2YgKGVsbGlwc2VzICIu Li4iICh0cmltL2JvdGggNyAiYWJjZGVmZ2hpIikpKSkKCih0ZXN0ICJhYmMgICIgKGZtdCAjZiAo Zml0IDUgImFiYyIpKSkKKHRlc3QgIiAgYWJjIiAoZm10ICNmIChmaXQvbGVmdCA1ICJhYmMiKSkp Cih0ZXN0ICIgYWJjICIgKGZtdCAjZiAoZml0L2JvdGggNSAiYWJjIikpKQoodGVzdCAiYWJjZGUi IChmbXQgI2YgKGZpdCA1ICJhYmNkZSIpKSkKKHRlc3QgImFiY2RlIiAoZm10ICNmIChmaXQvbGVm dCA1ICJhYmNkZSIpKSkKKHRlc3QgImFiY2RlIiAoZm10ICNmIChmaXQvYm90aCA1ICJhYmNkZSIp KSkKKHRlc3QgImFiY2RlIiAoZm10ICNmIChmaXQgNSAiYWJjZGVmZ2giKSkpCih0ZXN0ICJkZWZn aCIgKGZtdCAjZiAoZml0L2xlZnQgNSAiYWJjZGVmZ2giKSkpCih0ZXN0ICJjZGVmZyIgKGZtdCAj ZiAoZml0L2JvdGggNSAiYWJjZGVmZ2giKSkpCgoodGVzdCAicHJlZml4OiBhYmMgICIgKGZtdCAj ZiAicHJlZml4OiAiIChmaXQgNSAiYWJjIikpKQoodGVzdCAicHJlZml4OiAgIGFiYyIgKGZtdCAj ZiAicHJlZml4OiAiIChmaXQvbGVmdCA1ICJhYmMiKSkpCih0ZXN0ICJwcmVmaXg6ICBhYmMgIiAo Zm10ICNmICJwcmVmaXg6ICIgKGZpdC9ib3RoIDUgImFiYyIpKSkKKHRlc3QgInByZWZpeDogYWJj ZGUiIChmbXQgI2YgInByZWZpeDogIiAoZml0IDUgImFiY2RlIikpKQoodGVzdCAicHJlZml4OiBh YmNkZSIgKGZtdCAjZiAicHJlZml4OiAiIChmaXQvbGVmdCA1ICJhYmNkZSIpKSkKKHRlc3QgInBy ZWZpeDogYWJjZGUiIChmbXQgI2YgInByZWZpeDogIiAoZml0L2JvdGggNSAiYWJjZGUiKSkpCih0 ZXN0ICJwcmVmaXg6IGFiY2RlIiAoZm10ICNmICJwcmVmaXg6ICIgKGZpdCA1ICJhYmNkZWZnaCIp KSkKKHRlc3QgInByZWZpeDogZGVmZ2giIChmbXQgI2YgInByZWZpeDogIiAoZml0L2xlZnQgNSAi YWJjZGVmZ2giKSkpCih0ZXN0ICJwcmVmaXg6IGNkZWZnIiAoZm10ICNmICJwcmVmaXg6ICIgKGZp dC9ib3RoIDUgImFiY2RlZmdoIikpKQoKKHRlc3QgImFiY1xuMTIzXG4iIChmbXQgI2YgKGZtdC1q b2luL3N1ZmZpeCAoY3V0IHRyaW0gMyA8PikgJygiYWJjZGVmIiAiMTIzNDU2IikgbmwpKSkKCjs7 IHV0aWxpdGllcwoKKHRlc3QgIjEgMiAzIiAoZm10ICNmIChmbXQtam9pbiBkc3AgJygxIDIgMykg IiAiKSkpCgo7OyBzaGFyZWQgc3RydWN0dXJlcwoKKHRlc3QgIiMwPSgxIC4gIzAjKSIKICAgIChm bXQgI2YgKHdydCAobGV0ICgob25lcyAobGlzdCAxKSkpIChzZXQtY2RyISBvbmVzIG9uZXMpIG9u ZXMpKSkpCih0ZXN0ICIoMCAuICMwPSgxIC4gIzAjKSkiCiAgICAoZm10ICNmICh3cnQgKGxldCAo KG9uZXMgKGxpc3QgMSkpKQogICAgICAgICAgICAgICAgICAgKHNldC1jZHIhIG9uZXMgb25lcykK ICAgICAgICAgICAgICAgICAgIChjb25zIDAgb25lcykpKSkpCih0ZXN0ICIoc3ltIC4gIzA9KHN5 bSAuICMwIykpIgogICAgKGZtdCAjZiAod3J0IChsZXQgKChzeW1zIChsaXN0ICdzeW0pKSkKICAg ICAgICAgICAgICAgICAgIChzZXQtY2RyISBzeW1zIHN5bXMpCiAgICAgICAgICAgICAgICAgICAo Y29ucyAnc3ltIHN5bXMpKSkpKQoodGVzdCAiKCMwPSgxIC4gIzAjKSAjMT0oMiAuICMxIykpIgog ICAgKGZtdCAjZiAod3J0IChsZXQgKChvbmVzIChsaXN0IDEpKQogICAgICAgICAgICAgICAgICAg ICAgICh0d29zIChsaXN0IDIpKSkKICAgICAgICAgICAgICAgICAgIChzZXQtY2RyISBvbmVzIG9u ZXMpCiAgICAgICAgICAgICAgICAgICAoc2V0LWNkciEgdHdvcyB0d29zKQogICAgICAgICAgICAg ICAgICAgKGxpc3Qgb25lcyB0d29zKSkpKSkKCjs7IHdpdGhvdXQgc2hhcmVkIGRldGVjdGlvbgoK KHRlc3QgIigxIDEgMSAxIDEiCiAgICAoZm10ICNmICh0cmltL2xlbmd0aAogICAgICAgICAgICAg MTAKICAgICAgICAgICAgICh3cnQvdW5zaGFyZWQKICAgICAgICAgICAgICAobGV0ICgob25lcyAo bGlzdCAxKSkpIChzZXQtY2RyISBvbmVzIG9uZXMpIG9uZXMpKSkpKQoKKHRlc3QgIigxIDEgMSAx IDEgIgogICAgKGZtdCAjZiAodHJpbS9sZW5ndGgKICAgICAgICAgICAgIDExCiAgICAgICAgICAg ICAod3J0L3Vuc2hhcmVkCiAgICAgICAgICAgICAgKGxldCAoKG9uZXMgKGxpc3QgMSkpKSAoc2V0 LWNkciEgb25lcyBvbmVzKSBvbmVzKSkpKSkKCjs7IHByZXR0eSBwcmludGluZwoKKGRlZmluZS1t YWNybyAodGVzdC1wcmV0dHkgc3RyKQogIChsZXQgKChzZXhwICh3aXRoLWlucHV0LWZyb20tc3Ry aW5nIHN0ciByZWFkKSkpCiAgICBgKHRlc3QgLHN0ciAoZm10ICNmIChwcmV0dHkgJyxzZXhwKSkp KSkKCih0ZXN0LXByZXR0eSAiKGZvbyBiYXIpXG4iKQoKKHRlc3QtcHJldHR5CiIoKHNlbGYgLiBh cXVhbmV0LXBhcGVyLTE5OTEpCiAodHlwZSAuIHBhcGVyKQogKHRpdGxlIC4gXCJBcXVhbmV0OiBh IGh5cGVydGV4dCB0b29sIHRvIGhvbGQgeW91clwiKSkKIikKCih0ZXN0LXByZXR0eQoiKGFicmFj YWRhYnJhIHh5bG9waG9uZQogICAgICAgICAgICAgYmFuYW5hcmFtYQogICAgICAgICAgICAgeWVs bG93c3RvbmVwYXJrCiAgICAgICAgICAgICBjcnlwdG9hbmFseXNpcwogICAgICAgICAgICAgemVi cmFtYW5pYQogICAgICAgICAgICAgZGVsaWdodGZ1bAogICAgICAgICAgICAgd3ViYmxlZmx1YmJl cnkpXG4iKQoKKHRlc3QtcHJldHR5CiAiIygwICAxICAyICAzICA0ICA1ICA2ICA3ICA4ICA5ICAx MCAxMSAxMiAxMyAxNCAxNSAxNiAxNyAxOCAxOSAyMCAyMSAyMiAyMyAyNAogICAyNSAyNiAyNyAy OCAyOSAzMCAzMSAzMiAzMyAzNCAzNSAzNiAzNylcbiIpCgoodGVzdC1wcmV0dHkKICIoMCAgMSAg MiAgMyAgNCAgNSAgNiAgNyAgOCAgOSAgMTAgMTEgMTIgMTMgMTQgMTUgMTYgMTcgMTggMTkgMjAg MjEgMjIgMjMgMjQKICAyNSAyNiAyNyAyOCAyOSAzMCAzMSAzMiAzMyAzNCAzNSAzNiAzNylcbiIp CgoodGVzdC1wcmV0dHkKICIoZGVmaW5lIChmb2xkIGtvbnMga25pbCBscykKICAoZGVmaW5lIChs b29wIGxzIGFjYykKICAgIChpZiAobnVsbD8gbHMpIGFjYyAobG9vcCAoY2RyIGxzKSAoa29ucyAo Y2FyIGxzKSBhY2MpKSkpCiAgKGxvb3AgbHMga25pbCkpXG4iKQoKKHRlc3QtcHJldHR5CiIoZG8g KCh2ZWMgKG1ha2UtdmVjdG9yIDUpKSAoaSAwICgrIGkgMSkpKSAoKD0gaSA1KSB2ZWMpICh2ZWN0 b3Itc2V0ISB2ZWMgaSBpKSlcbiIpCgoodGVzdC1wcmV0dHkKIihkbyAoKHZlYyAobWFrZS12ZWN0 b3IgNSkpIChpIDAgKCsgaSAxKSkpICgoPSBpIDUpIHZlYykKICAodmVjdG9yLXNldCEgdmVjIGkg J3N1cGVyY2FsaWZyYWphbGlzdGljZXhwaWFsaWRvY2lvdXMpKVxuIikKCih0ZXN0LXByZXR0eQoi KGRvICgobXktdmVjdG9yIChtYWtlLXZlY3RvciA1KSkgKGluZGV4IDAgKCsgaW5kZXggMSkpKQog ICAgKCg9IGluZGV4IDUpIG15LXZlY3RvcikKICAodmVjdG9yLXNldCEgbXktdmVjdG9yIGluZGV4 IGluZGV4KSlcbiIpCgoodGVzdC1wcmV0dHkKICIoZGVmaW5lIChmb2xkIGtvbnMga25pbCBscykK ICAobGV0IGxvb3AgKChscyBscykgKGFjYyBrbmlsKSkKICAgIChpZiAobnVsbD8gbHMpIGFjYyAo bG9vcCAoY2RyIGxzKSAoa29ucyAoY2FyIGxzKSBhY2MpKSkpKVxuIikKCih0ZXN0LXByZXR0eQog IihkZWZpbmUgKGZpbGUtPnNleHAtbGlzdCBwYXRobmFtZSkKICAoY2FsbC13aXRoLWlucHV0LWZp bGUgcGF0aG5hbWUKICAgIChsYW1iZGEgKHBvcnQpCiAgICAgIChsZXQgbG9vcCAoKHJlcyAnKCkp KQogICAgICAgIChsZXQgKChsaW5lIChyZWFkIHBvcnQpKSkKICAgICAgICAgIChpZiAoZW9mLW9i amVjdD8gbGluZSkgKHJldmVyc2UgcmVzKSAobG9vcCAoY29ucyBsaW5lIHJlcykpKSkpKSkpXG4i KQoKKHRlc3QgIihsZXQgKChvbmVzICcjMD0oMSAuICMwIykpKSBvbmVzKVxuIgogICAgKGZtdCAj ZiAocHJldHR5IChsZXQgKChvbmVzIChsaXN0IDEpKSkgKHNldC1jZHIhIG9uZXMgb25lcykgYChs ZXQgKChvbmVzICcsb25lcykpIG9uZXMpKSkpKQoKJyh0ZXN0CiIobGV0ICgoemVyb3MgJygwIDAg MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDApKQogICAgICAob25lcyAn IzA9KDEgLiAjMCMpKSkKICAoYXBwZW5kIHplcm9zIG9uZXMpKVxuIgogICAgKGZtdCAjZiAocHJl dHR5CiAgICAgICAgICAgICAobGV0ICgob25lcyAobGlzdCAxKSkpCiAgICAgICAgICAgICAgIChz ZXQtY2RyISBvbmVzIG9uZXMpCiAgICAgICAgICAgICAgIGAobGV0ICgoemVyb3MgJygwIDAgMCAw IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDApKQogICAgICAgICAgICAgICAg ICAgICAgKG9uZXMgJyxvbmVzKSkKICAgICAgICAgICAgICAgICAgKGFwcGVuZCB6ZXJvcyBvbmVz KSkpKSkpCgo7OyBzbGFzaGlmeQoKKHRlc3QgIlwibm90ZVwiLFwidmVyeSBzaW1wbGVcIixcImNz dlwiLFwid3JpdGVyXCIsXCJcIlwieWF5IVwiXCJcIiIKICAgIChmbXQgI2YgKGZtdC1qb2luIChs YW1iZGEgKHgpIChjYXQgIlwiIiAoc2xhc2hpZmllZCB4ICNcIiAjZikgIlwiIikpCiAgICAgICAg ICAgICAgICAgICcoIm5vdGUiICJ2ZXJ5IHNpbXBsZSIgImNzdiIgIndyaXRlciIgIlwieWF5IVwi IikKICAgICAgICAgICAgICAgICAgIiwiKSkpCgoodGVzdCAibm90ZSxcInZlcnkgc2ltcGxlXCIs Y3N2LHdyaXRlcixcIlwiXCJ5YXkhXCJcIlwiIgogICAgKGZtdCAjZiAoZm10LWpvaW4gKGN1dCBt YXliZS1zbGFzaGlmaWVkIDw+IGNoYXItd2hpdGVzcGFjZT8gI1wiICNmKQogICAgICAgICAgICAg ICAgICAnKCJub3RlIiAidmVyeSBzaW1wbGUiICJjc3YiICJ3cml0ZXIiICJcInlheSFcIiIpCiAg ICAgICAgICAgICAgICAgICIsIikpKQoKOzsgY29sdW1uYXIgZm9ybWF0dGluZwoKKHRlc3QgImFi Y1xuZGVmXG4iIChmbXQgI2YgKGZtdC1jb2x1bW5zIChsaXN0IGRzcCAiYWJjXG5kZWZcbiIpKSkp Cih0ZXN0ICJhYmMxMjNcbmRlZjQ1NlxuIiAoZm10ICNmIChmbXQtY29sdW1ucyAobGlzdCBkc3Ag ImFiY1xuZGVmXG4iKSAobGlzdCBkc3AgIjEyM1xuNDU2XG4iKSkpKQoodGVzdCAiYWJjMTIzXG5k ZWY0NTZcbiIgKGZtdCAjZiAoZm10LWNvbHVtbnMgKGxpc3QgZHNwICJhYmNcbmRlZlxuIikgKGxp c3QgZHNwICIxMjNcbjQ1NiIpKSkpCih0ZXN0ICJhYmMxMjNcbmRlZjQ1NlxuIiAoZm10ICNmIChm bXQtY29sdW1ucyAobGlzdCBkc3AgImFiY1xuZGVmIikgKGxpc3QgZHNwICIxMjNcbjQ1NlxuIikp KSkKKHRlc3QgImFiYzEyM1xuZGVmNDU2XG5naGk3ODlcbiIKICAgIChmbXQgI2YgKGZtdC1jb2x1 bW5zIChsaXN0IGRzcCAiYWJjXG5kZWZcbmdoaVxuIikgKGxpc3QgZHNwICIxMjNcbjQ1NlxuNzg5 XG4iKSkpKQoodGVzdCAiYWJjMTIzd3V2XG5kZWY0NTZ4eXpcbiIKICAgIChmbXQgI2YgKGZtdC1j b2x1bW5zIChsaXN0IGRzcCAiYWJjXG5kZWZcbiIpIChsaXN0IGRzcCAiMTIzXG40NTZcbiIpIChs aXN0IGRzcCAid3V2XG54eXpcbiIpKSkpCih0ZXN0ICJhYmMgIDEyM1xuZGVmICA0NTZcbiIKICAg IChmbXQgI2YgKGZtdC1jb2x1bW5zIChsaXN0IChjdXQgcGFkL3JpZ2h0IDUgPD4pICJhYmNcbmRl ZlxuIikgKGxpc3QgZHNwICIxMjNcbjQ1NlxuIikpKSkKKHRlc3QgIkFCQyAgMTIzXG5ERUYgIDQ1 NlxuIgogICAgKGZtdCAjZiAoZm10LWNvbHVtbnMgKGxpc3QgKGNvbXBvc2UgdXBjYXNlIChjdXQg cGFkL3JpZ2h0IDUgPD4pKSAiYWJjXG5kZWZcbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAo bGlzdCBkc3AgIjEyM1xuNDU2XG4iKSkpKQoodGVzdCAiQUJDICAxMjNcbkRFRiAgNDU2XG4iCiAg ICAoZm10ICNmIChmbXQtY29sdW1ucyAobGlzdCAoY29tcG9zZSAoY3V0IHBhZC9yaWdodCA1IDw+ KSB1cGNhc2UpICJhYmNcbmRlZlxuIikKICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0IGRz cCAiMTIzXG40NTZcbiIpKSkpCgoodGVzdCAiaGVsbG9cbndvcmxkXG4iIChmbXQgI2YgKHdpdGgt d2lkdGggOCAod3JhcC1saW5lcyAiaGVsbG8gd29ybGQiKSkpKQoKKHRlc3QgIlRoZSBmdW5kYW1l bnRhbCBsaXN0IGl0ZXJhdG9yLgpBcHBsaWVzIEtPTlMgdG8gZWFjaCBlbGVtZW50IG9mCkxTIGFu ZCB0aGUgcmVzdWx0IG9mIHRoZSBwcmV2aW91cwphcHBsaWNhdGlvbiwgYmVnaW5uaW5nIHdpdGgg S05JTC4KV2l0aCBLT05TIGFzIENPTlMgYW5kIEtOSUwgYXMgJygpLAplcXVpdmFsZW50IHRvIFJF VkVSU0UuCiIKICAgIChmbXQgI2YgKHdpdGgtd2lkdGggMzYgKHdyYXAtbGluZXMgIlRoZSBmdW5k YW1lbnRhbCBsaXN0IGl0ZXJhdG9yLiAgQXBwbGllcyBLT05TIHRvIGVhY2ggZWxlbWVudCBvZiBM UyBhbmQgdGhlIHJlc3VsdCBvZiB0aGUgcHJldmlvdXMgYXBwbGljYXRpb24sIGJlZ2lubmluZyB3 aXRoIEtOSUwuICBXaXRoIEtPTlMgYXMgQ09OUyBhbmQgS05JTCBhcyAnKCksIGVxdWl2YWxlbnQg dG8gUkVWRVJTRS4iKSkpKQoKKHRlc3QKIlRoZSAgIGZ1bmRhbWVudGFsICAgbGlzdCAgIGl0ZXJh dG9yLgpBcHBsaWVzICBLT05TICB0byAgZWFjaCAgZWxlbWVudCAgb2YKTFMgIGFuZCAgdGhlICBy ZXN1bHQgb2YgdGhlIHByZXZpb3VzCmFwcGxpY2F0aW9uLCAgYmVnaW5uaW5nICB3aXRoICBLTklM LgpXaXRoICBLT05TICBhcyBDT05TIGFuZCBLTklMIGFzICcoKSwKZXF1aXZhbGVudCB0byBSRVZF UlNFLgoiCiAgICAoZm10ICNmICh3aXRoLXdpZHRoIDM2IChqdXN0aWZ5ICJUaGUgZnVuZGFtZW50 YWwgbGlzdCBpdGVyYXRvci4gIEFwcGxpZXMgS09OUyB0byBlYWNoIGVsZW1lbnQgb2YgTFMgYW5k IHRoZSByZXN1bHQgb2YgdGhlIHByZXZpb3VzIGFwcGxpY2F0aW9uLCBiZWdpbm5pbmcgd2l0aCBL TklMLiAgV2l0aCBLT05TIGFzIENPTlMgYW5kIEtOSUwgYXMgJygpLCBlcXVpdmFsZW50IHRvIFJF VkVSU0UuIikpKSkKCih0ZXN0CiIoZGVmaW5lIChmb2xkIGtvbnMga25pbCBscykgICAgICAgICAg OyBUaGUgZnVuZGFtZW50YWwgbGlzdCBpdGVyYXRvci4KICAobGV0IGxwICgobHMgbHMpIChhY2Mg a25pbCkpICAgICAgIDsgQXBwbGllcyBLT05TIHRvIGVhY2ggZWxlbWVudCBvZgogICAgKGlmIChu dWxsPyBscykgICAgICAgICAgICAgICAgICAgOyBMUyBhbmQgdGhlIHJlc3VsdCBvZiB0aGUgcHJl dmlvdXMKICAgICAgICBhY2MgICAgICAgICAgICAgICAgICAgICAgICAgIDsgYXBwbGljYXRpb24s IGJlZ2lubmluZyB3aXRoIEtOSUwuCiAgICAgICAgKGxwIChjZHIgbHMpICAgICAgICAgICAgICAg ICA7IFdpdGggS09OUyBhcyBDT05TIGFuZCBLTklMIGFzICcoKSwKICAgICAgICAgICAgKGtvbnMg KGNhciBscykgYWNjKSkpKSkgIDsgZXF1aXZhbGVudCB0byBSRVZFUlNFLgoiCiAgICAoZm10ICNm IChmbXQtY29sdW1ucwogICAgICAgICAgICAgKGxpc3QKICAgICAgICAgICAgICAoY3V0IHBhZC9y aWdodCAzNiA8PikKICAgICAgICAgICAgICAod2l0aC13aWR0aCAzNgogICAgICAgICAgICAgICAg KHByZXR0eSAnKGRlZmluZSAoZm9sZCBrb25zIGtuaWwgbHMpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgIChsZXQgbHAgKChscyBscykgKGFjYyBrbmlsKSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoaWYgKG51bGw/IGxzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh Y2MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxwIChjZHIgbHMpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa29ucyAoY2FyIGxzKSBhY2MpKSkpKSkpKQog ICAgICAgICAgICAgKGxpc3QKICAgICAgICAgICAgICAoY3V0IGNhdCAiIDsgIiA8PikKICAgICAg ICAgICAgICAod2l0aC13aWR0aCAzNgogICAgICAgICAgICAgICAgKHdyYXAtbGluZXMgIlRoZSBm dW5kYW1lbnRhbCBsaXN0IGl0ZXJhdG9yLiAgQXBwbGllcyBLT05TIHRvIGVhY2ggZWxlbWVudCBv ZiBMUyBhbmQgdGhlIHJlc3VsdCBvZiB0aGUgcHJldmlvdXMgYXBwbGljYXRpb24sIGJlZ2lubmlu ZyB3aXRoIEtOSUwuICBXaXRoIEtPTlMgYXMgQ09OUyBhbmQgS05JTCBhcyAnKCksIGVxdWl2YWxl bnQgdG8gUkVWRVJTRS4iKSkpKSkpCgoodGVzdAoiKGRlZmluZSAoZm9sZCBrb25zIGtuaWwgbHMp ICAgICAgICAgIDsgVGhlIGZ1bmRhbWVudGFsIGxpc3QgaXRlcmF0b3IuCiAgKGxldCBscCAoKGxz IGxzKSAoYWNjIGtuaWwpKSAgICAgICA7IEFwcGxpZXMgS09OUyB0byBlYWNoIGVsZW1lbnQgb2YK ICAgIChpZiAobnVsbD8gbHMpICAgICAgICAgICAgICAgICAgIDsgTFMgYW5kIHRoZSByZXN1bHQg b2YgdGhlIHByZXZpb3VzCiAgICAgICAgYWNjICAgICAgICAgICAgICAgICAgICAgICAgICA7IGFw cGxpY2F0aW9uLCBiZWdpbm5pbmcgd2l0aCBLTklMLgogICAgICAgIChscCAoY2RyIGxzKSAgICAg ICAgICAgICAgICAgOyBXaXRoIEtPTlMgYXMgQ09OUyBhbmQgS05JTCBhcyAnKCksCiAgICAgICAg ICAgIChrb25zIChjYXIgbHMpIGFjYykpKSkpICA7IGVxdWl2YWxlbnQgdG8gUkVWRVJTRS4KIgog ICAgKGZtdCAjZiAod2l0aC13aWR0aCA3NgogICAgICAgICAgICAgIChjb2x1bW5hcgogICAgICAg ICAgICAgICAocHJldHR5ICcoZGVmaW5lIChmb2xkIGtvbnMga25pbCBscykKICAgICAgICAgICAg ICAgICAgICAgICAgICAobGV0IGxwICgobHMgbHMpIChhY2Mga25pbCkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoaWYgKG51bGw/IGxzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFjYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChscCAoY2RyIGxzKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa29ucyAoY2FyIGxzKSBhY2MpKSkpKSkK ICAgICAgICAgICAgICAgIiA7ICIKICAgICAgICAgICAgICAgKHdyYXAtbGluZXMgIlRoZSBmdW5k YW1lbnRhbCBsaXN0IGl0ZXJhdG9yLiAgQXBwbGllcyBLT05TIHRvIGVhY2ggZWxlbWVudCBvZiBM UyBhbmQgdGhlIHJlc3VsdCBvZiB0aGUgcHJldmlvdXMgYXBwbGljYXRpb24sIGJlZ2lubmluZyB3 aXRoIEtOSUwuICBXaXRoIEtPTlMgYXMgQ09OUyBhbmQgS05JTCBhcyAnKCksIGVxdWl2YWxlbnQg dG8gUkVWRVJTRS4iKSkpKSkKCih0ZXN0LWVuZCkKCg== --bcaec53f8e6da1058a049e4f8f3a--