From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: A Soare Newsgroups: gmane.emacs.devel Subject: Re: The indentation of lisp code. Date: Tue, 12 Aug 2008 13:12:46 +0200 (CEST) Message-ID: <2716640.1364711218539566129.JavaMail.www@wwinf4604> Reply-To: alinsoar@voila.fr NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_49495_15608452.1218539566110" X-Trace: ger.gmane.org 1218540034 10045 80.91.229.12 (12 Aug 2008 11:20:34 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 12 Aug 2008 11:20:34 +0000 (UTC) To: "Emacs Dev [emacs-devel]" Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Aug 12 13:21:22 2008 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1KSrw9-0004sM-Fz for ged-emacs-devel@m.gmane.org; Tue, 12 Aug 2008 13:21:15 +0200 Original-Received: from localhost ([127.0.0.1]:56079 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KSrvB-0008TW-VG for ged-emacs-devel@m.gmane.org; Tue, 12 Aug 2008 07:20:14 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KSroA-00069j-Im for emacs-devel@gnu.org; Tue, 12 Aug 2008 07:12:59 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KSro3-00067R-Nt for emacs-devel@gnu.org; Tue, 12 Aug 2008 07:12:55 -0400 Original-Received: from [199.232.76.173] (port=48160 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KSro2-00066i-Tm for emacs-devel@gnu.org; Tue, 12 Aug 2008 07:12:51 -0400 Original-Received: from smtp2.voila.fr ([193.252.22.175]:52023 helo=smtp1.voila.fr) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KSro1-0004Ts-CK for emacs-devel@gnu.org; Tue, 12 Aug 2008 07:12:50 -0400 Original-Received: from me-wanadoo.net (localhost [127.0.0.1]) by mwinf4106.voila.fr (SMTP Server) with ESMTP id 2FCF95800287 for ; Tue, 12 Aug 2008 13:12:46 +0200 (CEST) Original-Received: from wwinf4604 (wwinf4604 [10.232.13.31]) by mwinf4106.voila.fr (SMTP Server) with ESMTP id 217AD5800283 for ; Tue, 12 Aug 2008 13:12:46 +0200 (CEST) X-ME-UUID: 20080812111246137.217AD5800283@mwinf4106.voila.fr X-Originating-IP: [85.9.55.98] X-Wum-Nature: EMAIL-NATURE X-WUM-FROM: |~| X-WUM-TO: |~| X-WUM-REPLYTO: |~| X-me-spamlevel: not-spam X-me-spamrating: 40.000000 X-me-spamcause: OK, (-120)(0000)gggruggvucftvghtrhhoucdtuddrvdejvddrfeekucetggdotefuucfrrhhofhhilhgvmecuoehnohhnvgeqnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenihdorghmuchlohhokhhinhhguchfohhrkiifrghnthcuthhoucdlqddvtddm X-detected-kernel: by monty-python.gnu.org: Linux 2.4-2.6 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:102317 Archived-At: ------=_Part_49495_15608452.1218539566110 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Please, read the code and report me what you think about, because I want to= know what you think _before_ to install the code in emacs. I tested it on = more than 20 long files of emacs' sources, so it is little possible to find= bugs. However, maybe you could aid me to improve the code, or the comments= . ____________________________________________________ Avant de prendre le volant, rep=C3=A9rez votre itin=C3=A9raire et visualise= z le trafic ! http://itineraire.voila.fr/itineraire.html ------=_Part_49495_15608452.1218539566110 Content-Type: application/octet-stream; name=indent.el content-transfer-encoding: base64 Content-Disposition: attachment; filename=indent.el Cjs7OyBIZXJlIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBsaXNwIGluZGVudC4gTm90ZSB0 aGF0IHRoZSBpbmRlbnRhdGlvbiBpcwo7OzsgY29tcHV0ZWQgbWFpbmx5IGJ5IGBsaXNwLWluZGVu dC1hdXRvbWF0b24nLgo7OzsKOzs7IExpc3AtaW5kZW50LWF1dG9tYXRvbiBpcyBpZGVudGljYWwg d2l0aCB0aGUgYXV0b21hdG9uIG9mIGNoYW5naW5nIHRoZSBzeW50YXgKOzs7IGNsYXNzZXMgaW5z aWRlIGBwYXJzZS1wYXJ0aWFsLXNleHAnLiBIZW5jZSwgYnkgYWRkaW5nIGEgZmV3IGxpbmVzIG9m IGNvZGUKOzs7IGluc2lkZSBgc2Nhbl9zZXhwc19mb3J3YXJkJywgd2UgY2FuIGdldCB0aGUgaW5k ZW50YXRpb24gYXMgYW4gMTF0aCBwYXJhbWV0ZXIKOzs7IHJldHVybmVkIGFmdGVyIGNhbGxpbmcg YHBhcnNlLXBhcnRpYWwtc2V4cCcuCjs7Owo7OzsgSSBjb21wdXRlZCB0aGUgaW5kZW50YXRpb24g dXNpbmcgdGhlIGJlbG93IGZvcm11bGEsIHRoYXQgY2FuIGJlIGFwcGxpZWQgZm9yCjs7OyBfZXZl cnlfIHByb2dyYW1taW5nIGxhbmd1YWdlIG9yIGV2ZW4gZm9yIHRoZSB0ZXh0IG1vZGVzLiBIZW5j ZSBJIGRlZHVjZSB0aGF0Cjs7OyB3ZSBjYW4gaGF2ZSBhIGdlbmVyYWwgaW5kZW50YXRpb24gY29u Y2VwdCBmb3IgZW1hY3MsIGFuZCB3ZSBjYW4gaGF2ZSBqdXN0Cjs7OyBfb25seV9vbmVfIGdlbmVy aWMgZnVuY3Rpb24gdG8gaW5kZW50IGEgbGluZSBvciBhIHJlZ2lvbiwgbm90IGhhdmluZyBhCjs7 OyBkaXN0aW5jdCBpbmRlbnQtbGluZSBmdW5jdGlvbiBmb3IgZXZlcnkgbWFqb3IgbW9kZS4gRXZl cnkgbWFqb3IgbW9kZSB3aWxsIGJlCjs7OyBhYmxlIHRvIGluZGVudCBpdHMgY29kZSB1c2luZyBq dXN0IDIgZnVuY3Rpb25zOiA8TUFKT1ItTU9ERT4taW5kZW50LXJ1bGVzCjs7OyBhbmQgPE1BSk9S LU1PREU+LXdoYXQtYXJndW1lbnQgKHRoaXMgbGF0dGVyIGlzIG5vdCBjb21wdWxzb3J5IGZvciBl dmVyeQo7OzsgbWFqb3IgbW9kZSkuCjs7Owo7OzsgVGhlIGZvcm11bGEgdGhhdCBJIHVzZWQgdG8g Y29tcHV0ZSB0aGUgaW5kZW50YXRpb24gaXMKOzs7Cjs7OyBDb3JyZWN0LUluZGVudCAoTGluZS1Y KSA9IFNVTSAoRGV2aWF0aW9uIChMaW5lLUNvbnRhaW5pZy1TZXhwW2ldKSkgKwo7OzsgICAgICAg ICAgICAgICAgICAgICAgICAgICBEZXZpYXRpb24gKExpbmUtWCkgKwo7OzsgICAgICAgICAgICAg ICAgICAgICAgICAgICBDdXJyZW50X0FsaWduZW1lbnQgKExpbmUtWCksCjs7Owo7Ozsgd2hlcmUg aSBiZWxvbmdzIHRvIHRoZSBzZXQgb2Ygb3BlbiBzZXhwcyB0aGF0IGNvbnRhaW5zIHRoZSBiZWdp bm5pbmcgb2YgdGhlCjs7OyBsaW5lIFgsIHN0YXJ0aW5nIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0 aGUgbG9jYWwgY29kZSAoYmVnaW5uaW5nLW9mLWRlZnVuKSwKOzs7Cjs7OyBhbmQgRGlmZmVyZW5j ZSAoTGluZS1Db250YWluaWctU2V4cFtpXSkgaXMgdGhlIGZ1bmN0aW9uIGBkaWZmJyBkZWZpbmVk Cjs7OyBpbnNpZGUgdGhlIGF1dG9tYXRvbiBgbGlzcC1pbmRlbnQtYXV0b21hdG9uJy4KOzs7Cjs7 OyBUaGUgdGhpcmQgZmllbGQgb2YgYW4gZWxlbWVudCBvZiBMSVNQLUNPREUtVFJFRS1JTkRFTlQt VkFMVUUgaXMgZXF1YWwgdG86Cjs7Owo7OzsgRElGRkVSRU5DRSAoTGluZS1YKSA9ICBTVU0gKERl dmlhdGlvbiAoTGluZS1Db250YWluaWctU2V4cFtpXSkpICsKOzs7ICAgICAgICAgICAgICAgICAg ICAgICAgRGV2aWF0aW9uIChMaW5lLVgpLgo7OzsKOzs7IFRoaXMgZGlmZmVyZW5jZSBjYW4gYmUg ZXhwcmVzc2VkIGFsc28gYXM6Cjs7Owo7OzsgQ29ycmVjdC1JbmRlbnQgKExpbmUtWCkgPSBJbnRl Z3JhbCAoIEZyb20tU3RhcnRpbmctUG9pbnQtb2YtQ29kZSAsCjs7OyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgVG8tQmVnaW5uaW5nLW9mLUxpbmUtWCAsCjs7OyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2YtRnVuY3Rpb24tRElGRiApCjs7OwoKCihk ZWZ2YXIgbGlzcC1kb2Mtc3RyaW5nLWluZGVudCAzCiAgICJUaGUgaW5kZW50IGNvbHVtbiBvZiBk b2Mtc3RyaW5nIG9mIHNvbWUgZnVuY3Rpb25zIGluIEVtYWNzIExpc3AgY29kZS4iICkKCihkZWZ2 YXIgbGlzcC1jb2RlLXRyZWUtaW5kZW50LXZhbHVlIG5pbAogICAiT2xkIGFuZCBuZXcgaW5kZW50 YXRpb25zIGR1cmluZyBhbmQgYWZ0ZXIgcnVubmluZyBgbGlzcC1pbmRlbnQtYXV0b21hdG9uJy4K VGhlIHZhbHVlIGlzIGEgbGlzdCB0aGF0IGNvbnRhaW5zIG9uZSBlbGVtZW50IGZvciBlYWNoIGxp bmUKc2Nhbm5lZC4gVGhlc2UgZWxlbWVudHMgYXJlIG9yZGVyZWQgbGFzdCBsaW5lIGZpcnN0LCBz byB0aGUgZmlyc3QKZWxlbWVudCBhcHBsaWVzIHRvIHRoZSBjdXJyZW50IGxpbmUgXChvciB0aGUg bGluZSBhZnRlciB0aGUKcmVnaW9uIHNjYW5uZWRcKSwgYW5kIHRoZSBzZWNvbmQgZWxlbWVudCBh cHBsaWVzIHRvIHRoZSBwcmV2aW91cwpsaW5lLCBhbmQgc28gb24uCgpFYWNoIGVsZW1lbnQgbG9v a3MgbGlrZSBcKE5FVy1JTkRFTlQgT0xELUlOREVOVCBESUZGRVJFTkNFXCksCndoZXJlIE9MRC1J TkRFTlQgaXMgdGhlIGFjdHVhbCBpbmRlbnRhdGlvbiBvZiB0aGUgbGluZSwgYW5kCk5FVy1JTkRF TlQgaXMgdGhlIGRlc2lyZWQgaW5kZW50YXRpb24gZm9yIHRoYXQgbGluZS4gRElGRkVSRU5DRQpp cyB0aGUgZGlmZmVyZW5jZSBvZiB0aGUgY29ycmVjdCBpbmRlbnRhdGlvbiBvZiB0aGUgbGluZSB3 aGVyZQp0aGUgY29udGFpbmluZy1zZXhwIHN0YXJ0cywgYW5kIGl0cyBhY3R1YWwgaW5kZW50YXRp b24uIFdoZW4gYQpsaW5lIHN0YXJ0cyBpbnNpZGUgYSBzdHJpbmcsIHRoZSBlbGVtZW50IGlzIG5p bC4KCkZvciBpbnN0YW5jZSwgaW4gdGhlIGNhc2Ugd2hlcmUgd2UgYWxpZ24gdGhpcyBjb2RlOgoK XChkZWZ1biBmIFwoeCB5CiAgICAgICAgICAgeiB0XCkKICBcImFuIGV4YW1wbGUgb2YgRW1hY3Mg TGlzcCBjb2RlCnRoYXQgaXMgYWxpZ25lZFwiCiAgICBcKGZ1bmNhbGwgeAogICAgICAgICBcKDEr CiAgICAgICAgICAgIHgKICAgICAgICAgICAgeQogICAgICAgICAgelwpXClcKQoKTElTUC1DT0RF LVRSRUUtSU5ERU5ULVZBTFVFIHdpbGwgYmU6CgpcKFwoMTIgMTAgLTJcKSBcKDEyIDEyIC0yXCkg XCgxMiAxMiAtMlwpIFwoMTEgOSAyXCkgXCgyIDQgMFwpIG5pbCBcKDMgMiAwXCkgXCgxMCAxMSAw XCkgXCgwIDAgMFwpIFwpCgpFbGVyeSBlbGVtZW50IG9mIExJU1AtQ09ERS1UUkVFLUlOREVOVC1W QUxVRSBpcyBhc3NvY2lhdGVkIHdpdGggYQpsaW5lOgoKXCgwICAwICAgMFwpICB8XChkZWZ1biBm IFwoeCB5ClwoMTAgMTEgIDBcKSAgfCAgICAgICAgICAgeiB0XCkKXCgzICAyICAgMFwpICB8ICBc ImFuIGV4YW1wbGUgb2YgRW1hY3MgTGlzcCBjb2RlCm5pbCAgICAgICAgIHx0aGF0IGlzIGFsaWdu ZWRcIgpcKDIgIDQgICAwXCkgIHwgICAgXChmdW5jYWxsIHgKXCgxMSA5ICAgMlwpICB8ICAgICAg ICAgXCgxKwpcKDEyIDEyIC0yXCkgIHwgICAgICAgICAgICB4ClwoMTIgMTIgLTJcKSAgfCAgICAg ICAgICAgIHkKXCgxMiAxMCAtMlwpICB8ICAgICAgICAgIHpcKVwpXCkiKQoKKGRlZnVuIGxpc3At Y29kZS10cmVlLXNlbGVjdG9yICh3aGljaCAmb3B0aW9uYWwgc3RydWN0KQogICAiR2V0IGEgZmll bGQgZnJvbSB0aGUgZmlyc3QgZWxlbWVudCBmcm9tCmBsaXNwLWNvZGUtdHJlZS1pbmRlbnQtdmFs dWUnIG9yIGZyb20gYW4gaWRlbnRpY2FsIGRhdGEKc3RydWN0dXJlLiBXaGVuIFNUUlVDVCBpcyBu b3QgbmlsLCBleHRyYWN0IGEgZmllbGQgZnJvbSB0aGUgZmlyc3QKZWxlbWVudCBvZiBTVFJVQ1Qu IFNUUlVDVCBtdXN0IGhhdmUgdGhlIHNhbWUgc3RydWN0dXJlIHdpdGgKYGxpc3AtY29kZS10cmVl LWluZGVudC12YWx1ZScuCgpXSElDSCBjYW4gYmUgb25lIG9mCiA6bmV3IHRvIGdldCBORVctSU5E RU5UCiA6b2xkIHRvIGdldCBPTEQtSU5ERU5UCiA6ZGlmZiB0byBnZXQgRElGRkVSRU5DRSIKICAo bGV0ICgobyAoY2FyIChvciBzdHJ1Y3QgbGlzcC1jb2RlLXRyZWUtaW5kZW50LXZhbHVlKSkpKQog ICAgKGNvbmQgKChlcSB3aGljaCA6bmV3KQogICAgICAgICAgIChudGggMCBvKSApCiAgICAgICAg ICAoKGVxIHdoaWNoIDpvbGQpCiAgICAgICAgICAgKG50aCAxIG8pICkKICAgICAgICAgICgoZXEg d2hpY2ggOmRpZmYpCiAgICAgICAgICAgKG50aCAyIG8pICkKICAgICAgICAgICh0IChlcnJvciAi T3VwcyEgVW5rbm93biBwYXJhbWV0ZXIhIikpKSkpCgooZGVmdW4gbGlzcC1jb2RlLXRyZWUtY29u c3RydWN0b3IgKCZvcHRpb25hbCBuZXctaW5kZW50IG9sZC1pbmRlbnQgZGlmZikKICAgIkFkZCBh IG5ldyBlbGVtZW50IGxpa2UgXChORVctSU5ERU5UIE9MRC1JTkRFTlQgRElGRkVSRU5DRVwpLAph c2lkZSBmcm9tIHRoZSBjYXNlIGluIHdoaWNoIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpbmUgaXMg aW5zaWRlCmEgc3RyaW5nLCBpbiB3aGljaCBjYXNlIHdlIGFkZCBuaWwuCgpXaGVuIG9uZSBhZGRz IG5pbCB0byBgbGlzcC1jb2RlLXRyZWUtaW5kZW50LXZhbHVlJywgTkVXLUlOREVOVCwKT0xELUlO REVOVCBESUZGIGNhbiBtaXNzIGZyb20gdGhlIGNhbGwgb2YKbGlzcC1jb2RlLXRyZWUtY29uc3Ry dWN0b3IuCgpORVctSU5ERU5ULCBPTEQtSU5ERU5ULCBESUZGIGFyZSBleHBsYWluZWQgaW4gdGhl IGRlZmluaXRpb24gb2YKYGxpc3AtY29kZS10cmVlLWluZGVudC12YWx1ZScuCgpXaGVuIE5FVy1J TkRFTlQgaXMgbmlsLCBhZGQgbmlsLiIKICAoc2V0cSBsaXNwLWNvZGUtdHJlZS1pbmRlbnQtdmFs dWUKICAgICAgICAoY29ucwogICAgICAgICAoaWYgbmV3LWluZGVudAogICAgICAgICAgICAgKGxp c3QgbmV3LWluZGVudCBvbGQtaW5kZW50IGRpZmYpCiAgICAgICAgICAgbmlsKQogICAgICAgICBs aXNwLWNvZGUtdHJlZS1pbmRlbnQtdmFsdWUpKSkKCihtYXBjCiAobGFtYmRhICh4KQogICAgIkEg bGlzdCBvZiBpbmRleGVzIG9mIHRoZSBwYXJhbWV0ZXIgdGhhdCBpcyB0aGUKICAgICBkb2Mtc3Ry aW5nIG9mIHNvbWUgdXN1YWwgZnVuY3Rpb25zLgoKICAgICBFYWNoIGVsZW1lbnQgb2YgdGhlIGxp c3QgaGFzIHRoZSBmb3JtIFwoSU5ERVggRlVOQ1RJT05TXCksCiAgICAgd2hlcmUgRlVOQ1RJT05T IGlzIGFuIGVudW1lcmF0aW9uIG9mIGZ1bmN0aW9ucyB3aG9zZQogICAgIGRvYy1zdHJpbmcgcGFy YW1ldGVyIGlzIG9uIHRoZSBwb3NpdGlvbiBJTkRFWC4iCiAgIChsZXQgKChpbmRleCAoY2FyIHgp KSkKICAgICAoZG9saXN0IChmdW5jdGlvbiAoY2RyIHgpKQogICAgICAgKHB1dCBmdW5jdGlvbiAn ZG9jLXN0cmluZy1lbHQgaW5kZXgpKSkpCiAnKCAoMiBkZWZ0aGVtZSBkZWZzdHJ1Y3QgZGVmaW5l LXNrZWxldG9uCiAgICAgICBlYXN5LW1tb2RlLWRlZmluZS1taW5vci1tb2RlIGRlZmluZS1taW5v ci1tb2RlCiAgICAgICBlYXN5LW1tb2RlLWRlZmluZS1nbG9iYWwtbW9kZSBkZWZpbmUtZ2xvYmFs LW1pbm9yLW1vZGUKICAgICAgIGRlZmluZS1nbG9iYWxpemVkLW1pbm9yLW1vZGUgZGVmaW5lLWli dWZmZXItZmlsdGVyCiAgICAgICBkZWZpbmUtaWJ1ZmZlci1zb3J0ZXIgbGFtYmRhIGRlZmluZS1j YXRlZ29yeSkKICAgICgzIGF1dG9sb2FkIGRlZmFsaWFzIGRlZnVuIGRlZnVuKiBkZWZ2YXIgZGVm ZmFjZSBkZWZjdXN0b20KICAgICAgIGRlZmdyb3VwIGRlZmNvbnN0IGRlZm1hY3JvIGRlZm1hY3Jv KiBkZWZzdWJzdAogICAgICAgZGVmaW5lLWlidWZmZXItb3AgZGVmYWxpYXMgZGVmdmFyYWxpYXMg ZGVmaW5lLXdpZGdldAogICAgICAgZGVmaW5lLWNvbXBpbGF0aW9uLW1vZGUgKQogICAgKDQgZGVm aW5lLWRlcml2ZWQtbW9kZSkKICAgICg3IGRlZmluZS1nZW5lcmljLW1vZGUgKSkpCgoobWFwYwog KGxhbWJkYSAoeCkKICAgICJBIGxpc3Qgb2YgZnVuY3Rpb25zIHdob3NlIHBhcmFtZXRlcnMgdXNl IHNwZWNpYWwgaW5kZW50LgoKICAgICBFYWNoIGVsZW1lbnQgb2YgdGhlIGxpc3QgaGFzIHRoZSBm b3JtIFwoTiBGVU5DVElPTlNcKSwgd2hlcmUKICAgICBGVU5DVElPTlMgaXMgYW4gZW51bWVyYXRp b24gb2YgZnVuY3Rpb25zIHdob3NlIGZpcnN0IE4KICAgICBwYXJhbWV0ZXJzJyBhbGlnbmVtZW50 IHVzZXMgZG91YmxlIGluZGVudC4gVGhlIHJlc3Qgb2YgdGhlCiAgICAgcGFyYW1ldGVycyBhcmUg YWxpZ25lZCB1c2luZyBub3JtYWwgaW5kZW50LiBJZiBOIGlzIHplcm8sCiAgICAgYWxsIHRoZSBw YXJhbWV0ZXJzIHdpbGwgYmUgaW5kZW50ZWQgdXNpbmcgbm9ybWFsIGluZGVudC4KICAgICBOb3Rl IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYSBzcGVjaWFsIGZvcm0gZGVmaW5lZCBoZXJlIHdpdGgK ICAgICBOPTAgYW5kIGFuIGFyYml0cmFyeSBmdW5jdGlvbiBjYWxsICggdGhhdCBhbGlnbnMgaXRz CiAgICAgcGFyYW1ldGVycyBiZW5lYXRoIHRoZSBmaXJzdCBwYXJhbWV0ZXIgKS4iCiAgIChsZXQg KChpbmRleCAoY2FyIHgpKSkKICAgICAoZG9saXN0IChmdW5jdGlvbiAoY2RyIHgpKQogICAgICAg KHB1dCBmdW5jdGlvbiAnbGlzcC1pbmRlbnQtZnVuY3Rpb24gaW5kZXgpKSkpCiAnKCAoMCBwcm9n biBzYXZlLWV4Y3Vyc2lvbiBzYXZlLXdpbmRvdy1leGN1cnNpb24KICAgICAgIHNhdmUtc2VsZWN0 ZWQtd2luZG93IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1tYXRjaC1kYXRhCiAgICAgICBzYXZlLWN1 cnJlbnQtYnVmZmVyIGNvbWJpbmUtYWZ0ZXItY2hhbmdlLWNhbGxzCiAgICAgICB3aXRoLW91dHB1 dC10by1zdHJpbmcgd2l0aC10ZW1wLWJ1ZmZlciBsYW1iZGEgZGVmdW4gZGVmdW4qCiAgICAgICBk ZWZjdXN0b20gZGVmaW5lLXdpZGdldCBkZWZncm91cCBkZWZmYWNlIGRlZnZhciBkZWZjb25zdAog ICAgICAgZGVmbWFjcm8gZGVmc3Vic3QgZGVmaW5lLWRlcml2ZWQtbW9kZSBhdXRvbG9hZCkKICAg ICgxIHByb2cxIHdpdGgtY3VycmVudC1idWZmZXIgd2l0aC10ZW1wLWZpbGUgd2l0aC10ZW1wLW1l c3NhZ2UKICAgICAgIHdpdGgtc3ludGF4LXRhYmxlIGxldCBsZXQqIHdoaWxlIGNhdGNoIHVud2lu ZC1wcm90ZWN0CiAgICAgICB3aXRoLW91dHB1dC10by10ZW1wLWJ1ZmZlciBldmFsLWFmdGVyLWxv YWQgZG9saXN0IGRvdGltZXMKICAgICAgIHdoZW4gdW5sZXNzKQogICAgKDIgcHJvZzIgaWYgcmVh ZC1pZiBjb25kaXRpb24tY2FzZSkpKQoKKGRlZnVuIGxpc3AtaW5kZW50LXJ1bGVzIChzdGF0ZSBp bmRlbnQgc3RhcnQtY29sIGluZGVudC13aGF0LWFyZ3VtZW50IGxpc3AtaW5kZW50LWdldCkKICAg IlJldHVybnMgYSBwb3NpdGl2ZSBpbnRlZ2VyIHRoYXQgcmVwcmVzZW50cyB0aGUgYXBwcm9wcmlh dGUKaW5kZW50YXRpb24gZm9yIHRoZSBjdXJyZW50IGxpbmUuCgpsaXNwLWluZGVudC1ydWxlcyBp cyBhbHdheXMgY2FsbGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgZXZlcnkgbGluZQpcKGFmdGVyIHNr aXBwaW5nIHRoZSB3aGl0ZSBzcGFjZXNcKSBmcm9tIGBsaXNwLWluZGVudC1hdXRvbWF0b24nLgoK U1RBVEUsIElOREVOVCwgU1RBUlQtQ09MLCBJTkRFTlQtV0hBVC1BUkdVTUVOVCwgTElTUC1JTkRF TlQtR0VUCmFyZSBkZWZpbmVkIGluIGBsaXNwLWluZGVudC1hdXRvbWF0b24nIgogIChjb25kICgo ZWx0IHN0YXRlIDMpCiAgICAgICAgIDs7IElOU0lERSBBIFNUUklORywgZG9uJ3QgY2hhbmdlIGlu ZGVudGF0aW9uLgogICAgICAgICBuaWwgKQogICAgICAgICgobnVsbCAoY2FkciBzdGF0ZSkpCiAg ICAgICAgIDs7IE9VVFNJREUgQU4gRVhQUkVTU0lPTiBhbGlnbiB0byB0aGUgbGVmdCBjb2x1bW4K ICAgICAgICAgMCApCiAgICAgICAgKChudWxsIGluZGVudCkKICAgICAgICAgOzsgYW4gRU1QVFkg UEFSRVRIRVNJUwogICAgICAgICAoMSsgc3RhcnQtY29sKSkKICAgICAgICAoKGFuZCAobG9va2lu Zy1hdCAiXFxzXCIiKQogICAgICAgICAgICAgIChlcSAoZnVuY2FsbCBsaXNwLWluZGVudC1nZXQg aW5kZW50IDpmaXJzdCA6dHlwZSkgOncpCiAgICAgICAgICAgICAgKGdldCAoaW50ZXJuLXNvZnQg KGZ1bmNhbGwgbGlzcC1pbmRlbnQtZ2V0IGluZGVudCA6Zmlyc3QgOnZhbCkpCiAgICAgICAgICAg ICAgICAgICAnZG9jLXN0cmluZy1lbHQpCiAgICAgICAgICAgICAgKGVxIChsZXQgKChsbCAobGVu Z3RoIGluZGVudCkpKQogICAgICAgICAgICAgICAgICAgIChtYXBjIChsYW1iZGEgKHgpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoaWYgKGVxIDpxIChmdW5jYWxsIGxpc3AtaW5kZW50LWdl dCAobGlzdCB4KSA6Zmlyc3QgOnR5cGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChzZXRxIGxsICgxLSBsbCkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRlbnQpCiAg ICAgICAgICAgICAgICAgICAgbGwpCiAgICAgICAgICAgICAgICAgIChnZXQgKGludGVybi1zb2Z0 IChmdW5jYWxsIGxpc3AtaW5kZW50LWdldCBpbmRlbnQgOmZpcnN0IDp2YWwpKQogICAgICAgICAg ICAgICAgICAgICAgICdkb2Mtc3RyaW5nLWVsdCkpKQogICAgICAgICA7OyB0aGUgRE9DLVNUUklO RyBmb3Igc29tZSBmdW5jdGlvbnMKICAgICAgICAgKCsgbGlzcC1kb2Mtc3RyaW5nLWluZGVudCBz dGFydC1jb2wpICkKICAgICAgICAoKGFuZCAoaW50ZWdlcnAgbGlzcC1pbmRlbnQtb2Zmc2V0KQog ICAgICAgICAgICAgIChpbnRlZ2VycCAoZnVuY2FsbCBsaXNwLWluZGVudC1nZXQgaW5kZW50IDpm aXJzdCA6cG9zKSkpCiAgICAgICAgIDs7IGluZGVudCBieSBDT05TVEFOVCBPRkZTRVQKICAgICAg ICAgKCsgKGZ1bmNhbGwgbGlzcC1pbmRlbnQtZ2V0IGluZGVudCA6Zmlyc3QgOnBvcykKICAgICAg ICAgICAgbGlzcC1pbmRlbnQtb2Zmc2V0KSApCiAgICAgICAgKChsb29raW5nLWF0ICJcXHM8XFxz PFxcczwiKQogICAgICAgICA7OyBDT01NRU5UUyB0aGF0IHN0YXJ0IFdJVEggVEhSRUUgU0VNSUNP TE9OUyBPUiBNT1JFLCBzaG91bGQKICAgICAgICAgOzsgc3RhcnQgYXQgdGhlIGxlZnQgbWFyZ2lu CiAgICAgICAgIDAgKQogICAgICAgICgoZXEgKGZ1bmNhbGwgbGlzcC1pbmRlbnQtZ2V0IGluZGVu dCA6Zmlyc3QgOnR5cGUpIDp2KQogICAgICAgICA7OyB0aGUgRklSU1QgUEFSQU1FVEVSIGlzIGEg VkVDVE9SCiAgICAgICAgIChmdW5jYWxsIGxpc3AtaW5kZW50LWdldCBpbmRlbnQgOmZpcnN0IDpw b3MpICkKICAgICAgICAoKGVxIChmdW5jYWxsIGxpc3AtaW5kZW50LWdldCBpbmRlbnQgOmZpcnN0 IDp0eXBlKSA6bCkKICAgICAgICAgOzsgdGhlIEZJUlNUIFBBUkFNRVRFUiBpcyBhIExJU1QKICAg ICAgICAgKGZ1bmNhbGwgbGlzcC1pbmRlbnQtZ2V0IGluZGVudCA6Zmlyc3QgOnBvcykgKQogICAg ICAgICgoYW5kIChlcXVhbCAoZm9sbG93aW5nLWNoYXIpID86KQogICAgICAgICAgICAgIChvciAK ICAgICAgICAgICAgICAgKGVxIDpjIChmdW5jYWxsIGxpc3AtaW5kZW50LWdldCBpbmRlbnQgOmxh c3QgOnR5cGUpKQogICAgICAgICAgICAgICAoZXEgOmMgKGZ1bmNhbGwgbGlzcC1pbmRlbnQtZ2V0 IGluZGVudCA6bi0xIDp0eXBlKSkpKQogICAgICAgICA7OyBpbmRlbnQgYSBLRVlXT1JEIGJlbmVh dGggbGFzdCBLRVlXT1JEIGlmIHRoZXJlIGlzIG9uZSBpbiB0aGUgbGFzdCAyCiAgICAgICAgIDs7 IHBhcmFtZXRlcnMKICAgICAgICAgKGNvbmQgKChlcSA6YyAoZnVuY2FsbCBsaXNwLWluZGVudC1n ZXQgaW5kZW50IDpsYXN0IDp0eXBlKSkKICAgICAgICAgICAgICAgIChmdW5jYWxsIGxpc3AtaW5k ZW50LWdldCBpbmRlbnQgOmxhc3QgOnBvcykpCiAgICAgICAgICAgICAgICgoZXEgOmMgKGZ1bmNh bGwgbGlzcC1pbmRlbnQtZ2V0IGluZGVudCA6bi0xIDp0eXBlKSkKICAgICAgICAgICAgICAgIChm dW5jYWxsIGxpc3AtaW5kZW50LWdldCBpbmRlbnQgOm4tMSA6cG9zKSkpICkKICAgICAgICAoKGFu ZCAoZXEgKGZ1bmNhbGwgbGlzcC1pbmRlbnQtZ2V0IGluZGVudCA6Zmlyc3QgOnR5cGUpIDp3KQog ICAgICAgICAgICAgICh3aG9sZW51bXAgKGdldCAoaW50ZXJuLXNvZnQgKGZ1bmNhbGwgbGlzcC1p bmRlbnQtZ2V0IGluZGVudCA6Zmlyc3QgOnZhbCkpICdsaXNwLWluZGVudC1mdW5jdGlvbikpKQog ICAgICAgICA7OyBoZXJlIHRoZXJlIGlzIGEgU1BFQ0lBTCBGT1JNCiAgICAgICAgIChzZXRxIG9v IChvciAoZ2V0IChpbnRlcm4tc29mdCAoZnVuY2FsbCBsaXNwLWluZGVudC1nZXQgaW5kZW50IDpm aXJzdCA6dmFsKSkgJ2xpc3AtaW5kZW50LWZ1bmN0aW9uKQogICAgICAgICAgICAgICAgICAgICAg OzsgTElTUC1JTkRFTlQtSE9PSyBjYWxscyBhcmUgTk9UIFlFVCBERUZJTkVECiAgICAgICAgICAg ICAgICAgICAgICBuaWwKICAgICAgICAgICAgICAgICAgICAgIChnZXQgKGludGVybi1zb2Z0IChm dW5jYWxsIGxpc3AtaW5kZW50LWdldCBpbmRlbnQgOmZpcnN0IDp2YWwpKSAnbGlzcC1pbmRlbnQt aG9vaykpKQogICAgICAgICAoaWYgKD4gKGxlbmd0aCBpbmRlbnQpIG9vKQogICAgICAgICAgICAg KCsgbGlzcC1ib2R5LWluZGVudCBzdGFydC1jb2wpCiAgICAgICAgICAgKCsgKCogMiBsaXNwLWJv ZHktaW5kZW50KSBzdGFydC1jb2wpKSApCiAgICAgICAgKChhbmQgbmlsCiAgICAgICAgICAgICAg KGVxIChmdW5jYWxsIGxpc3AtaW5kZW50LWdldCBpbmRlbnQgOmZpcnN0IDp0eXBlKSA6dykKICAg ICAgICAgICAgICAoZ2V0IChpbnRlcm4tc29mdCAoZnVuY2FsbCBsaXNwLWluZGVudC1nZXQgaW5k ZW50IDpmaXJzdCA6dmFsKSkgJ2xpc3AtaW5kZW50LWhvb2spKQogICAgICAgICA7OyBJTkRFTlQg ZGVmaW5lZCBCWSBBTk9USEVSIEZVTkNUSU9OIGlzIE5PVCBZRVQgREVGSU5FRAogICAgICAgICAo ZnVuY2FsbCAoZ2V0IChpbnRlcm4tc29mdCAoZnVuY2FsbCBsaXNwLWluZGVudC1nZXQgaW5kZW50 IDpmaXJzdCA6dmFsKSkgJ2xpc3AtaW5kZW50LWhvb2spKSApCiAgICAgICAgKChhbmQgKGVxIChm dW5jYWxsIGxpc3AtaW5kZW50LWdldCBpbmRlbnQgOmZpcnN0IDp0eXBlKSA6dykKICAgICAgICAg ICAgICAoPiAobGVuZ3RoIGluZGVudCkgMSkpCiAgICAgICAgIDs7IElOREVOVCBCRU5FQVRIIHRo ZSBJTkRFTlQtV0hBVC1BUkdVTUVOVCBwYXJhbWV0ZXIKICAgICAgICAgKGZ1bmNhbGwgbGlzcC1p bmRlbnQtZ2V0IGluZGVudCBpbmRlbnQtd2hhdC1hcmd1bWVudCA6cG9zKSApCiAgICAgICAgKHQK ICAgICAgICAgOzsgIGluZGVudCB0aGUgRklSU1QgUEFSQU1FVEVSIG9mIGEgRlVOQ1RJT04gY2Fs bAogICAgICAgICAoZnVuY2FsbCBsaXNwLWluZGVudC1nZXQgaW5kZW50IDpmaXJzdCA6cG9zKSkp KQoKKGRlZnVuIGxpc3AtaW5kZW50LXdoYXQtYXJndW1lbnQgKGluZGVudCBwcmV2aW91cy1sZXZl bC1pbmRlbnQgbGlzcC1pbmRlbnQtZ2V0KQogICAiVGhpcyBmdW5jdGlvbiBpcyBhbHdheXMgY2Fs bGVkIGZyb20gYGxpc3AtaW5kZW50LWF1dG9tYXRvbicsCmFuZCBpdCByZXR1cm5zIHRoZSBpbmRl eCBvZiB0aGUgcGFyYW1ldGVyIGJlbmVhdGggd2hpY2ggdGhlIGNvZGUKd2lsbCBiZSBhbGlnbmVk IG9uIHRoZSBmb2xsb3dpbmcgbGluZS4KCklOREVOVCBpcyBkZWZpbmVkIGluIGBsaXNwLWluZGVu dC1hdXRvbWF0b24nLgoKUFJFVklPVVMtTEVWRUwtSU5ERU5UIGlzIGRlZmluZWQgaW4gYGxpc3At aW5kZW50LWF1dG9tYXRvbicuCgpUaGUgcmV0dXJuZWQgdmFsdWUgaXMgb25lIG9mIHRoZSBjb250 YW50IHN5bWJvbHMgOmZpcnN0CmFuZCA6c2Vjb25kLgoKV2hlbiB0aGUgcmV0dXJuZWQgdmFsdWUg aXMgOmZpcnN0LCB0aGUgc3ltYm9scyBmcm9tIHRoZQpjb250YWluaW5nIHNleHAgYXJlIGluZGVu dGVkIGJlbmVhdGggdGhlIGZpcnN0IHBhcmFtZXRlciBvZiB0aGUKc2V4cC4KCldoZW4gdGhlIHJl dHVybmVkIHZhbHVlIGlzIDpzZWNvbmQsIHRoZSBzeW1ib2xzIGZyb20gdGhlCmNvbnRhaW5pZyBz ZXhwIGFyZSBpbmRlbnRlZCBiZW5lYXRoIHRoZSBzZWNvbmQgcGFyYW1ldGVyIG9mIHRoZQpzZXhw IFwod2UgdGhpbmsgYXQgYSBmdW5jdGlvbiBjYWxsIGluIHRoaXMgY2FzZVwpLgoKTElTUC1JTkRF TlQtR0VUIGlzIHRoZSBzZWxlY3RvciBmb3IgSU5ERU5ULCBhbmQgaXQncyBkZWZpbmVkIGluCmBs aXNwLWluZGVudC1hdXRvbWF0b24nIgogIChjb25kICgoYW5kICg9IChsZW5ndGggaW5kZW50KSAz KQogICAgICAgICAgICAgIChlcSAoZnVuY2FsbCBsaXNwLWluZGVudC1nZXQgaW5kZW50IDpmaXJz dCA6dHlwZSkgOncpCiAgICAgICAgICAgICAgKHN0cmluZ3AgKGZ1bmNhbGwgbGlzcC1pbmRlbnQt Z2V0IGluZGVudCA6Zmlyc3QgOnZhbCkpCiAgICAgICAgICAgICAgKD49IChsZW5ndGggKGZ1bmNh bGwgbGlzcC1pbmRlbnQtZ2V0IGluZGVudCA6Zmlyc3QgOnZhbCkpIDMpCiAgICAgICAgICAgICAg KHN0cmluZy1lcXVhbCAiZGVmIiAoc3Vic3RyaW5nIChmdW5jYWxsIGxpc3AtaW5kZW50LWdldCBp bmRlbnQgOmZpcnN0IDp2YWwpIDAgMykpKQogICAgICAgICA7OyB3ZSBlbnRlciBpbnNpZGUgdGhl IFNFQ09ORCBQQVJBTUVURVIgT0YgREVGVU4sIHdoaWNoIGlzIGEgbGlzdCBvZgogICAgICAgICA7 OyBib3VuZCB2YXJpYWJsZXMsIGl0J3Mgbm90IGEgZnVuY3Rpb24gY2FsbAogICAgICAgICA6Zmly c3QgKQogICAgICAgICgob3IKICAgICAgICAgIChhbmQgKD49IChsZW5ndGggaW5kZW50KSAyKQog ICAgICAgICAgICAgICAobWVtcSAoZnVuY2FsbCBsaXNwLWluZGVudC1nZXQgaW5kZW50IDpuLTEg OnR5cGUpICcoOnEgOmIpKSkKICAgICAgICAgIChhbmQgKGVxIChmdW5jYWxsIGxpc3AtaW5kZW50 LWdldCBpbmRlbnQgOmZpcnN0IDp0eXBlKQogICAgICAgICAgICAgICAgICAgOncpCiAgICAgICAg ICAgICAgIChzdHJpbmctZXF1YWwgKGZ1bmNhbGwgbGlzcC1pbmRlbnQtZ2V0IGluZGVudCA6Zmly c3QgOnZhbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicXVvdGUiKSkpCiAgICAgICAg IDs7IGEgUVVPVEVEIE9SIEJBQ0tRVU9URUQgTElTVCBpcyBub3QgYSBmdW5jdGlvbiBjYWxsCiAg ICAgICAgIDpmaXJzdCApCiAgICAgICAgKChhbmQgKGVxIChmdW5jYWxsIGxpc3AtaW5kZW50LWdl dCBpbmRlbnQgOmZpcnN0IDp0eXBlKSA6dykKICAgICAgICAgICAgICAoPSAobGVuZ3RoIGluZGVu dCkgMikKICAgICAgICAgICAgICAobWVtYmVyIChmdW5jYWxsIGxpc3AtaW5kZW50LWdldCBpbmRl bnQgOmZpcnN0IDp2YWwpICcoImxldCIgImxhbWJkYSIgImxldCoiKSkpCiAgICAgICAgIDs7IFRo ZSBCT1VORCBWQVJJQUJMRVMgb2YgTEVUIG9yIExBTUJEQQogICAgICAgICA6Zmlyc3QgKQogICAg ICAgICgoYW5kICg+PSAobGVuZ3RoIGluZGVudCkgMikKICAgICAgICAgICAgICAoZXEgKGZ1bmNh bGwgbGlzcC1pbmRlbnQtZ2V0IGluZGVudCA6bi0xIDp0eXBlKSA6TSkpCiAgICAgICAgIDs7IHdl IGFyZSBpbnRvIGEgTUFDUk8gQ0FMTCBJTlNJREUgQSBCQUNLUVVPVEVEIFBBUkVOVEhFU0lTCiAg ICAgICAgIDpzZWNvbmQpCiAgICAgICAgOygoZXEgKGVsdCBwcmV2aW91cy1sZXZlbC1pbmRlbnQg MCkgOmIpCiAgICAgICAgOyB3ZSBhcmUgaW4gYSBuZXN0ZWQgcGFyZW50aGVzaXMgaW5zaWRlIGEg cXVvdGVkIGxpc3QKICAgICAgICA7MCkKICAgICAgICAodAogICAgICAgICA7OyBpbmRlbnQgYmVu ZWF0aCB0aGUgRklSU1QgUEFSQU1FVEVSIE9GIEEgRlVOQ1RJT04uLi4KICAgICAgICAgOnNlY29u ZCkpKQoKKGRlZnN1YnN0IGxpc3AtaW5kZW50LWFkdmFuY2UgbmlsCiAgICJTY2FuIGFjcm9zcyBh IHNpbmdsZSBjaGFyYWN0ZXIsIGFuZCBwYXNzIHRvIHRoZSBuZXh0IHN0YXRlLiIKICA7OyBzdGF0 ZSBpcyBkZWZpbmVkIGluIGBsaXNwLWluZGVudC1hdXRvbWF0b24nCiAgKHNldHEgc3RhdGUgKHBh cnNlLXBhcnRpYWwtc2V4cCAocG9pbnQpICgrIDEgKHBvaW50KSkgKCkgKCkgc3RhdGUpKSApCgoo ZGVmdW4gbGlzcC1pbmRlbnQtYXV0b21hdG9uICgmb3B0aW9uYWwgaW5kZW50LXdoYXQtYXJndW1l bnQgc3RhcnQtY29sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudCBlbmQgcHJl dmlvdXMtbGV2ZWwtaW5kZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlIGNv bnRhaW5pbmctc2V4cC1kZXZpYXRpb24pCiAgICJUaGlzIGlzIGFuIGF1dG9tYXRvbiB0byBpbmRl bnQgdGhlIGxpc3AgY29kZS4gSXQgaXMgdGhlIGNvcmUKb2YgdGhlIHN5c3RlbSBvZiBpbmRlbnRh dGlvbi4gTm90ZSB0aGF0IGl0IGlzIGlkZW50aWNhbCB3aXRoIHRoZQphdXRvbWF0b24gdXNlZCBi eSBgcGFyc2UtcGFydGlhbC1zZXhwJy4KCkJlZm9yZSBjYWxsaW5nIHRoaXMgYXV0b21hdG9uIHdl IG11c3QgZGVmaW5lIGluIHRoZSB1cHBlcgplbnZpcm9ubWVudCBhbmQgaW5pdGlhbGl6ZSB3aXRo IG5pbCB0aGUgZnJlZSB2YXJpYWJsZQoKIGBsaXNwLWNvZGUtdHJlZS1pbmRlbnQtdmFsdWUnLgoK TmV2ZXIgY2FsbCB0aGlzIGZ1bmN0aW9uIGJlZm9yZSBpbml0aWFsaXNpbmcgdGhpcyB2YXJpYWJs ZS4gVGhlCm9ubHkgdXNlciBpbnRlcmZhY2UgZm8gdGhpcyBmdW5jdGlvbiBpcyBgZ2V0LWxpc3At aW5kZW50YXRpb24nLAoKTGlzcC1pbmRlbnQtYXV0b21hdG9uIGNhbGxzIHJlY3Vyc2l2ZWx5IGFm dGVyIHNjYW5uaW5nIGFjcm9zcyBhbgpvcGVuIHBhcmVudGhlc2lzLCBpZCBlc3QgYWZ0ZXIgcGFz c2luZyB0byBhIG5ldyBsZXZlbCBvZiBjb2RlLCBvcgptb3JlIGFmdGVyIGVudGVyaW5nIGEgbmV3 IHNleHAuIEF0IGV2ZXJ5IGNhbGwsIGl0IGNvbGxlY3RzCmluZm9ybWF0aW9ucyBhYm91dCB0aGUg c3RydWN0dXJlIG9mIHRoZSBjb2RlIGZyb20gdGhlIGN1cnJlbnQKc2V4byBpbnRvIHRoZSB2YXJp YWJsZSBJTkRFTlQuIFRoZSBhdXRvbWF0b24gc2NhbnMgYSBjaGFyYWN0ZXIgYXQKYSB0aW1lLgoK SU5ERU5ULVdIQVQtQVJHVU1FTlQgaGFzIHRoZSBzYW1lIHN0cnVjdHVyZSBhcyB0aGUgdmFsdWUg cmV0dXJuZWQKYnkgYGxpc3AtaW5kZW50LXdoYXQtYXJndW1lbnQnLCBhbmQgaXQgaXMgZGVmaW5l ZCB0aGVyZS4KClNUQVJULUNPTCBrZWVwcyB0aGUgY29sdW1uIG9mIHRoZSBzdGFydCBvZiB0aGUg Y29udGFpbmluZyBzZXhwLgoKSU5ERU5UIGtlZXBzIHRoZSBraW5kIGFuZCBwb3NpdGlvbiBvZiB0 aGUgbGlzcCBvYmplY3RzIG9mIHRoZQpjb250YWluaW5nIHNleHAgXChhIGxpc3Agb2JqZWN0IGNh biBiZSBhIHN5bWJvbCwgYSBsaXN0LCBvcgphbm90aGVyIGRhdGEgdHlwZVwpLiBJTkRFTlQgaXMg YSBsaXN0IG9mIGVsZW1lbnRzIHdoaWNoIGFyZQptZWFuaW5nZnVsIGluIGdyb3VwcyBvZiB0aHJl ZSBhbmQgdGhhdCBsb29rcyBsaWtlCgogJyggXChUWVBFIFZBTFVFIFBPU0lUSU9OXCkgLi4uIFwp CgpUWVBFIGlzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUga2luZCBvZiB0aGUgb2Jq ZWN0cywgYW5kCmNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBrZXl3b3JkczoKIDpzIGZvciBh IHN0cmluZywKIDp3IGZvciBhIHN5bWJvbCwKIDpjIGZvciBhIGtleXdvcmQsCiA6bCBmb3IgYSBs aXN0LAogOnYgZm9yIGEgdmVjdG9yLAogOmIgZm9yIGEgYmFja3F1b3RlZCBsaXN0LAogOnEgZm9y IGEgcXVvdGVkIGxpc3QKIDptIGluc2lkZSBhIGJhY2txdW90ZWQgbGlzdCBmb3IgdGhlIHN0YXJ0 aW5nIG9mIHRoZSBtYXJrZXIgLEAKIDpNIGZvciB0aGUgbWFya2VyICxACgpWQUxVRSBpcyB1c2Vk IGp1c3QgZm9yIHN5bWJvbHMsIGFuZCBpdCBrZWVwcyB0aGUgbmFtZSBvZiB0aGUKc3ltYm9sLiBB c2lkZSBmcm9tIHRoZSBzeW1ib2xzLCB0aGlzIGVsZW1lbnQgaXMgdW51c2VmdWwsIGFuZCBpdApp cyBuaWwuCgpQT1NJVElPTiBpcyB0aGUgdmFsdWUgb2YgdGhlIF9jb2x1bW5fIHdoZXJlIHRoZXJl IGlzIHRoZSBvYmplY3QuCgpUaHVzLCBJTkRFTlQgPSBcKFwoOncgXCJsZXRcIiAxMFwpIFwoIDps IG5pbCAxNVwpXCkKCm1lYW5zIHRoYXQgdGhlIGN1cnNvciBpcyBzb21ld2hlcmUgaW5zaWRlIGEg bGlzdCB0aGF0IGNhbGxzIHRoZQpzcGVjaWFsIGZvcm0gYGxldCcsIGFuZCBhZnRlciB0aGlzIHNw ZWNpYWwgZm9ybSB0aGVyZSBpcyBhbHNvIGEKc2V4cCBpbiB3aGljaCB0aGVyZSBtaWdodCBoYXZl IGJlZWQgZGVmaW5lZCBzb21lIGJvdW5kIHZhcmlhYmxlcywKYW5kIHRoZSBjdXJzb3IgaXMgYWZ0 ZXIgdGhlIHNleHAgb2YgYm91bmQgdmFyaWFibGVzLgoKRU5EIHJlcHJlc2VudHMgdGhlIGJ1ZmZl ciBwb3NpdGlvbiB3aGVyZSB0aGUgc2Nhbm5pbmcgc2hlbGwgc3RvcC4KVGhlIHN0YXJ0aW5nIHBv aW50IGlzIHRoZSBidWZmZXIgcG9zaXRpb24gd2hlcmUgdGhlIGN1cnNvciB3YXMKcGxhY2VkIGJl Zm9yZSBjYWxsaW5nIHRoZSBhdXRvbWF0b24uCgpTVEFURSBpcyB0aGUgc3RhdGUgb2YgdGhlIGF1 dG9tYXRvbi4gSXQgaGFzIHRoZSBzYW1lIHN0cnVjdHlyZSBhcwp0aGUgdmFsdWUgcmV0dXJuZWQg YnkgYHBhcnNlLXBhcnRpYWwtc2V4cCcuCgpQUkVWSU9VUy1MRVZFTC1JTkRFTlQga2VlcHMgdGhl IGtpbmQgYW5kIHBvc2l0aW9uIG9mIHRoZSBzeW1ib2xzCm9mIHRoZSBwcmV2aW91cyBsZXZlbCBv ZiBjb2RlOyBpdCBoYXMgdGhlIHNhbWUgc3RydWN0dXJlIGFzCklOREVOVC4iCiAgKGxldCAoCiAg ICAgICAgKGRpZmYKICAgICAgICAgKGxhbWJkYSAoKQogICAgICAgICAgICAiQ29tcHV0ZXMgdGhl IGRldmlhdGlvbiBiZXR3ZWVuIHRoZSBjb3JyZWN0CiAgICAgICAgICAgICBpbmRlbnRhdGlvbiBh bmQgdGhlIGN1cnJlbnQgaW5kZW50YXRpb24uIFRoZSB2YWx1ZQogICAgICAgICAgICAgb2YgdGhl IGN1cnJlbnQgaW5kZW50YXRpb24gaXMgb2J0YWluZWQgYnkKICAgICAgICAgICAgIGludGVncmF0 aW5nIHRoZSBmdW5jdGlvbiAoRGlmZiAtIEN1cnJlbnQtQ29sdW1uKS4iCiAgICAgICAgICAgKCsg KGN1cnJlbnQtY29sdW1uKQogICAgICAgICAgICAgIChpZiAoY2FyIGxpc3AtY29kZS10cmVlLWlu ZGVudC12YWx1ZSkKICAgICAgICAgICAgICAgICAgKC0gKGxpc3AtY29kZS10cmVlLXNlbGVjdG9y IDpuZXcpCiAgICAgICAgICAgICAgICAgICAgIChsaXNwLWNvZGUtdHJlZS1zZWxlY3RvciA6b2xk KSkKICAgICAgICAgICAgICAgIDApKSkgKQogICAgICAgIChsaXNwLWluZGVudC1wdXNoCiAgICAg ICAgIChsYW1iZGEgKHR5cGUgdmFsdWUgcG9zaXRpb24pCiAgICAgICAgICAgICJUaGUgY29uc3Ry dWN0b3IgZm9yIElOREVOVC4gTG9vayBhdCB0aGUgZGVmaW5pdGlvbgogICAgICAgICAgICAgb2Yg SU5ERU5UIHRvIHNlZSB0aGUgc3RydWN0dXJlIG9mIGl0cyBlbGVtZW50cy4KICAgICAgICAgICAg IFRZUEUsIFZBTFVFIGFuZCBQT1NJVElPTiBhcmUgdGhlIGZpZWxkcyBvZiBhbgogICAgICAgICAg ICAgZWxlbWVudCBvZiBJTkRFTlQuIgogICAgICAgICAgIChzZXRxIGluZGVudCAoYXBwZW5kIGlu ZGVudCAobGlzdCAobGlzdCB0eXBlIHZhbHVlIHBvc2l0aW9uKSkpKSkgKQogICAgICAgIChsaXNw LWluZGVudC1nZXQKICAgICAgICAgKGxhbWJkYSAoaW5kZW50IG4gZmllbGQpCiAgICAgICAgICAg ICJUaGUgc2VsZWN0b3IgZm9yIElOREVOVC4gTG9vayBhdCB0aGUgZGVmaW5pdGlvbiBvZgogICAg ICAgICAgICAgSU5ERU5UIHRvIHNlZSB0aGUgc3RydWN0dXJlIG9mIGl0cyBlbGVtZW50cy4KCiAg ICAgICAgICAgICBOIGNhbiBiZSBvbmUgb2YgdGhlIGtleXdvcmRzOgogICAgICAgICAgICAgIDpm aXJzdCBmb3IgdGhlIGZpcnN0IGVsZW1lbnQgb2YgSU5ERU5UCiAgICAgICAgICAgICAgOnNlY29u ZCBmb3IgdGhlIHNlY29uZCBlbGVtZW50IG9mIElOREVOVAogICAgICAgICAgICAgIDpuLTEgZm9y IHRoZSBiZWZvcmUgbGFzdCBlbGVtZW50IG9mIElOREVOVAogICAgICAgICAgICAgIDpsYXN0IGZv ciB0aGUgbGFzdCBlbGVtZW50IG9mIElOREVOVC4KCiAgICAgICAgICAgICBGSUVMRCBkZW5vdGVz IHRoZSBmaWVsZCBvZiBhbiBlbGVtZW50IG9mIElOREVOVCwgYW5kCiAgICAgICAgICAgICBjYW4g YmUgb25lIG9mIHRoZSBzeW1ib2xzOgogICAgICAgICAgICAgIDp0eXBlIGZvciBUWVBFCiAgICAg ICAgICAgICAgOnZhbCBmb3IgVkFMVUUKICAgICAgICAgICAgICA6cG9zIGZvciB0aGUgUE9TSVRJ T04iCiAgICAgICAgICAgKGxldCAoKGVsZW1lbnQKICAgICAgICAgICAgICAgICAgKG50aAogICAg ICAgICAgICAgICAgICAgKGNvbmQgKChlcSBuIDpmaXJzdCkgMCApCiAgICAgICAgICAgICAgICAg ICAgICAgICAoKGVxIG4gOnNlY29uZCkgMSApCiAgICAgICAgICAgICAgICAgICAgICAgICAoKGVx IG4gOmxhc3QpICgtIChsZW5ndGggaW5kZW50KSAxKSApCiAgICAgICAgICAgICAgICAgICAgICAg ICAoKGVxIG4gOm4tMSkgKC0gKGxlbmd0aCBpbmRlbnQpIDIpICkKICAgICAgICAgICAgICAgICAg ICAgICAgICh0IChlcnJvciAiT3VwcyEgTiBzaG91bGQgYmUgb25lIG9mIHtmaXJzdCwgc2Vjb25k LCBsYXN0IG9yIG4tMX0gKCVzKS4iIG4pKSkKICAgICAgICAgICAgICAgICAgIGluZGVudCkpKQog ICAgICAgICAgICAgKGNvbmQgKChlcSBmaWVsZCA6dHlwZSkgKG50aCAwIGVsZW1lbnQpICkKICAg ICAgICAgICAgICAgICAgICgoZXEgZmllbGQgOnZhbCkgKG50aCAxIGVsZW1lbnQpICkKICAgICAg ICAgICAgICAgICAgICgoZXEgZmllbGQgOnBvcykgKG50aCAyIGVsZW1lbnQpICkKICAgICAgICAg ICAgICAgICAgICh0IChlcnJvciAiT3VwcyEgRUxFTUVOVCBzaG91bGQgYmUgb25lIG9mIHt0eXBl LCB2YWwsIHBvc30gKCVzKSIgbikpKSkpKSApCiAgICAoY2F0Y2ggJ1NUT1AKICAgICAgKHdoaWxl ICg8IChwb2ludCkgZW5kKQogICAgICAgIChjb25kICgoYW5kIChlbHQgc3RhdGUgOCkKICAgICAg ICAgICAgICAgICAgICAobm90IChlbHQgc3RhdGUgNCkpKQogICAgICAgICAgICAgICA7OyBJTlNJ REUgYSBTVFJJTkcKICAgICAgICAgICAgICAgKGFuZCAobG9va2luZy1hdCAiXFxzPiIpCiAgICAg ICAgICAgICAgICAgICAgKGxpc3AtY29kZS10cmVlLWNvbnN0cnVjdG9yCiAgICAgICAgICAgICAg ICAgICAgIChsaXNwLWluZGVudC1ydWxlcyBzdGF0ZSBpbmRlbnQgc3RhcnQtY29sIGluZGVudC13 aGF0LWFyZ3VtZW50IGxpc3AtaW5kZW50LWdldCkpKQogICAgICAgICAgICAgICAobGlzcC1pbmRl bnQtYWR2YW5jZSkgKQogICAgICAgICAgICAgICgobG9va2luZy1hdCAiXFxzXCIiKQogICAgICAg ICAgICAgICA7OyB0aGUgU1RBUlQgb2YgYSBTVFJJTkcKICAgICAgICAgICAgICAgKGxldCAoKGNv bCAoZnVuY2FsbCBkaWZmKSkpCiAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgbGlzcC1pbmRlbnQt cHVzaCA6cyAoKSBjb2wpKQogICAgICAgICAgICAgICAobGlzcC1pbmRlbnQtYWR2YW5jZSkgKQog ICAgICAgICAgICAgICgobG9va2luZy1hdCAiXFxzXCgiKQogICAgICAgICAgICAgICAoY29uZCAo KGxvb2tpbmctYXQgIltcW10iKQogICAgICAgICAgICAgICAgICAgICAgOzsgYSBWRUNUT1IKICAg ICAgICAgICAgICAgICAgICAgIChsZXQgKChjb2wgKGZ1bmNhbGwgZGlmZikpKQogICAgICAgICAg ICAgICAgICAgICAgICAoZnVuY2FsbCBsaXNwLWluZGVudC1wdXNoIDp2ICgpIGNvbCkKICAgICAg ICAgICAgICAgICAgICAgICAgKHNldHEgc3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGxpc3AtaW5kZW50LWF1dG9tYXRvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OmZpcnN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2wgbmlsIGVuZCBpbmRlbnQg KGxpc3AtaW5kZW50LWFkdmFuY2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLSAo Y3VycmVudC1jb2x1bW4pIChmdW5jYWxsIGRpZmYpKSkpKSkKICAgICAgICAgICAgICAgICAgICAg KChsb29raW5nLWF0ICJbXChdIikKICAgICAgICAgICAgICAgICAgICAgIDs7IE9QRU4gYSBQQVJF TlRIRVNJUwogICAgICAgICAgICAgICAgICAgICAgKGxldCAoKGNvbCAoZnVuY2FsbCBkaWZmKSkp CiAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIGxpc3AtaW5kZW50LXB1c2ggOmwgKCkg Y29sKQogICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBzdGF0ZQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAobGlzcC1pbmRlbnQtYXV0b21hdG9uCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAobGlzcC1pbmRlbnQtd2hhdC1hcmd1bWVudCBpbmRlbnQgcHJldmlvdXMtbGV2 ZWwtaW5kZW50IGxpc3AtaW5kZW50LWdldCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbCBuaWwgZW5kIGluZGVudCAobGlzcC1pbmRlbnQtYWR2YW5jZSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICgtIChjdXJyZW50LWNvbHVtbikgKGZ1bmNhbGwgZGlmZikpKSkpKSkg KQogICAgICAgICAgICAgICgobG9va2luZy1hdCAiXFxzXCkiKQogICAgICAgICAgICAgICA7OyBD TE9TRSBhIFBBUkVOVEhFU0lTIG9yIGEgVkVDVE9SCiAgICAgICAgICAgICAgICh0aHJvdyAnU1RP UCAobGlzcC1pbmRlbnQtYWR2YW5jZSkpICkKICAgICAgICAgICAgICAoKGxvb2tpbmctYXQgIlxc cyAiKQogICAgICAgICAgICAgICA7OyBTUEFDRVMgYXJlIGlnbm9yZWQKICAgICAgICAgICAgICAg KHdoaWxlIChsb29raW5nLWF0ICJcXHMgIikKICAgICAgICAgICAgICAgICAobGlzcC1pbmRlbnQt YWR2YW5jZSkpICkKICAgICAgICAgICAgICAoKGxvb2tpbmctYXQgIlxcc3dcXHxcXHNfIikKICAg ICAgICAgICAgICAgOzsgYSBGVU5DVElPTiBvciBhIFBBUkFNRVRFUgogICAgICAgICAgICAgICAo bGV0KiAoKGNvbCAoZnVuY2FsbCBkaWZmKSkKICAgICAgICAgICAgICAgICAgICAgIHIKICAgICAg ICAgICAgICAgICAgICAgICh3IChjYXRjaCAnV09SRAogICAgICAgICAgICAgICAgICAgICAgICAg ICA7OyByZWFkIHRoZSBuYW1lIG9mIHRoZSBzeW1ib2wgdW5kZXIgdGhlIHBvaW50CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICh3aGlsZSB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHNldHEgciAoY29uY2F0IHIgKHN0cmluZyAoZm9sbG93aW5nLWNoYXIpKSkpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGxpc3AtaW5kZW50LWFkdmFuY2UpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGFuZCAobm90IChsb29raW5nLWF0ICJcXHdcXHxcXHNfIikpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAodGhyb3cgJ1dPUkQgcikpKSkpKQogICAgICAgICAg ICAgICAgIChmdW5jYWxsIGxpc3AtaW5kZW50LXB1c2ggKGlmICg9IChlbHQgdyAwKSA/OikgOmMg OncpIHcgY29sKSkgKQogICAgICAgICAgICAgICgobG9va2luZy1hdCAiXFxzPCIpCiAgICAgICAg ICAgICAgIDs7IHN0YXJ0IG9mIGEgQ09NTUVOVAogICAgICAgICAgICAgICAod2hpbGUgKG5vdCAo bG9va2luZy1hdCAiXFxzPiIpKQogICAgICAgICAgICAgICAgIDs7IGlnbm9yZSB0aGUgY29tbWVu dHMKICAgICAgICAgICAgICAgICAobGlzcC1pbmRlbnQtYWR2YW5jZSkpICkKICAgICAgICAgICAg ICAoKGxvb2tpbmctYXQgIlxccy4iKQogICAgICAgICAgICAgICA7OyBza2lwIGEgUFVOQ1RVQVRJ T04gKG5vbi1BU0NJSSkgY2hhcmFjdGVyCiAgICAgICAgICAgICAgIChsaXNwLWluZGVudC1hZHZh bmNlKSApCiAgICAgICAgICAgICAgKChsb29raW5nLWF0ICJcXHNcJyIpCiAgICAgICAgICAgICAg IDs7IFFVT1RFCiAgICAgICAgICAgICAgIChsZXQgKChjb2wgKGZ1bmNhbGwgZGlmZikpKQogICAg ICAgICAgICAgICAgIChmdW5jYWxsIGxpc3AtaW5kZW50LXB1c2gKICAgICAgICAgICAgICAgICAg ICAgICAgICAoY29uZCAoKGxvb2tpbmctYXQgIltcXGBdIikKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOzsgYSBCQUNLUVVPVEUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOmIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhbmQgKGxvb2tpbmctYXQg IltcXCxdIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBtYXliZSB0 aGUgU1RBUlQgb2YgYSBNQUNSTwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChlcSAoZnVuY2FsbCBsaXNwLWluZGVudC1nZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMtbGV2ZWwtaW5kZW50IDpmaXJzdCA6dHlw ZSkgOmIpKSA6bSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFuZCAobG9va2lu Zy1hdCAiW1xcQF0iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IG1h eWJlIGEgTUFDUk8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPj0gKGxl bmd0aCBpbmRlbnQpIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVx IChmdW5jYWxsIGxpc3AtaW5kZW50LWdldCBpbmRlbnQgOmxhc3QgOnR5cGUpIDptKSkgOk0pCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHQKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOzsgYSBxdW90ZWQgb2JqZWN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDpxKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAoKSBjb2wpKQogICAgICAgICAgICAg ICAobGlzcC1pbmRlbnQtYWR2YW5jZSkgKQogICAgICAgICAgICAgICgobG9va2luZy1hdCAiXFxz XFwiKQogICAgICAgICAgICAgICA7OyBza2lwIGEgU1BFQ0lBTCBjaGFyYWN0ZXIKICAgICAgICAg ICAgICAgKGxpc3AtaW5kZW50LWFkdmFuY2UpCgkgICAgICAgKGFuZCAobG9va2luZy1hdCAiXFxz PiIpCgkJICAgIChlcnJvciAiT3VwcyEgRXJyb3Igb2Ygc3ludGF4IGF0ICVkIiAocG9pbnQpKSkK ICAgICAgICAgICAgICAgKGxpc3AtaW5kZW50LWFkdmFuY2UpICkKICAgICAgICAgICAgICAoKGxv b2tpbmctYXQgIlxccz4iKQogICAgICAgICAgICAgICA7OyBFTkQgT0YgTElORQogICAgICAgICAg ICAgICAobGlzcC1pbmRlbnQtYWR2YW5jZSkKICAgICAgICAgICAgICAgKHdoaWxlIChsb29raW5n LWF0ICJcXHMgIikKICAgICAgICAgICAgICAgICAobGlzcC1pbmRlbnQtYWR2YW5jZSkpCiAgICAg ICAgICAgICAgIChsaXNwLWNvZGUtdHJlZS1jb25zdHJ1Y3RvcgogICAgICAgICAgICAgICAgKGxp c3AtaW5kZW50LXJ1bGVzIHN0YXRlIGluZGVudCBzdGFydC1jb2wgaW5kZW50LXdoYXQtYXJndW1l bnQgbGlzcC1pbmRlbnQtZ2V0KQogICAgICAgICAgICAgICAgKGN1cnJlbnQtY29sdW1uKQogICAg ICAgICAgICAgICAgY29udGFpbmluZy1zZXhwLWRldmlhdGlvbikgKQogICAgICAgICAgICAgICh0 CiAgICAgICAgICAgICAgIChlcnJvciAib29wcyEgdW5rbm93biBjbGFzcyBvZiBzeW50YXggISAo aW5kZW50IGZhaWxlZCBhdCBwb3NpdGlvbiAlZCkiIChwb2ludCkpKSkpKSkpCgooZGVmdW4gZ2V0 LWxpc3AtaW5kZW50YXRpb24gKCZvcHRpb25hbCBiZWcgZW5kKQogICAiVXNlZCB0byBnZXQgdGhl IGluZGVudGF0aW9uIG9mIGVtYWNzIGxpc3AgY29kZSBmcm9tIEJFRyB0byBFTkQsCndoZXJlIEJF RyBhbmQgRU5EIGFyZSB0aGUgbGltaXRzIG9mIHRoZSByZWdpb24gd2UgYXJlIGludGVyZXN0ZWQK YWJvdXQuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBleHBsYWluZWQgaW4gdGhlIGRlZmluaXRpb24g b2YKYGxpc3AtY29kZS10cmVlLWluZGVudC12YWx1ZSciCiAgKGlmIChtZW1xIG1ham9yLW1vZGUg JyhlbWFjcy1saXNwLW1vZGUgbGlzcC1pbnRlcmFjdGlvbi1tb2RlKSkKICAgICAgKHNhdmUtZXhj dXJzaW9uCiAgICAgICAgKGdvdG8tY2hhciBiZWcpCiAgICAgICAgKGJlZ2lubmluZy1vZi1kZWZ1 bikKICAgICAgICAoc2tpcC1jaGFycy1mb3J3YXJkICJcdFwgIikKICAgICAgICAobGV0IChsaXNw LWNvZGUtdHJlZS1pbmRlbnQtdmFsdWUpCiAgICAgICAgICAobGlzcC1jb2RlLXRyZWUtY29uc3Ry dWN0b3IgMCAoY3VycmVudC1jb2x1bW4pIChjdXJyZW50LWNvbHVtbikpCiAgICAgICAgICAobGlz cC1pbmRlbnQtYXV0b21hdG9uIDAgKGN1cnJlbnQtY29sdW1uKSBuaWwgZW5kIG5pbCBuaWwgMCkK ICAgICAgICAgIChhbmQgKDwgKHBvaW50KSBlbmQpCiAgICAgICAgICAgICAgIChlcnJvciAidGhl cmUgaXMgYW4gZXJyb3Igb2Ygc3ludGF4IGF0IHRoZSBwb2ludCAlZCIgKHBvaW50KSkpCiAgICAg ICAgICAob3IgbGlzcC1jb2RlLXRyZWUtaW5kZW50LXZhbHVlCiAgICAgICAgICAgICAgKGxpc3At Y29kZS10cmVlLWNvbnN0cnVjdG9yIDAgMCAwKSkpKQogICAgKGVycm9yICJPdXBzISBnZXQtbGlz cC1pbmRlbnRhdGlvbiBpcyB1c2VkIHRvIGluZGVudCBjb2RlIGludG8gYSBub24gRW1hY3MtTGlz cCBidWZmZXIiKSkpCgooZGVmdW4gaW5kZW50LXNleHAgbmlsCiAgICJJbmRlbnQgYWxsIHRoZSBs aW5lcyBvZiB0aGUgY29udGFpbmluZyBzZXhwLiIKICAoc2F2ZS1leGN1cnNpb24KICAgIChjb25k aXRpb24tY2FzZSBuaWwKICAgICAgICAobGV0KiAoKGJlZyAocHJvZzIgKGJhY2t3YXJkLXVwLWxp c3QpIChwb2ludCkpKQogICAgICAgICAgICAgICAoZW5kIChwcm9nMiAoZm9yd2FyZC1zZXhwKSAo cG9pbnQpKSkpCiAgICAgICAgICAoaW5kZW50LXJlZ2lvbiBiZWcgZW5kKSkKICAgICAgKGVycm9y IG5pbCkpKSkKCihkZWZ1biBpbmRlbnQtcmVnaW9uIChiZWcgZW5kKQogICAiSW5kZW50IGFsbCB0 aGUgbGluZXMgb2YgdGhlIHJlZ2lvbi4gQkVHIGlzIHRoZSBwb2ludCB3aGVyZQp0aGUgcmVnaW9u IHN0YXJ0cy4gRU5EIGlzIHRoZSByZWdpb24gZW5kcy4iCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAo bGV0KiAoKHN1Ymxpc3QgKGxhbWJkYSAobCBuKSAobGV0IChvKSAoZG90aW1lcyAoaSBuKSAoc2V0 cSBvIChjb25zIChlbHQgbCBpKSBvKSkpIG8pKSkKICAgICAgICAgICAoaW5kZW50LWxpbmVzIChn ZXQtbGlzcC1pbmRlbnRhdGlvbiAobWluIGJlZyBlbmQpIChtYXggYmVnIGVuZCkpKQogICAgICAg ICAgIDs7IGRpZiBpcyB0aGUgZGV2aWF0aW9uIG9mIHRoZSBzZXhwIGNvbnRhaW5pbmcgdGhlIHJl Z2lvbiwgdGhhdCBpcwogICAgICAgICAgIDs7IGFwcGxpZWQgdG8gZXZlcnkgbGluZSBpbiB0aGUg cmVnaW9uLgogICAgICAgICAgIChkaWYgKG9yIChsaXNwLWNvZGUtdHJlZS1zZWxlY3RvcgogICAg ICAgICAgICAgICAgICAgICA6ZGlmZgogICAgICAgICAgICAgICAgICAgICAobGlzdCAobnRoICgx LSAoY291bnQtbGluZXMgKG1pbiBiZWcgZW5kKSAobWF4IGJlZyBlbmQpKSkgaW5kZW50LWxpbmVz KSkpCiAgICAgICAgICAgICAgICAgICAgMCkpKQogICAgICAoZ290by1jaGFyIGVuZCkKICAgICAg KGJlZ2lubmluZy1vZi1saW5lKQogICAgICAod2hpbGUgKGFuZCBpbmRlbnQtbGluZXMKICAgICAg ICAgICAgICAgICAgKD49IChwb2ludCkgKG1pbiBiZWcgZW5kKSkpCiAgICAgICAgOzsgYWxpZ24g ZXZlcnkgbGluZSB0aGF0IGhhcyBhc3NvY2lhdGVkIGEgbm9uLW51bGwgaW5kZW50YXRpb24sIHN0 YXJ0aW5nCiAgICAgICAgOzsgZnJvbSB0aGUgZW5kIG9mIHRoZSByZWdpb24gdG8gdGhlIGZpcnN0 IGxpbmUgb2YgdGhlIHJlZ2lvbi4KICAgICAgICAod2hlbiAoY2FyIGluZGVudC1saW5lcykKICAg ICAgICAgIChzZXRxIGwgKHBvaW50KSkKICAgICAgICAgIChza2lwLWNoYXJzLWZvcndhcmQgIlx0 ICIpCiAgICAgICAgICAod2hlbiAoLz0gKGxpc3AtY29kZS10cmVlLXNlbGVjdG9yIDpvbGQgaW5k ZW50LWxpbmVzKQogICAgICAgICAgICAgICAgICAgICgrIGRpZiAobGlzcC1jb2RlLXRyZWUtc2Vs ZWN0b3IgOm5ldyBpbmRlbnQtbGluZXMpKSkKICAgICAgICAgICAgKGRlbGV0ZS1yZWdpb24gbCAo cG9pbnQpKQogICAgICAgICAgICAoaW5kZW50LXRvICgrIGRpZiAobGlzcC1jb2RlLXRyZWUtc2Vs ZWN0b3IgOm5ldyBpbmRlbnQtbGluZXMpKSkpKQogICAgICAgIChmb3J3YXJkLWxpbmUgLTEpCiAg ICAgICAgKHNldHEgaW5kZW50LWxpbmVzIChjZHIgaW5kZW50LWxpbmVzKSkpKSkKICAoZGVhY3Rp dmF0ZS1tYXJrKSkKCihkZWZ1biBsaXNwLWluZGVudC1saW5lIG5pbAogICAiSW5kZW50IHRoZSBj dXJyZW50IGxpbmUgYXMgTGlzcCBjb2RlLiIKICAobGV0KiAoKHBvcyAocG9pbnQtbWFya2VyKSkK ICAgICAgICAgKHAgKHByb2cyIChiZWdpbm5pbmctb2YtbGluZSkgKHBvaW50KSkpCiAgICAgICAg IChpbmRlbnQtbGluZXMgKGdldC1saXNwLWluZGVudGF0aW9uIHAgcCkpKQogICAgKHdoZW4gKGNv bnNwIChjYXIgaW5kZW50LWxpbmVzKSkKICAgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiXHQgIikK ICAgICAgKHdoZW4gKC89IChsaXNwLWNvZGUtdHJlZS1zZWxlY3RvciA6b2xkIGluZGVudC1saW5l cykKICAgICAgICAgICAgICAgICgrIChsaXNwLWNvZGUtdHJlZS1zZWxlY3RvciA6bmV3IGluZGVu dC1saW5lcykKICAgICAgICAgICAgICAgICAgIChsaXNwLWNvZGUtdHJlZS1zZWxlY3RvciA6ZGlm ZiBpbmRlbnQtbGluZXMpKSkKICAgICAgICAoZGVsZXRlLXJlZ2lvbiBwIChwb2ludCkpCiAgICAg ICAgKGluZGVudC10byAoKyAobGlzcC1jb2RlLXRyZWUtc2VsZWN0b3IgOm5ldyBpbmRlbnQtbGlu ZXMpCiAgICAgICAgICAgICAgICAgICAgICAobGlzcC1jb2RlLXRyZWUtc2VsZWN0b3IgOmRpZmYg aW5kZW50LWxpbmVzKSkpKSkKICAgIChnb3RvLWNoYXIgKG1heCBwb3MgKHBvaW50KSkpKSkKCg== ------=_Part_49495_15608452.1218539566110--