From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Vladimir Kazanov Newsgroups: gmane.emacs.bugs Subject: bug#69714: 30.0.50; ert-font-lock doesn't handle list of faces Date: Tue, 12 Mar 2024 20:46:54 +0000 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000d3ff4806137cc2f3" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="39732"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 69714@debbugs.gnu.org To: brownts@troybrown.dev Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Tue Mar 12 21:48:50 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1rk93J-000A6n-Cz for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 12 Mar 2024 21:48:49 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rk939-0004OS-74; Tue, 12 Mar 2024 16:48:39 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rk933-0004NA-Je for bug-gnu-emacs@gnu.org; Tue, 12 Mar 2024 16:48:35 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rk92x-0000jC-Tk for bug-gnu-emacs@gnu.org; Tue, 12 Mar 2024 16:48:33 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rk93W-000454-Cp for bug-gnu-emacs@gnu.org; Tue, 12 Mar 2024 16:49:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Vladimir Kazanov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Mar 2024 20:49:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 69714 X-GNU-PR-Package: emacs Original-Received: via spool by 69714-submit@debbugs.gnu.org id=B69714.171027653015614 (code B ref 69714); Tue, 12 Mar 2024 20:49:02 +0000 Original-Received: (at 69714) by debbugs.gnu.org; 12 Mar 2024 20:48:50 +0000 Original-Received: from localhost ([127.0.0.1]:43948 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rk93J-00043g-Kz for submit@debbugs.gnu.org; Tue, 12 Mar 2024 16:48:50 -0400 Original-Received: from mail-lj1-f178.google.com ([209.85.208.178]:46088) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rk93G-00042n-Rv for 69714@debbugs.gnu.org; Tue, 12 Mar 2024 16:48:48 -0400 Original-Received: by mail-lj1-f178.google.com with SMTP id 38308e7fff4ca-2d204e102a9so5397501fa.0 for <69714@debbugs.gnu.org>; Tue, 12 Mar 2024 13:48:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1710276426; x=1710881226; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=y7fGdeRgUoXC4x9fvKqQ7+GG1hAxswyPLhDyhRlGHM8=; b=UouHf9pJBunhxh6tYa+LaeMIftcmTrL9CXnD8w75Yb+2VifMPLcJ/H+s5tM6/lRJ5n ktDSCIPEOhEf7C90tEqwtLVrH/W1xZNQ/H0fjWFKbygkWNKJK+E/nAODGK/g2KYZMeTE 0O1l/D9w/pDLq4ERpuNLZ/vBaCSNYbo9eVzBajgJ1tiMBRnFx5ZqZ3iDcgZIbzhEptMD NbCDJzU32BOdcv4ZqAS5QuFQAhLgQlI2c0boLOPf1wO4tLyPX3jCNGKVgSTpTu+UwL2J WTKlWJdr0/2pTFFi5uxT2riKfj37UwGVVbIrikfAJ5pJaLy4hvElJLWJI95IrmkizeLe 5IGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710276426; x=1710881226; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=y7fGdeRgUoXC4x9fvKqQ7+GG1hAxswyPLhDyhRlGHM8=; b=XjNvAR/TarmWXfNStaxQQlsPrfmu1gHpeMkIs0hYc47f9yQznfq0Hp47iPaeijCi5k KeLmvazfEansVks+Ktz1u+G1iG313avTI5NHtIDDqlfz5jGWoFESwaO/IgFFiRZwZOfp oN1fBk6xt0EG1VMGcsPOuw5HUinyraD89LuSTFSimxmlt33JOTUFKUW0HLUSkZA6k2pS hQIW60C0p2jbW+7pqS/7o9YM8+xKfs9LHHGC5NIW1e97WoN5fOeeDWymvyMLJCMT4bp8 BXZvHG/fNbCRKwp/cJw97wJzx1PMk8Ap5jeATDkpuFwLz+dtcGulqeJw8xn/imwwYgNQ uIuw== X-Gm-Message-State: AOJu0YwGQQPvGHeBiIjWf0ytusiEMsnp2+IB/zKqTrNYF2PNMwj2AbAk QYNZaEB9CoFJyB9fDF2fbYr+4dUn0/PJRM2vurctkPBpETTvXZK7VesdiEbphaG5eQ10M906OKj h0w0sgdp63Edfrk415mMJAlR6pg== X-Google-Smtp-Source: AGHT+IFWlOcAagYCwFiBhKGXW/s48hxba5KFck/uOj1aCtEviAJfwzxIQBG2+GizLoLKbrWLhR67Uc2JqiISUi/dgg0= X-Received: by 2002:a2e:240a:0:b0:2d4:67e3:aa47 with SMTP id k10-20020a2e240a000000b002d467e3aa47mr927053ljk.48.1710276425800; Tue, 12 Mar 2024 13:47:05 -0700 (PDT) In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:281535 Archived-At: --000000000000d3ff4806137cc2f3 Content-Type: text/plain; charset="UTF-8" Hi, I've attached a patch that handles face lists, fails on files without assertions and expands the parser a bit to support multiple carets per line. For faces it does the following: 1. Turn symbols into single element lists. 2. Parses face lists from the assertions. 3. Compare face lists using equas. Could you please check if this works for you? Thanks On Mon, 11 Mar 2024 at 08:36, Vladimir Kazanov wrote: > > Hi, > > Thanks for reporting this! I have a bunch of ert-font-lock > improvements in my local repo getting ready for submission, and can > look into your suggestions as well. > > Do you have your unit test code somewhere in a public repo? It'd be > great to think of further improvements to support your use case. > > Thanks, > Vlad > > On Sun, 10 Mar 2024 at 20:33, Troy Brown wrote: > > > > I'm trying to use this package to test out my tree-sitter mode, but am > > running into an issue with lists of faces. It's possible that the > > face for a location in the buffer will contain a list of 1 or more > > faces. For example, when I use the ":override 'prepend" keyword in > > the call to treesit-font-lock-rules, even if only a single face is > > specified for the rule that matches that section of the buffer, this > > will result in a list of one entry (i.e., "(face-name)"). > > > > When this happens, ert-font-lock fails to recognize that this matches > > the face "face-name" (e.g., "^ face-name" will fail to match in this > > case). I feel the tool should recognize a list containing a single > > face as matching the face. Even worse however, it appears > > ert-font-lock doesn't support a list of faces in the comment. I tried > > to work around the original issue by using "^ (face-name)", but the > > tool silently ignores this, as it doesn't match the internal regular > > expression (which ended up allowing my test to pass without actually > > checking anything). > > > > I can't figure out a way to use this tool in its current state due to > > its lack of support for a list of faces. Also, I find that since it > > silently ignores incorrect comment syntax (e.g., "^face-name", "^ > > (face-name)"), it gives a false illusion that it's actually performing > > those checks (and the checks are passing), when it's really just > > ignoring them. Maybe any comment line starting with a "^" or "<-" > > should be considered an assertion check and to fail if the rest of the > > syntax is not as expected. Maybe it should also fail the test if no > > assertion checks are found in a source file or string. > > > > Even if the tool would allow a list of a single face to match the > > supplied face in the comment, I think it should also allow for > > multiple faces to be listed in the comment. I have other places where > > multiple faces are used (e.g., "(font-lock-constant-face > > font-lock-variable-name-face)" to highlight a constant variable), > > which would not be testable with the current state of the package. > > > > > > > > > -- > Regards, > > Vladimir Kazanov -- Regards, Vladimir Kazanov --000000000000d3ff4806137cc2f3 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Improve-ert-font-lock-assertion-parser-Bug-69714.patch" Content-Disposition: attachment; filename="0001-Improve-ert-font-lock-assertion-parser-Bug-69714.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ltouanae0 RnJvbSAzMjYwYjExYzYxYTBhYzQxNGVmMGQ0ZDg3MTVmZDdiMzFjMWMzZTllIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWbGFkaW1pciBLYXphbm92IDx2ZWthemFub3ZAZ21haWwuY29t PgpEYXRlOiBUdWUsIDEyIE1hciAyMDI0IDExOjE0OjU0ICswMDAwClN1YmplY3Q6IFtQQVRDSF0g SW1wcm92ZSBlcnQtZm9udC1sb2NrIGFzc2VydGlvbiBwYXJzZXIgKEJ1ZyM2OTcxNCkKCkZhaWwg b24gZmlsZXMgd2l0aCBubyBhc3NlcnRpb25zLCBwYXJzZXIgbm93IGFjY2VwdHMgbXVsdGlwbGUK Y2FyZXRzIHBlciBsaW5lIGFuZCBmYWNlIGxpc3RzOgoqIGxpc3AvZW1hY3MtbGlzcC9lcnQtZm9u dC1sb2NrLmVsOiBBc3NlcnRpb24gcGFyc2VyIGZpeC4KKiB0ZXN0L2xpc3AvZW1hY3MtbGlzcC9l cnQtZm9udC1sb2NrLXJlc291cmNlcy9uby1hc3NlcnRzLmpzOgoqIHRlc3QvbGlzcC9lbWFjcy1s aXNwL2VydC1mb250LWxvY2stdGVzdHMuZWw6IFVwZGF0ZSB1bml0IHRlc3RzLgotLS0KIGxpc3Av ZW1hY3MtbGlzcC9lcnQtZm9udC1sb2NrLmVsICAgICAgICAgICAgICB8ICA3MCArKysrKysrLS0t CiAuLi4vZXJ0LWZvbnQtbG9jay1yZXNvdXJjZXMvbm8tYXNzZXJ0cy5qcyAgICAgfCAgIDMgKwog dGVzdC9saXNwL2VtYWNzLWxpc3AvZXJ0LWZvbnQtbG9jay10ZXN0cy5lbCAgIHwgMTI0ICsrKysr KysrKysrKysrLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAxNTcgaW5zZXJ0aW9ucygrKSwgNDAgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdC9saXNwL2VtYWNzLWxpc3AvZXJ0LWZv bnQtbG9jay1yZXNvdXJjZXMvbm8tYXNzZXJ0cy5qcwoKZGlmZiAtLWdpdCBhL2xpc3AvZW1hY3Mt bGlzcC9lcnQtZm9udC1sb2NrLmVsIGIvbGlzcC9lbWFjcy1saXNwL2VydC1mb250LWxvY2suZWwK aW5kZXggMjkxMTQ3MTJmOTIuLjA2YzkwYWRkOWQzIDEwMDY0NAotLS0gYS9saXNwL2VtYWNzLWxp c3AvZXJ0LWZvbnQtbG9jay5lbAorKysgYi9saXNwL2VtYWNzLWxpc3AvZXJ0LWZvbnQtbG9jay5l bApAQCAtMzksMTYgKzM5LDMyIEBACiAocmVxdWlyZSAnbmV3Y29tbWVudCkKIChyZXF1aXJlICdw Y2FzZSkKCi0oZGVmY29uc3QgZXJ0LWZvbnQtbG9jay0tYXNzZXJ0aW9uLXJlCisoZGVmY29uc3Qg ZXJ0LWZvbnQtbG9jay0tZmFjZS1zeW1ib2wtcmUKKyAgKHJ4IChvbmUtb3ItbW9yZSAob3IgYWxw aGFudW1lcmljICItIiAiXyIgIi4iKSkpCisgICJBIGZhY2Ugc3ltYm9sIG1hdGNoaW5nIHJlZ2V4 LiIpCisKKyhkZWZjb25zdCBlcnQtZm9udC1sb2NrLS1mYWNlLXN5bWJvbC1saXN0LXJlCisgIChy eCAiKCIKKyAgICAgICgqIHdoaXRlc3BhY2UpCisgICAgICAob25lLW9yLW1vcmUKKyAgICAgICAo c2VxIChyZWdleHAgZXJ0LWZvbnQtbG9jay0tZmFjZS1zeW1ib2wtcmUpCisgICAgICAgICAgICAo KiB3aGl0ZXNwYWNlKSkpCisgICAgICAiKSIpCisgICJBIGZhY2Ugc3ltYm9sIGxpc3QgbWF0Y2hp bmcgcmVnZXguIikKKworKGRlZmNvbnN0IGVydC1mb250LWxvY2stLWFzc2VydGlvbi1saW5lLXJl CiAgIChyeAotICAgOzsgY29sdW1uIHNwZWNpZmllcnMKKyAgIDs7IGxlYWRpbmcgY29sdW1uIGFz c2VydGlvbiAoYXJyb3cvY2FyZXQpCiAgICAoZ3JvdXAgKG9yICJeIiAiPC0iKSkKLSAgIChvbmUt b3ItbW9yZSAiICIpCisgICAoemVyby1vci1tb3JlIHdoaXRlc3BhY2UpCisgICA7OyBwb3NzaWJs ZSB0byBoYXZlIG1hbnkgY2FyZXRzIG9uIGFuIGFzc2VydGlvbiBsaW5lCisgICAoZ3JvdXAgKHpl cm8tb3ItbW9yZSAoc2VxICJeIiAoemVyby1vci1tb3JlIHdoaXRlc3BhY2UpKSkpCiAgICA7OyBv cHRpb25hbCBuZWdhdGlvbiBvZiB0aGUgZmFjZSBzcGVjaWZpY2F0aW9uCiAgICAoZ3JvdXAgKG9w dGlvbmFsICIhIikpCi0gICA7OyBmYWNlIHN5bWJvbCBuYW1lCi0gICAoZ3JvdXAgKG9uZS1vci1t b3JlIChvciBhbHBoYW51bWVyaWMgIi0iICJfIiAiLiIpKSkpCi0gICJBbiBlcnQtZm9udC1sb2Nr IGFzc2VydGlvbiByZWdleC4iKQorICAgOzsgZmFjZSBzeW1ib2wgbmFtZSBvciBhIGxpc3Qgb2Yg c3ltYm9scworICAgKGdyb3VwIChvciAocmVnZXhwIGVydC1mb250LWxvY2stLWZhY2Utc3ltYm9s LXJlKQorICAgICAgICAgICAgICAocmVnZXhwIGVydC1mb250LWxvY2stLWZhY2Utc3ltYm9sLWxp c3QtcmUpKSkpCisgICJBbiBlcnQtZm9udC1sb2NrIGFzc2VydGlvbiBsaW5lIHJlZ2V4LiIpCgog KGRlZnVuIGVydC1mb250LWxvY2stLXZhbGlkYXRlLW1ham9yLW1vZGUgKG1vZGUpCiAgICJWYWxp ZGF0ZSBpZiBNT0RFIGlzIGEgdmFsaWQgbWFqb3IgbW9kZS4iCkBAIC0yMTIsNyArMjI4LDcgQEAg ZXJ0LWZvbnQtbG9jay0tbGluZS1hc3NlcnRpb24tcAogICAoc2F2ZS1leGN1cnNpb24KICAgICAo YmVnaW5uaW5nLW9mLWxpbmUpCiAgICAgKHNraXAtc3ludGF4LWZvcndhcmQgIiAiKQotICAgIChy ZS1zZWFyY2gtZm9yd2FyZCBlcnQtZm9udC1sb2NrLS1hc3NlcnRpb24tcmUKKyAgICAocmUtc2Vh cmNoLWZvcndhcmQgZXJ0LWZvbnQtbG9jay0tYXNzZXJ0aW9uLWxpbmUtcmUKICAgICAgICAgICAg ICAgICAgICAgICAgKGxpbmUtZW5kLXBvc2l0aW9uKSB0IDEpKSkKCiAoZGVmdW4gZXJ0LWZvbnQt bG9jay0tZ290by1maXJzdC1jaGFyICgpCkBAIC0yNTIsOCArMjY4LDggQEAgZXJ0LWZvbnQtbG9j ay0tcGFyc2UtY29tbWVudHMKICAgICAgICAgICAodGhyb3cgJ25leHRsaW5lIHQpKQoKCi0gICAg ICAgIDs7IENvbGxlY3QgdGhlIGFzc2VydGlvbgotICAgICAgICAod2hlbiAocmUtc2VhcmNoLWZv cndhcmQgZXJ0LWZvbnQtbG9jay0tYXNzZXJ0aW9uLXJlCisgICAgICAgIDs7IENvbGxlY3QgdGhl IGZpcnN0IGxpbmUgYXNzZXJ0aW9uIChjYXJldCBvciBhcnJvdykKKyAgICAgICAgKHdoZW4gKHJl LXNlYXJjaC1mb3J3YXJkIGVydC1mb250LWxvY2stLWFzc2VydGlvbi1saW5lLXJlCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobGluZS1lbmQtcG9zaXRpb24pIHQgMSkKCiAgICAg ICAgICAgKHVubGVzcyAoPiBsaW5ldG9jaGVjayAtMSkKQEAgLTI2NiwyMSArMjgyLDM4IEBAIGVy dC1mb250LWxvY2stLXBhcnNlLWNvbW1lbnRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKC0gKG1hdGNoLWJlZ2lubmluZyAxKSAobGluZS1iZWdpbm5pbmctcG9zaXRpb24p KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJ0LWZvbnQtbG9jay0tZ2V0 LWZpcnN0LWNoYXItY29sdW1uKSkpCiAgICAgICAgICAgICAgICAgIDs7IG5lZ2F0ZSB0aGUgZmFj ZT8KLSAgICAgICAgICAgICAgICAgKG5lZ2F0aW9uIChzdHJpbmctZXF1YWwgKG1hdGNoLXN0cmlu Zy1uby1wcm9wZXJ0aWVzIDIpICIhIikpCisgICAgICAgICAgICAgICAgIChuZWdhdGlvbiAoc3Ry aW5nLWVxdWFsIChtYXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyAzKSAiISIpKQogICAgICAgICAg ICAgICAgICA7OyB0aGUgZmFjZSB0aGF0IGlzIHN1cHBvc2VkIHRvIGJlIGluIHRoZSBwb3NpdGlv biBzcGVjaWZpZWQKLSAgICAgICAgICAgICAgICAgKGZhY2UgKG1hdGNoLXN0cmluZy1uby1wcm9w ZXJ0aWVzIDMpKSkKKyAgICAgICAgICAgICAgICAgKGZhY2UgKHJlYWQgKG1hdGNoLXN0cmluZy1u by1wcm9wZXJ0aWVzIDQpKSkpCgorICAgICAgICAgICAgOzsgQ29sbGVjdCB0aGUgZmlyc3QgYXNz ZXJ0aW9uIG9uIHRoZSBsaW5lCiAgICAgICAgICAgICAocHVzaCAobGlzdCA6bGluZS1jaGVja2Vk IGxpbmV0b2NoZWNrCiAgICAgICAgICAgICAgICAgICAgICAgICA6bGluZS1hc3NlcnQgY3VybGlu ZQogICAgICAgICAgICAgICAgICAgICAgICAgOmNvbHVtbi1jaGVja2VkIGNvbHVtbi1jaGVja2Vk CiAgICAgICAgICAgICAgICAgICAgICAgICA6ZmFjZSBmYWNlCiAgICAgICAgICAgICAgICAgICAg ICAgICA6bmVnYXRpb24gbmVnYXRpb24pCi0gICAgICAgICAgICAgICAgICB0ZXN0cykpKSkKKyAg ICAgICAgICAgICAgICAgIHRlc3RzKQorCisgICAgICAgICAgICA7OyBDb2xsZWN0IGFsbCB0aGUg b3RoZXIgbGluZSBjYXJldHMgKGlmIHByZXNlbnQpCisgICAgICAgICAgICAoZ290by1jaGFyICht YXRjaC1iZWdpbm5pbmcgMikpCisgICAgICAgICAgICAod2hpbGUgKGVxdWFsIChmb2xsb3dpbmct Y2hhcikgP14pCisgICAgICAgICAgICAgIChzZXRxIGNvbHVtbi1jaGVja2VkICgtIChwb2ludCkg KGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSkpCisgICAgICAgICAgICAgIChwdXNoIChsaXN0IDps aW5lLWNoZWNrZWQgbGluZXRvY2hlY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgOmxpbmUt YXNzZXJ0IGN1cmxpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgOmNvbHVtbi1jaGVja2Vk IGNvbHVtbi1jaGVja2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgIDpmYWNlIGZhY2UKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgOm5lZ2F0aW9uIG5lZ2F0aW9uKQorICAgICAgICAgICAg ICAgICAgICB0ZXN0cykKKyAgICAgICAgICAgICAgKGZvcndhcmQtY2hhcikKKyAgICAgICAgICAg ICAgKHNraXAtc3ludGF4LWZvcndhcmQgIiAiKSkpKSkKCiAgICAgICA7OyBuZXh0IGxpbmUKICAg ICAgIChzZXRxIGN1cmxpbmUgKDErIGN1cmxpbmUpKQogICAgICAgKGZvcndhcmQtbGluZSAxKSkK CisgICAgKHVubGVzcyB0ZXN0cworICAgICAgKHVzZXItZXJyb3IgIk5vIHRlc3QgYXNzZXJ0aW9u cyBmb3VuZCIpKQorCiAgICAgKHJldmVyc2UgdGVzdHMpKSkKCiAoZGVmdW4gZXJ0LWZvbnQtbG9j ay0tcG9pbnQtYXQtbGluZS1hbmQtY29sdW1uIChsaW5lIGNvbHVtbikKQEAgLTMwNywyMSArMzQw LDI4IEBAIGVydC1mb250LWxvY2stLWNoZWNrLWZhY2VzCiAgICAgKGxldCogKChsaW5lLWNoZWNr ZWQgKHBsaXN0LWdldCB0ZXN0IDpsaW5lLWNoZWNrZWQpKQogICAgICAgICAgICAobGluZS1hc3Nl cnQgKHBsaXN0LWdldCB0ZXN0IDpsaW5lLWFzc2VydCkpCiAgICAgICAgICAgIChjb2x1bW4tY2hl Y2tlZCAocGxpc3QtZ2V0IHRlc3QgOmNvbHVtbi1jaGVja2VkKSkKLSAgICAgICAgICAgKGV4cGVj dGVkLWZhY2UgKGludGVybiAocGxpc3QtZ2V0IHRlc3QgOmZhY2UpKSkKKyAgICAgICAgICAgKGV4 cGVjdGVkLWZhY2UgKHBsaXN0LWdldCB0ZXN0IDpmYWNlKSkKICAgICAgICAgICAgKG5lZ2F0aW9u IChwbGlzdC1nZXQgdGVzdCA6bmVnYXRpb24pKQoKICAgICAgICAgICAgKGFjdHVhbC1mYWNlIChn ZXQtdGV4dC1wcm9wZXJ0eSAoZXJ0LWZvbnQtbG9jay0tcG9pbnQtYXQtbGluZS1hbmQtY29sdW1u IGxpbmUtY2hlY2tlZCBjb2x1bW4tY2hlY2tlZCkgJ2ZhY2UpKQogICAgICAgICAgICAobGluZS1z dHIgKGVydC1mb250LWxvY2stLWdldC1saW5lIGxpbmUtY2hlY2tlZCkpCiAgICAgICAgICAgIChs aW5lLWFzc2VydC1zdHIgKGVydC1mb250LWxvY2stLWdldC1saW5lIGxpbmUtYXNzZXJ0KSkpCgot ICAgICAgKHdoZW4gKG5vdCAoZXEgYWN0dWFsLWZhY2UgZXhwZWN0ZWQtZmFjZSkpCisgICAgICA7 OyBub3JtYWxpemUgYm90aCBleHBlY3RlZCBhbmQgcmVzdWx0aW5nIGZhY2UgLSB0aGVzZSBjYW4g YmUKKyAgICAgIDs7IGVpdGhlciBzeW1ib2xzIG9yIGxpc3RzIG9mIHN5bWJvbHMKKyAgICAgICh3 aGVuIChzeW1ib2xwIGFjdHVhbC1mYWNlKQorICAgICAgICAoc2V0cSBhY3R1YWwtZmFjZSAobGlz dCBhY3R1YWwtZmFjZSkpKQorICAgICAgKHdoZW4gKHN5bWJvbHAgZXhwZWN0ZWQtZmFjZSkKKyAg ICAgICAgKHNldHEgZXhwZWN0ZWQtZmFjZSAobGlzdCBleHBlY3RlZC1mYWNlKSkpCisKKyAgICAg ICh3aGVuIChub3QgKGVxdWFsIGFjdHVhbC1mYWNlIGV4cGVjdGVkLWZhY2UpKQogICAgICAgICAo ZXJ0LWZhaWwKICAgICAgICAgIChsaXN0IChmb3JtYXQgIkV4cGVjdGVkIGZhY2UgJVMsIGdvdCAl UyBvbiBsaW5lICVkIGNvbHVtbiAlZCIKICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQt ZmFjZSBhY3R1YWwtZmFjZSBsaW5lLWNoZWNrZWQgY29sdW1uLWNoZWNrZWQpCiAgICAgICAgICAg ICAgICA6bGluZSBsaW5lLXN0cgogICAgICAgICAgICAgICAgOmFzc2VydCBsaW5lLWFzc2VydC1z dHIpKSkKCi0gICAgICAod2hlbiAoYW5kIG5lZ2F0aW9uIChlcSBhY3R1YWwtZmFjZSBleHBlY3Rl ZC1mYWNlKSkKKyAgICAgICh3aGVuIChhbmQgbmVnYXRpb24gKGVxdWFsIGFjdHVhbC1mYWNlIGV4 cGVjdGVkLWZhY2UpKQogICAgICAgICAoZXJ0LWZhaWwKICAgICAgICAgIChsaXN0IChmb3JtYXQg IkRpZCBub3QgZXhwZWN0IGZhY2UgJVMgZmFjZSBvbiBsaW5lICVkLCBjb2x1bW4gJWQiCiAgICAg ICAgICAgICAgICAgICAgICAgIGFjdHVhbC1mYWNlIGxpbmUtY2hlY2tlZCBjb2x1bW4tY2hlY2tl ZCkKZGlmZiAtLWdpdCBhL3Rlc3QvbGlzcC9lbWFjcy1saXNwL2VydC1mb250LWxvY2stcmVzb3Vy Y2VzL25vLWFzc2VydHMuanMgYi90ZXN0L2xpc3AvZW1hY3MtbGlzcC9lcnQtZm9udC1sb2NrLXJl c291cmNlcy9uby1hc3NlcnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi45ZTAyZDU2YzYzMwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvbGlzcC9lbWFjcy1saXNw L2VydC1mb250LWxvY2stcmVzb3VyY2VzL25vLWFzc2VydHMuanMKQEAgLTAsMCArMSwzIEBACit2 YXIgYWJjID0gZnVuY3Rpb24oZCkgeworICAgIC8vICBeIHRlc3QtZmFjZQorfTsKZGlmZiAtLWdp dCBhL3Rlc3QvbGlzcC9lbWFjcy1saXNwL2VydC1mb250LWxvY2stdGVzdHMuZWwgYi90ZXN0L2xp c3AvZW1hY3MtbGlzcC9lcnQtZm9udC1sb2NrLXRlc3RzLmVsCmluZGV4IGUwYmExZTk0OWIyLi5i MGJiOGMzMWM2MCAxMDA2NDQKLS0tIGEvdGVzdC9saXNwL2VtYWNzLWxpc3AvZXJ0LWZvbnQtbG9j ay10ZXN0cy5lbAorKysgYi90ZXN0L2xpc3AvZW1hY3MtbGlzcC9lcnQtZm9udC1sb2NrLXRlc3Rz LmVsCkBAIC0xMzgsMTMgKzEzOCwyNCBAQCB0ZXN0LWxpbmUtY29tbWVudC1wLS1jCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChmb3J3YXJkLWxpbmUpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChzaG91bGQgKGVydC1mb250LWxvY2stLWxpbmUtY29tbWVudC1wKSkpKQoKKyhl cnQtZGVmdGVzdCB0ZXN0LXBhcnNlLWNvbW1lbnRzLS1uby1hc3NlcnRpb24tZXJyb3IgKCkKKyAg KGxldCogKChzdHIgIgorbm90X2FuX2Fzc2VydGlvbgorcmFuZG9tX3N5bWJvbAorIikpCisgICAg KHdpdGgtdGVtcC1idWZmZXIKKyAgICAgIChpbnNlcnQgc3RyKQorICAgICAgKGphdmFzY3JpcHQt bW9kZSkKKworICAgICAgKHNob3VsZC1lcnJvciAoZXJ0LWZvbnQtbG9jay0tcGFyc2UtY29tbWVu dHMpIDp0eXBlICd1c2VyLWVycm9yKSkpKQorCiAoZXJ0LWRlZnRlc3QgdGVzdC1wYXJzZS1jb21t ZW50cy0tc2luZ2xlLWxpbmUtZXJyb3IgKCkKICAgKGxldCogKChzdHIgIi8vIF4gZmFjZS5mYWNl MSIpKQogICAgICh3aXRoLXRlbXAtYnVmZmVyCiAgICAgICAoaW5zZXJ0IHN0cikKICAgICAgIChq YXZhc2NyaXB0LW1vZGUpCgotICAgICAgKHNob3VsZC1lcnJvciAoZXJ0LWZvbnQtbG9jay0tcGFy c2UtY29tbWVudHMpKSkpKQorICAgICAgKHNob3VsZC1lcnJvciAoZXJ0LWZvbnQtbG9jay0tcGFy c2UtY29tbWVudHMpIDp0eXBlICd1c2VyLWVycm9yKSkpKQoKIChlcnQtZGVmdGVzdCB0ZXN0LXBh cnNlLWNvbW1lbnRzLS1zaW5nbGUtbGluZS1zaW5nbGUtY2FyZXQgKCkKICAgKGxldCogKChzdHIg IgpAQCAtMTU5LDcgKzE3MCw0NiBAQCB0ZXN0LXBhcnNlLWNvbW1lbnRzLS1zaW5nbGUtbGluZS1z aW5nbGUtY2FyZXQKICAgICAgIChzZXRxIGFzc2VydHMgKGVydC1mb250LWxvY2stLXBhcnNlLWNv bW1lbnRzKSkKICAgICAgIChzaG91bGQgKGVxbCAobGVuZ3RoIGFzc2VydHMpIDEpKQogICAgICAg KHNob3VsZCAoZXF1YWwgKGNhciBhc3NlcnRzKQotICAgICAgICAgICAgICAgICAgICAgJyg6bGlu ZS1jaGVja2VkIDIgOmxpbmUtYXNzZXJ0IDMgOmNvbHVtbi1jaGVja2VkIDMgOmZhY2UgImZhY2Uu ZmFjZTEiIDpuZWdhdGlvbiBuaWwpKSkpKSkKKyAgICAgICAgICAgICAgICAgICAgICcoOmxpbmUt Y2hlY2tlZCAyIDpsaW5lLWFzc2VydCAzIDpjb2x1bW4tY2hlY2tlZCAzIDpmYWNlIGZhY2UuZmFj ZTEgOm5lZ2F0aW9uIG5pbCkpKSkpKQorCisoZXJ0LWRlZnRlc3QgdGVzdC1wYXJzZS1jb21tZW50 cy0tc2luZ2xlLWxpbmUtbWFueS1jYXJldHMgKCkKKyAgKGxldCogKChzdHIgIgorbXVsdGlwbGVj YXJldHMKKy8vXl5eIF5eIF4gZmFjZS5mYWNlMQorIikKKyAgICAgICAgIGFzc2VydHMpCisgICAg KHdpdGgtdGVtcC1idWZmZXIKKyAgICAgIChpbnNlcnQgc3RyKQorICAgICAgKGphdmFzY3JpcHQt bW9kZSkKKworICAgICAgKHNldHEgYXNzZXJ0cyAoZXJ0LWZvbnQtbG9jay0tcGFyc2UtY29tbWVu dHMpKQorICAgICAgKHNob3VsZCAoZXFsIChsZW5ndGggYXNzZXJ0cykgNikpCisgICAgICAoc2hv dWxkIChlcXVhbCBhc3NlcnRzCisgICAgICAgICAgICAgICAgICAgICAnKCg6bGluZS1jaGVja2Vk IDIgOmxpbmUtYXNzZXJ0IDMgOmNvbHVtbi1jaGVja2VkIDIgOmZhY2UgZmFjZS5mYWNlMSA6bmVn YXRpb24gbmlsKQorICAgICAgICAgICAgICAgICAgICAgICAoOmxpbmUtY2hlY2tlZCAyIDpsaW5l LWFzc2VydCAzIDpjb2x1bW4tY2hlY2tlZCAzIDpmYWNlIGZhY2UuZmFjZTEgOm5lZ2F0aW9uIG5p bCkKKyAgICAgICAgICAgICAgICAgICAgICAgKDpsaW5lLWNoZWNrZWQgMiA6bGluZS1hc3NlcnQg MyA6Y29sdW1uLWNoZWNrZWQgNCA6ZmFjZSBmYWNlLmZhY2UxIDpuZWdhdGlvbiBuaWwpCisgICAg ICAgICAgICAgICAgICAgICAgICg6bGluZS1jaGVja2VkIDIgOmxpbmUtYXNzZXJ0IDMgOmNvbHVt bi1jaGVja2VkIDYgOmZhY2UgZmFjZS5mYWNlMSA6bmVnYXRpb24gbmlsKQorICAgICAgICAgICAg ICAgICAgICAgICAoOmxpbmUtY2hlY2tlZCAyIDpsaW5lLWFzc2VydCAzIDpjb2x1bW4tY2hlY2tl ZCA3IDpmYWNlIGZhY2UuZmFjZTEgOm5lZ2F0aW9uIG5pbCkKKyAgICAgICAgICAgICAgICAgICAg ICAgKDpsaW5lLWNoZWNrZWQgMiA6bGluZS1hc3NlcnQgMyA6Y29sdW1uLWNoZWNrZWQgOSA6ZmFj ZSBmYWNlLmZhY2UxIDpuZWdhdGlvbiBuaWwpKSkpKSkpCisKKyhlcnQtZGVmdGVzdCB0ZXN0LXBh cnNlLWNvbW1lbnRzLS1mYWNlLWxpc3QgKCkKKyAgKGxldCogKChzdHIgIgorZmFjZWxpc3QKKy8v IF4gKGZhY2UxIGZhY2UyKQorLy8gXiAhKGZhY2UzIGZhY2U0KQorLy8gXiAoZmFjZTUpCisiKQor ICAgICAgICAgYXNzZXJ0cykKKyAgICAod2l0aC10ZW1wLWJ1ZmZlcgorICAgICAgKGluc2VydCBz dHIpCisgICAgICAoamF2YXNjcmlwdC1tb2RlKQorCisgICAgICAoc2V0cSBhc3NlcnRzIChlcnQt Zm9udC1sb2NrLS1wYXJzZS1jb21tZW50cykpCisgICAgICAoc2hvdWxkIChlcWwgKGxlbmd0aCBh c3NlcnRzKSAzKSkKKyAgICAgIChzaG91bGQgKGVxdWFsIGFzc2VydHMKKyAgICAgICAgICAgICAg ICAgICAgICcoKDpsaW5lLWNoZWNrZWQgMiA6bGluZS1hc3NlcnQgMyA6Y29sdW1uLWNoZWNrZWQg MyA6ZmFjZSAoZmFjZTEgZmFjZTIpIDpuZWdhdGlvbiBuaWwpCisgICAgICAgICAgICAgICAgICAg ICAgICg6bGluZS1jaGVja2VkIDIgOmxpbmUtYXNzZXJ0IDQgOmNvbHVtbi1jaGVja2VkIDMgOmZh Y2UgKGZhY2UzIGZhY2U0KSA6bmVnYXRpb24gdCkKKyAgICAgICAgICAgICAgICAgICAgICAgKDps aW5lLWNoZWNrZWQgMiA6bGluZS1hc3NlcnQgNSA6Y29sdW1uLWNoZWNrZWQgMyA6ZmFjZSAoZmFj ZTUpIDpuZWdhdGlvbiBuaWwpKSkpKSkpCgogKGVydC1kZWZ0ZXN0IHRlc3QtcGFyc2UtY29tbWVu dHMtLWNhcmV0LW5lZ2F0aW9uICgpCiAgIChsZXQqICgoc3RyICIKQEAgLTE3NSwxMSArMjI1LDEx IEBAIHRlc3QtcGFyc2UtY29tbWVudHMtLWNhcmV0LW5lZ2F0aW9uCiAgICAgICAoc2V0cSBhc3Nl cnRzIChlcnQtZm9udC1sb2NrLS1wYXJzZS1jb21tZW50cykpCiAgICAgICAoc2hvdWxkIChlcWwg KGxlbmd0aCBhc3NlcnRzKSAyKSkKICAgICAgIChzaG91bGQgKGVxdWFsIGFzc2VydHMKLSAgICAg ICAgICAgICAgICAgICAgICcoKDpsaW5lLWNoZWNrZWQgMiA6bGluZS1hc3NlcnQgMyA6Y29sdW1u LWNoZWNrZWQgMyA6ZmFjZSAiZmFjZSIgOm5lZ2F0aW9uIHQpCi0gICAgICAgICAgICAgICAgICAg ICAgICg6bGluZS1jaGVja2VkIDIgOmxpbmUtYXNzZXJ0IDQgOmNvbHVtbi1jaGVja2VkIDMgOmZh Y2UgImZhY2UiIDpuZWdhdGlvbiBuaWwpKSkpKSkpCisgICAgICAgICAgICAgICAgICAgICAnKCg6 bGluZS1jaGVja2VkIDIgOmxpbmUtYXNzZXJ0IDMgOmNvbHVtbi1jaGVja2VkIDMgOmZhY2UgZmFj ZSA6bmVnYXRpb24gdCkKKyAgICAgICAgICAgICAgICAgICAgICAgKDpsaW5lLWNoZWNrZWQgMiA6 bGluZS1hc3NlcnQgNCA6Y29sdW1uLWNoZWNrZWQgMyA6ZmFjZSBmYWNlIDpuZWdhdGlvbiBuaWwp KSkpKSkpCgoKLShlcnQtZGVmdGVzdCB0ZXN0LXBhcnNlLWNvbW1lbnRzLS1zaW5nbGUtbGluZS1t dWx0aXBsZS1jYXJldHMgKCkKKyhlcnQtZGVmdGVzdCB0ZXN0LXBhcnNlLWNvbW1lbnRzLS1zaW5n bGUtbGluZS1tdWx0aXBsZS1hc3NlcnQtbGluZXMgKCkKICAgKGxldCogKChzdHIgIgogZmlyc3QK IC8vIF4gZmFjZTEKQEAgLTE5NiwxMiArMjQ2LDEyIEBAIHRlc3QtcGFyc2UtY29tbWVudHMtLXNp bmdsZS1saW5lLW11bHRpcGxlLWNhcmV0cwogICAgICAgKHNldHEgYXNzZXJ0cyAoZXJ0LWZvbnQt bG9jay0tcGFyc2UtY29tbWVudHMpKQogICAgICAgKHNob3VsZCAoZXFsIChsZW5ndGggYXNzZXJ0 cykgNCkpCiAgICAgICAoc2hvdWxkIChlcXVhbCBhc3NlcnRzCi0gICAgICAgICAgICAgICAgICAg ICAnKCg6bGluZS1jaGVja2VkIDIgOmxpbmUtYXNzZXJ0IDMgOmNvbHVtbi1jaGVja2VkIDMgOmZh Y2UgImZhY2UxIiA6bmVnYXRpb24gbmlsKQotICAgICAgICAgICAgICAgICAgICAgICAoOmxpbmUt Y2hlY2tlZCAyIDpsaW5lLWFzc2VydCA0IDpjb2x1bW4tY2hlY2tlZCA3IDpmYWNlICJmYWNlLmZh Y2UyIiA6bmVnYXRpb24gbmlsKQotICAgICAgICAgICAgICAgICAgICAgICAoOmxpbmUtY2hlY2tl ZCAyIDpsaW5lLWFzc2VydCA1IDpjb2x1bW4tY2hlY2tlZCA3IDpmYWNlICJmYWNlLWZhY2UuZmFj ZTMiIDpuZWdhdGlvbiBuaWwpCi0gICAgICAgICAgICAgICAgICAgICAgICg6bGluZS1jaGVja2Vk IDIgOmxpbmUtYXNzZXJ0IDYgOmNvbHVtbi1jaGVja2VkIDcgOmZhY2UgImZhY2VfZmFjZS5mYWNl NCIgOm5lZ2F0aW9uIG5pbCkpKSkpKSkKKyAgICAgICAgICAgICAgICAgICAgICcoKDpsaW5lLWNo ZWNrZWQgMiA6bGluZS1hc3NlcnQgMyA6Y29sdW1uLWNoZWNrZWQgMyA6ZmFjZSBmYWNlMSA6bmVn YXRpb24gbmlsKQorICAgICAgICAgICAgICAgICAgICAgICAoOmxpbmUtY2hlY2tlZCAyIDpsaW5l LWFzc2VydCA0IDpjb2x1bW4tY2hlY2tlZCA3IDpmYWNlIGZhY2UuZmFjZTIgOm5lZ2F0aW9uIG5p bCkKKyAgICAgICAgICAgICAgICAgICAgICAgKDpsaW5lLWNoZWNrZWQgMiA6bGluZS1hc3NlcnQg NSA6Y29sdW1uLWNoZWNrZWQgNyA6ZmFjZSBmYWNlLWZhY2UuZmFjZTMgOm5lZ2F0aW9uIG5pbCkK KyAgICAgICAgICAgICAgICAgICAgICAgKDpsaW5lLWNoZWNrZWQgMiA6bGluZS1hc3NlcnQgNiA6 Y29sdW1uLWNoZWNrZWQgNyA6ZmFjZSBmYWNlX2ZhY2UuZmFjZTQgOm5lZ2F0aW9uIG5pbCkpKSkp KSkKCi0oZXJ0LWRlZnRlc3QgdGVzdC1wYXJzZS1jb21tZW50cy0tbXVsdGlwbGUtbGluZS1tdWx0 aXBsZS1jYXJldHMgKCkKKyhlcnQtZGVmdGVzdCB0ZXN0LXBhcnNlLWNvbW1lbnRzLS1tdWx0aXBs ZS1saW5lLW11bHRpcGxlLWFzc2VydC1saW5lcyAoKQogICAobGV0KiAoKHN0ciAiCiBmaXJzdAog Ly8gXiBmYWNlMQpAQCAtMjE4LDkgKzI2OCw5IEBAIHRlc3QtcGFyc2UtY29tbWVudHMtLW11bHRp cGxlLWxpbmUtbXVsdGlwbGUtY2FyZXRzCiAgICAgICAoc2V0cSBhc3NlcnRzIChlcnQtZm9udC1s b2NrLS1wYXJzZS1jb21tZW50cykpCiAgICAgICAoc2hvdWxkIChlcWwgKGxlbmd0aCBhc3NlcnRz KSAzKSkKICAgICAgIChzaG91bGQgKGVxdWFsIGFzc2VydHMKLSAgICAgICAgICAgICAgICAgICAg ICcoKDpsaW5lLWNoZWNrZWQgMiAgOmxpbmUtYXNzZXJ0IDMgOmNvbHVtbi1jaGVja2VkIDMgOmZh Y2UgImZhY2UxIiA6bmVnYXRpb24gbmlsKQotICAgICAgICAgICAgICAgICAgICAgICAoOmxpbmUt Y2hlY2tlZCA0ICA6bGluZS1hc3NlcnQgNSA6Y29sdW1uLWNoZWNrZWQgMyA6ZmFjZSAiZmFjZTIi IDpuZWdhdGlvbiBuaWwpCi0gICAgICAgICAgICAgICAgICAgICAgICg6bGluZS1jaGVja2VkIDQg IDpsaW5lLWFzc2VydCA2IDpjb2x1bW4tY2hlY2tlZCA1IDpmYWNlICJmYWNlMyIgOm5lZ2F0aW9u IG5pbCkpKSkpKSkKKyAgICAgICAgICAgICAgICAgICAgICcoKDpsaW5lLWNoZWNrZWQgMiAgOmxp bmUtYXNzZXJ0IDMgOmNvbHVtbi1jaGVja2VkIDMgOmZhY2UgZmFjZTEgOm5lZ2F0aW9uIG5pbCkK KyAgICAgICAgICAgICAgICAgICAgICAgKDpsaW5lLWNoZWNrZWQgNCAgOmxpbmUtYXNzZXJ0IDUg OmNvbHVtbi1jaGVja2VkIDMgOmZhY2UgZmFjZTIgOm5lZ2F0aW9uIG5pbCkKKyAgICAgICAgICAg ICAgICAgICAgICAgKDpsaW5lLWNoZWNrZWQgNCAgOmxpbmUtYXNzZXJ0IDYgOmNvbHVtbi1jaGVj a2VkIDUgOmZhY2UgZmFjZTMgOm5lZ2F0aW9uIG5pbCkpKSkpKSkKCgogKGVydC1kZWZ0ZXN0IHRl c3QtcGFyc2UtY29tbWVudHMtLWFycm93LXNpbmdsZS1saW5lLXNpbmdsZSAoKQpAQCAtMjM2LDcg KzI4Niw3IEBAIHRlc3QtcGFyc2UtY29tbWVudHMtLWFycm93LXNpbmdsZS1saW5lLXNpbmdsZQog ICAgICAgKHNldHEgYXNzZXJ0cyAoZXJ0LWZvbnQtbG9jay0tcGFyc2UtY29tbWVudHMpKQogICAg ICAgKHNob3VsZCAoZXFsIChsZW5ndGggYXNzZXJ0cykgMSkpCiAgICAgICAoc2hvdWxkIChlcXVh bCAoY2FyIGFzc2VydHMpCi0gICAgICAgICAgICAgICAgICAgICAnKDpsaW5lLWNoZWNrZWQgMiA6 bGluZS1hc3NlcnQgMyA6Y29sdW1uLWNoZWNrZWQgMCA6ZmFjZSAiZmFjZTEiIDpuZWdhdGlvbiBu aWwpKSkpKSkKKyAgICAgICAgICAgICAgICAgICAgICcoOmxpbmUtY2hlY2tlZCAyIDpsaW5lLWFz c2VydCAzIDpjb2x1bW4tY2hlY2tlZCAwIDpmYWNlIGZhY2UxIDpuZWdhdGlvbiBuaWwpKSkpKSkK CgogKGVydC1kZWZ0ZXN0IHRlc3QtcGFyc2UtY29tbWVudHMtYXJyb3ctbXVsdGlwbGUtbGluZS1z aW5nbGUgKCkKQEAgLTI1NCw5ICszMDQsOSBAQCB0ZXN0LXBhcnNlLWNvbW1lbnRzLWFycm93LW11 bHRpcGxlLWxpbmUtc2luZ2xlCiAgICAgICAoc2V0cSBhc3NlcnRzIChlcnQtZm9udC1sb2NrLS1w YXJzZS1jb21tZW50cykpCiAgICAgICAoc2hvdWxkIChlcWwgKGxlbmd0aCBhc3NlcnRzKSAzKSkK ICAgICAgIChzaG91bGQgKGVxdWFsIGFzc2VydHMKLSAgICAgICAgICAgICAgICAgICAgICcoKDps aW5lLWNoZWNrZWQgMiA6bGluZS1hc3NlcnQgMyA6Y29sdW1uLWNoZWNrZWQgMCA6ZmFjZSAiZmFj ZTEiIDpuZWdhdGlvbiBuaWwpCi0gICAgICAgICAgICAgICAgICAgICAgICg6bGluZS1jaGVja2Vk IDIgOmxpbmUtYXNzZXJ0IDQgOmNvbHVtbi1jaGVja2VkIDIgOmZhY2UgImZhY2UyIiA6bmVnYXRp b24gbmlsKQotICAgICAgICAgICAgICAgICAgICAgICAoOmxpbmUtY2hlY2tlZCAyIDpsaW5lLWFz c2VydCA1IDpjb2x1bW4tY2hlY2tlZCA0IDpmYWNlICJmYWNlMyIgOm5lZ2F0aW9uIG5pbCkpKSkp KSkKKyAgICAgICAgICAgICAgICAgICAgICcoKDpsaW5lLWNoZWNrZWQgMiA6bGluZS1hc3NlcnQg MyA6Y29sdW1uLWNoZWNrZWQgMCA6ZmFjZSBmYWNlMSA6bmVnYXRpb24gbmlsKQorICAgICAgICAg ICAgICAgICAgICAgICAoOmxpbmUtY2hlY2tlZCAyIDpsaW5lLWFzc2VydCA0IDpjb2x1bW4tY2hl Y2tlZCAyIDpmYWNlIGZhY2UyIDpuZWdhdGlvbiBuaWwpCisgICAgICAgICAgICAgICAgICAgICAg ICg6bGluZS1jaGVja2VkIDIgOmxpbmUtYXNzZXJ0IDUgOmNvbHVtbi1jaGVja2VkIDQgOmZhY2Ug ZmFjZTMgOm5lZ2F0aW9uIG5pbCkpKSkpKSkKCiAoZXJ0LWRlZnRlc3QgdGVzdC1wYXJzZS1jb21t ZW50cy0tbm9uLWFzc2VydC1jb21tZW50LXNpbmdsZSAoKQogICAobGV0KiAoKHN0ciAiCkBAIC0y NzEsNyArMzIxLDcgQEAgdGVzdC1wYXJzZS1jb21tZW50cy0tbm9uLWFzc2VydC1jb21tZW50LXNp bmdsZQogICAgICAgKHNldHEgYXNzZXJ0cyAoZXJ0LWZvbnQtbG9jay0tcGFyc2UtY29tbWVudHMp KQogICAgICAgKHNob3VsZCAoZXFsIChsZW5ndGggYXNzZXJ0cykgMSkpCiAgICAgICAoc2hvdWxk IChlcXVhbCAoY2FyIGFzc2VydHMpCi0gICAgICAgICAgICAgICAgICAgICAnKDpsaW5lLWNoZWNr ZWQgMiA6bGluZS1hc3NlcnQgMyA6Y29sdW1uLWNoZWNrZWQgNCA6ZmFjZSAiY29tbWVudC1mYWNl IiA6bmVnYXRpb24gbmlsKSkpKSkpCisgICAgICAgICAgICAgICAgICAgICAnKDpsaW5lLWNoZWNr ZWQgMiA6bGluZS1hc3NlcnQgMyA6Y29sdW1uLWNoZWNrZWQgNCA6ZmFjZSBjb21tZW50LWZhY2Ug Om5lZ2F0aW9uIG5pbCkpKSkpKQoKIChlcnQtZGVmdGVzdCB0ZXN0LXBhcnNlLWNvbW1lbnRzLS1u b24tYXNzZXJ0LWNvbW1lbnQtbXVsdGlwbGUgKCkKICAgKGxldCogKChzdHIgIgpAQCAtMjg4LDkg KzMzOCw5IEBAIHRlc3QtcGFyc2UtY29tbWVudHMtLW5vbi1hc3NlcnQtY29tbWVudC1tdWx0aXBs ZQogICAgICAgKHNldHEgYXNzZXJ0cyAoZXJ0LWZvbnQtbG9jay0tcGFyc2UtY29tbWVudHMpKQog ICAgICAgKHNob3VsZCAoZXFsIChsZW5ndGggYXNzZXJ0cykgMykpCiAgICAgICAoc2hvdWxkIChl cXVhbCBhc3NlcnRzCi0gICAgICAgICAgICAgICAgICAgICAnKCg6bGluZS1jaGVja2VkIDIgOmxp bmUtYXNzZXJ0IDMgOmNvbHVtbi1jaGVja2VkIDQgOmZhY2UgImNvbW1lbnQtZmFjZSIgOm5lZ2F0 aW9uIG5pbCkKLSAgICAgICAgICAgICAgICAgICAgICAgKDpsaW5lLWNoZWNrZWQgMiA6bGluZS1h c3NlcnQgNCA6Y29sdW1uLWNoZWNrZWQgMTAgOmZhY2UgImNvbW1lbnQtZmFjZSIgOm5lZ2F0aW9u IG5pbCkKLSAgICAgICAgICAgICAgICAgICAgICAgKDpsaW5lLWNoZWNrZWQgMiA6bGluZS1hc3Nl cnQgNSA6Y29sdW1uLWNoZWNrZWQgMTggOmZhY2UgImNvbW1lbnQtZmFjZSIgOm5lZ2F0aW9uIG5p bCkpKSkpKSkKKyAgICAgICAgICAgICAgICAgICAgICcoKDpsaW5lLWNoZWNrZWQgMiA6bGluZS1h c3NlcnQgMyA6Y29sdW1uLWNoZWNrZWQgNCA6ZmFjZSBjb21tZW50LWZhY2UgOm5lZ2F0aW9uIG5p bCkKKyAgICAgICAgICAgICAgICAgICAgICAgKDpsaW5lLWNoZWNrZWQgMiA6bGluZS1hc3NlcnQg NCA6Y29sdW1uLWNoZWNrZWQgMTAgOmZhY2UgY29tbWVudC1mYWNlIDpuZWdhdGlvbiBuaWwpCisg ICAgICAgICAgICAgICAgICAgICAgICg6bGluZS1jaGVja2VkIDIgOmxpbmUtYXNzZXJ0IDUgOmNv bHVtbi1jaGVja2VkIDE4IDpmYWNlIGNvbW1lbnQtZmFjZSA6bmVnYXRpb24gbmlsKSkpKSkpKQoK CiAoZXJ0LWRlZnRlc3QgdGVzdC1wYXJzZS1jb21tZW50cy0tbXVsdGlsaW5lLWNvbW1lbnQtc2lu Z2xlICgpCkBAIC0zMDgsNyArMzU4LDcgQEAgdGVzdC1wYXJzZS1jb21tZW50cy0tbXVsdGlsaW5l LWNvbW1lbnQtc2luZ2xlCiAgICAgICAoc2V0cSBhc3NlcnRzIChlcnQtZm9udC1sb2NrLS1wYXJz ZS1jb21tZW50cykpCiAgICAgICAoc2hvdWxkIChlcWwgKGxlbmd0aCBhc3NlcnRzKSAxKSkKICAg ICAgIChzaG91bGQgKGVxdWFsIChjYXIgYXNzZXJ0cykKLSAgICAgICAgICAgICAgICAgICAgICco OmxpbmUtY2hlY2tlZCAzIDpsaW5lLWFzc2VydCA0IDpjb2x1bW4tY2hlY2tlZCAzIDpmYWNlICJj b21tZW50LWZhY2UiIDpuZWdhdGlvbiBuaWwpKSkpKSkKKyAgICAgICAgICAgICAgICAgICAgICco OmxpbmUtY2hlY2tlZCAzIDpsaW5lLWFzc2VydCA0IDpjb2x1bW4tY2hlY2tlZCAzIDpmYWNlIGNv bW1lbnQtZmFjZSA6bmVnYXRpb24gbmlsKSkpKSkpCgogKGVydC1kZWZ0ZXN0IHRlc3QtcGFyc2Ut Y29tbWVudHMtLW11bHRpbGluZS1jb21tZW50LW11bHRpcGxlICgpCiAgIChsZXQqICgoc3RyICIK QEAgLTMyNywxMyArMzc3LDMxIEBAIHRlc3QtcGFyc2UtY29tbWVudHMtLW11bHRpbGluZS1jb21t ZW50LW11bHRpcGxlCiAgICAgICAoc2V0cSBhc3NlcnRzIChlcnQtZm9udC1sb2NrLS1wYXJzZS1j b21tZW50cykpCiAgICAgICAoc2hvdWxkIChlcWwgKGxlbmd0aCBhc3NlcnRzKSAyKSkKICAgICAg IChzaG91bGQgKGVxdWFsIGFzc2VydHMKLSAgICAgICAgICAgICAgICAgICAgICcoKDpsaW5lLWNo ZWNrZWQgMyA6bGluZS1hc3NlcnQgNCA6Y29sdW1uLWNoZWNrZWQgMyA6ZmFjZSAiY29tbWVudC1m YWNlIiA6bmVnYXRpb24gbmlsKQotICAgICAgICAgICAgICAgICAgICAgICAoOmxpbmUtY2hlY2tl ZCA1IDpsaW5lLWFzc2VydCA2IDpjb2x1bW4tY2hlY2tlZCA0IDpmYWNlICJjb21tZW50LWZhY2Ui IDpuZWdhdGlvbiBuaWwpKSkpKSkpCisgICAgICAgICAgICAgICAgICAgICAnKCg6bGluZS1jaGVj a2VkIDMgOmxpbmUtYXNzZXJ0IDQgOmNvbHVtbi1jaGVja2VkIDMgOmZhY2UgY29tbWVudC1mYWNl IDpuZWdhdGlvbiBuaWwpCisgICAgICAgICAgICAgICAgICAgICAgICg6bGluZS1jaGVja2VkIDUg OmxpbmUtYXNzZXJ0IDYgOmNvbHVtbi1jaGVja2VkIDQgOmZhY2UgY29tbWVudC1mYWNlIDpuZWdh dGlvbiBuaWwpKSkpKSkpCgogOzs7IFN5bnRheCBoaWdobGlnaHRpbmcgYXNzZXJ0aW9uIHRlc3Rz CiA7OwoKLShlcnQtZGVmdGVzdCB0ZXN0LXN5bnRheC1oaWdobGlnaHQtaW5saW5lLS1jYXJldC1t dWx0aXBsZS1mYWNlcyAoKQorKGVydC1kZWZ0ZXN0IHRlc3Qtc3ludGF4LWhpZ2hsaWdodC1pbmxp bmUtLWZhY2UtbGlzdCAoKQorICAobGV0ICgoc3RyICIKK3ZhciBhYmMgPSBmdW5jdGlvbihkKSB7 CisvLyAgIF4gKHRlc3QtZmFjZS0yIHRlc3QtZmFjZS0xIGZvbnQtbG9jay12YXJpYWJsZS1uYW1l LWZhY2UpCit9OworCisiKSkKKyAgICAod2l0aC10ZW1wLWJ1ZmZlcgorICAgICAgKGluc2VydCBz dHIpCisgICAgICAoamF2YXNjcmlwdC1tb2RlKQorICAgICAgKGZvbnQtbG9jay1lbnN1cmUpCisK KyAgICAgIChhZGQtZmFjZS10ZXh0LXByb3BlcnR5IChwb2ludC1taW4pIChwb2ludC1tYXgpICd0 ZXN0LWZhY2UtMSkKKyAgICAgIChhZGQtZmFjZS10ZXh0LXByb3BlcnR5IChwb2ludC1taW4pIChw b2ludC1tYXgpICd0ZXN0LWZhY2UtMikKKworICAgICAgKGVydC1mb250LWxvY2stLWNoZWNrLWZh Y2VzCisgICAgICAgKGVydC1mb250LWxvY2stLXBhcnNlLWNvbW1lbnRzKSkpKSkKKworKGVydC1k ZWZ0ZXN0IHRlc3Qtc3ludGF4LWhpZ2hsaWdodC1pbmxpbmUtLWNhcmV0LW11bHRpcGxlLWFzc2Vy dGlvbnMgKCkKICAgKGxldCAoKHN0ciAiCiB2YXIgYWJjID0gZnVuY3Rpb24oZCkgewogLy8gICBe IGZvbnQtbG9jay12YXJpYWJsZS1uYW1lLWZhY2UKQEAgLTQ1NSw2ICs1MjMsMTIgQEAgdGVzdC1t YWNyby10ZXN0LS1maWxlCiAgIGphdmFzY3JpcHQtbW9kZQogICAiY29ycmVjdC5qcyIpCgorKGVy dC1mb250LWxvY2stZGVmdGVzdC1maWxlIHRlc3QtbWFjcm8tdGVzdC0tZmlsZS1uby1hc3NlcnRz CisgICAgIkNoZWNrIGZhaWxpbmcgb24gZmlsZXMgd2l0aG91dCBhc3NlcnRpb25zIgorICA6ZXhw ZWN0ZWQtcmVzdWx0IDpmYWlsZWQKKyAgamF2YXNjcmlwdC1tb2RlCisgICJuby1hc3NlcnRzLmpz IikKKwogKGVydC1mb250LWxvY2stZGVmdGVzdC1maWxlIHRlc3QtbWFjcm8tdGVzdC0tZmlsZS1m YWlsaW5nCiAgICAgIlRlc3QgcmVhZGluZyB3cm9uZyBhc3NlcnRpb25zIGZyb20gYSBmaWxlIgog ICA6ZXhwZWN0ZWQtcmVzdWx0IDpmYWlsZWQKLS0KMi4zNC4xCg== --000000000000d3ff4806137cc2f3--