From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Kirill Ignatiev Newsgroups: gmane.emacs.bugs Subject: bug#19266: 24.4; Font-related window redrawing delays on OS X Date: Wed, 10 Dec 2014 18:50:01 -0500 Message-ID: References: <83y4qn50ua.fsf@gnu.org> <957C7241-1F90-42A3-83DE-4696B483C1F0@lunaryorn.com> <83ppbz4t3f.fsf@gnu.org> <83fvcrzbku.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001a11c23d286f09ee0509e55185 X-Trace: ger.gmane.org 1418255485 514 80.91.229.3 (10 Dec 2014 23:51:25 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 10 Dec 2014 23:51:25 +0000 (UTC) Cc: Sebastian Wiesner , 19266@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Thu Dec 11 00:51:19 2014 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Xyr2M-0001js-DI for geb-bug-gnu-emacs@m.gmane.org; Thu, 11 Dec 2014 00:51:18 +0100 Original-Received: from localhost ([::1]:48478 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xyr2M-0007TP-2g for geb-bug-gnu-emacs@m.gmane.org; Wed, 10 Dec 2014 18:51:18 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:59936) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xyr2C-0007T6-UI for bug-gnu-emacs@gnu.org; Wed, 10 Dec 2014 18:51:15 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Xyr26-0001sb-Mr for bug-gnu-emacs@gnu.org; Wed, 10 Dec 2014 18:51:08 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:60991) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xyr26-0001sX-JN for bug-gnu-emacs@gnu.org; Wed, 10 Dec 2014 18:51:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1Xyr26-0005RY-CH for bug-gnu-emacs@gnu.org; Wed, 10 Dec 2014 18:51:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Kirill Ignatiev Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 10 Dec 2014 23:51:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 19266 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 19266-submit@debbugs.gnu.org id=B19266.141825541120864 (code B ref 19266); Wed, 10 Dec 2014 23:51:02 +0000 Original-Received: (at 19266) by debbugs.gnu.org; 10 Dec 2014 23:50:11 +0000 Original-Received: from localhost ([127.0.0.1]:42124 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Xyr1F-0005QQ-LW for submit@debbugs.gnu.org; Wed, 10 Dec 2014 18:50:10 -0500 Original-Received: from mail-wi0-f178.google.com ([209.85.212.178]:45674) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Xyr1D-0005QD-Lf for 19266@debbugs.gnu.org; Wed, 10 Dec 2014 18:50:08 -0500 Original-Received: by mail-wi0-f178.google.com with SMTP id em10so6887817wid.11 for <19266@debbugs.gnu.org>; Wed, 10 Dec 2014 15:50:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=KgTsSeL8XiVgR7g7z27E3HIOCw19yuSalxd5C5n1tOE=; b=ca3UEH7+6ewoXihLfnrGcE9LRxv585nDle43RcoPny9trSC9ytqjdUCUdH1ZO5YHLF fLe6UzCI2CYWxvEPXhmBybf/tDMtdX/4AVl/c3WzTjDkGLTWTxDKwHZb/eslcTv3Bjl4 icEI6a9JGo6Wm/6bqKdYuFgnGb59qZNAVYb19TSmxSIPHxfhSBu++3CvsArZEie3TCp5 BwbccB45eGYPsoEKRukijsg/0Q0GoOTgvTMYwCsplzwn+X4bTiqP6qsA9qP+SQAZZu+7 cmF9jZqbzSpfq8djDwtkvhLSFrR5/hmT/C9rKXY3jYG2gjKpnFmrYx1kG/EJv7BT0IpZ yggw== X-Received: by 10.180.12.75 with SMTP id w11mr17766929wib.9.1418255401937; Wed, 10 Dec 2014 15:50:01 -0800 (PST) Original-Received: by 10.27.87.87 with HTTP; Wed, 10 Dec 2014 15:50:01 -0800 (PST) In-Reply-To: <83fvcrzbku.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.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-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:97179 Archived-At: --001a11c23d286f09ee0509e55185 Content-Type: text/plain; charset=UTF-8 Can someone familiar with emacs' font internals check if this makes sense as the cause of the problem, please? I really don't understand how/where fonts are stored/cached/used; I did read font/fontset/macfont/alloc.c, but I'm still unclear. To summarize: My interpretation of what's happening is that when emacs looks at some fonts to see if they contain a certain characters and neither of them does, emacs *does not* cache the fonts. So the next time redisplay happens after those fonts are garbage-collected, emacs has to load the fonts all over again, causing a noticeable redisplay delay. Shouldn't these fonts be cached as well? For testing, how do I turn off font garbage collection, so that no font is ever closed? How do I trigger font garbage collection manually? Is this the right mailing list for this? So now: Apply the attached patch that traces every call to font_driver->{open,close} with printf, *no actual changes*. I tested this on OS X, maybe it's the same on linux. Now consider the following commands, executed in patched emacs with -Q: (set-fontset-font t '(#x1d400 . #x1d7ff) (font-xlfd-name (find-font (font-spec :family "Symbola")))) (progn (insert ?\n) (dotimes (i (- #x1d800 #x1d400)) (insert (+ #x1d400 i))) (insert ?\n)) Here, Symbola is a font that includes uncommon characters #x1d400..#x1d7ff (not all of that range is valid unicode characters), while the font chosen by emacs by default ("Menlo", there's nothing special about it, I think) does not. On a different computer with different fonts, you might need to set some other fonts. For reference, the font specs are (from describe-fontset) -*-Symbola-normal-normal-semicondensed-*-*-*-*-*-p-0-iso10646-1 -*-Menlo-normal-normal-normal-*-*-*-*-*-m-0-fontset-startup This example uses invalid characters (rather than characters missing from Symbola) because Symbola includes a lot of characters, and my previous testing suggested that if I pick a font that actually misses some characters the results are the same, but then I have to try to also figure out which exact characters are missing, which is very font-dependent. Invalid characters are always missing. It seems to be those characters not present in either Symbola or the default font that are causing delays. I run emacs with -Q, and execute those two commands in the scratch buffer. The output is this: font_open_entity: 0x10280fe30 4336959717 0 => 4321797773 font_open_entity: 0x10280fe30 4322249501 12 => 4322240165 font_open_entity: 0x10280fe30 4322249381 12 => 4322313893 compact_font_cache_entry: dropped 2 entries cleanup_vector: drv->close 0x101a026a0 font_open_entity: 0x10280fe30 4346667037 12 => 4346773157 font_open_entity: 0x10280fe30 4321497117 12 => 4322359973 compact_font_cache_entry: dropped 1 entries cleanup_vector: drv->close 0x101a146a0 font_open_entity: 0x10280fe30 4346850893 12 => 4346855205 font_open_entity: 0x10280fe30 4346855581 12 => 4338042813 font_open_entity: 0x10280fe30 4346864757 12 => 4347020349 font_open_entity: 0x10280fe30 4314058597 12 => 4314214573 font_open_entity: 0x10280fe30 4314313573 12 => 4314346005 font_open_entity: 0x10280fe30 4314342253 12 => 4314776629 font_open_entity: 0x10280fe30 4338539877 12 => 4338731989 font_open_entity: 0x10280fe30 4338728301 12 => 4315110181 font_open_entity: 0x10280fe30 4315102573 12 => 4338889725 font_open_entity: 0x10280fe30 4315401573 12 => 4315429429 font_open_entity: 0x10280fe30 4337120613 12 => 4339102261 font_open_entity: 0x10280fe30 4339702117 12 => 4339661005 font_open_entity: 0x10280fe30 4339664797 12 => 4339599381 font_open_entity: 0x10280fe30 4339591533 7 => 4315644109 compact_font_cache_entry: dropped 15 entries The number of font_open_entity seems to correspond to the number of different fonts on my computer matching the default font spec, or something like this. None of them contain missing characters. Now I go to, say, emacs/src/font.c, scroll up and down for a while (I'm not sure how this garbage collection is triggered, I'd rather trigger it manually but I don't know how), and eventually I get this: font_open_entity: 0x10280fe30 4347168317 12 => 4347168797 font_open_entity: 0x10280fe30 4347168557 12 => 4347247269 compact_font_cache_entry: dropped 1 entries cleanup_vector: drv->close 0x1013b80c8 cleanup_vector: drv->close 0x102a9f8c8 cleanup_vector: drv->close 0x102a90810 cleanup_vector: drv->close 0x102a17230 cleanup_vector: drv->close 0x101383a30 cleanup_vector: drv->close 0x1029e33f8 cleanup_vector: drv->close 0x101335b20 cleanup_vector: drv->close 0x1029bcbd0 cleanup_vector: drv->close 0x1012e4430 cleanup_vector: drv->close 0x10127b210 cleanup_vector: drv->close 0x10125b0a8 cleanup_vector: drv->close 0x1029147b8 cleanup_vector: drv->close 0x1031a4438 cleanup_vector: drv->close 0x10317bf20 cleanup_vector: drv->close 0x101a1faa0 cleanup_vector: drv->close 0x103167ea0 This looks (?) like the fonts that don't contain the characters missing from "Symbola" (which are invalid, so they can be expected to be missing) and that emacs looked through, are garbage-collected. Now I go back to the scratch buffer, and see this in the output: font_open_entity: 0x10280fe30 4313918837 12 => 4322005021 font_open_entity: 0x10280fe30 4347261093 12 => 4347020349 font_open_entity: 0x10280fe30 4315110293 12 => 4346845997 font_open_entity: 0x10280fe30 4346846261 12 => 4346946861 font_open_entity: 0x10280fe30 4346947125 12 => 4322621621 font_open_entity: 0x10280fe30 4322621885 12 => 4314086573 font_open_entity: 0x10280fe30 4314086837 12 => 4314116149 font_open_entity: 0x10280fe30 4314111805 12 => 4314181685 font_open_entity: 0x10280fe30 4314181949 12 => 4314333237 font_open_entity: 0x10280fe30 4314000621 12 => 4314399253 font_open_entity: 0x10280fe30 4314399517 12 => 4314468405 font_open_entity: 0x10280fe30 4314465117 12 => 4314653901 font_open_entity: 0x10280fe30 4314649741 12 => 4314723381 font_open_entity: 0x10280fe30 4314715909 7 => 4314724005 compact_font_cache_entry: dropped 14 entries The redisplay to go back to the scratch buffer takes a fair amount of time (several seconds), and it looks like the fonts that don't contain missing characters are loaded again, examined, and they still don't contain those characters. The rest of the session looks like this, where I did some editing. font_open_entity: 0x10280fe30 4314826397 12 => 4314833973 font_open_entity: 0x10280fe30 4314822261 12 => 4338334365 compact_font_cache_entry: dropped 1 entries cleanup_vector: drv->close 0x1012d7430 cleanup_vector: drv->close 0x1012d76a0 cleanup_vector: drv->close 0x1012c64c8 cleanup_vector: drv->close 0x101299030 cleanup_vector: drv->close 0x101288210 cleanup_vector: drv->close 0x101278030 cleanup_vector: drv->close 0x101253030 cleanup_vector: drv->close 0x101243030 cleanup_vector: drv->close 0x10123bca8 cleanup_vector: drv->close 0x101a5f8b0 cleanup_vector: drv->close 0x103192528 cleanup_vector: drv->close 0x1031dbaa0 cleanup_vector: drv->close 0x1031c8818 cleanup_vector: drv->close 0x1031a4438 cleanup_vector: drv->close 0x103179b28 cleanup_vector: drv->close 0x1019c9018 font_open_entity: 0x10280fe30 4338666765 12 => 4338670133 compact_font_cache_entry: dropped 1 entries cleanup_vector: drv->close 0x10295ba98 cleanup_vector: drv->close 0x1012f2430 font_open_entity: 0x10280fe30 4338678941 14 => 4338683037 font_open_entity: 0x10280fe30 4338691229 12 => 4338695325 font_open_entity: 0x10280fe30 4338691349 12 => 4338715805 font_open_entity: 0x10280fe30 4338687245 10 => 4338471477 font_open_entity: 0x10280fe30 4338740325 12 => 4338744093 font_open_entity: 0x10280fe30 4338687245 7 => 4314561589 font_open_entity: 0x10280fe30 4338687365 12 => 4314566357 compact_font_cache_entry: dropped 3 entries --001a11c23d286f09ee0509e55185 Content-Type: text/plain; charset=US-ASCII; name="bugreport2_patch.txt" Content-Disposition: attachment; filename="bugreport2_patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i3jck9vh0 ZGlmZiAtLWdpdCBhL3NyYy9hbGxvYy5jIGIvc3JjL2FsbG9jLmMKaW5kZXggMTAxOWMyYS4uMmMw MWZiOCAxMDA2NDQKLS0tIGEvc3JjL2FsbG9jLmMKKysrIGIvc3JjL2FsbG9jLmMKQEAgLTI5OTYs NiArMjk5Niw3IEBAIGNsZWFudXBfdmVjdG9yIChzdHJ1Y3QgTGlzcF9WZWN0b3IgKnZlY3RvcikK IAkgIC8qIEF0dGVtcHQgdG8gY2F0Y2ggc3VidGxlIGJ1Z3MgbGlrZSBCdWcjMTYxNDAuICAqLwog CSAgZWFzc2VydCAodmFsaWRfZm9udF9kcml2ZXIgKGRydikpOwogCSAgZHJ2LT5jbG9zZSAoKHN0 cnVjdCBmb250ICopIHZlY3Rvcik7CisJICBmcHJpbnRmKHN0ZGVyciwgImNsZWFudXBfdmVjdG9y OiBkcnYtPmNsb3NlICVwXG4iLCAoc3RydWN0IGZvbnQgKikgdmVjdG9yKTsKIAl9CiAgICAgfQog fQpAQCAtNTQzOCw2ICs1NDM5LDcgQEAgc3RhdGljIExpc3BfT2JqZWN0CiBjb21wYWN0X2ZvbnRf Y2FjaGVfZW50cnkgKExpc3BfT2JqZWN0IGVudHJ5KQogewogICBMaXNwX09iamVjdCB0YWlsLCAq cHJldiA9ICZlbnRyeTsKKyAgaW50IGNvdW50X2Ryb3BwZWQgPSAwOwogCiAgIGZvciAodGFpbCA9 IGVudHJ5OyBDT05TUCAodGFpbCk7IHRhaWwgPSBYQ0RSICh0YWlsKSkKICAgICB7CkBAIC01NDYx LDExICs1NDYzLDEzIEBAIGNvbXBhY3RfZm9udF9jYWNoZV9lbnRyeSAoTGlzcF9PYmplY3QgZW50 cnkpCiAJICBpZiAoaSA9PSBzaXplKQogCSAgICBkcm9wID0gMTsKIAl9CisgICAgICBjb3VudF9k cm9wcGVkICs9IGRyb3A7CiAgICAgICBpZiAoZHJvcCkKIAkqcHJldiA9IFhDRFIgKHRhaWwpOwog ICAgICAgZWxzZQogCXByZXYgPSB4Y2RyX2FkZHIgKHRhaWwpOwogICAgIH0KKyAgaWYgKGNvdW50 X2Ryb3BwZWQpIGZwcmludGYoc3RkZXJyLCAiY29tcGFjdF9mb250X2NhY2hlX2VudHJ5OiBkcm9w cGVkICVkIGVudHJpZXNcbiIsIGNvdW50X2Ryb3BwZWQpOwogICByZXR1cm4gZW50cnk7CiB9CiAK ZGlmZiAtLWdpdCBhL3NyYy9mb250LmMgYi9zcmMvZm9udC5jCmluZGV4IDcwZTYzMTYuLjdmODNh Y2MgMTAwNjQ0Ci0tLSBhL3NyYy9mb250LmMKKysrIGIvc3JjL2ZvbnQuYwpAQCAtMjY2Myw2ICsy NjYzLDcgQEAgZm9udF9jbGVhcl9jYWNoZSAoc3RydWN0IGZyYW1lICpmLCBMaXNwX09iamVjdCBj YWNoZSwgc3RydWN0IGZvbnRfZHJpdmVyICpkcml2ZXIKIAkJCXsKIAkJCSAgZWFzc2VydCAoZm9u dCAmJiBkcml2ZXIgPT0gZm9udC0+ZHJpdmVyKTsKIAkJCSAgZHJpdmVyLT5jbG9zZSAoZm9udCk7 CisJCQkgIGZwcmludGYoc3RkZXJyLCAiZm9udF9jbGVhcl9jYWNoZTogZHJpdmVyLT5jbG9zZSAl cFxuIiwgZm9udCk7CiAJCQl9CiAJCSAgICB9CiAJCSAgaWYgKGRyaXZlci0+ZnJlZV9lbnRpdHkp CkBAIC0yOTUxLDYgKzI5NTIsNyBAQCBmb250X29wZW5fZW50aXR5IChzdHJ1Y3QgZnJhbWUgKmYs IExpc3BfT2JqZWN0IGVudGl0eSwgaW50IHBpeGVsX3NpemUpCiAgICAgfQogI2VuZGlmCiAKKyAg ZnByaW50ZihzdGRlcnIsICJmb250X29wZW5fZW50aXR5OiAlcCAlbGQgJWQgPT4gJWxkXG4iLCBm LCBlbnRpdHksIHBpeGVsX3NpemUsIGZvbnRfb2JqZWN0KTsKICAgcmV0dXJuIGZvbnRfb2JqZWN0 OwogfQogCkBAIC0yOTcxLDYgKzI5NzMsOCBAQCBmb250X2Nsb3NlX29iamVjdCAoc3RydWN0IGZy YW1lICpmLCBMaXNwX09iamVjdCBmb250X29iamVjdCkKICAgZWFzc2VydCAoRlJBTUVfRElTUExB WV9JTkZPIChmKS0+bl9mb250cyk7CiAgIEZSQU1FX0RJU1BMQVlfSU5GTyAoZiktPm5fZm9udHMt LTsKICNlbmRpZgorCisgIGZwcmludGYoc3RkZXJyLCAiZm9udF9jbG9zZV9vYmplY3Q6ICVwICVs ZFxuIiwgZiwgZm9udF9vYmplY3QpOwogfQogCiAKZGlmZiAtLWdpdCBhL3NyYy9tYWNmb250Lm0g Yi9zcmMvbWFjZm9udC5tCmluZGV4IDcwNTQ4MzkuLjkxMDQzNTIgMTAwNjQ0Ci0tLSBhL3NyYy9t YWNmb250Lm0KKysrIGIvc3JjL21hY2ZvbnQubQpAQCAtMjQ0MCw4ICsyNDQwLDEwIEBAIG1hY2Zv bnRfb3BlbiAoc3RydWN0IGZyYW1lICogZiwgTGlzcF9PYmplY3QgZW50aXR5LCBpbnQgcGl4ZWxf c2l6ZSkKICAgdmFsID0gYXNzcV9ub19xdWl0IChRQ2ZvbnRfZW50aXR5LCBBUkVGIChlbnRpdHks IEZPTlRfRVhUUkFfSU5ERVgpKTsKICAgaWYgKCEgQ09OU1AgKHZhbCkKICAgICAgIHx8IFhUWVBF IChYQ0RSICh2YWwpKSAhPSBMaXNwX01pc2MKLSAgICAgIHx8IFhNSVNDVFlQRSAoWENEUiAodmFs KSkgIT0gTGlzcF9NaXNjX1NhdmVfVmFsdWUpCisgICAgICB8fCBYTUlTQ1RZUEUgKFhDRFIgKHZh bCkpICE9IExpc3BfTWlzY19TYXZlX1ZhbHVlKSB7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJt YWNmb250X29wZW46ICVwLCAlbGQsICVkID0+ICVsZFxuIiwgZiwgZW50aXR5LCBwaXhlbF9zaXpl LCBRbmlsKTsKICAgICByZXR1cm4gUW5pbDsKKyAgfQogICBmb250X25hbWUgPSBYU0FWRV9QT0lO VEVSIChYQ0RSICh2YWwpLCAwKTsKICAgc3ltX3RyYWl0cyA9IFhTQVZFX0lOVEVHRVIgKFhDRFIg KHZhbCksIDEpOwogCkBAIC0yNDU3LDggKzI0NTksMTAgQEAgbWFjZm9udF9vcGVuIChzdHJ1Y3Qg ZnJhbWUgKiBmLCBMaXNwX09iamVjdCBlbnRpdHksIGludCBwaXhlbF9zaXplKQogICAgICAgaWYg KGZvbnRzaXplICE9IHNpemUpIHNpemUgPSBmb250c2l6ZTsKICAgICB9CiAgIHVuYmxvY2tfaW5w dXQgKCk7Ci0gIGlmICghIG1hY2ZvbnQpCisgIGlmICghIG1hY2ZvbnQpIHsKKyAgICAvLyBmcHJp bnRmKHN0ZGVyciwgIm1hY2ZvbnRfb3BlbjogJXAsICVsZCwgJWQgPT4gJWxkXG4iLCBmLCBlbnRp dHksIHBpeGVsX3NpemUsIFFuaWwpOwogICAgIHJldHVybiBRbmlsOworICB9CiAKICAgZm9udF9v YmplY3QgPSBmb250X2J1aWxkX29iamVjdCAoVkVDU0laRSAoc3RydWN0IG1hY2ZvbnRfaW5mbyks CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFtYWNfY3QsIGVudGl0eSwgc2l6 ZSk7CkBAIC0yNTgwLDYgKzI1ODQsNyBAQCBtYWNmb250X29wZW4gKHN0cnVjdCBmcmFtZSAqIGYs IExpc3BfT2JqZWN0IGVudGl0eSwgaW50IHBpeGVsX3NpemUpCiAgIGZvbnQtPmRlZmF1bHRfYXNj ZW50ID0gMDsKICAgZm9udC0+dmVydGljYWxfY2VudGVyaW5nID0gMDsKIAorICAvLyBmcHJpbnRm KHN0ZGVyciwgIm1hY2ZvbnRfb3BlbjogJXAsICVsZCwgJWQgPT4gJWxkXG4iLCBmLCBlbnRpdHks IHBpeGVsX3NpemUsIFFuaWwpOwogICByZXR1cm4gZm9udF9vYmplY3Q7CiB9CiAKQEAgLTI1ODgs NiArMjU5Myw4IEBAIG1hY2ZvbnRfY2xvc2UgKHN0cnVjdCBmb250ICpmb250KQogewogICBzdHJ1 Y3QgbWFjZm9udF9pbmZvICptYWNmb250X2luZm8gPSAoc3RydWN0IG1hY2ZvbnRfaW5mbyAqKSBm b250OwogCisgIC8vIGZwcmludGYoc3RkZXJyLCAibWFjZm9udF9jbG9zZTogJXBcbiIsIGZvbnQp OworCiAgIGlmIChtYWNmb250X2luZm8tPmNhY2hlKQogICAgIHsKICAgICAgIGludCBpOwo= --001a11c23d286f09ee0509e55185--