From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Jackson Ray Hamilton Newsgroups: gmane.emacs.devel Subject: Re: Comprehensive JSX support in Emacs Date: Sat, 6 Apr 2019 09:02:37 -0700 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------06D4321FD9A649A6068E0256" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="158181"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 Cc: emacs-devel@gnu.org To: monnier@iro.umontreal.ca Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Apr 06 18:05:53 2019 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hCnpJ-000f0i-0P for ged-emacs-devel@m.gmane.org; Sat, 06 Apr 2019 18:05:53 +0200 Original-Received: from localhost ([127.0.0.1]:56766 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hCnpH-0006UP-Rq for ged-emacs-devel@m.gmane.org; Sat, 06 Apr 2019 12:05:51 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:38960) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hCnmE-0004v5-5t for emacs-devel@gnu.org; Sat, 06 Apr 2019 12:02:45 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hCnmC-0000Lt-Dr for emacs-devel@gnu.org; Sat, 06 Apr 2019 12:02:42 -0400 Original-Received: from mta-09-4.privateemail.com ([68.65.122.29]:53766) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hCnmB-0000LT-Th for emacs-devel@gnu.org; Sat, 06 Apr 2019 12:02:40 -0400 Original-Received: from MTA-09.privateemail.com (localhost [127.0.0.1]) by MTA-09.privateemail.com (Postfix) with ESMTP id A1B4B6003F; Sat, 6 Apr 2019 12:02:38 -0400 (EDT) Original-Received: from [192.168.88.227] (unknown [10.20.151.229]) by MTA-09.privateemail.com (Postfix) with ESMTPA id 623F860034; Sat, 6 Apr 2019 16:02:38 +0000 (UTC) In-Reply-To: Content-Language: en-US X-Virus-Scanned: ClamAV using ClamSMTP X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 68.65.122.29 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:235038 Archived-At: This is a multi-part message in MIME format. --------------06D4321FD9A649A6068E0256 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable Hi Stefan, Thanks for taking another look at my work.=C2=A0 Regarding your message=E2= =80=A6 >>> However, there is a noticeable delay when editing some lines in my >>> 1000-line monolith.jsx file, >> This sounds a bit worrisome.=C2=A0 Slow font-lock rules? > Regarding that: if you can provide a concrete example, maybe we can hel= p > figure out where's the source of the performance issue and how to=20 > avoid it. Sure, I=E2=80=99ve attached an example.=C2=A0 If you try editing the thre= e
=20 elements with the text =E2=80=9CIs it slow to edit this node?=E2=80=9D th= en you can=20 observe the performance issue with the first two elements. > That reminds me: could you add a comment somewhere explaining what > you do in syntax-propertize-function vs what you do in font-lock > and inlining (some of those choices are completely obvious, but others > are much less so with non-obvious tradeoffs).=C2=A0 And also why you de= cided > to do it this way, obviously. Yes, I=E2=80=99ll do that. > E.g. have you considered marking the < and > in the JSX parts with > a parenthesis-syntax? Good idea, I=E2=80=99ll see if I can make that work. Jackson --------------06D4321FD9A649A6068E0256 Content-Type: text/plain; charset=UTF-8; name="Slow JSX.jsx" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Slow JSX.jsx" Y2xhc3MgQ29tcG9uZW50IHsKICByZW5kZXIgKCkgewogICAgcmV0dXJuICgKICAgICAgPGRp dj5JcyBpdCBzbG93IHRvIGVkaXQgdGhpcyBub2RlPyAgVmVyeSBtdWNoIGZvciBtZS48L2Rp dj4KICAgICkKICB9CiAgcmVuZGVyICgpIHsKICAgIHJldHVybiAoCiAgICAgIDxkaXY+CiAg ICAgICAgPGRpdiBjbGFzcz0iY2xhc3MiIGV4cHI9e2Z1bmNhbGwoKCkgPT4gewogICAgICAg ICAgICAgICBzdHVmZjogJ21vcmUgc3R1ZmYnLAogICAgICAgICAgICAgICBsb3RzT2ZTdHVm ZjogJ3N0dWZmIGlzIGdvb2QsIG1vcmUgc3R1ZmYgaXMgYmV0dGVyJwogICAgICAgICAgICAg fSl9PjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNsYXNzIiBleHByPXtmdW5jYWxsKCgp ID0+IHsKICAgICAgICAgICAgICAgc3R1ZmY6ICdtb3JlIHN0dWZmJywKICAgICAgICAgICAg ICAgbG90c09mU3R1ZmY6ICdzdHVmZiBpcyBnb29kLCBtb3JlIHN0dWZmIGlzIGJldHRlcicK ICAgICAgICAgICAgIH0pfT48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjbGFzcyIgZXhw cj17ZnVuY2FsbCgoKSA9PiB7CiAgICAgICAgICAgICAgIHN0dWZmOiAnbW9yZSBzdHVmZics CiAgICAgICAgICAgICAgIGxvdHNPZlN0dWZmOiAnc3R1ZmYgaXMgZ29vZCwgbW9yZSBzdHVm ZiBpcyBiZXR0ZXInCiAgICAgICAgICAgICB9KX0+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFz cz0iY2xhc3MiIGV4cHI9e2Z1bmNhbGwoKCkgPT4gewogICAgICAgICAgICAgICBzdHVmZjog J21vcmUgc3R1ZmYnLAogICAgICAgICAgICAgICBsb3RzT2ZTdHVmZjogJ3N0dWZmIGlzIGdv b2QsIG1vcmUgc3R1ZmYgaXMgYmV0dGVyJwogICAgICAgICAgICAgfSl9PjwvZGl2PgogICAg ICAgIDxkaXYgY2xhc3M9ImNsYXNzIiBleHByPXtmdW5jYWxsKCgpID0+IHsKICAgICAgICAg ICAgICAgc3R1ZmY6ICdtb3JlIHN0dWZmJywKICAgICAgICAgICAgICAgbG90c09mU3R1ZmY6 ICdzdHVmZiBpcyBnb29kLCBtb3JlIHN0dWZmIGlzIGJldHRlcicKICAgICAgICAgICAgIH0p fT48L2Rpdj4KICAgICAgICA8ZGl2PlRoYXQgd2FzIHs1fSB0aGluZ3MuICBDYW4gd2UgYWRk IG1vcmU/ICB7J1llcyBJIHRoaW5rIHNvLid9PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0i Y2xhc3MiIGV4cHI9e2Z1bmNhbGwoKCkgPT4gewogICAgICAgICAgICAgICBzdHVmZjogJ21v cmUgc3R1ZmYnLAogICAgICAgICAgICAgICBsb3RzT2ZTdHVmZjogJ3N0dWZmIGlzIGdvb2Qs IG1vcmUgc3R1ZmYgaXMgYmV0dGVyJwogICAgICAgICAgICAgfSl9PjwvZGl2PgogICAgICAg IDxkaXYgY2xhc3M9ImNsYXNzIiBleHByPXtmdW5jYWxsKCgpID0+IHsKICAgICAgICAgICAg ICAgc3R1ZmY6ICdtb3JlIHN0dWZmJywKICAgICAgICAgICAgICAgbG90c09mU3R1ZmY6ICdz dHVmZiBpcyBnb29kLCBtb3JlIHN0dWZmIGlzIGJldHRlcicKICAgICAgICAgICAgIH0pfT48 L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjbGFzcyIgZXhwcj17ZnVuY2FsbCgoKSA9PiB7 CiAgICAgICAgICAgICAgIHN0dWZmOiAnbW9yZSBzdHVmZicsCiAgICAgICAgICAgICAgIGxv dHNPZlN0dWZmOiAnc3R1ZmYgaXMgZ29vZCwgbW9yZSBzdHVmZiBpcyBiZXR0ZXInCiAgICAg ICAgICAgICB9KX0+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY2xhc3MiIGV4cHI9e2Z1 bmNhbGwoKCkgPT4gewogICAgICAgICAgICAgICBzdHVmZjogJ21vcmUgc3R1ZmYnLAogICAg ICAgICAgICAgICBsb3RzT2ZTdHVmZjogJ3N0dWZmIGlzIGdvb2QsIG1vcmUgc3R1ZmYgaXMg YmV0dGVyJwogICAgICAgICAgICAgfSl9PjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNs YXNzIiBleHByPXtmdW5jYWxsKCgpID0+IHsKICAgICAgICAgICAgICAgc3R1ZmY6ICdtb3Jl IHN0dWZmJywKICAgICAgICAgICAgICAgbG90c09mU3R1ZmY6ICdzdHVmZiBpcyBnb29kLCBt b3JlIHN0dWZmIGlzIGJldHRlcicKICAgICAgICAgICAgIH0pfT48L2Rpdj4KICAgICAgICA8 ZGl2PlRoYXQgd2FzIHsxMH0gdGhpbmdzLiAgQ2FuIHdlIGFkZCBtb3JlPyAgeydZZXMgSSB0 aGluayBzby4nfTwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNsYXNzIiBleHByPXtmdW5j YWxsKCgpID0+IHsKICAgICAgICAgICAgICAgc3R1ZmY6ICdtb3JlIHN0dWZmJywKICAgICAg ICAgICAgICAgbG90c09mU3R1ZmY6ICdzdHVmZiBpcyBnb29kLCBtb3JlIHN0dWZmIGlzIGJl dHRlcicKICAgICAgICAgICAgIH0pfT48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjbGFz cyIgZXhwcj17ZnVuY2FsbCgoKSA9PiB7CiAgICAgICAgICAgICAgIHN0dWZmOiAnbW9yZSBz dHVmZicsCiAgICAgICAgICAgICAgIGxvdHNPZlN0dWZmOiAnc3R1ZmYgaXMgZ29vZCwgbW9y ZSBzdHVmZiBpcyBiZXR0ZXInCiAgICAgICAgICAgICB9KX0+PC9kaXY+CiAgICAgICAgPGRp diBjbGFzcz0iY2xhc3MiIGV4cHI9e2Z1bmNhbGwoKCkgPT4gewogICAgICAgICAgICAgICBz dHVmZjogJ21vcmUgc3R1ZmYnLAogICAgICAgICAgICAgICBsb3RzT2ZTdHVmZjogJ3N0dWZm IGlzIGdvb2QsIG1vcmUgc3R1ZmYgaXMgYmV0dGVyJwogICAgICAgICAgICAgfSl9PjwvZGl2 PgogICAgICAgIDxkaXYgY2xhc3M9ImNsYXNzIiBleHByPXtmdW5jYWxsKCgpID0+IHsKICAg ICAgICAgICAgICAgc3R1ZmY6ICdtb3JlIHN0dWZmJywKICAgICAgICAgICAgICAgbG90c09m U3R1ZmY6ICdzdHVmZiBpcyBnb29kLCBtb3JlIHN0dWZmIGlzIGJldHRlcicKICAgICAgICAg ICAgIH0pfT48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjbGFzcyIgZXhwcj17ZnVuY2Fs bCgoKSA9PiB7CiAgICAgICAgICAgICAgIHN0dWZmOiAnbW9yZSBzdHVmZicsCiAgICAgICAg ICAgICAgIGxvdHNPZlN0dWZmOiAnc3R1ZmYgaXMgZ29vZCwgbW9yZSBzdHVmZiBpcyBiZXR0 ZXInCiAgICAgICAgICAgICB9KX0+PC9kaXY+CiAgICAgICAgPGRpdj5UaGF0IHdhcyB7MTV9 IHRoaW5ncy4gIENhbiB3ZSBhZGQgbW9yZT8gIHsnWWVzIEkgdGhpbmsgc28uJ308L2Rpdj4K ICAgICAgICA8ZGl2IGNsYXNzPSJjbGFzcyIgZXhwcj17ZnVuY2FsbCgoKSA9PiB7CiAgICAg ICAgICAgICAgIHN0dWZmOiAnbW9yZSBzdHVmZicsCiAgICAgICAgICAgICAgIGxvdHNPZlN0 dWZmOiAnc3R1ZmYgaXMgZ29vZCwgbW9yZSBzdHVmZiBpcyBiZXR0ZXInCiAgICAgICAgICAg ICB9KX0+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY2xhc3MiIGV4cHI9e2Z1bmNhbGwo KCkgPT4gewogICAgICAgICAgICAgICBzdHVmZjogJ21vcmUgc3R1ZmYnLAogICAgICAgICAg ICAgICBsb3RzT2ZTdHVmZjogJ3N0dWZmIGlzIGdvb2QsIG1vcmUgc3R1ZmYgaXMgYmV0dGVy JwogICAgICAgICAgICAgfSl9PjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNsYXNzIiBl eHByPXtmdW5jYWxsKCgpID0+IHsKICAgICAgICAgICAgICAgc3R1ZmY6ICdtb3JlIHN0dWZm JywKICAgICAgICAgICAgICAgbG90c09mU3R1ZmY6ICdzdHVmZiBpcyBnb29kLCBtb3JlIHN0 dWZmIGlzIGJldHRlcicKICAgICAgICAgICAgIH0pfT48L2Rpdj4KICAgICAgICA8ZGl2IGNs YXNzPSJjbGFzcyIgZXhwcj17ZnVuY2FsbCgoKSA9PiB7CiAgICAgICAgICAgICAgIHN0dWZm OiAnbW9yZSBzdHVmZicsCiAgICAgICAgICAgICAgIGxvdHNPZlN0dWZmOiAnc3R1ZmYgaXMg Z29vZCwgbW9yZSBzdHVmZiBpcyBiZXR0ZXInCiAgICAgICAgICAgICB9KX0+PC9kaXY+CiAg ICAgICAgPGRpdiBjbGFzcz0iY2xhc3MiIGV4cHI9e2Z1bmNhbGwoKCkgPT4gewogICAgICAg ICAgICAgICBzdHVmZjogJ21vcmUgc3R1ZmYnLAogICAgICAgICAgICAgICBsb3RzT2ZTdHVm ZjogJ3N0dWZmIGlzIGdvb2QsIG1vcmUgc3R1ZmYgaXMgYmV0dGVyJwogICAgICAgICAgICAg fSl9PjwvZGl2PgogICAgICAgIDxkaXY+VGhhdCB3YXMgezIwfSB0aGluZ3MuICBDYW4gd2Ug YWRkIG1vcmU/ICB7J1llcyBJIHRoaW5rIHNvLid9PC9kaXY+CiAgICAgICAgPGRpdiBjbGFz cz0iY2xhc3MiIGV4cHI9e2Z1bmNhbGwoKCkgPT4gewogICAgICAgICAgICAgICBzdHVmZjog J21vcmUgc3R1ZmYnLAogICAgICAgICAgICAgICBsb3RzT2ZTdHVmZjogJ3N0dWZmIGlzIGdv b2QsIG1vcmUgc3R1ZmYgaXMgYmV0dGVyJwogICAgICAgICAgICAgfSl9PjwvZGl2PgogICAg ICAgIDxkaXYgY2xhc3M9ImNsYXNzIiBleHByPXtmdW5jYWxsKCgpID0+IHsKICAgICAgICAg ICAgICAgc3R1ZmY6ICdtb3JlIHN0dWZmJywKICAgICAgICAgICAgICAgbG90c09mU3R1ZmY6 ICdzdHVmZiBpcyBnb29kLCBtb3JlIHN0dWZmIGlzIGJldHRlcicKICAgICAgICAgICAgIH0p fT48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjbGFzcyIgZXhwcj17ZnVuY2FsbCgoKSA9 PiB7CiAgICAgICAgICAgICAgIHN0dWZmOiAnbW9yZSBzdHVmZicsCiAgICAgICAgICAgICAg IGxvdHNPZlN0dWZmOiAnc3R1ZmYgaXMgZ29vZCwgbW9yZSBzdHVmZiBpcyBiZXR0ZXInCiAg ICAgICAgICAgICB9KX0+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY2xhc3MiIGV4cHI9 e2Z1bmNhbGwoKCkgPT4gewogICAgICAgICAgICAgICBzdHVmZjogJ21vcmUgc3R1ZmYnLAog ICAgICAgICAgICAgICBsb3RzT2ZTdHVmZjogJ3N0dWZmIGlzIGdvb2QsIG1vcmUgc3R1ZmYg aXMgYmV0dGVyJwogICAgICAgICAgICAgfSl9PjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9 ImNsYXNzIiBleHByPXtmdW5jYWxsKCgpID0+IHsKICAgICAgICAgICAgICAgc3R1ZmY6ICdt b3JlIHN0dWZmJywKICAgICAgICAgICAgICAgbG90c09mU3R1ZmY6ICdzdHVmZiBpcyBnb29k LCBtb3JlIHN0dWZmIGlzIGJldHRlcicKICAgICAgICAgICAgIH0pfT48L2Rpdj4KICAgICAg ICA8ZGl2PlRoYXQgd2FzIHsyNX0gdGhpbmdzLiAgQ2FuIHdlIGFkZCBtb3JlPyAgeydZZXMg SSB0aGluayBzby4nfTwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNsYXNzIiBleHByPXtm dW5jYWxsKCgpID0+IHsKICAgICAgICAgICAgICAgc3R1ZmY6ICdtb3JlIHN0dWZmJywKICAg ICAgICAgICAgICAgbG90c09mU3R1ZmY6ICdzdHVmZiBpcyBnb29kLCBtb3JlIHN0dWZmIGlz IGJldHRlcicKICAgICAgICAgICAgIH0pfT48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJj bGFzcyIgZXhwcj17ZnVuY2FsbCgoKSA9PiB7CiAgICAgICAgICAgICAgIHN0dWZmOiAnbW9y ZSBzdHVmZicsCiAgICAgICAgICAgICAgIGxvdHNPZlN0dWZmOiAnc3R1ZmYgaXMgZ29vZCwg bW9yZSBzdHVmZiBpcyBiZXR0ZXInCiAgICAgICAgICAgICB9KX0+PC9kaXY+CiAgICAgICAg PGRpdiBjbGFzcz0iY2xhc3MiIGV4cHI9e2Z1bmNhbGwoKCkgPT4gewogICAgICAgICAgICAg ICBzdHVmZjogJ21vcmUgc3R1ZmYnLAogICAgICAgICAgICAgICBsb3RzT2ZTdHVmZjogJ3N0 dWZmIGlzIGdvb2QsIG1vcmUgc3R1ZmYgaXMgYmV0dGVyJwogICAgICAgICAgICAgfSl9Pjwv ZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNsYXNzIiBleHByPXtmdW5jYWxsKCgpID0+IHsK ICAgICAgICAgICAgICAgc3R1ZmY6ICdtb3JlIHN0dWZmJywKICAgICAgICAgICAgICAgbG90 c09mU3R1ZmY6ICdzdHVmZiBpcyBnb29kLCBtb3JlIHN0dWZmIGlzIGJldHRlcicKICAgICAg ICAgICAgIH0pfT48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjbGFzcyIgZXhwcj17ZnVu Y2FsbCgoKSA9PiB7CiAgICAgICAgICAgICAgIHN0dWZmOiAnbW9yZSBzdHVmZicsCiAgICAg ICAgICAgICAgIGxvdHNPZlN0dWZmOiAnc3R1ZmYgaXMgZ29vZCwgbW9yZSBzdHVmZiBpcyBi ZXR0ZXInCiAgICAgICAgICAgICB9KX0+PC9kaXY+CiAgICAgICAgPGRpdj5UaGF0IHdhcyB7 MzB9IHRoaW5ncy4gIENhbiB3ZSBhZGQgbW9yZT8gIHsnWWVzIEkgdGhpbmsgc28uJ308L2Rp dj4KICAgICAgICA8ZGl2IGNsYXNzPSJjbGFzcyIgZXhwcj17ZnVuY2FsbCgoKSA9PiB7CiAg ICAgICAgICAgICAgIHN0dWZmOiAnbW9yZSBzdHVmZicsCiAgICAgICAgICAgICAgIGxvdHNP ZlN0dWZmOiAnc3R1ZmYgaXMgZ29vZCwgbW9yZSBzdHVmZiBpcyBiZXR0ZXInCiAgICAgICAg ICAgICB9KX0+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY2xhc3MiIGV4cHI9e2Z1bmNh bGwoKCkgPT4gewogICAgICAgICAgICAgICBzdHVmZjogJ21vcmUgc3R1ZmYnLAogICAgICAg ICAgICAgICBsb3RzT2ZTdHVmZjogJ3N0dWZmIGlzIGdvb2QsIG1vcmUgc3R1ZmYgaXMgYmV0 dGVyJwogICAgICAgICAgICAgfSl9PjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNsYXNz IiBleHByPXtmdW5jYWxsKCgpID0+IHsKICAgICAgICAgICAgICAgc3R1ZmY6ICdtb3JlIHN0 dWZmJywKICAgICAgICAgICAgICAgbG90c09mU3R1ZmY6ICdzdHVmZiBpcyBnb29kLCBtb3Jl IHN0dWZmIGlzIGJldHRlcicKICAgICAgICAgICAgIH0pfT48L2Rpdj4KICAgICAgICA8ZGl2 IGNsYXNzPSJjbGFzcyIgZXhwcj17ZnVuY2FsbCgoKSA9PiB7CiAgICAgICAgICAgICAgIHN0 dWZmOiAnbW9yZSBzdHVmZicsCiAgICAgICAgICAgICAgIGxvdHNPZlN0dWZmOiAnc3R1ZmYg aXMgZ29vZCwgbW9yZSBzdHVmZiBpcyBiZXR0ZXInCiAgICAgICAgICAgICB9KX0+PC9kaXY+ CiAgICAgICAgPGRpdiBjbGFzcz0iY2xhc3MiIGV4cHI9e2Z1bmNhbGwoKCkgPT4gewogICAg ICAgICAgICAgICBzdHVmZjogJ21vcmUgc3R1ZmYnLAogICAgICAgICAgICAgICBsb3RzT2ZT dHVmZjogJ3N0dWZmIGlzIGdvb2QsIG1vcmUgc3R1ZmYgaXMgYmV0dGVyJwogICAgICAgICAg ICAgfSl9PjwvZGl2PgogICAgICAgIDxkaXY+VGhhdCB3YXMgezM1fSB0aGluZ3MuICBDYW4g d2UgYWRkIG1vcmU/ICB7J1llcyBJIHRoaW5rIHNvLid9PC9kaXY+CiAgICAgICAgPGRpdiBj bGFzcz0iY2xhc3MiIGV4cHI9e2Z1bmNhbGwoKCkgPT4gewogICAgICAgICAgICAgICBzdHVm ZjogJ21vcmUgc3R1ZmYnLAogICAgICAgICAgICAgICBsb3RzT2ZTdHVmZjogJ3N0dWZmIGlz IGdvb2QsIG1vcmUgc3R1ZmYgaXMgYmV0dGVyJwogICAgICAgICAgICAgfSl9PjwvZGl2Pgog ICAgICAgIDxkaXYgY2xhc3M9ImNsYXNzIiBleHByPXtmdW5jYWxsKCgpID0+IHsKICAgICAg ICAgICAgICAgc3R1ZmY6ICdtb3JlIHN0dWZmJywKICAgICAgICAgICAgICAgbG90c09mU3R1 ZmY6ICdzdHVmZiBpcyBnb29kLCBtb3JlIHN0dWZmIGlzIGJldHRlcicKICAgICAgICAgICAg IH0pfT48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjbGFzcyIgZXhwcj17ZnVuY2FsbCgo KSA9PiB7CiAgICAgICAgICAgICAgIHN0dWZmOiAnbW9yZSBzdHVmZicsCiAgICAgICAgICAg ICAgIGxvdHNPZlN0dWZmOiAnc3R1ZmYgaXMgZ29vZCwgbW9yZSBzdHVmZiBpcyBiZXR0ZXIn CiAgICAgICAgICAgICB9KX0+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY2xhc3MiIGV4 cHI9e2Z1bmNhbGwoKCkgPT4gewogICAgICAgICAgICAgICBzdHVmZjogJ21vcmUgc3R1ZmYn LAogICAgICAgICAgICAgICBsb3RzT2ZTdHVmZjogJ3N0dWZmIGlzIGdvb2QsIG1vcmUgc3R1 ZmYgaXMgYmV0dGVyJwogICAgICAgICAgICAgfSl9PjwvZGl2PgogICAgICAgIDxkaXYgY2xh c3M9ImNsYXNzIiBleHByPXtmdW5jYWxsKCgpID0+IHsKICAgICAgICAgICAgICAgc3R1ZmY6 ICdtb3JlIHN0dWZmJywKICAgICAgICAgICAgICAgbG90c09mU3R1ZmY6ICdzdHVmZiBpcyBn b29kLCBtb3JlIHN0dWZmIGlzIGJldHRlcicKICAgICAgICAgICAgIH0pfT48L2Rpdj4KICAg ICAgICA8ZGl2PlRoYXQgd2FzIHs0MH0gdGhpbmdzLiAgQ2FuIHdlIGFkZCBtb3JlPyAgeydZ ZXMgSSB0aGluayBzby4nfTwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNsYXNzIiBleHBy PXtmdW5jYWxsKCgpID0+IHsKICAgICAgICAgICAgICAgc3R1ZmY6ICdtb3JlIHN0dWZmJywK ICAgICAgICAgICAgICAgbG90c09mU3R1ZmY6ICdzdHVmZiBpcyBnb29kLCBtb3JlIHN0dWZm IGlzIGJldHRlcicKICAgICAgICAgICAgIH0pfT48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNz PSJjbGFzcyIgZXhwcj17ZnVuY2FsbCgoKSA9PiB7CiAgICAgICAgICAgICAgIHN0dWZmOiAn bW9yZSBzdHVmZicsCiAgICAgICAgICAgICAgIGxvdHNPZlN0dWZmOiAnc3R1ZmYgaXMgZ29v ZCwgbW9yZSBzdHVmZiBpcyBiZXR0ZXInCiAgICAgICAgICAgICB9KX0+PC9kaXY+CiAgICAg ICAgPGRpdiBjbGFzcz0iY2xhc3MiIGV4cHI9e2Z1bmNhbGwoKCkgPT4gewogICAgICAgICAg ICAgICBzdHVmZjogJ21vcmUgc3R1ZmYnLAogICAgICAgICAgICAgICBsb3RzT2ZTdHVmZjog J3N0dWZmIGlzIGdvb2QsIG1vcmUgc3R1ZmYgaXMgYmV0dGVyJwogICAgICAgICAgICAgfSl9 PjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNsYXNzIiBleHByPXtmdW5jYWxsKCgpID0+ IHsKICAgICAgICAgICAgICAgc3R1ZmY6ICdtb3JlIHN0dWZmJywKICAgICAgICAgICAgICAg bG90c09mU3R1ZmY6ICdzdHVmZiBpcyBnb29kLCBtb3JlIHN0dWZmIGlzIGJldHRlcicKICAg ICAgICAgICAgIH0pfT48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjbGFzcyIgZXhwcj17 ZnVuY2FsbCgoKSA9PiB7CiAgICAgICAgICAgICAgIHN0dWZmOiAnbW9yZSBzdHVmZicsCiAg ICAgICAgICAgICAgIGxvdHNPZlN0dWZmOiAnc3R1ZmYgaXMgZ29vZCwgbW9yZSBzdHVmZiBp cyBiZXR0ZXInCiAgICAgICAgICAgICB9KX0+PC9kaXY+CiAgICAgICAgPGRpdj5UaGF0IHdh cyB7NDV9IHRoaW5ncy4gIENhbiB3ZSBhZGQgbW9yZT8gIHsnWWVzIEkgdGhpbmsgc28uJ308 L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjbGFzcyIgZXhwcj17ZnVuY2FsbCgoKSA9PiB7 CiAgICAgICAgICAgICAgIHN0dWZmOiAnbW9yZSBzdHVmZicsCiAgICAgICAgICAgICAgIGxv dHNPZlN0dWZmOiAnc3R1ZmYgaXMgZ29vZCwgbW9yZSBzdHVmZiBpcyBiZXR0ZXInCiAgICAg ICAgICAgICB9KX0+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY2xhc3MiIGV4cHI9e2Z1 bmNhbGwoKCkgPT4gewogICAgICAgICAgICAgICBzdHVmZjogJ21vcmUgc3R1ZmYnLAogICAg ICAgICAgICAgICBsb3RzT2ZTdHVmZjogJ3N0dWZmIGlzIGdvb2QsIG1vcmUgc3R1ZmYgaXMg YmV0dGVyJwogICAgICAgICAgICAgfSl9PjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNs YXNzIiBleHByPXtmdW5jYWxsKCgpID0+IHsKICAgICAgICAgICAgICAgc3R1ZmY6ICdtb3Jl IHN0dWZmJywKICAgICAgICAgICAgICAgbG90c09mU3R1ZmY6ICdzdHVmZiBpcyBnb29kLCBt b3JlIHN0dWZmIGlzIGJldHRlcicKICAgICAgICAgICAgIH0pfT48L2Rpdj4KICAgICAgICA8 ZGl2IGNsYXNzPSJjbGFzcyIgZXhwcj17ZnVuY2FsbCgoKSA9PiB7CiAgICAgICAgICAgICAg IHN0dWZmOiAnbW9yZSBzdHVmZicsCiAgICAgICAgICAgICAgIGxvdHNPZlN0dWZmOiAnc3R1 ZmYgaXMgZ29vZCwgbW9yZSBzdHVmZiBpcyBiZXR0ZXInCiAgICAgICAgICAgICB9KX0+PC9k aXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY2xhc3MiIGV4cHI9e2Z1bmNhbGwoKCkgPT4gewog ICAgICAgICAgICAgICBzdHVmZjogJ21vcmUgc3R1ZmYnLAogICAgICAgICAgICAgICBsb3Rz T2ZTdHVmZjogJ3N0dWZmIGlzIGdvb2QsIG1vcmUgc3R1ZmYgaXMgYmV0dGVyJwogICAgICAg ICAgICAgfSl9PjwvZGl2PgogICAgICAgIDxkaXY+VGhhdCB3YXMgezUwfSB0aGluZ3MuICBD YW4gd2UgYWRkIG1vcmU/ICB7J1llcyBJIHRoaW5rIHNvLid9PC9kaXY+CiAgICAgICAgPGRp diBjbGFzcz0iY2xhc3MiIGV4cHI9e2Z1bmNhbGwoKCkgPT4gewogICAgICAgICAgICAgICBz dHVmZjogJ21vcmUgc3R1ZmYnLAogICAgICAgICAgICAgICBsb3RzT2ZTdHVmZjogJ3N0dWZm IGlzIGdvb2QsIG1vcmUgc3R1ZmYgaXMgYmV0dGVyJwogICAgICAgICAgICAgfSl9PjwvZGl2 PgogICAgICAgIDxkaXYgY2xhc3M9ImNsYXNzIiBleHByPXtmdW5jYWxsKCgpID0+IHsKICAg ICAgICAgICAgICAgc3R1ZmY6ICdtb3JlIHN0dWZmJywKICAgICAgICAgICAgICAgbG90c09m U3R1ZmY6ICdzdHVmZiBpcyBnb29kLCBtb3JlIHN0dWZmIGlzIGJldHRlcicKICAgICAgICAg ICAgIH0pfT48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjbGFzcyIgZXhwcj17ZnVuY2Fs bCgoKSA9PiB7CiAgICAgICAgICAgICAgIHN0dWZmOiAnbW9yZSBzdHVmZicsCiAgICAgICAg ICAgICAgIGxvdHNPZlN0dWZmOiAnc3R1ZmYgaXMgZ29vZCwgbW9yZSBzdHVmZiBpcyBiZXR0 ZXInCiAgICAgICAgICAgICB9KX0+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY2xhc3Mi IGV4cHI9e2Z1bmNhbGwoKCkgPT4gewogICAgICAgICAgICAgICBzdHVmZjogJ21vcmUgc3R1 ZmYnLAogICAgICAgICAgICAgICBsb3RzT2ZTdHVmZjogJ3N0dWZmIGlzIGdvb2QsIG1vcmUg c3R1ZmYgaXMgYmV0dGVyJwogICAgICAgICAgICAgfSl9PjwvZGl2PgogICAgICAgIDxkaXYg Y2xhc3M9ImNsYXNzIiBleHByPXtmdW5jYWxsKCgpID0+IHsKICAgICAgICAgICAgICAgc3R1 ZmY6ICdtb3JlIHN0dWZmJywKICAgICAgICAgICAgICAgbG90c09mU3R1ZmY6ICdzdHVmZiBp cyBnb29kLCBtb3JlIHN0dWZmIGlzIGJldHRlcicKICAgICAgICAgICAgIH0pfT48L2Rpdj4K ICAgICAgICA8ZGl2PlRoYXQgd2FzIHs1NX0gdGhpbmdzLiAgQ2FuIHdlIGFkZCBtb3JlPyAg eydZZXMgSSB0aGluayBzby4nfTwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNsYXNzIiBl eHByPXtmdW5jYWxsKCgpID0+IHsKICAgICAgICAgICAgICAgc3R1ZmY6ICdtb3JlIHN0dWZm JywKICAgICAgICAgICAgICAgbG90c09mU3R1ZmY6ICdzdHVmZiBpcyBnb29kLCBtb3JlIHN0 dWZmIGlzIGJldHRlcicKICAgICAgICAgICAgIH0pfT48L2Rpdj4KICAgICAgICA8ZGl2IGNs YXNzPSJjbGFzcyIgZXhwcj17ZnVuY2FsbCgoKSA9PiB7CiAgICAgICAgICAgICAgIHN0dWZm OiAnbW9yZSBzdHVmZicsCiAgICAgICAgICAgICAgIGxvdHNPZlN0dWZmOiAnc3R1ZmYgaXMg Z29vZCwgbW9yZSBzdHVmZiBpcyBiZXR0ZXInCiAgICAgICAgICAgICB9KX0+PC9kaXY+CiAg ICAgICAgPGRpdiBjbGFzcz0iY2xhc3MiIGV4cHI9e2Z1bmNhbGwoKCkgPT4gewogICAgICAg ICAgICAgICBzdHVmZjogJ21vcmUgc3R1ZmYnLAogICAgICAgICAgICAgICBsb3RzT2ZTdHVm ZjogJ3N0dWZmIGlzIGdvb2QsIG1vcmUgc3R1ZmYgaXMgYmV0dGVyJwogICAgICAgICAgICAg fSl9PjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNsYXNzIiBleHByPXtmdW5jYWxsKCgp ID0+IHsKICAgICAgICAgICAgICAgc3R1ZmY6ICdtb3JlIHN0dWZmJywKICAgICAgICAgICAg ICAgbG90c09mU3R1ZmY6ICdzdHVmZiBpcyBnb29kLCBtb3JlIHN0dWZmIGlzIGJldHRlcicK ICAgICAgICAgICAgIH0pfT48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjbGFzcyIgZXhw cj17ZnVuY2FsbCgoKSA9PiB7CiAgICAgICAgICAgICAgIHN0dWZmOiAnbW9yZSBzdHVmZics CiAgICAgICAgICAgICAgIGxvdHNPZlN0dWZmOiAnc3R1ZmYgaXMgZ29vZCwgbW9yZSBzdHVm ZiBpcyBiZXR0ZXInCiAgICAgICAgICAgICB9KX0+PC9kaXY+CiAgICAgICAgPGRpdj5UaGF0 IHdhcyB7NjB9IHRoaW5ncy4gIENhbiB3ZSBhZGQgbW9yZT8gIHsnWWVzIEkgdGhpbmsgc28u J308L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjbGFzcyIgZXhwcj17ZnVuY2FsbCgoKSA9 PiB7CiAgICAgICAgICAgICAgIHN0dWZmOiAnbW9yZSBzdHVmZicsCiAgICAgICAgICAgICAg IGxvdHNPZlN0dWZmOiAnc3R1ZmYgaXMgZ29vZCwgbW9yZSBzdHVmZiBpcyBiZXR0ZXInCiAg ICAgICAgICAgICB9KX0+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY2xhc3MiIGV4cHI9 e2Z1bmNhbGwoKCkgPT4gewogICAgICAgICAgICAgICBzdHVmZjogJ21vcmUgc3R1ZmYnLAog ICAgICAgICAgICAgICBsb3RzT2ZTdHVmZjogJ3N0dWZmIGlzIGdvb2QsIG1vcmUgc3R1ZmYg aXMgYmV0dGVyJwogICAgICAgICAgICAgfSl9PjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9 ImNsYXNzIiBleHByPXtmdW5jYWxsKCgpID0+IHsKICAgICAgICAgICAgICAgc3R1ZmY6ICdt b3JlIHN0dWZmJywKICAgICAgICAgICAgICAgbG90c09mU3R1ZmY6ICdzdHVmZiBpcyBnb29k LCBtb3JlIHN0dWZmIGlzIGJldHRlcicKICAgICAgICAgICAgIH0pfT48L2Rpdj4KICAgICAg ICA8ZGl2IGNsYXNzPSJjbGFzcyIgZXhwcj17ZnVuY2FsbCgoKSA9PiB7CiAgICAgICAgICAg ICAgIHN0dWZmOiAnbW9yZSBzdHVmZicsCiAgICAgICAgICAgICAgIGxvdHNPZlN0dWZmOiAn c3R1ZmYgaXMgZ29vZCwgbW9yZSBzdHVmZiBpcyBiZXR0ZXInCiAgICAgICAgICAgICB9KX0+ PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY2xhc3MiIGV4cHI9e2Z1bmNhbGwoKCkgPT4g ewogICAgICAgICAgICAgICBzdHVmZjogJ21vcmUgc3R1ZmYnLAogICAgICAgICAgICAgICBs b3RzT2ZTdHVmZjogJ3N0dWZmIGlzIGdvb2QsIG1vcmUgc3R1ZmYgaXMgYmV0dGVyJwogICAg ICAgICAgICAgfSl9PjwvZGl2PgogICAgICAgIDxkaXY+VGhhdCB3YXMgezY1fSB0aGluZ3Mu ICBDYW4gd2UgYWRkIG1vcmU/ICB7J1llcyBJIHRoaW5rIHNvLid9PC9kaXY+CiAgICAgICAg PGRpdiBjbGFzcz0iY2xhc3MiIGV4cHI9e2Z1bmNhbGwoKCkgPT4gewogICAgICAgICAgICAg ICBzdHVmZjogJ21vcmUgc3R1ZmYnLAogICAgICAgICAgICAgICBsb3RzT2ZTdHVmZjogJ3N0 dWZmIGlzIGdvb2QsIG1vcmUgc3R1ZmYgaXMgYmV0dGVyJwogICAgICAgICAgICAgfSl9Pjwv ZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNsYXNzIiBleHByPXtmdW5jYWxsKCgpID0+IHsK ICAgICAgICAgICAgICAgc3R1ZmY6ICdtb3JlIHN0dWZmJywKICAgICAgICAgICAgICAgbG90 c09mU3R1ZmY6ICdzdHVmZiBpcyBnb29kLCBtb3JlIHN0dWZmIGlzIGJldHRlcicKICAgICAg ICAgICAgIH0pfT48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjbGFzcyIgZXhwcj17ZnVu Y2FsbCgoKSA9PiB7CiAgICAgICAgICAgICAgIHN0dWZmOiAnbW9yZSBzdHVmZicsCiAgICAg ICAgICAgICAgIGxvdHNPZlN0dWZmOiAnc3R1ZmYgaXMgZ29vZCwgbW9yZSBzdHVmZiBpcyBi ZXR0ZXInCiAgICAgICAgICAgICB9KX0+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY2xh c3MiIGV4cHI9e2Z1bmNhbGwoKCkgPT4gewogICAgICAgICAgICAgICBzdHVmZjogJ21vcmUg c3R1ZmYnLAogICAgICAgICAgICAgICBsb3RzT2ZTdHVmZjogJ3N0dWZmIGlzIGdvb2QsIG1v cmUgc3R1ZmYgaXMgYmV0dGVyJwogICAgICAgICAgICAgfSl9PjwvZGl2PgogICAgICAgIDxk aXYgY2xhc3M9ImNsYXNzIiBleHByPXtmdW5jYWxsKCgpID0+IHsKICAgICAgICAgICAgICAg c3R1ZmY6ICdtb3JlIHN0dWZmJywKICAgICAgICAgICAgICAgbG90c09mU3R1ZmY6ICdzdHVm ZiBpcyBnb29kLCBtb3JlIHN0dWZmIGlzIGJldHRlcicKICAgICAgICAgICAgIH0pfT48L2Rp dj4KICAgICAgICA8ZGl2PlRoYXQgd2FzIHs3MH0gdGhpbmdzLiAgQ2FuIHdlIGFkZCBtb3Jl PyAgeydUaGF04oCZcyBlbm91Z2ggZm9yIG5vdy4nfTwvZGl2PgogICAgICAgIDxkaXY+SXMg aXQgc2xvdyB0byBlZGl0IHRoaXMgbm9kZT8gIFZlcnkgbXVjaCBmb3IgbWUuPC9kaXY+CiAg ICAgIDwvZGl2PgogICAgKQogIH0KICByZW5kZXIgKCkgewogICAgcmV0dXJuICgKICAgICAg PGRpdj5JcyBpdCBzbG93IHRvIGVkaXQgdGhpcyBub2RlPyAgTm90IGF0IGFsbCBmb3IgbWUu PC9kaXY+CiAgICApCiAgfQp9Cg== --------------06D4321FD9A649A6068E0256--