From unknown Sat Aug 16 00:32:25 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#66759 <66759@debbugs.gnu.org> To: bug#66759 <66759@debbugs.gnu.org> Subject: Status: 30.0.50; Flymake (with Eglot) error cleaning up old overlay Reply-To: bug#66759 <66759@debbugs.gnu.org> Date: Sat, 16 Aug 2025 07:32:25 +0000 retitle 66759 30.0.50; Flymake (with Eglot) error cleaning up old overlay reassign 66759 emacs submitter 66759 Richard Copley severity 66759 normal thanks From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 26 08:10:58 2023 Received: (at submit) by debbugs.gnu.org; 26 Oct 2023 12:10:58 +0000 Received: from localhost ([127.0.0.1]:60740 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qvzCF-0005dX-Oh for submit@debbugs.gnu.org; Thu, 26 Oct 2023 08:10:58 -0400 Received: from lists.gnu.org ([2001:470:142::17]:38904) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qvzCB-0005dB-DX for submit@debbugs.gnu.org; Thu, 26 Oct 2023 08:10:42 -0400 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 1qvzBX-0003lv-Tp for bug-gnu-emacs@gnu.org; Thu, 26 Oct 2023 08:10:00 -0400 Received: from mail-ua1-x929.google.com ([2607:f8b0:4864:20::929]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qvzBD-0002nF-5T for bug-gnu-emacs@gnu.org; Thu, 26 Oct 2023 08:09:54 -0400 Received: by mail-ua1-x929.google.com with SMTP id a1e0cc1a2514c-7ae19da7b79so373352241.2 for ; Thu, 26 Oct 2023 05:09:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698322176; x=1698926976; darn=gnu.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=zKvE7xI3QAvIgMZ7LJxs/4NL2CU9mWVRPbBAZx9VELg=; b=h/3efy4YNQEm173Ktd42DCV/C7sp/78SLl0j/BWV12tWKTO4XQGNkNyaH8cD8ke0T4 2wzfki7nHMMg9a6gdXQppSlRdxQ6cNcyTnO244SAyGUY0MmGAOu7mgbIQzlBnJ8UoDZK dyAPqp/+n5XWcfvmMhVqktspv5fwQ4ZYod7Zc7Ln/Gy2rJ33W81dybo6mjUHx34KqPHF KIR/yJnmLUivgddCc2dYXEYMyfPgZ5cqNSnqnMBYFW1vLzgwdSeAXm7qvT69bITA4GrS jGBmUXLyZIy+TBdfrvE7itzqc8kxZL4OMa+TqtC8Gmq0X7FE/cH3eE1ej5cWXnJYcWBl xYaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698322176; x=1698926976; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=zKvE7xI3QAvIgMZ7LJxs/4NL2CU9mWVRPbBAZx9VELg=; b=qBm6jygiv13KUSLZBM4R1sq3L8qRFqXgjeliEiHml/71sCJbQ0A8u+eIqk5jcAupRJ khhbl5ldZbrbb7tQYiGARTx342Z6S64t4U2hN+CnuA65D06lECYLjuEUC3ZeDDSlFj8R smC8hZNanPkuPtFcJGRgwPGumK16E2qsvYtCe+XjjjRsR6AObrXMuQPS2oKUnXAgfqaP mLuLmVV1hr7kw5sruOnSPVrYGO+IF62Ide+4nIt5nrGOhMVa+t8U19CQi+IdO7IFOh7v GzwRgQM1mzjF9i7EN0eT/GR1TSaMlZdFkUlxRoDUb5J5qg+BrY2ECg7y9xdiXF7O1cRX VTWg== X-Gm-Message-State: AOJu0Yx637ffY76kLYy56wt/1ewkPHKSWgGT+6gjMetuZS2GMXPAG+aW t4dhv7PzfAhm+rhKmem7s5zxvQ4bMUGNvgHxJoZ3Fi+qAFw= X-Google-Smtp-Source: AGHT+IGsmC5ye5tFB0nZKIQIH4pFjOOHNt+w8TXJmcjwRGExnvGw5KSCIBaiNDNkINdfvmiUgvW1He+RM56x21SB/Jk= X-Received: by 2002:a1f:1dcf:0:b0:49a:7a5b:dab2 with SMTP id d198-20020a1f1dcf000000b0049a7a5bdab2mr14856335vkd.16.1698322175999; Thu, 26 Oct 2023 05:09:35 -0700 (PDT) MIME-Version: 1.0 From: Richard Copley Date: Thu, 26 Oct 2023 13:09:07 +0100 Message-ID: Subject: 30.0.50; Flymake (with Eglot) error cleaning up old overlay To: bug-gnu-emacs@gnu.org, =?UTF-8?B?Sm/Do28gVMOhdm9yYQ==?= Content-Type: multipart/mixed; boundary="00000000000004111706089d72c6" Received-SPF: pass client-ip=2607:f8b0:4864:20::929; envelope-from=rcopley@gmail.com; helo=mail-ua1-x929.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) --00000000000004111706089d72c6 Content-Type: text/plain; charset="UTF-8" I'm afraid I'm unable to consistently reproduce this error. I hope you can see the issue and devise a testcase from the following description. The function `flymake--publish-diagnostics' runs in two phases. In phase 1 it deletes all the overlays referenced by the (now stale) existing diagnostics. In phase 2 it creates new overlays for the newly published diagnostics. Phase 1 invokes `overlay-buffer' on the value of the :overlay property of each diagnostic. This signals `wrong-type-argument' if the value is nil. Phase 2 intends to set the :overlay property of each diagnostic by calling `flymake--highlight-line'. The function `flymake--highlight-line' may return without setting the :overlay property. For example: (when (= (overlay-start ov) (overlay-end ov)) ;; Some backends report diagnostics with invalid bounds. Don't ;; bother. (delete-overlay ov) (debug) ;; -- SEE BELOW (last line) (cl-return-from flymake--highlight-line nil)) This is likely to occur when `flymake-start` is called by the idle timer, if there was a diagnostic near the end of the file and the user has just made the file shorter. In that case, phase 2 inserts a diagnostic with a null overlay into `flymake--state-diags'. When `flymake--stated-diags' contains a diagnostic with a null overlay, the next call to `flymake--publish-diagnostics' signals `wrong-type-argument' during phase 1. If this next call also has `flymake-start' in its call stack, the signal is caught in `flymake--run-backend', which disables the backend. If the backend continues to call its reporting function (as does Eglot whenever the language server publishes diagnostics), this leads to a flood of "Unexpected report from disabled backend %s" errors and an unusable Emacs session. A possible fix is to check if `flymake--highlight-line' created an overlay before inserting a diagnostic into `flymake--state-diags', in phase 2. Another is to check that the :overlay property is not null before attempting to examine and delete the overlay, in phase 1. Attached is a backtrace from a real-life occurrence of the issue, obtained by inserting `(debug)' (SEE ABOVE (quoted code)). --00000000000004111706089d72c6 Content-Type: text/plain; charset="UTF-8"; name="backtrace.txt" Content-Disposition: attachment; filename="backtrace.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lo750iyy0 LSotIGNvZGluZzogdXRmLTg7IC0qLQ0KOzsgTm90ZTogKGJ1ZmZlci1zaXplKSBpcyA0NDQ3DQpE ZWJ1Z2dlciBlbnRlcmVkOiBuaWwNCiAgKHByb2duIChkZWxldGUtb3ZlcmxheSBvdikgKGRlYnVn KSAodGhyb3cgJy0tY2wtYmxvY2stZmx5bWFrZS0taGlnaGxpZ2h0LWxpbmUtLSBuaWwpKQ0KICAo aWYgKD0gKG92ZXJsYXktc3RhcnQgb3YpIChvdmVybGF5LWVuZCBvdikpIChwcm9nbiAoZGVsZXRl LW92ZXJsYXkgb3YpIChkZWJ1ZykgKHRocm93ICctLWNsLWJsb2NrLWZseW1ha2UtLWhpZ2hsaWdo dC1saW5lLS0gbmlsKSkpDQogIChsZXQqICgodHlwZSAob3IgKGZseW1ha2UtZGlhZ25vc3RpYy10 eXBlIGRpYWdub3N0aWMpIDplcnJvcikpIChiZWcgKGxldCogKChjbC14IGRpYWdub3N0aWMpKSAo cHJvZ24gKG9yIChsZXQqICguLi4pIChwcm9nbiAuLi4pKSAoc2lnbmFsICd3cm9uZy10eXBlLWFy Z3VtZW50IChsaXN0IC4uLiBjbC14KSkpIChhcmVmIGNsLXggMikpKSkgKGVuZCAobGV0KiAoKGNs LXggZGlhZ25vc3RpYykpIChwcm9nbiAob3IgKGxldCogKC4uLikgKHByb2duIC4uLikpIChzaWdu YWwgJ3dyb25nLXR5cGUtYXJndW1lbnQgKGxpc3QgLi4uIGNsLXgpKSkgKGFyZWYgY2wteCAzKSkp KSAoY29udmVydCAjJyhsYW1iZGEgKGNlbGwpIChmbHltYWtlLWRpYWctcmVnaW9uIChjdXJyZW50 LWJ1ZmZlcikgKGNhciBjZWxsKSAoY2RyIGNlbGwpKSkpIG92KSAoY29uZCAoKGFuZCAoY29uc3Ag YmVnKSAobm90IChudWxsIGVuZCkpKSAoc2V0cSBiZWcgKGNhciAoZnVuY2FsbCBjb252ZXJ0IGJl ZykpKSAoaWYgKGNvbnNwIGVuZCkgKHByb2duIChzZXRxIGVuZCAoY2FyIChmdW5jYWxsIGNvbnZl cnQgZW5kKSkpKSkpICgoY29uc3AgYmVnKSAobGV0KiAoKGIgKGZ1bmNhbGwgY29udmVydCBiZWcp KSAoYSAoaWYgYiAoY2FyLXNhZmUgLi4uKSAoc2lnbmFsIC4uLiAuLi4pKSkpIChwcm9nbiAoc2V0 cSBiZWcgYSkgKHNldHEgZW5kIGIpKSkpKSAocHJvZ24gKGxldCogKChjbC14IGRpYWdub3N0aWMp KSAob3IgKGxldCogKChjbC14IGNsLXgpKSAocHJvZ24gKGFuZCAobWVtcSAuLi4gY2wtc3RydWN0 LWZseW1ha2UtLWRpYWctdGFncykgdCkpKSAoc2lnbmFsICd3cm9uZy10eXBlLWFyZ3VtZW50IChs aXN0ICdmbHltYWtlLS1kaWFnIGNsLXgpKSkgKGxldCogKCh2IGNsLXgpKSAoYXNldCB2IDIgYmVn KSkpIChsZXQqICgoY2wteCBkaWFnbm9zdGljKSkgKG9yIChsZXQqICgoY2wteCBjbC14KSkgKHBy b2duIChhbmQgKG1lbXEgLi4uIGNsLXN0cnVjdC1mbHltYWtlLS1kaWFnLXRhZ3MpIHQpKSkgKHNp Z25hbCAnd3JvbmctdHlwZS1hcmd1bWVudCAobGlzdCAnZmx5bWFrZS0tZGlhZyBjbC14KSkpIChs ZXQqICgodiBjbC14KSkgKGFzZXQgdiAzIGVuZCkpKSkgKGxldCogKCgtLWNsLXZhci0tIChmbHlt YWtlLWRpYWdub3N0aWNzIGJlZyBlbmQpKSAoZSBuaWwpIChlb3YgbmlsKSAoLS1jbC12YXItLSB0 KSkgKHdoaWxlIChjb25zcCAtLWNsLXZhci0tKSAoc2V0cSBlIChjYXIgLS1jbC12YXItLSkpIChz ZXRxIGVvdiAobGV0KiAoKGNsLXggZSkpIChwcm9nbiAob3IgKGxldCogLi4uIC4uLikgKHNpZ25h bCAuLi4gLi4uKSkgKGFyZWYgY2wteCA5KSkpKSAoaWYgKGZseW1ha2UtLWVxdWFsLWRpYWdub3N0 aWMtcCBlIGRpYWdub3N0aWMpIChwcm9nbiAoaWYgZm9yZWlnbiAocHJvZ24gKGRlYnVnKSAodGhy b3cgLi4uIG5pbCkpIChwcm9nbiAobGV0KiAuLi4gLi4uIC4uLikgKGxldCogLi4uIC4uLiAuLi4p KSAoZmx5bWFrZS0tZGVsZXRlLW92ZXJsYXkgZW92KSkpKSAoc2V0cSAtLWNsLXZhci0tIChjZHIg LS1jbC12YXItLSkpIChzZXRxIC0tY2wtdmFyLS0gbmlsKSkgbmlsKSAoc2V0cSBvdiAobWFrZS1v dmVybGF5IGJlZyBlbmQpKSAoaWYgKD0gKG92ZXJsYXktc3RhcnQgb3YpIChvdmVybGF5LWVuZCBv dikpIChwcm9nbiAoZGVsZXRlLW92ZXJsYXkgb3YpIChkZWJ1ZykgKHRocm93ICctLWNsLWJsb2Nr LWZseW1ha2UtLWhpZ2hsaWdodC1saW5lLS0gbmlsKSkpIChwcm9nbiAobGV0KiAoKGNsLXggZGlh Z25vc3RpYykpIChvciAobGV0KiAoKGNsLXggY2wteCkpIChwcm9nbiAoYW5kIChtZW1xIC4uLiBj bC1zdHJ1Y3QtZmx5bWFrZS0tZGlhZy10YWdzKSB0KSkpIChzaWduYWwgJ3dyb25nLXR5cGUtYXJn dW1lbnQgKGxpc3QgJ2ZseW1ha2UtLWRpYWcgY2wteCkpKSAobGV0KiAoKHYgY2wteCkpIChhc2V0 IHYgMiAob3ZlcmxheS1zdGFydCBvdikpKSkgKGxldCogKChjbC14IGRpYWdub3N0aWMpKSAob3Ig KGxldCogKChjbC14IGNsLXgpKSAocHJvZ24gKGFuZCAobWVtcSAuLi4gY2wtc3RydWN0LWZseW1h a2UtLWRpYWctdGFncykgdCkpKSAoc2lnbmFsICd3cm9uZy10eXBlLWFyZ3VtZW50IChsaXN0ICdm bHltYWtlLS1kaWFnIGNsLXgpKSkgKGxldCogKCh2IGNsLXgpKSAoYXNldCB2IDMgKG92ZXJsYXkt ZW5kIG92KSkpKSkgKG92ZXJsYXktcHV0IG92ICdjYXRlZ29yeSAoZmx5bWFrZS0tbG9va3VwLXR5 cGUtcHJvcGVydHkgdHlwZSAnZmx5bWFrZS1jYXRlZ29yeSkpIChsZXQqICgoLS1jbC12YXItLSAo YXBwZW5kIChyZXZlcnNlIChsZXQqICguLi4pIChwcm9nbiAuLi4gLi4uKSkpIChyZXZlcnNlIChm bHltYWtlLS1sb29rdXAtdHlwZS1wcm9wZXJ0eSB0eXBlICdmbHltYWtlLW92ZXJsYXktY29udHJv bCkpIChhbGlzdC1nZXQgdHlwZSBmbHltYWtlLWRpYWdub3N0aWMtdHlwZXMtYWxpc3QpKSkgKHZh bHVlIG5pbCkgKG92LXByb3AgbmlsKSkgKHdoaWxlIChjb25zcCAtLWNsLXZhci0tKSAocHJvZ24g KHNldHEgdmFsdWUgKGNhciAtLWNsLXZhci0tKSkgKHNldHEgb3YtcHJvcCAoY2FyLXNhZmUgKHBy b2cxIHZhbHVlIChzZXRxIHZhbHVlIC4uLikpKSkpIChvdmVybGF5LXB1dCBvdiBvdi1wcm9wIHZh bHVlKSAoc2V0cSAtLWNsLXZhci0tIChjZHIgLS1jbC12YXItLSkpKSBuaWwpIChsZXQqICgoLS1j bC1kZWZhdWx0LW1heWJlLS0gIycobGFtYmRhIChwcm9wIHZhbHVlKSAoaWYgKHBsaXN0LW1lbWJl ciAuLi4gcHJvcCkgbmlsIChvdmVybGF5LXB1dCBvdiBwcm9wIC4uLikpKSkpIChwcm9nbiAoZnVu Y2FsbCAtLWNsLWRlZmF1bHQtbWF5YmUtLSAnZmFjZSAnZmx5bWFrZS1lcnJvcikgKGZ1bmNhbGwg LS1jbC1kZWZhdWx0LW1heWJlLS0gJ2JlZm9yZS1zdHJpbmcgKGZseW1ha2UtLWZyaW5nZS1vdmVy bGF5LXNwZWMgKGZseW1ha2UtLWxvb2t1cC10eXBlLXByb3BlcnR5IHR5cGUgJ2ZseW1ha2UtYml0 bWFwIChhbGlzdC1nZXQgJ2JpdG1hcCAoYWxpc3QtZ2V0IHR5cGUgZmx5bWFrZS1kaWFnbm9zdGlj LXR5cGVzLWFsaXN0KSkpKSkgKGZ1bmNhbGwgLS1jbC1kZWZhdWx0LW1heWJlLS0gJ2hlbHAtZWNo byAjJyhsYW1iZGEgKHdpbmRvdyBfb3YgcG9zKSAobGV0ICguLi4pIChzYXZlLWN1cnJlbnQtYnVm ZmVyIC4uLikpKSkgKGZ1bmNhbGwgLS1jbC1kZWZhdWx0LW1heWJlLS0gJ3NldmVyaXR5ICh3YXJu aW5nLW51bWVyaWMtbGV2ZWwgOmVycm9yKSkgKGZ1bmNhbGwgLS1jbC1kZWZhdWx0LW1heWJlLS0g J3ByaW9yaXR5IChjb25zIG5pbCAoKyA0MCAob3ZlcmxheS1nZXQgb3YgJ3NldmVyaXR5KSkpKSkp IChvdmVybGF5LXB1dCBvdiAnZXZhcG9yYXRlIHQpIChvdmVybGF5LXB1dCBvdiAnZmx5bWFrZS1v dmVybGF5IHQpIChvdmVybGF5LXB1dCBvdiAnZmx5bWFrZS1kaWFnbm9zdGljIGRpYWdub3N0aWMp IChsZXQqICgoY2wteCBkaWFnbm9zdGljKSkgKG9yIChsZXQqICgoY2wteCBjbC14KSkgKHByb2du IChhbmQgKG1lbXEgKHR5cGUtb2YgY2wteCkgY2wtc3RydWN0LWZseW1ha2UtLWRpYWctdGFncykg dCkpKSAoc2lnbmFsICd3cm9uZy10eXBlLWFyZ3VtZW50IChsaXN0ICdmbHltYWtlLS1kaWFnIGNs LXgpKSkgKGxldCogKCh2IGNsLXgpKSAoYXNldCB2IDkgb3YpKSkgKGlmIGZseW1ha2Utc2hvdy1k aWFnbm9zdGljcy1hdC1lbmQtb2YtbGluZSAocHJvZ24gKHNhdmUtZXhjdXJzaW9uIChnb3RvLWNo YXIgKG92ZXJsYXktc3RhcnQgb3YpKSAobGV0KiAoKHN0YXJ0IChsaW5lLWVuZC1wb3NpdGlvbikp IChlbmQgKG1pbiAuLi4gLi4uKSkgKGVvbG92IChjYXIgLi4uKSkpIChpZiBlb2xvdiAobGV0KiAo Li4uKSAob3ZlcmxheS1wdXQgdiAuLi4gLi4uKSkgKHNldHEgZW9sb3YgKG1ha2Utb3ZlcmxheSBz dGFydCBlbmQgbmlsIHQgbmlsKSkgKG92ZXJsYXktcHV0IGVvbG92ICdmbHltYWtlLW92ZXJsYXkg dCkgKG92ZXJsYXktcHV0IGVvbG92ICdmbHltYWtlLS1lb2wtb3ZlcmxheSB0KSAob3ZlcmxheS1w dXQgZW9sb3YgJ2ZseW1ha2UtZW9sLXNvdXJjZS1vdmVybGF5cyAobGlzdCBvdikpIChvdmVybGF5 LXB1dCBlb2xvdiAnZXZhcG9yYXRlIChub3QgLi4uKSkpIChvdmVybGF5LXB1dCBvdiAnZW9sLW92 IGVvbG92KSkpKSkgKGlmIG92IG5pbCAoZGVidWcpKSBvdikNCiAgKGNhdGNoICctLWNsLWJsb2Nr LWZseW1ha2UtLWhpZ2hsaWdodC1saW5lLS0gKGxldCogKCh0eXBlIChvciAoZmx5bWFrZS1kaWFn bm9zdGljLXR5cGUgZGlhZ25vc3RpYykgOmVycm9yKSkgKGJlZyAobGV0KiAoKGNsLXggZGlhZ25v c3RpYykpIChwcm9nbiAob3IgKGxldCogLi4uIC4uLikgKHNpZ25hbCAuLi4gLi4uKSkgKGFyZWYg Y2wteCAyKSkpKSAoZW5kIChsZXQqICgoY2wteCBkaWFnbm9zdGljKSkgKHByb2duIChvciAobGV0 KiAuLi4gLi4uKSAoc2lnbmFsIC4uLiAuLi4pKSAoYXJlZiBjbC14IDMpKSkpIChjb252ZXJ0ICMn KGxhbWJkYSAoY2VsbCkgKGZseW1ha2UtZGlhZy1yZWdpb24gKGN1cnJlbnQtYnVmZmVyKSAoY2Fy IGNlbGwpIChjZHIgY2VsbCkpKSkgb3YpIChjb25kICgoYW5kIChjb25zcCBiZWcpIChub3QgKG51 bGwgZW5kKSkpIChzZXRxIGJlZyAoY2FyIChmdW5jYWxsIGNvbnZlcnQgYmVnKSkpIChpZiAoY29u c3AgZW5kKSAocHJvZ24gKHNldHEgZW5kIChjYXIgLi4uKSkpKSkgKChjb25zcCBiZWcpIChsZXQq ICgoYiAoZnVuY2FsbCBjb252ZXJ0IGJlZykpIChhIChpZiBiIC4uLiAuLi4pKSkgKHByb2duIChz ZXRxIGJlZyBhKSAoc2V0cSBlbmQgYikpKSkpIChwcm9nbiAobGV0KiAoKGNsLXggZGlhZ25vc3Rp YykpIChvciAobGV0KiAoKGNsLXggY2wteCkpIChwcm9nbiAoYW5kIC4uLiB0KSkpIChzaWduYWwg J3dyb25nLXR5cGUtYXJndW1lbnQgKGxpc3QgJ2ZseW1ha2UtLWRpYWcgY2wteCkpKSAobGV0KiAo KHYgY2wteCkpIChhc2V0IHYgMiBiZWcpKSkgKGxldCogKChjbC14IGRpYWdub3N0aWMpKSAob3Ig KGxldCogKChjbC14IGNsLXgpKSAocHJvZ24gKGFuZCAuLi4gdCkpKSAoc2lnbmFsICd3cm9uZy10 eXBlLWFyZ3VtZW50IChsaXN0ICdmbHltYWtlLS1kaWFnIGNsLXgpKSkgKGxldCogKCh2IGNsLXgp KSAoYXNldCB2IDMgZW5kKSkpKSAobGV0KiAoKC0tY2wtdmFyLS0gKGZseW1ha2UtZGlhZ25vc3Rp Y3MgYmVnIGVuZCkpIChlIG5pbCkgKGVvdiBuaWwpICgtLWNsLXZhci0tIHQpKSAod2hpbGUgKGNv bnNwIC0tY2wtdmFyLS0pIChzZXRxIGUgKGNhciAtLWNsLXZhci0tKSkgKHNldHEgZW92IChsZXQq ICgoY2wteCBlKSkgKHByb2duIChvciAuLi4gLi4uKSAoYXJlZiBjbC14IDkpKSkpIChpZiAoZmx5 bWFrZS0tZXF1YWwtZGlhZ25vc3RpYy1wIGUgZGlhZ25vc3RpYykgKHByb2duIChpZiBmb3JlaWdu IChwcm9nbiAuLi4gLi4uKSAocHJvZ24gLi4uIC4uLikgKGZseW1ha2UtLWRlbGV0ZS1vdmVybGF5 IGVvdikpKSkgKHNldHEgLS1jbC12YXItLSAoY2RyIC0tY2wtdmFyLS0pKSAoc2V0cSAtLWNsLXZh ci0tIG5pbCkpIG5pbCkgKHNldHEgb3YgKG1ha2Utb3ZlcmxheSBiZWcgZW5kKSkgKGlmICg9IChv dmVybGF5LXN0YXJ0IG92KSAob3ZlcmxheS1lbmQgb3YpKSAocHJvZ24gKGRlbGV0ZS1vdmVybGF5 IG92KSAoZGVidWcpICh0aHJvdyAnLS1jbC1ibG9jay1mbHltYWtlLS1oaWdobGlnaHQtbGluZS0t IG5pbCkpKSAocHJvZ24gKGxldCogKChjbC14IGRpYWdub3N0aWMpKSAob3IgKGxldCogKChjbC14 IGNsLXgpKSAocHJvZ24gKGFuZCAuLi4gdCkpKSAoc2lnbmFsICd3cm9uZy10eXBlLWFyZ3VtZW50 IChsaXN0ICdmbHltYWtlLS1kaWFnIGNsLXgpKSkgKGxldCogKCh2IGNsLXgpKSAoYXNldCB2IDIg KG92ZXJsYXktc3RhcnQgb3YpKSkpIChsZXQqICgoY2wteCBkaWFnbm9zdGljKSkgKG9yIChsZXQq ICgoY2wteCBjbC14KSkgKHByb2duIChhbmQgLi4uIHQpKSkgKHNpZ25hbCAnd3JvbmctdHlwZS1h cmd1bWVudCAobGlzdCAnZmx5bWFrZS0tZGlhZyBjbC14KSkpIChsZXQqICgodiBjbC14KSkgKGFz ZXQgdiAzIChvdmVybGF5LWVuZCBvdikpKSkpIChvdmVybGF5LXB1dCBvdiAnY2F0ZWdvcnkgKGZs eW1ha2UtLWxvb2t1cC10eXBlLXByb3BlcnR5IHR5cGUgJ2ZseW1ha2UtY2F0ZWdvcnkpKSAobGV0 KiAoKC0tY2wtdmFyLS0gKGFwcGVuZCAocmV2ZXJzZSAobGV0KiAuLi4gLi4uKSkgKHJldmVyc2Ug KGZseW1ha2UtLWxvb2t1cC10eXBlLXByb3BlcnR5IHR5cGUgLi4uKSkgKGFsaXN0LWdldCB0eXBl IGZseW1ha2UtZGlhZ25vc3RpYy10eXBlcy1hbGlzdCkpKSAodmFsdWUgbmlsKSAob3YtcHJvcCBu aWwpKSAod2hpbGUgKGNvbnNwIC0tY2wtdmFyLS0pIChwcm9nbiAoc2V0cSB2YWx1ZSAoY2FyIC0t Y2wtdmFyLS0pKSAoc2V0cSBvdi1wcm9wIChjYXItc2FmZSAocHJvZzEgdmFsdWUgLi4uKSkpKSAo b3ZlcmxheS1wdXQgb3Ygb3YtcHJvcCB2YWx1ZSkgKHNldHEgLS1jbC12YXItLSAoY2RyIC0tY2wt dmFyLS0pKSkgbmlsKSAobGV0KiAoKC0tY2wtZGVmYXVsdC1tYXliZS0tICMnKGxhbWJkYSAocHJv cCB2YWx1ZSkgKGlmIC4uLiBuaWwgLi4uKSkpKSAocHJvZ24gKGZ1bmNhbGwgLS1jbC1kZWZhdWx0 LW1heWJlLS0gJ2ZhY2UgJ2ZseW1ha2UtZXJyb3IpIChmdW5jYWxsIC0tY2wtZGVmYXVsdC1tYXli ZS0tICdiZWZvcmUtc3RyaW5nIChmbHltYWtlLS1mcmluZ2Utb3ZlcmxheS1zcGVjIChmbHltYWtl LS1sb29rdXAtdHlwZS1wcm9wZXJ0eSB0eXBlICdmbHltYWtlLWJpdG1hcCAoYWxpc3QtZ2V0IC4u LiAuLi4pKSkpIChmdW5jYWxsIC0tY2wtZGVmYXVsdC1tYXliZS0tICdoZWxwLWVjaG8gIycobGFt YmRhICh3aW5kb3cgX292IHBvcykgKGxldCAuLi4gLi4uKSkpIChmdW5jYWxsIC0tY2wtZGVmYXVs dC1tYXliZS0tICdzZXZlcml0eSAod2FybmluZy1udW1lcmljLWxldmVsIDplcnJvcikpIChmdW5j YWxsIC0tY2wtZGVmYXVsdC1tYXliZS0tICdwcmlvcml0eSAoY29ucyBuaWwgKCsgNDAgKG92ZXJs YXktZ2V0IG92IC4uLikpKSkpKSAob3ZlcmxheS1wdXQgb3YgJ2V2YXBvcmF0ZSB0KSAob3Zlcmxh eS1wdXQgb3YgJ2ZseW1ha2Utb3ZlcmxheSB0KSAob3ZlcmxheS1wdXQgb3YgJ2ZseW1ha2UtZGlh Z25vc3RpYyBkaWFnbm9zdGljKSAobGV0KiAoKGNsLXggZGlhZ25vc3RpYykpIChvciAobGV0KiAo KGNsLXggY2wteCkpIChwcm9nbiAoYW5kIChtZW1xIC4uLiBjbC1zdHJ1Y3QtZmx5bWFrZS0tZGlh Zy10YWdzKSB0KSkpIChzaWduYWwgJ3dyb25nLXR5cGUtYXJndW1lbnQgKGxpc3QgJ2ZseW1ha2Ut LWRpYWcgY2wteCkpKSAobGV0KiAoKHYgY2wteCkpIChhc2V0IHYgOSBvdikpKSAoaWYgZmx5bWFr ZS1zaG93LWRpYWdub3N0aWNzLWF0LWVuZC1vZi1saW5lIChwcm9nbiAoc2F2ZS1leGN1cnNpb24g KGdvdG8tY2hhciAob3ZlcmxheS1zdGFydCBvdikpIChsZXQqICgoc3RhcnQgLi4uKSAoZW5kIC4u LikgKGVvbG92IC4uLikpIChpZiBlb2xvdiAobGV0KiAuLi4gLi4uKSAoc2V0cSBlb2xvdiAuLi4p IChvdmVybGF5LXB1dCBlb2xvdiAuLi4gdCkgKG92ZXJsYXktcHV0IGVvbG92IC4uLiB0KSAob3Zl cmxheS1wdXQgZW9sb3YgLi4uIC4uLikgKG92ZXJsYXktcHV0IGVvbG92IC4uLiAuLi4pKSAob3Zl cmxheS1wdXQgb3YgJ2VvbC1vdiBlb2xvdikpKSkpIChpZiBvdiBuaWwgKGRlYnVnKSkgb3YpKQ0K ICBmbHltYWtlLS1oaWdobGlnaHQtbGluZSgjcyhmbHltYWtlLS1kaWFnIDpsb2N1cyAjPGJ1ZmZl ciBHcmFkZXMubGVhbj4gOmJlZyA0NDYyIDplbmQgNDQ2NiA6dHlwZSBlZ2xvdC1lcnJvciA6dGV4 dCAiTGVhbiA0OiB1bnNvbHZlZCBnb2Fsc1xuY2FzZSBtcHJcblYgOiBUeXBlIHVfMVxuaW5zdOKc ncK5IDogQWRkQ29tbUdyb3VwIFZcbmluc3TinJ0gOiBNb2R1bGUg4oSdIFZcbmsgOiDihJVcbnQg OiBGaW4gayDihpIgVlxu4oqiICjiiIAgKHMgOiBGaW5zZXQgKEZpbiBrKSkgKGcgOiBGaW4gayDi hpIg4oSdKSwgKEZpbnNldC5zdW0gcyBmdW4gaSA9PiBnIGkg4oCiIHQgaSkgPSAwIOKGkiDiiIAg KGkgOiBGaW4gayksIGkg4oiIIHMg4oaSIGcgaSA9IDApIOKGklxuICAgIOKGkShibGFkZSBWIHQp IOKJoCAwIiA6YmFja2VuZCBlZ2xvdC1mbHltYWtlLWJhY2tlbmQgOmRhdGEgKChlZ2xvdC1sc3At ZGlhZyA6c291cmNlICJMZWFuIDQiIDpzZXZlcml0eSAxIDpyYW5nZSAoOnN0YXJ0ICg6bGluZSAx MDkgOmNoYXJhY3RlciA0KSA6ZW5kICg6bGluZSAxMDkgOmNoYXJhY3RlciA4KSkgOm1lc3NhZ2Ug InVuc29sdmVkIGdvYWxzXG5jYXNlIG1wclxuViA6IFR5cGUgdV8xXG5pbnN04pydwrkgOiBBZGRD b21tR3JvdXAgVlxuaW5zdOKcnSA6IE1vZHVsZSDihJ0gVlxuayA6IOKElVxudCA6IEZpbiBrIOKG kiBWXG7iiqIgKOKIgCAocyA6IEZpbnNldCAoRmluIGspKSAoZyA6IEZpbiBrIOKGkiDihJ0pLCAo Rmluc2V0LnN1bSBzIGZ1biBpID0+IGcgaSDigKIgdCBpKSA9IDAg4oaSIOKIgCAoaSA6IEZpbiBr KSwgaSDiiIggcyDihpIgZyBpID0gMCkg4oaSXG4gICAg4oaRKGJsYWRlIFYgdCkg4omgIDAiIDpm dWxsUmFuZ2UgKDpzdGFydCAoOmxpbmUgMTA5IDpjaGFyYWN0ZXIgNCkgOmVuZCAoOmxpbmUgMTA5 IDpjaGFyYWN0ZXIgOCkpKSkgOm92ZXJsYXktcHJvcGVydGllcyBuaWwgOm92ZXJsYXkgIzxvdmVy bGF5IGluIG5vIGJ1ZmZlcj4gOm9yaWctYmVnIDQ0NjIgOm9yaWctZW5kIDQ0NjYpKQ0KICAoY29u ZCAoKGVxIGxvY3VzIChjdXJyZW50LWJ1ZmZlcikpIChsZXQqICgoY2wteCBzdGF0ZSkpIChvciAo bGV0KiAoKGNsLXggY2wteCkpIChwcm9nbiAoYW5kIChtZW1xIC4uLiBjbC1zdHJ1Y3QtZmx5bWFr ZS0tc3RhdGUtdGFncykgdCkpKSAoc2lnbmFsICd3cm9uZy10eXBlLWFyZ3VtZW50IChsaXN0ICdm bHltYWtlLS1zdGF0ZSBjbC14KSkpIChsZXQqICgodiBjbC14KSkgKGFzZXQgdiA0IChjb25zIGQg KGFyZWYgdiA0KSkpKSkgKGZseW1ha2UtLWhpZ2hsaWdodC1saW5lIGQpKSAodCAoaWYgKG9yIChi dWZmZXItbGl2ZS1wIGxvY3VzKSAoc2V0cSBsb2N1cyAoZmluZC1idWZmZXItdmlzaXRpbmcgbG9j dXMpKSkgKHByb2duIChzYXZlLWN1cnJlbnQtYnVmZmVyIChzZXQtYnVmZmVyIGxvY3VzKSAoaWYg Zmx5bWFrZS1tb2RlIChwcm9nbiAoZmx5bWFrZS0taGlnaGxpZ2h0LWxpbmUgZCAuLi4pKSkgKGxl dCogKChjbC14IGQpKSAob3IgKGxldCogLi4uIC4uLikgKHNpZ25hbCAuLi4gLi4uKSkgKGxldCog KC4uLikgKGFzZXQgdiAxIC4uLikpKSkpKSAocHJvZ24gKG9yIChzdHJpbmdwIChsZXQqICgoY2wt eCBkKSkgKHByb2duIChvciAuLi4gLi4uKSAoYXJlZiBjbC14IDEpKSkpIChjbC0tYXNzZXJ0aW9u LWZhaWxlZCAnKHN0cmluZ3AgKGZseW1ha2UtLWRpYWctbG9jdXMgZCkpKSkgbmlsKSAobGV0KiAo KHYgKGxldCogKChjbC14IGQpKSAocHJvZ24gKG9yIC4uLiAuLi4pIChhcmVmIGNsLXggMSkpKSkg KHYgKGxldCogKChjbC14IHN0YXRlKSkgKHByb2duIChvciAuLi4gLi4uKSAoYXJlZiBjbC14IDUp KSkpKSAocHV0aGFzaCB2IChjb25zIGQgKGdldGhhc2ggdiB2KSkgdikpKSkNCiAgKHdoaWxlIChj b25zcCAtLWNsLXZhci0tKSAoc2V0cSBkIChjYXIgLS1jbC12YXItLSkpIChzZXRxIGxvY3VzIChs ZXQqICgoY2wteCBkKSkgKHByb2duIChvciAobGV0KiAoKGNsLXggY2wteCkpIChwcm9nbiAoYW5k IC4uLiB0KSkpIChzaWduYWwgJ3dyb25nLXR5cGUtYXJndW1lbnQgKGxpc3QgJ2ZseW1ha2UtLWRp YWcgY2wteCkpKSAoYXJlZiBjbC14IDEpKSkpIChjb25kICgoZXEgbG9jdXMgKGN1cnJlbnQtYnVm ZmVyKSkgKGxldCogKChjbC14IHN0YXRlKSkgKG9yIChsZXQqICgoY2wteCBjbC14KSkgKHByb2du IChhbmQgLi4uIHQpKSkgKHNpZ25hbCAnd3JvbmctdHlwZS1hcmd1bWVudCAobGlzdCAnZmx5bWFr ZS0tc3RhdGUgY2wteCkpKSAobGV0KiAoKHYgY2wteCkpIChhc2V0IHYgNCAoY29ucyBkIChhcmVm IHYgNCkpKSkpIChmbHltYWtlLS1oaWdobGlnaHQtbGluZSBkKSkgKHQgKGlmIChvciAoYnVmZmVy LWxpdmUtcCBsb2N1cykgKHNldHEgbG9jdXMgKGZpbmQtYnVmZmVyLXZpc2l0aW5nIGxvY3VzKSkp IChwcm9nbiAoc2F2ZS1jdXJyZW50LWJ1ZmZlciAoc2V0LWJ1ZmZlciBsb2N1cykgKGlmIGZseW1h a2UtbW9kZSAocHJvZ24gLi4uKSkgKGxldCogKC4uLikgKG9yIC4uLiAuLi4pIChsZXQqIC4uLiAu Li4pKSkpKSAocHJvZ24gKG9yIChzdHJpbmdwIChsZXQqICguLi4pIChwcm9nbiAuLi4gLi4uKSkp IChjbC0tYXNzZXJ0aW9uLWZhaWxlZCAnKHN0cmluZ3AgLi4uKSkpIG5pbCkgKGxldCogKCh2IChs ZXQqICguLi4pIChwcm9nbiAuLi4gLi4uKSkpICh2IChsZXQqICguLi4pIChwcm9nbiAuLi4gLi4u KSkpKSAocHV0aGFzaCB2IChjb25zIGQgKGdldGhhc2ggdiB2KSkgdikpKSkgKHNldHEgLS1jbC12 YXItLSAoY2RyIC0tY2wtdmFyLS0pKSAoc2V0cSAtLWNsLXZhci0tIG5pbCkpDQogIChsZXQqICgo LS1jbC12YXItLSBkaWFncykgKGQgbmlsKSAobG9jdXMgbmlsKSAoLS1jbC12YXItLSB0KSkgKHdo aWxlIChjb25zcCAtLWNsLXZhci0tKSAoc2V0cSBkIChjYXIgLS1jbC12YXItLSkpIChzZXRxIGxv Y3VzIChsZXQqICgoY2wteCBkKSkgKHByb2duIChvciAobGV0KiAoLi4uKSAocHJvZ24gLi4uKSkg KHNpZ25hbCAnd3JvbmctdHlwZS1hcmd1bWVudCAobGlzdCAuLi4gY2wteCkpKSAoYXJlZiBjbC14 IDEpKSkpIChjb25kICgoZXEgbG9jdXMgKGN1cnJlbnQtYnVmZmVyKSkgKGxldCogKChjbC14IHN0 YXRlKSkgKG9yIChsZXQqICguLi4pIChwcm9nbiAuLi4pKSAoc2lnbmFsICd3cm9uZy10eXBlLWFy Z3VtZW50IChsaXN0IC4uLiBjbC14KSkpIChsZXQqICgodiBjbC14KSkgKGFzZXQgdiA0IChjb25z IGQgLi4uKSkpKSAoZmx5bWFrZS0taGlnaGxpZ2h0LWxpbmUgZCkpICh0IChpZiAob3IgKGJ1ZmZl ci1saXZlLXAgbG9jdXMpIChzZXRxIGxvY3VzIChmaW5kLWJ1ZmZlci12aXNpdGluZyBsb2N1cykp KSAocHJvZ24gKHNhdmUtY3VycmVudC1idWZmZXIgKHNldC1idWZmZXIgbG9jdXMpIChpZiBmbHlt YWtlLW1vZGUgLi4uKSAobGV0KiAuLi4gLi4uIC4uLikpKSkgKHByb2duIChvciAoc3RyaW5ncCAo bGV0KiAuLi4gLi4uKSkgKGNsLS1hc3NlcnRpb24tZmFpbGVkICcuLi4pKSBuaWwpIChsZXQqICgo diAobGV0KiAuLi4gLi4uKSkgKHYgKGxldCogLi4uIC4uLikpKSAocHV0aGFzaCB2IChjb25zIGQg KGdldGhhc2ggdiB2KSkgdikpKSkgKHNldHEgLS1jbC12YXItLSAoY2RyIC0tY2wtdmFyLS0pKSAo c2V0cSAtLWNsLXZhci0tIG5pbCkpIG5pbCkNCiAgKHNhdmUtcmVzdHJpY3Rpb24gKHdpZGVuKSAo Y29uZCAocmVnaW9uIChsZXQqICgoLS1jbC12YXItLSAobGV0KiAoLi4uKSAocHJvZ24gLi4uIC4u LikpKSAoZGlhZyBuaWwpIChvdiBuaWwpIChzdXJ2aXZpbmcgbmlsKSAoLS1jbC12YXItLSB0KSkg KHdoaWxlIChjb25zcCAtLWNsLXZhci0tKSAoc2V0cSBkaWFnIChjYXIgLS1jbC12YXItLSkpIChz ZXRxIG92IChsZXQqICguLi4pIChwcm9nbiAuLi4gLi4uKSkpIChpZiAob3IgKG5vdCAuLi4pIChm bHltYWtlLS1pbnRlcnNlY3RzLXAgLi4uIC4uLiAuLi4gLi4uKSkgKHByb2duIChmbHltYWtlLS1k ZWxldGUtb3ZlcmxheSBvdikpIChzZXRxIHN1cnZpdmluZyAobmNvbmMgc3Vydml2aW5nIC4uLikp KSAoc2V0cSAtLWNsLXZhci0tIChjZHIgLS1jbC12YXItLSkpIChzZXRxIC0tY2wtdmFyLS0gbmls KSkgKGxldCogKChjbC14IHN0YXRlKSkgKG9yIChsZXQqICguLi4pIChwcm9nbiAuLi4pKSAoc2ln bmFsICd3cm9uZy10eXBlLWFyZ3VtZW50IChsaXN0IC4uLiBjbC14KSkpIChsZXQqICgodiBjbC14 KSkgKGFzZXQgdiA0IHN1cnZpdmluZykpKSBuaWwpKSAoKG5vdCAobGV0KiAoKGNsLXggc3RhdGUp KSAocHJvZ24gKG9yIChsZXQqIC4uLiAuLi4pIChzaWduYWwgLi4uIC4uLikpIChhcmVmIGNsLXgg MikpKSkgKGxldCogKCgtLWNsLXZhci0tIChsZXQqICguLi4pIChwcm9nbiAuLi4gLi4uKSkpIChk aWFnIG5pbCkgKG92IG5pbCkgKC0tY2wtdmFyLS0gdCkpICh3aGlsZSAoY29uc3AgLS1jbC12YXIt LSkgKHNldHEgZGlhZyAoY2FyIC0tY2wtdmFyLS0pKSAoc2V0cSBvdiAobGV0KiAoLi4uKSAocHJv Z24gLi4uIC4uLikpKSAoaWYgb3YgKHByb2duIChmbHltYWtlLS1kZWxldGUtb3ZlcmxheSBvdikp KSAoc2V0cSAtLWNsLXZhci0tIChjZHIgLS1jbC12YXItLSkpIChzZXRxIC0tY2wtdmFyLS0gbmls KSkgbmlsKSAobGV0KiAoKGNsLXggc3RhdGUpKSAob3IgKGxldCogKChjbC14IGNsLXgpKSAocHJv Z24gKGFuZCAuLi4gdCkpKSAoc2lnbmFsICd3cm9uZy10eXBlLWFyZ3VtZW50IChsaXN0ICdmbHlt YWtlLS1zdGF0ZSBjbC14KSkpIChsZXQqICgodiBjbC14KSkgKGFzZXQgdiA0IG5pbCkpKSAoZmx5 bWFrZS0tY2xlYXItZm9yZWlnbi1kaWFncyBzdGF0ZSkpICh0KSkgKGxldCogKCgtLWNsLXZhci0t IGRpYWdzKSAoZCBuaWwpIChsb2N1cyBuaWwpICgtLWNsLXZhci0tIHQpKSAod2hpbGUgKGNvbnNw IC0tY2wtdmFyLS0pIChzZXRxIGQgKGNhciAtLWNsLXZhci0tKSkgKHNldHEgbG9jdXMgKGxldCog KChjbC14IGQpKSAocHJvZ24gKG9yIChsZXQqIC4uLiAuLi4pIChzaWduYWwgLi4uIC4uLikpIChh cmVmIGNsLXggMSkpKSkgKGNvbmQgKChlcSBsb2N1cyAoY3VycmVudC1idWZmZXIpKSAobGV0KiAo KGNsLXggc3RhdGUpKSAob3IgKGxldCogLi4uIC4uLikgKHNpZ25hbCAuLi4gLi4uKSkgKGxldCog KC4uLikgKGFzZXQgdiA0IC4uLikpKSAoZmx5bWFrZS0taGlnaGxpZ2h0LWxpbmUgZCkpICh0IChp ZiAob3IgKGJ1ZmZlci1saXZlLXAgbG9jdXMpIChzZXRxIGxvY3VzIC4uLikpIChwcm9nbiAoc2F2 ZS1jdXJyZW50LWJ1ZmZlciAuLi4gLi4uIC4uLikpKSAocHJvZ24gKG9yIChzdHJpbmdwIC4uLikg KGNsLS1hc3NlcnRpb24tZmFpbGVkIC4uLikpIG5pbCkgKGxldCogKCh2IC4uLikgKHYgLi4uKSkg KHB1dGhhc2ggdiAoY29ucyBkIC4uLikgdikpKSkgKHNldHEgLS1jbC12YXItLSAoY2RyIC0tY2wt dmFyLS0pKSAoc2V0cSAtLWNsLXZhci0tIG5pbCkpIG5pbCkgKHNldHEgZmx5bWFrZS0tbW9kZS1s aW5lLWNvdW50ZXItY2FjaGUgbmlsKSkNCiAgKHByb2duIChsZXQgKCh0YWlsIGRpYWdzKSkgKHdo aWxlIHRhaWwgKGxldCAoKGQgKGNhciB0YWlsKSkpIChsZXQqICgoY2wteCBkKSkgKG9yIChsZXQq ICguLi4pIChwcm9nbiAuLi4pKSAoc2lnbmFsICd3cm9uZy10eXBlLWFyZ3VtZW50IChsaXN0IC4u LiBjbC14KSkpIChsZXQqICgodiBjbC14KSkgKGFzZXQgdiA2IGJhY2tlbmQpKSkgKHNldHEgdGFp bCAoY2RyIHRhaWwpKSkpKSAoc2F2ZS1yZXN0cmljdGlvbiAod2lkZW4pIChjb25kIChyZWdpb24g KGxldCogKCgtLWNsLXZhci0tIChsZXQqIC4uLiAuLi4pKSAoZGlhZyBuaWwpIChvdiBuaWwpIChz dXJ2aXZpbmcgbmlsKSAoLS1jbC12YXItLSB0KSkgKHdoaWxlIChjb25zcCAtLWNsLXZhci0tKSAo c2V0cSBkaWFnIChjYXIgLS1jbC12YXItLSkpIChzZXRxIG92IChsZXQqIC4uLiAuLi4pKSAoaWYg KG9yIC4uLiAuLi4pIChwcm9nbiAuLi4pIChzZXRxIHN1cnZpdmluZyAuLi4pKSAoc2V0cSAtLWNs LXZhci0tIChjZHIgLS1jbC12YXItLSkpIChzZXRxIC0tY2wtdmFyLS0gbmlsKSkgKGxldCogKChj bC14IHN0YXRlKSkgKG9yIChsZXQqIC4uLiAuLi4pIChzaWduYWwgLi4uIC4uLikpIChsZXQqICgu Li4pIChhc2V0IHYgNCBzdXJ2aXZpbmcpKSkgbmlsKSkgKChub3QgKGxldCogKChjbC14IHN0YXRl KSkgKHByb2duIChvciAuLi4gLi4uKSAoYXJlZiBjbC14IDIpKSkpIChsZXQqICgoLS1jbC12YXIt LSAobGV0KiAuLi4gLi4uKSkgKGRpYWcgbmlsKSAob3YgbmlsKSAoLS1jbC12YXItLSB0KSkgKHdo aWxlIChjb25zcCAtLWNsLXZhci0tKSAoc2V0cSBkaWFnIChjYXIgLS1jbC12YXItLSkpIChzZXRx IG92IChsZXQqIC4uLiAuLi4pKSAoaWYgb3YgKHByb2duIC4uLikpIChzZXRxIC0tY2wtdmFyLS0g KGNkciAtLWNsLXZhci0tKSkgKHNldHEgLS1jbC12YXItLSBuaWwpKSBuaWwpIChsZXQqICgoY2wt eCBzdGF0ZSkpIChvciAobGV0KiAoLi4uKSAocHJvZ24gLi4uKSkgKHNpZ25hbCAnd3JvbmctdHlw ZS1hcmd1bWVudCAobGlzdCAuLi4gY2wteCkpKSAobGV0KiAoKHYgY2wteCkpIChhc2V0IHYgNCBu aWwpKSkgKGZseW1ha2UtLWNsZWFyLWZvcmVpZ24tZGlhZ3Mgc3RhdGUpKSAodCkpIChsZXQqICgo LS1jbC12YXItLSBkaWFncykgKGQgbmlsKSAobG9jdXMgbmlsKSAoLS1jbC12YXItLSB0KSkgKHdo aWxlIChjb25zcCAtLWNsLXZhci0tKSAoc2V0cSBkIChjYXIgLS1jbC12YXItLSkpIChzZXRxIGxv Y3VzIChsZXQqICgoY2wteCBkKSkgKHByb2duIChvciAuLi4gLi4uKSAoYXJlZiBjbC14IDEpKSkp IChjb25kICgoZXEgbG9jdXMgKGN1cnJlbnQtYnVmZmVyKSkgKGxldCogKC4uLikgKG9yIC4uLiAu Li4pIChsZXQqIC4uLiAuLi4pKSAoZmx5bWFrZS0taGlnaGxpZ2h0LWxpbmUgZCkpICh0IChpZiAo b3IgLi4uIC4uLikgKHByb2duIC4uLikpIChwcm9nbiAob3IgLi4uIC4uLikgbmlsKSAobGV0KiAo Li4uIC4uLikgKHB1dGhhc2ggdiAuLi4gdikpKSkgKHNldHEgLS1jbC12YXItLSAoY2RyIC0tY2wt dmFyLS0pKSAoc2V0cSAtLWNsLXZhci0tIG5pbCkpIG5pbCkgKHNldHEgZmx5bWFrZS0tbW9kZS1s aW5lLWNvdW50ZXItY2FjaGUgbmlsKSkpDQogIChwcm9nbiAobGV0ICgoLS1jbC1rZXlzLS0gLS1j bC1yZXN0LS0pKSAod2hpbGUgLS1jbC1rZXlzLS0gKGNvbmQgKChtZW1xIChjYXIgLS1jbC1rZXlz LS0pICcoOmJhY2tlbmQgOnN0YXRlIDpyZWdpb24gOmFsbG93LW90aGVyLWtleXMpKSAoaWYgKGNk ciAtLWNsLWtleXMtLSkgbmlsIChlcnJvciAiTWlzc2luZyBhcmd1bWVudCBmb3IgJXMiIChjYXIg LS1jbC1rZXlzLS0pKSkgKHNldHEgLS1jbC1rZXlzLS0gKGNkciAoY2RyIC0tY2wta2V5cy0tKSkp KSAoKGNhciAoY2RyIChtZW1xIC4uLiAtLWNsLXJlc3QtLSkpKSAoc2V0cSAtLWNsLWtleXMtLSBu aWwpKSAodCAoZXJyb3IgIktleXdvcmQgYXJndW1lbnQgJXMgbm90IG9uZSBvZiAoOmJhY2tlbmQg OnN0YXRlIDpyZWdpb24pIiAoY2FyIC0tY2wta2V5cy0tKSkpKSkpIChwcm9nbiAobGV0ICgodGFp bCBkaWFncykpICh3aGlsZSB0YWlsIChsZXQgKChkIChjYXIgdGFpbCkpKSAobGV0KiAoKGNsLXgg ZCkpIChvciAobGV0KiAuLi4gLi4uKSAoc2lnbmFsIC4uLiAuLi4pKSAobGV0KiAoLi4uKSAoYXNl dCB2IDYgYmFja2VuZCkpKSAoc2V0cSB0YWlsIChjZHIgdGFpbCkpKSkpIChzYXZlLXJlc3RyaWN0 aW9uICh3aWRlbikgKGNvbmQgKHJlZ2lvbiAobGV0KiAoKC0tY2wtdmFyLS0gLi4uKSAoZGlhZyBu aWwpIChvdiBuaWwpIChzdXJ2aXZpbmcgbmlsKSAoLS1jbC12YXItLSB0KSkgKHdoaWxlIChjb25z cCAtLWNsLXZhci0tKSAoc2V0cSBkaWFnIC4uLikgKHNldHEgb3YgLi4uKSAoaWYgLi4uIC4uLiAu Li4pIChzZXRxIC0tY2wtdmFyLS0gLi4uKSAoc2V0cSAtLWNsLXZhci0tIG5pbCkpIChsZXQqICgu Li4pIChvciAuLi4gLi4uKSAobGV0KiAuLi4gLi4uKSkgbmlsKSkgKChub3QgKGxldCogKC4uLikg KHByb2duIC4uLiAuLi4pKSkgKGxldCogKCgtLWNsLXZhci0tIC4uLikgKGRpYWcgbmlsKSAob3Yg bmlsKSAoLS1jbC12YXItLSB0KSkgKHdoaWxlIChjb25zcCAtLWNsLXZhci0tKSAoc2V0cSBkaWFn IC4uLikgKHNldHEgb3YgLi4uKSAoaWYgb3YgLi4uKSAoc2V0cSAtLWNsLXZhci0tIC4uLikgKHNl dHEgLS1jbC12YXItLSBuaWwpKSBuaWwpIChsZXQqICgoY2wteCBzdGF0ZSkpIChvciAobGV0KiAu Li4gLi4uKSAoc2lnbmFsIC4uLiAuLi4pKSAobGV0KiAoLi4uKSAoYXNldCB2IDQgbmlsKSkpIChm bHltYWtlLS1jbGVhci1mb3JlaWduLWRpYWdzIHN0YXRlKSkgKHQpKSAobGV0KiAoKC0tY2wtdmFy LS0gZGlhZ3MpIChkIG5pbCkgKGxvY3VzIG5pbCkgKC0tY2wtdmFyLS0gdCkpICh3aGlsZSAoY29u c3AgLS1jbC12YXItLSkgKHNldHEgZCAoY2FyIC0tY2wtdmFyLS0pKSAoc2V0cSBsb2N1cyAobGV0 KiAoLi4uKSAocHJvZ24gLi4uIC4uLikpKSAoY29uZCAoKGVxIGxvY3VzIC4uLikgKGxldCogLi4u IC4uLiAuLi4pIChmbHltYWtlLS1oaWdobGlnaHQtbGluZSBkKSkgKHQgKGlmIC4uLiAuLi4pIChw cm9nbiAuLi4gbmlsKSAobGV0KiAuLi4gLi4uKSkpIChzZXRxIC0tY2wtdmFyLS0gKGNkciAtLWNs LXZhci0tKSkgKHNldHEgLS1jbC12YXItLSBuaWwpKSBuaWwpIChzZXRxIGZseW1ha2UtLW1vZGUt bGluZS1jb3VudGVyLWNhY2hlIG5pbCkpKSkNCiAgKGxldCogKChiYWNrZW5kIChjYXIgKGNkciAo cGxpc3QtbWVtYmVyIC0tY2wtcmVzdC0tICc6YmFja2VuZCkpKSkgKHN0YXRlIChjYXIgKGNkciAo cGxpc3QtbWVtYmVyIC0tY2wtcmVzdC0tICc6c3RhdGUpKSkpIChyZWdpb24gKGNhciAoY2RyIChw bGlzdC1tZW1iZXIgLS1jbC1yZXN0LS0gJzpyZWdpb24pKSkpKSAocHJvZ24gKGxldCAoKC0tY2wt a2V5cy0tIC0tY2wtcmVzdC0tKSkgKHdoaWxlIC0tY2wta2V5cy0tIChjb25kICgobWVtcSAoY2Fy IC0tY2wta2V5cy0tKSAnLi4uKSAoaWYgKGNkciAtLWNsLWtleXMtLSkgbmlsIChlcnJvciAiTWlz c2luZyBhcmd1bWVudCBmb3IgJXMiIC4uLikpIChzZXRxIC0tY2wta2V5cy0tIChjZHIgLi4uKSkp ICgoY2FyIChjZHIgLi4uKSkgKHNldHEgLS1jbC1rZXlzLS0gbmlsKSkgKHQgKGVycm9yICJLZXl3 b3JkIGFyZ3VtZW50ICVzIG5vdCBvbmUgb2YgKDpiYWNrZW5kIDpzdGF0ZSA6cmVnaW9uKSIgKGNh ciAtLWNsLWtleXMtLSkpKSkpKSAocHJvZ24gKGxldCAoKHRhaWwgZGlhZ3MpKSAod2hpbGUgdGFp bCAobGV0ICgoZCAuLi4pKSAobGV0KiAoLi4uKSAob3IgLi4uIC4uLikgKGxldCogLi4uIC4uLikp IChzZXRxIHRhaWwgKGNkciB0YWlsKSkpKSkgKHNhdmUtcmVzdHJpY3Rpb24gKHdpZGVuKSAoY29u ZCAocmVnaW9uIChsZXQqICguLi4gLi4uIC4uLiAuLi4gLi4uKSAod2hpbGUgLi4uIC4uLiAuLi4g Li4uIC4uLiAuLi4pIChsZXQqIC4uLiAuLi4gLi4uKSBuaWwpKSAoKG5vdCAobGV0KiAuLi4gLi4u KSkgKGxldCogKC4uLiAuLi4gLi4uIC4uLikgKHdoaWxlIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4u KSBuaWwpIChsZXQqICguLi4pIChvciAuLi4gLi4uKSAobGV0KiAuLi4gLi4uKSkgKGZseW1ha2Ut LWNsZWFyLWZvcmVpZ24tZGlhZ3Mgc3RhdGUpKSAodCkpIChsZXQqICgoLS1jbC12YXItLSBkaWFn cykgKGQgbmlsKSAobG9jdXMgbmlsKSAoLS1jbC12YXItLSB0KSkgKHdoaWxlIChjb25zcCAtLWNs LXZhci0tKSAoc2V0cSBkIChjYXIgLS1jbC12YXItLSkpIChzZXRxIGxvY3VzIChsZXQqIC4uLiAu Li4pKSAoY29uZCAoLi4uIC4uLiAuLi4pICh0IC4uLiAuLi4gLi4uKSkgKHNldHEgLS1jbC12YXIt LSAoY2RyIC0tY2wtdmFyLS0pKSAoc2V0cSAtLWNsLXZhci0tIG5pbCkpIG5pbCkgKHNldHEgZmx5 bWFrZS0tbW9kZS1saW5lLWNvdW50ZXItY2FjaGUgbmlsKSkpKSkNCiAgZmx5bWFrZS0tcHVibGlz aC1kaWFnbm9zdGljcygoI3MoZmx5bWFrZS0tZGlhZyA6bG9jdXMgIzxidWZmZXIgR3JhZGVzLmxl YW4+IDpiZWcgMzM3MiA6ZW5kIDMzNzggOnR5cGUgZWdsb3Qtbm90ZSA6dGV4dCAiTGVhbiA0OiBG aW5zZXQuc3VtLnt1LCB2fSB7zrIgOiBUeXBlIHV9IHvOsSA6IFR5cGUgdn0gW2luc3TinJ0gOiBB ZGRDb21tTW9ub2lkIM6yXSAocyA6IEZpbnNldCDOsSkgKGYgOiDOsSDihpIgzrIpIDogzrIiIDpi YWNrZW5kIGVnbG90LWZseW1ha2UtYmFja2VuZCA6ZGF0YSAuLi4gOm92ZXJsYXktcHJvcGVydGll cyBuaWwgOm92ZXJsYXkgIzxvdmVybGF5IGZyb20gMzM3MiB0byAzMzc4IGluIEdyYWRlcy5sZWFu PiA6b3JpZy1iZWcgMzM3MiA6b3JpZy1lbmQgMzM3OCkgI3MoZmx5bWFrZS0tZGlhZyA6bG9jdXMg IzxidWZmZXIgR3JhZGVzLmxlYW4+IDpiZWcgMzU4OCA6ZW5kIDM1OTEgOnR5cGUgZWdsb3QtZXJy b3IgOnRleHQgIkxlYW4gNDogdW5zb2x2ZWQgZ29hbHNcbmNhc2UgbXAuemVyb1xuViA6IFR5cGUg dV8xXG5pbnN04pydwrkgOiBBZGRDb21tR3JvdXAgVlxuaW5zdOKcnSA6IE1vZHVsZSDihJ0gVlxu dCA6IEZpbiBOYXQuemVybyDihpIgVlxuaHQgOiDihpEoYmxhZGUgViB0KSDiiaAgMFxubiA6IEZp bnNldCAoRmluIE5hdC56ZXJvKVxueCA6IEZpbiBOYXQuemVybyDihpIg4oSdXG5oeHQgOiAoRmlu c2V0LnN1bSBuIGZ1biBpID0+IHggaSDigKIgdCBpKSA9IDBcbmkgOiDihJVcbmhpIDogaSA8IE5h dC56ZXJvXG5oaW4gOiB7IHZhbCA6PSBpLCBpc0x0IDo9IGhpIH0g4oiIIG5cbuKKoiDCrEZhbHNl IiA6YmFja2VuZCBlZ2xvdC1mbHltYWtlLWJhY2tlbmQgOmRhdGEgLi4uIDpvdmVybGF5LXByb3Bl cnRpZXMgbmlsIDpvdmVybGF5ICM8b3ZlcmxheSBmcm9tIDM1ODggdG8gMzU5MSBpbiBHcmFkZXMu bGVhbj4gOm9yaWctYmVnIDM1ODggOm9yaWctZW5kIDM1OTEpICNzKGZseW1ha2UtLWRpYWcgOmxv Y3VzICM8YnVmZmVyIEdyYWRlcy5sZWFuPiA6YmVnIDQyNjkgOmVuZCA0MjcwIDp0eXBlIGVnbG90 LWVycm9yIDp0ZXh0ICJMZWFuIDQ6IGFwcGxpY2F0aW9uIHR5cGUgbWlzbWF0Y2hcbiAgaWggc1xu YXJndW1lbnRcbiAgc1xuaGFzIHR5cGVcbiAg4oaRKGJsYWRlcyBWIChOYXQuc3VjYyBrKSkgOiBU eXBlIHVfMVxuYnV0IGlzIGV4cGVjdGVkIHRvIGhhdmUgdHlwZVxuICBGaW4gayDihpIgViA6IFR5 cGUgdV8xIiA6YmFja2VuZCBlZ2xvdC1mbHltYWtlLWJhY2tlbmQgOmRhdGEgLi4uIDpvdmVybGF5 LXByb3BlcnRpZXMgbmlsIDpvdmVybGF5ICM8b3ZlcmxheSBmcm9tIDQyNjkgdG8gNDI3MCBpbiBH cmFkZXMubGVhbj4gOm9yaWctYmVnIDQyNjkgOm9yaWctZW5kIDQyNzApICNzKGZseW1ha2UtLWRp YWcgOmxvY3VzICM8YnVmZmVyIEdyYWRlcy5sZWFuPiA6YmVnIDQzNzYgOmVuZCA0Mzc5IDp0eXBl IGVnbG90LWVycm9yIDp0ZXh0ICJMZWFuIDQ6IGZ1bmN0aW9uIGV4cGVjdGVkIGF0XG4gIHZcbnRl cm0gaGFzIHR5cGVcbiAgRXh0ZXJpb3JBbGdlYnJhIOKEnSBWIiA6YmFja2VuZCBlZ2xvdC1mbHlt YWtlLWJhY2tlbmQgOmRhdGEgLi4uIDpvdmVybGF5LXByb3BlcnRpZXMgbmlsIDpvdmVybGF5ICM8 b3ZlcmxheSBmcm9tIDQzNzYgdG8gNDM3OSBpbiBHcmFkZXMubGVhbj4gOm9yaWctYmVnIDQzNzYg Om9yaWctZW5kIDQzNzkpICNzKGZseW1ha2UtLWRpYWcgOmxvY3VzICM8YnVmZmVyIEdyYWRlcy5s ZWFuPiA6YmVnIDQ0MzkgOmVuZCA0NDQwIDp0eXBlIGVnbG90LWVycm9yIDp0ZXh0ICJMZWFuIDQ6 IGFwcGxpY2F0aW9uIHR5cGUgbWlzbWF0Y2hcbiAgYmxhZGUgViB2XG5hcmd1bWVudFxuICB2XG5o YXMgdHlwZVxuICBFeHRlcmlvckFsZ2VicmEg4oSdIFYgOiBUeXBlIHVfMVxuYnV0IGlzIGV4cGVj dGVkIHRvIGhhdmUgdHlwZVxuICBGaW4gP20uNDk1MzE4IOKGkiBWIDogVHlwZSB1XzEiIDpiYWNr ZW5kIGVnbG90LWZseW1ha2UtYmFja2VuZCA6ZGF0YSAuLi4gOm92ZXJsYXktcHJvcGVydGllcyBu aWwgOm92ZXJsYXkgIzxvdmVybGF5IGZyb20gNDQzOSB0byA0NDQwIGluIEdyYWRlcy5sZWFuPiA6 b3JpZy1iZWcgNDQzOSA6b3JpZy1lbmQgNDQ0MCkgI3MoZmx5bWFrZS0tZGlhZyA6bG9jdXMgIzxi dWZmZXIgR3JhZGVzLmxlYW4+IDpiZWcgNDQ2MiA6ZW5kIDQ0NjYgOnR5cGUgZWdsb3QtZXJyb3Ig OnRleHQgIkxlYW4gNDogdW5zb2x2ZWQgZ29hbHNcbmNhc2UgbXByXG5WIDogVHlwZSB1XzFcbmlu c3TinJ3CuSA6IEFkZENvbW1Hcm91cCBWXG5pbnN04pydIDogTW9kdWxlIOKEnSBWXG5rIDog4oSV XG50IDogRmluIGsg4oaSIFZcbuKKoiAo4oiAIChzIDogRmluc2V0IChGaW4gaykpIChnIDogRmlu IGsg4oaSIOKEnSksIChGaW5zZXQuc3VtIHMgZnVuIGkgPT4gZyBpIOKAoiB0IGkpID0gMCDihpIg 4oiAIChpIDogRmluIGspLCBpIOKIiCBzIOKGkiBnIGkgPSAwKSDihpJcbiAgICDihpEoYmxhZGUg ViB0KSDiiaAgMCIgOmJhY2tlbmQgZWdsb3QtZmx5bWFrZS1iYWNrZW5kIDpkYXRhIC4uLiA6b3Zl cmxheS1wcm9wZXJ0aWVzIG5pbCA6b3ZlcmxheSAjPG92ZXJsYXkgaW4gbm8gYnVmZmVyPiA6b3Jp Zy1iZWcgNDQ2MiA6b3JpZy1lbmQgNDQ2NikpIDpiYWNrZW5kIGVnbG90LWZseW1ha2UtYmFja2Vu ZCA6c3RhdGUgI3MoZmx5bWFrZS0tc3RhdGUgOnJ1bm5pbmcgYmFja2VuZC10b2tlbjI3MjMgOnJl cG9ydGVkLXAgbmlsIDpkaXNhYmxlZCBuaWwgOmRpYWdzICguLi4gLi4uIC4uLiAuLi4gLi4uIC4u LikgOmZvcmVpZ24tZGlhZ3MgIzxoYXNoLXRhYmxlIGVxbCAwLzY1IDB4NDlkYTg3MTA4MSAuLi4+ KSA6cmVnaW9uICgxIC4gNDQ0OCkpDQogIChjb25kICgobnVsbCBzdGF0ZSkgKGZseW1ha2UtZXJy b3IgIlVuZXhwZWN0ZWQgcmVwb3J0IGZyb20gdW5rbm93biBiYWNrZW5kICVzIiBiYWNrZW5kKSkg KChsZXQqICgoY2wteCBzdGF0ZSkpIChwcm9nbiAob3IgKGxldCogKChjbC14IGNsLXgpKSAocHJv Z24gKGFuZCAuLi4gdCkpKSAoc2lnbmFsICd3cm9uZy10eXBlLWFyZ3VtZW50IChsaXN0ICdmbHlt YWtlLS1zdGF0ZSBjbC14KSkpIChhcmVmIGNsLXggMykpKSAoZmx5bWFrZS1lcnJvciAiVW5leHBl Y3RlZCByZXBvcnQgZnJvbSBkaXNhYmxlZCBiYWNrZW5kICVzIiBiYWNrZW5kKSkgKChwcm9nbiAo c2V0cSBleHBlY3RlZC10b2tlbiAobGV0KiAoKGNsLXggc3RhdGUpKSAocHJvZ24gKG9yIChsZXQq IC4uLiAuLi4pIChzaWduYWwgLi4uIC4uLikpIChhcmVmIGNsLXggMSkpKSkgKG51bGwgZXhwZWN0 ZWQtdG9rZW4pKSAoZmx5bWFrZS1lcnJvciAiVW5leHBlY3RlZCByZXBvcnQgZnJvbSBzdG9wcGVk IGJhY2tlbmQgJXMiIGJhY2tlbmQpKSAoKG5vdCAob3IgKGVxIGV4cGVjdGVkLXRva2VuIHRva2Vu KSBmb3JjZSkpIChmbHltYWtlLWVycm9yICJPYnNvbGV0ZSByZXBvcnQgZnJvbSBiYWNrZW5kICVz IHdpdGggZXhwbGFuYXRpb24gJXMiIGJhY2tlbmQgZXhwbGFuYXRpb24pKSAoKGVxIDpwYW5pYyBy ZXBvcnQtYWN0aW9uKSAoZmx5bWFrZS0tZGlzYWJsZS1iYWNrZW5kIGJhY2tlbmQgZXhwbGFuYXRp b24pKSAoKG5vdCAobGlzdHAgcmVwb3J0LWFjdGlvbikpIChmbHltYWtlLS1kaXNhYmxlLWJhY2tl bmQgYmFja2VuZCAoZm9ybWF0ICJVbmtub3duIGFjdGlvbiAlUyIgcmVwb3J0LWFjdGlvbikpIChm bHltYWtlLWVycm9yICJFeHBlY3RlZCByZXBvcnQsIGJ1dCBnb3QgdW5rbm93biBrZXkgJXMiIHJl cG9ydC1hY3Rpb24pKSAodCAoZmx5bWFrZS0tcHVibGlzaC1kaWFnbm9zdGljcyByZXBvcnQtYWN0 aW9uIDpiYWNrZW5kIGJhY2tlbmQgOnN0YXRlIHN0YXRlIDpyZWdpb24gcmVnaW9uKSAoaWYgZmx5 bWFrZS1jaGVjay1zdGFydC10aW1lIChwcm9nbiAoZmx5bWFrZS0tbG9nLTEgOmRlYnVnICdmbHlt YWtlICJiYWNrZW5kICVzIHJlcG9ydGVkICVkIGRpYWdub3N0aWNzIGluICUuMmYgc2Vjb25kKHMp IiBiYWNrZW5kIChsZW5ndGggcmVwb3J0LWFjdGlvbikgKGZsb2F0LXRpbWUgKHRpbWUtc2luY2Ug Zmx5bWFrZS1jaGVjay1zdGFydC10aW1lKSkpKSkpKQ0KICAobGV0ICgoc3RhdGUgKG9yIChnZXRo YXNoIGJhY2tlbmQgZmx5bWFrZS0tc3RhdGUpIChlcnJvciAiQ2FuJ3QgZmluZCBzdGF0ZSBmb3Ig JXMgaW4gYGZseW1ha2UtLXN0YXRlJyIgYmFja2VuZCkpKSBleHBlY3RlZC10b2tlbikgKGNvbmQg KChudWxsIHN0YXRlKSAoZmx5bWFrZS1lcnJvciAiVW5leHBlY3RlZCByZXBvcnQgZnJvbSB1bmtu b3duIGJhY2tlbmQgJXMiIGJhY2tlbmQpKSAoKGxldCogKChjbC14IHN0YXRlKSkgKHByb2duIChv ciAobGV0KiAoLi4uKSAocHJvZ24gLi4uKSkgKHNpZ25hbCAnd3JvbmctdHlwZS1hcmd1bWVudCAo bGlzdCAuLi4gY2wteCkpKSAoYXJlZiBjbC14IDMpKSkgKGZseW1ha2UtZXJyb3IgIlVuZXhwZWN0 ZWQgcmVwb3J0IGZyb20gZGlzYWJsZWQgYmFja2VuZCAlcyIgYmFja2VuZCkpICgocHJvZ24gKHNl dHEgZXhwZWN0ZWQtdG9rZW4gKGxldCogKChjbC14IHN0YXRlKSkgKHByb2duIChvciAuLi4gLi4u KSAoYXJlZiBjbC14IDEpKSkpIChudWxsIGV4cGVjdGVkLXRva2VuKSkgKGZseW1ha2UtZXJyb3Ig IlVuZXhwZWN0ZWQgcmVwb3J0IGZyb20gc3RvcHBlZCBiYWNrZW5kICVzIiBiYWNrZW5kKSkgKChu b3QgKG9yIChlcSBleHBlY3RlZC10b2tlbiB0b2tlbikgZm9yY2UpKSAoZmx5bWFrZS1lcnJvciAi T2Jzb2xldGUgcmVwb3J0IGZyb20gYmFja2VuZCAlcyB3aXRoIGV4cGxhbmF0aW9uICVzIiBiYWNr ZW5kIGV4cGxhbmF0aW9uKSkgKChlcSA6cGFuaWMgcmVwb3J0LWFjdGlvbikgKGZseW1ha2UtLWRp c2FibGUtYmFja2VuZCBiYWNrZW5kIGV4cGxhbmF0aW9uKSkgKChub3QgKGxpc3RwIHJlcG9ydC1h Y3Rpb24pKSAoZmx5bWFrZS0tZGlzYWJsZS1iYWNrZW5kIGJhY2tlbmQgKGZvcm1hdCAiVW5rbm93 biBhY3Rpb24gJVMiIHJlcG9ydC1hY3Rpb24pKSAoZmx5bWFrZS1lcnJvciAiRXhwZWN0ZWQgcmVw b3J0LCBidXQgZ290IHVua25vd24ga2V5ICVzIiByZXBvcnQtYWN0aW9uKSkgKHQgKGZseW1ha2Ut LXB1Ymxpc2gtZGlhZ25vc3RpY3MgcmVwb3J0LWFjdGlvbiA6YmFja2VuZCBiYWNrZW5kIDpzdGF0 ZSBzdGF0ZSA6cmVnaW9uIHJlZ2lvbikgKGlmIGZseW1ha2UtY2hlY2stc3RhcnQtdGltZSAocHJv Z24gKGZseW1ha2UtLWxvZy0xIDpkZWJ1ZyAnZmx5bWFrZSAiYmFja2VuZCAlcyByZXBvcnRlZCAl ZCBkaWFnbm9zdGljcyBpbiAlLjJmIHNlY29uZChzKSIgYmFja2VuZCAobGVuZ3RoIHJlcG9ydC1h Y3Rpb24pIChmbG9hdC10aW1lICh0aW1lLXNpbmNlIGZseW1ha2UtY2hlY2stc3RhcnQtdGltZSkp KSkpKSkgKGxldCogKChjbC14IHN0YXRlKSkgKG9yIChsZXQqICgoY2wteCBjbC14KSkgKHByb2du IChhbmQgKG1lbXEgKHR5cGUtb2YgY2wteCkgY2wtc3RydWN0LWZseW1ha2UtLXN0YXRlLXRhZ3Mp IHQpKSkgKHNpZ25hbCAnd3JvbmctdHlwZS1hcmd1bWVudCAobGlzdCAnZmx5bWFrZS0tc3RhdGUg Y2wteCkpKSAobGV0KiAoKHYgY2wteCkpIChhc2V0IHYgMiB0KSkpIChpZiAoYW5kIGZseW1ha2Ut c2hvdy1kaWFnbm9zdGljcy1hdC1lbmQtb2YtbGluZSAobm90IChjbC1zZXQtZGlmZmVyZW5jZSAo Zmx5bWFrZS1ydW5uaW5nLWJhY2tlbmRzKSAoZmx5bWFrZS1yZXBvcnRpbmctYmFja2VuZHMpKSkp IChwcm9nbiAoZmx5bWFrZS0tdXBkYXRlLWVvbC1vdmVybGF5cykpKSAoZmx5bWFrZS0tdXBkYXRl LWRpYWdub3N0aWNzLWxpc3RpbmdzIChjdXJyZW50LWJ1ZmZlcikpKQ0KICAobGV0KiAoKGV4cGxh bmF0aW9uIChjYXIgKGNkciAocGxpc3QtbWVtYmVyIC0tY2wtcmVzdC0tICc6ZXhwbGFuYXRpb24p KSkpIChmb3JjZSAoY2FyIChjZHIgKHBsaXN0LW1lbWJlciAtLWNsLXJlc3QtLSAnOmZvcmNlKSkp KSAocmVnaW9uIChjYXIgKGNkciAocGxpc3QtbWVtYmVyIC0tY2wtcmVzdC0tICc6cmVnaW9uKSkp KSkgKGxldCAoKHN0YXRlIChvciAoZ2V0aGFzaCBiYWNrZW5kIGZseW1ha2UtLXN0YXRlKSAoZXJy b3IgIkNhbid0IGZpbmQgc3RhdGUgZm9yICVzIGluIGBmbHltYWtlLS1zdGF0ZSciIGJhY2tlbmQp KSkgZXhwZWN0ZWQtdG9rZW4pIChjb25kICgobnVsbCBzdGF0ZSkgKGZseW1ha2UtZXJyb3IgIlVu ZXhwZWN0ZWQgcmVwb3J0IGZyb20gdW5rbm93biBiYWNrZW5kICVzIiBiYWNrZW5kKSkgKChsZXQq ICgoY2wteCBzdGF0ZSkpIChwcm9nbiAob3IgKGxldCogLi4uIC4uLikgKHNpZ25hbCAuLi4gLi4u KSkgKGFyZWYgY2wteCAzKSkpIChmbHltYWtlLWVycm9yICJVbmV4cGVjdGVkIHJlcG9ydCBmcm9t IGRpc2FibGVkIGJhY2tlbmQgJXMiIGJhY2tlbmQpKSAoKHByb2duIChzZXRxIGV4cGVjdGVkLXRv a2VuIChsZXQqICguLi4pIChwcm9nbiAuLi4gLi4uKSkpIChudWxsIGV4cGVjdGVkLXRva2VuKSkg KGZseW1ha2UtZXJyb3IgIlVuZXhwZWN0ZWQgcmVwb3J0IGZyb20gc3RvcHBlZCBiYWNrZW5kICVz IiBiYWNrZW5kKSkgKChub3QgKG9yIChlcSBleHBlY3RlZC10b2tlbiB0b2tlbikgZm9yY2UpKSAo Zmx5bWFrZS1lcnJvciAiT2Jzb2xldGUgcmVwb3J0IGZyb20gYmFja2VuZCAlcyB3aXRoIGV4cGxh bmF0aW9uICVzIiBiYWNrZW5kIGV4cGxhbmF0aW9uKSkgKChlcSA6cGFuaWMgcmVwb3J0LWFjdGlv bikgKGZseW1ha2UtLWRpc2FibGUtYmFja2VuZCBiYWNrZW5kIGV4cGxhbmF0aW9uKSkgKChub3Qg KGxpc3RwIHJlcG9ydC1hY3Rpb24pKSAoZmx5bWFrZS0tZGlzYWJsZS1iYWNrZW5kIGJhY2tlbmQg KGZvcm1hdCAiVW5rbm93biBhY3Rpb24gJVMiIHJlcG9ydC1hY3Rpb24pKSAoZmx5bWFrZS1lcnJv ciAiRXhwZWN0ZWQgcmVwb3J0LCBidXQgZ290IHVua25vd24ga2V5ICVzIiByZXBvcnQtYWN0aW9u KSkgKHQgKGZseW1ha2UtLXB1Ymxpc2gtZGlhZ25vc3RpY3MgcmVwb3J0LWFjdGlvbiA6YmFja2Vu ZCBiYWNrZW5kIDpzdGF0ZSBzdGF0ZSA6cmVnaW9uIHJlZ2lvbikgKGlmIGZseW1ha2UtY2hlY2st c3RhcnQtdGltZSAocHJvZ24gKGZseW1ha2UtLWxvZy0xIDpkZWJ1ZyAnZmx5bWFrZSAiYmFja2Vu ZCAlcyByZXBvcnRlZCAlZCBkaWFnbm9zdGljcyBpbiAlLjJmIHNlY29uZChzKSIgYmFja2VuZCAo bGVuZ3RoIHJlcG9ydC1hY3Rpb24pIChmbG9hdC10aW1lIC4uLikpKSkpKSAobGV0KiAoKGNsLXgg c3RhdGUpKSAob3IgKGxldCogKChjbC14IGNsLXgpKSAocHJvZ24gKGFuZCAobWVtcSAuLi4gY2wt c3RydWN0LWZseW1ha2UtLXN0YXRlLXRhZ3MpIHQpKSkgKHNpZ25hbCAnd3JvbmctdHlwZS1hcmd1 bWVudCAobGlzdCAnZmx5bWFrZS0tc3RhdGUgY2wteCkpKSAobGV0KiAoKHYgY2wteCkpIChhc2V0 IHYgMiB0KSkpIChpZiAoYW5kIGZseW1ha2Utc2hvdy1kaWFnbm9zdGljcy1hdC1lbmQtb2YtbGlu ZSAobm90IChjbC1zZXQtZGlmZmVyZW5jZSAoZmx5bWFrZS1ydW5uaW5nLWJhY2tlbmRzKSAoZmx5 bWFrZS1yZXBvcnRpbmctYmFja2VuZHMpKSkpIChwcm9nbiAoZmx5bWFrZS0tdXBkYXRlLWVvbC1v dmVybGF5cykpKSAoZmx5bWFrZS0tdXBkYXRlLWRpYWdub3N0aWNzLWxpc3RpbmdzIChjdXJyZW50 LWJ1ZmZlcikpKSkNCiAgZmx5bWFrZS0taGFuZGxlLXJlcG9ydChlZ2xvdC1mbHltYWtlLWJhY2tl bmQgYmFja2VuZC10b2tlbjI3MjMgKCNzKGZseW1ha2UtLWRpYWcgOmxvY3VzICM8YnVmZmVyIEdy YWRlcy5sZWFuPiA6YmVnIDMzNzIgOmVuZCAzMzc4IDp0eXBlIGVnbG90LW5vdGUgOnRleHQgIkxl YW4gNDogRmluc2V0LnN1bS57dSwgdn0ge86yIDogVHlwZSB1fSB7zrEgOiBUeXBlIHZ9IFtpbnN0 4pydIDogQWRkQ29tbU1vbm9pZCDOsl0gKHMgOiBGaW5zZXQgzrEpIChmIDogzrEg4oaSIM6yKSA6 IM6yIiA6YmFja2VuZCBlZ2xvdC1mbHltYWtlLWJhY2tlbmQgOmRhdGEgKChlZ2xvdC1sc3AtZGlh ZyA6c291cmNlICJMZWFuIDQiIDpzZXZlcml0eSAzIDpyYW5nZSAoOnN0YXJ0ICg6bGluZSA3OSA6 Y2hhcmFjdGVyIDApIDplbmQgKDpsaW5lIDc5IDpjaGFyYWN0ZXIgNikpIDptZXNzYWdlICJGaW5z ZXQuc3VtLnt1LCB2fSB7zrIgOiBUeXBlIHV9IHvOsSA6IFR5cGUgdn0gW2luc3TinJ0gOiBBZGRD b21tTW9ub2lkIM6yXSAocyA6IEZpbnNldCDOsSkgKGYgOiDOsSDihpIgzrIpIDogzrIiIDpmdWxs UmFuZ2UgKDpzdGFydCAoOmxpbmUgNzkgOmNoYXJhY3RlciAwKSA6ZW5kICg6bGluZSA3OSA6Y2hh cmFjdGVyIDYpKSkpIDpvdmVybGF5LXByb3BlcnRpZXMgbmlsIDpvdmVybGF5ICM8b3ZlcmxheSBm cm9tIDMzNzIgdG8gMzM3OCBpbiBHcmFkZXMubGVhbj4gOm9yaWctYmVnIDMzNzIgOm9yaWctZW5k IDMzNzgpICNzKGZseW1ha2UtLWRpYWcgOmxvY3VzICM8YnVmZmVyIEdyYWRlcy5sZWFuPiA6YmVn IDM1ODggOmVuZCAzNTkxIDp0eXBlIGVnbG90LWVycm9yIDp0ZXh0ICJMZWFuIDQ6IHVuc29sdmVk IGdvYWxzXG5jYXNlIG1wLnplcm9cblYgOiBUeXBlIHVfMVxuaW5zdOKcncK5IDogQWRkQ29tbUdy b3VwIFZcbmluc3TinJ0gOiBNb2R1bGUg4oSdIFZcbnQgOiBGaW4gTmF0Lnplcm8g4oaSIFZcbmh0 IDog4oaRKGJsYWRlIFYgdCkg4omgIDBcbm4gOiBGaW5zZXQgKEZpbiBOYXQuemVybylcbnggOiBG aW4gTmF0Lnplcm8g4oaSIOKEnVxuaHh0IDogKEZpbnNldC5zdW0gbiBmdW4gaSA9PiB4IGkg4oCi IHQgaSkgPSAwXG5pIDog4oSVXG5oaSA6IGkgPCBOYXQuemVyb1xuaGluIDogeyB2YWwgOj0gaSwg aXNMdCA6PSBoaSB9IOKIiCBuXG7iiqIgwqxGYWxzZSIgOmJhY2tlbmQgZWdsb3QtZmx5bWFrZS1i YWNrZW5kIDpkYXRhICgoZWdsb3QtbHNwLWRpYWcgOnNvdXJjZSAiTGVhbiA0IiA6c2V2ZXJpdHkg MSA6cmFuZ2UgKDpzdGFydCAoOmxpbmUgODYgOmNoYXJhY3RlciAxMSkgOmVuZCAoOmxpbmUgODcg OmNoYXJhY3RlciAwKSkgOm1lc3NhZ2UgInVuc29sdmVkIGdvYWxzXG5jYXNlIG1wLnplcm9cblYg OiBUeXBlIHVfMVxuaW5zdOKcncK5IDogQWRkQ29tbUdyb3VwIFZcbmluc3TinJ0gOiBNb2R1bGUg 4oSdIFZcbnQgOiBGaW4gTmF0Lnplcm8g4oaSIFZcbmh0IDog4oaRKGJsYWRlIFYgdCkg4omgIDBc bm4gOiBGaW5zZXQgKEZpbiBOYXQuemVybylcbnggOiBGaW4gTmF0Lnplcm8g4oaSIOKEnVxuaHh0 IDogKEZpbnNldC5zdW0gbiBmdW4gaSA9PiB4IGkg4oCiIHQgaSkgPSAwXG5pIDog4oSVXG5oaSA6 IGkgPCBOYXQuemVyb1xuaGluIDogeyB2YWwgOj0gaSwgaXNMdCA6PSBoaSB9IOKIiCBuXG7iiqIg wqxGYWxzZSIgOmZ1bGxSYW5nZSAoOnN0YXJ0ICg6bGluZSA4NiA6Y2hhcmFjdGVyIDExKSA6ZW5k ICg6bGluZSA4OCA6Y2hhcmFjdGVyIDQ4KSkpKSA6b3ZlcmxheS1wcm9wZXJ0aWVzIG5pbCA6b3Zl cmxheSAjPG92ZXJsYXkgZnJvbSAzNTg4IHRvIDM1OTEgaW4gR3JhZGVzLmxlYW4+IDpvcmlnLWJl ZyAzNTg4IDpvcmlnLWVuZCAzNTkxKSAjcyhmbHltYWtlLS1kaWFnIDpsb2N1cyAjPGJ1ZmZlciBH cmFkZXMubGVhbj4gOmJlZyA0MjY5IDplbmQgNDI3MCA6dHlwZSBlZ2xvdC1lcnJvciA6dGV4dCAi TGVhbiA0OiBhcHBsaWNhdGlvbiB0eXBlIG1pc21hdGNoXG4gIGloIHNcbmFyZ3VtZW50XG4gIHNc bmhhcyB0eXBlXG4gIOKGkShibGFkZXMgViAoTmF0LnN1Y2MgaykpIDogVHlwZSB1XzFcbmJ1dCBp cyBleHBlY3RlZCB0byBoYXZlIHR5cGVcbiAgRmluIGsg4oaSIFYgOiBUeXBlIHVfMSIgOmJhY2tl bmQgZWdsb3QtZmx5bWFrZS1iYWNrZW5kIDpkYXRhICgoZWdsb3QtbHNwLWRpYWcgOnNvdXJjZSAi TGVhbiA0IiA6c2V2ZXJpdHkgMSA6cmFuZ2UgKDpzdGFydCAoOmxpbmUgMTAzIDpjaGFyYWN0ZXIg MTkpIDplbmQgKDpsaW5lIDEwMyA6Y2hhcmFjdGVyIDIwKSkgOm1lc3NhZ2UgImFwcGxpY2F0aW9u IHR5cGUgbWlzbWF0Y2hcbiAgaWggc1xuYXJndW1lbnRcbiAgc1xuaGFzIHR5cGVcbiAg4oaRKGJs YWRlcyBWIChOYXQuc3VjYyBrKSkgOiBUeXBlIHVfMVxuYnV0IGlzIGV4cGVjdGVkIHRvIGhhdmUg dHlwZVxuICBGaW4gayDihpIgViA6IFR5cGUgdV8xIiA6ZnVsbFJhbmdlICg6c3RhcnQgKDpsaW5l IDEwMyA6Y2hhcmFjdGVyIDE5KSA6ZW5kICg6bGluZSAxMDMgOmNoYXJhY3RlciAyMCkpKSkgOm92 ZXJsYXktcHJvcGVydGllcyBuaWwgOm92ZXJsYXkgIzxvdmVybGF5IGZyb20gNDI2OSB0byA0Mjcw IGluIEdyYWRlcy5sZWFuPiA6b3JpZy1iZWcgNDI2OSA6b3JpZy1lbmQgNDI3MCkgI3MoZmx5bWFr ZS0tZGlhZyA6bG9jdXMgIzxidWZmZXIgR3JhZGVzLmxlYW4+IDpiZWcgNDM3NiA6ZW5kIDQzNzkg OnR5cGUgZWdsb3QtZXJyb3IgOnRleHQgIkxlYW4gNDogZnVuY3Rpb24gZXhwZWN0ZWQgYXRcbiAg dlxudGVybSBoYXMgdHlwZVxuICBFeHRlcmlvckFsZ2VicmEg4oSdIFYiIDpiYWNrZW5kIGVnbG90 LWZseW1ha2UtYmFja2VuZCA6ZGF0YSAoKGVnbG90LWxzcC1kaWFnIDpzb3VyY2UgIkxlYW4gNCIg OnNldmVyaXR5IDEgOnJhbmdlICg6c3RhcnQgKDpsaW5lIDEwNiA6Y2hhcmFjdGVyIDI3KSA6ZW5k ICg6bGluZSAxMDYgOmNoYXJhY3RlciAzMCkpIDptZXNzYWdlICJmdW5jdGlvbiBleHBlY3RlZCBh dFxuICB2XG50ZXJtIGhhcyB0eXBlXG4gIEV4dGVyaW9yQWxnZWJyYSDihJ0gViIgOmZ1bGxSYW5n ZSAoOnN0YXJ0ICg6bGluZSAxMDYgOmNoYXJhY3RlciAyNykgOmVuZCAoOmxpbmUgMTA2IDpjaGFy YWN0ZXIgMzApKSkpIDpvdmVybGF5LXByb3BlcnRpZXMgbmlsIDpvdmVybGF5ICM8b3ZlcmxheSBm cm9tIDQzNzYgdG8gNDM3OSBpbiBHcmFkZXMubGVhbj4gOm9yaWctYmVnIDQzNzYgOm9yaWctZW5k IDQzNzkpICNzKGZseW1ha2UtLWRpYWcgOmxvY3VzICM8YnVmZmVyIEdyYWRlcy5sZWFuPiA6YmVn IDQ0MzkgOmVuZCA0NDQwIDp0eXBlIGVnbG90LWVycm9yIDp0ZXh0ICJMZWFuIDQ6IGFwcGxpY2F0 aW9uIHR5cGUgbWlzbWF0Y2hcbiAgYmxhZGUgViB2XG5hcmd1bWVudFxuICB2XG5oYXMgdHlwZVxu ICBFeHRlcmlvckFsZ2VicmEg4oSdIFYgOiBUeXBlIHVfMVxuYnV0IGlzIGV4cGVjdGVkIHRvIGhh dmUgdHlwZVxuICBGaW4gP20uNDk1MzE4IOKGkiBWIDogVHlwZSB1XzEiIDpiYWNrZW5kIGVnbG90 LWZseW1ha2UtYmFja2VuZCA6ZGF0YSAoKGVnbG90LWxzcC1kaWFnIDpzb3VyY2UgIkxlYW4gNCIg OnNldmVyaXR5IDEgOnJhbmdlICg6c3RhcnQgKDpsaW5lIDEwNiA6Y2hhcmFjdGVyIDkwKSA6ZW5k ICg6bGluZSAxMDYgOmNoYXJhY3RlciA5MSkpIDptZXNzYWdlICJhcHBsaWNhdGlvbiB0eXBlIG1p c21hdGNoXG4gIGJsYWRlIFYgdlxuYXJndW1lbnRcbiAgdlxuaGFzIHR5cGVcbiAgRXh0ZXJpb3JB bGdlYnJhIOKEnSBWIDogVHlwZSB1XzFcbmJ1dCBpcyBleHBlY3RlZCB0byBoYXZlIHR5cGVcbiAg RmluID9tLjQ5NTMxOCDihpIgViA6IFR5cGUgdV8xIiA6ZnVsbFJhbmdlICg6c3RhcnQgKDpsaW5l IDEwNiA6Y2hhcmFjdGVyIDkwKSA6ZW5kICg6bGluZSAxMDYgOmNoYXJhY3RlciA5MSkpKSkgOm92 ZXJsYXktcHJvcGVydGllcyBuaWwgOm92ZXJsYXkgIzxvdmVybGF5IGZyb20gNDQzOSB0byA0NDQw IGluIEdyYWRlcy5sZWFuPiA6b3JpZy1iZWcgNDQzOSA6b3JpZy1lbmQgNDQ0MCkgI3MoZmx5bWFr ZS0tZGlhZyA6bG9jdXMgIzxidWZmZXIgR3JhZGVzLmxlYW4+IDpiZWcgNDQ2MiA6ZW5kIDQ0NjYg OnR5cGUgZWdsb3QtZXJyb3IgOnRleHQgIkxlYW4gNDogdW5zb2x2ZWQgZ29hbHNcbmNhc2UgbXBy XG5WIDogVHlwZSB1XzFcbmluc3TinJ3CuSA6IEFkZENvbW1Hcm91cCBWXG5pbnN04pydIDogTW9k dWxlIOKEnSBWXG5rIDog4oSVXG50IDogRmluIGsg4oaSIFZcbuKKoiAo4oiAIChzIDogRmluc2V0 IChGaW4gaykpIChnIDogRmluIGsg4oaSIOKEnSksIChGaW5zZXQuc3VtIHMgZnVuIGkgPT4gZyBp IOKAoiB0IGkpID0gMCDihpIg4oiAIChpIDogRmluIGspLCBpIOKIiCBzIOKGkiBnIGkgPSAwKSDi hpJcbiAgICDihpEoYmxhZGUgViB0KSDiiaAgMCIgOmJhY2tlbmQgZWdsb3QtZmx5bWFrZS1iYWNr ZW5kIDpkYXRhICgoZWdsb3QtbHNwLWRpYWcgOnNvdXJjZSAiTGVhbiA0IiA6c2V2ZXJpdHkgMSA6 cmFuZ2UgKDpzdGFydCAoOmxpbmUgMTA5IDpjaGFyYWN0ZXIgNCkgOmVuZCAoOmxpbmUgMTA5IDpj aGFyYWN0ZXIgOCkpIDptZXNzYWdlICJ1bnNvbHZlZCBnb2Fsc1xuY2FzZSBtcHJcblYgOiBUeXBl IHVfMVxuaW5zdOKcncK5IDogQWRkQ29tbUdyb3VwIFZcbmluc3TinJ0gOiBNb2R1bGUg4oSdIFZc bmsgOiDihJVcbnQgOiBGaW4gayDihpIgVlxu4oqiICjiiIAgKHMgOiBGaW5zZXQgKEZpbiBrKSkg KGcgOiBGaW4gayDihpIg4oSdKSwgKEZpbnNldC5zdW0gcyBmdW4gaSA9PiBnIGkg4oCiIHQgaSkg PSAwIOKGkiDiiIAgKGkgOiBGaW4gayksIGkg4oiIIHMg4oaSIGcgaSA9IDApIOKGklxuICAgIOKG kShibGFkZSBWIHQpIOKJoCAwIiA6ZnVsbFJhbmdlICg6c3RhcnQgKDpsaW5lIDEwOSA6Y2hhcmFj dGVyIDQpIDplbmQgKDpsaW5lIDEwOSA6Y2hhcmFjdGVyIDgpKSkpIDpvdmVybGF5LXByb3BlcnRp ZXMgbmlsIDpvdmVybGF5ICM8b3ZlcmxheSBpbiBubyBidWZmZXI+IDpvcmlnLWJlZyA0NDYyIDpv cmlnLWVuZCA0NDY2KSkgOnJlZ2lvbiAoMSAuIDQ0NDgpKQ0KICBhcHBseShmbHltYWtlLS1oYW5k bGUtcmVwb3J0IGVnbG90LWZseW1ha2UtYmFja2VuZCBiYWNrZW5kLXRva2VuMjcyMyAoKCNzKGZs eW1ha2UtLWRpYWcgOmxvY3VzICM8YnVmZmVyIEdyYWRlcy5sZWFuPiA6YmVnIDMzNzIgOmVuZCAz Mzc4IDp0eXBlIGVnbG90LW5vdGUgOnRleHQgIkxlYW4gNDogRmluc2V0LnN1bS57dSwgdn0ge86y IDogVHlwZSB1fSB7zrEgOiBUeXBlIHZ9IFtpbnN04pydIDogQWRkQ29tbU1vbm9pZCDOsl0gKHMg OiBGaW5zZXQgzrEpIChmIDogzrEg4oaSIM6yKSA6IM6yIiA6YmFja2VuZCBlZ2xvdC1mbHltYWtl LWJhY2tlbmQgOmRhdGEgKChlZ2xvdC1sc3AtZGlhZyA6c291cmNlICJMZWFuIDQiIDpzZXZlcml0 eSAzIDpyYW5nZSAoOnN0YXJ0ICg6bGluZSA3OSA6Y2hhcmFjdGVyIDApIDplbmQgKDpsaW5lIDc5 IDpjaGFyYWN0ZXIgNikpIDptZXNzYWdlICJGaW5zZXQuc3VtLnt1LCB2fSB7zrIgOiBUeXBlIHV9 IHvOsSA6IFR5cGUgdn0gW2luc3TinJ0gOiBBZGRDb21tTW9ub2lkIM6yXSAocyA6IEZpbnNldCDO sSkgKGYgOiDOsSDihpIgzrIpIDogzrIiIDpmdWxsUmFuZ2UgKDpzdGFydCAoOmxpbmUgNzkgOmNo YXJhY3RlciAwKSA6ZW5kICg6bGluZSA3OSA6Y2hhcmFjdGVyIDYpKSkpIDpvdmVybGF5LXByb3Bl cnRpZXMgbmlsIDpvdmVybGF5ICM8b3ZlcmxheSBmcm9tIDMzNzIgdG8gMzM3OCBpbiBHcmFkZXMu bGVhbj4gOm9yaWctYmVnIDMzNzIgOm9yaWctZW5kIDMzNzgpICNzKGZseW1ha2UtLWRpYWcgOmxv Y3VzICM8YnVmZmVyIEdyYWRlcy5sZWFuPiA6YmVnIDM1ODggOmVuZCAzNTkxIDp0eXBlIGVnbG90 LWVycm9yIDp0ZXh0ICJMZWFuIDQ6IHVuc29sdmVkIGdvYWxzXG5jYXNlIG1wLnplcm9cblYgOiBU eXBlIHVfMVxuaW5zdOKcncK5IDogQWRkQ29tbUdyb3VwIFZcbmluc3TinJ0gOiBNb2R1bGUg4oSd IFZcbnQgOiBGaW4gTmF0Lnplcm8g4oaSIFZcbmh0IDog4oaRKGJsYWRlIFYgdCkg4omgIDBcbm4g OiBGaW5zZXQgKEZpbiBOYXQuemVybylcbnggOiBGaW4gTmF0Lnplcm8g4oaSIOKEnVxuaHh0IDog KEZpbnNldC5zdW0gbiBmdW4gaSA9PiB4IGkg4oCiIHQgaSkgPSAwXG5pIDog4oSVXG5oaSA6IGkg PCBOYXQuemVyb1xuaGluIDogeyB2YWwgOj0gaSwgaXNMdCA6PSBoaSB9IOKIiCBuXG7iiqIgwqxG YWxzZSIgOmJhY2tlbmQgZWdsb3QtZmx5bWFrZS1iYWNrZW5kIDpkYXRhICgoZWdsb3QtbHNwLWRp YWcgOnNvdXJjZSAiTGVhbiA0IiA6c2V2ZXJpdHkgMSA6cmFuZ2UgKDpzdGFydCAoOmxpbmUgODYg OmNoYXJhY3RlciAxMSkgOmVuZCAoOmxpbmUgODcgOmNoYXJhY3RlciAwKSkgOm1lc3NhZ2UgInVu c29sdmVkIGdvYWxzXG5jYXNlIG1wLnplcm9cblYgOiBUeXBlIHVfMVxuaW5zdOKcncK5IDogQWRk Q29tbUdyb3VwIFZcbmluc3TinJ0gOiBNb2R1bGUg4oSdIFZcbnQgOiBGaW4gTmF0Lnplcm8g4oaS IFZcbmh0IDog4oaRKGJsYWRlIFYgdCkg4omgIDBcbm4gOiBGaW5zZXQgKEZpbiBOYXQuemVybylc bnggOiBGaW4gTmF0Lnplcm8g4oaSIOKEnVxuaHh0IDogKEZpbnNldC5zdW0gbiBmdW4gaSA9PiB4 IGkg4oCiIHQgaSkgPSAwXG5pIDog4oSVXG5oaSA6IGkgPCBOYXQuemVyb1xuaGluIDogeyB2YWwg Oj0gaSwgaXNMdCA6PSBoaSB9IOKIiCBuXG7iiqIgwqxGYWxzZSIgOmZ1bGxSYW5nZSAoOnN0YXJ0 ICg6bGluZSA4NiA6Y2hhcmFjdGVyIDExKSA6ZW5kICg6bGluZSA4OCA6Y2hhcmFjdGVyIDQ4KSkp KSA6b3ZlcmxheS1wcm9wZXJ0aWVzIG5pbCA6b3ZlcmxheSAjPG92ZXJsYXkgZnJvbSAzNTg4IHRv IDM1OTEgaW4gR3JhZGVzLmxlYW4+IDpvcmlnLWJlZyAzNTg4IDpvcmlnLWVuZCAzNTkxKSAjcyhm bHltYWtlLS1kaWFnIDpsb2N1cyAjPGJ1ZmZlciBHcmFkZXMubGVhbj4gOmJlZyA0MjY5IDplbmQg NDI3MCA6dHlwZSBlZ2xvdC1lcnJvciA6dGV4dCAiTGVhbiA0OiBhcHBsaWNhdGlvbiB0eXBlIG1p c21hdGNoXG4gIGloIHNcbmFyZ3VtZW50XG4gIHNcbmhhcyB0eXBlXG4gIOKGkShibGFkZXMgViAo TmF0LnN1Y2MgaykpIDogVHlwZSB1XzFcbmJ1dCBpcyBleHBlY3RlZCB0byBoYXZlIHR5cGVcbiAg RmluIGsg4oaSIFYgOiBUeXBlIHVfMSIgOmJhY2tlbmQgZWdsb3QtZmx5bWFrZS1iYWNrZW5kIDpk YXRhICgoZWdsb3QtbHNwLWRpYWcgOnNvdXJjZSAiTGVhbiA0IiA6c2V2ZXJpdHkgMSA6cmFuZ2Ug KDpzdGFydCAoOmxpbmUgMTAzIDpjaGFyYWN0ZXIgMTkpIDplbmQgKDpsaW5lIDEwMyA6Y2hhcmFj dGVyIDIwKSkgOm1lc3NhZ2UgImFwcGxpY2F0aW9uIHR5cGUgbWlzbWF0Y2hcbiAgaWggc1xuYXJn dW1lbnRcbiAgc1xuaGFzIHR5cGVcbiAg4oaRKGJsYWRlcyBWIChOYXQuc3VjYyBrKSkgOiBUeXBl IHVfMVxuYnV0IGlzIGV4cGVjdGVkIHRvIGhhdmUgdHlwZVxuICBGaW4gayDihpIgViA6IFR5cGUg dV8xIiA6ZnVsbFJhbmdlICg6c3RhcnQgKDpsaW5lIDEwMyA6Y2hhcmFjdGVyIDE5KSA6ZW5kICg6 bGluZSAxMDMgOmNoYXJhY3RlciAyMCkpKSkgOm92ZXJsYXktcHJvcGVydGllcyBuaWwgOm92ZXJs YXkgIzxvdmVybGF5IGZyb20gNDI2OSB0byA0MjcwIGluIEdyYWRlcy5sZWFuPiA6b3JpZy1iZWcg NDI2OSA6b3JpZy1lbmQgNDI3MCkgI3MoZmx5bWFrZS0tZGlhZyA6bG9jdXMgIzxidWZmZXIgR3Jh ZGVzLmxlYW4+IDpiZWcgNDM3NiA6ZW5kIDQzNzkgOnR5cGUgZWdsb3QtZXJyb3IgOnRleHQgIkxl YW4gNDogZnVuY3Rpb24gZXhwZWN0ZWQgYXRcbiAgdlxudGVybSBoYXMgdHlwZVxuICBFeHRlcmlv ckFsZ2VicmEg4oSdIFYiIDpiYWNrZW5kIGVnbG90LWZseW1ha2UtYmFja2VuZCA6ZGF0YSAoKGVn bG90LWxzcC1kaWFnIDpzb3VyY2UgIkxlYW4gNCIgOnNldmVyaXR5IDEgOnJhbmdlICg6c3RhcnQg KDpsaW5lIDEwNiA6Y2hhcmFjdGVyIDI3KSA6ZW5kICg6bGluZSAxMDYgOmNoYXJhY3RlciAzMCkp IDptZXNzYWdlICJmdW5jdGlvbiBleHBlY3RlZCBhdFxuICB2XG50ZXJtIGhhcyB0eXBlXG4gIEV4 dGVyaW9yQWxnZWJyYSDihJ0gViIgOmZ1bGxSYW5nZSAoOnN0YXJ0ICg6bGluZSAxMDYgOmNoYXJh Y3RlciAyNykgOmVuZCAoOmxpbmUgMTA2IDpjaGFyYWN0ZXIgMzApKSkpIDpvdmVybGF5LXByb3Bl cnRpZXMgbmlsIDpvdmVybGF5ICM8b3ZlcmxheSBmcm9tIDQzNzYgdG8gNDM3OSBpbiBHcmFkZXMu bGVhbj4gOm9yaWctYmVnIDQzNzYgOm9yaWctZW5kIDQzNzkpICNzKGZseW1ha2UtLWRpYWcgOmxv Y3VzICM8YnVmZmVyIEdyYWRlcy5sZWFuPiA6YmVnIDQ0MzkgOmVuZCA0NDQwIDp0eXBlIGVnbG90 LWVycm9yIDp0ZXh0ICJMZWFuIDQ6IGFwcGxpY2F0aW9uIHR5cGUgbWlzbWF0Y2hcbiAgYmxhZGUg ViB2XG5hcmd1bWVudFxuICB2XG5oYXMgdHlwZVxuICBFeHRlcmlvckFsZ2VicmEg4oSdIFYgOiBU eXBlIHVfMVxuYnV0IGlzIGV4cGVjdGVkIHRvIGhhdmUgdHlwZVxuICBGaW4gP20uNDk1MzE4IOKG kiBWIDogVHlwZSB1XzEiIDpiYWNrZW5kIGVnbG90LWZseW1ha2UtYmFja2VuZCA6ZGF0YSAoKGVn bG90LWxzcC1kaWFnIDpzb3VyY2UgIkxlYW4gNCIgOnNldmVyaXR5IDEgOnJhbmdlICg6c3RhcnQg KDpsaW5lIDEwNiA6Y2hhcmFjdGVyIDkwKSA6ZW5kICg6bGluZSAxMDYgOmNoYXJhY3RlciA5MSkp IDptZXNzYWdlICJhcHBsaWNhdGlvbiB0eXBlIG1pc21hdGNoXG4gIGJsYWRlIFYgdlxuYXJndW1l bnRcbiAgdlxuaGFzIHR5cGVcbiAgRXh0ZXJpb3JBbGdlYnJhIOKEnSBWIDogVHlwZSB1XzFcbmJ1 dCBpcyBleHBlY3RlZCB0byBoYXZlIHR5cGVcbiAgRmluID9tLjQ5NTMxOCDihpIgViA6IFR5cGUg dV8xIiA6ZnVsbFJhbmdlICg6c3RhcnQgKDpsaW5lIDEwNiA6Y2hhcmFjdGVyIDkwKSA6ZW5kICg6 bGluZSAxMDYgOmNoYXJhY3RlciA5MSkpKSkgOm92ZXJsYXktcHJvcGVydGllcyBuaWwgOm92ZXJs YXkgIzxvdmVybGF5IGZyb20gNDQzOSB0byA0NDQwIGluIEdyYWRlcy5sZWFuPiA6b3JpZy1iZWcg NDQzOSA6b3JpZy1lbmQgNDQ0MCkgI3MoZmx5bWFrZS0tZGlhZyA6bG9jdXMgIzxidWZmZXIgR3Jh ZGVzLmxlYW4+IDpiZWcgNDQ2MiA6ZW5kIDQ0NjYgOnR5cGUgZWdsb3QtZXJyb3IgOnRleHQgIkxl YW4gNDogdW5zb2x2ZWQgZ29hbHNcbmNhc2UgbXByXG5WIDogVHlwZSB1XzFcbmluc3TinJ3CuSA6 IEFkZENvbW1Hcm91cCBWXG5pbnN04pydIDogTW9kdWxlIOKEnSBWXG5rIDog4oSVXG50IDogRmlu IGsg4oaSIFZcbuKKoiAo4oiAIChzIDogRmluc2V0IChGaW4gaykpIChnIDogRmluIGsg4oaSIOKE nSksIChGaW5zZXQuc3VtIHMgZnVuIGkgPT4gZyBpIOKAoiB0IGkpID0gMCDihpIg4oiAIChpIDog RmluIGspLCBpIOKIiCBzIOKGkiBnIGkgPSAwKSDihpJcbiAgICDihpEoYmxhZGUgViB0KSDiiaAg MCIgOmJhY2tlbmQgZWdsb3QtZmx5bWFrZS1iYWNrZW5kIDpkYXRhICgoZWdsb3QtbHNwLWRpYWcg OnNvdXJjZSAiTGVhbiA0IiA6c2V2ZXJpdHkgMSA6cmFuZ2UgKDpzdGFydCAoOmxpbmUgMTA5IDpj aGFyYWN0ZXIgNCkgOmVuZCAoOmxpbmUgMTA5IDpjaGFyYWN0ZXIgOCkpIDptZXNzYWdlICJ1bnNv bHZlZCBnb2Fsc1xuY2FzZSBtcHJcblYgOiBUeXBlIHVfMVxuaW5zdOKcncK5IDogQWRkQ29tbUdy b3VwIFZcbmluc3TinJ0gOiBNb2R1bGUg4oSdIFZcbmsgOiDihJVcbnQgOiBGaW4gayDihpIgVlxu 4oqiICjiiIAgKHMgOiBGaW5zZXQgKEZpbiBrKSkgKGcgOiBGaW4gayDihpIg4oSdKSwgKEZpbnNl dC5zdW0gcyBmdW4gaSA9PiBnIGkg4oCiIHQgaSkgPSAwIOKGkiDiiIAgKGkgOiBGaW4gayksIGkg 4oiIIHMg4oaSIGcgaSA9IDApIOKGklxuICAgIOKGkShibGFkZSBWIHQpIOKJoCAwIiA6ZnVsbFJh bmdlICg6c3RhcnQgKDpsaW5lIDEwOSA6Y2hhcmFjdGVyIDQpIDplbmQgKDpsaW5lIDEwOSA6Y2hh cmFjdGVyIDgpKSkpIDpvdmVybGF5LXByb3BlcnRpZXMgbmlsIDpvdmVybGF5ICM8b3ZlcmxheSBp biBubyBidWZmZXI+IDpvcmlnLWJlZyA0NDYyIDpvcmlnLWVuZCA0NDY2KSkgOnJlZ2lvbiAoMSAu IDQ0NDgpKSkNCiAgKHNhdmUtY3VycmVudC1idWZmZXIgKHNldC1idWZmZXIgYnVmZmVyKSAoYXBw bHkgIydmbHltYWtlLS1oYW5kbGUtcmVwb3J0IGJhY2tlbmQgdG9rZW4gYXJncykpDQogIChwcm9n biAoc2F2ZS1jdXJyZW50LWJ1ZmZlciAoc2V0LWJ1ZmZlciBidWZmZXIpIChhcHBseSAjJ2ZseW1h a2UtLWhhbmRsZS1yZXBvcnQgYmFja2VuZCB0b2tlbiBhcmdzKSkpDQogIChpZiAoYnVmZmVyLWxp dmUtcCBidWZmZXIpIChwcm9nbiAoc2F2ZS1jdXJyZW50LWJ1ZmZlciAoc2V0LWJ1ZmZlciBidWZm ZXIpIChhcHBseSAjJ2ZseW1ha2UtLWhhbmRsZS1yZXBvcnQgYmFja2VuZCB0b2tlbiBhcmdzKSkp KQ0KICAoY2xvc3VyZSAoKGJ1ZmZlciAuICM8YnVmZmVyIEdyYWRlcy5sZWFuPikgKHRva2VuIC4g YmFja2VuZC10b2tlbjI3MjMpIChiYWNrZW5kIC4gZWdsb3QtZmx5bWFrZS1iYWNrZW5kKSkgKCZy ZXN0IGFyZ3MpIChpZiAoYnVmZmVyLWxpdmUtcCBidWZmZXIpIChwcm9nbiAoc2F2ZS1jdXJyZW50 LWJ1ZmZlciAoc2V0LWJ1ZmZlciBidWZmZXIpIChhcHBseSAjJ2ZseW1ha2UtLWhhbmRsZS1yZXBv cnQgYmFja2VuZCB0b2tlbiBhcmdzKSkpKSkoKCNzKGZseW1ha2UtLWRpYWcgOmxvY3VzICM8YnVm ZmVyIEdyYWRlcy5sZWFuPiA6YmVnIDMzNzIgOmVuZCAzMzc4IDp0eXBlIGVnbG90LW5vdGUgOnRl eHQgIkxlYW4gNDogRmluc2V0LnN1bS57dSwgdn0ge86yIDogVHlwZSB1fSB7zrEgOiBUeXBlIHZ9 IFtpbnN04pydIDogQWRkQ29tbU1vbm9pZCDOsl0gKHMgOiBGaW5zZXQgzrEpIChmIDogzrEg4oaS IM6yKSA6IM6yIiA6YmFja2VuZCBlZ2xvdC1mbHltYWtlLWJhY2tlbmQgOmRhdGEgKChlZ2xvdC1s c3AtZGlhZyA6c291cmNlICJMZWFuIDQiIDpzZXZlcml0eSAzIDpyYW5nZSAoOnN0YXJ0IC4uLiA6 ZW5kIC4uLikgOm1lc3NhZ2UgIkZpbnNldC5zdW0ue3UsIHZ9IHvOsiA6IFR5cGUgdX0ge86xIDog VHlwZSB2fSBbaW5zdOKcnSA6IEFkZENvbW1Nb25vaWQgzrJdIChzIDogRmluc2V0IM6xKSAoZiA6 IM6xIOKGkiDOsikgOiDOsiIgOmZ1bGxSYW5nZSAoOnN0YXJ0IC4uLiA6ZW5kIC4uLikpKSA6b3Zl cmxheS1wcm9wZXJ0aWVzIG5pbCA6b3ZlcmxheSAjPG92ZXJsYXkgZnJvbSAzMzcyIHRvIDMzNzgg aW4gR3JhZGVzLmxlYW4+IDpvcmlnLWJlZyAzMzcyIDpvcmlnLWVuZCAzMzc4KSAjcyhmbHltYWtl LS1kaWFnIDpsb2N1cyAjPGJ1ZmZlciBHcmFkZXMubGVhbj4gOmJlZyAzNTg4IDplbmQgMzU5MSA6 dHlwZSBlZ2xvdC1lcnJvciA6dGV4dCAiTGVhbiA0OiB1bnNvbHZlZCBnb2Fsc1xuY2FzZSBtcC56 ZXJvXG5WIDogVHlwZSB1XzFcbmluc3TinJ3CuSA6IEFkZENvbW1Hcm91cCBWXG5pbnN04pydIDog TW9kdWxlIOKEnSBWXG50IDogRmluIE5hdC56ZXJvIOKGkiBWXG5odCA6IOKGkShibGFkZSBWIHQp IOKJoCAwXG5uIDogRmluc2V0IChGaW4gTmF0Lnplcm8pXG54IDogRmluIE5hdC56ZXJvIOKGkiDi hJ1cbmh4dCA6IChGaW5zZXQuc3VtIG4gZnVuIGkgPT4geCBpIOKAoiB0IGkpID0gMFxuaSA6IOKE lVxuaGkgOiBpIDwgTmF0Lnplcm9cbmhpbiA6IHsgdmFsIDo9IGksIGlzTHQgOj0gaGkgfSDiiIgg blxu4oqiIMKsRmFsc2UiIDpiYWNrZW5kIGVnbG90LWZseW1ha2UtYmFja2VuZCA6ZGF0YSAoKGVn bG90LWxzcC1kaWFnIDpzb3VyY2UgIkxlYW4gNCIgOnNldmVyaXR5IDEgOnJhbmdlICg6c3RhcnQg Li4uIDplbmQgLi4uKSA6bWVzc2FnZSAidW5zb2x2ZWQgZ29hbHNcbmNhc2UgbXAuemVyb1xuViA6 IFR5cGUgdV8xXG5pbnN04pydwrkgOiBBZGRDb21tR3JvdXAgVlxuaW5zdOKcnSA6IE1vZHVsZSDi hJ0gVlxudCA6IEZpbiBOYXQuemVybyDihpIgVlxuaHQgOiDihpEoYmxhZGUgViB0KSDiiaAgMFxu biA6IEZpbnNldCAoRmluIE5hdC56ZXJvKVxueCA6IEZpbiBOYXQuemVybyDihpIg4oSdXG5oeHQg OiAoRmluc2V0LnN1bSBuIGZ1biBpID0+IHggaSDigKIgdCBpKSA9IDBcbmkgOiDihJVcbmhpIDog aSA8IE5hdC56ZXJvXG5oaW4gOiB7IHZhbCA6PSBpLCBpc0x0IDo9IGhpIH0g4oiIIG5cbuKKoiDC rEZhbHNlIiA6ZnVsbFJhbmdlICg6c3RhcnQgLi4uIDplbmQgLi4uKSkpIDpvdmVybGF5LXByb3Bl cnRpZXMgbmlsIDpvdmVybGF5ICM8b3ZlcmxheSBmcm9tIDM1ODggdG8gMzU5MSBpbiBHcmFkZXMu bGVhbj4gOm9yaWctYmVnIDM1ODggOm9yaWctZW5kIDM1OTEpICNzKGZseW1ha2UtLWRpYWcgOmxv Y3VzICM8YnVmZmVyIEdyYWRlcy5sZWFuPiA6YmVnIDQyNjkgOmVuZCA0MjcwIDp0eXBlIGVnbG90 LWVycm9yIDp0ZXh0ICJMZWFuIDQ6IGFwcGxpY2F0aW9uIHR5cGUgbWlzbWF0Y2hcbiAgaWggc1xu YXJndW1lbnRcbiAgc1xuaGFzIHR5cGVcbiAg4oaRKGJsYWRlcyBWIChOYXQuc3VjYyBrKSkgOiBU eXBlIHVfMVxuYnV0IGlzIGV4cGVjdGVkIHRvIGhhdmUgdHlwZVxuICBGaW4gayDihpIgViA6IFR5 cGUgdV8xIiA6YmFja2VuZCBlZ2xvdC1mbHltYWtlLWJhY2tlbmQgOmRhdGEgKChlZ2xvdC1sc3At ZGlhZyA6c291cmNlICJMZWFuIDQiIDpzZXZlcml0eSAxIDpyYW5nZSAoOnN0YXJ0IC4uLiA6ZW5k IC4uLikgOm1lc3NhZ2UgImFwcGxpY2F0aW9uIHR5cGUgbWlzbWF0Y2hcbiAgaWggc1xuYXJndW1l bnRcbiAgc1xuaGFzIHR5cGVcbiAg4oaRKGJsYWRlcyBWIChOYXQuc3VjYyBrKSkgOiBUeXBlIHVf MVxuYnV0IGlzIGV4cGVjdGVkIHRvIGhhdmUgdHlwZVxuICBGaW4gayDihpIgViA6IFR5cGUgdV8x IiA6ZnVsbFJhbmdlICg6c3RhcnQgLi4uIDplbmQgLi4uKSkpIDpvdmVybGF5LXByb3BlcnRpZXMg bmlsIDpvdmVybGF5ICM8b3ZlcmxheSBmcm9tIDQyNjkgdG8gNDI3MCBpbiBHcmFkZXMubGVhbj4g Om9yaWctYmVnIDQyNjkgOm9yaWctZW5kIDQyNzApICNzKGZseW1ha2UtLWRpYWcgOmxvY3VzICM8 YnVmZmVyIEdyYWRlcy5sZWFuPiA6YmVnIDQzNzYgOmVuZCA0Mzc5IDp0eXBlIGVnbG90LWVycm9y IDp0ZXh0ICJMZWFuIDQ6IGZ1bmN0aW9uIGV4cGVjdGVkIGF0XG4gIHZcbnRlcm0gaGFzIHR5cGVc biAgRXh0ZXJpb3JBbGdlYnJhIOKEnSBWIiA6YmFja2VuZCBlZ2xvdC1mbHltYWtlLWJhY2tlbmQg OmRhdGEgKChlZ2xvdC1sc3AtZGlhZyA6c291cmNlICJMZWFuIDQiIDpzZXZlcml0eSAxIDpyYW5n ZSAoOnN0YXJ0IC4uLiA6ZW5kIC4uLikgOm1lc3NhZ2UgImZ1bmN0aW9uIGV4cGVjdGVkIGF0XG4g IHZcbnRlcm0gaGFzIHR5cGVcbiAgRXh0ZXJpb3JBbGdlYnJhIOKEnSBWIiA6ZnVsbFJhbmdlICg6 c3RhcnQgLi4uIDplbmQgLi4uKSkpIDpvdmVybGF5LXByb3BlcnRpZXMgbmlsIDpvdmVybGF5ICM8 b3ZlcmxheSBmcm9tIDQzNzYgdG8gNDM3OSBpbiBHcmFkZXMubGVhbj4gOm9yaWctYmVnIDQzNzYg Om9yaWctZW5kIDQzNzkpICNzKGZseW1ha2UtLWRpYWcgOmxvY3VzICM8YnVmZmVyIEdyYWRlcy5s ZWFuPiA6YmVnIDQ0MzkgOmVuZCA0NDQwIDp0eXBlIGVnbG90LWVycm9yIDp0ZXh0ICJMZWFuIDQ6 IGFwcGxpY2F0aW9uIHR5cGUgbWlzbWF0Y2hcbiAgYmxhZGUgViB2XG5hcmd1bWVudFxuICB2XG5o YXMgdHlwZVxuICBFeHRlcmlvckFsZ2VicmEg4oSdIFYgOiBUeXBlIHVfMVxuYnV0IGlzIGV4cGVj dGVkIHRvIGhhdmUgdHlwZVxuICBGaW4gP20uNDk1MzE4IOKGkiBWIDogVHlwZSB1XzEiIDpiYWNr ZW5kIGVnbG90LWZseW1ha2UtYmFja2VuZCA6ZGF0YSAoKGVnbG90LWxzcC1kaWFnIDpzb3VyY2Ug IkxlYW4gNCIgOnNldmVyaXR5IDEgOnJhbmdlICg6c3RhcnQgLi4uIDplbmQgLi4uKSA6bWVzc2Fn ZSAiYXBwbGljYXRpb24gdHlwZSBtaXNtYXRjaFxuICBibGFkZSBWIHZcbmFyZ3VtZW50XG4gIHZc bmhhcyB0eXBlXG4gIEV4dGVyaW9yQWxnZWJyYSDihJ0gViA6IFR5cGUgdV8xXG5idXQgaXMgZXhw ZWN0ZWQgdG8gaGF2ZSB0eXBlXG4gIEZpbiA/bS40OTUzMTgg4oaSIFYgOiBUeXBlIHVfMSIgOmZ1 bGxSYW5nZSAoOnN0YXJ0IC4uLiA6ZW5kIC4uLikpKSA6b3ZlcmxheS1wcm9wZXJ0aWVzIG5pbCA6 b3ZlcmxheSAjPG92ZXJsYXkgZnJvbSA0NDM5IHRvIDQ0NDAgaW4gR3JhZGVzLmxlYW4+IDpvcmln LWJlZyA0NDM5IDpvcmlnLWVuZCA0NDQwKSAjcyhmbHltYWtlLS1kaWFnIDpsb2N1cyAjPGJ1ZmZl ciBHcmFkZXMubGVhbj4gOmJlZyA0NDYyIDplbmQgNDQ2NiA6dHlwZSBlZ2xvdC1lcnJvciA6dGV4 dCAiTGVhbiA0OiB1bnNvbHZlZCBnb2Fsc1xuY2FzZSBtcHJcblYgOiBUeXBlIHVfMVxuaW5zdOKc ncK5IDogQWRkQ29tbUdyb3VwIFZcbmluc3TinJ0gOiBNb2R1bGUg4oSdIFZcbmsgOiDihJVcbnQg OiBGaW4gayDihpIgVlxu4oqiICjiiIAgKHMgOiBGaW5zZXQgKEZpbiBrKSkgKGcgOiBGaW4gayDi hpIg4oSdKSwgKEZpbnNldC5zdW0gcyBmdW4gaSA9PiBnIGkg4oCiIHQgaSkgPSAwIOKGkiDiiIAg KGkgOiBGaW4gayksIGkg4oiIIHMg4oaSIGcgaSA9IDApIOKGklxuICAgIOKGkShibGFkZSBWIHQp IOKJoCAwIiA6YmFja2VuZCBlZ2xvdC1mbHltYWtlLWJhY2tlbmQgOmRhdGEgKChlZ2xvdC1sc3At ZGlhZyA6c291cmNlICJMZWFuIDQiIDpzZXZlcml0eSAxIDpyYW5nZSAoOnN0YXJ0IC4uLiA6ZW5k IC4uLikgOm1lc3NhZ2UgInVuc29sdmVkIGdvYWxzXG5jYXNlIG1wclxuViA6IFR5cGUgdV8xXG5p bnN04pydwrkgOiBBZGRDb21tR3JvdXAgVlxuaW5zdOKcnSA6IE1vZHVsZSDihJ0gVlxuayA6IOKE lVxudCA6IEZpbiBrIOKGkiBWXG7iiqIgKOKIgCAocyA6IEZpbnNldCAoRmluIGspKSAoZyA6IEZp biBrIOKGkiDihJ0pLCAoRmluc2V0LnN1bSBzIGZ1biBpID0+IGcgaSDigKIgdCBpKSA9IDAg4oaS IOKIgCAoaSA6IEZpbiBrKSwgaSDiiIggcyDihpIgZyBpID0gMCkg4oaSXG4gICAg4oaRKGJsYWRl IFYgdCkg4omgIDAiIDpmdWxsUmFuZ2UgKDpzdGFydCAuLi4gOmVuZCAuLi4pKSkgOm92ZXJsYXkt cHJvcGVydGllcyBuaWwgOm92ZXJsYXkgIzxvdmVybGF5IGluIG5vIGJ1ZmZlcj4gOm9yaWctYmVn IDQ0NjIgOm9yaWctZW5kIDQ0NjYpKSA6cmVnaW9uICgxIC4gNDQ0OCkpDQogIGZ1bmNhbGwoKGNs b3N1cmUgKChidWZmZXIgLiAjPGJ1ZmZlciBHcmFkZXMubGVhbj4pICh0b2tlbiAuIGJhY2tlbmQt dG9rZW4yNzIzKSAoYmFja2VuZCAuIGVnbG90LWZseW1ha2UtYmFja2VuZCkpICgmcmVzdCBhcmdz KSAoaWYgKGJ1ZmZlci1saXZlLXAgYnVmZmVyKSAocHJvZ24gKHNhdmUtY3VycmVudC1idWZmZXIg KHNldC1idWZmZXIgYnVmZmVyKSAoYXBwbHkgLi4uIGJhY2tlbmQgdG9rZW4gYXJncykpKSkpICgj cyhmbHltYWtlLS1kaWFnIDpsb2N1cyAjPGJ1ZmZlciBHcmFkZXMubGVhbj4gOmJlZyAzMzcyIDpl bmQgMzM3OCA6dHlwZSBlZ2xvdC1ub3RlIDp0ZXh0ICJMZWFuIDQ6IEZpbnNldC5zdW0ue3UsIHZ9 IHvOsiA6IFR5cGUgdX0ge86xIDogVHlwZSB2fSBbaW5zdOKcnSA6IEFkZENvbW1Nb25vaWQgzrJd IChzIDogRmluc2V0IM6xKSAoZiA6IM6xIOKGkiDOsikgOiDOsiIgOmJhY2tlbmQgZWdsb3QtZmx5 bWFrZS1iYWNrZW5kIDpkYXRhICgoZWdsb3QtbHNwLWRpYWcgOnNvdXJjZSAiTGVhbiA0IiA6c2V2 ZXJpdHkgMyA6cmFuZ2UgKDpzdGFydCAuLi4gOmVuZCAuLi4pIDptZXNzYWdlICJGaW5zZXQuc3Vt Lnt1LCB2fSB7zrIgOiBUeXBlIHV9IHvOsSA6IFR5cGUgdn0gW2luc3TinJ0gOiBBZGRDb21tTW9u b2lkIM6yXSAocyA6IEZpbnNldCDOsSkgKGYgOiDOsSDihpIgzrIpIDogzrIiIDpmdWxsUmFuZ2Ug KDpzdGFydCAuLi4gOmVuZCAuLi4pKSkgOm92ZXJsYXktcHJvcGVydGllcyBuaWwgOm92ZXJsYXkg IzxvdmVybGF5IGZyb20gMzM3MiB0byAzMzc4IGluIEdyYWRlcy5sZWFuPiA6b3JpZy1iZWcgMzM3 MiA6b3JpZy1lbmQgMzM3OCkgI3MoZmx5bWFrZS0tZGlhZyA6bG9jdXMgIzxidWZmZXIgR3JhZGVz LmxlYW4+IDpiZWcgMzU4OCA6ZW5kIDM1OTEgOnR5cGUgZWdsb3QtZXJyb3IgOnRleHQgIkxlYW4g NDogdW5zb2x2ZWQgZ29hbHNcbmNhc2UgbXAuemVyb1xuViA6IFR5cGUgdV8xXG5pbnN04pydwrkg OiBBZGRDb21tR3JvdXAgVlxuaW5zdOKcnSA6IE1vZHVsZSDihJ0gVlxudCA6IEZpbiBOYXQuemVy byDihpIgVlxuaHQgOiDihpEoYmxhZGUgViB0KSDiiaAgMFxubiA6IEZpbnNldCAoRmluIE5hdC56 ZXJvKVxueCA6IEZpbiBOYXQuemVybyDihpIg4oSdXG5oeHQgOiAoRmluc2V0LnN1bSBuIGZ1biBp ID0+IHggaSDigKIgdCBpKSA9IDBcbmkgOiDihJVcbmhpIDogaSA8IE5hdC56ZXJvXG5oaW4gOiB7 IHZhbCA6PSBpLCBpc0x0IDo9IGhpIH0g4oiIIG5cbuKKoiDCrEZhbHNlIiA6YmFja2VuZCBlZ2xv dC1mbHltYWtlLWJhY2tlbmQgOmRhdGEgKChlZ2xvdC1sc3AtZGlhZyA6c291cmNlICJMZWFuIDQi IDpzZXZlcml0eSAxIDpyYW5nZSAoOnN0YXJ0IC4uLiA6ZW5kIC4uLikgOm1lc3NhZ2UgInVuc29s dmVkIGdvYWxzXG5jYXNlIG1wLnplcm9cblYgOiBUeXBlIHVfMVxuaW5zdOKcncK5IDogQWRkQ29t bUdyb3VwIFZcbmluc3TinJ0gOiBNb2R1bGUg4oSdIFZcbnQgOiBGaW4gTmF0Lnplcm8g4oaSIFZc bmh0IDog4oaRKGJsYWRlIFYgdCkg4omgIDBcbm4gOiBGaW5zZXQgKEZpbiBOYXQuemVybylcbngg OiBGaW4gTmF0Lnplcm8g4oaSIOKEnVxuaHh0IDogKEZpbnNldC5zdW0gbiBmdW4gaSA9PiB4IGkg 4oCiIHQgaSkgPSAwXG5pIDog4oSVXG5oaSA6IGkgPCBOYXQuemVyb1xuaGluIDogeyB2YWwgOj0g aSwgaXNMdCA6PSBoaSB9IOKIiCBuXG7iiqIgwqxGYWxzZSIgOmZ1bGxSYW5nZSAoOnN0YXJ0IC4u LiA6ZW5kIC4uLikpKSA6b3ZlcmxheS1wcm9wZXJ0aWVzIG5pbCA6b3ZlcmxheSAjPG92ZXJsYXkg ZnJvbSAzNTg4IHRvIDM1OTEgaW4gR3JhZGVzLmxlYW4+IDpvcmlnLWJlZyAzNTg4IDpvcmlnLWVu ZCAzNTkxKSAjcyhmbHltYWtlLS1kaWFnIDpsb2N1cyAjPGJ1ZmZlciBHcmFkZXMubGVhbj4gOmJl ZyA0MjY5IDplbmQgNDI3MCA6dHlwZSBlZ2xvdC1lcnJvciA6dGV4dCAiTGVhbiA0OiBhcHBsaWNh dGlvbiB0eXBlIG1pc21hdGNoXG4gIGloIHNcbmFyZ3VtZW50XG4gIHNcbmhhcyB0eXBlXG4gIOKG kShibGFkZXMgViAoTmF0LnN1Y2MgaykpIDogVHlwZSB1XzFcbmJ1dCBpcyBleHBlY3RlZCB0byBo YXZlIHR5cGVcbiAgRmluIGsg4oaSIFYgOiBUeXBlIHVfMSIgOmJhY2tlbmQgZWdsb3QtZmx5bWFr ZS1iYWNrZW5kIDpkYXRhICgoZWdsb3QtbHNwLWRpYWcgOnNvdXJjZSAiTGVhbiA0IiA6c2V2ZXJp dHkgMSA6cmFuZ2UgKDpzdGFydCAuLi4gOmVuZCAuLi4pIDptZXNzYWdlICJhcHBsaWNhdGlvbiB0 eXBlIG1pc21hdGNoXG4gIGloIHNcbmFyZ3VtZW50XG4gIHNcbmhhcyB0eXBlXG4gIOKGkShibGFk ZXMgViAoTmF0LnN1Y2MgaykpIDogVHlwZSB1XzFcbmJ1dCBpcyBleHBlY3RlZCB0byBoYXZlIHR5 cGVcbiAgRmluIGsg4oaSIFYgOiBUeXBlIHVfMSIgOmZ1bGxSYW5nZSAoOnN0YXJ0IC4uLiA6ZW5k IC4uLikpKSA6b3ZlcmxheS1wcm9wZXJ0aWVzIG5pbCA6b3ZlcmxheSAjPG92ZXJsYXkgZnJvbSA0 MjY5IHRvIDQyNzAgaW4gR3JhZGVzLmxlYW4+IDpvcmlnLWJlZyA0MjY5IDpvcmlnLWVuZCA0Mjcw KSAjcyhmbHltYWtlLS1kaWFnIDpsb2N1cyAjPGJ1ZmZlciBHcmFkZXMubGVhbj4gOmJlZyA0Mzc2 IDplbmQgNDM3OSA6dHlwZSBlZ2xvdC1lcnJvciA6dGV4dCAiTGVhbiA0OiBmdW5jdGlvbiBleHBl Y3RlZCBhdFxuICB2XG50ZXJtIGhhcyB0eXBlXG4gIEV4dGVyaW9yQWxnZWJyYSDihJ0gViIgOmJh Y2tlbmQgZWdsb3QtZmx5bWFrZS1iYWNrZW5kIDpkYXRhICgoZWdsb3QtbHNwLWRpYWcgOnNvdXJj ZSAiTGVhbiA0IiA6c2V2ZXJpdHkgMSA6cmFuZ2UgKDpzdGFydCAuLi4gOmVuZCAuLi4pIDptZXNz YWdlICJmdW5jdGlvbiBleHBlY3RlZCBhdFxuICB2XG50ZXJtIGhhcyB0eXBlXG4gIEV4dGVyaW9y QWxnZWJyYSDihJ0gViIgOmZ1bGxSYW5nZSAoOnN0YXJ0IC4uLiA6ZW5kIC4uLikpKSA6b3Zlcmxh eS1wcm9wZXJ0aWVzIG5pbCA6b3ZlcmxheSAjPG92ZXJsYXkgZnJvbSA0Mzc2IHRvIDQzNzkgaW4g R3JhZGVzLmxlYW4+IDpvcmlnLWJlZyA0Mzc2IDpvcmlnLWVuZCA0Mzc5KSAjcyhmbHltYWtlLS1k aWFnIDpsb2N1cyAjPGJ1ZmZlciBHcmFkZXMubGVhbj4gOmJlZyA0NDM5IDplbmQgNDQ0MCA6dHlw ZSBlZ2xvdC1lcnJvciA6dGV4dCAiTGVhbiA0OiBhcHBsaWNhdGlvbiB0eXBlIG1pc21hdGNoXG4g IGJsYWRlIFYgdlxuYXJndW1lbnRcbiAgdlxuaGFzIHR5cGVcbiAgRXh0ZXJpb3JBbGdlYnJhIOKE nSBWIDogVHlwZSB1XzFcbmJ1dCBpcyBleHBlY3RlZCB0byBoYXZlIHR5cGVcbiAgRmluID9tLjQ5 NTMxOCDihpIgViA6IFR5cGUgdV8xIiA6YmFja2VuZCBlZ2xvdC1mbHltYWtlLWJhY2tlbmQgOmRh dGEgKChlZ2xvdC1sc3AtZGlhZyA6c291cmNlICJMZWFuIDQiIDpzZXZlcml0eSAxIDpyYW5nZSAo OnN0YXJ0IC4uLiA6ZW5kIC4uLikgOm1lc3NhZ2UgImFwcGxpY2F0aW9uIHR5cGUgbWlzbWF0Y2hc biAgYmxhZGUgViB2XG5hcmd1bWVudFxuICB2XG5oYXMgdHlwZVxuICBFeHRlcmlvckFsZ2VicmEg 4oSdIFYgOiBUeXBlIHVfMVxuYnV0IGlzIGV4cGVjdGVkIHRvIGhhdmUgdHlwZVxuICBGaW4gP20u NDk1MzE4IOKGkiBWIDogVHlwZSB1XzEiIDpmdWxsUmFuZ2UgKDpzdGFydCAuLi4gOmVuZCAuLi4p KSkgOm92ZXJsYXktcHJvcGVydGllcyBuaWwgOm92ZXJsYXkgIzxvdmVybGF5IGZyb20gNDQzOSB0 byA0NDQwIGluIEdyYWRlcy5sZWFuPiA6b3JpZy1iZWcgNDQzOSA6b3JpZy1lbmQgNDQ0MCkgI3Mo Zmx5bWFrZS0tZGlhZyA6bG9jdXMgIzxidWZmZXIgR3JhZGVzLmxlYW4+IDpiZWcgNDQ2MiA6ZW5k IDQ0NjYgOnR5cGUgZWdsb3QtZXJyb3IgOnRleHQgIkxlYW4gNDogdW5zb2x2ZWQgZ29hbHNcbmNh c2UgbXByXG5WIDogVHlwZSB1XzFcbmluc3TinJ3CuSA6IEFkZENvbW1Hcm91cCBWXG5pbnN04pyd IDogTW9kdWxlIOKEnSBWXG5rIDog4oSVXG50IDogRmluIGsg4oaSIFZcbuKKoiAo4oiAIChzIDog Rmluc2V0IChGaW4gaykpIChnIDogRmluIGsg4oaSIOKEnSksIChGaW5zZXQuc3VtIHMgZnVuIGkg PT4gZyBpIOKAoiB0IGkpID0gMCDihpIg4oiAIChpIDogRmluIGspLCBpIOKIiCBzIOKGkiBnIGkg PSAwKSDihpJcbiAgICDihpEoYmxhZGUgViB0KSDiiaAgMCIgOmJhY2tlbmQgZWdsb3QtZmx5bWFr ZS1iYWNrZW5kIDpkYXRhICgoZWdsb3QtbHNwLWRpYWcgOnNvdXJjZSAiTGVhbiA0IiA6c2V2ZXJp dHkgMSA6cmFuZ2UgKDpzdGFydCAuLi4gOmVuZCAuLi4pIDptZXNzYWdlICJ1bnNvbHZlZCBnb2Fs c1xuY2FzZSBtcHJcblYgOiBUeXBlIHVfMVxuaW5zdOKcncK5IDogQWRkQ29tbUdyb3VwIFZcbmlu c3TinJ0gOiBNb2R1bGUg4oSdIFZcbmsgOiDihJVcbnQgOiBGaW4gayDihpIgVlxu4oqiICjiiIAg KHMgOiBGaW5zZXQgKEZpbiBrKSkgKGcgOiBGaW4gayDihpIg4oSdKSwgKEZpbnNldC5zdW0gcyBm dW4gaSA9PiBnIGkg4oCiIHQgaSkgPSAwIOKGkiDiiIAgKGkgOiBGaW4gayksIGkg4oiIIHMg4oaS IGcgaSA9IDApIOKGklxuICAgIOKGkShibGFkZSBWIHQpIOKJoCAwIiA6ZnVsbFJhbmdlICg6c3Rh cnQgLi4uIDplbmQgLi4uKSkpIDpvdmVybGF5LXByb3BlcnRpZXMgbmlsIDpvdmVybGF5ICM8b3Zl cmxheSBpbiBubyBidWZmZXI+IDpvcmlnLWJlZyA0NDYyIDpvcmlnLWVuZCA0NDY2KSkgOnJlZ2lv biAoMSAuIDQ0NDgpKQ0KICAoc2F2ZS1yZXN0cmljdGlvbiAod2lkZW4pIChmdW5jYWxsIGVnbG90 LS1jdXJyZW50LWZseW1ha2UtcmVwb3J0LWZuIGRpYWdzIDpyZWdpb24gKGNvbnMgKHBvaW50LW1p bikgKHBvaW50LW1heCkpKSkNCiAgZWdsb3QtLXJlcG9ydC10by1mbHltYWtlKCgjcyhmbHltYWtl LS1kaWFnIDpsb2N1cyAjPGJ1ZmZlciBHcmFkZXMubGVhbj4gOmJlZyAzMzcyIDplbmQgMzM3OCA6 dHlwZSBlZ2xvdC1ub3RlIDp0ZXh0ICJMZWFuIDQ6IEZpbnNldC5zdW0ue3UsIHZ9IHvOsiA6IFR5 cGUgdX0ge86xIDogVHlwZSB2fSBbaW5zdOKcnSA6IEFkZENvbW1Nb25vaWQgzrJdIChzIDogRmlu c2V0IM6xKSAoZiA6IM6xIOKGkiDOsikgOiDOsiIgOmJhY2tlbmQgZWdsb3QtZmx5bWFrZS1iYWNr ZW5kIDpkYXRhICgoZWdsb3QtbHNwLWRpYWcgOnNvdXJjZSAiTGVhbiA0IiA6c2V2ZXJpdHkgMyA6 cmFuZ2UgKDpzdGFydCAoOmxpbmUgNzkgOmNoYXJhY3RlciAwKSA6ZW5kICg6bGluZSA3OSA6Y2hh cmFjdGVyIDYpKSA6bWVzc2FnZSAiRmluc2V0LnN1bS57dSwgdn0ge86yIDogVHlwZSB1fSB7zrEg OiBUeXBlIHZ9IFtpbnN04pydIDogQWRkQ29tbU1vbm9pZCDOsl0gKHMgOiBGaW5zZXQgzrEpIChm IDogzrEg4oaSIM6yKSA6IM6yIiA6ZnVsbFJhbmdlICg6c3RhcnQgKDpsaW5lIDc5IDpjaGFyYWN0 ZXIgMCkgOmVuZCAoOmxpbmUgNzkgOmNoYXJhY3RlciA2KSkpKSA6b3ZlcmxheS1wcm9wZXJ0aWVz IG5pbCA6b3ZlcmxheSAjPG92ZXJsYXkgZnJvbSAzMzcyIHRvIDMzNzggaW4gR3JhZGVzLmxlYW4+ IDpvcmlnLWJlZyAzMzcyIDpvcmlnLWVuZCAzMzc4KSAjcyhmbHltYWtlLS1kaWFnIDpsb2N1cyAj PGJ1ZmZlciBHcmFkZXMubGVhbj4gOmJlZyAzNTg4IDplbmQgMzU5MSA6dHlwZSBlZ2xvdC1lcnJv ciA6dGV4dCAiTGVhbiA0OiB1bnNvbHZlZCBnb2Fsc1xuY2FzZSBtcC56ZXJvXG5WIDogVHlwZSB1 XzFcbmluc3TinJ3CuSA6IEFkZENvbW1Hcm91cCBWXG5pbnN04pydIDogTW9kdWxlIOKEnSBWXG50 IDogRmluIE5hdC56ZXJvIOKGkiBWXG5odCA6IOKGkShibGFkZSBWIHQpIOKJoCAwXG5uIDogRmlu c2V0IChGaW4gTmF0Lnplcm8pXG54IDogRmluIE5hdC56ZXJvIOKGkiDihJ1cbmh4dCA6IChGaW5z ZXQuc3VtIG4gZnVuIGkgPT4geCBpIOKAoiB0IGkpID0gMFxuaSA6IOKElVxuaGkgOiBpIDwgTmF0 Lnplcm9cbmhpbiA6IHsgdmFsIDo9IGksIGlzTHQgOj0gaGkgfSDiiIggblxu4oqiIMKsRmFsc2Ui IDpiYWNrZW5kIGVnbG90LWZseW1ha2UtYmFja2VuZCA6ZGF0YSAoKGVnbG90LWxzcC1kaWFnIDpz b3VyY2UgIkxlYW4gNCIgOnNldmVyaXR5IDEgOnJhbmdlICg6c3RhcnQgKDpsaW5lIDg2IDpjaGFy YWN0ZXIgMTEpIDplbmQgKDpsaW5lIDg3IDpjaGFyYWN0ZXIgMCkpIDptZXNzYWdlICJ1bnNvbHZl ZCBnb2Fsc1xuY2FzZSBtcC56ZXJvXG5WIDogVHlwZSB1XzFcbmluc3TinJ3CuSA6IEFkZENvbW1H cm91cCBWXG5pbnN04pydIDogTW9kdWxlIOKEnSBWXG50IDogRmluIE5hdC56ZXJvIOKGkiBWXG5o dCA6IOKGkShibGFkZSBWIHQpIOKJoCAwXG5uIDogRmluc2V0IChGaW4gTmF0Lnplcm8pXG54IDog RmluIE5hdC56ZXJvIOKGkiDihJ1cbmh4dCA6IChGaW5zZXQuc3VtIG4gZnVuIGkgPT4geCBpIOKA oiB0IGkpID0gMFxuaSA6IOKElVxuaGkgOiBpIDwgTmF0Lnplcm9cbmhpbiA6IHsgdmFsIDo9IGks IGlzTHQgOj0gaGkgfSDiiIggblxu4oqiIMKsRmFsc2UiIDpmdWxsUmFuZ2UgKDpzdGFydCAoOmxp bmUgODYgOmNoYXJhY3RlciAxMSkgOmVuZCAoOmxpbmUgODggOmNoYXJhY3RlciA0OCkpKSkgOm92 ZXJsYXktcHJvcGVydGllcyBuaWwgOm92ZXJsYXkgIzxvdmVybGF5IGZyb20gMzU4OCB0byAzNTkx IGluIEdyYWRlcy5sZWFuPiA6b3JpZy1iZWcgMzU4OCA6b3JpZy1lbmQgMzU5MSkgI3MoZmx5bWFr ZS0tZGlhZyA6bG9jdXMgIzxidWZmZXIgR3JhZGVzLmxlYW4+IDpiZWcgNDI2OSA6ZW5kIDQyNzAg OnR5cGUgZWdsb3QtZXJyb3IgOnRleHQgIkxlYW4gNDogYXBwbGljYXRpb24gdHlwZSBtaXNtYXRj aFxuICBpaCBzXG5hcmd1bWVudFxuICBzXG5oYXMgdHlwZVxuICDihpEoYmxhZGVzIFYgKE5hdC5z dWNjIGspKSA6IFR5cGUgdV8xXG5idXQgaXMgZXhwZWN0ZWQgdG8gaGF2ZSB0eXBlXG4gIEZpbiBr IOKGkiBWIDogVHlwZSB1XzEiIDpiYWNrZW5kIGVnbG90LWZseW1ha2UtYmFja2VuZCA6ZGF0YSAo KGVnbG90LWxzcC1kaWFnIDpzb3VyY2UgIkxlYW4gNCIgOnNldmVyaXR5IDEgOnJhbmdlICg6c3Rh cnQgKDpsaW5lIDEwMyA6Y2hhcmFjdGVyIDE5KSA6ZW5kICg6bGluZSAxMDMgOmNoYXJhY3RlciAy MCkpIDptZXNzYWdlICJhcHBsaWNhdGlvbiB0eXBlIG1pc21hdGNoXG4gIGloIHNcbmFyZ3VtZW50 XG4gIHNcbmhhcyB0eXBlXG4gIOKGkShibGFkZXMgViAoTmF0LnN1Y2MgaykpIDogVHlwZSB1XzFc bmJ1dCBpcyBleHBlY3RlZCB0byBoYXZlIHR5cGVcbiAgRmluIGsg4oaSIFYgOiBUeXBlIHVfMSIg OmZ1bGxSYW5nZSAoOnN0YXJ0ICg6bGluZSAxMDMgOmNoYXJhY3RlciAxOSkgOmVuZCAoOmxpbmUg MTAzIDpjaGFyYWN0ZXIgMjApKSkpIDpvdmVybGF5LXByb3BlcnRpZXMgbmlsIDpvdmVybGF5ICM8 b3ZlcmxheSBmcm9tIDQyNjkgdG8gNDI3MCBpbiBHcmFkZXMubGVhbj4gOm9yaWctYmVnIDQyNjkg Om9yaWctZW5kIDQyNzApICNzKGZseW1ha2UtLWRpYWcgOmxvY3VzICM8YnVmZmVyIEdyYWRlcy5s ZWFuPiA6YmVnIDQzNzYgOmVuZCA0Mzc5IDp0eXBlIGVnbG90LWVycm9yIDp0ZXh0ICJMZWFuIDQ6 IGZ1bmN0aW9uIGV4cGVjdGVkIGF0XG4gIHZcbnRlcm0gaGFzIHR5cGVcbiAgRXh0ZXJpb3JBbGdl YnJhIOKEnSBWIiA6YmFja2VuZCBlZ2xvdC1mbHltYWtlLWJhY2tlbmQgOmRhdGEgKChlZ2xvdC1s c3AtZGlhZyA6c291cmNlICJMZWFuIDQiIDpzZXZlcml0eSAxIDpyYW5nZSAoOnN0YXJ0ICg6bGlu ZSAxMDYgOmNoYXJhY3RlciAyNykgOmVuZCAoOmxpbmUgMTA2IDpjaGFyYWN0ZXIgMzApKSA6bWVz c2FnZSAiZnVuY3Rpb24gZXhwZWN0ZWQgYXRcbiAgdlxudGVybSBoYXMgdHlwZVxuICBFeHRlcmlv ckFsZ2VicmEg4oSdIFYiIDpmdWxsUmFuZ2UgKDpzdGFydCAoOmxpbmUgMTA2IDpjaGFyYWN0ZXIg MjcpIDplbmQgKDpsaW5lIDEwNiA6Y2hhcmFjdGVyIDMwKSkpKSA6b3ZlcmxheS1wcm9wZXJ0aWVz IG5pbCA6b3ZlcmxheSAjPG92ZXJsYXkgZnJvbSA0Mzc2IHRvIDQzNzkgaW4gR3JhZGVzLmxlYW4+ IDpvcmlnLWJlZyA0Mzc2IDpvcmlnLWVuZCA0Mzc5KSAjcyhmbHltYWtlLS1kaWFnIDpsb2N1cyAj PGJ1ZmZlciBHcmFkZXMubGVhbj4gOmJlZyA0NDM5IDplbmQgNDQ0MCA6dHlwZSBlZ2xvdC1lcnJv ciA6dGV4dCAiTGVhbiA0OiBhcHBsaWNhdGlvbiB0eXBlIG1pc21hdGNoXG4gIGJsYWRlIFYgdlxu YXJndW1lbnRcbiAgdlxuaGFzIHR5cGVcbiAgRXh0ZXJpb3JBbGdlYnJhIOKEnSBWIDogVHlwZSB1 XzFcbmJ1dCBpcyBleHBlY3RlZCB0byBoYXZlIHR5cGVcbiAgRmluID9tLjQ5NTMxOCDihpIgViA6 IFR5cGUgdV8xIiA6YmFja2VuZCBlZ2xvdC1mbHltYWtlLWJhY2tlbmQgOmRhdGEgKChlZ2xvdC1s c3AtZGlhZyA6c291cmNlICJMZWFuIDQiIDpzZXZlcml0eSAxIDpyYW5nZSAoOnN0YXJ0ICg6bGlu ZSAxMDYgOmNoYXJhY3RlciA5MCkgOmVuZCAoOmxpbmUgMTA2IDpjaGFyYWN0ZXIgOTEpKSA6bWVz c2FnZSAiYXBwbGljYXRpb24gdHlwZSBtaXNtYXRjaFxuICBibGFkZSBWIHZcbmFyZ3VtZW50XG4g IHZcbmhhcyB0eXBlXG4gIEV4dGVyaW9yQWxnZWJyYSDihJ0gViA6IFR5cGUgdV8xXG5idXQgaXMg ZXhwZWN0ZWQgdG8gaGF2ZSB0eXBlXG4gIEZpbiA/bS40OTUzMTgg4oaSIFYgOiBUeXBlIHVfMSIg OmZ1bGxSYW5nZSAoOnN0YXJ0ICg6bGluZSAxMDYgOmNoYXJhY3RlciA5MCkgOmVuZCAoOmxpbmUg MTA2IDpjaGFyYWN0ZXIgOTEpKSkpIDpvdmVybGF5LXByb3BlcnRpZXMgbmlsIDpvdmVybGF5ICM8 b3ZlcmxheSBmcm9tIDQ0MzkgdG8gNDQ0MCBpbiBHcmFkZXMubGVhbj4gOm9yaWctYmVnIDQ0Mzkg Om9yaWctZW5kIDQ0NDApICNzKGZseW1ha2UtLWRpYWcgOmxvY3VzICM8YnVmZmVyIEdyYWRlcy5s ZWFuPiA6YmVnIDQ0NjIgOmVuZCA0NDY2IDp0eXBlIGVnbG90LWVycm9yIDp0ZXh0ICJMZWFuIDQ6 IHVuc29sdmVkIGdvYWxzXG5jYXNlIG1wclxuViA6IFR5cGUgdV8xXG5pbnN04pydwrkgOiBBZGRD b21tR3JvdXAgVlxuaW5zdOKcnSA6IE1vZHVsZSDihJ0gVlxuayA6IOKElVxudCA6IEZpbiBrIOKG kiBWXG7iiqIgKOKIgCAocyA6IEZpbnNldCAoRmluIGspKSAoZyA6IEZpbiBrIOKGkiDihJ0pLCAo Rmluc2V0LnN1bSBzIGZ1biBpID0+IGcgaSDigKIgdCBpKSA9IDAg4oaSIOKIgCAoaSA6IEZpbiBr KSwgaSDiiIggcyDihpIgZyBpID0gMCkg4oaSXG4gICAg4oaRKGJsYWRlIFYgdCkg4omgIDAiIDpi YWNrZW5kIGVnbG90LWZseW1ha2UtYmFja2VuZCA6ZGF0YSAoKGVnbG90LWxzcC1kaWFnIDpzb3Vy Y2UgIkxlYW4gNCIgOnNldmVyaXR5IDEgOnJhbmdlICg6c3RhcnQgKDpsaW5lIDEwOSA6Y2hhcmFj dGVyIDQpIDplbmQgKDpsaW5lIDEwOSA6Y2hhcmFjdGVyIDgpKSA6bWVzc2FnZSAidW5zb2x2ZWQg Z29hbHNcbmNhc2UgbXByXG5WIDogVHlwZSB1XzFcbmluc3TinJ3CuSA6IEFkZENvbW1Hcm91cCBW XG5pbnN04pydIDogTW9kdWxlIOKEnSBWXG5rIDog4oSVXG50IDogRmluIGsg4oaSIFZcbuKKoiAo 4oiAIChzIDogRmluc2V0IChGaW4gaykpIChnIDogRmluIGsg4oaSIOKEnSksIChGaW5zZXQuc3Vt IHMgZnVuIGkgPT4gZyBpIOKAoiB0IGkpID0gMCDihpIg4oiAIChpIDogRmluIGspLCBpIOKIiCBz IOKGkiBnIGkgPSAwKSDihpJcbiAgICDihpEoYmxhZGUgViB0KSDiiaAgMCIgOmZ1bGxSYW5nZSAo OnN0YXJ0ICg6bGluZSAxMDkgOmNoYXJhY3RlciA0KSA6ZW5kICg6bGluZSAxMDkgOmNoYXJhY3Rl ciA4KSkpKSA6b3ZlcmxheS1wcm9wZXJ0aWVzIG5pbCA6b3ZlcmxheSAjPG92ZXJsYXkgaW4gbm8g YnVmZmVyPiA6b3JpZy1iZWcgNDQ2MiA6b3JpZy1lbmQgNDQ2NikpKQ0KICAoY29uZCAoZWdsb3Qt LW1hbmFnZWQtbW9kZSAoc2V0cSBlZ2xvdC0tY3VycmVudC1mbHltYWtlLXJlcG9ydC1mbiByZXBv cnQtZm4pIChlZ2xvdC0tcmVwb3J0LXRvLWZseW1ha2UgZWdsb3QtLWRpYWdub3N0aWNzKSkgKHQg KGZ1bmNhbGwgcmVwb3J0LWZuIG5pbCkpKQ0KICBlZ2xvdC1mbHltYWtlLWJhY2tlbmQoKGNsb3N1 cmUgKChidWZmZXIgLiAjPGJ1ZmZlciBHcmFkZXMubGVhbj4pICh0b2tlbiAuIGJhY2tlbmQtdG9r ZW4yNzIzKSAoYmFja2VuZCAuIGVnbG90LWZseW1ha2UtYmFja2VuZCkpICgmcmVzdCBhcmdzKSAo aWYgKGJ1ZmZlci1saXZlLXAgYnVmZmVyKSAocHJvZ24gKHNhdmUtY3VycmVudC1idWZmZXIgKHNl dC1idWZmZXIgYnVmZmVyKSAoYXBwbHkgIydmbHltYWtlLS1oYW5kbGUtcmVwb3J0IGJhY2tlbmQg dG9rZW4gYXJncykpKSkpIDpyZWNlbnQtY2hhbmdlcyAoKDQwNDMgNDA0MyAiIikgKDQwNDMgNDA0 MyAiIikgKDQwNDMgNDA0MyAiIikgKDQwNDMgNDA0MyAiIikgKDQwNDMgNDA0MyAiIikgKDQwNDMg NDA0MyAiIikgKDQwNDMgNDA0MyAiIikgKDQwNDMgNDA0MyAiIikgKDM5NjYgMzk2NiAiIikgKDM5 NjYgMzk2NiAiIikpIDpjaGFuZ2VzLXN0YXJ0IDM5NjYgOmNoYW5nZXMtZW5kIDQwNDMpDQogIGFw cGx5KGVnbG90LWZseW1ha2UtYmFja2VuZCAoY2xvc3VyZSAoKGJ1ZmZlciAuICM8YnVmZmVyIEdy YWRlcy5sZWFuPikgKHRva2VuIC4gYmFja2VuZC10b2tlbjI3MjMpIChiYWNrZW5kIC4gZWdsb3Qt Zmx5bWFrZS1iYWNrZW5kKSkgKCZyZXN0IGFyZ3MpIChpZiAoYnVmZmVyLWxpdmUtcCBidWZmZXIp IChwcm9nbiAoc2F2ZS1jdXJyZW50LWJ1ZmZlciAoc2V0LWJ1ZmZlciBidWZmZXIpIChhcHBseSAj J2ZseW1ha2UtLWhhbmRsZS1yZXBvcnQgYmFja2VuZCB0b2tlbiBhcmdzKSkpKSkgKDpyZWNlbnQt Y2hhbmdlcyAoKDQwNDMgNDA0MyAiIikgKDQwNDMgNDA0MyAiIikgKDQwNDMgNDA0MyAiIikgKDQw NDMgNDA0MyAiIikgKDQwNDMgNDA0MyAiIikgKDQwNDMgNDA0MyAiIikgKDQwNDMgNDA0MyAiIikg KDQwNDMgNDA0MyAiIikgKDM5NjYgMzk2NiAiIikgKDM5NjYgMzk2NiAiIikpIDpjaGFuZ2VzLXN0 YXJ0IDM5NjYgOmNoYW5nZXMtZW5kIDQwNDMpKQ0KICAoY29uZGl0aW9uLWNhc2UgZXJyIChhcHBs eSBiYWNrZW5kIChmbHltYWtlLW1ha2UtcmVwb3J0LWZuIGJhY2tlbmQgcnVuLXRva2VuKSBhcmdz KSAoKGRlYnVnIGVycm9yKSAoZmx5bWFrZS0tZGlzYWJsZS1iYWNrZW5kIGJhY2tlbmQgZXJyKSkp DQogIChsZXQgKChydW4tdG9rZW4gKGNsLWdlbnN5bSAiYmFja2VuZC10b2tlbiIpKSkgKGxldCog KChiIGJhY2tlbmQpIChzdGF0ZSAob3IgKGdldGhhc2ggYiBmbHltYWtlLS1zdGF0ZSkgKHB1dGhh c2ggYiAobGV0ICguLi4gLi4uIC4uLiAuLi4gLi4uKSAocHJvZ24gLi4uKSkgZmx5bWFrZS0tc3Rh dGUpKSkpIChwcm9nbiAobGV0KiAoKGNsLXggc3RhdGUpKSAob3IgKGxldCogKChjbC14IGNsLXgp KSAocHJvZ24gKGFuZCAuLi4gdCkpKSAoc2lnbmFsICd3cm9uZy10eXBlLWFyZ3VtZW50IChsaXN0 ICdmbHltYWtlLS1zdGF0ZSBjbC14KSkpIChsZXQqICgodiBjbC14KSkgKGFzZXQgdiAxIHJ1bi10 b2tlbikpKSAobGV0KiAoKGNsLXggc3RhdGUpKSAob3IgKGxldCogKChjbC14IGNsLXgpKSAocHJv Z24gKGFuZCAuLi4gdCkpKSAoc2lnbmFsICd3cm9uZy10eXBlLWFyZ3VtZW50IChsaXN0ICdmbHlt YWtlLS1zdGF0ZSBjbC14KSkpIChsZXQqICgodiBjbC14KSkgKGFzZXQgdiAzIG5pbCkpKSAobGV0 KiAoKGNsLXggc3RhdGUpKSAob3IgKGxldCogKChjbC14IGNsLXgpKSAocHJvZ24gKGFuZCAuLi4g dCkpKSAoc2lnbmFsICd3cm9uZy10eXBlLWFyZ3VtZW50IChsaXN0ICdmbHltYWtlLS1zdGF0ZSBj bC14KSkpIChsZXQqICgodiBjbC14KSkgKGFzZXQgdiAyIG5pbCkpKSkpIChjb25kaXRpb24tY2Fz ZSBlcnIgKGFwcGx5IGJhY2tlbmQgKGZseW1ha2UtbWFrZS1yZXBvcnQtZm4gYmFja2VuZCBydW4t dG9rZW4pIGFyZ3MpICgoZGVidWcgZXJyb3IpIChmbHltYWtlLS1kaXNhYmxlLWJhY2tlbmQgYmFj a2VuZCBlcnIpKSkpDQogIGZseW1ha2UtLXJ1bi1iYWNrZW5kKGVnbG90LWZseW1ha2UtYmFja2Vu ZCAoOnJlY2VudC1jaGFuZ2VzICgoNDA0MyA0MDQzICIiKSAoNDA0MyA0MDQzICIiKSAoNDA0MyA0 MDQzICIiKSAoNDA0MyA0MDQzICIiKSAoNDA0MyA0MDQzICIiKSAoNDA0MyA0MDQzICIiKSAoNDA0 MyA0MDQzICIiKSAoNDA0MyA0MDQzICIiKSAoMzk2NiAzOTY2ICIiKSAoMzk2NiAzOTY2ICIiKSkg OmNoYW5nZXMtc3RhcnQgMzk2NiA6Y2hhbmdlcy1lbmQgNDA0MykpDQogIChjb25kICgoYW5kIChu b3QgZm9yY2UpIChsZXQqICgoYiBiYWNrZW5kKSAoc3RhdGUgKG9yIChnZXRoYXNoIGIgZmx5bWFr ZS0tc3RhdGUpIChwdXRoYXNoIGIgLi4uIGZseW1ha2UtLXN0YXRlKSkpKSAobGV0KiAoKGNsLXgg c3RhdGUpKSAocHJvZ24gKG9yIChsZXQqIC4uLiAuLi4pIChzaWduYWwgLi4uIC4uLikpIChhcmVm IGNsLXggMykpKSkpIChmbHltYWtlLS1sb2ctMSA6ZGVidWcgJ2ZseW1ha2UgIkJhY2tlbmQgJXMg aXMgZGlzYWJsZWQsIG5vdCBzdGFydGluZyIgYmFja2VuZCkpICh0IChmbHltYWtlLS1ydW4tYmFj a2VuZCBiYWNrZW5kIGJhY2tlbmQtYXJncykpKQ0KICAoY2xvc3VyZSAoKGJhY2tlbmQtYXJncyA6 cmVjZW50LWNoYW5nZXMgKCg0MDQzIDQwNDMgIiIpICg0MDQzIDQwNDMgIiIpICg0MDQzIDQwNDMg IiIpICg0MDQzIDQwNDMgIiIpICg0MDQzIDQwNDMgIiIpICg0MDQzIDQwNDMgIiIpICg0MDQzIDQw NDMgIiIpICg0MDQzIDQwNDMgIiIpICgzOTY2IDM5NjYgIiIpICgzOTY2IDM5NjYgIiIpKSA6Y2hh bmdlcy1zdGFydCAzOTY2IDpjaGFuZ2VzLWVuZCA0MDQzKSAoZm9yY2UpKSAoYmFja2VuZCkgKGNv bmQgKChhbmQgKG5vdCBmb3JjZSkgKGxldCogKChiIGJhY2tlbmQpIChzdGF0ZSAuLi4pKSAobGV0 KiAoLi4uKSAocHJvZ24gLi4uIC4uLikpKSkgKGZseW1ha2UtLWxvZy0xIDpkZWJ1ZyAnZmx5bWFr ZSAiQmFja2VuZCAlcyBpcyBkaXNhYmxlZCwgbm90IHN0YXJ0aW5nIiBiYWNrZW5kKSkgKHQgKGZs eW1ha2UtLXJ1bi1iYWNrZW5kIGJhY2tlbmQgYmFja2VuZC1hcmdzKSkpIG5pbCkoZWdsb3QtZmx5 bWFrZS1iYWNrZW5kKQ0KICBydW4taG9vay13cmFwcGVkKChjbG9zdXJlICgoYmFja2VuZC1hcmdz IDpyZWNlbnQtY2hhbmdlcyAoKDQwNDMgNDA0MyAiIikgKDQwNDMgNDA0MyAiIikgKDQwNDMgNDA0 MyAiIikgKDQwNDMgNDA0MyAiIikgKDQwNDMgNDA0MyAiIikgKDQwNDMgNDA0MyAiIikgKDQwNDMg NDA0MyAiIikgKDQwNDMgNDA0MyAiIikgKDM5NjYgMzk2NiAiIikgKDM5NjYgMzk2NiAiIikpIDpj aGFuZ2VzLXN0YXJ0IDM5NjYgOmNoYW5nZXMtZW5kIDQwNDMpIChmb3JjZSkpIChiYWNrZW5kKSAo Y29uZCAoKGFuZCAobm90IGZvcmNlKSAobGV0KiAoKGIgYmFja2VuZCkgKHN0YXRlIC4uLikpIChs ZXQqICguLi4pIChwcm9nbiAuLi4gLi4uKSkpKSAoZmx5bWFrZS0tbG9nLTEgOmRlYnVnICdmbHlt YWtlICJCYWNrZW5kICVzIGlzIGRpc2FibGVkLCBub3Qgc3RhcnRpbmciIGJhY2tlbmQpKSAodCAo Zmx5bWFrZS0tcnVuLWJhY2tlbmQgYmFja2VuZCBiYWNrZW5kLWFyZ3MpKSkgbmlsKSBlZ2xvdC1m bHltYWtlLWJhY2tlbmQpDQogIChsZXQgKChiYWNrZW5kLWFyZ3MgKGFuZCBmbHltYWtlLS1yZWNl bnQtY2hhbmdlcyAobGlzdCA6cmVjZW50LWNoYW5nZXMgZmx5bWFrZS0tcmVjZW50LWNoYW5nZXMg OmNoYW5nZXMtc3RhcnQgKGNsLXJlZHVjZSAjJ21pbiAobWFwY2FyICMnY2FyIGZseW1ha2UtLXJl Y2VudC1jaGFuZ2VzKSkgOmNoYW5nZXMtZW5kIChjbC1yZWR1Y2UgIydtYXggKG1hcGNhciAjJ2Nh ZHIgZmx5bWFrZS0tcmVjZW50LWNoYW5nZXMpKSkpKSkgKHNldHEgZmx5bWFrZS0tcmVjZW50LWNo YW5nZXMgbmlsKSAocnVuLWhvb2std3JhcHBlZCAnZmx5bWFrZS1kaWFnbm9zdGljLWZ1bmN0aW9u cyAjJyhsYW1iZGEgKGJhY2tlbmQpIChsZXQqICgoYiBiYWNrZW5kKSAoc3RhdGUgKG9yIC4uLiAu Li4pKSkgKGxldCogKChjbC14IHN0YXRlKSkgKG9yIChsZXQqIC4uLiAuLi4pIChzaWduYWwgLi4u IC4uLikpIChsZXQqICguLi4pIChhc2V0IHYgMiBuaWwpKSkpKSkgKHJ1bi1ob29rLXdyYXBwZWQg J2ZseW1ha2UtZGlhZ25vc3RpYy1mdW5jdGlvbnMgIycobGFtYmRhIChiYWNrZW5kKSAoY29uZCAo KGFuZCAobm90IGZvcmNlKSAobGV0KiAuLi4gLi4uKSkgKGZseW1ha2UtLWxvZy0xIDpkZWJ1ZyAn Zmx5bWFrZSAiQmFja2VuZCAlcyBpcyBkaXNhYmxlZCwgbm90IHN0YXJ0aW5nIiBiYWNrZW5kKSkg KHQgKGZseW1ha2UtLXJ1bi1iYWNrZW5kIGJhY2tlbmQgYmFja2VuZC1hcmdzKSkpIG5pbCkpKQ0K ICAoY29uZCAoKGFuZCAobWVtcSAncG9zdC1jb21tYW5kIGRlZmVycmVkKSB0aGlzLWNvbW1hbmQp IChhZGQtaG9vayAncG9zdC1jb21tYW5kLWhvb2sgLS1jbC1zdGFydC1wb3N0LWNvbW1hbmQtLSAn YXBwZW5kIG5pbCkpICgoYW5kIChtZW1xICdvbi1kaXNwbGF5IGRlZmVycmVkKSAobm90IChnZXQt YnVmZmVyLXdpbmRvdyAoY3VycmVudC1idWZmZXIpKSkpIChhZGQtaG9vayAnd2luZG93LWNvbmZp Z3VyYXRpb24tY2hhbmdlLWhvb2sgLS1jbC1zdGFydC1vbi1kaXNwbGF5LS0gJ2FwcGVuZCAnbG9j YWwpKSAoZmx5bWFrZS1tb2RlIChzZXRxIGZseW1ha2UtY2hlY2stc3RhcnQtdGltZSAoZmxvYXQt dGltZSkpIChsZXQgKChiYWNrZW5kLWFyZ3MgKGFuZCBmbHltYWtlLS1yZWNlbnQtY2hhbmdlcyAo bGlzdCA6cmVjZW50LWNoYW5nZXMgZmx5bWFrZS0tcmVjZW50LWNoYW5nZXMgOmNoYW5nZXMtc3Rh cnQgKGNsLXJlZHVjZSAuLi4gLi4uKSA6Y2hhbmdlcy1lbmQgKGNsLXJlZHVjZSAuLi4gLi4uKSkp KSkgKHNldHEgZmx5bWFrZS0tcmVjZW50LWNoYW5nZXMgbmlsKSAocnVuLWhvb2std3JhcHBlZCAn Zmx5bWFrZS1kaWFnbm9zdGljLWZ1bmN0aW9ucyAjJyhsYW1iZGEgKGJhY2tlbmQpIChsZXQqICgu Li4gLi4uKSAobGV0KiAuLi4gLi4uIC4uLikpKSkgKHJ1bi1ob29rLXdyYXBwZWQgJ2ZseW1ha2Ut ZGlhZ25vc3RpYy1mdW5jdGlvbnMgIycobGFtYmRhIChiYWNrZW5kKSAoY29uZCAoLi4uIC4uLikg KHQgLi4uKSkgbmlsKSkpKSkNCiAgKGxldCAoLS1jbC1zdGFydC1wb3N0LWNvbW1hbmQtLSAtLWNs LXN0YXJ0LW9uLWRpc3BsYXktLSkgKHNldHEgLS1jbC1zdGFydC1wb3N0LWNvbW1hbmQtLSAjJyhs YW1iZGEgbmlsIChwcm9nbiAocmVtb3ZlLWhvb2sgJ3Bvc3QtY29tbWFuZC1ob29rIC0tY2wtc3Rh cnQtcG9zdC1jb21tYW5kLS0gbmlsKSAoaWYgKGJ1ZmZlci1saXZlLXAgYnVmZmVyKSAocHJvZ24g KHNhdmUtY3VycmVudC1idWZmZXIgLi4uIC4uLikpKSkpKSAoc2V0cSAtLWNsLXN0YXJ0LW9uLWRp c3BsYXktLSAjJyhsYW1iZGEgbmlsIChwcm9nbiAocmVtb3ZlLWhvb2sgJ3dpbmRvdy1jb25maWd1 cmF0aW9uLWNoYW5nZS1ob29rIC0tY2wtc3RhcnQtb24tZGlzcGxheS0tICdsb2NhbCkgKGZseW1h a2Utc3RhcnQgKHJlbW92ZSAnb24tZGlzcGxheSBkZWZlcnJlZCkgZm9yY2UpKSkpIChjb25kICgo YW5kIChtZW1xICdwb3N0LWNvbW1hbmQgZGVmZXJyZWQpIHRoaXMtY29tbWFuZCkgKGFkZC1ob29r ICdwb3N0LWNvbW1hbmQtaG9vayAtLWNsLXN0YXJ0LXBvc3QtY29tbWFuZC0tICdhcHBlbmQgbmls KSkgKChhbmQgKG1lbXEgJ29uLWRpc3BsYXkgZGVmZXJyZWQpIChub3QgKGdldC1idWZmZXItd2lu ZG93IChjdXJyZW50LWJ1ZmZlcikpKSkgKGFkZC1ob29rICd3aW5kb3ctY29uZmlndXJhdGlvbi1j aGFuZ2UtaG9vayAtLWNsLXN0YXJ0LW9uLWRpc3BsYXktLSAnYXBwZW5kICdsb2NhbCkpIChmbHlt YWtlLW1vZGUgKHNldHEgZmx5bWFrZS1jaGVjay1zdGFydC10aW1lIChmbG9hdC10aW1lKSkgKGxl dCAoKGJhY2tlbmQtYXJncyAoYW5kIGZseW1ha2UtLXJlY2VudC1jaGFuZ2VzIChsaXN0IDpyZWNl bnQtY2hhbmdlcyBmbHltYWtlLS1yZWNlbnQtY2hhbmdlcyA6Y2hhbmdlcy1zdGFydCAuLi4gOmNo YW5nZXMtZW5kIC4uLikpKSkgKHNldHEgZmx5bWFrZS0tcmVjZW50LWNoYW5nZXMgbmlsKSAocnVu LWhvb2std3JhcHBlZCAnZmx5bWFrZS1kaWFnbm9zdGljLWZ1bmN0aW9ucyAjJyhsYW1iZGEgKGJh Y2tlbmQpIChsZXQqIC4uLiAuLi4pKSkgKHJ1bi1ob29rLXdyYXBwZWQgJ2ZseW1ha2UtZGlhZ25v c3RpYy1mdW5jdGlvbnMgIycobGFtYmRhIChiYWNrZW5kKSAoY29uZCAuLi4gLi4uKSBuaWwpKSkp KSkNCiAgKGxldCAoKGRlZmVycmVkIChpZiAoZXEgdCBkZWZlcnJlZCkgJyhwb3N0LWNvbW1hbmQg b24tZGlzcGxheSkgZGVmZXJyZWQpKSAoYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpKSAobGV0ICgt LWNsLXN0YXJ0LXBvc3QtY29tbWFuZC0tIC0tY2wtc3RhcnQtb24tZGlzcGxheS0tKSAoc2V0cSAt LWNsLXN0YXJ0LXBvc3QtY29tbWFuZC0tICMnKGxhbWJkYSBuaWwgKHByb2duIChyZW1vdmUtaG9v ayAncG9zdC1jb21tYW5kLWhvb2sgLS1jbC1zdGFydC1wb3N0LWNvbW1hbmQtLSBuaWwpIChpZiAo YnVmZmVyLWxpdmUtcCBidWZmZXIpIChwcm9nbiAuLi4pKSkpKSAoc2V0cSAtLWNsLXN0YXJ0LW9u LWRpc3BsYXktLSAjJyhsYW1iZGEgbmlsIChwcm9nbiAocmVtb3ZlLWhvb2sgJ3dpbmRvdy1jb25m aWd1cmF0aW9uLWNoYW5nZS1ob29rIC0tY2wtc3RhcnQtb24tZGlzcGxheS0tICdsb2NhbCkgKGZs eW1ha2Utc3RhcnQgKHJlbW92ZSAuLi4gZGVmZXJyZWQpIGZvcmNlKSkpKSAoY29uZCAoKGFuZCAo bWVtcSAncG9zdC1jb21tYW5kIGRlZmVycmVkKSB0aGlzLWNvbW1hbmQpIChhZGQtaG9vayAncG9z dC1jb21tYW5kLWhvb2sgLS1jbC1zdGFydC1wb3N0LWNvbW1hbmQtLSAnYXBwZW5kIG5pbCkpICgo YW5kIChtZW1xICdvbi1kaXNwbGF5IGRlZmVycmVkKSAobm90IChnZXQtYnVmZmVyLXdpbmRvdyAo Y3VycmVudC1idWZmZXIpKSkpIChhZGQtaG9vayAnd2luZG93LWNvbmZpZ3VyYXRpb24tY2hhbmdl LWhvb2sgLS1jbC1zdGFydC1vbi1kaXNwbGF5LS0gJ2FwcGVuZCAnbG9jYWwpKSAoZmx5bWFrZS1t b2RlIChzZXRxIGZseW1ha2UtY2hlY2stc3RhcnQtdGltZSAoZmxvYXQtdGltZSkpIChsZXQgKChi YWNrZW5kLWFyZ3MgKGFuZCBmbHltYWtlLS1yZWNlbnQtY2hhbmdlcyAuLi4pKSkgKHNldHEgZmx5 bWFrZS0tcmVjZW50LWNoYW5nZXMgbmlsKSAocnVuLWhvb2std3JhcHBlZCAnZmx5bWFrZS1kaWFn bm9zdGljLWZ1bmN0aW9ucyAjJyhsYW1iZGEgLi4uIC4uLikpIChydW4taG9vay13cmFwcGVkICdm bHltYWtlLWRpYWdub3N0aWMtZnVuY3Rpb25zICMnKGxhbWJkYSAuLi4gLi4uIG5pbCkpKSkpKSkN CiAgZmx5bWFrZS1zdGFydCh0KQ0KICAocHJvZ24gKGZseW1ha2UtLWxvZy0xIDpkZWJ1ZyAnZmx5 bWFrZSAic3RhcnRpbmcgc3ludGF4IGNoZWNrIGFmdGVyIGlkbGUgZm9yICVzIHNlY29uZHMiIGZs eW1ha2Utbm8tY2hhbmdlcy10aW1lb3V0KSAoZmx5bWFrZS1zdGFydCB0KSkNCiAgKGlmIChhbmQg Zmx5bWFrZS1tb2RlIGZseW1ha2Utbm8tY2hhbmdlcy10aW1lb3V0KSAocHJvZ24gKGZseW1ha2Ut LWxvZy0xIDpkZWJ1ZyAnZmx5bWFrZSAic3RhcnRpbmcgc3ludGF4IGNoZWNrIGFmdGVyIGlkbGUg Zm9yICVzIHNlY29uZHMiIGZseW1ha2Utbm8tY2hhbmdlcy10aW1lb3V0KSAoZmx5bWFrZS1zdGFy dCB0KSkpDQogIChzYXZlLWN1cnJlbnQtYnVmZmVyIChzZXQtYnVmZmVyIGJ1ZmZlcikgKGlmIChh bmQgZmx5bWFrZS1tb2RlIGZseW1ha2Utbm8tY2hhbmdlcy10aW1lb3V0KSAocHJvZ24gKGZseW1h a2UtLWxvZy0xIDpkZWJ1ZyAnZmx5bWFrZSAic3RhcnRpbmcgc3ludGF4IGNoZWNrIGFmdGVyIGlk bGUgZm9yICVzIHNlY29uZHMiIGZseW1ha2Utbm8tY2hhbmdlcy10aW1lb3V0KSAoZmx5bWFrZS1z dGFydCB0KSkpIChzZXRxIGZseW1ha2UtdGltZXIgbmlsKSkNCiAgKHByb2duIChzYXZlLWN1cnJl bnQtYnVmZmVyIChzZXQtYnVmZmVyIGJ1ZmZlcikgKGlmIChhbmQgZmx5bWFrZS1tb2RlIGZseW1h a2Utbm8tY2hhbmdlcy10aW1lb3V0KSAocHJvZ24gKGZseW1ha2UtLWxvZy0xIDpkZWJ1ZyAnZmx5 bWFrZSAic3RhcnRpbmcgc3ludGF4IGNoZWNrIGFmdGVyIGlkbGUgZm9yICVzIHNlY29uZHMiIGZs eW1ha2Utbm8tY2hhbmdlcy10aW1lb3V0KSAoZmx5bWFrZS1zdGFydCB0KSkpIChzZXRxIGZseW1h a2UtdGltZXIgbmlsKSkpDQogIChpZiAoYnVmZmVyLWxpdmUtcCBidWZmZXIpIChwcm9nbiAoc2F2 ZS1jdXJyZW50LWJ1ZmZlciAoc2V0LWJ1ZmZlciBidWZmZXIpIChpZiAoYW5kIGZseW1ha2UtbW9k ZSBmbHltYWtlLW5vLWNoYW5nZXMtdGltZW91dCkgKHByb2duIChmbHltYWtlLS1sb2ctMSA6ZGVi dWcgJ2ZseW1ha2UgInN0YXJ0aW5nIHN5bnRheCBjaGVjayBhZnRlciBpZGxlIGZvciAlcyBzZWNv bmRzIiBmbHltYWtlLW5vLWNoYW5nZXMtdGltZW91dCkgKGZseW1ha2Utc3RhcnQgdCkpKSAoc2V0 cSBmbHltYWtlLXRpbWVyIG5pbCkpKSkNCiAgKGNsb3N1cmUgKGNsLXN0cnVjdC1mbHltYWtlLS1z dGF0ZS10YWdzIGNsLXN0cnVjdC1mbHltYWtlLS1kaWFnLXRhZ3MgdCkgKGJ1ZmZlcikgKGlmIChi dWZmZXItbGl2ZS1wIGJ1ZmZlcikgKHByb2duIChzYXZlLWN1cnJlbnQtYnVmZmVyIChzZXQtYnVm ZmVyIGJ1ZmZlcikgKGlmIChhbmQgZmx5bWFrZS1tb2RlIGZseW1ha2Utbm8tY2hhbmdlcy10aW1l b3V0KSAocHJvZ24gKGZseW1ha2UtLWxvZy0xIDpkZWJ1ZyAuLi4gInN0YXJ0aW5nIHN5bnRheCBj aGVjayBhZnRlciBpZGxlIGZvciAlcyBzZWNvbmRzIiBmbHltYWtlLW5vLWNoYW5nZXMtdGltZW91 dCkgKGZseW1ha2Utc3RhcnQgdCkpKSAoc2V0cSBmbHltYWtlLXRpbWVyIG5pbCkpKSkpKCM8YnVm ZmVyIEdyYWRlcy5sZWFuPikNCiAgYXBwbHkoKGNsb3N1cmUgKGNsLXN0cnVjdC1mbHltYWtlLS1z dGF0ZS10YWdzIGNsLXN0cnVjdC1mbHltYWtlLS1kaWFnLXRhZ3MgdCkgKGJ1ZmZlcikgKGlmIChi dWZmZXItbGl2ZS1wIGJ1ZmZlcikgKHByb2duIChzYXZlLWN1cnJlbnQtYnVmZmVyIChzZXQtYnVm ZmVyIGJ1ZmZlcikgKGlmIChhbmQgZmx5bWFrZS1tb2RlIGZseW1ha2Utbm8tY2hhbmdlcy10aW1l b3V0KSAocHJvZ24gKGZseW1ha2UtLWxvZy0xIDpkZWJ1ZyAuLi4gInN0YXJ0aW5nIHN5bnRheCBj aGVjayBhZnRlciBpZGxlIGZvciAlcyBzZWNvbmRzIiBmbHltYWtlLW5vLWNoYW5nZXMtdGltZW91 dCkgKGZseW1ha2Utc3RhcnQgdCkpKSAoc2V0cSBmbHltYWtlLXRpbWVyIG5pbCkpKSkpICM8YnVm ZmVyIEdyYWRlcy5sZWFuPikNCiAgdGltZXItZXZlbnQtaGFuZGxlcihbdCAwIDAgNTAwMDAwIG5p bCAoY2xvc3VyZSAoY2wtc3RydWN0LWZseW1ha2UtLXN0YXRlLXRhZ3MgY2wtc3RydWN0LWZseW1h a2UtLWRpYWctdGFncyB0KSAoYnVmZmVyKSAoaWYgKGJ1ZmZlci1saXZlLXAgYnVmZmVyKSAocHJv Z24gKHNhdmUtY3VycmVudC1idWZmZXIgKHNldC1idWZmZXIgYnVmZmVyKSAoaWYgKGFuZCBmbHlt YWtlLW1vZGUgZmx5bWFrZS1uby1jaGFuZ2VzLXRpbWVvdXQpIChwcm9nbiAuLi4gLi4uKSkgKHNl dHEgZmx5bWFrZS10aW1lciBuaWwpKSkpKSAoIzxidWZmZXIgR3JhZGVzLmxlYW4+KSBpZGxlIDAg bmlsXSkNCg== --00000000000004111706089d72c6-- From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 26 09:25:28 2023 Received: (at submit) by debbugs.gnu.org; 26 Oct 2023 13:25:28 +0000 Received: from localhost ([127.0.0.1]:60986 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qw0MZ-0007hJ-Ki for submit@debbugs.gnu.org; Thu, 26 Oct 2023 09:25:28 -0400 Received: from lists.gnu.org ([2001:470:142::17]:51650) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qw0MV-0007h4-R9 for submit@debbugs.gnu.org; Thu, 26 Oct 2023 09:25:26 -0400 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 1qw0Lv-0006Yk-H8 for bug-gnu-emacs@gnu.org; Thu, 26 Oct 2023 09:24:47 -0400 Received: from mail-lj1-x233.google.com ([2a00:1450:4864:20::233]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qw0Lt-0007rj-Rs for bug-gnu-emacs@gnu.org; Thu, 26 Oct 2023 09:24:47 -0400 Received: by mail-lj1-x233.google.com with SMTP id 38308e7fff4ca-2b9d07a8d84so11785251fa.3 for ; Thu, 26 Oct 2023 06:24:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698326683; x=1698931483; darn=gnu.org; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8EbyUzmqtt8vIL9/w151i8S+bvOsB88fGb9zsC1rRss=; b=ByVEpLdvjwz/0cnRYE5bFBaIlCjqCO+aARhRgwtXesU3krVKeTOCW2EFO3CSM5IF3I ifswQUBhGXk4EiAK5ySMtpDjIUJXHiSFVslPzQVLV2jBAuuvwOFD/6nUVEJvlGW++7vB Dfq+lvJdhgDzBkOSTU70BgEAWmTxBfYt8D16f2TZGOK97MhUOVeHkrIrSBOY2pn8hnta Ppw9yK8KHx+vbtlEixv7ih4OIsn9iZGF58sPDLcGfBs6ovtqqSO58OoXhchnp/Nxg/5o upj4z2iL80+NZldYqSYMjww1INAmIu8HgNQX4x5RPOOfUd+iNp63Vrpx8hNgFe4kd1x/ deSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698326683; x=1698931483; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=8EbyUzmqtt8vIL9/w151i8S+bvOsB88fGb9zsC1rRss=; b=K8nItzBj+U15JXqDbY8oPiH8jPR4O+j0FYxTQJZ2W5JLQvyYvBhYtXHBzp8vmgl57l GyEeP7iIZKjQN5fQtnzGqzyZK2zNwN37LlC529fHRlfCjG2tv2odB26ID9bPCoSy4Beh Cz7JenN8Fyu6nkk0/O92uVB6m1hb55stoseqwA5hiIRffpPh/fX0EqYJOXqcB0rCFs3r fkkX7abCdvQ1DY9bKE8U4SFER6af3j15WGdjgRm0cDd6JA7NTMU8P1EwKKMyNqrjQRFu 2Z9b5YqFHal/ebQAsjy0yMmXT6fF/ApFX4EJ+O9qf5gnhNSkdqFjR4qrglAWnRyyBew8 kk0g== X-Gm-Message-State: AOJu0Yx3KWz5zvNuvPTnhHG0I0IKjdYpXg5uWpPU+u2S6BL4K1bUdVI7 XKW3+kl2vhuFlEWWRjCn4yEYxUWyfDytFA== X-Google-Smtp-Source: AGHT+IHLorgKc50POQpjlZ4rplVq0HjOIPUsL4ndLPkYxlg5F3ERp87LcBcaaNhpFd7KA7O8/PEe3g== X-Received: by 2002:a2e:99c8:0:b0:2c0:318a:6ee1 with SMTP id l8-20020a2e99c8000000b002c0318a6ee1mr12877955ljj.49.1698326683219; Thu, 26 Oct 2023 06:24:43 -0700 (PDT) Received: from krug ([87.196.80.249]) by smtp.gmail.com with ESMTPSA id d17-20020a5d6451000000b0032da022855fsm14187118wrw.111.2023.10.26.06.24.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Oct 2023 06:24:42 -0700 (PDT) From: =?utf-8?B?Sm/Do28gVMOhdm9yYQ==?= To: Richard Copley Subject: Re: 30.0.50; Flymake (with Eglot) error cleaning up old overlay In-Reply-To: (Richard Copley's message of "Thu, 26 Oct 2023 13:09:07 +0100") References: Date: Thu, 26 Oct 2023 14:27:42 +0100 Message-ID: <87pm111pkh.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Received-SPF: pass client-ip=2a00:1450:4864:20::233; envelope-from=joaotavora@gmail.com; helo=mail-lj1-x233.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: submit Cc: bug-gnu-emacs@gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) Richard Copley writes: > I'm afraid I'm unable to consistently reproduce this error. I hope you > can see the issue and devise a testcase from the following > description. Thanks very much for this report. This problem could be the same as https://github.com/joaotavora/eglot/discussions/1311, at least it its most recent iteration. Anyway, I think your analysis of the code is excellent and your conjecture (for at least one possible cause of this problem) is very promising. That "don't bother with invalid bounds" was introduced recently: commit 8b1947ffdd9d9eae26a308f0abaac45e06baac22 Author: Jo=C3=A3o T=C3=A1vora Date: Thu Sep 21 00:03:32 2023 +0100 =20=20=20=20 Flymake: more fixes to flymake--highlight-line =20=20=20=20=20=20=20 Make it robust to diagonstics with invalid bounds. =20=20=20=20=20=20=20 * lisp/progmodes/flymake.el (flymake--highlight-line): Robustify. =20=20=20=20 diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el --- a/lisp/progmodes/flymake.el +++ b/lisp/progmodes/flymake.el @@ -781,1 +782,5 @@ - (setq ov (make-overlay end beg)) + (when (=3D (overlay-start ov) (overlay-end ov)) + ;; Some backends report diagnostics with invalid bounds. Don't + ;; bother. + (delete-overlay ov) + (cl-return-from flymake--highlight-line nil)): And indeed the flymake--diag-overlay slot is not filled in when we get this early return. And indeed the overlays considered for deletion are the ones stored in the "state" map, meaning everything the backend reported. So maybe this patch is all that's needed: diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el index b27e6527f81..9be40499d37 100644 --- a/lisp/progmodes/flymake.el +++ b/lisp/progmodes/flymake.el @@ -809,6 +809,7 @@ flymake--highlight-line (flymake--diag-orig-end e)) (flymake--delete-overlay eov))) (setq ov (make-overlay beg end)) + (setf (flymake--diag-overlay diagnostic) ov) (when (=3D (overlay-start ov) (overlay-end ov)) ;; Some backends report diagnostics with invalid bounds. Don't ;; bother. @@ -863,7 +864,6 @@ flymake--highlight-line (overlay-put ov 'evaporate t) (overlay-put ov 'flymake-overlay t) (overlay-put ov 'flymake-diagnostic diagnostic) - (setf (flymake--diag-overlay diagnostic) ov) ;; Handle `flymake-show-diagnostics-at-end-of-line' ;; (when flymake-show-diagnostics-at-end-of-line There's a fair chance this fixes the bug effectively, but even if it doesn't, it is nevertheless a solid change, so I've pushed it and bumped the Flymake ELPA package version. Please keep an eye out of this bug. What language server are you using with Eglot btw? > A possible fix is to check if `flymake--highlight-line' created an > overlay before inserting a diagnostic into `flymake--state-diags', > in phase 2. This could also work, but is slightly more complex. And it would destroy the invariant that that list contains every "domestic" diagnostic reported by the backend (even invalid ones). Jo=C3=A3o From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 26 10:18:46 2023 Received: (at submit) by debbugs.gnu.org; 26 Oct 2023 14:18:46 +0000 Received: from localhost ([127.0.0.1]:34292 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qw1C9-0000yc-Mk for submit@debbugs.gnu.org; Thu, 26 Oct 2023 10:18:46 -0400 Received: from lists.gnu.org ([2001:470:142::17]:40106) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qw1C4-0000yL-F1 for submit@debbugs.gnu.org; Thu, 26 Oct 2023 10:18:44 -0400 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 1qw1BT-0000Wd-7H for bug-gnu-emacs@gnu.org; Thu, 26 Oct 2023 10:18:03 -0400 Received: from mail-qt1-x82d.google.com ([2607:f8b0:4864:20::82d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qw1BR-0005Yv-IS for bug-gnu-emacs@gnu.org; Thu, 26 Oct 2023 10:18:02 -0400 Received: by mail-qt1-x82d.google.com with SMTP id d75a77b69052e-41c157bbd30so6644771cf.0 for ; Thu, 26 Oct 2023 07:18:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698329880; x=1698934680; darn=gnu.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=wuaikln7cU22ACmDVsxUpjSdfohPjo6pvZIBb7ujykU=; b=Bj7Caug5Uu42O9b1HaDf8nvMAKkiEhr2jBctGeOEhLQ0lZ6WU+sXSnEJuGdUCuhudP OntlLd7fsAUWJhqV9OXUrcAIyrOEdTN2iIW5YP3H1/saWeNveRwrP78KA8B1A43HZzED rlL2AJYDdDsj7w2mQVw9UV1rYjOteJSyvoaJ0VNmApRlMTPNNry9EViNoHsbsSsRKSlG s5hJEGGyt9w5lR6iuy1R+YP+sE3I/ZzaiNhfLBF7SREsGbXVowEaFSqy6DnL7K4KONv4 0jShVA3YorLAkGV7mJLHewzkHnblJQXWOrmVPhDSKvOPlP9qqUi56nXTXH9F1BHVKh3w Povg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698329880; x=1698934680; h=content-transfer-encoding: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=wuaikln7cU22ACmDVsxUpjSdfohPjo6pvZIBb7ujykU=; b=VbGK8Z2EKnxXXlmrlJB3q2AL7RISAD0rYkE7cKARIZvk3f/TcrxfAciXdFepvHvUGV i0ASMDaCAcRtinlHN9Rt8ywCAwJKKr3/I4baiziPdnAMSlyiPsYYnSvuuoh0Olp0NISw 0gA6h1tZ0cLU5CthDMz9Tgdz2aHb+Vl3Y1mjxjrBgLZm6tyY8eqt1AK0EtgJmbEzSc+v ZaQpREYB6IaaQfSC/Q/u+sXx3RKW4Q0/2vJHOuGPHr/024YYOrEM07FS059gU2B8d0Uw I9DFF8/Lc5I4u3Y1xBwVvABv/aaXIHx9z5WaOpdBkT1xewJUfHRkxg8oE8XDap0Wbd4n qRCA== X-Gm-Message-State: AOJu0YyNJ/E4wli03Ic45Gnl6+oLLraTYk0f7X6Nfd8+Cxu9MXIIAbIp ppP7bo7Htgwj0XcLrQnQLVqA0x81C2XkVBZZgOs= X-Google-Smtp-Source: AGHT+IEL7X82tRltUx7hF3KC149m0FcYi15v2jxbmJowyItInGEr4j1ekHIs7jJhdk+XYUsUWbaqj3CVc1xTQmWDGJI= X-Received: by 2002:ac8:59c3:0:b0:41e:196c:3a37 with SMTP id f3-20020ac859c3000000b0041e196c3a37mr16599149qtf.35.1698329880274; Thu, 26 Oct 2023 07:18:00 -0700 (PDT) MIME-Version: 1.0 References: <87pm111pkh.fsf@gmail.com> In-Reply-To: <87pm111pkh.fsf@gmail.com> From: Richard Copley Date: Thu, 26 Oct 2023 15:17:34 +0100 Message-ID: Subject: Re: 30.0.50; Flymake (with Eglot) error cleaning up old overlay To: =?UTF-8?B?Sm/Do28gVMOhdm9yYQ==?= Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass client-ip=2607:f8b0:4864:20::82d; envelope-from=rcopley@gmail.com; helo=mail-qt1-x82d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: submit Cc: bug-gnu-emacs@gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) On Thu, 26 Oct 2023 at 14:24, Jo=C3=A3o T=C3=A1vora = wrote: > And indeed the flymake--diag-overlay slot is not filled in when we get > this early return. And indeed the overlays considered for deletion are > the ones stored in the "state" map, meaning everything the backend > reported. > > So maybe this patch is all that's needed: > > diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el > index b27e6527f81..9be40499d37 100644 > --- a/lisp/progmodes/flymake.el > +++ b/lisp/progmodes/flymake.el > @@ -809,6 +809,7 @@ flymake--highlight-line > (flymake--diag-orig-end e)) > (flymake--delete-overlay eov))) > (setq ov (make-overlay beg end)) > + (setf (flymake--diag-overlay diagnostic) ov) > (when (=3D (overlay-start ov) (overlay-end ov)) > ;; Some backends report diagnostics with invalid bounds. Don't > ;; bother. > @@ -863,7 +864,6 @@ flymake--highlight-line > (overlay-put ov 'evaporate t) > (overlay-put ov 'flymake-overlay t) > (overlay-put ov 'flymake-diagnostic diagnostic) > - (setf (flymake--diag-overlay diagnostic) ov) > ;; Handle `flymake-show-diagnostics-at-end-of-line' > ;; > (when flymake-show-diagnostics-at-end-of-line > > > There's a fair chance this fixes the bug effectively, but even if it > doesn't, it is nevertheless a solid change, so I've pushed it and bumped > the Flymake ELPA package version. > > Please keep an eye out of this bug. Thanks, will do. > What language server are you using with Eglot btw? Lean 4 [1]. There's a supporting Emacs mode [2] based on lsp-mode. I have a fork which uses Eglot instead [3]. There's nothing missing from Eglot, but one needs a lot of help from Lean 4 in order to read and write programs and proofs in Lean 4. Btw, some in the community are keen for the LSP semantic tokens feature to be implemented (see [4][5]). The existing `font-lock keywords' in lean4-mode work to a degree but leave something to be desired, since the language has user-defined syntax. [1] https://leanprover-community.github.io/learn.html [2] https://github.com/leanprover/lean4-mode [3] https://github.com/bustercopley/lean4-mode [4] https://github.com/joaotavora/eglot/issues/615 [5] https://github.com/joaotavora/eglot/pull/839 > > A possible fix is to check if `flymake--highlight-line' created an > > overlay before inserting a diagnostic into `flymake--state-diags', > > in phase 2. > > This could also work, but is slightly more complex. And it would > destroy the invariant that that list contains every "domestic" > diagnostic reported by the backend (even invalid ones). Ah yes. And risky without a test case. > Jo=C3=A3o From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 26 13:08:29 2023 Received: (at 66759-done) by debbugs.gnu.org; 26 Oct 2023 17:08:29 +0000 Received: from localhost ([127.0.0.1]:34431 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qw3qP-0005nv-2H for submit@debbugs.gnu.org; Thu, 26 Oct 2023 13:08:29 -0400 Received: from mail-lj1-x22b.google.com ([2a00:1450:4864:20::22b]:61450) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qw3qL-0005ng-7p for 66759-done@debbugs.gnu.org; Thu, 26 Oct 2023 13:08:27 -0400 Received: by mail-lj1-x22b.google.com with SMTP id 38308e7fff4ca-2c59a4dd14cso15904291fa.2 for <66759-done@debbugs.gnu.org>; Thu, 26 Oct 2023 10:07:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698340067; x=1698944867; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=lveiLXDPvn/1HPPDQgObgAv7pbu0ynHYpLbEczqKy8Y=; b=PBZpbC7iq96jYZDqssQ09JtMd7j26NKZpy0MG2uCvbJOPQAeKPne90zgTnsWZudrHJ aIDxsJYoeFgtyb8O8puIW8o3TIwJpvbjjLneKfPqWAUe957QK9l4PvasXuf4/HG70Sdc W8mE0g9SjFDeALhcitr6MMbEbyK+9fW4rxBEUuKFz8qZrXR1Jp4PAfmmxtueP+WY/Y9C 7hXZ/SDzMKL6Du6t/4FYr3rEtK47+R3UdxDhXNHkT5lM6fdk9UGSRXCxSZTeh8k2HToj yrjzWCF9+Ioa/GQCiEzSTQVJTrzpA76atHGSffURFKiv19qN9nYOBTXLuToFeSH+eMy2 eq5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698340067; x=1698944867; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=lveiLXDPvn/1HPPDQgObgAv7pbu0ynHYpLbEczqKy8Y=; b=rUqlAHCmAhxK2tX/wrB2Kvn62N3nzZVvkMJ2OshPtL+D5TOjxDqQUJl17INVAoGS/A sWCiZS8wTKgNWnKFS3GAtsJaUK0XSUG5bHTHmTlSiarFjNN08W4kSnaY3oDIJPrYkgny sPqwcXWNoiU6ewdlrpRvcPiGqYu1EtKwqFcD/BvmxJ1emPR/mfO5QWVtiQyAHmIn+/GS v46apoOeuefm9UtpDw5y9JGWVelxff7/Y0HyueVOUWL5L7kEKr4Dyw3TqXDaivm4goWt VLnqvS+4nwQN01sLlAkOBQ9HIOpVxiaY+yBoS1T7X/FEW/3VQuYBwp9yTFFJT6S/mm7v HrFg== X-Gm-Message-State: AOJu0YxocD/l27oA98yNrvPSetwIC8QBjK/4WhWr6FIbwcut2p2e0urw klD8c9/YC8WBVXlIWYv29RsWimBaG0deaA== X-Google-Smtp-Source: AGHT+IF7AZGY9io8MU2Km6iiJW1aS8YvWYnhfMb5TYmey07lNZgXN2x/9F0QiOguThTH134eHF5cBw== X-Received: by 2002:a05:651c:606:b0:2c5:5926:de15 with SMTP id k6-20020a05651c060600b002c55926de15mr147767lje.4.1698340067103; Thu, 26 Oct 2023 10:07:47 -0700 (PDT) Received: from krug (87-196-80-249.net.novis.pt. [87.196.80.249]) by smtp.gmail.com with ESMTPSA id y9-20020a7bcd89000000b00407efbc4361sm3052016wmj.9.2023.10.26.10.07.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Oct 2023 10:07:46 -0700 (PDT) From: =?utf-8?B?Sm/Do28gVMOhdm9yYQ==?= To: Richard Copley Subject: Re: 30.0.50; Flymake (with Eglot) error cleaning up old overlay In-Reply-To: (Richard Copley's message of "Thu, 26 Oct 2023 15:17:34 +0100") References: <87pm111pkh.fsf@gmail.com> Date: Thu, 26 Oct 2023 18:10:46 +0100 Message-ID: <87il6t1f8p.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 66759-done Cc: 66759-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Richard Copley writes: > On Thu, 26 Oct 2023 at 14:24, Jo=C3=A3o T=C3=A1vora wrote: >> Please keep an eye out of this bug. > > Thanks, will do. I've now reproduced the bug consistently. It happens exactly as you conjectured. To test, I temporarily hacked Eglot to take 2 seconds longer to process each request/notification with this patch: diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el index eba66503bf7..48845a889a8 100644 --- a/lisp/progmodes/eglot.el +++ b/lisp/progmodes/eglot.el @@ -1488,7 +1488,7 @@ eglot--connect ,@more-initargs))))) (spread (lambda (fn) (lambda (server method params) (let ((eglot--cached-server server)) - (apply fn server method (append params n= il)))))) + (run-at-time 2 nil #'apply fn server met= hod (append params nil)))))) (server (apply #'make-instance class And then made sure there was a diagnostic at the end of the file, changed the file and quickly enough (but only after the changes were sent to server), deleted the region with the diagnostic at the end of the file. Without my fix, I get exactly the (overlayp nil) error you reported. With the fix, everything works correctly. So I think with the fix I pushed earlier this bug can be closed, which I'm doing now. >> What language server are you using with Eglot btw? > [1] https://leanprover-community.github.io/learn.html > [2] https://github.com/leanprover/lean4-mode > [3] https://github.com/bustercopley/lean4-mode > [4] https://github.com/joaotavora/eglot/issues/615 > [5] https://github.com/joaotavora/eglot/pull/839 Yeah I know about these PRs. If you want can start a new report in the Emacs bug tracker proper (i.e. here) )and direct people to it. Write a summary of the situation if you can, and present this Lean4 use case as a argument. This gives visibility to more Emacs maintainers, and allows me to ping specialists like Eli more easily on the matter. Jo=C3=A3o From unknown Sat Aug 16 00:32:25 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Fri, 24 Nov 2023 12:24:07 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator