From unknown Tue Jun 17 20:19:38 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#56560 <56560@debbugs.gnu.org> To: bug#56560 <56560@debbugs.gnu.org> Subject: Status: [PATCH] Delete fast-lock.el and lazy-lock.el Reply-To: bug#56560 <56560@debbugs.gnu.org> Date: Wed, 18 Jun 2025 03:19:38 +0000 retitle 56560 [PATCH] Delete fast-lock.el and lazy-lock.el reassign 56560 emacs submitter 56560 Stefan Kangas severity 56560 wishlist tag 56560 patch thanks From debbugs-submit-bounces@debbugs.gnu.org Thu Jul 14 14:45:56 2022 Received: (at submit) by debbugs.gnu.org; 14 Jul 2022 18:45:56 +0000 Received: from localhost ([127.0.0.1]:38872 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oC3qW-0002JG-EN for submit@debbugs.gnu.org; Thu, 14 Jul 2022 14:45:56 -0400 Received: from lists.gnu.org ([209.51.188.17]:37616) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oC3qV-0002J8-Fh for submit@debbugs.gnu.org; Thu, 14 Jul 2022 14:45:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40712) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oC3qV-0003ES-8v for bug-gnu-emacs@gnu.org; Thu, 14 Jul 2022 14:45:55 -0400 Received: from mail-pf1-f172.google.com ([209.85.210.172]:35800) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oC3qQ-0005uQ-4a for bug-gnu-emacs@gnu.org; Thu, 14 Jul 2022 14:45:54 -0400 Received: by mail-pf1-f172.google.com with SMTP id x184so2649965pfx.2 for ; Thu, 14 Jul 2022 11:45:49 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:mime-version:date:message-id:subject:to; bh=61CGvDroslUmXOFmQxPID0mY8cimMeSJW+Ew70tCDqo=; b=XkTsWNokgNsE7+IyUyFPGPbURwjTUxvJwuNJOKZddqS6rOzkVDUkMfL9eieqXxvG1h NzEcpTpEjnBktlB+QL5ZIGEK4KM8+HtbmUrmyI/etfE4/uCH2G8yZorlkPmQP2OJQwVr bczKWqMBWAS26wk9+eCgYC3dejb1z1OTIfVibXQX+9k+48gZrgiYPVzKsRthsBGwHBdf STlPzvfxA348Ve78ghW8mjP/ZXy/PMTtVWT0pEmtKwFyXeNo30tMB7JtalNbCnp319tf nom+lXOznye/aTzs4Qr7cfIeI6nbJKwmwPmUPkLAddblcxKqETxN7fLzbR/F+Ra3KWM3 /7rQ== X-Gm-Message-State: AJIora8+8tEkM4W3NQbnsoGza34nLKItpr8Opyrc5DMqT1h9oY8xU/a+ ROREWFLEPVSVG9foxLIvLFriw+npXsSdajUWPqD8zMMy X-Google-Smtp-Source: AGRyM1sIbUdfZNarXsaj485/Qcy2QE8dFgpEWFn9/6Lzchu+tNu7AN6gIE7/nz+U29B5pMnoLp0atee3fASWvj2EWkc= X-Received: by 2002:a05:6a00:b4d:b0:52a:f2cf:b0e4 with SMTP id p13-20020a056a000b4d00b0052af2cfb0e4mr9910815pfo.2.1657824348766; Thu, 14 Jul 2022 11:45:48 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Thu, 14 Jul 2022 11:45:47 -0700 From: Stefan Kangas X-Debbugs-CC: Stefan Monnier MIME-Version: 1.0 Date: Thu, 14 Jul 2022 11:45:47 -0700 Message-ID: Subject: [PATCH] Delete fast-lock.el and lazy-lock.el To: bug-gnu-emacs@gnu.org Content-Type: multipart/mixed; boundary="00000000000068b7eb05e3c84fda" Received-SPF: pass client-ip=209.85.210.172; envelope-from=stefankangas@gmail.com; helo=mail-pf1-f172.google.com X-Spam_score_int: -13 X-Spam_score: -1.4 X-Spam_bar: - X-Spam_report: (-1.4 / 5.0 requ) BAYES_00=-1.9, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.249, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action 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" --00000000000068b7eb05e3c84fda Content-Type: text/plain; charset="UTF-8" Severity: wishlist I guess it's high time to retire lazy-lock.el and fast-lock.el, obsolete since Emacs 22.1. The last time we discussed this, I proposed to obsolete the variable 'font-lock-support-mode'. It turns out that it is still useful for debugging, so the discussion got side-tracked and nothing came of it. In a new attempt, I submit here a new patch where this variable is turned into a defvar instead, so that it can still be used for debugging. Hopefully, this should be more palatable. --00000000000068b7eb05e3c84fda Content-Type: text/x-diff; charset="utf-8"; name="0001-Delete-fast-lock.el-and-lazy-lock.el.patch" Content-Disposition: attachment; filename="0001-Delete-fast-lock.el-and-lazy-lock.el.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: 2eb90ba385aee1d6_0.1 RnJvbSA2ZTczYWZlZDM0NzhiMDE4ZjU3Zjg1NjgxZDdhMTM3NzM4NTMyNzEyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGVmYW4gS2FuZ2FzIDxzdGVmYW5AbWFyeGlzdC5zZT4KRGF0 ZTogVGh1LCAxNCBKdWwgMjAyMiAyMDoyNzowMyArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIERlbGV0 ZSBmYXN0LWxvY2suZWwgYW5kIGxhenktbG9jay5lbAoKVGhlICdmb250LWxvY2stc3VwcG9ydC1t b2RlJyBpcyBvY2Nhc2lvbmFsbHkgdXNlZnVsIGZvciBkZWJ1Z2dpbmcKcHVycG9zZXMsIHNvIGl0 IHJlbWFpbnMgYXMgYSBkZWZ2YXIuClJlZjogaHR0cHM6Ly9saXN0cy5nbnUub3JnL3IvZW1hY3Mt ZGV2ZWwvMjAyMC0wOC9tc2cwMDEyNS5odG1sCgoqIGxpc3Avb2Jzb2xldGUvZmFzdC1sb2NrLmVs OgoqIGxpc3Avb2Jzb2xldGUvbGF6eS1sb2NrLmVsOiBEZWxldGUgbGlicmFyaWVzIG9ic29sZXRl IHNpbmNlIDIyLjEuCgoqIGxpc3AvZm9udC1sb2NrLmVsIChmb250LWxvY2stc3VwcG9ydC1tb2Rl KTogTWFrZSBpbnRvIGEgZGVmdmFyIGFuZApkZWxldGUgYW55IG1lbnRpb24gb2YgJ2xhenktbG9j ay1tb2RlJyBhbmQgJ2Zhc3QtbG9jay1tb2RlJy4KKGZvbnQtbG9jay10dXJuLW9uLXRoaW5nLWxv Y2ssIGZvbnQtbG9jay10dXJuLW9mZi10aGluZy1sb2NrKToKRHJvcCBzdXBwb3J0IGZvciBvYnNv bGV0ZSBtb2RlcyBsYXp5LWxvY2sgYW5kIGZhc3QtbG9jay4KKGZvbnQtbG9jay1hZnRlci1mb250 aWZ5LWJ1ZmZlcikKKGZvbnQtbG9jay1hZnRlci11bmZvbnRpZnktYnVmZmVyKTogTWFrZSBpbnRv IG9ic29sZXRlIGZ1bmN0aW9uCmFsaWFzZXMgZm9yICdpZ25vcmUnLiAgQWRqdXN0IGNhbGxlcnMu Cihmb250LWxvY2sta2V5d29yZHMsIGZvbnQtbG9jay1pbmhpYml0LXRoaW5nLWxvY2spOiBBZGp1 c3QKZG9jdW1lbnRhdGlvbiB0byBub3QgbWVudGlvbiBsYXp5LWxvY2sgYW5kIGZhc3QtbG9jay4K KiBsaXNwL2ZvbnQtY29yZS5lbCAoZm9udC1sb2NrLWRlZmF1bHRzKTogQWRqdXN0IGRvY3VtZW50 YXRpb24gdG8Kbm90IG1lbnRpb24gJ2ZvbnQtbG9jay1pbmhpYml0LXRoaW5nLWxvY2snLgoqIGxp c3AvbWFpbC9ybWFpbC5lbCAocm1haWwtdmFyaWFibGVzKTogRG9uJ3QgaW5oaWJpdCBvYnNvbGV0 ZQpsYXp5LWxvY2stbW9kZSBhbmQgZmFzdC1sb2NrLW1vZGUuCi0tLQogZXRjL05FV1MgICAgICAg ICAgICAgICAgICAgfCAgICA4ICsKIGxpc3AvZm9udC1jb3JlLmVsICAgICAgICAgIHwgICAgMiAr LQogbGlzcC9mb250LWxvY2suZWwgICAgICAgICAgfCAgMTAzICstLS0KIGxpc3AvbWFpbC9ybWFp bC5lbCAgICAgICAgIHwgICAgMyArLQogbGlzcC9vYnNvbGV0ZS9mYXN0LWxvY2suZWwgfCAgNzMw IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGxpc3Avb2Jzb2xldGUvbGF6eS1sb2NrLmVsIHwg MTAyNSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDYgZmlsZXMgY2hhbmdl ZCwgMjIgaW5zZXJ0aW9ucygrKSwgMTg0OSBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0 NCBsaXNwL29ic29sZXRlL2Zhc3QtbG9jay5lbAogZGVsZXRlIG1vZGUgMTAwNjQ0IGxpc3Avb2Jz b2xldGUvbGF6eS1sb2NrLmVsCgpkaWZmIC0tZ2l0IGEvZXRjL05FV1MgYi9ldGMvTkVXUwppbmRl eCA1Nzg0NWRmOTc5Li5lYmVhOWVmMjQ4IDEwMDY0NAotLS0gYS9ldGMvTkVXUworKysgYi9ldGMv TkVXUwpAQCAtMzI1LDYgKzMyNSwxNCBAQCBzdGFydHVwLiAgUHJldmlvdXNseSwgdGhlc2UgZnVu Y3Rpb25zIGlnbm9yZWQKICoqIFRoZSBybG9naW4uZWwgbGlicmFyeSBhbmQgJ3JzaCcgY29tbWFu ZCBhcmUgbm93IG9ic29sZXRlLgogVXNlIHNvbWV0aGluZyBsaWtlICdNLXggc2hlbGwgUkVUIHNz aCA8aG9zdD4gUkVUJyBpbnN0ZWFkLgogCistLS0KKyoqIFRoZSBmYXN0LWxvY2suZWwgYW5kIGxh enktbG9jay5lbCBsaWJyYXJ5IGhhdmUgYmVlbiByZW1vdmVkLgorVGhleSBoYXZlIGJlZW4gb2Jz b2xldGUgc2luY2UgRW1hY3MgMjIuMS4KKworVGhlIHZhcmlhYmxlICdmb250LWxvY2stc3VwcG9y dC1tb2RlJyBpcyBvY2Nhc2lvbmFsbHkgdXNlZnVsIGZvcgorZGVidWdnaW5nIHB1cnBvc2VzLiAg SXQgaXMgbm93IGEgcmVndWxhciB2YXJpYWJsZSAoaW5zdGVhZCBvZiBhIHVzZXIKK29wdGlvbikg YW5kIGNhbiBiZSBzZXQgdG8gbmlsIHRvIGRpc2FibGUgSnVzdC1pbi10aW1lIExvY2sgbW9kZS4K KwogDAogKiBDaGFuZ2VzIGluIEVtYWNzIDI5LjEKIApkaWZmIC0tZ2l0IGEvbGlzcC9mb250LWNv cmUuZWwgYi9saXNwL2ZvbnQtY29yZS5lbAppbmRleCBmOTJkMWUzODMwLi5mNzBjNDJiYjAzIDEw MDY0NAotLS0gYS9saXNwL2ZvbnQtY29yZS5lbAorKysgYi9saXNwL2ZvbnQtY29yZS5lbApAQCAt NjUsNyArNjUsNyBAQCBmb250LWxvY2stZGVmYXVsdHMKIGBmb250LWxvY2stc3ludGFjdGljLWtl eXdvcmRzJyBhbmQgdGhvc2UgZm9yIGJ1ZmZlci1zcGVjaWFsaXplZCBmb250aWZpY2F0aW9uCiBm dW5jdGlvbnMsIGBmb250LWxvY2stZm9udGlmeS1idWZmZXItZnVuY3Rpb24nLAogYGZvbnQtbG9j ay11bmZvbnRpZnktYnVmZmVyLWZ1bmN0aW9uJywgYGZvbnQtbG9jay1mb250aWZ5LXJlZ2lvbi1m dW5jdGlvbicsCi1gZm9udC1sb2NrLXVuZm9udGlmeS1yZWdpb24tZnVuY3Rpb24nLCBhbmQgYGZv bnQtbG9jay1pbmhpYml0LXRoaW5nLWxvY2snLiIpCitgZm9udC1sb2NrLXVuZm9udGlmeS1yZWdp b24tZnVuY3Rpb24nLiIpCiA7OyBBdXRvbG9hZCBpZiB0aGlzIGZpbGUgbm8gbG9uZ2VyIGR1bXBl ZC4KIDs7OyMjI2F1dG9sb2FkCiAocHV0ICdmb250LWxvY2stZGVmYXVsdHMgJ3Jpc2t5LWxvY2Fs LXZhcmlhYmxlIHQpCmRpZmYgLS1naXQgYS9saXNwL2ZvbnQtbG9jay5lbCBiL2xpc3AvZm9udC1s b2NrLmVsCmluZGV4IDE4MWE3ZGM5MGUuLjA5ZTQ2ZWY0MjQgMTAwNjQ0Ci0tLSBhL2xpc3AvZm9u dC1sb2NrLmVsCisrKyBiL2xpc3AvZm9udC1sb2NrLmVsCkBAIC00OTAsOCArNDkwLDcgQEAgZm9u dC1sb2NrLWtleXdvcmRzCiBUaGVzZSByZWd1bGFyIGV4cHJlc3Npb25zIGNhbiBtYXRjaCB0ZXh0 IHdoaWNoIHNwYW5zIGxpbmVzLAogYWx0aG91Z2ggaXQgaXMgYmV0dGVyIHRvIGF2b2lkIGl0IGlm IHBvc3NpYmxlIHNpbmNlIHVwZGF0aW5nIHRoZW0KIHdoaWxlIGVkaXRpbmcgdGV4dCBpcyBzbG93 ZXIsIGFuZCBpdCBpcyBub3QgZ3VhcmFudGVlZCB0byBiZQotYWx3YXlzIGNvcnJlY3Qgd2hlbiB1 c2luZyBzdXBwb3J0IG1vZGVzIGxpa2Ugaml0LWxvY2sgb3IKLWxhenktbG9jay4KK2Fsd2F5cyBj b3JyZWN0LgogCiBUaGlzIHZhcmlhYmxlIGlzIHNldCBieSBtYWpvciBtb2RlcyB2aWEgdGhlIHZh cmlhYmxlCiBgZm9udC1sb2NrLWRlZmF1bHRzJy4gIEJlIGNhcmVmdWwgd2hlbiBjb21wb3Npbmcg cmVnZXhwcyBmb3IgdGhpcwpAQCAtNjIzLDExICs2MjIsOCBAQCBmb250LWxvY2stdW5mb250aWZ5 LXJlZ2lvbi1mdW5jdGlvbgogSXQgc2hvdWxkIHRha2UgdHdvIGFyZ3MsIHRoZSBiZWdpbm5pbmcg YW5kIGVuZCBvZiB0aGUgcmVnaW9uLgogVGhpcyBpcyBub3JtYWxseSBzZXQgdmlhIGBmb250LWxv Y2stZGVmYXVsdHMnLiIpCiAKLShkZWZ2YXIgZm9udC1sb2NrLWluaGliaXQtdGhpbmctbG9jayBu aWwKLSAgIkxpc3Qgb2YgRm9udCBMb2NrIG1vZGUgcmVsYXRlZCBtb2RlcyB0aGF0IHNob3VsZCBu b3QgYmUgdHVybmVkIG9uLgotQ3VycmVudGx5LCB2YWxpZCBtb2RlIG5hbWVzIGFyZSBgZmFzdC1s b2NrLW1vZGUnLCBgaml0LWxvY2stbW9kZScgYW5kCi1gbGF6eS1sb2NrLW1vZGUnLiAgVGhpcyBp cyBub3JtYWxseSBzZXQgdmlhIGBmb250LWxvY2stZGVmYXVsdHMnLiIpCi0obWFrZS1vYnNvbGV0 ZS12YXJpYWJsZSAnZm9udC1sb2NrLWluaGliaXQtdGhpbmctbG9jayBuaWwgIjI1LjEiKQorKGRl ZnZhciBmb250LWxvY2staW5oaWJpdC10aGluZy1sb2NrIG5pbCkKKyhtYWtlLW9ic29sZXRlLXZh cmlhYmxlICdmb250LWxvY2staW5oaWJpdC10aGluZy1sb2NrICJpdCBkb2VzIG5vdGhpbmcuIiAi MjUuMSIpCiAKIChkZWZ2YXItbG9jYWwgZm9udC1sb2NrLW11bHRpbGluZSBuaWwKICAgIldoZXRo ZXIgZm9udC1sb2NrIHNob3VsZCBjYXRlciB0byBtdWx0aWxpbmUga2V5d29yZHMuCkBAIC02NDIs NyArNjM4LDYgQEAgZm9udC1sb2NrLWZvbnRpZmllZAogCiAoZXZhbC13aGVuLWNvbXBpbGUKICAg OzsKLSAgOzsgQm9ycm93ZWQgZnJvbSBsYXp5LWxvY2suZWwuCiAgIDs7IFdlIHVzZSB0aGlzIHRv IHByZXNlcnZlIG9yIHByb3RlY3QgdGhpbmdzIHdoZW4gbW9kaWZ5aW5nIHRleHQgcHJvcGVydGll cy4KICAgKGRlZm1hY3JvIHNhdmUtYnVmZmVyLXN0YXRlICgmcmVzdCBib2R5KQogICAgICJCaW5k IHZhcmlhYmxlcyBhY2NvcmRpbmcgdG8gVkFSTElTVCBhbmQgZXZhbCBCT0RZIHJlc3RvcmluZyBi dWZmZXIgc3RhdGUuIgpAQCAtODgxLDY1ICs4NzYsMTcgQEAgZm9udC1sb2NrLXJlbW92ZS1rZXl3 b3JkcwogDAogOzs7IEZvbnQgTG9jayBTdXBwb3J0IG1vZGUuCiAKLTs7IFRoaXMgaXMgdGhlIGNv ZGUgdXNlZCB0byBpbnRlcmZhY2UgZm9udC1sb2NrLmVsIHdpdGggYW55IG9mIGl0cyBhZGQtb24K LTs7IHBhY2thZ2VzLCBhbmQgcHJvdmlkZSB0aGUgdXNlciBpbnRlcmZhY2UuICBQYWNrYWdlcyB0 aGF0IGhhdmUgdGhlaXIgb3duCi07OyBsb2NhbCBidWZmZXIgZm9udGlmaWNhdGlvbiBmdW5jdGlv bnMgKHNlZSBiZWxvdykgbWF5IGhhdmUgdG8gY2FsbAotOzsgYGZvbnQtbG9jay1hZnRlci1mb250 aWZ5LWJ1ZmZlcicgYW5kL29yIGBmb250LWxvY2stYWZ0ZXItdW5mb250aWZ5LWJ1ZmZlcicKLTs7 IHRoZW1zZWx2ZXMuCi0KLShkZWZjdXN0b20gZm9udC1sb2NrLXN1cHBvcnQtbW9kZSAnaml0LWxv Y2stbW9kZQorKGRlZnZhciBmb250LWxvY2stc3VwcG9ydC1tb2RlICMnaml0LWxvY2stbW9kZQog ICAiU3VwcG9ydCBtb2RlIGZvciBGb250IExvY2sgbW9kZS4KLVN1cHBvcnQgbW9kZXMgc3BlZWQg dXAgRm9udCBMb2NrIG1vZGUgYnkgYmVpbmcgY2hvb3N5IGFib3V0IHdoZW4gZm9udGlmaWNhdGlv bgotb2NjdXJzLiAgVGhlIGRlZmF1bHQgc3VwcG9ydCBtb2RlLCBKdXN0LWluLXRpbWUgTG9jayBt b2RlIChzeW1ib2wKLWBqaXQtbG9jay1tb2RlJyksIGlzIHJlY29tbWVuZGVkLgotCi1PdGhlciwg b2xkZXIgc3VwcG9ydCBtb2RlcyBhcmUgRmFzdCBMb2NrIG1vZGUgKHN5bWJvbCBgZmFzdC1sb2Nr LW1vZGUnKSBhbmQKLUxhenkgTG9jayBtb2RlIChzeW1ib2wgYGxhenktbG9jay1tb2RlJykuICBT ZWUgdGhvc2UgbW9kZXMgZm9yIG1vcmUgaW5mby4KLUhvd2V2ZXIsIHRoZXkgYXJlIG5vIGxvbmdl ciByZWNvbW1lbmRlZCwgYXMgSnVzdC1pbi10aW1lIExvY2sgbW9kZSBpcyBiZXR0ZXIuCi0KIElm IG5pbCwgbWVhbnMgc3VwcG9ydCBmb3IgRm9udCBMb2NrIG1vZGUgaXMgbmV2ZXIgcGVyZm9ybWVk LgotSWYgYSBzeW1ib2wsIHVzZSB0aGF0IHN1cHBvcnQgbW9kZS4KLUlmIGEgbGlzdCwgZWFjaCBl bGVtZW50IHNob3VsZCBiZSBvZiB0aGUgZm9ybSAoTUFKT1ItTU9ERSAuIFNVUFBPUlQtTU9ERSks Ci13aGVyZSBNQUpPUi1NT0RFIGlzIGEgc3ltYm9sIG9yIHQgKG1lYW5pbmcgdGhlIGRlZmF1bHQp LiAgRm9yIGV4YW1wbGU6Ci0gKChjLW1vZGUgLiBmYXN0LWxvY2stbW9kZSkgKGMrKy1tb2RlIC4g ZmFzdC1sb2NrLW1vZGUpICh0IC4gbGF6eS1sb2NrLW1vZGUpKQotbWVhbnMgdGhhdCBGYXN0IExv Y2sgbW9kZSBpcyB1c2VkIHRvIHN1cHBvcnQgRm9udCBMb2NrIG1vZGUgZm9yIGJ1ZmZlcnMgaW4g QyBvcgotQysrIG1vZGVzLCBhbmQgTGF6eSBMb2NrIG1vZGUgaXMgdXNlZCB0byBzdXBwb3J0IEZv bnQgTG9jayBtb2RlIG90aGVyd2lzZS4KLQotVGhlIHZhbHVlIG9mIHRoaXMgdmFyaWFibGUgaXMg dXNlZCB3aGVuIEZvbnQgTG9jayBtb2RlIGlzIHR1cm5lZCBvbi4iCi0gIDp0eXBlICcoY2hvaWNl IChjb25zdCA6dGFnICJub25lIiBuaWwpCi0JCSAoY29uc3QgOnRhZyAiZmFzdCBsb2NrIiBmYXN0 LWxvY2stbW9kZSkKLQkJIChjb25zdCA6dGFnICJsYXp5IGxvY2siIGxhenktbG9jay1tb2RlKQot CQkgKGNvbnN0IDp0YWcgImppdCBsb2NrIiBqaXQtbG9jay1tb2RlKQotCQkgKHJlcGVhdCA6bWVu dS10YWcgIm1vZGUgc3BlY2lmaWMiIDp0YWcgIm1vZGUgc3BlY2lmaWMiCi0JCQkgOnZhbHVlICgo dCAuIGppdC1sb2NrLW1vZGUpKQotCQkJIChjb25zIDp0YWcgIkluc3RhbmNlIgotCQkJICAgICAg IChyYWRpbyA6dGFnICJNb2RlIgotCQkJCSAgICAgIChjb25zdCA6dGFnICJhbGwiIHQpCi0JCQkJ ICAgICAgKHN5bWJvbCA6dGFnICJuYW1lIikpCi0JCQkgICAgICAgKHJhZGlvIDp0YWcgIlN1cHBv cnQiCi0JCQkJICAgICAgKGNvbnN0IDp0YWcgIm5vbmUiIG5pbCkKLQkJCQkgICAgICAoY29uc3Qg OnRhZyAiZmFzdCBsb2NrIiBmYXN0LWxvY2stbW9kZSkKLQkJCQkgICAgICAoY29uc3QgOnRhZyAi bGF6eSBsb2NrIiBsYXp5LWxvY2stbW9kZSkKLQkJCQkgICAgICAoY29uc3QgOnRhZyAiSklUIGxv Y2siIGppdC1sb2NrLW1vZGUpKSkKLQkJCSApKQotICA6dmVyc2lvbiAiMjEuMSIKLSAgOmdyb3Vw ICdmb250LWxvY2spCitUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIGRlYnVnZ2luZy4KIAotKGRlZnZh ciBmYXN0LWxvY2stbW9kZSkKLShkZWZ2YXIgbGF6eS1sb2NrLW1vZGUpCi0oZGVmdmFyIGppdC1s b2NrLW1vZGUpCitUaGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZSBpcyB1c2VkIHdoZW4gRm9udCBM b2NrIG1vZGUgaXMgdHVybmVkIG9uLiIpCiAKLShkZWNsYXJlLWZ1bmN0aW9uIGZhc3QtbG9jay1h ZnRlci1mb250aWZ5LWJ1ZmZlciAiZmFzdC1sb2NrIikKLShkZWNsYXJlLWZ1bmN0aW9uIGZhc3Qt bG9jay1hZnRlci11bmZvbnRpZnktYnVmZmVyICJmYXN0LWxvY2siKQotKGRlY2xhcmUtZnVuY3Rp b24gZmFzdC1sb2NrLW1vZGUgImZhc3QtbG9jayIpCi0oZGVjbGFyZS1mdW5jdGlvbiBsYXp5LWxv Y2stYWZ0ZXItZm9udGlmeS1idWZmZXIgImxhenktbG9jayIpCi0oZGVjbGFyZS1mdW5jdGlvbiBs YXp5LWxvY2stYWZ0ZXItdW5mb250aWZ5LWJ1ZmZlciAibGF6eS1sb2NrIikKLShkZWNsYXJlLWZ1 bmN0aW9uIGxhenktbG9jay1tb2RlICJsYXp5LWxvY2siKQorKGRlZnZhciBqaXQtbG9jay1tb2Rl KQogCiAoZGVmdW4gZm9udC1sb2NrLXR1cm4tb24tdGhpbmctbG9jayAoKQogICAocGNhc2UgKGZv bnQtbG9jay12YWx1ZS1pbi1tYWpvci1tb2RlIGZvbnQtbG9jay1zdXBwb3J0LW1vZGUpCi0gICAg KCdmYXN0LWxvY2stbW9kZSAoZmFzdC1sb2NrLW1vZGUgdCkpCi0gICAgKCdsYXp5LWxvY2stbW9k ZSAobGF6eS1sb2NrLW1vZGUgdCkpCiAgICAgKCdqaXQtbG9jay1tb2RlCiAgICAgIDs7IFByZXBh cmUgZm9yIGppdC1sb2NrCiAgICAgIChyZW1vdmUtaG9vayAnYWZ0ZXItY2hhbmdlLWZ1bmN0aW9u cwpAQCAtOTYyLDM3ICs5MDksMTMgQEAgZm9udC1sb2NrLXR1cm4tb24tdGhpbmctbG9jawogICAg ICAgICAgICAgICAgbmlsIHQpKSkpCiAKIChkZWZ1biBmb250LWxvY2stdHVybi1vZmYtdGhpbmct bG9jayAoKQotICAoY29uZCAoKGJvdW5kLWFuZC10cnVlLXAgZmFzdC1sb2NrLW1vZGUpCi0JIChm YXN0LWxvY2stbW9kZSAtMSkpCi0JKChib3VuZC1hbmQtdHJ1ZS1wIGppdC1sb2NrLW1vZGUpCisg IChjb25kICgoYm91bmQtYW5kLXRydWUtcCBqaXQtbG9jay1tb2RlKQogCSAoaml0LWxvY2stdW5y ZWdpc3RlciAnZm9udC1sb2NrLWZvbnRpZnktcmVnaW9uKQogCSA7OyBSZXNldCBsb2NhbCB2YXJz IHRvIHRoZSBub24taml0LWxvY2sgY2FzZS4KLQkgKGtpbGwtbG9jYWwtdmFyaWFibGUgJ2ZvbnQt bG9jay1mb250aWZ5LWJ1ZmZlci1mdW5jdGlvbikpCi0JKChib3VuZC1hbmQtdHJ1ZS1wIGxhenkt bG9jay1tb2RlKQotCSAobGF6eS1sb2NrLW1vZGUgLTEpKSkpCi0KLShkZWZ1biBmb250LWxvY2st YWZ0ZXItZm9udGlmeS1idWZmZXIgKCkKLSAgKGNvbmQgKChib3VuZC1hbmQtdHJ1ZS1wIGZhc3Qt bG9jay1tb2RlKQotCSAoZmFzdC1sb2NrLWFmdGVyLWZvbnRpZnktYnVmZmVyKSkKLQk7OyBVc2Vs ZXNzIG5vdyB0aGF0IGppdC1sb2NrIGludGVyY2VwdHMgZm9udC1sb2NrLWZvbnRpZnktYnVmZmVy LiAgLXNtCi0JOzsgKGppdC1sb2NrLW1vZGUKLQk7OyAgKGppdC1sb2NrLWFmdGVyLWZvbnRpZnkt YnVmZmVyKSkKLQkoKGJvdW5kLWFuZC10cnVlLXAgbGF6eS1sb2NrLW1vZGUpCi0JIChsYXp5LWxv Y2stYWZ0ZXItZm9udGlmeS1idWZmZXIpKSkpCi0KLShkZWZ1biBmb250LWxvY2stYWZ0ZXItdW5m b250aWZ5LWJ1ZmZlciAoKQotICAoY29uZCAoKGJvdW5kLWFuZC10cnVlLXAgZmFzdC1sb2NrLW1v ZGUpCi0JIChmYXN0LWxvY2stYWZ0ZXItdW5mb250aWZ5LWJ1ZmZlcikpCi0JOzsgVXNlbGVzcyBh cyB3ZWxsLiAgSXQncyBvbmx5IGNhbGxlZCB3aGVuOgotCTs7IC0gdHVybmluZyBvZmYgZm9udC1s b2NrOiBpdCBkb2VzIG5vdCBtYXR0ZXIgaWYgd2UgbGVhdmUgc3B1cmlvdXMKLQk7OyAgIGBmb250 aWZpZWQnIHRleHQgcHJvcHMgYXJvdW5kIHNpbmNlIGppdC1sb2NrLW1vZGUgaXMgYWxzbyBvZmYu Ci0JOzsgLSBmb250LWxvY2stZGVmYXVsdC1mb250aWZ5LWJ1ZmZlciBmYWlsczogdGhpcyBpcyBu b3QgcnVuCi0JOzsgICBhbnkgbW9yZSBhbnl3YXkuICAgLXNtCi0JOzsKLQk7OyAoaml0LWxvY2st bW9kZQotCTs7ICAoaml0LWxvY2stYWZ0ZXItdW5mb250aWZ5LWJ1ZmZlcikpCi0JKChib3VuZC1h bmQtdHJ1ZS1wIGxhenktbG9jay1tb2RlKQotCSAobGF6eS1sb2NrLWFmdGVyLXVuZm9udGlmeS1i dWZmZXIpKSkpCisgICAgICAgICAoa2lsbC1sb2NhbC12YXJpYWJsZSAnZm9udC1sb2NrLWZvbnRp ZnktYnVmZmVyLWZ1bmN0aW9uKSkpKQorCisoZGVmaW5lLW9ic29sZXRlLWZ1bmN0aW9uLWFsaWFz ICdmb250LWxvY2stYWZ0ZXItZm9udGlmeS1idWZmZXIgIydpZ25vcmUgIjI5LjEiKQorKGRlZmlu ZS1vYnNvbGV0ZS1mdW5jdGlvbi1hbGlhcyAnZm9udC1sb2NrLWFmdGVyLXVuZm9udGlmeS1idWZm ZXIgIydpZ25vcmUgIjI5LjEiKQogCiA7OyBFbmQgb2YgRm9udCBMb2NrIFN1cHBvcnQgbW9kZS4K IAwKQEAgLTExNjAsNyArMTA4Myw2IEBAIGZvbnQtbG9jay1kZWZhdWx0LWZvbnRpZnktYnVmZmVy CiAJICAgIChzYXZlLWV4Y3Vyc2lvbgogCSAgICAgIChzYXZlLW1hdGNoLWRhdGEKIAkJKGZvbnQt bG9jay1mb250aWZ5LXJlZ2lvbiAocG9pbnQtbWluKSAocG9pbnQtbWF4KSB2ZXJib3NlKQotCQko Zm9udC1sb2NrLWFmdGVyLWZvbnRpZnktYnVmZmVyKQogCQkoc2V0cSBmb250LWxvY2stZm9udGlm aWVkIHQpKSkKIAkgIDs7IFdlIGRvbid0IHJlc3RvcmUgdGhlIG9sZCBmb250aWZpY2F0aW9uLCBz byBpdCdzIGJlc3QgdG8gdW5mb250aWZ5LgogCSAgKHF1aXQgKGZvbnQtbG9jay11bmZvbnRpZnkt YnVmZmVyKSkpKSkpKQpAQCAtMTE3MSw3ICsxMDkzLDYgQEAgZm9udC1sb2NrLWRlZmF1bHQtdW5m b250aWZ5LWJ1ZmZlcgogICAoc2F2ZS1yZXN0cmljdGlvbgogICAgICh3aWRlbikKICAgICAoZm9u dC1sb2NrLXVuZm9udGlmeS1yZWdpb24gKHBvaW50LW1pbikgKHBvaW50LW1heCkpCi0gICAgKGZv bnQtbG9jay1hZnRlci11bmZvbnRpZnktYnVmZmVyKQogICAgIChzZXRxIGZvbnQtbG9jay1mb250 aWZpZWQgbmlsKSkpCiAKIChkZWZ2YXIgZm9udC1sb2NrLWRvbnQtd2lkZW4gbmlsCmRpZmYgLS1n aXQgYS9saXNwL21haWwvcm1haWwuZWwgYi9saXNwL21haWwvcm1haWwuZWwKaW5kZXggNzFlZGE3 Y2QyYi4uNGJmZWMyMmIzYSAxMDA2NDQKLS0tIGEvbGlzcC9tYWlsL3JtYWlsLmVsCisrKyBiL2xp c3AvbWFpbC9ybWFpbC5lbApAQCAtMTQ1MSw4ICsxNDUxLDcgQEAgcm1haWwtdmFyaWFibGVzCiAg IChzZXRxLWxvY2FsIGZvbnQtbG9jay1kZWZhdWx0cwogICAgICAgICAgICAgICAnKHJtYWlsLWZv bnQtbG9jay1rZXl3b3JkcwogICAgICAgICAgICAgICAgIHQgdCBuaWwgbmlsCi0gICAgICAgICAg ICAgICAgKGZvbnQtbG9jay1kb250LXdpZGVuIC4gdCkKLSAgICAgICAgICAgICAgICAoZm9udC1s b2NrLWluaGliaXQtdGhpbmctbG9jayAuIChsYXp5LWxvY2stbW9kZSBmYXN0LWxvY2stbW9kZSkp KSkKKyAgICAgICAgICAgICAgICAoZm9udC1sb2NrLWRvbnQtd2lkZW4gLiB0KSkpCiAgIChzZXRx LWxvY2FsIHJlcXVpcmUtZmluYWwtbmV3bGluZSBuaWwpCiAgIChzZXRxLWxvY2FsIHZlcnNpb24t Y29udHJvbCAnbmV2ZXIpCiAgIChhZGQtaG9vayAna2lsbC1idWZmZXItaG9vayAjJ3JtYWlsLW1v ZGUta2lsbC1zdW1tYXJ5IG5pbCB0KQpkaWZmIC0tZ2l0IGEvbGlzcC9vYnNvbGV0ZS9mYXN0LWxv Y2suZWwgYi9saXNwL29ic29sZXRlL2Zhc3QtbG9jay5lbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMTYxNDkzNWYwMy4uMDAwMDAwMDAwMAotLS0gYS9saXNwL29ic29sZXRlL2Zhc3Qt bG9jay5lbAorKysgL2Rldi9udWxsCkBAIC0xLDczMCArMCwwIEBACi07OzsgZmFzdC1sb2NrLmVs IC0tLSBhdXRvbWFnaWMgdGV4dCBwcm9wZXJ0aWVzIGNhY2hpbmcgZm9yIGZhc3QgRm9udCBMb2Nr IG1vZGUgIC0qLSBsZXhpY2FsLWJpbmRpbmc6IHQ7IC0qLQotCi07OyBDb3B5cmlnaHQgKEMpIDE5 OTQtMTk5OCwgMjAwMS0yMDIyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotCi07OyBB dXRob3I6IFNpbW9uIE1hcnNoYWxsIDxzaW1vbkBnbnUub3JnPgotOzsgTWFpbnRhaW5lcjogZW1h Y3MtZGV2ZWxAZ251Lm9yZwotOzsgS2V5d29yZHM6IGZhY2VzIGZpbGVzCi07OyBWZXJzaW9uOiAz LjE0Ci07OyBPYnNvbGV0ZS1zaW5jZTogMjIuMQotCi07OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBH TlUgRW1hY3MuCi0KLTs7IEdOVSBFbWFjcyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci07OyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotOzsgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLTs7 IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLTs7IEdOVSBFbWFjcyBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotOzsgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK LTs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKLTs7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu Ci0KLTs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCi07OyBhbG9uZyB3aXRoIEdOVSBFbWFjcy4gIElmIG5vdCwgc2VlIDxo dHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0KLTs7OyBDb21tZW50YXJ5OgotCi07OyBG YXN0IExvY2sgbW9kZSBpcyBhIEZvbnQgTG9jayBzdXBwb3J0IG1vZGUuCi07OyBJdCBtYWtlcyB2 aXNpdGluZyBhIGZpbGUgaW4gRm9udCBMb2NrIG1vZGUgZmFzdGVyIGJ5IHJlc3RvcmluZyBpdHMg ZmFjZSB0ZXh0Ci07OyBwcm9wZXJ0aWVzIGZyb20gYXV0b21hdGljYWxseSBzYXZlZCBhc3NvY2lh dGVkIEZvbnQgTG9jayBjYWNoZSBmaWxlcy4KLTs7Ci07OyBTZWUgY2F2ZWF0cyBhbmQgZmVlZGJh Y2sgYmVsb3cuCi07OyBTZWUgYWxzbyB0aGUgbGF6eS1sb2NrIHBhY2thZ2UuICAoQnV0IGRvbid0 IHVzZSB0aGUgdHdvIGF0IHRoZSBzYW1lIHRpbWUhKQotCi07OyBJbnN0YWxsYXRpb246Ci07Owot OzsgUHV0IGluIHlvdXIgfi8uZW1hY3M6Ci07OwotOzsgKHNldHEgZm9udC1sb2NrLXN1cHBvcnQt bW9kZSAnZmFzdC1sb2NrLW1vZGUpCi07OwotOzsgU3RhcnQgdXAgYSBuZXcgRW1hY3MgYW5kIHVz ZSBmb250LWxvY2sgYXMgdXN1YWwgKGV4Y2VwdCB0aGF0IHlvdSBjYW4gdXNlIHRoZQotOzsgc28t Y2FsbGVkICJnYXVkaWVyIiBmb250aWZpY2F0aW9uIHJlZ2V4cHMgb24gYmlnIGZpbGVzIHdpdGhv dXQgZnJ1c3RyYXRpb24pLgotOzsKLTs7IFdoZW4geW91IHZpc2l0IGEgZmlsZSAod2hpY2ggaGFz IGBmb250LWxvY2stbW9kZScgZW5hYmxlZCkgdGhhdCBoYXMgYQotOzsgY29ycmVzcG9uZGluZyBG b250IExvY2sgY2FjaGUgZmlsZSBhc3NvY2lhdGVkIHdpdGggaXQsIHRoZSBGb250IExvY2sgY2Fj aGUKLTs7IHdpbGwgYmUgbG9hZGVkIGZyb20gdGhhdCBmaWxlIGluc3RlYWQgb2YgYmVpbmcgZ2Vu ZXJhdGVkIGJ5IEZvbnQgTG9jayBjb2RlLgotCi07OyBDYXZlYXRzOgotOzsKLTs7IEEgY2FjaGUg d2lsbCBiZSBzYXZlZCB3aGVuIHZpc2l0aW5nIGEgY29tcHJlc3NlZCBmaWxlIHVzaW5nIGNyeXB0 KyssIGJ1dCBub3QKLTs7IGJlIHJlYWQuICBUaGlzIGlzIGEgImZlYXR1cmUiLyJjb25zZXF1ZW5j ZSIvImJ1ZyIgb2YgY3J5cHQrKy4KLTs7Ci07OyBWZXJzaW9uIGNvbnRyb2wgcGFja2FnZXMgYXJl IGxpa2VseSB0byBzdGFtcCBhbGwgb3ZlciBmaWxlIG1vZGlmaWNhdGlvbgotOzsgdGltZXMuICBU aGVyZWZvcmUgdGhlIGFjdCBvZiBjaGVja2luZyBvdXQgbWF5IGludmFsaWRhdGUgYSBjYWNoZS4K LQwKLTs7IEhpc3Rvcnk6Ci07OwotOzsgMC4wMi0tMS4wMDoKLTs7IC0gQ2hhbmdlZCBuYW1lIGZy b20gdHVyYm8tcHJvcCB0byBmYXN0LWxvY2suICBBdXRvbWFnaWMgZm9yIGZvbnQtbG9jayBvbmx5 Ci07OyAtIE1hZGUgYGZhc3QtbG9jay1tb2RlJyBhIG1pbm9yIG1vZGUsIGxpa2UgRy4gRGluZXNo IER1dHQncyBmc3MtbW9kZQotOzsgMS4wMC0tMS4wMToKLTs7IC0gVHVybiBvbiBgZmFzdC1sb2Nr LW1vZGUnIG9ubHkgaWYgYGJ1ZmZlci1maWxlLW5hbWUnIG9yIGBpbnRlcmFjdGl2ZS1wJwotOzsg LSBNYWRlIGBmYXN0LWxvY2stZmlsZS1uYW1lJyB1c2UgYGJ1ZmZlci1uYW1lJyBpZiBgYnVmZmVy LWZpbGUtbmFtZScgaXMgbmlsCi07OyAtIE1vdmVkIHNhdmUtYWxsIGNvbmRpdGlvbnMgdG8gYGZh c3QtbG9jay1zYXZlLWNhY2hlJwotOzsgLSBBZGRlZCBgZmFzdC1sb2NrLXNhdmUtdGV4dC1wcm9w ZXJ0aWVzJyB0byBga2lsbC1idWZmZXItaG9vaycKLTs7IDEuMDEtLTIuMDA6IGNvbXBsZXRlIHJl d3JpdGUtLS1ub3Qgd29ydGggdGhlIHNwYWNlIHRvIGRvY3VtZW50Ci07OyAtIENoYW5nZWQgc3Ry dWN0dXJlIG9mIHRleHQgcHJvcGVydGllcyBjYWNoZSBhbmQgdGhyZXcgb3V0IGZpbGUgbW9kIGNo ZWNrcwotOzsgMi4wMC0tMi4wMToKLTs7IC0gTWFkZSBgY29uZGl0aW9uLWNhc2UnIGZvcm1zIHVu ZGVyc3RhbmQgYHF1aXQnLgotOzsgLSBNYWRlIGBmYXN0LWxvY2snIHJlcXVpcmUgYGZvbnQtbG9j aycKLTs7IC0gTWFkZSBgZmFzdC1sb2NrLWNhY2hlLW5hbWUnIGNoYXNlIGxpbmtzIChmcm9tIEJl biBMaWJsaXQpCi07OyAyLjAxLS0zLjAwOgotOzsgLSBDaGFuZ2VkIHN0cnVjdHVyZSBvZiBjYWNo ZSB0byBpbmNsdWRlIGBmb250LWxvY2sta2V5d29yZHMnIChmcm9tIHJtcykKLTs7IC0gQ2hhbmdl ZCBgZmFzdC1sb2NrLWNhY2hlLW1lY2hhbmlzbXMnIHRvIGBmYXN0LWxvY2stY2FjaGUtZGlyZWN0 b3JpZXMnCi07OyAtIFJlbW92ZWQgYGZhc3QtbG9jay1yZWFkLW90aGVycycKLTs7IC0gTWFkZSBg ZmFzdC1sb2NrLXJlYWQtY2FjaGUnIGlnbm9yZSBjYWNoZSBvd25lcgotOzsgLSBNYWRlIGBmYXN0 LWxvY2stc2F2ZS1jYWNoZS1leHRlcm5hbCcgY3JlYXRlIGNhY2hlIGRpcmVjdG9yeQotOzsgLSBN YWRlIGBmYXN0LWxvY2stc2F2ZS1jYWNoZS1leHRlcm5hbCcgc2F2ZSBgZm9udC1sb2NrLWtleXdv cmRzJwotOzsgLSBNYWRlIGBmYXN0LWxvY2stY2FjaGUtZGF0YScgY2hlY2sgYGZvbnQtbG9jay1r ZXl3b3JkcycKLTs7IDMuMDAtLTMuMDE6IGluY29ycG9yYXRlZCBwb3J0IG9mIDIuMDAgdG8gTHVj aWQsIG1hZGUgYnkgQmFycnkgV2Fyc2F3Ci07OyAtIFBhY2thZ2Ugbm93IHByb3ZpZGVzIGl0c2Vs ZgotOzsgLSBMdWNpZDogVXNlIGBmb250LWxvY2stYW55LWV4dGVudHMtcCcgZm9yIGBmb250LWxv Y2stYW55LXByb3BlcnRpZXMtcCcKLTs7IC0gTHVjaWQ6IFVzZSBgbGlzdC1mYWNlcycgZm9yIGBm YWNlLWxpc3QnCi07OyAtIEx1Y2lkOiBBZGRlZCBgc2V0LXRleHQtcHJvcGVydGllcycKLTs7IC0g THVjaWQ6IE1hZGUgYHR1cm4tb24tZmFzdC1sb2NrJyBwYXNzIDEgbm90IHQgdG8gYGZhc3QtbG9j ay1tb2RlJwotOzsgLSBSZW1vdmVkIHRlc3QgZm9yIGBmYXN0LWxvY2stbW9kZScgZnJvbSBgZmFz dC1sb2NrLXJlYWQtY2FjaGUnCi07OyAtIEx1Y2lkOiBBZGRlZCBMdWNpZC1zcGVjaWZpYyBgZmFz dC1sb2NrLWdldC1mYWNlLXByb3BlcnRpZXMnCi07OyAzLjAxLS0zLjAyOiBub3cgd29ya3Mgd2l0 aCBMdWNpZCBFbWFjcywgdGhhbmtzIHRvIEJhcnJ5IFdhcnNhdwotOzsgLSBNYWRlIGBmYXN0LWxv Y2stY2FjaGUtbmFtZScgbWFwICI6IiB0byAiOyIgZm9yIE9TLzIgKGZyb20gU2VyZ2Fub3ZhIFZl cmEpCi07OyAtIE1hZGUgYGZhc3QtbG9jay1jYWNoZS1uYW1lJyB1c2UgYWJicmV2aWF0ZWQgZmls ZSBuYW1lIChmcm9tIEJhcnJ5IFdhcnNhdykKLTs7IC0gTHVjaWQ6IFNlcGFyYXRlZCBoYW5kbGVy cyBmb3IgYGVycm9yJyBhbmQgYHF1aXQnIGZvciBgY29uZGl0aW9uLWNhc2UnCi07OyAzLjAyLS0z LjAzOgotOzsgLSBDaGFuZ2VkIGBmYXN0LWxvY2stc2F2ZS1jYWNoZS1leHRlcm5hbCcgdG8gYGZh c3QtbG9jay1zYXZlLWNhY2hlLWRhdGEnCi07OyAtIEx1Y2lkOiBBZGRlZCBMdWNpZC1zcGVjaWZp YyBgZmFzdC1sb2NrLXNldC1mYWNlLXByb3BlcnRpZXMnCi07OyAzLjAzLS0zLjA0OgotOzsgLSBD b3JyZWN0ZWQgYHN1YnJwJyB0ZXN0IG9mIEx1Y2lkIGNvZGUKLTs7IC0gUmVwbGFjZWQgYGZvbnQt bG9jay1hbnktcHJvcGVydGllcy1wJyB3aXRoIGB0ZXh0LXByb3BlcnR5LW5vdC1hbGwnCi07OyAt IEx1Y2lkOiBNYWRlIGBmYXN0LWxvY2stc2V0LWZhY2UtcHJvcGVydGllcycgcHV0IGB0ZXh0LXBy b3AnIG9uIGV4dGVudHMKLTs7IC0gTWFkZSBgZmFzdC1sb2NrLWNhY2hlLWRpcmVjdG9yaWVzJyBh IHJlZ2V4cCBhbGlzdCAoZnJvbSBDb2xpbiBSYWZmZXJ0eSkKLTs7IC0gTWFkZSBgZmFzdC1sb2Nr LWNhY2hlLWRpcmVjdG9yeScgdG8gcmV0dXJuIGEgdXNhYmxlIGNhY2hlIGZpbGUgZGlyZWN0b3J5 Ci07OyAzLjA0LS0zLjA1OgotOzsgLSBMdWNpZDogRml4IGZvciBYRW1hY3MgMTkuMTEgYHRleHQt cHJvcGVydHktbm90LWFsbCcKLTs7IC0gUmVwbGFjZWQgYHN1YnJwJyB0ZXN0IG9mIEx1Y2lkIGNv ZGUgd2l0aCBgZW1hY3MtdmVyc2lvbicgYHN0cmluZy1tYXRjaCcKLTs7IC0gTWFkZSBgYnl0ZS1j b21waWxlLXdhcm5pbmdzJyBvbWl0IGB1bnJlc29sdmVkJyBvbiBjb21waWxhdGlvbgotOzsgLSBN YWRlIGBmYXN0LWxvY2stc2F2ZS1jYWNoZS1kYXRhJyB1c2UgYSBidWZmZXIgKGZyb20gUmljayBT bGFka2V5KQotOzsgLSBSZXZlcnRlZCB0byBvbGQgYGZhc3QtbG9jay1nZXQtZmFjZS1wcm9wZXJ0 aWVzJyAoZnJvbSBSaWNrIFNsYWRrZXkpCi07OyAzLjA1LS0zLjA2OiBpbmNvcnBvcmF0ZWQgaGFj ayBvZiAzLjAzLCBtYWRlIGJ5IEpvbmF0aGFuIFN0aWdlbG1hbiAoU3RpZykKLTs7IC0gUmV2ZXJ0 ZWQgdG8gMy4wNCB2ZXJzaW9uIG9mIGBmYXN0LWxvY2stZ2V0LWZhY2UtcHJvcGVydGllcycKLTs7 IC0gWEVtYWNzOiBSZW1vdmVkIGBsaXN0LWZhY2VzJyBgZGVmYWxpYXMnCi07OyAtIE1hZGUgYGZh c3QtbG9jay1tb2RlJyBhbmQgYHR1cm4tb24tZmFzdC1sb2NrJyBzdWNjZWVkIGBhdXRvbG9hZCcg Y29va2llcwotOzsgLSBBZGRlZCBgZmFzdC1sb2NrLXN1Ym1pdC1idWctcmVwb3J0JwotOzsgLSBS ZW5hbWVkIGBmYXN0LWxvY2stc2F2ZS1zaXplJyB0byBgZmFzdC1sb2NrLW1pbmltdW0tc2l6ZScK LTs7IC0gTWFkZSBgZmFzdC1sb2NrLXNhdmUtY2FjaGUnIG91dHB1dCBhIG1lc3NhZ2UgaWYgbm8g c2F2ZSBldmVyIGF0dGVtcHRlZAotOzsgLSBNYWRlIGBmYXN0LWxvY2stc2F2ZS1jYWNoZS1kYXRh JyBvdXRwdXQgYSBtZXNzYWdlIGlmIHNhdmUgYXR0ZW1wdGVkCi07OyAtIE1hZGUgYGZhc3QtbG9j ay1jYWNoZS1kYXRhJyBvdXRwdXQgYSBtZXNzYWdlIGlmIGxvYWQgYXR0ZW1wdGVkCi07OyAtIE1h ZGUgYGZhc3QtbG9jay1zYXZlLWNhY2hlLWRhdGEnIGRvIGBjb25kaXRpb24tY2FzZScgbm90IGB1 bndpbmQtcHJvdGVjdCcKLTs7IC0gTWFkZSBgZmFzdC1sb2NrLXNhdmUtY2FjaGUnIGFuZCBgZmFz dC1sb2NrLXJlYWQtY2FjaGUnIHJldHVybiBub3RoaW5nCi07OyAtIE1hZGUgYGZhc3QtbG9jay1z YXZlLWNhY2hlJyBjaGVjayBgYnVmZmVyLW1vZGlmaWVkLXAnIChTdGlnKQotOzsgLSBBZGRlZCBg ZmFzdC1sb2NrLXNhdmUtZXZlbnRzJwotOzsgLSBBZGRlZCBgZmFzdC1sb2NrLWFmdGVyLXNhdmUt aG9vaycgdG8gYGFmdGVyLXNhdmUtaG9vaycgKFN0aWcpCi07OyAtIEFkZGVkIGBmYXN0LWxvY2st a2lsbC1idWZmZXItaG9vaycgdG8gYGtpbGwtYnVmZmVyLWhvb2snCi07OyAtIENoYW5nZWQgYGZh c3QtbG9jay1zYXZlLWNhY2hlcycgdG8gYGZhc3QtbG9jay1raWxsLWVtYWNzLWhvb2snCi07OyAt IEFkZGVkIGBmYXN0LWxvY2sta2lsbC1lbWFjcy1ob29rJyB0byBga2lsbC1lbWFjcy1ob29rJwot OzsgLSBNYWRlIGBmYXN0LWxvY2stc2F2ZS1jYWNoZScgY2hlY2sgYHZlcmlmeS12aXNpdGVkLWZp bGUtbW9kdGltZScgKFN0aWcpCi07OyAtIE1hZGUgYHZpc2l0ZWQtZmlsZS1tb2R0aW1lJyBiZSB0 aGUgYmFzaXMgb2YgdGhlIHRpbWVzdGFtcCAoU3RpZykKLTs7IC0gTWFkZSBgZmFzdC1sb2NrLXNh dmUtY2FjaGUtMScgYW5kIGBmYXN0LWxvY2stY2FjaGUtZGF0YScgdXNlL3JlZm9ybWF0IGl0Ci07 OyAtIEFkZGVkIGBmYXN0LWxvY2stY2FjaGUtZmlsZW5hbWUnIHRvIGtlZXAgdHJhY2sgb2YgdGhl IGNhY2hlIGZpbGUgbmFtZQotOzsgLSBBZGRlZCBgZmFzdC1sb2NrLWFmdGVyLWZvbnRpZnktYnVm ZmVyJwotOzsgLSBBZGRlZCBgZmFzdC1sb2NrLXNhdmUtZmFjZXMnIGxpc3Qgb2YgZmFjZXMgdG8g c2F2ZSAoaWRlYSBmcm9tIFN0aWcvVGlib3IpCi07OyAtIE1hZGUgYGZhc3QtbG9jay1nZXQtZmFj ZS1wcm9wZXJ0aWVzJyBmdW5jdGlvbnMgdXNlIGl0Ci07OyAtIFhFbWFjczogTWFkZSBgZmFzdC1s b2NrLXNldC1mYWNlLXByb3BlcnRpZXMnIGRvIGV4dGVudHMgdGhlIEZvbnQgTG9jayB3YXkKLTs7 IC0gWEVtYWNzOiBSZW1vdmVkIGZpeCBmb3IgYHRleHQtcHJvcGVydHktbm90LWFsbCcgKDE5LjEx IHN1cHBvcnQgZHJvcHBlZCkKLTs7IC0gTWFkZSBgZmFzdC1sb2NrLW1vZGUnIGVuc3VyZSBgZm9u dC1sb2NrLW1vZGUnIGlzIG9uCi07OyAtIE1hZGUgYGZhc3QtbG9jay1zYXZlLWNhY2hlJyBkbyBg Y2RyLXNhZmUnIG5vdCBgY2RyJyAoZnJvbSBEYXZlIEZvc3RlcikKLTs7IC0gTWFkZSBgZmFzdC1s b2NrLXNhdmUtY2FjaGUnIGRvIGBzZXQtYnVmZmVyJyBmaXJzdCAoZnJvbSBEYXZlIEZvc3RlcikK LTs7IC0gTWFkZSBgZmFzdC1sb2NrLXNhdmUtY2FjaGUnIGxvb3AgdW50aWwgc2F2ZWQgb3IgcXVp dCAoZnJvbSBHZW9yZyBOaWtvZHltKQotOzsgLSBNYWRlIGBmYXN0LWxvY2stY2FjaGUtZGF0YScg Y2hlY2sgYGJ1ZmZlci1tb2RpZmllZC1wJwotOzsgLSBNYWRlIGBmYXN0LWxvY2stY2FjaGUtZGF0 YScgZG8gYGZvbnQtbG9jay1jb21waWxlLWtleXdvcmRzJyBpZiBuZWNlc3NhcnkKLTs7IC0gWEVt YWNzOiBNYWRlIGBmb250LWxvY2stY29tcGlsZS1rZXl3b3JkcycgYGRlZmFsaWFzJwotOzsgMy4w Ni0tMy4wNzoKLTs7IC0gWEVtYWNzOiBBZGQgYGZhc3QtbG9jay1hZnRlci1mb250aWZ5LWJ1ZmZl cicgdG8gdGhlIEZvbnQgTG9jayBob29rCi07OyAtIE1hZGUgYGZhc3QtbG9jay1jYWNoZS1uYW1l JyBleHBsYWluIHRoZSB1c2Ugb2YgYGRpcmVjdG9yeS1hYmJyZXYtYWxpc3QnCi07OyAtIE1hZGUg YGZhc3QtbG9jay1tb2RlJyB1c2UgYGJ1ZmZlci1maWxlLXRydWVuYW1lJyBub3QgYGJ1ZmZlci1m aWxlLW5hbWUnCi07OyAzLjA3LS0zLjA4OgotOzsgLSBNYWRlIGBmYXN0LWxvY2stcmVhZC1jYWNo ZScgc2V0IGBmYXN0LWxvY2stY2FjaGUtZmlsZW5hbWUnCi07OyAzLjA4LS0zLjA5OgotOzsgLSBN YWRlIGBmYXN0LWxvY2stc2F2ZS1jYWNoZScgY29wZSBpZiBgZmFzdC1sb2NrLW1pbmltdW0tc2l6 ZScgaXMgYSBsaXN0Ci07OyAtIE1hZGUgYGZhc3QtbG9jay1tb2RlJyByZXNwZWN0IHRoZSB2YWx1 ZSBvZiBgZm9udC1sb2NrLWluaGliaXQtdGhpbmctbG9jaycKLTs7IC0gQWRkZWQgYGZhc3QtbG9j ay1hZnRlci11bmZvbnRpZnktYnVmZmVyJwotOzsgMy4wOS0tMy4xMDoKLTs7IC0gUmV3cml0ZSBm b3IgQ29tbW9uIExpc3AgbWFjcm9zCi07OyAtIE1hZGUgZmFzdC1sb2NrLmVsIGJhcmYgb24gYSBj cmFwIDgrMyBwc2V1ZG8tT1MgKEVsaSBaYXJldHNraWkgaGVscCkKLTs7IC0gWEVtYWNzOiBNYWRl IGBhZGQtbWlub3ItbW9kZScgc3VjY2VlZCBgYXV0b2xvYWQnIGNvb2tpZQotOzsgLSBYRW1hY3M6 IE1hZGUgYGZhc3QtbG9jay1zYXZlLWZhY2VzJyBkZWZhdWx0IHRvIGBmb250LWxvY2stZmFjZS1s aXN0JwotOzsgLSBNYWRlIGBmYXN0LWxvY2stc2F2ZS1jYWNoZScgdXNlIGBmb250LWxvY2stdmFs dWUtaW4tbWFqb3ItbW9kZScKLTs7IC0gV3JhcCB3aXRoIGBzYXZlLWJ1ZmZlci1zdGF0ZScgKFJh eSBWYW4gVGFzc2xlIHJlcG9ydCkKLTs7IC0gTWFkZSBgZmFzdC1sb2NrLW1vZGUnIHdyYXAgYGZv bnQtbG9jay1zdXBwb3J0LW1vZGUnCi07OyAzLjEwLS0zLjExOgotOzsgLSBNYWRlIGBmYXN0LWxv Y2stZ2V0LWZhY2UtcHJvcGVydGllcycgY29wZSB3aXRoIGZhY2UgbGlzdHMKLTs7IC0gQWRkZWQg YGZhc3QtbG9jay12ZXJib3NlJwotOzsgLSBYRW1hY3M6IEFkZCBgZm9udC1sb2NrLXZhbHVlLWlu LW1ham9yLW1vZGUnIGlmIG5lY2Vzc2FyeQotOzsgLSBSZW1vdmVkIGBmYXN0LWxvY2stc3VibWl0 LWJ1Zy1yZXBvcnQnIGFuZCBiYWRlIGZhcmV3ZWxsCi07OyAzLjExLS0zLjEyOgotOzsgLSBBZGRl ZCBDdXN0b20gc3VwcG9ydCAoSHJ2b2plIE5pa8WhacSHIGhlbHApCi07OyAtIE1hZGUgYHNhdmUt YnVmZmVyLXN0YXRlJyB3cmFwIGBpbmhpYml0LXBvaW50LW1vdGlvbi1ob29rcycKLTs7IC0gTWFk ZSBgZmFzdC1sb2NrLWNhY2hlLWRhdGEnIHNpbXBsaWZ5IGNhbGxzIG9mIGBmb250LWxvY2stY29t cGlsZS1rZXl3b3JkcycKLTs7IDMuMTItLTMuMTM6Ci07OyAtIFJlbW92ZWQgYGJ5dGUtKicgdmFy aWFibGVzIGZyb20gYGV2YWwtd2hlbi1jb21waWxlJyAoRXJpayBOYWdndW0gaGludCkKLTs7IC0g Q2hhbmdlZCBzdHJ1Y3R1cmUgb2YgY2FjaGUgdG8gaW5jbHVkZSBgZm9udC1sb2NrLXN5bnRhY3Rp Yy1rZXl3b3JkcycKLTs7IC0gTWFkZSBgZmFzdC1sb2NrLXNhdmUtY2FjaGUtMScgc2F2ZSBzeW50 YWN0aWMgZm9udGlmaWNhdGlvbiBkYXRhCi07OyAtIE1hZGUgYGZhc3QtbG9jay1jYWNoZS1kYXRh JyB0YWtlIHN5bnRhY3RpYyBmb250aWZpY2F0aW9uIGRhdGEKLTs7IC0gQWRkZWQgYGZhc3QtbG9j ay1nZXQtc3ludGFjdGljLXByb3BlcnRpZXMnCi07OyAtIFJlbmFtZWQgYGZhc3QtbG9jay1zZXQt ZmFjZS1wcm9wZXJ0aWVzJyB0byBgZmFzdC1sb2NrLWFkZC1wcm9wZXJ0aWVzJwotOzsgLSBNYWRl IGBmYXN0LWxvY2stYWRkLXByb3BlcnRpZXMnIGFkZCBzeW50YWN0aWMgYW5kIGZhY2UgZm9udGlm aWNhdGlvbiBkYXRhCi07OyAzLjEzLS0zLjE0OgotOzsgLSBNYWRlIGBmYXN0LWxvY2stY2FjaGUt bmFtZScgY29wZSB3aXRoIGB3aW5kb3dzbnQnIChHZW9mZiBWb2Vsa2VyIGZpeCkKLTs7IC0gTWFk ZSBgZmFzdC1sb2NrLXZlcmJvc2UnIHVzZSBgb3RoZXInIHdpZGdldCAoQW5kcmVhcyBTY2h3YWIg Zml4KQotOzsgLSBVc2VkIGB3aXRoLXRlbXAtbWVzc2FnZScgd2hlcmUgcG9zc2libGUgdG8gbWFr ZSBtZXNzYWdlcyB0ZW1wb3JhcnkuCi0MCi07OzsgQ29kZToKLQotKHJlcXVpcmUgJ2ZvbnQtbG9j aykKLQotKGRlY2xhcmUtZnVuY3Rpb24gbXNkb3MtbG9uZy1maWxlLW5hbWVzICJtc2Rvcy5jIikK LQotOzsgTWFrZSBzdXJlIGZhc3QtbG9jay5lbCBpcyBzdXBwb3J0ZWQuCi0oaWYgKGFuZCAoZXEg c3lzdGVtLXR5cGUgJ21zLWRvcykgKG5vdCAobXNkb3MtbG9uZy1maWxlLW5hbWVzKSkpCi0gICAg KGVycm9yICJgZmFzdC1sb2NrJyB3YXMgd3JpdHRlbiBmb3IgbG9uZyBmaWxlIG5hbWUgc3lzdGVt cyIpKQotCi0oZGVmdmFyIGZvbnQtbG9jay1mYWNlLWxpc3QpCi0KLShldmFsLXdoZW4tY29tcGls ZQotIDs7Ci0gOzsgV2UgdXNlIHRoaXMgdG8gdmVyaWZ5IHRoYXQgYSBmYWNlIHNob3VsZCBiZSBz YXZlZC4KLSAoZGVmbWFjcm8gZmFzdC1sb2NrLXNhdmUtZmFjZXAgKGZhY2UpCi0gICAiUmV0dXJu IG5vbi1uaWwgaWYgRkFDRSBpcyBvbmUgb2YgYGZhc3QtbG9jay1zYXZlLWZhY2VzJy4iCi0gICBg KG9yIChudWxsIGZhc3QtbG9jay1zYXZlLWZhY2VzKQotICAgICAoaWYgKHN5bWJvbHAgLGZhY2Up Ci0gICAgICAgICAobWVtcSAsZmFjZSBmYXN0LWxvY2stc2F2ZS1mYWNlcykKLSAgICAgICAgIChs ZXQgKChmYWNlcyAsZmFjZSkpCi0gICAgICAgICAgICh3aGlsZSAodW5sZXNzIChtZW1xIChjYXIg ZmFjZXMpIGZhc3QtbG9jay1zYXZlLWZhY2VzKQotICAgICAgICAgICAgICAgICAgICAoc2V0cSBm YWNlcyAoY2RyIGZhY2VzKSkpKQotICAgICAgICAgICBmYWNlcykpKSkpCi0KLShkZWZncm91cCBm YXN0LWxvY2sgbmlsCi0gICJGb250IExvY2sgc3VwcG9ydCBtb2RlIHRvIGNhY2hlIGZvbnRpZmlj YXRpb24uIgotICA6bG9hZCAnZmFzdC1sb2NrCi0gIDpncm91cCAnZm9udC1sb2NrKQotCi0oZGVm dmFyIGZhc3QtbG9jay1tb2RlIG5pbCkJCTsgV2hldGhlciB3ZSBhcmUgdHVybmVkIG9uLgotKGRl ZnZhciBmYXN0LWxvY2stY2FjaGUtdGltZXN0YW1wIG5pbCkJOyBGb3Igc2F2aW5nL3JlYWRpbmcu Ci0oZGVmdmFyIGZhc3QtbG9jay1jYWNoZS1maWxlbmFtZSBuaWwpCTsgRm9yIGRlbGV0aW5nLgot DAotOzsgVXNlciBWYXJpYWJsZXM6Ci0KLShkZWZjdXN0b20gZmFzdC1sb2NrLW1pbmltdW0tc2l6 ZSAyNTYwMAotICAiTWluaW11bSBzaXplIG9mIGEgYnVmZmVyIGZvciBjYWNoZWQgZm9udGlmaWNh dGlvbi4KLU9ubHkgYnVmZmVycyBtb3JlIHRoYW4gdGhpcyBjYW4gaGF2ZSBhc3NvY2lhdGVkIEZv bnQgTG9jayBjYWNoZSBmaWxlcyBzYXZlZC4KLUlmIG5pbCwgbWVhbnMgY2FjaGUgZmlsZXMgYXJl IG5ldmVyIGNyZWF0ZWQuCi1JZiBhIGxpc3QsIGVhY2ggZWxlbWVudCBzaG91bGQgYmUgYSBjb25z IHBhaXIgb2YgdGhlIGZvcm0gKE1BSk9SLU1PREUgLiBTSVpFKSwKLXdoZXJlIE1BSk9SLU1PREUg aXMgYSBzeW1ib2wgb3IgdCAobWVhbmluZyB0aGUgZGVmYXVsdCkuICBGb3IgZXhhbXBsZToKLSAo KGMtbW9kZSAuIDI1NjAwKSAoYysrLW1vZGUgLiAyNTYwMCkgKHJtYWlsLW1vZGUgLiAxMDQ4NTc2 KSkKLW1lYW5zIHRoYXQgdGhlIG1pbmltdW0gc2l6ZSBpcyAyNUsgZm9yIGJ1ZmZlcnMgaW4gQyBv ciBDKysgbW9kZXMsIG9uZSBtZWdhYnl0ZQotZm9yIGJ1ZmZlcnMgaW4gUm1haWwgbW9kZSwgYW5k IHNpemUgaXMgaXJyZWxldmFudCBvdGhlcndpc2UuIgotICA6dHlwZSAnKGNob2ljZSAoY29uc3Qg OnRhZyAibm9uZSIgbmlsKQotCQkgKGludGVnZXIgOnRhZyAic2l6ZSIpCi0JCSAocmVwZWF0IDpt ZW51LXRhZyAibW9kZSBzcGVjaWZpYyIgOnRhZyAibW9kZSBzcGVjaWZpYyIKLQkJCSA6dmFsdWUg KCh0IC4gbmlsKSkKLQkJCSAoY29ucyA6dGFnICJJbnN0YW5jZSIKLQkJCSAgICAgICAocmFkaW8g OnRhZyAiTW9kZSIKLQkJCQkgICAgICAoY29uc3QgOnRhZyAiYWxsIiB0KQotCQkJCSAgICAgIChz eW1ib2wgOnRhZyAibmFtZSIpKQotCQkJICAgICAgIChyYWRpbyA6dGFnICJTaXplIgotCQkJCSAg ICAgIChjb25zdCA6dGFnICJub25lIiBuaWwpCi0JCQkJICAgICAgKGludGVnZXIgOnRhZyAic2l6 ZSIpKSkpKSkKLQotKGRlZmN1c3RvbSBmYXN0LWxvY2stY2FjaGUtZGlyZWN0b3JpZXMgJygifi8u ZW1hY3MtZmxjIikKLTsgLSBgaW50ZXJuYWwnLCBrZWVwIGVhY2ggZmlsZSdzIEZvbnQgTG9jayBj YWNoZSBmaWxlIGluIHRoZSBzYW1lIGZpbGUuCi07IC0gYGV4dGVybmFsJywga2VlcCBlYWNoIGZp bGUncyBGb250IExvY2sgY2FjaGUgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCi0gICJEaXJl Y3RvcmllcyBpbiB3aGljaCBGb250IExvY2sgY2FjaGUgZmlsZXMgYXJlIHNhdmVkIGFuZCByZWFk LgotRWFjaCBpdGVtIHNob3VsZCBiZSBlaXRoZXIgRElSIG9yIGEgY29ucyBwYWlyIG9mIHRoZSBm b3JtIChSRUdFWFAgLiBESVIpIHdoZXJlCi1ESVIgaXMgYSBkaXJlY3RvcnkgbmFtZSAocmVsYXRp dmUgb3IgYWJzb2x1dGUpIGFuZCBSRUdFWFAgaXMgYSByZWdleHAuCi0KLUFuIGF0dGVtcHQgd2ls bCBiZSBtYWRlIHRvIHNhdmUgb3IgcmVhZCBGb250IExvY2sgY2FjaGUgZmlsZXMgdXNpbmcgdGhl c2UgaXRlbXMKLXVudGlsIG9uZSBzdWNjZWVkcyAoaS5lLiwgdW50aWwgYSByZWFkYWJsZSBvciB3 cml0YWJsZSBvbmUgaXMgZm91bmQpLiAgSWYgYW4KLWl0ZW0gY29udGFpbnMgUkVHRVhQLCBESVIg aXMgdXNlZCBvbmx5IGlmIHRoZSBidWZmZXIgZmlsZSBuYW1lIG1hdGNoZXMgUkVHRVhQLgotRm9y IGV4YW1wbGU6Ci0KLSAobGV0ICgoaG9tZSAoZXhwYW5kLWZpbGUtbmFtZSAoYWJicmV2aWF0ZS1m aWxlLW5hbWUgKGZpbGUtdHJ1ZW5hbWUgXCJ+L1wiKSkpKSkKLSAgIChsaXN0IChjb25zIChjb25j YXQgXCJeXCIgKHJlZ2V4cC1xdW90ZSBob21lKSkgXCIuXCIpIFwifi8uZW1hY3MtZmxjXCIpKQot ICAgID0+Ci0gKChcIl4veW91ci90cnVlL2hvbWUvZGlyZWN0b3J5L1wiIC4gXCIuXCIpIFwifi8u ZW1hY3MtZmxjXCIpCi0KLXdvdWxkIGNhdXNlIGEgZmlsZSdzIGN1cnJlbnQgZGlyZWN0b3J5IHRv IGJlIHVzZWQgaWYgdGhlIGZpbGUgaXMgdW5kZXIgeW91cgotaG9tZSBkaXJlY3RvcnkgaGllcmFy Y2h5LCBvciBvdGhlcndpc2UgdGhlIGFic29sdXRlIGRpcmVjdG9yeSBgfi8uZW1hY3MtZmxjJy4K LUZvciBzZWN1cml0eSByZWFzb25zLCBpdCBpcyBub3QgYWR2aXNhYmxlIHRvIHVzZSB0aGUgZmls ZSdzIGN1cnJlbnQgZGlyZWN0b3J5Ci10byBhdm9pZCB0aGUgcG9zc2liaWxpdHkgb2YgdXNpbmcg dGhlIGNhY2hlIG9mIGFub3RoZXIgdXNlci4iCi0gIDp0eXBlICcocmVwZWF0IChyYWRpbyAoZGly ZWN0b3J5IDp0YWcgImRpcmVjdG9yeSIpCi0JCQkoY29ucyA6dGFnICJNYXRjaGluZyIKLQkJCSAg ICAgIChyZWdleHAgOnRhZyAicmVnZXhwIikKLQkJCSAgICAgIChkaXJlY3RvcnkgOnRhZyAiZGly ZWN0b3J5IikpKSkpCi0ocHV0ICdmYXN0LWxvY2stY2FjaGUtZGlyZWN0b3JpZXMgJ3Jpc2t5LWxv Y2FsLXZhcmlhYmxlIHQpCi0KLShkZWZjdXN0b20gZmFzdC1sb2NrLXNhdmUtZXZlbnRzICcoa2ls bC1idWZmZXIga2lsbC1lbWFjcykKLSAgIkV2ZW50cyB1bmRlciB3aGljaCBjYWNoZXMgd2lsbCBi ZSBzYXZlZC4KLVZhbGlkIGV2ZW50cyBhcmUgYHNhdmUtYnVmZmVyJywgYGtpbGwtYnVmZmVyJyBh bmQgYGtpbGwtZW1hY3MnLgotSWYgY29uY3VycmVudCBlZGl0aW5nIHNlc3Npb25zIHVzZSB0aGUg c2FtZSBhc3NvY2lhdGVkIGNhY2hlIGZpbGUgZm9yIGEgZmlsZSdzCi1idWZmZXIsIHRoZW4geW91 IHNob3VsZCBhZGQgYHNhdmUtYnVmZmVyJyB0byB0aGlzIGxpc3QuIgotICA6dHlwZSAnKHNldCAo Y29uc3QgOnRhZyAiYnVmZmVyIHNhdmluZyIgc2F2ZS1idWZmZXIpCi0JICAgICAgKGNvbnN0IDp0 YWcgImJ1ZmZlciBraWxsaW5nIiBraWxsLWJ1ZmZlcikKLQkgICAgICAoY29uc3QgOnRhZyAiZW1h Y3Mga2lsbGluZyIga2lsbC1lbWFjcykpKQotCi0oZGVmY3VzdG9tIGZhc3QtbG9jay1zYXZlLW90 aGVycyB0Ci0gICJJZiBub24tbmlsLCBzYXZlIEZvbnQgTG9jayBjYWNoZSBmaWxlcyBpcnJlc3Bl Y3RpdmUgb2YgZmlsZSBvd25lci4KLUlmIG5pbCwgbWVhbnMgb25seSBidWZmZXIgZmlsZXMga25v d24gdG8gYmUgb3duZWQgYnkgeW91IGNhbiBoYXZlIGFzc29jaWF0ZWQKLUZvbnQgTG9jayBjYWNo ZSBmaWxlcyBzYXZlZC4gIE93bmVyc2hpcCBtYXkgYmUgdW5rbm93biBmb3IgbmV0d29ya2VkIGZp bGVzLiIKLSAgOnR5cGUgJ2Jvb2xlYW4pCi0KLShkZWZjdXN0b20gZmFzdC1sb2NrLXZlcmJvc2Ug Zm9udC1sb2NrLXZlcmJvc2UKLSAgIklmIG5vbi1uaWwsIG1lYW5zIHNob3cgc3RhdHVzIG1lc3Nh Z2VzIGZvciBjYWNoZSBwcm9jZXNzaW5nLgotSWYgYSBudW1iZXIsIG9ubHkgYnVmZmVycyBncmVh dGVyIHRoYW4gdGhpcyBzaXplIGhhdmUgcHJvY2Vzc2luZyBtZXNzYWdlcy4iCi0gIDp0eXBlICco Y2hvaWNlIChjb25zdCA6dGFnICJuZXZlciIgbmlsKQotCQkgKG90aGVyIDp0YWcgImFsd2F5cyIg dCkKLQkJIChpbnRlZ2VyIDp0YWcgInNpemUiKSkpCi0KLShkZWZ2YXIgZmFzdC1sb2NrLXNhdmUt ZmFjZXMgbmlsCi0gICJGYWNlcyB0aGF0IHdpbGwgYmUgc2F2ZWQgaW4gYSBGb250IExvY2sgY2Fj aGUgZmlsZS4KLUlmIG5pbCwgbWVhbnMgaW5mb3JtYXRpb24gZm9yIGFsbCBmYWNlcyB3aWxsIGJl IHNhdmVkLiIpCi0MCi07OyBVc2VyIEZ1bmN0aW9uczoKLQotOzs7IyMjYXV0b2xvYWQKLShkZWZ1 biBmYXN0LWxvY2stbW9kZSAoJm9wdGlvbmFsIGFyZykKLSAgIlRvZ2dsZSBGYXN0IExvY2sgbW9k ZS4KLVdpdGggYXJnLCB0dXJuIEZhc3QgTG9jayBtb2RlIG9uIGlmIGFuZCBvbmx5IGlmIGFyZyBp cyBwb3NpdGl2ZSBhbmQgdGhlIGJ1ZmZlcgotaXMgYXNzb2NpYXRlZCB3aXRoIGEgZmlsZS4gIEVu YWJsZSBpdCBhdXRvbWF0aWNhbGx5IGluIHlvdXIgYH4vLmVtYWNzJyBieToKLQotIChzZXRxIGZv bnQtbG9jay1zdXBwb3J0LW1vZGUgXFw9J2Zhc3QtbG9jay1tb2RlKQotCi1JZiBGYXN0IExvY2sg bW9kZSBpcyBlbmFibGVkLCBhbmQgdGhlIGN1cnJlbnQgYnVmZmVyIGRvZXMgbm90IGNvbnRhaW4g YW55IHRleHQKLXByb3BlcnRpZXMsIGFueSBhc3NvY2lhdGVkIEZvbnQgTG9jayBjYWNoZSBpcyB1 c2VkIGlmIGl0cyB0aW1lc3RhbXAgbWF0Y2hlcyB0aGUKLWJ1ZmZlcidzIGZpbGUsIGFuZCBpdHMg YGZvbnQtbG9jay1rZXl3b3JkcycgbWF0Y2ggdGhvc2UgdGhhdCB5b3UgYXJlIHVzaW5nLgotCi1G b250IExvY2sgY2FjaGVzIG1heSBiZSBzYXZlZDoKLS0gV2hlbiB5b3Ugc2F2ZSB0aGUgZmlsZSdz IGJ1ZmZlci4KLS0gV2hlbiB5b3Uga2lsbCBhbiB1bm1vZGlmaWVkIGZpbGUncyBidWZmZXIuCi0t IFdoZW4geW91IGV4aXQgRW1hY3MsIGZvciBhbGwgdW5tb2RpZmllZCBvciBzYXZlZCBidWZmZXJz LgotRGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBgZmFzdC1sb2NrLXNhdmUtZXZlbnRzJy4KLVNl ZSBhbHNvIHRoZSBjb21tYW5kcyBgZmFzdC1sb2NrLXJlYWQtY2FjaGUnIGFuZCBgZmFzdC1sb2Nr LXNhdmUtY2FjaGUnLgotCi1Vc2UgXFxbZm9udC1sb2NrLWZvbnRpZnktYnVmZmVyXSB0byBmb250 aWZ5IHRoZSBidWZmZXIgaWYgdGhlIGNhY2hlIGlzIGJhZC4KLQotVmFyaW91cyBtZXRob2RzIG9m IGNvbnRyb2wgYXJlIHByb3ZpZGVkIGZvciB0aGUgRm9udCBMb2NrIGNhY2hlLiAgSW4gZ2VuZXJh bCwKLXNlZSB2YXJpYWJsZSBgZmFzdC1sb2NrLWNhY2hlLWRpcmVjdG9yaWVzJyBhbmQgZnVuY3Rp b24gYGZhc3QtbG9jay1jYWNoZS1uYW1lJy4KLUZvciBzYXZpbmcsIHNlZSB2YXJpYWJsZXMgYGZh c3QtbG9jay1taW5pbXVtLXNpemUnLCBgZmFzdC1sb2NrLXNhdmUtZXZlbnRzJywKLWBmYXN0LWxv Y2stc2F2ZS1vdGhlcnMnIGFuZCBgZmFzdC1sb2NrLXNhdmUtZmFjZXMnLiIKLSAgKGludGVyYWN0 aXZlICJQIikKLSAgOzsgT25seSB0dXJuIG9uIGlmIHdlIGFyZSB2aXNpdGluZyBhIGZpbGUuICBX ZSBjb3VsZCB1c2UgYGJ1ZmZlci1maWxlLW5hbWUnLAotICA7OyBidXQgbWFueSBwYWNrYWdlcyB0 ZW1wb3JhcmlseSB3cmFwIHRoYXQgdG8gbmlsIHdoZW4gZG9pbmcgdGhlaXIgb3duIHRoaW5nLgot ICAoc2V0IChtYWtlLWxvY2FsLXZhcmlhYmxlICdmYXN0LWxvY2stbW9kZSkKLSAgICAgICAoYW5k IGJ1ZmZlci1maWxlLXRydWVuYW1lCi0JICAgIChub3QgKG1lbXEgJ2Zhc3QtbG9jay1tb2RlIGZv bnQtbG9jay1pbmhpYml0LXRoaW5nLWxvY2spKQotCSAgICAoaWYgYXJnICg+IChwcmVmaXgtbnVt ZXJpYy12YWx1ZSBhcmcpIDApIChub3QgZmFzdC1sb2NrLW1vZGUpKSkpCi0gIChpZiAoYW5kIGZh c3QtbG9jay1tb2RlIChub3QgZm9udC1sb2NrLW1vZGUpKQotICAgICAgOzsgVHVybmVkIG9uIGBm YXN0LWxvY2stbW9kZScgcmF0aGVyIHRoYW4gYGZvbnQtbG9jay1tb2RlJy4KLSAgICAgIChwcm9n bgotICAgICAgICAobWVzc2FnZSAiVXNlIGZvbnQtbG9jay1zdXBwb3J0LW1vZGUgcmF0aGVyIHRo YW4gY2FsbGluZyBmYXN0LWxvY2stbW9kZSIpCi0gICAgICAgIChzaXQtZm9yIDIpKQotICAgIDs7 IExldCdzIGdldCBkb3duIHRvIGJ1c2luZXNzLgotICAgIChzZXQgKG1ha2UtbG9jYWwtdmFyaWFi bGUgJ2Zhc3QtbG9jay1jYWNoZS10aW1lc3RhbXApIG5pbCkKLSAgICAoc2V0IChtYWtlLWxvY2Fs LXZhcmlhYmxlICdmYXN0LWxvY2stY2FjaGUtZmlsZW5hbWUpIG5pbCkKLSAgICAod2hlbiAoYW5k IGZhc3QtbG9jay1tb2RlIChub3QgZm9udC1sb2NrLWZvbnRpZmllZCkpCi0gICAgICAoZmFzdC1s b2NrLXJlYWQtY2FjaGUpKSkpCi0KLShkZWZ1biBmYXN0LWxvY2stcmVhZC1jYWNoZSAoKQotICAi UmVhZCB0aGUgRm9udCBMb2NrIGNhY2hlIGZvciB0aGUgY3VycmVudCBidWZmZXIuCi0KLVRoZSBm b2xsb3dpbmcgY3JpdGVyaWEgbXVzdCBiZSBtZXQgZm9yIGEgRm9udCBMb2NrIGNhY2hlIGZpbGUg dG8gYmUgcmVhZDoKLS0gRmFzdCBMb2NrIG1vZGUgbXVzdCBiZSB0dXJuZWQgb24gaW4gdGhlIGJ1 ZmZlci4KLS0gVGhlIGJ1ZmZlciBtdXN0IG5vdCBiZSBtb2RpZmllZC4KLS0gVGhlIGJ1ZmZlcidz IGBmb250LWxvY2sta2V5d29yZHMnIG11c3QgbWF0Y2ggdGhlIGNhY2hlJ3MuCi0tIFRoZSBidWZm ZXIgZmlsZSdzIHRpbWVzdGFtcCBtdXN0IG1hdGNoIHRoZSBjYWNoZSdzLgotLSBDcml0ZXJpYSBp bXBvc2VkIGJ5IGBmYXN0LWxvY2stY2FjaGUtZGlyZWN0b3JpZXMnLgotCi1TZWUgYGZhc3QtbG9j ay1tb2RlJy4iCi0gIChpbnRlcmFjdGl2ZSkKLSAgKGxldCAoKGRpcmVjdG9yaWVzIGZhc3QtbG9j ay1jYWNoZS1kaXJlY3RvcmllcykKLQkobW9kaWZpZWQgKGJ1ZmZlci1tb2RpZmllZC1wKSkgKGlu aGliaXQtcmVhZC1vbmx5IHQpCi0JKGZvbnRpZmllZCBmb250LWxvY2stZm9udGlmaWVkKSkKLSAg ICAoc2V0IChtYWtlLWxvY2FsLXZhcmlhYmxlICdmb250LWxvY2stZm9udGlmaWVkKSBuaWwpCi0g ICAgOzsgS2VlcCB0cnlpbmcgZGlyZWN0b3JpZXMgdW50aWwgZm9udGlmaWNhdGlvbiBpcyB0dXJu ZWQgb2ZmLgotICAgICh3aGlsZSAoYW5kIGRpcmVjdG9yaWVzIChub3QgZm9udC1sb2NrLWZvbnRp ZmllZCkpCi0gICAgICAobGV0ICgoZGlyZWN0b3J5IChmYXN0LWxvY2stY2FjaGUtZGlyZWN0b3J5 IChjYXIgZGlyZWN0b3JpZXMpIG5pbCkpKQotCShjb25kaXRpb24tY2FzZSBuaWwKLQkgICAgKHdo ZW4gZGlyZWN0b3J5Ci0JICAgICAgKHNldHEgZmFzdC1sb2NrLWNhY2hlLWZpbGVuYW1lIChmYXN0 LWxvY2stY2FjaGUtbmFtZSBkaXJlY3RvcnkpKQotCSAgICAgICh3aGVuIChmaWxlLXJlYWRhYmxl LXAgZmFzdC1sb2NrLWNhY2hlLWZpbGVuYW1lKQotCQkobG9hZCBmYXN0LWxvY2stY2FjaGUtZmls ZW5hbWUgdCB0IHQpKSkKLQkgIChlcnJvciBuaWwpIChxdWl0IG5pbCkpCi0JKHNldHEgZGlyZWN0 b3JpZXMgKGNkciBkaXJlY3RvcmllcykpKSkKLSAgICA7OyBVbnNldCBgZmFzdC1sb2NrLWNhY2hl LWZpbGVuYW1lJywgYW5kIHJlc3RvcmUgYGZvbnQtbG9jay1mb250aWZpZWQnLCBpZgotICAgIDs7 IHdlIGRvbid0IHVzZSBhIGNhY2hlLiAgKE5vdGUgdGhhdCBgZmFzdC1sb2NrLWNhY2hlLWRhdGEn IHNldHMgdGhlIHZhbHVlCi0gICAgOzsgb2YgYGZhc3QtbG9jay1jYWNoZS10aW1lc3RhbXAnLikK LSAgICAoc2V0LWJ1ZmZlci1tb2RpZmllZC1wIG1vZGlmaWVkKQotICAgICh1bmxlc3MgZm9udC1s b2NrLWZvbnRpZmllZAotICAgICAgKHNldHEgZmFzdC1sb2NrLWNhY2hlLWZpbGVuYW1lIG5pbCBm b250LWxvY2stZm9udGlmaWVkIGZvbnRpZmllZCkpKSkKLQotKGRlZnVuIGZhc3QtbG9jay1zYXZl LWNhY2hlICgmb3B0aW9uYWwgYnVmZmVyKQotICAiU2F2ZSB0aGUgRm9udCBMb2NrIGNhY2hlIG9m IEJVRkZFUiBvciB0aGUgY3VycmVudCBidWZmZXIuCi0KLVRoZSBmb2xsb3dpbmcgY3JpdGVyaWEg bXVzdCBiZSBtZXQgZm9yIGEgRm9udCBMb2NrIGNhY2hlIGZpbGUgdG8gYmUgc2F2ZWQ6Ci0tIEZh c3QgTG9jayBtb2RlIG11c3QgYmUgdHVybmVkIG9uIGluIHRoZSBidWZmZXIuCi0tIFRoZSBldmVu dCBtdXN0IGJlIG9uZSBvZiBgZmFzdC1sb2NrLXNhdmUtZXZlbnRzJy4KLS0gVGhlIGJ1ZmZlciBt dXN0IGJlIGF0IGxlYXN0IGBmYXN0LWxvY2stbWluaW11bS1zaXplJyBieXRlcyBsb25nLgotLSBU aGUgYnVmZmVyIGZpbGUgbXVzdCBiZSBvd25lZCBieSB5b3UsIG9yIGBmYXN0LWxvY2stc2F2ZS1v dGhlcnMnIG11c3QgYmUgdC4KLS0gVGhlIGJ1ZmZlciBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25l IGBmYWNlJyB0ZXh0IHByb3BlcnR5LgotLSBUaGUgYnVmZmVyIG11c3Qgbm90IGJlIG1vZGlmaWVk LgotLSBUaGUgYnVmZmVyIGZpbGUncyB0aW1lc3RhbXAgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUg ZmlsZSdzIG9uIGRpc2suCi0tIFRoZSBvbiBkaXNrIGZpbGUncyB0aW1lc3RhbXAgbXVzdCBiZSBk aWZmZXJlbnQgdGhhbiB0aGUgYnVmZmVyJ3MgY2FjaGUuCi0tIENyaXRlcmlhIGltcG9zZWQgYnkg YGZhc3QtbG9jay1jYWNoZS1kaXJlY3RvcmllcycuCi0KLVNlZSBgZmFzdC1sb2NrLW1vZGUnLiIK LSAgKGludGVyYWN0aXZlKQotICAoc2F2ZS1leGN1cnNpb24KLSAgICAod2hlbiBidWZmZXIKLSAg ICAgIChzZXQtYnVmZmVyIGJ1ZmZlcikpCi0gICAgKGxldCAoKG1pbi1zaXplIChmb250LWxvY2st dmFsdWUtaW4tbWFqb3ItbW9kZSBmYXN0LWxvY2stbWluaW11bS1zaXplKSkKLQkgIChmaWxlLXRp bWVzdGFtcCAodmlzaXRlZC1maWxlLW1vZHRpbWUpKSAoc2F2ZWQgbmlsKSkKLSAgICAgICh3aGVu IChhbmQgZmFzdC1sb2NrLW1vZGUKLQkgICAgIDs7Ci0JICAgICA7OyAiT25seSBzYXZlIGlmIHRo ZSBidWZmZXIgbWF0Y2hlcyB0aGUgZmlsZSwgdGhlIGZpbGUgaGFzCi0JICAgICA7OyBjaGFuZ2Vk LCBhbmQgaXQgd2FzIGNoYW5nZWQgYnkgdGhlIGN1cnJlbnQgZW1hY3Mgc2Vzc2lvbi4iCi0JICAg ICA7OwotCSAgICAgOzsgT25seSBzYXZlIGlmIHRoZSBidWZmZXIgaXMgbm90IG1vZGlmaWVkLAot CSAgICAgOzsgKGkuZS4sIHNvIHdlIGRvbid0IHNhdmUgZm9yIHNvbWV0aGluZyBub3Qgb24gZGlz aykKLQkgICAgIChub3QgKGJ1ZmZlci1tb2RpZmllZC1wKSkKLQkgICAgIDs7IGFuZCB0aGUgZmls ZSdzIHRpbWVzdGFtcCBpcyB0aGUgc2FtZSBhcyB0aGUgYnVmZmVyJ3MsCi0JICAgICA7OyAoaS5l Liwgc29tZW9uZSBlbHNlIGhhc24ndCB3cml0dGVuIHRoZSBmaWxlIGluIHRoZSBtZWFudGltZSkK LQkgICAgICh2ZXJpZnktdmlzaXRlZC1maWxlLW1vZHRpbWUgKGN1cnJlbnQtYnVmZmVyKSkKLQkg ICAgIDs7IGFuZCB0aGUgZmlsZSdzIHRpbWVzdGFtcCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgY2Fj aGUncy4KLQkgICAgIDs7IChpLmUuLCBhIHNhdmUgaGFzIG9jY3VycmVkIHNpbmNlIHRoZSBjYWNo ZSB3YXMgcmVhZCkKLQkgICAgIChub3QgKGVxdWFsIGZhc3QtbG9jay1jYWNoZS10aW1lc3RhbXAg ZmlsZS10aW1lc3RhbXApKQotCSAgICAgOzsKLQkgICAgIDs7IE9ubHkgc2F2ZSBpZiB1c2VyJ3Mg cmVzdHJpY3Rpb25zIGFyZSBzYXRpc2ZpZWQuCi0JICAgICAoYW5kIG1pbi1zaXplICg+PSAoYnVm ZmVyLXNpemUpIG1pbi1zaXplKSkKLQkgICAgIChvciBmYXN0LWxvY2stc2F2ZS1vdGhlcnMKLQkJ IChlcSAodXNlci11aWQpIChmaWxlLWF0dHJpYnV0ZS11c2VyLWlkCi0JCQkJIChmaWxlLWF0dHJp YnV0ZXMgYnVmZmVyLWZpbGUtbmFtZSkpKSkKLQkgICAgIDs7Ci0JICAgICA7OyBPbmx5IHNhdmUg aWYgdGhlcmUgYXJlIGBmYWNlJyBwcm9wZXJ0aWVzIHRvIHNhdmUuCi0JICAgICAodGV4dC1wcm9w ZXJ0eS1ub3QtYWxsIChwb2ludC1taW4pIChwb2ludC1tYXgpICdmYWNlIG5pbCkpCi0JOzsKLQk7 OyBUcnkgZWFjaCBkaXJlY3RvcnkgdW50aWwgd2UgbWFuYWdlIHRvIHNhdmUgb3IgdGhlIHVzZXIg cXVpdHMuCi0JKGxldCAoKGRpcmVjdG9yaWVzIGZhc3QtbG9jay1jYWNoZS1kaXJlY3Rvcmllcykp Ci0JICAod2hpbGUgKGFuZCBkaXJlY3RvcmllcyAobWVtcSBzYXZlZCAnKG5pbCBlcnJvcikpKQot CSAgICAobGV0KiAoKGRpciAoZmFzdC1sb2NrLWNhY2hlLWRpcmVjdG9yeSAoY2FyIGRpcmVjdG9y aWVzKSB0KSkKLQkJICAgKGZpbGUgKGFuZCBkaXIgKGZhc3QtbG9jay1jYWNoZS1uYW1lIGRpcikp KSkKLQkgICAgICAod2hlbiAoYW5kIGZpbGUgKGZpbGUtd3JpdGFibGUtcCBmaWxlKSkKLQkJKHNl dHEgc2F2ZWQgKGZhc3QtbG9jay1zYXZlLWNhY2hlLTEgZmlsZSBmaWxlLXRpbWVzdGFtcCkpKQot CSAgICAgIChzZXRxIGRpcmVjdG9yaWVzIChjZHIgZGlyZWN0b3JpZXMpKSkpKSkpKSkKLQotOzs7 IyMjYXV0b2xvYWQKLShkZWZ1biB0dXJuLW9uLWZhc3QtbG9jayAoKQotICAiVW5jb25kaXRpb25h bGx5IHR1cm4gb24gRmFzdCBMb2NrIG1vZGUuIgotICAoZmFzdC1sb2NrLW1vZGUgdCkpCi0MCi07 OzsgQVBJIEZ1bmN0aW9uczoKLQotKGRlZnVuIGZhc3QtbG9jay1hZnRlci1mb250aWZ5LWJ1ZmZl ciAoKQotICA7OyBEZWxldGUgdGhlIEZvbnQgTG9jayBjYWNoZSBmaWxlIHVzZWQgdG8gcmVzdG9y ZSBmb250aWZpY2F0aW9uLCBpZiBhbnkuCi0gICh3aGVuIGZhc3QtbG9jay1jYWNoZS1maWxlbmFt ZQotICAgIChpZiAoZmlsZS13cml0YWJsZS1wIGZhc3QtbG9jay1jYWNoZS1maWxlbmFtZSkKLQko ZGVsZXRlLWZpbGUgZmFzdC1sb2NrLWNhY2hlLWZpbGVuYW1lKQotICAgICAgKG1lc3NhZ2UgIkZp bGUgJXMgZm9udCBsb2NrIGNhY2hlIGNhbm5vdCBiZSBkZWxldGVkIiAoYnVmZmVyLW5hbWUpKSkp Ci0gIDs7IEZsYWcgc28gdGhhdCBhIGNhY2hlIHdpbGwgYmUgc2F2ZWQgbGF0ZXIgZXZlbiBpZiB0 aGUgZmlsZSBpcyBuZXZlciBzYXZlZC4KLSAgKHNldHEgZmFzdC1sb2NrLWNhY2hlLXRpbWVzdGFt cCBuaWwpKQotCi0oZGVmYWxpYXMgJ2Zhc3QtbG9jay1hZnRlci11bmZvbnRpZnktYnVmZmVyICMn aWdub3JlKQotDAotOzsgTWlzY2VsbGFuZW91cyBGdW5jdGlvbnM6Ci0KLShkZWZ1biBmYXN0LWxv Y2stc2F2ZS1jYWNoZS1hZnRlci1zYXZlLWZpbGUgKCkKLSAgOzsgRG8gYGZhc3QtbG9jay1zYXZl LWNhY2hlJyBpZiBgc2F2ZS1idWZmZXInIGlzIG9uIGBmYXN0LWxvY2stc2F2ZS1ldmVudHMnLgot ICAod2hlbiAobWVtcSAnc2F2ZS1idWZmZXIgZmFzdC1sb2NrLXNhdmUtZXZlbnRzKQotICAgIChm YXN0LWxvY2stc2F2ZS1jYWNoZSkpKQotCi0oZGVmdW4gZmFzdC1sb2NrLXNhdmUtY2FjaGUtYmVm b3JlLWtpbGwtYnVmZmVyICgpCi0gIDs7IERvIGBmYXN0LWxvY2stc2F2ZS1jYWNoZScgaWYgYGtp bGwtYnVmZmVyJyBpcyBvbiBgZmFzdC1sb2NrLXNhdmUtZXZlbnRzJy4KLSAgKHdoZW4gKG1lbXEg J2tpbGwtYnVmZmVyIGZhc3QtbG9jay1zYXZlLWV2ZW50cykKLSAgICAoZmFzdC1sb2NrLXNhdmUt Y2FjaGUpKSkKLQotKGRlZnVuIGZhc3QtbG9jay1zYXZlLWNhY2hlcy1iZWZvcmUta2lsbC1lbWFj cyAoKQotICA7OyBEbyBgZmFzdC1sb2NrLXNhdmUtY2FjaGUncyBpZiBga2lsbC1lbWFjcycgaXMg b24gYGZhc3QtbG9jay1zYXZlLWV2ZW50cycuCi0gICh3aGVuIChtZW1xICdraWxsLWVtYWNzIGZh c3QtbG9jay1zYXZlLWV2ZW50cykKLSAgICAobWFwY2FyICMnZmFzdC1sb2NrLXNhdmUtY2FjaGUg KGJ1ZmZlci1saXN0KSkpKQotCi0oZGVmdW4gZmFzdC1sb2NrLWNhY2hlLWRpcmVjdG9yeSAoZGly ZWN0b3J5IGNyZWF0ZSkKLSAgIlJldHVybiB1c2FibGUgZGlyZWN0b3J5IGJhc2VkIG9uIERJUkVD VE9SWS4KLVJldHVybnMgbmlsIGlmIHRoZSBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3QsIG9yLCBp ZiBDUkVBVEUgbm9uLW5pbCwgY2Fubm90IGJlCi1jcmVhdGVkLiAgRElSRUNUT1JZIG1heSBiZSBh IHN0cmluZyBvciBhIGNvbnMgcGFpciBvZiB0aGUgZm9ybSAoUkVHRVhQIC4gRElSKS4KLVNlZSBg ZmFzdC1sb2NrLWNhY2hlLWRpcmVjdG9yaWVzJy4iCi0gIChsZXQgKChkaXIKLQkgKGNvbmQgKChu b3QgYnVmZmVyLWZpbGUtbmFtZSkKLQkJOzsgU2hvdWxkIG5ldmVyIGJlIG5pbCwgYnV0IGBjcnlw dCsrJyBzY3Jld3MgaXQgdXAuCi0JCW5pbCkKLQkgICAgICAgKChzdHJpbmdwIGRpcmVjdG9yeSkK LQkJOzsgSnVzdCBhIGRpcmVjdG9yeS4KLQkJZGlyZWN0b3J5KQotCSAgICAgICAodAotCQk7OyBB IGRpcmVjdG9yeSBpZiB0aGUgZmlsZSBuYW1lIG1hdGNoZXMgdGhlIHJlZ2V4cC4KLQkJKGxldCAo KGJ1ZmlsZSAoZXhwYW5kLWZpbGUtbmFtZSBidWZmZXItZmlsZS10cnVlbmFtZSkpCi0JCSAgICAg IChjYXNlLWZvbGQtc2VhcmNoIG5pbCkpCi0JCSAgKHdoZW4gKHNhdmUtbWF0Y2gtZGF0YSAoc3Ry aW5nLW1hdGNoIChjYXIgZGlyZWN0b3J5KSBidWZpbGUpKQotCQkgICAgKGNkciBkaXJlY3Rvcnkp KSkpKSkpCi0gICAgKGNvbmQgKChub3QgZGlyKQotCSAgIG5pbCkKLQkgICgoZmlsZS1hY2Nlc3Np YmxlLWRpcmVjdG9yeS1wIGRpcikKLQkgICBkaXIpCi0JICAoY3JlYXRlCi0JICAgKGNvbmRpdGlv bi1jYXNlIG5pbAotCSAgICAgICAocHJvZ24gKG1ha2UtZGlyZWN0b3J5IGRpciB0KSBkaXIpCi0J ICAgICAoZXJyb3IgbmlsKSkpKSkpCi0KLTs7IElmIHlvdSBhcmUgd29uZGVyaW5nIHdoeSB3ZSBv bmx5IGhhc2ggaWYgdGhlIGRpcmVjdG9yeSBpcyBub3QgIi4iLCByYXRoZXIKLTs7IHRoYW4gaWYg YGZpbGUtbmFtZS1hYnNvbHV0ZS1wJywgaXQgaXMgYmVjYXVzZSBpZiB3ZSBqdXN0IGFwcGVuZGVk ICIuZmxjIiBmb3IKLTs7IHJlbGF0aXZlIGNhY2hlIGRpcmVjdG9yaWVzICh0aGF0IGFyZSBub3Qg Ii4iKSB0aGVuIGl0IGlzIHBvc3NpYmxlIHRoYXQgbW9yZQotOzsgdGhhbiBvbmUgZmlsZSB3b3Vs ZCBoYXZlIHRoZSBzYW1lIGNhY2hlIG5hbWUgaW4gdGhhdCBkaXJlY3RvcnksIGlmIHRoZSBsdXNl cgotOzsgbWFkZSBhIGxpbmsgZnJvbSBvbmUgcmVsYXRpdmUgY2FjaGUgZGlyZWN0b3J5IHRvIGFu b3RoZXIuICAoUGhldyEpCi0oZGVmdW4gZmFzdC1sb2NrLWNhY2hlLW5hbWUgKGRpcmVjdG9yeSkK LSAgIlJldHVybiBmdWxsIGNhY2hlIGZpbGUgbmFtZSB1c2luZyBjYWNoaW5nIERJUkVDVE9SWS4K LUlmIERJUkVDVE9SWSBpcyBgLicsIHRoZSBmaWxlIG5hbWUgaXMgdGhlIGJ1ZmZlciBmaWxlIG5h bWUgYXBwZW5kZWQgd2l0aCBgLmZsYycuCi1PdGhlcndpc2UsIHRoZSBmaWxlIG5hbWUgaXMgY29u c3RydWN0ZWQgZnJvbSBESVJFQ1RPUlkgYW5kIHRoZSBidWZmZXIncyB0cnVlCi1hYmJyZXZpYXRl ZCBmaWxlIG5hbWUsIHdpdGggYWxsIGAvJyBjaGFyYWN0ZXJzIGluIHRoZSBuYW1lIHJlcGxhY2Vk IHdpdGggYCMnCi1jaGFyYWN0ZXJzLCBhbmQgYXBwZW5kZWQgd2l0aCBgLmZsYycuCi0KLUlmIHRo ZSBzYW1lIGZpbGUgaGFzIGRpZmZlcmVudCBjYWNoZSBmaWxlIG5hbWVzIHdoZW4gZWRpdGVkIG9u IGRpZmZlcmVudAotbWFjaGluZXMsIGUuZy4sIG9uIG9uZSBtYWNoaW5lIHRoZSBjYWNoZSBmaWxl IG5hbWUgaGFzIHRoZSBwcmVmaXggYCNob21lJywKLXBlcmhhcHMgZHVlIHRvIGF1dG9tb3VudCwg dHJ5IHB1dHRpbmcgaW4geW91ciBgfi8uZW1hY3MnIHNvbWV0aGluZyBsaWtlOgotCi0gKHNldHEg ZGlyZWN0b3J5LWFiYnJldi1hbGlzdCAoY29ucyBcXD0nKFwiXi9ob21lL1wiIC4gXCIvXCIpIGRp cmVjdG9yeS1hYmJyZXYtYWxpc3QpKQotCi1FbWFjcyBhdXRvbWFnaWNhbGx5IHJlbW92ZXMgdGhl IGNvbW1vbiBgL3RtcF9tbnQnIGF1dG9tb3VudCBwcmVmaXggYnkgZGVmYXVsdC4KLQotU2VlIGBm YXN0LWxvY2stY2FjaGUtZGlyZWN0b3J5Jy4iCi0gIChpZiAoc3RyaW5nLWVxdWFsIGRpcmVjdG9y eSAiLiIpCi0gICAgICAoY29uY2F0IGJ1ZmZlci1maWxlLW5hbWUgIi5mbGMiKQotICAgIChsZXQq ICgoYnVmaWxlIChleHBhbmQtZmlsZS1uYW1lIGJ1ZmZlci1maWxlLXRydWVuYW1lKSkKLQkgICAo Y2hhcnMtYWxpc3QKLQkgICAgKGlmIChtZW1xIHN5c3RlbS10eXBlICcod2luZG93cy1udCBjeWd3 aW4pKQotCQknKCg/LyAuICg/IykpICg/IyAuICg/IyA/IykpICg/OiAuICg/XDspKSAoP1w7IC4g KD9cOyA/XDspKSkKLQkgICAgICAnKCg/LyAuICg/IykpICg/IyAuICg/IyA/IykpKSkpCi0JICAg KG1hcGNoYXJzCi0JICAgIChmdW5jdGlvbiAobGFtYmRhIChjKSAob3IgKGNkciAoYXNzcSBjIGNo YXJzLWFsaXN0KSkgKGxpc3QgYykpKSkpKQotICAgICAgKGNvbmNhdAotICAgICAgIChmaWxlLW5h bWUtYXMtZGlyZWN0b3J5IChleHBhbmQtZmlsZS1uYW1lIGRpcmVjdG9yeSkpCi0gICAgICAgKG1h cGNvbmNhdCAjJ2NoYXItdG8tc3RyaW5nIChhcHBseSAjJ2FwcGVuZCAobWFwY2FyIG1hcGNoYXJz IGJ1ZmlsZSkpICIiKQotICAgICAgICIuZmxjIikpKSkKLQwKLTs7IEZvbnQgTG9jayBDYWNoZSBQ cm9jZXNzaW5nIEZ1bmN0aW9uczoKLQotOzsgVGhlIHZlcnNpb24gMyBmb3JtYXQgb2YgdGhlIGNh Y2hlIGlzOgotOzsKLTs7IChmYXN0LWxvY2stY2FjaGUtZGF0YSBWRVJTSU9OIFRJTUVTVEFNUAot OzsgIGZvbnQtbG9jay1zeW50YWN0aWMta2V5d29yZHMgU1lOVEFDVElDLVBST1BFUlRJRVMKLTs7 ICBmb250LWxvY2sta2V5d29yZHMgRkFDRS1QUk9QRVJUSUVTKQotCi0oZGVmdW4gZmFzdC1sb2Nr LXNhdmUtY2FjaGUtMSAoZmlsZSB0aW1lc3RhbXApCi0gIDs7IFNhdmUgdGhlIEZJTEUgd2l0aCB0 aGUgVElNRVNUQU1QIHBsdXMgZm9udGlmaWNhdGlvbiBkYXRhLgotICA7OyBSZXR1cm5zIG5vbi1u aWwgaWYgYSBzYXZlIHdhcyBhdHRlbXB0ZWQgdG8gYSB3cml0YWJsZSBjYWNoZSBmaWxlLgotICAo bGV0ICgodHBidWYgKGdlbmVyYXRlLW5ldy1idWZmZXIgIiAqZmFzdC1sb2NrKiIpKQotCSh2ZXJi b3NlIChpZiAobnVtYmVycCBmYXN0LWxvY2stdmVyYm9zZSkKLQkJICAgICAoPiAoYnVmZmVyLXNp emUpIGZhc3QtbG9jay12ZXJib3NlKQotCQkgICBmYXN0LWxvY2stdmVyYm9zZSkpCi0JKHNhdmVk IHQpKQotICAgICh3aXRoLXRlbXAtbWVzc2FnZQotCSh3aGVuIHZlcmJvc2UKLQkgIChmb3JtYXQg IlNhdmluZyAlcyBmb250IGxvY2sgY2FjaGUuLi4iIChidWZmZXItbmFtZSkpKQotICAgICAgKGNv bmRpdGlvbi1jYXNlIG5pbAotCSAgKHNhdmUtZXhjdXJzaW9uCi0JICAgIChwcmludCAobGlzdCAn ZmFzdC1sb2NrLWNhY2hlLWRhdGEgMwotCQkJIChsaXN0ICdxdW90ZSB0aW1lc3RhbXApCi0JCQkg KGxpc3QgJ3F1b3RlIGZvbnQtbG9jay1zeW50YWN0aWMta2V5d29yZHMpCi0JCQkgKGxpc3QgJ3F1 b3RlIChmYXN0LWxvY2stZ2V0LXN5bnRhY3RpYy1wcm9wZXJ0aWVzKSkKLQkJCSAobGlzdCAncXVv dGUgZm9udC1sb2NrLWtleXdvcmRzKQotCQkJIChsaXN0ICdxdW90ZSAoZmFzdC1sb2NrLWdldC1m YWNlLXByb3BlcnRpZXMpKSkKLQkJICAgdHBidWYpCi0JICAgIChzZXQtYnVmZmVyIHRwYnVmKQot CSAgICAod3JpdGUtcmVnaW9uIChwb2ludC1taW4pIChwb2ludC1tYXgpIGZpbGUgbmlsICdxdWll dGx5KQotCSAgICAoc2V0cSBmYXN0LWxvY2stY2FjaGUtdGltZXN0YW1wIHRpbWVzdGFtcAotCQkg IGZhc3QtbG9jay1jYWNoZS1maWxlbmFtZSBmaWxlKSkKLQkoZXJyb3IgKHNldHEgc2F2ZWQgJ2Vy cm9yKSkgKHF1aXQgKHNldHEgc2F2ZWQgJ3F1aXQpKSkKLSAgICAgIChraWxsLWJ1ZmZlciB0cGJ1 ZikpCi0gICAgKGNvbmQgKChlcSBzYXZlZCAncXVpdCkKLQkgICAobWVzc2FnZSAiU2F2aW5nICVz IGZvbnQgbG9jayBjYWNoZS4uLnF1aXQiIChidWZmZXItbmFtZSkpKQotCSAgKChlcSBzYXZlZCAn ZXJyb3IpCi0JICAgKG1lc3NhZ2UgIlNhdmluZyAlcyBmb250IGxvY2sgY2FjaGUuLi5mYWlsZWQi IChidWZmZXItbmFtZSkpKSkKLSAgICA7OyBXZSByZXR1cm4gbm9uLW5pbCByZWdhcmRsZXNzIG9m IHdoZXRoZXIgYSBmYWlsdXJlIG9jY3VycmVkLgotICAgIHNhdmVkKSkKLQotKGRlZnVuIGZhc3Qt bG9jay1jYWNoZS1kYXRhICh2ZXJzaW9uIHRpbWVzdGFtcAotCQkJICAgICBzeW50YWN0aWMta2V5 d29yZHMgc3ludGFjdGljLXByb3BlcnRpZXMKLQkJCSAgICAga2V5d29yZHMgZmFjZS1wcm9wZXJ0 aWVzCi0JCQkgICAgICZyZXN0IF9pZ25vcmVkKQotICA7OyBGaW5kIHZhbHVlIG9mIHN5bnRhY3Rp YyBrZXl3b3JkcyBpbiBjYXNlIGl0IGlzIGEgc3ltYm9sLgotICAoc2V0cSBmb250LWxvY2stc3lu dGFjdGljLWtleXdvcmRzIChmb250LWxvY2stZXZhbC1rZXl3b3JkcwotCQkJCSAgICAgIGZvbnQt bG9jay1zeW50YWN0aWMta2V5d29yZHMpKQotICA7OyBDb21waWxlIGFsbCBrZXl3b3JkcyBpbiBj YXNlIHNvbWUgYXJlIGFuZCBzb21lIGFyZW4ndC4KLSAgKHdoZW4gZm9udC1sb2NrLXN5bnRhY3Rp Yy1rZXl3b3JkcwotICAgIChzZXRxIGZvbnQtbG9jay1zeW50YWN0aWMta2V5d29yZHMgKGZvbnQt bG9jay1jb21waWxlLWtleXdvcmRzCi0JCQkJCWZvbnQtbG9jay1zeW50YWN0aWMta2V5d29yZHMg dCkpKQotICAod2hlbiBzeW50YWN0aWMta2V5d29yZHMKLSAgICAoc2V0cSBzeW50YWN0aWMta2V5 d29yZHMgKGZvbnQtbG9jay1jb21waWxlLWtleXdvcmRzIHN5bnRhY3RpYy1rZXl3b3JkcyB0KSkp Ci0gIChzZXRxIGZvbnQtbG9jay1rZXl3b3JkcyAoZm9udC1sb2NrLWNvbXBpbGUta2V5d29yZHMg Zm9udC1sb2NrLWtleXdvcmRzKQotCWtleXdvcmRzIChmb250LWxvY2stY29tcGlsZS1rZXl3b3Jk cyBrZXl3b3JkcykpCi0gIDs7IFVzZSB0aGUgRm9udCBMb2NrIGNhY2hlIFNZTlRBQ1RJQy1QUk9Q RVJUSUVTIGFuZCBGQUNFLVBST1BFUlRJRVMgaWYgd2UncmUKLSAgOzsgdXNpbmcgY2FjaGUgVkVS U0lPTiBmb3JtYXQgMywgdGhlIGN1cnJlbnQgYnVmZmVyJ3MgZmlsZSB0aW1lc3RhbXAgbWF0Y2hl cwotICA7OyB0aGUgVElNRVNUQU1QLCB0aGUgY3VycmVudCBidWZmZXIncyBgZm9udC1sb2NrLXN5 bnRhY3RpYy1rZXl3b3JkcycgYXJlIHRoZQotICA7OyBzYW1lIGFzIFNZTlRBQ1RJQy1LRVlXT1JE UywgYW5kIHRoZSBjdXJyZW50IGJ1ZmZlcidzIGBmb250LWxvY2sta2V5d29yZHMnCi0gIDs7IGFy ZSB0aGUgc2FtZSBhcyBLRVlXT1JEUy4KLSAgKGxldCAoKGJ1Zi10aW1lc3RhbXAgKHZpc2l0ZWQt ZmlsZS1tb2R0aW1lKSkKLQkodmVyYm9zZSAoaWYgKG51bWJlcnAgZmFzdC1sb2NrLXZlcmJvc2Up Ci0JCSAgICAgKD4gKGJ1ZmZlci1zaXplKSBmYXN0LWxvY2stdmVyYm9zZSkKLQkJICAgZmFzdC1s b2NrLXZlcmJvc2UpKQotCShsb2FkZWQgdCkpCi0gICAgKGlmIChvciAoLz0gdmVyc2lvbiAzKQot CSAgICAoYnVmZmVyLW1vZGlmaWVkLXApCi0JICAgIChub3QgKGVxdWFsIHRpbWVzdGFtcCBidWYt dGltZXN0YW1wKSkKLQkgICAgKG5vdCAoZXF1YWwgc3ludGFjdGljLWtleXdvcmRzIGZvbnQtbG9j ay1zeW50YWN0aWMta2V5d29yZHMpKQotCSAgICAobm90IChlcXVhbCBrZXl3b3JkcyBmb250LWxv Y2sta2V5d29yZHMpKSkKLQkoc2V0cSBsb2FkZWQgbmlsKQotICAgICAgKHdpdGgtdGVtcC1tZXNz YWdlCi0JICAod2hlbiB2ZXJib3NlCi0JICAgIChmb3JtYXQgIkxvYWRpbmcgJXMgZm9udCBsb2Nr IGNhY2hlLi4uIiAoYnVmZmVyLW5hbWUpKSkKLQkoY29uZGl0aW9uLWNhc2UgbmlsCi0JICAgIChm YXN0LWxvY2stYWRkLXByb3BlcnRpZXMgc3ludGFjdGljLXByb3BlcnRpZXMgZmFjZS1wcm9wZXJ0 aWVzKQotCSAgKGVycm9yIChzZXRxIGxvYWRlZCAnZXJyb3IpKSAocXVpdCAoc2V0cSBsb2FkZWQg J3F1aXQpKSkpCi0gICAgICAoY29uZCAoKGVxIGxvYWRlZCAncXVpdCkKLQkgICAgIChtZXNzYWdl ICJMb2FkaW5nICVzIGZvbnQgbG9jayBjYWNoZS4uLnF1aXQiIChidWZmZXItbmFtZSkpKQotCSAg ICAoKGVxIGxvYWRlZCAnZXJyb3IpCi0JICAgICAobWVzc2FnZSAiTG9hZGluZyAlcyBmb250IGxv Y2sgY2FjaGUuLi5mYWlsZWQiIChidWZmZXItbmFtZSkpKSkpCi0gICAgKHNldHEgZm9udC1sb2Nr LWZvbnRpZmllZCAoZXEgbG9hZGVkIHQpCi0JICBmYXN0LWxvY2stY2FjaGUtdGltZXN0YW1wIChh bmQgKGVxIGxvYWRlZCB0KSB0aW1lc3RhbXApKSkpCi0MCi07OyBUZXh0IFByb3BlcnRpZXMgUHJv Y2Vzc2luZyBGdW5jdGlvbnM6Ci0KLTs7IFRoaXMgaXMgZmFzdCwgYnV0IGZhaWxzIGlmIGFkamFj ZW50IGNoYXJhY3RlcnMgaGF2ZSBkaWZmZXJlbnQgYGZhY2UnIHRleHQKLTs7IHByb3BlcnRpZXMu ICBNYXliZSB0aGF0J3Mgd2h5IEkgZHJvcHBlZCBpdCBpbiB0aGUgZmlyc3QgcGxhY2U/Ci07KGRl ZnVuIGZhc3QtbG9jay1nZXQtZmFjZS1wcm9wZXJ0aWVzICgpCi07ICAiUmV0dXJuIGEgbGlzdCBv ZiBgZmFjZScgdGV4dCBwcm9wZXJ0aWVzIGluIHRoZSBjdXJyZW50IGJ1ZmZlci4KLTtFYWNoIGVs ZW1lbnQgb2YgdGhlIGxpc3QgaXMgb2YgdGhlIGZvcm0gKFZBTFVFIFNUQVJUMSBFTkQxIFNUQVJU MiBFTkQyIC4uLikKLTt3aGVyZSBWQUxVRSBpcyBhIGBmYWNlJyBwcm9wZXJ0eSB2YWx1ZSBhbmQg U1RBUlR4IGFuZCBFTkR4IGFyZSBwb3NpdGlvbnMuIgotOyAgKHNhdmUtcmVzdHJpY3Rpb24KLTsg ICAgKHdpZGVuKQotOyAgICAobGV0ICgoc3RhcnQgKHRleHQtcHJvcGVydHktbm90LWFsbCAocG9p bnQtbWluKSAocG9pbnQtbWF4KSAnZmFjZSBuaWwpKQotOwkgIChsaW1pdCAocG9pbnQtbWF4KSkg ZW5kIHByb3BlcnRpZXMgdmFsdWUgY2VsbCkKLTsgICAgICAod2hpbGUgc3RhcnQKLTsJKHNldHEg ZW5kIChuZXh0LXNpbmdsZS1wcm9wZXJ0eS1jaGFuZ2Ugc3RhcnQgJ2ZhY2UgbmlsIGxpbWl0KQot OwkgICAgICB2YWx1ZSAoZ2V0LXRleHQtcHJvcGVydHkgc3RhcnQgJ2ZhY2UpKQotOwk7OyBNYWtl LCBvciBhZGQgdG8gZXhpc3RpbmcsIGxpc3Qgb2YgcmVnaW9ucyB3aXRoIHNhbWUgYGZhY2UnLgot OwkoaWYgKHNldHEgY2VsbCAoYXNzcSB2YWx1ZSBwcm9wZXJ0aWVzKSkKLTsJICAgIChzZXRjZHIg Y2VsbCAoY29ucyBzdGFydCAoY29ucyBlbmQgKGNkciBjZWxsKSkpKQotOwkgIChzZXRxIHByb3Bl cnRpZXMgKGNvbnMgKGxpc3QgdmFsdWUgc3RhcnQgZW5kKSBwcm9wZXJ0aWVzKSkpCi07CShzZXRx IHN0YXJ0IChuZXh0LXNpbmdsZS1wcm9wZXJ0eS1jaGFuZ2UgZW5kICdmYWNlKSkpCi07ICAgICAg cHJvcGVydGllcykpKQotCi07OyBUaGlzIGlzIHNsb3csIGJ1dCBjb3BlcyBpZiBhZGphY2VudCBj aGFyYWN0ZXJzIGhhdmUgZGlmZmVyZW50IGBmYWNlJyB0ZXh0Ci07OyBwcm9wZXJ0aWVzLCBidXQg ZmFpbHMgaWYgdGhleSBhcmUgbGlzdHMuCi07KGRlZnVuIGZhc3QtbG9jay1nZXQtZmFjZS1wcm9w ZXJ0aWVzICgpCi07ICAiUmV0dXJuIGEgbGlzdCBvZiBgZmFjZScgdGV4dCBwcm9wZXJ0aWVzIGlu IHRoZSBjdXJyZW50IGJ1ZmZlci4KLTtFYWNoIGVsZW1lbnQgb2YgdGhlIGxpc3QgaXMgb2YgdGhl IGZvcm0gKFZBTFVFIFNUQVJUMSBFTkQxIFNUQVJUMiBFTkQyIC4uLikKLTt3aGVyZSBWQUxVRSBp cyBhIGBmYWNlJyBwcm9wZXJ0eSB2YWx1ZSBhbmQgU1RBUlR4IGFuZCBFTkR4IGFyZSBwb3NpdGlv bnMuCi07T25seSB0aG9zZSBgZmFjZScgVkFMVUVzIGluIGBmYXN0LWxvY2stc2F2ZS1mYWNlcycg YXJlIHJldHVybmVkLiIKLTsgIChzYXZlLXJlc3RyaWN0aW9uCi07ICAgICh3aWRlbikKLTsgICAg KGxldCAoKGZhY2VzIChvciBmYXN0LWxvY2stc2F2ZS1mYWNlcyAoZmFjZS1saXN0KSkpIChsaW1p dCAocG9pbnQtbWF4KSkKLTsJICBwcm9wZXJ0aWVzIHJlZ2lvbnMgZmFjZSBzdGFydCBlbmQpCi07 ICAgICAgKHdoaWxlIGZhY2VzCi07CShzZXRxIGZhY2UgKGNhciBmYWNlcykgZmFjZXMgKGNkciBm YWNlcykgcmVnaW9ucyAoKSBlbmQgKHBvaW50LW1pbikpCi07CTs7IE1ha2UgYSBsaXN0IG9mIHN0 YXJ0L2VuZCByZWdpb25zIHdpdGggYGZhY2UnIHByb3BlcnR5IGZhY2UuCi07CSh3aGlsZSAoc2V0 cSBzdGFydCAodGV4dC1wcm9wZXJ0eS1hbnkgZW5kIGxpbWl0ICdmYWNlIGZhY2UpKQotOwkgIChz ZXRxIGVuZCAob3IgKHRleHQtcHJvcGVydHktbm90LWFsbCBzdGFydCBsaW1pdCAnZmFjZSBmYWNl KSBsaW1pdCkKLTsJCXJlZ2lvbnMgKGNvbnMgc3RhcnQgKGNvbnMgZW5kIHJlZ2lvbnMpKSkpCi07 CTs7IEFkZCBgZmFjZScgZmFjZSdzIHJlZ2lvbnMsIGlmIGFueSwgdG8gcHJvcGVydGllcy4KLTsJ KHdoZW4gcmVnaW9ucwotOwkgIChwdXNoIChjb25zIGZhY2UgcmVnaW9ucykgcHJvcGVydGllcykp KQotOyAgICAgIHByb3BlcnRpZXMpKSkKLQotKGRlZnVuIGZhc3QtbG9jay1nZXQtZmFjZS1wcm9w ZXJ0aWVzICgpCi0gICJSZXR1cm4gYSBsaXN0IG9mIGBmYWNlJyB0ZXh0IHByb3BlcnRpZXMgaW4g dGhlIGN1cnJlbnQgYnVmZmVyLgotRWFjaCBlbGVtZW50IG9mIHRoZSBsaXN0IGlzIG9mIHRoZSBm b3JtIChWQUxVRSBTVEFSVDEgRU5EMSBTVEFSVDIgRU5EMiAuLi4pCi13aGVyZSBWQUxVRSBpcyBh IGBmYWNlJyBwcm9wZXJ0eSB2YWx1ZSBhbmQgU1RBUlR4IGFuZCBFTkR4IGFyZSBwb3NpdGlvbnMu IgotICAoc2F2ZS1yZXN0cmljdGlvbgotICAgICh3aWRlbikKLSAgICAobGV0ICgoc3RhcnQgKHRl eHQtcHJvcGVydHktbm90LWFsbCAocG9pbnQtbWluKSAocG9pbnQtbWF4KSAnZmFjZSBuaWwpKQot CSAgZW5kIHByb3BlcnRpZXMgdmFsdWUgY2VsbCkKLSAgICAgICh3aGlsZSBzdGFydAotCShzZXRx IGVuZCAobmV4dC1zaW5nbGUtcHJvcGVydHktY2hhbmdlIHN0YXJ0ICdmYWNlIG5pbCAocG9pbnQt bWF4KSkKLQkgICAgICB2YWx1ZSAoZ2V0LXRleHQtcHJvcGVydHkgc3RhcnQgJ2ZhY2UpKQotCTs7 IE1ha2UsIG9yIGFkZCB0byBleGlzdGluZywgbGlzdCBvZiByZWdpb25zIHdpdGggc2FtZSBgZmFj ZScuCi0JKGNvbmQgKChzZXRxIGNlbGwgKGFzc29jIHZhbHVlIHByb3BlcnRpZXMpKQotCSAgICAg ICAoc2V0Y2RyIGNlbGwgKGNvbnMgc3RhcnQgKGNvbnMgZW5kIChjZHIgY2VsbCkpKSkpCi0JICAg ICAgKChmYXN0LWxvY2stc2F2ZS1mYWNlcCB2YWx1ZSkKLQkgICAgICAgKHB1c2ggKGxpc3QgdmFs dWUgc3RhcnQgZW5kKSBwcm9wZXJ0aWVzKSkpCi0JKHNldHEgc3RhcnQgKHRleHQtcHJvcGVydHkt bm90LWFsbCBlbmQgKHBvaW50LW1heCkgJ2ZhY2UgbmlsKSkpCi0gICAgICBwcm9wZXJ0aWVzKSkp Ci0KLShkZWZ1biBmYXN0LWxvY2stZ2V0LXN5bnRhY3RpYy1wcm9wZXJ0aWVzICgpCi0gICJSZXR1 cm4gYSBsaXN0IG9mIGBzeW50YXgtdGFibGUnIHRleHQgcHJvcGVydGllcyBpbiB0aGUgY3VycmVu dCBidWZmZXIuCi1TZWUgYGZhc3QtbG9jay1nZXQtZmFjZS1wcm9wZXJ0aWVzJy4iCi0gIChzYXZl LXJlc3RyaWN0aW9uCi0gICAgKHdpZGVuKQotICAgIChsZXQgKChzdGFydCAodGV4dC1wcm9wZXJ0 eS1ub3QtYWxsIChwb2ludC1taW4pIChwb2ludC1tYXgpICdzeW50YXgtdGFibGUKLQkJCQkJbmls KSkKLQkgIGVuZCBwcm9wZXJ0aWVzIHZhbHVlIGNlbGwpCi0gICAgICAod2hpbGUgc3RhcnQKLQko c2V0cSBlbmQgKG5leHQtc2luZ2xlLXByb3BlcnR5LWNoYW5nZSBzdGFydCAnc3ludGF4LXRhYmxl IG5pbAotCQkJCQkgICAgICAgKHBvaW50LW1heCkpCi0JICAgICAgdmFsdWUgKGdldC10ZXh0LXBy b3BlcnR5IHN0YXJ0ICdzeW50YXgtdGFibGUpKQotCTs7IE1ha2UsIG9yIGFkZCB0byBleGlzdGlu ZywgbGlzdCBvZiByZWdpb25zIHdpdGggc2FtZSBgc3ludGF4LXRhYmxlJy4KLQkoaWYgKHNldHEg Y2VsbCAoYXNzb2MgdmFsdWUgcHJvcGVydGllcykpCi0JICAgIChzZXRjZHIgY2VsbCAoY29ucyBz dGFydCAoY29ucyBlbmQgKGNkciBjZWxsKSkpKQotCSAgKHB1c2ggKGxpc3QgdmFsdWUgc3RhcnQg ZW5kKSBwcm9wZXJ0aWVzKSkKLQkoc2V0cSBzdGFydCAodGV4dC1wcm9wZXJ0eS1ub3QtYWxsIGVu ZCAocG9pbnQtbWF4KSAnc3ludGF4LXRhYmxlIG5pbCkpKQotICAgICAgcHJvcGVydGllcykpKQot Ci0oZGVmdW4gZmFzdC1sb2NrLWFkZC1wcm9wZXJ0aWVzIChzeW50YWN0aWMtcHJvcGVydGllcyBm YWNlLXByb3BlcnRpZXMpCi0gICJBZGQgYHN5bnRheC10YWJsZScgYW5kIGBmYWNlJyB0ZXh0IHBy b3BlcnRpZXMgdG8gdGhlIGN1cnJlbnQgYnVmZmVyLgotQW55IGV4aXN0aW5nIGBzeW50YXgtdGFi bGUnIGFuZCBgZmFjZScgdGV4dCBwcm9wZXJ0aWVzIGFyZSByZW1vdmVkIGZpcnN0LgotU2VlIGBm YXN0LWxvY2stZ2V0LWZhY2UtcHJvcGVydGllcycuIgotICAod2l0aC1zaWxlbnQtbW9kaWZpY2F0 aW9ucwotICAgIChsZXQgKChpbmhpYml0LXBvaW50LW1vdGlvbi1ob29rcyB0KSkKLSAgICAgIChz YXZlLXJlc3RyaWN0aW9uCi0gICAgICAgICh3aWRlbikKLSAgICAgICAgKGZvbnQtbG9jay11bmZv bnRpZnktcmVnaW9uIChwb2ludC1taW4pIChwb2ludC1tYXgpKQotICAgICAgICA7OwotICAgICAg ICA7OyBTZXQgdGhlIGBzeW50YXgtdGFibGUnIHByb3BlcnR5IGZvciBlYWNoIHN0YXJ0L2VuZCBy ZWdpb24uCi0gICAgICAgIChwY2FzZS1kb2xpc3QgKGAoLHBsaXN0IC4gLHJlZ2lvbnMpIHN5bnRh Y3RpYy1wcm9wZXJ0aWVzKQotCSAgKHdoaWxlIHJlZ2lvbnMKLQkgICAgKGFkZC10ZXh0LXByb3Bl cnRpZXMgKG50aCAwIHJlZ2lvbnMpIChudGggMSByZWdpb25zKSBwbGlzdCkKLQkgICAgKHNldHEg cmVnaW9ucyAobnRoY2RyIDIgcmVnaW9ucykpKSkKLQk7OwotCTs7IFNldCB0aGUgYGZhY2UnIHBy b3BlcnR5IGZvciBlYWNoIHN0YXJ0L2VuZCByZWdpb24uCi0gICAgICAgIChwY2FzZS1kb2xpc3Qg KGAoLHBsaXN0IC4gLHJlZ2lvbnMpIGZhY2UtcHJvcGVydGllcykKLQkgICh3aGlsZSByZWdpb25z Ci0JICAgIChhZGQtdGV4dC1wcm9wZXJ0aWVzIChudGggMCByZWdpb25zKSAobnRoIDEgcmVnaW9u cykgcGxpc3QpCi0JICAgIChzZXRxIHJlZ2lvbnMgKG50aGNkciAyIHJlZ2lvbnMpKSkpKSkpKQot Ci0MCi07OyBJbnN0YWxsIG91cnNlbHZlczoKLQotKGFkZC1ob29rICdhZnRlci1zYXZlLWhvb2sg IydmYXN0LWxvY2stc2F2ZS1jYWNoZS1hZnRlci1zYXZlLWZpbGUpCi0oYWRkLWhvb2sgJ2tpbGwt YnVmZmVyLWhvb2sgIydmYXN0LWxvY2stc2F2ZS1jYWNoZS1iZWZvcmUta2lsbC1idWZmZXIpCi0o dW5sZXNzIG5vbmludGVyYWN0aXZlCi0gIChhZGQtaG9vayAna2lsbC1lbWFjcy1ob29rICMnZmFz dC1sb2NrLXNhdmUtY2FjaGVzLWJlZm9yZS1raWxsLWVtYWNzKSkKLQotOzs7IyMjYXV0b2xvYWQK LSh3aGVuIChmYm91bmRwICdhZGQtbWlub3ItbW9kZSkKLSAgKGRlZnZhciBmYXN0LWxvY2stbW9k ZSBuaWwpCi0gIChhZGQtbWlub3ItbW9kZSAnZmFzdC1sb2NrLW1vZGUgbmlsKSkKLTs7OyMjI2Rv bnQtYXV0b2xvYWQKLSh1bmxlc3MgKGFzc3EgJ2Zhc3QtbG9jay1tb2RlIG1pbm9yLW1vZGUtYWxp c3QpCi0gIChzZXRxIG1pbm9yLW1vZGUtYWxpc3QgKGFwcGVuZCBtaW5vci1tb2RlLWFsaXN0ICco KGZhc3QtbG9jay1tb2RlIG5pbCkpKSkpCi0KLShwcm92aWRlICdmYXN0LWxvY2spCi0KLTs7OyBm YXN0LWxvY2suZWwgZW5kcyBoZXJlCi0KLTs7IExvY2FsIFZhcmlhYmxlczoKLTs7IGJ5dGUtY29t cGlsZS13YXJuaW5nczogKG5vdCBvYnNvbGV0ZSkKLTs7IEVuZDoKZGlmZiAtLWdpdCBhL2xpc3Av b2Jzb2xldGUvbGF6eS1sb2NrLmVsIGIvbGlzcC9vYnNvbGV0ZS9sYXp5LWxvY2suZWwKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjMzVjYjMyMTIuLjAwMDAwMDAwMDAKLS0tIGEvbGlz cC9vYnNvbGV0ZS9sYXp5LWxvY2suZWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDI1ICswLDAgQEAK LTs7OyBsYXp5LWxvY2suZWwgLS0tIGxhenkgZGVtYW5kLWRyaXZlbiBmb250aWZpY2F0aW9uIGZv ciBmYXN0IEZvbnQgTG9jayBtb2RlICAtKi0gbGV4aWNhbC1iaW5kaW5nOiB0OyAtKi0KLQotOzsg Q29weXJpZ2h0IChDKSAxOTk0LTE5OTgsIDIwMDEtMjAyMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KLQotOzsgQXV0aG9yOiBTaW1vbiBNYXJzaGFsbCA8c2ltb25AZ251Lm9yZz4KLTs7 IE1haW50YWluZXI6IGVtYWNzLWRldmVsQGdudS5vcmcKLTs7IEtleXdvcmRzOiBmYWNlcyBmaWxl cwotOzsgVmVyc2lvbjogMi4xMQotOzsgT2Jzb2xldGUtc2luY2U6IDIyLjEKLQotOzsgVGhpcyBm aWxlIGlzIHBhcnQgb2YgR05VIEVtYWNzLgotCi07OyBHTlUgRW1hY3MgaXMgZnJlZSBzb2Z0d2Fy ZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotOzsgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK LTs7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCi07OyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi07 OyBHTlUgRW1hY3MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKLTs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi07OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi07OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotCi07OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotOzsgYWxvbmcgd2l0aCBHTlUgRW1hY3Mu ICBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotCi07OzsgQ29t bWVudGFyeToKLQotOzsgUHVycG9zZToKLTs7Ci07OyBMYXp5IExvY2sgbW9kZSBpcyBhIEZvbnQg TG9jayBzdXBwb3J0IG1vZGUuCi07OyBJdCBtYWtlcyB2aXNpdGluZyBidWZmZXJzIGluIEZvbnQg TG9jayBtb2RlIGZhc3RlciBieSBtYWtpbmcgZm9udGlmaWNhdGlvbgotOzsgYmUgZGVtYW5kLWRy aXZlbiwgZGVmZXJyZWQgYW5kIHN0ZWFsdGh5LCBzbyB0aGF0IGZvbnRpZmljYXRpb24gb25seSBv Y2N1cnMKLTs7IHdoZW4sIGFuZCB3aGVyZSwgbmVjZXNzYXJ5LgotOzsKLTs7IFNlZSBjYXZlYXRz IGFuZCBmZWVkYmFjayBiZWxvdy4KLTs7IFNlZSBhbHNvIHRoZSBmYXN0LWxvY2sgcGFja2FnZS4g IChCdXQgZG9uJ3QgdXNlIHRoZW0gYXQgdGhlIHNhbWUgdGltZSEpCi0KLTs7IEluc3RhbGxhdGlv bjoKLTs7Ci07OyBQdXQgaW4geW91ciB+Ly5lbWFjczoKLTs7Ci07OyAoc2V0cSBmb250LWxvY2st c3VwcG9ydC1tb2RlICdsYXp5LWxvY2stbW9kZSkKLTs7Ci07OyBTdGFydCB1cCBhIG5ldyBFbWFj cyBhbmQgdXNlIGZvbnQtbG9jayBhcyB1c3VhbCAoZXhjZXB0IHRoYXQgeW91IGNhbiB1c2UgdGhl Ci07OyBzby1jYWxsZWQgImdhdWRpZXIiIGZvbnRpZmljYXRpb24gcmVnZXhwcyBvbiBiaWcgZmls ZXMgd2l0aG91dCBmcnVzdHJhdGlvbikuCi07OwotOzsgSW4gYSBidWZmZXIgKHdoaWNoIGhhcyBg Zm9udC1sb2NrLW1vZGUnIGVuYWJsZWQpIHdoaWNoIGlzIGF0IGxlYXN0Ci07OyBgbGF6eS1sb2Nr LW1pbmltdW0tc2l6ZScgY2hhcmFjdGVycyBsb25nLCBidWZmZXIgZm9udGlmaWNhdGlvbiB3aWxs IG5vdAotOzsgb2NjdXIgYW5kIG9ubHkgdGhlIHZpc2libGUgcG9ydGlvbiBvZiB0aGUgYnVmZmVy IHdpbGwgYmUgZm9udGlmaWVkLiAgTW90aW9uCi07OyBhcm91bmQgdGhlIGJ1ZmZlciB3aWxsIGZv bnRpZnkgdGhvc2UgdmlzaWJsZSBwb3J0aW9ucyBub3QgcHJldmlvdXNseQotOzsgZm9udGlmaWVk LiAgSWYgc3RlYWx0aCBmb250aWZpY2F0aW9uIGlzIGVuYWJsZWQsIGJ1ZmZlciBmb250aWZpY2F0 aW9uIHdpbGwKLTs7IG9jY3VyIGluIGludmlzaWJsZSBwYXJ0cyBvZiB0aGUgYnVmZmVyIGFmdGVy IGBsYXp5LWxvY2stc3RlYWx0aC10aW1lJwotOzsgc2Vjb25kcyBvZiBpZGxlIHRpbWUuICBJZiBv bi10aGUtZmx5IGZvbnRpZmljYXRpb24gaXMgZGVmZXJyZWQsIG9uLXRoZS1mbHkKLTs7IGZvbnRp ZmljYXRpb24gd2lsbCBvY2N1ciBhZnRlciBgbGF6eS1sb2NrLWRlZmVyLXRpbWUnIHNlY29uZHMg b2YgaWRsZSB0aW1lLgotCi07OyBVc2VyLXZpc2libGUgZGlmZmVyZW5jZXMgd2l0aCB2ZXJzaW9u IDE6Ci07OwotOzsgLSBWZXJzaW9uIDIgY2FuIGRlZmVyIG9uLXRoZS1mbHkgZm9udGlmaWNhdGlv bi4gIFRoZXJlZm9yZSB5b3UgbmVlZCBub3QsIGFuZAotOzsgc2hvdWxkIG5vdCwgdXNlIGRlZmVy LWxvY2suZWwgd2l0aCB0aGlzIHZlcnNpb24gb2YgbGF6eS1sb2NrLmVsLgotOzsKLTs7IEEgbnVt YmVyIG9mIHZhcmlhYmxlcyBoYXZlIGNoYW5nZWQgbWVhbmluZzoKLTs7Ci07OyAtIEEgdmFsdWUg b2YgbmlsIGZvciB0aGUgdmFyaWFibGUgYGxhenktbG9jay1taW5pbXVtLXNpemUnIG1lYW5zIG5l dmVyIHR1cm4KLTs7IG9uIGRlbWFuZC1kcml2ZW4gZm9udGlmaWNhdGlvbi4gIEluIHZlcnNpb24g MSB0aGlzIG1lYW50IGFsd2F5cyB0dXJuIG9uCi07OyBkZW1hbmQtZHJpdmVuIGZvbnRpZmljYXRp b24uICBJZiB5b3UgcmVhbGx5IHdhbnQgZGVtYW5kLWRyaXZlbiBmb250aWZpY2F0aW9uCi07OyBy ZWdhcmRsZXNzIG9mIGJ1ZmZlciBzaXplLCBzZXQgdGhpcyB2YXJpYWJsZSB0byAwLgotOzsKLTs7 IC0gVGhlIHZhcmlhYmxlIGBsYXp5LWxvY2stc3RlYWx0aC1saW5lcycgY2Fubm90IGhhdmUgYSBu aWwgdmFsdWUuICBJbgotOzsgdmVyc2lvbiAxIHRoaXMgbWVhbnQgdXNlIGB3aW5kb3ctaGVpZ2h0 JyBhcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgbGluZXMgdG8KLTs7IGZvbnRpZnkgYXMgYSBzdGVh bHRoIGNodW5rLiAgVGhpcyBtYWtlcyBubyBzZW5zZTsgc3RlYWx0aCBmb250aWZpY2F0aW9uIGlz Ci07OyBvZiBhIGJ1ZmZlciwgbm90IGEgd2luZG93LgotCi07OyBJbXBsZW1lbnRhdGlvbiBkaWZm ZXJlbmNlcyB3aXRoIHZlcnNpb24gMToKLTs7Ci07OyAtIFZlcnNpb24gMSBvZiBsYXp5LWxvY2su ZWwgaXMgYSBiaXQgb2YgYSBoYWNrLiAgVmVyc2lvbiAxIGRlbWFuZC1kcml2ZW4KLTs7IGZvbnRp ZmljYXRpb24sIHRoZSBjb3JlIGZlYXR1cmUgb2YgbGF6eS1sb2NrLmVsLCBpcyBpbXBsZW1lbnRl ZCBieSBwbGFjaW5nIGEKLTs7IGZ1bmN0aW9uIG9uIGBwb3N0LWNvbW1hbmQtaG9vaycuICBUaGlz IGZ1bmN0aW9uIGZvbnRpZmllcyB3aGVyZSBuZWNlc3NhcnksCi07OyBpLmUuLCB3aGVyZSBhIHdp bmRvdyBzY3JvbGwgaGFzIG9jY3VycmVkLiAgSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9m Ci07OyBwcm9ibGVtcyB3aXRoIHVzaW5nIGBwb3N0LWNvbW1hbmQtaG9vayc6Ci07OwotOzsgKGEp IEFzIHRoZSBuYW1lIHN1Z2dlc3RzLCBgcG9zdC1jb21tYW5kLWhvb2snIGlzIHJ1biBhZnRlciBl dmVyeSBjb21tYW5kLAotOzsgICAgIGkuZS4sIGZyZXF1ZW50bHkgYW5kIHJlZ2FyZGxlc3Mgb2Yg d2hldGhlciBzY3JvbGxpbmcgaGFzIG9jY3VycmVkLgotOzsgKGIpIFNjcm9sbGluZyBjYW4gb2Nj dXIgZHVyaW5nIGEgY29tbWFuZCwgd2hlbiBgcG9zdC1jb21tYW5kLWhvb2snIGlzIG5vdAotOzsg ICAgIHJ1biwgaS5lLiwgaXQgaXMgbm90IG5lY2Vzc2FyaWx5IHJ1biBhZnRlciBzY3JvbGxpbmcg aGFzIG9jY3VycmVkLgotOzsgKGMpIFdoZW4gYHBvc3QtY29tbWFuZC1ob29rJyBpcyBydW4sIHRo ZXJlIGlzIG5vdGhpbmcgdG8gc3VnZ2VzdCB3aGVyZQotOzsgICAgIHNjcm9sbGluZyBtaWdodCBo YXZlIG9jY3VycmVkLCBpLmUuLCB3aGljaCB3aW5kb3dzIGhhdmUgc2Nyb2xsZWQuCi07OwotOzsg VGh1cyBsYXp5LWxvY2suZWwncyBmdW5jdGlvbiBpcyBjYWxsZWQgYWxtb3N0IGFzIG9mdGVuIGFz IHBvc3NpYmxlLCB1c3VhbGx5Ci07OyB3aGVuIGl0IG5lZWQgbm90IGJlIGNhbGxlZCwgeWV0IGl0 IGlzIG5vdCBhbHdheXMgY2FsbGVkIHdoZW4gaXQgaXMgbmVlZGVkLgotOzsgQWxzbywgbGF6eS1s b2NrLmVsJ3MgZnVuY3Rpb24gbXVzdCBjaGVjayBlYWNoIHdpbmRvdyB0byBzZWUgaWYgYSBzY3Jv bGwgaGFzCi07OyBvY2N1cnJlZCB0aGVyZS4gIFdvcnNlIHN0aWxsLCBsYXp5LWxvY2suZWwncyBm dW5jdGlvbiBtdXN0IGZvbnRpZnkgYSByZWdpb24KLTs7IHR3aWNlIGFzIGxhcmdlIGFzIG5lY2Vz c2FyeSB0byBtYWtlIHN1cmUgdGhlIHdpbmRvdyBpcyBjb21wbGV0ZWx5IGZvbnRpZmllZC4KLTs7 IEJhc2ljYWxseSwgYHBvc3QtY29tbWFuZC1ob29rJyBpcyBjb21wbGV0ZWx5IGluYXBwcm9wcmlh dGUgZm9yIGxhenktbG9jay5lbC4KLTs7Ci07OyBJZGVhbGx5LCB3ZSB3YW50IHRvIGF0dGFjaCBs YXp5LWxvY2suZWwncyBmdW5jdGlvbiB0byBhIGhvb2sgdGhhdCBpcyBydW4KLTs7IG9ubHkgd2hl biBzY3JvbGxpbmcgb2NjdXJzLCBlLmcuLCBgd2luZG93LXN0YXJ0JyBoYXMgY2hhbmdlZCwgYW5k IHRlbGxzIHVzCi07OyBhcyBtdWNoIGluZm9ybWF0aW9uIGFzIHdlIG5lZWQsIGkuZS4sIHRoZSB3 aW5kb3cgYW5kIGl0cyBuZXcgYnVmZmVyIHJlZ2lvbi4KLTs7IFJpY2hhcmQgU3RhbGxtYW4gaW1w bGVtZW50ZWQgYSBgd2luZG93LXNjcm9sbC1mdW5jdGlvbnMnIGZvciBFbWFjcyAxOS4zMC4KLTs7 IEZ1bmN0aW9ucyBvbiBpdCBhcmUgcnVuIHdoZW4gYHdpbmRvdy1zdGFydCcgaGFzIGNoYW5nZWQs IGFuZCBhcmUgc3VwcGxpZWQKLTs7IHdpdGggdGhlIHdpbmRvdyBhbmQgdGhlIHdpbmRvdydzIG5l dyBgd2luZG93LXN0YXJ0JyBwb3NpdGlvbi4gIChJdCB3b3VsZCBiZQotOzsgYmV0dGVyIGlmIGl0 IGFsc28gc3VwcGxpZWQgdGhlIHdpbmRvdydzIG5ldyBgd2luZG93LWVuZCcgcG9zaXRpb24sIGJ1 dCB0aGF0Ci07OyBpcyBjYWxjdWxhdGVkIGFzIHBhcnQgb2YgdGhlIHJlZGlzcGxheSBwcm9jZXNz LCBhbmQgdGhlIGZ1bmN0aW9ucyBvbgotOzsgYHdpbmRvdy1zY3JvbGwtZnVuY3Rpb25zJyBhcmUg cnVuIGJlZm9yZSByZWRpc3BsYXkgaGFzIGZpbmlzaGVkLikgIFRodXMsIHRoZQotOzsgaG9vayBk ZWFscyB3aXRoIHRoZSBhYm92ZSBwcm9ibGVtcyAoYSksIChiKSBhbmQgKGMpLgotOzsKLTs7IElm IG9ubHkgbGlmZSB3YXMgdGhhdCBlYXN5LiAgVmVyc2lvbiAyIGRlbWFuZC1kcml2ZW4gZm9udGlm aWNhdGlvbiBpcyBtb3N0bHkKLTs7IGltcGxlbWVudGVkIGJ5IHBsYWNpbmcgYSBmdW5jdGlvbiBv biBgd2luZG93LXNjcm9sbC1mdW5jdGlvbnMnLiAgSG93ZXZlciwKLTs7IG5vdCBhbGwgc2Nyb2xs aW5nIG9jY3VycyB3aGVuIGB3aW5kb3ctc3RhcnQnIGhhcyBjaGFuZ2VkLiAgQSBjaGFuZ2UgaW4K LTs7IHdpbmRvdyBzaXplLCBlLmcuLCB2aWEgQy14IDEsIG9yIGEgc2lnbmlmaWNhbnQgZGVsZXRp b24sIGUuZy4sIG9mIGEgbnVtYmVyCi07OyBvZiBsaW5lcywgY2F1c2VzIHRleHQgcHJldmlvdXNs eSBpbnZpc2libGUgKGkuZS4sIGFmdGVyIGB3aW5kb3ctZW5kJykgdG8KLTs7IGJlY29tZSB2aXNp YmxlIHdpdGhvdXQgY2hhbmdpbmcgYHdpbmRvdy1zdGFydCcuICBBcmd1YWJseSwgdGhlc2UgZXZl bnRzIGFyZQotOzsgbm90IHNjcm9sbGluZyBldmVudHMsIGJ1dCBmb250aWZpY2F0aW9uIG11c3Qg b2NjdXIgZm9yIGxhenktbG9jay5lbCB0byB3b3JrLgotOzsgSG9va3MgYHdpbmRvdy1zaXplLWNo YW5nZS1mdW5jdGlvbnMnIGFuZCBgcmVkaXNwbGF5LWVuZC10cmlnZ2VyLWZ1bmN0aW9ucycKLTs7 IHdlcmUgYWRkZWQgZm9yIHRoZXNlIGNpcmN1bXN0YW5jZXMuCi07OwotOzsgKEJlbiBXaW5nIHRo aW5rcyB0aGVzZSBob29rcyBhcmUgImhvcnJpYmx5IGhvcnJpYmx5IGtsdWRneSIsIGFuZCBpbXBs ZW1lbnRlZAotOzsgYSBgcHJlLWlkbGUtaG9vaycsIGEgYG1vdGhlci1vZi1hbGwtcG9zdC1jb21t YW5kLWhvb2tzJywgZm9yIFhFbWFjcyAxOS4xNC4KLTs7IEhlIHRoZW4gaGFja2VkIHVwIGEgdmVy c2lvbiAxIGxhenktbG9jay5lbCB0byB1c2UgYHByZS1pZGxlLWhvb2snIHJhdGhlcgotOzsgdGhh biBgcG9zdC1jb21tYW5kLWhvb2snLiAgV2hlcmVhcyBmdW5jdGlvbnMgb24gYHBvc3QtY29tbWFu ZC1ob29rJyBhcmUKLTs7IGNhbGxlZCBhbG1vc3QgYXMgb2Z0ZW4gYXMgcG9zc2libGUsIGZ1bmN0 aW9ucyBvbiBgcHJlLWlkbGUtaG9vaycgcmVhbGx5IGFyZQotOzsgY2FsbGVkIGFzIG9mdGVuIGFz IHBvc3NpYmxlLCBldmVuIHdoZW4gdGhlIG1vdXNlIG1vdmVzIGFuZCwgb24gc29tZSBzeXN0ZW1z LAotOzsgd2hpbGUgWEVtYWNzIGlzIGlkbGUuICBUaHVzLCB0aGUgaG9vayBkZWFscyB3aXRoIHRo ZSBhYm92ZSBwcm9ibGVtIChiKSwgYnV0Ci07OyB1bmZvcnR1bmF0ZWx5IGl0IG1ha2VzIChhKSB3 b3JzZSBhbmQgZG9lcyBub3QgYWRkcmVzcyAoYykgYXQgYWxsLgotOzsKLTs7IEkgZnJlZWx5IGFk bWl0IHRoYXQgYHJlZGlzcGxheS1lbmQtdHJpZ2dlci1mdW5jdGlvbnMnIGFuZCwgdG8gYSBtdWNo IGxlc3NlcgotOzsgZXh0ZW50LCBgd2luZG93LXNpemUtY2hhbmdlLWZ1bmN0aW9ucycgYXJlIG5v dCBwcmV0dHkuICBIb3dldmVyLCBJIGZlZWwgdGhhdAotOzsgYSBgd2luZG93LXNjcm9sbC1mdW5j dGlvbnMnIGZlYXR1cmUgaXMgY2xlYW5lciB0aGFuIGEgYHByZS1pZGxlLWhvb2snLCBhbmQKLTs7 IHRoZSByZXN1bHQgaXMgZmFzdGVyIGFuZCBzbWFsbGVyLCBsZXNzIGludHJ1c2l2ZSBhbmQgbW9y ZSB0YXJnZXRlZCwgY29kZS4KLTs7IFNpbmNlIGBwcmUtaWRsZS1ob29rJyBpcyBwcmV0dHkgbXVj aCBsaWtlIGBwb3N0LWNvbW1hbmQtaG9vaycsIHRoZXJlIGlzIG5vCi07OyBwb2ludCBpbiBtYWtp bmcgdGhpcyB2ZXJzaW9uIG9mIGxhenktbG9jay5lbCB3b3JrIHdpdGggaXQuICBBbnl3YXksIHRo YXQncwotOzsgTGl0IDMwIG9mIG15IGh1bWJsZSBvcGluaW9uLgotOzsKLTs7IC0gVmVyc2lvbiAx IHN0ZWFsdGggZm9udGlmaWNhdGlvbiBpcyBhbHNvIGltcGxlbWVudGVkIGJ5IHBsYWNpbmcgYSBm dW5jdGlvbgotOzsgb24gYHBvc3QtY29tbWFuZC1ob29rJy4gIFRoaXMgZnVuY3Rpb24gd2FpdHMg Zm9yIGEgZ2l2ZW4gYW1vdW50IG9mIHRpbWUsCi07OyBhbmQsIGlmIEVtYWNzIHJlbWFpbnMgaWRs ZSwgZm9udGlmaWVzIHdoZXJlIG5lY2Vzc2FyeS4gIEFnYWluLCB0aGVyZSBhcmUgYQotOzsgbnVt YmVyIG9mIHByb2JsZW1zIHdpdGggdXNpbmcgYHBvc3QtY29tbWFuZC1ob29rJzoKLTs7Ci07OyAo YSkgRnVuY3Rpb25zIG9uIGBwb3N0LWNvbW1hbmQtaG9vaycgYXJlIHJ1biBzZXF1ZW50aWFsbHks IHNvIHRoaXMgZnVuY3Rpb24KLTs7ICAgICBjYW4gaW50ZXJmZXJlIHdpdGggb3RoZXIgZnVuY3Rp b25zIG9uIHRoZSBob29rLCBhbmQgdmljZSB2ZXJzYS4KLTs7IChiKSBUaGlzIGZ1bmN0aW9uIHdh aXRzIGZvciBhIGdpdmVuIGFtb3VudCBvZiB0aW1lLCBzbyBpdCBjYW4gaW50ZXJmZXJlIHdpdGgK LTs7ICAgICB2YXJpb3VzIGZlYXR1cmVzIHRoYXQgYXJlIGRlYWx0IHdpdGggYnkgRW1hY3MgYWZ0 ZXIgYSBjb21tYW5kLCBlLmcuLAotOzsgICAgIHJlZ2lvbiBoaWdobGlnaHRpbmcsIGFzeW5jaHJv bm91cyB1cGRhdGluZyBhbmQga2V5c3Ryb2tlIGVjaG9pbmcuCi07OyAoYykgRm9udGlmaWNhdGlv biBtYXkgYmUgcmVxdWlyZWQgZHVyaW5nIGEgY29tbWFuZCwgd2hlbiBgcG9zdC1jb21tYW5kLWhv b2snCi07OyAgICAgaXMgbm90IHJ1bi4gIChWZXJzaW9uIDIgZGVmZXJyZWQgZm9udGlmaWNhdGlv biBvbmx5LikKLTs7Ci07OyBBZ2FpbiwgYHBvc3QtY29tbWFuZC1ob29rJyBpcyBjb21wbGV0ZWx5 IGluYXBwcm9wcmlhdGUgZm9yIGxhenktbG9jay5lbC4KLTs7IFJpY2hhcmQgU3RhbGxtYW4gYW5k IE1vcnRlbiBXZWxpbmRlciBpbXBsZW1lbnRlZCBpbnRlcm5hbCBUaW1lcnMgYW5kIElkbGUKLTs7 IFRpbWVycyBmb3IgRW1hY3MgMTkuMzEuICBGdW5jdGlvbnMgY2FuIGJlIHJ1biBpbmRlcGVuZGVu dGx5IGF0IGdpdmVuIHRpbWVzCi07OyBvciBhZnRlciBnaXZlbiBhbW91bnRzIG9mIGlkbGUgdGlt ZS4gIFRodXMsIHRoZSBmZWF0dXJlIGRlYWxzIHdpdGggdGhlIGFib3ZlCi07OyBwcm9ibGVtcyAo YSksIChiKSBhbmQgKGMpLiAgVmVyc2lvbiAyIGRlZmVycmFsIGFuZCBzdGVhbHRoIGFyZSBpbXBs ZW1lbnRlZAotOzsgYnkgZnVuY3Rpb25zIG9uIElkbGUgVGltZXJzLiAgKEEgZnVuY3Rpb24gb24g WEVtYWNzJyBgcHJlLWlkbGUtaG9vaycgaXMKLTs7IHNpbWlsYXIgdG8gYW4gRW1hY3MgSWRsZSBU aW1lciBmdW5jdGlvbiB3aXRoIGEgZml4ZWQgemVybyBzZWNvbmQgdGltZW91dC4pCi0KLTs7IC0g VmVyc2lvbiAxIGhhcyB0aGUgZm9sbG93aW5nIHByb2JsZW1zIChyZWxhdGl2ZSB0byB2ZXJzaW9u IDIpOgotOzsKLTs7IChhKSBJdCBpcyBzbG93IHdoZW4gaXQgZG9lcyBpdHMgam9iLgotOzsgKGIp IEl0IGRvZXMgbm90IGFsd2F5cyBkbyBpdHMgam9iIHdoZW4gaXQgc2hvdWxkLgotOzsgKGMpIEl0 IHNsb3dzIGFsbCBpbnRlcmFjdGlvbiAod2hlbiBpdCBkb2Vzbid0IG5lZWQgdG8gZG8gaXRzIGpv YikuCi07OyAoZCkgSXQgaW50ZXJmZXJlcyB3aXRoIG90aGVyIHBhY2thZ2UgZnVuY3Rpb25zIG9u IGBwb3N0LWNvbW1hbmQtaG9vaycuCi07OyAoZSkgSXQgaW50ZXJmZXJlcyB3aXRoIEVtYWNzIHRo aW5ncyB3aXRoaW4gdGhlIHJlYWQtZXZhbCBsb29wLgotOzsKLTs7IEJlbidzIGhhY2tlZC11cCBs YXp5LWxvY2suZWwgMS4xNCBhbG1vc3Qgc29sdmVkIChiKSBidXQgbWFkZSAoYykgd29yc2UuCi07 OwotOzsgLSBWZXJzaW9uIDIgaGFzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBmZWF0dXJlcyAo cmVsYXRpdmUgdG8gdmVyc2lvbiAxKToKLTs7Ci07OyAoYSkgSXQgY2FuIGRlZmVyIGZvbnRpZmlj YXRpb24gKGJvdGggb24tdGhlLWZseSBhbmQgb24tc2Nyb2xsaW5nKS4KLTs7IChiKSBJdCBjYW4g Zm9udGlmeSBjb250ZXh0dWFsbHkgKHN5bnRhY3RpY2FsbHkgdHJ1ZSBvbi10aGUtZmx5KS4KLQot OzsgQ2F2ZWF0czoKLTs7Ci07OyBMYXp5IExvY2sgbW9kZSBkb2VzIG5vdCB3b3JrIGVmZmljaWVu dGx5IHdpdGggT3V0bGluZSBtb2RlLgotOzsgVGhpcyBpcyBiZWNhdXNlIHdoZW4gaW4gT3V0bGlu ZSBtb2RlLCBhbHRob3VnaCB0ZXh0IG1heSBiZSBub3QgdmlzaWJsZSB0bwotOzsgeW91IGluIHRo ZSB3aW5kb3csIHRoZSB0ZXh0IGlzIHZpc2libGUgdG8gRW1hY3MgTGlzcCBjb2RlIChub3Qgc3Vy cHJpc2luZ2x5KQotOzsgYW5kIExhenkgTG9jayBmb250aWZpZXMgaXQgbWVyY2lsZXNzbHkuICBN YXliZSBpdCB3aWxsIGJlIGZpeGVkIG9uZSBkYXkuCi07OwotOzsgQmVjYXVzZSBidWZmZXIgdGV4 dCBpcyBub3QgbmVjZXNzYXJpbHkgZm9udGlmaWVkLCBvdGhlciBwYWNrYWdlcyB0aGF0IGV4cGVj dAotOzsgYnVmZmVyIHRleHQgdG8gYmUgZm9udGlmaWVkIGluIEZvbnQgTG9jayBtb2RlIGVpdGhl ciBtaWdodCBub3Qgd29yayBhcwotOzsgZXhwZWN0ZWQsIG9yIG1pZ2h0IG5vdCBkaXNwbGF5IGJ1 ZmZlciB0ZXh0IGFzIGV4cGVjdGVkLiAgQW4gZXhhbXBsZSBvZiB0aGUKLTs7IGxhdHRlciBpcyBg b2NjdXInLCB3aGljaCBjb3BpZXMgbGluZXMgb2YgYnVmZmVyIHRleHQgaW50byBhbm90aGVyIGJ1 ZmZlci4KLTs7Ci07OyBJbiBFbWFjcyAxOS4zMCwgTGF6eSBMb2NrIG1vZGUgZG9lcyBub3QgZW5z dXJlIHRoYXQgYW4gZXhpc3RpbmcgYnVmZmVyIGlzCi07OyBmb250aWZpZWQgaWYgaXQgaXMgbWFk ZSB2aXNpYmxlIHZpYSBhIG1pbmlidWZmZXItbGVzcyBjb21tYW5kIHRoYXQgcmVwbGFjZXMKLTs7 IGFuIGV4aXN0aW5nIHdpbmRvdydzIGJ1ZmZlciAoZS5nLiwgdmlhIHRoZSBCdWZmZXJzIG1lbnUp LiAgVXBncmFkZSEKLTs7Ci07OyBJbiBFbWFjcyAxOS4zMCwgTGF6eSBMb2NrIG1vZGUgZG9lcyBu b3Qgd29yayB3ZWxsIHdpdGggVHJhbnNpZW50IE1hcmsgbW9kZQotOzsgb3IgbW9kZXMgYmFzZWQg b24gQ29taW50IG1vZGUgKGUuZy4sIFNoZWxsIG1vZGUpLCBhbmQgYWxzbyBpbnRlcmZlcmVzIHdp dGgKLTs7IHRoZSBlY2hvaW5nIG9mIGtleXN0cm9rZXMgaW4gdGhlIG1pbmlidWZmZXIuICBUaGlz IGlzIGJlY2F1c2Ugb2YgdGhlIHdheQotOzsgZGVmZXJyYWwgYW5kIHN0ZWFsdGggaGF2ZSB0byBi ZSBpbXBsZW1lbnRlZCBmb3IgRW1hY3MgMTkuMzAuICBVcGdyYWRlIQotOzsKLTs7IEN1cnJlbnRs eSBYRW1hY3MgZG9lcyBub3QgaGF2ZSB0aGUgZmVhdHVyZXMgdG8gc3VwcG9ydCB0aGlzIHZlcnNp b24gb2YKLTs7IGxhenktbG9jay5lbC4gIE1heWJlIGl0IHdpbGwgb25lIGRheS4KLQwKLTs7IEhp c3Rvcnk6Ci07OwotOzsgMS4xNS0tMi4wMDoKLTs7IC0gUmV3cml0ZSBmb3IgRW1hY3MgMTkuMzAg YW5kIHRoZSBmZWF0dXJlcyBybXMgYWRkZWQgdG8gc3VwcG9ydCBsYXp5LWxvY2suZWwKLTs7ICAg c28gdGhhdCBpdCBjb3VsZCB3b3JrIGNvcnJlY3RseSBhbmQgZWZmaWNpZW50bHkuCi07OyAtIE1h bnkgdGhhbmtzIHRvIHRob3NlIHdobyByZXBvcnRlZCBidWdzLCBmaXhlZCBidWdzLCBtYWRlIHN1 Z2dlc3Rpb25zIG9yCi07OyAgIG90aGVyd2lzZSBjb250cmlidXRlZCBpbiB0aGUgdmVyc2lvbiAx IGN5Y2xlOyBKYXJpIEFhbHRvLCBLZXZpbiBCcm9hZGV5LAotOzsgICBVbHJpayBEaWNrb3csIEJp bGwgRHVidXF1ZSwgQm9iIEdsaWNrc3RlaW4sIEJvcmlzIEdvbGRvd3NreSwKLTs7ICAgSm9uYXMg SmFybmVzdHJvbSwgRGF2aWQgS2FyciwgTWljaGFlbCBLaWZlciwgRXJpayBOYWdndW0sIFJpY2sg U2xhZGtleSwKLTs7ICAgSmltIFRob21wc29uLCBCZW4gV2luZywgSWx5YSBaYWtoYXJldmljaCwg YW5kIFJpY2hhcmQgU3RhbGxtYW4uCi07OyAyLjAwLS0yLjAxOgotOzsgLSBNYWRlIGBsYXp5LWxv Y2stZm9udGlmeS1hZnRlci1jb21tYW5kJyBhbHdheXMgYHNpdC1mb3InIGFuZCBzbyByZWRpc3Bs YXkKLTs7IC0gVXNlIGBidWZmZXItbmFtZScgbm90IGBidWZmZXItbGl2ZS1wJyAoQmlsbCBEdWJ1 cXVlIGhpbnQpCi07OyAtIE1hZGUgYGxhenktbG9jay1pbnN0YWxsJyBkbyBgYWRkLXRvLWxpc3Qn IG5vdCBgc2V0cScgb2YgYGN1cnJlbnQtYnVmZmVyJwotOzsgLSBNYWRlIGBsYXp5LWxvY2stZm9u dGlmeS1hZnRlci1pbnN0YWxsJyBsb29wIG92ZXIgYnVmZmVyIGxpc3QKLTs7IC0gTWFkZSBgbGF6 eS1sb2NrLWFycmFuZ2UtYmVmb3JlLWNoYW5nZScgdG8gYXJyYW5nZSBgd2luZG93LWVuZCcgdHJp Z2dlcmluZwotOzsgLSBNYWRlIGBsYXp5LWxvY2stbGV0LWJ1ZmZlci1zdGF0ZScgd3JhcCBib3Ro IGBiZWZ0ZXItY2hhbmdlLWZ1bmN0aW9ucycKLTs7IC0gTWFkZSBgbGF6eS1sb2NrLWZvbnRpZnkt cmVnaW9uJyBkbyBgY29uZGl0aW9uLWNhc2UnIChIeW1hbiBSb3NlbiByZXBvcnQpCi07OyAyLjAx LS0yLjAyOgotOzsgLSBVc2UgYGJ1ZmZlci1saXZlLXAnIGFzIGBidWZmZXItbmFtZScgY2FuIGJh cmYgKFJpY2hhcmQgU3RhbnRvbiByZXBvcnQpCi07OyAtIE1hZGUgYGxhenktbG9jay1pbnN0YWxs JyBzZXQgYGZvbnQtbG9jay1mb250aWZpZWQnIChLZXZpbiBEYXZpZHNvbiByZXBvcnQpCi07OyAt IE1hZGUgYGxhenktbG9jay1pbnN0YWxsJyBhZGQgaG9va3Mgb25seSBpZiBuZWVkZWQKLTs7IC0g TWFkZSBgbGF6eS1sb2NrLXVuc3RhbGwnIGFkZCBgZm9udC1sb2NrLWFmdGVyLWNoYW5nZS1mdW5j dGlvbicgaWYgbmVlZGVkCi07OyAyLjAyLS0yLjAzOgotOzsgLSBNYWRlIGBsYXp5LWxvY2stZm9u dGlmeS1yZWdpb24nIGRvIGBjb25kaXRpb24tY2FzZScgZm9yIGBxdWl0JyB0b28KLTs7IC0gTWFk ZSBgbGF6eS1sb2NrLW1vZGUnIHJlc3BlY3QgdGhlIHZhbHVlIG9mIGBmb250LWxvY2staW5oaWJp dC10aGluZy1sb2NrJwotOzsgLSBBZGRlZCBgbGF6eS1sb2NrLWFmdGVyLXVuZm9udGlmeS1idWZm ZXInCi07OyAtIFJlbW92ZWQgYGxhenktbG9jay1mb250aWZ5LWFmdGVyLWluc3RhbGwnIGhhY2sK LTs7IC0gTWFkZSBgbGF6eS1sb2NrLWZvbnRpZnktYWZ0ZXItc2Nyb2xsJyBub3QgYHNldC1idWZm ZXInIHRvIGB3aW5kb3ctYnVmZmVyJwotOzsgLSBNYWRlIGBsYXp5LWxvY2stZm9udGlmeS1hZnRl ci10cmlnZ2VyJyBub3QgYHNldC1idWZmZXInIHRvIGB3aW5kb3ctYnVmZmVyJwotOzsgLSBNYWRl IGBsYXp5LWxvY2stZm9udGlmeS1hZnRlci1pZGxlJyBiZSBpbnRlcnJ1cHRpYmxlIChTY290dCBC dXJzb24gaGludCkKLTs7IDIuMDMtLTIuMDQ6Ci07OyAtIFJld3JpdGUgZm9yIEVtYWNzIDE5LjMx IGlkbGUgdGltZXJzCi07OyAtIFJlbmFtZWQgYGJ1ZmZlci13aW5kb3dzJyB0byBgZ2V0LWJ1ZmZl ci13aW5kb3ctbGlzdCcKLTs7IC0gUmVtb3ZlZCBgYnVmZmVyLWxpdmUtcCcKLTs7IC0gTWFkZSBg bGF6eS1sb2NrLWRlZmVyLWFmdGVyLWNoYW5nZScgYWx3YXlzIHNhdmUgYGN1cnJlbnQtYnVmZmVy JwotOzsgLSBNYWRlIGBsYXp5LWxvY2stZm9udGlmeS1hZnRlci1kZWZlcicganVzdCBwcm9jZXNz IGJ1ZmZlcnMKLTs7IC0gTWFkZSBgbGF6eS1sb2NrLWluc3RhbGwtaG9va3MnIGFkZCBob29rcyBj b3JyZWN0bHkgKEtldmluIEJyb2FkZXkgcmVwb3J0KQotOzsgLSBNYWRlIGBsYXp5LWxvY2staW5z dGFsbCcgY29wZSBpZiBgbGF6eS1sb2NrLWRlZmVyLXRpbWUnIGlzIGEgbGlzdAotOzsgMi4wNC0t Mi4wNToKLTs7IC0gUmV3cml0ZSBmb3IgQ29tbW9uIExpc3AgbWFjcm9zCi07OyAtIEFkZGVkIGBk by13aGlsZScgbWFjcm8KLTs7IC0gUmVuYW1lZCBgbGF6eS1sb2NrLWxldC1idWZmZXItc3RhdGUn IG1hY3JvIHRvIGBzYXZlLWJ1ZmZlci1zdGF0ZScKLTs7IC0gUmV0dXJuZWQgYGxhenktbG9jay1m b250aWZ5LWFmdGVyLWluc3RhbGwnIGhhY2sgKERhcnJlbiBIYWxsIGhpbnQpCi07OyAtIEFkZGVk IGBsYXp5LWxvY2stZGVmZXItb24tc2Nyb2xsaW5nJyBmdW5jdGlvbmFsaXR5IChTY290dCBCeWVy IGhpbnQpCi07OyAtIE1hZGUgYGxhenktbG9jay1tb2RlJyB3cmFwIGBmb250LWxvY2stc3VwcG9y dC1tb2RlJwotOzsgMi4wNS0tMi4wNjoKLTs7IC0gTWFkZSBgbGF6eS1sb2NrLWZvbnRpZnktYWZ0 ZXItZGVmZXInIHN3YXAgY29ycmVjdGx5IChTY290dCBCeWVyIHJlcG9ydCkKLTs7IDIuMDYtLTIu MDc6Ci07OyAtIEFkZGVkIGBsYXp5LWxvY2stc3RlYWx0aC1sb2FkJyBmdW5jdGlvbmFsaXR5IChS b2IgSG9vZnQgaGludCkKLTs7IC0gTWFkZSBgbGF6eS1sb2NrLXVuc3RhbGwnIGNhbGwgYGxhenkt bG9jay1mb250aWZ5LXJlZ2lvbicgaWYgbmVlZGVkCi07OyAtIE1hZGUgYGxhenktbG9jay1tb2Rl JyBjYWxsIGBsYXp5LWxvY2stdW5zdGFsbCcgb25seSBpZiBuZWVkZWQKLTs7IC0gTWFkZSBgbGF6 eS1sb2NrLWRlZmVyLWFmdGVyLXNjcm9sbCcgZG8gYHNldC13aW5kb3ctcmVkaXNwbGF5LWVuZC10 cmlnZ2VyJwotOzsgLSBBZGRlZCBgbGF6eS1sb2NrLWRlZmVyLWNvbnRleHR1YWxseScgZnVuY3Rp b25hbGl0eQotOzsgLSBBZGRlZCBgbGF6eS1sb2NrLWRlZmVyLW9uLXRoZS1mbHknIGZyb20gYGxh enktbG9jay1kZWZlci10aW1lJwotOzsgLSBSZW5hbWVkIGBsYXp5LWxvY2stZGVmZXItZHJpdmVu JyB0byBgbGF6eS1sb2NrLWRlZmVyLW9uLXNjcm9sbGluZycKLTs7IC0gUmVtb3ZlZCBgbGF6eS1s b2NrLXN1Ym1pdC1idWctcmVwb3J0JyBhbmQgYmFkZSBmYXJld2VsbAotOzsgMi4wNy0tMi4wODoK LTs7IC0gTWFkZSBgbGF6eS1sb2NrLWZvbnRpZnktY29uc2VydmF0aXZlbHknIGZvbnRpZnkgYXJv dW5kIGB3aW5kb3ctcG9pbnQnCi07OyAtIE1hZGUgYHNhdmUtYnVmZmVyLXN0YXRlJyB3cmFwIGBp bmhpYml0LXBvaW50LW1vdGlvbi1ob29rcycKLTs7IC0gQWRkZWQgQ3VzdG9tIHN1cHBvcnQKLTs7 IDIuMDgtLTIuMDk6Ci07OyAtIFJlbW92ZWQgYGJ5dGUtKicgdmFyaWFibGVzIGZyb20gYGV2YWwt d2hlbi1jb21waWxlJyAoRXJpayBOYWdndW0gaGludCkKLTs7IC0gTWFkZSB2YXJpb3VzIHdyYXBw aW5nIGBpbmhpYml0LXBvaW50LW1vdGlvbi1ob29rcycgKFZpbmljaXVzIExhdG9ycmUgaGludCkK LTs7IC0gTWFkZSBgbGF6eS1sb2NrLWZvbnRpZnktYWZ0ZXItaWRsZScgd3JhcCBgbWluaWJ1ZmZl ci1hdXRvLXJhaXNlJwotOzsgLSBNYWRlIGBsYXp5LWxvY2stZm9udGlmeS1hZnRlci1kZWZlcicg cGFyYW5vaWQgYWJvdXQgZGVmZXJyZWQgYnVmZmVycwotOzsgMi4wOS0tMi4xMDoKLTs7IC0gVXNl IGB3aW5kb3ctZW5kJyBVUERBVEUgYXJnIGZvciBFbWFjcyAyMC40IGFuZCBsYXRlci4KLTs7IC0g TWFkZSBkZWZlcnJhbCBgd2lkZW4nIGJlZm9yZSB1bmZvbnRpZnlpbmcgKERhbiBOaWNvbGFlc2N1 IHJlcG9ydCkKLTs7IC0gVXNlIGBsYXp5LWxvY2stZm9udGlmeS1hZnRlci12aXNhZ2UnIGZvciBo aWRlc2hvdy5lbCAoRGFuIE5pY29sYWVzY3UgaGludCkKLTs7IC0gVXNlIGBvdGhlcicgd2lkZ2V0 IHdoZXJlIHBvc3NpYmxlIChBbmRyZWFzIFNjaHdhYiBmaXgpCi07OyAyLjEwLS0yLjExOgotOzsg LSBVc2VkIGB3aXRoLXRlbXAtbWVzc2FnZScgd2hlcmUgcG9zc2libGUgdG8gbWFrZSBtZXNzYWdl cyB0ZW1wb3JhcnkuCi0MCi07OzsgQ29kZToKLQotKHJlcXVpcmUgJ2ZvbnQtbG9jaykKLShldmFs LXdoZW4tY29tcGlsZSAocmVxdWlyZSAnY2wtbGliKSkKLQotKGV2YWwtd2hlbi1jb21waWxlCi0g OzsKLSA7OyBXZSB1c2UgdGhpcyBmb3IgY2xhcml0eSBhbmQgc3BlZWQuICBOYXVnaHR5IGJ1dCBu aWNlLgotIChkZWZtYWNybyBkby13aGlsZSAodGVzdCAmcmVzdCBib2R5KQotICAgIihkby13aGls ZSBURVNUIEJPRFkuLi4pOiBldmFsIEJPRFkuLi4gYW5kIHJlcGVhdCBpZiBURVNUIHlpZWxkcyBu b24tbmlsLgotVGhlIG9yZGVyIG9mIGV4ZWN1dGlvbiBpcyB0aHVzIEJPRFksIFRFU1QsIEJPRFks IFRFU1QgYW5kIHNvIG9uCi11bnRpbCBURVNUIHJldHVybnMgbmlsLiIKLSAgIChkZWNsYXJlIChp bmRlbnQgMSkgKGRlYnVnIHQpKQotICAgYCh3aGlsZSAocHJvZ24gLEBib2R5ICx0ZXN0KSkpKQot Ci0oZGVmZ3JvdXAgbGF6eS1sb2NrIG5pbAotICAiRm9udCBMb2NrIHN1cHBvcnQgbW9kZSB0byBm b250aWZ5IGxhemlseS4iCi0gIDpncm91cCAnZm9udC1sb2NrKQotCi0oZGVmdmFyIGxhenktbG9j ay1tb2RlIG5pbCkJCQk7IFdoZXRoZXIgd2UgYXJlIHR1cm5lZCBvbi4KLShkZWZ2YXIgbGF6eS1s b2NrLWJ1ZmZlcnMgbmlsKQkJCTsgRm9yIGRlZmVycmFsLgotKGRlZnZhciBsYXp5LWxvY2stdGlt ZXJzIChjb25zIG5pbCBuaWwpKQk7IEZvciBkZWZlcnJhbCBhbmQgc3RlYWx0aC4KLQwKLTs7IFVz ZXIgVmFyaWFibGVzOgotCi0oZGVmY3VzdG9tIGxhenktbG9jay1taW5pbXVtLXNpemUgMjU2MDAK LSAgIk1pbmltdW0gc2l6ZSBvZiBhIGJ1ZmZlciBmb3IgZGVtYW5kLWRyaXZlbiBmb250aWZpY2F0 aW9uLgotT24tZGVtYW5kIGZvbnRpZmljYXRpb24gb2NjdXJzIGlmIHRoZSBidWZmZXIgc2l6ZSBp cyBncmVhdGVyIHRoYW4gdGhpcyB2YWx1ZS4KLUlmIG5pbCwgbWVhbnMgZGVtYW5kLWRyaXZlbiBm b250aWZpY2F0aW9uIGlzIG5ldmVyIHBlcmZvcm1lZC4KLUlmIGEgbGlzdCwgZWFjaCBlbGVtZW50 IHNob3VsZCBiZSBhIGNvbnMgcGFpciBvZiB0aGUgZm9ybSAoTUFKT1ItTU9ERSAuIFNJWkUpLAot d2hlcmUgTUFKT1ItTU9ERSBpcyBhIHN5bWJvbCBvciB0IChtZWFuaW5nIHRoZSBkZWZhdWx0KS4g IEZvciBleGFtcGxlOgotICgoYy1tb2RlIC4gMjU2MDApIChjKystbW9kZSAuIDI1NjAwKSAocm1h aWwtbW9kZSAuIDEwNDg1NzYpKQotbWVhbnMgdGhhdCB0aGUgbWluaW11bSBzaXplIGlzIDI1SyBm b3IgYnVmZmVycyBpbiBDIG9yIEMrKyBtb2Rlcywgb25lIG1lZ2FieXRlCi1mb3IgYnVmZmVycyBp biBSbWFpbCBtb2RlLCBhbmQgc2l6ZSBpcyBpcnJlbGV2YW50IG90aGVyd2lzZS4KLQotVGhlIHZh bHVlIG9mIHRoaXMgdmFyaWFibGUgaXMgdXNlZCB3aGVuIExhenkgTG9jayBtb2RlIGlzIHR1cm5l ZCBvbi4iCi0gIDp0eXBlICcoY2hvaWNlIChjb25zdCA6dGFnICJub25lIiBuaWwpCi0JCSAoaW50 ZWdlciA6dGFnICJzaXplIikKLQkJIChyZXBlYXQgOm1lbnUtdGFnICJtb2RlIHNwZWNpZmljIiA6 dGFnICJtb2RlIHNwZWNpZmljIgotCQkJIDp2YWx1ZSAoKHQgLiBuaWwpKQotCQkJIChjb25zIDp0 YWcgIkluc3RhbmNlIgotCQkJICAgICAgIChyYWRpbyA6dGFnICJNb2RlIgotCQkJCSAgICAgIChj b25zdCA6dGFnICJhbGwiIHQpCi0JCQkJICAgICAgKHN5bWJvbCA6dGFnICJuYW1lIikpCi0JCQkg ICAgICAgKHJhZGlvIDp0YWcgIlNpemUiCi0JCQkJICAgICAgKGNvbnN0IDp0YWcgIm5vbmUiIG5p bCkKLQkJCQkgICAgICAoaW50ZWdlciA6dGFnICJzaXplIikpKSkpKQotCi0oZGVmY3VzdG9tIGxh enktbG9jay1kZWZlci1vbi10aGUtZmx5IHQKLSAgIklmIG5vbi1uaWwsIG1lYW5zIGZvbnRpZmlj YXRpb24gYWZ0ZXIgYSBjaGFuZ2Ugc2hvdWxkIGJlIGRlZmVycmVkLgotSWYgbmlsLCBtZWFucyBv bi10aGUtZmx5IGZvbnRpZmljYXRpb24gaXMgcGVyZm9ybWVkLiAgVGhpcyBtZWFucyB3aGVuIGNo YW5nZXMKLW9jY3VyIGluIHRoZSBidWZmZXIsIHRob3NlIGFyZWFzIGFyZSBpbW1lZGlhdGVseSBm b250aWZpZWQuCi1JZiBhIGxpc3QsIGl0IHNob3VsZCBiZSBhIGxpc3Qgb2YgYG1ham9yLW1vZGUn IHN5bWJvbCBuYW1lcyBmb3Igd2hpY2ggZGVmZXJyZWQKLWZvbnRpZmljYXRpb24gc2hvdWxkIG9j Y3VyLiAgVGhlIHNlbnNlIG9mIHRoZSBsaXN0IGlzIG5lZ2F0ZWQgaWYgaXQgYmVnaW5zIHdpdGgK LWBub3QnLiAgRm9yIGV4YW1wbGU6Ci0gKGMtbW9kZSBjKystbW9kZSkKLW1lYW5zIHRoYXQgb24t dGhlLWZseSBmb250aWZpY2F0aW9uIGlzIGRlZmVycmVkIGZvciBidWZmZXJzIGluIEMgYW5kIEMr KyBtb2Rlcwotb25seSwgYW5kIGRlZmVycmFsIGRvZXMgbm90IG9jY3VyIG90aGVyd2lzZS4KLQot VGhlIHZhbHVlIG9mIHRoaXMgdmFyaWFibGUgaXMgdXNlZCB3aGVuIExhenkgTG9jayBtb2RlIGlz IHR1cm5lZCBvbi4iCi0gIDp0eXBlICcoY2hvaWNlIChjb25zdCA6dGFnICJuZXZlciIgbmlsKQot CQkgKGNvbnN0IDp0YWcgImFsd2F5cyIgdCkKLQkJIChzZXQgOm1lbnUtdGFnICJtb2RlIHNwZWNp ZmljIiA6dGFnICJtb2RlcyIKLQkJICAgICAgOnZhbHVlIChub3QpCi0JCSAgICAgIChjb25zdCA6 dGFnICJFeGNlcHQiIG5vdCkKLQkJICAgICAgKHJlcGVhdCA6aW5saW5lIHQgKHN5bWJvbCA6dGFn ICJtb2RlIikpKSkpCi0KLShkZWZjdXN0b20gbGF6eS1sb2NrLWRlZmVyLW9uLXNjcm9sbGluZyBu aWwKLSAgIklmIG5vbi1uaWwsIG1lYW5zIGZvbnRpZmljYXRpb24gYWZ0ZXIgYSBzY3JvbGwgc2hv dWxkIGJlIGRlZmVycmVkLgotSWYgbmlsLCBtZWFucyBkZW1hbmQtZHJpdmVuIGZvbnRpZmljYXRp b24gaXMgcGVyZm9ybWVkLiAgVGhpcyBtZWFucyB3aGVuCi1zY3JvbGxpbmcgaW50byB1bmZvbnRp ZmllZCBhcmVhcyBvZiB0aGUgYnVmZmVyLCB0aG9zZSBhcmVhcyBhcmUgaW1tZWRpYXRlbHkKLWZv bnRpZmllZC4gIFRodXMgc2Nyb2xsaW5nIG5ldmVyIHByZXNlbnRzIHVuZm9udGlmaWVkIGFyZWFz LiAgSG93ZXZlciwgc2luY2UKLWZvbnRpZmljYXRpb24gb2NjdXJzIGR1cmluZyBzY3JvbGxpbmcs IHNjcm9sbGluZyBtYXkgYmUgc2xvdy4KLUlmIHQsIG1lYW5zIGRlZmVyLWRyaXZlbiBmb250aWZp Y2F0aW9uIGlzIHBlcmZvcm1lZC4gIFRoaXMgbWVhbnMgZm9udGlmaWNhdGlvbgotb2YgdGhvc2Ug YXJlYXMgaXMgZGVmZXJyZWQuICBUaHVzIHNjcm9sbGluZyBtYXkgcHJlc2VudCBtb21lbnRhcmls eSB1bmZvbnRpZmllZAotYXJlYXMuICBIb3dldmVyLCBzaW5jZSBmb250aWZpY2F0aW9uIGRvZXMg bm90IG9jY3VyIGR1cmluZyBzY3JvbGxpbmcsIHNjcm9sbGluZwotd2lsbCBiZSBmYXN0ZXIgdGhh biBkZW1hbmQtZHJpdmVuIGZvbnRpZmljYXRpb24uCi1JZiBhbnkgb3RoZXIgdmFsdWUsIGUuZy4s IGBldmVudHVhbGx5JywgbWVhbnMgZGVtYW5kLWRyaXZlbiBmb250aWZpY2F0aW9uIGlzCi1wZXJm b3JtZWQgdW50aWwgdGhlIGJ1ZmZlciBpcyBmb250aWZpZWQsIHRoZW4gYnVmZmVyIGZvbnRpZmlj YXRpb24gYmVjb21lcwotZGVmZXItZHJpdmVuLiAgVGh1cyBzY3JvbGxpbmcgbmV2ZXIgcHJlc2Vu dHMgdW5mb250aWZpZWQgYXJlYXMgdW50aWwgdGhlIGJ1ZmZlcgotaXMgZmlyc3QgZm9udGlmaWVk LCBhZnRlciB3aGljaCBzdWJzZXF1ZW50IHNjcm9sbGluZyBtYXkgcHJlc2VudCBmdXR1cmUgYnVm ZmVyCi1pbnNlcnRpb25zIG1vbWVudGFyaWx5IHVuZm9udGlmaWVkLiAgSG93ZXZlciwgc2luY2Ug Zm9udGlmaWNhdGlvbiBkb2VzIG5vdAotb2NjdXIgZHVyaW5nIHNjcm9sbGluZyBhZnRlciB0aGUg YnVmZmVyIGlzIGZpcnN0IGZvbnRpZmllZCwgc2Nyb2xsaW5nIHdpbGwKLWJlY29tZSBmYXN0ZXIu ICAoQnV0LCBzaW5jZSBjb250ZXh0dWFsIGNoYW5nZXMgY29udGludWFsbHkgb2NjdXIsIHN1Y2gg YSB2YWx1ZQotbWFrZXMgbGl0dGxlIHNlbnNlIGlmIGBsYXp5LWxvY2stZGVmZXItY29udGV4dHVh bGx5JyBpcyBub24tbmlsLikKLQotVGhlIHZhbHVlIG9mIHRoaXMgdmFyaWFibGUgaXMgdXNlZCB3 aGVuIExhenkgTG9jayBtb2RlIGlzIHR1cm5lZCBvbi4iCi0gIDp0eXBlICcoY2hvaWNlIChjb25z dCA6dGFnICJuZXZlciIgbmlsKQotCQkgKGNvbnN0IDp0YWcgImFsd2F5cyIgdCkKLQkJIChvdGhl ciA6dGFnICJldmVudHVhbGx5IiBldmVudHVhbGx5KSkpCi0KLShkZWZjdXN0b20gbGF6eS1sb2Nr LWRlZmVyLWNvbnRleHR1YWxseSAnc3ludGF4LWRyaXZlbgotICAiSWYgbm9uLW5pbCwgbWVhbnMg ZGVmZXJyZWQgZm9udGlmaWNhdGlvbiBzaG91bGQgYmUgc3ludGFjdGljYWxseSB0cnVlLgotSWYg bmlsLCBtZWFucyBkZWZlcnJlZCBmb250aWZpY2F0aW9uIG9jY3VycyBvbmx5IG9uIHRob3NlIGxp bmVzIG1vZGlmaWVkLiAgVGhpcwotbWVhbnMgd2hlcmUgbW9kaWZpY2F0aW9uIG9uIGEgbGluZSBj YXVzZXMgc3ludGFjdGljIGNoYW5nZSBvbiBzdWJzZXF1ZW50IGxpbmVzLAotdGhvc2Ugc3Vic2Vx dWVudCBsaW5lcyBhcmUgbm90IHJlZm9udGlmaWVkIHRvIHJlZmxlY3QgdGhlaXIgbmV3IGNvbnRl eHQuCi1JZiB0LCBtZWFucyBkZWZlcnJlZCBmb250aWZpY2F0aW9uIG9jY3VycyBvbiB0aG9zZSBs aW5lcyBtb2RpZmllZCBhbmQgYWxsCi1zdWJzZXF1ZW50IGxpbmVzLiAgVGhpcyBtZWFucyB0aG9z ZSBzdWJzZXF1ZW50IGxpbmVzIGFyZSByZWZvbnRpZmllZCB0byByZWZsZWN0Ci10aGVpciBuZXcg c3ludGFjdGljIGNvbnRleHQsIGVpdGhlciBpbW1lZGlhdGVseSBvciB3aGVuIHNjcm9sbGluZyBp bnRvIHRoZW0uCi1JZiBhbnkgb3RoZXIgdmFsdWUsIGUuZy4sIGBzeW50YXgtZHJpdmVuJywgbWVh bnMgZGVmZXJyZWQgc3ludGFjdGljYWxseSB0cnVlCi1mb250aWZpY2F0aW9uIG9jY3VycyBvbmx5 IGlmIHN5bnRhY3RpYyBmb250aWZpY2F0aW9uIGlzIHBlcmZvcm1lZCB1c2luZyB0aGUKLWJ1ZmZl ciBtb2RlJ3Mgc3ludGF4IHRhYmxlLCBpLmUuLCBvbmx5IGlmIGBmb250LWxvY2sta2V5d29yZHMt b25seScgaXMgbmlsLgotCi1UaGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZSBpcyB1c2VkIHdoZW4g TGF6eSBMb2NrIG1vZGUgaXMgdHVybmVkIG9uLiIKLSAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0IDp0 YWcgIm5ldmVyIiBuaWwpCi0JCSAoY29uc3QgOnRhZyAiYWx3YXlzIiB0KQotCQkgKG90aGVyIDp0 YWcgInN5bnRheC1kcml2ZW4iIHN5bnRheC1kcml2ZW4pKSkKLQotKGRlZmN1c3RvbSBsYXp5LWxv Y2stZGVmZXItdGltZSAwLjI1Ci0gICJUaW1lIGluIHNlY29uZHMgdG8gZGVsYXkgYmVmb3JlIGJl Z2lubmluZyBkZWZlcnJlZCBmb250aWZpY2F0aW9uLgotRGVmZXJyZWQgZm9udGlmaWNhdGlvbiBv Y2N1cnMgaWYgdGhlcmUgaXMgbm8gaW5wdXQgd2l0aGluIHRoaXMgdGltZS4KLUlmIG5pbCwgbWVh bnMgZm9udGlmaWNhdGlvbiBpcyBuZXZlciBkZWZlcnJlZCwgcmVnYXJkbGVzcyBvZiB0aGUgdmFs dWVzIG9mIHRoZQotdmFyaWFibGVzIGBsYXp5LWxvY2stZGVmZXItb24tdGhlLWZseScsIGBsYXp5 LWxvY2stZGVmZXItb24tc2Nyb2xsaW5nJyBhbmQKLWBsYXp5LWxvY2stZGVmZXItY29udGV4dHVh bGx5Jy4KLQotVGhlIHZhbHVlIG9mIHRoaXMgdmFyaWFibGUgaXMgdXNlZCB3aGVuIExhenkgTG9j ayBtb2RlIGlzIHR1cm5lZCBvbi4iCi0gIDp0eXBlICcoY2hvaWNlIChjb25zdCA6dGFnICJuZXZl ciIgbmlsKQotCQkgKG51bWJlciA6dGFnICJzZWNvbmRzIikpKQotCi0oZGVmY3VzdG9tIGxhenkt bG9jay1zdGVhbHRoLXRpbWUgMzAKLSAgIlRpbWUgaW4gc2Vjb25kcyB0byBkZWxheSBiZWZvcmUg YmVnaW5uaW5nIHN0ZWFsdGggZm9udGlmaWNhdGlvbi4KLVN0ZWFsdGggZm9udGlmaWNhdGlvbiBv Y2N1cnMgaWYgdGhlcmUgaXMgbm8gaW5wdXQgd2l0aGluIHRoaXMgdGltZS4KLUlmIG5pbCwgbWVh bnMgc3RlYWx0aCBmb250aWZpY2F0aW9uIGlzIG5ldmVyIHBlcmZvcm1lZC4KLQotVGhlIHZhbHVl IG9mIHRoaXMgdmFyaWFibGUgaXMgdXNlZCB3aGVuIExhenkgTG9jayBtb2RlIGlzIHR1cm5lZCBv bi4iCi0gIDp0eXBlICcoY2hvaWNlIChjb25zdCA6dGFnICJuZXZlciIgbmlsKQotCQkgKG51bWJl ciA6dGFnICJzZWNvbmRzIikpKQotCi0oZGVmY3VzdG9tIGxhenktbG9jay1zdGVhbHRoLWxpbmVz IChpZiBmb250LWxvY2stbWF4aW11bS1kZWNvcmF0aW9uIDEwMCAyNTApCi0gICJNYXhpbXVtIHNp emUgb2YgYSBjaHVuayBvZiBzdGVhbHRoIGZvbnRpZmljYXRpb24uCi1FYWNoIGl0ZXJhdGlvbiBv ZiBzdGVhbHRoIGZvbnRpZmljYXRpb24gY2FuIGZvbnRpZnkgdGhpcyBudW1iZXIgb2YgbGluZXMu Ci1UbyBzcGVlZCB1cCBpbnB1dCByZXNwb25zZSBkdXJpbmcgc3RlYWx0aCBmb250aWZpY2F0aW9u LCBhdCB0aGUgY29zdCBvZiBzdGVhbHRoCi10YWtpbmcgbG9uZ2VyIHRvIGZvbnRpZnksIHlvdSBj b3VsZCByZWR1Y2UgdGhlIHZhbHVlIG9mIHRoaXMgdmFyaWFibGUuIgotICA6dHlwZSAnKGludGVn ZXIgOnRhZyAibGluZXMiKSkKLQotKGRlZmN1c3RvbSBsYXp5LWxvY2stc3RlYWx0aC1sb2FkCi0g IChpZiAoY29uZGl0aW9uLWNhc2UgbmlsIChsb2FkLWF2ZXJhZ2UpIChlcnJvcikpIDIwMCkKLSAg IkxvYWQgaW4gcGVyY2VudGFnZSBhYm92ZSB3aGljaCBzdGVhbHRoIGZvbnRpZmljYXRpb24gaXMg c3VzcGVuZGVkLgotU3RlYWx0aCBmb250aWZpY2F0aW9uIHBhdXNlcyB3aGVuIHRoZSBzeXN0ZW0g c2hvcnQtdGVybSBsb2FkIGF2ZXJhZ2UgKGFzCi1yZXR1cm5lZCBieSB0aGUgZnVuY3Rpb24gYGxv YWQtYXZlcmFnZScgaWYgc3VwcG9ydGVkKSBnb2VzIGFib3ZlIHRoaXMgbGV2ZWwsCi10aHVzIHJl ZHVjaW5nIHRoZSBkZW1hbmQgdGhhdCBzdGVhbHRoIGZvbnRpZmljYXRpb24gbWFrZXMgb24gdGhl IHN5c3RlbS4KLUlmIG5pbCwgbWVhbnMgc3RlYWx0aCBmb250aWZpY2F0aW9uIGlzIG5ldmVyIHN1 c3BlbmRlZC4KLVRvIHJlZHVjZSBtYWNoaW5lIGxvYWQgZHVyaW5nIHN0ZWFsdGggZm9udGlmaWNh dGlvbiwgYXQgdGhlIGNvc3Qgb2Ygc3RlYWx0aAotdGFraW5nIGxvbmdlciB0byBmb250aWZ5LCB5 b3UgY291bGQgcmVkdWNlIHRoZSB2YWx1ZSBvZiB0aGlzIHZhcmlhYmxlLgotU2VlIGFsc28gYGxh enktbG9jay1zdGVhbHRoLW5pY2UnLiIKLSAgOnR5cGUgKGlmIChjb25kaXRpb24tY2FzZSBuaWwg KGxvYWQtYXZlcmFnZSkgKGVycm9yKSkKLQkgICAgJyhjaG9pY2UgKGNvbnN0IDp0YWcgIm5ldmVy IiBuaWwpCi0JCSAgICAgKGludGVnZXIgOnRhZyAibG9hZCIpKQotCSAgJyhjb25zdCA6Zm9ybWF0 ICIldDogdW5zdXBwb3J0ZWRcbiIgbmlsKSkpCi0KLShkZWZjdXN0b20gbGF6eS1sb2NrLXN0ZWFs dGgtbmljZSAwLjEyNQotICAiVGltZSBpbiBzZWNvbmRzIHRvIHBhdXNlIGJldHdlZW4gY2h1bmtz IG9mIHN0ZWFsdGggZm9udGlmaWNhdGlvbi4KLUVhY2ggaXRlcmF0aW9uIG9mIHN0ZWFsdGggZm9u dGlmaWNhdGlvbiBpcyBzZXBhcmF0ZWQgYnkgdGhpcyBhbW91bnQgb2YgdGltZSwKLXRodXMgcmVk dWNpbmcgdGhlIGRlbWFuZCB0aGF0IHN0ZWFsdGggZm9udGlmaWNhdGlvbiBtYWtlcyBvbiB0aGUg c3lzdGVtLgotSWYgbmlsLCBtZWFucyBzdGVhbHRoIGZvbnRpZmljYXRpb24gaXMgbmV2ZXIgcGF1 c2VkLgotVG8gcmVkdWNlIG1hY2hpbmUgbG9hZCBkdXJpbmcgc3RlYWx0aCBmb250aWZpY2F0aW9u LCBhdCB0aGUgY29zdCBvZiBzdGVhbHRoCi10YWtpbmcgbG9uZ2VyIHRvIGZvbnRpZnksIHlvdSBj b3VsZCBpbmNyZWFzZSB0aGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZS4KLVNlZSBhbHNvIGBsYXp5 LWxvY2stc3RlYWx0aC1sb2FkJy4iCi0gIDp0eXBlICcoY2hvaWNlIChjb25zdCA6dGFnICJuZXZl ciIgbmlsKQotCQkgKG51bWJlciA6dGFnICJzZWNvbmRzIikpKQotCi0oZGVmY3VzdG9tIGxhenkt bG9jay1zdGVhbHRoLXZlcmJvc2UKLSAgKGFuZCAobm90IGxhenktbG9jay1kZWZlci1jb250ZXh0 dWFsbHkpIChub3QgKG51bGwgZm9udC1sb2NrLXZlcmJvc2UpKSkKLSAgIklmIG5vbi1uaWwsIG1l YW5zIHN0ZWFsdGggZm9udGlmaWNhdGlvbiBzaG91bGQgc2hvdyBzdGF0dXMgbWVzc2FnZXMuIgot ICA6dHlwZSAnYm9vbGVhbikKLQwKLTs7IFVzZXIgRnVuY3Rpb25zOgotCi07OzsjIyNhdXRvbG9h ZAotKGRlZnVuIGxhenktbG9jay1tb2RlICgmb3B0aW9uYWwgYXJnKQotICAiVG9nZ2xlIExhenkg TG9jayBtb2RlLgotV2l0aCBhcmcsIHR1cm4gTGF6eSBMb2NrIG1vZGUgb24gaWYgYW5kIG9ubHkg aWYgYXJnIGlzIHBvc2l0aXZlLiAgRW5hYmxlIGl0Ci1hdXRvbWF0aWNhbGx5IGluIHlvdXIgYH4v LmVtYWNzJyBieToKLQotIChzZXRxIGZvbnQtbG9jay1zdXBwb3J0LW1vZGUgXFw9J2xhenktbG9j ay1tb2RlKQotCi1Gb3IgYSBuZXdlciBmb250LWxvY2sgc3VwcG9ydCBtb2RlIHdpdGggc2ltaWxh ciBmdW5jdGlvbmFsaXR5LCBzZWUKLWBqaXQtbG9jay1tb2RlJy4gIEV2ZW50dWFsbHksIExhenkg TG9jayBtb2RlIHdpbGwgYmUgZGVwcmVjYXRlZCBpbgotSklUIExvY2sncyBmYXZvci4KLQotV2hl biBMYXp5IExvY2sgbW9kZSBpcyBlbmFibGVkLCBmb250aWZpY2F0aW9uIGNhbiBiZSBsYXp5IGlu IGEgbnVtYmVyIG9mIHdheXM6Ci0KLS0gRGVtYW5kLWRyaXZlbiBidWZmZXIgZm9udGlmaWNhdGlv biBpZiBgbGF6eS1sb2NrLW1pbmltdW0tc2l6ZScgaXMgbm9uLW5pbC4KLSAgVGhpcyBtZWFucyBp bml0aWFsIGZvbnRpZmljYXRpb24gZG9lcyBub3Qgb2NjdXIgaWYgdGhlIGJ1ZmZlciBpcyBncmVh dGVyIHRoYW4KLSAgYGxhenktbG9jay1taW5pbXVtLXNpemUnIGNoYXJhY3RlcnMgaW4gbGVuZ3Ro LiAgSW5zdGVhZCwgZm9udGlmaWNhdGlvbiBvY2N1cnMKLSAgd2hlbiBuZWNlc3NhcnksIHN1Y2gg YXMgd2hlbiBzY3JvbGxpbmcgdGhyb3VnaCB0aGUgYnVmZmVyIHdvdWxkIG90aGVyd2lzZQotICBy ZXZlYWwgdW5mb250aWZpZWQgYXJlYXMuICBUaGlzIGlzIHVzZWZ1bCBpZiBidWZmZXIgZm9udGlm aWNhdGlvbiBpcyB0b28gc2xvdwotICBmb3IgbGFyZ2UgYnVmZmVycy4KLQotLSBEZWZlcnJlZCBz Y3JvbGwgZm9udGlmaWNhdGlvbiBpZiBgbGF6eS1sb2NrLWRlZmVyLW9uLXNjcm9sbGluZycgaXMg bm9uLW5pbC4KLSAgVGhpcyBtZWFucyBkZW1hbmQtZHJpdmVuIGZvbnRpZmljYXRpb24gZG9lcyBu b3Qgb2NjdXIgYXMgeW91IHNjcm9sbC4KLSAgSW5zdGVhZCwgZm9udGlmaWNhdGlvbiBpcyBkZWZl cnJlZCB1bnRpbCBhZnRlciBgbGF6eS1sb2NrLWRlZmVyLXRpbWUnIHNlY29uZHMKLSAgb2YgRW1h Y3MgaWRsZSB0aW1lLCB3aGlsZSBFbWFjcyByZW1haW5zIGlkbGUuICBUaGlzIGlzIHVzZWZ1bCBp ZgotICBmb250aWZpY2F0aW9uIGlzIHRvbyBzbG93IHRvIGtlZXAgdXAgd2l0aCBzY3JvbGxpbmcu Ci0KLS0gRGVmZXJyZWQgb24tdGhlLWZseSBmb250aWZpY2F0aW9uIGlmIGBsYXp5LWxvY2stZGVm ZXItb24tdGhlLWZseScgaXMgbm9uLW5pbC4KLSAgVGhpcyBtZWFucyBvbi10aGUtZmx5IGZvbnRp ZmljYXRpb24gZG9lcyBub3Qgb2NjdXIgYXMgeW91IHR5cGUuICBJbnN0ZWFkLAotICBmb250aWZp Y2F0aW9uIGlzIGRlZmVycmVkIHVudGlsIGFmdGVyIGBsYXp5LWxvY2stZGVmZXItdGltZScgc2Vj b25kcyBvZiBFbWFjcwotICBpZGxlIHRpbWUsIHdoaWxlIEVtYWNzIHJlbWFpbnMgaWRsZS4gIFRo aXMgaXMgdXNlZnVsIGlmIGZvbnRpZmljYXRpb24gaXMgdG9vCi0gIHNsb3cgdG8ga2VlcCB1cCB3 aXRoIHlvdXIgdHlwaW5nLgotCi0tIERlZmVycmVkIGNvbnRleHQgZm9udGlmaWNhdGlvbiBpZiBg bGF6eS1sb2NrLWRlZmVyLWNvbnRleHR1YWxseScgaXMgbm9uLW5pbC4KLSAgVGhpcyBtZWFucyBm b250aWZpY2F0aW9uIHVwZGF0ZXMgdGhlIGJ1ZmZlciBjb3JyZXNwb25kaW5nIHRvIHRydWUgc3lu dGFjdGljCi0gIGNvbnRleHQsIGFmdGVyIGBsYXp5LWxvY2stZGVmZXItdGltZScgc2Vjb25kcyBv ZiBFbWFjcyBpZGxlIHRpbWUsIHdoaWxlIEVtYWNzCi0gIHJlbWFpbnMgaWRsZS4gIE90aGVyd2lz ZSwgZm9udGlmaWNhdGlvbiBvY2N1cnMgb24gbW9kaWZpZWQgbGluZXMgb25seSwgYW5kCi0gIHN1 YnNlcXVlbnQgbGluZXMgY2FuIHJlbWFpbiBmb250aWZpZWQgY29ycmVzcG9uZGluZyB0byBwcmV2 aW91cyBzeW50YWN0aWMKLSAgY29udGV4dHMuICBUaGlzIGlzIHVzZWZ1bCB3aGVyZSBzdHJpbmdz IG9yIGNvbW1lbnRzIHNwYW4gbGluZXMuCi0KLS0gU3RlYWx0aHkgYnVmZmVyIGZvbnRpZmljYXRp b24gaWYgYGxhenktbG9jay1zdGVhbHRoLXRpbWUnIGlzIG5vbi1uaWwuCi0gIFRoaXMgbWVhbnMg cmVtYWluaW5nIHVuZm9udGlmaWVkIGFyZWFzIG9mIGJ1ZmZlcnMgYXJlIGZvbnRpZmllZCBpZiBF bWFjcyBoYXMKLSAgYmVlbiBpZGxlIGZvciBgbGF6eS1sb2NrLXN0ZWFsdGgtdGltZScgc2Vjb25k cywgd2hpbGUgRW1hY3MgcmVtYWlucyBpZGxlLgotICBUaGlzIGlzIHVzZWZ1bCBpZiBhbnkgYnVm ZmVyIGhhcyBhbnkgZGVmZXJyZWQgZm9udGlmaWNhdGlvbi4KLQotQmFzaWMgRm9udCBMb2NrIG1v ZGUgb24tdGhlLWZseSBmb250aWZpY2F0aW9uIGJlaGF2aW9yIGZvbnRpZmllcyBtb2RpZmllZAot bGluZXMgb25seS4gIFRodXMsIGlmIGBsYXp5LWxvY2stZGVmZXItY29udGV4dHVhbGx5JyBpcyBu b24tbmlsLCBMYXp5IExvY2sgbW9kZQotb24tdGhlLWZseSBmb250aWZpY2F0aW9uIG1heSBmb250 aWZ5IGRpZmZlcmVudGx5LCBhbGJlaXQgY29ycmVjdGx5LiAgSW4gYW55Ci1ldmVudCwgdG8gcmVm b250aWZ5IHNvbWUgbGluZXMgeW91IGNhbiB1c2UgXFxbZm9udC1sb2NrLWZvbnRpZnktYmxvY2td LgotCi1TdGVhbHRoIGZvbnRpZmljYXRpb24gb25seSBvY2N1cnMgd2hpbGUgdGhlIHN5c3RlbSBy ZW1haW5zIHVubG9hZGVkLgotSWYgdGhlIHN5c3RlbSBsb2FkIHJpc2VzIGFib3ZlIGBsYXp5LWxv Y2stc3RlYWx0aC1sb2FkJyBwZXJjZW50LCBzdGVhbHRoCi1mb250aWZpY2F0aW9uIGlzIHN1c3Bl bmRlZC4gIFN0ZWFsdGggZm9udGlmaWNhdGlvbiBpbnRlbnNpdHkgaXMgY29udHJvbGxlZCB2aWEK LXRoZSB2YXJpYWJsZSBgbGF6eS1sb2NrLXN0ZWFsdGgtbmljZScgYW5kIGBsYXp5LWxvY2stc3Rl YWx0aC1saW5lcycsIGFuZAotdmVyYm9zaXR5IGlzIGNvbnRyb2xsZWQgdmlhIHRoZSB2YXJpYWJs ZSBgbGF6eS1sb2NrLXN0ZWFsdGgtdmVyYm9zZScuIgotICAoaW50ZXJhY3RpdmUgIlAiKQotICAo bGV0KiAoKHdhcy1vbiBsYXp5LWxvY2stbW9kZSkKLQkgKG5vdy1vbiAodW5sZXNzIChtZW1xICds YXp5LWxvY2stbW9kZSBmb250LWxvY2staW5oaWJpdC10aGluZy1sb2NrKQotCQkgICAoaWYgYXJn ICg+IChwcmVmaXgtbnVtZXJpYy12YWx1ZSBhcmcpIDApIChub3Qgd2FzLW9uKSkpKSkKLSAgICAo Y29uZCAoKGFuZCBub3ctb24gKG5vdCBmb250LWxvY2stbW9kZSkpCi0JICAgOzsgVHVybmVkIG9u IGBsYXp5LWxvY2stbW9kZScgcmF0aGVyIHRoYW4gYGZvbnQtbG9jay1tb2RlJy4KLSAgICAgICAg ICAgKG1lc3NhZ2UgIlVzZSBmb250LWxvY2stc3VwcG9ydC1tb2RlIHJhdGhlciB0aGFuIGNhbGxp bmcgbGF6eS1sb2NrLW1vZGUiKQotICAgICAgICAgICAoc2l0LWZvciAyKSkKLQkgIChub3ctb24K LQkgICA7OyBUdXJuIG91cnNlbHZlcyBvbi4KLQkgICAoc2V0IChtYWtlLWxvY2FsLXZhcmlhYmxl ICdsYXp5LWxvY2stbW9kZSkgdCkKLQkgICAobGF6eS1sb2NrLWluc3RhbGwpKQotCSAgKHdhcy1v bgotCSAgIDs7IFR1cm4gb3Vyc2VsdmVzIG9mZi4KLQkgICAoc2V0IChtYWtlLWxvY2FsLXZhcmlh YmxlICdsYXp5LWxvY2stbW9kZSkgbmlsKQotCSAgIChsYXp5LWxvY2stdW5zdGFsbCkpKSkpCi0K LTs7OyMjI2F1dG9sb2FkCi0oZGVmdW4gdHVybi1vbi1sYXp5LWxvY2sgKCkKLSAgIlVuY29uZGl0 aW9uYWxseSB0dXJuIG9uIExhenkgTG9jayBtb2RlLiIKLSAgKGxhenktbG9jay1tb2RlIHQpKQot Ci0oZGVmdW4gbGF6eS1sb2NrLWluc3RhbGwgKCkKLSAgKGxldCAoKG1pbi1zaXplIChmb250LWxv Y2stdmFsdWUtaW4tbWFqb3ItbW9kZSBsYXp5LWxvY2stbWluaW11bS1zaXplKSkKLQkoZGVmZXIt Y2hhbmdlIChhbmQgbGF6eS1sb2NrLWRlZmVyLXRpbWUgbGF6eS1sb2NrLWRlZmVyLW9uLXRoZS1m bHkpKQotCShkZWZlci1zY3JvbGwgKGFuZCBsYXp5LWxvY2stZGVmZXItdGltZSBsYXp5LWxvY2st ZGVmZXItb24tc2Nyb2xsaW5nKSkKLQkoZGVmZXItY29udGV4dCAoYW5kIGxhenktbG9jay1kZWZl ci10aW1lIGxhenktbG9jay1kZWZlci1jb250ZXh0dWFsbHkKLQkJCSAgICAob3IgKGVxIGxhenkt bG9jay1kZWZlci1jb250ZXh0dWFsbHkgdCkKLQkJCQkobnVsbCBmb250LWxvY2sta2V5d29yZHMt b25seSkpKSkpCi0gICAgOzsKLSAgICA7OyBUZWxsIEZvbnQgTG9jayB3aGV0aGVyIExhenkgTG9j ayB3aWxsIGRvIGZvbnRpZmljYXRpb24uCi0gICAgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ2ZvbnQt bG9jay1mb250aWZpZWQpCi0gICAgKHNldHEgZm9udC1sb2NrLWZvbnRpZmllZCAoYW5kIG1pbi1z aXplICg+PSAoYnVmZmVyLXNpemUpIG1pbi1zaXplKSkpCi0gICAgOzsKLSAgICA7OyBBZGQgdGhl IHRleHQgcHJvcGVydGllcyBhbmQgZm9udGlmeS4KLSAgICAoaWYgKG5vdCBmb250LWxvY2stZm9u dGlmaWVkKQotCShsYXp5LWxvY2stYWZ0ZXItZm9udGlmeS1idWZmZXIpCi0gICAgICA7OyBNYWtl IHN1cmUgd2UgZm9udGlmeSBpbiBhbnkgZXhpc3Rpbmcgd2luZG93cyBzaG93aW5nIHRoZSBidWZm ZXIuCi0gICAgICAobGV0ICgod2luZG93cyAoZ2V0LWJ1ZmZlci13aW5kb3ctbGlzdCAoY3VycmVu dC1idWZmZXIpICdub21pbmkgdCkpKQotCShsYXp5LWxvY2stYWZ0ZXItdW5mb250aWZ5LWJ1ZmZl cikKLQkod2hpbGUgd2luZG93cwotCSAgKGxhenktbG9jay1mb250aWZ5LWNvbnNlcnZhdGl2ZWx5 IChjYXIgd2luZG93cykpCi0JICAoc2V0cSB3aW5kb3dzIChjZHIgd2luZG93cykpKSkpCi0gICAg OzsKLSAgICA7OyBBZGQgdGhlIGZvbnRpZmljYXRpb24gaG9va3MuCi0gICAgKGxhenktbG9jay1p bnN0YWxsLWhvb2tzCi0gICAgIGZvbnQtbG9jay1mb250aWZpZWQKLSAgICAgKGNvbmQgKChlcSAo Y2FyLXNhZmUgZGVmZXItY2hhbmdlKSAnbm90KQotCSAgICAobm90IChtZW1xIG1ham9yLW1vZGUg KGNkciBkZWZlci1jaGFuZ2UpKSkpCi0JICAgKChsaXN0cCBkZWZlci1jaGFuZ2UpCi0JICAgICht ZW1xIG1ham9yLW1vZGUgZGVmZXItY2hhbmdlKSkKLQkgICAodAotCSAgICBkZWZlci1jaGFuZ2Up KQotICAgICAoZXEgZGVmZXItc2Nyb2xsIHQpCi0gICAgIGRlZmVyLWNvbnRleHQpCi0gICAgOzsK LSAgICA7OyBBZGQgdGhlIGZvbnRpZmljYXRpb24gdGltZXJzLgotICAgIChsYXp5LWxvY2staW5z dGFsbC10aW1lcnMKLSAgICAgKGlmIChvciBkZWZlci1jaGFuZ2UgZGVmZXItc2Nyb2xsIGRlZmVy LWNvbnRleHQpIGxhenktbG9jay1kZWZlci10aW1lKQotICAgICBsYXp5LWxvY2stc3RlYWx0aC10 aW1lKSkpCi0KLShkZWZ1biBsYXp5LWxvY2staW5zdGFsbC1ob29rcyAoZm9udGlmeWluZwotCQkJ CWRlZmVyLWNoYW5nZSBkZWZlci1zY3JvbGwgZGVmZXItY29udGV4dCkKLSAgOzsKLSAgOzsgQWRk IGhvb2sgaWYgbGF6eS1sb2NrLmVsIGlzIGZvbnRpZnlpbmcgb24gc2Nyb2xsaW5nIG9yIGlzIGRl ZmVycmluZy4KLSAgKHdoZW4gKG9yIGZvbnRpZnlpbmcgZGVmZXItY2hhbmdlIGRlZmVyLXNjcm9s bCBkZWZlci1jb250ZXh0KQotICAgIChhZGQtaG9vayAnd2luZG93LXNjcm9sbC1mdW5jdGlvbnMg KGlmIGRlZmVyLXNjcm9sbAotCQkJCQkgICAjJ2xhenktbG9jay1kZWZlci1hZnRlci1zY3JvbGwK LQkJCQkJICMnbGF6eS1sb2NrLWZvbnRpZnktYWZ0ZXItc2Nyb2xsKQotCSAgICAgIG5pbCB0KSkK LSAgOzsKLSAgOzsgQWRkIGhvb2sgaWYgbGF6eS1sb2NrLmVsIGlzIGZvbnRpZnlpbmcgYW5kIGlz IG5vdCBkZWZlcnJpbmcgY2hhbmdlcy4KLSAgKHdoZW4gKGFuZCBmb250aWZ5aW5nIChub3QgZGVm ZXItY2hhbmdlKSAobm90IGRlZmVyLWNvbnRleHQpKQotICAgIChhZGQtaG9vayAnYmVmb3JlLWNo YW5nZS1mdW5jdGlvbnMgIydsYXp5LWxvY2stYXJyYW5nZS1iZWZvcmUtY2hhbmdlIG5pbCB0KSkK LSAgOzsKLSAgOzsgUmVwbGFjZSBGb250IExvY2sgbW9kZSBob29rLgotICAocmVtb3ZlLWhvb2sg J2FmdGVyLWNoYW5nZS1mdW5jdGlvbnMgIydmb250LWxvY2stYWZ0ZXItY2hhbmdlLWZ1bmN0aW9u IHQpCi0gIChhZGQtaG9vayAnYWZ0ZXItY2hhbmdlLWZ1bmN0aW9ucwotCSAgICAoY29uZCAoKGFu ZCBkZWZlci1jaGFuZ2UgZGVmZXItY29udGV4dCkKLQkJICAgIydsYXp5LWxvY2stZGVmZXItcmVz dC1hZnRlci1jaGFuZ2UpCi0JCSAgKGRlZmVyLWNoYW5nZQotCQkgICAjJ2xhenktbG9jay1kZWZl ci1saW5lLWFmdGVyLWNoYW5nZSkKLQkJICAoZGVmZXItY29udGV4dAotCQkgICAjJ2xhenktbG9j ay1mb250aWZ5LXJlc3QtYWZ0ZXItY2hhbmdlKQotCQkgICh0Ci0JCSAgICMnbGF6eS1sb2NrLWZv bnRpZnktbGluZS1hZnRlci1jaGFuZ2UpKQotCSAgICBuaWwgdCkKLSAgOzsKLSAgOzsgQWRkIHBh Y2thZ2Utc3BlY2lmaWMgaG9vay4KLSAgKGFkZC1ob29rICdvdXRsaW5lLXZpZXctY2hhbmdlLWhv b2sgIydsYXp5LWxvY2stZm9udGlmeS1hZnRlci12aXNhZ2UgbmlsIHQpCi0gIChhZGQtaG9vayAn aHMtaGlkZS1ob29rICMnbGF6eS1sb2NrLWZvbnRpZnktYWZ0ZXItdmlzYWdlIG5pbCB0KSkKLQot KGRlZnVuIGxhenktbG9jay1pbnN0YWxsLXRpbWVycyAoZHRpbWUgc3RpbWUpCi0gIDs7IFNjaGVk dWxlIG9yIHJlLXNjaGVkdWxlIHRoZSBkZWZlcnJhbCBhbmQgc3RlYWx0aCB0aW1lcnMuCi0gIDs7 IFRoZSBsYXlvdXQgb2YgYGxhenktbG9jay10aW1lcnMnIGlzOgotICA7OyAgKChERUZFUi1USU1F IC4gREVGRVItVElNRVIpIChTVEVBTFRILVRJTUUgLiBTVEVBTFRILVRJTUVSKQotICA7OyBJZiBh biBpZGxlIHRpbWVvdXQgaGFzIGNoYW5nZWQsIGNhbmNlbCB0aGUgZXhpc3RpbmcgaWRsZSB0aW1l ciAoaWYgdGhlcmUKLSAgOzsgaXMgb25lKSBhbmQgc2NoZWR1bGUgYSBuZXcgb25lIChpZiB0aGUg bmV3IGlkbGUgdGltZW91dCBpcyBub24tbmlsKS4KLSAgKHVubGVzcyAoZXEgZHRpbWUgKGNhciAo Y2FyIGxhenktbG9jay10aW1lcnMpKSkKLSAgICAobGV0ICgoZGVmZXIgKGNhciBsYXp5LWxvY2st dGltZXJzKSkpCi0gICAgICAod2hlbiAoY2RyIGRlZmVyKQotCShjYW5jZWwtdGltZXIgKGNkciBk ZWZlcikpKQotICAgICAgKHNldGNhciBsYXp5LWxvY2stdGltZXJzIChjb25zIGR0aW1lIChhbmQg ZHRpbWUKLQkgICAgICAocnVuLXdpdGgtaWRsZS10aW1lciBkdGltZSB0ICMnbGF6eS1sb2NrLWZv bnRpZnktYWZ0ZXItZGVmZXIpKSkpKSkKLSAgKHVubGVzcyAoZXEgc3RpbWUgKGNhciAoY2RyIGxh enktbG9jay10aW1lcnMpKSkKLSAgICAobGV0ICgoc3RlYWx0aCAoY2RyIGxhenktbG9jay10aW1l cnMpKSkKLSAgICAgICh3aGVuIChjZHIgc3RlYWx0aCkKLQkoY2FuY2VsLXRpbWVyIChjZHIgc3Rl YWx0aCkpKQotICAgICAgKHNldGNkciBsYXp5LWxvY2stdGltZXJzIChjb25zIHN0aW1lIChhbmQg c3RpbWUKLQkgICAgICAocnVuLXdpdGgtaWRsZS10aW1lciBzdGltZSB0ICMnbGF6eS1sb2NrLWZv bnRpZnktYWZ0ZXItaWRsZSkpKSkpKSkKLQotKGRlZnVuIGxhenktbG9jay11bnN0YWxsICgpCi0g IDs7Ci0gIDs7IElmIEZvbnQgTG9jayBtb2RlIGlzIHN0aWxsIGVuYWJsZWQsIG1ha2Ugc3VyZSB0 aGF0IHRoZSBidWZmZXIgaXMKLSAgOzsgZm9udGlmaWVkLCBhbmQgcmVpbnN0YWxsIGl0cyBob29r LiAgV2UgbXVzdCBkbyB0aGlzIGZpcnN0LgotICAod2hlbiBmb250LWxvY2stbW9kZQotICAgICh3 aGVuIChsYXp5LWxvY2stdW5mb250aWZpZWQtcCkKLSAgICAgIChsZXQgKCh2ZXJib3NlIChpZiAo bnVtYmVycCBmb250LWxvY2stdmVyYm9zZSkKLQkJCSAoPiAoYnVmZmVyLXNpemUpIGZvbnQtbG9j ay12ZXJib3NlKQotCQkgICAgICAgZm9udC1sb2NrLXZlcmJvc2UpKSkKLQkod2l0aC10ZW1wLW1l c3NhZ2UKLQkgICAgKHdoZW4gdmVyYm9zZQotCSAgICAgIChmb3JtYXQgIkZvbnRpZnlpbmcgJXMu Li4iIChidWZmZXItbmFtZSkpKQotCSAgOzsgTWFrZSBzdXJlIHdlIGZvbnRpZnkgZXRjLiBpbiB0 aGUgd2hvbGUgYnVmZmVyLgotCSAgKHNhdmUtcmVzdHJpY3Rpb24KLQkgICAgKHdpZGVuKQotCSAg ICAobGF6eS1sb2NrLWZvbnRpZnktcmVnaW9uIChwb2ludC1taW4pIChwb2ludC1tYXgpKSkpKSkK LSAgICAoYWRkLWhvb2sgJ2FmdGVyLWNoYW5nZS1mdW5jdGlvbnMgIydmb250LWxvY2stYWZ0ZXIt Y2hhbmdlLWZ1bmN0aW9uIG5pbCB0KSkKLSAgOzsKLSAgOzsgUmVtb3ZlIHRoZSB0ZXh0IHByb3Bl cnRpZXMuCi0gIChsYXp5LWxvY2stYWZ0ZXItdW5mb250aWZ5LWJ1ZmZlcikKLSAgOzsKLSAgOzsg UmVtb3ZlIHRoZSBmb250aWZpY2F0aW9uIGhvb2tzLgotICAocmVtb3ZlLWhvb2sgJ3dpbmRvdy1z Y3JvbGwtZnVuY3Rpb25zICMnbGF6eS1sb2NrLWZvbnRpZnktYWZ0ZXItc2Nyb2xsIHQpCi0gIChy ZW1vdmUtaG9vayAnd2luZG93LXNjcm9sbC1mdW5jdGlvbnMgIydsYXp5LWxvY2stZGVmZXItYWZ0 ZXItc2Nyb2xsIHQpCi0gIChyZW1vdmUtaG9vayAnYmVmb3JlLWNoYW5nZS1mdW5jdGlvbnMgIyds YXp5LWxvY2stYXJyYW5nZS1iZWZvcmUtY2hhbmdlIHQpCi0gIChyZW1vdmUtaG9vayAnYWZ0ZXIt Y2hhbmdlLWZ1bmN0aW9ucyAjJ2xhenktbG9jay1mb250aWZ5LWxpbmUtYWZ0ZXItY2hhbmdlIHQp Ci0gIChyZW1vdmUtaG9vayAnYWZ0ZXItY2hhbmdlLWZ1bmN0aW9ucyAjJ2xhenktbG9jay1mb250 aWZ5LXJlc3QtYWZ0ZXItY2hhbmdlIHQpCi0gIChyZW1vdmUtaG9vayAnYWZ0ZXItY2hhbmdlLWZ1 bmN0aW9ucyAjJ2xhenktbG9jay1kZWZlci1saW5lLWFmdGVyLWNoYW5nZSB0KQotICAocmVtb3Zl LWhvb2sgJ2FmdGVyLWNoYW5nZS1mdW5jdGlvbnMgIydsYXp5LWxvY2stZGVmZXItcmVzdC1hZnRl ci1jaGFuZ2UgdCkKLSAgKHJlbW92ZS1ob29rICdvdXRsaW5lLXZpZXctY2hhbmdlLWhvb2sgIyds YXp5LWxvY2stZm9udGlmeS1hZnRlci12aXNhZ2UgdCkKLSAgKHJlbW92ZS1ob29rICdocy1oaWRl LWhvb2sgIydsYXp5LWxvY2stZm9udGlmeS1hZnRlci12aXNhZ2UgdCkpCi0MCi07OyBIb29rIGZ1 bmN0aW9ucy4KLQotOzsgTGF6eSBMb2NrIG1vZGUgaW50ZXJ2ZW5lcyB3aGVuICgxKSBhIHByZXZp b3VzbHkgaW52aXNpYmxlIGJ1ZmZlciByZWdpb24KLTs7IGJlY29tZXMgdmlzaWJsZSwgaS5lLiwg Zm9yIGRlbWFuZC0gb3IgZGVmZXItZHJpdmVuIG9uLXRoZS1zY3JvbGwKLTs7IGZvbnRpZmljYXRp b24sICgyKSBhIGJ1ZmZlciBtb2RpZmljYXRpb24gb2NjdXJzLCBpLmUuLCBmb3IgZGVmZXItZHJp dmVuCi07OyBvbi10aGUtZmx5IGZvbnRpZmljYXRpb24sICgzKSBFbWFjcyBiZWNvbWVzIGlkbGUs IGkuZS4sIGZvciBmb250aWZpY2F0aW9uIG9mCi07OyBkZWZlcnJlZCBmb250aWZpY2F0aW9uIGFu ZCBzdGVhbHRoIGZvbnRpZmljYXRpb24sIGFuZCAoNCkgb3RoZXIgc3BlY2lhbAotOzsgb2NjYXNp b25zLgotCi07OyAxLiAgVGhlcmUgYXJlIHRocmVlIHdheXMgd2hlcmVieSB0aGlzIGNhbiBoYXBw ZW4uCi07OwotOzsgKGEpIFNjcm9sbGluZyB0aGUgd2luZG93LCBlaXRoZXIgZXhwbGljaXRseSAo ZS5nLiwgYHNjcm9sbC11cCcpIG9yCi07OyAgICAgaW1wbGljaXRseSAoZS5nLiwgYHNlYXJjaC1m b3J3YXJkJykuICBIZXJlLCBgd2luZG93LXN0YXJ0JyBjaGFuZ2VzLgotOzsgICAgIEZvbnRpZmlj YXRpb24gb2NjdXJzIGJ5IGFkZGluZyBgbGF6eS1sb2NrLWZvbnRpZnktYWZ0ZXItc2Nyb2xsJyAo Zm9yCi07OyAgICAgZGVtYW5kLWRyaXZlbiBmb250aWZpY2F0aW9uKSBvciBgbGF6eS1sb2NrLWRl ZmVyLWFmdGVyLXNjcm9sbCcgKGZvcgotOzsgICAgIGRlZmVyLWRyaXZlbiBmb250aWZpY2F0aW9u KSB0byB0aGUgaG9vayBgd2luZG93LXNjcm9sbC1mdW5jdGlvbnMnLgotCi0oZGVmdW4gbGF6eS1s b2NrLWZvbnRpZnktYWZ0ZXItc2Nyb2xsICh3aW5kb3cgd2luZG93LXN0YXJ0KQotICA7OyBDYWxs ZWQgZnJvbSBgd2luZG93LXNjcm9sbC1mdW5jdGlvbnMnLgotICA7OyBGb250aWZ5IFdJTkRPVyBm cm9tIFdJTkRPVy1TVEFSVCBmb2xsb3dpbmcgdGhlIHNjcm9sbC4KLSAgKGxldCAoKGluaGliaXQt cG9pbnQtbW90aW9uLWhvb2tzIHQpKQotICAgIChsYXp5LWxvY2stZm9udGlmeS1yZWdpb24gd2lu ZG93LXN0YXJ0ICh3aW5kb3ctZW5kIHdpbmRvdyB0KSkpCi0gIDs7IEEgcHJpb3IgZGVsZXRpb24g dGhhdCBkaWQgbm90IGNhdXNlIHNjcm9sbGluZywgZm9sbG93ZWQgYnkgYSBzY3JvbGwsIHdvdWxk Ci0gIDs7IHJlc3VsdCBpbiBhbiB1bm5lY2Vzc2FyeSB0cmlnZ2VyIGFmdGVyIHRoaXMgaWYgd2Ug ZGlkIG5vdCBjYW5jZWwgaXQgbm93LgotICAoc2V0LXdpbmRvdy1yZWRpc3BsYXktZW5kLXRyaWdn ZXIgd2luZG93IG5pbCkpCi0KLShkZWZ1biBsYXp5LWxvY2stZGVmZXItYWZ0ZXItc2Nyb2xsICh3 aW5kb3cgX3dpbmRvdy1zdGFydCkKLSAgOzsgQ2FsbGVkIGZyb20gYHdpbmRvdy1zY3JvbGwtZnVu Y3Rpb25zJy4KLSAgOzsgRGVmZXIgZm9udGlmaWNhdGlvbiBmb2xsb3dpbmcgdGhlIHNjcm9sbC4g IFNhdmUgdGhlIGN1cnJlbnQgYnVmZmVyIHNvIHRoYXQKLSAgOzsgd2Ugc3Vic2VxdWVudGx5IGZv bnRpZnkgaW4gYWxsIHdpbmRvd3Mgc2hvd2luZyB0aGUgYnVmZmVyLgotICAodW5sZXNzIChtZW1x IChjdXJyZW50LWJ1ZmZlcikgbGF6eS1sb2NrLWJ1ZmZlcnMpCi0gICAgKHB1c2ggKGN1cnJlbnQt YnVmZmVyKSBsYXp5LWxvY2stYnVmZmVycykpCi0gIDs7IEEgcHJpb3IgZGVsZXRpb24gdGhhdCBk aWQgbm90IGNhdXNlIHNjcm9sbGluZywgZm9sbG93ZWQgYnkgYSBzY3JvbGwsIHdvdWxkCi0gIDs7 IHJlc3VsdCBpbiBhbiB1bm5lY2Vzc2FyeSB0cmlnZ2VyIGFmdGVyIHRoaXMgaWYgd2UgZGlkIG5v dCBjYW5jZWwgaXQgbm93LgotICAoc2V0LXdpbmRvdy1yZWRpc3BsYXktZW5kLXRyaWdnZXIgd2lu ZG93IG5pbCkpCi0KLTs7IChiKSBSZXNpemluZyB0aGUgd2luZG93LCBlaXRoZXIgZXhwbGljaXRs eSAoZS5nLiwgYGVubGFyZ2Utd2luZG93Jykgb3IKLTs7ICAgICBpbXBsaWNpdGx5IChlLmcuLCBg ZGVsZXRlLW90aGVyLXdpbmRvd3MnKS4gIEhlcmUsIGB3aW5kb3ctZW5kJyBjaGFuZ2VzLgotOzsg ICAgIEZvbnRpZmljYXRpb24gb2NjdXJzIGJ5IGFkZGluZyBgbGF6eS1sb2NrLWZvbnRpZnktYWZ0 ZXItcmVzaXplJyB0byB0aGUKLTs7ICAgICBob29rIGB3aW5kb3ctc2l6ZS1jaGFuZ2UtZnVuY3Rp b25zJy4KLQotKGRlZnVuIGxhenktbG9jay1mb250aWZ5LWFmdGVyLXJlc2l6ZSAoZnJhbWUpCi0g IDs7IENhbGxlZCBmcm9tIGB3aW5kb3ctc2l6ZS1jaGFuZ2UtZnVuY3Rpb25zJy4KLSAgOzsgRm9u dGlmeSB3aW5kb3dzIGluIEZSQU1FIGZvbGxvd2luZyB0aGUgcmVzaXplLiAgV2UgY2Fubm90IHVz ZQotICA7OyBgd2luZG93LXN0YXJ0JyBvciBgd2luZG93LWVuZCcgc28gd2UgZm9udGlmeSBjb25z ZXJ2YXRpdmVseS4KLSAgKHNhdmUtZXhjdXJzaW9uCi0gICAgKHNhdmUtc2VsZWN0ZWQtd2luZG93 Ci0gICAgICAoc2VsZWN0LWZyYW1lIGZyYW1lKQotICAgICAgKHdhbGstd2luZG93cyAoZnVuY3Rp b24gKGxhbWJkYSAod2luZG93KQotCQkgICAgICAgKHNldC1idWZmZXIgKHdpbmRvdy1idWZmZXIg d2luZG93KSkKLQkJICAgICAgICh3aGVuIGxhenktbG9jay1tb2RlCi0JCQkgKGxhenktbG9jay1m b250aWZ5LWNvbnNlcnZhdGl2ZWx5IHdpbmRvdykpCi0JCSAgICAgICAoc2V0LXdpbmRvdy1yZWRp c3BsYXktZW5kLXRyaWdnZXIgd2luZG93IG5pbCkpKQotCQkgICAgJ25vbWluaSBmcmFtZSkpKSkK LQotOzsgKGMpIERlbGV0aW9uIGluIHRoZSBidWZmZXIuICBIZXJlLCBhIGB3aW5kb3ctZW5kJyBt YXJrZXIgY2FuIGJlY29tZSB2aXNpYmxlLgotOzsgICAgIEZvbnRpZmljYXRpb24gb2NjdXJzIGJ5 IGFkZGluZyBgbGF6eS1sb2NrLWFycmFuZ2UtYmVmb3JlLWNoYW5nZScgdG8KLTs7ICAgICBgYmVm b3JlLWNoYW5nZS1mdW5jdGlvbnMnIGFuZCBgbGF6eS1sb2NrLWZvbnRpZnktYWZ0ZXItdHJpZ2dl cicgdG8gdGhlCi07OyAgICAgaG9vayBgcmVkaXNwbGF5LWVuZC10cmlnZ2VyLWZ1bmN0aW9ucycu ICBCZWZvcmUgZXZlcnkgZGVsZXRpb24sIHRoZQotOzsgICAgIG1hcmtlciBgd2luZG93LXJlZGlz cGxheS1lbmQtdHJpZ2dlcicgcG9zaXRpb24gaXMgc2V0IHRvIHRoZSBzb29uLXRvLWJlCi07OyAg ICAgY2hhbmdlZCBgd2luZG93LWVuZCcgcG9zaXRpb24uICBJZiB0aGUgbWFya2VyIGJlY29tZXMg dmlzaWJsZSwKLTs7ICAgICBgbGF6eS1sb2NrLWZvbnRpZnktYWZ0ZXItdHJpZ2dlcicgZ2V0cyBj YWxsZWQuICBPdWNoLiAgTm90ZSB0aGF0IHdlIG9ubHkKLTs7ICAgICBoYXZlIHRvIGRlYWwgd2l0 aCB0aGlzIGV2ZW50dWFsaXR5IGlmIHRoZXJlIGlzIG5vIG9uLXRoZS1mbHkgZGVmZXJyYWwuCi0K LShkZWZ1biBsYXp5LWxvY2stYXJyYW5nZS1iZWZvcmUtY2hhbmdlIChiZWcgZW5kKQotICA7OyBD YWxsZWQgZnJvbSBgYmVmb3JlLWNoYW5nZS1mdW5jdGlvbnMnLgotICA7OyBBcnJhbmdlIHRoYXQg aWYgdGV4dCBiZWNvbWVzIHZpc2libGUgaXQgd2lsbCBiZSBmb250aWZpZWQgKGlmIGEgZGVsZXRp b24KLSAgOzsgaXMgcGVuZGluZywgdGV4dCBtaWdodCBiZWNvbWUgdmlzaWJsZSBhdCB0aGUgYm90 dG9tKS4KLSAgKHVubGVzcyAoZXEgYmVnIGVuZCkKLSAgICAobGV0ICgod2luZG93cyAoZ2V0LWJ1 ZmZlci13aW5kb3ctbGlzdCAoY3VycmVudC1idWZmZXIpICdub21pbmkgdCkpIHdpbmRvdykKLSAg ICAgICh3aGlsZSB3aW5kb3dzCi0JKHNldHEgd2luZG93IChjYXIgd2luZG93cykpCi0JKHVubGVz cyAobWFya2VycCAod2luZG93LXJlZGlzcGxheS1lbmQtdHJpZ2dlciB3aW5kb3cpKQotCSAgKHNl dC13aW5kb3ctcmVkaXNwbGF5LWVuZC10cmlnZ2VyIHdpbmRvdyAobWFrZS1tYXJrZXIpKSkKLQko c2V0LW1hcmtlciAod2luZG93LXJlZGlzcGxheS1lbmQtdHJpZ2dlciB3aW5kb3cpICh3aW5kb3ct ZW5kIHdpbmRvdykpCi0JKHNldHEgd2luZG93cyAoY2RyIHdpbmRvd3MpKSkpKSkKLQotKGRlZnVu IGxhenktbG9jay1mb250aWZ5LWFmdGVyLXRyaWdnZXIgKHdpbmRvdyB0cmlnZ2VyLXBvaW50KQot ICA7OyBDYWxsZWQgZnJvbSBgcmVkaXNwbGF5LWVuZC10cmlnZ2VyLWZ1bmN0aW9ucycuCi0gIDs7 IEZvbnRpZnkgV0lORE9XIGZyb20gVFJJR0dFUi1QT0lOVCBmb2xsb3dpbmcgdGhlIHJlZGlzcGxh eS4KLSAgOzsgV2UgY291bGQgcHJvYmFibHkganVzdCB1c2UgYGxhenktbG9jay1mb250aWZ5LWFm dGVyLXNjcm9sbCcgd2l0aG91dCBsb3NzOgotICA7OyAgKGlubGluZSAobGF6eS1sb2NrLWZvbnRp ZnktYWZ0ZXItc2Nyb2xsIHdpbmRvdyAod2luZG93LXN0YXJ0IHdpbmRvdykpKQotICAobGV0ICgo aW5oaWJpdC1wb2ludC1tb3Rpb24taG9va3MgdCkpCi0gICAgKGxhenktbG9jay1mb250aWZ5LXJl Z2lvbiB0cmlnZ2VyLXBvaW50ICh3aW5kb3ctZW5kIHdpbmRvdyB0KSkpKQotCi07OyAyLiAgTW9k aWZpZWQgdGV4dCBtdXN0IGJlIG1hcmtlZCBhcyB1bmZvbnRpZmllZCBzbyBpdCBjYW4gYmUgaWRl bnRpZmllZCBhbmQKLTs7ICAgICBmb250aWZpZWQgbGF0ZXIgd2hlbiBFbWFjcyBpcyBpZGxlLiAg RGVmZXJyYWwgb2NjdXJzIGJ5IGFkZGluZyBvbmUgb2YKLTs7ICAgICBgbGF6eS1sb2NrLWZvbnRp ZnktKi1hZnRlci1jaGFuZ2UnIChmb3Igb24tdGhlLWZseSBmb250aWZpY2F0aW9uKSBvcgotOzsg ICAgIGBsYXp5LWxvY2stZGVmZXItKi1hZnRlci1jaGFuZ2UnIChmb3IgZGVmZXJyZWQgZm9udGlm aWNhdGlvbikgdG8gdGhlCi07OyAgICAgaG9vayBgYWZ0ZXItY2hhbmdlLWZ1bmN0aW9ucycuCi0K LShkZWZhbGlhcyAnbGF6eS1sb2NrLWZvbnRpZnktbGluZS1hZnRlci1jaGFuZ2UKLSAgOzsgQ2Fs bGVkIGZyb20gYGFmdGVyLWNoYW5nZS1mdW5jdGlvbnMnLgotICA7OyBGb250aWZ5IHRoZSBjdXJy ZW50IGNoYW5nZS4KLSAgIydmb250LWxvY2stYWZ0ZXItY2hhbmdlLWZ1bmN0aW9uKQotCi0oZGVm dW4gbGF6eS1sb2NrLWZvbnRpZnktcmVzdC1hZnRlci1jaGFuZ2UgKGJlZyBlbmQgb2xkLWxlbikK LSAgOzsgQ2FsbGVkIGZyb20gYGFmdGVyLWNoYW5nZS1mdW5jdGlvbnMnLgotICA7OyBGb250aWZ5 IHRoZSBjdXJyZW50IGNoYW5nZSBhbmQgZGVmZXIgZm9udGlmaWNhdGlvbiBvZiB0aGUgcmVzdCBv ZiB0aGUKLSAgOzsgYnVmZmVyLiAgU2F2ZSB0aGUgY3VycmVudCBidWZmZXIgc28gdGhhdCB3ZSBz dWJzZXF1ZW50bHkgZm9udGlmeSBpbiBhbGwKLSAgOzsgd2luZG93cyBzaG93aW5nIHRoZSBidWZm ZXIuCi0gIChsYXp5LWxvY2stZm9udGlmeS1saW5lLWFmdGVyLWNoYW5nZSBiZWcgZW5kIG9sZC1s ZW4pCi0gICh3aXRoLXNpbGVudC1tb2RpZmljYXRpb25zCi0gICAgKHVubGVzcyAobWVtcSAoY3Vy cmVudC1idWZmZXIpIGxhenktbG9jay1idWZmZXJzKQotICAgICAgKHB1c2ggKGN1cnJlbnQtYnVm ZmVyKSBsYXp5LWxvY2stYnVmZmVycykpCi0gICAgKHNhdmUtcmVzdHJpY3Rpb24KLSAgICAgICh3 aWRlbikKLSAgICAgIChyZW1vdmUtdGV4dC1wcm9wZXJ0aWVzIGVuZCAocG9pbnQtbWF4KSAnKGxh enktbG9jayBuaWwpKSkpKQotCi0oZGVmdW4gbGF6eS1sb2NrLWRlZmVyLWxpbmUtYWZ0ZXItY2hh bmdlIChiZWcgZW5kIF9vbGQtbGVuKQotICA7OyBDYWxsZWQgZnJvbSBgYWZ0ZXItY2hhbmdlLWZ1 bmN0aW9ucycuCi0gIDs7IERlZmVyIGZvbnRpZmljYXRpb24gb2YgdGhlIGN1cnJlbnQgY2hhbmdl LiAgU2F2ZSB0aGUgY3VycmVudCBidWZmZXIgc28KLSAgOzsgdGhhdCB3ZSBzdWJzZXF1ZW50bHkg Zm9udGlmeSBpbiBhbGwgd2luZG93cyBzaG93aW5nIHRoZSBidWZmZXIuCi0gICh3aXRoLXNpbGVu dC1tb2RpZmljYXRpb25zCi0gICAgKHVubGVzcyAobWVtcSAoY3VycmVudC1idWZmZXIpIGxhenkt bG9jay1idWZmZXJzKQotICAgICAgKHB1c2ggKGN1cnJlbnQtYnVmZmVyKSBsYXp5LWxvY2stYnVm ZmVycykpCi0gICAgKHJlbW92ZS10ZXh0LXByb3BlcnRpZXMgKG1heCAoMS0gYmVnKSAocG9pbnQt bWluKSkKLQkJCSAgICAobWluICgxKyBlbmQpIChwb2ludC1tYXgpKQotCQkJICAgICcobGF6eS1s b2NrIG5pbCkpKSkKLQotKGRlZnVuIGxhenktbG9jay1kZWZlci1yZXN0LWFmdGVyLWNoYW5nZSAo YmVnIF9lbmQgX29sZC1sZW4pCi0gIDs7IENhbGxlZCBmcm9tIGBhZnRlci1jaGFuZ2UtZnVuY3Rp b25zJy4KLSAgOzsgRGVmZXIgZm9udGlmaWNhdGlvbiBvZiB0aGUgcmVzdCBvZiB0aGUgYnVmZmVy LiAgU2F2ZSB0aGUgY3VycmVudCBidWZmZXIgc28KLSAgOzsgdGhhdCB3ZSBzdWJzZXF1ZW50bHkg Zm9udGlmeSBpbiBhbGwgd2luZG93cyBzaG93aW5nIHRoZSBidWZmZXIuCi0gICh3aXRoLXNpbGVu dC1tb2RpZmljYXRpb25zCi0gICAgKHVubGVzcyAobWVtcSAoY3VycmVudC1idWZmZXIpIGxhenkt bG9jay1idWZmZXJzKQotICAgICAgKHB1c2ggKGN1cnJlbnQtYnVmZmVyKSBsYXp5LWxvY2stYnVm ZmVycykpCi0gICAgKHNhdmUtcmVzdHJpY3Rpb24KLSAgICAgICh3aWRlbikKLSAgICAgIChyZW1v dmUtdGV4dC1wcm9wZXJ0aWVzIChtYXggKDEtIGJlZykgKHBvaW50LW1pbikpCi0JCQkgICAgICAo cG9pbnQtbWF4KQotCQkJICAgICAgJyhsYXp5LWxvY2sgbmlsKSkpKSkKLQotOzsgMy4gIERlZmVy cmVkIGZvbnRpZmljYXRpb24gYW5kIHN0ZWFsdGggZm9udGlmaWNhdGlvbiBhcmUgZG9uZSBmcm9t IHRoZXNlIHR3bwotOzsgICAgIGZ1bmN0aW9ucy4gIFRoZXkgYXJlIHNldCB1cCBhcyBJZGxlIFRp bWVycy4KLQotKGRlZnVuIGxhenktbG9jay1mb250aWZ5LWFmdGVyLWRlZmVyICgpCi0gIDs7IENh bGxlZCBmcm9tIGB0aW1lci1pZGxlLWxpc3QnLgotICA7OyBGb250aWZ5IGFsbCB3aW5kb3dzIHdo ZXJlIGRlZmVycmFsIGhhcyBvY2N1cnJlZCBmb3IgaXRzIGJ1ZmZlci4KLSAgKHNhdmUtZXhjdXJz aW9uCi0gICAgKHdoaWxlIChhbmQgbGF6eS1sb2NrLWJ1ZmZlcnMgKG5vdCAoaW5wdXQtcGVuZGlu Zy1wKSkpCi0gICAgICAobGV0ICgoYnVmZmVyIChjYXIgbGF6eS1sb2NrLWJ1ZmZlcnMpKSB3aW5k b3dzKQotCTs7IFBhcmFub2lhOiBjaGVjayB0aGF0IHRoZSBidWZmZXIgaXMgc3RpbGwgbGl2ZSBh bmQgTGF6eSBMb2NrIG1vZGUgb24uCi0JKHdoZW4gKGJ1ZmZlci1saXZlLXAgYnVmZmVyKQotCSAg KHNldC1idWZmZXIgYnVmZmVyKQotCSAgKHdoZW4gbGF6eS1sb2NrLW1vZGUKLQkgICAgKHNldHEg d2luZG93cyAoZ2V0LWJ1ZmZlci13aW5kb3ctbGlzdCBidWZmZXIgJ25vbWluaSB0KSkKLQkgICAg KHdoaWxlIHdpbmRvd3MKLQkgICAgICAobGF6eS1sb2NrLWZvbnRpZnktd2luZG93IChjYXIgd2lu ZG93cykpCi0JICAgICAgKHNldHEgd2luZG93cyAoY2RyIHdpbmRvd3MpKSkpKQotCShzZXRxIGxh enktbG9jay1idWZmZXJzIChjZHIgbGF6eS1sb2NrLWJ1ZmZlcnMpKSkpKQotICA7OyBBZGQgaG9v ayBpZiBmb250aWZpY2F0aW9uIHNob3VsZCBub3cgYmUgZGVmZXItZHJpdmVuIGluIHRoaXMgYnVm ZmVyLgotICAod2hlbiAoYW5kIGxhenktbG9jay1tb2RlIGxhenktbG9jay1kZWZlci1vbi1zY3Jv bGxpbmcKLQkgICAgIChtZW1xICMnbGF6eS1sb2NrLWZvbnRpZnktYWZ0ZXItc2Nyb2xsIHdpbmRv dy1zY3JvbGwtZnVuY3Rpb25zKQotCSAgICAgKG5vdCAob3IgKGlucHV0LXBlbmRpbmctcCkgKGxh enktbG9jay11bmZvbnRpZmllZC1wKSkpKQotICAgIChyZW1vdmUtaG9vayAnd2luZG93LXNjcm9s bC1mdW5jdGlvbnMgIydsYXp5LWxvY2stZm9udGlmeS1hZnRlci1zY3JvbGwgdCkKLSAgICAoYWRk LWhvb2sgJ3dpbmRvdy1zY3JvbGwtZnVuY3Rpb25zICMnbGF6eS1sb2NrLWRlZmVyLWFmdGVyLXNj cm9sbCBuaWwgdCkpKQotCi0oZGVmdW4gbGF6eS1sb2NrLWZvbnRpZnktYWZ0ZXItaWRsZSAoKQot ICA7OyBDYWxsZWQgZnJvbSBgdGltZXItaWRsZS1saXN0Jy4KLSAgOzsgRm9udGlmeSBhbGwgYnVm ZmVycyB0aGF0IG5lZWQgaXQsIHN0ZWFsdGhpbHkgd2hpbGUgaWRsZS4KLSAgKHVubGVzcyAob3Ig ZXhlY3V0aW5nLWtiZC1tYWNybyAod2luZG93LW1pbmlidWZmZXItcCAoc2VsZWN0ZWQtd2luZG93 KSkpCi0gICAgOzsgTG9vcCBvdmVyIGFsbCBidWZmZXJzLCBmb250aWZ5IHN0ZWFsdGhpbHkgZm9y IGVhY2ggaWYgbmVjZXNzYXJ5LgotICAgIChsZXQgKChidWZmZXJzIChidWZmZXItbGlzdCkpIChj b250aW51ZSB0KQotCSAgbWVzc2FnZSBtZXNzYWdlLWxvZy1tYXggbWluaWJ1ZmZlci1hdXRvLXJh aXNlKQotICAgICAgKHNhdmUtZXhjdXJzaW9uCi0JKGRvLXdoaWxlIChhbmQgYnVmZmVycyBjb250 aW51ZSkKLQkgIChzZXQtYnVmZmVyIChjYXIgYnVmZmVycykpCi0JICAoaWYgKG5vdCAoYW5kIGxh enktbG9jay1tb2RlIChsYXp5LWxvY2stdW5mb250aWZpZWQtcCkpKQotCSAgICAgIChzZXRxIGNv bnRpbnVlIChub3QgKGlucHV0LXBlbmRpbmctcCkpKQotCSAgICA7OyBGb250aWZ5IHJlZ2lvbnMg aW4gdGhpcyBidWZmZXIgd2hpbGUgdGhlcmUgaXMgbm8gaW5wdXQuCi0JICAgICh3aXRoLXRlbXAt bWVzc2FnZQotCQkod2hlbiBsYXp5LWxvY2stc3RlYWx0aC12ZXJib3NlCi0JCSAgIkZvbnRpZnlp bmcgc3RlYWx0aGlseS4uLiIpCi0JICAgICAgKGRvLXdoaWxlIChhbmQgKGxhenktbG9jay11bmZv bnRpZmllZC1wKSBjb250aW51ZSkKLQkJKGlmIChhbmQgbGF6eS1sb2NrLXN0ZWFsdGgtbG9hZAot CQkJICg+IChjYXIgKGxvYWQtYXZlcmFnZSkpIGxhenktbG9jay1zdGVhbHRoLWxvYWQpKQotCQkg ICAgOzsgV2FpdCBhIHdoaWxlIGJlZm9yZSBjb250aW51aW5nIHdpdGggdGhlIGxvb3AuCi0JCSAg ICAocHJvZ24KLQkJICAgICAgKHdoZW4gbWVzc2FnZQotCQkJKG1lc3NhZ2UgIkZvbnRpZnlpbmcg c3RlYWx0aGlseS4uLnN1c3BlbmRlZCIpCi0JCQkoc2V0cSBtZXNzYWdlIG5pbCkpCi0JCSAgICAg IChzZXRxIGNvbnRpbnVlIChzaXQtZm9yIChvciBsYXp5LWxvY2stc3RlYWx0aC10aW1lIDMwKSkp KQotCQkgIDs7IEZvbnRpZnkgYSBjaHVuay4KLQkJICAod2hlbiBsYXp5LWxvY2stc3RlYWx0aC12 ZXJib3NlCi0JCSAgICAoaWYgbWVzc2FnZQotCQkJKG1lc3NhZ2UgIkZvbnRpZnlpbmcgc3RlYWx0 aGlseS4uLiAlMmQlJSBvZiAlcyIKLQkJCQkgKGxhenktbG9jay1wZXJjZW50LWZvbnRpZmllZCkg KGJ1ZmZlci1uYW1lKSkKLQkJICAgICAgKG1lc3NhZ2UgIkZvbnRpZnlpbmcgc3RlYWx0aGlseS4u LiIpCi0JCSAgICAgIChzZXRxIG1lc3NhZ2UgdCkpKQotCQkgIDs7IEN1cnJlbnQgYnVmZmVyIG1h eSBoYXZlIGNoYW5nZWQgZHVyaW5nIGBzaXQtZm9yJy4KLQkJICAoc2V0LWJ1ZmZlciAoY2FyIGJ1 ZmZlcnMpKQotCQkgIChsYXp5LWxvY2stZm9udGlmeS1jaHVuaykKLQkJICAoc2V0cSBjb250aW51 ZSAoc2l0LWZvciAob3IgbGF6eS1sb2NrLXN0ZWFsdGgtbmljZSAwKSkpKSkpKQotCSAgKHNldHEg YnVmZmVycyAoY2RyIGJ1ZmZlcnMpKSkpKSkpCi0KLTs7IDQuICBTcGVjaWFsIGNpcmN1bXN0YW5j ZXMuCi0KLShkZWZ1biBsYXp5LWxvY2stZm9udGlmeS1hZnRlci12aXNhZ2UgKCkKLSAgOzsgQ2Fs bGVkIGZyb20gYG91dGxpbmUtdmlldy1jaGFuZ2UtaG9vaycgYW5kIGBocy1oaWRlLWhvb2snLgot ICA7OyBGb250aWZ5IHdpbmRvd3Mgc2hvd2luZyB0aGUgY3VycmVudCBidWZmZXIsIGFzIGl0cyB2 aXNpYmlsaXR5IGhhcyBjaGFuZ2VkLgotICA7OyBUaGlzIGlzIGEgY29uc3BpcmFjeSBoYWNrIGJl dHdlZW4gbGF6eS1sb2NrLmVsLCBvdXRsaW5lLmVsIGFuZAotICA7OyBoaWRlc2hvdy5lbC4KLSAg KGxldCAoKHdpbmRvd3MgKGdldC1idWZmZXItd2luZG93LWxpc3QgKGN1cnJlbnQtYnVmZmVyKSAn bm9taW5pIHQpKSkKLSAgICAod2hpbGUgd2luZG93cwotICAgICAgKGxhenktbG9jay1mb250aWZ5 LWNvbnNlcnZhdGl2ZWx5IChjYXIgd2luZG93cykpCi0gICAgICAoc2V0cSB3aW5kb3dzIChjZHIg d2luZG93cykpKSkpCi0KLShkZWZ1biBsYXp5LWxvY2stYWZ0ZXItZm9udGlmeS1idWZmZXIgKCkK LSAgOzsgQ2FsbGVkIGZyb20gYGZvbnQtbG9jay1hZnRlci1mb250aWZ5LWJ1ZmZlcicuCi0gIDs7 IE1hcmsgdGhlIGN1cnJlbnQgYnVmZmVyIGFzIGZvbnRpZmllZC4KLSAgOzsgVGhpcyBpcyBhIGNv bnNwaXJhY3kgaGFjayBiZXR3ZWVuIGxhenktbG9jay5lbCBhbmQgZm9udC1sb2NrLmVsLgotICAo d2l0aC1zaWxlbnQtbW9kaWZpY2F0aW9ucwotICAgIChhZGQtdGV4dC1wcm9wZXJ0aWVzIChwb2lu dC1taW4pIChwb2ludC1tYXgpICcobGF6eS1sb2NrIHQpKSkpCi0KLShkZWZ1biBsYXp5LWxvY2st YWZ0ZXItdW5mb250aWZ5LWJ1ZmZlciAoKQotICA7OyBDYWxsZWQgZnJvbSBgZm9udC1sb2NrLWFm dGVyLXVuZm9udGlmeS1idWZmZXInLgotICA7OyBNYXJrIHRoZSBjdXJyZW50IGJ1ZmZlciBhcyB1 bmZvbnRpZmllZC4KLSAgOzsgVGhpcyBpcyBhIGNvbnNwaXJhY3kgaGFjayBiZXR3ZWVuIGxhenkt bG9jay5lbCBhbmQgZm9udC1sb2NrLmVsLgotICAod2l0aC1zaWxlbnQtbW9kaWZpY2F0aW9ucwot ICAgIChyZW1vdmUtdGV4dC1wcm9wZXJ0aWVzIChwb2ludC1taW4pIChwb2ludC1tYXgpICcobGF6 eS1sb2NrIG5pbCkpKSkKLQwKLTs7IEZvbnRpZmljYXRpb24gZnVuY3Rpb25zLgotCi07OyBJZiBw YWNrYWdlcyB3YW50IHRvIGVuc3VyZSB0aGF0IHNvbWUgcmVnaW9uIG9mIHRoZSBidWZmZXIgaXMg Zm9udGlmaWVkLCB0aGV5Ci07OyBzaG91bGQgdXNlIHRoaXMgZnVuY3Rpb24uICBGb3IgYW4gZXhh bXBsZSwgc2VlIHBzLXByaW50LmVsLgotKGRlZnVuIGxhenktbG9jay1mb250aWZ5LXJlZ2lvbiAo YmVnIGVuZCkKLSAgOzsgRm9udGlmeSBiZXR3ZWVuIEJFRyBhbmQgRU5ELCB3aGVyZSBuZWNlc3Nh cnksIGluIHRoZSBjdXJyZW50IGJ1ZmZlci4KLSAgKHNhdmUtcmVzdHJpY3Rpb24KLSAgICAod2lk ZW4pCi0gICAgKHdoZW4gKHNldHEgYmVnICh0ZXh0LXByb3BlcnR5LWFueSBiZWcgZW5kICdsYXp5 LWxvY2sgbmlsKSkKLSAgICAgIChzYXZlLWV4Y3Vyc2lvbgotCSh3aXRoLXNpbGVudC1tb2RpZmlj YXRpb25zCi0JICAobGV0ICgoaW5oaWJpdC1wb2ludC1tb3Rpb24taG9va3MgdCkpCi0JICAgIDs7 IEZpbmQgc3VjY2Vzc2l2ZSB1bmZvbnRpZmllZCByZWdpb25zIGJldHdlZW4gQkVHIGFuZCBFTkQu Ci0JICAgIChjb25kaXRpb24tY2FzZSBkYXRhCi0JCShkby13aGlsZSBiZWcKLQkJICAobGV0ICgo bmV4dCAob3IgKHRleHQtcHJvcGVydHktYW55IGJlZyBlbmQgJ2xhenktbG9jayB0KQotCQkgICAg ICAgICAgICAgICAgICBlbmQpKSkKLQkJICAgIDs7IE1ha2Ugc3VyZSB0aGUgcmVnaW9uIGVuZCBw b2ludHMgYXJlIGF0IGJlZ2lubmluZyBvZiBsaW5lLgotCQkgICAgKGdvdG8tY2hhciBiZWcpCi0J CSAgICAodW5sZXNzIChib2xwKQotCQkgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCi0JCSAgICAg IChzZXRxIGJlZyAocG9pbnQpKSkKLQkJICAgIChnb3RvLWNoYXIgbmV4dCkKLQkJICAgICh1bmxl c3MgKGJvbHApCi0JCSAgICAgIChmb3J3YXJkLWxpbmUpCi0JCSAgICAgIChzZXRxIG5leHQgKHBv aW50KSkpCi0JCSAgICA7OyBGb250aWZ5IHRoZSByZWdpb24sIHRoZW4gZmxhZyBpdCBhcyBmb250 aWZpZWQuCi0JCSAgICAoZm9udC1sb2NrLWZvbnRpZnktcmVnaW9uIGJlZyBuZXh0KQotCQkgICAg KGFkZC10ZXh0LXByb3BlcnRpZXMgYmVnIG5leHQgJyhsYXp5LWxvY2sgdCkpCi0JCSAgICAoc2V0 cSBiZWcgKHRleHQtcHJvcGVydHktYW55IG5leHQgZW5kICdsYXp5LWxvY2sgbmlsKSkpKQotCSAg ICAgICgoZXJyb3IgcXVpdCkgKG1lc3NhZ2UgIkZvbnRpZnlpbmcgcmVnaW9uLi4uJXMiIGRhdGEp KSkpKSkpKSkKLQotKGRlZnVuIGxhenktbG9jay1mb250aWZ5LWNodW5rICgpCi0gIDs7IEZvbnRp ZnkgdGhlIG5lYXJlc3QgY2h1bmssIGZvciBzdGVhbHRoLCBpbiB0aGUgY3VycmVudCBidWZmZXIu Ci0gIChsZXQgKChpbmhpYml0LXBvaW50LW1vdGlvbi1ob29rcyB0KSkKLSAgICAoc2F2ZS1leGN1 cnNpb24KLSAgICAgIChzYXZlLXJlc3RyaWN0aW9uCi0JKHdpZGVuKQotCTs7IE1vdmUgdG8gZW5k IG9mIGxpbmUgaW4gY2FzZSB0aGUgY2hhcmFjdGVyIGF0IHBvaW50IGlzIG5vdCBmb250aWZpZWQu Ci0JKGVuZC1vZi1saW5lKQotCTs7IEZpbmQgd2hlcmUgdGhlIHByZXZpb3VzIChuZXh0KSB1bmZv bnRpZmllZCByZWdpb25zIGVuZCAoYmVnaW4pLgotCShsZXQgKChwcmV2IChwcmV2aW91cy1zaW5n bGUtcHJvcGVydHktY2hhbmdlIChwb2ludCkgJ2xhenktbG9jaykpCi0JICAgICAgKG5leHQgKHRl eHQtcHJvcGVydHktYW55IChwb2ludCkgKHBvaW50LW1heCkgJ2xhenktbG9jayBuaWwpKSkKLQkg IDs7IEZvbnRpZnkgZnJvbSB0aGUgbmVhcmVzdCB1bmZvbnRpZmllZCBwb3NpdGlvbi4KLQkgIChp ZiAob3IgKG51bGwgcHJldikgKGFuZCBuZXh0ICg8ICgtIG5leHQgKHBvaW50KSkgKC0gKHBvaW50 KSBwcmV2KSkpKQotCSAgICAgIDs7IFRoZSBuZXh0LCBvciBuZWl0aGVyLCByZWdpb24gaXMgdGhl IG5lYXJlc3Qgbm90IGZvbnRpZmllZC4KLQkgICAgICAobGF6eS1sb2NrLWZvbnRpZnktcmVnaW9u Ci0JICAgICAgIChwcm9nbiAoZ290by1jaGFyIChvciBuZXh0IChwb2ludC1taW4pKSkKLQkJICAg ICAgKGJlZ2lubmluZy1vZi1saW5lKQotCQkgICAgICAocG9pbnQpKQotCSAgICAgICAocHJvZ24g KGdvdG8tY2hhciAob3IgbmV4dCAocG9pbnQtbWluKSkpCi0JCSAgICAgIChmb3J3YXJkLWxpbmUg bGF6eS1sb2NrLXN0ZWFsdGgtbGluZXMpCi0JCSAgICAgIChwb2ludCkpKQotCSAgICA7OyBUaGUg cHJldmlvdXMgcmVnaW9uIGlzIHRoZSBuZWFyZXN0IG5vdCBmb250aWZpZWQuCi0JICAgIChsYXp5 LWxvY2stZm9udGlmeS1yZWdpb24KLQkgICAgIChwcm9nbiAoZ290by1jaGFyIHByZXYpCi0JCSAg ICAoZm9yd2FyZC1saW5lICgtIGxhenktbG9jay1zdGVhbHRoLWxpbmVzKSkKLQkJICAgIChwb2lu dCkpCi0JICAgICAocHJvZ24gKGdvdG8tY2hhciBwcmV2KQotCQkgICAgKGZvcndhcmQtbGluZSkK LQkJICAgIChwb2ludCkpKSkpKSkpKQotCi0oZGVmdW4gbGF6eS1sb2NrLWZvbnRpZnktd2luZG93 ICh3aW5kb3cpCi0gIDs7IEZvbnRpZnkgaW4gV0lORE9XIGJldHdlZW4gYHdpbmRvdy1zdGFydCcg YW5kIGB3aW5kb3ctZW5kJy4KLSAgOzsgV2UgY2FuIG9ubHkgZG8gdGhpcyB3aGVuIHdlIGNhbiB1 c2UgYHdpbmRvdy1zdGFydCcgYW5kIGB3aW5kb3ctZW5kJy4KLSAgKHdpdGgtY3VycmVudC1idWZm ZXIgKHdpbmRvdy1idWZmZXIgd2luZG93KQotICAgIChsYXp5LWxvY2stZm9udGlmeS1yZWdpb24g KHdpbmRvdy1zdGFydCB3aW5kb3cpICh3aW5kb3ctZW5kIHdpbmRvdykpKSkKLQotKGRlZnVuIGxh enktbG9jay1mb250aWZ5LWNvbnNlcnZhdGl2ZWx5ICh3aW5kb3cpCi0gIDs7IEZvbnRpZnkgaW4g V0lORE9XIGNvbnNlcnZhdGl2ZWx5IGFyb3VuZCBwb2ludC4KLSAgOzsgV2hlcmUgd2UgY2Fubm90 IHVzZSBgd2luZG93LXN0YXJ0JyBhbmQgYHdpbmRvdy1lbmQnIHdlIGRvIGB3aW5kb3ctaGVpZ2h0 JwotICA7OyBsaW5lcyBhcm91bmQgcG9pbnQuICBUaGF0IHdheSB3ZSBndWFyYW50ZWUgdG8gaGF2 ZSBkb25lIGVub3VnaC4KLSAgKHdpdGgtY3VycmVudC1idWZmZXIgKHdpbmRvdy1idWZmZXIgd2lu ZG93KQotICAgIChsZXQgKChpbmhpYml0LXBvaW50LW1vdGlvbi1ob29rcyB0KSkKLSAgICAgIChs YXp5LWxvY2stZm9udGlmeS1yZWdpb24KLSAgICAgICAoc2F2ZS1leGN1cnNpb24KLQkgKGdvdG8t Y2hhciAod2luZG93LXBvaW50IHdpbmRvdykpCi0JICh2ZXJ0aWNhbC1tb3Rpb24gKC0gKHdpbmRv dy1oZWlnaHQgd2luZG93KSkgd2luZG93KSAocG9pbnQpKQotICAgICAgIChzYXZlLWV4Y3Vyc2lv bgotCSAoZ290by1jaGFyICh3aW5kb3ctcG9pbnQgd2luZG93KSkKLQkgKHZlcnRpY2FsLW1vdGlv biAod2luZG93LWhlaWdodCB3aW5kb3cpIHdpbmRvdykgKHBvaW50KSkpKSkpCi0KLShkZWZ1biBs YXp5LWxvY2stdW5mb250aWZpZWQtcCAoKQotICA7OyBSZXR1cm4gbm9uLW5pbCBpZiB0aGVyZSBp cyBhbnl3aGVyZSBzdGlsbCB0byBiZSBmb250aWZpZWQuCi0gIChzYXZlLXJlc3RyaWN0aW9uCi0g ICAgKHdpZGVuKQotICAgICh0ZXh0LXByb3BlcnR5LWFueSAocG9pbnQtbWluKSAocG9pbnQtbWF4 KSAnbGF6eS1sb2NrIG5pbCkpKQotCi0oZGVmdW4gbGF6eS1sb2NrLXBlcmNlbnQtZm9udGlmaWVk ICgpCi0gIDs7IFJldHVybiB0aGUgcGVyY2VudGFnZSAob2YgY2hhcmFjdGVycykgb2YgdGhlIGJ1 ZmZlciB0aGF0IGFyZSBmb250aWZpZWQuCi0gIChzYXZlLXJlc3RyaWN0aW9uCi0gICAgKHdpZGVu KQotICAgIChsZXQgKChiZWcgKHBvaW50LW1pbikpIChzaXplIDApIG5leHQpCi0gICAgICA7OyBG aW5kIHdoZXJlIHRoZSBuZXh0IGZvbnRpZmllZCByZWdpb24gYmVnaW5zLgotICAgICAgKHdoaWxl IChzZXRxIGJlZyAodGV4dC1wcm9wZXJ0eS1hbnkgYmVnIChwb2ludC1tYXgpICdsYXp5LWxvY2sg dCkpCi0JKHNldHEgbmV4dCAob3IgKHRleHQtcHJvcGVydHktYW55IGJlZyAocG9pbnQtbWF4KSAn bGF6eS1sb2NrIG5pbCkKLQkJICAgICAgIChwb2ludC1tYXgpKSkKLQkoY2wtaW5jZiBzaXplICgt IG5leHQgYmVnKSkKLQkoc2V0cSBiZWcgbmV4dCkpCi0gICAgICA7OyBGbG9hdCBiZWNhdXNlIHVz aW5nIGludGVnZXIgbXVsdGlwbGljYXRpb24gd2lsbCBmcmVxdWVudGx5IG92ZXJmbG93LgotICAg ICAgKHRydW5jYXRlICgqICgvIChmbG9hdCBzaXplKSAocG9pbnQtbWF4KSkgMTAwKSkpKSkKLQwK LTs7IFZlcnNpb24gZGVwZW5kZW50IHdvcmthcm91bmRzIGFuZCBmaXhlcy4KLQotKHdoZW4gKGNv bnNwIGxhenktbG9jay1kZWZlci10aW1lKQotICA7OwotICA7OyBJbiAyLjA2LjA0IGFuZCBiZWxv dywgYGxhenktbG9jay1kZWZlci10aW1lJyBjb3VsZCBzcGVjaWZ5IG1vZGVzIGFuZCB0aW1lLgot ICAod2l0aC1vdXRwdXQtdG8tdGVtcC1idWZmZXIgIipIZWxwKiIKLSAgICAocHJpbmMgIlRoZSB2 YWx1ZSBvZiB0aGUgdmFyaWFibGUgYGxhenktbG9jay1kZWZlci10aW1lJyB3YXNcbiAiKQotICAg IChwcmluYyBsYXp5LWxvY2stZGVmZXItdGltZSkKLSAgICAocHJpbmMgIlxuIikKLSAgICAocHJp bmMgIlRoaXMgdmFyaWFibGUgY2Fubm90IG5vdyBiZSBhIGxpc3Qgb2YgbW9kZXMgYW5kIHRpbWUs XG4iKQotICAgIChwcmluYyAic28gaW5zdGVhZCB1c2UgIikKLSAgICAocHJpbmMgKHN1YnN0aXR1 dGUtY29tbWFuZC1rZXlzICJcXFtjdXN0b21pemUtb3B0aW9uXSIpKQotICAgIChwcmluYyAiIHRv IG1vZGlmeSB0aGUgdmFyaWFibGVzLCBvciBwdXQgdGhlIGZvcm1zOlxuIikKLSAgICAocHJpbmMg IiAoc2V0cSBsYXp5LWxvY2stZGVmZXItdGltZSAiKQotICAgIChwcmluYyAoY2RyIGxhenktbG9j ay1kZWZlci10aW1lKSkKLSAgICAocHJpbmMgIilcbiIpCi0gICAgKHByaW5jICIgKHNldHEgbGF6 eS1sb2NrLWRlZmVyLW9uLXRoZS1mbHkgJyIpCi0gICAgKHByaW5jIChjYXIgbGF6eS1sb2NrLWRl ZmVyLXRpbWUpKQotICAgIChwcmluYyAiKVxuIikKLSAgICAocHJpbmMgImluIHlvdXIgfi8uZW1h Y3MuICAiKQotICAgIChwcmluYyAiVGhlIGFib3ZlIGZvcm1zIGhhdmUgYmVlbiBldmFsdWF0ZWQg Zm9yIHRoaXMgZWRpdG9yIHNlc3Npb24sXG4iKQotICAgIChwcmluYyAiYnV0IHlvdSBzaG91bGQg dXNlICIpCi0gICAgKHByaW5jIChzdWJzdGl0dXRlLWNvbW1hbmQta2V5cyAiXFxbY3VzdG9taXpl LW9wdGlvbl0iKSkKLSAgICAocHJpbmMgIiBvciBjaGFuZ2UgeW91ciB+Ly5lbWFjcyBub3cuIikp Ci0gIChzZXRxIGxhenktbG9jay1kZWZlci1vbi10aGUtZmx5IChjYXIgbGF6eS1sb2NrLWRlZmVy LXRpbWUpCi0JbGF6eS1sb2NrLWRlZmVyLXRpbWUgKGNkciBsYXp5LWxvY2stZGVmZXItdGltZSkp KQotCi0od2hlbiAoYm91bmRwICdsYXp5LWxvY2stZGVmZXItZHJpdmVuKQotICA7OwotICA7OyBJ biAyLjA2LjA0IGFuZCBiZWxvdywgYGxhenktbG9jay1kZWZlci1kcml2ZW4nIHdhcyB0aGUgdmFy aWFibGUgbmFtZS4KLSAgKHdpdGgtb3V0cHV0LXRvLXRlbXAtYnVmZmVyICIqSGVscCoiCi0gICAg KHByaW5jICJUaGUgdmFsdWUgb2YgdGhlIHZhcmlhYmxlIGBsYXp5LWxvY2stZGVmZXItZHJpdmVu JyBpcyBzZXQgdG8gIikKLSAgICAoaWYgKG1lbXEgbGF6eS1sb2NrLWRlZmVyLWRyaXZlbiAnKG5p bCB0KSkKLQkocHJpbmMgbGF6eS1sb2NrLWRlZmVyLWRyaXZlbikKLSAgICAgIChwcmluYyAiYCIp Ci0gICAgICAocHJpbmMgbGF6eS1sb2NrLWRlZmVyLWRyaXZlbikKLSAgICAgIChwcmluYyAiJyIp KQotICAgIChwcmluYyAiLlxuIikKLSAgICAocHJpbmMgIlRoaXMgdmFyaWFibGUgaXMgbm93IGNh bGxlZCBgbGF6eS1sb2NrLWRlZmVyLW9uLXNjcm9sbGluZycsXG4iKQotICAgIChwcmluYyAic28g aW5zdGVhZCB1c2UgIikKLSAgICAocHJpbmMgKHN1YnN0aXR1dGUtY29tbWFuZC1rZXlzICJcXFtj dXN0b21pemUtb3B0aW9uXSIpKQotICAgIChwcmluYyAiIHRvIG1vZGlmeSB0aGUgdmFyaWFibGUs IG9yIHB1dCB0aGUgZm9ybTpcbiIpCi0gICAgKHByaW5jICIgKHNldHEgbGF6eS1sb2NrLWRlZmVy LW9uLXNjcm9sbGluZyAiKQotICAgICh1bmxlc3MgKG1lbXEgbGF6eS1sb2NrLWRlZmVyLWRyaXZl biAnKG5pbCB0KSkKLSAgICAgIChwcmluYyAiJyIpKQotICAgIChwcmluYyBsYXp5LWxvY2stZGVm ZXItZHJpdmVuKQotICAgIChwcmluYyAiKVxuIikKLSAgICAocHJpbmMgImluIHlvdXIgfi8uZW1h Y3MuICAiKQotICAgIChwcmluYyAiVGhlIGFib3ZlIGZvcm0gaGFzIGJlZW4gZXZhbHVhdGVkIGZv ciB0aGlzIGVkaXRvciBzZXNzaW9uLFxuIikKLSAgICAocHJpbmMgImJ1dCB5b3Ugc2hvdWxkIHVz ZSAiKQotICAgIChwcmluYyAoc3Vic3RpdHV0ZS1jb21tYW5kLWtleXMgIlxcW2N1c3RvbWl6ZS1v cHRpb25dIikpCi0gICAgKHByaW5jICIgb3IgY2hhbmdlIHlvdXIgfi8uZW1hY3Mgbm93LiIpKQot ICAoc2V0cSBsYXp5LWxvY2stZGVmZXItb24tc2Nyb2xsaW5nIGxhenktbG9jay1kZWZlci1kcml2 ZW4pKQotDAotOzsgSW5zdGFsbCBvdXJzZWx2ZXM6Ci0KLShhZGQtaG9vayAnd2luZG93LXNpemUt Y2hhbmdlLWZ1bmN0aW9ucyAjJ2xhenktbG9jay1mb250aWZ5LWFmdGVyLXJlc2l6ZSkKLShhZGQt aG9vayAncmVkaXNwbGF5LWVuZC10cmlnZ2VyLWZ1bmN0aW9ucyAjJ2xhenktbG9jay1mb250aWZ5 LWFmdGVyLXRyaWdnZXIpCi0KLSh1bmxlc3MgKGFzc3EgJ2xhenktbG9jay1tb2RlIG1pbm9yLW1v ZGUtYWxpc3QpCi0gIChzZXRxIG1pbm9yLW1vZGUtYWxpc3QgKGFwcGVuZCBtaW5vci1tb2RlLWFs aXN0ICcoKGxhenktbG9jay1tb2RlIG5pbCkpKSkpCi0KLShwcm92aWRlICdsYXp5LWxvY2spCi0K LTs7IExvY2FsIFZhcmlhYmxlczoKLTs7IGJ5dGUtY29tcGlsZS13YXJuaW5nczogKG5vdCBvYnNv bGV0ZSkKLTs7IEVuZDoKLQotOzs7IGxhenktbG9jay5lbCBlbmRzIGhlcmUKLS0gCjIuMzAuMgoK --00000000000068b7eb05e3c84fda-- From debbugs-submit-bounces@debbugs.gnu.org Thu Jul 14 16:52:19 2022 Received: (at 56560) by debbugs.gnu.org; 14 Jul 2022 20:52:19 +0000 Received: from localhost ([127.0.0.1]:38999 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oC5op-0005hf-34 for submit@debbugs.gnu.org; Thu, 14 Jul 2022 16:52:19 -0400 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:62502) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oC5ol-0005hR-It for 56560@debbugs.gnu.org; Thu, 14 Jul 2022 16:52:17 -0400 Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id F1BB9805DE; Thu, 14 Jul 2022 16:52:09 -0400 (EDT) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 81825805B2; Thu, 14 Jul 2022 16:52:08 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1657831928; bh=RJiJMJGg0XfWwVW3DRvlCs8GqDDdvqdhyhxMFhLWf1o=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=TougLHHG82F8ClWxPwHwzrf+i1TG8gmUhQ6/tyCPjZIePl8TfZw/lvu+dZ05DNyiC YmCNzipdpWHYJskioJ+QNGzW81hauSQothh5EM4sCB9HZXFmm8Qe+qsmf662BQYjjY X2YKyFTkg6rEMePpZ048m0z00QMKNAU6eX5oXcJ5f0YNNIslbzJlyuvibGqq5esDWO tNEfHxq/YH1OsIgPV3gpznyoMvULksXu8AfY6VeJfEJjEdoyR28+feCAuIc3P/rObq 3u5o7vt1a+TobkqYsSOFBO7xdzUQ0dv2rkVXTsC3FPO1mOE5WhAy2sBzZ0RgQjqyW8 nXK8aPCFAmHag== Received: from alfajor (unknown [45.44.229.252]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 4B5BE120147; Thu, 14 Jul 2022 16:52:08 -0400 (EDT) From: Stefan Monnier To: Stefan Kangas Subject: Re: bug#56560: [PATCH] Delete fast-lock.el and lazy-lock.el In-Reply-To: (Stefan Kangas's message of "Thu, 14 Jul 2022 11:45:47 -0700") Message-ID: References: Date: Thu, 14 Jul 2022 16:52:06 -0400 User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL -0.050 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 56560 Cc: 56560@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: -3.3 (---) Stefan Kangas [2022-07-14 11:45:47] wrote: > In a new attempt, I submit here a new patch where this variable is > turned into a defvar instead, so that it can still be used for > debugging. Hopefully, this should be more palatable. You got my vote, Stefan From debbugs-submit-bounces@debbugs.gnu.org Fri Jul 15 05:51:15 2022 Received: (at 56560) by debbugs.gnu.org; 15 Jul 2022 09:51:15 +0000 Received: from localhost ([127.0.0.1]:39457 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oCHyc-0000lS-Ot for submit@debbugs.gnu.org; Fri, 15 Jul 2022 05:51:14 -0400 Received: from quimby.gnus.org ([95.216.78.240]:44782) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oCHya-0000lF-C2 for 56560@debbugs.gnu.org; Fri, 15 Jul 2022 05:51:12 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:Date:References: In-Reply-To:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=Z/6pWckZb87HO1+ht8HGd+zV2l3NeoO+tkXFVsJXPBg=; b=Lek+fNMnlrx9oxGA43r5NbNyOm OD7azpE/Rfr9sIuNjN1ny9bDotFLY0nj7U94t/WdTQ3rwjnrzpJ52WMymKUdR+5yzAGCY5KbNEyD0 LCDi6s+2s9iSK00Nh525+IPlip3MZ/bCoUHsTgVlJvKwjMwVazsYjXzH0RJ+3Oe7jESw=; Received: from [84.212.220.105] (helo=joga) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oCHyQ-00059p-68; Fri, 15 Jul 2022 11:51:05 +0200 From: Lars Ingebrigtsen To: Stefan Kangas Subject: Re: bug#56560: [PATCH] Delete fast-lock.el and lazy-lock.el In-Reply-To: (Stefan Kangas's message of "Thu, 14 Jul 2022 11:45:47 -0700") References: X-Now-Playing: Peter Broderick's _Blackberry_: "The Niece" Date: Fri, 15 Jul 2022 11:51:01 +0200 Message-ID: <87cze6ogai.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: Stefan Kangas writes: > In a new attempt, I submit here a new patch where this variable is > turned into a defvar instead, so that it can still be used for > debugging. Hopefully, this should be more palatable. Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 56560 Cc: 56560@debbugs.gnu.org, Stefan Monnier 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: -3.3 (---) Stefan Kangas writes: > In a new attempt, I submit here a new patch where this variable is > turned into a defvar instead, so that it can still be used for > debugging. Hopefully, this should be more palatable. Looks good to me. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Thu Jul 28 09:36:56 2022 Received: (at 56560) by debbugs.gnu.org; 28 Jul 2022 13:36:56 +0000 Received: from localhost ([127.0.0.1]:57891 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oH3h9-0003sc-Qi for submit@debbugs.gnu.org; Thu, 28 Jul 2022 09:36:56 -0400 Received: from mail-vs1-f51.google.com ([209.85.217.51]:34800) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oH3h8-0003sM-IM for 56560@debbugs.gnu.org; Thu, 28 Jul 2022 09:36:54 -0400 Received: by mail-vs1-f51.google.com with SMTP id b67so1644063vsc.1 for <56560@debbugs.gnu.org>; Thu, 28 Jul 2022 06:36:54 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:in-reply-to:references:user-agent :mime-version:date:message-id:subject:to:cc; bh=Ry6dtdWDKrpHwkPWpsfr3qSLbowWdwvRo4wuprcc6VQ=; b=4mpL4qWAh81nLYXke3iborLMmHZ41ufhJBx1tT4wb+HNhEpqly0LmCo2gGkmocCk+3 99B+ZcaMhaezAnEwJLRH4hM31rUXnL9AgUoGhl7W+2sllaGV+H/J+SFHk/4bq+WfiV15 b56fdOIc9x+trMzn58xROp8zxnK9oh/dkkP0AF9vaMJS+jbv1xWkita8r0KLKndn5zWW u+b+Wh83Ygk5rzaeHFisUNaRCpn7em5fMU5TJiDipw5ISGYWwTEk9/+No+iB/Z51hfKZ 0WwkHiM/uiSZO4XunFcHMimd2qjmE2j2lpTlciGrfs7bAO8VmY6CXnxzqaQDEzwOeksD EUCQ== X-Gm-Message-State: AJIora+njUOEUEfA9GOg7Xd5fGX/y7Qa+iqUJ62iFwaojsWS9J+yMO7V 2MlNzFzQrP+tAJSGG7bNbWIdqzgNtVM4rj4nJJQ= X-Google-Smtp-Source: AGRyM1tGNnzP3/MFFE6+shwTmKBCaEBMTw8fjgrx6A2rJE9Ie+VSgm2/CxXJk/9fmdyThBX00Vom82LCiwn/8gICJ7E= X-Received: by 2002:a05:6102:3191:b0:358:49c7:d1ac with SMTP id c17-20020a056102319100b0035849c7d1acmr8376377vsh.18.1659015408934; Thu, 28 Jul 2022 06:36:48 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Thu, 28 Jul 2022 06:36:48 -0700 From: Stefan Kangas In-Reply-To: <87cze6ogai.fsf@gnus.org> (Lars Ingebrigtsen's message of "Fri, 15 Jul 2022 11:51:01 +0200") References: <87cze6ogai.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) X-Hashcash: 1:21:220728:monnier@iro.umontreal.ca::9g1YX2/4bedv79Dz:F55y MIME-Version: 1.0 Date: Thu, 28 Jul 2022 06:36:48 -0700 Message-ID: Subject: Re: bug#56560: [PATCH] Delete fast-lock.el and lazy-lock.el To: Lars Ingebrigtsen Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.5 (/) X-Debbugs-Envelope-To: 56560 Cc: 56560@debbugs.gnu.org, Stefan Monnier 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.5 (/) close 56560 29.1 thanks Lars Ingebrigtsen writes: > Stefan Kangas writes: > >> In a new attempt, I submit here a new patch where this variable is >> turned into a defvar instead, so that it can still be used for >> debugging. Hopefully, this should be more palatable. > > Looks good to me. No further comments within 2 weeks; pushed to master as commit 6b96c630f7. From unknown Tue Jun 17 20:19:38 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, 26 Aug 2022 11:24:05 +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