From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms11 with LMTPS id yPmBILcG417NIQAA0tVLHw (envelope-from ) for ; Fri, 12 Jun 2020 04:38:15 +0000 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0 with LMTPS id +HxuHLcG417kLgAA1q6Kng (envelope-from ) for ; Fri, 12 Jun 2020 04:38:15 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id C45AA940656 for ; Fri, 12 Jun 2020 04:38:14 +0000 (UTC) Received: from localhost ([::1]:45386 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jjbSG-0002Is-Nl for larch@yhetil.org; Fri, 12 Jun 2020 00:38:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44626) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jjbRu-0002Im-3U for Emacs-orgmode@gnu.org; Fri, 12 Jun 2020 00:37:50 -0400 Received: from mail-ed1-f48.google.com ([209.85.208.48]:40327) by eggs.gnu.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jjbRp-0003KL-J4 for Emacs-orgmode@gnu.org; Fri, 12 Jun 2020 00:37:49 -0400 Received: by mail-ed1-f48.google.com with SMTP id p18so5472552eds.7 for ; Thu, 11 Jun 2020 21:37:39 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=voOCx028cBFkU27pOWW96m/dEGrkVAGIZ17tJA1yB2k=; b=RbZuiAxsl1h4MQ/5P7gKj5bEdK6g+nnemr8uQWZA2ThgZ4D6Vnmqt6vw6/yc8ClyJl dTM/1VQ8TBg3s+Ewlh+r+BHwfxdQpDz5S1JV0UABNuSaFr34CSVnco7+m5/F5xl9Oiel pPsNBseOWj+p/9vXM5FhzAATos/IMiyoWZ2Yk2v9YvnjbVhjsM3NeArMAHBEHoR8+OV6 K84jk4rasNkeu17dpg/yfo1ydk0wh2m4aQUN6SOSBAWxJj8yYofK4yVvPEta9y2gbg32 Gu6pPFFavxRLNZQC8qZW1fbLpwAOa/YCgaoIG+XRJjlR2UXJPsFJ//Xh88IA95qUz/pV fE9g== X-Gm-Message-State: AOAM532vMX7I3Ww6B5MuMWHfuk54puX4qpteb20IFJWorFAr3QaWvYzL +3eBkK48OBieXA+I+ri2VWPJto1pXBodF7GRn/jhD3Ol X-Google-Smtp-Source: ABdhPJy/H9Z0MDUYK0FGV0b3TXpFE/MPiGdePzVhC9Hc6Bp2VJVV4Ao+d38fPe0YGfeQ9gKhuBKXl4qtLNBKv5W9N8Q= X-Received: by 2002:a50:a418:: with SMTP id u24mr10290414edb.141.1591936658650; Thu, 11 Jun 2020 21:37:38 -0700 (PDT) MIME-Version: 1.0 From: ian martins Date: Fri, 12 Jun 2020 00:37:27 -0400 Message-ID: Subject: org-babel support for haxe To: Emacs-orgmode@gnu.org Content-Type: multipart/mixed; boundary="0000000000000bcb1c05a7dba344" Received-SPF: pass client-ip=209.85.208.48; envelope-from=ianxm1@gmail.com; helo=mail-ed1-f48.google.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/06/12 00:37:39 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -5 X-Spam_score: -0.6 X-Spam_bar: / X-Spam_report: (-0.6 / 5.0 requ) BAYES_00=-1.9, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FORGED_FROMDOMAIN=1, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: "Emacs-orgmode" X-Scanner: scn0 Authentication-Results: aspmx1.migadu.com; dkim=none; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=jhu.edu (policy=none); spf=pass (aspmx1.migadu.com: domain of emacs-orgmode-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=emacs-orgmode-bounces@gnu.org X-Spam-Score: 1.69 X-TUID: H7bCA8ZgmD9r --0000000000000bcb1c05a7dba344 Content-Type: multipart/alternative; boundary="0000000000000bcb1a05a7dba342" --0000000000000bcb1a05a7dba342 Content-Type: text/plain; charset="UTF-8" Hello. The included patch adds org-babel support for haxe (https://haxe.org/). It allows main class and function definitions to be optional, accepts variables and supports babel functional mode. Please review. I believe the same approach should work for java also. If this is fine I could try to write an ob-java based on this to give java the same features listed above. One thing I would like to change is that this dumps the generated source files in the current directory instead of burying them in the babel temp dir (org-babel-temporary-directory). The same applies to the current ob-java implementation. In order to put the temp source files in the babel temp dir, there would have to be changes made in ob-core to allow creation and removal of directories in the babel temp dir. If that seems reasonable then I could try doing it, but let me know if there are reasons not to or complications that I haven't thought of. I've not done the FSF release. If this is acceptable I understand that I'll have to do that. -Ian --0000000000000bcb1a05a7dba342 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello. The included patch adds org-babel support for = haxe (https://haxe.org/). It allows main = class and function definitions to be optional, accepts variables and suppor= ts babel functional mode. Please review.

I bel= ieve the same approach should work for java also. If this is fine I could t= ry to write an ob-java based on this to give java the same features listed = above.

One thing I would like to change is tha= t this dumps the generated source files in the current directory instead of= burying them in the babel temp dir (org-babel-temporary-directory). The sa= me applies to the current ob-java implementation. In order to put the temp = source files in the babel temp dir, there would have to be changes made in = ob-core to allow creation and removal of directories in the babel temp dir.= If that seems reasonable then I could try doing it, but let me know if the= re are reasons not to or complications that I haven't thought of.

I've not done the FSF release. If this is accep= table I understand that I'll have to do that.

