From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: =?UTF-8?Q?Cl=C3=A9ment?= Pit--Claudel Newsgroups: gmane.emacs.bugs Subject: bug#21028: Performance regression in revision af1a69f4d17a482c359d98c00ef86fac835b5fac (Apr 2014). Date: Tue, 14 Mar 2017 15:35:01 -0400 Message-ID: <79f4e3ce-6284-8fc5-fd8f-9f0c9cebe873@live.com> References: <559F9FAF.8090708@live.com> <83oa095eaw.fsf@gnu.org> <83lgvd581m.fsf@gnu.org> <83a8br6hq0.fsf@gnu.org> <672a0c69-4352-735f-cba4-025e642626ea@gmail.com> <83vauf50wb.fsf@gnu.org> <7408d59c-92ba-b879-5ac1-3cd5eee9b4db@gmail.com> <83tw9z4zzp.fsf@gnu.org> <2cad0da9-c931-b547-07bb-efec2f2bcf1f@gmail.com> <83h95w0w3p.fsf@gnu.org> <27853273-e6d8-077e-b9e0-b2bec2fe1fae@gmail.com> <834m1v2630.fsf@gnu.org> <1c224dc1-bd71-a910-b7cf-00313e4aec40@live.com> <83efy2cx5n.fsf@gnu.org> <3c3e8384-3412-f5a5-3ab2-a7eb4e699f1c@live.com> <83d1dmcrnl.fsf@gnu.org> <39fe847e-ef8a-149f-4478-d02e7c794c9a@live.com> <837f3tch7y.fsf@gnu.org> <1e7bc066-3f29-3897-5039-de7233efc58a@live.com> <83y3w9ay6y.fsf@gnu.org> <16f9db27-dd0f-ddaf-2f34-45b9fd4e69c6@live.com> <83k27rc15x.fsf@gnu.org> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="PFsJ3pxWdKVq5Un5gwboSXhVQcweHDRE1" X-Trace: blaine.gmane.org 1489520259 8200 195.159.176.226 (14 Mar 2017 19:37:39 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Tue, 14 Mar 2017 19:37:39 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 Cc: 21028@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Tue Mar 14 20:37:34 2017 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cnsG9-0001E1-Gz for geb-bug-gnu-emacs@m.gmane.org; Tue, 14 Mar 2017 20:37:29 +0100 Original-Received: from localhost ([::1]:33195 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cnsGF-0000M5-If for geb-bug-gnu-emacs@m.gmane.org; Tue, 14 Mar 2017 15:37:35 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:60145) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cnsEn-0007mA-Su for bug-gnu-emacs@gnu.org; Tue, 14 Mar 2017 15:36:07 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cnsEk-0006tf-MR for bug-gnu-emacs@gnu.org; Tue, 14 Mar 2017 15:36:05 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:57810) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cnsEk-0006t3-I9 for bug-gnu-emacs@gnu.org; Tue, 14 Mar 2017 15:36:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1cnsEk-0005t5-67 for bug-gnu-emacs@gnu.org; Tue, 14 Mar 2017 15:36:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: =?UTF-8?Q?Cl=C3=A9ment?= Pit--Claudel Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 14 Mar 2017 19:36:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 21028 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 21028-submit@debbugs.gnu.org id=B21028.148952012422588 (code B ref 21028); Tue, 14 Mar 2017 19:36:02 +0000 Original-Received: (at 21028) by debbugs.gnu.org; 14 Mar 2017 19:35:24 +0000 Original-Received: from localhost ([127.0.0.1]:56009 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cnsE8-0005sF-0s for submit@debbugs.gnu.org; Tue, 14 Mar 2017 15:35:24 -0400 Original-Received: from mout.kundenserver.de ([212.227.17.10]:51077) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cnsE5-0005s1-6j for 21028@debbugs.gnu.org; Tue, 14 Mar 2017 15:35:22 -0400 Original-Received: from [18.111.2.57] ([18.111.2.57]) by mrelayeu.kundenserver.de (mreue104 [212.227.15.184]) with ESMTPSA (Nemesis) id 0M1od8-1bvVQ80UHq-00tl9S; Tue, 14 Mar 2017 20:35:14 +0100 In-Reply-To: <83k27rc15x.fsf@gnu.org> X-Provags-ID: V03:K0:/81oscsMHtNAODf+HJ/PgkOiiGWAwlCkNYJyzhCD5FkbD5dFfAg xz9yFha5jDHLU0Ut3bgMWaeHgwSAm/SQiu1PKaB4QYMQTkg+mjXjs7tauNifPL1udvdR6KG xO6k8rfm6oFf1d8v//BKxfvxSCGbRjism5KXmUSDzLFquxrloccbjTNcXNx+/VXJKglJLma /IwEkRcyx05oIPxEjS03g== X-UI-Out-Filterresults: notjunk:1;V01:K0:rAt2IsJcXVQ=:/iYNaabCwF/BxitevzXJPX Boxkcq5vg8vHIuFeVkNvh6+livYfs5FHTLeMfBJjHwRiwNoUD1dIqsrPkQKMmwkv3mgVo8bcs VsiYUszHDZeG6AU2x8nHFivSvruzTjg1PKCnGMo/wofpTbmq4Grq5r855/EmsrhHxYV6uYbre U2qL8o+iWAjP8LP3/MO40cPZzKrZIo7KWhchli0Ahas8njJemvdJs/fkxZLSi19nywYuW31hY 5gRg69W51/vMHlu5YSAw/Sgj7JVavgZzKZGuQ2fPNHC7pNmFjAwdhYRR7aNNmYZSaXwvGTqeI wBwo/B0vPPvBR7WiBJlCXXpZnJ1W4SM/oYBrqUN0BZAeyLa7P8lTE/5LPbspaQ+6qAUAxQGUK BPvr9XEb/PGfIYyNKzOEo0E6M9q9ZbYHsj8JGn7XayJnIBe0eD3cqa9nz/bs5+ztv6gVJrsz9 moptjY31Ff864WDobQzRKBpBeEXQ4tzK1loW2Nw0owXjOQzfN1YqYWWM2w4Fh42Towci0JrFu uTYvbHjA6y2SZPauB4S27v4yK6KaELYgI5uL1X6Nl8rkIqFtUkgXqRymRgnZ/hC0FFTy+EFgu 4iXDjtAIawZnX0q1YEFlJNpc0d2qVk0W/0DH+0rqQsLqFFGpJcFStOjsdoGpCqVXE1ifOGdvw 4t+v9PTk8Ano+IUyXKDsXLdn7hXA3DqXZOBLRbpFccnPSgfZSiJaQwPFF5c0M7hACUSk= X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:130595 Archived-At: This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --PFsJ3pxWdKVq5Un5gwboSXhVQcweHDRE1 Content-Type: multipart/mixed; boundary="GwUg9weT8vEacFNnTtv21xegKpO8OaliT"; protected-headers="v1" From: =?UTF-8?Q?Cl=c3=a9ment_Pit--Claudel?= To: Eli Zaretskii Cc: 21028@debbugs.gnu.org Message-ID: <79f4e3ce-6284-8fc5-fd8f-9f0c9cebe873@live.com> Subject: Re: bug#21028: Performance regression in revision af1a69f4d17a482c359d98c00ef86fac835b5fac (Apr 2014). References: <559F9FAF.8090708@live.com> <831sz0sfug.fsf@gnu.org> <83oa095eaw.fsf@gnu.org> <83lgvd581m.fsf@gnu.org> <83a8br6hq0.fsf@gnu.org> <672a0c69-4352-735f-cba4-025e642626ea@gmail.com> <83vauf50wb.fsf@gnu.org> <7408d59c-92ba-b879-5ac1-3cd5eee9b4db@gmail.com> <83tw9z4zzp.fsf@gnu.org> <2cad0da9-c931-b547-07bb-efec2f2bcf1f@gmail.com> <83h95w0w3p.fsf@gnu.org> <27853273-e6d8-077e-b9e0-b2bec2fe1fae@gmail.com> <834m1v2630.fsf@gnu.org> <1c224dc1-bd71-a910-b7cf-00313e4aec40@live.com> <83efy2cx5n.fsf@gnu.org> <3c3e8384-3412-f5a5-3ab2-a7eb4e699f1c@live.com> <83d1dmcrnl.fsf@gnu.org> <39fe847e-ef8a-149f-4478-d02e7c794c9a@live.com> <837f3tch7y.fsf@gnu.org> <1e7bc066-3f29-3897-5039-de7233efc58a@live.com> <83y3w9ay6y.fsf@gnu.org> <16f9db27-dd0f-ddaf-2f34-45b9fd4e69c6@live.com> <83k27rc15x.fsf@gnu.org> In-Reply-To: <83k27rc15x.fsf@gnu.org> --GwUg9weT8vEacFNnTtv21xegKpO8OaliT Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 2017-03-14 11:45, Eli Zaretskii wrote: > I checked: all the fonts you use as the default -- Noto Sans, Fira=20 > Sans, Ubuntu Mono -- all of them basically support only Latin, > Greek, and Cyrillic blocks, and very little else. By contrast, the > above fontset specification claims that they support the entire > Unicode range of characters, which causes Emacs waste cycles trying > to use these fonts for display of characters they don't support. Is there a way to tell Emacs to use them for everything they support? For= example, Ubuntu Mono supports box-drawing characters (so I could add tha= t range), but it also supports U+2202 "partial diff", U+2206 "Delta", U+2= 211 "summation", and U+222B "integral", and a few other symbols (=E2=89=A0= , =E2=89=A4, =E2=80=A6). > In addition, the font-spec doesn't specify the registry of the > fonts, leaving that to the default, which IME is inadequate. So > please try the following, and see if you get any significant > speedup: I do :) See timings below: # With your patch $ time master/src/emacs -Q --eval "(progn (set-fontset-font \"fontset-def= ault\" 'latin '(\"Noto Sans\" . \"iso10646-1\") nil) (set-fontset-font \"= fontset-default\" 'unicode '(\"Symbola\" . \"iso10646-1\") nil 'append) (= dotimes (_ 5000) (insert (make-string 20 8658) \"\n\")) (goto-char (point= -min)) (sit-for 0) (condition-case nil (while t (scroll-up) (sit-for 0)) = (error nil)) (run-with-idle-timer 0 nil #'kill-emacs))" real 0m0.532s user 0m0.404s sys 0m0.024s # Without your patch $ time 25.1/src/emacs -Q --eval "(progn (set-fontset-font \"fontset-defau= lt\" 'latin '(\"Noto Sans\" . \"iso10646-1\") nil) (set-fontset-font \"fo= ntset-default\" 'unicode '(\"Symbola\" . \"iso10646-1\") nil 'append) (do= times (_ 5000) (insert (make-string 20 8658) \"\n\")) (goto-char (point-m= in)) (sit-for 0) (condition-case nil (while t (scroll-up) (sit-for 0)) (e= rror nil)) (run-with-idle-timer 0 nil #'kill-emacs))" real 0m0.577s user 0m0.392s sys 0m0.020s And more experiments: # With just 'latin (no registry) on stock 25.1: $ time 25.1/src/emacs -Q --eval "(progn (set-fontset-font \"fontset-defau= lt\" 'latin \"Noto Sans\" nil) (set-fontset-font \"fontset-default\" 'uni= code \"Symbola\" nil 'append) (dotimes (_ 5000) (insert (make-string 20 8= 658) \"\n\")) (goto-char (point-min)) (sit-for 0) (condition-case nil (wh= ile t (scroll-up) (sit-for 0)) (error nil)) (run-with-idle-timer 0 nil #'= kill-emacs))" real 0m0.587s user 0m0.416s sys 0m0.012s # With just the registries (and 'unicode instead of 'latin) on stock 25.1= $ time 25.1/src/emacs -Q --eval "(progn (set-fontset-font \"fontset-defau= lt\" 'unicode '(\"Noto Sans\" . \"iso10646-1\") nil) (set-fontset-font \"= fontset-default\" 'unicode '(\"Symbola\" . \"iso10646-1\") nil 'append) (= dotimes (_ 5000) (insert (make-string 20 8658) \"\n\")) (goto-char (point= -min)) (sit-for 0) (condition-case nil (while t (scroll-up) (sit-for 0)) = (error nil)) (run-with-idle-timer 0 nil #'kill-emacs))" real 0m42.250s user 0m22.148s sys 0m6.220s # With 'unicode and inhibit-compacting-font-caches on stock 25.1: $ time 25.1/src/emacs -Q --eval "(progn (setq inhibit-compacting-font-cac= hes t) (set-fontset-font \"fontset-default\" 'unicode '(\"Noto Sans\" . \= "iso10646-1\") nil) (set-fontset-font \"fontset-default\" 'unicode '(\"Sy= mbola\" . \"iso10646-1\") nil 'append) (dotimes (_ 5000) (insert (make-st= ring 20 8658) \"\n\")) (goto-char (point-min)) (sit-for 0) (condition-cas= e nil (while t (scroll-up) (sit-for 0)) (error nil)) (run-with-idle-timer= 0 nil #'kill-emacs))" real 0m42.105s user 0m22.340s sys 0m6.124s > Other than that, I'm sorry to say that I couldn't reproduce any of > the slowdowns you mention in this bug report and in the referenced > issues. In each of the recipes I tried, the slowdown disappears > either if I set inhibit-compacting-font-caches (which you said > doesn't affect your use cases) or if I define the fontset correctly, > like specify a registry for a font or the scripts it really supports. >=20 For me specifying the registry doesn't seem to do anything, but restricti= ng the font to 'latin does. Is that example right though? On my machine= , running the code above gives me an Emacs that uses Ubuntu Mono and Symb= ola, not Noto Sans. I need to use "fontset-startup" for the font to be t= aken into account. To clarify, the following uses Noto Sans and XITS Math, and is very slow:= $ time 25.1/src/emacs -Q --eval "(progn (set-fontset-font \"fontset-start= up\" 'unicode \"Noto Sans\" nil) (set-fontset-font \"fontset-startup\" 'u= nicode \"XITS Math\" nil 'append) (dotimes (_ 5000) (insert (make-string = 20 8658) \"\n\")) (goto-char (point-min)) (sit-for 0) (condition-case nil= (while t (scroll-up) (sit-for 0)) (error nil)) (run-with-idle-timer 0 ni= l #'kill-emacs))" The following uses *Ubuntu Mono* (?!) and XITS Math, and is very slow $ time 25.1/src/emacs -Q --eval "(progn (set-fontset-font \"fontset-defau= lt\" 'unicode \"Noto Sans\" nil) (set-fontset-font \"fontset-default\" 'u= nicode \"XITS Math\" nil 'append) (dotimes (_ 5000) (insert (make-string = 20 8658) \"\n\")) (goto-char (point-min)) (sit-for 0) (condition-case nil= (while t (scroll-up) (sit-for 0)) (error nil)) (run-with-idle-timer 0 ni= l #'kill-emacs))" The following uses Noto Sans and XITS Math, and is very fast: $ time 25.1/src/emacs -Q --eval "(progn (set-fontset-font \"fontset-start= up\" 'latin \"Noto Sans\" nil) (set-fontset-font \"fontset-startup\" 'uni= code \"XITS Math\" nil 'append) (dotimes (_ 5000) (insert (make-string 20= 8658) \"\n\")) (goto-char (point-min)) (sit-for 0) (condition-case nil (= while t (scroll-up) (sit-for 0)) (error nil)) (run-with-idle-timer 0 nil = #'kill-emacs))" I'm a bit confused, though: the restriction to latin still allows Emacs t= o use Noto Sans for characters like "=E2=85=94", "=E2=89=A0", and "=E2=88= =9A"? > It's possible that these factors somehow have a much more significant > effect on your system, I don't know why. Perhaps you have an awful > lot of fonts installed? What does the following yield when > evaluated: >=20 > (length (x-list-fonts "-*-*-*-r-*-*-*-*-*-*-*-*-iso10646-1")) I get 874. > Allow me a few comments on your real-life setup, they could be=20 > relevant even if they don't resolve the slow display with stock > Emacs: > > All of the above specs lack a proper :registry value, which should > be 'iso10646-1. Thanks. > (set-fontset-font fontset 'unicode base-spec nil) >=20 > This should only specify 'latin, 'greek, and 'cyrillic (one such > line for each of them), as 'unicode is a blatant lie. But I want more tha 'latin, 'greek, and 'cyrillic: I want "any character = that this font supports". > (set-fontset-font fontset 'unicode emoji-spec nil 'append) >=20 > It is better o have a definitive list of codepoint ranges here, > since again 'unicode is not what you want. Once you have the ranges, > you can use 'prepend, which will speed up things a bit more, because > Emacs won't need to go through all the fonts you don't want to see. Possibly =E2=80=94 but this will break next time the font is updated with= more Emoji, right? > (set-fontset-font fontset 'unicode fallback-spec nil 'append) >=20 > This you shouldn't need doing, as Symbola is already in the default=20 > fontset, and set up according to the characters where it shines. I used a variant of Symbola, not Symbola itself. > (dolist (cjk-block '((#x3000 . #x303F) (#x3040 . #x309F) (#x30A0 . > #x30FF) (#x3400 . #x4DFF) (#x4E00 . #x9FFF) (#xF900 . #xFAFF)=20 > (#x20000 . #x2A6DF) (#x2A700 . #x2B73F) (#x2B740 . #x2B81F) (#x2B820 > . #x2CEAF) (#x2F800 . #x2FA1F))) (set-fontset-font fontset cjk-block > cjk-spec nil 'append)))) >=20 > This should use 'prepend, not 'append, IMO. Thanks, good point! > One more comment: any reasons why you set this up for all the=20 > fontsets, not just for fontset-default? AFAIU, doing these changes > in all of the fonts might slow down things even more, for no good > reason, because fontset-default is the fallback for all the other > fontsets anyway, so anything you set up in it will be in effect for > any other fontset. I'm not sure I understand. Are you saying that e.g. running the followin= g should show display a *scratch* buffer in Noto Sans? $ 25.1/src/emacs -Q --eval "(set-fontset-font \"fontset-default\" 'latin = \"Noto Sans\" nil)" It doesn't for me. I need to set fontset-startup instead. $ 25.1/src/emacs -Q --eval "(set-fontset-font \"fontset-startup\" 'latin = \"Noto Sans\" nil)" But then I run into trouble when I change the font size (with set-face-at= tribute), because that creates new fontsets. >> The problem gets regularly mentioned elsewhere (when I opened this >> bug I linked to https://github.com/purcell/emacs.d/issues/273 "when >> I first try to input some chinese characters, it's very slow to >> moving [...] especially use C-n, C-p=EF=BC=8C emacs will hang for abou= t 1~2 >> seconds."; >=20 > The slowdown in that example disappears for me once I set=20 > inhibit-compacting-font-caches non-nil. So the factors at work in=20 > that example on my system are somehow different from the factors on=20 > your system (unless you will tell that > inhibit-compacting-font-caches solves the problem for you as well in > that case). For me that example is fast in all configurations: the problem I ran into= with CJK scripts was 2 years ago, and I haven't managed to reproduce it.= > Can you ask some of those people to show their fontset setup? I'd=20 > like to know how different they are from your setup. They essentially use this: (dolist (ft (fontset-list)) (set-fontset-font ft 'unicode (font-spec :name "YOUR-USUAL-FONT")) (set-fontset-font ft 'unicode (font-spec :name "Symbola") nil 'append))= because that's what I recommend (that's the only one that I've found to w= ork reliably: not specifying 'unicode uses Symbola too often, not looping= on the fontsets causes issues when changing font sizes, and not specifyi= ng Symbola sometimes falls back to other fonts). It used to work great i= n Emacs 24.3, which was the default on Ubuntu for a while (and still is f= or the long-term support release) > Btw, I'm still trying to understand the significance of the proposed=20 > patch, although it's hard without a clear-cut test case. Thanks for your help! Cl=C3=A9ment. --GwUg9weT8vEacFNnTtv21xegKpO8OaliT-- --PFsJ3pxWdKVq5Un5gwboSXhVQcweHDRE1 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJYyEXlAAoJEPqg+cTm90wj4MMQAKMLioL5BUtrdyhsFD/ek9UW Ld+4NrArfRRVA72xQiUclDa6aP74JRR7CD65F1qrxcfBPCYuV391bBqeR7h0ziHt S2ESWHwbKAdUscizqX1DmXoriYhNtV7h8vEriN5ag1gri9Dl2+NfvGNx8lMtMnBM 1qVu7nEzLbBrJK0oHuSlS7WkRa+kxFbRr2gcD56Tcuw08el/DGk4aSfjxudr/pGv atzTdcaWcw/IqqtnNWvHUdVW6kczqnBZPOQjILHQny9AO+ygFxfWG/px5hlmmU9M Vw8SR6YHra4aMob7xio27wuZsZUoeJGz061Q4U2yoKKaylPza5bOQD5b/VFM0CQE Cx4IMpnqj8Z7PcDYPbeonpqGzd/z51NYerqBzkspA9LUQYZMfgGYV8/DYDcHNMqg /TVYmOs4+Vhz0v4sReRK1+D0gK0L0KEZLCcUVx5G/1j+QbcZPq+w2thLnURQXMPV WDeD0K8Mv6Em+VuiyfJelaOaBa29yFD6FAz4bAMMS6PeBMdj9Tw59ONUM5coy+Gj VucLYAsJp5ADnWUunbjzu0/AKP0qNq69/wclz798RBQETVwNXL2T4g3chLXkaFil R1KKDwPc+jj0oqusUdgEIAeg0htTjvgLEDRT9FtlynicjRBIIDCAY4QAuw8WoWd5 TPq6gfi+Ay2RiHpWt/0O =tYlW -----END PGP SIGNATURE----- --PFsJ3pxWdKVq5Un5gwboSXhVQcweHDRE1--