<= div>-Ian
--0000000000000bcb1a05a7dba342-- --0000000000000bcb1c05a7dba344 Content-Type: text/x-patch; charset="US-ASCII"; name="ob-haxe.patch" Content-Disposition: attachment; filename="ob-haxe.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kbbphnko0 ZGlmZiAtLWdpdCBhL2xpc3Avb2ItaGF4ZS5lbCBiL2xpc3Avb2ItaGF4ZS5lbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjViMGE0MmM3YQotLS0gL2Rldi9udWxsCisrKyBi L2xpc3Avb2ItaGF4ZS5lbApAQCAtMCwwICsxLDI2MCBAQAorOzs7IG9iLWhheGUuZWwgLS0tIG9y Zy1iYWJlbCBmdW5jdGlvbnMgZm9yIGhheGUgZXZhbHVhdGlvbgorCis7OyBDb3B5cmlnaHQgKEMp IDIwMjAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKzs7IEF1dGhvcjogSWFuIE1h cnRpbnMKKzs7IEtleXdvcmRzOiBsaXRlcmF0ZSBwcm9ncmFtbWluZywgcmVwcm9kdWNpYmxlIHJl c2VhcmNoCis7OyBIb21lcGFnZTogaHR0cDovL29yZ21vZGUub3JnCisKKzs7IFRoaXMgZmlsZSBp cyBub3QgcGFydCBvZiBHTlUgRW1hY3MuCisKKzs7IEdOVSBFbWFjcyBpcyBmcmVlIHNvZnR3YXJl OiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cis7OyBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor OzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKKzs7IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKzs7 IEdOVSBFbWFjcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKzs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKzs7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisKKzs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCis7OyBhbG9uZyB3aXRoIEdOVSBFbWFjcy4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworOzs7IENvbW1l bnRhcnk6CisKKzs7IE9yZy1CYWJlbCBzdXBwb3J0IGZvciBldmFsdWF0aW5nIGhheGUgc291cmNl IGNvZGUuCisKKzs7OyBDb2RlOgorKHJlcXVpcmUgJ29iKQorCisoZGVmdmFyIG9yZy1iYWJlbC10 YW5nbGUtbGFuZy1leHRzKQorKGFkZC10by1saXN0ICdvcmctYmFiZWwtdGFuZ2xlLWxhbmctZXh0 cyAnKCJoYXhlIiAuICJoeCIpKQorCisoZGVmdmFyIG9yZy1iYWJlbC1kZWZhdWx0LWhlYWRlci1h cmdzOmhheGUgJygpCisgICJEZWZhdWx0IGhlYWRlciBhcmdzIGZvciBoYXhlIHNvdXJjZSBibG9j a3MuIikKKworKGRlZmNvbnN0IG9yZy1iYWJlbC1oZWFkZXItYXJnczpoYXhlICcoKHRhcmdldCAu ICcoaW50ZXJwIG5la28gaGFzaGxpbmspKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGltcG9ydHMgLiA6YW55KSkKKyAgIkhheGUtc3BlY2lmaWMgaGVhZGVyIGFyZ3Vt ZW50cy4KK29yZy1iYWJlbCBzdXBwb3J0cyB0aHJlZSBvZiB0aGUgcGxhdGZvcm1zIHRoZSBoYXhl IGNvbXBpbGVyIGNhbiB0YXJnZXQuCisKKyAgYGludGVycCcgcnVucyB0aGUgaGF4ZSBjb21waWxl ciB3aXRoIHRoZSBgLS1pbnRlcnAnIG9wdGlvbi4KKyAgYG5la28nIGFuZCBgaGFzaGxpbmsnIGNv bXBpbGUgdG8gYnl0ZWNvZGUgYW5kIHJ1biB0aGUKKyAgcmVzcGVjdGl2ZSBWTXMuIikKKworKGRl ZnZhciBvcmctYmFiZWwtaGF4ZS1jb21tYW5kICJoYXhlIgorICAiTmFtZSBvZiB0aGUgaGF4ZSBj b21tYW5kLiIpCisKKyhkZWZjdXN0b20gb3JnLWJhYmVsLWhheGUtaGxpbmUtdG8gIm51bGwiCisg ICJSZXBsYWNlIGhsaW5lcyBpbiBpbmNvbWluZyB0YWJsZXMgd2l0aCB0aGlzIHdoZW4gdHJhbnNs YXRpbmcgdG8gaGF4ZS4iCisgIDpncm91cCAnb3JnLWJhYmVsCisgIDp2ZXJzaW9uICIyNS4yIgor ICA6cGFja2FnZS12ZXJzaW9uICcoT3JnIC4gIjkuMyIpCisgIDp0eXBlICdzdHJpbmcpCisKKyhk ZWZjdXN0b20gb3JnLWJhYmVsLWhheGUtbnVsbC10byAnaGxpbmUKKyAgIlJlcGxhY2UgYG51bGwn IGluIGhheGUgdGFibGVzIHdpdGggdGhpcyBiZWZvcmUgcmV0dXJuaW5nLiIKKyAgOmdyb3VwICdv cmctYmFiZWwKKyAgOnZlcnNpb24gIjI1LjIiCisgIDpwYWNrYWdlLXZlcnNpb24gJyhPcmcgLiAi OS4zIikKKyAgOnR5cGUgJ3N5bWJvbCkKKworKGRlZnVuIG9yZy1iYWJlbC1leGVjdXRlOmhheGUg KGJvZHkgcGFyYW1zKQorICAiRXhlY3V0ZSBhIGhheGUgc291cmNlIGJsb2NrIHdpdGggQk9EWSBj b2RlIGFuZCBQQVJBTVMgcGFyYW1zLiIKKyAgKGxldCogKChmdWxsY2xhc3NuYW1lIChvciAoY2Ry IChhc3NxIDpjbGFzc25hbWUgcGFyYW1zKSkgOyBjbGFzcyBhbmQgcGFja2FnZQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChvcmctYmFiZWwtaGF4ZS1maW5kLWNsYXNzbmFtZSBib2R5KQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNYWluIikpCisgICAgICAgICAoY2xhc3NuYW1l IChpZiAoc2VxLWNvbnRhaW5zIGZ1bGxjbGFzc25hbWUgPy4pICAgIDsganVzdCBjbGFzcyBuYW1l CisgICAgICAgICAgICAgICAgICAgICAgICAoZmlsZS1uYW1lLWV4dGVuc2lvbiBmdWxsY2xhc3Nu YW1lKQorICAgICAgICAgICAgICAgICAgICAgIGZ1bGxjbGFzc25hbWUpKQorICAgICAgICAgKHBh Y2thZ2VuYW1lIChpZiAoc2VxLWNvbnRhaW5zIGZ1bGxjbGFzc25hbWUgPy4pICA7IGp1c3QgcGFj a2FnZSBuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWxlLW5hbWUtYmFzZSBmdWxs Y2xhc3NuYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgIiIpKQorICAgICAgICAgKHBhY2th Z2VkaXIgKGlmIChub3QgKHNlcS1lbXB0eS1wIHBhY2thZ2VuYW1lKSkgICA7IHBhY2thZ2UgbmFt ZSBhcyBhIHBhdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAocmVwbGFjZS1yZWdleHAtaW4t c3RyaW5nICJcXFwuIiAiLyIgcGFja2FnZW5hbWUpKSkKKyAgICAgICAgIChzcmMtZmlsZSAoY29u Y2F0IChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcgIlxcXC4iICIvIiBmdWxsY2xhc3NuYW1lKSAi Lmh4IikpCisgICAgICAgICAoY21kbGluZSAob3IgKGNkciAoYXNzcSA6Y21kbGluZSBwYXJhbXMp KSAiIikpCisgICAgICAgICAodGFyZ2V0LW5hbWUgKGNkciAoYXNzcSA6dGFyZ2V0IHBhcmFtcykp KQorICAgICAgICAgKHRhcmdldCAoY29uZCAoKHN0cmluZz0gdGFyZ2V0LW5hbWUgIm5la28iKSAi LW5la28gbWFpbi5uIC1jbWQgXCJuZWtvIG1haW4ublwiIikKKyAgICAgICAgICAgICAgICAgICAg ICAgKChzdHJpbmc9IHRhcmdldC1uYW1lICJoYXNobGluayIpICItaGwgbWFpbi5obCAtY21kIFwi aGwgbWFpbi5obFwiIikKKyAgICAgICAgICAgICAgICAgICAgICAgKHQgIi0taW50ZXJwIikpKQor ICAgICAgICAgKGNtZCAoY29uY2F0IG9yZy1iYWJlbC1oYXhlLWNvbW1hbmQKKyAgICAgICAgICAg ICAgICAgICAgICAiICIgY21kbGluZSAiIC1tYWluICIgZnVsbGNsYXNzbmFtZSAiICIgdGFyZ2V0 KSkKKyAgICAgICAgIChyZXN1bHQtdHlwZSAoY2RyIChhc3NxIDpyZXN1bHQtdHlwZSBwYXJhbXMp KSkKKyAgICAgICAgIChyZXN1bHQtcGFyYW1zIChjZHIgKGFzc3EgOnJlc3VsdC1wYXJhbXMgcGFy YW1zKSkpCisgICAgICAgICAodG1wLWZpbGUgKGFuZCAoZXEgcmVzdWx0LXR5cGUgJ3ZhbHVlKQor ICAgICAgICAgICAgICAgICAgICAgICAgKG9yZy1iYWJlbC10ZW1wLWZpbGUgImhheGUtIikpKQor ICAgICAgICAgKGZ1bGwtYm9keSAob3JnLWJhYmVsLWV4cGFuZC1ib2R5OmhheGUKKyAgICAgICAg ICAgICAgICAgICAgIGJvZHkgcGFyYW1zIGNsYXNzbmFtZSBwYWNrYWdlbmFtZSByZXN1bHQtdHlw ZSB0bXAtZmlsZSkpKQorCisgICAgOzsgY3JlYXRlZCBwYWNrYWdlLW5hbWUgZGlyZWN0b3JpZXMg aWYgbWlzc2luZworICAgICh1bmxlc3MgKG9yIChub3QgcGFja2FnZWRpcikgKGZpbGUtZXhpc3Rz LXAgcGFja2FnZWRpcikpCisgICAgICAobWFrZS1kaXJlY3RvcnkgcGFja2FnZWRpciAncGFyZW50 cykpCisgICAgKHdpdGgtdGVtcC1maWxlIHNyYy1maWxlIChpbnNlcnQgZnVsbC1ib2R5KSkKKyAg ICAob3JnLWJhYmVsLXJlYXNzZW1ibGUtdGFibGUKKyAgICAgKG9yZy1iYWJlbC1oYXhlLWV2YWx1 YXRlIGNtZCB0YXJnZXQtbmFtZSByZXN1bHQtdHlwZSByZXN1bHQtcGFyYW1zIHRtcC1maWxlKQor ICAgICAob3JnLWJhYmVsLXBpY2stbmFtZQorICAgICAgKGNkciAoYXNzb2MgOmNvbG5hbWUtbmFt ZXMgcGFyYW1zKSkgKGNkciAoYXNzb2MgOmNvbG5hbWVzIHBhcmFtcykpKQorICAgICAob3JnLWJh YmVsLXBpY2stbmFtZQorICAgICAgKGNkciAoYXNzb2MgOnJvd25hbWUtbmFtZXMgcGFyYW1zKSkg KGNkciAoYXNzb2MgOnJvd25hbWVzIHBhcmFtcykpKSkpKQorCis7OyBoZWxwZXIgZnVuY3Rpb25z CisKKyhkZWZ1biBvcmctYmFiZWwtaGF4ZS1maW5kLWNsYXNzbmFtZSAoYm9keSkKKyAgIlRyeSB0 byBmaW5kIGZ1bGx5IHF1YWxpZmllZCBjbGFzc25hbWUgaW4gQk9EWS4iCisgIChsZXQgKChwYWNr YWdlIChpZiAoc3RyaW5nLW1hdGNoICJwYWNrYWdlIFxcXChbXiBdKlxcXCk7IiBib2R5KQorICAg ICAgICAgICAgICAgICAgICAgKG1hdGNoLXN0cmluZyAxIGJvZHkpKSkKKyAgICAgICAgKGNsYXNz IChpZiAoc3RyaW5nLW1hdGNoICJjbGFzcyBcXFwoW14gXG5dKlxcXCkiIGJvZHkpCisgICAgICAg ICAgICAgICAgICAgKG1hdGNoLXN0cmluZyAxIGJvZHkpKSkpCisgICAgKG9yIChhbmQgcGFja2Fn ZSBjbGFzcyAoY29uY2F0IHBhY2thZ2UgIi4iIGNsYXNzKSkKKyAgICAgICAgY2xhc3MpKSkKKwor KGRlZnVuIG9yZy1iYWJlbC1leHBhbmQtYm9keTpoYXhlIChib2R5IHBhcmFtcyBjbGFzc25hbWUg cGFja2FnZW5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1 bHQtdHlwZSB0bXAtZmlsZSkKKyAgIkV4cGFuZCBCT0RZIHdpdGggUEFSQU1TLgorQk9EWSBjb3Vs ZCBiZSBhIGZldyBzdGF0ZW1lbnRzLCBvciBjb3VsZCBpbmNsdWRlIGEgZnVsbCBjbGFzcworZGVm aW5pdGlvbiBzcGVjaWZ5aW5nIHBhY2thZ2UsIGltcG9ydHMsIGFuZCBjbGFzcy4gIEJlY2F1c2Ug d2UKK2FsbG93IHRoaXMgZmxleGliaWxpdHkgaW4gd2hhdCB0aGUgc291cmNlIGJsb2NrIGNhbiBj b250YWluLCBpdAoraXMgc2ltcGxlc3QgdG8gZXhwYW5kIHRoZSBjb2RlIGJsb2NrIGZyb20gdGhl IGluc2lkZSBvdXQuCisKK0NMQVNTTkFNRSBuYW1lIG9mIHRoZSBjbGFzcywgd2hpY2ggbWF5IGhh dmUgYmVlbiBzcGVjaWZpZWQKK2luIG11bHRpcGxlIHdheXMuCisKK1BBQ0tBR0VOQU1FIG5hbWUg b2YgdGhlIGphdmEgcGFja2FnZSBjb250YWluaW5nIHRoaXMgY2xhc3MuCisKK1JFU1VMVC1UWVBF IG91dHB1dCBvciB2YWx1ZS4KKworVE1QLUZJTEUgbmFtZSBvZiB0ZW1wZmlsZSB0byB3cml0ZSB0 byBpZiB2YWx1ZSBgcmVzdWx0LXR5cGUnLiIKKyAgKGxldCogKCh2YXItbGluZXMgKG9yZy1iYWJl bC12YXJpYWJsZS1hc3NpZ25tZW50czpoYXhlIHBhcmFtcykpCisgICAgICAgICAoaW1wb3J0cy12 YWwgKGFzc3EgOmltcG9ydHMgcGFyYW1zKSkKKyAgICAgICAgIChpbXBvcnRzIChpZiBpbXBvcnRz LXZhbAorICAgICAgICAgICAgICAgICAgICAgIChzcGxpdC1zdHJpbmcgKG9yZy1iYWJlbC1yZWFk IChjZHIgaW1wb3J0cy12YWwpIG5pbCkgIiAiKQorICAgICAgICAgICAgICAgICAgICBuaWwpKSkK KyAgICAod2l0aC10ZW1wLWJ1ZmZlcgorICAgICAgKGluc2VydCBib2R5KQorCisgICAgICA7OyB3 cmFwIG1haW4KKyAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCisgICAgICAod2hlbiAobm90 IChyZS1zZWFyY2gtZm9yd2FyZCAic3RhdGljIC4qZnVuY3Rpb24gbWFpblwoXCkiIG5pbCB0KSkK KyAgICAgICAgKHdoaWxlIChyZS1zZWFyY2gtZm9yd2FyZCAiXltbOnNwYWNlOl1dKmltcG9ydCAu KjskIiBuaWwgdCkgOyBpZiBpbXBvcnRzIGFyZSBkZWZpbmVkLCBtb3ZlIHBhc3QgdGhlbQorICAg ICAgICAgIChnb3RvLWNoYXIgKDErIChtYXRjaC1lbmQgMCkpKSkKKyAgICAgICAgKGluc2VydCAi cHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYWluKCkge1xuIikKKyAgICAgICAgKGdvdG8tY2hhciAo cG9pbnQtbWF4KSkKKyAgICAgICAgKGluc2VydCAiXG59IikpCisKKyAgICAgIDs7IGluc2VydCB2 YXJpYWJsZXMKKyAgICAgICh3aGVuIHZhci1saW5lcworICAgICAgICAoZ290by1jaGFyIChwb2lu dC1taW4pKQorICAgICAgICAoaWYgKHJlLXNlYXJjaC1mb3J3YXJkICJeW1s6c3BhY2U6XV0qY2xh c3MgLipcbj97W1s6c3BhY2U6XV0qJCIgbmlsIHQpCisgICAgICAgICAgICAoZ290by1jaGFyICgx KyAobWF0Y2gtZW5kIDApKSkpCisgICAgICAgIChpbnNlcnQgKG1hcGNvbmNhdCAnaWRlbnRpdHkg dmFyLWxpbmVzICJcbiIpKQorICAgICAgICAoaW5zZXJ0ICJcbiIpKQorCisgICAgICA7OyBzcGVj aWFsIGhhbmRsaW5nIHRvIHJldHVybiB2YWx1ZQorICAgICAgKHdoZW4gKGVxIHJlc3VsdC10eXBl ICd2YWx1ZSkKKyAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKKyAgICAgICAgKHJlLXNl YXJjaC1mb3J3YXJkICJeW1s6c3BhY2U6XV0qY2xhc3MgLipcbj97IiBuaWwgdCkKKyAgICAgICAg KGluc2VydCAiXG4iKQorICAgICAgICAoaW5zZXJ0ICIgICAgcHVibGljIHN0YXRpYyBmdW5jdGlv biBtYWluKCkge1xuIikKKyAgICAgICAgKGluc2VydCAoZm9ybWF0ICIgICAgICAgIHZhciBvdXRw dXQgPSBGaWxlLndyaXRlKFwiJXNcIik7XG4iIChvcmctYmFiZWwtcHJvY2Vzcy1maWxlLW5hbWUg dG1wLWZpbGUgJ25vcXVvdGUpKSkKKyAgICAgICAgKGluc2VydCAiICAgICAgICBvdXRwdXQud3Jp dGVTdHJpbmcoaGF4ZS5Kc29uLnN0cmluZ2lmeShfbWFpbigpKSk7XG4iKQorICAgICAgICAoaW5z ZXJ0ICIgICAgICAgIG91dHB1dC5jbG9zZSgpO1xuIikKKyAgICAgICAgKGluc2VydCAiICAgIH1c biIpCisgICAgICAgIChzZWFyY2gtZm9yd2FyZCAiZnVuY3Rpb24gbWFpbigpIikgOyByZW5hbWUg ZXhpc3RpbmcgbWFpbgorICAgICAgICAocmVwbGFjZS1tYXRjaCAiZnVuY3Rpb24gX21haW4oKSIp KQorCisgICAgICA7OyB3cmFwIGNsYXNzCisgICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQor ICAgICAgKHdoZW4gKG5vdCAocmUtc2VhcmNoLWZvcndhcmQgIl5bWzpzcGFjZTpdXSpjbGFzcyBb XiBdKiIgbmlsIHQpKQorICAgICAgICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkICJeW1s6c3Bh Y2U6XV0qaW1wb3J0IC4qOyQiIG5pbCB0KSA7IGlmIGltcG9ydHMgYXJlIGRlZmluZWQsIG1vdmUg cGFzdCB0aGVtCisgICAgICAgICAgKGdvdG8tY2hhciAoMSsgKG1hdGNoLWVuZCAwKSkpKQorICAg ICAgICAoaW5zZXJ0IChjb25jYXQgICJjbGFzcyAiIChmaWxlLW5hbWUtYmFzZSBjbGFzc25hbWUp ICIge1xuIikpCisgICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1heCkpCisgICAgICAgIChpbnNl cnQgIlxufSIpKQorCisgICAgICA7OyBhZGQgaW1wb3J0cworICAgICAgKGlmIChlcSByZXN1bHQt dHlwZSAndmFsdWUpCisgICAgICAgICAgKHNldHEgaW1wb3J0cyAoYXBwZW5kICcoInN5cy5pby5G aWxlIikgaW1wb3J0cykpKQorICAgICAgKHdoZW4gaW1wb3J0cworICAgICAgICAoaWYgKHJlLXNl YXJjaC1mb3J3YXJkICJeW1s6c3BhY2U6XV0qcGFja2FnZSAuKjskIiBuaWwgdCkgOyBpZiBwYWNr YWdlIGlzIGRlZmluZWQsIG1vdmUgcGFzdCBpdAorICAgICAgICAgICAgKGdvdG8tY2hhciAoMSsg KG1hdGNoLWVuZCAwKSkpKQorICAgICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQorICAgICAg ICAoaW5zZXJ0IChtYXBjb25jYXQgKGxhbWJkYSAoaWkpIChjb25jYXQgImltcG9ydCAiIGlpICI7 XG4iKSkgaW1wb3J0cyAiXG4iKSkpCisKKyAgICAgIDs7IGFkZCBwYWNrYWdlIGF0IHRoZSB0b3AK KyAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCisgICAgICAod2hlbiAobm90IChyZS1zZWFy Y2gtZm9yd2FyZCAiXltbOnNwYWNlOl1dKnBhY2thZ2UgLio7JCIgbmlsIHQpKQorICAgICAgICAo aW5zZXJ0IChjb25jYXQgInBhY2thZ2UgIiBwYWNrYWdlbmFtZSAiO1xuXG4iKSkpCisKKyAgICAg IChidWZmZXItc3RyaW5nKSkpKSA7IHJldHVybiBleHBhbmRlZCBib2R5CisKKyhkZWZ1biBvcmct YmFiZWwtdmFyaWFibGUtYXNzaWdubWVudHM6aGF4ZSAocGFyYW1zKQorICAiUmV0dXJuIGEgbGlz dCBvZiBoYXhlIHN0YXRlbWVudHMgYXNzaWduaW5nIHRoZSBibG9jaydzIHZhcmlhYmxlcy4KK3Zh cmlhYmxlcyBhcmUgY29udGFpbmVkIGluIFBBUkFNUy4iCisgIChtYXBjYXIKKyAgIChsYW1iZGEg KHBhaXIpCisgICAgIChmb3JtYXQgIiAgICBzdGF0aWMgdmFyICVzICVzID0gJXM7IgorICAgICAg ICAgICAgIChjYXIgcGFpcikKKyAgICAgICAgICAgICAoaWYgKGFuZCAoc2VxdWVuY2VwIChjZHIg cGFpcikpCisgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoc3RyaW5ncCAoY2RyIHBhaXIpKSkp ICI6QXJyYXk8RHluYW1pYz4gIiAiIikKKyAgICAgICAgICAgICAob3JnLWJhYmVsLWhheGUtdmFy LXRvLWhheGUgKGNkciBwYWlyKSkpKQorICAgKG9yZy1iYWJlbC0tZ2V0LXZhcnMgcGFyYW1zKSkp CisKKyhkZWZ1biBvcmctYmFiZWwtaGF4ZS12YXItdG8taGF4ZSAodmFyKQorICAiQ29udmVydCBh biBlbGlzcCB2YWx1ZSB0byBhIGhheGUgdmFyaWFibGUuCitDb252ZXJ0IGFuIGVsaXNwIHZhbHVl LCBWQVIsIGludG8gYSBzdHJpbmcgb2YgaGF4ZSBzb3VyY2UgY29kZQorc3BlY2lmeWluZyBhIHZh cmlhYmxlIG9mIHRoZSBzYW1lIHZhbHVlLiIKKyAgKGNvbmQgKChhbmQgKHNlcXVlbmNlcCB2YXIp CisgICAgICAgICAgICAgIChub3QgKHN0cmluZ3AgdmFyKSkpCisgICAgICAgICAoY29uY2F0ICJb IiAobWFwY29uY2F0ICMnb3JnLWJhYmVsLWhheGUtdmFyLXRvLWhheGUgdmFyICIsICIpICJdIikp CisgICAgICAgICgoZXF1YWwgdmFyICdobGluZSkKKyAgICAgICAgIG9yZy1iYWJlbC1oYXhlLWhs aW5lLXRvKQorICAgICAgICAodAorICAgICAgICAgKGZvcm1hdCAiJVMiIChpZiAoc3RyaW5ncCB2 YXIpIChzdWJzdHJpbmctbm8tcHJvcGVydGllcyB2YXIpIHZhcikpKSkpCisKKyhkZWZ1biBvcmct YmFiZWwtaGF4ZS10YWJsZS1vci1zdHJpbmcgKHJlc3VsdHMpCisgICJDb252ZXJ0IFJFU1VMVFMg aW50byBhbiBhcHByb3ByaWF0ZSBlbGlzcCB2YWx1ZS4KK0lmIHRoZSByZXN1bHRzIGxvb2sgbGlr ZSBhIGxpc3Qgb3IgdmVjdG9yLCB0aGVuIGNvbnZlcnQgdGhlbSBpbnRvIGFuCitFbWFjcy1saXNw IHRhYmxlLCBvdGhlcndpc2UgcmV0dXJuIHRoZSByZXN1bHRzIGFzIGEgc3RyaW5nLiIKKyAgKGxl dCAoKHJlcyAob3JnLWJhYmVsLXNjcmlwdC1lc2NhcGUgcmVzdWx0cykpKQorICAgIDs7IChtYXBj YXIgKGxhbWJkYSAoZWwpIChtZXNzYWdlICJlbCAlcyAlcyIgZWwgKGVxICdudWxsIGVsKSkpIHJl cykKKyAgICAoaWYgKGxpc3RwIHJlcykKKyAgICAgICAgKG1hcGNhciAobGFtYmRhIChlbCkgKGlm IChlcSAnbnVsbCBlbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmctYmFiZWwt aGF4ZS1udWxsLXRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsKSkKKyAgICAgICAg ICAgICAgcmVzKQorICAgICAgcmVzKSkpCisKKyhkZWZ1biBvcmctYmFiZWwtaGF4ZS1ldmFsdWF0 ZQorICAoY21kIHRhcmdldCByZXN1bHQtdHlwZSByZXN1bHQtcGFyYW1zIHRtcC1maWxlKQorICAi RXZhbHVhdGUgdXNpbmcgYW4gZXh0ZXJuYWwgaGF4ZSBwcm9jZXNzLgorQ01EIHRoZSBjb21tYW5k IHRvIGV4ZWN1dGUuCisKK1RBUkdFVCB0aGUgcGxhdGZvcm0gdGhlIGhheGUgY29tcGlsZXIgc2hv dWxkIHRhcmdldC4KKworSWYgUkVTVUxULVRZUEUgZXF1YWxzICdvdXRwdXQgdGhlbiByZXR1cm4g c3RhbmRhcmQgb3V0cHV0IGFzIGEKK3N0cmluZy4gIElmIFJFU1VMVC1UWVBFIGVxdWFscyAndmFs dWUgdGhlbiByZXR1cm4gdGhlIHZhbHVlCityZXR1cm5lZCBieSB0aGUgc291cmNlIGJsb2NrLCBh cyBlbGlzcC4KKworUkVTVUxULVBBUkFNUyBpbnB1dCBwYXJhbXMgdXNlZCB0byBmb3JtYXQgdGhl IHJlcG9uc2UuCisKK1RNUC1GSUxFIGZpbGVuYW1lIG9mIHRoZSB0ZW1wZmlsZSB0byBzdG9yZSB0 aGUgcmV0dXJuZWQgdmFsdWUgaW4KK2ZvciAndmFsdWUgUkVTVUxULVRZUEUuICBOb3QgdXNlZCBm b3IgJ291dHB1dCBSRVNVTFQtVFlQRS4iCisgIChsZXQgKChyYXcgKGNvbmQgKChlcSByZXN1bHQt dHlwZSAnb3V0cHV0KQorICAgICAgICAgICAgICAgICAgICAob3JnLWJhYmVsLWV2YWwgY21kICIi KSkKKyAgICAgICAgICAgICAgICAgICAodAorICAgICAgICAgICAgICAgICAgICAob3JnLWJhYmVs LWV2YWwgY21kICIiKQorICAgICAgICAgICAgICAgICAgICAob3JnLWJhYmVsLWV2YWwtcmVhZC1m aWxlIHRtcC1maWxlKSkpKSkKKyAgICAoaWYgKGFuZAorICAgICAgICAgKG9yIChzdHJpbmc9IHRh cmdldCAibmVrbyIpCisgICAgICAgICAgICAgKHN0cmluZz0gdGFyZ2V0ICJoYXNobGluayIpKQor ICAgICAgICAgKGVxIHJlc3VsdC10eXBlICdvdXRwdXQpKQorICAgICAgICAoc2V0cSByYXcgKHN1 YnN0cmluZyByYXcgMCAtMSkpKSA7IG5la28gYW5kIGhhc2hsaW5rIHJ1bnRpbWVzIGFkZCBhIHRy YWlsaW5nIGVuZGxpbmUKKyAgICAob3JnLWJhYmVsLXJlc3VsdC1jb25kIHJlc3VsdC1wYXJhbXMK KyAgICAgIHJhdworICAgICAgKG9yZy1iYWJlbC1oYXhlLXRhYmxlLW9yLXN0cmluZyByYXcpKSkp CisKKyhwcm92aWRlICdvYi1oYXhlKQorCis7Ozsgb2ItaGF4ZS5lbCBlbmRzIGhlcmUKZGlmZiAt LWdpdCBhL3Rlc3RpbmcvZXhhbXBsZXMvb2ItaGF4ZS10ZXN0Lm9yZyBiL3Rlc3RpbmcvZXhhbXBs ZXMvb2ItaGF4ZS10ZXN0Lm9yZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAu LmJhOTExOWQ1OAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RpbmcvZXhhbXBsZXMvb2ItaGF4ZS10 ZXN0Lm9yZwpAQCAtMCwwICsxLDI0NyBAQAorIytUaXRsZTogYSBjb2xsZWN0aW9uIG9mIGV4YW1w bGVzIGZvciBvYi1oYXhlIHRlc3RzCisjK09QVElPTlM6IF46bmlsCisqIFNpbXBsZQorICA6UFJP UEVSVElFUzoKKyAgOklEOiAgICAgICA5NjY4NzVlOS1kMTBlLTQwNmMtOTIxMS00NDk1NTVlM2Qz YjIKKyAgOkVORDoKKyMrbmFtZTogc2ltcGxlCisjK2JlZ2luX3NyYyBoYXhlIDpyZXN1bHRzIG91 dHB1dCBzaWxlbnQKKyAgU3lzLnByaW50KDQyKTsKKyMrZW5kX3NyYworCisjK25hbWU6IHNpbXBs ZV93aXRoX21haW4KKyMrYmVnaW5fc3JjIGhheGUgOnJlc3VsdHMgb3V0cHV0IHNpbGVudAorICBz dGF0aWMgZnVuY3Rpb24gbWFpbigpIHsKKyAgICAgIFN5cy5wcmludCg0Mik7CisgIH0KKyMrZW5k X3NyYworCisjK25hbWU6IHNpbXBsZV93aXRoX3B1YmxpY19tYWluX2ludGVycAorIytiZWdpbl9z cmMgaGF4ZSA6cmVzdWx0cyBvdXRwdXQgc2lsZW50CisgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24g bWFpbigpIHsKKyAgICAgIFN5cy5wcmludCg0Mik7CisgIH0KKyMrZW5kX3NyYworCisjK25hbWU6 IHNpbXBsZV93aXRoX3B1YmxpY19tYWluX25la28KKyMrYmVnaW5fc3JjIGhheGUgOnRhcmdldCBu ZWtvIDpyZXN1bHRzIG91dHB1dCBzaWxlbnQKKyAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYWlu KCkgeworICAgICAgU3lzLnByaW50KDQyKTsKKyAgfQorIytlbmRfc3JjCisKKyMrbmFtZTogc2lt cGxlX3dpdGhfcHVibGljX21haW5faGFzaGxpbmsKKyMrYmVnaW5fc3JjIGhheGUgOnRhcmdldCBo YXNobGluayA6cmVzdWx0cyBvdXRwdXQgc2lsZW50CisgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24g bWFpbigpIHsKKyAgICAgIFN5cy5wcmludCg0Mik7CisgIH0KKyMrZW5kX3NyYworCisjK25hbWU6 IHNpbXBsZV93aXRoX2NsYXNzCisjK2JlZ2luX3NyYyBoYXhlIDpyZXN1bHRzIG91dHB1dCBzaWxl bnQKKyAgY2xhc3MgU2ltcGxlIHsKKyAgICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWFpbigp IHsKKyAgICAgICAgICBTeXMucHJpbnQoNDIpOworICAgICAgfQorICB9CisjK2VuZF9zcmMKKwor IytuYW1lOiBzaW1wbGVfd2l0aF9jbGFzc19hbmRfcGFja2FnZQorIytiZWdpbl9zcmMgaGF4ZSA6 cmVzdWx0cyBvdXRwdXQgc2lsZW50CisgIHBhY2thZ2UgcGtnOworICBjbGFzcyBTaW1wbGUgewor ICAgICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYWluKCkgeworICAgICAgICAgIFN5cy5wcmlu dCg0Mik7CisgICAgICB9CisgIH0KKyMrZW5kX3NyYworCisjK25hbWU6IHNpbXBsZV93aXRoX2Ns YXNzX2F0dHIKKyMrYmVnaW5fc3JjIGhheGUgOnJlc3VsdHMgb3V0cHV0IHNpbGVudCA6Y2xhc3Nu YW1lIFNpbXBsZQorICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1haW4oKSB7CisgICAgICBTeXMu cHJpbnQoNDIpOworICB9CisjK2VuZF9zcmMKKworIytuYW1lOiBzaW1wbGVfd2l0aF9jbGFzc19h dHRyX3dpdGhfcGFja2FnZQorIytiZWdpbl9zcmMgaGF4ZSA6cmVzdWx0cyBvdXRwdXQgc2lsZW50 IDpjbGFzc25hbWUgcGtnLlNpbXBsZQorICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1haW4oKSB7 CisgICAgICBTeXMucHJpbnQoNDIpOworICB9CisjK2VuZF9zcmMKKworKiBWYXJpYWJsZXMKKyAg OlBST1BFUlRJRVM6CisgIDpJRDogICAgICAgZWNiZTg3NDAtZTI1NC00YzUzLTg0YjItMjFhNjFi ZjFhZmI0CisgIDpFTkQ6CisKKyMrbmFtZTogaW50ZWdlcl92YXIKKyMrYmVnaW5fc3JjIGhheGUg OnZhciBhPTQyIDpyZXN1bHRzIG91dHB1dCBzaWxlbnQKKyAgU3lzLnByaW50KGEpOworIytlbmRf c3JjCisKKyMrbmFtZTogdmFyX3dpdGhfbWFpbgorIytiZWdpbl9zcmMgaGF4ZSA6dmFyIGE9NDIg OnJlc3VsdHMgb3V0cHV0IHNpbGVudAorICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1haW4oKSB7 CisgICAgICBTeXMucHJpbnQoYSk7CisgIH0KKyMrZW5kX3NyYworCisjK25hbWU6IHZhcl93aXRo X2NsYXNzCisjK2JlZ2luX3NyYyBoYXhlIDp2YXIgYT00MiA6cmVzdWx0cyBvdXRwdXQgc2lsZW50 CisgIGNsYXNzIE1haW4geworICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWFpbigpIHsKKyAg ICAgICAgU3lzLnByaW50KGEpOworICAgIH0KKyAgfQorIytlbmRfc3JjCisKKyMrbmFtZTogdmFy X3dpdGhfY2xhc3NfYW5kX3BhY2thZ2UKKyMrYmVnaW5fc3JjIGhheGUgOnZhciBhPTQyIDpyZXN1 bHRzIG91dHB1dCBzaWxlbnQKKyAgcGFja2FnZSBwa2c7CisgIGNsYXNzIE1haW4geworICAgIHB1 YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWFpbigpIHsKKyAgICAgICAgU3lzLnByaW50KGEpOworICAg IH0KKyAgfQorIytlbmRfc3JjCisKKyMrbmFtZTogdmFyX3dpdGhfY2xhc3NfYW5kX2hhbmdpbmdf Y3VybGllcworIytiZWdpbl9zcmMgaGF4ZSA6dmFyIGE9NDIgOnJlc3VsdHMgb3V0cHV0IHNpbGVu dAorICBjbGFzcyBNYWluCisgIHsKKyAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1haW4oKQor ICAgIHsKKyAgICAgICAgU3lzLnByaW50KGEpOworICAgIH0KKyAgfQorIytlbmRfc3JjCisKKyMr bmFtZTogdHdvX3ZhcnMKKyMrYmVnaW5fc3JjIGhheGUgOnZhciBhPTIxIGI9MiA6cmVzdWx0cyBv dXRwdXQgc2lsZW50CisgIFN5cy5wcmludChhKmIpOworIytlbmRfc3JjCisKKyMrbmFtZTogc3Ry aW5nX3ZhcgorIytiZWdpbl9zcmMgaGF4ZSA6dmFyIGE9ImZvcnR5IHR3byIgOnJlc3VsdHMgb3V0 cHV0IHNpbGVudAorICBTeXMucHJpbnQoJyRhLCBsZW49JHthLmxlbmd0aH0nKTsKKyMrZW5kX3Ny YworCisjK25hbWU6IG11bGl0bGluZV9zdHJpbmdfdmFyCisjK2JlZ2luX3NyYyBoYXhlIDp2YXIg YT0iZm9ydHlcbnR3byIgOnJlc3VsdHMgb3V0cHV0IHNpbGVudAorICBTeXMucHJpbnQoJyRhLCBs ZW49JHthLmxlbmd0aH0nKTsKKyMrZW5kX3NyYworCisqIEFycmF5CisgIDpQUk9QRVJUSUVTOgor ICA6SUQ6ICAgICAgIDFlOTM4NjRkLTM4NWItNDkwMS05ZDEyLWI1NjZmZGI1YjgxMworICA6RU5E OgorCisjK25hbWU6IGhheGVfbGlzdAorLSBmb3J0eQorLSB0d28KKworIytuYW1lOiByZXR1cm5f dmVjdG9yCisjK2JlZ2luX3NyYyBoYXhlIDpyZXN1bHRzIHZlY3RvciBzaWxlbnQKKyAgcmV0dXJu IFtbNF0sIFsyXV07CisjK2VuZF9zcmMKKworIytuYW1lOiByZWFkX3JldHVybl9saXN0CisjK2Jl Z2luX3NyYyBoYXhlIDp2YXIgYT1oYXhlX2xpc3QgOnJlc3VsdHMgc2lsZW50CisgIHJldHVybiBb YVswXVswXSwgYVsxXVswXV07CisjK2VuZF9zcmMKKwordGhpcyBpcyBub3QgYW4gaW50ZXJlc3Rp bmcgdGVzdCwgYnV0IGl0IGRlbW9uc3RyYXRlcyBob3cgdG8gdXNlCit+OnJlc3VsdHMgb3V0cHV0 fiB0byB3cml0ZSBhIG5lYXRseSBmb3JtYXR0ZWQgbGlzdCBvZiBzdHJpbmdzIHdoaWNoCitjYW4g aW5jbHVkZSBzcGFjZXMuCisKKyMrbmFtZTogcmVhZF9vdXRwdXRfbGlzdAorIytiZWdpbl9zcmMg aGF4ZSA6dmFyIGE9aGF4ZV9saXN0IDpyZXN1bHRzIG91dHB1dCBsaXN0IHJhdyBzaWxlbnQKKyAg U3lzLnByaW50bG4oJ2ZvcnR5IHR3bycpOworICBTeXMucHJpbnRsbignZm9ydHkgdHdvJyk7Cisj K2VuZF9zcmMKKworKiBNYXRyaXgKKyAgOlBST1BFUlRJRVM6CisgIDpJRDogICAgICAgYTkzYmI5 MDYtZWVmOC00MDg5LWI0OTAtNjRmMjY2ZjU2OTZjCisgIDpFTkQ6CisjK25hbWU6IGhheGVfbWF0 cml4Cit8IDIgfCAxIHwKK3wgNCB8IDIgfAorCisjK25hbWU6IGxpc3RfdmFyCisjK2JlZ2luX3Ny YyBoYXhlIDp2YXIgYT0nKCJmb3J0eSIgInR3byIpIDpyZXN1bHRzIHNpbGVudAorICByZXR1cm4g W2FbMF0sIGFbMV1dOworIytlbmRfc3JjCisKKyMrbmFtZTogdmVjdG9yX3ZhcgorIytiZWdpbl9z cmMgaGF4ZSA6dmFyIGE9J1siZm9ydHkiICJ0d28iXSA6cmVzdWx0cyBzaWxlbnQKKyAgICByZXR1 cm4gW2FbMF0sIGFbMV1dOworIytlbmRfc3JjCisKKyMrbmFtZTogbWF0cml4X3ZhcgorIytiZWdp bl9zcmMgaGF4ZSA6dmFyIGE9aGF4ZV9tYXRyaXggOnJlc3VsdHMgc2lsZW50CisgIHJldHVybiBb W2FbMF1bMF0sIGFbMV1bMF1dLCAvLyB0cmFuc3Bvc2UKKyAgICAgICAgICBbYVswXVsxXSwgYVsx XVsxXV1dOworIytlbmRfc3JjCisKKyMrbmFtZTogbWF0cml4X3Zhcl93aXRoX2hlYWRlcgorIyti ZWdpbl9zcmMgaGF4ZSA6dmFyIGE9aGF4ZV9tYXRyaXggOnJlc3VsdHMgdmFsdWUgdGFibGUgc2ls ZW50CisgIHJldHVybiBbWyJjb2wxIiwiY29sMiJdLAorICAgICAgICAgIG51bGwsCisgICAgICAg ICAgW2FbMF1bMF0sIGFbMV1bMF1dLCAvLyB0cmFuc3Bvc2UKKyAgICAgICAgICBbYVswXVsxXSwg YVsxXVsxXV1dOworIytlbmRfc3JjCisKK3RoaXMgaXMgbm90IGFuIGludGVyZXN0aW5nIHRlc3Qs IGJ1dCBpdCBkZW1vbnN0cmF0ZXMgaG93IHRvIHVzZQorfjpyZXN1bHRzIG91dHB1dH4gdG8gd3Jp dGUgYSB0YWJsZSB3aXRoIGhlYWRlci4KKworIytuYW1lOiBvdXRwdXRfdGFibGVfd2l0aF9oZWFk ZXIKKyMrYmVnaW5fc3JjIGhheGUgOnZhciBhPWhheGVfbWF0cml4IDpyZXN1bHRzIG91dHB1dCBy YXcgdGFibGUgc2lsZW50CisgIFN5cy5wcmludGxuKCJ8Y29sMXxjb2wyfCIpOworICBTeXMucHJp bnRsbigifC0iKTsKKyAgZm9yIChpaSBpbiAwLi4uYS5sZW5ndGgpIHsKKyAgICAgIGZvciAoamog aW4gMC4uLmFbMF0ubGVuZ3RoKSB7CisgICAgICAgICAgU3lzLnByaW50KCd8JHthW2lpXVtqal19 Jyk7CisgICAgICB9CisgICAgICBTeXMucHJpbnRsbigiIik7CisgICB9CisjK2VuZF9zcmMKKwor KiBJbmhvbW9nZW5lb3VzIFRhYmxlCisgIDpQUk9QRVJUSUVTOgorICA6SUQ6ICAgICAgIDE5MmNi YjdkLTkwMzgtNDdjYS1iYWIzLWEwY2JmNDRiNDg3ZAorICA6RU5EOgorCisjK25hbWU6IGhheGVf dGFibGUKKyAgfCBzdHJpbmcgfCBudW1iZXIgfAorICB8LS0tLS0tLS0rLS0tLS0tLS18CisgIHwg Zm9ydHkgIHwgICAgICAyIHwKKyAgfCB0d28gICAgfCAgICAgIDEgfAorCisjK25hbWU6IGluaG9t b2dlbmVvdXNfdGFibGUKKyMrYmVnaW5fc3JjIGhheGUgOnZhciBhPWhheGVfdGFibGUgOnJlc3Vs dHMgc2lsZW50CisgIHJldHVybiBbW2FbMF1bMF0sIGFbMF1bMV0qMl0sCisgICAgICAgICAgW2Fb MV1bMF0sIGFbMV1bMV0qMl1dOworIytlbmRfc3JjCisKKyogTGlicmFyeQorICA6UFJPUEVSVElF UzoKKyAgOklEOiAgICAgICAwYjk0NWNkZS01NWExLTQ3MjMtOGQ3OC01ZjY5ZDk4ZDA5ZmEKKyAg OkVORDoKKworIytuYW1lOiBpbXBvcnRfbGlicmFyeQorIytiZWdpbl9zcmMgaGF4ZSA6cmVzdWx0 cyBvdXRwdXQgc2lsZW50IDppbXBvcnRzIGhheGUuY3J5cHRvLkJhc2U2NCBoYXhlLmlvLkJ5dGVz CisgIHZhciBlbmNvZGVkID0gQmFzZTY0LmVuY29kZShCeXRlcy5vZlN0cmluZygiNDIiKSk7Cisg IHZhciBkZWNvZGVkID0gQmFzZTY0LmRlY29kZShlbmNvZGVkKTsKKyAgU3lzLnByaW50KCdlbmNv ZGVkPSRlbmNvZGVkLCBkZWNvZGVkPSRkZWNvZGVkJyk7CisjK2VuZF9zcmMKKworIytuYW1lOiBp bXBvcnRfbGlicmFyeV9pbmxpbmUKKyMrYmVnaW5fc3JjIGhheGUgOnJlc3VsdHMgb3V0cHV0IHNp bGVudAorICBpbXBvcnQgaGF4ZS5jcnlwdG8uQmFzZTY0OworICBpbXBvcnQgaGF4ZS5pby5CeXRl czsKKyAgdmFyIGVuY29kZWQgPSBCYXNlNjQuZW5jb2RlKEJ5dGVzLm9mU3RyaW5nKCI0MiIpKTsK KyAgdmFyIGRlY29kZWQgPSBCYXNlNjQuZGVjb2RlKGVuY29kZWQpOworICBTeXMucHJpbnQoJ2Vu Y29kZWQ9JGVuY29kZWQsIGRlY29kZWQ9JGRlY29kZWQnKTsKKyMrZW5kX3NyYwpkaWZmIC0tZ2l0 IGEvdGVzdGluZy9saXNwL3Rlc3Qtb2ItaGF4ZS5lbCBiL3Rlc3RpbmcvbGlzcC90ZXN0LW9iLWhh eGUuZWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5iOGMzM2M0YjgKLS0t IC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL2xpc3AvdGVzdC1vYi1oYXhlLmVsCkBAIC0wLDAgKzEs MjM0IEBACis7OzsgdGVzdC1vYi1oYXhlLmVsIC0tLSB0ZXN0cyBmb3Igb2ItaGF4ZS5lbAorCis7 OyBDb3B5cmlnaHQgKGMpIDIwMjAgSWFuIE1hcnRpbnMKKzs7IEF1dGhvcnM6IElhbiBNYXJ0aW5z CisKKzs7IFRoaXMgZmlsZSBpcyBub3QgcGFydCBvZiBHTlUgRW1hY3MuCisKKzs7IFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5Cis7OyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorOzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKzs7IChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisKKzs7IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKzs7IE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKzs7IEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKzs7IFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCis7 OyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KKworOzs7IENvZGU6Cisob3JnLXRlc3QtZm9yLWV4ZWN1dGFibGUgImhh eGUiKQorKHVubGVzcyAoZmVhdHVyZXAgJ29iLWhheGUpCisgIChzaWduYWwgJ21pc3NpbmctdGVz dC1kZXBlbmRlbmN5ICJTdXBwb3J0IGZvciBoYXhlIGNvZGUgYmxvY2tzIikpCisKKyhlcnQtZGVm dGVzdCBvYi1oYXhlL3NpbXBsZSAoKQorICAiSGVsbG8gd29ybGQgcHJvZ3JhbS4iCisgIChpZiAo ZXhlY3V0YWJsZS1maW5kIG9yZy1iYWJlbC1oYXhlLWNvbW1hbmQpCisgICAgICAob3JnLXRlc3Qt YXQtaWQgIjk2Njg3NWU5LWQxMGUtNDA2Yy05MjExLTQ0OTU1NWUzZDNiMiIKKyAgICAgICAgICAg ICAgKG9yZy1iYWJlbC1uZXh0LXNyYy1ibG9jayAxKQorICAgICAgICAgICAgICAoc2hvdWxkIChz dHJpbmc9ICI0MiIgKG9yZy1iYWJlbC1leGVjdXRlLXNyYy1ibG9jaykpKSkpKQorCisoZXJ0LWRl ZnRlc3Qgb2ItaGF4ZS9zaW1wbGUtd2l0aC1tYWluICgpCisgICJIZWxsbyB3b3JsZCBwcm9ncmFt IHRoYXQgZGVmaW5lcyBhIG1haW4gZnVuY3Rpb24uIgorICAoaWYgKGV4ZWN1dGFibGUtZmluZCBv cmctYmFiZWwtaGF4ZS1jb21tYW5kKQorICAgICAgKG9yZy10ZXN0LWF0LWlkICI5NjY4NzVlOS1k MTBlLTQwNmMtOTIxMS00NDk1NTVlM2QzYjIiCisgICAgICAgICAgICAgIChvcmctYmFiZWwtbmV4 dC1zcmMtYmxvY2sgMikKKyAgICAgICAgICAgICAgKHNob3VsZCAoc3RyaW5nPSAiNDIiIChvcmct YmFiZWwtZXhlY3V0ZS1zcmMtYmxvY2spKSkpKSkKKworKGVydC1kZWZ0ZXN0IG9iLWhheGUvc2lt cGxlLXdpdGgtcHVibGljLW1haW4taW50ZXJwICgpCisgICJIZWxsbyB3b3JsZCBwcm9ncmFtIHRo YXQgZGVmaW5lcyBhIHB1YmxpYyBtYWluIGZ1bmN0aW9uIHRhcmdldGluZyBpbnRlcnAuIgorICAo aWYgKGV4ZWN1dGFibGUtZmluZCBvcmctYmFiZWwtaGF4ZS1jb21tYW5kKQorICAgICAgKG9yZy10 ZXN0LWF0LWlkICI5NjY4NzVlOS1kMTBlLTQwNmMtOTIxMS00NDk1NTVlM2QzYjIiCisgICAgICAg ICAgICAgIChvcmctYmFiZWwtbmV4dC1zcmMtYmxvY2sgMykKKyAgICAgICAgICAgICAgKHNob3Vs ZCAoc3RyaW5nPSAiNDIiIChvcmctYmFiZWwtZXhlY3V0ZS1zcmMtYmxvY2spKSkpKSkKKworKGVy dC1kZWZ0ZXN0IG9iLWhheGUvc2ltcGxlLXdpdGgtcHVibGljLW1haW4tbmVrbyAoKQorICAiSGVs bG8gd29ybGQgcHJvZ3JhbSB0aGF0IGRlZmluZXMgYSBwdWJsaWMgbWFpbiBmdW5jdGlvbiB0YXJn ZXRpbmcgbmVrby4iCisgIChpZiAoZXhlY3V0YWJsZS1maW5kIG9yZy1iYWJlbC1oYXhlLWNvbW1h bmQpCisgICAgICAob3JnLXRlc3QtYXQtaWQgIjk2Njg3NWU5LWQxMGUtNDA2Yy05MjExLTQ0OTU1 NWUzZDNiMiIKKyAgICAgICAgICAgICAgKG9yZy1iYWJlbC1uZXh0LXNyYy1ibG9jayA0KQorICAg ICAgICAgICAgICAoc2hvdWxkIChzdHJpbmc9ICI0MiIgKG9yZy1iYWJlbC1leGVjdXRlLXNyYy1i bG9jaykpKSkpKQorCisoZXJ0LWRlZnRlc3Qgb2ItaGF4ZS9zaW1wbGUtd2l0aC1wdWJsaWMtbWFp bi1oYXNobGluayAoKQorICAiSGVsbG8gd29ybGQgcHJvZ3JhbSB0aGF0IGRlZmluZXMgYSBwdWJs aWMgbWFpbiBmdW5jdGlvbiB0YXJnZXRpbmcgaGFzaGxpbmsuIgorICAoaWYgKGV4ZWN1dGFibGUt ZmluZCBvcmctYmFiZWwtaGF4ZS1jb21tYW5kKQorICAgICAgKG9yZy10ZXN0LWF0LWlkICI5NjY4 NzVlOS1kMTBlLTQwNmMtOTIxMS00NDk1NTVlM2QzYjIiCisgICAgICAgICAgICAgIChvcmctYmFi ZWwtbmV4dC1zcmMtYmxvY2sgNSkKKyAgICAgICAgICAgICAgKHNob3VsZCAoc3RyaW5nPSAiNDIi IChvcmctYmFiZWwtZXhlY3V0ZS1zcmMtYmxvY2spKSkpKSkKKworKGVydC1kZWZ0ZXN0IG9iLWhh eGUvc2ltcGxlLXdpdGgtY2xhc3MgKCkKKyAgIkhlbGxvIHdvcmxkIHByb2dyYW0gdGhhdCBkZWZp bmVzIGEgY2xhc3MuIgorICAoaWYgKGV4ZWN1dGFibGUtZmluZCBvcmctYmFiZWwtaGF4ZS1jb21t YW5kKQorICAgICAgKG9yZy10ZXN0LWF0LWlkICI5NjY4NzVlOS1kMTBlLTQwNmMtOTIxMS00NDk1 NTVlM2QzYjIiCisgICAgICAgICAgICAgIChvcmctYmFiZWwtbmV4dC1zcmMtYmxvY2sgNikKKyAg ICAgICAgICAgICAgKHNob3VsZCAoc3RyaW5nPSAiNDIiIChvcmctYmFiZWwtZXhlY3V0ZS1zcmMt YmxvY2spKSkpKSkKKworKGVydC1kZWZ0ZXN0IG9iLWhheGUvc2ltcGxlLXdpdGgtY2xhc3MtYW5k LXBhY2thZ2UgKCkKKyAgIkhlbGxvIHdvcmxkIHByb2dyYW0gdGhhdCBkZWZpbmVzIGEgY2xhc3Mg YW5kIHBhY2thZ2UuIgorICAoaWYgKGV4ZWN1dGFibGUtZmluZCBvcmctYmFiZWwtaGF4ZS1jb21t YW5kKQorICAgICAgKG9yZy10ZXN0LWF0LWlkICI5NjY4NzVlOS1kMTBlLTQwNmMtOTIxMS00NDk1 NTVlM2QzYjIiCisgICAgICAgICAgICAgIChvcmctYmFiZWwtbmV4dC1zcmMtYmxvY2sgNykKKyAg ICAgICAgICAgICAgKHNob3VsZCAoc3RyaW5nPSAiNDIiIChvcmctYmFiZWwtZXhlY3V0ZS1zcmMt YmxvY2spKSkpKSkKKworKGVydC1kZWZ0ZXN0IG9iLWhheGUvc2ltcGxlLXdpdGgtY2xhc3MtYXR0 ciAoKQorICAiSGVsbG8gd29ybGQgcHJvZ3JhbSB3aXRoIGNsYXNzIGhlYWRlciBhdHRyaWJ1dGUu IgorICAoaWYgKGV4ZWN1dGFibGUtZmluZCBvcmctYmFiZWwtaGF4ZS1jb21tYW5kKQorICAgICAg KG9yZy10ZXN0LWF0LWlkICI5NjY4NzVlOS1kMTBlLTQwNmMtOTIxMS00NDk1NTVlM2QzYjIiCisg ICAgICAgICAgICAgIChvcmctYmFiZWwtbmV4dC1zcmMtYmxvY2sgOCkKKyAgICAgICAgICAgICAg KHNob3VsZCAoc3RyaW5nPSAiNDIiIChvcmctYmFiZWwtZXhlY3V0ZS1zcmMtYmxvY2spKSkpKSkK KworKGVydC1kZWZ0ZXN0IG9iLWhheGUvc2ltcGxlLXdpdGgtY2xhc3MtYXR0ci13aXRoLXBhY2th Z2UgKCkKKyAgIkhlbGxvIHdvcmxkIHByb2dyYW0gd2l0aCBjbGFzcyBhdHRyIHdpdGggcGFja2Fn ZS4iCisgIChpZiAoZXhlY3V0YWJsZS1maW5kIG9yZy1iYWJlbC1oYXhlLWNvbW1hbmQpCisgICAg ICAob3JnLXRlc3QtYXQtaWQgIjk2Njg3NWU5LWQxMGUtNDA2Yy05MjExLTQ0OTU1NWUzZDNiMiIK KyAgICAgICAgICAgICAgKG9yZy1iYWJlbC1uZXh0LXNyYy1ibG9jayA5KQorICAgICAgICAgICAg ICAoc2hvdWxkIChzdHJpbmc9ICI0MiIgKG9yZy1iYWJlbC1leGVjdXRlLXNyYy1ibG9jaykpKSkp KQorCisKKyhlcnQtZGVmdGVzdCBvYi1oYXhlL2ludGVnZXItdmFyICgpCisgICJSZWFkIGFuZCB3 cml0ZSBhbiBpbnRlZ2VyIHZhcmlhYmxlLiIKKyAgKGlmIChleGVjdXRhYmxlLWZpbmQgb3JnLWJh YmVsLWhheGUtY29tbWFuZCkKKyAgICAgIChvcmctdGVzdC1hdC1pZCAiZWNiZTg3NDAtZTI1NC00 YzUzLTg0YjItMjFhNjFiZjFhZmI0IgorICAgICAgICAgICAgICAob3JnLWJhYmVsLW5leHQtc3Jj LWJsb2NrIDEpCisgICAgICAgICAgICAgIChzaG91bGQgKHN0cmluZz0gIjQyIiAob3JnLWJhYmVs LWV4ZWN1dGUtc3JjLWJsb2NrKSkpKSkpCisKKyhlcnQtZGVmdGVzdCBvYi1oYXhlL3Zhci13aXRo LW1haW4gKCkKKyAgIlJlYWQgYW5kIHdyaXRlIGFuIGludGVnZXIgdmFyaWFibGUsIHdpdGggbWFp biBmdW5jdGlvbiBwcm92aWRlZC4iCisgIChpZiAoZXhlY3V0YWJsZS1maW5kIG9yZy1iYWJlbC1o YXhlLWNvbW1hbmQpCisgICAgICAob3JnLXRlc3QtYXQtaWQgImVjYmU4NzQwLWUyNTQtNGM1My04 NGIyLTIxYTYxYmYxYWZiNCIKKyAgICAgICAgICAgICAgKG9yZy1iYWJlbC1uZXh0LXNyYy1ibG9j ayAyKQorICAgICAgICAgICAgICAoc2hvdWxkIChzdHJpbmc9ICI0MiIgKG9yZy1iYWJlbC1leGVj dXRlLXNyYy1ibG9jaykpKSkpKQorCisoZXJ0LWRlZnRlc3Qgb2ItaGF4ZS92YXItd2l0aC1jbGFz cyAoKQorICAiUmVhZCBhbmQgd3JpdGUgYW4gaW50ZWdlciB2YXJpYWJsZSwgd2l0aCBjbGFzcyBw cm92aWRlZC4iCisgIChpZiAoZXhlY3V0YWJsZS1maW5kIG9yZy1iYWJlbC1oYXhlLWNvbW1hbmQp CisgICAgICAob3JnLXRlc3QtYXQtaWQgImVjYmU4NzQwLWUyNTQtNGM1My04NGIyLTIxYTYxYmYx YWZiNCIKKyAgICAgICAgICAgICAgKG9yZy1iYWJlbC1uZXh0LXNyYy1ibG9jayAzKQorICAgICAg ICAgICAgICAoc2hvdWxkIChzdHJpbmc9ICI0MiIgKG9yZy1iYWJlbC1leGVjdXRlLXNyYy1ibG9j aykpKSkpKQorCisoZXJ0LWRlZnRlc3Qgb2ItaGF4ZS92YXItd2l0aC1jbGFzcy1hbmQtcGFja2Fn ZSAoKQorICAiUmVhZCBhbmQgd3JpdGUgYW4gaW50ZWdlciB2YXJpYWJsZSwgd2l0aCBjbGFzcyBh bmQgcGFja2FnZSBwcm92aWRlZC4iCisgIChpZiAoZXhlY3V0YWJsZS1maW5kIG9yZy1iYWJlbC1o YXhlLWNvbW1hbmQpCisgICAgICAob3JnLXRlc3QtYXQtaWQgImVjYmU4NzQwLWUyNTQtNGM1My04 NGIyLTIxYTYxYmYxYWZiNCIKKyAgICAgICAgICAgICAgKG9yZy1iYWJlbC1uZXh0LXNyYy1ibG9j ayA0KQorICAgICAgICAgICAgICAoc2hvdWxkIChzdHJpbmc9ICI0MiIgKG9yZy1iYWJlbC1leGVj dXRlLXNyYy1ibG9jaykpKSkpKQorCisoZXJ0LWRlZnRlc3Qgb2ItaGF4ZS92YXItd2l0aC1jbGFz cy1hbmQtaGFuZ2luZy1jdXJsaWVzICgpCisgICJSZWFkIGFuZCB3cml0ZSBhbiBpbnRlZ2VyIHZh cmlhYmxlLCB3aXRoIGNsYXNzIHdpdGggaGFuZ2luZyBjdXJsaWVzLiIKKyAgKGlmIChleGVjdXRh YmxlLWZpbmQgb3JnLWJhYmVsLWhheGUtY29tbWFuZCkKKyAgICAgIChvcmctdGVzdC1hdC1pZCAi ZWNiZTg3NDAtZTI1NC00YzUzLTg0YjItMjFhNjFiZjFhZmI0IgorICAgICAgICAgICAgICAob3Jn LWJhYmVsLW5leHQtc3JjLWJsb2NrIDUpCisgICAgICAgICAgICAgIChzaG91bGQgKHN0cmluZz0g IjQyIiAob3JnLWJhYmVsLWV4ZWN1dGUtc3JjLWJsb2NrKSkpKSkpCisKKyhlcnQtZGVmdGVzdCBv Yi1oYXhlL3R3by12YXJzICgpCisgICJSZWFkIHR3byBpbnRlZ2VyIHZhcmlhYmxlcywgY29tYmlu ZSBhbmQgd3JpdGUgdGhlbS4iCisgIChpZiAoZXhlY3V0YWJsZS1maW5kIG9yZy1iYWJlbC1oYXhl LWNvbW1hbmQpCisgICAgICAob3JnLXRlc3QtYXQtaWQgImVjYmU4NzQwLWUyNTQtNGM1My04NGIy LTIxYTYxYmYxYWZiNCIKKyAgICAgICAgICAgICAgKG9yZy1iYWJlbC1uZXh0LXNyYy1ibG9jayA2 KQorICAgICAgICAgICAgICAoc2hvdWxkIChzdHJpbmc9ICI0MiIgKG9yZy1iYWJlbC1leGVjdXRl LXNyYy1ibG9jaykpKSkpKQorCisoZXJ0LWRlZnRlc3Qgb2ItaGF4ZS9zdHJpbmctdmFyICgpCisg ICJSZWFkIGFuZCB3cml0ZSBhIHN0cmluZyB2YXJpYWJsZS4iCisgIChpZiAoZXhlY3V0YWJsZS1m aW5kIG9yZy1iYWJlbC1oYXhlLWNvbW1hbmQpCisgICAgICAob3JnLXRlc3QtYXQtaWQgImVjYmU4 NzQwLWUyNTQtNGM1My04NGIyLTIxYTYxYmYxYWZiNCIKKyAgICAgICAgICAgICAgKG9yZy1iYWJl bC1uZXh0LXNyYy1ibG9jayA3KQorICAgICAgICAgICAgICAoc2hvdWxkIChzdHJpbmc9ICJmb3J0 eSB0d28sIGxlbj05IiAob3JnLWJhYmVsLWV4ZWN1dGUtc3JjLWJsb2NrKSkpKSkpCisKKyhlcnQt ZGVmdGVzdCBvYi1oYXhlL211bHRpbGluZS1zdHJpbmctdmFyICgpCisgICJSZWFkIGFuZCB3cml0 ZSBhIG11bHRpLWxpbmUgc3RyaW5nIHZhcmlhYmxlLiIKKyAgKGlmIChleGVjdXRhYmxlLWZpbmQg b3JnLWJhYmVsLWhheGUtY29tbWFuZCkKKyAgICAgIChvcmctdGVzdC1hdC1pZCAiZWNiZTg3NDAt ZTI1NC00YzUzLTg0YjItMjFhNjFiZjFhZmI0IgorICAgICAgICAgICAgICAob3JnLWJhYmVsLW5l eHQtc3JjLWJsb2NrIDgpCisgICAgICAgICAgICAgIChzaG91bGQgKHN0cmluZz0gImZvcnR5XG50 d28sIGxlbj05IiAob3JnLWJhYmVsLWV4ZWN1dGUtc3JjLWJsb2NrKSkpKSkpCisKKworKGVydC1k ZWZ0ZXN0IG9iLWhheGUvcmV0dXJuLXZlY3RvciAoKQorICAiUmV0dXJuIGEgdmVjdG9yLiIKKyAg KGlmIChleGVjdXRhYmxlLWZpbmQgb3JnLWJhYmVsLWhheGUtY29tbWFuZCkKKyAgICAgIChvcmct dGVzdC1hdC1pZCAiMWU5Mzg2NGQtMzg1Yi00OTAxLTlkMTItYjU2NmZkYjViODEzIgorICAgICAg ICAgICAgICAob3JnLWJhYmVsLW5leHQtc3JjLWJsb2NrIDEpCisgICAgICAgICAgICAgIChzaG91 bGQgKGVxdWFsICcoKDQpICgyKSkgKG9yZy1iYWJlbC1leGVjdXRlLXNyYy1ibG9jaykpKSkpKQor CisoZXJ0LWRlZnRlc3Qgb2ItaGF4ZS9yZWFkLXJldHVybi1saXN0ICgpCisgICJSZXR1cm4gYSB2 ZWN0b3IuIgorICAoaWYgKGV4ZWN1dGFibGUtZmluZCBvcmctYmFiZWwtaGF4ZS1jb21tYW5kKQor ICAgICAgKG9yZy10ZXN0LWF0LWlkICIxZTkzODY0ZC0zODViLTQ5MDEtOWQxMi1iNTY2ZmRiNWI4 MTMiCisgICAgICAgICAgICAgIChvcmctYmFiZWwtbmV4dC1zcmMtYmxvY2sgMikKKyAgICAgICAg ICAgICAgKHNob3VsZCAoZXF1YWwgJygiZm9ydHkiICJ0d28iKSAob3JnLWJhYmVsLWV4ZWN1dGUt c3JjLWJsb2NrKSkpKSkpCisKKyhlcnQtZGVmdGVzdCBvYi1oYXhlL3JlYWQtb3V0cHV0LWxpc3Qg KCkKKyAgIlJldHVybiBhIHZlY3Rvci4iCisgIChpZiAoZXhlY3V0YWJsZS1maW5kIG9yZy1iYWJl bC1oYXhlLWNvbW1hbmQpCisgICAgICAob3JnLXRlc3QtYXQtaWQgIjFlOTM4NjRkLTM4NWItNDkw MS05ZDEyLWI1NjZmZGI1YjgxMyIKKyAgICAgICAgICAgICAgKG9yZy1iYWJlbC1uZXh0LXNyYy1i bG9jayAzKQorICAgICAgICAgICAgICAoc2hvdWxkIChlcXVhbCAiZm9ydHkgdHdvXG5mb3J0eSB0 d29cbiIgKG9yZy1iYWJlbC1leGVjdXRlLXNyYy1ibG9jaykpKSkpKQorCisKKyhlcnQtZGVmdGVz dCBvYi1oYXhlL2xpc3QtdmFyICgpCisgICJSZWFkIGFuZCB3cml0ZSBhIGxpc3QgdmFyaWFibGUu IgorICAoaWYgKGV4ZWN1dGFibGUtZmluZCBvcmctYmFiZWwtaGF4ZS1jb21tYW5kKQorICAgICAg KG9yZy10ZXN0LWF0LWlkICJhOTNiYjkwNi1lZWY4LTQwODktYjQ5MC02NGYyNjZmNTY5NmMiCisg ICAgICAgICAgICAgIChvcmctYmFiZWwtbmV4dC1zcmMtYmxvY2sgMSkKKyAgICAgICAgICAgICAg KHNob3VsZCAoZXF1YWwgJygiZm9ydHkiICJ0d28iKSAob3JnLWJhYmVsLWV4ZWN1dGUtc3JjLWJs b2NrKSkpKSkpCisKKyhlcnQtZGVmdGVzdCBvYi1oYXhlL3ZlY3Rvci12YXIgKCkKKyAgIlJlYWQg YW5kIHdyaXRlIGEgdmVjdG9yIHZhcmlhYmxlLiIKKyAgKGlmIChleGVjdXRhYmxlLWZpbmQgb3Jn LWJhYmVsLWhheGUtY29tbWFuZCkKKyAgICAgIChvcmctdGVzdC1hdC1pZCAiYTkzYmI5MDYtZWVm OC00MDg5LWI0OTAtNjRmMjY2ZjU2OTZjIgorICAgICAgICAgICAgICAob3JnLWJhYmVsLW5leHQt c3JjLWJsb2NrIDIpCisgICAgICAgICAgICAgIChzaG91bGQgKGVxdWFsICcoImZvcnR5IiAidHdv IikgKG9yZy1iYWJlbC1leGVjdXRlLXNyYy1ibG9jaykpKSkpKQorCisoZXJ0LWRlZnRlc3Qgb2It aGF4ZS9tYXRyaXgtdmFyICgpCisgICJSZWFkIGFuZCB3cml0ZSBtYXRyaXggdmFyaWFibGUuIgor ICAoaWYgKGV4ZWN1dGFibGUtZmluZCBvcmctYmFiZWwtaGF4ZS1jb21tYW5kKQorICAgICAgKG9y Zy10ZXN0LWF0LWlkICJhOTNiYjkwNi1lZWY4LTQwODktYjQ5MC02NGYyNjZmNTY5NmMiCisgICAg ICAgICAgICAgIChvcmctYmFiZWwtbmV4dC1zcmMtYmxvY2sgMykKKyAgICAgICAgICAgICAgKHNo b3VsZCAoZXF1YWwgJygoMiA0KSAoMSAyKSkgKG9yZy1iYWJlbC1leGVjdXRlLXNyYy1ibG9jaykp KSkpKQorCisoZXJ0LWRlZnRlc3Qgb2ItaGF4ZS9tYXRyaXgtdmFyLXdpdGgtaGVhZGVyICgpCisg ICJSZWFkIG1hdHJpeCB2YXJpYWJsZSBhbmQgd3JpdGUgaXQgd2l0aCBoZWFkZXIuIgorICAoaWYg KGV4ZWN1dGFibGUtZmluZCBvcmctYmFiZWwtaGF4ZS1jb21tYW5kKQorICAgICAgKG9yZy10ZXN0 LWF0LWlkICJhOTNiYjkwNi1lZWY4LTQwODktYjQ5MC02NGYyNjZmNTY5NmMiCisgICAgICAgICAg ICAgIChvcmctYmFiZWwtbmV4dC1zcmMtYmxvY2sgNCkKKyAgICAgICAgICAgICAgKHNob3VsZCAo ZXF1YWwgJygoImNvbDEiICJjb2wyIikgaGxpbmUgKDIgNCkgKDEgMikpIChvcmctYmFiZWwtZXhl Y3V0ZS1zcmMtYmxvY2spKSkpKSkKKworKGVydC1kZWZ0ZXN0IG9iLWhheGUvb3V0cHV0LXRhYmxl LXdpdGgtaGVhZGVyICgpCisgICJXcml0ZSBhIHRhYmxlIHRoYXQgaW5jbHVkZXMgYSBoZWFkZXIu IgorICAoaWYgKGV4ZWN1dGFibGUtZmluZCBvcmctYmFiZWwtaGF4ZS1jb21tYW5kKQorICAgICAg KG9yZy10ZXN0LWF0LWlkICJhOTNiYjkwNi1lZWY4LTQwODktYjQ5MC02NGYyNjZmNTY5NmMiCisg ICAgICAgICAgICAgIChvcmctYmFiZWwtbmV4dC1zcmMtYmxvY2sgNSkKKyAgICAgICAgICAgICAg KHNob3VsZCAoZXF1YWwgInxjb2wxfGNvbDJ8XG58LVxufDJ8MVxufDR8MlxuIiAob3JnLWJhYmVs LWV4ZWN1dGUtc3JjLWJsb2NrKSkpKSkpCisKKworKGVydC1kZWZ0ZXN0IG9iLWhheGUvaW5ob21v Z2VuZW91c190YWJsZSAoKQorICAiUmVhZCBhbmQgd3JpdGUgYW4gaW5ob21vZ2VuZW91cyB0YWJs ZS4iCisgIChpZiAoZXhlY3V0YWJsZS1maW5kIG9yZy1iYWJlbC1oYXhlLWNvbW1hbmQpCisgICAg ICAob3JnLXRlc3QtYXQtaWQgIjE5MmNiYjdkLTkwMzgtNDdjYS1iYWIzLWEwY2JmNDRiNDg3ZCIK KyAgICAgICAgICAgICAgKG9yZy1iYWJlbC1uZXh0LXNyYy1ibG9jayAxKQorICAgICAgICAgICAg ICAoc2hvdWxkIChlcXVhbAorICAgICAgICAgICAgICAgICAgICAgICAnKCgiZm9ydHkiIDQpICgi dHdvIiAyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKG9yZy1iYWJlbC1leGVjdXRlLXNyYy1i bG9jaykpKSkpKQorCisKKyhlcnQtZGVmdGVzdCBvYi1oYXhlL2ltcG9ydF9saWJyYXJ5ICgpCisg ICJJbXBvcnQgYSBzdGFuZGFyZCBoYXhlIGxpYnJhcnkuIgorICAoaWYgKGV4ZWN1dGFibGUtZmlu ZCBvcmctYmFiZWwtaGF4ZS1jb21tYW5kKQorICAgICAgKG9yZy10ZXN0LWF0LWlkICIwYjk0NWNk ZS01NWExLTQ3MjMtOGQ3OC01ZjY5ZDk4ZDA5ZmEiCisgICAgICAgICAgICAgIChvcmctYmFiZWwt bmV4dC1zcmMtYmxvY2sgMSkKKyAgICAgICAgICAgICAgKHNob3VsZCAoc3RyaW5nPQorICAgICAg ICAgICAgICAgICAgICAgICAiZW5jb2RlZD1OREk9LCBkZWNvZGVkPTQyIgorICAgICAgICAgICAg ICAgICAgICAgICAob3JnLWJhYmVsLWV4ZWN1dGUtc3JjLWJsb2NrKSkpKSkpCisKKyhlcnQtZGVm dGVzdCBvYi1oYXhlL2ltcG9ydF9saWJyYXJ5X2lubGluZSAoKQorICAiSW1wb3J0IGEgc3RhbmRh cmQgaGF4ZSBsaWJyYXJ5LiIKKyAgKGlmIChleGVjdXRhYmxlLWZpbmQgb3JnLWJhYmVsLWhheGUt Y29tbWFuZCkKKyAgICAgIChvcmctdGVzdC1hdC1pZCAiMGI5NDVjZGUtNTVhMS00NzIzLThkNzgt NWY2OWQ5OGQwOWZhIgorICAgICAgICAgICAgICAob3JnLWJhYmVsLW5leHQtc3JjLWJsb2NrIDIp CisgICAgICAgICAgICAgIChzaG91bGQgKHN0cmluZz0KKyAgICAgICAgICAgICAgICAgICAgICAg ImVuY29kZWQ9TkRJPSwgZGVjb2RlZD00MiIKKyAgICAgICAgICAgICAgICAgICAgICAgKG9yZy1i YWJlbC1leGVjdXRlLXNyYy1ibG9jaykpKSkpKQorCisKKzs7OyB0ZXN0LW9iLWhheGUuZWwgZW5k cyBoZXJlCg== --0000000000000bcb1c05a7dba344--